@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.
Files changed (291) hide show
  1. package/dist/components/accordion/accordion-skeleton.js +1 -1
  2. package/dist/components/accordion/accordion.js +2 -1
  3. package/dist/components/action-icon/action-icon.d.ts +12 -0
  4. package/dist/components/action-icon/action-icon.js +35 -0
  5. package/dist/components/action-icon/action-icon.stories.d.ts +9 -0
  6. package/dist/components/action-icon/action-icon.stories.js +42 -0
  7. package/dist/components/action-icon/index.d.ts +1 -0
  8. package/dist/components/action-icon/index.js +1 -0
  9. package/dist/components/alert/alert-skeleton.js +4 -3
  10. package/dist/components/alert/alert.d.ts +2 -2
  11. package/dist/components/alert/alert.js +8 -6
  12. package/dist/components/alert/alert.stories.js +13 -9
  13. package/dist/components/alert/index.d.ts +1 -1
  14. package/dist/components/alert-dialog/alert-dialog.js +8 -5
  15. package/dist/components/app-shell/app-shell.d.ts +58 -0
  16. package/dist/components/app-shell/app-shell.js +111 -0
  17. package/dist/components/app-shell/app-shell.stories.d.ts +8 -0
  18. package/dist/components/app-shell/app-shell.stories.js +35 -0
  19. package/dist/components/app-shell/index.d.ts +1 -0
  20. package/dist/components/app-shell/index.js +1 -0
  21. package/dist/components/avatar/avatar.d.ts +2 -2
  22. package/dist/components/avatar/avatar.stories.js +1 -1
  23. package/dist/components/badge/badge.d.ts +1 -1
  24. package/dist/components/badge/badge.js +1 -1
  25. package/dist/components/badge/badge.stories.js +1 -1
  26. package/dist/components/banner/banner-skeleton.js +1 -1
  27. package/dist/components/banner/banner.d.ts +1 -1
  28. package/dist/components/banner/banner.stories.js +1 -1
  29. package/dist/components/box/box.d.ts +8 -0
  30. package/dist/components/box/box.js +10 -0
  31. package/dist/components/box/box.stories.d.ts +8 -0
  32. package/dist/components/box/box.stories.js +32 -0
  33. package/dist/components/box/index.d.ts +1 -0
  34. package/dist/components/box/index.js +1 -0
  35. package/dist/components/breadcrumbs/breadcrumbs-skeleton.js +1 -1
  36. package/dist/components/breadcrumbs/breadcrumbs.stories.js +1 -1
  37. package/dist/components/burger/burger.d.ts +8 -0
  38. package/dist/components/burger/burger.js +21 -0
  39. package/dist/components/burger/burger.stories.d.ts +8 -0
  40. package/dist/components/burger/burger.stories.js +31 -0
  41. package/dist/components/burger/index.d.ts +1 -0
  42. package/dist/components/burger/index.js +1 -0
  43. package/dist/components/button/button.d.ts +2 -2
  44. package/dist/components/button/button.stories.js +10 -7
  45. package/dist/components/button-group/button-group.stories.js +1 -1
  46. package/dist/components/calendar/calendar-skeleton.js +1 -1
  47. package/dist/components/calendar/calendar.d.ts +1 -1
  48. package/dist/components/calendar/calendar.js +1 -1
  49. package/dist/components/calendar/calendar.types.d.ts +3 -3
  50. package/dist/components/card/card-skeleton.js +2 -2
  51. package/dist/components/card/card.js +17 -14
  52. package/dist/components/card/index.d.ts +1 -1
  53. package/dist/components/center/center.d.ts +7 -0
  54. package/dist/components/center/center.js +10 -0
  55. package/dist/components/center/center.stories.d.ts +7 -0
  56. package/dist/components/center/center.stories.js +25 -0
  57. package/dist/components/center/index.d.ts +1 -0
  58. package/dist/components/center/index.js +1 -0
  59. package/dist/components/charts/area-chart.js +1 -1
  60. package/dist/components/charts/bar-chart.js +1 -1
  61. package/dist/components/charts/donut-chart.js +1 -1
  62. package/dist/components/charts/index.d.ts +2 -2
  63. package/dist/components/charts/index.js +2 -2
  64. package/dist/components/charts/line-chart.js +1 -1
  65. package/dist/components/charts/radial-bar-chart.js +1 -1
  66. package/dist/components/charts/theme-utils.d.ts +1 -1
  67. package/dist/components/charts/use-theme-aware-chart.d.ts +1 -1
  68. package/dist/components/charts/use-theme-aware-chart.js +2 -1
  69. package/dist/components/checkbox/checkbox.js +1 -1
  70. package/dist/components/checkbox/checkbox.stories.js +12 -8
  71. package/dist/components/close-button/close-button.d.ts +7 -0
  72. package/dist/components/close-button/close-button.js +9 -0
  73. package/dist/components/close-button/close-button.stories.d.ts +7 -0
  74. package/dist/components/close-button/close-button.stories.js +18 -0
  75. package/dist/components/close-button/index.d.ts +1 -0
  76. package/dist/components/close-button/index.js +1 -0
  77. package/dist/components/code/code.d.ts +8 -0
  78. package/dist/components/code/code.js +14 -0
  79. package/dist/components/code/code.stories.d.ts +8 -0
  80. package/dist/components/code/code.stories.js +31 -0
  81. package/dist/components/code/index.d.ts +1 -0
  82. package/dist/components/code/index.js +1 -0
  83. package/dist/components/collapse/collapse.d.ts +17 -0
  84. package/dist/components/collapse/collapse.js +34 -0
  85. package/dist/components/collapse/index.d.ts +1 -0
  86. package/dist/components/collapse/index.js +1 -0
  87. package/dist/components/color-input/color-input.d.ts +28 -0
  88. package/dist/components/color-input/color-input.js +35 -0
  89. package/dist/components/color-input/color-input.stories.d.ts +10 -0
  90. package/dist/components/color-input/color-input.stories.js +41 -0
  91. package/dist/components/color-input/index.d.ts +1 -0
  92. package/dist/components/color-input/index.js +1 -0
  93. package/dist/components/combobox/combobox-skeleton.js +1 -1
  94. package/dist/components/combobox/combobox.d.ts +1 -1
  95. package/dist/components/combobox/combobox.js +17 -8
  96. package/dist/components/combobox/combobox.stories.js +1 -1
  97. package/dist/components/command/command.d.ts +2 -2
  98. package/dist/components/command/command.stories.js +14 -19
  99. package/dist/components/container/container.d.ts +1 -1
  100. package/dist/components/container/index.d.ts +1 -1
  101. package/dist/components/container/index.js +1 -1
  102. package/dist/components/data-table/column-header-filter.js +11 -6
  103. package/dist/components/data-table/data-table-skeleton.js +5 -15
  104. package/dist/components/data-table/data-table.js +18 -15
  105. package/dist/components/data-table/data-table.stories.js +3 -5
  106. package/dist/components/date-picker/date-picker.d.ts +1 -1
  107. package/dist/components/date-picker/date-picker.js +3 -3
  108. package/dist/components/date-picker/date-picker.types.d.ts +1 -1
  109. package/dist/components/dialog/dialog-skeleton.js +1 -1
  110. package/dist/components/dialog/dialog.js +6 -4
  111. package/dist/components/dialog/dialog.stories.js +2 -2
  112. package/dist/components/dnd/dnd.d.ts +4 -5
  113. package/dist/components/dnd/dnd.js +5 -5
  114. package/dist/components/dnd/dnd.stories.js +48 -40
  115. package/dist/components/drawer/drawer.stories.js +2 -2
  116. package/dist/components/empty-state/empty-state-skeleton.js +2 -3
  117. package/dist/components/empty-state/empty-state.d.ts +1 -1
  118. package/dist/components/field/field-skeleton.js +1 -1
  119. package/dist/components/field/field.stories.js +1 -1
  120. package/dist/components/file-upload/file-upload-skeleton.js +1 -1
  121. package/dist/components/flex/flex.d.ts +7 -5
  122. package/dist/components/flex/flex.js +2 -2
  123. package/dist/components/flex/index.d.ts +1 -1
  124. package/dist/components/flex/index.js +1 -1
  125. package/dist/components/grid/grid.d.ts +24 -0
  126. package/dist/components/grid/grid.js +136 -0
  127. package/dist/components/grid/grid.stories.d.ts +8 -0
  128. package/dist/components/grid/grid.stories.js +31 -0
  129. package/dist/components/grid/index.d.ts +1 -0
  130. package/dist/components/grid/index.js +1 -0
  131. package/dist/components/group/group.d.ts +2 -2
  132. package/dist/components/group/group.js +1 -1
  133. package/dist/components/group/index.d.ts +1 -1
  134. package/dist/components/group/index.js +1 -1
  135. package/dist/components/header/header-skeleton.js +1 -1
  136. package/dist/components/header/header.d.ts +3 -3
  137. package/dist/components/header/header.js +17 -31
  138. package/dist/components/header/index.d.ts +1 -1
  139. package/dist/components/heading/heading.d.ts +4 -2
  140. package/dist/components/heading/heading.js +3 -7
  141. package/dist/components/heading/index.d.ts +1 -1
  142. package/dist/components/heading/index.js +1 -1
  143. package/dist/components/indicator/index.d.ts +1 -0
  144. package/dist/components/indicator/index.js +1 -0
  145. package/dist/components/indicator/indicator.d.ts +30 -0
  146. package/dist/components/indicator/indicator.js +89 -0
  147. package/dist/components/indicator/indicator.stories.d.ts +10 -0
  148. package/dist/components/indicator/indicator.stories.js +75 -0
  149. package/dist/components/input/input.js +1 -1
  150. package/dist/components/input/input.stories.js +1 -1
  151. package/dist/components/input-group/input-group.stories.js +1 -1
  152. package/dist/components/kbd/index.d.ts +1 -0
  153. package/dist/components/kbd/index.js +1 -0
  154. package/dist/components/kbd/kbd.d.ts +6 -0
  155. package/dist/components/kbd/kbd.js +13 -0
  156. package/dist/components/kbd/kbd.stories.d.ts +9 -0
  157. package/dist/components/kbd/kbd.stories.js +28 -0
  158. package/dist/components/label/label.stories.js +1 -1
  159. package/dist/components/list/list-skeleton.js +2 -2
  160. package/dist/components/list/list.js +1 -1
  161. package/dist/components/list/list.stories.js +1 -1
  162. package/dist/components/list/list.types.d.ts +2 -2
  163. package/dist/components/loading-overlay/index.d.ts +1 -0
  164. package/dist/components/loading-overlay/index.js +1 -0
  165. package/dist/components/loading-overlay/loading-overlay.d.ts +19 -0
  166. package/dist/components/loading-overlay/loading-overlay.js +19 -0
  167. package/dist/components/loading-overlay/loading-overlay.stories.d.ts +8 -0
  168. package/dist/components/loading-overlay/loading-overlay.stories.js +46 -0
  169. package/dist/components/metric-card/metric-card-skeleton.js +2 -2
  170. package/dist/components/metric-card/metric-card.js +1 -1
  171. package/dist/components/multi-select/multi-select-skeleton.js +1 -1
  172. package/dist/components/multi-select/multi-select.stories.js +1 -1
  173. package/dist/components/nav-link/index.d.ts +1 -0
  174. package/dist/components/nav-link/index.js +1 -0
  175. package/dist/components/nav-link/nav-link.d.ts +26 -0
  176. package/dist/components/nav-link/nav-link.js +26 -0
  177. package/dist/components/nav-link/nav-link.stories.d.ts +9 -0
  178. package/dist/components/nav-link/nav-link.stories.js +37 -0
  179. package/dist/components/navigation/navigation-skeleton.js +1 -1
  180. package/dist/components/number-input/index.d.ts +1 -0
  181. package/dist/components/number-input/index.js +1 -0
  182. package/dist/components/number-input/number-input.d.ts +40 -0
  183. package/dist/components/number-input/number-input.js +69 -0
  184. package/dist/components/number-input/number-input.stories.d.ts +11 -0
  185. package/dist/components/number-input/number-input.stories.js +54 -0
  186. package/dist/components/overlay/index.d.ts +1 -0
  187. package/dist/components/overlay/index.js +1 -0
  188. package/dist/components/overlay/overlay.d.ts +22 -0
  189. package/dist/components/overlay/overlay.js +45 -0
  190. package/dist/components/overlay/overlay.stories.d.ts +9 -0
  191. package/dist/components/overlay/overlay.stories.js +47 -0
  192. package/dist/components/page-transition/page-transition.stories.js +1 -1
  193. package/dist/components/pagination/index.d.ts +1 -1
  194. package/dist/components/pagination/index.js +1 -1
  195. package/dist/components/pagination/pagination-skeleton.js +1 -1
  196. package/dist/components/pagination/pagination.d.ts +44 -28
  197. package/dist/components/pagination/pagination.js +53 -79
  198. package/dist/components/pagination/pagination.stories.d.ts +1 -0
  199. package/dist/components/pagination/pagination.stories.js +31 -5
  200. package/dist/components/paper/index.d.ts +1 -0
  201. package/dist/components/paper/index.js +1 -0
  202. package/dist/components/paper/paper.d.ts +12 -0
  203. package/dist/components/paper/paper.js +39 -0
  204. package/dist/components/paper/paper.stories.d.ts +7 -0
  205. package/dist/components/paper/paper.stories.js +30 -0
  206. package/dist/components/password-strength-indicator/password-strength-indicator.stories.js +1 -1
  207. package/dist/components/popover/popover-skeleton.js +1 -1
  208. package/dist/components/popover/popover.stories.js +2 -2
  209. package/dist/components/progress/index.d.ts +1 -1
  210. package/dist/components/progress/progress.d.ts +1 -1
  211. package/dist/components/progress/progress.stories.js +1 -1
  212. package/dist/components/radio-group/radio-group-skeleton.js +1 -1
  213. package/dist/components/radio-group/radio-group.stories.js +1 -1
  214. package/dist/components/resizable/resizable.stories.js +8 -8
  215. package/dist/components/ring-progress/index.d.ts +1 -0
  216. package/dist/components/ring-progress/index.js +1 -0
  217. package/dist/components/ring-progress/ring-progress.d.ts +24 -0
  218. package/dist/components/ring-progress/ring-progress.js +20 -0
  219. package/dist/components/ring-progress/ring-progress.stories.d.ts +9 -0
  220. package/dist/components/ring-progress/ring-progress.stories.js +46 -0
  221. package/dist/components/scroll-area/scroll-area.stories.js +26 -26
  222. package/dist/components/segmented-control/index.d.ts +1 -0
  223. package/dist/components/segmented-control/index.js +1 -0
  224. package/dist/components/segmented-control/segmented-control.d.ts +19 -0
  225. package/dist/components/segmented-control/segmented-control.js +46 -0
  226. package/dist/components/segmented-control/segmented-control.stories.d.ts +10 -0
  227. package/dist/components/segmented-control/segmented-control.stories.js +53 -0
  228. package/dist/components/select/select.js +1 -1
  229. package/dist/components/select/select.stories.js +1 -1
  230. package/dist/components/separator/separator.stories.js +1 -1
  231. package/dist/components/session-card/session-card-skeleton.js +2 -2
  232. package/dist/components/session-card/session-card.js +1 -1
  233. package/dist/components/sidebar/sidebar-skeleton.js +2 -2
  234. package/dist/components/skeleton/index.d.ts +3 -3
  235. package/dist/components/skeleton/index.js +1 -1
  236. package/dist/components/skeleton/skeleton.types.d.ts +0 -249
  237. package/dist/components/slider/index.d.ts +1 -1
  238. package/dist/components/slider/slider.js +1 -1
  239. package/dist/components/slider/slider.stories.js +1 -1
  240. package/dist/components/social-login-button/social-login-button.js +6 -6
  241. package/dist/components/sparkline-chart/sparkline-chart.js +6 -3
  242. package/dist/components/sparkline-chart/sparkline-chart.stories.js +1 -1
  243. package/dist/components/spinner/spinner.d.ts +1 -1
  244. package/dist/components/spoiler/index.d.ts +1 -0
  245. package/dist/components/spoiler/index.js +1 -0
  246. package/dist/components/spoiler/spoiler.d.ts +14 -0
  247. package/dist/components/spoiler/spoiler.js +20 -0
  248. package/dist/components/spoiler/spoiler.stories.d.ts +8 -0
  249. package/dist/components/spoiler/spoiler.stories.js +35 -0
  250. package/dist/components/stack/index.d.ts +1 -1
  251. package/dist/components/stack/index.js +1 -1
  252. package/dist/components/stack/stack.d.ts +2 -2
  253. package/dist/components/stack/stack.js +1 -1
  254. package/dist/components/steps/steps-skeleton.js +1 -1
  255. package/dist/components/steps/steps.js +7 -5
  256. package/dist/components/steps/steps.stories.js +6 -2
  257. package/dist/components/switch/index.d.ts +1 -1
  258. package/dist/components/switch/switch.js +1 -1
  259. package/dist/components/switch/switch.stories.js +1 -1
  260. package/dist/components/table/table-skeleton.js +2 -2
  261. package/dist/components/table/table.js +4 -3
  262. package/dist/components/table/table.stories.js +10 -7
  263. package/dist/components/tabs/tabs-skeleton.js +1 -1
  264. package/dist/components/tabs/tabs.d.ts +3 -3
  265. package/dist/components/tabs/tabs.js +1 -1
  266. package/dist/components/tabs/tabs.stories.js +5 -5
  267. package/dist/components/text/index.d.ts +1 -1
  268. package/dist/components/text/index.js +1 -1
  269. package/dist/components/text/text.d.ts +7 -5
  270. package/dist/components/text/text.js +2 -2
  271. package/dist/components/text/text.stories.js +34 -3
  272. package/dist/components/textarea/textarea.js +1 -1
  273. package/dist/components/textarea/textarea.stories.js +1 -1
  274. package/dist/components/timeline/index.d.ts +1 -0
  275. package/dist/components/timeline/index.js +1 -0
  276. package/dist/components/timeline/timeline.d.ts +35 -0
  277. package/dist/components/timeline/timeline.js +36 -0
  278. package/dist/components/timeline/timeline.stories.d.ts +7 -0
  279. package/dist/components/timeline/timeline.stories.js +21 -0
  280. package/dist/components/toast/toast.js +6 -6
  281. package/dist/components/toggle/toggle.stories.js +1 -1
  282. package/dist/components/tooltip/tooltip.stories.js +1 -1
  283. package/dist/components/user-menu-dropdown/user-menu-dropdown.js +1 -1
  284. package/dist/config/tailwind-base.d.ts +10 -0
  285. package/dist/config/tailwind-base.js +1 -0
  286. package/dist/index.d.ts +25 -0
  287. package/dist/index.js +25 -10
  288. package/dist/lib/animations.js +94 -94
  289. package/dist/primitives/command/Command.js +2 -1
  290. package/dist/styles/globals.css +415 -82
  291. 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 { GripVertical, Move3D, Trash2, Copy, Edit, } from "lucide-react";
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 { DragDropContext, SortableContext, SortableItem, DragOverlayComponent, sortingStrategies, modifiers, collisionDetectionAlgorithms, useDragDropSensors, } from "./dnd";
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
- { id: "progress-1", content: "Build component library", priority: "high" },
136
- { id: "progress-2", content: "Create API endpoints", priority: "medium" },
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/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: () => (_jsx(Skeleton, { className: "h-10 w-32 rounded-md" })),
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/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?: "default" | "destructive" | null | undefined;
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/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/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/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" | "stretch" | "start" | "baseline" | null | undefined;
7
- justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
8
- gap?: 0 | 1 | 2 | 3 | 4 | 16 | 5 | 6 | 10 | 12 | 8 | null | undefined;
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<HTMLDivElement>, VariantProps<typeof flexVariants> {
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<HTMLDivElement>>;
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 : "div";
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 './flex';
1
+ export * from "./flex";
@@ -1 +1 @@
1
- export * from './flex';
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/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/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 './group';
1
+ export * from "./group";
@@ -1 +1 @@
1
- export * from './group';
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/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 NavLink {
2
+ export interface HeaderNavLink {
3
3
  label: string;
4
4
  href: string;
5
5
  active?: boolean;
6
- children?: NavLink[];
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?: NavLink[];
26
+ navLinks?: HeaderNavLink[];
27
27
  userMenu?: React.ReactNode;
28
28
  userProfile?: UserProfile;
29
29
  searchBar?: React.ReactNode;