@devalok/shilp-sutra 0.48.0 → 0.49.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 (261) hide show
  1. package/BREAKING.json +32 -0
  2. package/MIGRATION.md +891 -881
  3. package/dist/_chunks/badge-group.js +52 -65
  4. package/dist/_chunks/badge-group.js.map +1 -1
  5. package/dist/_chunks/block-shell.js +1 -1
  6. package/dist/_chunks/chart-container.js +1 -1
  7. package/dist/_chunks/chat.js +4 -4
  8. package/dist/_chunks/chat.js.map +1 -1
  9. package/dist/_chunks/colors.js +2 -2
  10. package/dist/_chunks/document-preview.js +4 -4
  11. package/dist/_chunks/emoji-suggestion.js +5 -5
  12. package/dist/_chunks/emoji-suggestion.js.map +1 -1
  13. package/dist/_chunks/emoji.js +1 -1
  14. package/dist/_chunks/field-state.js +8 -0
  15. package/dist/_chunks/field-state.js.map +1 -0
  16. package/dist/_chunks/grid-lines.js +1 -1
  17. package/dist/_chunks/image-preview.js +7 -7
  18. package/dist/_chunks/keybinding.js +1 -1
  19. package/dist/_chunks/link-context.js +1 -1
  20. package/dist/_chunks/mention-suggestion.js +2 -2
  21. package/dist/_chunks/mention.js +1 -1
  22. package/dist/_chunks/motion-provider.js +1 -1
  23. package/dist/_chunks/normalize-icon.js +1 -1
  24. package/dist/_chunks/oauth-button.js +2 -2
  25. package/dist/_chunks/popover.js +55 -52
  26. package/dist/_chunks/popover.js.map +1 -1
  27. package/dist/_chunks/primitives.js +155 -155
  28. package/dist/_chunks/primitives.js.map +1 -1
  29. package/dist/_chunks/shared.js +5 -5
  30. package/dist/_chunks/success.js +4 -4
  31. package/dist/_chunks/tiptap.js +8 -8
  32. package/dist/_chunks/tooltip.js +1 -1
  33. package/dist/_chunks/tree-view.js +2 -2
  34. package/dist/_chunks/use-calendar.js +2 -2
  35. package/dist/_chunks/use-calendar.js.map +1 -1
  36. package/dist/_chunks/use-controllable-open.js +15 -0
  37. package/dist/_chunks/use-controllable-open.js.map +1 -0
  38. package/dist/_chunks/vendor-client.js +1 -1
  39. package/dist/_chunks/vendor-utils.js +1 -1
  40. package/dist/ai/block-renderer.js +7 -7
  41. package/dist/ai/blocks/error.js +1 -1
  42. package/dist/ai/blocks/index.js +2 -2
  43. package/dist/ai/blocks/text.js +1 -1
  44. package/dist/ai/command-bar.js +6 -6
  45. package/dist/ai/conversation.js +2 -2
  46. package/dist/ai/index.js +3 -3
  47. package/dist/composed/avatar-group.js +1 -1
  48. package/dist/composed/bulk-action-bar.js +1 -1
  49. package/dist/composed/command-palette.js +9 -9
  50. package/dist/composed/command-palette.js.map +1 -1
  51. package/dist/composed/confirm-dialog.js +3 -3
  52. package/dist/composed/confirm-dialog.js.map +1 -1
  53. package/dist/composed/content-card.js +1 -1
  54. package/dist/composed/date-picker/index.js +13 -13
  55. package/dist/composed/date-picker/index.js.map +1 -1
  56. package/dist/composed/emoji-picker.js +4 -4
  57. package/dist/composed/empty-state.js +1 -1
  58. package/dist/composed/error-boundary.js +1 -1
  59. package/dist/composed/error-boundary.js.map +1 -1
  60. package/dist/composed/extensions/emoji-node.js +1 -1
  61. package/dist/composed/extensions/emoji-suggestion.js +1 -1
  62. package/dist/composed/file-preview.js +14 -14
  63. package/dist/composed/filter-bar.js +1 -1
  64. package/dist/composed/index.d.ts +3 -1
  65. package/dist/composed/index.d.ts.map +1 -1
  66. package/dist/composed/index.js +4 -3
  67. package/dist/composed/loading-skeleton.js +15 -15
  68. package/dist/composed/loading-skeleton.js.map +1 -1
  69. package/dist/composed/multi-select-popover.js +3 -3
  70. package/dist/composed/page-header.d.ts.map +1 -1
  71. package/dist/composed/page-header.js +32 -45
  72. package/dist/composed/page-header.js.map +1 -1
  73. package/dist/composed/page-skeletons.js +19 -19
  74. package/dist/composed/page-skeletons.js.map +1 -1
  75. package/dist/composed/priority-indicator.js +1 -1
  76. package/dist/composed/responsive-modal.d.ts +39 -0
  77. package/dist/composed/responsive-modal.d.ts.map +1 -0
  78. package/dist/composed/responsive-modal.js +212 -0
  79. package/dist/composed/responsive-modal.js.map +1 -0
  80. package/dist/composed/rich-chat-input.js +445 -445
  81. package/dist/composed/rich-chat-input.js.map +1 -1
  82. package/dist/composed/rich-text-editor.js +29 -29
  83. package/dist/composed/rich-text-editor.js.map +1 -1
  84. package/dist/composed/schedule-view.d.ts +1 -1
  85. package/dist/composed/schedule-view.d.ts.map +1 -1
  86. package/dist/composed/schedule-view.js +48 -54
  87. package/dist/composed/schedule-view.js.map +1 -1
  88. package/dist/composed/status-badge.d.ts +13 -11
  89. package/dist/composed/status-badge.d.ts.map +1 -1
  90. package/dist/composed/status-badge.js +54 -130
  91. package/dist/composed/status-badge.js.map +1 -1
  92. package/dist/motion/index.js +2 -2
  93. package/dist/shell/bottom-navbar.js +3 -3
  94. package/dist/shell/bottom-navbar.js.map +1 -1
  95. package/dist/shell/index.js +2 -2
  96. package/dist/shell/link-context.js +2 -2
  97. package/dist/shell/notification-center.js +3 -3
  98. package/dist/shell/sidebar.js +2 -2
  99. package/dist/shell/top-bar.js +2 -2
  100. package/dist/shell/top-bar.js.map +1 -1
  101. package/dist/tokens/semantic.css +8 -1
  102. package/dist/ui/accordion.js +11 -11
  103. package/dist/ui/alert-dialog.js +34 -34
  104. package/dist/ui/alert.js +1 -1
  105. package/dist/ui/aspect-ratio.js +1 -1
  106. package/dist/ui/autocomplete.js +7 -7
  107. package/dist/ui/avatar.d.ts.map +1 -1
  108. package/dist/ui/avatar.js +84 -79
  109. package/dist/ui/avatar.js.map +1 -1
  110. package/dist/ui/badge-group.js +1 -1
  111. package/dist/ui/badge.d.ts.map +1 -1
  112. package/dist/ui/badge.js +1 -1
  113. package/dist/ui/banner.js +1 -1
  114. package/dist/ui/breadcrumb.d.ts +0 -1
  115. package/dist/ui/breadcrumb.d.ts.map +1 -1
  116. package/dist/ui/breadcrumb.js +58 -35
  117. package/dist/ui/breadcrumb.js.map +1 -1
  118. package/dist/ui/button.js +3 -3
  119. package/dist/ui/card.js +1 -1
  120. package/dist/ui/charts/area-chart.js +6 -6
  121. package/dist/ui/charts/bar-chart.js +6 -6
  122. package/dist/ui/charts/chart-container.js +1 -1
  123. package/dist/ui/charts/gauge-chart.js +2 -2
  124. package/dist/ui/charts/index.js +2 -2
  125. package/dist/ui/charts/line-chart.js +6 -6
  126. package/dist/ui/charts/pie-chart.js +5 -5
  127. package/dist/ui/charts/radar-chart.js +5 -5
  128. package/dist/ui/charts/sparkline.js +2 -2
  129. package/dist/ui/chat/index.js +2 -2
  130. package/dist/ui/checkbox.d.ts +4 -2
  131. package/dist/ui/checkbox.d.ts.map +1 -1
  132. package/dist/ui/checkbox.js +33 -28
  133. package/dist/ui/checkbox.js.map +1 -1
  134. package/dist/ui/collapsible.js +5 -5
  135. package/dist/ui/color-input.js +4 -4
  136. package/dist/ui/combobox.d.ts +3 -0
  137. package/dist/ui/combobox.d.ts.map +1 -1
  138. package/dist/ui/combobox.js +137 -132
  139. package/dist/ui/combobox.js.map +1 -1
  140. package/dist/ui/context-menu.js +32 -32
  141. package/dist/ui/dialog.d.ts.map +1 -1
  142. package/dist/ui/dialog.js +49 -46
  143. package/dist/ui/dialog.js.map +1 -1
  144. package/dist/ui/dot.d.ts +38 -0
  145. package/dist/ui/dot.d.ts.map +1 -0
  146. package/dist/ui/dot.js +92 -0
  147. package/dist/ui/dot.js.map +1 -0
  148. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  149. package/dist/ui/dropdown-menu.js +81 -76
  150. package/dist/ui/dropdown-menu.js.map +1 -1
  151. package/dist/ui/hover-card.js +6 -6
  152. package/dist/ui/icon-button.js +1 -1
  153. package/dist/ui/index.d.ts +3 -2
  154. package/dist/ui/index.d.ts.map +1 -1
  155. package/dist/ui/index.js +67 -67
  156. package/dist/ui/index.js.map +1 -1
  157. package/dist/ui/input-otp.js +1 -1
  158. package/dist/ui/input-otp.js.map +1 -1
  159. package/dist/ui/input.d.ts +4 -2
  160. package/dist/ui/input.d.ts.map +1 -1
  161. package/dist/ui/input.js +39 -38
  162. package/dist/ui/input.js.map +1 -1
  163. package/dist/ui/label.js +1 -1
  164. package/dist/ui/lib/field-state.d.ts +21 -0
  165. package/dist/ui/lib/field-state.d.ts.map +1 -0
  166. package/dist/ui/lib/use-controllable-open.d.ts +32 -0
  167. package/dist/ui/lib/use-controllable-open.d.ts.map +1 -0
  168. package/dist/ui/lib/utils.js +4 -4
  169. package/dist/ui/link.js +1 -1
  170. package/dist/ui/menubar.js +53 -53
  171. package/dist/ui/navigation-menu.js +27 -27
  172. package/dist/ui/number-input.d.ts +4 -2
  173. package/dist/ui/number-input.d.ts.map +1 -1
  174. package/dist/ui/number-input.js +52 -51
  175. package/dist/ui/number-input.js.map +1 -1
  176. package/dist/ui/oauth-button/index.js +2 -2
  177. package/dist/ui/pagination.js +1 -1
  178. package/dist/ui/popover.d.ts.map +1 -1
  179. package/dist/ui/popover.js +2 -2
  180. package/dist/ui/progress.d.ts +66 -42
  181. package/dist/ui/progress.d.ts.map +1 -1
  182. package/dist/ui/progress.js +144 -40
  183. package/dist/ui/progress.js.map +1 -1
  184. package/dist/ui/radio.d.ts +6 -2
  185. package/dist/ui/radio.d.ts.map +1 -1
  186. package/dist/ui/radio.js +44 -33
  187. package/dist/ui/radio.js.map +1 -1
  188. package/dist/ui/segmented-control.js +1 -1
  189. package/dist/ui/select.d.ts +1 -1
  190. package/dist/ui/select.d.ts.map +1 -1
  191. package/dist/ui/select.js +56 -55
  192. package/dist/ui/select.js.map +1 -1
  193. package/dist/ui/separator.js +2 -2
  194. package/dist/ui/separator.js.map +1 -1
  195. package/dist/ui/sheet.d.ts.map +1 -1
  196. package/dist/ui/sheet.js +56 -53
  197. package/dist/ui/sheet.js.map +1 -1
  198. package/dist/ui/sidebar.js +6 -6
  199. package/dist/ui/sidebar.js.map +1 -1
  200. package/dist/ui/skeleton.js +1 -1
  201. package/dist/ui/slider.js +8 -8
  202. package/dist/ui/slider.js.map +1 -1
  203. package/dist/ui/split-button.js +3 -3
  204. package/dist/ui/stat-card.d.ts.map +1 -1
  205. package/dist/ui/stat-card.js +123 -126
  206. package/dist/ui/stat-card.js.map +1 -1
  207. package/dist/ui/stat-flash.js +1 -1
  208. package/dist/ui/stepper.js +1 -1
  209. package/dist/ui/surface.js +2 -2
  210. package/dist/ui/switch.d.ts +3 -1
  211. package/dist/ui/switch.d.ts.map +1 -1
  212. package/dist/ui/switch.js +32 -27
  213. package/dist/ui/switch.js.map +1 -1
  214. package/dist/ui/table-row-link.js +1 -1
  215. package/dist/ui/tabs.js +13 -13
  216. package/dist/ui/text.js +1 -1
  217. package/dist/ui/textarea.d.ts +3 -3
  218. package/dist/ui/textarea.d.ts.map +1 -1
  219. package/dist/ui/textarea.js +19 -18
  220. package/dist/ui/textarea.js.map +1 -1
  221. package/dist/ui/toast.js +2 -2
  222. package/dist/ui/toast.js.map +1 -1
  223. package/dist/ui/toggle-group.js +1 -1
  224. package/dist/ui/toggle.js +2 -2
  225. package/dist/ui/tooltip.d.ts.map +1 -1
  226. package/dist/ui/tooltip.js +37 -34
  227. package/dist/ui/tooltip.js.map +1 -1
  228. package/dist/ui/tree-view/index.js +2 -2
  229. package/docs/components/ai/ai-command-provider.md +46 -0
  230. package/docs/components/ai/block-renderer.md +59 -0
  231. package/docs/components/ai/command-bar.md +78 -0
  232. package/docs/components/ai/conversation.md +59 -0
  233. package/docs/components/ai/devadoot-icon.md +41 -0
  234. package/docs/components/composed/page-header.md +1 -1
  235. package/docs/components/composed/responsive-modal.md +66 -0
  236. package/docs/components/composed/schedule-view.md +6 -2
  237. package/docs/components/ui/breadcrumb.md +1 -1
  238. package/docs/components/ui/checkbox.md +4 -1
  239. package/docs/components/ui/combobox.md +4 -0
  240. package/docs/components/ui/dot.md +61 -0
  241. package/docs/components/ui/progress.md +54 -16
  242. package/docs/components/ui/radio.md +6 -2
  243. package/docs/components/ui/select.md +9 -5
  244. package/docs/components/ui/switch.md +4 -1
  245. package/docs/components/ui/table.md +2 -1
  246. package/llms.txt +11 -3
  247. package/make-kit/components/form.md +2 -2
  248. package/make-kit/components/icon.md +2 -2
  249. package/make-kit/components/overview.md +2 -2
  250. package/make-kit/components/select.md +1 -1
  251. package/make-kit/components/table.md +1 -1
  252. package/mcp-manifest.json +2656 -1068
  253. package/mcp-manifest.schema.json +18 -0
  254. package/package.json +11 -6
  255. package/skill/SKILL.md +1 -1
  256. package/skill/references/components.md +11 -3
  257. package/dist/ui/status-dot.d.ts +0 -27
  258. package/dist/ui/status-dot.d.ts.map +0 -1
  259. package/dist/ui/status-dot.js +0 -68
  260. package/dist/ui/status-dot.js.map +0 -1
  261. package/docs/components/ui/status-dot.md +0 -35
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { motionProps as e, tweens as t } from "../lib/motion.js";
3
3
  import { cn as n } from "../lib/utils.js";
