File tree 13 files changed +183
-0
lines changed
13 files changed +183
-0
lines changed Original file line number Diff line number Diff line change
1
+ @layer sl-components {
2
+ [data-sl-header ] {
3
+ font : var (--sl-text-display-1-font );
4
+ letter-spacing : var (--sl-text-display-1-letter-spacing );
5
+
6
+ border-bottom : var (--sl-border );
7
+ }
8
+ }
Original file line number Diff line number Diff line change
1
+
2
+ import React , { forwardRef } from 'react'
3
+ import { Content , ContentProps } from '../content'
4
+ import './header.css'
5
+
6
+ export const Header = forwardRef < HTMLDivElement , HeaderProps > (
7
+ function Header ( props , ref ) {
8
+ const { children, ...otherProps } = props
9
+
10
+ return (
11
+ < Content data-sl-header { ...otherProps } ref = { ref } >
12
+ { children }
13
+ </ Content >
14
+ )
15
+ }
16
+ )
17
+
18
+ export type HeaderProps = ContentProps
Original file line number Diff line number Diff line change
1
+ export * from './header'
Original file line number Diff line number Diff line change
1
+ import '../header.css'
2
+ import './styles.css'
3
+ import React from 'react'
4
+
5
+ import { Header } from '../index'
6
+ import { Container , Content } from '../../content'
7
+ import { Page } from '../../page'
8
+
9
+ export default {
10
+ title : 'shoreline-components/header' ,
11
+ }
12
+
13
+ export function Default ( ) {
14
+ return (
15
+ < Container >
16
+ < Header > Header</ Header >
17
+ </ Container >
18
+ )
19
+ }
20
+
21
+ export function WithPage ( ) {
22
+ return (
23
+ < Page >
24
+ < Header narrow > Header</ Header >
25
+ < Content narrow className = "page-content" >
26
+ < div className = "generic-content" > Page content</ div >
27
+ </ Content >
28
+ </ Page >
29
+ )
30
+ }
31
+
32
+ export function OnComponent ( ) {
33
+ return (
34
+ < Container >
35
+ < div className = "card-like-component" >
36
+ < Header > Component header</ Header >
37
+ < Content > Text</ Content >
38
+ </ div >
39
+ </ Container >
40
+ )
41
+ }
Original file line number Diff line number Diff line change
1
+ .page-content {
2
+ flex-grow : 1 ;
3
+ }
4
+
5
+ .generic-content {
6
+ height : 100% ;
7
+ width : 100% ;
8
+ background-color : var (--sl-bg-muted );
9
+ }
10
+
11
+ .card-like-component {
12
+ border : var (--sl-border );
13
+ border-radius : var (--sl-border-radius-medium );
14
+ height : 15rem ;
15
+ margin : 1rem ;
16
+ }
Original file line number Diff line number Diff line change
1
+ import React from 'react'
2
+ import { describe , expect , test } from 'vitest'
3
+ import { render } from '@testing-library/react'
4
+
5
+ import { Header } from '../header'
6
+
7
+ describe ( 'header' , ( ) => {
8
+ test ( 'renders' , ( ) => {
9
+ const { container } = render ( < Header /> )
10
+
11
+ expect ( container . querySelector ( '[data-sl-header]' ) ) . toBeInTheDocument ( )
12
+ } )
13
+ } )
14
+
Original file line number Diff line number Diff line change 1
1
/* PLOP_INJECT_EXPORT */
2
+ export * from './header'
3
+ export * from './page'
2
4
export * from './toast'
3
5
export * from './skeleton'
4
6
export * from './tab'
Original file line number Diff line number Diff line change
1
+ export * from './page'
Original file line number Diff line number Diff line change
1
+ @layer sl-components {
2
+ [data-sl-page ] {
3
+ height : 100vh ;
4
+ display : flex;
5
+ flex-direction : column;
6
+ }
7
+ }
Original file line number Diff line number Diff line change
1
+ import React , { ComponentPropsWithoutRef , forwardRef } from 'react'
2
+ import { Container } from '../content'
3
+
4
+ export const Page = forwardRef < HTMLDivElement , PageProps > ( function Page (
5
+ props ,
6
+ ref
7
+ ) {
8
+ const { children, ...otherProps } = props
9
+
10
+ return (
11
+ < Container data-sl-page ref = { ref } { ...otherProps } >
12
+ { children }
13
+ </ Container >
14
+ )
15
+ } )
16
+
17
+ export interface PageProps extends ComponentPropsWithoutRef < 'div' > {
18
+ className ?: string
19
+ }
Original file line number Diff line number Diff line change
1
+ import '../page.css'
2
+ import './styles.css'
3
+ import React from 'react'
4
+
5
+ import { Page } from '../index'
6
+ import { Content } from '../../content'
7
+ import { Header } from '../../header'
8
+
9
+ export default {
10
+ title : 'shoreline-components/page' ,
11
+ }
12
+
13
+ export function Default ( ) {
14
+ return (
15
+ < Page >
16
+ < Header > Header</ Header >
17
+ < Content className = "page-content" >
18
+ < div className = "page-inner-content" > Page content</ div >
19
+ </ Content >
20
+ </ Page >
21
+ )
22
+ }
23
+
24
+ export function Narrow ( ) {
25
+ return (
26
+ < Page >
27
+ < Header narrow > Header</ Header >
28
+ < Content narrow className = "page-content" >
29
+ < div className = "page-inner-content" > Page content</ div >
30
+ </ Content >
31
+ </ Page >
32
+ )
33
+ }
Original file line number Diff line number Diff line change
1
+ .page-content {
2
+ flex-grow : 1 ;
3
+ }
4
+
5
+ .page-inner-content {
6
+ height : 100% ;
7
+ width : 100% ;
8
+ background-color : var (--sl-bg-muted );
9
+ }
Original file line number Diff line number Diff line change
1
+ import React from 'react'
2
+ import { describe , expect , test } from 'vitest'
3
+ import { render } from '@testing-library/react'
4
+
5
+ import { Page } from '../page'
6
+
7
+ describe ( 'page' , ( ) => {
8
+ test ( 'renders' , ( ) => {
9
+ const { container } = render ( < Page /> )
10
+
11
+ expect ( container . querySelector ( '[data-sl-page]' ) ) . toBeInTheDocument ( )
12
+ } )
13
+ } )
14
+
You can’t perform that action at this time.
0 commit comments