@jacshuo/onyx 0.1.9 → 1.0.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 (218) hide show
  1. package/README.md +191 -30
  2. package/README.zh-CN.md +745 -0
  3. package/dist/Accordion.cjs +1 -1
  4. package/dist/Accordion.d.cts +3 -1
  5. package/dist/Accordion.d.ts +3 -1
  6. package/dist/Accordion.js +1 -1
  7. package/dist/Alert.cjs +1 -1
  8. package/dist/Alert.d.cts +3 -1
  9. package/dist/Alert.d.ts +3 -1
  10. package/dist/Alert.js +1 -1
  11. package/dist/Badge.cjs +1 -1
  12. package/dist/Badge.d.cts +1 -1
  13. package/dist/Badge.d.ts +1 -1
  14. package/dist/Badge.js +1 -1
  15. package/dist/Button.cjs +1 -1
  16. package/dist/Button.js +1 -1
  17. package/dist/Card.cjs +1 -1
  18. package/dist/Card.d.cts +3 -1
  19. package/dist/Card.d.ts +3 -1
  20. package/dist/Card.js +1 -1
  21. package/dist/Checkbox.cjs +1 -0
  22. package/dist/Checkbox.d.cts +21 -0
  23. package/dist/Checkbox.d.ts +21 -0
  24. package/dist/Checkbox.js +1 -0
  25. package/dist/CodeBlock.cjs +1 -0
  26. package/dist/CodeBlock.d.cts +22 -0
  27. package/dist/CodeBlock.d.ts +22 -0
  28. package/dist/CodeBlock.js +1 -0
  29. package/dist/Dialog.cjs +1 -1
  30. package/dist/Dialog.d.cts +5 -2
  31. package/dist/Dialog.d.ts +5 -2
  32. package/dist/Dialog.js +1 -1
  33. package/dist/Dropdown.cjs +1 -1
  34. package/dist/Dropdown.d.cts +12 -0
  35. package/dist/Dropdown.d.ts +12 -0
  36. package/dist/Dropdown.js +1 -1
  37. package/dist/DropdownButton.cjs +1 -1
  38. package/dist/DropdownButton.d.cts +3 -1
  39. package/dist/DropdownButton.d.ts +3 -1
  40. package/dist/DropdownButton.js +1 -1
  41. package/dist/FileExplorer.cjs +1 -1
  42. package/dist/FileExplorer.js +1 -1
  43. package/dist/Form.cjs +1 -0
  44. package/dist/Form.d.cts +101 -0
  45. package/dist/Form.d.ts +101 -0
  46. package/dist/Form.js +1 -0
  47. package/dist/Header.cjs +1 -1
  48. package/dist/Header.d.cts +7 -1
  49. package/dist/Header.d.ts +7 -1
  50. package/dist/Header.js +1 -1
  51. package/dist/Indicator.cjs +1 -0
  52. package/dist/Indicator.d.cts +19 -0
  53. package/dist/Indicator.d.ts +19 -0
  54. package/dist/Indicator.js +1 -0
  55. package/dist/Input.cjs +1 -1
  56. package/dist/Input.js +1 -1
  57. package/dist/Label.cjs +1 -1
  58. package/dist/Label.js +1 -1
  59. package/dist/List.cjs +1 -1
  60. package/dist/List.d.cts +11 -4
  61. package/dist/List.d.ts +11 -4
  62. package/dist/List.js +1 -1
  63. package/dist/Masonry.cjs +1 -0
  64. package/dist/Masonry.d.cts +41 -0
  65. package/dist/Masonry.d.ts +41 -0
  66. package/dist/Masonry.js +1 -0
  67. package/dist/NavLink.cjs +1 -0
  68. package/dist/NavLink.d.cts +13 -0
  69. package/dist/NavLink.d.ts +13 -0
  70. package/dist/NavLink.js +1 -0
  71. package/dist/Panel.cjs +1 -1
  72. package/dist/Panel.js +1 -1
  73. package/dist/ProgressBar.cjs +1 -0
  74. package/dist/ProgressBar.d.cts +21 -0
  75. package/dist/ProgressBar.d.ts +21 -0
  76. package/dist/ProgressBar.js +1 -0
  77. package/dist/Radio.cjs +1 -0
  78. package/dist/Radio.d.cts +35 -0
  79. package/dist/Radio.d.ts +35 -0
  80. package/dist/Radio.js +1 -0
  81. package/dist/SideNav.cjs +1 -1
  82. package/dist/SideNav.d.cts +14 -1
  83. package/dist/SideNav.d.ts +14 -1
  84. package/dist/SideNav.js +1 -1
  85. package/dist/Spin.cjs +1 -0
  86. package/dist/Spin.d.cts +26 -0
  87. package/dist/Spin.d.ts +26 -0
  88. package/dist/Spin.js +1 -0
  89. package/dist/Switch.cjs +1 -0
  90. package/dist/Switch.d.cts +23 -0
  91. package/dist/Switch.d.ts +23 -0
  92. package/dist/Switch.js +1 -0
  93. package/dist/Table.cjs +1 -1
  94. package/dist/Table.d.cts +24 -4
  95. package/dist/Table.d.ts +24 -4
  96. package/dist/Table.js +1 -1
  97. package/dist/Tabs.cjs +1 -1
  98. package/dist/Tabs.d.cts +3 -1
  99. package/dist/Tabs.d.ts +3 -1
  100. package/dist/Tabs.js +1 -1
  101. package/dist/TextBox.cjs +1 -0
  102. package/dist/TextBox.d.cts +16 -0
  103. package/dist/TextBox.d.ts +16 -0
  104. package/dist/TextBox.js +1 -0
  105. package/dist/Tooltip.cjs +1 -1
  106. package/dist/Tooltip.d.cts +3 -1
  107. package/dist/Tooltip.d.ts +3 -1
  108. package/dist/Tooltip.js +1 -1
  109. package/dist/Tree.cjs +1 -1
  110. package/dist/Tree.d.cts +6 -2
  111. package/dist/Tree.d.ts +6 -2
  112. package/dist/Tree.js +1 -1
  113. package/dist/chunks/chunk-2JLNRAXS.cjs +1 -0
  114. package/dist/chunks/{chunk-BQLPFPCA.cjs → chunk-2KVAFCQI.cjs} +1 -1
  115. package/dist/chunks/chunk-3I7Y6FUJ.js +1 -0
  116. package/dist/chunks/chunk-47UMFXDG.js +1 -0
  117. package/dist/chunks/{chunk-MXDZHU6E.cjs → chunk-4D3XBPZX.cjs} +2 -2
  118. package/dist/chunks/{chunk-VDC7N5TC.js → chunk-4VFV5U3S.js} +1 -1
  119. package/dist/chunks/{chunk-N36YROV3.js → chunk-5FUEJFGY.js} +1 -1
  120. package/dist/chunks/chunk-5XT6TJGF.js +1 -0
  121. package/dist/chunks/{chunk-XCP37UUA.cjs → chunk-6BI4QL37.cjs} +1 -1
  122. package/dist/chunks/chunk-6E5ARQBB.cjs +1 -0
  123. package/dist/chunks/chunk-7CEOIZXK.js +1 -0
  124. package/dist/chunks/chunk-7XPIY2SQ.cjs +1 -0
  125. package/dist/chunks/chunk-A6HIQADJ.cjs +1 -0
  126. package/dist/chunks/{chunk-66LIYNLT.cjs → chunk-AEBULFON.cjs} +1 -1
  127. package/dist/chunks/chunk-AK5IK7ZD.js +1 -0
  128. package/dist/chunks/chunk-AN2R5URJ.js +1 -0
  129. package/dist/chunks/chunk-BTR2N5MO.cjs +2 -0
  130. package/dist/chunks/chunk-BUNOVZ23.cjs +2 -0
  131. package/dist/chunks/chunk-CEEQE7SY.js +1 -0
  132. package/dist/chunks/chunk-CMHBPMXE.js +1 -0
  133. package/dist/chunks/chunk-DWYAPPDB.cjs +1 -0
  134. package/dist/chunks/chunk-E3DST3QD.cjs +1 -0
  135. package/dist/chunks/chunk-E4EMAZ6V.js +2 -0
  136. package/dist/chunks/chunk-E5UKEXJE.js +1 -0
  137. package/dist/chunks/{chunk-HA5QPLJP.cjs → chunk-FDTREGBQ.cjs} +1 -1
  138. package/dist/chunks/chunk-FGUFBTKI.cjs +1 -0
  139. package/dist/chunks/chunk-FQZX67Z7.js +1 -0
  140. package/dist/chunks/chunk-FROZM2O6.js +1 -0
  141. package/dist/chunks/chunk-G2VO67XY.js +1 -0
  142. package/dist/chunks/{chunk-NG7F3GCN.js → chunk-GYFFUCBT.js} +1 -1
  143. package/dist/chunks/chunk-I425OSJL.js +1 -0
  144. package/dist/chunks/chunk-ICDAUJ2G.cjs +1 -0
  145. package/dist/chunks/chunk-IFRKP7M2.js +1 -0
  146. package/dist/chunks/chunk-IHBP6FI4.js +1 -0
  147. package/dist/chunks/chunk-IL5XDMUA.cjs +1 -0
  148. package/dist/chunks/chunk-IRSGPS7D.cjs +1 -0
  149. package/dist/chunks/chunk-ITWFMFVO.js +1 -0
  150. package/dist/chunks/chunk-JJP23IOG.cjs +1 -0
  151. package/dist/chunks/chunk-JRYYWYGV.cjs +1 -0
  152. package/dist/chunks/chunk-KCIICUZN.cjs +1 -0
  153. package/dist/chunks/chunk-KFQVZ2HC.cjs +1 -0
  154. package/dist/chunks/chunk-KGRBVUVK.cjs +1 -0
  155. package/dist/chunks/chunk-KY4NDB23.cjs +1 -0
  156. package/dist/chunks/chunk-KZBYFKOH.js +1 -0
  157. package/dist/chunks/chunk-LFJEIO3X.cjs +1 -0
  158. package/dist/chunks/chunk-NY27TTWN.js +1 -0
  159. package/dist/chunks/chunk-OEXZGLB4.js +1 -0
  160. package/dist/chunks/chunk-QC67HOC2.cjs +1 -0
  161. package/dist/chunks/chunk-QLFCH4TD.js +1 -0
  162. package/dist/chunks/chunk-RPBESM5F.cjs +1 -0
  163. package/dist/chunks/chunk-SC4PNYQT.js +2 -0
  164. package/dist/chunks/chunk-SLHD7PST.cjs +1 -0
  165. package/dist/chunks/chunk-UEGTVAFV.cjs +1 -0
  166. package/dist/chunks/chunk-V34PT6H4.cjs +1 -0
  167. package/dist/chunks/chunk-VUWT3NFR.js +1 -0
  168. package/dist/chunks/chunk-W5UXZVLS.cjs +1 -0
  169. package/dist/chunks/chunk-WQOSJM7L.js +2 -0
  170. package/dist/chunks/chunk-WRPPKNRG.js +1 -0
  171. package/dist/chunks/chunk-XAOBJSFW.js +1 -0
  172. package/dist/chunks/chunk-XK7SMEDO.cjs +2 -0
  173. package/dist/chunks/chunk-XO6CNALX.js +1 -0
  174. package/dist/chunks/chunk-ZY7GZOBS.js +1 -0
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.d.cts +15 -4
  177. package/dist/index.d.ts +15 -4
  178. package/dist/index.js +1 -1
  179. package/dist/styles/base.css +1239 -6
  180. package/dist/styles/tokens.css +230 -0
  181. package/dist/styles.css +1333 -6
  182. package/dist/theme.cjs +1 -1
  183. package/dist/theme.d.cts +63 -1
  184. package/dist/theme.d.ts +63 -1
  185. package/dist/theme.js +1 -1
  186. package/package.json +2 -1
  187. package/dist/chunks/chunk-2DFUB3KN.js +0 -1
  188. package/dist/chunks/chunk-4BKLB4KV.cjs +0 -1
  189. package/dist/chunks/chunk-5PFWPAB6.js +0 -1
  190. package/dist/chunks/chunk-5XPTHIGM.cjs +0 -1
  191. package/dist/chunks/chunk-63LKYF4D.cjs +0 -1
  192. package/dist/chunks/chunk-6HZRNHE6.js +0 -1
  193. package/dist/chunks/chunk-6OLB4BUJ.js +0 -1
  194. package/dist/chunks/chunk-7NYDMXZT.cjs +0 -1
  195. package/dist/chunks/chunk-AAFG7R4U.cjs +0 -1
  196. package/dist/chunks/chunk-ACQOSYBI.js +0 -1
  197. package/dist/chunks/chunk-BW6NCATH.js +0 -1
  198. package/dist/chunks/chunk-DWTXICFN.js +0 -1
  199. package/dist/chunks/chunk-DXXCR4ON.js +0 -1
  200. package/dist/chunks/chunk-EK4BC3WT.cjs +0 -1
  201. package/dist/chunks/chunk-ENRXEISR.js +0 -1
  202. package/dist/chunks/chunk-ER2MYWQO.cjs +0 -1
  203. package/dist/chunks/chunk-GAK5OQW4.cjs +0 -1
  204. package/dist/chunks/chunk-JAKATE3I.js +0 -1
  205. package/dist/chunks/chunk-KVV5ZEYV.cjs +0 -1
  206. package/dist/chunks/chunk-NBLJWONR.cjs +0 -1
  207. package/dist/chunks/chunk-NCJ5A6VE.js +0 -1
  208. package/dist/chunks/chunk-ORNYPP3O.cjs +0 -1
  209. package/dist/chunks/chunk-P652JDOU.cjs +0 -1
  210. package/dist/chunks/chunk-PODSD5UT.js +0 -1
  211. package/dist/chunks/chunk-PSMWVB3O.js +0 -1
  212. package/dist/chunks/chunk-QLKUAE3R.cjs +0 -1
  213. package/dist/chunks/chunk-R2K6KI4L.js +0 -1
  214. package/dist/chunks/chunk-SCSMM2J4.js +0 -1
  215. package/dist/chunks/chunk-SMZQSZH2.js +0 -1
  216. package/dist/chunks/chunk-TDI2N27U.cjs +0 -1
  217. package/dist/chunks/chunk-U2ZQHP4I.cjs +0 -1
  218. package/dist/chunks/chunk-XOO3AGIT.js +0 -1
