File tree 9 files changed +578
-1
lines changed
9 files changed +578
-1
lines changed Original file line number Diff line number Diff line change 3
3
.modal {
4
4
@include transition ();
5
5
@include position (fixed , ' t50%' , ' l50%' );
6
- @include spacing (0 , p- default);
6
+ @include spacing (m0 , p- default);
7
7
@include layer (modal);
8
8
@include visibility (block , 0 );
9
9
@include border (primary- 50);
Original file line number Diff line number Diff line change
1
+ ---
2
+ import type { PopoverProps } from ' ./popover'
3
+ import styles from ' ./popover.module.scss'
4
+
5
+ interface Props extends PopoverProps {}
6
+
7
+ const {
8
+ id,
9
+ className
10
+ } = Astro .props
11
+
12
+ const classes = [
13
+ styles .popover ,
14
+ className
15
+ ]
16
+ ---
17
+
18
+ <dialog
19
+ class:list ={ classes }
20
+ id ={ id }
21
+ >
22
+ <slot />
23
+ </dialog >
Original file line number Diff line number Diff line change
1
+ <script lang =" ts" >
2
+ import type { PopoverProps } from ' ./popover'
3
+
4
+ import styles from ' ./popover.module.scss'
5
+ import { classNames } from ' ../../utils/classNames'
6
+
7
+ export let id: PopoverProps [' id' ] = ' '
8
+ export let className: PopoverProps [' className' ] = ' '
9
+
10
+ const classes = classNames ([
11
+ styles .popover ,
12
+ className
13
+ ])
14
+ </script >
15
+
16
+ <dialog
17
+ class ={classes }
18
+ id ={id }
19
+ >
20
+ <slot />
21
+ </dialog >
Original file line number Diff line number Diff line change
1
+ import React from 'react'
2
+ import type { ReactPopoverProps } from './popover'
3
+
4
+ import styles from './popover.module.scss'
5
+ import { classNames } from '../../utils/classNames'
6
+
7
+ const Popover = ( {
8
+ id,
9
+ className,
10
+ children
11
+ } : ReactPopoverProps ) => {
12
+ const classes = classNames ( [
13
+ styles . popover ,
14
+ className
15
+ ] )
16
+
17
+ return (
18
+ < dialog
19
+ className = { classes }
20
+ id = { id }
21
+ >
22
+ { children }
23
+ </ dialog >
24
+ )
25
+ }
26
+
27
+ export default Popover
Original file line number Diff line number Diff line change
1
+ @import ' ../../scss/config.scss' ;
2
+
3
+ .popover {
4
+ @include spacing (m0, p- default);
5
+ @include layer (modal);
6
+ @include visibility (block , 0 );
7
+ @include border (primary- 50);
8
+ @include background (primary- 70);
9
+ @include typography (primary);
10
+ @include border-radius (md);
11
+ @include size (w300px);
12
+
13
+ transform : translateY (-5px );
14
+ pointer-events : none ;
15
+
16
+ & [data-show ] {
17
+ @include transition ();
18
+ }
19
+
20
+ & [data-show = " true" ] {
21
+ @include visibility (1 );
22
+
23
+ transform : translateY (0 );
24
+ pointer-events : all ;
25
+ }
26
+
27
+ & [data-position = " top" ] {
28
+ transform : translateY (5px );
29
+
30
+ & [data-show = " true" ] {
31
+ transform : translate (0 );
32
+ }
33
+ }
34
+
35
+ & [data-position = " left" ] {
36
+ transform : translateY (0 ) translateX (5px );
37
+
38
+ & [data-show = " true" ] {
39
+ transform : translate (0 );
40
+ }
41
+ }
42
+
43
+
44
+ & [data-position = " right" ] {
45
+ transform : translateY (0 ) translateX (-5px );
46
+
47
+ & [data-show = " true" ] {
48
+ transform : translate (0 );
49
+ }
50
+ }
51
+ }
Original file line number Diff line number Diff line change
1
+ export type PopoverProps = {
2
+ id ?: string
3
+ className ?: string
4
+ }
5
+
6
+ export type ReactPopoverProps = {
7
+ children ?: React . ReactNode
8
+ } & PopoverProps
Original file line number Diff line number Diff line change @@ -149,6 +149,9 @@ const tabItems = [{
149
149
<CardWrapper title =" Modal" href =" /modal" >
150
150
<Button theme =" outline" >Trigger Modal</Button >
151
151
</CardWrapper >
152
+ <CardWrapper title =" Popover" href =" /popover" >
153
+ <Button theme =" outline" >Open Popover</Button >
154
+ </CardWrapper >
152
155
<CardWrapper title =" Progress" href =" /progress" >
153
156
<Progress value ={ 33 } />
154
157
</CardWrapper >
You can’t perform that action at this time.
0 commit comments