@asevenid/ui 0.1.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/LICENSE +21 -0
- package/README.md +105 -0
- package/dist/components/primitives/accordion.d.ts +10 -0
- package/dist/components/primitives/accordion.d.ts.map +1 -0
- package/dist/components/primitives/accordion.js +37 -0
- package/dist/components/primitives/accordion.js.map +1 -0
- package/dist/components/primitives/alert-dialog.d.ts +9 -0
- package/dist/components/primitives/alert-dialog.d.ts.map +1 -0
- package/dist/components/primitives/alert-dialog.js +58 -0
- package/dist/components/primitives/alert-dialog.js.map +1 -0
- package/dist/components/primitives/alert.d.ts +12 -0
- package/dist/components/primitives/alert.d.ts.map +1 -0
- package/dist/components/primitives/alert.js +32 -0
- package/dist/components/primitives/alert.js.map +1 -0
- package/dist/components/primitives/avatar.d.ts +20 -0
- package/dist/components/primitives/avatar.d.ts.map +1 -0
- package/dist/components/primitives/avatar.js +55 -0
- package/dist/components/primitives/avatar.js.map +1 -0
- package/dist/components/primitives/badge.d.ts +14 -0
- package/dist/components/primitives/badge.d.ts.map +1 -0
- package/dist/components/primitives/badge.js +42 -0
- package/dist/components/primitives/badge.js.map +1 -0
- package/dist/components/primitives/button.d.ts +7 -0
- package/dist/components/primitives/button.d.ts.map +1 -0
- package/dist/components/primitives/button.js +52 -0
- package/dist/components/primitives/button.js.map +1 -0
- package/dist/components/primitives/calendar.d.ts +7 -0
- package/dist/components/primitives/calendar.d.ts.map +1 -0
- package/dist/components/primitives/calendar.js +32 -0
- package/dist/components/primitives/calendar.js.map +1 -0
- package/dist/components/primitives/card.d.ts +14 -0
- package/dist/components/primitives/card.d.ts.map +1 -0
- package/dist/components/primitives/card.js +29 -0
- package/dist/components/primitives/card.js.map +1 -0
- package/dist/components/primitives/checkbox.d.ts +7 -0
- package/dist/components/primitives/checkbox.d.ts.map +1 -0
- package/dist/components/primitives/checkbox.js +51 -0
- package/dist/components/primitives/checkbox.js.map +1 -0
- package/dist/components/primitives/color-picker.d.ts +23 -0
- package/dist/components/primitives/color-picker.d.ts.map +1 -0
- package/dist/components/primitives/color-picker.js +128 -0
- package/dist/components/primitives/color-picker.js.map +1 -0
- package/dist/components/primitives/combobox.d.ts +17 -0
- package/dist/components/primitives/combobox.d.ts.map +1 -0
- package/dist/components/primitives/combobox.js +106 -0
- package/dist/components/primitives/combobox.js.map +1 -0
- package/dist/components/primitives/date-picker.d.ts +21 -0
- package/dist/components/primitives/date-picker.d.ts.map +1 -0
- package/dist/components/primitives/date-picker.js +81 -0
- package/dist/components/primitives/date-picker.js.map +1 -0
- package/dist/components/primitives/date-range-picker.d.ts +16 -0
- package/dist/components/primitives/date-range-picker.d.ts.map +1 -0
- package/dist/components/primitives/date-range-picker.js +51 -0
- package/dist/components/primitives/date-range-picker.js.map +1 -0
- package/dist/components/primitives/dialog.d.ts +8 -0
- package/dist/components/primitives/dialog.d.ts.map +1 -0
- package/dist/components/primitives/dialog.js +46 -0
- package/dist/components/primitives/dialog.js.map +1 -0
- package/dist/components/primitives/drawer.d.ts +2 -0
- package/dist/components/primitives/drawer.d.ts.map +1 -0
- package/dist/components/primitives/field.d.ts +19 -0
- package/dist/components/primitives/field.d.ts.map +1 -0
- package/dist/components/primitives/field.js +55 -0
- package/dist/components/primitives/field.js.map +1 -0
- package/dist/components/primitives/input-group.d.ts +11 -0
- package/dist/components/primitives/input-group.d.ts.map +1 -0
- package/dist/components/primitives/input-group.js +32 -0
- package/dist/components/primitives/input-group.js.map +1 -0
- package/dist/components/primitives/input.d.ts +7 -0
- package/dist/components/primitives/input.d.ts.map +1 -0
- package/dist/components/primitives/input.js +18 -0
- package/dist/components/primitives/input.js.map +1 -0
- package/dist/components/primitives/kbd.d.ts +13 -0
- package/dist/components/primitives/kbd.d.ts.map +1 -0
- package/dist/components/primitives/kbd.js +18 -0
- package/dist/components/primitives/kbd.js.map +1 -0
- package/dist/components/primitives/label.d.ts +7 -0
- package/dist/components/primitives/label.d.ts.map +1 -0
- package/dist/components/primitives/label.js +21 -0
- package/dist/components/primitives/label.js.map +1 -0
- package/dist/components/primitives/pagination.d.ts +12 -0
- package/dist/components/primitives/pagination.d.ts.map +1 -0
- package/dist/components/primitives/pagination.js +92 -0
- package/dist/components/primitives/pagination.js.map +1 -0
- package/dist/components/primitives/radio-group.d.ts +9 -0
- package/dist/components/primitives/radio-group.d.ts.map +1 -0
- package/dist/components/primitives/radio-group.js +36 -0
- package/dist/components/primitives/radio-group.js.map +1 -0
- package/dist/components/primitives/select.d.ts +7 -0
- package/dist/components/primitives/select.d.ts.map +1 -0
- package/dist/components/primitives/select.js +31 -0
- package/dist/components/primitives/select.js.map +1 -0
- package/dist/components/primitives/sheet.d.ts +2 -0
- package/dist/components/primitives/sheet.d.ts.map +1 -0
- package/dist/components/primitives/skeleton.d.ts +5 -0
- package/dist/components/primitives/skeleton.d.ts.map +1 -0
- package/dist/components/primitives/skeleton.js +15 -0
- package/dist/components/primitives/skeleton.js.map +1 -0
- package/dist/components/primitives/slider.d.ts +10 -0
- package/dist/components/primitives/slider.d.ts.map +1 -0
- package/dist/components/primitives/slider.js +91 -0
- package/dist/components/primitives/slider.js.map +1 -0
- package/dist/components/primitives/sonner.d.ts +5 -0
- package/dist/components/primitives/sonner.d.ts.map +1 -0
- package/dist/components/primitives/sonner.js +50 -0
- package/dist/components/primitives/sonner.js.map +1 -0
- package/dist/components/primitives/switch.d.ts +7 -0
- package/dist/components/primitives/switch.d.ts.map +1 -0
- package/dist/components/primitives/switch.js +22 -0
- package/dist/components/primitives/switch.js.map +1 -0
- package/dist/components/primitives/table.d.ts +10 -0
- package/dist/components/primitives/table.d.ts.map +1 -0
- package/dist/components/primitives/table.js +74 -0
- package/dist/components/primitives/table.js.map +1 -0
- package/dist/components/primitives/tabs.d.ts +6 -0
- package/dist/components/primitives/tabs.d.ts.map +1 -0
- package/dist/components/primitives/tabs.js +146 -0
- package/dist/components/primitives/tabs.js.map +1 -0
- package/dist/components/primitives/tag.d.ts +17 -0
- package/dist/components/primitives/tag.d.ts.map +1 -0
- package/dist/components/primitives/tag.js +71 -0
- package/dist/components/primitives/tag.js.map +1 -0
- package/dist/components/primitives/textarea.d.ts +7 -0
- package/dist/components/primitives/textarea.d.ts.map +1 -0
- package/dist/components/primitives/textarea.js +18 -0
- package/dist/components/primitives/textarea.js.map +1 -0
- package/dist/components/primitives/toggle-group.d.ts +9 -0
- package/dist/components/primitives/toggle-group.d.ts.map +1 -0
- package/dist/components/primitives/toggle-group.js +61 -0
- package/dist/components/primitives/toggle-group.js.map +1 -0
- package/dist/components/primitives/toggle.d.ts +7 -0
- package/dist/components/primitives/toggle.d.ts.map +1 -0
- package/dist/components/primitives/toggle.js +36 -0
- package/dist/components/primitives/toggle.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +8 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +67 -0
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/components/ui/alert-dialog.d.ts +19 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.js +147 -0
- package/dist/components/ui/alert-dialog.js.map +1 -0
- package/dist/components/ui/alert.d.ts +10 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +69 -0
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/avatar.d.ts +12 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar.js +106 -0
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +46 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/breadcrumb.d.ts +12 -0
- package/dist/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb.js +106 -0
- package/dist/components/ui/breadcrumb.js.map +1 -0
- package/dist/components/ui/button-group.d.ts +12 -0
- package/dist/components/ui/button-group.d.ts.map +1 -0
- package/dist/components/ui/button-group.js +78 -0
- package/dist/components/ui/button-group.js.map +1 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +59 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/calendar.d.ts +9 -0
- package/dist/components/ui/calendar.d.ts.map +1 -0
- package/dist/components/ui/calendar.js +175 -0
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/components/ui/card.d.ts +10 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +93 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/combobox.d.ts +25 -0
- package/dist/components/ui/combobox.d.ts.map +1 -0
- package/dist/components/ui/combobox.js +246 -0
- package/dist/components/ui/combobox.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +125 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/drawer.d.ts +14 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/drawer.js +131 -0
- package/dist/components/ui/drawer.js.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +26 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +234 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/field.d.ts +25 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/field.js +223 -0
- package/dist/components/ui/field.js.map +1 -0
- package/dist/components/ui/input-group.d.ts +17 -0
- package/dist/components/ui/input-group.d.ts.map +1 -0
- package/dist/components/ui/input-group.js +136 -0
- package/dist/components/ui/input-group.js.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +24 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/kbd.d.ts +4 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +33 -0
- package/dist/components/ui/kbd.js.map +1 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +25 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/pagination.d.ts +14 -0
- package/dist/components/ui/pagination.d.ts.map +1 -0
- package/dist/components/ui/pagination.js +39 -0
- package/dist/components/ui/pagination.js.map +1 -0
- package/dist/components/ui/popover.d.ts +11 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +83 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/radio-group.d.ts +6 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -0
- package/dist/components/ui/radio-group.js +48 -0
- package/dist/components/ui/radio-group.js.map +1 -0
- package/dist/components/ui/select.d.ts +16 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +181 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.d.ts +5 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +29 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/sheet.d.ts +15 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet.js +130 -0
- package/dist/components/ui/sheet.js.map +1 -0
- package/dist/components/ui/sidebar.d.ts +70 -0
- package/dist/components/ui/sidebar.d.ts.map +1 -0
- package/dist/components/ui/sidebar.js +599 -0
- package/dist/components/ui/sidebar.js.map +1 -0
- package/dist/components/ui/skeleton.d.ts +3 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +17 -0
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/slider.d.ts +5 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/slider.js +65 -0
- package/dist/components/ui/slider.js.map +1 -0
- package/dist/components/ui/sonner.d.ts +4 -0
- package/dist/components/ui/sonner.d.ts.map +1 -0
- package/dist/components/ui/sonner.js +33 -0
- package/dist/components/ui/sonner.js.map +1 -0
- package/dist/components/ui/spinner.d.ts +3 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner.js +19 -0
- package/dist/components/ui/spinner.js.map +1 -0
- package/dist/components/ui/switch.d.ts +7 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +36 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/table.d.ts +11 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/table.js +117 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/tabs.d.ts +12 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +94 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +4 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +21 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toggle-group.d.ts +10 -0
- package/dist/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/toggle-group.js +71 -0
- package/dist/components/ui/toggle-group.js.map +1 -0
- package/dist/components/ui/toggle.d.ts +10 -0
- package/dist/components/ui/toggle.d.ts.map +1 -0
- package/dist/components/ui/toggle.js +46 -0
- package/dist/components/ui/toggle.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +58 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/design-system/modes/options.d.ts +26 -0
- package/dist/design-system/modes/options.d.ts.map +1 -0
- package/dist/design-system/modes/options.js +61 -0
- package/dist/design-system/modes/options.js.map +1 -0
- package/dist/design-system/modes/runtime.d.ts +34 -0
- package/dist/design-system/modes/runtime.d.ts.map +1 -0
- package/dist/design-system/modes/runtime.js +195 -0
- package/dist/design-system/modes/runtime.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +16 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +306 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/constants.d.ts +2 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/cva.d.ts +2 -0
- package/dist/lib/cva.d.ts.map +1 -0
- package/dist/lib/generate-shades.d.ts +39 -0
- package/dist/lib/generate-shades.d.ts.map +1 -0
- package/dist/lib/generate-shades.js +220 -0
- package/dist/lib/generate-shades.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +10 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/styles.css +2 -0
- package/package.json +106 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sources":["../../../src/components/primitives/calendar.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { Calendar as UICalendar } from \"@/components/ui/calendar\"\nimport { cn } from \"@/lib/utils\"\n\ntype CalendarProps = React.ComponentProps<typeof UICalendar>\n\n// Filled-primary surfaces (selected / range-start / range-end day buttons) carry\n// the same gradient sheen as Button/Badge. Scoped from the calendar root since\n// the day buttons live inside react-day-picker's internal markup.\nconst SELECTED_DAY =\n \"[&_[data-selected-single=true]]:bg-[image:var(--surface-filled-primary-overlay)] [&_[data-selected-single=true]]:bg-blend-normal [&_[data-selected-single=true]]:shadow-(--surface-inset-primary) \" +\n \"[&_[data-range-start=true]]:bg-[image:var(--surface-filled-primary-overlay)] [&_[data-range-start=true]]:bg-blend-normal [&_[data-range-start=true]]:shadow-(--surface-inset-primary) \" +\n \"[&_[data-range-end=true]]:bg-[image:var(--surface-filled-primary-overlay)] [&_[data-range-end=true]]:bg-blend-normal [&_[data-range-end=true]]:shadow-(--surface-inset-primary)\"\n\nfunction Calendar({\n captionLayout = \"dropdown\",\n startMonth,\n endMonth,\n className,\n ...props\n}: CalendarProps) {\n const [resolvedStart, resolvedEnd] = React.useMemo(() => {\n const start = startMonth ?? new Date(1900, 0)\n const end = endMonth ?? new Date(new Date().getFullYear() + 10, 11)\n return [start, end]\n }, [startMonth, endMonth])\n\n return (\n <UICalendar\n captionLayout={captionLayout}\n startMonth={resolvedStart}\n endMonth={resolvedEnd}\n className={cn(SELECTED_DAY, className)}\n {...props}\n />\n )\n}\n\nexport { Calendar }\nexport type { CalendarProps }\n"],"names":["SELECTED_DAY","Calendar","captionLayout","startMonth","endMonth","className","props","resolvedStart","resolvedEnd","React","start","end","jsx","UICalendar","cn"],"mappings":";;;;;AAUA,MAAMA,IACJ;AAIF,SAASC,EAAS;AAAA,EAChB,eAAAC,IAAgB;AAAA,EAChB,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAkB;AAChB,QAAM,CAACC,GAAeC,CAAW,IAAIC,EAAM,QAAQ,MAAM;AACvD,UAAMC,IAAQP,KAAc,IAAI,KAAK,MAAM,CAAC,GACtCQ,IAAMP,KAAY,IAAI,MAAK,oBAAI,QAAO,YAAA,IAAgB,IAAI,EAAE;AAClE,WAAO,CAACM,GAAOC,CAAG;AAAA,EACpB,GAAG,CAACR,GAAYC,CAAQ,CAAC;AAEzB,SACE,gBAAAQ;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,eAAAX;AAAA,MACA,YAAYK;AAAA,MACZ,UAAUC;AAAA,MACV,WAAWM,EAAGd,GAAcK,CAAS;AAAA,MACpC,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Card as UICard, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '../ui/card';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
type CardProps = React.ComponentProps<typeof UICard> & {
|
|
4
|
+
/**
|
|
5
|
+
* Lift the card on hover: ramps the shadow stack from elevation-2 to
|
|
6
|
+
* elevation-3 and firms up the border ring (`--shadow-border-hover`).
|
|
7
|
+
* Off by default — opt in per instance.
|
|
8
|
+
*/
|
|
9
|
+
hoverable?: boolean;
|
|
10
|
+
};
|
|
11
|
+
declare function Card({ className, hoverable, ...props }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, };
|
|
13
|
+
export type { CardProps };
|
|
14
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,IAAI,IAAI,MAAM,EACd,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,sBAAsB,CAAC;AAG9B,KAAK,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACrD;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,iBAAS,IAAI,CAAC,EAAE,SAAS,EAAE,SAAiB,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,2CAYlE;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,GACV,CAAC;AACF,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import "react";
|
|
4
|
+
import { Card as d } from "../ui/card.js";
|
|
5
|
+
import { CardAction as p, CardContent as c, CardDescription as f, CardFooter as l, CardHeader as w, CardTitle as u } from "../ui/card.js";
|
|
6
|
+
import { cn as t } from "../../lib/utils.js";
|
|
7
|
+
function C({ className: r, hoverable: o = !1, ...a }) {
|
|
8
|
+
return /* @__PURE__ */ e(
|
|
9
|
+
d,
|
|
10
|
+
{
|
|
11
|
+
className: t(
|
|
12
|
+
"rounded-md border-none shadow-[var(--shadow-border),var(--elevation-2)]!",
|
|
13
|
+
o && "transition-shadow hover:shadow-[var(--shadow-border-hover),var(--elevation-3)]!",
|
|
14
|
+
r
|
|
15
|
+
),
|
|
16
|
+
...a
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
C as Card,
|
|
22
|
+
p as CardAction,
|
|
23
|
+
c as CardContent,
|
|
24
|
+
f as CardDescription,
|
|
25
|
+
l as CardFooter,
|
|
26
|
+
w as CardHeader,
|
|
27
|
+
u as CardTitle
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../../src/components/primitives/card.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport {\n Card as UICard,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\n\ntype CardProps = React.ComponentProps<typeof UICard> & {\n /**\n * Lift the card on hover: ramps the shadow stack from elevation-2 to\n * elevation-3 and firms up the border ring (`--shadow-border-hover`).\n * Off by default — opt in per instance.\n */\n hoverable?: boolean;\n};\n\nfunction Card({ className, hoverable = false, ...props }: CardProps) {\n return (\n <UICard\n className={cn(\n \"rounded-md border-none shadow-[var(--shadow-border),var(--elevation-2)]!\",\n hoverable &&\n \"transition-shadow hover:shadow-[var(--shadow-border-hover),var(--elevation-3)]!\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\nexport type { CardProps };\n"],"names":["Card","className","hoverable","props","jsx","UICard","cn"],"mappings":";;;;;;AAsBA,SAASA,EAAK,EAAE,WAAAC,GAAW,WAAAC,IAAY,IAAO,GAAGC,KAAoB;AACnE,SACE,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAJ,KACE;AAAA,QACFD;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Checkbox as CheckboxPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
type CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root>;
|
|
4
|
+
declare function Checkbox({ className, ...props }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export { Checkbox };
|
|
6
|
+
export type { CheckboxProps };
|
|
7
|
+
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAKxD,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;AAMxE,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAoCvD;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA;AACnB,YAAY,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import "react";
|
|
4
|
+
import { Checkbox as a } from "radix-ui";
|
|
5
|
+
import { CheckIcon as n, MinusIcon as d } from "lucide-react";
|
|
6
|
+
import { cn as o } from "../../lib/utils.js";
|
|
7
|
+
function u({ className: t, ...r }) {
|
|
8
|
+
return /* @__PURE__ */ i(
|
|
9
|
+
a.Root,
|
|
10
|
+
{
|
|
11
|
+
"data-slot": "checkbox",
|
|
12
|
+
className: o(
|
|
13
|
+
// Base surface (mirrors ui/checkbox), tuned: 4.5 size, no border-radius shadow, larger hit area.
|
|
14
|
+
"peer border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative size-4.5 shrink-0 rounded-[4px] border shadow-none transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
|
|
15
|
+
"after:absolute after:top-1/2 after:left-1/2 after:size-7 after:-translate-x-1/2 after:-translate-y-1/2 after:content-['']",
|
|
16
|
+
// Filled look, shared by checked + indeterminate. The `dark:` variants are
|
|
17
|
+
// required: the base carries `dark:bg-input/30`, and in dark mode Tailwind
|
|
18
|
+
// emits `dark:*` after plain `data-[state]:*`, so without a dark-scoped
|
|
19
|
+
// checked bg the input wash wins the cascade and the fill reads near-black
|
|
20
|
+
// (only visible in flat mode — gradient/tactile paint a bg-image overlay on
|
|
21
|
+
// top that hides it). Mirrors shadcn's own `ui/checkbox` dark override.
|
|
22
|
+
"bg-blend-normal data-[state=checked]:bg-primary dark:data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:bg-[image:var(--surface-filled-primary-overlay)] data-[state=checked]:border-none data-[state=checked]:shadow-(--surface-shadow-primary-sm)",
|
|
23
|
+
"data-[state=indeterminate]:bg-primary dark:data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:bg-[image:var(--surface-filled-primary-overlay)] data-[state=indeterminate]:border-none data-[state=indeterminate]:shadow-(--surface-shadow-primary-sm)",
|
|
24
|
+
t
|
|
25
|
+
),
|
|
26
|
+
...r,
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ e(
|
|
29
|
+
a.Indicator,
|
|
30
|
+
{
|
|
31
|
+
"data-slot": "checkbox-indicator",
|
|
32
|
+
className: "absolute inset-0 grid place-content-center text-current transition-none data-[state=indeterminate]:hidden",
|
|
33
|
+
children: /* @__PURE__ */ e(n, { className: "size-4 stroke-[3]" })
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
/* @__PURE__ */ e(
|
|
37
|
+
a.Indicator,
|
|
38
|
+
{
|
|
39
|
+
"data-slot": "checkbox-indicator-indeterminate",
|
|
40
|
+
className: "absolute inset-0 hidden place-content-center text-current transition-none data-[state=indeterminate]:grid",
|
|
41
|
+
children: /* @__PURE__ */ e(d, { className: "size-4 stroke-[3]" })
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
u as Checkbox
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sources":["../../../src/components/primitives/checkbox.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\nimport { CheckIcon, MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root>\n\n// Reimplements the shadcn `ui/checkbox` Root so the primitive can render two\n// indicators — a check for `checked` and a dash for `indeterminate` — using\n// Lucide icons. Wrapping `ui/` can't do this: its hardcoded JSX Indicator\n// overrides any children passed through props.\nfunction Checkbox({ className, ...props }: CheckboxProps) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n // Base surface (mirrors ui/checkbox), tuned: 4.5 size, no border-radius shadow, larger hit area.\n \"peer border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative size-4.5 shrink-0 rounded-[4px] border shadow-none transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n \"after:absolute after:top-1/2 after:left-1/2 after:size-7 after:-translate-x-1/2 after:-translate-y-1/2 after:content-['']\",\n // Filled look, shared by checked + indeterminate. The `dark:` variants are\n // required: the base carries `dark:bg-input/30`, and in dark mode Tailwind\n // emits `dark:*` after plain `data-[state]:*`, so without a dark-scoped\n // checked bg the input wash wins the cascade and the fill reads near-black\n // (only visible in flat mode — gradient/tactile paint a bg-image overlay on\n // top that hides it). Mirrors shadcn's own `ui/checkbox` dark override.\n \"bg-blend-normal data-[state=checked]:bg-primary dark:data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:bg-[image:var(--surface-filled-primary-overlay)] data-[state=checked]:border-none data-[state=checked]:shadow-(--surface-shadow-primary-sm)\",\n \"data-[state=indeterminate]:bg-primary dark:data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:bg-[image:var(--surface-filled-primary-overlay)] data-[state=indeterminate]:border-none data-[state=indeterminate]:shadow-(--surface-shadow-primary-sm)\",\n className\n )}\n {...props}\n >\n {/* Check glyph — checked only (Indicator also mounts for indeterminate, so hide it there). */}\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"absolute inset-0 grid place-content-center text-current transition-none data-[state=indeterminate]:hidden\"\n >\n <CheckIcon className=\"size-4 stroke-[3]\" />\n </CheckboxPrimitive.Indicator>\n {/* Dash glyph — indeterminate only. */}\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator-indeterminate\"\n className=\"absolute inset-0 hidden place-content-center text-current transition-none data-[state=indeterminate]:grid\"\n >\n <MinusIcon className=\"size-4 stroke-[3]\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\nexport type { CheckboxProps }\n"],"names":["Checkbox","className","props","jsxs","CheckboxPrimitive","cn","jsx","CheckIcon","MinusIcon"],"mappings":";;;;;;AAYA,SAASA,EAAS,EAAE,WAAAC,GAAW,GAAGC,KAAwB;AACxD,SACE,gBAAAC;AAAA,IAACC,EAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA;AAAA,QAET;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA;AAAA,QACA;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAGJ,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAACF,EAAkB;AAAA,UAAlB;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAEV,UAAA,gBAAAE,EAACC,GAAA,EAAU,WAAU,oBAAA,CAAoB;AAAA,UAAA;AAAA,QAAA;AAAA,QAG3C,gBAAAD;AAAA,UAACF,EAAkB;AAAA,UAAlB;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YAEV,UAAA,gBAAAE,EAACE,GAAA,EAAU,WAAU,oBAAA,CAAoB;AAAA,UAAA;AAAA,QAAA;AAAA,MAC3C;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
type ColorPickerFormulaOption = {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
};
|
|
5
|
+
type ColorPickerProps = {
|
|
6
|
+
value: string;
|
|
7
|
+
onChange: (hex: string) => void;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
"aria-label"?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
formula?: string;
|
|
12
|
+
onFormulaChange?: (value: string) => void;
|
|
13
|
+
formulaOptions?: ColorPickerFormulaOption[];
|
|
14
|
+
formulaLabel?: string;
|
|
15
|
+
hueShift?: string;
|
|
16
|
+
onHueShiftChange?: (value: string) => void;
|
|
17
|
+
hueShiftOptions?: ColorPickerFormulaOption[];
|
|
18
|
+
hueShiftLabel?: string;
|
|
19
|
+
};
|
|
20
|
+
declare function ColorPicker({ value, onChange, disabled, className, "aria-label": ariaLabel, formula, onFormulaChange, formulaOptions, formulaLabel, hueShift, onHueShiftChange, hueShiftOptions, hueShiftLabel, }: ColorPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export { ColorPicker };
|
|
22
|
+
export type { ColorPickerProps, ColorPickerFormulaOption };
|
|
23
|
+
//# sourceMappingURL=color-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/color-picker.tsx"],"names":[],"mappings":"AA6BA,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,cAAc,CAAC,EAAE,wBAAwB,EAAE,CAAA;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,eAAe,CAAC,EAAE,wBAAwB,EAAE,CAAA;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EAAE,SAA0B,EACxC,OAAO,EACP,eAAe,EACf,cAAc,EACd,YAA8B,EAC9B,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,aAA2B,GAC5B,EAAE,gBAAgB,2CA8GlB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAA"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import * as p from "react";
|
|
4
|
+
import { HexColorPicker as V } from "react-colorful";
|
|
5
|
+
import { Input as E } from "./input.js";
|
|
6
|
+
import { Popover as S, PopoverTrigger as j, PopoverContent as B } from "../ui/popover.js";
|
|
7
|
+
import { Select as g, SelectTrigger as x, SelectValue as b, SelectContent as v, SelectItem as C } from "../ui/select.js";
|
|
8
|
+
import { cn as R } from "../../lib/utils.js";
|
|
9
|
+
const $ = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
10
|
+
function N(l) {
|
|
11
|
+
const t = l.trim();
|
|
12
|
+
return t.startsWith("#") ? t : `#${t}`;
|
|
13
|
+
}
|
|
14
|
+
function w(l) {
|
|
15
|
+
return $.test(l);
|
|
16
|
+
}
|
|
17
|
+
function q({
|
|
18
|
+
value: l,
|
|
19
|
+
onChange: t,
|
|
20
|
+
disabled: k,
|
|
21
|
+
className: y,
|
|
22
|
+
"aria-label": z = "Pick a color",
|
|
23
|
+
formula: H,
|
|
24
|
+
onFormulaChange: s,
|
|
25
|
+
formulaOptions: n,
|
|
26
|
+
formulaLabel: c = "Shade formula",
|
|
27
|
+
hueShift: P,
|
|
28
|
+
onHueShiftChange: d,
|
|
29
|
+
hueShiftOptions: i,
|
|
30
|
+
hueShiftLabel: u = "Hue shift"
|
|
31
|
+
}) {
|
|
32
|
+
const [m, o] = p.useState(l);
|
|
33
|
+
p.useEffect(() => {
|
|
34
|
+
o(l);
|
|
35
|
+
}, [l]);
|
|
36
|
+
function I(e) {
|
|
37
|
+
const f = e.target.value;
|
|
38
|
+
o(f);
|
|
39
|
+
const h = N(f);
|
|
40
|
+
w(h) && t(h.toLowerCase());
|
|
41
|
+
}
|
|
42
|
+
function T() {
|
|
43
|
+
const e = N(m);
|
|
44
|
+
w(e) ? o(e.toLowerCase()) : o(l);
|
|
45
|
+
}
|
|
46
|
+
return /* @__PURE__ */ a(S, { children: [
|
|
47
|
+
/* @__PURE__ */ r(j, { asChild: !0, children: /* @__PURE__ */ r(
|
|
48
|
+
"button",
|
|
49
|
+
{
|
|
50
|
+
type: "button",
|
|
51
|
+
disabled: k,
|
|
52
|
+
"aria-label": z,
|
|
53
|
+
className: R(
|
|
54
|
+
"size-9 shrink-0 rounded-md border border-input shadow-(--elevation-1) outline-none transition-colors",
|
|
55
|
+
"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background",
|
|
56
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
57
|
+
y
|
|
58
|
+
),
|
|
59
|
+
style: { backgroundColor: l }
|
|
60
|
+
}
|
|
61
|
+
) }),
|
|
62
|
+
/* @__PURE__ */ a(
|
|
63
|
+
B,
|
|
64
|
+
{
|
|
65
|
+
align: "end",
|
|
66
|
+
sideOffset: 8,
|
|
67
|
+
className: "w-auto space-y-3 p-3",
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ r(
|
|
70
|
+
V,
|
|
71
|
+
{
|
|
72
|
+
color: l,
|
|
73
|
+
onChange: (e) => t(e.toLowerCase()),
|
|
74
|
+
style: { width: "200px", height: "200px" }
|
|
75
|
+
}
|
|
76
|
+
),
|
|
77
|
+
/* @__PURE__ */ r(
|
|
78
|
+
E,
|
|
79
|
+
{
|
|
80
|
+
value: m,
|
|
81
|
+
onChange: I,
|
|
82
|
+
onBlur: T,
|
|
83
|
+
spellCheck: !1,
|
|
84
|
+
autoCapitalize: "none",
|
|
85
|
+
autoCorrect: "off",
|
|
86
|
+
className: "font-mono text-sm",
|
|
87
|
+
"aria-label": "Hex color"
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
n && n.length > 0 && s && /* @__PURE__ */ a("div", { className: "space-y-1.5", children: [
|
|
91
|
+
/* @__PURE__ */ r("p", { className: "text-xs font-medium text-muted-foreground", children: c }),
|
|
92
|
+
/* @__PURE__ */ a(g, { value: H, onValueChange: s, children: [
|
|
93
|
+
/* @__PURE__ */ r(
|
|
94
|
+
x,
|
|
95
|
+
{
|
|
96
|
+
size: "sm",
|
|
97
|
+
"aria-label": c,
|
|
98
|
+
className: "w-full",
|
|
99
|
+
children: /* @__PURE__ */ r(b, {})
|
|
100
|
+
}
|
|
101
|
+
),
|
|
102
|
+
/* @__PURE__ */ r(v, { children: n.map((e) => /* @__PURE__ */ r(C, { value: e.value, children: e.label }, e.value)) })
|
|
103
|
+
] })
|
|
104
|
+
] }),
|
|
105
|
+
i && i.length > 0 && d && /* @__PURE__ */ a("div", { className: "space-y-1.5", children: [
|
|
106
|
+
/* @__PURE__ */ r("p", { className: "text-xs font-medium text-muted-foreground", children: u }),
|
|
107
|
+
/* @__PURE__ */ a(g, { value: P, onValueChange: d, children: [
|
|
108
|
+
/* @__PURE__ */ r(
|
|
109
|
+
x,
|
|
110
|
+
{
|
|
111
|
+
size: "sm",
|
|
112
|
+
"aria-label": u,
|
|
113
|
+
className: "w-full",
|
|
114
|
+
children: /* @__PURE__ */ r(b, {})
|
|
115
|
+
}
|
|
116
|
+
),
|
|
117
|
+
/* @__PURE__ */ r(v, { children: i.map((e) => /* @__PURE__ */ r(C, { value: e.value, children: e.label }, e.value)) })
|
|
118
|
+
] })
|
|
119
|
+
] })
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
] });
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
q as ColorPicker
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=color-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-picker.js","sources":["../../../src/components/primitives/color-picker.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { HexColorPicker } from \"react-colorful\"\n\nimport { Input } from \"@/components/primitives/input\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\nimport { cn } from \"@/lib/utils\"\n\nconst HEX_PATTERN = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i\n\nfunction normalizeHex(value: string): string {\n const trimmed = value.trim()\n return trimmed.startsWith(\"#\") ? trimmed : `#${trimmed}`\n}\n\nfunction isValidHex(value: string): boolean {\n return HEX_PATTERN.test(value)\n}\n\ntype ColorPickerFormulaOption = {\n value: string\n label: string\n}\n\ntype ColorPickerProps = {\n value: string\n onChange: (hex: string) => void\n disabled?: boolean\n \"aria-label\"?: string\n className?: string\n formula?: string\n onFormulaChange?: (value: string) => void\n formulaOptions?: ColorPickerFormulaOption[]\n formulaLabel?: string\n hueShift?: string\n onHueShiftChange?: (value: string) => void\n hueShiftOptions?: ColorPickerFormulaOption[]\n hueShiftLabel?: string\n}\n\nfunction ColorPicker({\n value,\n onChange,\n disabled,\n className,\n \"aria-label\": ariaLabel = \"Pick a color\",\n formula,\n onFormulaChange,\n formulaOptions,\n formulaLabel = \"Shade formula\",\n hueShift,\n onHueShiftChange,\n hueShiftOptions,\n hueShiftLabel = \"Hue shift\",\n}: ColorPickerProps) {\n const [draft, setDraft] = React.useState(value)\n\n React.useEffect(() => {\n setDraft(value)\n }, [value])\n\n function handleHexInputChange(event: React.ChangeEvent<HTMLInputElement>) {\n const next = event.target.value\n setDraft(next)\n const normalized = normalizeHex(next)\n if (isValidHex(normalized)) {\n onChange(normalized.toLowerCase())\n }\n }\n\n function handleHexInputBlur() {\n const normalized = normalizeHex(draft)\n if (isValidHex(normalized)) {\n setDraft(normalized.toLowerCase())\n } else {\n setDraft(value)\n }\n }\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-label={ariaLabel}\n className={cn(\n \"size-9 shrink-0 rounded-md border border-input shadow-(--elevation-1) outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n style={{ backgroundColor: value }}\n />\n </PopoverTrigger>\n <PopoverContent\n align=\"end\"\n sideOffset={8}\n className=\"w-auto space-y-3 p-3\"\n >\n <HexColorPicker\n color={value}\n onChange={(next) => onChange(next.toLowerCase())}\n style={{ width: \"200px\", height: \"200px\" }}\n />\n <Input\n value={draft}\n onChange={handleHexInputChange}\n onBlur={handleHexInputBlur}\n spellCheck={false}\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n className=\"font-mono text-sm\"\n aria-label=\"Hex color\"\n />\n {formulaOptions && formulaOptions.length > 0 && onFormulaChange && (\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-medium text-muted-foreground\">\n {formulaLabel}\n </p>\n <Select value={formula} onValueChange={onFormulaChange}>\n <SelectTrigger\n size=\"sm\"\n aria-label={formulaLabel}\n className=\"w-full\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {formulaOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n {hueShiftOptions && hueShiftOptions.length > 0 && onHueShiftChange && (\n <div className=\"space-y-1.5\">\n <p className=\"text-xs font-medium text-muted-foreground\">\n {hueShiftLabel}\n </p>\n <Select value={hueShift} onValueChange={onHueShiftChange}>\n <SelectTrigger\n size=\"sm\"\n aria-label={hueShiftLabel}\n className=\"w-full\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {hueShiftOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </PopoverContent>\n </Popover>\n )\n}\n\nexport { ColorPicker }\nexport type { ColorPickerProps, ColorPickerFormulaOption }\n"],"names":["HEX_PATTERN","normalizeHex","value","trimmed","isValidHex","ColorPicker","onChange","disabled","className","ariaLabel","formula","onFormulaChange","formulaOptions","formulaLabel","hueShift","onHueShiftChange","hueShiftOptions","hueShiftLabel","draft","setDraft","React","handleHexInputChange","event","next","normalized","handleHexInputBlur","Popover","jsx","PopoverTrigger","cn","jsxs","PopoverContent","HexColorPicker","Input","Select","SelectTrigger","SelectValue","SelectContent","option","SelectItem"],"mappings":";;;;;;;;AAkBA,MAAMA,IAAc;AAEpB,SAASC,EAAaC,GAAuB;AAC3C,QAAMC,IAAUD,EAAM,KAAA;AACtB,SAAOC,EAAQ,WAAW,GAAG,IAAIA,IAAU,IAAIA,CAAO;AACxD;AAEA,SAASC,EAAWF,GAAwB;AAC1C,SAAOF,EAAY,KAAKE,CAAK;AAC/B;AAuBA,SAASG,EAAY;AAAA,EACnB,OAAAH;AAAA,EACA,UAAAI;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAcC,IAAY;AAAA,EAC1B,SAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC,IAAgB;AAClB,GAAqB;AACnB,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAM,SAASlB,CAAK;AAE9C,EAAAkB,EAAM,UAAU,MAAM;AACpB,IAAAD,EAASjB,CAAK;AAAA,EAChB,GAAG,CAACA,CAAK,CAAC;AAEV,WAASmB,EAAqBC,GAA4C;AACxE,UAAMC,IAAOD,EAAM,OAAO;AAC1B,IAAAH,EAASI,CAAI;AACb,UAAMC,IAAavB,EAAasB,CAAI;AACpC,IAAInB,EAAWoB,CAAU,KACvBlB,EAASkB,EAAW,aAAa;AAAA,EAErC;AAEA,WAASC,IAAqB;AAC5B,UAAMD,IAAavB,EAAaiB,CAAK;AACrC,IAAId,EAAWoB,CAAU,IACvBL,EAASK,EAAW,aAAa,IAEjCL,EAASjB,CAAK;AAAA,EAElB;AAEA,2BACGwB,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAe,SAAO,IACrB,UAAA,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAApB;AAAA,QACA,cAAYE;AAAA,QACZ,WAAWoB;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACArB;AAAA,QAAA;AAAA,QAEF,OAAO,EAAE,iBAAiBN,EAAA;AAAA,MAAM;AAAA,IAAA,GAEpC;AAAA,IACA,gBAAA4B;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,YAAY;AAAA,QACZ,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAJ;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,OAAO9B;AAAA,cACP,UAAU,CAACqB,MAASjB,EAASiB,EAAK,aAAa;AAAA,cAC/C,OAAO,EAAE,OAAO,SAAS,QAAQ,QAAA;AAAA,YAAQ;AAAA,UAAA;AAAA,UAE3C,gBAAAI;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,OAAOf;AAAA,cACP,UAAUG;AAAA,cACV,QAAQI;AAAA,cACR,YAAY;AAAA,cACZ,gBAAe;AAAA,cACf,aAAY;AAAA,cACZ,WAAU;AAAA,cACV,cAAW;AAAA,YAAA;AAAA,UAAA;AAAA,UAEZb,KAAkBA,EAAe,SAAS,KAAKD,KAC9C,gBAAAmB,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,YAAA,gBAAAH,EAAC,KAAA,EAAE,WAAU,6CACV,UAAAd,GACH;AAAA,YACA,gBAAAiB,EAACI,GAAA,EAAO,OAAOxB,GAAS,eAAeC,GACrC,UAAA;AAAA,cAAA,gBAAAgB;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,cAAYtB;AAAA,kBACZ,WAAU;AAAA,kBAEV,4BAACuB,GAAA,CAAA,CAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,gCAEdC,GAAA,EACE,UAAAzB,EAAe,IAAI,CAAC0B,MACnB,gBAAAX,EAACY,GAAA,EAA8B,OAAOD,EAAO,OAC1C,UAAAA,EAAO,SADOA,EAAO,KAExB,CACD,EAAA,CACH;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,GACF;AAAA,UAEDtB,KAAmBA,EAAgB,SAAS,KAAKD,KAChD,gBAAAe,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,YAAA,gBAAAH,EAAC,KAAA,EAAE,WAAU,6CACV,UAAAV,GACH;AAAA,YACA,gBAAAa,EAACI,GAAA,EAAO,OAAOpB,GAAU,eAAeC,GACtC,UAAA;AAAA,cAAA,gBAAAY;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,cAAYlB;AAAA,kBACZ,WAAU;AAAA,kBAEV,4BAACmB,GAAA,CAAA,CAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,gCAEdC,GAAA,EACE,UAAArB,EAAgB,IAAI,CAACsB,MACpB,gBAAAX,EAACY,GAAA,EAA8B,OAAOD,EAAO,OAC1C,UAAAA,EAAO,SADOA,EAAO,KAExB,CACD,EAAA,CACH;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Combobox as ComboboxPrimitive } from '@base-ui/react';
|
|
2
|
+
import { Combobox as UICombobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent as UIComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxItem, ComboboxLabel, ComboboxList as UIComboboxList, ComboboxSeparator, ComboboxTrigger as UIComboboxTrigger, ComboboxValue, useComboboxAnchor } from '../ui/combobox';
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
type ComboboxProps = React.ComponentProps<typeof UICombobox>;
|
|
5
|
+
type ComboboxContentProps = React.ComponentProps<typeof UIComboboxContent>;
|
|
6
|
+
type ComboboxListProps = React.ComponentProps<typeof UIComboboxList>;
|
|
7
|
+
type ComboboxInputProps = ComboboxPrimitive.Input.Props & {
|
|
8
|
+
showTrigger?: boolean;
|
|
9
|
+
showClear?: boolean;
|
|
10
|
+
};
|
|
11
|
+
declare function Combobox({ ...props }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function ComboboxInput({ className, children, disabled, showTrigger, showClear, ...props }: ComboboxInputProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function ComboboxContent({ className, ...props }: ComboboxContentProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function ComboboxList({ className, ...props }: ComboboxListProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export { Combobox, ComboboxInput, ComboboxContent, ComboboxList, ComboboxItem, ComboboxGroup, ComboboxLabel, ComboboxCollection, ComboboxEmpty, ComboboxSeparator, ComboboxChips, ComboboxChip, ComboboxChipsInput, UIComboboxTrigger as ComboboxTrigger, ComboboxValue, useComboboxAnchor, };
|
|
16
|
+
export type { ComboboxProps, ComboboxInputProps };
|
|
17
|
+
//# sourceMappingURL=combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG9D,OAAO,EACL,QAAQ,IAAI,UAAU,EACtB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,IAAI,iBAAiB,EACpC,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,IAAI,cAAc,EAC9B,iBAAiB,EACjB,eAAe,IAAI,iBAAiB,EACpC,aAAa,EACb,iBAAiB,EAClB,MAAM,0BAA0B,CAAA;AAKjC,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,CAAA;AAC5D,KAAK,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC1E,KAAK,iBAAiB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,CAAA;AACpE,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG;IACxD,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,iBAAS,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAE5C;AAeD,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAkB,EAClB,SAAiB,EACjB,GAAG,KAAK,EACT,EAAE,kBAAkB,2CA6BpB;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAerE;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAE/D;AAED,OAAO,EACL,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,IAAI,eAAe,EACpC,aAAa,EACb,iBAAiB,GAClB,CAAA;AACD,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as o, jsxs as e } from "react/jsx-runtime";
|
|
3
|
+
import "react";
|
|
4
|
+
import { Combobox as m } from "@base-ui/react";
|
|
5
|
+
import { XIcon as p } from "lucide-react";
|
|
6
|
+
import { Combobox as C, ComboboxContent as x, ComboboxTrigger as l, ComboboxList as c } from "../ui/combobox.js";
|
|
7
|
+
import { ComboboxChip as T, ComboboxChips as V, ComboboxChipsInput as X, ComboboxCollection as k, ComboboxEmpty as q, ComboboxGroup as D, ComboboxItem as F, ComboboxLabel as H, ComboboxSeparator as J, ComboboxValue as K, useComboboxAnchor as M } from "../ui/combobox.js";
|
|
8
|
+
import { InputGroup as d, InputGroupAddon as f } from "./input-group.js";
|
|
9
|
+
import { InputGroupInput as h, InputGroupButton as a } from "../ui/input-group.js";
|
|
10
|
+
import { cn as b } from "../../lib/utils.js";
|
|
11
|
+
function z({ ...t }) {
|
|
12
|
+
return /* @__PURE__ */ o(C, { ...t });
|
|
13
|
+
}
|
|
14
|
+
function g({ className: t, ...r }) {
|
|
15
|
+
return /* @__PURE__ */ o(
|
|
16
|
+
m.Clear,
|
|
17
|
+
{
|
|
18
|
+
"data-slot": "combobox-clear",
|
|
19
|
+
render: /* @__PURE__ */ o(a, { variant: "ghost", size: "icon-xs" }),
|
|
20
|
+
className: b(t),
|
|
21
|
+
...r,
|
|
22
|
+
children: /* @__PURE__ */ o(p, { className: "pointer-events-none" })
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
function A({
|
|
27
|
+
className: t,
|
|
28
|
+
children: r,
|
|
29
|
+
disabled: n,
|
|
30
|
+
showTrigger: s = !0,
|
|
31
|
+
showClear: u = !1,
|
|
32
|
+
...i
|
|
33
|
+
}) {
|
|
34
|
+
return /* @__PURE__ */ e(
|
|
35
|
+
d,
|
|
36
|
+
{
|
|
37
|
+
className: b("w-full", t),
|
|
38
|
+
"data-disabled": n ? "true" : void 0,
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ o(
|
|
41
|
+
m.Input,
|
|
42
|
+
{
|
|
43
|
+
...i,
|
|
44
|
+
disabled: n,
|
|
45
|
+
render: /* @__PURE__ */ o(h, {})
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
/* @__PURE__ */ e(f, { align: "inline-end", children: [
|
|
49
|
+
s && /* @__PURE__ */ o(
|
|
50
|
+
a,
|
|
51
|
+
{
|
|
52
|
+
size: "icon-xs",
|
|
53
|
+
variant: "ghost",
|
|
54
|
+
asChild: !0,
|
|
55
|
+
"data-slot": "input-group-button",
|
|
56
|
+
className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
|
|
57
|
+
disabled: n,
|
|
58
|
+
children: /* @__PURE__ */ o(l, {})
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
u && /* @__PURE__ */ o(g, { disabled: n })
|
|
62
|
+
] }),
|
|
63
|
+
r
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
function y({ className: t, ...r }) {
|
|
69
|
+
return /* @__PURE__ */ o(
|
|
70
|
+
x,
|
|
71
|
+
{
|
|
72
|
+
className: b(
|
|
73
|
+
// An in-popup search field (a child input-group): tint with the neutral
|
|
74
|
+
// state-rest wash instead of the ui default bg-input/30 (keeps it on the
|
|
75
|
+
// state layer, foreground-relative), and force w-auto so it sits inside
|
|
76
|
+
// the popup's m-1 margin instead of overflowing the clipped (overflow-
|
|
77
|
+
// hidden) popup — the primitive ComboboxInput is w-full for standalone use.
|
|
78
|
+
"rounded-[min(var(--radius),16px)] *:data-[slot=input-group]:bg-state-rest *:data-[slot=input-group]:w-auto",
|
|
79
|
+
t
|
|
80
|
+
),
|
|
81
|
+
...r
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
function B({ className: t, ...r }) {
|
|
86
|
+
return /* @__PURE__ */ o(c, { className: b(t), ...r });
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
z as Combobox,
|
|
90
|
+
T as ComboboxChip,
|
|
91
|
+
V as ComboboxChips,
|
|
92
|
+
X as ComboboxChipsInput,
|
|
93
|
+
k as ComboboxCollection,
|
|
94
|
+
y as ComboboxContent,
|
|
95
|
+
q as ComboboxEmpty,
|
|
96
|
+
D as ComboboxGroup,
|
|
97
|
+
A as ComboboxInput,
|
|
98
|
+
F as ComboboxItem,
|
|
99
|
+
H as ComboboxLabel,
|
|
100
|
+
B as ComboboxList,
|
|
101
|
+
J as ComboboxSeparator,
|
|
102
|
+
l as ComboboxTrigger,
|
|
103
|
+
K as ComboboxValue,
|
|
104
|
+
M as useComboboxAnchor
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=combobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.js","sources":["../../../src/components/primitives/combobox.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\nimport { XIcon } from \"lucide-react\"\n\nimport {\n Combobox as UICombobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxCollection,\n ComboboxContent as UIComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList as UIComboboxList,\n ComboboxSeparator,\n ComboboxTrigger as UIComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n} from \"@/components/ui/combobox\"\nimport { InputGroup, InputGroupAddon } from \"@/components/primitives/input-group\"\nimport { InputGroupButton, InputGroupInput } from \"@/components/ui/input-group\"\nimport { cn } from \"@/lib/utils\"\n\ntype ComboboxProps = React.ComponentProps<typeof UICombobox>\ntype ComboboxContentProps = React.ComponentProps<typeof UIComboboxContent>\ntype ComboboxListProps = React.ComponentProps<typeof UIComboboxList>\ntype ComboboxInputProps = ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}\n\nfunction Combobox({ ...props }: ComboboxProps) {\n return <UICombobox {...props} />\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <XIcon className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxInputProps) {\n return (\n <InputGroup\n className={cn(\"w-full\", className)}\n data-disabled={disabled ? \"true\" : undefined}\n >\n <ComboboxPrimitive.Input\n {...props}\n disabled={disabled}\n render={<InputGroupInput />}\n />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <UIComboboxTrigger />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({ className, ...props }: ComboboxContentProps) {\n return (\n <UIComboboxContent\n className={cn(\n // An in-popup search field (a child input-group): tint with the neutral\n // state-rest wash instead of the ui default bg-input/30 (keeps it on the\n // state layer, foreground-relative), and force w-auto so it sits inside\n // the popup's m-1 margin instead of overflowing the clipped (overflow-\n // hidden) popup — the primitive ComboboxInput is w-full for standalone use.\n \"rounded-[min(var(--radius),16px)] *:data-[slot=input-group]:bg-state-rest *:data-[slot=input-group]:w-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxListProps) {\n return <UIComboboxList className={cn(className)} {...props} />\n}\n\nexport {\n Combobox,\n ComboboxInput,\n ComboboxContent,\n ComboboxList,\n ComboboxItem,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n ComboboxSeparator,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n UIComboboxTrigger as ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n}\nexport type { ComboboxProps, ComboboxInputProps }\n"],"names":["Combobox","props","jsx","UICombobox","ComboboxClear","className","ComboboxPrimitive","InputGroupButton","cn","XIcon","ComboboxInput","children","disabled","showTrigger","showClear","jsxs","InputGroup","InputGroupInput","InputGroupAddon","UIComboboxTrigger","ComboboxContent","UIComboboxContent","ComboboxList","UIComboboxList"],"mappings":";;;;;;;;;;AAiCA,SAASA,EAAS,EAAE,GAAGC,KAAwB;AAC7C,SAAO,gBAAAC,EAACC,GAAA,EAAY,GAAGF,EAAA,CAAO;AAChC;AAEA,SAASG,EAAc,EAAE,WAAAC,GAAW,GAAGJ,KAAwC;AAC7E,SACE,gBAAAC;AAAA,IAACI,EAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,QAAQ,gBAAAJ,EAACK,GAAA,EAAiB,SAAQ,SAAQ,MAAK,WAAU;AAAA,MACzD,WAAWC,EAAGH,CAAS;AAAA,MACtB,GAAGJ;AAAA,MAEJ,UAAA,gBAAAC,EAACO,GAAA,EAAM,WAAU,sBAAA,CAAsB;AAAA,IAAA;AAAA,EAAA;AAG7C;AAEA,SAASC,EAAc;AAAA,EACrB,WAAAL;AAAA,EACA,UAAAM;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,GAAGb;AACL,GAAuB;AACrB,SACE,gBAAAc;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWR,EAAG,UAAUH,CAAS;AAAA,MACjC,iBAAeO,IAAW,SAAS;AAAA,MAEnC,UAAA;AAAA,QAAA,gBAAAV;AAAA,UAACI,EAAkB;AAAA,UAAlB;AAAA,YACE,GAAGL;AAAA,YACJ,UAAAW;AAAA,YACA,0BAASK,GAAA,CAAA,CAAgB;AAAA,UAAA;AAAA,QAAA;AAAA,QAE3B,gBAAAF,EAACG,GAAA,EAAgB,OAAM,cACpB,UAAA;AAAA,UAAAL,KACC,gBAAAX;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,SAAO;AAAA,cACP,aAAU;AAAA,cACV,WAAU;AAAA,cACV,UAAAK;AAAA,cAEA,4BAACO,GAAA,CAAA,CAAkB;AAAA,YAAA;AAAA,UAAA;AAAA,UAGtBL,KAAa,gBAAAZ,EAACE,GAAA,EAAc,UAAAQ,EAAA,CAAoB;AAAA,QAAA,GACnD;AAAA,QACCD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASS,EAAgB,EAAE,WAAAf,GAAW,GAAGJ,KAA+B;AACtE,SACE,gBAAAC;AAAA,IAACmB;AAAAA,IAAA;AAAA,MACC,WAAWb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGJ;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASqB,EAAa,EAAE,WAAAjB,GAAW,GAAGJ,KAA4B;AAChE,2BAAQsB,GAAA,EAAe,WAAWf,EAAGH,CAAS,GAAI,GAAGJ,GAAO;AAC9D;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { InputGroup } from './input-group';
|
|
2
|
+
import { PopoverContent } from '../ui/popover';
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
type DatePickerTriggerProps = React.ComponentProps<typeof InputGroup> & {
|
|
5
|
+
value: string;
|
|
6
|
+
placeholder: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare function DatePickerTrigger({ value, placeholder, disabled, className, ...props }: DatePickerTriggerProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
type DatePickerProps = {
|
|
11
|
+
value?: Date;
|
|
12
|
+
onValueChange?: (date: Date | undefined) => void;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
className?: string;
|
|
16
|
+
align?: React.ComponentProps<typeof PopoverContent>["align"];
|
|
17
|
+
};
|
|
18
|
+
declare function DatePicker({ value, onValueChange, placeholder, disabled, className, align, }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export { DatePicker, DatePickerTrigger };
|
|
20
|
+
export type { DatePickerProps, DatePickerTriggerProps };
|
|
21
|
+
//# sourceMappingURL=date-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/date-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EACL,UAAU,EAEX,MAAM,qCAAqC,CAAA;AAE5C,OAAO,EAEL,cAAc,EAEf,MAAM,yBAAyB,CAAA;AAGhC,KAAK,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,GAAG;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,iBAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,sBAAsB,2CAuBxB;AAED,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;IAChD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,CAAC,CAAA;CAC7D,CAAA;AAED,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,aAAa,EACb,WAA2B,EAC3B,QAAQ,EACR,SAAS,EACT,KAAe,GAChB,EAAE,eAAe,2CA2BjB;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA;AACxC,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as p, jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import * as u from "react";
|
|
4
|
+
import { CalendarIcon as l } from "lucide-react";
|
|
5
|
+
import { format as d } from "date-fns";
|
|
6
|
+
import { Calendar as f } from "./calendar.js";
|
|
7
|
+
import { InputGroup as P, InputGroupAddon as h } from "./input-group.js";
|
|
8
|
+
import { InputGroupInput as g } from "../ui/input-group.js";
|
|
9
|
+
import { Popover as I, PopoverTrigger as x, PopoverContent as C } from "../ui/popover.js";
|
|
10
|
+
import { cn as k } from "../../lib/utils.js";
|
|
11
|
+
function v({
|
|
12
|
+
value: e,
|
|
13
|
+
placeholder: t,
|
|
14
|
+
disabled: o,
|
|
15
|
+
className: n,
|
|
16
|
+
...i
|
|
17
|
+
}) {
|
|
18
|
+
return /* @__PURE__ */ p(
|
|
19
|
+
P,
|
|
20
|
+
{
|
|
21
|
+
"data-disabled": o ? "true" : void 0,
|
|
22
|
+
className: k(
|
|
23
|
+
"w-[240px] cursor-pointer",
|
|
24
|
+
o && "pointer-events-none opacity-50",
|
|
25
|
+
n
|
|
26
|
+
),
|
|
27
|
+
...i,
|
|
28
|
+
children: [
|
|
29
|
+
/* @__PURE__ */ r(h, { align: "inline-start", children: /* @__PURE__ */ r(l, {}) }),
|
|
30
|
+
/* @__PURE__ */ r(
|
|
31
|
+
g,
|
|
32
|
+
{
|
|
33
|
+
readOnly: !0,
|
|
34
|
+
tabIndex: -1,
|
|
35
|
+
value: e,
|
|
36
|
+
placeholder: t,
|
|
37
|
+
className: "cursor-pointer"
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
function T({
|
|
45
|
+
value: e,
|
|
46
|
+
onValueChange: t,
|
|
47
|
+
placeholder: o = "Pick a date",
|
|
48
|
+
disabled: n,
|
|
49
|
+
className: i,
|
|
50
|
+
align: s = "start"
|
|
51
|
+
}) {
|
|
52
|
+
const [c, a] = u.useState(!1);
|
|
53
|
+
return /* @__PURE__ */ p(I, { open: c, onOpenChange: a, children: [
|
|
54
|
+
/* @__PURE__ */ r(x, { asChild: !0, children: /* @__PURE__ */ r(
|
|
55
|
+
v,
|
|
56
|
+
{
|
|
57
|
+
value: e ? d(e, "PPP") : "",
|
|
58
|
+
placeholder: o,
|
|
59
|
+
disabled: n,
|
|
60
|
+
className: i
|
|
61
|
+
}
|
|
62
|
+
) }),
|
|
63
|
+
/* @__PURE__ */ r(C, { className: "w-auto p-0", align: s, children: /* @__PURE__ */ r(
|
|
64
|
+
f,
|
|
65
|
+
{
|
|
66
|
+
mode: "single",
|
|
67
|
+
selected: e,
|
|
68
|
+
onSelect: (m) => {
|
|
69
|
+
t?.(m), a(!1);
|
|
70
|
+
},
|
|
71
|
+
defaultMonth: e,
|
|
72
|
+
autoFocus: !0
|
|
73
|
+
}
|
|
74
|
+
) })
|
|
75
|
+
] });
|
|
76
|
+
}
|
|
77
|
+
export {
|
|
78
|
+
T as DatePicker,
|
|
79
|
+
v as DatePickerTrigger
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=date-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-picker.js","sources":["../../../src/components/primitives/date-picker.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { CalendarIcon } from \"lucide-react\"\nimport { format } from \"date-fns\"\n\nimport { Calendar } from \"@/components/primitives/calendar\"\nimport {\n InputGroup,\n InputGroupAddon,\n} from \"@/components/primitives/input-group\"\nimport { InputGroupInput } from \"@/components/ui/input-group\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport { cn } from \"@/lib/utils\"\n\ntype DatePickerTriggerProps = React.ComponentProps<typeof InputGroup> & {\n value: string\n placeholder: string\n disabled?: boolean\n}\n\nfunction DatePickerTrigger({\n value,\n placeholder,\n disabled,\n className,\n ...props\n}: DatePickerTriggerProps) {\n return (\n <InputGroup\n data-disabled={disabled ? \"true\" : undefined}\n className={cn(\n \"w-[240px] cursor-pointer\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n {...props}\n >\n <InputGroupAddon align=\"inline-start\">\n <CalendarIcon />\n </InputGroupAddon>\n <InputGroupInput\n readOnly\n tabIndex={-1}\n value={value}\n placeholder={placeholder}\n className=\"cursor-pointer\"\n />\n </InputGroup>\n )\n}\n\ntype DatePickerProps = {\n value?: Date\n onValueChange?: (date: Date | undefined) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n align?: React.ComponentProps<typeof PopoverContent>[\"align\"]\n}\n\nfunction DatePicker({\n value,\n onValueChange,\n placeholder = \"Pick a date\",\n disabled,\n className,\n align = \"start\",\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <DatePickerTrigger\n value={value ? format(value, \"PPP\") : \"\"}\n placeholder={placeholder}\n disabled={disabled}\n className={className}\n />\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align={align}>\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={(next) => {\n onValueChange?.(next)\n setOpen(false)\n }}\n defaultMonth={value}\n autoFocus\n />\n </PopoverContent>\n </Popover>\n )\n}\n\nexport { DatePicker, DatePickerTrigger }\nexport type { DatePickerProps, DatePickerTriggerProps }\n"],"names":["DatePickerTrigger","value","placeholder","disabled","className","props","jsxs","InputGroup","cn","jsx","InputGroupAddon","CalendarIcon","InputGroupInput","DatePicker","onValueChange","align","open","setOpen","React","Popover","PopoverTrigger","format","PopoverContent","Calendar","next"],"mappings":";;;;;;;;;;AAuBA,SAASA,EAAkB;AAAA,EACzB,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAA2B;AACzB,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,iBAAeJ,IAAW,SAAS;AAAA,MACnC,WAAWK;AAAA,QACT;AAAA,QACAL,KAAY;AAAA,QACZC;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAACC,GAAA,EAAgB,OAAM,gBACrB,UAAA,gBAAAD,EAACE,KAAa,GAChB;AAAA,QACA,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,UAAQ;AAAA,YACR,UAAU;AAAA,YACV,OAAAX;AAAA,YACA,aAAAC;AAAA,YACA,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AAGN;AAWA,SAASW,EAAW;AAAA,EAClB,OAAAZ;AAAA,EACA,eAAAa;AAAA,EACA,aAAAZ,IAAc;AAAA,EACd,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAW,IAAQ;AACV,GAAoB;AAClB,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAM,SAAS,EAAK;AAE5C,SACE,gBAAAZ,EAACa,GAAA,EAAQ,MAAAH,GAAY,cAAcC,GACjC,UAAA;AAAA,IAAA,gBAAAR,EAACW,GAAA,EAAe,SAAO,IACrB,UAAA,gBAAAX;AAAA,MAACT;AAAA,MAAA;AAAA,QACC,OAAOC,IAAQoB,EAAOpB,GAAO,KAAK,IAAI;AAAA,QACtC,aAAAC;AAAA,QACA,UAAAC;AAAA,QACA,WAAAC;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACA,gBAAAK,EAACa,GAAA,EAAe,WAAU,cAAa,OAAAP,GACrC,UAAA,gBAAAN;AAAA,MAACc;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAUtB;AAAA,QACV,UAAU,CAACuB,MAAS;AAClB,UAAAV,IAAgBU,CAAI,GACpBP,EAAQ,EAAK;AAAA,QACf;AAAA,QACA,cAAchB;AAAA,QACd,WAAS;AAAA,MAAA;AAAA,IAAA,EACX,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DateRange } from 'react-day-picker';
|
|
2
|
+
import { PopoverContent } from '../ui/popover';
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
type DateRangePickerProps = {
|
|
5
|
+
value?: DateRange;
|
|
6
|
+
onValueChange?: (range: DateRange | undefined) => void;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
align?: React.ComponentProps<typeof PopoverContent>["align"];
|
|
11
|
+
numberOfMonths?: number;
|
|
12
|
+
};
|
|
13
|
+
declare function DateRangePicker({ value, onValueChange, placeholder, disabled, className, align, numberOfMonths, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export { DateRangePicker };
|
|
15
|
+
export type { DateRangePickerProps };
|
|
16
|
+
//# sourceMappingURL=date-range-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range-picker.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/date-range-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIjD,OAAO,EAEL,cAAc,EAEf,MAAM,yBAAyB,CAAA;AAEhC,KAAK,oBAAoB,GAAG;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAA;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAQD,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,aAAa,EACb,WAAiC,EACjC,QAAQ,EACR,SAAS,EACT,KAAe,EACf,cAAkB,GACnB,EAAE,oBAAoB,2CAgCtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAA;AAC1B,YAAY,EAAE,oBAAoB,EAAE,CAAA"}
|