package/dist/Form.d.ts ADDED
@@ -0,0 +1,101 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { formVariants } from './theme.js';
5
+ import 'class-variance-authority/types';
6
+
7
+ type FormLayout = "stacked" | "inline";
8
+ type FormSize = "sm" | "md" | "lg";
9
+ type FormValidationStatus = "error" | "warning" | "success" | "hint";
10
+ /** Return value of a FormItem validation callback. */
11
+ type ValidationResult = {
12
+ result: boolean;
13
+ reason: string;
14
+ };
15
+ /** Callback type for FormItem's `onValidate` prop. */
16
+ type ValidateCallback = (value: unknown) => ValidationResult;
17
+ /**
18
+ * Map of field names → ValidationResult returned from the `onValues` callback.
19
+ * Form will automatically display these errors in the matching named FormItems.
20
+ * Fields with `result: true` show a success message; `result: false` shows an error.
21
+ */
22
+ type BulkValidationResult = Record<string, ValidationResult>;
23
+ type FormProps = React.FormHTMLAttributes<HTMLFormElement> & VariantProps<typeof formVariants> & {
24
+ /**
25
+ * Label + control layout for all FormItems.
26
+ * - "stacked" — label above control (default; always used on narrow viewports)
27
+ * - "inline" — label left, control right
28
+ * @default "stacked"
29
+ */
30
+ layout?: FormLayout;
31
+ /** Form heading rendered above all items. */
32
+ title?: React.ReactNode;
33
+ /** Optional descriptive text below the heading. */
34
+ description?: React.ReactNode;
35
+ /**
36
+ * Footer slot — typically holds submit / reset buttons.
37
+ * Rendered below all FormItems, separated by a top border.
38
+ */
39
+ footer?: React.ReactNode;
40
+ /**
41
+ * Called on form submit with a plain-object snapshot of all named
42
+ * FormItem inputs (via the native FormData API).
43
+ * Call `e.preventDefault()` inside this callback to prevent a page reload.
44
+ *
45
+ * May return (or resolve to) a `BulkValidationResult` to display
46
+ * per-field errors/successes — Form automatically routes each entry
47
+ * to the matching `<FormItem name="…">`.
48
+ * Supports async (return a Promise).
49
+ */
50
+ onValues?: (values: Record<string, FormDataEntryValue>, event: React.FormEvent<HTMLFormElement>) => BulkValidationResult | void | Promise<BulkValidationResult | void>;
51
+ };
52
+ declare function Form({ children, className, intent, size, layout, title, description, footer, onValues, onSubmit, ...props }: FormProps): react_jsx_runtime.JSX.Element;
53
+ type FormValidation = {
54
+ /** Validation display status. Controls icon colour. */
55
+ status: FormValidationStatus;
56
+ /** Message text shown below the control. */
57
+ message: string;
58
+ };
59
+ type FormItemProps = {
60
+ /** Label text or element. Pass a string for automatic htmlFor wiring. */
61
+ label?: React.ReactNode;
62
+ /**
63
+ * Override the inherited layout from Form.
64
+ * Useful when a specific item needs to differ from the rest.
65
+ */
66
+ layout?: FormLayout;
67
+ /** Whether the field is required (adds a red asterisk after the label). */
68
+ required?: boolean;
69
+ /** Additional hint text rendered below the control (below validation if both present). */
70
+ hint?: React.ReactNode;
71
+ /** Externally controlled validation result. Takes precedence over `onValidate`. */
72
+ validation?: FormValidation;
73
+ /**
74
+ * Field name used by the native FormData API when the Form's `onValues`
75
+ * callback is used. Injected into the first child element automatically.
76
+ */
77
+ name?: string;
78
+ /**
79
+ * Validation callback. Called with the current value on every change.
80
+ * Return `{ result: true, reason: "" }` for success or
81
+ * `{ result: false, reason: "Error message" }` for error.
82
+ */
83
+ onValidate?: ValidateCallback;
84
+ /** Extra class on the wrapper div. */
85
+ className?: string;
86
+ children: React.ReactNode;
87
+ };
88
+ declare function FormItem({ label, layout: itemLayout, required, hint, validation, name, onValidate, className, children, }: FormItemProps): react_jsx_runtime.JSX.Element;
89
+ /**
90
+ * Optional grouping element inside a Form.
91
+ * Renders a subtle heading + divider, then its children as a nested column.
92
+ */
93
+ type FormSectionProps = {
94
+ title?: React.ReactNode;
95
+ description?: React.ReactNode;
96
+ className?: string;
97
+ children: React.ReactNode;
98
+ };
99
+ declare function FormSection({ title, description, className, children }: FormSectionProps): react_jsx_runtime.JSX.Element;
100
+
101
+ export { type BulkValidationResult, Form, FormItem, type FormItemProps, type FormLayout, type FormProps, FormSection, type FormSectionProps, type FormSize, type FormValidation, type FormValidationStatus, type ValidateCallback, type ValidationResult };
package/dist/Form.js ADDED
@@ -0,0 +1 @@
1
+ export{a as Form,b as FormItem,c as FormSection}from'./chunks/chunk-AK5IK7ZD.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Header.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkP652JDOU_cjs=require('./chunks/chunk-P652JDOU.cjs');require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Header",{enumerable:true,get:function(){return chunkP652JDOU_cjs.a}});
1
+ 'use strict';var chunkDWYAPPDB_cjs=require('./chunks/chunk-DWYAPPDB.cjs');require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Header",{enumerable:true,get:function(){return chunkDWYAPPDB_cjs.a}});
package/dist/Header.d.cts CHANGED
@@ -47,7 +47,13 @@ interface HeaderProps {
47
47
  className?: string;
48
48
  /** Content rendered between nav items and actions (e.g. search bar). */
49
49
  children?: React.ReactNode;
50
+ /** Show a hamburger menu button on small screens (< md) that reveals nav items. @default false */
51
+ mobileMenu?: boolean;
52
+ /** Custom icon for the mobile nav toggle (left side). @default <PanelLeft> */
53
+ navMenuIcon?: React.ReactNode;
54
+ /** Custom icon for the mobile actions toggle (right side). @default <MoreHorizontal> */
55
+ actionsMenuIcon?: React.ReactNode;
50
56
  }
