tembro 6.0.3 → 6.1.1

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 (253) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/components/actions/action-menu.d.ts +11 -1
  3. package/dist/components/calendar/calendar-range-scheduler.cjs +1 -0
  4. package/dist/components/calendar/calendar-range-scheduler.d.ts +20 -0
  5. package/dist/components/calendar/calendar-range-scheduler.js +1 -0
  6. package/dist/components/calendar/date-time-picker.cjs +1 -0
  7. package/dist/components/calendar/date-time-picker.d.ts +15 -0
  8. package/dist/components/calendar/date-time-picker.js +1 -0
  9. package/dist/components/calendar/index.d.ts +2 -0
  10. package/dist/components/charts/chart-card.cjs +1 -0
  11. package/dist/components/charts/chart-card.d.ts +24 -0
  12. package/dist/components/charts/chart-card.js +1 -0
  13. package/dist/components/charts/index.d.ts +1 -0
  14. package/dist/components/command/advanced-command-menu.cjs +1 -0
  15. package/dist/components/command/advanced-command-menu.d.ts +25 -0
  16. package/dist/components/command/advanced-command-menu.js +1 -0
  17. package/dist/components/command/index.d.ts +1 -0
  18. package/dist/components/data-table/data-grid.cjs +1 -0
  19. package/dist/components/data-table/data-grid.d.ts +15 -0
  20. package/dist/components/data-table/data-grid.js +1 -0
  21. package/dist/components/data-table/index.d.ts +1 -0
  22. package/dist/components/data-table/public.d.ts +1 -0
  23. package/dist/components/display/index.d.ts +0 -2
  24. package/dist/components/feedback/async-boundary.cjs +1 -0
  25. package/dist/components/feedback/async-boundary.d.ts +12 -0
  26. package/dist/components/feedback/async-boundary.js +1 -0
  27. package/dist/components/feedback/index.d.ts +1 -0
  28. package/dist/components/filters/index.d.ts +0 -1
  29. package/dist/components/inputs/index.d.ts +1 -0
  30. package/dist/components/inputs/multi-select.cjs +1 -0
  31. package/dist/components/inputs/multi-select.d.ts +16 -0
  32. package/dist/components/inputs/multi-select.js +1 -0
  33. package/dist/components/inputs/public.d.ts +1 -0
  34. package/dist/components/inputs/time-picker.d.ts +11 -3
  35. package/dist/components/modern/file-manager.cjs +1 -0
  36. package/dist/components/modern/file-manager.d.ts +20 -0
  37. package/dist/components/modern/file-manager.js +1 -0
  38. package/dist/components/modern/index.d.ts +4 -1
  39. package/dist/components/modern/map.cjs +1 -0
  40. package/dist/components/modern/map.d.ts +29 -0
  41. package/dist/components/modern/map.js +1 -0
  42. package/dist/components/modern/media-player.cjs +1 -0
  43. package/dist/components/modern/media-player.d.ts +21 -0
  44. package/dist/components/modern/media-player.js +1 -0
  45. package/dist/components/modern/spreadsheet.cjs +1 -0
  46. package/dist/components/modern/spreadsheet.d.ts +35 -0
  47. package/dist/components/modern/spreadsheet.js +1 -0
  48. package/dist/components/notifications/action-toast.cjs +1 -0
  49. package/dist/components/notifications/action-toast.d.ts +16 -0
  50. package/dist/components/notifications/action-toast.js +1 -0
  51. package/dist/components/notifications/index.d.ts +1 -0
  52. package/dist/components/overlay/drawer.d.ts +3 -1
  53. package/dist/components/patterns/index.d.ts +1 -0
  54. package/dist/components/patterns/permissions-matrix.cjs +1 -0
  55. package/dist/components/patterns/permissions-matrix.d.ts +19 -0
  56. package/dist/components/patterns/permissions-matrix.js +1 -0
  57. package/dist/components/patterns/public.d.ts +1 -0
  58. package/dist/index.d.ts +0 -2
  59. package/dist/src/components/actions/action-menu.cjs +1 -1
  60. package/dist/src/components/actions/action-menu.js +47 -39
  61. package/dist/src/components/actions/copy-button.cjs +1 -1
  62. package/dist/src/components/actions/copy-button.js +4 -1
  63. package/dist/src/components/calendar/calendar-range-scheduler.cjs +1 -0
  64. package/dist/src/components/calendar/calendar-range-scheduler.js +75 -0
  65. package/dist/src/components/calendar/date-picker.cjs +1 -1
  66. package/dist/src/components/calendar/date-picker.js +5 -8
  67. package/dist/src/components/calendar/date-range-picker.cjs +1 -1
  68. package/dist/src/components/calendar/date-range-picker.js +12 -27
  69. package/dist/src/components/calendar/date-time-picker.cjs +1 -0
  70. package/dist/src/components/calendar/date-time-picker.js +36 -0
  71. package/dist/src/components/calendar/index.cjs +1 -1
  72. package/dist/src/components/calendar/index.js +5 -3
  73. package/dist/src/components/charts/chart-card.cjs +1 -0
  74. package/dist/src/components/charts/chart-card.js +55 -0
  75. package/dist/src/components/charts/index.cjs +1 -1
  76. package/dist/src/components/charts/index.js +3 -2
  77. package/dist/src/components/command/advanced-command-menu.cjs +1 -0
  78. package/dist/src/components/command/advanced-command-menu.js +57 -0
  79. package/dist/src/components/command/index.cjs +1 -1
  80. package/dist/src/components/command/index.js +3 -2
  81. package/dist/src/components/data-table/data-grid.cjs +1 -0
  82. package/dist/src/components/data-table/data-grid.js +32 -0
  83. package/dist/src/components/data-table/data-table-saved-filters.cjs +1 -1
  84. package/dist/src/components/data-table/data-table-saved-filters.js +11 -11
  85. package/dist/src/components/data-table/data-table.cjs +1 -1
  86. package/dist/src/components/data-table/data-table.js +175 -174
  87. package/dist/src/components/data-table/index.cjs +1 -1
  88. package/dist/src/components/data-table/index.js +15 -14
  89. package/dist/src/components/data-table/public.cjs +1 -1
  90. package/dist/src/components/data-table/public.js +3 -2
  91. package/dist/src/components/display/index.cjs +1 -1
  92. package/dist/src/components/display/index.js +9 -11
  93. package/dist/src/components/feedback/async-boundary.cjs +1 -0
  94. package/dist/src/components/feedback/async-boundary.js +22 -0
  95. package/dist/src/components/feedback/index.cjs +1 -1
  96. package/dist/src/components/feedback/index.js +2 -1
  97. package/dist/src/components/filters/index.cjs +1 -1
  98. package/dist/src/components/filters/index.js +2 -3
  99. package/dist/src/components/inputs/color-picker.cjs +1 -1
  100. package/dist/src/components/inputs/color-picker.js +63 -46
  101. package/dist/src/components/inputs/index.cjs +1 -1
  102. package/dist/src/components/inputs/index.js +13 -12
  103. package/dist/src/components/inputs/multi-select.cjs +1 -0
  104. package/dist/src/components/inputs/multi-select.js +80 -0
  105. package/dist/src/components/inputs/public.cjs +1 -1
  106. package/dist/src/components/inputs/public.js +13 -12
  107. package/dist/src/components/inputs/slider.cjs +1 -1
  108. package/dist/src/components/inputs/slider.js +3 -3
  109. package/dist/src/components/inputs/tag-input.cjs +1 -1
  110. package/dist/src/components/inputs/tag-input.js +7 -4
  111. package/dist/src/components/inputs/time-picker.cjs +1 -1
  112. package/dist/src/components/inputs/time-picker.js +90 -34
  113. package/dist/src/components/modern/file-manager.cjs +1 -0
  114. package/dist/src/components/modern/file-manager.js +75 -0
  115. package/dist/src/components/modern/index.cjs +1 -1
  116. package/dist/src/components/modern/index.js +7 -4
  117. package/dist/src/components/modern/map.cjs +1 -0
  118. package/dist/src/components/modern/map.js +158 -0
  119. package/dist/src/components/modern/media-player.cjs +1 -0
  120. package/dist/src/components/modern/media-player.js +176 -0
  121. package/dist/src/components/modern/resizable-panel.cjs +1 -1
  122. package/dist/src/components/modern/resizable-panel.js +39 -32
  123. package/dist/src/components/modern/spreadsheet.cjs +1 -0
  124. package/dist/src/components/modern/spreadsheet.js +97 -0
  125. package/dist/src/components/navigation/pagination.cjs +1 -1
  126. package/dist/src/components/navigation/pagination.js +5 -5
  127. package/dist/src/components/notifications/action-toast.cjs +1 -0
  128. package/dist/src/components/notifications/action-toast.js +49 -0
  129. package/dist/src/components/notifications/index.cjs +1 -1
  130. package/dist/src/components/notifications/index.js +3 -2
  131. package/dist/src/components/notifications/toast.cjs +1 -1
  132. package/dist/src/components/notifications/toast.js +68 -63
  133. package/dist/src/components/overlay/alert-dialog.cjs +1 -1
  134. package/dist/src/components/overlay/alert-dialog.js +8 -6
  135. package/dist/src/components/overlay/drawer.cjs +1 -1
  136. package/dist/src/components/overlay/drawer.js +38 -20
  137. package/dist/src/components/patterns/index.cjs +1 -1
  138. package/dist/src/components/patterns/index.js +2 -1
  139. package/dist/src/components/patterns/permissions-matrix.cjs +1 -0
  140. package/dist/src/components/patterns/permissions-matrix.js +43 -0
  141. package/dist/src/components/patterns/public.cjs +1 -1
  142. package/dist/src/components/patterns/public.js +2 -1
  143. package/dist/src/components/ui/checkbox/index.cjs +1 -1
  144. package/dist/src/components/ui/checkbox/index.js +2 -1
  145. package/dist/src/components/ui/dialog/index.cjs +1 -1
  146. package/dist/src/components/ui/dialog/index.js +8 -8
  147. package/dist/src/components/ui/dropdown-menu/index.cjs +1 -1
  148. package/dist/src/components/ui/dropdown-menu/index.js +21 -19
  149. package/dist/src/components/ui/input/group.cjs +1 -1
  150. package/dist/src/components/ui/input/group.js +8 -8
  151. package/dist/src/components/ui/popover/index.cjs +1 -1
  152. package/dist/src/components/ui/popover/index.js +10 -10
  153. package/dist/src/components/ui/tabs/index.cjs +1 -1
  154. package/dist/src/components/ui/tabs/index.js +6 -6
  155. package/dist/src/components/ui/toggle-group/index.cjs +1 -1
  156. package/dist/src/components/ui/toggle-group/index.js +2 -2
  157. package/dist/src/index.cjs +1 -1
  158. package/dist/src/index.js +111 -104
  159. package/dist/src/public-component-surface.cjs +1 -1
  160. package/dist/src/public-component-surface.js +59 -14
  161. package/package.json +1 -2
  162. package/packages/cli/dist/index.cjs +45 -165
  163. package/packages/cli/vendor/src/components/actions/action-menu.tsx +47 -19
  164. package/packages/cli/vendor/src/components/actions/copy-button.tsx +2 -2
  165. package/packages/cli/vendor/src/components/calendar/calendar-range-scheduler.tsx +72 -0
  166. package/packages/cli/vendor/src/components/calendar/date-picker.tsx +2 -5
  167. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +5 -12
  168. package/packages/cli/vendor/src/components/calendar/date-time-picker.tsx +53 -0
  169. package/packages/cli/vendor/src/components/calendar/index.ts +5 -3
  170. package/packages/cli/vendor/src/components/charts/chart-card.tsx +81 -0
  171. package/packages/cli/vendor/src/components/charts/index.ts +1 -0
  172. package/packages/cli/vendor/src/components/command/advanced-command-menu.tsx +88 -0
  173. package/packages/cli/vendor/src/components/command/index.ts +2 -1
  174. package/packages/cli/vendor/src/components/data-table/data-grid.tsx +59 -0
  175. package/packages/cli/vendor/src/components/data-table/data-table.tsx +45 -34
  176. package/packages/cli/vendor/src/components/data-table/index.ts +3 -2
  177. package/packages/cli/vendor/src/components/data-table/public.ts +1 -0
  178. package/packages/cli/vendor/src/components/display/index.ts +3 -5
  179. package/packages/cli/vendor/src/components/feedback/async-boundary.tsx +36 -0
  180. package/packages/cli/vendor/src/components/feedback/index.ts +1 -0
  181. package/packages/cli/vendor/src/components/filters/index.ts +0 -1
  182. package/packages/cli/vendor/src/components/inputs/color-picker.tsx +15 -1
  183. package/packages/cli/vendor/src/components/inputs/index.ts +1 -0
  184. package/packages/cli/vendor/src/components/inputs/multi-select.tsx +75 -0
  185. package/packages/cli/vendor/src/components/inputs/public.ts +1 -0
  186. package/packages/cli/vendor/src/components/inputs/slider.tsx +3 -3
  187. package/packages/cli/vendor/src/components/inputs/tag-input.tsx +4 -4
  188. package/packages/cli/vendor/src/components/inputs/time-picker.tsx +91 -38
  189. package/packages/cli/vendor/src/components/modern/file-manager.tsx +79 -0
  190. package/packages/cli/vendor/src/components/modern/index.ts +4 -1
  191. package/packages/cli/vendor/src/components/modern/map.tsx +146 -0
  192. package/packages/cli/vendor/src/components/modern/media-player.tsx +182 -0
  193. package/packages/cli/vendor/src/components/modern/resizable-panel.tsx +15 -5
  194. package/packages/cli/vendor/src/components/modern/spreadsheet.tsx +155 -0
  195. package/packages/cli/vendor/src/components/navigation/pagination.tsx +9 -5
  196. package/packages/cli/vendor/src/components/notifications/action-toast.tsx +78 -0
  197. package/packages/cli/vendor/src/components/notifications/index.ts +2 -1
  198. package/packages/cli/vendor/src/components/notifications/toast.tsx +20 -10
  199. package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +3 -5
  200. package/packages/cli/vendor/src/components/overlay/drawer.tsx +22 -11
  201. package/packages/cli/vendor/src/components/patterns/index.ts +1 -0
  202. package/packages/cli/vendor/src/components/patterns/permissions-matrix.tsx +71 -0
  203. package/packages/cli/vendor/src/components/patterns/public.ts +1 -0
  204. package/packages/cli/vendor/src/components/ui/checkbox/index.tsx +3 -1
  205. package/packages/cli/vendor/src/components/ui/dialog/index.tsx +4 -4
  206. package/packages/cli/vendor/src/components/ui/dropdown-menu/index.tsx +18 -22
  207. package/packages/cli/vendor/src/components/ui/popover/index.tsx +4 -4
  208. package/packages/cli/vendor/src/components/ui/tabs/index.tsx +8 -3
  209. package/packages/cli/vendor/src/components/ui/toggle-group/index.tsx +6 -6
  210. package/packages/cli/vendor/src/index.ts +0 -2
  211. package/packages/cli/vendor/src/public-component-surface.ts +13 -4
  212. package/packages/cli/vendor/templates/showcase/src/showcase/data/registry.ts +6 -6
  213. package/packages/cli/vendor/templates/showcase/src/showcase/layout/HeroSection.tsx +23 -8
  214. package/packages/cli/vendor/templates/showcase/src/showcase/layout/WorkbenchSidebar.tsx +1 -1
  215. package/packages/cli/vendor/templates/showcase/src/showcase/sections/PatternsSection.tsx +1 -1
  216. package/packages/cli/vendor/templates/styles/globals.css +0 -120
  217. package/registry.json +3197 -2794
  218. package/dist/components/display/info-card.cjs +0 -1
  219. package/dist/components/display/info-card.d.ts +0 -51
  220. package/dist/components/display/info-card.js +0 -1
  221. package/dist/components/display/statistic.cjs +0 -1
  222. package/dist/components/display/statistic.d.ts +0 -25
  223. package/dist/components/display/statistic.js +0 -1
  224. package/dist/components/filters/filter-bar.cjs +0 -1
  225. package/dist/components/filters/filter-bar.d.ts +0 -28
  226. package/dist/components/filters/filter-bar.js +0 -1
  227. package/dist/components/modern/image-cropper.cjs +0 -1
  228. package/dist/components/modern/image-cropper.d.ts +0 -39
  229. package/dist/components/modern/image-cropper.js +0 -1
  230. package/dist/components/ui/number-field/index.cjs +0 -1
  231. package/dist/components/ui/number-field/index.d.ts +0 -18
  232. package/dist/components/ui/number-field/index.js +0 -1
  233. package/dist/components/ui/toolbar/index.cjs +0 -1
  234. package/dist/components/ui/toolbar/index.d.ts +0 -14
  235. package/dist/components/ui/toolbar/index.js +0 -1
  236. package/dist/src/components/display/info-card.cjs +0 -1
  237. package/dist/src/components/display/info-card.js +0 -124
  238. package/dist/src/components/display/statistic.cjs +0 -1
  239. package/dist/src/components/display/statistic.js +0 -104
  240. package/dist/src/components/filters/filter-bar.cjs +0 -1
  241. package/dist/src/components/filters/filter-bar.js +0 -103
  242. package/dist/src/components/modern/image-cropper.cjs +0 -1
  243. package/dist/src/components/modern/image-cropper.js +0 -143
  244. package/dist/src/components/ui/number-field/index.cjs +0 -1
  245. package/dist/src/components/ui/number-field/index.js +0 -73
  246. package/dist/src/components/ui/toolbar/index.cjs +0 -1
  247. package/dist/src/components/ui/toolbar/index.js +0 -50
  248. package/packages/cli/vendor/src/components/display/info-card.tsx +0 -195
  249. package/packages/cli/vendor/src/components/display/statistic.tsx +0 -114
  250. package/packages/cli/vendor/src/components/filters/filter-bar.tsx +0 -163
  251. package/packages/cli/vendor/src/components/modern/image-cropper.tsx +0 -226
  252. package/packages/cli/vendor/src/components/ui/number-field/index.tsx +0 -89
  253. package/packages/cli/vendor/src/components/ui/toolbar/index.tsx +0 -67
