@kala-ui/react 0.0.1-beta.7 → 0.0.2
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/components/accordion/accordion-skeleton.js +1 -1
- package/dist/components/accordion/accordion.js +2 -1
- package/dist/components/action-icon/action-icon.d.ts +12 -0
- package/dist/components/action-icon/action-icon.js +35 -0
- package/dist/components/action-icon/action-icon.stories.d.ts +9 -0
- package/dist/components/action-icon/action-icon.stories.js +42 -0
- package/dist/components/action-icon/index.d.ts +1 -0
- package/dist/components/action-icon/index.js +1 -0
- package/dist/components/alert/alert-skeleton.js +4 -3
- package/dist/components/alert/alert.d.ts +2 -2
- package/dist/components/alert/alert.js +8 -6
- package/dist/components/alert/alert.stories.js +13 -9
- package/dist/components/alert/index.d.ts +1 -1
- package/dist/components/alert-dialog/alert-dialog.js +8 -5
- package/dist/components/app-shell/app-shell.d.ts +58 -0
- package/dist/components/app-shell/app-shell.js +111 -0
- package/dist/components/app-shell/app-shell.stories.d.ts +8 -0
- package/dist/components/app-shell/app-shell.stories.js +35 -0
- package/dist/components/app-shell/index.d.ts +1 -0
- package/dist/components/app-shell/index.js +1 -0
- package/dist/components/avatar/avatar.d.ts +2 -2
- package/dist/components/avatar/avatar.stories.js +1 -1
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/badge/badge.js +1 -1
- package/dist/components/badge/badge.stories.js +1 -1
- package/dist/components/banner/banner-skeleton.js +1 -1
- package/dist/components/banner/banner.d.ts +1 -1
- package/dist/components/banner/banner.stories.js +1 -1
- package/dist/components/box/box.d.ts +8 -0
- package/dist/components/box/box.js +10 -0
- package/dist/components/box/box.stories.d.ts +8 -0
- package/dist/components/box/box.stories.js +32 -0
- package/dist/components/box/index.d.ts +1 -0
- package/dist/components/box/index.js +1 -0
- package/dist/components/breadcrumbs/breadcrumbs-skeleton.js +1 -1
- package/dist/components/breadcrumbs/breadcrumbs.stories.js +1 -1
- package/dist/components/burger/burger.d.ts +8 -0
- package/dist/components/burger/burger.js +21 -0
- package/dist/components/burger/burger.stories.d.ts +8 -0
- package/dist/components/burger/burger.stories.js +31 -0
- package/dist/components/burger/index.d.ts +1 -0
- package/dist/components/burger/index.js +1 -0
- package/dist/components/button/button.d.ts +2 -2
- package/dist/components/button/button.stories.js +10 -7
- package/dist/components/button-group/button-group.stories.js +1 -1
- package/dist/components/calendar/calendar-skeleton.js +1 -1
- package/dist/components/calendar/calendar.d.ts +1 -1
- package/dist/components/calendar/calendar.js +1 -1
- package/dist/components/calendar/calendar.types.d.ts +3 -3
- package/dist/components/card/card-skeleton.js +2 -2
- package/dist/components/card/card.js +17 -14
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/center/center.d.ts +7 -0
- package/dist/components/center/center.js +10 -0
- package/dist/components/center/center.stories.d.ts +7 -0
- package/dist/components/center/center.stories.js +25 -0
- package/dist/components/center/index.d.ts +1 -0
- package/dist/components/center/index.js +1 -0
- package/dist/components/charts/area-chart.js +1 -1
- package/dist/components/charts/bar-chart.js +1 -1
- package/dist/components/charts/donut-chart.js +1 -1
- package/dist/components/charts/index.d.ts +2 -2
- package/dist/components/charts/index.js +2 -2
- package/dist/components/charts/line-chart.js +1 -1
- package/dist/components/charts/radial-bar-chart.js +1 -1
- package/dist/components/charts/theme-utils.d.ts +1 -1
- package/dist/components/charts/use-theme-aware-chart.d.ts +1 -1
- package/dist/components/charts/use-theme-aware-chart.js +2 -1
- package/dist/components/checkbox/checkbox.js +1 -1
- package/dist/components/checkbox/checkbox.stories.js +12 -8
- package/dist/components/close-button/close-button.d.ts +7 -0
- package/dist/components/close-button/close-button.js +9 -0
- package/dist/components/close-button/close-button.stories.d.ts +7 -0
- package/dist/components/close-button/close-button.stories.js +18 -0
- package/dist/components/close-button/index.d.ts +1 -0
- package/dist/components/close-button/index.js +1 -0
- package/dist/components/code/code.d.ts +8 -0
- package/dist/components/code/code.js +14 -0
- package/dist/components/code/code.stories.d.ts +8 -0
- package/dist/components/code/code.stories.js +31 -0
- package/dist/components/code/index.d.ts +1 -0
- package/dist/components/code/index.js +1 -0
- package/dist/components/collapse/collapse.d.ts +17 -0
- package/dist/components/collapse/collapse.js +34 -0
- package/dist/components/collapse/index.d.ts +1 -0
- package/dist/components/collapse/index.js +1 -0
- package/dist/components/color-input/color-input.d.ts +28 -0
- package/dist/components/color-input/color-input.js +35 -0
- package/dist/components/color-input/color-input.stories.d.ts +10 -0
- package/dist/components/color-input/color-input.stories.js +41 -0
- package/dist/components/color-input/index.d.ts +1 -0
- package/dist/components/color-input/index.js +1 -0
- package/dist/components/combobox/combobox-skeleton.js +1 -1
- package/dist/components/combobox/combobox.d.ts +1 -1
- package/dist/components/combobox/combobox.js +17 -8
- package/dist/components/combobox/combobox.stories.js +1 -1
- package/dist/components/command/command.d.ts +2 -2
- package/dist/components/command/command.stories.js +14 -19
- package/dist/components/container/container.d.ts +1 -1
- package/dist/components/container/index.d.ts +1 -1
- package/dist/components/container/index.js +1 -1
- package/dist/components/data-table/column-header-filter.js +11 -6
- package/dist/components/data-table/data-table-skeleton.js +5 -15
- package/dist/components/data-table/data-table.js +18 -15
- package/dist/components/data-table/data-table.stories.js +3 -5
- package/dist/components/date-picker/date-picker.d.ts +1 -1
- package/dist/components/date-picker/date-picker.js +3 -3
- package/dist/components/date-picker/date-picker.types.d.ts +1 -1
- package/dist/components/dialog/dialog-skeleton.js +1 -1
- package/dist/components/dialog/dialog.js +6 -4
- package/dist/components/dialog/dialog.stories.js +2 -2
- package/dist/components/dnd/dnd.d.ts +4 -5
- package/dist/components/dnd/dnd.js +5 -5
- package/dist/components/dnd/dnd.stories.js +48 -40
- package/dist/components/drawer/drawer.stories.js +2 -2
- package/dist/components/empty-state/empty-state-skeleton.js +2 -3
- package/dist/components/empty-state/empty-state.d.ts +1 -1
- package/dist/components/field/field-skeleton.js +1 -1
- package/dist/components/field/field.stories.js +1 -1
- package/dist/components/file-upload/file-upload-skeleton.js +1 -1
- package/dist/components/flex/flex.d.ts +7 -5
- package/dist/components/flex/flex.js +2 -2
- package/dist/components/flex/index.d.ts +1 -1
- package/dist/components/flex/index.js +1 -1
- package/dist/components/grid/grid.d.ts +24 -0
- package/dist/components/grid/grid.js +136 -0
- package/dist/components/grid/grid.stories.d.ts +8 -0
- package/dist/components/grid/grid.stories.js +31 -0
- package/dist/components/grid/index.d.ts +1 -0
- package/dist/components/grid/index.js +1 -0
- package/dist/components/group/group.d.ts +2 -2
- package/dist/components/group/group.js +1 -1
- package/dist/components/group/index.d.ts +1 -1
- package/dist/components/group/index.js +1 -1
- package/dist/components/header/header-skeleton.js +1 -1
- package/dist/components/header/header.d.ts +3 -3
- package/dist/components/header/header.js +17 -31
- package/dist/components/header/index.d.ts +1 -1
- package/dist/components/heading/heading.d.ts +4 -2
- package/dist/components/heading/heading.js +3 -7
- package/dist/components/heading/index.d.ts +1 -1
- package/dist/components/heading/index.js +1 -1
- package/dist/components/indicator/index.d.ts +1 -0
- package/dist/components/indicator/index.js +1 -0
- package/dist/components/indicator/indicator.d.ts +30 -0
- package/dist/components/indicator/indicator.js +89 -0
- package/dist/components/indicator/indicator.stories.d.ts +10 -0
- package/dist/components/indicator/indicator.stories.js +75 -0
- package/dist/components/input/input.js +1 -1
- package/dist/components/input/input.stories.js +1 -1
- package/dist/components/input-group/input-group.stories.js +1 -1
- package/dist/components/kbd/index.d.ts +1 -0
- package/dist/components/kbd/index.js +1 -0
- package/dist/components/kbd/kbd.d.ts +6 -0
- package/dist/components/kbd/kbd.js +13 -0
- package/dist/components/kbd/kbd.stories.d.ts +9 -0
- package/dist/components/kbd/kbd.stories.js +28 -0
- package/dist/components/label/label.stories.js +1 -1
- package/dist/components/list/list-skeleton.js +2 -2
- package/dist/components/list/list.js +1 -1
- package/dist/components/list/list.stories.js +1 -1
- package/dist/components/list/list.types.d.ts +2 -2
- package/dist/components/loading-overlay/index.d.ts +1 -0
- package/dist/components/loading-overlay/index.js +1 -0
- package/dist/components/loading-overlay/loading-overlay.d.ts +19 -0
- package/dist/components/loading-overlay/loading-overlay.js +19 -0
- package/dist/components/loading-overlay/loading-overlay.stories.d.ts +8 -0
- package/dist/components/loading-overlay/loading-overlay.stories.js +46 -0
- package/dist/components/metric-card/metric-card-skeleton.js +2 -2
- package/dist/components/metric-card/metric-card.js +1 -1
- package/dist/components/multi-select/multi-select-skeleton.js +1 -1
- package/dist/components/multi-select/multi-select.stories.js +1 -1
- package/dist/components/nav-link/index.d.ts +1 -0
- package/dist/components/nav-link/index.js +1 -0
- package/dist/components/nav-link/nav-link.d.ts +26 -0
- package/dist/components/nav-link/nav-link.js +26 -0
- package/dist/components/nav-link/nav-link.stories.d.ts +9 -0
- package/dist/components/nav-link/nav-link.stories.js +37 -0
- package/dist/components/navigation/navigation-skeleton.js +1 -1
- package/dist/components/number-input/index.d.ts +1 -0
- package/dist/components/number-input/index.js +1 -0
- package/dist/components/number-input/number-input.d.ts +40 -0
- package/dist/components/number-input/number-input.js +69 -0
- package/dist/components/number-input/number-input.stories.d.ts +11 -0
- package/dist/components/number-input/number-input.stories.js +54 -0
- package/dist/components/overlay/index.d.ts +1 -0
- package/dist/components/overlay/index.js +1 -0
- package/dist/components/overlay/overlay.d.ts +22 -0
- package/dist/components/overlay/overlay.js +45 -0
- package/dist/components/overlay/overlay.stories.d.ts +9 -0
- package/dist/components/overlay/overlay.stories.js +47 -0
- package/dist/components/page-transition/page-transition.stories.js +1 -1
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/pagination/pagination-skeleton.js +1 -1
- package/dist/components/pagination/pagination.d.ts +44 -28
- package/dist/components/pagination/pagination.js +53 -79
- package/dist/components/pagination/pagination.stories.d.ts +1 -0
- package/dist/components/pagination/pagination.stories.js +31 -5
- package/dist/components/paper/index.d.ts +1 -0
- package/dist/components/paper/index.js +1 -0
- package/dist/components/paper/paper.d.ts +12 -0
- package/dist/components/paper/paper.js +39 -0
- package/dist/components/paper/paper.stories.d.ts +7 -0
- package/dist/components/paper/paper.stories.js +30 -0
- package/dist/components/password-strength-indicator/password-strength-indicator.stories.js +1 -1
- package/dist/components/popover/popover-skeleton.js +1 -1
- package/dist/components/popover/popover.stories.js +2 -2
- package/dist/components/progress/index.d.ts +1 -1
- package/dist/components/progress/progress.d.ts +1 -1
- package/dist/components/progress/progress.stories.js +1 -1
- package/dist/components/radio-group/radio-group-skeleton.js +1 -1
- package/dist/components/radio-group/radio-group.stories.js +1 -1
- package/dist/components/resizable/resizable.stories.js +8 -8
- package/dist/components/ring-progress/index.d.ts +1 -0
- package/dist/components/ring-progress/index.js +1 -0
- package/dist/components/ring-progress/ring-progress.d.ts +24 -0
- package/dist/components/ring-progress/ring-progress.js +20 -0
- package/dist/components/ring-progress/ring-progress.stories.d.ts +9 -0
- package/dist/components/ring-progress/ring-progress.stories.js +46 -0
- package/dist/components/scroll-area/scroll-area.stories.js +26 -26
- package/dist/components/segmented-control/index.d.ts +1 -0
- package/dist/components/segmented-control/index.js +1 -0
- package/dist/components/segmented-control/segmented-control.d.ts +19 -0
- package/dist/components/segmented-control/segmented-control.js +46 -0
- package/dist/components/segmented-control/segmented-control.stories.d.ts +10 -0
- package/dist/components/segmented-control/segmented-control.stories.js +53 -0
- package/dist/components/select/select.js +1 -1
- package/dist/components/select/select.stories.js +1 -1
- package/dist/components/separator/separator.stories.js +1 -1
- package/dist/components/session-card/session-card-skeleton.js +2 -2
- package/dist/components/session-card/session-card.js +1 -1
- package/dist/components/sidebar/sidebar-skeleton.js +2 -2
- package/dist/components/skeleton/index.d.ts +3 -3
- package/dist/components/skeleton/index.js +1 -1
- package/dist/components/skeleton/skeleton.types.d.ts +0 -249
- package/dist/components/slider/index.d.ts +1 -1
- package/dist/components/slider/slider.js +1 -1
- package/dist/components/slider/slider.stories.js +1 -1
- package/dist/components/social-login-button/social-login-button.js +6 -6
- package/dist/components/sparkline-chart/sparkline-chart.js +6 -3
- package/dist/components/sparkline-chart/sparkline-chart.stories.js +1 -1
- package/dist/components/spinner/spinner.d.ts +1 -1
- package/dist/components/spoiler/index.d.ts +1 -0
- package/dist/components/spoiler/index.js +1 -0
- package/dist/components/spoiler/spoiler.d.ts +14 -0
- package/dist/components/spoiler/spoiler.js +20 -0
- package/dist/components/spoiler/spoiler.stories.d.ts +8 -0
- package/dist/components/spoiler/spoiler.stories.js +35 -0
- package/dist/components/stack/index.d.ts +1 -1
- package/dist/components/stack/index.js +1 -1
- package/dist/components/stack/stack.d.ts +2 -2
- package/dist/components/stack/stack.js +1 -1
- package/dist/components/steps/steps-skeleton.js +1 -1
- package/dist/components/steps/steps.js +7 -5
- package/dist/components/steps/steps.stories.js +6 -2
- package/dist/components/switch/index.d.ts +1 -1
- package/dist/components/switch/switch.js +1 -1
- package/dist/components/switch/switch.stories.js +1 -1
- package/dist/components/table/table-skeleton.js +2 -2
- package/dist/components/table/table.js +4 -3
- package/dist/components/table/table.stories.js +10 -7
- package/dist/components/tabs/tabs-skeleton.js +1 -1
- package/dist/components/tabs/tabs.d.ts +3 -3
- package/dist/components/tabs/tabs.js +1 -1
- package/dist/components/tabs/tabs.stories.js +5 -5
- package/dist/components/text/index.d.ts +1 -1
- package/dist/components/text/index.js +1 -1
- package/dist/components/text/text.d.ts +7 -5
- package/dist/components/text/text.js +2 -2
- package/dist/components/text/text.stories.js +34 -3
- package/dist/components/textarea/textarea.js +1 -1
- package/dist/components/textarea/textarea.stories.js +1 -1
- package/dist/components/timeline/index.d.ts +1 -0
- package/dist/components/timeline/index.js +1 -0
- package/dist/components/timeline/timeline.d.ts +35 -0
- package/dist/components/timeline/timeline.js +36 -0
- package/dist/components/timeline/timeline.stories.d.ts +7 -0
- package/dist/components/timeline/timeline.stories.js +21 -0
- package/dist/components/toast/toast.js +6 -6
- package/dist/components/toggle/toggle.stories.js +1 -1
- package/dist/components/tooltip/tooltip.stories.js +1 -1
- package/dist/components/user-menu-dropdown/user-menu-dropdown.js +1 -1
- package/dist/config/tailwind-base.d.ts +10 -0
- package/dist/config/tailwind-base.js +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +25 -10
- package/dist/lib/animations.js +94 -94
- package/dist/primitives/command/Command.js +2 -1
- package/dist/styles/globals.css +415 -82
- package/package.json +101 -24
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { fn } from "@storybook/test";
|
|
3
|
-
import {
|
|
3
|
+
import { Copy, Edit, GripVertical, Move3D, Trash2 } from "lucide-react";
|
|
4
4
|
import { useState } from "react";
|
|
5
|
-
import { Card } from "../card";
|
|
6
5
|
import { Badge } from "../badge";
|
|
7
6
|
import { Button } from "../button";
|
|
8
|
-
import {
|
|
7
|
+
import { Card } from "../card";
|
|
8
|
+
import { collisionDetectionAlgorithms, DragDropContext, DragOverlayComponent, modifiers, SortableContext, SortableItem, sortingStrategies, useDragDropSensors, } from "./dnd";
|
|
9
9
|
const meta = {
|
|
10
10
|
title: "Utilities/DnD",
|
|
11
11
|
component: DragDropContext,
|
|
@@ -55,13 +55,13 @@ export const BasicSortableList = {
|
|
|
55
55
|
return newItems;
|
|
56
56
|
});
|
|
57
57
|
};
|
|
58
|
-
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Drag to Reorder Tasks" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef }) => (_jsxs("div", { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
59
|
-
relative flex items-center gap-3 p-4 rounded-lg border bg-card
|
|
60
|
-
transition-all duration-200
|
|
58
|
+
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Drag to Reorder Tasks" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef, }) => (_jsxs("div", { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
59
|
+
relative flex items-center gap-3 p-4 rounded-lg border bg-card
|
|
60
|
+
transition-all duration-200
|
|
61
61
|
${isDragging
|
|
62
62
|
? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary cursor-grabbing z-50"
|
|
63
|
-
: "shadow-sm hover:shadow-md cursor-grab"}
|
|
64
|
-
${isSorting ? "transition-transform duration-200" : ""}
|
|
63
|
+
: "shadow-sm hover:shadow-md cursor-grab"}
|
|
64
|
+
${isSorting ? "transition-transform duration-200" : ""}
|
|
65
65
|
`, children: [_jsx(GripVertical, { className: "size-5 text-muted-foreground flex-shrink-0" }), _jsx("span", { className: "flex-1", children: item.content }), isDragging && (_jsx(Move3D, { className: "size-5 text-primary animate-pulse flex-shrink-0" }))] })) }, item.id))) }) }) })] }));
|
|
66
66
|
},
|
|
67
67
|
};
|
|
@@ -100,10 +100,10 @@ export const HorizontalList = {
|
|
|
100
100
|
return newItems;
|
|
101
101
|
});
|
|
102
102
|
};
|
|
103
|
-
return (_jsxs("div", { className: "w-full", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Sprint Planning" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, modifiers: [modifiers.restrictToHorizontalAxis], children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.horizontal, children: _jsx("div", { className: "flex gap-3 overflow-x-auto pb-4", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
104
|
-
relative min-w-[200px] cursor-grab active:cursor-grabbing
|
|
105
|
-
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary z-50" : ""}
|
|
106
|
-
${isSorting ? "transition-transform duration-200" : ""}
|
|
103
|
+
return (_jsxs("div", { className: "w-full", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Sprint Planning" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, modifiers: [modifiers.restrictToHorizontalAxis], children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.horizontal, children: _jsx("div", { className: "flex gap-3 overflow-x-auto pb-4", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef, }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
104
|
+
relative min-w-[200px] cursor-grab active:cursor-grabbing
|
|
105
|
+
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary z-50" : ""}
|
|
106
|
+
${isSorting ? "transition-transform duration-200" : ""}
|
|
107
107
|
`, children: _jsxs("div", { className: "p-4", children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("h4", { className: "font-semibold", children: item.content }), _jsx(Badge, { variant: item.status === "completed"
|
|
108
108
|
? "success"
|
|
109
109
|
: item.status === "active"
|
|
@@ -132,8 +132,16 @@ export const MultipleContainers = {
|
|
|
132
132
|
{ id: "todo-3", content: "Create wireframes", priority: "low" },
|
|
133
133
|
],
|
|
134
134
|
inProgress: [
|
|
135
|
-
{
|
|
136
|
-
|
|
135
|
+
{
|
|
136
|
+
id: "progress-1",
|
|
137
|
+
content: "Build component library",
|
|
138
|
+
priority: "high",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: "progress-2",
|
|
142
|
+
content: "Create API endpoints",
|
|
143
|
+
priority: "medium",
|
|
144
|
+
},
|
|
137
145
|
],
|
|
138
146
|
done: [
|
|
139
147
|
{ id: "done-1", content: "Setup project repository", priority: "high" },
|
|
@@ -203,15 +211,15 @@ export const MultipleContainers = {
|
|
|
203
211
|
? "To Do"
|
|
204
212
|
: containerId === "inProgress"
|
|
205
213
|
? "In Progress"
|
|
206
|
-
: "Done" }), _jsx(Badge, { variant: "outline", children: items.length })] }), _jsx(SortableItem, { id: containerId, className: "flex-1 min-h-[400px] rounded-lg border-2 border-dashed bg-muted/20 p-3", children: ({ isOver }) => (_jsx("div", { className: `
|
|
207
|
-
h-full rounded-md transition-colors
|
|
208
|
-
${isOver ? "bg-accent/50 ring-2 ring-primary" : ""}
|
|
209
|
-
`, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
210
|
-
cursor-grab active:cursor-grabbing relative
|
|
214
|
+
: "Done" }), _jsx(Badge, { variant: "outline", children: items.length })] }), _jsx(SortableItem, { id: containerId, className: "flex-1 min-h-[400px] rounded-lg border-2 border-dashed bg-muted/20 p-3", children: ({ isOver }) => (_jsx("div", { className: `
|
|
215
|
+
h-full rounded-md transition-colors
|
|
216
|
+
${isOver ? "bg-accent/50 ring-2 ring-primary" : ""}
|
|
217
|
+
`, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef, }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
218
|
+
cursor-grab active:cursor-grabbing relative
|
|
211
219
|
${isDragging
|
|
212
220
|
? "shadow-2xl scale-105 opacity-60 ring-2 ring-primary z-50"
|
|
213
|
-
: "shadow-sm hover:shadow-md"}
|
|
214
|
-
${isSorting ? "transition-transform duration-200 ease-out" : ""}
|
|
221
|
+
: "shadow-sm hover:shadow-md"}
|
|
222
|
+
${isSorting ? "transition-transform duration-200 ease-out" : ""}
|
|
215
223
|
`, children: _jsx("div", { className: "p-3", children: _jsxs("div", { className: "flex items-start justify-between gap-2 mb-2", children: [_jsx("p", { className: "font-medium text-sm flex-1", children: item.content }), _jsx(Badge, { variant: item.priority === "high"
|
|
216
224
|
? "destructive"
|
|
217
225
|
: item.priority === "medium"
|
|
@@ -251,10 +259,10 @@ export const GridLayout = {
|
|
|
251
259
|
return newItems;
|
|
252
260
|
});
|
|
253
261
|
};
|
|
254
|
-
return (_jsxs("div", { className: "w-full", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Grid Dashboard" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.rect, children: _jsx("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
255
|
-
relative aspect-square cursor-grab active:cursor-grabbing
|
|
256
|
-
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary z-50" : ""}
|
|
257
|
-
${isSorting ? "transition-transform duration-200" : ""}
|
|
262
|
+
return (_jsxs("div", { className: "w-full", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Grid Dashboard" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.rect, children: _jsx("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef, }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
263
|
+
relative aspect-square cursor-grab active:cursor-grabbing
|
|
264
|
+
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary z-50" : ""}
|
|
265
|
+
${isSorting ? "transition-transform duration-200" : ""}
|
|
258
266
|
`, children: _jsxs("div", { className: "h-full flex flex-col items-center justify-center p-4", children: [_jsx(GripVertical, { className: "size-5 text-muted-foreground mb-2" }), _jsx("p", { className: "font-medium text-center", children: item.content })] }) })) }, item.id))) }) }) })] }));
|
|
259
267
|
},
|
|
260
268
|
};
|
|
@@ -292,8 +300,8 @@ export const WithDragHandle = {
|
|
|
292
300
|
return newItems;
|
|
293
301
|
});
|
|
294
302
|
};
|
|
295
|
-
return (_jsxs("div", { className: "w-full max-w-2xl mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Tasks with Drag Handle" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, handle: true, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, className: `
|
|
296
|
-
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary" : ""}
|
|
303
|
+
return (_jsxs("div", { className: "w-full max-w-2xl mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Tasks with Drag Handle" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, handle: true, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, className: `
|
|
304
|
+
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary" : ""}
|
|
297
305
|
`, children: _jsxs("div", { className: "flex items-center gap-3 p-4", children: [_jsx("div", { ...listeners, className: "cursor-grab active:cursor-grabbing p-1 rounded hover:bg-accent touch-none", children: _jsx(GripVertical, { className: "size-5 text-muted-foreground" }) }), _jsx("span", { className: "flex-1", children: item.content }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { size: "sm", variant: "ghost", children: _jsx(Edit, { className: "size-4" }) }), _jsx(Button, { size: "sm", variant: "ghost", children: _jsx(Copy, { className: "size-4" }) }), _jsx(Button, { size: "sm", variant: "ghost", children: _jsx(Trash2, { className: "size-4" }) })] })] }) })) }, item.id))) }) }) })] }));
|
|
298
306
|
},
|
|
299
307
|
};
|
|
@@ -378,9 +386,9 @@ export const PressDelay = {
|
|
|
378
386
|
return newItems;
|
|
379
387
|
});
|
|
380
388
|
};
|
|
381
|
-
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Press & Hold to Drag" }), _jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Hold for 250ms before dragging starts" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
382
|
-
cursor-grab active:cursor-grabbing
|
|
383
|
-
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary" : ""}
|
|
389
|
+
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Press & Hold to Drag" }), _jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Hold for 250ms before dragging starts" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
390
|
+
cursor-grab active:cursor-grabbing
|
|
391
|
+
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary" : ""}
|
|
384
392
|
`, children: _jsxs("div", { className: "flex items-center gap-3 p-4", children: [_jsx(GripVertical, { className: "size-5 text-muted-foreground" }), _jsx("span", { className: "flex-1", children: item.content })] }) })) }, item.id))) }) }) })] }));
|
|
385
393
|
},
|
|
386
394
|
};
|
|
@@ -421,9 +429,9 @@ export const MinimumDistance = {
|
|
|
421
429
|
return newItems;
|
|
422
430
|
});
|
|
423
431
|
};
|
|
424
|
-
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Minimum Distance Drag" }), _jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Move 10px before dragging starts" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
425
|
-
cursor-grab active:cursor-grabbing
|
|
426
|
-
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary" : ""}
|
|
432
|
+
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Minimum Distance Drag" }), _jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "Move 10px before dragging starts" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
433
|
+
cursor-grab active:cursor-grabbing
|
|
434
|
+
${isDragging ? "shadow-2xl scale-105 opacity-50 ring-2 ring-primary" : ""}
|
|
427
435
|
`, children: _jsxs("div", { className: "flex items-center gap-3 p-4", children: [_jsx(GripVertical, { className: "size-5 text-muted-foreground" }), _jsx("span", { className: "flex-1", children: item.content })] }) })) }, item.id))) }) }) })] }));
|
|
428
436
|
},
|
|
429
437
|
};
|
|
@@ -460,9 +468,9 @@ export const VerticalAxisOnly = {
|
|
|
460
468
|
return newItems;
|
|
461
469
|
});
|
|
462
470
|
};
|
|
463
|
-
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Vertical Axis Only" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, modifiers: [modifiers.restrictToVerticalAxis], children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
464
|
-
cursor-grab active:cursor-grabbing
|
|
465
|
-
${isDragging ? "shadow-2xl opacity-50" : ""}
|
|
471
|
+
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Vertical Axis Only" }), _jsx(DragDropContext, { sensors: sensors, onDragEnd: handleDragEnd, modifiers: [modifiers.restrictToVerticalAxis], children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
472
|
+
cursor-grab active:cursor-grabbing
|
|
473
|
+
${isDragging ? "shadow-2xl opacity-50" : ""}
|
|
466
474
|
`, children: _jsxs("div", { className: "flex items-center gap-3 p-4", children: [_jsx(GripVertical, { className: "size-5 text-muted-foreground" }), _jsx("span", { className: "flex-1", children: item.content })] }) })) }, item.id))) }) }) })] }));
|
|
467
475
|
},
|
|
468
476
|
};
|
|
@@ -503,10 +511,10 @@ export const WithActions = {
|
|
|
503
511
|
return newItems;
|
|
504
512
|
});
|
|
505
513
|
};
|
|
506
|
-
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: "Check the Actions panel to see drag callbacks" }), _jsx(DragDropContext, { sensors: sensors, onDragStart: args.onDragStart, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
507
|
-
relative cursor-grab active:cursor-grabbing
|
|
508
|
-
${isDragging ? "z-50 shadow-xl" : ""}
|
|
509
|
-
${isSorting ? "transition-transform duration-200" : ""}
|
|
514
|
+
return (_jsxs("div", { className: "w-full max-w-md mx-auto", children: [_jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: "Check the Actions panel to see drag callbacks" }), _jsx(DragDropContext, { sensors: sensors, onDragStart: args.onDragStart, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: items, strategy: sortingStrategies.vertical, children: _jsx("div", { className: "space-y-2", children: items.map((item) => (_jsx(SortableItem, { id: item.id, children: ({ isDragging, isSorting, listeners, attributes, setNodeRef, }) => (_jsx(Card, { ref: setNodeRef, ...attributes, ...listeners, className: `
|
|
515
|
+
relative cursor-grab active:cursor-grabbing
|
|
516
|
+
${isDragging ? "z-50 shadow-xl" : ""}
|
|
517
|
+
${isSorting ? "transition-transform duration-200" : ""}
|
|
510
518
|
`, children: _jsxs("div", { className: "flex items-center gap-3 p-4", children: [_jsx(GripVertical, { className: "size-5 text-muted-foreground" }), _jsx("span", { className: "flex-1", children: item.content })] }) })) }, item.id))) }) }) })] }));
|
|
511
519
|
},
|
|
512
520
|
};
|
|
@@ -4,7 +4,7 @@ import { useState } from "react";
|
|
|
4
4
|
import { Button } from "../button";
|
|
5
5
|
import { Input } from "../input";
|
|
6
6
|
import { Label } from "../label";
|
|
7
|
-
import { Skeleton } from "../skeleton
|
|
7
|
+
import { Skeleton } from "../skeleton";
|
|
8
8
|
import { Textarea } from "../textarea";
|
|
9
9
|
import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "./drawer";
|
|
10
10
|
const meta = {
|
|
@@ -32,7 +32,7 @@ export const PositionExamples = {
|
|
|
32
32
|
render: () => (_jsx("div", { className: "flex flex-wrap gap-4", children: ["bottom", "top", "left", "right"].map((direction) => (_jsxs(Drawer, { direction: direction, children: [_jsx(DrawerTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", className: "capitalize", children: direction }) }), _jsx(DrawerContent, { children: _jsxs("div", { className: "mx-auto w-full max-w-sm h-full flex flex-col", children: [_jsxs(DrawerHeader, { children: [_jsxs(DrawerTitle, { className: "capitalize", children: [direction, " Drawer"] }), _jsxs(DrawerDescription, { children: ["This drawer slides from the ", direction, "."] })] }), _jsx("div", { className: "p-6 flex-1", children: _jsxs("p", { className: "text-sm text-muted-foreground", children: ["Content for the ", direction, " drawer."] }) }), _jsxs(DrawerFooter, { children: [_jsx(Button, { children: "Action" }), _jsx(DrawerClose, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Close" }) })] })] }) })] }, direction))) })),
|
|
33
33
|
};
|
|
34
34
|
export const LoadingSkeleton = {
|
|
35
|
-
render: () =>
|
|
35
|
+
render: () => _jsx(Skeleton, { className: "h-10 w-32 rounded-md" }),
|
|
36
36
|
parameters: {
|
|
37
37
|
docs: {
|
|
38
38
|
description: {
|
|
@@ -6,9 +6,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* Provides zero-CLS skeleton state that matches actual empty state layout.
|
|
7
7
|
*/
|
|
8
8
|
import { cn } from "../../lib/utils";
|
|
9
|
-
import { Skeleton } from "../skeleton
|
|
10
|
-
import { SkeletonCircle } from "../skeleton/skeleton-patterns";
|
|
11
|
-
import { SkeletonButton } from "../skeleton/skeleton-patterns";
|
|
9
|
+
import { Skeleton } from "../skeleton";
|
|
10
|
+
import { SkeletonButton, SkeletonCircle } from "../skeleton/skeleton-patterns";
|
|
12
11
|
/**
|
|
13
12
|
* Empty State skeleton component
|
|
14
13
|
*
|
|
@@ -4,7 +4,7 @@ import type * as React from "react";
|
|
|
4
4
|
import { Button } from "../button";
|
|
5
5
|
import type { EmptyStateSkeletonConfig } from "../skeleton/skeleton.types";
|
|
6
6
|
declare const emptyStateVariants: (props?: ({
|
|
7
|
-
variant?: "
|
|
7
|
+
variant?: "destructive" | "default" | null | undefined;
|
|
8
8
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
9
9
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
10
|
export interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof emptyStateVariants> {
|
|
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* Matches field label + control + helper text layout.
|
|
7
7
|
*/
|
|
8
8
|
import { cn } from "../../lib/utils";
|
|
9
|
-
import { Skeleton } from "../skeleton
|
|
9
|
+
import { Skeleton } from "../skeleton";
|
|
10
10
|
/**
|
|
11
11
|
* Field skeleton component
|
|
12
12
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Input } from "../input";
|
|
3
|
-
import { Skeleton } from "../skeleton
|
|
3
|
+
import { Skeleton } from "../skeleton";
|
|
4
4
|
import { Textarea } from "../textarea";
|
|
5
5
|
import { Field, FieldDescription, FieldError, FieldLabel, FieldSeparator, } from "./field";
|
|
6
6
|
const meta = {
|
|
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* Matches dropzone appearance with icon, text, and button.
|
|
7
7
|
*/
|
|
8
8
|
import { cn } from "../../lib/utils";
|
|
9
|
-
import { Skeleton } from "../skeleton
|
|
9
|
+
import { Skeleton } from "../skeleton";
|
|
10
10
|
/**
|
|
11
11
|
* File Upload skeleton component
|
|
12
12
|
*
|
|
@@ -3,14 +3,16 @@ import * as React from "react";
|
|
|
3
3
|
declare const flexVariants: (props?: ({
|
|
4
4
|
direction?: "row" | "column" | "rowReverse" | "columnReverse" | null | undefined;
|
|
5
5
|
wrap?: "nowrap" | "wrap" | "wrapReverse" | null | undefined;
|
|
6
|
-
align?: "center" | "end" | "
|
|
7
|
-
justify?: "center" | "end" | "start" | "
|
|
8
|
-
gap?: 0 | 1 | 2 | 3 | 4 |
|
|
6
|
+
align?: "center" | "end" | "start" | "stretch" | "baseline" | null | undefined;
|
|
7
|
+
justify?: "center" | "end" | "start" | "around" | "between" | "evenly" | null | undefined;
|
|
8
|
+
gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | null | undefined;
|
|
9
9
|
grow?: boolean | null | undefined;
|
|
10
10
|
shrink?: boolean | null | undefined;
|
|
11
11
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
12
|
-
export interface FlexProps extends React.HTMLAttributes<
|
|
12
|
+
export interface FlexProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof flexVariants> {
|
|
13
13
|
asChild?: boolean;
|
|
14
|
+
as?: React.ElementType;
|
|
15
|
+
[key: string]: any;
|
|
14
16
|
}
|
|
15
|
-
declare const Flex: React.ForwardRefExoticComponent<FlexProps & React.RefAttributes<
|
|
17
|
+
declare const Flex: React.ForwardRefExoticComponent<Omit<FlexProps, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
16
18
|
export { Flex, flexVariants };
|
|
@@ -61,8 +61,8 @@ const flexVariants = cva("flex", {
|
|
|
61
61
|
gap: 0,
|
|
62
62
|
},
|
|
63
63
|
});
|
|
64
|
-
const Flex = React.forwardRef(({ className, direction, wrap, align, justify, gap, grow, shrink, asChild = false, ...props }, ref) => {
|
|
65
|
-
const Comp = asChild ? Slot :
|
|
64
|
+
const Flex = React.forwardRef(({ className, direction, wrap, align, justify, gap, grow, shrink, asChild = false, as: Tag = "div", ...props }, ref) => {
|
|
65
|
+
const Comp = asChild ? Slot : Tag;
|
|
66
66
|
return (_jsx(Comp, { className: cn(flexVariants({
|
|
67
67
|
direction,
|
|
68
68
|
wrap,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./flex";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./flex";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const gridVariants: (props?: ({
|
|
4
|
+
cols?: "none" | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 7 | 9 | 11 | null | undefined;
|
|
5
|
+
gap?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | null | undefined;
|
|
6
|
+
flow?: "row" | "col" | "rowDense" | "colDense" | null | undefined;
|
|
7
|
+
align?: "center" | "end" | "stretch" | "start" | "baseline" | null | undefined;
|
|
8
|
+
justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
|
+
export interface GridProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof gridVariants> {
|
|
11
|
+
asChild?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
declare const gridItemVariants: (props?: ({
|
|
15
|
+
colSpan?: "auto" | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 7 | 9 | 11 | "full" | null | undefined;
|
|
16
|
+
rowSpan?: "auto" | 1 | 2 | 3 | 4 | 5 | 6 | "full" | null | undefined;
|
|
17
|
+
colStart?: "auto" | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 7 | 9 | 11 | 13 | null | undefined;
|
|
18
|
+
colEnd?: "auto" | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 7 | 9 | 11 | 13 | null | undefined;
|
|
19
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
20
|
+
export interface GridItemProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof gridItemVariants> {
|
|
21
|
+
asChild?: boolean;
|
|
22
|
+
}
|
|
23
|
+
declare const GridItem: React.ForwardRefExoticComponent<GridItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
24
|
+
export { Grid, GridItem, gridVariants, gridItemVariants };
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
|
+
const gridVariants = cva("grid", {
|
|
7
|
+
variants: {
|
|
8
|
+
cols: {
|
|
9
|
+
1: "grid-cols-1",
|
|
10
|
+
2: "grid-cols-2",
|
|
11
|
+
3: "grid-cols-3",
|
|
12
|
+
4: "grid-cols-4",
|
|
13
|
+
5: "grid-cols-5",
|
|
14
|
+
6: "grid-cols-6",
|
|
15
|
+
7: "grid-cols-7",
|
|
16
|
+
8: "grid-cols-8",
|
|
17
|
+
9: "grid-cols-9",
|
|
18
|
+
10: "grid-cols-10",
|
|
19
|
+
11: "grid-cols-11",
|
|
20
|
+
12: "grid-cols-12",
|
|
21
|
+
none: "grid-cols-none",
|
|
22
|
+
},
|
|
23
|
+
gap: {
|
|
24
|
+
0: "gap-0",
|
|
25
|
+
1: "gap-1",
|
|
26
|
+
2: "gap-2",
|
|
27
|
+
3: "gap-3",
|
|
28
|
+
4: "gap-4",
|
|
29
|
+
5: "gap-5",
|
|
30
|
+
6: "gap-6",
|
|
31
|
+
8: "gap-8",
|
|
32
|
+
10: "gap-10",
|
|
33
|
+
12: "gap-12",
|
|
34
|
+
16: "gap-16",
|
|
35
|
+
},
|
|
36
|
+
flow: {
|
|
37
|
+
row: "grid-flow-row",
|
|
38
|
+
col: "grid-flow-col",
|
|
39
|
+
rowDense: "grid-flow-row-dense",
|
|
40
|
+
colDense: "grid-flow-col-dense",
|
|
41
|
+
},
|
|
42
|
+
align: {
|
|
43
|
+
start: "items-start",
|
|
44
|
+
center: "items-center",
|
|
45
|
+
end: "items-end",
|
|
46
|
+
stretch: "items-stretch",
|
|
47
|
+
baseline: "items-baseline",
|
|
48
|
+
},
|
|
49
|
+
justify: {
|
|
50
|
+
start: "justify-start",
|
|
51
|
+
center: "justify-center",
|
|
52
|
+
end: "justify-end",
|
|
53
|
+
between: "justify-between",
|
|
54
|
+
around: "justify-around",
|
|
55
|
+
evenly: "justify-evenly",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
defaultVariants: {
|
|
59
|
+
cols: 1,
|
|
60
|
+
gap: 0,
|
|
61
|
+
flow: "row",
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
const Grid = React.forwardRef(({ className, cols, gap, flow, align, justify, asChild = false, ...props }, ref) => {
|
|
65
|
+
const Comp = asChild ? Slot : "div";
|
|
66
|
+
return (_jsx(Comp, { className: cn(gridVariants({ cols, gap, flow, align, justify, className })), ref: ref, ...props }));
|
|
67
|
+
});
|
|
68
|
+
Grid.displayName = "Grid";
|
|
69
|
+
const gridItemVariants = cva("", {
|
|
70
|
+
variants: {
|
|
71
|
+
colSpan: {
|
|
72
|
+
1: "col-span-1",
|
|
73
|
+
2: "col-span-2",
|
|
74
|
+
3: "col-span-3",
|
|
75
|
+
4: "col-span-4",
|
|
76
|
+
5: "col-span-5",
|
|
77
|
+
6: "col-span-6",
|
|
78
|
+
7: "col-span-7",
|
|
79
|
+
8: "col-span-8",
|
|
80
|
+
9: "col-span-9",
|
|
81
|
+
10: "col-span-10",
|
|
82
|
+
11: "col-span-11",
|
|
83
|
+
12: "col-span-12",
|
|
84
|
+
full: "col-span-full",
|
|
85
|
+
auto: "col-auto",
|
|
86
|
+
},
|
|
87
|
+
rowSpan: {
|
|
88
|
+
1: "row-span-1",
|
|
89
|
+
2: "row-span-2",
|
|
90
|
+
3: "row-span-3",
|
|
91
|
+
4: "row-span-4",
|
|
92
|
+
5: "row-span-5",
|
|
93
|
+
6: "row-span-6",
|
|
94
|
+
full: "row-span-full",
|
|
95
|
+
auto: "row-auto",
|
|
96
|
+
},
|
|
97
|
+
colStart: {
|
|
98
|
+
1: "col-start-1",
|
|
99
|
+
2: "col-start-2",
|
|
100
|
+
3: "col-start-3",
|
|
101
|
+
4: "col-start-4",
|
|
102
|
+
5: "col-start-5",
|
|
103
|
+
6: "col-start-6",
|
|
104
|
+
7: "col-start-7",
|
|
105
|
+
8: "col-start-8",
|
|
106
|
+
9: "col-start-9",
|
|
107
|
+
10: "col-start-10",
|
|
108
|
+
11: "col-start-11",
|
|
109
|
+
12: "col-start-12",
|
|
110
|
+
13: "col-start-13",
|
|
111
|
+
auto: "col-start-auto",
|
|
112
|
+
},
|
|
113
|
+
colEnd: {
|
|
114
|
+
1: "col-end-1",
|
|
115
|
+
2: "col-end-2",
|
|
116
|
+
3: "col-end-3",
|
|
117
|
+
4: "col-end-4",
|
|
118
|
+
5: "col-end-5",
|
|
119
|
+
6: "col-end-6",
|
|
120
|
+
7: "col-end-7",
|
|
121
|
+
8: "col-end-8",
|
|
122
|
+
9: "col-end-9",
|
|
123
|
+
10: "col-end-10",
|
|
124
|
+
11: "col-end-11",
|
|
125
|
+
12: "col-end-12",
|
|
126
|
+
13: "col-end-13",
|
|
127
|
+
auto: "col-end-auto",
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
const GridItem = React.forwardRef(({ className, colSpan, rowSpan, colStart, colEnd, asChild = false, ...props }, ref) => {
|
|
132
|
+
const Comp = asChild ? Slot : "div";
|
|
133
|
+
return (_jsx(Comp, { className: cn(gridItemVariants({ colSpan, rowSpan, colStart, colEnd, className })), ref: ref, ...props }));
|
|
134
|
+
});
|
|
135
|
+
GridItem.displayName = "GridItem";
|
|
136
|
+
export { Grid, GridItem, gridVariants, gridItemVariants };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { Grid } from "./grid";
|
|
3
|
+
declare const meta: Meta<typeof Grid>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Grid>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithSpans: Story;
|
|
8
|
+
export declare const Responsive: Story;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Grid, GridItem } from "./grid";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Components/Grid",
|
|
5
|
+
component: Grid,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
argTypes: {
|
|
8
|
+
cols: {
|
|
9
|
+
control: "select",
|
|
10
|
+
options: [1, 2, 3, 4, 5, 6, 12, "none"],
|
|
11
|
+
},
|
|
12
|
+
gap: {
|
|
13
|
+
control: "select",
|
|
14
|
+
options: [0, 1, 2, 4, 8, 16],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export default meta;
|
|
19
|
+
export const Default = {
|
|
20
|
+
args: {
|
|
21
|
+
cols: 3,
|
|
22
|
+
gap: 4,
|
|
23
|
+
children: (_jsxs(_Fragment, { children: [_jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "1" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "2" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "3" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "4" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "5" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "6" })] })),
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export const WithSpans = {
|
|
27
|
+
render: () => (_jsxs(Grid, { cols: 12, gap: 4, children: [_jsx(GridItem, { colSpan: 12, className: "bg-primary/20 p-4 rounded text-center", children: "Header (12)" }), _jsx(GridItem, { colSpan: 4, className: "bg-primary/20 p-4 rounded text-center", children: "Sidebar (4)" }), _jsx(GridItem, { colSpan: 8, className: "bg-primary/20 p-4 rounded text-center", children: "Content (8)" }), _jsx(GridItem, { colSpan: 12, className: "bg-primary/20 p-4 rounded text-center", children: "Footer (12)" })] })),
|
|
28
|
+
};
|
|
29
|
+
export const Responsive = {
|
|
30
|
+
render: () => (_jsxs(Grid, { className: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4", gap: 4, children: [_jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "1" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "2" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "3" }), _jsx("div", { className: "bg-primary/20 p-4 rounded text-center", children: "4" })] })),
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./grid";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./grid";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { type FlexProps } from "../flex
|
|
2
|
+
import { type FlexProps } from "../flex";
|
|
3
3
|
export interface GroupProps extends Omit<FlexProps, "direction"> {
|
|
4
4
|
direction?: "row" | "rowReverse";
|
|
5
5
|
}
|
|
6
|
-
declare const Group: React.ForwardRefExoticComponent<GroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
declare const Group: React.ForwardRefExoticComponent<Omit<GroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
7
7
|
export { Group };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { cn } from "../../lib/utils";
|
|
4
|
-
import { Flex } from "../flex
|
|
4
|
+
import { Flex } from "../flex";
|
|
5
5
|
const Group = React.forwardRef(({ className, direction = "row", gap = 4, align = "center", wrap = "wrap", ...props }, ref) => {
|
|
6
6
|
return (_jsx(Flex, { ref: ref, direction: direction, gap: gap, align: align, wrap: wrap, className: cn(className), ...props }));
|
|
7
7
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./group";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./group";
|
|
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* Matches logo + navigation + actions layout.
|
|
7
7
|
*/
|
|
8
8
|
import { cn } from "../../lib/utils";
|
|
9
|
-
import { Skeleton } from "../skeleton
|
|
9
|
+
import { Skeleton } from "../skeleton";
|
|
10
10
|
/**
|
|
11
11
|
* Header skeleton component
|
|
12
12
|
*
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
export interface
|
|
2
|
+
export interface HeaderNavLink {
|
|
3
3
|
label: string;
|
|
4
4
|
href: string;
|
|
5
5
|
active?: boolean;
|
|
6
|
-
children?:
|
|
6
|
+
children?: HeaderNavLink[];
|
|
7
7
|
}
|
|
8
8
|
export interface UserProfileLink {
|
|
9
9
|
label: string;
|
|
@@ -23,7 +23,7 @@ export interface UserProfile {
|
|
|
23
23
|
}
|
|
24
24
|
export interface HeaderProps extends React.HTMLAttributes<HTMLElement> {
|
|
25
25
|
logo?: React.ReactNode;
|
|
26
|
-
navLinks?:
|
|
26
|
+
navLinks?: HeaderNavLink[];
|
|
27
27
|
userMenu?: React.ReactNode;
|
|
28
28
|
userProfile?: UserProfile;
|
|
29
29
|
searchBar?: React.ReactNode;
|