Skip to content

Commit 497f023

Browse files
committed
refactor(styled modal): use tailwindcss-animate
1 parent 3381690 commit 497f023

File tree

2 files changed

+22
-31
lines changed

2 files changed

+22
-31
lines changed

.changeset/warm-dots-melt.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@qwik-ui/styled': patch
3+
---
4+
5+
REFACTOR styled modal: use tailwindcss-animate
Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,29 @@
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';
102
import { Modal as HeadlessModal } from '@qwik-ui/headless';
113
import { cn } from '@qwik-ui/utils';
124

13-
const Context = createContextId<Signal<boolean>>('modal-context');
5+
const Root = HeadlessModal.Root;
146

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;
248

25-
const Panel = component$(() => {
9+
const Close = HeadlessModal.Close;
10+
11+
const Panel = component$<PropsOf<typeof HeadlessModal.Panel>>((props) => {
2612
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+
>
2822
<Slot />
2923
</HeadlessModal.Panel>
3024
);
3125
});
3226

33-
const Trigger = component$<PropsOf<typeof HeadlessModal.Trigger>>(({ ...props }) => {
34-
return (
35-
<HeadlessModal.Trigger>
36-
<Slot {...props} />
37-
</HeadlessModal.Trigger>
38-
);
39-
});
40-
4127
const Title = component$<PropsOf<'h2'>>(({ ...props }) => {
4228
return (
4329
<HeadlessModal.Title
@@ -59,9 +45,9 @@ const Description = component$<PropsOf<'p'>>(({ ...props }) => {
5945

6046
export const Modal = {
6147
Root,
62-
Panel,
6348
Trigger,
49+
Close,
50+
Panel,
6451
Title,
6552
Description,
66-
Context,
6753
};

0 commit comments

Comments
 (0)