4
- import { n as r, r as i, t as a } from "../../_chunks/colors.js";
4
+ import { getTransitionDuration as r, resolveColor as i, useReducedMotion as a } from "../../_chunks/colors.js";
5
5
  import * as o from "react";
6
6
  import { jsx as s, jsxs as c } from "react/jsx-runtime";
7
7
  import { motion as l } from "framer-motion";
8
8
  import { arc as u } from "d3-shape";
9
9
  //#region src/ui/charts/gauge-chart.tsx
10
10
  var d = (e) => e * Math.PI / 180, f = o.forwardRef(({ value: o, max: f = 100, min: p = 0, label: m, valueLabel: h, color: g, trackColor: _ = "var(--color-surface-border)", height: v = 200, startAngle: y = -120, endAngle: b = 120, thickness: x = 16, animate: S = !0, className: C, ...w }, T) => {
11
- let E = i(), D = r(E, S ? 600 : 0), O = S && !E, k = a(g, 0), A = v, j = A / 2, M = Math.min(Math.max(o, p), f), N = f === p ? 0 : (M - p) / (f - p), P = y + (b - y) * N, F = typeof h == "function" ? h(M) : typeof h == "string" ? h : String(M), I = u().innerRadius(j - x).outerRadius(j).startAngle(d(y)).endAngle(d(b)).cornerRadius(x / 2), L = u().innerRadius(j - x).outerRadius(j).startAngle(d(y)).endAngle(d(P)).cornerRadius(x / 2), R = I(null) ?? "", z = L(null) ?? "";
11
+ let E = a(), D = r(E, S ? 600 : 0), O = S && !E, k = i(g, 0), A = v, j = A / 2, M = Math.min(Math.max(o, p), f), N = f === p ? 0 : (M - p) / (f - p), P = y + (b - y) * N, F = typeof h == "function" ? h(M) : typeof h == "string" ? h : String(M), I = u().innerRadius(j - x).outerRadius(j).startAngle(d(y)).endAngle(d(b)).cornerRadius(x / 2), L = u().innerRadius(j - x).outerRadius(j).startAngle(d(y)).endAngle(d(P)).cornerRadius(x / 2), R = I(null) ?? "", z = L(null) ?? "";
12
12
  return /* @__PURE__ */ s(l.div, {
13
13
  ref: T,
14
14
  className: n("inline-flex flex-col items-center", C),
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { r as e } from "../../_chunks/tooltip.js";
3
- import { t } from "../../_chunks/chart-container.js";
2
+ import { Legend as e } from "../../_chunks/tooltip.js";
3
+ import { ChartContainer as t } from "../../_chunks/chart-container.js";
4
4
  import { AreaChart as n } from "./area-chart.js";
5
5
  import { BarChart as r } from "./bar-chart.js";
6
6
  import { GaugeChart as i } from "./gauge-chart.js";
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { motionProps as e, tweens as t } from "../lib/motion.js";
3
3
  import { cn as n } from "../lib/utils.js";
4
- import { n as r, r as i, t as a } from "../../_chunks/tooltip.js";
5
- import { r as o, t as s } from "../../_chunks/colors.js";
6
- import { n as c, t as l } from "../../_chunks/grid-lines.js";
7
- import { t as u } from "../../_chunks/chart-container.js";
4
+ import { ChartTooltip as r, Legend as i, useChartTooltip as a } from "../../_chunks/tooltip.js";
5
+ import { resolveColor as o, useReducedMotion as s } from "../../_chunks/colors.js";
6
+ import { Axis as c, GridLines as l } from "../../_chunks/grid-lines.js";
7
+ import { ChartContainer as u } from "../../_chunks/chart-container.js";
8
8
  import * as d from "react";
9
9
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
10
10
  import { motion as h } from "framer-motion";
@@ -12,7 +12,7 @@ import { scaleLinear as g, scalePoint as _ } from "d3-scale";
12
12
  import { curveLinear as v, curveMonotoneX as y, line as b } from "d3-shape";
13
13
  //#region src/ui/charts/line-chart.tsx
14
14
  var x = d.forwardRef(({ data: d, xKey: x, series: S, curved: C = !1, showDots: w = !1, dotSize: T = 4, strokeWidth: E = 2, height: D = 300, showGrid: O = !0, showTooltip: k = !0, showLegend: A = !1, animate: j = !0, xLabel: M, yLabel: N, ariaLabel: P, className: F, ...I }, L) => {
15
- let { tooltip: R, show: z, hide: B } = r(), V = o(), H = j && !V, U = S.map((e, t) => s(e.color, t));
15
+ let { tooltip: R, show: z, hide: B } = a(), V = s(), H = j && !V, U = S.map((e, t) => o(e.color, t));
16
16
  return /* @__PURE__ */ m(h.div, {
17
17
  ref: L,
18
18
  className: n("relative", F),
@@ -119,7 +119,7 @@ var x = d.forwardRef(({ data: d, xKey: x, series: S, curved: C = !1, showDots: w
119
119
  ] });
120
120
  }
121
121
  }),
122
- k && /* @__PURE__ */ p(a, { state: R }),
122
+ k && /* @__PURE__ */ p(r, { state: R }),
123
123
  A && S.length > 1 && /* @__PURE__ */ p(i, {
124
124
  items: S.map((e, t) => ({
125
125
  label: e.label,
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { motionProps as e, tweens as t } from "../lib/motion.js";
3
3
  import { cn as n } from "../lib/utils.js";
4
- import { n as r, r as i, t as a } from "../../_chunks/tooltip.js";
5
- import { r as o, t as s } from "../../_chunks/colors.js";
4
+ import { ChartTooltip as r, Legend as i, useChartTooltip as a } from "../../_chunks/tooltip.js";
5
+ import { resolveColor as o, useReducedMotion as s } from "../../_chunks/colors.js";
6
6
  import * as c from "react";
7
7
  import { useEffect as l, useRef as u, useState as d } from "react";
8
8
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
@@ -10,7 +10,7 @@ import { motion as h } from "framer-motion";
10
10
  import { arc as g, pie as _ } from "d3-shape";
11
11
  //#region src/ui/charts/pie-chart.tsx
12
12
  var v = c.forwardRef(({ data: c, variant: v = "pie", innerRadius: y = .6, padAngle: b = 0, cornerRadius: x = 0, height: S = 300, showTooltip: C = !0, showLegend: w = !1, showLabels: T = !1, animate: E = !0, className: D, centerLabel: O, ariaLabel: k, ...A }, j) => {
13
- let M = u(null), [N, P] = d(0), [F, I] = d(null), { tooltip: L, show: R, hide: z } = r(), B = o(), V = E && !B;
13
+ let M = u(null), [N, P] = d(0), [F, I] = d(null), { tooltip: L, show: R, hide: z } = a(), B = s(), V = E && !B;
14
14
  l(() => {
15
15
  if (!M.current) return;
16
16
  let e = new ResizeObserver((e) => {
@@ -19,7 +19,7 @@ var v = c.forwardRef(({ data: c, variant: v = "pie", innerRadius: y = .6, padAng
19
19
  });
20
20
  return e.observe(M.current), () => e.disconnect();
21
21
  }, []);
22
- let H = (N > 0 ? Math.min(N, S) : S) / 2, U = v === "donut" ? H * y : 0, W = c.map((e, t) => s(e.color, t)), G = c.reduce((e, t) => e + t.value, 0), K = _().value((e) => e.value).padAngle(b).sort(null)(c), q = g().innerRadius(U).outerRadius(H - 2).cornerRadius(x), J = U + (H - 2 - U) * .7, Y = g().innerRadius(J).outerRadius(J);
22
+ let H = (N > 0 ? Math.min(N, S) : S) / 2, U = v === "donut" ? H * y : 0, W = c.map((e, t) => o(e.color, t)), G = c.reduce((e, t) => e + t.value, 0), K = _().value((e) => e.value).padAngle(b).sort(null)(c), q = g().innerRadius(U).outerRadius(H - 2).cornerRadius(x), J = U + (H - 2 - U) * .7, Y = g().innerRadius(J).outerRadius(J);
23
23
  return /* @__PURE__ */ m(h.div, {
24
24
  ref: (e) => {
25
25
  M.current = e, typeof j == "function" ? j(e) : j && (j.current = e);
@@ -97,7 +97,7 @@ var v = c.forwardRef(({ data: c, variant: v = "pie", innerRadius: y = .6, padAng
97
97
  })
98
98
  ]
99
99
  })
100
- }), C && /* @__PURE__ */ p(a, { state: L })] }), w && /* @__PURE__ */ p(i, {
100
+ }), C && /* @__PURE__ */ p(r, { state: L })] }), w && /* @__PURE__ */ p(i, {
101
101
  items: c.map((e, t) => ({
102
102
  label: e.label,
103
103
  color: W[t]
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { motionProps as e, tweens as t } from "../lib/motion.js";
3
3
  import { cn as n } from "../lib/utils.js";
4
- import { n as r, r as i, t as a } from "../../_chunks/tooltip.js";
5
- import { r as o, t as s } from "../../_chunks/colors.js";
4
+ import { ChartTooltip as r, Legend as i, useChartTooltip as a } from "../../_chunks/tooltip.js";
5
+ import { resolveColor as o, useReducedMotion as s } from "../../_chunks/colors.js";
6
6
  import * as c from "react";
7
7
  import { useEffect as l, useRef as u, useState as d } from "react";
8
8
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
@@ -10,7 +10,7 @@ import { motion as h } from "framer-motion";
10
10
  import { curveLinearClosed as g, lineRadial as _ } from "d3-shape";
11
11
  //#region src/ui/charts/radar-chart.tsx
12
12
  var v = c.forwardRef(({ data: c, axes: v, series: y, maxValue: b, levels: x = 5, fillOpacity: S = .25, showDots: C = !1, height: w = 300, showTooltip: T = !0, showLegend: E = !1, animate: D = !0, ariaLabel: O, className: k, ...A }, j) => {
13
- let M = u(null), [N, P] = d(0), { tooltip: F, show: I, hide: L } = r(), R = o(), z = D && !R;
13
+ let M = u(null), [N, P] = d(0), { tooltip: F, show: I, hide: L } = a(), R = s(), z = D && !R;
14
14
  l(() => {
15
15
  if (!M.current) return;
16
16
  let e = new ResizeObserver((e) => {
@@ -19,7 +19,7 @@ var v = c.forwardRef(({ data: c, axes: v, series: y, maxValue: b, levels: x = 5,
19
19
  });
20
20
  return e.observe(M.current), () => e.disconnect();
21
21
  }, []);
22
- let B = (N > 0 ? Math.min(N, w) : w) / 2 - 40, V = y.map((e, t) => s(e.color, t)), H = b ?? Math.max(...c.flatMap((e) => y.map((t) => Number(e[t.key]) || 0)), 1), U = 2 * Math.PI / v.length, W = _().radius((e) => B * e / H).angle((e, t) => t * U).curve(g), G = (e) => v.map((t, n) => Number(c[n]?.[e]) || 0), K = (e, t) => {
22
+ let B = (N > 0 ? Math.min(N, w) : w) / 2 - 40, V = y.map((e, t) => o(e.color, t)), H = b ?? Math.max(...c.flatMap((e) => y.map((t) => Number(e[t.key]) || 0)), 1), U = 2 * Math.PI / v.length, W = _().radius((e) => B * e / H).angle((e, t) => t * U).curve(g), G = (e) => v.map((t, n) => Number(c[n]?.[e]) || 0), K = (e, t) => {
23
23
  let n = U * e - Math.PI / 2, r = B * t / H;
24
24
  return {
25
25
  x: r * Math.cos(n),
@@ -156,7 +156,7 @@ var v = c.forwardRef(({ data: c, axes: v, series: y, maxValue: b, levels: x = 5,
156
156
  })
157
157
  ]
158
158
  })
159
- }), T && /* @__PURE__ */ p(a, { state: F })] }), E && /* @__PURE__ */ p(i, {
159
+ }), T && /* @__PURE__ */ p(r, { state: F })] }), E && /* @__PURE__ */ p(i, {
160
160
  items: y.map((e, t) => ({
161
161
  label: e.label,
162
162
  color: V[t]
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { cn as e } from "../lib/utils.js";
3
- import { r as t, t as n } from "../../_chunks/colors.js";
3
+ import { resolveColor as t, useReducedMotion as n } from "../../_chunks/colors.js";
4
4
  import * as r from "react";
5
5
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
6
  import { motion as o } from "framer-motion";
@@ -11,7 +11,7 @@ var d = {
11
11
  duration: 1,
12
12
  ease: "easeOut"
13
13
  }, f = r.forwardRef(({ data: r, variant: f = "line", width: p = 120, height: m = 32, color: h, showLastDot: g = !1, strokeWidth: _ = 1.5, animate: v = !0, className: y, ...b }, x) => {
14
- let S = n(h, 0), C = t(), w = v && !C;
14
+ let S = t(h, 0), C = n(), w = v && !C;
15
15
  if (!r.length) return null;
16
16
  let T = f === "bar" ? 1 : _, E = p - T * 2, D = m - T * 2, O = s().domain([0, Math.max(r.length - 1, 1)]).range([T, T + E]), k = Math.min(...r), A = Math.max(...r), j = k === A ? [k - 1, A + 1] : [k, A], M = s().domain(j).range([T + D, T]);
17
17
  if (f === "bar") {
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../../_chunks/chat.js";
3
- export { t as DateSeparator, i as Message, e as MessageInput, n as MessageList, a as SystemMessage, r as TypingIndicator, s as UnreadSeparator, o as useMessageContext };
2
+ import { DateSeparator as e, Message as t, MessageInput as n, MessageList as r, SystemMessage as i, TypingIndicator as a, UnreadSeparator as o, useMessageContext as s } from "../../_chunks/chat.js";
3
+ export { e as DateSeparator, t as Message, n as MessageInput, r as MessageList, i as SystemMessage, a as TypingIndicator, o as UnreadSeparator, s as useMessageContext };
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { FieldState } from './lib/field-state';
2
3
  import * as CheckboxPrimitive from '../primitives/react-checkbox';
3
4
  import * as React from 'react';
4
5
  /**
@@ -17,7 +18,7 @@ import * as React from 'react';
17
18
  *
18
19
  * @example
19
20
  * // Error state when required checkbox is not checked:
20
- * <Checkbox error={!termsAccepted} checked={termsAccepted} onCheckedChange={(v) => setTerms(v === true)} />
21
+ * <Checkbox state={!termsAccepted ? 'error' : 'default'} checked={termsAccepted} onCheckedChange={(v) => setTerms(v === true)} />
21
22
  *
22
23
  * @example
23
24
  * // "Select all" checkbox with indeterminate state:
@@ -29,7 +30,8 @@ import * as React from 'react';
29
30
  * // These are just a few ways — feel free to combine props creatively!
30
31
  */
31
32
  export interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {
32
- error?: boolean;
33
+ /** Validation/feedback state. `'error'` also sets `aria-invalid`. Inherited from `FormField` when omitted. */
34
+ state?: FieldState;
33
35
  indeterminate?: boolean;
34
36
  /** Control size — `sm` (20px), `md` (24px, default, WCAG compliant), `lg` (28px). */
35
37
  size?: 'sm' | 'md' | 'lg';
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/ui/checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAE/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC;IAClG,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,qFAAqF;IACrF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1B;AAcD,QAAA,MAAM,QAAQ,yFAuGZ,CAAA;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/ui/checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAA;AAE/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,mBAAmB,CAAA;AAWtE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC;IAClG,8GAA8G;IAC9G,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,qFAAqF;IACrF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC1B;AAcD,QAAA,MAAM,QAAQ,yFAuGZ,CAAA;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -1,50 +1,55 @@
1
1
  "use client";
2
- import { Xt as e, Zt as t } from "../_chunks/primitives.js";
2
+ import { Checkbox as e, CheckboxIndicator as t } from "../_chunks/primitives.js";
3
3
  import { durations as n } from "./lib/motion.js";
4
4
  import { cn as r } from "./lib/utils.js";
5
5
  import { useFormField as i } from "./form.js";
6
- import * as a from "react";
7
- import { jsx as o } from "react/jsx-runtime";
8
- import { AnimatePresence as s, motion as c } from "framer-motion";
6
+ import { resolveFieldState as a } from "../_chunks/field-state.js";
7
+ import * as o from "react";
8
+ import { jsx as s } from "react/jsx-runtime";
9
+ import { AnimatePresence as c, motion as l } from "framer-motion";
9
10
  //#region src/ui/checkbox.tsx
10
- var l = {
11
+ var u = {
12
+ error: "border-error-7 bg-error-3",
13
+ warning: "border-warning-7 bg-warning-3",
14
+ success: "border-success-7 bg-success-3"
15
+ }, d = {
11
16
  sm: "h-5 w-5",
12
17
  md: "h-6 w-6",
13
18
  lg: "h-7 w-7"
14
- }, u = {
19
+ }, f = {
15
20
  sm: "h-[14px] w-[14px]",
16
21
  md: "h-[18px] w-[18px]",
17
22
  lg: "h-5 w-5"
18
- }, d = a.forwardRef(({ className: d, error: f, indeterminate: p, size: m = "md", checked: h, onCheckedChange: g, defaultChecked: _, ...v }, y) => {
19
- let b = h !== void 0, [x, S] = a.useState(p ? "indeterminate" : !!_), C = i(), w = f ?? C.state === "error", T = v["aria-describedby"] ?? C.helperTextId, E = v["aria-required"] ?? C.required, D = p ? "indeterminate" : b ? h : x, O = D === !0 || D === "indeterminate", k = a.useCallback((e) => {
20
- b || S(e), g?.(e);
21
- }, [b, g]);
22
- return /* @__PURE__ */ o(e, {
23
- ref: y,
24
- checked: b || p ? D : void 0,
25
- defaultChecked: !b && !p ? _ : void 0,
26
- onCheckedChange: k,
27
- className: r("touch-target peer flex items-center justify-center shrink-0 rounded-control-inner", l[m], "border border-surface-border-strong", "bg-surface-raised-hover", "transition-colors duration-fast-01 ease-productive-standard", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", "disabled:cursor-not-allowed disabled:opacity-action-disabled", "data-[state=unchecked]:hover:border-accent-7 data-[state=unchecked]:hover:bg-surface-raised-active", "data-[state=checked]:bg-accent-9 data-[state=checked]:border-accent-7 data-[state=checked]:text-accent-fg", "data-[state=indeterminate]:bg-accent-9 data-[state=indeterminate]:border-accent-7 data-[state=indeterminate]:text-accent-fg", w && "border-error-7 bg-error-3", d),
28
- "aria-invalid": w || void 0,
29
- "aria-describedby": T,
30
- "aria-required": E || void 0,
31
- ...v,
32
- children: /* @__PURE__ */ o(s, { children: O && /* @__PURE__ */ o(t, {
23
+ }, p = o.forwardRef(({ className: p, state: m, indeterminate: h, size: g = "md", checked: _, onCheckedChange: v, defaultChecked: y, ...b }, x) => {
24
+ let S = _ !== void 0, [C, w] = o.useState(h ? "indeterminate" : !!y), T = i(), E = a(m, T.state), D = b["aria-describedby"] ?? T.helperTextId, O = b["aria-required"] ?? T.required, k = h ? "indeterminate" : S ? _ : C, A = k === !0 || k === "indeterminate", j = o.useCallback((e) => {
25
+ S || w(e), v?.(e);
26
+ }, [S, v]);
27
+ return /* @__PURE__ */ s(e, {
28
+ ref: x,
29
+ checked: S || h ? k : void 0,
30
+ defaultChecked: !S && !h ? y : void 0,
31
+ onCheckedChange: j,
32
+ className: r("touch-target peer flex items-center justify-center shrink-0 rounded-control-inner", d[g], "border border-surface-border-strong", "bg-surface-raised-hover", "transition-colors duration-fast-01 ease-productive-standard", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", "disabled:cursor-not-allowed disabled:opacity-action-disabled", "data-[state=unchecked]:hover:border-accent-7 data-[state=unchecked]:hover:bg-surface-raised-active", "data-[state=checked]:bg-accent-9 data-[state=checked]:border-accent-7 data-[state=checked]:text-accent-fg", "data-[state=indeterminate]:bg-accent-9 data-[state=indeterminate]:border-accent-7 data-[state=indeterminate]:text-accent-fg", E && u[E], p),
33
+ "aria-invalid": E === "error" || void 0,
34
+ "aria-describedby": D,
35
+ "aria-required": O || void 0,
36
+ ...b,
37
+ children: /* @__PURE__ */ s(c, { children: A && /* @__PURE__ */ s(t, {
33
38
  forceMount: !0,
34
39
  asChild: !0,
35
- children: /* @__PURE__ */ o(c.span, {
40
+ children: /* @__PURE__ */ s(l.span, {
36
41
  className: "flex items-center justify-center text-current",
37
42
  initial: { opacity: 0 },
38
43
  animate: { opacity: 1 },
39
44
  exit: { opacity: 0 },
40
45
  transition: { duration: n.fast01 },
41
- children: /* @__PURE__ */ o("svg", {
46
+ children: /* @__PURE__ */ s("svg", {
42
47
  width: "16",
43
48
  height: "16",
44
49
  viewBox: "0 0 16 16",
45
50
  fill: "none",
46
- className: u[m],
47
- children: D === "indeterminate" ? /* @__PURE__ */ o(c.line, {
51
+ className: f[g],
52
+ children: k === "indeterminate" ? /* @__PURE__ */ s(l.line, {
48
53
  x1: "4",
49
54
  y1: "8",
50
55
  x2: "12",
@@ -59,7 +64,7 @@ var l = {
59
64
  duration: n.moderate02,
60
65
  ease: "easeOut"
61
66
  }
62
- }) : /* @__PURE__ */ o(c.path, {
67
+ }) : /* @__PURE__ */ s(l.path, {
63
68
  d: "M3.5 8.5l3 3 6-6",
64
69
  stroke: "currentColor",
65
70
  strokeWidth: "2",
@@ -79,6 +84,6 @@ var l = {
79
84
  }) })
80
85
  });
81
86
  });
82
- d.displayName = e.displayName;
87
+ p.displayName = e.displayName;
83
88
  //#endregion
84
- export { d as Checkbox };
89
+ export { p as Checkbox };
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":[],"sources":["../../src/ui/checkbox.tsx"],"sourcesContent":["'use client'\n\nimport * as CheckboxPrimitive from '@primitives/react-checkbox'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { useFormField } from './form'\nimport { durations } from './lib/motion'\nimport { cn } from './lib/utils'\n\n/**\n * Props for Checkbox — a Radix-powered accessible checkbox with error state styling and\n * an indeterminate state for \"select all\" row controls.\n *\n * **Indeterminate:** Pass `indeterminate={true}` to show the \"−\" dash (overrides `checked`).\n * This is correct for \"select all\" headers when only some rows are selected.\n *\n * **Controlled:** Use `checked` + `onCheckedChange` for controlled usage.\n * `onCheckedChange` receives `true | false | 'indeterminate'` from Radix.\n *\n * @example\n * // Basic controlled checkbox:\n * <Checkbox checked={agreed} onCheckedChange={(v) => setAgreed(v === true)} />\n *\n * @example\n * // Error state when required checkbox is not checked:\n * <Checkbox error={!termsAccepted} checked={termsAccepted} onCheckedChange={(v) => setTerms(v === true)} />\n *\n * @example\n * // \"Select all\" checkbox with indeterminate state:\n * <Checkbox\n * indeterminate={someSelected && !allSelected}\n * checked={allSelected}\n * onCheckedChange={(v) => toggleAll(v === true)}\n * />\n * // These are just a few ways — feel free to combine props creatively!\n */\nexport interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n error?: boolean\n indeterminate?: boolean\n /** Control size — `sm` (20px), `md` (24px, default, WCAG compliant), `lg` (28px). */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst checkboxSizeClasses = {\n sm: 'h-5 w-5',\n md: 'h-6 w-6',\n lg: 'h-7 w-7',\n} as const\n\nconst checkboxIconClasses = {\n sm: 'h-[14px] w-[14px]',\n md: 'h-[18px] w-[18px]',\n lg: 'h-5 w-5',\n} as const\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, error, indeterminate, size = 'md', checked, onCheckedChange, defaultChecked, ...props }, ref) => {\n // Track internal state so AnimatePresence works for both controlled & uncontrolled usage\n const isControlled = checked !== undefined\n const [internalChecked, setInternalChecked] = React.useState<boolean | 'indeterminate'>(\n indeterminate ? 'indeterminate' : (defaultChecked ? true : false),\n )\n\n const fieldCtx = useFormField()\n const isError = error ?? fieldCtx.state === 'error'\n const ariaDescribedBy = props['aria-describedby'] ?? fieldCtx.helperTextId\n const ariaRequired = props['aria-required'] ?? fieldCtx.required\n\n const actualChecked = indeterminate ? 'indeterminate' : (isControlled ? checked : internalChecked)\n const isActive = actualChecked === true || actualChecked === 'indeterminate'\n\n const handleCheckedChange = React.useCallback(\n (value: boolean | 'indeterminate') => {\n if (!isControlled) setInternalChecked(value)\n onCheckedChange?.(value)\n },\n [isControlled, onCheckedChange],\n )\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={isControlled || indeterminate ? actualChecked : undefined}\n defaultChecked={!isControlled && !indeterminate ? defaultChecked : undefined}\n onCheckedChange={handleCheckedChange}\n className={cn(\n 'touch-target peer flex items-center justify-center shrink-0 rounded-control-inner',\n checkboxSizeClasses[size],\n 'border border-surface-border-strong',\n 'bg-surface-raised-hover',\n 'transition-colors duration-fast-01 ease-productive-standard',\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-action-disabled',\n 'data-[state=unchecked]:hover:border-accent-7 data-[state=unchecked]:hover:bg-surface-raised-active',\n 'data-[state=checked]:bg-accent-9 data-[state=checked]:border-accent-7 data-[state=checked]:text-accent-fg',\n 'data-[state=indeterminate]:bg-accent-9 data-[state=indeterminate]:border-accent-7 data-[state=indeterminate]:text-accent-fg',\n isError && 'border-error-7 bg-error-3',\n className,\n )}\n aria-invalid={isError || undefined}\n aria-describedby={ariaDescribedBy}\n aria-required={ariaRequired || undefined}\n {...props}\n >\n <AnimatePresence>\n {isActive && (\n <CheckboxPrimitive.Indicator forceMount asChild>\n <motion.span\n className=\"flex items-center justify-center text-current\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: durations.fast01 }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className={checkboxIconClasses[size]}\n >\n {actualChecked === 'indeterminate' ? (\n <motion.line\n x1=\"4\"\n y1=\"8\"\n x2=\"12\"\n y2=\"8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n exit={{ pathLength: 0 }}\n transition={{ duration: durations.moderate02, ease: 'easeOut' }}\n />\n ) : (\n <motion.path\n d=\"M3.5 8.5l3 3 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n exit={{ pathLength: 0 }}\n transition={{ duration: durations.moderate02, ease: 'easeOut' }}\n />\n )}\n </svg>\n </motion.span>\n </CheckboxPrimitive.Indicator>\n )}\n </AnimatePresence>\n </CheckboxPrimitive.Root>\n )\n})\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n"],"mappings":";;;;;;;;;AA4CA,IAAM,IAAsB;CAC1B,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEK,IAAsB;CAC1B,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEK,IAAW,EAAM,YAGpB,EAAE,cAAW,UAAO,kBAAe,UAAO,MAAM,YAAS,oBAAiB,mBAAgB,GAAG,KAAS,MAAQ;CAE/G,IAAM,IAAe,MAAY,KAAA,GAC3B,CAAC,GAAiB,KAAsB,EAAM,SAClD,IAAgB,kBAAmB,IACpC,EAEK,IAAW,GAAc,EACzB,IAAU,KAAS,EAAS,UAAU,SACtC,IAAkB,EAAM,uBAAuB,EAAS,cACxD,IAAe,EAAM,oBAAoB,EAAS,UAElD,IAAgB,IAAgB,kBAAmB,IAAe,IAAU,GAC5E,IAAW,MAAkB,MAAQ,MAAkB,iBAEvD,IAAsB,EAAM,aAC/B,MAAqC;AAEpC,EADK,KAAc,EAAmB,EAAM,EAC5C,IAAkB,EAAM;IAE1B,CAAC,GAAc,EAAgB,CAChC;AAED,QACE,kBAAC,GAAD;EACO;EACL,SAAS,KAAgB,IAAgB,IAAgB,KAAA;EACzD,gBAAgB,CAAC,KAAgB,CAAC,IAAgB,IAAiB,KAAA;EACnE,iBAAiB;EACjB,WAAW,EACT,qFACA,EAAoB,IACpB,uCACA,2BACA,+DACA,6GACA,gEACA,sGACA,6GACA,+HACA,KAAW,6BACX,EACD;EACD,gBAAc,KAAW,KAAA;EACzB,oBAAkB;EAClB,iBAAe,KAAgB,KAAA;EAC/B,GAAI;YAEJ,kBAAC,GAAD,EAAA,UACG,KACC,kBAAC,GAAD;GAA6B,YAAA;GAAW,SAAA;aACtC,kBAAC,EAAO,MAAR;IACE,WAAU;IACV,SAAS,EAAE,SAAS,GAAG;IACvB,SAAS,EAAE,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS,GAAG;IACpB,YAAY,EAAE,UAAU,EAAU,QAAQ;cAE1C,kBAAC,OAAD;KACE,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,WAAW,EAAoB;eAE9B,MAAkB,kBACjB,kBAAC,EAAO,MAAR;MACE,IAAG;MACH,IAAG;MACH,IAAG;MACH,IAAG;MACH,QAAO;MACP,aAAY;MACZ,eAAc;MACd,SAAS,EAAE,YAAY,GAAG;MAC1B,SAAS,EAAE,YAAY,GAAG;MAC1B,MAAM,EAAE,YAAY,GAAG;MACvB,YAAY;OAAE,UAAU,EAAU;OAAY,MAAM;OAAW;MAC/D,CAAA,GAEF,kBAAC,EAAO,MAAR;MACE,GAAE;MACF,QAAO;MACP,aAAY;MACZ,eAAc;MACd,gBAAe;MACf,MAAK;MACL,SAAS,EAAE,YAAY,GAAG;MAC1B,SAAS,EAAE,YAAY,GAAG;MAC1B,MAAM,EAAE,YAAY,GAAG;MACvB,YAAY;OAAE,UAAU,EAAU;OAAY,MAAM;OAAW;MAC/D,CAAA;KAEA,CAAA;IACM,CAAA;GACc,CAAA,EAEhB,CAAA;EACK,CAAA;EAE3B;AACF,EAAS,cAAA,EAAqC"}
1
+ {"version":3,"file":"checkbox.js","names":[],"sources":["../../src/ui/checkbox.tsx"],"sourcesContent":["'use client'\n\nimport * as CheckboxPrimitive from '@primitives/react-checkbox'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { useFormField } from './form'\nimport { type FieldState, resolveFieldState } from './lib/field-state'\nimport { durations } from './lib/motion'\nimport { cn } from './lib/utils'\n\n/** Border + background tint per validation state (checked state uses accent regardless). */\nconst stateTintClasses: Record<Exclude<FieldState, 'default'>, string> = {\n error: 'border-error-7 bg-error-3',\n warning: 'border-warning-7 bg-warning-3',\n success: 'border-success-7 bg-success-3',\n}\n\n/**\n * Props for Checkbox — a Radix-powered accessible checkbox with error state styling and\n * an indeterminate state for \"select all\" row controls.\n *\n * **Indeterminate:** Pass `indeterminate={true}` to show the \"−\" dash (overrides `checked`).\n * This is correct for \"select all\" headers when only some rows are selected.\n *\n * **Controlled:** Use `checked` + `onCheckedChange` for controlled usage.\n * `onCheckedChange` receives `true | false | 'indeterminate'` from Radix.\n *\n * @example\n * // Basic controlled checkbox:\n * <Checkbox checked={agreed} onCheckedChange={(v) => setAgreed(v === true)} />\n *\n * @example\n * // Error state when required checkbox is not checked:\n * <Checkbox state={!termsAccepted ? 'error' : 'default'} checked={termsAccepted} onCheckedChange={(v) => setTerms(v === true)} />\n *\n * @example\n * // \"Select all\" checkbox with indeterminate state:\n * <Checkbox\n * indeterminate={someSelected && !allSelected}\n * checked={allSelected}\n * onCheckedChange={(v) => toggleAll(v === true)}\n * />\n * // These are just a few ways — feel free to combine props creatively!\n */\nexport interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n /** Validation/feedback state. `'error'` also sets `aria-invalid`. Inherited from `FormField` when omitted. */\n state?: FieldState\n indeterminate?: boolean\n /** Control size — `sm` (20px), `md` (24px, default, WCAG compliant), `lg` (28px). */\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst checkboxSizeClasses = {\n sm: 'h-5 w-5',\n md: 'h-6 w-6',\n lg: 'h-7 w-7',\n} as const\n\nconst checkboxIconClasses = {\n sm: 'h-[14px] w-[14px]',\n md: 'h-[18px] w-[18px]',\n lg: 'h-5 w-5',\n} as const\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, state: stateProp, indeterminate, size = 'md', checked, onCheckedChange, defaultChecked, ...props }, ref) => {\n // Track internal state so AnimatePresence works for both controlled & uncontrolled usage\n const isControlled = checked !== undefined\n const [internalChecked, setInternalChecked] = React.useState<boolean | 'indeterminate'>(\n indeterminate ? 'indeterminate' : (defaultChecked ? true : false),\n )\n\n const fieldCtx = useFormField()\n const state = resolveFieldState(stateProp, fieldCtx.state)\n const ariaDescribedBy = props['aria-describedby'] ?? fieldCtx.helperTextId\n const ariaRequired = props['aria-required'] ?? fieldCtx.required\n\n const actualChecked = indeterminate ? 'indeterminate' : (isControlled ? checked : internalChecked)\n const isActive = actualChecked === true || actualChecked === 'indeterminate'\n\n const handleCheckedChange = React.useCallback(\n (value: boolean | 'indeterminate') => {\n if (!isControlled) setInternalChecked(value)\n onCheckedChange?.(value)\n },\n [isControlled, onCheckedChange],\n )\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={isControlled || indeterminate ? actualChecked : undefined}\n defaultChecked={!isControlled && !indeterminate ? defaultChecked : undefined}\n onCheckedChange={handleCheckedChange}\n className={cn(\n 'touch-target peer flex items-center justify-center shrink-0 rounded-control-inner',\n checkboxSizeClasses[size],\n 'border border-surface-border-strong',\n 'bg-surface-raised-hover',\n 'transition-colors duration-fast-01 ease-productive-standard',\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-action-disabled',\n 'data-[state=unchecked]:hover:border-accent-7 data-[state=unchecked]:hover:bg-surface-raised-active',\n 'data-[state=checked]:bg-accent-9 data-[state=checked]:border-accent-7 data-[state=checked]:text-accent-fg',\n 'data-[state=indeterminate]:bg-accent-9 data-[state=indeterminate]:border-accent-7 data-[state=indeterminate]:text-accent-fg',\n state && stateTintClasses[state],\n className,\n )}\n aria-invalid={state === 'error' || undefined}\n aria-describedby={ariaDescribedBy}\n aria-required={ariaRequired || undefined}\n {...props}\n >\n <AnimatePresence>\n {isActive && (\n <CheckboxPrimitive.Indicator forceMount asChild>\n <motion.span\n className=\"flex items-center justify-center text-current\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: durations.fast01 }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className={checkboxIconClasses[size]}\n >\n {actualChecked === 'indeterminate' ? (\n <motion.line\n x1=\"4\"\n y1=\"8\"\n x2=\"12\"\n y2=\"8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n exit={{ pathLength: 0 }}\n transition={{ duration: durations.moderate02, ease: 'easeOut' }}\n />\n ) : (\n <motion.path\n d=\"M3.5 8.5l3 3 6-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n exit={{ pathLength: 0 }}\n transition={{ duration: durations.moderate02, ease: 'easeOut' }}\n />\n )}\n </svg>\n </motion.span>\n </CheckboxPrimitive.Indicator>\n )}\n </AnimatePresence>\n </CheckboxPrimitive.Root>\n )\n})\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n"],"mappings":";;;;;;;;;;AAYA,IAAM,IAAmE;CACvE,OAAO;CACP,SAAS;CACT,SAAS;CACV,EAqCK,IAAsB;CAC1B,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEK,IAAsB;CAC1B,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEK,IAAW,EAAM,YAGpB,EAAE,cAAW,OAAO,GAAW,kBAAe,UAAO,MAAM,YAAS,oBAAiB,mBAAgB,GAAG,KAAS,MAAQ;CAE1H,IAAM,IAAe,MAAY,KAAA,GAC3B,CAAC,GAAiB,KAAsB,EAAM,SAClD,IAAgB,kBAAmB,IACpC,EAEK,IAAW,GAAc,EACzB,IAAQ,EAAkB,GAAW,EAAS,MAAM,EACpD,IAAkB,EAAM,uBAAuB,EAAS,cACxD,IAAe,EAAM,oBAAoB,EAAS,UAElD,IAAgB,IAAgB,kBAAmB,IAAe,IAAU,GAC5E,IAAW,MAAkB,MAAQ,MAAkB,iBAEvD,IAAsB,EAAM,aAC/B,MAAqC;AAEpC,EADK,KAAc,EAAmB,EAAM,EAC5C,IAAkB,EAAM;IAE1B,CAAC,GAAc,EAAgB,CAChC;AAED,QACE,kBAAC,GAAD;EACO;EACL,SAAS,KAAgB,IAAgB,IAAgB,KAAA;EACzD,gBAAgB,CAAC,KAAgB,CAAC,IAAgB,IAAiB,KAAA;EACnE,iBAAiB;EACjB,WAAW,EACT,qFACA,EAAoB,IACpB,uCACA,2BACA,+DACA,6GACA,gEACA,sGACA,6GACA,+HACA,KAAS,EAAiB,IAC1B,EACD;EACD,gBAAc,MAAU,WAAW,KAAA;EACnC,oBAAkB;EAClB,iBAAe,KAAgB,KAAA;EAC/B,GAAI;YAEJ,kBAAC,GAAD,EAAA,UACG,KACC,kBAAC,GAAD;GAA6B,YAAA;GAAW,SAAA;aACtC,kBAAC,EAAO,MAAR;IACE,WAAU;IACV,SAAS,EAAE,SAAS,GAAG;IACvB,SAAS,EAAE,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS,GAAG;IACpB,YAAY,EAAE,UAAU,EAAU,QAAQ;cAE1C,kBAAC,OAAD;KACE,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,WAAW,EAAoB;eAE9B,MAAkB,kBACjB,kBAAC,EAAO,MAAR;MACE,IAAG;MACH,IAAG;MACH,IAAG;MACH,IAAG;MACH,QAAO;MACP,aAAY;MACZ,eAAc;MACd,SAAS,EAAE,YAAY,GAAG;MAC1B,SAAS,EAAE,YAAY,GAAG;MAC1B,MAAM,EAAE,YAAY,GAAG;MACvB,YAAY;OAAE,UAAU,EAAU;OAAY,MAAM;OAAW;MAC/D,CAAA,GAEF,kBAAC,EAAO,MAAR;MACE,GAAE;MACF,QAAO;MACP,aAAY;MACZ,eAAc;MACd,gBAAe;MACf,MAAK;MACL,SAAS,EAAE,YAAY,GAAG;MAC1B,SAAS,EAAE,YAAY,GAAG;MAC1B,MAAM,EAAE,YAAY,GAAG;MACvB,YAAY;OAAE,UAAU,EAAU;OAAY,MAAM;OAAW;MAC/D,CAAA;KAEA,CAAA;IACM,CAAA;GACc,CAAA,EAEhB,CAAA;EACK,CAAA;EAE3B;AACF,EAAS,cAAA,EAAqC"}
@@ -1,22 +1,22 @@
1
1
  "use client";
2
- import { Bn as e, Vn as t, zn as n } from "../_chunks/primitives.js";
2
+ import { Content$3 as e, Root$9 as t, Trigger$10 as n } from "../_chunks/primitives.js";
3
3
  import { tweens as r } from "./lib/motion.js";
4
4
  import { cn as i } from "./lib/utils.js";
5
5
  import * as a from "react";
6
6
  import { jsx as o } from "react/jsx-runtime";
7
7
  import { motion as s } from "framer-motion";
8
8
  //#region src/ui/collapsible.tsx
9
- var c = e, l = t, u = a.forwardRef(({ className: e, children: t, ...a }, c) => /* @__PURE__ */ o(n, {
9
+ var c = t, l = n, u = a.forwardRef(({ className: t, children: n, ...a }, c) => /* @__PURE__ */ o(e, {
10
10
  ref: c,
11
- className: i("overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up", e),
11
+ className: i("overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up", t),
12
12
  ...a,
13
13
  children: /* @__PURE__ */ o(s.div, {
14
14
  initial: !1,
15
15
  animate: { opacity: 1 },
16
16
  transition: r.fade,
17
- children: t
17
+ children: n
18
18
  })
19
19
  }));
20
- u.displayName = n.displayName;
20
+ u.displayName = e.displayName;
21
21
  //#endregion
22
22
  export { c as Collapsible, u as CollapsibleContent, l as CollapsibleTrigger };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { durations as e, springs as t } from "./lib/motion.js";
3
3
  import { cn as n } from "./lib/utils.js";
4
- import { t as r } from "../_chunks/vendor-client.js";
5
- import { i, r as a, t as o } from "../_chunks/popover.js";
4
+ import { Z as r } from "../_chunks/vendor-client.js";
5
+ import { Popover as i, PopoverContent as a, PopoverTrigger as o } from "../_chunks/popover.js";
6
6
  import * as s from "react";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  import { AnimatePresence as u, motion as d } from "framer-motion";
@@ -174,10 +174,10 @@ var y = s.forwardRef(({ value: y = "#000000", onChange: b, presets: x, disabled:
174
174
  ref: k,
175
175
  className: n("inline-flex flex-col", D),
176
176
  ...O,
177
- children: /* @__PURE__ */ l(o, {
177
+ children: /* @__PURE__ */ l(i, {
178
178
  open: M,
179
179
  onOpenChange: H,
180
- children: [/* @__PURE__ */ c(i, {
180
+ children: [/* @__PURE__ */ c(o, {
181
181
  asChild: !0,
182
182
  children: E === "inline" ? /* @__PURE__ */ c(d.button, {
183
183
  type: "button",
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { VariantProps } from 'class-variance-authority';
3
+ import { FieldState } from './lib/field-state';
3
4
  import { IconInput } from './lib/icon-input';
4
5
  import * as React from 'react';
5
6
  export declare const comboboxTriggerVariants: (props?: ({
@@ -83,6 +84,8 @@ interface ComboboxBaseProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '
83
84
  accessibleLabel?: string;
84
85
  /** Size of the trigger. Controls height, text size, padding, and pill sizing. */
85
86
  size?: ComboboxSize;
87
+ /** Validation/feedback state. `'error'` also sets `aria-invalid`. Inherited from `FormField` when omitted. */
88
+ state?: FieldState;
86
89
  }
87
90
  interface ComboboxSingleProps extends ComboboxBaseProps {
88
91
  multiple?: false;
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/ui/combobox.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,eAAO,MAAM,uBAAuB;;8EAmBnC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AA0B5F;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,UAAU,iBAAkB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxF,+CAA+C;IAC/C,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oGAAoG;IACpG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAA;IAC7E,4FAA4F;IAC5F,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iFAAiF;IACjF,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,UAAU,qBAAsB,SAAQ,iBAAiB;IACvD,QAAQ,EAAE,IAAI,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CACzC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,qBAAqB,CAAA;AAQvE,QAAA,MAAM,QAAQ,yFAiZb,CAAA;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/ui/combobox.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAYjD,eAAO,MAAM,uBAAuB;;8EAmBnC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AA0B5F;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,UAAU,iBAAkB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxF,+CAA+C;IAC/C,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oGAAoG;IACpG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAA;IAC7E,4FAA4F;IAC5F,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iFAAiF;IACjF,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,8GAA8G;IAC9G,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAED,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,UAAU,qBAAsB,SAAQ,iBAAiB;IACvD,QAAQ,EAAE,IAAI,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CACzC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,qBAAqB,CAAA;AAQvE,QAAA,MAAM,QAAQ,yFAoZb,CAAA;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA"}