51
- declare function Header({ brand, onBrandClick, navItems, actions, linkComponent: Link, height, className, children, }: HeaderProps): react_jsx_runtime.JSX.Element;
57
+ declare function Header({ brand, onBrandClick, navItems, actions, linkComponent: Link, height, mobileMenu, navMenuIcon, actionsMenuIcon, className, children, }: HeaderProps): react_jsx_runtime.JSX.Element;
52
58
 
53
59
  export { Header, type HeaderAction, type HeaderNavItem, type HeaderProps };
package/dist/Header.d.ts CHANGED
@@ -47,7 +47,13 @@ interface HeaderProps {
47
47
  className?: string;
48
48
  /** Content rendered between nav items and actions (e.g. search bar). */
49
49
  children?: React.ReactNode;
50
+ /** Show a hamburger menu button on small screens (< md) that reveals nav items. @default false */
51
+ mobileMenu?: boolean;
52
+ /** Custom icon for the mobile nav toggle (left side). @default <PanelLeft> */
53
+ navMenuIcon?: React.ReactNode;
54
+ /** Custom icon for the mobile actions toggle (right side). @default <MoreHorizontal> */
55
+ actionsMenuIcon?: React.ReactNode;
50
56
  }
51
- declare function Header({ brand, onBrandClick, navItems, actions, linkComponent: Link, height, className, children, }: HeaderProps): react_jsx_runtime.JSX.Element;
57
+ declare function Header({ brand, onBrandClick, navItems, actions, linkComponent: Link, height, mobileMenu, navMenuIcon, actionsMenuIcon, className, children, }: HeaderProps): react_jsx_runtime.JSX.Element;
52
58
 
