1
- import {
2
- PropsOf ,
3
- Signal ,
4
- Slot ,
5
- component$ ,
6
- createContextId ,
7
- useContextProvider ,
8
- useSignal ,
9
- } from '@builder.io/qwik' ;
1
+ import { PropsOf , Slot , component$ } from '@builder.io/qwik' ;
10
2
import { Modal as HeadlessModal } from '@qwik-ui/headless' ;
11
3
import { cn } from '@qwik-ui/utils' ;
12
4
13
- const Context = createContextId < Signal < boolean > > ( 'modal-context' ) ;
5
+ const Root = HeadlessModal . Root ;
14
6
15
- const Root = component$ < PropsOf < typeof HeadlessModal . Root > > ( ( { ...props } ) => {
16
- const showSig = useSignal ( false ) ;
17
- useContextProvider ( Context , showSig ) ;
18
- return (
19
- < HeadlessModal . Root bind :show = { showSig } { ...props } >
20
- < Slot />
21
- </ HeadlessModal . Root >
22
- ) ;
23
- } ) ;
7
+ const Trigger = HeadlessModal . Trigger ;
24
8
25
- const Panel = component$ ( ( ) => {
9
+ const Close = HeadlessModal . Close ;
10
+
11
+ const Panel = component$ < PropsOf < typeof HeadlessModal . Panel > > ( ( props ) => {
26
12
return (
27
- < HeadlessModal . Panel class = "max-w-sm rounded-base border border-white bg-background p-6 text-foreground shadow-md transition-all duration-300 backdrop:brightness-50 backdrop:backdrop-blur-sm backdrop:transition-all backdrop:duration-300 data-[state=open]:appear data-[state=closed]:disappear backdrop:data-[state=open]:appear backdrop:data-[state=closed]:disappear" >
13
+ < HeadlessModal . Panel
14
+ { ...props }
15
+ class = { cn (
16
+ 'max-w-sm rounded-base border bg-background p-6 text-foreground shadow-md backdrop:brightness-50 backdrop:backdrop-blur-sm' ,
17
+ 'data-[closed]:duration-300 data-[open]:duration-300 data-[open]:animate-in data-[closing]:animate-out data-[closing]:fade-out data-[open]:fade-in' ,
18
+ 'backdrop:data-[closed]:duration-300 backdrop:data-[open]:duration-300 backdrop:data-[open]:animate-in backdrop:data-[closing]:animate-out backdrop:data-[closing]:fade-out backdrop:data-[open]:fade-in' ,
19
+ props . class ,
20
+ ) }
21
+ >
28
22
< Slot />
29
23
</ HeadlessModal . Panel >
30
24
) ;
31
25
} ) ;
32
26
33
- const Trigger = component$ < PropsOf < typeof HeadlessModal . Trigger > > ( ( { ...props } ) => {
34
- return (
35
- < HeadlessModal . Trigger >
36
- < Slot { ...props } />
37
- </ HeadlessModal . Trigger >
38
- ) ;
39
- } ) ;
40
-
41
27
const Title = component$ < PropsOf < 'h2' > > ( ( { ...props } ) => {
42
28
return (
43
29
< HeadlessModal . Title
@@ -59,9 +45,9 @@ const Description = component$<PropsOf<'p'>>(({ ...props }) => {
59
45
60
46
export const Modal = {
61
47
Root,
62
- Panel,
63
48
Trigger,
49
+ Close,
50
+ Panel,
64
51
Title,
65
52
Description,
66
- Context,
67
53
} ;
0 commit comments