@px-ui/ui 0.1.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avatar-BAkmIOVe.d.ts +41 -0
- package/dist/avatar-BAkmIOVe.d.ts.map +1 -0
- package/dist/avatar-DDdL9xDH.js +119 -0
- package/dist/avatar-DDdL9xDH.js.map +1 -0
- package/dist/button-BiiFfKiR.d.ts +19 -0
- package/dist/button-BiiFfKiR.d.ts.map +1 -0
- package/dist/button-hBUFMmsZ.js +47 -0
- package/dist/button-hBUFMmsZ.js.map +1 -0
- package/dist/combobox-CnpyzZ7B.js +334 -0
- package/dist/combobox-CnpyzZ7B.js.map +1 -0
- package/dist/combobox-JXY6PiDq.d.ts +109 -0
- package/dist/combobox-JXY6PiDq.d.ts.map +1 -0
- package/dist/components/accordion.d.ts +25 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +56 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +59 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +99 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +29 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +47 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +13 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +16 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar-group.d.ts +30 -0
- package/dist/components/avatar-group.d.ts.map +1 -0
- package/dist/components/avatar-group.js +69 -0
- package/dist/components/avatar-group.js.map +1 -0
- package/dist/components/avatar.d.ts +2 -0
- package/dist/components/avatar.js +5 -0
- package/dist/components/badge.d.ts +18 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +31 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +38 -0
- package/dist/components/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb.js +75 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-group.d.ts +29 -0
- package/dist/components/button-group.d.ts.map +1 -0
- package/dist/components/button-group.js +44 -0
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.d.ts +2 -0
- package/dist/components/button.js +4 -0
- package/dist/components/calendar.d.ts +32 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +119 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +38 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +59 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +57 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +136 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.d.ts +79 -0
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chart.js +148 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +11 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +24 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +25 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +28 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +3 -0
- package/dist/components/combobox.js +13 -0
- package/dist/components/command.d.ts +78 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +125 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.d.ts +87 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +137 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/currency-select-field.d.ts +105 -0
- package/dist/components/currency-select-field.d.ts.map +1 -0
- package/dist/components/currency-select-field.js +266 -0
- package/dist/components/currency-select-field.js.map +1 -0
- package/dist/components/dialog.d.ts +61 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +5 -0
- package/dist/components/direction.d.ts +2 -0
- package/dist/components/direction.js +3 -0
- package/dist/components/drawer.d.ts +45 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +86 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +2 -0
- package/dist/components/dropdown-menu.js +4 -0
- package/dist/components/empty.d.ts +36 -0
- package/dist/components/empty.d.ts.map +1 -0
- package/dist/components/empty.js +62 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/field.d.ts +72 -0
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +122 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/file-upload-field.d.ts +58 -0
- package/dist/components/file-upload-field.d.ts.map +1 -0
- package/dist/components/file-upload-field.js +90 -0
- package/dist/components/file-upload-field.js.map +1 -0
- package/dist/components/file-upload.d.ts +4 -0
- package/dist/components/file-upload.js +6 -0
- package/dist/components/hover-card.d.ts +21 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +40 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.d.ts +46 -0
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +9 -0
- package/dist/components/input-otp.d.ts +24 -0
- package/dist/components/input-otp.d.ts.map +1 -0
- package/dist/components/input-otp.js +40 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.d.ts +2 -0
- package/dist/components/input.js +4 -0
- package/dist/components/item.d.ts +62 -0
- package/dist/components/item.d.ts.map +1 -0
- package/dist/components/item.js +124 -0
- package/dist/components/item.js.map +1 -0
- package/dist/components/kbd.d.ts +14 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +22 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +2 -0
- package/dist/components/label.js +6 -0
- package/dist/components/menubar.d.ts +89 -0
- package/dist/components/menubar.d.ts.map +1 -0
- package/dist/components/menubar.js +140 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/native-select.d.ts +23 -0
- package/dist/components/native-select.d.ts.map +1 -0
- package/dist/components/native-select.js +41 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +48 -0
- package/dist/components/navigation-menu.d.ts.map +1 -0
- package/dist/components/navigation-menu.js +85 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.d.ts +46 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +89 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/phone-input.d.ts +28 -0
- package/dist/components/phone-input.d.ts.map +1 -0
- package/dist/components/phone-input.js +60 -0
- package/dist/components/phone-input.js.map +1 -0
- package/dist/components/popover.d.ts +34 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +4 -0
- package/dist/components/progress.d.ts +29 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +48 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +16 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +29 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.d.ts +21 -0
- package/dist/components/resizable.d.ts.map +1 -0
- package/dist/components/resizable.js +32 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scroll-area.d.ts +17 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +39 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +56 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +102 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +2 -0
- package/dist/components/separator.js +4 -0
- package/dist/components/sheet.d.ts +43 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +7 -0
- package/dist/components/sidebar.d.ts +162 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +390 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.d.ts +10 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +4 -0
- package/dist/components/slider.d.ts +15 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +36 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/spinner.d.ts +11 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +4 -0
- package/dist/components/switch.d.ts +14 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +21 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +39 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +71 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +31 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +55 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +11 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +4 -0
- package/dist/components/toast.d.ts +2 -0
- package/dist/components/toast.js +6 -0
- package/dist/components/toggle-group.d.ts +29 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +55 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +2 -0
- package/dist/components/toggle.js +6 -0
- package/dist/components/tooltip.d.ts +2 -0
- package/dist/components/tooltip.js +4 -0
- package/dist/dialog-CTqRrytc.js +103 -0
- package/dist/dialog-CTqRrytc.js.map +1 -0
- package/dist/direction-BKSh6e6q.js +3 -0
- package/dist/dropdown-menu-BEARLcDj.d.ts +91 -0
- package/dist/dropdown-menu-BEARLcDj.d.ts.map +1 -0
- package/dist/dropdown-menu-CcumvwhM.js +139 -0
- package/dist/dropdown-menu-CcumvwhM.js.map +1 -0
- package/dist/file-upload-D8hgfjvA.d.ts +145 -0
- package/dist/file-upload-D8hgfjvA.d.ts.map +1 -0
- package/dist/file-upload-DeCIv13t.js +434 -0
- package/dist/file-upload-DeCIv13t.js.map +1 -0
- package/dist/hooks/use-async-options.d.ts +2 -0
- package/dist/hooks/use-async-options.js +3 -0
- package/dist/hooks/use-debounce.d.ts +5 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-debounce.js +3 -0
- package/dist/hooks/use-file-upload.d.ts +2 -0
- package/dist/hooks/use-file-upload.js +3 -0
- package/dist/hooks/use-infinite-scroll.d.ts +21 -0
- package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
- package/dist/hooks/use-infinite-scroll.js +4 -0
- package/dist/hooks/use-intersection-observer.d.ts +2 -0
- package/dist/hooks/use-intersection-observer.js +3 -0
- package/dist/hooks/use-mobile.d.ts +5 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +3 -0
- package/dist/input-8jqdnUZl.js +18 -0
- package/dist/input-8jqdnUZl.js.map +1 -0
- package/dist/input-DwxhsFRP.d.ts +12 -0
- package/dist/input-DwxhsFRP.d.ts.map +1 -0
- package/dist/input-group-DqEkmpXW.js +81 -0
- package/dist/input-group-DqEkmpXW.js.map +1 -0
- package/dist/label-AaH9ZYCZ.js +16 -0
- package/dist/label-AaH9ZYCZ.js.map +1 -0
- package/dist/label-D5SCGMZl.d.ts +11 -0
- package/dist/label-D5SCGMZl.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +3 -0
- package/dist/popover-C9D43EuT.js +57 -0
- package/dist/popover-C9D43EuT.js.map +1 -0
- package/dist/providers/px-ui-provider.d.ts +36 -0
- package/dist/providers/px-ui-provider.d.ts.map +1 -0
- package/dist/providers/px-ui-provider.js +26 -0
- package/dist/providers/px-ui-provider.js.map +1 -0
- package/dist/separator-BS3ilczC.js +17 -0
- package/dist/separator-BS3ilczC.js.map +1 -0
- package/dist/separator-ct9ZvuTk.d.ts +12 -0
- package/dist/separator-ct9ZvuTk.d.ts.map +1 -0
- package/dist/sheet-CLjNDrfL.js +91 -0
- package/dist/sheet-CLjNDrfL.js.map +1 -0
- package/dist/skeleton-BcIxI5Wq.js +15 -0
- package/dist/skeleton-BcIxI5Wq.js.map +1 -0
- package/dist/spinner-Bo0sUZEg.js +17 -0
- package/dist/spinner-Bo0sUZEg.js.map +1 -0
- package/dist/styles.css +196 -0
- package/dist/textarea-Cq0o323P.js +16 -0
- package/dist/textarea-Cq0o323P.js.map +1 -0
- package/dist/toast-COWAQbIk.js +211 -0
- package/dist/toast-COWAQbIk.js.map +1 -0
- package/dist/toast-CXkP5Jwp.d.ts +74 -0
- package/dist/toast-CXkP5Jwp.d.ts.map +1 -0
- package/dist/toggle-BXBPgIQh.d.ts +19 -0
- package/dist/toggle-BXBPgIQh.d.ts.map +1 -0
- package/dist/toggle-DhJ_qwgw.js +38 -0
- package/dist/toggle-DhJ_qwgw.js.map +1 -0
- package/dist/tooltip-BWjVzK67.d.ts +26 -0
- package/dist/tooltip-BWjVzK67.d.ts.map +1 -0
- package/dist/tooltip-DkPxCJIL.js +43 -0
- package/dist/tooltip-DkPxCJIL.js.map +1 -0
- package/dist/use-async-options-DHR8q5qX.d.ts +45 -0
- package/dist/use-async-options-DHR8q5qX.d.ts.map +1 -0
- package/dist/use-async-options-wZ9LJ2BJ.js +46 -0
- package/dist/use-async-options-wZ9LJ2BJ.js.map +1 -0
- package/dist/use-debounce-_qaEZqtt.js +24 -0
- package/dist/use-debounce-_qaEZqtt.js.map +1 -0
- package/dist/{index.js → use-file-upload-Dxrej28u.js} +3 -204
- package/dist/use-file-upload-Dxrej28u.js.map +1 -0
- package/dist/use-file-upload-yy-xLBtn.d.ts +133 -0
- package/dist/use-file-upload-yy-xLBtn.d.ts.map +1 -0
- package/dist/use-infinite-scroll-CpbhGGT5.js +38 -0
- package/dist/use-infinite-scroll-CpbhGGT5.js.map +1 -0
- package/dist/use-intersection-observer-C2xDq2SW.d.ts +11 -0
- package/dist/use-intersection-observer-C2xDq2SW.d.ts.map +1 -0
- package/dist/use-intersection-observer-CZfnep4z.js +33 -0
- package/dist/use-intersection-observer-CZfnep4z.js.map +1 -0
- package/dist/use-mobile-l5ebOdQl.js +21 -0
- package/dist/use-mobile-l5ebOdQl.js.map +1 -0
- package/dist/utils-mWJR2N24.js +28 -0
- package/dist/utils-mWJR2N24.js.map +1 -0
- package/package.json +289 -26
- package/dist/index.css +0 -143
- package/dist/index.d.ts +0 -229
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/styles.css
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
@import "tw-animate-css";
|
|
2
|
+
@import "shadcn/tailwind.css";
|
|
3
|
+
|
|
4
|
+
@custom-variant dark (&:is(.dark *));
|
|
5
|
+
@source "../**/*.{js,jsx,ts,tsx}";
|
|
6
|
+
|
|
7
|
+
@theme inline {
|
|
8
|
+
--font-heading: var(--font-sans);
|
|
9
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
10
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
11
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
12
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
13
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
14
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
15
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
16
|
+
--color-sidebar: var(--sidebar);
|
|
17
|
+
--color-chart-5: var(--chart-5);
|
|
18
|
+
--color-chart-4: var(--chart-4);
|
|
19
|
+
--color-chart-3: var(--chart-3);
|
|
20
|
+
--color-chart-2: var(--chart-2);
|
|
21
|
+
--color-chart-1: var(--chart-1);
|
|
22
|
+
--color-ring: var(--ring);
|
|
23
|
+
--color-input: var(--input);
|
|
24
|
+
--color-border: var(--border);
|
|
25
|
+
--color-destructive: var(--destructive);
|
|
26
|
+
--color-warning: var(--warning);
|
|
27
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
28
|
+
--color-success: var(--success);
|
|
29
|
+
--color-success-foreground: var(--success-foreground);
|
|
30
|
+
--color-info: var(--info);
|
|
31
|
+
--color-info-foreground: var(--info-foreground);
|
|
32
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
33
|
+
--color-accent: var(--accent);
|
|
34
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
35
|
+
--color-muted: var(--muted);
|
|
36
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
37
|
+
--color-secondary: var(--secondary);
|
|
38
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
39
|
+
--color-primary: var(--primary);
|
|
40
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
41
|
+
--color-popover: var(--popover);
|
|
42
|
+
--color-card-foreground: var(--card-foreground);
|
|
43
|
+
--color-card: var(--card);
|
|
44
|
+
--color-foreground: var(--foreground);
|
|
45
|
+
--color-background: var(--background);
|
|
46
|
+
--radius-sm: calc(var(--radius) * 0.6);
|
|
47
|
+
--radius-md: calc(var(--radius) * 0.8);
|
|
48
|
+
--radius-lg: var(--radius);
|
|
49
|
+
--radius-xl: calc(var(--radius) * 1.4);
|
|
50
|
+
--radius-2xl: calc(var(--radius) * 1.8);
|
|
51
|
+
--radius-3xl: calc(var(--radius) * 2.2);
|
|
52
|
+
--radius-4xl: calc(var(--radius) * 2.6);
|
|
53
|
+
--font-sans-light: "Lato L", system-ui, sans-serif;
|
|
54
|
+
--font-sans: "Lato R", system-ui, sans-serif;
|
|
55
|
+
--font-sans-sb: "Lato SB", system-ui, sans-serif;
|
|
56
|
+
--font-sans-b: "Lato B", system-ui, sans-serif;
|
|
57
|
+
--breakpoint-ppx-sm: 40rem;
|
|
58
|
+
--breakpoint-ppx-md: 48rem;
|
|
59
|
+
--breakpoint-ppx-lg: 64rem;
|
|
60
|
+
--breakpoint-ppx-xl: 80rem;
|
|
61
|
+
--breakpoint-ppx-2xl: 96rem;
|
|
62
|
+
--tracking-ppx-tighter: -0.05em;
|
|
63
|
+
--tracking-ppx-tight: -0.025em;
|
|
64
|
+
--tracking-ppx-normal: 0em;
|
|
65
|
+
--tracking-ppx-wide: 0.025em;
|
|
66
|
+
--tracking-ppx-wider: 0.05em;
|
|
67
|
+
--tracking-ppx-widest: 0.1em;
|
|
68
|
+
--animate-progress-indeterminate: progress-indeterminate 1.2s ease-in-out
|
|
69
|
+
infinite;
|
|
70
|
+
|
|
71
|
+
@keyframes progress-indeterminate {
|
|
72
|
+
from {
|
|
73
|
+
margin-inline-start: -33%;
|
|
74
|
+
}
|
|
75
|
+
to {
|
|
76
|
+
margin-inline-start: 100%;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:root {
|
|
82
|
+
--background: oklch(1 0 0);
|
|
83
|
+
--foreground: oklch(0.141 0.005 285.823);
|
|
84
|
+
--card: oklch(1 0 0);
|
|
85
|
+
--card-foreground: oklch(0.141 0.005 285.823);
|
|
86
|
+
--popover: oklch(1 0 0);
|
|
87
|
+
--popover-foreground: oklch(0.141 0.005 285.823);
|
|
88
|
+
--primary: #2b9a66;
|
|
89
|
+
--primary-foreground: oklch(1 0 0);
|
|
90
|
+
--secondary: oklch(0.967 0.001 286.375);
|
|
91
|
+
--secondary-foreground: oklch(0.21 0.006 285.885);
|
|
92
|
+
--muted: oklch(0.967 0.001 286.375);
|
|
93
|
+
--muted-foreground: oklch(0.552 0.016 285.938);
|
|
94
|
+
--accent: oklch(0.96 0.035 156);
|
|
95
|
+
--accent-foreground: oklch(0.141 0.005 285.823);
|
|
96
|
+
--destructive: oklch(0.577 0.245 27.325);
|
|
97
|
+
--warning: oklch(0.72 0.17 86);
|
|
98
|
+
--warning-foreground: oklch(1 0 0);
|
|
99
|
+
--success: #28b674;
|
|
100
|
+
--success-foreground: oklch(1 0 0);
|
|
101
|
+
--info: #408ff0;
|
|
102
|
+
--info-foreground: oklch(1 0 0);
|
|
103
|
+
--border: oklch(0.92 0.004 286.32);
|
|
104
|
+
--input: oklch(0.92 0.004 286.32);
|
|
105
|
+
--ring: oklch(0.625 0.13 156);
|
|
106
|
+
--chart-1: oklch(0.871 0.006 286.286);
|
|
107
|
+
--chart-2: oklch(0.552 0.016 285.938);
|
|
108
|
+
--chart-3: oklch(0.442 0.017 285.786);
|
|
109
|
+
--chart-4: oklch(0.37 0.013 285.805);
|
|
110
|
+
--chart-5: oklch(0.274 0.006 286.033);
|
|
111
|
+
--radius: 0.625rem;
|
|
112
|
+
--sidebar: oklch(0.985 0 0);
|
|
113
|
+
--sidebar-foreground: oklch(0.141 0.005 285.823);
|
|
114
|
+
--sidebar-primary: oklch(0.627 0.194 149.214);
|
|
115
|
+
--sidebar-primary-foreground: oklch(1 0 0);
|
|
116
|
+
--sidebar-accent: oklch(0.96 0.035 156);
|
|
117
|
+
--sidebar-accent-foreground: oklch(0.141 0.005 285.823);
|
|
118
|
+
--sidebar-border: oklch(0.92 0.004 286.32);
|
|
119
|
+
--sidebar-ring: oklch(0.625 0.13 156);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.dark {
|
|
123
|
+
--background: oklch(0.141 0.005 285.823);
|
|
124
|
+
--foreground: oklch(0.985 0 0);
|
|
125
|
+
--card: oklch(0.21 0.006 285.885);
|
|
126
|
+
--card-foreground: oklch(0.985 0 0);
|
|
127
|
+
--popover: oklch(0.21 0.006 285.885);
|
|
128
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
129
|
+
--primary: oklch(0.54 0.12 156);
|
|
130
|
+
--primary-foreground: oklch(1 0 0);
|
|
131
|
+
--secondary: oklch(0.274 0.006 286.033);
|
|
132
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
133
|
+
--muted: oklch(0.274 0.006 286.033);
|
|
134
|
+
--muted-foreground: oklch(0.705 0.015 286.067);
|
|
135
|
+
--accent: oklch(0.3 0.04 156);
|
|
136
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
137
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
138
|
+
--warning: oklch(0.828 0.158 84);
|
|
139
|
+
--warning-foreground: oklch(0.141 0.005 285.823);
|
|
140
|
+
--success: oklch(0.7 0.15 156);
|
|
141
|
+
--success-foreground: oklch(1 0 0);
|
|
142
|
+
--info: oklch(0.72 0.14 250);
|
|
143
|
+
--info-foreground: oklch(1 0 0);
|
|
144
|
+
--border: oklch(1 0 0 / 10%);
|
|
145
|
+
--input: oklch(1 0 0 / 15%);
|
|
146
|
+
--ring: oklch(0.7 0.14 156);
|
|
147
|
+
--chart-1: oklch(0.871 0.006 286.286);
|
|
148
|
+
--chart-2: oklch(0.552 0.016 285.938);
|
|
149
|
+
--chart-3: oklch(0.442 0.017 285.786);
|
|
150
|
+
--chart-4: oklch(0.37 0.013 285.805);
|
|
151
|
+
--chart-5: oklch(0.274 0.006 286.033);
|
|
152
|
+
--sidebar: oklch(0.21 0.006 285.885);
|
|
153
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
|
154
|
+
--sidebar-primary: oklch(0.723 0.219 149.579);
|
|
155
|
+
--sidebar-primary-foreground: oklch(1 0 0);
|
|
156
|
+
--sidebar-accent: oklch(0.3 0.04 156);
|
|
157
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
158
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
159
|
+
--sidebar-ring: oklch(0.7 0.14 156);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@utility ppx-scrollbar {
|
|
163
|
+
scrollbar-width: thin;
|
|
164
|
+
scrollbar-color: var(--border) transparent;
|
|
165
|
+
|
|
166
|
+
&::-webkit-scrollbar {
|
|
167
|
+
width: 6px;
|
|
168
|
+
height: 6px;
|
|
169
|
+
}
|
|
170
|
+
&::-webkit-scrollbar-track {
|
|
171
|
+
background: transparent;
|
|
172
|
+
}
|
|
173
|
+
&::-webkit-scrollbar-thumb {
|
|
174
|
+
background: var(--border);
|
|
175
|
+
border-radius: 3px;
|
|
176
|
+
}
|
|
177
|
+
&::-webkit-scrollbar-thumb:hover {
|
|
178
|
+
background: var(--muted-foreground);
|
|
179
|
+
}
|
|
180
|
+
&::-webkit-scrollbar-corner {
|
|
181
|
+
display: none;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@layer base {
|
|
186
|
+
* {
|
|
187
|
+
@apply border-border outline-ring/50;
|
|
188
|
+
}
|
|
189
|
+
body {
|
|
190
|
+
@apply bg-background text-foreground;
|
|
191
|
+
}
|
|
192
|
+
button:not(:disabled),
|
|
193
|
+
[role="button"]:not(:disabled) {
|
|
194
|
+
cursor: pointer;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { t as cn } from "./utils-mWJR2N24.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/textarea.tsx
|
|
6
|
+
function Textarea({ className, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx("textarea", {
|
|
8
|
+
"data-slot": "textarea",
|
|
9
|
+
className: cn("flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 ppx-md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className),
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Textarea as t };
|
|
16
|
+
//# sourceMappingURL=textarea-Cq0o323P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea-Cq0o323P.js","names":[],"sources":["../src/components/textarea.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 ppx-md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":";;;;;AAIA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,qgBACA,UACD;EACD,GAAI;GACJ"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { t as cn } from "./utils-mWJR2N24.js";
|
|
2
|
+
import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, XIcon } from "lucide-react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import "react";
|
|
5
|
+
import { Toast } from "@base-ui/react/toast";
|
|
6
|
+
|
|
7
|
+
//#region src/components/toast.tsx
|
|
8
|
+
const toastManager = Toast.createToastManager();
|
|
9
|
+
const VIEWPORT_POSITION = {
|
|
10
|
+
"top-left": "top-4 left-4 ppx-sm:top-8 ppx-sm:left-8",
|
|
11
|
+
"top-center": "top-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:top-8",
|
|
12
|
+
"top-right": "top-4 right-4 ppx-sm:top-8 ppx-sm:right-8",
|
|
13
|
+
"bottom-left": "bottom-4 left-4 ppx-sm:bottom-8 ppx-sm:left-8",
|
|
14
|
+
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:bottom-8",
|
|
15
|
+
"bottom-right": "bottom-4 right-4 ppx-sm:bottom-8 ppx-sm:right-8"
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Host component for toasts. Mount it once near the root of your app. Toasts are
|
|
19
|
+
* dispatched with the exported `toast` helper.
|
|
20
|
+
*/
|
|
21
|
+
function Toaster({ position = "bottom-right", ...props }) {
|
|
22
|
+
return /* @__PURE__ */ jsx(Toast.Provider, {
|
|
23
|
+
toastManager,
|
|
24
|
+
...props,
|
|
25
|
+
children: /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
|
|
26
|
+
"data-slot": "toaster",
|
|
27
|
+
className: cn("fixed z-[100] mx-auto flex w-[calc(100vw-2rem)] outline-none ppx-sm:w-90", VIEWPORT_POSITION[position]),
|
|
28
|
+
children: /* @__PURE__ */ jsx(ToastList, { position })
|
|
29
|
+
}) })
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function ToastList({ position }) {
|
|
33
|
+
const { toasts } = Toast.useToastManager();
|
|
34
|
+
const side = position.startsWith("top") ? "top" : "bottom";
|
|
35
|
+
const swipeDirection = [side === "top" ? "up" : "down", position.includes("left") ? "left" : position.includes("right") ? "right" : null].filter(Boolean);
|
|
36
|
+
return toasts.map((toast$1) => /* @__PURE__ */ jsx(Toast.Root, {
|
|
37
|
+
toast: toast$1,
|
|
38
|
+
"data-side": side,
|
|
39
|
+
swipeDirection,
|
|
40
|
+
className: cn("[--gap:0.75rem] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-frontmost-height,var(--toast-height))] [--dir:1] data-[side=top]:[--dir:-1]", "[--offset-y:calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-offset-y)*-1-var(--toast-index)*var(--gap)))]", "absolute right-0 left-auto z-[calc(1000-var(--toast-index))] mr-0 w-full origin-bottom rounded-lg border bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 select-none", toastTint(toast$1.type), "bottom-0 data-[side=top]:top-0 data-[side=top]:bottom-auto data-[side=top]:origin-top", "h-[var(--height)] data-expanded:h-[var(--toast-height)]", "after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-[''] after:top-full data-[side=top]:after:top-auto data-[side=top]:after:bottom-full", "[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-index)*var(--peek)*-1-var(--shrink)*var(--height))))_scale(var(--scale))]", "data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]", "data-starting-style:[transform:translateY(calc(var(--dir)*150%))]", "data-ending-style:opacity-0 data-limited:opacity-0", "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(calc(var(--dir)*150%))]", "data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]", "data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]", "data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]", "data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]", "[transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s]"),
|
|
41
|
+
children: /* @__PURE__ */ jsxs(Toast.Content, {
|
|
42
|
+
className: "flex h-full items-start gap-3 overflow-hidden p-4 text-sm leading-tight transition-opacity duration-[250ms] ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100",
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ jsx(ToastIcon, { type: toast$1.type }),
|
|
45
|
+
/* @__PURE__ */ jsxs("div", {
|
|
46
|
+
className: "flex min-w-0 flex-1 flex-col gap-1",
|
|
47
|
+
children: [toast$1.title ? /* @__PURE__ */ jsx(Toast.Title, { className: "text-sm leading-tight font-medium" }) : null, toast$1.description ? /* @__PURE__ */ jsx(Toast.Description, { className: "text-sm text-muted-foreground" }) : null]
|
|
48
|
+
}),
|
|
49
|
+
toast$1.actionProps ? /* @__PURE__ */ jsx("div", {
|
|
50
|
+
className: "flex h-[1lh] shrink-0 items-center",
|
|
51
|
+
children: /* @__PURE__ */ jsx(Toast.Action, { className: "inline-flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-md border bg-transparent px-3 text-xs font-medium whitespace-nowrap transition-colors hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" })
|
|
52
|
+
}) : null,
|
|
53
|
+
/* @__PURE__ */ jsx("div", {
|
|
54
|
+
className: "-me-1 flex h-[1lh] shrink-0 items-center",
|
|
55
|
+
children: /* @__PURE__ */ jsx(Toast.Close, {
|
|
56
|
+
"aria-label": "Dismiss",
|
|
57
|
+
className: "inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none",
|
|
58
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-4" })
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
})
|
|
63
|
+
}, toast$1.id));
|
|
64
|
+
}
|
|
65
|
+
const TOAST_ICONS = {
|
|
66
|
+
success: {
|
|
67
|
+
Icon: CircleCheckIcon,
|
|
68
|
+
color: "text-success"
|
|
69
|
+
},
|
|
70
|
+
info: {
|
|
71
|
+
Icon: InfoIcon,
|
|
72
|
+
color: "text-info"
|
|
73
|
+
},
|
|
74
|
+
warning: {
|
|
75
|
+
Icon: TriangleAlertIcon,
|
|
76
|
+
color: "text-warning"
|
|
77
|
+
},
|
|
78
|
+
error: {
|
|
79
|
+
Icon: OctagonXIcon,
|
|
80
|
+
color: "text-destructive"
|
|
81
|
+
},
|
|
82
|
+
loading: {
|
|
83
|
+
Icon: Loader2Icon,
|
|
84
|
+
color: "text-muted-foreground"
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
function ToastIcon({ type }) {
|
|
88
|
+
const entry = type ? TOAST_ICONS[type] : void 0;
|
|
89
|
+
if (!entry) return null;
|
|
90
|
+
const { Icon, color } = entry;
|
|
91
|
+
return /* @__PURE__ */ jsx("span", {
|
|
92
|
+
className: cn("flex h-[1lh] shrink-0 items-center justify-center", color),
|
|
93
|
+
children: /* @__PURE__ */ jsx(Icon, { className: cn("size-4", type === "loading" && "animate-spin") })
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
function toastTint(type) {
|
|
97
|
+
switch (type) {
|
|
98
|
+
case "success": return "bg-[color-mix(in_srgb,var(--success)_10%,var(--popover))]";
|
|
99
|
+
case "info": return "bg-[color-mix(in_srgb,var(--info)_10%,var(--popover))]";
|
|
100
|
+
case "warning": return "bg-[color-mix(in_srgb,var(--warning)_10%,var(--popover))]";
|
|
101
|
+
case "error": return "bg-[color-mix(in_srgb,var(--destructive)_10%,var(--popover))]";
|
|
102
|
+
default: return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function makeToast(type) {
|
|
106
|
+
return (title, options) => toastManager.add({
|
|
107
|
+
title,
|
|
108
|
+
...type ? { type } : {},
|
|
109
|
+
...options
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so
|
|
114
|
+
* it works even outside the React tree.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* toast("Event has been created")
|
|
118
|
+
* toast.success("Saved", { description: "Your changes are live." })
|
|
119
|
+
*/
|
|
120
|
+
const toast = Object.assign(makeToast(), {
|
|
121
|
+
success: makeToast("success"),
|
|
122
|
+
info: makeToast("info"),
|
|
123
|
+
warning: makeToast("warning"),
|
|
124
|
+
error: makeToast("error"),
|
|
125
|
+
message: makeToast(),
|
|
126
|
+
loading: (title, options) => toastManager.add({
|
|
127
|
+
title,
|
|
128
|
+
type: "loading",
|
|
129
|
+
timeout: 0,
|
|
130
|
+
...options
|
|
131
|
+
}),
|
|
132
|
+
promise: (promise, options) => toastManager.promise(typeof promise === "function" ? promise() : promise, options),
|
|
133
|
+
update: (id, options) => toastManager.update(id, options),
|
|
134
|
+
dismiss: (id) => toastManager.close(id)
|
|
135
|
+
});
|
|
136
|
+
const anchoredToastManager = Toast.createToastManager();
|
|
137
|
+
function makeAnchoredToast(type) {
|
|
138
|
+
return (title, options) => {
|
|
139
|
+
const { anchor, ...rest } = options;
|
|
140
|
+
return anchoredToastManager.add({
|
|
141
|
+
title,
|
|
142
|
+
...type ? { type } : {},
|
|
143
|
+
...rest,
|
|
144
|
+
data: {
|
|
145
|
+
...rest.data,
|
|
146
|
+
anchor
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Dispatch a toast anchored to an element instead of a screen corner. Render
|
|
153
|
+
* `<AnchoredToaster />` once, then pass the trigger element as `anchor`.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* <Button
|
|
157
|
+
* onClick={(e) => anchoredToast.success("Copied", { anchor: e.currentTarget })}
|
|
158
|
+
* >
|
|
159
|
+
* Copy
|
|
160
|
+
* </Button>
|
|
161
|
+
*/
|
|
162
|
+
const anchoredToast = Object.assign(makeAnchoredToast(), {
|
|
163
|
+
success: makeAnchoredToast("success"),
|
|
164
|
+
info: makeAnchoredToast("info"),
|
|
165
|
+
warning: makeAnchoredToast("warning"),
|
|
166
|
+
error: makeAnchoredToast("error"),
|
|
167
|
+
dismiss: (id) => anchoredToastManager.close(id)
|
|
168
|
+
});
|
|
169
|
+
/**
|
|
170
|
+
* Host for anchored toasts. Mount it once near the app root; dispatch with the
|
|
171
|
+
* exported `anchoredToast` helper.
|
|
172
|
+
*/
|
|
173
|
+
function AnchoredToaster(props) {
|
|
174
|
+
return /* @__PURE__ */ jsx(Toast.Provider, {
|
|
175
|
+
toastManager: anchoredToastManager,
|
|
176
|
+
...props,
|
|
177
|
+
children: /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
|
|
178
|
+
"data-slot": "anchored-toaster",
|
|
179
|
+
className: "outline-none",
|
|
180
|
+
children: /* @__PURE__ */ jsx(AnchoredToastList, {})
|
|
181
|
+
}) })
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function AnchoredToastList() {
|
|
185
|
+
const { toasts } = Toast.useToastManager();
|
|
186
|
+
return toasts.map((toast$1) => {
|
|
187
|
+
const anchor = toast$1.data?.anchor;
|
|
188
|
+
if (!anchor) return null;
|
|
189
|
+
return /* @__PURE__ */ jsx(Toast.Positioner, {
|
|
190
|
+
toast: toast$1,
|
|
191
|
+
anchor,
|
|
192
|
+
sideOffset: 6,
|
|
193
|
+
className: "z-[100] max-w-[min(20rem,var(--available-width))]",
|
|
194
|
+
children: /* @__PURE__ */ jsx(Toast.Root, {
|
|
195
|
+
toast: toast$1,
|
|
196
|
+
className: cn("rounded-lg border bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10", "scale-100 transition-[transform,opacity] data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0", toastTint(toast$1.type)),
|
|
197
|
+
children: /* @__PURE__ */ jsxs(Toast.Content, {
|
|
198
|
+
className: "flex items-start gap-2.5 px-3 py-2 text-sm leading-tight",
|
|
199
|
+
children: [/* @__PURE__ */ jsx(ToastIcon, { type: toast$1.type }), /* @__PURE__ */ jsxs("div", {
|
|
200
|
+
className: "flex min-w-0 flex-col gap-0.5",
|
|
201
|
+
children: [/* @__PURE__ */ jsx(Toast.Title, { className: "text-sm leading-tight font-medium" }), toast$1.description ? /* @__PURE__ */ jsx(Toast.Description, { className: "text-sm text-muted-foreground" }) : null]
|
|
202
|
+
})]
|
|
203
|
+
})
|
|
204
|
+
})
|
|
205
|
+
}, toast$1.id);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
//#endregion
|
|
210
|
+
export { toast as a, anchoredToastManager as i, Toaster as n, toastManager as o, anchoredToast as r, AnchoredToaster as t };
|
|
211
|
+
//# sourceMappingURL=toast-COWAQbIk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-COWAQbIk.js","names":["VIEWPORT_POSITION: Record<ToasterPosition, string>","toast"],"sources":["../src/components/toast.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Toast } from \"@base-ui/react/toast\"\nimport type {\n ToastManagerAddOptions,\n ToastManagerPromiseOptions,\n ToastManagerUpdateOptions,\n} from \"@base-ui/react/toast\"\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n XIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\n// A global manager so toasts can be dispatched from anywhere — including outside\n// the React tree — while still rendering inside the mounted `<Toaster />`.\nconst toastManager = Toast.createToastManager()\n\ntype ToasterPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\"\n\nconst VIEWPORT_POSITION: Record<ToasterPosition, string> = {\n \"top-left\": \"top-4 left-4 ppx-sm:top-8 ppx-sm:left-8\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:top-8\",\n \"top-right\": \"top-4 right-4 ppx-sm:top-8 ppx-sm:right-8\",\n \"bottom-left\": \"bottom-4 left-4 ppx-sm:bottom-8 ppx-sm:left-8\",\n \"bottom-center\":\n \"bottom-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:bottom-8\",\n \"bottom-right\": \"bottom-4 right-4 ppx-sm:bottom-8 ppx-sm:right-8\",\n}\n\ntype ToasterProps = Omit<Toast.Provider.Props, \"toastManager\" | \"children\"> & {\n /**\n * Where toasts are anchored on the screen.\n * @default \"bottom-right\"\n */\n position?: ToasterPosition\n}\n\n/**\n * Host component for toasts. Mount it once near the root of your app. Toasts are\n * dispatched with the exported `toast` helper.\n */\nfunction Toaster({ position = \"bottom-right\", ...props }: ToasterProps) {\n return (\n <Toast.Provider toastManager={toastManager} {...props}>\n <Toast.Portal>\n <Toast.Viewport\n data-slot=\"toaster\"\n className={cn(\n \"fixed z-[100] mx-auto flex w-[calc(100vw-2rem)] outline-none ppx-sm:w-90\",\n VIEWPORT_POSITION[position]\n )}\n >\n <ToastList position={position} />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n )\n}\n\nfunction ToastList({ position }: { position: ToasterPosition }) {\n const { toasts } = Toast.useToastManager()\n const side = position.startsWith(\"top\") ? \"top\" : \"bottom\"\n const swipeDirection = [\n side === \"top\" ? \"up\" : \"down\",\n position.includes(\"left\")\n ? \"left\"\n : position.includes(\"right\")\n ? \"right\"\n : null,\n ].filter(Boolean) as (\"up\" | \"down\" | \"left\" | \"right\")[]\n\n return toasts.map((toast) => (\n <Toast.Root\n key={toast.id}\n toast={toast}\n data-side={side}\n swipeDirection={swipeDirection}\n className={cn(\n // Stacking + swipe driver variables exposed by Base UI.\n \"[--gap:0.75rem] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-frontmost-height,var(--toast-height))] [--dir:1] data-[side=top]:[--dir:-1]\",\n \"[--offset-y:calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-offset-y)*-1-var(--toast-index)*var(--gap)))]\",\n // Layout + appearance.\n \"absolute right-0 left-auto z-[calc(1000-var(--toast-index))] mr-0 w-full origin-bottom rounded-lg border bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 select-none\",\n toastTint(toast.type),\n \"bottom-0 data-[side=top]:top-0 data-[side=top]:bottom-auto data-[side=top]:origin-top\",\n \"h-[var(--height)] data-expanded:h-[var(--toast-height)]\",\n // Hover bridge so the stack stays expanded between toasts.\n \"after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-[''] after:top-full data-[side=top]:after:top-auto data-[side=top]:after:bottom-full\",\n // Collapsed (stacked) transform.\n \"[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-index)*var(--peek)*-1-var(--shrink)*var(--height))))_scale(var(--scale))]\",\n // Expanded transform.\n \"data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\n // Enter / exit.\n \"data-starting-style:[transform:translateY(calc(var(--dir)*150%))]\",\n \"data-ending-style:opacity-0 data-limited:opacity-0\",\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(calc(var(--dir)*150%))]\",\n // Swipe-to-dismiss exits.\n \"data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n \"data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\n \"[transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s]\"\n )}\n >\n {/*\n Each control (icon, action, close) is wrapped in an `h-[1lh]` box so it\n centers on the *first* line of text. With `items-start`, that means a\n single-line toast centers in the card (equal padding) while a wrapped /\n multi-line toast keeps the icon and close aligned to the title's first\n line instead of floating in the vertical middle. `text-sm leading-tight`\n sets the line-height that `1lh` resolves against, matching the title.\n */}\n <Toast.Content className=\"flex h-full items-start gap-3 overflow-hidden p-4 text-sm leading-tight transition-opacity duration-[250ms] ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100\">\n <ToastIcon type={toast.type} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n {toast.title ? (\n <Toast.Title className=\"text-sm leading-tight font-medium\" />\n ) : null}\n {toast.description ? (\n <Toast.Description className=\"text-sm text-muted-foreground\" />\n ) : null}\n </div>\n {toast.actionProps ? (\n <div className=\"flex h-[1lh] shrink-0 items-center\">\n <Toast.Action className=\"inline-flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-md border bg-transparent px-3 text-xs font-medium whitespace-nowrap transition-colors hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </div>\n ) : null}\n <div className=\"-me-1 flex h-[1lh] shrink-0 items-center\">\n <Toast.Close\n aria-label=\"Dismiss\"\n className=\"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none\"\n >\n <XIcon className=\"size-4\" />\n </Toast.Close>\n </div>\n </Toast.Content>\n </Toast.Root>\n ))\n}\n\nconst TOAST_ICONS = {\n success: { Icon: CircleCheckIcon, color: \"text-success\" },\n info: { Icon: InfoIcon, color: \"text-info\" },\n warning: { Icon: TriangleAlertIcon, color: \"text-warning\" },\n error: { Icon: OctagonXIcon, color: \"text-destructive\" },\n loading: { Icon: Loader2Icon, color: \"text-muted-foreground\" },\n} as const\n\nfunction ToastIcon({ type }: { type?: string }) {\n const entry = type\n ? TOAST_ICONS[type as keyof typeof TOAST_ICONS]\n : undefined\n if (!entry) return null\n const { Icon, color } = entry\n // `h-[1lh]` sizes the icon box to one line of text, so the icon centers on the\n // first line whether the toast is a single line or wraps to several.\n return (\n <span\n className={cn(\"flex h-[1lh] shrink-0 items-center justify-center\", color)}\n >\n <Icon className={cn(\"size-4\", type === \"loading\" && \"animate-spin\")} />\n </span>\n )\n}\n\n// Per-type tinted card — a 10% mix of the status color into the popover surface,\n// reproducing px-ui's classic soft-tinted toast look. Shared by both toasters.\nfunction toastTint(type?: string) {\n switch (type) {\n case \"success\":\n return \"bg-[color-mix(in_srgb,var(--success)_10%,var(--popover))]\"\n case \"info\":\n return \"bg-[color-mix(in_srgb,var(--info)_10%,var(--popover))]\"\n case \"warning\":\n return \"bg-[color-mix(in_srgb,var(--warning)_10%,var(--popover))]\"\n case \"error\":\n return \"bg-[color-mix(in_srgb,var(--destructive)_10%,var(--popover))]\"\n default:\n return undefined\n }\n}\n\ntype ToastOptions = Omit<ToastManagerAddOptions<any>, \"title\" | \"type\">\n\nfunction makeToast(type?: string) {\n return (title: React.ReactNode, options?: ToastOptions) =>\n toastManager.add({ title, ...(type ? { type } : {}), ...options })\n}\n\n/**\n * Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so\n * it works even outside the React tree.\n *\n * @example\n * toast(\"Event has been created\")\n * toast.success(\"Saved\", { description: \"Your changes are live.\" })\n */\nconst toast = Object.assign(makeToast(), {\n success: makeToast(\"success\"),\n info: makeToast(\"info\"),\n warning: makeToast(\"warning\"),\n error: makeToast(\"error\"),\n message: makeToast(),\n loading: (title: React.ReactNode, options?: ToastOptions) =>\n toastManager.add({ title, type: \"loading\", timeout: 0, ...options }),\n promise: <Value,>(\n promise: Promise<Value> | (() => Promise<Value>),\n options: ToastManagerPromiseOptions<Value, any>\n ) =>\n toastManager.promise(\n typeof promise === \"function\" ? promise() : promise,\n options\n ),\n update: (id: string, options: ToastManagerUpdateOptions<any>) =>\n toastManager.update(id, options),\n dismiss: (id?: string) => toastManager.close(id),\n})\n\n// A separate manager + host for anchored toasts: small popovers positioned next\n// to a trigger element (e.g. a \"Copied\" confirmation beside a button) rather\n// than stacked in a screen corner.\nconst anchoredToastManager = Toast.createToastManager()\n\ntype AnchoredToastOptions = ToastOptions & {\n /** Element to position the toast against, e.g. `event.currentTarget`. */\n anchor: Element | null\n}\n\nfunction makeAnchoredToast(type?: string) {\n return (title: React.ReactNode, options: AnchoredToastOptions) => {\n const { anchor, ...rest } = options\n // The anchor element rides along in `data`; `AnchoredToaster` reads it back\n // out and hands it to `Toast.Positioner`.\n return anchoredToastManager.add({\n title,\n ...(type ? { type } : {}),\n ...rest,\n data: { ...rest.data, anchor },\n })\n }\n}\n\n/**\n * Dispatch a toast anchored to an element instead of a screen corner. Render\n * `<AnchoredToaster />` once, then pass the trigger element as `anchor`.\n *\n * @example\n * <Button\n * onClick={(e) => anchoredToast.success(\"Copied\", { anchor: e.currentTarget })}\n * >\n * Copy\n * </Button>\n */\nconst anchoredToast = Object.assign(makeAnchoredToast(), {\n success: makeAnchoredToast(\"success\"),\n info: makeAnchoredToast(\"info\"),\n warning: makeAnchoredToast(\"warning\"),\n error: makeAnchoredToast(\"error\"),\n dismiss: (id?: string) => anchoredToastManager.close(id),\n})\n\n/**\n * Host for anchored toasts. Mount it once near the app root; dispatch with the\n * exported `anchoredToast` helper.\n */\nfunction AnchoredToaster(\n props: Omit<Toast.Provider.Props, \"toastManager\" | \"children\">\n) {\n return (\n <Toast.Provider toastManager={anchoredToastManager} {...props}>\n <Toast.Portal>\n <Toast.Viewport data-slot=\"anchored-toaster\" className=\"outline-none\">\n <AnchoredToastList />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n )\n}\n\nfunction AnchoredToastList() {\n const { toasts } = Toast.useToastManager()\n\n return toasts.map((toast) => {\n const anchor = (toast.data as { anchor?: Element | null } | undefined)\n ?.anchor\n if (!anchor) return null\n\n return (\n <Toast.Positioner\n key={toast.id}\n toast={toast}\n anchor={anchor}\n sideOffset={6}\n className=\"z-[100] max-w-[min(20rem,var(--available-width))]\"\n >\n <Toast.Root\n toast={toast}\n className={cn(\n \"rounded-lg border bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10\",\n \"scale-100 transition-[transform,opacity] data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0\",\n toastTint(toast.type)\n )}\n >\n <Toast.Content className=\"flex items-start gap-2.5 px-3 py-2 text-sm leading-tight\">\n <ToastIcon type={toast.type} />\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n <Toast.Title className=\"text-sm leading-tight font-medium\" />\n {toast.description ? (\n <Toast.Description className=\"text-sm text-muted-foreground\" />\n ) : null}\n </div>\n </Toast.Content>\n </Toast.Root>\n </Toast.Positioner>\n )\n })\n}\n\nexport {\n Toaster,\n toast,\n toastManager,\n AnchoredToaster,\n anchoredToast,\n anchoredToastManager,\n}\nexport type {\n ToasterProps,\n ToasterPosition,\n ToastOptions,\n AnchoredToastOptions,\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as react_jsx_runtime261 from "react/jsx-runtime";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
|
+
import * as _base_ui_react0 from "@base-ui/react";
|
|
4
|
+
import { Toast, ToastManagerAddOptions, ToastManagerPromiseOptions, ToastManagerUpdateOptions } from "@base-ui/react/toast";
|
|
5
|
+
|
|
6
|
+
//#region src/components/toast.d.ts
|
|
7
|
+
declare const toastManager: _base_ui_react0.ToastManager<any>;
|
|
8
|
+
type ToasterPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
|
|
9
|
+
type ToasterProps = Omit<Toast.Provider.Props, "toastManager" | "children"> & {
|
|
10
|
+
/**
|
|
11
|
+
* Where toasts are anchored on the screen.
|
|
12
|
+
* @default "bottom-right"
|
|
13
|
+
*/
|
|
14
|
+
position?: ToasterPosition;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Host component for toasts. Mount it once near the root of your app. Toasts are
|
|
18
|
+
* dispatched with the exported `toast` helper.
|
|
19
|
+
*/
|
|
20
|
+
declare function Toaster({
|
|
21
|
+
position,
|
|
22
|
+
...props
|
|
23
|
+
}: ToasterProps): react_jsx_runtime261.JSX.Element;
|
|
24
|
+
type ToastOptions = Omit<ToastManagerAddOptions<any>, "title" | "type">;
|
|
25
|
+
/**
|
|
26
|
+
* Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so
|
|
27
|
+
* it works even outside the React tree.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* toast("Event has been created")
|
|
31
|
+
* toast.success("Saved", { description: "Your changes are live." })
|
|
32
|
+
*/
|
|
33
|
+
declare const toast: ((title: React$1.ReactNode, options?: ToastOptions) => string) & {
|
|
34
|
+
success: (title: React$1.ReactNode, options?: ToastOptions) => string;
|
|
35
|
+
info: (title: React$1.ReactNode, options?: ToastOptions) => string;
|
|
36
|
+
warning: (title: React$1.ReactNode, options?: ToastOptions) => string;
|
|
37
|
+
error: (title: React$1.ReactNode, options?: ToastOptions) => string;
|
|
38
|
+
message: (title: React$1.ReactNode, options?: ToastOptions) => string;
|
|
39
|
+
loading: (title: React$1.ReactNode, options?: ToastOptions) => string;
|
|
40
|
+
promise: <Value>(promise: Promise<Value> | (() => Promise<Value>), options: ToastManagerPromiseOptions<Value, any>) => Promise<Value>;
|
|
41
|
+
update: (id: string, options: ToastManagerUpdateOptions<any>) => void;
|
|
42
|
+
dismiss: (id?: string) => void;
|
|
43
|
+
};
|
|
44
|
+
declare const anchoredToastManager: _base_ui_react0.ToastManager<any>;
|
|
45
|
+
type AnchoredToastOptions = ToastOptions & {
|
|
46
|
+
/** Element to position the toast against, e.g. `event.currentTarget`. */
|
|
47
|
+
anchor: Element | null;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Dispatch a toast anchored to an element instead of a screen corner. Render
|
|
51
|
+
* `<AnchoredToaster />` once, then pass the trigger element as `anchor`.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* <Button
|
|
55
|
+
* onClick={(e) => anchoredToast.success("Copied", { anchor: e.currentTarget })}
|
|
56
|
+
* >
|
|
57
|
+
* Copy
|
|
58
|
+
* </Button>
|
|
59
|
+
*/
|
|
60
|
+
declare const anchoredToast: ((title: React$1.ReactNode, options: AnchoredToastOptions) => string) & {
|
|
61
|
+
success: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
|
|
62
|
+
info: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
|
|
63
|
+
warning: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
|
|
64
|
+
error: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
|
|
65
|
+
dismiss: (id?: string) => void;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Host for anchored toasts. Mount it once near the app root; dispatch with the
|
|
69
|
+
* exported `anchoredToast` helper.
|
|
70
|
+
*/
|
|
71
|
+
declare function AnchoredToaster(props: Omit<Toast.Provider.Props, "toastManager" | "children">): react_jsx_runtime261.JSX.Element;
|
|
72
|
+
//#endregion
|
|
73
|
+
export { ToasterPosition as a, anchoredToastManager as c, Toaster as i, toast as l, AnchoredToaster as n, ToasterProps as o, ToastOptions as r, anchoredToast as s, AnchoredToastOptions as t, toastManager as u };
|
|
74
|
+
//# sourceMappingURL=toast-CXkP5Jwp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-CXkP5Jwp.d.ts","names":[],"sources":["../src/components/toast.tsx"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react_jsx_runtime265 from "react/jsx-runtime";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { Toggle } from "@base-ui/react/toggle";
|
|
4
|
+
import * as class_variance_authority_types12 from "class-variance-authority/types";
|
|
5
|
+
|
|
6
|
+
//#region src/components/toggle.d.ts
|
|
7
|
+
declare const toggleVariants: (props?: ({
|
|
8
|
+
variant?: "default" | "outline" | null | undefined;
|
|
9
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
10
|
+
} & class_variance_authority_types12.ClassProp) | undefined) => string;
|
|
11
|
+
declare function Toggle$1({
|
|
12
|
+
className,
|
|
13
|
+
variant,
|
|
14
|
+
size,
|
|
15
|
+
...props
|
|
16
|
+
}: Toggle.Props & VariantProps<typeof toggleVariants>): react_jsx_runtime265.JSX.Element;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { toggleVariants as n, Toggle$1 as t };
|
|
19
|
+
//# sourceMappingURL=toggle-BXBPgIQh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-BXBPgIQh.d.ts","names":[],"sources":["../src/components/toggle.tsx"],"sourcesContent":[],"mappings":";;;;;;cAOM;;;IAoBL,gCAAA,CAAA;AAxBiE,iBA0BzD,QAAA,CAFR;EAAA,SAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAOE,MAAA,CAAgB,KAPlB,GAO0B,YAP1B,CAAA,OAO8C,cAP9C,CAAA,CAAA,EAO6D,oBAAA,CAAA,GAAA,CAAA,OAP7D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { t as cn } from "./utils-mWJR2N24.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { Toggle } from "@base-ui/react/toggle";
|
|
5
|
+
|
|
6
|
+
//#region src/components/toggle.tsx
|
|
7
|
+
const toggleVariants = cva("group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: "bg-transparent",
|
|
11
|
+
outline: "border border-input bg-transparent shadow-xs hover:bg-muted"
|
|
12
|
+
},
|
|
13
|
+
size: {
|
|
14
|
+
default: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2",
|
|
15
|
+
sm: "h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5",
|
|
16
|
+
lg: "h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: "default",
|
|
21
|
+
size: "default"
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
function Toggle$1({ className, variant = "default", size = "default", ...props }) {
|
|
25
|
+
return /* @__PURE__ */ jsx(Toggle, {
|
|
26
|
+
"data-slot": "toggle",
|
|
27
|
+
className: cn(toggleVariants({
|
|
28
|
+
variant,
|
|
29
|
+
size,
|
|
30
|
+
className
|
|
31
|
+
})),
|
|
32
|
+
...props
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
export { toggleVariants as n, Toggle$1 as t };
|
|
38
|
+
//# sourceMappingURL=toggle-DhJ_qwgw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-DhJ_qwgw.js","names":["Toggle","TogglePrimitive"],"sources":["../src/components/toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@px-ui/ui/lib/utils\";\n\nconst toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border border-input bg-transparent shadow-xs hover:bg-muted\",\n },\n size: {\n default:\n \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n sm: \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5\",\n lg: \"h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n"],"mappings":";;;;;;AAOA,MAAM,iBAAiB,IACrB,6gBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACV;EACD,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAED,SAASA,SAAO,EACd,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAC2D;AAC9D,QACE,oBAACC;EACC,aAAU;EACV,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAW,CAAC,CAAC;EAC3D,GAAI;GACJ"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as react_jsx_runtime266 from "react/jsx-runtime";
|
|
2
|
+
import { Tooltip } from "@base-ui/react/tooltip";
|
|
3
|
+
|
|
4
|
+
//#region src/components/tooltip.d.ts
|
|
5
|
+
declare function TooltipProvider({
|
|
6
|
+
delay,
|
|
7
|
+
...props
|
|
8
|
+
}: Tooltip.Provider.Props): react_jsx_runtime266.JSX.Element;
|
|
9
|
+
declare function Tooltip$1({
|
|
10
|
+
...props
|
|
11
|
+
}: Tooltip.Root.Props): react_jsx_runtime266.JSX.Element;
|
|
12
|
+
declare function TooltipTrigger({
|
|
13
|
+
...props
|
|
14
|
+
}: Tooltip.Trigger.Props): react_jsx_runtime266.JSX.Element;
|
|
15
|
+
declare function TooltipContent({
|
|
16
|
+
className,
|
|
17
|
+
side,
|
|
18
|
+
sideOffset,
|
|
19
|
+
align,
|
|
20
|
+
alignOffset,
|
|
21
|
+
children,
|
|
22
|
+
...props
|
|
23
|
+
}: Tooltip.Popup.Props & Pick<Tooltip.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): react_jsx_runtime266.JSX.Element;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { TooltipTrigger as i, TooltipContent as n, TooltipProvider as r, Tooltip$1 as t };
|
|
26
|
+
//# sourceMappingURL=tooltip-BWjVzK67.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-BWjVzK67.d.ts","names":[],"sources":["../src/components/tooltip.tsx"],"sourcesContent":[],"mappings":";;;;iBAIS,eAAA;;;GAGN,OAAA,CAAiB,QAAA,CAAS,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAUzB,SAAA;;GAAsB,OAAA,CAAiB,IAAA,CAAK,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAIjD,cAAA;;GAA6B,OAAA,CAAiB,OAAA,CAAQ,QAAK,oBAAA,CAAA,GAAA,CAAA;AArBA,iBAyB3D,cAAA,CArBe;EAAA,SAAA;EAAA,IAAA;EAAA,UAAA;EAAA,KAAA;EAAA,WAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA6BrB,OAAA,CAAiB,KAAA,CAAM,KA7BF,GA8BtB,IA9BsB,CA+BpB,OAAA,CAAiB,UAAA,CAAW,KA/BR,EAAA,OAAA,GAAA,aAAA,GAAA,MAAA,GAAA,YAAA,CAAA,CAAA,EAiCrB,oBAAA,CAAA,GAAA,CAAA,OAjCqB"}
|