@devalok/shilp-sutra 0.31.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_chunks/badge-group.js +123 -172
  3. package/dist/_chunks/date-time-picker.js +851 -0
  4. package/dist/_chunks/document-preview.js +92 -0
  5. package/dist/_chunks/file-preview.js +511 -0
  6. package/dist/_chunks/image-preview.js +90 -0
  7. package/dist/_chunks/mention-suggestion.js +362 -0
  8. package/dist/_chunks/primitives.js +109 -109
  9. package/dist/_chunks/stat-row.js +144 -124
  10. package/dist/_chunks/tiptap.js +11595 -7731
  11. package/dist/_chunks/use-calendar.js +117 -890
  12. package/dist/_chunks/vendor-client.js +1055 -894
  13. package/dist/ai/block-renderer.d.ts +2 -1
  14. package/dist/ai/block-renderer.d.ts.map +1 -1
  15. package/dist/ai/block-renderer.js +30 -29
  16. package/dist/ai/blocks/block-table.d.ts.map +1 -1
  17. package/dist/ai/blocks/confirm.d.ts.map +1 -1
  18. package/dist/ai/blocks/divider.d.ts.map +1 -1
  19. package/dist/ai/blocks/error.d.ts.map +1 -1
  20. package/dist/ai/blocks/info.d.ts.map +1 -1
  21. package/dist/ai/blocks/loading.d.ts.map +1 -1
  22. package/dist/ai/blocks/stat-row.d.ts.map +1 -1
  23. package/dist/ai/blocks/success.d.ts.map +1 -1
  24. package/dist/ai/blocks/text.d.ts.map +1 -1
  25. package/dist/ai/command-bar.d.ts +18 -0
  26. package/dist/ai/command-bar.d.ts.map +1 -1
  27. package/dist/ai/command-bar.js +126 -125
  28. package/dist/ai/conversation.d.ts +13 -1
  29. package/dist/ai/conversation.d.ts.map +1 -1
  30. package/dist/ai/conversation.js +78 -78
  31. package/dist/ai/types.d.ts +0 -1
  32. package/dist/ai/types.d.ts.map +1 -1
  33. package/dist/ai/types.js +0 -1
  34. package/dist/composed/bulk-action-bar.d.ts +6 -4
  35. package/dist/composed/bulk-action-bar.d.ts.map +1 -1
  36. package/dist/composed/bulk-action-bar.js +102 -58
  37. package/dist/composed/command-palette.d.ts +9 -0
  38. package/dist/composed/command-palette.d.ts.map +1 -1
  39. package/dist/composed/command-palette.js +68 -68
  40. package/dist/composed/confirm-dialog.d.ts +1 -1
  41. package/dist/composed/confirm-dialog.d.ts.map +1 -1
  42. package/dist/composed/confirm-dialog.js +10 -10
  43. package/dist/composed/date-picker/date-picker.d.ts +11 -1
  44. package/dist/composed/date-picker/date-picker.d.ts.map +1 -1
  45. package/dist/composed/date-picker/index.js +9 -8
  46. package/dist/composed/date-picker/month-picker.d.ts.map +1 -1
  47. package/dist/composed/date-picker/year-picker.d.ts.map +1 -1
  48. package/dist/composed/deadline-indicator.d.ts +1 -1
  49. package/dist/composed/deadline-indicator.d.ts.map +1 -1
  50. package/dist/composed/deadline-indicator.js +39 -36
  51. package/dist/composed/emoji-picker.d.ts +14 -2
  52. package/dist/composed/emoji-picker.d.ts.map +1 -1
  53. package/dist/composed/emoji-picker.js +66 -55
  54. package/dist/composed/error-boundary.d.ts +21 -1
  55. package/dist/composed/error-boundary.d.ts.map +1 -1
  56. package/dist/composed/error-boundary.js +47 -32
  57. package/dist/composed/extensions/emoji-data.d.ts +35 -0
  58. package/dist/composed/extensions/emoji-data.d.ts.map +1 -0
  59. package/dist/composed/extensions/emoji-node.d.ts +11 -0
  60. package/dist/composed/extensions/emoji-node.d.ts.map +1 -0
  61. package/dist/composed/extensions/emoji-suggestion.d.ts +4 -6
  62. package/dist/composed/extensions/emoji-suggestion.d.ts.map +1 -1
  63. package/dist/composed/extensions/slash-command.d.ts +35 -0
  64. package/dist/composed/extensions/slash-command.d.ts.map +1 -0
  65. package/dist/composed/file-preview/audio-preview.d.ts +7 -0
  66. package/dist/composed/file-preview/audio-preview.d.ts.map +1 -0
  67. package/dist/composed/file-preview/document-preview.d.ts +7 -0
  68. package/dist/composed/file-preview/document-preview.d.ts.map +1 -0
  69. package/dist/composed/file-preview/embed-preview.d.ts +7 -0
  70. package/dist/composed/file-preview/embed-preview.d.ts.map +1 -0
  71. package/dist/composed/file-preview/image-preview.d.ts +7 -0
  72. package/dist/composed/file-preview/image-preview.d.ts.map +1 -0
  73. package/dist/composed/file-preview/shared.d.ts +20 -0
  74. package/dist/composed/file-preview/shared.d.ts.map +1 -0
  75. package/dist/composed/file-preview/video-preview.d.ts +6 -0
  76. package/dist/composed/file-preview/video-preview.d.ts.map +1 -0
  77. package/dist/composed/file-preview.d.ts.map +1 -1
  78. package/dist/composed/file-preview.js +10 -662
  79. package/dist/composed/filter-bar.d.ts +10 -2
  80. package/dist/composed/filter-bar.d.ts.map +1 -1
  81. package/dist/composed/filter-bar.js +42 -43
  82. package/dist/composed/form-section.d.ts +1 -1
  83. package/dist/composed/form-section.d.ts.map +1 -1
  84. package/dist/composed/form-section.js +22 -21
  85. package/dist/composed/index.d.ts +9 -3
  86. package/dist/composed/index.d.ts.map +1 -1
  87. package/dist/composed/index.js +79 -69
  88. package/dist/composed/inline-edit.d.ts +1 -1
  89. package/dist/composed/inline-edit.d.ts.map +1 -1
  90. package/dist/composed/inline-edit.js +33 -32
  91. package/dist/composed/markdown-viewer.d.ts +1 -1
  92. package/dist/composed/markdown-viewer.d.ts.map +1 -1
  93. package/dist/composed/markdown-viewer.js +60 -59
  94. package/dist/composed/master-detail.d.ts +11 -7
  95. package/dist/composed/master-detail.d.ts.map +1 -1
  96. package/dist/composed/master-detail.js +123 -84
  97. package/dist/composed/responsive-overlay.d.ts +8 -0
  98. package/dist/composed/responsive-overlay.d.ts.map +1 -1
  99. package/dist/composed/rich-chat-input/attachment-strip.d.ts +15 -0
  100. package/dist/composed/rich-chat-input/attachment-strip.d.ts.map +1 -0
  101. package/dist/composed/rich-chat-input/audio-player.d.ts +11 -0
  102. package/dist/composed/rich-chat-input/audio-player.d.ts.map +1 -0
  103. package/dist/composed/rich-chat-input/audio-waveform.d.ts +24 -0
  104. package/dist/composed/rich-chat-input/audio-waveform.d.ts.map +1 -0
  105. package/dist/composed/rich-chat-input/chat-toolbar.d.ts +51 -0
  106. package/dist/composed/rich-chat-input/chat-toolbar.d.ts.map +1 -0
  107. package/dist/composed/rich-chat-input/recording-overlay.d.ts +15 -0
  108. package/dist/composed/rich-chat-input/recording-overlay.d.ts.map +1 -0
  109. package/dist/composed/rich-chat-input/reply-banner.d.ts +8 -0
  110. package/dist/composed/rich-chat-input/reply-banner.d.ts.map +1 -0
  111. package/dist/composed/rich-chat-input/schedule-send.d.ts +22 -0
  112. package/dist/composed/rich-chat-input/schedule-send.d.ts.map +1 -0
  113. package/dist/composed/rich-chat-input/use-voice-recorder.d.ts +18 -0
  114. package/dist/composed/rich-chat-input/use-voice-recorder.d.ts.map +1 -0
  115. package/dist/composed/rich-chat-input.d.ts +91 -0
  116. package/dist/composed/rich-chat-input.d.ts.map +1 -0
  117. package/dist/composed/rich-chat-input.js +1861 -0
  118. package/dist/composed/rich-text-editor.d.ts +14 -3
  119. package/dist/composed/rich-text-editor.d.ts.map +1 -1
  120. package/dist/composed/rich-text-editor.js +278 -447
  121. package/dist/composed/schedule-view.d.ts +9 -1
  122. package/dist/composed/schedule-view.d.ts.map +1 -1
  123. package/dist/hooks/index.d.ts +2 -0
  124. package/dist/hooks/index.d.ts.map +1 -1
  125. package/dist/hooks/index.js +8 -4
  126. package/dist/hooks/use-touch-device.d.ts +12 -0
  127. package/dist/hooks/use-touch-device.d.ts.map +1 -0
  128. package/dist/hooks/use-touch-device.js +13 -0
  129. package/dist/hooks/use-viewport-height.d.ts +11 -0
  130. package/dist/hooks/use-viewport-height.d.ts.map +1 -0
  131. package/dist/hooks/use-viewport-height.js +16 -0
  132. package/dist/shell/bottom-navbar.d.ts.map +1 -1
  133. package/dist/shell/bottom-navbar.js +72 -63
  134. package/dist/shell/command-registry.d.ts.map +1 -1
  135. package/dist/shell/notification-center.d.ts.map +1 -1
  136. package/dist/shell/notification-center.js +77 -77
  137. package/dist/shell/top-bar.d.ts +2 -2
  138. package/dist/shell/top-bar.d.ts.map +1 -1
  139. package/dist/shell/top-bar.js +61 -60
  140. package/dist/tailwind/index.cjs +51 -7
  141. package/dist/tailwind/preset.d.ts.map +1 -1
  142. package/dist/tailwind/preset.js +51 -7
  143. package/dist/tokens/primitives.css +3 -1
  144. package/dist/tokens/semantic.css +16 -13
  145. package/dist/ui/autocomplete.d.ts.map +1 -1
  146. package/dist/ui/autocomplete.js +38 -39
  147. package/dist/ui/badge.d.ts +104 -2
  148. package/dist/ui/badge.d.ts.map +1 -1
  149. package/dist/ui/banner.d.ts.map +1 -1
  150. package/dist/ui/banner.js +8 -7
  151. package/dist/ui/button-group.d.ts +27 -37
  152. package/dist/ui/button-group.d.ts.map +1 -1
  153. package/dist/ui/button-group.js +95 -29
  154. package/dist/ui/button.d.ts +2 -2
  155. package/dist/ui/button.d.ts.map +1 -1
  156. package/dist/ui/button.js +118 -134
  157. package/dist/ui/card.js +24 -24
  158. package/dist/ui/charts/area-chart.d.ts +2 -0
  159. package/dist/ui/charts/area-chart.d.ts.map +1 -1
  160. package/dist/ui/charts/bar-chart.d.ts +2 -0
  161. package/dist/ui/charts/bar-chart.d.ts.map +1 -1
  162. package/dist/ui/charts/chart-container.d.ts +2 -0
  163. package/dist/ui/charts/chart-container.d.ts.map +1 -1
  164. package/dist/ui/charts/index.js +583 -577
  165. package/dist/ui/charts/line-chart.d.ts +2 -0
  166. package/dist/ui/charts/line-chart.d.ts.map +1 -1
  167. package/dist/ui/charts/pie-chart.d.ts +2 -0
  168. package/dist/ui/charts/pie-chart.d.ts.map +1 -1
  169. package/dist/ui/charts/radar-chart.d.ts +2 -0
  170. package/dist/ui/charts/radar-chart.d.ts.map +1 -1
  171. package/dist/ui/checkbox.d.ts +2 -0
  172. package/dist/ui/checkbox.d.ts.map +1 -1
  173. package/dist/ui/checkbox.js +36 -27
  174. package/dist/ui/color-input.js +5 -5
  175. package/dist/ui/combobox.d.ts +6 -1
  176. package/dist/ui/combobox.d.ts.map +1 -1
  177. package/dist/ui/combobox.js +1 -1
  178. package/dist/ui/context-menu.js +1 -1
  179. package/dist/ui/data-table-body.d.ts +12 -0
  180. package/dist/ui/data-table-body.d.ts.map +1 -0
  181. package/dist/ui/data-table-body.js +219 -0
  182. package/dist/ui/data-table-bulk-actions.d.ts +19 -0
  183. package/dist/ui/data-table-bulk-actions.d.ts.map +1 -0
  184. package/dist/ui/data-table-bulk-actions.js +61 -0
  185. package/dist/ui/data-table-card.d.ts +9 -0
  186. package/dist/ui/data-table-card.d.ts.map +1 -0
  187. package/dist/ui/data-table-card.js +73 -0
  188. package/dist/ui/data-table-context.d.ts +62 -0
  189. package/dist/ui/data-table-context.d.ts.map +1 -0
  190. package/dist/ui/data-table-context.js +48 -0
  191. package/dist/ui/data-table-header.d.ts +10 -0
  192. package/dist/ui/data-table-header.d.ts.map +1 -0
  193. package/dist/ui/data-table-header.js +141 -0
  194. package/dist/ui/data-table-pagination.d.ts +13 -0
  195. package/dist/ui/data-table-pagination.d.ts.map +1 -0
  196. package/dist/ui/data-table-pagination.js +84 -0
  197. package/dist/ui/data-table.d.ts +11 -9
  198. package/dist/ui/data-table.d.ts.map +1 -1
  199. package/dist/ui/data-table.js +258 -573
  200. package/dist/ui/dialog.d.ts +6 -2
  201. package/dist/ui/dialog.d.ts.map +1 -1
  202. package/dist/ui/dialog.js +84 -82
  203. package/dist/ui/dropdown-menu.js +1 -1
  204. package/dist/ui/hover-card.d.ts +7 -0
  205. package/dist/ui/hover-card.d.ts.map +1 -1
  206. package/dist/ui/hover-card.js +3 -3
  207. package/dist/ui/icon-group.d.ts +2 -4
  208. package/dist/ui/icon-group.d.ts.map +1 -1
  209. package/dist/ui/icon-group.js +22 -23
  210. package/dist/ui/index.d.ts +2 -2
  211. package/dist/ui/index.d.ts.map +1 -1
  212. package/dist/ui/index.js +324 -327
  213. package/dist/ui/label.js +1 -1
  214. package/dist/ui/lib/bottom-sheet.d.ts +16 -0
  215. package/dist/ui/lib/bottom-sheet.d.ts.map +1 -0
  216. package/dist/ui/menubar.d.ts.map +1 -1
  217. package/dist/ui/menubar.js +64 -73
  218. package/dist/ui/navigation-menu.d.ts.map +1 -1
  219. package/dist/ui/navigation-menu.js +40 -44
  220. package/dist/ui/number-input.d.ts.map +1 -1
  221. package/dist/ui/number-input.js +19 -17
  222. package/dist/ui/popover.d.ts.map +1 -1
  223. package/dist/ui/popover.js +107 -32
  224. package/dist/ui/progress-ring.d.ts.map +1 -1
  225. package/dist/ui/progress-ring.js +80 -80
  226. package/dist/ui/progress.js +4 -4
  227. package/dist/ui/radio.d.ts +5 -2
  228. package/dist/ui/radio.d.ts.map +1 -1
  229. package/dist/ui/radio.js +29 -20
  230. package/dist/ui/search-input.d.ts.map +1 -1
  231. package/dist/ui/search-input.js +13 -12
  232. package/dist/ui/segmented-control.d.ts +6 -108
  233. package/dist/ui/segmented-control.d.ts.map +1 -1
  234. package/dist/ui/segmented-control.js +86 -272
  235. package/dist/ui/select.js +5 -5
  236. package/dist/ui/separator.js +5 -5
  237. package/dist/ui/sheet.d.ts +2 -0
  238. package/dist/ui/sheet.d.ts.map +1 -1
  239. package/dist/ui/sheet.js +102 -84
  240. package/dist/ui/sidebar.d.ts.map +1 -1
  241. package/dist/ui/sidebar.js +200 -175
  242. package/dist/ui/slider.js +14 -14
  243. package/dist/ui/split-button.d.ts +45 -0
  244. package/dist/ui/split-button.d.ts.map +1 -0
  245. package/dist/ui/split-button.js +282 -0
  246. package/dist/ui/status-dot.js +8 -8
  247. package/dist/ui/stepper.d.ts.map +1 -1
  248. package/dist/ui/stepper.js +33 -31
  249. package/dist/ui/switch.js +3 -3
  250. package/dist/ui/tabs.js +6 -6
  251. package/dist/ui/toast-types.d.ts +0 -1
  252. package/dist/ui/toast-types.d.ts.map +1 -1
  253. package/dist/ui/toast-types.js +0 -1
  254. package/dist/ui/toast.d.ts.map +1 -1
  255. package/dist/ui/toast.js +156 -150
  256. package/dist/ui/toggle-group.js +1 -1
  257. package/dist/ui/toggle.js +1 -1
  258. package/dist/ui/tooltip.js +3 -3
  259. package/docs/components/composed/emoji-picker.md +9 -0
  260. package/docs/components/composed/rich-chat-input.md +88 -0
  261. package/docs/components/composed/rich-text-editor.md +5 -0
  262. package/docs/components/ui/button-group.md +9 -0
  263. package/docs/components/ui/button.md +4 -0
  264. package/docs/components/ui/data-table-body.md +13 -0
  265. package/docs/components/ui/data-table-bulk-actions.md +13 -0
  266. package/docs/components/ui/data-table-card.md +13 -0
  267. package/docs/components/ui/data-table-context.md +13 -0
  268. package/docs/components/ui/data-table-header.md +13 -0
  269. package/docs/components/ui/data-table-pagination.md +13 -0
  270. package/docs/components/ui/split-button.md +41 -0
  271. package/llms-full.txt +235 -48
  272. package/llms.txt +54 -2
  273. package/package.json +30 -31
  274. package/dist/ui/chip.d.ts +0 -19
  275. package/dist/ui/chip.d.ts.map +0 -1
  276. package/dist/ui/chip.js +0 -14
  277. package/dist/ui/lib/use-ripple.d.ts +0 -14
  278. package/dist/ui/lib/use-ripple.d.ts.map +0 -1