53
59
  export { Header, type HeaderAction, type HeaderNavItem, type HeaderProps };
package/dist/Header.js CHANGED
@@ -1 +1 @@
1
- export{a as Header}from'./chunks/chunk-XOO3AGIT.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as Header}from'./chunks/chunk-VUWT3NFR.js';import'./chunks/chunk-AXBJKPZZ.js';
@@ -0,0 +1 @@
1
+ 'use strict';var chunkFGUFBTKI_cjs=require('./chunks/chunk-FGUFBTKI.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Indicator",{enumerable:true,get:function(){return chunkFGUFBTKI_cjs.a}});
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { indicatorVariants } from './theme.cjs';
5
+ import 'class-variance-authority/types';
6
+
7
+ interface IndicatorProps extends VariantProps<typeof indicatorVariants> {
8
+ children: React.ReactNode;
9
+ /** Show or hide the indicator. @default true */
10
+ show?: boolean;
11
+ /** Content to display. Numbers > 99 are shown as "99+". Ignored when dot=true. */
12
+ content?: React.ReactNode;
13
+ /** Show a pulsing ring animation (best for dot-only mode). @default false */
14
+ pulse?: boolean;
15
+ className?: string;
16
+ }
17
+ declare function Indicator({ children, show, content, dot, intent, size, placement, pulse, className, }: IndicatorProps): react_jsx_runtime.JSX.Element;
18
+
19
+ export { Indicator, type IndicatorProps };
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { indicatorVariants } from './theme.js';
5
+ import 'class-variance-authority/types';
6
+
7
+ interface IndicatorProps extends VariantProps<typeof indicatorVariants> {
8
+ children: React.ReactNode;
9
+ /** Show or hide the indicator. @default true */
10
+ show?: boolean;
11
+ /** Content to display. Numbers > 99 are shown as "99+". Ignored when dot=true. */
12
+ content?: React.ReactNode;
13
+ /** Show a pulsing ring animation (best for dot-only mode). @default false */
14
+ pulse?: boolean;
15
+ className?: string;
16
+ }
17
+ declare function Indicator({ children, show, content, dot, intent, size, placement, pulse, className, }: IndicatorProps): react_jsx_runtime.JSX.Element;
18
+
19
+ export { Indicator, type IndicatorProps };
@@ -0,0 +1 @@
1
+ export{a as Indicator}from'./chunks/chunk-E5UKEXJE.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Input.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkXCP37UUA_cjs=require('./chunks/chunk-XCP37UUA.cjs');require('./chunks/chunk-NBLJWONR.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkXCP37UUA_cjs.a}});
1
+ 'use strict';var chunk6BI4QL37_cjs=require('./chunks/chunk-6BI4QL37.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunk6BI4QL37_cjs.a}});
package/dist/Input.js CHANGED
@@ -1 +1 @@
1
- export{a as Input}from'./chunks/chunk-2DFUB3KN.js';import'./chunks/chunk-ACQOSYBI.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as Input}from'./chunks/chunk-QLFCH4TD.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Label.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkHA5QPLJP_cjs=require('./chunks/chunk-HA5QPLJP.cjs');require('./chunks/chunk-NBLJWONR.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkHA5QPLJP_cjs.a}});
1
+ 'use strict';var chunkFDTREGBQ_cjs=require('./chunks/chunk-FDTREGBQ.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkFDTREGBQ_cjs.a}});
package/dist/Label.js CHANGED
@@ -1 +1 @@
1
- export{a as Label}from'./chunks/chunk-6HZRNHE6.js';import'./chunks/chunk-ACQOSYBI.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as Label}from'./chunks/chunk-ZY7GZOBS.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/List.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkORNYPP3O_cjs=require('./chunks/chunk-ORNYPP3O.cjs');require('./chunks/chunk-NBLJWONR.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"List",{enumerable:true,get:function(){return chunkORNYPP3O_cjs.a}});Object.defineProperty(exports,"ListItem",{enumerable:true,get:function(){return chunkORNYPP3O_cjs.b}});
1
+ 'use strict';var chunk7XPIY2SQ_cjs=require('./chunks/chunk-7XPIY2SQ.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"List",{enumerable:true,get:function(){return chunk7XPIY2SQ_cjs.a}});Object.defineProperty(exports,"ListItem",{enumerable:true,get:function(){return chunk7XPIY2SQ_cjs.b}});
package/dist/List.d.cts CHANGED
@@ -4,8 +4,15 @@ import { VariantProps } from 'class-variance-authority';
4
4
  import { listVariants } from './theme.cjs';
5
5
  import 'class-variance-authority/types';
6
6
 
7
- type ListProps = React.HTMLAttributes<HTMLUListElement> & VariantProps<typeof listVariants>;
8
- declare function List({ intent, className, ...props }: ListProps): react_jsx_runtime.JSX.Element;
9
- declare function ListItem({ className, ...props }: React.LiHTMLAttributes<HTMLLIElement>): react_jsx_runtime.JSX.Element;
7
+ type ListProps = React.HTMLAttributes<HTMLUListElement> & VariantProps<typeof listVariants> & {
8
+ /** Controls item text and icon sizing. @default 'md' */
9
+ size?: "sm" | "md" | "lg";
10
+ };
11
+ declare function List({ intent, size, className, ...props }: ListProps): react_jsx_runtime.JSX.Element;
12
+ type ListItemProps = React.LiHTMLAttributes<HTMLLIElement> & {
13
+ /** Action buttons rendered on the right side of the item. */
14
+ actions?: React.ReactNode;
15
+ };
16
+ declare function ListItem({ actions, className, children, ...props }: ListItemProps): react_jsx_runtime.JSX.Element;
10
17
 
11
- export { List, ListItem };
18
+ export { List, ListItem, type ListItemProps };
package/dist/List.d.ts CHANGED
@@ -4,8 +4,15 @@ import { VariantProps } from 'class-variance-authority';
4
4
  import { listVariants } from './theme.js';
5
5
  import 'class-variance-authority/types';
6
6
 
7
- type ListProps = React.HTMLAttributes<HTMLUListElement> & VariantProps<typeof listVariants>;
8
- declare function List({ intent, className, ...props }: ListProps): react_jsx_runtime.JSX.Element;
9
- declare function ListItem({ className, ...props }: React.LiHTMLAttributes<HTMLLIElement>): react_jsx_runtime.JSX.Element;
7
+ type ListProps = React.HTMLAttributes<HTMLUListElement> & VariantProps<typeof listVariants> & {
8
+ /** Controls item text and icon sizing. @default 'md' */
9
+ size?: "sm" | "md" | "lg";
10
+ };
11
+ declare function List({ intent, size, className, ...props }: ListProps): react_jsx_runtime.JSX.Element;
12
+ type ListItemProps = React.LiHTMLAttributes<HTMLLIElement> & {
13
+ /** Action buttons rendered on the right side of the item. */
14
+ actions?: React.ReactNode;
15
+ };
16
+ declare function ListItem({ actions, className, children, ...props }: ListItemProps): react_jsx_runtime.JSX.Element;
10
17
 
11
- export { List, ListItem };
18
+ export { List, ListItem, type ListItemProps };
package/dist/List.js CHANGED
@@ -1 +1 @@
1
- export{a as List,b as ListItem}from'./chunks/chunk-DWTXICFN.js';import'./chunks/chunk-ACQOSYBI.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as List,b as ListItem}from'./chunks/chunk-NY27TTWN.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
@@ -0,0 +1 @@
1
+ 'use strict';var chunkLFJEIO3X_cjs=require('./chunks/chunk-LFJEIO3X.cjs');require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Masonry",{enumerable:true,get:function(){return chunkLFJEIO3X_cjs.a}});
@@ -0,0 +1,41 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type MasonryItemData = {
5
+ key?: React.Key;
6
+ /** The visual content rendered inside the item. */
7
+ content: React.ReactNode;
8
+ /** Optional title shown in the hover overlay. */
9
+ title?: string;
10
+ /** Optional description shown in the hover overlay. */
11
+ description?: string;
12
+ /** Optional action buttons shown in the hover overlay. */
13
+ actions?: React.ReactNode;
14
+ };
15
+ type MasonryProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onClick"> & {
16
+ /** Fixed number of columns. Overrides `columnWidth` when set. */
17
+ columns?: number;
18
+ /** Minimum column width in pixels. The actual column count is auto-calculated from the container width. @default 240 */
19
+ columnWidth?: number;
20
+ /** Gap between items in pixels (horizontal and vertical). @default 16 */
21
+ gap?: number;
22
+ /** Structured item list with overlay metadata. When provided, `children` is ignored. */
23
+ items?: MasonryItemData[];
24
+ /** Called when an item is clicked. Receives the item data (or undefined for plain children) and the index. */
25
+ onItemClick?: (item: MasonryItemData | undefined, index: number) => void;
26
+ };
27
+ /**
28
+ * Pinterest-style waterfall / masonry layout with rich interactions.
29
+ *
30
+ * Items are measured and placed into the shortest column, producing
31
+ * an even distribution regardless of varying item heights.
32
+ * Fully responsive — column count adapts to parent width.
33
+ *
34
+ * Each item supports:
35
+ * - Hover: cursor pointer, enlarge + elevated shadow + glass-reflection sweep
36
+ * - Overlay: title / description / action buttons on hover
37
+ * - Click: ripple flash effect + `onItemClick` callback
38
+ */
39
+ declare function Masonry({ columns: fixedColumns, columnWidth, gap, items, onItemClick, className, style, children, ...props }: MasonryProps): react_jsx_runtime.JSX.Element;
40
+
41
+ export { Masonry, type MasonryItemData, type MasonryProps };
@@ -0,0 +1,41 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type MasonryItemData = {
5
+ key?: React.Key;
6
+ /** The visual content rendered inside the item. */
7
+ content: React.ReactNode;
8
+ /** Optional title shown in the hover overlay. */
9
+ title?: string;
10
+ /** Optional description shown in the hover overlay. */
11
+ description?: string;
12
+ /** Optional action buttons shown in the hover overlay. */
13
+ actions?: React.ReactNode;
14
+ };
15
+ type MasonryProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onClick"> & {
16
+ /** Fixed number of columns. Overrides `columnWidth` when set. */
17
+ columns?: number;
18
+ /** Minimum column width in pixels. The actual column count is auto-calculated from the container width. @default 240 */
19
+ columnWidth?: number;
20
+ /** Gap between items in pixels (horizontal and vertical). @default 16 */
21
+ gap?: number;
22
+ /** Structured item list with overlay metadata. When provided, `children` is ignored. */
23
+ items?: MasonryItemData[];
24
+ /** Called when an item is clicked. Receives the item data (or undefined for plain children) and the index. */
25
+ onItemClick?: (item: MasonryItemData | undefined, index: number) => void;
26
+ };
27
+ /**
28
+ * Pinterest-style waterfall / masonry layout with rich interactions.
29
+ *
30
+ * Items are measured and placed into the shortest column, producing
31
+ * an even distribution regardless of varying item heights.
32
+ * Fully responsive — column count adapts to parent width.
33
+ *
34
+ * Each item supports:
35
+ * - Hover: cursor pointer, enlarge + elevated shadow + glass-reflection sweep
36
+ * - Overlay: title / description / action buttons on hover
37
+ * - Click: ripple flash effect + `onItemClick` callback
38
+ */
39
+ declare function Masonry({ columns: fixedColumns, columnWidth, gap, items, onItemClick, className, style, children, ...props }: MasonryProps): react_jsx_runtime.JSX.Element;
40
+
41
+ export { Masonry, type MasonryItemData, type MasonryProps };
@@ -0,0 +1 @@
1
+ export{a as Masonry}from'./chunks/chunk-G2VO67XY.js';import'./chunks/chunk-AXBJKPZZ.js';
@@ -0,0 +1 @@
1
+ 'use strict';var chunkBUNOVZ23_cjs=require('./chunks/chunk-BUNOVZ23.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"NavLink",{enumerable:true,get:function(){return chunkBUNOVZ23_cjs.a}});
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { navLinkVariants } from './theme.cjs';
5
+ import 'class-variance-authority/types';
6
+
7
+ type NavLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & VariantProps<typeof navLinkVariants> & {
8
+ /** Show external-link icon. Defaults to `true` when `target="_blank"` or href starts with `http`. */
9
+ external?: boolean;
10
+ };
11
+ declare function NavLink({ intent, size, underline, external, className, children, href, target, rel, ...props }: NavLinkProps): react_jsx_runtime.JSX.Element;
12
+
13
+ export { NavLink };
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { navLinkVariants } from './theme.js';
5
+ import 'class-variance-authority/types';
6
+
7
+ type NavLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & VariantProps<typeof navLinkVariants> & {
8
+ /** Show external-link icon. Defaults to `true` when `target="_blank"` or href starts with `http`. */
9
+ external?: boolean;
10
+ };
11
+ declare function NavLink({ intent, size, underline, external, className, children, href, target, rel, ...props }: NavLinkProps): react_jsx_runtime.JSX.Element;
12
+
13
+ export { NavLink };
@@ -0,0 +1 @@
1
+ export{a as NavLink}from'./chunks/chunk-SC4PNYQT.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Panel.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunk66LIYNLT_cjs=require('./chunks/chunk-66LIYNLT.cjs');require('./chunks/chunk-NBLJWONR.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Panel",{enumerable:true,get:function(){return chunk66LIYNLT_cjs.a}});Object.defineProperty(exports,"PanelContent",{enumerable:true,get:function(){return chunk66LIYNLT_cjs.c}});Object.defineProperty(exports,"PanelHeader",{enumerable:true,get:function(){return chunk66LIYNLT_cjs.b}});
1
+ 'use strict';var chunkAEBULFON_cjs=require('./chunks/chunk-AEBULFON.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Panel",{enumerable:true,get:function(){return chunkAEBULFON_cjs.a}});Object.defineProperty(exports,"PanelContent",{enumerable:true,get:function(){return chunkAEBULFON_cjs.c}});Object.defineProperty(exports,"PanelHeader",{enumerable:true,get:function(){return chunkAEBULFON_cjs.b}});
package/dist/Panel.js CHANGED
@@ -1 +1 @@
1
- export{a as Panel,c as PanelContent,b as PanelHeader}from'./chunks/chunk-VDC7N5TC.js';import'./chunks/chunk-ACQOSYBI.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as Panel,c as PanelContent,b as PanelHeader}from'./chunks/chunk-4VFV5U3S.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
@@ -0,0 +1 @@
1
+ 'use strict';var chunkW5UXZVLS_cjs=require('./chunks/chunk-W5UXZVLS.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"ProgressBar",{enumerable:true,get:function(){return chunkW5UXZVLS_cjs.a}});
@@ -0,0 +1,21 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { progressBarVariants } from './theme.cjs';
5
+ import 'class-variance-authority/types';
6
+
7
+ type ProgressBarProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof progressBarVariants> & {
8
+ /** Current value 0–100 */
9
+ value?: number;
10
+ /** Show the percentage label inside the bar */
11
+ showLabel?: boolean;
12
+ /** Enable the indeterminate (loading) animation — ignores `value` */
13
+ indeterminate?: boolean;
14
+ /** Enable the shine / pulse glow animation on the fill */
15
+ animated?: boolean;
16
+ /** Duration of the value transition in ms @default 500 */
17
+ duration?: number;
18
+ };
19
+ declare function ProgressBar({ value, size, intent, edge, showLabel, indeterminate, animated, duration, className, ...props }: ProgressBarProps): react_jsx_runtime.JSX.Element;
20
+
21
+ export { ProgressBar, type ProgressBarProps };
@@ -0,0 +1,21 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { progressBarVariants } from './theme.js';
5
+ import 'class-variance-authority/types';
6
+
7
+ type ProgressBarProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof progressBarVariants> & {
8
+ /** Current value 0–100 */
9
+ value?: number;
10
+ /** Show the percentage label inside the bar */
11
+ showLabel?: boolean;
12
+ /** Enable the indeterminate (loading) animation — ignores `value` */
13
+ indeterminate?: boolean;
14
+ /** Enable the shine / pulse glow animation on the fill */
15
+ animated?: boolean;
16
+ /** Duration of the value transition in ms @default 500 */
17
+ duration?: number;
18
+ };
19
+ declare function ProgressBar({ value, size, intent, edge, showLabel, indeterminate, animated, duration, className, ...props }: ProgressBarProps): react_jsx_runtime.JSX.Element;
20
+
21
+ export { ProgressBar, type ProgressBarProps };
@@ -0,0 +1 @@
1
+ export{a as ProgressBar}from'./chunks/chunk-FQZX67Z7.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Radio.cjs ADDED
@@ -0,0 +1 @@
1
+ 'use strict';var chunkSLHD7PST_cjs=require('./chunks/chunk-SLHD7PST.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Radio",{enumerable:true,get:function(){return chunkSLHD7PST_cjs.b}});Object.defineProperty(exports,"RadioGroup",{enumerable:true,get:function(){return chunkSLHD7PST_cjs.a}});
@@ -0,0 +1,35 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { radioVariants } from './theme.cjs';
5
+ import 'class-variance-authority/types';
6
+
7
+ interface RadioGroupProps {
8
+ /** Form field name shared by all radios. */
9
+ name?: string;
10
+ /** Controlled selected value. */
11
+ value?: string;
12
+ /** Default selected value (uncontrolled). */
13
+ defaultValue?: string;
14
+ /** Callback when selection changes. */
15
+ onValueChange?: (value: string) => void;
16
+ /** Shared intent for all child radios. */
17
+ intent?: VariantProps<typeof radioVariants>["intent"];
18
+ /** Shared size for all child radios. */
19
+ size?: VariantProps<typeof radioVariants>["size"];
20
+ disabled?: boolean;
21
+ /** Layout direction of the radio buttons. @default 'vertical' */
22
+ orientation?: "vertical" | "horizontal";
23
+ className?: string;
24
+ children: React.ReactNode;
25
+ }
26
+ declare function RadioGroup({ name: nameProp, value: controlledValue, defaultValue, onValueChange, intent, size, disabled, orientation, className, children, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
27
+ type RadioProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & Omit<VariantProps<typeof radioVariants>, "checked"> & {
28
+ /** The value of this radio option. */
29
+ value: string;
30
+ /** Accessible label text shown beside the radio. */
31
+ label?: string;
32
+ };
33
+ declare function Radio({ value, intent: intentProp, size: sizeProp, label, id: propId, className, disabled: disabledProp, ...props }: RadioProps): react_jsx_runtime.JSX.Element;
34
+
35
+ export { Radio, RadioGroup, type RadioGroupProps, type RadioProps };
@@ -0,0 +1,35 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { radioVariants } from './theme.js';
5
+ import 'class-variance-authority/types';
6
+
7
+ interface RadioGroupProps {
8
+ /** Form field name shared by all radios. */
9
+ name?: string;
10
+ /** Controlled selected value. */
11
+ value?: string;
12
+ /** Default selected value (uncontrolled). */
13
+ defaultValue?: string;
14
+ /** Callback when selection changes. */
15
+ onValueChange?: (value: string) => void;
16
+ /** Shared intent for all child radios. */
17
+ intent?: VariantProps<typeof radioVariants>["intent"];
18
+ /** Shared size for all child radios. */
19
+ size?: VariantProps<typeof radioVariants>["size"];
20
+ disabled?: boolean;
21
+ /** Layout direction of the radio buttons. @default 'vertical' */
22
+ orientation?: "vertical" | "horizontal";
23
+ className?: string;
24
+ children: React.ReactNode;
25
+ }
26
+ declare function RadioGroup({ name: nameProp, value: controlledValue, defaultValue, onValueChange, intent, size, disabled, orientation, className, children, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
27
+ type RadioProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & Omit<VariantProps<typeof radioVariants>, "checked"> & {
28
+ /** The value of this radio option. */
29
+ value: string;
30
+ /** Accessible label text shown beside the radio. */
31
+ label?: string;
32
+ };
33
+ declare function Radio({ value, intent: intentProp, size: sizeProp, label, id: propId, className, disabled: disabledProp, ...props }: RadioProps): react_jsx_runtime.JSX.Element;
34
+
35
+ export { Radio, RadioGroup, type RadioGroupProps, type RadioProps };
package/dist/Radio.js ADDED
@@ -0,0 +1 @@
1
+ export{b as Radio,a as RadioGroup}from'./chunks/chunk-5XT6TJGF.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/SideNav.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkKVV5ZEYV_cjs=require('./chunks/chunk-KVV5ZEYV.cjs');require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"SideNav",{enumerable:true,get:function(){return chunkKVV5ZEYV_cjs.a}});
1
+ 'use strict';var chunkA6HIQADJ_cjs=require('./chunks/chunk-A6HIQADJ.cjs');require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"SideNav",{enumerable:true,get:function(){return chunkA6HIQADJ_cjs.a}});
@@ -61,7 +61,20 @@ interface SideNavProps extends React.HTMLAttributes<HTMLElement> {
61
61
  defaultExpandedKeys?: Set<string> | "all";
62
62
  /** Fires when a group is toggled. */
63
63
  onExpandedKeysChange?: (keys: Set<string>) => void;
64
+ /**
65
+ * Enable built-in responsive behaviour: a floating action button toggles a slide-in
66
+ * overlay drawer on narrow viewports, so the nav never occupies layout space on mobile.
67
+ * @default true
68
+ */
69
+ responsive?: boolean;
70
+ /** Viewport width (px) below which mobile mode activates. @default 768 */
71
+ mobileBreakpoint?: number;
72
+ /**
73
+ * Distance (px) from the top of the viewport where the mobile drawer starts.
74
+ * Set this to the height of your app's top bar. @default 48
75
+ */
76
+ mobileTopOffset?: number;
64
77
  }
65
- declare function SideNav({ items, title, basePath, onItemClick, LinkComponent, collapsible, collapseMode: controlledMode, defaultCollapseMode, onCollapseModeChange, showLines, expandedKeys: controlledExpandedKeys, defaultExpandedKeys, onExpandedKeysChange, className, ...props }: SideNavProps): react_jsx_runtime.JSX.Element;
78
+ declare function SideNav({ items, title, basePath, onItemClick, LinkComponent, collapsible, collapseMode: controlledMode, defaultCollapseMode, onCollapseModeChange, showLines, expandedKeys: controlledExpandedKeys, defaultExpandedKeys, onExpandedKeysChange, className, responsive, mobileBreakpoint, mobileTopOffset, ...props }: SideNavProps): react_jsx_runtime.JSX.Element;
66
79
 
67
80
  export { SideNav, type SideNavCollapseMode, type SideNavItem, type SideNavLinkComponentProps, type SideNavProps };
package/dist/SideNav.d.ts CHANGED
@@ -61,7 +61,20 @@ interface SideNavProps extends React.HTMLAttributes<HTMLElement> {
61
61
  defaultExpandedKeys?: Set<string> | "all";
62
62
  /** Fires when a group is toggled. */
63
63
  onExpandedKeysChange?: (keys: Set<string>) => void;
64
+ /**
65
+ * Enable built-in responsive behaviour: a floating action button toggles a slide-in
66
+ * overlay drawer on narrow viewports, so the nav never occupies layout space on mobile.
67
+ * @default true
68
+ */
69
+ responsive?: boolean;
70
+ /** Viewport width (px) below which mobile mode activates. @default 768 */
71
+ mobileBreakpoint?: number;
72
+ /**
73
+ * Distance (px) from the top of the viewport where the mobile drawer starts.
74
+ * Set this to the height of your app's top bar. @default 48
75
+ */
76
+ mobileTopOffset?: number;
64
77
  }
65
- declare function SideNav({ items, title, basePath, onItemClick, LinkComponent, collapsible, collapseMode: controlledMode, defaultCollapseMode, onCollapseModeChange, showLines, expandedKeys: controlledExpandedKeys, defaultExpandedKeys, onExpandedKeysChange, className, ...props }: SideNavProps): react_jsx_runtime.JSX.Element;
78
+ declare function SideNav({ items, title, basePath, onItemClick, LinkComponent, collapsible, collapseMode: controlledMode, defaultCollapseMode, onCollapseModeChange, showLines, expandedKeys: controlledExpandedKeys, defaultExpandedKeys, onExpandedKeysChange, className, responsive, mobileBreakpoint, mobileTopOffset, ...props }: SideNavProps): react_jsx_runtime.JSX.Element;
66
79
 
67
80
  export { SideNav, type SideNavCollapseMode, type SideNavItem, type SideNavLinkComponentProps, type SideNavProps };
package/dist/SideNav.js CHANGED
@@ -1 +1 @@
1
- export{a as SideNav}from'./chunks/chunk-SCSMM2J4.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as SideNav}from'./chunks/chunk-IFRKP7M2.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Spin.cjs ADDED
@@ -0,0 +1 @@
1
+ 'use strict';var chunkXK7SMEDO_cjs=require('./chunks/chunk-XK7SMEDO.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Spin",{enumerable:true,get:function(){return chunkXK7SMEDO_cjs.a}});Object.defineProperty(exports,"useSpin",{enumerable:true,get:function(){return chunkXK7SMEDO_cjs.b}});
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { spinVariants } from './theme.cjs';
5
+ import 'class-variance-authority/types';
6
+
7
+ type SpinProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof spinVariants> & {
8
+ /** Whether the spinner and overlay are active */
9
+ spinning?: boolean;
10
+ /** Tip text shown below the spinner */
11
+ tip?: string;
12
+ };
13
+ /**
14
+ * Inline Spin overlay.
15
+ * Wraps children and covers them with a loading mask when `spinning` is true.
16
+ * Without children it renders a standalone spinner.
17
+ */
18
+ declare function Spin({ spinning, tip, size, className, children, ...props }: SpinProps): react_jsx_runtime.JSX.Element | null;
19
+ declare function addSpin(target: HTMLElement, tip?: string): () => void;
20
+ /**
21
+ * Returns a `setSpin(target, tip?)` function.
22
+ * Each call returns a **close** function to dismiss that specific overlay.
23
+ */
24
+ declare function useSpin(): typeof addSpin;
25
+
26
+ export { Spin, type SpinProps, useSpin };