@cellarnode/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/dist/chat/chat-api.d.ts +14 -0
- package/dist/chat/chat-api.d.ts.map +1 -0
- package/dist/chat/chat-api.js +36 -0
- package/dist/chat/chat-api.js.map +1 -0
- package/dist/chat/chat-toggle-button.d.ts +8 -0
- package/dist/chat/chat-toggle-button.d.ts.map +1 -0
- package/dist/chat/chat-toggle-button.js +8 -0
- package/dist/chat/chat-toggle-button.js.map +1 -0
- package/dist/chat/chat-ws.d.ts +61 -0
- package/dist/chat/chat-ws.d.ts.map +1 -0
- package/dist/chat/chat-ws.js +217 -0
- package/dist/chat/chat-ws.js.map +1 -0
- package/dist/chat/communication-hub-widget.d.ts +21 -0
- package/dist/chat/communication-hub-widget.d.ts.map +1 -0
- package/dist/chat/communication-hub-widget.js +49 -0
- package/dist/chat/communication-hub-widget.js.map +1 -0
- package/dist/chat/communication-panel.d.ts +3 -0
- package/dist/chat/communication-panel.d.ts.map +1 -0
- package/dist/chat/communication-panel.js +34 -0
- package/dist/chat/communication-panel.js.map +1 -0
- package/dist/chat/index.d.ts +17 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +11 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/messenger-layout.d.ts +25 -0
- package/dist/chat/messenger-layout.d.ts.map +1 -0
- package/dist/chat/messenger-layout.js +70 -0
- package/dist/chat/messenger-layout.js.map +1 -0
- package/dist/chat/negotiation-event-card.d.ts +9 -0
- package/dist/chat/negotiation-event-card.d.ts.map +1 -0
- package/dist/chat/negotiation-event-card.js +39 -0
- package/dist/chat/negotiation-event-card.js.map +1 -0
- package/dist/chat/timeline-utils.d.ts +7 -0
- package/dist/chat/timeline-utils.d.ts.map +1 -0
- package/dist/chat/timeline-utils.js +40 -0
- package/dist/chat/timeline-utils.js.map +1 -0
- package/dist/chat/types.d.ts +132 -0
- package/dist/chat/types.d.ts.map +1 -0
- package/dist/chat/types.js +3 -0
- package/dist/chat/types.js.map +1 -0
- package/dist/chat/unified-timeline.d.ts +13 -0
- package/dist/chat/unified-timeline.d.ts.map +1 -0
- package/dist/chat/unified-timeline.js +97 -0
- package/dist/chat/unified-timeline.js.map +1 -0
- package/dist/chat/use-chat.d.ts +10 -0
- package/dist/chat/use-chat.d.ts.map +1 -0
- package/dist/chat/use-chat.js +280 -0
- package/dist/chat/use-chat.js.map +1 -0
- package/dist/components/accordion.d.ts +8 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +19 -0
- package/dist/components/accordion.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 +31 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/animated-list.d.ts +20 -0
- package/dist/components/animated-list.d.ts.map +1 -0
- package/dist/components/animated-list.js +50 -0
- package/dist/components/animated-list.js.map +1 -0
- package/dist/components/avatar.d.ts +19 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +18 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +39 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +35 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +64 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +174 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/button.stories.d.ts +13 -0
- package/dist/components/button.stories.d.ts.map +1 -0
- package/dist/components/button.stories.js +48 -0
- package/dist/components/button.stories.js.map +1 -0
- package/dist/components/card.d.ts +9 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +17 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox.d.ts +37 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +84 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/combobox.d.ts +20 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +87 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +12 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +31 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/description-list.d.ts +4 -0
- package/dist/components/description-list.d.ts.map +1 -0
- package/dist/components/description-list.js +12 -0
- package/dist/components/description-list.js.map +1 -0
- package/dist/components/dialog.d.ts +30 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +32 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/divider.d.ts +4 -0
- package/dist/components/divider.d.ts.map +1 -0
- package/dist/components/divider.js +6 -0
- package/dist/components/divider.js.map +1 -0
- package/dist/components/drawer.d.ts +23 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +23 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +26 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +52 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/dropdown.d.ts +37 -0
- package/dist/components/dropdown.d.ts.map +1 -0
- package/dist/components/dropdown.js +79 -0
- package/dist/components/dropdown.js.map +1 -0
- package/dist/components/fieldset.d.ts +22 -0
- package/dist/components/fieldset.d.ts.map +1 -0
- package/dist/components/fieldset.js +25 -0
- package/dist/components/fieldset.js.map +1 -0
- package/dist/components/form.d.ts +25 -0
- package/dist/components/form.d.ts.map +1 -0
- package/dist/components/form.js +60 -0
- package/dist/components/form.js.map +1 -0
- package/dist/components/heading.d.ts +7 -0
- package/dist/components/heading.d.ts.map +1 -0
- package/dist/components/heading.js +11 -0
- package/dist/components/heading.js.map +1 -0
- package/dist/components/input.d.ts +11 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +57 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/kanban-board.d.ts +78 -0
- package/dist/components/kanban-board.d.ts.map +1 -0
- package/dist/components/kanban-board.js +18 -0
- package/dist/components/kanban-board.js.map +1 -0
- package/dist/components/kanban-board.stories.d.ts +10 -0
- package/dist/components/kanban-board.stories.d.ts.map +1 -0
- package/dist/components/kanban-board.stories.js +125 -0
- package/dist/components/kanban-board.stories.js.map +1 -0
- package/dist/components/kanban-card.d.ts +8 -0
- package/dist/components/kanban-card.d.ts.map +1 -0
- package/dist/components/kanban-card.js +13 -0
- package/dist/components/kanban-card.js.map +1 -0
- package/dist/components/kanban-dnd-board.d.ts +8 -0
- package/dist/components/kanban-dnd-board.d.ts.map +1 -0
- package/dist/components/kanban-dnd-board.js +104 -0
- package/dist/components/kanban-dnd-board.js.map +1 -0
- package/dist/components/label.d.ts +5 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +9 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/link.d.ts +12 -0
- package/dist/components/link.d.ts.map +1 -0
- package/dist/components/link.js +14 -0
- package/dist/components/link.js.map +1 -0
- package/dist/components/listbox.d.ts +16 -0
- package/dist/components/listbox.d.ts.map +1 -0
- package/dist/components/listbox.js +88 -0
- package/dist/components/listbox.js.map +1 -0
- package/dist/components/pagination.d.ts +18 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +22 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.d.ts +11 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +27 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/radio.d.ts +38 -0
- package/dist/components/radio.d.ts.map +1 -0
- package/dist/components/radio.js +87 -0
- package/dist/components/radio.js.map +1 -0
- package/dist/components/scroll-area.d.ts +6 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +14 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +6 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +41 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +5 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +9 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/shadcn-badge.d.ts +10 -0
- package/dist/components/shadcn-badge.d.ts.map +1 -0
- package/dist/components/shadcn-badge.js +25 -0
- package/dist/components/shadcn-badge.js.map +1 -0
- package/dist/components/shadcn-button.d.ts +11 -0
- package/dist/components/shadcn-button.d.ts.map +1 -0
- package/dist/components/shadcn-button.js +36 -0
- package/dist/components/shadcn-button.js.map +1 -0
- package/dist/components/shadcn-dialog.d.ts +18 -0
- package/dist/components/shadcn-dialog.d.ts.map +1 -0
- package/dist/components/shadcn-dialog.js +37 -0
- package/dist/components/shadcn-dialog.js.map +1 -0
- package/dist/components/shadcn-input.d.ts +4 -0
- package/dist/components/shadcn-input.d.ts.map +1 -0
- package/dist/components/shadcn-input.js +7 -0
- package/dist/components/shadcn-input.js.map +1 -0
- package/dist/components/shadcn-select.d.ts +14 -0
- package/dist/components/shadcn-select.d.ts.map +1 -0
- package/dist/components/shadcn-select.js +32 -0
- package/dist/components/shadcn-select.js.map +1 -0
- package/dist/components/shadcn-textarea.d.ts +4 -0
- package/dist/components/shadcn-textarea.d.ts.map +1 -0
- package/dist/components/shadcn-textarea.js +7 -0
- package/dist/components/shadcn-textarea.js.map +1 -0
- package/dist/components/sheet.d.ts +26 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +37 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.d.ts +68 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +208 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.d.ts +3 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +7 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +5 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +8 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/sonner.d.ts +11 -0
- package/dist/components/sonner.d.ts.map +1 -0
- package/dist/components/sonner.js +14 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/switch.d.ts +30 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +68 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +17 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +41 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +12 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +30 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text.d.ts +6 -0
- package/dist/components/text.d.ts.map +1 -0
- package/dist/components/text.js +16 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/textarea.d.ts +8 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +38 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toast.d.ts +16 -0
- package/dist/components/toast.d.ts.map +1 -0
- package/dist/components/toast.js +34 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/toaster.d.ts +2 -0
- package/dist/components/toaster.d.ts.map +1 -0
- package/dist/components/toaster.js +10 -0
- package/dist/components/toaster.js.map +1 -0
- package/dist/components/tooltip.d.ts +8 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +11 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/use-toast.d.ts +3 -0
- package/dist/components/use-toast.d.ts.map +1 -0
- package/dist/components/use-toast.js +3 -0
- package/dist/components/use-toast.js.map +1 -0
- package/dist/globe/data/country-geo.d.ts +15 -0
- package/dist/globe/data/country-geo.d.ts.map +1 -0
- package/dist/globe/data/country-geo.js +81 -0
- package/dist/globe/data/country-geo.js.map +1 -0
- package/dist/globe/electron-arc.d.ts +30 -0
- package/dist/globe/electron-arc.d.ts.map +1 -0
- package/dist/globe/electron-arc.js +119 -0
- package/dist/globe/electron-arc.js.map +1 -0
- package/dist/globe/globe-theme.d.ts +34 -0
- package/dist/globe/globe-theme.d.ts.map +1 -0
- package/dist/globe/globe-theme.js +118 -0
- package/dist/globe/globe-theme.js.map +1 -0
- package/dist/globe/globe-types.d.ts +42 -0
- package/dist/globe/globe-types.d.ts.map +1 -0
- package/dist/globe/globe-types.js +5 -0
- package/dist/globe/globe-types.js.map +1 -0
- package/dist/globe/globe-view.d.ts +27 -0
- package/dist/globe/globe-view.d.ts.map +1 -0
- package/dist/globe/globe-view.js +601 -0
- package/dist/globe/globe-view.js.map +1 -0
- package/dist/globe/globe-view.stories.d.ts +42 -0
- package/dist/globe/globe-view.stories.d.ts.map +1 -0
- package/dist/globe/globe-view.stories.js +319 -0
- package/dist/globe/globe-view.stories.js.map +1 -0
- package/dist/globe/index.d.ts +12 -0
- package/dist/globe/index.d.ts.map +1 -0
- package/dist/globe/index.js +7 -0
- package/dist/globe/index.js.map +1 -0
- package/dist/globe/map/country-code-map.d.ts +10 -0
- package/dist/globe/map/country-code-map.d.ts.map +1 -0
- package/dist/globe/map/country-code-map.js +15 -0
- package/dist/globe/map/country-code-map.js.map +1 -0
- package/dist/globe/map/map-geometry.d.ts +10 -0
- package/dist/globe/map/map-geometry.d.ts.map +1 -0
- package/dist/globe/map/map-geometry.js +57 -0
- package/dist/globe/map/map-geometry.js.map +1 -0
- package/dist/globe/map/map-materials.d.ts +8 -0
- package/dist/globe/map/map-materials.d.ts.map +1 -0
- package/dist/globe/map/map-materials.js +32 -0
- package/dist/globe/map/map-materials.js.map +1 -0
- package/dist/globe/map/map-projection.d.ts +11 -0
- package/dist/globe/map/map-projection.d.ts.map +1 -0
- package/dist/globe/map/map-projection.js +17 -0
- package/dist/globe/map/map-projection.js.map +1 -0
- package/dist/globe/scene-extras.d.ts +10 -0
- package/dist/globe/scene-extras.d.ts.map +1 -0
- package/dist/globe/scene-extras.js +69 -0
- package/dist/globe/scene-extras.js.map +1 -0
- package/dist/hooks/use-kanban-dnd.d.ts +23 -0
- package/dist/hooks/use-kanban-dnd.d.ts.map +1 -0
- package/dist/hooks/use-kanban-dnd.js +22 -0
- package/dist/hooks/use-kanban-dnd.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/hooks/use-toast.d.ts +45 -0
- package/dist/hooks/use-toast.d.ts.map +1 -0
- package/dist/hooks/use-toast.js +125 -0
- package/dist/hooks/use-toast.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/currencies.d.ts +33 -0
- package/dist/lib/currencies.d.ts.map +1 -0
- package/dist/lib/currencies.js +13 -0
- package/dist/lib/currencies.js.map +1 -0
- package/dist/lib/kanban-transitions.d.ts +12 -0
- package/dist/lib/kanban-transitions.d.ts.map +1 -0
- package/dist/lib/kanban-transitions.js +13 -0
- package/dist/lib/kanban-transitions.js.map +1 -0
- package/dist/lib/semantic-tones.d.ts +4 -0
- package/dist/lib/semantic-tones.d.ts.map +1 -0
- package/dist/lib/semantic-tones.js +35 -0
- package/dist/lib/semantic-tones.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 +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/offer/attachments-folder.d.ts +13 -0
- package/dist/offer/attachments-folder.d.ts.map +1 -0
- package/dist/offer/attachments-folder.js +20 -0
- package/dist/offer/attachments-folder.js.map +1 -0
- package/dist/offer/confirm-action-dialog.d.ts +18 -0
- package/dist/offer/confirm-action-dialog.d.ts.map +1 -0
- package/dist/offer/confirm-action-dialog.js +57 -0
- package/dist/offer/confirm-action-dialog.js.map +1 -0
- package/dist/offer/index.d.ts +11 -0
- package/dist/offer/index.d.ts.map +1 -0
- package/dist/offer/index.js +6 -0
- package/dist/offer/index.js.map +1 -0
- package/dist/offer/inline-counter-form.d.ts +19 -0
- package/dist/offer/inline-counter-form.d.ts.map +1 -0
- package/dist/offer/inline-counter-form.js +59 -0
- package/dist/offer/inline-counter-form.js.map +1 -0
- package/dist/offer/negotiation-event-card.d.ts +9 -0
- package/dist/offer/negotiation-event-card.d.ts.map +1 -0
- package/dist/offer/negotiation-event-card.js +39 -0
- package/dist/offer/negotiation-event-card.js.map +1 -0
- package/dist/offer/offer-status-badge.d.ts +8 -0
- package/dist/offer/offer-status-badge.d.ts.map +1 -0
- package/dist/offer/offer-status-badge.js +35 -0
- package/dist/offer/offer-status-badge.js.map +1 -0
- package/dist/offer/types.d.ts +43 -0
- package/dist/offer/types.d.ts.map +1 -0
- package/dist/offer/types.js +2 -0
- package/dist/offer/types.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +2 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +166 -0
- package/src/theme/tokens.css +475 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as Headless from '@headlessui/react';
|
|
2
|
+
import type React from 'react';
|
|
3
|
+
export declare function Fieldset({ className, ...props }: {
|
|
4
|
+
className?: string;
|
|
5
|
+
} & Omit<Headless.FieldsetProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare function Legend({ className, ...props }: {
|
|
7
|
+
className?: string;
|
|
8
|
+
} & Omit<Headless.LegendProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function FieldGroup({ className, ...props }: React.ComponentPropsWithoutRef<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function Field({ className, ...props }: {
|
|
11
|
+
className?: string;
|
|
12
|
+
} & Omit<Headless.FieldProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function Label({ className, ...props }: {
|
|
14
|
+
className?: string;
|
|
15
|
+
} & Omit<Headless.LabelProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function Description({ className, ...props }: {
|
|
17
|
+
className?: string;
|
|
18
|
+
} & Omit<Headless.DescriptionProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function ErrorMessage({ className, ...props }: {
|
|
20
|
+
className?: string;
|
|
21
|
+
} & Omit<Headless.DescriptionProps, 'as' | 'className'>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=fieldset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldset.d.ts","sourceRoot":"","sources":["../../src/components/fieldset.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,WAAW,CAAC,2CAO3E;AAED,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,2CAWzE;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAExF;AAED,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,2CAepH;AAED,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,2CAWpH;AAED,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,2CAQ9E;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,2CAQ9E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as Headless from '@headlessui/react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
export function Fieldset({ className, ...props }) {
|
|
5
|
+
return (_jsx(Headless.Fieldset, { ...props, className: clsx(className, '*:data-[slot=text]:mt-1 [&>*+[data-slot=control]]:mt-6') }));
|
|
6
|
+
}
|
|
7
|
+
export function Legend({ className, ...props }) {
|
|
8
|
+
return (_jsx(Headless.Legend, { "data-slot": "legend", ...props, className: clsx(className, 'text-base/6 font-semibold text-zinc-950 data-disabled:opacity-50 sm:text-sm/6 dark:text-white') }));
|
|
9
|
+
}
|
|
10
|
+
export function FieldGroup({ className, ...props }) {
|
|
11
|
+
return _jsx("div", { "data-slot": "control", ...props, className: clsx(className, 'space-y-8') });
|
|
12
|
+
}
|
|
13
|
+
export function Field({ className, ...props }) {
|
|
14
|
+
return (_jsx(Headless.Field, { ...props, className: clsx(className, '[&>[data-slot=label]+[data-slot=control]]:mt-3', '[&>[data-slot=label]+[data-slot=description]]:mt-1', '[&>[data-slot=description]+[data-slot=control]]:mt-3', '[&>[data-slot=control]+[data-slot=description]]:mt-3', '[&>[data-slot=control]+[data-slot=error]]:mt-3', '*:data-[slot=label]:font-medium') }));
|
|
15
|
+
}
|
|
16
|
+
export function Label({ className, ...props }) {
|
|
17
|
+
return (_jsx(Headless.Label, { "data-slot": "label", ...props, className: clsx(className, 'text-base/6 text-zinc-950 select-none data-disabled:opacity-50 sm:text-sm/6 dark:text-white') }));
|
|
18
|
+
}
|
|
19
|
+
export function Description({ className, ...props }) {
|
|
20
|
+
return (_jsx(Headless.Description, { "data-slot": "description", ...props, className: clsx(className, 'text-base/6 text-zinc-500 data-disabled:opacity-50 sm:text-sm/6 dark:text-zinc-400') }));
|
|
21
|
+
}
|
|
22
|
+
export function ErrorMessage({ className, ...props }) {
|
|
23
|
+
return (_jsx(Headless.Description, { "data-slot": "error", ...props, className: clsx(className, 'text-base/6 text-red-600 data-disabled:opacity-50 sm:text-sm/6 dark:text-red-500') }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=fieldset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldset.js","sourceRoot":"","sources":["../../src/components/fieldset.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,UAAU,QAAQ,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACkE;IAC1E,OAAO,CACL,KAAC,QAAQ,CAAC,QAAQ,OACZ,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,wDAAwD,CAAC,GACpF,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACgE;IACxE,OAAO,CACL,KAAC,QAAQ,CAAC,MAAM,iBACJ,QAAQ,KACd,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS,EACT,+FAA+F,CAChG,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyC;IACvF,OAAO,2BAAe,SAAS,KAAK,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAI,CAAA;AACxF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0E;IACnH,OAAO,CACL,KAAC,QAAQ,CAAC,KAAK,OACT,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS,EACT,gDAAgD,EAChD,oDAAoD,EACpD,sDAAsD,EACtD,sDAAsD,EACtD,gDAAgD,EAChD,iCAAiC,CAClC,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0E;IACnH,OAAO,CACL,KAAC,QAAQ,CAAC,KAAK,iBACH,OAAO,KACb,KAAK,EACT,SAAS,EAAE,IAAI,CACb,SAAS,EACT,6FAA6F,CAC9F,GACD,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACqE;IAC7E,OAAO,CACL,KAAC,QAAQ,CAAC,WAAW,iBACT,aAAa,KACnB,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,oFAAoF,CAAC,GAChH,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACqE;IAC7E,OAAO,CACL,KAAC,QAAQ,CAAC,WAAW,iBACT,OAAO,KACb,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,kFAAkF,CAAC,GAC9G,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { Label as LabelPrimitive } from "radix-ui";
|
|
3
|
+
import { Slot } from "radix-ui";
|
|
4
|
+
import { type ControllerProps, type FieldPath, type FieldValues } from "react-hook-form";
|
|
5
|
+
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
|
|
6
|
+
declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const useFormField: () => {
|
|
8
|
+
invalid: boolean;
|
|
9
|
+
isDirty: boolean;
|
|
10
|
+
isTouched: boolean;
|
|
11
|
+
isValidating: boolean;
|
|
12
|
+
error?: import("react-hook-form").FieldError;
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
formItemId: string;
|
|
16
|
+
formDescriptionId: string;
|
|
17
|
+
formMessageId: string;
|
|
18
|
+
};
|
|
19
|
+
declare function FormItem({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
declare function FormDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
declare function FormMessage({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
+
export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
|
|
25
|
+
//# sourceMappingURL=form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAA;AAKxB,QAAA,MAAM,IAAI,4MAAe,CAAA;AAazB,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMtC,CAAA;AAED,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAA;AAUD,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,2CAgBxE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Slot } from "radix-ui";
|
|
5
|
+
import { Controller, FormProvider, useFormContext, useFormState, } from "react-hook-form";
|
|
6
|
+
import { cn } from "../lib/utils";
|
|
7
|
+
import { Label } from "./label";
|
|
8
|
+
const Form = FormProvider;
|
|
9
|
+
const FormFieldContext = React.createContext({});
|
|
10
|
+
const FormField = ({ ...props }) => {
|
|
11
|
+
return (_jsx(FormFieldContext.Provider, { value: { name: props.name }, children: _jsx(Controller, { ...props }) }));
|
|
12
|
+
};
|
|
13
|
+
const useFormField = () => {
|
|
14
|
+
const fieldContext = React.useContext(FormFieldContext);
|
|
15
|
+
const itemContext = React.useContext(FormItemContext);
|
|
16
|
+
const { getFieldState } = useFormContext();
|
|
17
|
+
const formState = useFormState({ name: fieldContext.name });
|
|
18
|
+
const fieldState = getFieldState(fieldContext.name, formState);
|
|
19
|
+
if (!fieldContext) {
|
|
20
|
+
throw new Error("useFormField should be used within <FormField>");
|
|
21
|
+
}
|
|
22
|
+
const { id } = itemContext;
|
|
23
|
+
return {
|
|
24
|
+
id,
|
|
25
|
+
name: fieldContext.name,
|
|
26
|
+
formItemId: `${id}-form-item`,
|
|
27
|
+
formDescriptionId: `${id}-form-item-description`,
|
|
28
|
+
formMessageId: `${id}-form-item-message`,
|
|
29
|
+
...fieldState,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const FormItemContext = React.createContext({});
|
|
33
|
+
function FormItem({ className, ...props }) {
|
|
34
|
+
const id = React.useId();
|
|
35
|
+
return (_jsx(FormItemContext.Provider, { value: { id }, children: _jsx("div", { "data-slot": "form-item", className: cn("grid gap-2", className), ...props }) }));
|
|
36
|
+
}
|
|
37
|
+
function FormLabel({ className, ...props }) {
|
|
38
|
+
const { error, formItemId } = useFormField();
|
|
39
|
+
return (_jsx(Label, { "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId, ...props }));
|
|
40
|
+
}
|
|
41
|
+
function FormControl({ ...props }) {
|
|
42
|
+
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
43
|
+
return (_jsx(Slot.Root, { "data-slot": "form-control", id: formItemId, "aria-describedby": !error
|
|
44
|
+
? `${formDescriptionId}`
|
|
45
|
+
: `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error, ...props }));
|
|
46
|
+
}
|
|
47
|
+
function FormDescription({ className, ...props }) {
|
|
48
|
+
const { formDescriptionId } = useFormField();
|
|
49
|
+
return (_jsx("p", { "data-slot": "form-description", id: formDescriptionId, className: cn("text-sm text-muted-foreground", className), ...props }));
|
|
50
|
+
}
|
|
51
|
+
function FormMessage({ className, ...props }) {
|
|
52
|
+
const { error, formMessageId } = useFormField();
|
|
53
|
+
const body = error ? String(error?.message ?? "") : props.children;
|
|
54
|
+
if (!body) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return (_jsx("p", { "data-slot": "form-message", id: formMessageId, className: cn("text-sm text-destructive", className), ...props, children: body }));
|
|
58
|
+
}
|
|
59
|
+
export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
|
|
60
|
+
//# sourceMappingURL=form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type HeadingProps = {
|
|
2
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
3
|
+
} & React.ComponentPropsWithoutRef<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>;
|
|
4
|
+
export declare function Heading({ className, level, ...props }: HeadingProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function Subheading({ className, level, ...props }: HeadingProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=heading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,KAAK,CAAC,wBAAwB,CACpF,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CACxC,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,2CASvE;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,2CAS1E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
export function Heading({ className, level = 1, ...props }) {
|
|
4
|
+
const Element = `h${level}`;
|
|
5
|
+
return (_jsx(Element, { ...props, className: clsx(className, 'font-display text-2xl/8 font-semibold text-zinc-950 sm:text-xl/8 dark:text-white') }));
|
|
6
|
+
}
|
|
7
|
+
export function Subheading({ className, level = 2, ...props }) {
|
|
8
|
+
const Element = `h${level}`;
|
|
9
|
+
return (_jsx(Element, { ...props, className: clsx(className, 'text-base/7 font-semibold text-zinc-950 sm:text-sm/6 dark:text-white') }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heading.js","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAMvB,MAAM,UAAU,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAgB;IACtE,MAAM,OAAO,GAAuB,IAAI,KAAK,EAAE,CAAA;IAE/C,OAAO,CACL,KAAC,OAAO,OACF,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,kFAAkF,CAAC,GAC9G,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAgB;IACzE,MAAM,OAAO,GAAuB,IAAI,KAAK,EAAE,CAAA;IAE/C,OAAO,CACL,KAAC,OAAO,OACF,KAAK,EACT,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,sEAAsE,CAAC,GAClG,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as Headless from '@headlessui/react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare function InputGroup({ children }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare const dateTypes: string[];
|
|
5
|
+
type DateType = (typeof dateTypes)[number];
|
|
6
|
+
export declare const Input: React.ForwardRefExoticComponent<{
|
|
7
|
+
className?: string;
|
|
8
|
+
type?: "email" | "number" | "password" | "search" | "tel" | "text" | "url" | DateType;
|
|
9
|
+
} & Omit<Headless.InputProps<"input">, "className" | "as"> & React.RefAttributes<HTMLInputElement>>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAe9E;AAED,QAAA,MAAM,SAAS,UAAsD,CAAA;AACrE,KAAK,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1C,eAAO,MAAM,KAAK;gBAKF,MAAM;WACX,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ;mGA6DvF,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as Headless from '@headlessui/react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
export function InputGroup({ children }) {
|
|
6
|
+
return (_jsx("span", { "data-slot": "control", className: clsx('relative isolate block', 'has-[[data-slot=icon]:first-child]:[&_input]:pl-10 has-[[data-slot=icon]:last-child]:[&_input]:pr-10 sm:has-[[data-slot=icon]:first-child]:[&_input]:pl-8 sm:has-[[data-slot=icon]:last-child]:[&_input]:pr-8', '*:data-[slot=icon]:pointer-events-none *:data-[slot=icon]:absolute *:data-[slot=icon]:top-3 *:data-[slot=icon]:z-10 *:data-[slot=icon]:size-5 sm:*:data-[slot=icon]:top-2.5 sm:*:data-[slot=icon]:size-4', '[&>[data-slot=icon]:first-child]:left-3 sm:[&>[data-slot=icon]:first-child]:left-2.5 [&>[data-slot=icon]:last-child]:right-3 sm:[&>[data-slot=icon]:last-child]:right-2.5', '*:data-[slot=icon]:text-zinc-500 dark:*:data-[slot=icon]:text-zinc-400'), children: children }));
|
|
7
|
+
}
|
|
8
|
+
const dateTypes = ['date', 'datetime-local', 'month', 'time', 'week'];
|
|
9
|
+
export const Input = forwardRef(function Input({ className, ...props }, ref) {
|
|
10
|
+
return (_jsx("span", { "data-slot": "control", className: clsx([
|
|
11
|
+
className,
|
|
12
|
+
// Basic layout
|
|
13
|
+
'relative block w-full',
|
|
14
|
+
// Background color + shadow applied to inset pseudo element, so shadow blends with border in light mode
|
|
15
|
+
'before:absolute before:inset-px before:rounded-[calc(var(--radius-lg)-1px)] before:bg-white before:shadow-sm',
|
|
16
|
+
// Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
|
|
17
|
+
'dark:before:hidden',
|
|
18
|
+
// Focus ring
|
|
19
|
+
'after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset sm:focus-within:after:ring-2 sm:focus-within:after:ring-ring',
|
|
20
|
+
// Disabled state
|
|
21
|
+
'has-data-disabled:opacity-50 has-data-disabled:before:bg-zinc-950/5 has-data-disabled:before:shadow-none',
|
|
22
|
+
]), children: _jsx(Headless.Input, { ref: ref, ...props, className: clsx([
|
|
23
|
+
// Date classes
|
|
24
|
+
props.type &&
|
|
25
|
+
dateTypes.includes(props.type) && [
|
|
26
|
+
'[&::-webkit-datetime-edit-fields-wrapper]:p-0',
|
|
27
|
+
'[&::-webkit-date-and-time-value]:min-h-[1.5em]',
|
|
28
|
+
'[&::-webkit-datetime-edit]:inline-flex',
|
|
29
|
+
'[&::-webkit-datetime-edit]:p-0',
|
|
30
|
+
'[&::-webkit-datetime-edit-year-field]:p-0',
|
|
31
|
+
'[&::-webkit-datetime-edit-month-field]:p-0',
|
|
32
|
+
'[&::-webkit-datetime-edit-day-field]:p-0',
|
|
33
|
+
'[&::-webkit-datetime-edit-hour-field]:p-0',
|
|
34
|
+
'[&::-webkit-datetime-edit-minute-field]:p-0',
|
|
35
|
+
'[&::-webkit-datetime-edit-second-field]:p-0',
|
|
36
|
+
'[&::-webkit-datetime-edit-millisecond-field]:p-0',
|
|
37
|
+
'[&::-webkit-datetime-edit-meridiem-field]:p-0',
|
|
38
|
+
],
|
|
39
|
+
// Basic layout
|
|
40
|
+
'relative block w-full appearance-none rounded-lg px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2.5)-1px)] sm:px-[calc(--spacing(3)-1px)] sm:py-[calc(--spacing(1.5)-1px)]',
|
|
41
|
+
// Typography
|
|
42
|
+
'text-base/6 text-zinc-950 placeholder:text-zinc-500 sm:text-sm/6 dark:text-white',
|
|
43
|
+
// Border
|
|
44
|
+
'border border-zinc-950/10 data-hover:border-zinc-950/20 dark:border-white/10 dark:data-hover:border-white/20',
|
|
45
|
+
// Background color
|
|
46
|
+
'bg-transparent dark:bg-white/5',
|
|
47
|
+
// Hide default focus styles
|
|
48
|
+
'focus:outline-hidden',
|
|
49
|
+
// Invalid state
|
|
50
|
+
'data-invalid:border-red-500 data-invalid:data-hover:border-red-500 dark:data-invalid:border-red-600 dark:data-invalid:data-hover:border-red-600',
|
|
51
|
+
// Disabled state
|
|
52
|
+
'data-disabled:border-zinc-950/20 dark:data-disabled:border-white/15 dark:data-disabled:bg-white/2.5 dark:data-hover:data-disabled:border-white/15',
|
|
53
|
+
// System icons
|
|
54
|
+
'dark:scheme-dark',
|
|
55
|
+
]) }) }));
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAA0C;IAC7E,OAAO,CACL,4BACY,SAAS,EACnB,SAAS,EAAE,IAAI,CACb,wBAAwB,EACxB,+MAA+M,EAC/M,0MAA0M,EAC1M,2KAA2K,EAC3K,wEAAwE,CACzE,YAEA,QAAQ,GACJ,CACR,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAGrE,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,KAAK,CAC5C,EACE,SAAS,EACT,GAAG,KAAK,EAIuC,EACjD,GAAyC;IAEzC,OAAO,CACL,4BACY,SAAS,EACnB,SAAS,EAAE,IAAI,CAAC;YACd,SAAS;YACT,eAAe;YACf,uBAAuB;YACvB,wGAAwG;YACxG,8GAA8G;YAC9G,kGAAkG;YAClG,oBAAoB;YACpB,aAAa;YACb,8KAA8K;YAC9K,iBAAiB;YACjB,0GAA0G;SAC3G,CAAC,YAEF,KAAC,QAAQ,CAAC,KAAK,IACb,GAAG,EAAE,GAAG,KACJ,KAAK,EACT,SAAS,EAAE,IAAI,CAAC;gBACd,eAAe;gBACf,KAAK,CAAC,IAAI;oBACR,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;oBAChC,+CAA+C;oBAC/C,gDAAgD;oBAChD,wCAAwC;oBACxC,gCAAgC;oBAChC,2CAA2C;oBAC3C,4CAA4C;oBAC5C,0CAA0C;oBAC1C,2CAA2C;oBAC3C,6CAA6C;oBAC7C,6CAA6C;oBAC7C,kDAAkD;oBAClD,+CAA+C;iBAChD;gBACH,eAAe;gBACf,8KAA8K;gBAC9K,aAAa;gBACb,kFAAkF;gBAClF,SAAS;gBACT,8GAA8G;gBAC9G,mBAAmB;gBACnB,gCAAgC;gBAChC,4BAA4B;gBAC5B,sBAAsB;gBACtB,gBAAgB;gBAChB,iJAAiJ;gBACjJ,iBAAiB;gBACjB,mJAAmJ;gBACnJ,eAAe;gBACf,kBAAkB;aACnB,CAAC,GACF,GACG,CACR,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface KanbanColumn {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle?: string;
|
|
6
|
+
count: number;
|
|
7
|
+
/** Tailwind color class for the accent dot (e.g. "bg-sky-500") */
|
|
8
|
+
accentColor?: string;
|
|
9
|
+
/** Extra classes applied to the column header region */
|
|
10
|
+
headerClassName?: string;
|
|
11
|
+
/** Extra classes applied to the top-border accent stripe */
|
|
12
|
+
accentStripeClassName?: string;
|
|
13
|
+
/** Extra classes applied to the count badge */
|
|
14
|
+
countClassName?: string;
|
|
15
|
+
/** Icon element rendered in the header (16px recommended) */
|
|
16
|
+
icon?: ReactNode;
|
|
17
|
+
/** Classes for the icon wrapper */
|
|
18
|
+
iconClassName?: string;
|
|
19
|
+
/** Text shown when the column has no cards */
|
|
20
|
+
emptyText?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface KanbanBoardProps<TItem = any> {
|
|
23
|
+
columns: KanbanColumn[];
|
|
24
|
+
/** Render the cards for a given column id */
|
|
25
|
+
renderColumnCards: (columnId: string) => ReactNode;
|
|
26
|
+
className?: string;
|
|
27
|
+
/** Enable drag-and-drop. When false (default), no @dnd-kit code is loaded. */
|
|
28
|
+
dndEnabled?: boolean;
|
|
29
|
+
/** Items used to identify the dragged element for the overlay */
|
|
30
|
+
items?: TItem[];
|
|
31
|
+
/** Extract a unique ID from an item */
|
|
32
|
+
getItemId?: (item: TItem) => string;
|
|
33
|
+
/** Determine which column an item belongs to */
|
|
34
|
+
getItemColumn?: (item: TItem) => string;
|
|
35
|
+
/** Called when a drag completes on a valid target */
|
|
36
|
+
onDragEnd?: (itemId: string, fromColumn: string, toColumn: string) => void | Promise<void>;
|
|
37
|
+
/** Return true if moving from one column to another is allowed */
|
|
38
|
+
isValidTransition?: (fromColumn: string, toColumn: string) => boolean;
|
|
39
|
+
/** Render a custom overlay while dragging */
|
|
40
|
+
renderDragOverlay?: (item: TItem) => ReactNode;
|
|
41
|
+
/** Raw onDragStart from DragDropProvider (for consumers that need low-level access) */
|
|
42
|
+
onDragStartRaw?: (event: any) => void;
|
|
43
|
+
/** Raw onDragEnd from DragDropProvider (for consumers that need low-level access) */
|
|
44
|
+
onDragEndRaw?: (event: any) => void;
|
|
45
|
+
/** How to display on mobile: "scroll" (default) or "tabs" */
|
|
46
|
+
mobileMode?: "scroll" | "tabs";
|
|
47
|
+
/** Currently active tab (when mobileMode="tabs") */
|
|
48
|
+
activeMobileTab?: string;
|
|
49
|
+
/** Called when mobile tab changes */
|
|
50
|
+
onMobileTabChange?: (columnId: string) => void;
|
|
51
|
+
/** Extra classes for individual column wrappers during DnD */
|
|
52
|
+
columnClassName?: string | ((columnId: string, state: ColumnDndState) => string);
|
|
53
|
+
/** Extra classes for the scrollable card body of each column */
|
|
54
|
+
columnBodyClassName?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Replace the entire column shell with a custom renderer.
|
|
57
|
+
* When provided, KanbanColumnShell is NOT used — the consumer controls
|
|
58
|
+
* the full column layout, header, empty state, etc.
|
|
59
|
+
* The `droppableRef` should be attached to the drop target element.
|
|
60
|
+
* The `cards` node is the result of renderColumnCards(columnId).
|
|
61
|
+
*/
|
|
62
|
+
renderColumn?: (column: KanbanColumn, cards: ReactNode, dndState: ColumnDndState, droppableRef: (element: Element | null) => void) => ReactNode;
|
|
63
|
+
}
|
|
64
|
+
export interface ColumnDndState {
|
|
65
|
+
isOver: boolean;
|
|
66
|
+
isValidTarget: boolean;
|
|
67
|
+
isInvalidTarget: boolean;
|
|
68
|
+
isDragging: boolean;
|
|
69
|
+
}
|
|
70
|
+
export declare function KanbanBoard<TItem = any>(props: KanbanBoardProps<TItem>): import("react/jsx-runtime").JSX.Element;
|
|
71
|
+
export interface KanbanColumnShellProps {
|
|
72
|
+
column: KanbanColumn;
|
|
73
|
+
children: ReactNode;
|
|
74
|
+
className?: string;
|
|
75
|
+
bodyClassName?: string;
|
|
76
|
+
}
|
|
77
|
+
export declare function KanbanColumnShell({ column, children, className, bodyClassName, }: KanbanColumnShellProps): import("react/jsx-runtime").JSX.Element;
|
|
78
|
+
//# sourceMappingURL=kanban-board.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-board.d.ts","sourceRoot":"","sources":["../../src/components/kanban-board.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
// NOTE: The DnD-enabled board is in kanban-dnd-board.tsx — NOT lazy-loaded here
|
|
4
|
+
// because @dnd-kit is an optional peer dep. Consumers who need DnD should import
|
|
5
|
+
// KanbanDndBoard directly (e.g., the importer dashboard). The KanbanBoard export
|
|
6
|
+
// here is the static (no-DnD) version only.
|
|
7
|
+
// ─── Board ────────────────────────────────────────────────────────────────────
|
|
8
|
+
export function KanbanBoard(props) {
|
|
9
|
+
return _jsx(KanbanStaticBoard, { ...props });
|
|
10
|
+
}
|
|
11
|
+
// ─── Static Board (no DnD) ───────────────────────────────────────────────────
|
|
12
|
+
function KanbanStaticBoard({ columns, renderColumnCards, className, }) {
|
|
13
|
+
return (_jsx("div", { className: cn("grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4", className), children: columns.map((col) => (_jsx(KanbanColumnShell, { column: col, bodyClassName: undefined, children: renderColumnCards(col.id) }, col.id))) }));
|
|
14
|
+
}
|
|
15
|
+
export function KanbanColumnShell({ column, children, className, bodyClassName, }) {
|
|
16
|
+
return (_jsxs("div", { className: cn("flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border bg-card shadow-xs", column.accentStripeClassName, className), children: [_jsxs("div", { className: cn("flex items-center gap-3 border-b border-border px-4 py-3", column.headerClassName), children: [column.icon && (_jsx("div", { className: cn("flex size-7 items-center justify-center rounded-md", column.iconClassName), children: column.icon })), !column.icon && column.accentColor && (_jsx("div", { className: cn("size-2 shrink-0 rounded-full", column.accentColor) })), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("h3", { className: "text-sm/5 font-semibold text-foreground", children: column.title }), column.subtitle && (_jsx("p", { className: "text-xs text-muted-foreground", children: column.subtitle }))] }), _jsx("span", { className: cn("inline-flex items-center rounded-md px-2 py-0.5 text-xs font-semibold text-muted-foreground", column.countClassName), children: column.count })] }), _jsx("div", { className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto p-3", bodyClassName), children: column.count === 0 ? (_jsx("p", { className: "py-8 text-center text-xs text-muted-foreground", children: column.emptyText ?? "No items" })) : (children) })] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=kanban-board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-board.js","sourceRoot":"","sources":["../../src/components/kanban-board.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AA6FlC,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,4CAA4C;AAE5C,iFAAiF;AAEjF,MAAM,UAAU,WAAW,CAAc,KAA8B;IACrE,OAAO,KAAC,iBAAiB,OAAK,KAAK,GAAI,CAAC;AAC1C,CAAC;AAED,gFAAgF;AAEhF,SAAS,iBAAiB,CAAQ,EAChC,OAAO,EACP,iBAAiB,EACjB,SAAS,GACe;IACxB,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,sDAAsD,EACtD,SAAS,CACV,YAEA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,KAAC,iBAAiB,IAAc,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,YAClE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,IADJ,GAAG,CAAC,EAAE,CAEV,CACrB,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,aAAa,GACU;IACvB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,gGAAgG,EAChG,MAAM,CAAC,qBAAqB,EAC5B,SAAS,CACV,aAGD,eACE,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,MAAM,CAAC,eAAe,CACvB,aAGA,MAAM,CAAC,IAAI,IAAI,CACd,cACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,MAAM,CAAC,aAAa,CACrB,YAEA,MAAM,CAAC,IAAI,GACR,CACP,EAGA,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,CACrC,cAAK,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,MAAM,CAAC,WAAW,CAAC,GAAI,CAC3E,EAED,eAAK,SAAS,EAAC,gBAAgB,aAC7B,aAAI,SAAS,EAAC,yCAAyC,YACpD,MAAM,CAAC,KAAK,GACV,EACJ,MAAM,CAAC,QAAQ,IAAI,CAClB,YAAG,SAAS,EAAC,+BAA+B,YAAE,MAAM,CAAC,QAAQ,GAAK,CACnE,IACG,EAEN,eACE,SAAS,EAAE,EAAE,CACX,6FAA6F,EAC7F,MAAM,CAAC,cAAc,CACtB,YAEA,MAAM,CAAC,KAAK,GACR,IACH,EAGN,cAAK,SAAS,EAAE,EAAE,CAAC,wDAAwD,EAAE,aAAa,CAAC,YACxF,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,YAAG,SAAS,EAAC,gDAAgD,YAC1D,MAAM,CAAC,SAAS,IAAI,UAAU,GAC7B,CACL,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,GACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { KanbanBoard } from "./kanban-board";
|
|
3
|
+
declare const meta: Meta<typeof KanbanBoard>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof KanbanBoard>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithEmptyColumn: Story;
|
|
8
|
+
export declare const ThreeColumns: Story;
|
|
9
|
+
export declare const MinimalAccent: Story;
|
|
10
|
+
//# sourceMappingURL=kanban-board.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-board.stories.d.ts","sourceRoot":"","sources":["../../src/components/kanban-board.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAqB,MAAM,gBAAgB,CAAC;AAGhE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAOlC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA2F1C,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAa7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAqB3B,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { KanbanBoard } from "./kanban-board";
|
|
3
|
+
import { KanbanCard } from "./kanban-card";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "Components/KanbanBoard",
|
|
6
|
+
component: KanbanBoard,
|
|
7
|
+
tags: ["autodocs"],
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: "padded",
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export default meta;
|
|
13
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
14
|
+
const sampleColumns = [
|
|
15
|
+
{
|
|
16
|
+
id: "todo",
|
|
17
|
+
title: "To Do",
|
|
18
|
+
subtitle: "Backlog items",
|
|
19
|
+
count: 3,
|
|
20
|
+
accentColor: "bg-sky-500",
|
|
21
|
+
headerClassName: "bg-sky-50 dark:bg-sky-500/5",
|
|
22
|
+
accentStripeClassName: "border-t-2 border-t-sky-300 dark:border-t-sky-500/20",
|
|
23
|
+
countClassName: "bg-sky-100 text-sky-700 ring-1 ring-sky-200 dark:bg-sky-500/10 dark:text-sky-300 dark:ring-sky-500/20",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "in-progress",
|
|
27
|
+
title: "In Progress",
|
|
28
|
+
subtitle: "Currently working",
|
|
29
|
+
count: 2,
|
|
30
|
+
accentColor: "bg-amber-500",
|
|
31
|
+
headerClassName: "bg-amber-50 dark:bg-amber-500/5",
|
|
32
|
+
accentStripeClassName: "border-t-2 border-t-amber-300 dark:border-t-amber-500/20",
|
|
33
|
+
countClassName: "bg-amber-100 text-amber-700 ring-1 ring-amber-200 dark:bg-amber-500/10 dark:text-amber-300 dark:ring-amber-500/20",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: "review",
|
|
37
|
+
title: "Review",
|
|
38
|
+
subtitle: "Awaiting approval",
|
|
39
|
+
count: 1,
|
|
40
|
+
accentColor: "bg-indigo-500",
|
|
41
|
+
headerClassName: "bg-indigo-50 dark:bg-indigo-500/5",
|
|
42
|
+
accentStripeClassName: "border-t-2 border-t-indigo-300 dark:border-t-indigo-500/20",
|
|
43
|
+
countClassName: "bg-indigo-100 text-indigo-700 ring-1 ring-indigo-200 dark:bg-indigo-500/10 dark:text-indigo-300 dark:ring-indigo-500/20",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "done",
|
|
47
|
+
title: "Done",
|
|
48
|
+
subtitle: "Completed",
|
|
49
|
+
count: 2,
|
|
50
|
+
accentColor: "bg-green-500",
|
|
51
|
+
headerClassName: "bg-green-50 dark:bg-green-500/5",
|
|
52
|
+
accentStripeClassName: "border-t-2 border-t-green-300 dark:border-t-green-500/20",
|
|
53
|
+
countClassName: "bg-green-100 text-green-700 ring-1 ring-green-200 dark:bg-green-500/10 dark:text-green-300 dark:ring-green-500/20",
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
const cardData = {
|
|
57
|
+
todo: [
|
|
58
|
+
{ id: "1", title: "Design new landing page", label: "Design" },
|
|
59
|
+
{ id: "2", title: "Update API documentation", label: "Docs" },
|
|
60
|
+
{ id: "3", title: "Fix mobile navigation", label: "Bug" },
|
|
61
|
+
],
|
|
62
|
+
"in-progress": [
|
|
63
|
+
{ id: "4", title: "Implement dark mode toggle", label: "Feature" },
|
|
64
|
+
{ id: "5", title: "Refactor auth middleware", label: "Refactor" },
|
|
65
|
+
],
|
|
66
|
+
review: [
|
|
67
|
+
{ id: "6", title: "Add email notifications", label: "Feature" },
|
|
68
|
+
],
|
|
69
|
+
done: [
|
|
70
|
+
{ id: "7", title: "Setup CI pipeline", label: "DevOps" },
|
|
71
|
+
{ id: "8", title: "Create user profile page", label: "Feature" },
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
function renderCards(columnId) {
|
|
75
|
+
const cards = cardData[columnId] ?? [];
|
|
76
|
+
return cards.map((card) => (_jsxs(KanbanCard, { onClick: () => alert(`Clicked: ${card.title}`), children: [_jsxs("div", { className: "mb-1.5 flex items-center justify-between", children: [_jsx("span", { className: "inline-flex rounded-sm bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: card.label }), _jsxs("span", { className: "text-[10px] text-muted-foreground", children: ["#", card.id] })] }), _jsx("p", { className: "text-sm/5 font-medium text-foreground", children: card.title })] }, card.id)));
|
|
77
|
+
}
|
|
78
|
+
// ─── Stories ──────────────────────────────────────────────────────────────────
|
|
79
|
+
export const Default = {
|
|
80
|
+
args: {
|
|
81
|
+
columns: sampleColumns,
|
|
82
|
+
renderColumnCards: renderCards,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
export const WithEmptyColumn = {
|
|
86
|
+
args: {
|
|
87
|
+
columns: [
|
|
88
|
+
{ ...sampleColumns[0], count: 0, emptyText: "Nothing here yet" },
|
|
89
|
+
sampleColumns[1],
|
|
90
|
+
sampleColumns[2],
|
|
91
|
+
sampleColumns[3],
|
|
92
|
+
],
|
|
93
|
+
renderColumnCards: (columnId) => {
|
|
94
|
+
if (columnId === "todo")
|
|
95
|
+
return null;
|
|
96
|
+
return renderCards(columnId);
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
export const ThreeColumns = {
|
|
101
|
+
args: {
|
|
102
|
+
columns: sampleColumns.slice(0, 3),
|
|
103
|
+
renderColumnCards: renderCards,
|
|
104
|
+
className: "xl:grid-cols-3",
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
export const MinimalAccent = {
|
|
108
|
+
args: {
|
|
109
|
+
columns: [
|
|
110
|
+
{ id: "backlog", title: "Backlog", count: 2, accentColor: "bg-slate-400" },
|
|
111
|
+
{ id: "active", title: "Active", count: 1, accentColor: "bg-blue-500" },
|
|
112
|
+
{ id: "closed", title: "Closed", count: 1, accentColor: "bg-green-500" },
|
|
113
|
+
],
|
|
114
|
+
renderColumnCards: (columnId) => {
|
|
115
|
+
const items = {
|
|
116
|
+
backlog: ["Research competitors", "Write tech spec"],
|
|
117
|
+
active: ["Build prototype"],
|
|
118
|
+
closed: ["Define requirements"],
|
|
119
|
+
};
|
|
120
|
+
return (items[columnId] ?? []).map((title, i) => (_jsx(KanbanCard, { children: _jsx("p", { className: "text-sm/5 font-medium text-foreground", children: title }) }, i)));
|
|
121
|
+
},
|
|
122
|
+
className: "xl:grid-cols-3",
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=kanban-board.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-board.stories.js","sourceRoot":"","sources":["../../src/components/kanban-board.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface KanbanCardProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function KanbanCard({ children, className, onClick }: KanbanCardProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=kanban-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-card.d.ts","sourceRoot":"","sources":["../../src/components/kanban-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,eAAe,2CAwB3E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
export function KanbanCard({ children, className, onClick }) {
|
|
4
|
+
return (_jsx("div", { className: cn("cursor-pointer rounded-lg border border-border bg-background p-3 shadow-xs transition-colors hover:border-border/80 hover:bg-muted/20", className), onClick: onClick, role: onClick ? "button" : undefined, tabIndex: onClick ? 0 : undefined, onKeyDown: onClick
|
|
5
|
+
? (e) => {
|
|
6
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
7
|
+
e.preventDefault();
|
|
8
|
+
onClick();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
: undefined, children: children }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=kanban-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-card.js","sourceRoot":"","sources":["../../src/components/kanban-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAmB;IAC1E,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,uIAAuI,EACvI,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACpC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACjC,SAAS,EACP,OAAO;YACL,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBACJ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS,YAGd,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DnD-enabled KanbanBoard variant. Loaded lazily via React.lazy()
|
|
3
|
+
* to avoid bundling @dnd-kit when DnD is not needed.
|
|
4
|
+
*/
|
|
5
|
+
import { type KanbanBoardProps } from "./kanban-board";
|
|
6
|
+
declare function KanbanDndBoard<TItem = any>({ columns, renderColumnCards, className, items, getItemId, getItemColumn, onDragEnd, onDragStartRaw, onDragEndRaw, isValidTransition, renderDragOverlay, renderColumn, columnClassName, columnBodyClassName, }: KanbanBoardProps<TItem>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default KanbanDndBoard;
|
|
8
|
+
//# sourceMappingURL=kanban-dnd-board.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-dnd-board.d.ts","sourceRoot":"","sources":["../../src/components/kanban-dnd-board.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAqB,KAAK,gBAAgB,EAAuB,MAAM,gBAAgB,CAAC;AAI/F,iBAAS,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,EACnC,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,SAAS,EACT,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,EAAE,gBAAgB,CAAC,KAAK,CAAC,2CA6GzB;AAsFD,eAAe,cAAc,CAAC"}
|