package/dist/ui/banner.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as e, jsxs as x } from "react/jsx-runtime";
3
- import { IconInfoCircle as t, IconAlertCircle as h, IconAlertTriangle as v, IconCircleCheck as w, IconX as I } from "@tabler/icons-react";
3
+ import { IconInfoCircle as o, IconAlertCircle as h, IconAlertTriangle as v, IconCircleCheck as w, IconX as I } from "@tabler/icons-react";
4
4
  import * as r from "react";
5
5
  import { a as N } from "../_chunks/vendor-utils.js";
6
6
  import { cn as C } from "./lib/utils.js";
@@ -22,14 +22,14 @@ const B = N(
22
22
  defaultVariants: { color: "info" }
23
23
  }
24
24
  ), V = {
25
- info: t,
25
+ info: o,
26
26
  success: w,
27
27
  warning: v,
28
28
  error: h,
29
- neutral: t
29
+ neutral: o
30
30
  }, j = r.forwardRef(
31
- ({ className: a, color: s = "info", action: c, actions: d, onDismiss: n, children: l, ...m }, f) => {
32
- const o = d ?? c, u = V[s ?? "info"], [b, p] = r.useState(!0), g = r.useCallback(() => {
31
+ ({ className: a, color: s = "info", action: c, actions: l, onDismiss: n, children: d, ...m }, f) => {
32
+ const t = l ?? c, u = V[s ?? "info"], [b, p] = r.useState(!0), g = r.useCallback(() => {
33
33
  p(!1);
34
34
  }, []);
35
35
  return /* @__PURE__ */ e(A, { onExitComplete: n, children: b && /* @__PURE__ */ x(
@@ -44,8 +44,8 @@ const B = N(
44
44
  ...k(m),
45
45
  children: [
46
46
  /* @__PURE__ */ e(i, { icon: u, size: "md", className: "shrink-0" }),
47
- /* @__PURE__ */ e("div", { className: "min-w-0 flex-1", children: l }),
48
- o && /* @__PURE__ */ e("div", { className: "flex shrink-0 items-center gap-ds-02 [&_button]:transition-colors [&_button]:duration-moderate-01 [&_button]:ease-productive-standard [&_button:hover]:bg-current/10", children: o }),
47
+ /* @__PURE__ */ e("div", { className: "min-w-0 flex-1", children: d }),
48
+ t && /* @__PURE__ */ e("div", { className: "flex shrink-0 items-center gap-ds-02 [&_button]:transition-colors [&_button]:duration-moderate-01 [&_button]:ease-productive-standard [&_button:hover]:bg-current/10", children: t }),
49
49
  n && /* @__PURE__ */ e(
50
50
  "button",
51
51
  {
@@ -53,6 +53,7 @@ const B = N(
53
53
  onClick: g,
54
54
  className: "shrink-0 min-h-ds-xs min-w-ds-xs flex items-center justify-center rounded-ds-sm transition-colors duration-moderate-01 ease-productive-standard hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9",
55
55
  "aria-label": "Dismiss",
56
+ title: "Dismiss",
56
57
  children: /* @__PURE__ */ e(i, { icon: I, size: "sm" })
57
58
  }
58
59
  )
@@ -1,60 +1,50 @@
1
1
  "use client";
2
2
  import { ButtonProps } from './button';
3
3
  import * as React from 'react';
4
+ export type ButtonGroupPosition = 'first' | 'middle' | 'last' | 'only';
4
5
  interface ButtonGroupContextValue {
5
6
  variant?: ButtonProps['variant'];
6
7
  color?: ButtonProps['color'];
7
8
  weight?: ButtonProps['weight'];
8
9
  shape?: ButtonProps['shape'];
9
10
  size?: ButtonProps['size'];
11
+ disabled?: boolean;
12
+ orientation?: 'horizontal' | 'vertical';
13
+ attached?: boolean;
14
+ /** Internal: signals Button children to stretch to fill available width */
15
+ _stretch?: boolean;
16
+ }
17
+ interface ButtonGroupItemContext {
18
+ position: ButtonGroupPosition;
10
19
  }
20
+ declare const ButtonGroupItemContext: React.Context<ButtonGroupItemContext | null>;
11
21
  export declare function useButtonGroup(): ButtonGroupContextValue;
22
+ export declare function useButtonGroupItem(): ButtonGroupItemContext | null;
12
23
  /**
13
- * Props for ButtonGroup a container that visually merges adjacent `<Button>` components into
14
- * a single connected unit, and propagates shared props (`variant`, `color`, `weight`, `shape`, `size`) via context.
15
- *
16
- * **Context propagation:** Child `<Button>` components automatically inherit `variant`, `color`,
17
- * `weight`, `shape`, and `size` from ButtonGroup. Individual children can still override any prop.
18
- *
19
- * **Visual joining:** Adjacent button borders are merged with negative margins and border-radius overrides.
20
- *
21
- * @example
22
- * // Horizontal toolbar action group (outline variant shared):
23
- * <ButtonGroup variant="outline" size="sm">
24
- * <Button startIcon={<Icon icon={IconBold} />}>Bold</Button>
25
- * <Button startIcon={<Icon icon={IconItalic} />}>Italic</Button>
26
- * <Button startIcon={<Icon icon={IconUnderline} />}>Underline</Button>
27
- * </ButtonGroup>
28
- *
29
- * @example
30
- * // Vertical action group for a sidebar panel:
31
- * <ButtonGroup orientation="vertical" variant="ghost" size="md">
32
- * <Button>Profile</Button>
33
- * <Button>Settings</Button>
34
- * <Button variant="ghost" color="error">Danger zone</Button>
35
- * </ButtonGroup>
36
- *
37
- * @example
38
- * // Split button pattern (solid action + dropdown trigger):
39
- * <ButtonGroup variant="solid" size="md">
40
- * <Button onClick={handlePublish}>Publish</Button>
41
- * <Button size="icon-md" aria-label="More publish options"><IconChevronDown /></Button>
42
- * </ButtonGroup>
43
- * // These are just a few ways — feel free to combine props creatively!
24
+ * Returns inline style for border-radius AND border-collapse based on position
25
+ * in an attached ButtonGroup. Inner borders are removed (not overlapped) to
26
+ * guarantee consistent 1px borders regardless of wrapper nesting.
44
27
  */
28
+ export declare function getGroupPositionStyle(position: ButtonGroupPosition, orientation: 'horizontal' | 'vertical'): React.CSSProperties | undefined;
45
29
  export interface ButtonGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color'> {
46
- /** Shared variant applied to all child Buttons (children can override) */
30
+ /** Shared variant applied to all child Buttons (children can override). */
47
31
  variant?: ButtonProps['variant'];
48
- /** Shared color applied to all child Buttons (children can override) */
32
+ /** Shared color applied to all child Buttons (children can override). */
49
33
  color?: ButtonProps['color'];
50
- /** Shared weight applied to all child Buttons (children can override) */
34
+ /** Shared weight applied to all child Buttons (children can override). */
51
35
  weight?: ButtonProps['weight'];
52
- /** Shared shape applied to all child Buttons (children can override) */
36
+ /** Shared shape applied to all child Buttons (children can override). */
53
37
  shape?: ButtonProps['shape'];
54
- /** Shared size applied to all child Buttons (children can override) */
38
+ /** Shared size applied to all child Buttons (children can override). */
55
39
  size?: ButtonProps['size'];
56
- /** Layout direction. Default: 'horizontal' */
40
+ /** Disable all child Buttons. */
41
+ disabled?: boolean;
42
+ /** Layout direction. @default 'horizontal' */
57
43
  orientation?: 'horizontal' | 'vertical';
44
+ /** Whether buttons are visually attached (merged) or spaced apart. @default true */
45
+ attached?: boolean;
46
+ /** Stretch to full width of parent container. */
47
+ fullWidth?: boolean;
58
48
  }
59
49
  declare const ButtonGroup: React.ForwardRefExoticComponent<ButtonGroupProps & React.RefAttributes<HTMLDivElement>>;
60
50
  export { ButtonGroup };
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.d.ts","sourceRoot":"","sources":["../../src/ui/button-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,UAAU,uBAAuB;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAC3B;AAID,wBAAgB,cAAc,4BAE7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC3F,0EAA0E;IAC1E,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,wEAAwE;IACxE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,yEAAyE;IACzE,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,wEAAwE;IACxE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,uEAAuE;IACvE,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;CACxC;AAED,QAAA,MAAM,WAAW,yFAiChB,CAAA;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"button-group.d.ts","sourceRoot":"","sources":["../../src/ui/button-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAI3C,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtE,UAAU,uBAAuB;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAGD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAGD,QAAA,MAAM,sBAAsB,8CAA2D,CAAA;AAEvF,wBAAgB,cAAc,4BAE7B;AAED,wBAAgB,kBAAkB,kCAEjC;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,YAAY,GAAG,UAAU,GACrC,KAAK,CAAC,aAAa,GAAG,SAAS,CAsBjC;AAID,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC3F,2EAA2E;IAC3E,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,yEAAyE;IACzE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,yEAAyE;IACzE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAyBD,QAAA,MAAM,WAAW,yFA6DhB,CAAA;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -1,42 +1,108 @@
1
1
  "use client";
2
- import { jsx as u } from "react/jsx-runtime";
3
- import * as o from "react";
4
- import { cn as p } from "./lib/utils.js";
5
- const d = o.createContext({});
6
- function G() {
7
- return o.useContext(d);
2
+ import { jsx as i, jsxs as y } from "react/jsx-runtime";
3
+ import * as t from "react";
4
+ import { cn as R } from "./lib/utils.js";
5
+ const x = t.createContext({}), B = t.createContext(null);
6
+ function j() {
7
+ return t.useContext(x);
8
8
  }
9
- const x = o.forwardRef(
10
- ({ className: i, variant: t, color: n, weight: r, shape: e, size: l, orientation: c = "horizontal", children: s, ...f }, a) => {
11
- const m = o.useMemo(() => ({ variant: t, color: n, weight: r, shape: e, size: l }), [t, n, r, e, l]);
12
- return /* @__PURE__ */ u(d.Provider, { value: m, children: /* @__PURE__ */ u(
9
+ function D() {
10
+ return t.useContext(B);
11
+ }
12
+ function I(o, r) {
13
+ if (o !== "only")
14
+ if (r === "horizontal")
15
+ switch (o) {
16
+ case "first":
17
+ return { borderTopRightRadius: 0, borderBottomRightRadius: 0, borderRightWidth: 0 };
18
+ case "middle":
19
+ return { borderRadius: 0, borderRightWidth: 0 };
20
+ case "last":
21
+ return { borderTopLeftRadius: 0, borderBottomLeftRadius: 0 };
22
+ }
23
+ else
24
+ switch (o) {
25
+ case "first":
26
+ return { borderBottomLeftRadius: 0, borderBottomRightRadius: 0, borderBottomWidth: 0 };
27
+ case "middle":
28
+ return { borderRadius: 0, borderBottomWidth: 0 };
29
+ case "last":
30
+ return { borderTopLeftRadius: 0, borderTopRightRadius: 0 };
31
+ }
32
+ }
33
+ function L(o, r) {
34
+ if (o === "solid") {
35
+ const e = {
36
+ accent: "bg-accent-11/20",
37
+ error: "bg-error-11/20",
38
+ success: "bg-success-11/20",
39
+ warning: "bg-warning-11/20",
40
+ neutral: "bg-neutral-8/30"
41
+ };
42
+ return e[r ?? "accent"] ?? e.accent;
43
+ }
44
+ if (o === "soft") {
45
+ const e = {
46
+ accent: "bg-accent-5",
47
+ error: "bg-error-5",
48
+ success: "bg-success-5",
49
+ warning: "bg-warning-5",
50
+ neutral: "bg-neutral-4"
51
+ };
52
+ return e[r ?? "accent"] ?? e.accent;
53
+ }
54
+ return "bg-surface-border";
55
+ }
56
+ const P = t.forwardRef(
57
+ ({ className: o, variant: r, color: e, weight: a, shape: l, size: f, disabled: g, orientation: n = "horizontal", attached: s = !0, fullWidth: c, children: m, ...v }, w) => {
58
+ const h = c || n === "vertical", C = t.useMemo(
59
+ () => ({ variant: r, color: e, weight: a, shape: l, size: f, disabled: g, orientation: n, attached: s, _stretch: h }),
60
+ [r, e, a, l, f, g, n, s, h]
61
+ ), b = t.Children.toArray(m).filter(t.isValidElement), p = b.length;
62
+ function G(u) {
63
+ return p === 1 ? "only" : u === 0 ? "first" : u === p - 1 ? "last" : "middle";
64
+ }
65
+ return /* @__PURE__ */ i(x.Provider, { value: C, children: /* @__PURE__ */ i(
13
66
  "div",
14
67
  {
15
- ref: a,
68
+ ref: w,
16
69
  role: "group",
17
- className: p(
70
+ className: R(
18
71
  "inline-flex",
19
- c === "horizontal" ? [
20
- "flex-row",
21
- "[&>*:not(:first-child)]:rounded-l-none",
22
- "[&>*:not(:last-child)]:rounded-r-none",
23
- "[&>*:not(:first-child)]:-ml-px"
24
- ] : [
25
- "flex-col",
26
- "[&>*:not(:first-child)]:rounded-t-none",
27
- "[&>*:not(:last-child)]:rounded-b-none",
28
- "[&>*:not(:first-child)]:-mt-px"
29
- ],
30
- i
72
+ c && "w-full",
73
+ c && n === "horizontal" && "[&>*]:flex-1",
74
+ n === "horizontal" ? "flex-row" : "flex-col items-stretch",
75
+ !s && "gap-ds-02",
76
+ // Focus isolation — lift focused/hovered button above siblings
77
+ "[&>*:focus-within]:z-10 [&>*:hover]:z-10",
78
+ o
31
79
  ),
32
- ...f,
33
- children: s
80
+ ...v,
81
+ children: s ? b.map((u, d) => {
82
+ const z = d > 0 && r !== "outline";
83
+ return /* @__PURE__ */ y(t.Fragment, { children: [
84
+ z && /* @__PURE__ */ i(
85
+ "div",
86
+ {
87
+ "aria-hidden": !0,
88
+ className: R(
89
+ "shrink-0 self-stretch",
90
+ n === "horizontal" ? "w-px" : "h-px",
91
+ L(r ?? void 0, e ?? void 0)
92
+ )
93
+ }
94
+ ),
95
+ /* @__PURE__ */ i(B.Provider, { value: { position: G(d) }, children: u })
96
+ ] }, d);
97
+ }) : m
34
98
  }
35
99
  ) });
36
100
  }
37
101
  );
38
- x.displayName = "ButtonGroup";
102
+ P.displayName = "ButtonGroup";
39
103
  export {
40
- x as ButtonGroup,
41
- G as useButtonGroup
104
+ P as ButtonGroup,
105
+ I as getGroupPositionStyle,
106
+ j as useButtonGroup,
107
+ D as useButtonGroupItem
42
108
  };
@@ -2,8 +2,8 @@
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  import * as React from 'react';
4
4
  export declare const buttonVariants: (props?: ({
5
- variant?: "link" | "outline" | "default" | "solid" | "soft" | "ghost" | "destructive" | null | undefined;
6
- color?: "default" | "accent" | "success" | "error" | "warning" | "neutral" | null | undefined;
5
+ variant?: "link" | "outline" | "solid" | "soft" | "ghost" | null | undefined;
6
+ color?: "accent" | "success" | "error" | "warning" | "neutral" | null | undefined;
7
7
  weight?: "normal" | "semibold" | null | undefined;
8
8
  size?: "xs" | "sm" | "md" | "lg" | "icon" | "compact-xs" | "compact-sm" | "compact-md" | "icon-xs" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
9
9
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/ui/button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,eAAO,MAAM,cAAc;;;;;8EAsG1B,CAAA;AAoDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,EAClE,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAA;IACrC,qEAAqE;IACrE,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAA;IACnC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yFAAyF;IACzF,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC5C,sCAAsC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IAEvD,2EAA2E;IAC3E,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IAExE,+FAA+F;IAC/F,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,QAAA,MAAM,MAAM,uFAkRX,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/ui/button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,eAAO,MAAM,cAAc;;;;;8EAiF1B,CAAA;AAoDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,EAClE,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAA;IACrC,qEAAqE;IACrE,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAA;IACnC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yFAAyF;IACzF,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC5C,sCAAsC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,oFAAoF;IACpF,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IAEvD,2EAA2E;IAC3E,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IAExE,+FAA+F;IAC/F,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,QAAA,MAAM,MAAM,uFAgSX,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,CAAA"}