@@ -6,73 +6,81 @@ import * as d from "react";
6
6
  import { Loader2Icon as f, MoreHorizontalIcon as p } from "lucide-react";
7
7
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
8
8
  //#region src/components/actions/action-menu.tsx
9
- function _({ actions: _, label: v, trigger: y, align: b = "end", side: x = "bottom", sideOffset: S = 4, disabled: C = !1, triggerVariant: w = "ghost", triggerSize: T = "icon-sm", showChevron: E = !1, closeOnSelect: D = !0, contentClassName: O, triggerClassName: k, itemClassName: A, emptyLabel: j = "No actions", menuWidth: M, loadingLabel: N = "Working...", persistIconSpace: P = !0 }) {
10
- let F = _.filter((e) => !e.hidden), [I, L] = d.useState(null), [R, z] = d.useState(!1), B = d.useRef(null), V = async (e) => {
11
- if (!(e.disabled || e.loading || I)) try {
12
- L(e.key), await e.onSelect?.(), D && !e.keepOpen && z(!1);
9
+ function _({ actions: _, open: v, defaultOpen: y = !1, onOpenChange: b, label: x, triggerLabel: S = "Open actions", trigger: C, align: w = "end", side: T = "bottom", sideOffset: E = 4, disabled: D = !1, triggerVariant: O = "ghost", triggerSize: k = "icon-sm", showChevron: A = !1, closeOnSelect: j = !0, contentClassName: M, triggerClassName: N, itemClassName: P, emptyLabel: F = "No actions", menuWidth: I, loadingLabel: L = "Working...", persistIconSpace: R = !0, itemRoleDescription: z, renderItem: B, onActionError: V }) {
10
+ let H = _.filter((e) => !e.hidden), [U, W] = d.useState(null), [G, K] = d.useState(y), q = v ?? G, J = d.useRef(null), Y = d.useCallback((e) => {
11
+ v === void 0 && K(e), b?.(e);
12
+ }, [b, v]), X = async (e) => {
13
+ if (!(e.disabled || e.loading || U)) try {
14
+ W(e.key), await e.onSelect?.(), j && !e.keepOpen && Y(!1);
15
+ } catch (t) {
16
+ if (V?.(t, e), !V) throw t;
13
17
  } finally {
14
- L(null);
18
+ W(null);
15
19
  }
16
- }, H = (e) => {
17
- B.current !== e.key && (B.current = e.key, queueMicrotask(() => {
18
- B.current === e.key && (B.current = null);
19
- }), V(e));
20
+ }, Z = (e) => {
21
+ J.current !== e.key && (J.current = e.key, queueMicrotask(() => {
22
+ J.current === e.key && (J.current = null);
23
+ }), X(e));
20
24
  };
21
25
  return /* @__PURE__ */ g(r, {
22
- open: R,
23
- onOpenChange: z,
26
+ open: q,
27
+ onOpenChange: Y,
24
28
  children: [/* @__PURE__ */ g(u, {
25
- render: y ?? /* @__PURE__ */ h(n, {
29
+ render: C ?? /* @__PURE__ */ h(n, {
26
30
  type: "button",
27
- variant: w,
28
- size: T,
29
- disabled: C,
30
- className: e("rounded-full border border-transparent text-muted-foreground shadow-none transition-[background-color,border-color,color,box-shadow] hover:border-border/70 hover:bg-accent hover:text-foreground focus-visible:border-[color:var(--aui-focus-ring,var(--ring))] focus-visible:shadow-[0_0_0_3px_var(--aui-focus-ring-soft,transparent)]", k),
31
+ variant: O,
32
+ size: k,
33
+ disabled: D,
34
+ className: e("rounded-full border border-transparent text-muted-foreground shadow-none transition-[background-color,border-color,color,box-shadow] hover:border-border/70 hover:bg-accent hover:text-foreground focus-visible:border-[color:var(--aui-focus-ring,var(--ring))] focus-visible:shadow-[0_0_0_3px_var(--aui-focus-ring-soft,transparent)]", N),
31
35
  onMouseDown: t,
32
36
  onDoubleClick: t
33
37
  }),
34
38
  children: [
35
- !y && /* @__PURE__ */ h(p, {}),
36
- !y && E && /* @__PURE__ */ h("span", {
39
+ !C && /* @__PURE__ */ h(p, {}),
40
+ !C && A && /* @__PURE__ */ h("span", {
37
41
  className: "text-[10px] font-medium uppercase tracking-[0.18em]",
38
42
  children: "Menu"
39
43
  }),
40
44
  /* @__PURE__ */ h("span", {
41
45
  className: "sr-only",
42
- children: "Open actions"
46
+ children: S
43
47
  })
44
48
  ]
45
49
  }), /* @__PURE__ */ g(i, {
46
- align: b,
47
- side: x,
48
- sideOffset: S,
49
- className: e("min-w-48 rounded-[var(--aui-card-radius,var(--radius-lg))]", O),
50
- style: M ? { width: typeof M == "number" ? `${M}px` : M } : void 0,
50
+ align: w,
51
+ side: T,
52
+ sideOffset: E,
53
+ className: e("min-w-48 rounded-[var(--aui-card-radius,var(--radius-lg))]", M),
54
+ style: I ? { width: typeof I == "number" ? `${I}px` : I } : void 0,
51
55
  children: [
52
- v && /* @__PURE__ */ h(s, { children: v }),
53
- v && F.length > 0 && /* @__PURE__ */ h(c, {}),
54
- F.length === 0 && /* @__PURE__ */ h(a, {
56
+ x && /* @__PURE__ */ h(s, { children: x }),
57
+ x && H.length > 0 && /* @__PURE__ */ h(c, {}),
58
+ H.length === 0 && /* @__PURE__ */ h(a, {
55
59
  disabled: !0,
56
- children: j
60
+ children: F
57
61
  }),
58
- F.map((n, r) => {
59
- let i = n.loading || I === n.key, u = r > 0 ? F[r - 1]?.section : void 0, p = !!(n.section && n.section !== u);
60
- return /* @__PURE__ */ g(d.Fragment, { children: [p ? /* @__PURE__ */ g(m, { children: [r > 0 ? /* @__PURE__ */ h(c, {}) : null, /* @__PURE__ */ h(s, { children: n.section })] }) : null, /* @__PURE__ */ g(a, {
62
+ H.map((n, r) => {
63
+ let i = n.loading || U === n.key, u = r > 0 ? H[r - 1]?.section : void 0, p = !!(n.section && n.section !== u);
64
+ return /* @__PURE__ */ g(d.Fragment, { children: [p ? /* @__PURE__ */ g(m, { children: [r > 0 ? /* @__PURE__ */ h(c, {}) : null, /* @__PURE__ */ h(s, { children: n.section })] }) : null, /* @__PURE__ */ h(a, {
61
65
  disabled: n.disabled || i,
62
66
  variant: n.destructive ? "destructive" : "default",
63
- closeOnSelect: D && !n.keepOpen,
64
- className: e("min-h-11 items-start gap-3 rounded-[calc(var(--radius-md)+1px)] border border-transparent py-2.5 transition-[background-color,color,border-color,box-shadow] data-[highlighted]:shadow-[inset_0_0_0_1px_color-mix(in_oklch,var(--primary),transparent_76%)] data-[disabled]:opacity-45", A),
67
+ closeOnSelect: j && !n.keepOpen,
68
+ "aria-roledescription": z,
69
+ className: e("min-h-11 items-start gap-3 rounded-[calc(var(--radius-md)+1px)] border border-transparent py-2.5 transition-[background-color,color,border-color,box-shadow] data-[highlighted]:shadow-[inset_0_0_0_1px_color-mix(in_oklch,var(--primary),transparent_76%)] data-[disabled]:opacity-45", P),
65
70
  onSelect: (e) => {
66
- (n.keepOpen || !D) && e.preventDefault(), t(e), H(n);
71
+ (n.keepOpen || !j) && e.preventDefault(), t(e), Z(n);
67
72
  },
68
73
  onClick: (e) => {
69
- t(e), H(n);
74
+ t(e), Z(n);
70
75
  },
71
76
  onMouseDown: t,
72
77
  onDoubleClick: t,
73
- children: [
78
+ children: B?.(n, {
79
+ loading: i,
80
+ close: () => Y(!1)
81
+ }) ?? /* @__PURE__ */ g(m, { children: [
74
82
  /* @__PURE__ */ h("span", {
75
- className: e("mt-0.5 flex size-5 shrink-0 items-center justify-center text-muted-foreground", !P && !i && !n.icon && "hidden"),
83
+ className: e("mt-0.5 flex size-5 shrink-0 items-center justify-center text-muted-foreground", !R && !i && !n.icon && "hidden"),
76
84
  children: i ? /* @__PURE__ */ h(f, { className: "size-4 animate-spin" }) : n.icon
77
85
  }),
78
86
  /* @__PURE__ */ g("span", {
@@ -82,11 +90,11 @@ function _({ actions: _, label: v, trigger: y, align: b = "end", side: x = "bott
82
90
  children: n.label
83
91
  }), n.description ? /* @__PURE__ */ h(o, {
84
92
  className: "mt-0.5 truncate",
85
- children: i ? N : n.description
93
+ children: i ? L : n.description
86
94
  }) : null]
87
95
  }),
88
96
  n.shortcut && /* @__PURE__ */ h(l, { children: n.shortcut })
89
- ]
97
+ ] })
90
98
  })] }, n.key);
91
99
  })
92
100
  ]
@@ -1 +1 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");async function o(e){if(typeof navigator<`u`&&navigator.clipboard?.writeText){await navigator.clipboard.writeText(e);return}if(typeof document>`u`)throw Error(`Clipboard is not available`);let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();try{document.execCommand(`copy`)}finally{document.body.removeChild(t)}}function s({value:e,copiedLabel:s=`Copied`,copyLabel:c=`Copy`,copiedTimeout:l=1600,onCopied:u,onCopyError:d,showIcon:f=!0,copiedVariant:p,variant:m,disabled:h,children:g,type:_=`button`,...v}){let[y,b]=r.useState(!1),x=r.useRef(void 0);r.useEffect(()=>()=>{x.current&&window.clearTimeout(x.current)},[]);let S=r.useCallback(async()=>{try{await o(e),b(!0),u?.(e),x.current&&window.clearTimeout(x.current),x.current=window.setTimeout(()=>b(!1),l)}catch(e){d?.(e)}},[l,u,d,e]);return(0,a.jsxs)(n.Button,{"data-slot":`copy-button`,"data-copied":y||void 0,type:_,variant:y?p??`secondary`:m,disabled:h||!e,onClick:e=>{t.stopInteractivePropagation(e),S()},onMouseDown:t.stopInteractivePropagation,onDoubleClick:t.stopInteractivePropagation,"aria-live":`polite`,...v,children:[f&&(y?(0,a.jsx)(i.CheckIcon,{"data-icon":`inline-start`}):(0,a.jsx)(i.CopyIcon,{"data-icon":`inline-start`})),g??(y?s:c)]})}exports.CopyButton=s;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs");let r=require("react");r=e.__toESM(r,1);let i=require("lucide-react"),a=require("react/jsx-runtime");async function o(e){if(typeof navigator<`u`&&navigator.clipboard?.writeText){await navigator.clipboard.writeText(e);return}if(typeof document>`u`)throw Error(`Clipboard is not available`);let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();try{document.execCommand(`copy`)}finally{document.body.removeChild(t)}}function s({value:e,copiedLabel:s=`Copied`,copyLabel:c=`Copy`,copiedTimeout:l=1600,onCopied:u,onCopyError:d,showIcon:f=!0,copiedVariant:p,variant:m,disabled:h,children:g,type:_=`button`,...v}){let[y,b]=r.useState(!1),x=r.useRef(void 0);r.useEffect(()=>()=>{x.current&&window.clearTimeout(x.current)},[]);let S=r.useCallback(async()=>{try{await o(e),b(!0),u?.(e),x.current&&window.clearTimeout(x.current),x.current=window.setTimeout(()=>b(!1),l)}catch(e){d?.(e)}},[l,u,d,e]);return(0,a.jsxs)(n.Button,{"data-slot":`copy-button`,"data-copied":y||void 0,type:_,variant:y?p??`secondary`:m,disabled:h||!e,onClick:e=>{t.stopInteractivePropagation(e),S()},onMouseDown:t.stopInteractivePropagation,onDoubleClick:t.stopInteractivePropagation,"aria-live":`polite`,...v,children:[f&&(y?(0,a.jsx)(i.CheckIcon,{"data-icon":`inline-start`,className:`size-3.5`}):(0,a.jsx)(i.CopyIcon,{"data-icon":`inline-start`,className:`size-3.5`})),g??(y?s:c)]})}exports.CopyButton=s;
@@ -49,7 +49,10 @@ function c({ value: c, copiedLabel: l = "Copied", copyLabel: u = "Copy", copiedT
49
49
  onDoubleClick: e,
50
50
  "aria-live": "polite",
51
51
  ...b,
52
- children: [m && a(x ? r : i, { "data-icon": "inline-start" }), v ?? (x ? l : u)]
52
+ children: [m && a(x ? r : i, {
53
+ "data-icon": "inline-start",
54
+ className: "size-3.5"
55
+ }), v ?? (x ? l : u)]
53
56
  });
54
57
  }
55
58
  //#endregion
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("../ui/badge/index.cjs"),i=require("./date-range-picker.cjs"),a=require("../ui/card/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("react/jsx-runtime");function l({value:e,onValueChange:o,events:l=[],onEventSelect:u,title:d=`Schedule range`,action:f,className:p,...m}){return(0,c.jsxs)(a.Card,{"data-slot":`calendar-range-scheduler`,className:t.cn(`min-w-0`,p),...m,children:[(0,c.jsxs)(a.CardHeader,{className:`flex-row items-center justify-between gap-3`,children:[(0,c.jsxs)(a.CardTitle,{className:`flex items-center gap-2`,children:[(0,c.jsx)(s.CalendarDaysIcon,{className:`size-4`}),d]}),f]}),(0,c.jsxs)(a.CardContent,{className:`grid gap-4 lg:grid-cols-[320px_minmax(0,1fr)]`,children:[(0,c.jsx)(i.DateRangePicker,{value:e,onValueChange:o}),(0,c.jsxs)(`div`,{className:`grid content-start gap-2`,children:[l.length?l.map(e=>(0,c.jsxs)(`button`,{type:`button`,className:`grid gap-1 rounded-lg border bg-background p-3 text-left transition hover:border-primary/45 hover:bg-muted/40`,onClick:()=>u?.(e),children:[(0,c.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,c.jsx)(`span`,{className:`font-medium`,children:e.title}),(0,c.jsx)(r.Badge,{label:e.tone??`scheduled`,status:e.tone===`danger`?`danger`:e.tone===`warning`?`warning`:e.tone===`success`?`success`:`info`,variant:`soft`})]}),(0,c.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.range.from||`Start`,` - `,e.range.to||`End`]}),e.meta?(0,c.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.meta}):null]},e.id)):(0,c.jsx)(`div`,{className:`rounded-lg border border-dashed p-6 text-sm text-muted-foreground`,children:`No scheduled ranges.`}),(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,onClick:()=>o?.({from:``,to:``}),children:`Clear range`})]})]})]})}exports.CalendarRangeScheduler=l;
@@ -0,0 +1,75 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { Button as t } from "../ui/button/index.js";
4
+ import { Badge as n } from "../ui/badge/index.js";
5
+ import { DateRangePicker as r } from "./date-range-picker.js";
6
+ import { Card as i, CardContent as a, CardHeader as o, CardTitle as s } from "../ui/card/index.js";
7
+ import "react";
8
+ import { CalendarDaysIcon as c } from "lucide-react";
9
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
10
+ //#region src/components/calendar/calendar-range-scheduler.tsx
11
+ function d({ value: d, onValueChange: f, events: p = [], onEventSelect: m, title: h = "Schedule range", action: g, className: _, ...v }) {
12
+ return /* @__PURE__ */ u(i, {
13
+ "data-slot": "calendar-range-scheduler",
14
+ className: e("min-w-0", _),
15
+ ...v,
16
+ children: [/* @__PURE__ */ u(o, {
17
+ className: "flex-row items-center justify-between gap-3",
18
+ children: [/* @__PURE__ */ u(s, {
19
+ className: "flex items-center gap-2",
20
+ children: [/* @__PURE__ */ l(c, { className: "size-4" }), h]
21
+ }), g]
22
+ }), /* @__PURE__ */ u(a, {
23
+ className: "grid gap-4 lg:grid-cols-[320px_minmax(0,1fr)]",
24
+ children: [/* @__PURE__ */ l(r, {
25
+ value: d,
26
+ onValueChange: f
27
+ }), /* @__PURE__ */ u("div", {
28
+ className: "grid content-start gap-2",
29
+ children: [p.length ? p.map((e) => /* @__PURE__ */ u("button", {
30
+ type: "button",
31
+ className: "grid gap-1 rounded-lg border bg-background p-3 text-left transition hover:border-primary/45 hover:bg-muted/40",
32
+ onClick: () => m?.(e),
33
+ children: [
34
+ /* @__PURE__ */ u("span", {
35
+ className: "flex items-center justify-between gap-2",
36
+ children: [/* @__PURE__ */ l("span", {
37
+ className: "font-medium",
38
+ children: e.title
39
+ }), /* @__PURE__ */ l(n, {
40
+ label: e.tone ?? "scheduled",
41
+ status: e.tone === "danger" ? "danger" : e.tone === "warning" ? "warning" : e.tone === "success" ? "success" : "info",
42
+ variant: "soft"
43
+ })]
44
+ }),
45
+ /* @__PURE__ */ u("span", {
46
+ className: "text-xs text-muted-foreground",
47
+ children: [
48
+ e.range.from || "Start",
49
+ " - ",
50
+ e.range.to || "End"
51
+ ]
52
+ }),
53
+ e.meta ? /* @__PURE__ */ l("span", {
54
+ className: "text-xs text-muted-foreground",
55
+ children: e.meta
56
+ }) : null
57
+ ]
58
+ }, e.id)) : /* @__PURE__ */ l("div", {
59
+ className: "rounded-lg border border-dashed p-6 text-sm text-muted-foreground",
60
+ children: "No scheduled ranges."
61
+ }), /* @__PURE__ */ l(t, {
62
+ type: "button",
63
+ variant: "outline",
64
+ onClick: () => f?.({
65
+ from: "",
66
+ to: ""
67
+ }),
68
+ children: "Clear range"
69
+ })]
70
+ })]
71
+ })]
72
+ });
73
+ }
74
+ //#endregion
75
+ export { d as CalendarRangeScheduler };
@@ -1 +1 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("./date-utils.cjs"),i=require("./calendar.cjs"),a=require("../ui/popover/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("react/jsx-runtime");function l(e){let t=r.parseDateKey(e);return t?new Intl.DateTimeFormat(`en-US`,{dateStyle:`medium`}).format(t):e}function u({value:e,onValueChange:r,placeholder:u,labels:d,disabled:f=!1,clearable:p=!0,triggerVariant:m=`default`,formatValue:h=l,triggerClassName:g,contentClassName:_,className:v,...y}){let[b,x]=o.useState(!1),S=!!e,C=e=>{r?.(e),x(!1)},w=()=>{r?.(``),x(!1)};return(0,c.jsx)(`div`,{"data-slot":`date-picker`,"data-trigger-variant":m,className:t.cn(`w-full`,v),children:(0,c.jsxs)(a.Popover,{open:b,onOpenChange:x,children:[(0,c.jsxs)(a.PopoverTrigger,{render:(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,disabled:f,labelClassName:`flex-1`,className:t.cn(`group w-full justify-start rounded-[var(--aui-control-radius,var(--radius-md))] border-border/80 bg-background/96 text-left font-normal shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))]`,m==="default"?`min-h-11 gap-3 px-3`:`min-h-9 gap-2 px-2.5`,!S&&`text-muted-foreground`,g)}),children:[(0,c.jsx)(s.CalendarIcon,{"data-icon":`inline-start`,className:t.cn(S&&`text-primary`)}),(0,c.jsxs)(`span`,{className:t.cn(`grid min-w-0 flex-1`,m==="default"&&`gap-0.5`),children:[m==="default"?(0,c.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:d?.selected??`Date`}):null,(0,c.jsx)(`span`,{className:t.cn(`truncate text-sm`,S&&`font-semibold text-foreground`),children:S?h(String(e)):u??d?.placeholder??`Select date`})]}),p&&S?(0,c.jsx)(`span`,{role:`button`,tabIndex:0,"aria-label":d?.clear??`Clear date`,className:t.cn(`ml-auto inline-flex shrink-0 items-center justify-center rounded-[var(--radius-sm)] text-muted-foreground opacity-80 transition hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,m==="default"?`size-7`:`size-6`),onClick:e=>{e.preventDefault(),e.stopPropagation(),w()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),w())},children:(0,c.jsx)(s.XIcon,{className:`size-3.5`})}):null]}),(0,c.jsx)(a.PopoverContent,{align:`start`,className:t.cn(`w-auto overflow-hidden rounded-[var(--aui-card-radius,var(--radius-lg))] border-border/70 bg-popover p-0 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur`,_),children:(0,c.jsx)(i.Calendar,{value:e,onValueChange:C,labels:d,showTodayShortcut:!0,showClearShortcut:p,showSelectionSummary:!0,...y})})]})})}exports.DatePicker=u;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("./date-utils.cjs"),i=require("./calendar.cjs"),a=require("../ui/popover/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("react/jsx-runtime");function l(e){let t=r.parseDateKey(e);return t?new Intl.DateTimeFormat(`en-US`,{dateStyle:`medium`}).format(t):e}function u({value:e,onValueChange:r,placeholder:u,labels:d,disabled:f=!1,clearable:p=!0,triggerVariant:m=`default`,formatValue:h=l,triggerClassName:g,contentClassName:_,className:v,...y}){let[b,x]=o.useState(!1),S=!!e,C=e=>{r?.(e),x(!1)},w=()=>{r?.(``),x(!1)};return(0,c.jsx)(`div`,{"data-slot":`date-picker`,"data-trigger-variant":m,className:t.cn(`w-full`,v),children:(0,c.jsxs)(a.Popover,{open:b,onOpenChange:x,children:[(0,c.jsxs)(a.PopoverTrigger,{render:(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,disabled:f,labelClassName:`flex-1`,className:t.cn(`group w-full justify-start rounded-[var(--aui-control-radius,var(--radius-md))] border-border/80 bg-background/96 text-left font-normal shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))]`,m==="default"?`min-h-11 gap-3 px-3`:`min-h-9 gap-2 px-2.5`,!S&&`text-muted-foreground`,g)}),children:[(0,c.jsx)(s.CalendarIcon,{"data-icon":`inline-start`,className:t.cn(`size-4`,S&&`text-primary`)}),(0,c.jsx)(`span`,{className:`grid min-w-0 flex-1`,children:(0,c.jsx)(`span`,{className:t.cn(`truncate text-sm`,S&&`font-semibold text-foreground`),children:S?h(String(e)):u??d?.placeholder??`Select date`})}),p&&S?(0,c.jsx)(`span`,{role:`button`,tabIndex:0,"aria-label":d?.clear??`Clear date`,className:t.cn(`ml-auto inline-flex shrink-0 items-center justify-center rounded-[var(--radius-sm)] text-muted-foreground opacity-80 transition hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,m==="default"?`size-7`:`size-6`),onClick:e=>{e.preventDefault(),e.stopPropagation(),w()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),w())},children:(0,c.jsx)(s.XIcon,{className:`size-3.5`})}):null]}),(0,c.jsx)(a.PopoverContent,{align:`start`,className:t.cn(`w-auto overflow-hidden rounded-[var(--aui-card-radius,var(--radius-lg))] border-border/70 bg-popover p-0 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur`,_),children:(0,c.jsx)(i.Calendar,{value:e,onValueChange:C,labels:d,showTodayShortcut:!0,showClearShortcut:p,showSelectionSummary:!0,...y})})]})})}exports.DatePicker=u;
@@ -36,17 +36,14 @@ function p({ value: n, onValueChange: p, placeholder: m, labels: h, disabled: g
36
36
  children: [
37
37
  /* @__PURE__ */ u(c, {
38
38
  "data-icon": "inline-start",
39
- className: e(E && "text-primary")
39
+ className: e("size-4", E && "text-primary")
40
40
  }),
41
- /* @__PURE__ */ d("span", {
42
- className: e("grid min-w-0 flex-1", v === "default" && "gap-0.5"),
43
- children: [v === "default" ? /* @__PURE__ */ u("span", {
44
- className: "text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground",
45
- children: h?.selected ?? "Date"
46
- }) : null, /* @__PURE__ */ u("span", {
41
+ /* @__PURE__ */ u("span", {
42
+ className: "grid min-w-0 flex-1",
43
+ children: /* @__PURE__ */ u("span", {
47
44
  className: e("truncate text-sm", E && "font-semibold text-foreground"),
48
45
  children: E ? y(String(n)) : m ?? h?.placeholder ?? "Select date"
49
- })]
46
+ })
50
47
  }),
51
48
  _ && E ? /* @__PURE__ */ u("span", {
52
49
  role: "button",
@@ -1 +1 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("./date-utils.cjs"),i=require("./calendar.cjs"),a=require("../ui/popover/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("react/jsx-runtime");function l(e){let t=r.parseDateKey(e);return t?new Intl.DateTimeFormat(`en-US`,{dateStyle:`medium`}).format(t):e}function u(e,t){return typeof e==`string`?e:t}function d({className:e,value:r,onValueChange:d,labels:f,placeholder:p,disabled:m=!1,clearable:h=!0,formatValue:g=l,closeOnSelect:_=!1,closeOnPresetSelect:v=!1,showFooter:y=!0,presets:b,triggerClassName:x,contentClassName:S,months:C,numberOfMonths:w=2,pagedNavigation:T=!0,...E}){let[D,O]=o.useState(!1),[k,A]=o.useState(r??{}),j=r?.from??``,M=r?.to??``,N=!!(j||M),P=y?k:r,F=P?.from??``,I=P?.to??``,L=!!(F||I),R=C??w,z=j&&M?`${g(j)} - ${g(M)}`:j?`${g(j)} - ...`:p??f?.placeholder??`Select date range`,B=F&&I?`${g(F)} - ${g(I)}`:F?`${g(F)} - ...`:f?.placeholder??`Select date range`;o.useEffect(()=>{D&&y&&A(r??{})},[D,y,r]);let V=e=>{if(y){A(e);return}d?.(e),_&&e.from&&e.to&&O(!1)},H=()=>{d?.(k),O(!1)},U=()=>{let e={};if(y){A(e);return}d?.(e)},W=()=>{let e={};A(e),d?.(e)},G=e=>{e.preventDefault(),e.stopPropagation(),W()},K=e=>{if(y){A(e),v&&(d?.(e),O(!1));return}d?.(e),(_||v)&&e.from&&e.to&&O(!1)};return(0,c.jsx)(`div`,{"data-slot":`date-range-picker`,className:t.cn(`w-full`,e),children:(0,c.jsxs)(a.Popover,{open:D,onOpenChange:O,children:[(0,c.jsxs)(a.PopoverTrigger,{render:(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,disabled:m,className:t.cn(`group min-h-11 w-full justify-start gap-3 rounded-[var(--aui-control-radius,var(--radius-md))] border-border/80 bg-background/96 px-3 text-left font-normal shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))]`,!N&&`text-muted-foreground`,x)}),children:[(0,c.jsx)(s.CalendarIcon,{"data-icon":`inline-start`,className:t.cn(N&&`text-primary`)}),N?(0,c.jsxs)(`span`,{className:`grid min-w-0 flex-1 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-2`,children:[(0,c.jsxs)(`span`,{className:`grid min-w-0 gap-0.5`,children:[(0,c.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:f?.start??`Start`}),(0,c.jsx)(`span`,{className:`truncate text-sm font-semibold text-foreground`,children:j?g(j):`...`})]}),(0,c.jsx)(`span`,{className:`text-muted-foreground`,children:`-`}),(0,c.jsxs)(`span`,{className:`grid min-w-0 gap-0.5`,children:[(0,c.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:f?.end??`End`}),(0,c.jsx)(`span`,{className:`truncate text-sm font-semibold text-foreground`,children:M?g(M):`...`})]})]}):(0,c.jsxs)(`span`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,c.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Range`}),(0,c.jsx)(`span`,{className:`truncate text-sm`,children:z})]}),h&&N?(0,c.jsx)(`span`,{role:`button`,tabIndex:0,"aria-label":u(f?.clear,`Clear date range`),className:`ml-auto inline-flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] text-muted-foreground opacity-80 transition hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,onClick:G,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),W())},children:(0,c.jsx)(s.XIcon,{className:`size-3.5`})}):null]}),(0,c.jsxs)(a.PopoverContent,{align:`start`,className:t.cn(`w-auto overflow-hidden rounded-[var(--aui-card-radius,var(--radius-lg))] border-border/70 bg-popover p-0 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur`,S),children:[b?.length?(0,c.jsx)(`div`,{className:`flex flex-wrap gap-2 border-b border-border/70 bg-muted/20 px-3 py-3`,children:b.map((e,t)=>(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 rounded-full px-3 text-xs`,onClick:()=>K(e.value),children:e.label},t))}):null,(0,c.jsx)(i.Calendar,{mode:`range`,range:P,onRangeChange:V,labels:f,renderSelectionSummary:({range:e})=>{let t=e?.from?g(e.from):null,n=e?.to?g(e.to):null;return t&&n?`${t} -> ${n}`:t?`${t} -> ...`:`No range selected`},numberOfMonths:R,pagedNavigation:T,showClearShortcut:!y&&h,showSelectionSummary:!0,...E}),y&&(0,c.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-border/70 bg-muted/24 px-4 py-3`,children:[(0,c.jsx)(`div`,{className:`min-w-0 text-sm text-muted-foreground`,children:(0,c.jsx)(`span`,{className:`block truncate`,children:B})}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(n.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:U,children:f?.clear??`Clear`}),(0,c.jsx)(n.Button,{type:`button`,size:`sm`,disabled:!L,onClick:H,children:f?.apply??`Apply`})]})]})]})]})})}exports.DateRangePicker=d;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("./date-utils.cjs"),i=require("./calendar.cjs"),a=require("../ui/popover/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("lucide-react"),c=require("react/jsx-runtime");function l(e){let t=r.parseDateKey(e);return t?new Intl.DateTimeFormat(`en-US`,{dateStyle:`medium`}).format(t):e}function u(e,t){return typeof e==`string`?e:t}function d({className:e,value:r,onValueChange:d,labels:f,placeholder:p,disabled:m=!1,clearable:h=!0,formatValue:g=l,closeOnSelect:_=!1,closeOnPresetSelect:v=!1,showFooter:y=!0,presets:b,triggerClassName:x,contentClassName:S,months:C,numberOfMonths:w=2,pagedNavigation:T=!0,...E}){let[D,O]=o.useState(!1),[k,A]=o.useState(r??{}),j=r?.from??``,M=r?.to??``,N=!!(j||M),P=y?k:r,F=P?.from??``,I=P?.to??``,L=!!(F||I),R=C??w,z=j&&M?`${g(j)} - ${g(M)}`:j?`${g(j)} - ...`:p??f?.placeholder??`Select date range`,B=F&&I?`${g(F)} - ${g(I)}`:F?`${g(F)} - ...`:f?.placeholder??`Select date range`;o.useEffect(()=>{D&&y&&A(r??{})},[D,y,r]);let V=e=>{if(y){A(e);return}d?.(e),_&&e.from&&e.to&&O(!1)},H=()=>{d?.(k),O(!1)},U=()=>{let e={};if(y){A(e);return}d?.(e)},W=()=>{let e={};A(e),d?.(e)},G=e=>{e.preventDefault(),e.stopPropagation(),W()},K=e=>{if(y){A(e),v&&(d?.(e),O(!1));return}d?.(e),(_||v)&&e.from&&e.to&&O(!1)};return(0,c.jsx)(`div`,{"data-slot":`date-range-picker`,className:t.cn(`w-full`,e),children:(0,c.jsxs)(a.Popover,{open:D,onOpenChange:O,children:[(0,c.jsxs)(a.PopoverTrigger,{render:(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,disabled:m,className:t.cn(`group min-h-11 w-full justify-start gap-3 rounded-[var(--aui-control-radius,var(--radius-md))] border-border/80 bg-background/96 px-3 text-left font-normal shadow-[var(--aui-control-shadow,0_1px_2px_rgba(15,23,42,0.04))]`,!N&&`text-muted-foreground`,x)}),children:[(0,c.jsx)(s.CalendarIcon,{"data-icon":`inline-start`,className:t.cn(`size-4`,N&&`text-primary`)}),N?(0,c.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,c.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:j?g(j):`...`}),(0,c.jsx)(`span`,{className:`text-muted-foreground`,children:`-`}),(0,c.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:M?g(M):`...`})]}):(0,c.jsx)(`span`,{className:`grid min-w-0 flex-1`,children:(0,c.jsx)(`span`,{className:`truncate text-sm`,children:z})}),h&&N?(0,c.jsx)(`span`,{role:`button`,tabIndex:0,"aria-label":u(f?.clear,`Clear date range`),className:`ml-auto inline-flex size-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] text-muted-foreground opacity-80 transition hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,onClick:G,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),W())},children:(0,c.jsx)(s.XIcon,{className:`size-3.5`})}):null]}),(0,c.jsxs)(a.PopoverContent,{align:`start`,className:t.cn(`w-auto overflow-hidden rounded-[var(--aui-card-radius,var(--radius-lg))] border-border/70 bg-popover p-0 shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur`,S),children:[b?.length?(0,c.jsx)(`div`,{className:`flex flex-wrap gap-2 border-b border-border/70 bg-muted/20 px-3 py-3`,children:b.map((e,t)=>(0,c.jsx)(n.Button,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 rounded-full px-3 text-xs`,onClick:()=>K(e.value),children:e.label},t))}):null,(0,c.jsx)(i.Calendar,{mode:`range`,range:P,onRangeChange:V,labels:f,renderSelectionSummary:({range:e})=>{let t=e?.from?g(e.from):null,n=e?.to?g(e.to):null;return t&&n?`${t} -> ${n}`:t?`${t} -> ...`:`No range selected`},numberOfMonths:R,pagedNavigation:T,showClearShortcut:!y&&h,showSelectionSummary:!0,...E}),y&&(0,c.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-border/70 bg-muted/24 px-4 py-3`,children:[(0,c.jsx)(`div`,{className:`min-w-0 text-sm text-muted-foreground`,children:(0,c.jsx)(`span`,{className:`block truncate`,children:B})}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,c.jsx)(n.Button,{type:`button`,variant:`ghost`,size:`sm`,onClick:U,children:f?.clear??`Clear`}),(0,c.jsx)(n.Button,{type:`button`,size:`sm`,disabled:!L,onClick:H,children:f?.apply??`Apply`})]})]})]})]})})}exports.DateRangePicker=d;
@@ -67,45 +67,30 @@ function m({ className: n, value: m, onValueChange: h, labels: g, placeholder: _
67
67
  children: [
68
68
  /* @__PURE__ */ u(c, {
69
69
  "data-icon": "inline-start",
70
- className: e(L && "text-primary")
70
+ className: e("size-4", L && "text-primary")
71
71
  }),
72
72
  L ? /* @__PURE__ */ d("span", {
73
- className: "grid min-w-0 flex-1 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-2",
73
+ className: "flex min-w-0 flex-1 items-center gap-2",
74
74
  children: [
75
- /* @__PURE__ */ d("span", {
76
- className: "grid min-w-0 gap-0.5",
77
- children: [/* @__PURE__ */ u("span", {
78
- className: "text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground",
79
- children: g?.start ?? "Start"
80
- }), /* @__PURE__ */ u("span", {
81
- className: "truncate text-sm font-semibold text-foreground",
82
- children: F ? b(F) : "..."
83
- })]
75
+ /* @__PURE__ */ u("span", {
76
+ className: "min-w-0 truncate text-sm font-semibold text-foreground",
77
+ children: F ? b(F) : "..."
84
78
  }),
85
79
  /* @__PURE__ */ u("span", {
86
80
  className: "text-muted-foreground",
87
81
  children: "-"
88
82
  }),
89
- /* @__PURE__ */ d("span", {
90
- className: "grid min-w-0 gap-0.5",
91
- children: [/* @__PURE__ */ u("span", {
92
- className: "text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground",
93
- children: g?.end ?? "End"
94
- }), /* @__PURE__ */ u("span", {
95
- className: "truncate text-sm font-semibold text-foreground",
96
- children: I ? b(I) : "..."
97
- })]
83
+ /* @__PURE__ */ u("span", {
84
+ className: "min-w-0 truncate text-sm font-semibold text-foreground",
85
+ children: I ? b(I) : "..."
98
86
  })
99
87
  ]
100
- }) : /* @__PURE__ */ d("span", {
101
- className: "grid min-w-0 flex-1 gap-0.5",
102
- children: [/* @__PURE__ */ u("span", {
103
- className: "text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground",
104
- children: "Range"
105
- }), /* @__PURE__ */ u("span", {
88
+ }) : /* @__PURE__ */ u("span", {
89
+ className: "grid min-w-0 flex-1",
90
+ children: /* @__PURE__ */ u("span", {
106
91
  className: "truncate text-sm",
107
92
  children: U
108
- })]
93
+ })
109
94
  }),
110
95
  y && L ? /* @__PURE__ */ u("span", {
111
96
  role: "button",
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("./date-picker.cjs"),r=require("../inputs/time-picker.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");function o({value:e,onValueChange:i,datePickerProps:o,timeLabel:s=`Time`,disabled:c,className:l,...u}){let d=e??{};return(0,a.jsxs)(`div`,{"data-slot":`date-time-picker`,className:t.cn(`grid gap-3 sm:grid-cols-2`,l),...u,children:[(0,a.jsx)(n.DatePicker,{...o,value:d.date,disabled:c||o?.disabled,onValueChange:e=>i?.({...d,date:e})}),(0,a.jsxs)(`label`,{className:`grid gap-1.5 text-sm font-medium`,children:[(0,a.jsx)(`span`,{children:s}),(0,a.jsx)(r.TimePicker,{value:d.time??``,onChange:e=>i?.({...d,time:e.currentTarget.value}),disabled:c})]})]})}exports.CalendarDateTimePicker=o;
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { DatePicker as t } from "./date-picker.js";
4
+ import { TimePicker as n } from "../inputs/time-picker.js";
5
+ import "react";
6
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
7
+ //#region src/components/calendar/date-time-picker.tsx
8
+ function a({ value: a, onValueChange: o, datePickerProps: s, timeLabel: c = "Time", disabled: l, className: u, ...d }) {
9
+ let f = a ?? {};
10
+ return /* @__PURE__ */ i("div", {
11
+ "data-slot": "date-time-picker",
12
+ className: e("grid gap-3 sm:grid-cols-2", u),
13
+ ...d,
14
+ children: [/* @__PURE__ */ r(t, {
15
+ ...s,
16
+ value: f.date,
17
+ disabled: l || s?.disabled,
18
+ onValueChange: (e) => o?.({
19
+ ...f,
20
+ date: e
21
+ })
22
+ }), /* @__PURE__ */ i("label", {
23
+ className: "grid gap-1.5 text-sm font-medium",
24
+ children: [/* @__PURE__ */ r("span", { children: c }), /* @__PURE__ */ r(n, {
25
+ value: f.time ?? "",
26
+ onChange: (e) => o?.({
27
+ ...f,
28
+ time: e.currentTarget.value
29
+ }),
30
+ disabled: l
31
+ })]
32
+ })]
33
+ });
34
+ }
35
+ //#endregion
36
+ export { a as CalendarDateTimePicker };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./date-utils.cjs"),t=require("./calendar.cjs"),n=require("./date-picker.cjs"),r=require("./date-range-picker.cjs");exports.Calendar=t.Calendar,exports.DatePicker=n.DatePicker,exports.DateRangePicker=r.DateRangePicker,exports.addMonths=e.addMonths,exports.getMonthDays=e.getMonthDays,exports.getMonthLabel=e.getMonthLabel,exports.getWeekdayLabels=e.getWeekdayLabels,exports.isAfterDate=e.isAfterDate,exports.isBeforeDate=e.isBeforeDate,exports.isSameMonth=e.isSameMonth,exports.isWithinRange=e.isWithinRange,exports.parseDateKey=e.parseDateKey,exports.startOfMonth=e.startOfMonth,exports.toDateKey=e.toDateKey;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./date-utils.cjs"),t=require("./calendar.cjs"),n=require("./date-range-picker.cjs"),r=require("./calendar-range-scheduler.cjs"),i=require("./date-picker.cjs"),a=require("./date-time-picker.cjs");exports.Calendar=t.Calendar,exports.CalendarDateTimePicker=a.CalendarDateTimePicker,exports.CalendarRangeScheduler=r.CalendarRangeScheduler,exports.DatePicker=i.DatePicker,exports.DateRangePicker=n.DateRangePicker,exports.addMonths=e.addMonths,exports.getMonthDays=e.getMonthDays,exports.getMonthLabel=e.getMonthLabel,exports.getWeekdayLabels=e.getWeekdayLabels,exports.isAfterDate=e.isAfterDate,exports.isBeforeDate=e.isBeforeDate,exports.isSameMonth=e.isSameMonth,exports.isWithinRange=e.isWithinRange,exports.parseDateKey=e.parseDateKey,exports.startOfMonth=e.startOfMonth,exports.toDateKey=e.toDateKey;
@@ -1,5 +1,7 @@
1
1
  import { addMonths as e, getMonthDays as t, getMonthLabel as n, getWeekdayLabels as r, isAfterDate as i, isBeforeDate as a, isSameMonth as o, isWithinRange as s, parseDateKey as c, startOfMonth as l, toDateKey as u } from "./date-utils.js";
2
2
  import { Calendar as d } from "./calendar.js";
3
- import { DatePicker as f } from "./date-picker.js";
4
- import { DateRangePicker as p } from "./date-range-picker.js";
5
- export { d as Calendar, f as DatePicker, p as DateRangePicker, e as addMonths, t as getMonthDays, n as getMonthLabel, r as getWeekdayLabels, i as isAfterDate, a as isBeforeDate, o as isSameMonth, s as isWithinRange, c as parseDateKey, l as startOfMonth, u as toDateKey };
3
+ import { DateRangePicker as f } from "./date-range-picker.js";
4
+ import { CalendarRangeScheduler as p } from "./calendar-range-scheduler.js";
5
+ import { DatePicker as m } from "./date-picker.js";
6
+ import { CalendarDateTimePicker as h } from "./date-time-picker.js";
7
+ export { d as Calendar, h as CalendarDateTimePicker, p as CalendarRangeScheduler, m as DatePicker, f as DateRangePicker, e as addMonths, t as getMonthDays, n as getMonthLabel, r as getWeekdayLabels, i as isAfterDate, a as isBeforeDate, o as isSameMonth, s as isWithinRange, c as parseDateKey, l as startOfMonth, u as toDateKey };
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/badge/index.cjs"),r=require("../ui/card/index.cjs"),i=require("./charts.cjs"),a=require("../ui/select/index.cjs");let o=require("react");o=e.__toESM(o,1);let s=require("react/jsx-runtime");function c({title:e,description:o,type:c=`bar`,data:l=[],series:u,labels:d,state:f,metric:p,badge:m,filters:h,filterValue:g,onFilterChange:_,className:v,...y}){return(0,s.jsxs)(r.Card,{"data-slot":`chart-card`,className:t.cn(`min-w-0`,v),...y,children:[(0,s.jsxs)(r.CardHeader,{className:`flex-row items-start justify-between gap-3`,children:[(0,s.jsxs)(`div`,{className:`grid gap-1`,children:[e?(0,s.jsx)(r.CardTitle,{children:e}):null,o?(0,s.jsx)(r.CardDescription,{children:o}):null,p?(0,s.jsx)(`div`,{className:`text-2xl font-semibold tracking-tight`,children:p}):null]}),(0,s.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[m??(0,s.jsx)(n.Badge,{label:c,variant:`secondary`}),h?.length?(0,s.jsx)(a.Select,{value:g,onValueChange:e=>e&&_?.(e),options:h,triggerClassName:`h-9 w-36`}):null]})]}),(0,s.jsx)(r.CardContent,{children:c===`line`?(0,s.jsx)(i.LineChart,{series:u,labels:d,values:l.map(e=>e.value),state:f}):c===`donut`?(0,s.jsx)(i.DonutChart,{data:l,state:f}):(0,s.jsx)(i.BarChart,{data:l,series:u,state:f})})]})}exports.ChartCard=c;
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { Badge as t } from "../ui/badge/index.js";
4
+ import { Card as n, CardContent as r, CardDescription as i, CardHeader as a, CardTitle as o } from "../ui/card/index.js";
5
+ import { BarChart as s, DonutChart as c, LineChart as l } from "./charts.js";
6
+ import { Select as u } from "../ui/select/index.js";
7
+ import "react";
8
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
9
+ //#region src/components/charts/chart-card.tsx
10
+ function p({ title: p, description: m, type: h = "bar", data: g = [], series: _, labels: v, state: y, metric: b, badge: x, filters: S, filterValue: C, onFilterChange: w, className: T, ...E }) {
11
+ return /* @__PURE__ */ f(n, {
12
+ "data-slot": "chart-card",
13
+ className: e("min-w-0", T),
14
+ ...E,
15
+ children: [/* @__PURE__ */ f(a, {
16
+ className: "flex-row items-start justify-between gap-3",
17
+ children: [/* @__PURE__ */ f("div", {
18
+ className: "grid gap-1",
19
+ children: [
20
+ p ? /* @__PURE__ */ d(o, { children: p }) : null,
21
+ m ? /* @__PURE__ */ d(i, { children: m }) : null,
22
+ b ? /* @__PURE__ */ d("div", {
23
+ className: "text-2xl font-semibold tracking-tight",
24
+ children: b
25
+ }) : null
26
+ ]
27
+ }), /* @__PURE__ */ f("div", {
28
+ className: "flex shrink-0 items-center gap-2",
29
+ children: [x ?? /* @__PURE__ */ d(t, {
30
+ label: h,
31
+ variant: "secondary"
32
+ }), S?.length ? /* @__PURE__ */ d(u, {
33
+ value: C,
34
+ onValueChange: (e) => e && w?.(e),
35
+ options: S,
36
+ triggerClassName: "h-9 w-36"
37
+ }) : null]
38
+ })]
39
+ }), /* @__PURE__ */ d(r, { children: h === "line" ? /* @__PURE__ */ d(l, {
40
+ series: _,
41
+ labels: v,
42
+ values: g.map((e) => e.value),
43
+ state: y
44
+ }) : h === "donut" ? /* @__PURE__ */ d(c, {
45
+ data: g,
46
+ state: y
47
+ }) : /* @__PURE__ */ d(s, {
48
+ data: g,
49
+ series: _,
50
+ state: y
51
+ }) })]
52
+ });
53
+ }
54
+ //#endregion
55
+ export { p as ChartCard };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./charts.cjs"),t=require("./progress-circle.cjs");exports.AreaChart=e.AreaChart,exports.BarChart=e.BarChart,exports.ChartFrame=e.ChartFrame,exports.ChartLegend=e.ChartLegend,exports.ChartTooltipContent=e.ChartTooltipContent,exports.DonutChart=e.DonutChart,exports.LineChart=e.LineChart,exports.MetricTrend=e.MetricTrend,exports.ProgressCircle=t.ProgressCircle,exports.Sparkline=e.Sparkline;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./charts.cjs"),t=require("./chart-card.cjs"),n=require("./progress-circle.cjs");exports.AreaChart=e.AreaChart,exports.BarChart=e.BarChart,exports.ChartCard=t.ChartCard,exports.ChartFrame=e.ChartFrame,exports.ChartLegend=e.ChartLegend,exports.ChartTooltipContent=e.ChartTooltipContent,exports.DonutChart=e.DonutChart,exports.LineChart=e.LineChart,exports.MetricTrend=e.MetricTrend,exports.ProgressCircle=n.ProgressCircle,exports.Sparkline=e.Sparkline;
@@ -1,3 +1,4 @@
1
1
  import { AreaChart as e, BarChart as t, ChartFrame as n, ChartLegend as r, ChartTooltipContent as i, DonutChart as a, LineChart as o, MetricTrend as s, Sparkline as c } from "./charts.js";
2
- import { ProgressCircle as l } from "./progress-circle.js";
3
- export { e as AreaChart, t as BarChart, n as ChartFrame, r as ChartLegend, i as ChartTooltipContent, a as DonutChart, o as LineChart, s as MetricTrend, l as ProgressCircle, c as Sparkline };
2
+ import { ChartCard as l } from "./chart-card.js";
3
+ import { ProgressCircle as u } from "./progress-circle.js";
4
+ export { e as AreaChart, t as BarChart, l as ChartCard, n as ChartFrame, r as ChartLegend, i as ChartTooltipContent, a as DonutChart, o as LineChart, s as MetricTrend, u as ProgressCircle, c as Sparkline };
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../ui/button/index.cjs"),n=require("../ui/dialog/index.cjs"),r=require("../ui/command/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s({open:e,onOpenChange:s,groups:c,title:l=`Command menu`,triggerLabel:u=`Command`,placeholder:d=`Search commands...`}){let[f,p]=i.useState(!1),m=e??f,h=s??p;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.Button,{type:`button`,variant:`outline`,leftIcon:(0,o.jsx)(a.SearchIcon,{className:`size-4`}),onClick:()=>h(!0),children:u}),(0,o.jsx)(n.Dialog,{open:m,onOpenChange:h,children:(0,o.jsxs)(n.DialogContent,{className:`overflow-hidden p-0`,children:[(0,o.jsx)(n.DialogHeader,{className:`border-b px-4 py-3`,children:(0,o.jsx)(n.DialogTitle,{children:l})}),(0,o.jsxs)(r.Command,{children:[(0,o.jsx)(r.CommandInput,{placeholder:d}),(0,o.jsxs)(r.CommandList,{children:[(0,o.jsx)(r.CommandEmpty,{children:`No command found.`}),c.map(e=>(0,o.jsx)(r.CommandGroup,{heading:e.label,children:e.items.map(e=>(0,o.jsxs)(r.CommandItem,{value:[e.id,e.label,e.description,...e.keywords??[]].filter(Boolean).join(` `),onSelect:()=>{e.onSelect?.(),h(!1)},children:[e.icon,(0,o.jsxs)(`span`,{className:`grid min-w-0 flex-1`,children:[(0,o.jsx)(`span`,{className:`truncate`,children:e.label}),e.description?(0,o.jsx)(`span`,{className:`truncate text-xs text-muted-foreground`,children:e.description}):null]}),e.shortcut?(0,o.jsx)(r.CommandShortcut,{children:e.shortcut}):null]},e.id))},e.id))]})]})]})})]})}exports.AdvancedCommandMenu=s;
@@ -0,0 +1,57 @@
1
+ "use client";
2
+ import { Button as e } from "../ui/button/index.js";
3
+ import { Dialog as t, DialogContent as n, DialogHeader as r, DialogTitle as i } from "../ui/dialog/index.js";
4
+ import { Command as a, CommandEmpty as o, CommandGroup as s, CommandInput as c, CommandItem as l, CommandList as u, CommandShortcut as d } from "../ui/command/index.js";
5
+ import * as f from "react";
6
+ import { SearchIcon as p } from "lucide-react";
7
+ import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
8
+ //#region src/components/command/advanced-command-menu.tsx
9
+ function _({ open: _, onOpenChange: v, groups: y, title: b = "Command menu", triggerLabel: x = "Command", placeholder: S = "Search commands..." }) {
10
+ let [C, w] = f.useState(!1), T = _ ?? C, E = v ?? w;
11
+ return /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(e, {
12
+ type: "button",
13
+ variant: "outline",
14
+ leftIcon: /* @__PURE__ */ h(p, { className: "size-4" }),
15
+ onClick: () => E(!0),
16
+ children: x
17
+ }), /* @__PURE__ */ h(t, {
18
+ open: T,
19
+ onOpenChange: E,
20
+ children: /* @__PURE__ */ g(n, {
21
+ className: "overflow-hidden p-0",
22
+ children: [/* @__PURE__ */ h(r, {
23
+ className: "border-b px-4 py-3",
24
+ children: /* @__PURE__ */ h(i, { children: b })
25
+ }), /* @__PURE__ */ g(a, { children: [/* @__PURE__ */ h(c, { placeholder: S }), /* @__PURE__ */ g(u, { children: [/* @__PURE__ */ h(o, { children: "No command found." }), y.map((e) => /* @__PURE__ */ h(s, {
26
+ heading: e.label,
27
+ children: e.items.map((e) => /* @__PURE__ */ g(l, {
28
+ value: [
29
+ e.id,
30
+ e.label,
31
+ e.description,
32
+ ...e.keywords ?? []
33
+ ].filter(Boolean).join(" "),
34
+ onSelect: () => {
35
+ e.onSelect?.(), E(!1);
36
+ },
37
+ children: [
38
+ e.icon,
39
+ /* @__PURE__ */ g("span", {
40
+ className: "grid min-w-0 flex-1",
41
+ children: [/* @__PURE__ */ h("span", {
42
+ className: "truncate",
43
+ children: e.label
44
+ }), e.description ? /* @__PURE__ */ h("span", {
45
+ className: "truncate text-xs text-muted-foreground",
46
+ children: e.description
47
+ }) : null]
48
+ }),
49
+ e.shortcut ? /* @__PURE__ */ h(d, { children: e.shortcut }) : null
50
+ ]
51
+ }, e.id))
52
+ }, e.id))] })] })]
53
+ })
54
+ })] });
55
+ }
56
+ //#endregion
57
+ export { _ as AdvancedCommandMenu };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./command-palette.cjs");exports.CommandPalette=e.CommandPalette,exports.useCommandPaletteShortcut=e.useCommandPaletteShortcut;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./advanced-command-menu.cjs"),t=require("./command-palette.cjs");exports.AdvancedCommandMenu=e.AdvancedCommandMenu,exports.CommandPalette=t.CommandPalette,exports.useCommandPaletteShortcut=t.useCommandPaletteShortcut;
@@ -1,2 +1,3 @@
1
- import { CommandPalette as e, useCommandPaletteShortcut as t } from "./command-palette.js";
2
- export { e as CommandPalette, t as useCommandPaletteShortcut };
1
+ import { AdvancedCommandMenu as e } from "./advanced-command-menu.js";
2
+ import { CommandPalette as t, useCommandPaletteShortcut as n } from "./command-palette.js";
3
+ export { e as AdvancedCommandMenu, t as CommandPalette, n as useCommandPaletteShortcut };
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/input/index.cjs"),r=require("../ui/table/index.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("react/jsx-runtime");function o({columns:e,rows:i,onRowsChange:o,className:s,...c}){let l=(e,t,n)=>{o?.(i.map((r,i)=>i===e?{...r,[t]:n}:r))};return(0,a.jsx)(`div`,{"data-slot":`data-grid`,className:t.cn(`overflow-hidden rounded-lg border`,s),...c,children:(0,a.jsxs)(r.Table,{children:[(0,a.jsx)(r.TableHeader,{children:(0,a.jsx)(r.TableRow,{children:e.map(e=>(0,a.jsx)(r.TableHead,{style:{width:e.width},children:e.header},e.key))})}),(0,a.jsx)(r.TableBody,{children:i.map((t,i)=>(0,a.jsx)(r.TableRow,{children:e.map(e=>{let o=t[e.key];return(0,a.jsx)(r.TableCell,{children:e.editable?(0,a.jsx)(n.Input,{value:String(o??``),onValueChange:t=>l(i,e.key,t)}):e.render?e.render(o,t,i):String(o??``)},e.key)})},i))})]})})}exports.DataGrid=o;
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { Input as t } from "../ui/input/index.js";
4
+ import { Table as n, TableBody as r, TableCell as i, TableHead as a, TableHeader as o, TableRow as s } from "../ui/table/index.js";
5
+ import "react";
6
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
+ //#region src/components/data-table/data-grid.tsx
8
+ function u({ columns: u, rows: d, onRowsChange: f, className: p, ...m }) {
9
+ let h = (e, t, n) => {
10
+ f?.(d.map((r, i) => i === e ? {
11
+ ...r,
12
+ [t]: n
13
+ } : r));
14
+ };
15
+ return /* @__PURE__ */ c("div", {
16
+ "data-slot": "data-grid",
17
+ className: e("overflow-hidden rounded-lg border", p),
18
+ ...m,
19
+ children: /* @__PURE__ */ l(n, { children: [/* @__PURE__ */ c(o, { children: /* @__PURE__ */ c(s, { children: u.map((e) => /* @__PURE__ */ c(a, {
20
+ style: { width: e.width },
21
+ children: e.header
22
+ }, e.key)) }) }), /* @__PURE__ */ c(r, { children: d.map((e, n) => /* @__PURE__ */ c(s, { children: u.map((r) => {
23
+ let a = e[r.key];
24
+ return /* @__PURE__ */ c(i, { children: r.editable ? /* @__PURE__ */ c(t, {
25
+ value: String(a ?? ""),
26
+ onValueChange: (e) => h(n, r.key, e)
27
+ }) : r.render ? r.render(a, e, n) : String(a ?? "") }, r.key);
28
+ }) }, n)) })] })
29
+ });
30
+ }
31
+ //#endregion
32
+ export { u as DataGrid };