@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/Spin.d.ts ADDED
@@ -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.js';
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 };
package/dist/Spin.js ADDED
@@ -0,0 +1 @@
1
+ export{a as Spin,b as useSpin}from'./chunks/chunk-WQOSJM7L.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
@@ -0,0 +1 @@
1
+ 'use strict';var chunk6E5ARQBB_cjs=require('./chunks/chunk-6E5ARQBB.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunk6E5ARQBB_cjs.a}});
@@ -0,0 +1,23 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { switchTrackVariants } from './theme.cjs';
5
+ import 'class-variance-authority/types';
6
+
7
+ type SwitchProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & Omit<VariantProps<typeof switchTrackVariants>, "checked"> & {
8
+ /** Controlled checked state. */
9
+ checked?: boolean;
10
+ /** Default checked state (uncontrolled). */
11
+ defaultChecked?: boolean;
12
+ /** Callback when the switch is toggled. */
13
+ onCheckedChange?: (checked: boolean) => void;
14
+ /** Text/icon shown when checked (inside the track). */
15
+ checkedContent?: React.ReactNode;
16
+ /** Text/icon shown when unchecked (inside the track). */
17
+ uncheckedContent?: React.ReactNode;
18
+ /** Accessible label text shown beside the switch. */
19
+ label?: string;
20
+ };
21
+ declare function Switch({ checked: controlledChecked, defaultChecked, onCheckedChange, checkedContent, uncheckedContent, intent, size, label, id: propId, className, disabled, ...props }: SwitchProps): react_jsx_runtime.JSX.Element;
22
+
23
+ export { Switch, type SwitchProps };
@@ -0,0 +1,23 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { switchTrackVariants } from './theme.js';
5
+ import 'class-variance-authority/types';
6
+
7
+ type SwitchProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & Omit<VariantProps<typeof switchTrackVariants>, "checked"> & {
8
+ /** Controlled checked state. */
9
+ checked?: boolean;
10
+ /** Default checked state (uncontrolled). */
11
+ defaultChecked?: boolean;
12
+ /** Callback when the switch is toggled. */
13
+ onCheckedChange?: (checked: boolean) => void;
14
+ /** Text/icon shown when checked (inside the track). */
15
+ checkedContent?: React.ReactNode;
16
+ /** Text/icon shown when unchecked (inside the track). */
17
+ uncheckedContent?: React.ReactNode;
18
+ /** Accessible label text shown beside the switch. */
19
+ label?: string;
20
+ };
21
+ declare function Switch({ checked: controlledChecked, defaultChecked, onCheckedChange, checkedContent, uncheckedContent, intent, size, label, id: propId, className, disabled, ...props }: SwitchProps): react_jsx_runtime.JSX.Element;
22
+
23
+ export { Switch, type SwitchProps };
package/dist/Switch.js ADDED
@@ -0,0 +1 @@
1
+ export{a as Switch}from'./chunks/chunk-XO6CNALX.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Table.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkQLKUAE3R_cjs=require('./chunks/chunk-QLKUAE3R.cjs');require('./chunks/chunk-NBLJWONR.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.h}});Object.defineProperty(exports,"SortableTable",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.g}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.a}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.c}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.f}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.e}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.b}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkQLKUAE3R_cjs.d}});
1
+ 'use strict';var chunkKCIICUZN_cjs=require('./chunks/chunk-KCIICUZN.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.i}});Object.defineProperty(exports,"SortableTable",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.h}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.a}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.c}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.f}});Object.defineProperty(exports,"TableEmpty",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.g}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.e}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.b}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkKCIICUZN_cjs.d}});
package/dist/Table.d.cts CHANGED
@@ -5,12 +5,20 @@ import { tableVariants } from './theme.cjs';
5
5
  import 'class-variance-authority/types';
6
6
 
7
7
  type TableProps = React.TableHTMLAttributes<HTMLTableElement> & VariantProps<typeof tableVariants>;
8
- declare function Table({ intent, className, ...props }: TableProps): react_jsx_runtime.JSX.Element;
8
+ declare function Table({ intent, density, className, ...props }: TableProps): react_jsx_runtime.JSX.Element;
9
9
  declare function TableHeader({ className, ...props }: React.HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
10
10
  declare function TableBody({ className, ...props }: React.HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
11
11
  declare function TableRow({ className, ...props }: React.HTMLAttributes<HTMLTableRowElement>): react_jsx_runtime.JSX.Element;
12
12
  declare function TableHead({ className, ...props }: React.ThHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
13
13
  declare function TableCell({ className, ...props }: React.TdHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
14
+ type TableEmptyProps = {
15
+ /** Custom icon to display. Defaults to Inbox. */
16
+ icon?: React.ReactNode;
17
+ /** Text shown below the icon. @default "No data" */
18
+ text?: React.ReactNode;
19
+ className?: string;
20
+ };
21
+ declare function TableEmpty({ icon, text, className }: TableEmptyProps): react_jsx_runtime.JSX.Element;
14
22
  type SortDirection = "asc" | "desc";
15
23
  type SortState<K extends string = string> = {
16
24
  column: K;
@@ -35,6 +43,8 @@ type ColumnDef<T, K extends string = string> = {
35
43
  editable?: boolean;
36
44
  /** Extract a raw string value for editing. Falls back to cell(). */
37
45
  editValue?: (row: T) => string;
46
+ /** Hide this column below a given breakpoint. */
47
+ hideBelow?: "sm" | "md" | "lg";
38
48
  };
39
49
  type SortableTableProps<T, K extends string = string> = {
40
50
  columns: ColumnDef<T, K>[];
@@ -43,10 +53,15 @@ type SortableTableProps<T, K extends string = string> = {
43
53
  onSortChange?: (sort: SortState<K>) => void;
44
54
  defaultSort?: SortState<K>;
45
55
  rowKey?: (row: T, index: number) => React.Key;
56
+ /** Render action buttons for each row. Receives the row data object. */
57
+ rowActions?: (row: T) => React.ReactNode;
46
58
  intent?: VariantProps<typeof tableVariants>["intent"];
59
+ density?: VariantProps<typeof tableVariants>["density"];
47
60
  className?: string;
61
+ /** Custom empty state props (icon, text). Shown when data is empty. */
62
+ empty?: TableEmptyProps;
48
63
  };
49
- declare function SortableTable<T, K extends string = string>({ columns, data, sort: controlledSort, onSortChange, defaultSort, rowKey, intent, className, }: SortableTableProps<T, K>): react_jsx_runtime.JSX.Element;
64
+ declare function SortableTable<T, K extends string = string>({ columns, data, sort: controlledSort, onSortChange, defaultSort, rowKey, rowActions, intent, density, className, empty, }: SortableTableProps<T, K>): react_jsx_runtime.JSX.Element;
50
65
  type SelectionMode = "none" | "single" | "multiple";
51
66
  type DataTableProps<T, K extends string = string> = {
52
67
  /** Column definitions. */
@@ -74,9 +89,14 @@ type DataTableProps<T, K extends string = string> = {
74
89
  onAdd?: () => void;
75
90
  /** Called when Delete is clicked. Receives currently selected keys. */
76
91
  onDelete?: (keys: React.Key[]) => void;
92
+ /** Render action buttons for each row. Receives the row data object. */
93
+ rowActions?: (row: T) => React.ReactNode;
77
94
  intent?: VariantProps<typeof tableVariants>["intent"];
95
+ density?: VariantProps<typeof tableVariants>["density"];
78
96
  className?: string;
97
+ /** Custom empty state props (icon, text). Shown when data is empty. */
98
+ empty?: TableEmptyProps;
79
99
  };
80
- declare function DataTable<T, K extends string = string>({ columns, data, rowKey, sort: controlledSort, onSortChange, defaultSort, selectionMode, selected: controlledSelected, onSelectionChange, editable, onCellEdit, toolbar, onAdd, onDelete, intent, className, }: DataTableProps<T, K>): react_jsx_runtime.JSX.Element;
100
+ declare function DataTable<T, K extends string = string>({ columns, data, rowKey, sort: controlledSort, onSortChange, defaultSort, selectionMode, selected: controlledSelected, onSelectionChange, editable, onCellEdit, toolbar, onAdd, onDelete, rowActions, intent, density, className, empty, }: DataTableProps<T, K>): react_jsx_runtime.JSX.Element;
81
101
 
82
- export { type ColumnDef, DataTable, type DataTableProps, type SelectionMode, type SortDirection, type SortState, SortableTable, Table, TableBody, TableCell, TableHead, TableHeader, TableRow };
102
+ export { type ColumnDef, DataTable, type DataTableProps, type SelectionMode, type SortDirection, type SortState, SortableTable, Table, TableBody, TableCell, TableEmpty, type TableEmptyProps, TableHead, TableHeader, TableRow };
package/dist/Table.d.ts CHANGED
@@ -5,12 +5,20 @@ import { tableVariants } from './theme.js';
5
5
  import 'class-variance-authority/types';
6
6
 
7
7
  type TableProps = React.TableHTMLAttributes<HTMLTableElement> & VariantProps<typeof tableVariants>;
8
- declare function Table({ intent, className, ...props }: TableProps): react_jsx_runtime.JSX.Element;
8
+ declare function Table({ intent, density, className, ...props }: TableProps): react_jsx_runtime.JSX.Element;
9
9
  declare function TableHeader({ className, ...props }: React.HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
10
10
  declare function TableBody({ className, ...props }: React.HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
11
11
  declare function TableRow({ className, ...props }: React.HTMLAttributes<HTMLTableRowElement>): react_jsx_runtime.JSX.Element;
12
12
  declare function TableHead({ className, ...props }: React.ThHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
13
13
  declare function TableCell({ className, ...props }: React.TdHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
14
+ type TableEmptyProps = {
15
+ /** Custom icon to display. Defaults to Inbox. */
16
+ icon?: React.ReactNode;
17
+ /** Text shown below the icon. @default "No data" */
18
+ text?: React.ReactNode;
19
+ className?: string;
20
+ };
21
+ declare function TableEmpty({ icon, text, className }: TableEmptyProps): react_jsx_runtime.JSX.Element;
14
22
  type SortDirection = "asc" | "desc";
15
23
  type SortState<K extends string = string> = {
16
24
  column: K;
@@ -35,6 +43,8 @@ type ColumnDef<T, K extends string = string> = {
35
43
  editable?: boolean;
36
44
  /** Extract a raw string value for editing. Falls back to cell(). */
37
45
  editValue?: (row: T) => string;
46
+ /** Hide this column below a given breakpoint. */
47
+ hideBelow?: "sm" | "md" | "lg";
38
48
  };
39
49
  type SortableTableProps<T, K extends string = string> = {
40
50
  columns: ColumnDef<T, K>[];
@@ -43,10 +53,15 @@ type SortableTableProps<T, K extends string = string> = {
43
53
  onSortChange?: (sort: SortState<K>) => void;
44
54
  defaultSort?: SortState<K>;
45
55
  rowKey?: (row: T, index: number) => React.Key;
56
+ /** Render action buttons for each row. Receives the row data object. */
57
+ rowActions?: (row: T) => React.ReactNode;
46
58
  intent?: VariantProps<typeof tableVariants>["intent"];
59
+ density?: VariantProps<typeof tableVariants>["density"];
47
60
  className?: string;
61
+ /** Custom empty state props (icon, text). Shown when data is empty. */
62
+ empty?: TableEmptyProps;
48
63
  };
49
- declare function SortableTable<T, K extends string = string>({ columns, data, sort: controlledSort, onSortChange, defaultSort, rowKey, intent, className, }: SortableTableProps<T, K>): react_jsx_runtime.JSX.Element;
64
+ declare function SortableTable<T, K extends string = string>({ columns, data, sort: controlledSort, onSortChange, defaultSort, rowKey, rowActions, intent, density, className, empty, }: SortableTableProps<T, K>): react_jsx_runtime.JSX.Element;
50
65
  type SelectionMode = "none" | "single" | "multiple";
51
66
  type DataTableProps<T, K extends string = string> = {
52
67
  /** Column definitions. */
@@ -74,9 +89,14 @@ type DataTableProps<T, K extends string = string> = {
74
89
  onAdd?: () => void;
75
90
  /** Called when Delete is clicked. Receives currently selected keys. */
76
91
  onDelete?: (keys: React.Key[]) => void;
92
+ /** Render action buttons for each row. Receives the row data object. */
93
+ rowActions?: (row: T) => React.ReactNode;
77
94
  intent?: VariantProps<typeof tableVariants>["intent"];
95
+ density?: VariantProps<typeof tableVariants>["density"];
78
96
  className?: string;
97
+ /** Custom empty state props (icon, text). Shown when data is empty. */
98
+ empty?: TableEmptyProps;
79
99
  };
80
- declare function DataTable<T, K extends string = string>({ columns, data, rowKey, sort: controlledSort, onSortChange, defaultSort, selectionMode, selected: controlledSelected, onSelectionChange, editable, onCellEdit, toolbar, onAdd, onDelete, intent, className, }: DataTableProps<T, K>): react_jsx_runtime.JSX.Element;
100
+ declare function DataTable<T, K extends string = string>({ columns, data, rowKey, sort: controlledSort, onSortChange, defaultSort, selectionMode, selected: controlledSelected, onSelectionChange, editable, onCellEdit, toolbar, onAdd, onDelete, rowActions, intent, density, className, empty, }: DataTableProps<T, K>): react_jsx_runtime.JSX.Element;
81
101
 
82
- export { type ColumnDef, DataTable, type DataTableProps, type SelectionMode, type SortDirection, type SortState, SortableTable, Table, TableBody, TableCell, TableHead, TableHeader, TableRow };
102
+ export { type ColumnDef, DataTable, type DataTableProps, type SelectionMode, type SortDirection, type SortState, SortableTable, Table, TableBody, TableCell, TableEmpty, type TableEmptyProps, TableHead, TableHeader, TableRow };
package/dist/Table.js CHANGED
@@ -1 +1 @@
1
- export{h as DataTable,g as SortableTable,a as Table,c as TableBody,f as TableCell,e as TableHead,b as TableHeader,d as TableRow}from'./chunks/chunk-6OLB4BUJ.js';import'./chunks/chunk-ACQOSYBI.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{i as DataTable,h as SortableTable,a as Table,c as TableBody,f as TableCell,g as TableEmpty,e as TableHead,b as TableHeader,d as TableRow}from'./chunks/chunk-I425OSJL.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Tabs.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunk7NYDMXZT_cjs=require('./chunks/chunk-7NYDMXZT.cjs');require('./chunks/chunk-NBLJWONR.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"TabContent",{enumerable:true,get:function(){return chunk7NYDMXZT_cjs.e}});Object.defineProperty(exports,"TabList",{enumerable:true,get:function(){return chunk7NYDMXZT_cjs.b}});Object.defineProperty(exports,"TabPanels",{enumerable:true,get:function(){return chunk7NYDMXZT_cjs.d}});Object.defineProperty(exports,"TabTrigger",{enumerable:true,get:function(){return chunk7NYDMXZT_cjs.c}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunk7NYDMXZT_cjs.a}});
1
+ 'use strict';var chunkQC67HOC2_cjs=require('./chunks/chunk-QC67HOC2.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"TabContent",{enumerable:true,get:function(){return chunkQC67HOC2_cjs.e}});Object.defineProperty(exports,"TabList",{enumerable:true,get:function(){return chunkQC67HOC2_cjs.b}});Object.defineProperty(exports,"TabPanels",{enumerable:true,get:function(){return chunkQC67HOC2_cjs.d}});Object.defineProperty(exports,"TabTrigger",{enumerable:true,get:function(){return chunkQC67HOC2_cjs.c}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunkQC67HOC2_cjs.a}});
package/dist/Tabs.d.cts CHANGED
@@ -13,7 +13,9 @@ type TabsProps = {
13
13
  className?: string;
14
14
  };
15
15
  declare function Tabs({ defaultValue, value, onValueChange, intent, children, className, }: TabsProps): react_jsx_runtime.JSX.Element;
16
- declare function TabList({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
16
+ declare function TabList({ className, scrollable, ...props }: React.HTMLAttributes<HTMLDivElement> & {
17
+ scrollable?: boolean;
18
+ }): react_jsx_runtime.JSX.Element;
17
19
  type TabTriggerProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
18
20
  value: string;
19
21
  };
package/dist/Tabs.d.ts CHANGED
@@ -13,7 +13,9 @@ type TabsProps = {
13
13
  className?: string;
14
14
  };
15
15
  declare function Tabs({ defaultValue, value, onValueChange, intent, children, className, }: TabsProps): react_jsx_runtime.JSX.Element;
16
- declare function TabList({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
16
+ declare function TabList({ className, scrollable, ...props }: React.HTMLAttributes<HTMLDivElement> & {
17
+ scrollable?: boolean;
18
+ }): react_jsx_runtime.JSX.Element;
17
19
  type TabTriggerProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
18
20
  value: string;
19
21
  };
package/dist/Tabs.js CHANGED
@@ -1 +1 @@
1
- export{e as TabContent,b as TabList,d as TabPanels,c as TabTrigger,a as Tabs}from'./chunks/chunk-ENRXEISR.js';import'./chunks/chunk-ACQOSYBI.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{e as TabContent,b as TabList,d as TabPanels,c as TabTrigger,a as Tabs}from'./chunks/chunk-CMHBPMXE.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
@@ -0,0 +1 @@
1
+ 'use strict';var chunkKFQVZ2HC_cjs=require('./chunks/chunk-KFQVZ2HC.cjs');require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"TextBox",{enumerable:true,get:function(){return chunkKFQVZ2HC_cjs.a}});
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type TextBoxProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> & {
5
+ /** Visual state. @default 'default' */
6
+ state?: "default" | "error";
7
+ /** Size variant. @default 'md' */
8
+ size?: "sm" | "md" | "lg";
9
+ /** Show a live word count below the textarea. @default false */
10
+ showWordCount?: boolean;
11
+ /** Maximum number of words. When exceeded the counter turns red. */
12
+ maxWords?: number;
13
+ };
14
+ declare function TextBox({ state, size, showWordCount, maxWords, className, value: controlledValue, defaultValue, onChange, disabled, ...props }: TextBoxProps): react_jsx_runtime.JSX.Element;
15
+
16
+ export { TextBox, type TextBoxProps };
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type TextBoxProps = Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> & {
5
+ /** Visual state. @default 'default' */
6
+ state?: "default" | "error";
7
+ /** Size variant. @default 'md' */
8
+ size?: "sm" | "md" | "lg";
9
+ /** Show a live word count below the textarea. @default false */
10
+ showWordCount?: boolean;
11
+ /** Maximum number of words. When exceeded the counter turns red. */
12
+ maxWords?: number;
13
+ };
14
+ declare function TextBox({ state, size, showWordCount, maxWords, className, value: controlledValue, defaultValue, onChange, disabled, ...props }: TextBoxProps): react_jsx_runtime.JSX.Element;
15
+
16
+ export { TextBox, type TextBoxProps };
@@ -0,0 +1 @@
1
+ export{a as TextBox}from'./chunks/chunk-FROZM2O6.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Tooltip.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkGAK5OQW4_cjs=require('./chunks/chunk-GAK5OQW4.cjs');require('./chunks/chunk-NBLJWONR.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkGAK5OQW4_cjs.a}});
1
+ 'use strict';var chunkJRYYWYGV_cjs=require('./chunks/chunk-JRYYWYGV.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkJRYYWYGV_cjs.a}});
@@ -11,7 +11,9 @@ type TooltipProps = VariantProps<typeof tooltipVariants> & {
11
11
  delay?: number;
12
12
  children: React.ReactNode;
13
13
  className?: string;
14
+ /** Maximum width of the tooltip. Allows text to wrap. @default undefined (no wrap) */
15
+ maxWidth?: string | number;
14
16
  };
15
- declare function Tooltip({ content, position, intent, delay, children, className, }: TooltipProps): react_jsx_runtime.JSX.Element;
17
+ declare function Tooltip({ content, position, intent, delay, maxWidth, children, className, }: TooltipProps): react_jsx_runtime.JSX.Element;
16
18
 
17
19
  export { Tooltip };
package/dist/Tooltip.d.ts CHANGED
@@ -11,7 +11,9 @@ type TooltipProps = VariantProps<typeof tooltipVariants> & {
11
11
  delay?: number;
12
12
  children: React.ReactNode;
13
13
  className?: string;
14
+ /** Maximum width of the tooltip. Allows text to wrap. @default undefined (no wrap) */
15
+ maxWidth?: string | number;
14
16
  };
15
- declare function Tooltip({ content, position, intent, delay, children, className, }: TooltipProps): react_jsx_runtime.JSX.Element;
17
+ declare function Tooltip({ content, position, intent, delay, maxWidth, children, className, }: TooltipProps): react_jsx_runtime.JSX.Element;
16
18
 
17
19
  export { Tooltip };
package/dist/Tooltip.js CHANGED
@@ -1 +1 @@
1
- export{a as Tooltip}from'./chunks/chunk-R2K6KI4L.js';import'./chunks/chunk-ACQOSYBI.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as Tooltip}from'./chunks/chunk-AN2R5URJ.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
package/dist/Tree.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkER2MYWQO_cjs=require('./chunks/chunk-ER2MYWQO.cjs');require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Tree",{enumerable:true,get:function(){return chunkER2MYWQO_cjs.a}});Object.defineProperty(exports,"TreeItem",{enumerable:true,get:function(){return chunkER2MYWQO_cjs.b}});
1
+ 'use strict';var chunkUEGTVAFV_cjs=require('./chunks/chunk-UEGTVAFV.cjs');require('./chunks/chunk-2JLNRAXS.cjs'),require('./chunks/chunk-X5YP5TMY.cjs');Object.defineProperty(exports,"Tree",{enumerable:true,get:function(){return chunkUEGTVAFV_cjs.a}});Object.defineProperty(exports,"TreeItem",{enumerable:true,get:function(){return chunkUEGTVAFV_cjs.b}});
package/dist/Tree.d.cts CHANGED
@@ -15,19 +15,23 @@ type TreeProps = React.HTMLAttributes<HTMLUListElement> & {
15
15
  defaultExpandedKeys?: Set<string> | "all";
16
16
  /** Fires when a node is toggled. */
17
17
  onExpandedKeysChange?: (keys: Set<string>) => void;
18
+ /** Controls item text and icon sizing. @default 'md' */
19
+ size?: "sm" | "md" | "lg";
18
20
  };
19
- declare function Tree({ showLines, showRoot, expandedKeys: controlledKeys, defaultExpandedKeys, onExpandedKeysChange, className, children, ...props }: TreeProps): react_jsx_runtime.JSX.Element;
21
+ declare function Tree({ showLines, showRoot, expandedKeys: controlledKeys, defaultExpandedKeys, onExpandedKeysChange, size, className, children, ...props }: TreeProps): react_jsx_runtime.JSX.Element;
20
22
  type TreeItemProps = {
21
23
  /** Unique key for programmatic expand control. Falls back to label string. */
22
24
  nodeKey?: string;
23
25
  label: React.ReactNode;
24
26
  icon?: React.ReactNode;
27
+ /** Action buttons shown on hover at the right side of the item row. */
28
+ actions?: React.ReactNode;
25
29
  defaultExpanded?: boolean;
26
30
  expanded?: boolean;
27
31
  onToggle?: (expanded: boolean) => void;
28
32
  children?: React.ReactNode;
29
33
  className?: string;
30
34
  };
31
- declare function TreeItem({ nodeKey, label, icon, defaultExpanded, expanded: controlledExpanded, onToggle, children, className, }: TreeItemProps): react_jsx_runtime.JSX.Element;
35
+ declare function TreeItem({ nodeKey, label, icon, actions, defaultExpanded, expanded: controlledExpanded, onToggle, children, className, }: TreeItemProps): react_jsx_runtime.JSX.Element;
32
36
 
33
37
  export { Tree, TreeItem };
package/dist/Tree.d.ts CHANGED
@@ -15,19 +15,23 @@ type TreeProps = React.HTMLAttributes<HTMLUListElement> & {
15
15
  defaultExpandedKeys?: Set<string> | "all";
16
16
  /** Fires when a node is toggled. */
17
17
  onExpandedKeysChange?: (keys: Set<string>) => void;
18
+ /** Controls item text and icon sizing. @default 'md' */
19
+ size?: "sm" | "md" | "lg";
18
20
  };
19
- declare function Tree({ showLines, showRoot, expandedKeys: controlledKeys, defaultExpandedKeys, onExpandedKeysChange, className, children, ...props }: TreeProps): react_jsx_runtime.JSX.Element;
21
+ declare function Tree({ showLines, showRoot, expandedKeys: controlledKeys, defaultExpandedKeys, onExpandedKeysChange, size, className, children, ...props }: TreeProps): react_jsx_runtime.JSX.Element;
20
22
  type TreeItemProps = {
21
23
  /** Unique key for programmatic expand control. Falls back to label string. */
22
24
  nodeKey?: string;
23
25
  label: React.ReactNode;
24
26
  icon?: React.ReactNode;
27
+ /** Action buttons shown on hover at the right side of the item row. */
28
+ actions?: React.ReactNode;
25
29
  defaultExpanded?: boolean;
26
30
  expanded?: boolean;
27
31
  onToggle?: (expanded: boolean) => void;
28
32
  children?: React.ReactNode;
29
33
  className?: string;
30
34
  };
31
- declare function TreeItem({ nodeKey, label, icon, defaultExpanded, expanded: controlledExpanded, onToggle, children, className, }: TreeItemProps): react_jsx_runtime.JSX.Element;
35
+ declare function TreeItem({ nodeKey, label, icon, actions, defaultExpanded, expanded: controlledExpanded, onToggle, children, className, }: TreeItemProps): react_jsx_runtime.JSX.Element;
32
36
 
33
37
  export { Tree, TreeItem };
package/dist/Tree.js CHANGED
@@ -1 +1 @@
1
- export{a as Tree,b as TreeItem}from'./chunks/chunk-SMZQSZH2.js';import'./chunks/chunk-AXBJKPZZ.js';
1
+ export{a as Tree,b as TreeItem}from'./chunks/chunk-ITWFMFVO.js';import'./chunks/chunk-XAOBJSFW.js';import'./chunks/chunk-AXBJKPZZ.js';
@@ -0,0 +1 @@
1
+ 'use strict';var classVarianceAuthority=require('class-variance-authority');var a=classVarianceAuthority.cva("inline-flex cursor-pointer items-center justify-center gap-1.5 rounded font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:shrink-0",{variants:{intent:{primary:"bg-primary-500 text-white hover:bg-primary-600 active:bg-primary-700",secondary:"bg-secondary-500 text-white hover:bg-secondary-600 active:bg-secondary-700",danger:"bg-danger-500 text-white hover:bg-danger-600 active:bg-danger-700",warning:"bg-warning-500 text-white hover:bg-warning-600 active:bg-warning-700",ghost:"bg-transparent text-primary-700 hover:bg-primary-100 active:bg-primary-200 dark:text-primary-300 dark:hover:bg-primary-800",outline:"border border-primary-300 bg-transparent text-primary-700 hover:bg-primary-50 dark:border-primary-600 dark:text-primary-300 dark:hover:bg-primary-800"},size:{sm:"h-7 px-3 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5",md:"h-9 px-4 text-sm [&_svg]:h-4 [&_svg]:w-4",lg:"h-11 px-6 text-base [&_svg]:h-5 [&_svg]:w-5"}},defaultVariants:{intent:"primary",size:"md"}}),t=classVarianceAuthority.cva("inline-flex items-center gap-1 rounded border font-semibold [&_svg]:shrink-0",{variants:{intent:{success:"border-success-200 bg-success-100 text-success-800 dark:border-success-800 dark:bg-success-900/30 dark:text-success-400",warning:"border-warning-200 bg-warning-100 text-warning-800 dark:border-warning-800 dark:bg-warning-900/30 dark:text-warning-400",error:"border-danger-200 bg-danger-100 text-danger-800 dark:border-danger-800 dark:bg-danger-900/30 dark:text-danger-400",info:"border-primary-200 bg-primary-100 text-primary-800 dark:border-primary-800 dark:bg-primary-900/30 dark:text-primary-400",primary:"border-secondary-200 bg-secondary-100 text-secondary-700 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-300"},size:{sm:"px-1.5 py-0 text-[0.625rem] [&_svg]:h-2.5 [&_svg]:w-2.5",md:"px-2.5 py-0.5 text-xs [&_svg]:h-3 [&_svg]:w-3",lg:"px-3 py-1 text-sm [&_svg]:h-3.5 [&_svg]:w-3.5"}},defaultVariants:{intent:"primary",size:"md"}}),i=classVarianceAuthority.cva("absolute flex items-center justify-center rounded-full font-bold leading-none ring-2 ring-white select-none pointer-events-none z-10 dark:ring-primary-900",{variants:{intent:{danger:"bg-danger-500 text-white",success:"bg-success-500 text-white",warning:"bg-warning-500 text-white",info:"bg-primary-500 text-white",primary:"bg-secondary-500 text-white"},size:{sm:"text-[0.5rem]",md:"text-[0.625rem]",lg:"text-xs"},dot:{true:"",false:""},placement:{"top-right":"top-0 right-0 translate-x-1/2 -translate-y-1/2","top-left":"top-0 left-0 -translate-x-1/2 -translate-y-1/2","bottom-right":"bottom-0 right-0 translate-x-1/2 translate-y-1/2","bottom-left":"bottom-0 left-0 -translate-x-1/2 translate-y-1/2"}},compoundVariants:[{dot:true,size:"sm",class:"h-1.5 w-1.5 min-w-0 ring-1"},{dot:true,size:"md",class:"h-2 w-2 min-w-0"},{dot:true,size:"lg",class:"h-2.5 w-2.5 min-w-0"},{dot:false,size:"sm",class:"h-4 min-w-4 px-1"},{dot:false,size:"md",class:"h-5 min-w-5 px-1.5"},{dot:false,size:"lg",class:"h-6 min-w-6 px-2"}],defaultVariants:{intent:"danger",size:"md",dot:false,placement:"top-right"}}),n=classVarianceAuthority.cva("w-full rounded-md border bg-white text-secondary-900 transition-colors placeholder:text-secondary-400 focus:outline-none focus:ring-2 dark:bg-secondary-900 dark:text-secondary-100 dark:placeholder:text-secondary-600",{variants:{state:{default:"border-secondary-300 focus:border-primary-500 focus:ring-primary-500/20 dark:border-secondary-600",error:"border-danger-400 focus:border-danger-500 focus:ring-danger-500/20"},size:{sm:"h-7 px-2 text-xs",md:"h-9 px-3 py-2 text-sm",lg:"h-11 px-4 py-2.5 text-base"}},defaultVariants:{state:"default",size:"md"}}),s=classVarianceAuthority.cva("inline-flex items-center gap-1 font-medium [&_svg]:shrink-0",{variants:{size:{sm:"text-xs [&_svg]:h-3 [&_svg]:w-3",md:"text-sm [&_svg]:h-3.5 [&_svg]:w-3.5",lg:"text-base [&_svg]:h-4 [&_svg]:w-4"},intent:{default:"text-primary-700 dark:text-primary-300",muted:"text-primary-400 dark:text-primary-500",required:"text-primary-700 dark:text-primary-300 after:ml-0.5 after:text-danger-500 after:content-['*']"}},defaultVariants:{size:"md",intent:"default"}}),d=classVarianceAuthority.cva("rounded-lg transition-shadow",{variants:{intent:{default:"border border-primary-200 bg-white dark:border-primary-700 dark:bg-primary-900",elevated:"bg-white shadow-md hover:shadow-lg dark:bg-primary-800 dark:shadow-primary-300/25 dark:hover:shadow-primary-200/30",outlined:"border-2 border-primary-300 bg-transparent dark:border-primary-600",ghost:"bg-primary-50 dark:bg-primary-800/50"},size:{sm:"p-3",md:"p-5",lg:"p-7"}},defaultVariants:{intent:"default",size:"md"}}),o=classVarianceAuthority.cva("rounded-md",{variants:{intent:{default:"border border-primary-200 bg-white dark:border-primary-700 dark:bg-primary-900",inset:"bg-primary-50 dark:bg-primary-800/50",elevated:"bg-white shadow-lg dark:bg-primary-800 dark:shadow-primary-300/25"},size:{sm:"p-3",md:"p-4",lg:"p-6"}},defaultVariants:{intent:"default",size:"md"}}),g=classVarianceAuthority.cva("w-full text-left text-sm",{variants:{intent:{default:"",striped:"[&_tbody_tr:nth-child(even)]:bg-primary-50 dark:[&_tbody_tr:nth-child(even)]:bg-primary-800/30",bordered:"[&_th]:border [&_td]:border [&_th]:border-primary-200 [&_td]:border-primary-200 dark:[&_th]:border-primary-700 dark:[&_td]:border-primary-700"},density:{compact:"[&_th]:px-2 [&_th]:py-1 [&_td]:px-2 [&_td]:py-1",default:"",relaxed:"[&_th]:px-6 [&_th]:py-5 [&_td]:px-6 [&_td]:py-5"}},defaultVariants:{intent:"default",density:"default"}}),c=classVarianceAuthority.cva("text-sm text-primary-700 dark:text-primary-300",{variants:{intent:{default:"space-y-1",bordered:"divide-y divide-primary-200 rounded-lg border border-primary-200 dark:divide-primary-700 dark:border-primary-700 [&>li]:px-4 [&>li]:py-2",hover:"[&>li]:rounded-md [&>li]:px-3 [&>li]:py-2 [&>li]:transition-colors [&>li:hover]:bg-primary-50 dark:[&>li:hover]:bg-primary-800/50"}},defaultVariants:{intent:"default"}}),m=classVarianceAuthority.cva("flex w-full items-center justify-between font-medium transition-all [&_svg]:shrink-0",{variants:{size:{sm:"py-2 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5",md:"py-3 text-sm [&_svg]:h-4 [&_svg]:w-4",lg:"py-4 text-base [&_svg]:h-5 [&_svg]:w-5"}},defaultVariants:{size:"md"}}),p=classVarianceAuthority.cva("",{variants:{size:{sm:"pb-2 text-xs",md:"pb-3 text-sm",lg:"pb-4 text-base"}},defaultVariants:{size:"md"}}),l=classVarianceAuthority.cva("divide-y",{variants:{intent:{default:"divide-primary-300 dark:divide-primary-700",bordered:"divide-primary-300 rounded-lg border border-primary-300 bg-white px-3 shadow-sm dark:divide-primary-700 dark:border-primary-700 dark:bg-primary-800/50",ghost:"divide-transparent"}},defaultVariants:{intent:"default"}}),b=classVarianceAuthority.cva("group flex w-full items-center gap-1.5 text-left [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3 [&_svg]:w-3",md:"py-1.5 text-sm [&_svg]:h-3.5 [&_svg]:w-3.5",lg:"py-2 text-base [&_svg]:h-4 [&_svg]:w-4"}},defaultVariants:{size:"md"}}),y=classVarianceAuthority.cva("flex cursor-pointer items-center gap-1 rounded transition-colors [&_svg]:shrink-0",{variants:{size:{sm:"py-0.5 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5",md:"py-1 text-sm [&_svg]:h-4 [&_svg]:w-4",lg:"py-1.5 text-base [&_svg]:h-5 [&_svg]:w-5"}},defaultVariants:{size:"md"}}),x=classVarianceAuthority.cva("flex",{variants:{intent:{line:"border-b border-primary-200 dark:border-primary-700",pills:"gap-1 rounded-lg bg-primary-100 p-1 dark:bg-primary-800",underline:"gap-4"}},defaultVariants:{intent:"line"}}),u=classVarianceAuthority.cva("inline-flex cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap px-3 py-1.5 text-sm font-medium transition-all focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0",{variants:{intent:{line:"text-primary-500 hover:text-primary-700 data-[active=true]:text-primary-900 dark:text-primary-400 dark:hover:text-primary-200 dark:data-[active=true]:text-primary-100",pills:"rounded-md text-primary-600 hover:text-primary-900 data-[active=true]:bg-white data-[active=true]:text-primary-900 data-[active=true]:shadow-sm dark:text-primary-400 dark:hover:text-primary-100 dark:data-[active=true]:bg-primary-700 dark:data-[active=true]:text-primary-100",underline:"text-primary-500 hover:text-primary-700 data-[active=true]:text-primary-900 dark:text-primary-400 dark:data-[active=true]:text-primary-100"}},defaultVariants:{intent:"line"}}),f=classVarianceAuthority.cva("rounded-lg bg-white p-6 shadow-xl dark:bg-primary-900",{variants:{size:{sm:"w-full max-w-sm",md:"w-full max-w-lg",lg:"w-full max-w-2xl",xl:"w-full max-w-4xl",full:"h-[calc(100vh-4rem)] w-[calc(100vw-4rem)]"}},defaultVariants:{size:"md"}}),v=classVarianceAuthority.cva("absolute z-50 rounded px-2 py-1 text-xs shadow-md animate-fade-in",{variants:{intent:{default:"bg-primary-900 text-white dark:bg-primary-100 dark:text-primary-900",light:"border border-primary-200 bg-white text-primary-700 dark:border-primary-600 dark:bg-primary-800 dark:text-primary-200"}},defaultVariants:{intent:"default"}}),k=classVarianceAuthority.cva("inline-flex items-center gap-1 underline-offset-2 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/20 [&_svg]:shrink-0",{variants:{intent:{default:"text-primary-600 hover:text-primary-800 active:text-primary-900 dark:text-primary-400 dark:hover:text-primary-200 dark:active:text-primary-100",secondary:"text-secondary-500 hover:text-secondary-700 active:text-secondary-800 dark:text-secondary-400 dark:hover:text-secondary-200 dark:active:text-secondary-100",muted:"text-primary-400 hover:text-primary-600 dark:text-primary-500 dark:hover:text-primary-300"},size:{sm:"text-xs [&_svg]:h-3 [&_svg]:w-3",md:"text-sm [&_svg]:h-3.5 [&_svg]:w-3.5",lg:"text-base [&_svg]:h-4 [&_svg]:w-4"},underline:{always:"underline",hover:"hover:underline",none:"no-underline"}},defaultVariants:{intent:"default",size:"md",underline:"none"}}),h=classVarianceAuthority.cva("overflow-x-auto rounded-lg font-mono [&_pre]:m-0 [&_pre]:p-4 [&_code]:bg-transparent",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-base"}},defaultVariants:{size:"md"}}),w=classVarianceAuthority.cva("relative w-full overflow-hidden rounded-full bg-primary-200 dark:bg-primary-700",{variants:{size:{xs:"h-1",sm:"h-2",md:"h-3",lg:"h-4"},intent:{primary:"[&_.progress-fill]:bg-primary-500",success:"[&_.progress-fill]:bg-success-500",warning:"[&_.progress-fill]:bg-warning-500",danger:"[&_.progress-fill]:bg-danger-500"},edge:{none:"rounded-full",top:"fixed top-0 left-0 z-50 rounded-none",bottom:"fixed bottom-0 left-0 z-50 rounded-none"}},defaultVariants:{size:"md",intent:"primary",edge:"none"}}),_=classVarianceAuthority.cva("text-primary-500 dark:text-primary-400",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-base"}},defaultVariants:{size:"md"}}),V=classVarianceAuthority.cva("relative inline-flex shrink-0 items-center justify-center rounded border-2 transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",{variants:{intent:{primary:"border-primary-300 dark:border-primary-600 focus-visible:ring-primary-500/40",secondary:"border-secondary-300 dark:border-secondary-600 focus-visible:ring-secondary-500/40",danger:"border-danger-300 dark:border-danger-600 focus-visible:ring-danger-500/40",warning:"border-warning-300 dark:border-warning-600 focus-visible:ring-warning-500/40",success:"border-success-300 dark:border-success-600 focus-visible:ring-success-500/40"},size:{sm:"h-4 w-4 rounded-[3px]",md:"h-5 w-5 rounded",lg:"h-6 w-6 rounded-[5px]"},checked:{on:"",off:"bg-white dark:bg-primary-900"}},compoundVariants:[{intent:"primary",checked:"on",class:"border-primary-500 bg-primary-500 dark:border-primary-500 dark:bg-primary-500"},{intent:"secondary",checked:"on",class:"border-secondary-500 bg-secondary-500 dark:border-secondary-500 dark:bg-secondary-500"},{intent:"danger",checked:"on",class:"border-danger-500 bg-danger-500 dark:border-danger-500 dark:bg-danger-500"},{intent:"warning",checked:"on",class:"border-warning-500 bg-warning-500 dark:border-warning-500 dark:bg-warning-500"},{intent:"success",checked:"on",class:"border-success-500 bg-success-500 dark:border-success-500 dark:bg-success-500"}],defaultVariants:{intent:"primary",size:"md",checked:"off"}}),z=classVarianceAuthority.cva("relative inline-flex shrink-0 items-center justify-center rounded-full border-2 transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",{variants:{intent:{primary:"border-primary-300 dark:border-primary-600 focus-visible:ring-primary-500/40",secondary:"border-secondary-300 dark:border-secondary-600 focus-visible:ring-secondary-500/40",danger:"border-danger-300 dark:border-danger-600 focus-visible:ring-danger-500/40",warning:"border-warning-300 dark:border-warning-600 focus-visible:ring-warning-500/40",success:"border-success-300 dark:border-success-600 focus-visible:ring-success-500/40"},size:{sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6"},checked:{on:"",off:"bg-white dark:bg-primary-900"}},compoundVariants:[{intent:"primary",checked:"on",class:"border-primary-500 bg-primary-500 dark:border-primary-500 dark:bg-primary-500"},{intent:"secondary",checked:"on",class:"border-secondary-500 bg-secondary-500 dark:border-secondary-500 dark:bg-secondary-500"},{intent:"danger",checked:"on",class:"border-danger-500 bg-danger-500 dark:border-danger-500 dark:bg-danger-500"},{intent:"warning",checked:"on",class:"border-warning-500 bg-warning-500 dark:border-warning-500 dark:bg-warning-500"},{intent:"success",checked:"on",class:"border-success-500 bg-success-500 dark:border-success-500 dark:bg-success-500"}],defaultVariants:{intent:"primary",size:"md",checked:"off"}}),j=classVarianceAuthority.cva("",{variants:{intent:{primary:"",secondary:"",danger:"",warning:"",success:""},size:{sm:"",md:"",lg:""},checked:{on:"",off:"bg-primary-300 dark:bg-primary-800"}},compoundVariants:[{intent:"primary",checked:"on",class:"bg-primary-500 dark:bg-primary-500"},{intent:"secondary",checked:"on",class:"bg-secondary-500 dark:bg-secondary-500"},{intent:"danger",checked:"on",class:"bg-danger-500 dark:bg-danger-500"},{intent:"warning",checked:"on",class:"bg-warning-500 dark:bg-warning-500"},{intent:"success",checked:"on",class:"bg-success-500 dark:bg-success-500"}],defaultVariants:{intent:"primary",size:"md",checked:"off"}}),I=classVarianceAuthority.cva("pointer-events-auto flex items-start gap-3 rounded-lg border p-4 shadow-lg transition-all",{variants:{intent:{success:"border-success-200 bg-success-50 text-success-800 dark:border-success-800 dark:bg-success-900/80 dark:text-success-200",warning:"border-warning-200 bg-warning-50 text-warning-800 dark:border-warning-800 dark:bg-warning-900/80 dark:text-warning-200",error:"border-danger-200 bg-danger-50 text-danger-800 dark:border-danger-800 dark:bg-danger-900/80 dark:text-danger-200",info:"border-primary-200 bg-primary-50 text-primary-800 dark:border-primary-800 dark:bg-primary-900/80 dark:text-primary-200"}},defaultVariants:{intent:"info"}}),T=classVarianceAuthority.cva("w-full",{variants:{intent:{default:"",card:"rounded-(--form-radius) border border-primary-200 bg-white p-6 shadow-sm dark:border-primary-700 dark:bg-primary-900",inset:"rounded-(--form-radius) bg-primary-50 p-6 dark:bg-primary-800/50"},size:{sm:"",md:"",lg:""}},defaultVariants:{intent:"default",size:"md"}}),B=classVarianceAuthority.cva("flex w-full",{variants:{layout:{stacked:"flex-col gap-1.5",inline:"flex-row items-start gap-(--form-item-gap-md)"},size:{sm:"",md:"",lg:""}},defaultVariants:{layout:"stacked",size:"md"}}),C=classVarianceAuthority.cva("mt-1 flex items-center gap-1 text-xs [&_svg]:h-3.5 [&_svg]:w-3.5 [&_svg]:shrink-0",{variants:{status:{error:"text-danger-600 dark:text-danger-400",warning:"text-warning-600 dark:text-warning-400",success:"text-success-600 dark:text-success-400",hint:"text-primary-400 dark:text-primary-500"}},defaultVariants:{status:"hint"}});exports.A=T;exports.B=B;exports.C=C;exports.a=a;exports.b=t;exports.c=i;exports.d=n;exports.e=s;exports.f=d;exports.g=o;exports.h=g;exports.i=c;exports.j=m;exports.k=p;exports.l=l;exports.m=b;exports.n=y;exports.o=x;exports.p=u;exports.q=f;exports.r=v;exports.s=k;exports.t=h;exports.u=w;exports.v=_;exports.w=V;exports.x=z;exports.y=j;exports.z=I;
@@ -1 +1 @@
1
- 'use strict';var chunkNBLJWONR_cjs=require('./chunk-NBLJWONR.cjs'),chunkX5YP5TMY_cjs=require('./chunk-X5YP5TMY.cjs'),jsxRuntime=require('react/jsx-runtime');function m({intent:r,size:n,className:p,...a}){return jsxRuntime.jsx("button",{className:chunkX5YP5TMY_cjs.a(chunkNBLJWONR_cjs.a({intent:r,size:n}),p),...a})}exports.a=m;
1
+ 'use strict';var chunk2JLNRAXS_cjs=require('./chunk-2JLNRAXS.cjs'),chunkX5YP5TMY_cjs=require('./chunk-X5YP5TMY.cjs'),jsxRuntime=require('react/jsx-runtime');function m({intent:r,size:n,className:p,...a}){return jsxRuntime.jsx("button",{className:chunkX5YP5TMY_cjs.a(chunk2JLNRAXS_cjs.a({intent:r,size:n}),p),...a})}exports.a=m;
@@ -0,0 +1 @@
1
+ import {q}from'./chunk-XAOBJSFW.js';import {a as a$1}from'./chunk-AXBJKPZZ.js';import {createContext,useId,useEffect,useContext}from'react';import {createPortal}from'react-dom';import {X}from'lucide-react';import {jsx}from'react/jsx-runtime';var a=[];function k(e){a.push(e);}function O(e){let t=a.indexOf(e);t!==-1&&a.splice(t,1);}function f(e){return a.length>0&&a[a.length-1]===e}function H(e){let t=a.indexOf(e);return t!==-1?t:a.length}var g=createContext(null);function R({open:e,onOpenChange:t,modal:i=true,closeOnOutsideClick:s=false,children:c}){let o=useId();return useEffect(()=>{if(e)return k(o),()=>O(o)},[e,o]),useEffect(()=>{if(!e||!i)return;let l=d=>{d.key==="Escape"&&f(o)&&t(false);};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[e,i,t,o]),useEffect(()=>{if(!e||!i)return;let l=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=l;}},[e,i]),e?jsx(g.Provider,{value:{id:o,onOpenChange:t,modal:i,closeOnOutsideClick:s},children:createPortal(c,document.body)}):null}function A({size:e,position:t="center",className:i,children:s,...c}){let o=useContext(g);if(!o)return null;let d=200+H(o.id)*10,y=()=>{o.closeOnOutsideClick&&f(o.id)&&o.onOpenChange(false);},x=t==="bottom";return o.modal?jsx("div",{className:a$1("animate-fade-in fixed inset-0 bg-black/50",x?"flex items-end justify-center":"flex items-center justify-center p-4"),style:{zIndex:d},onClick:y,children:jsx("div",{className:a$1(q({size:e}),x?"animate-slide-in-bottom w-full rounded-b-none rounded-t-[var(--dialog-sheet-radius)] max-h-[85vh] overflow-y-auto":"animate-scale-in",i),role:"dialog","aria-modal":"true",onClick:u=>u.stopPropagation(),...c,children:s})}):jsx("div",{className:a$1("fixed inset-0 flex items-center justify-center p-4",o.closeOnOutsideClick?"pointer-events-auto":"pointer-events-none"),style:{zIndex:d},onClick:o.closeOnOutsideClick&&f(o.id)?()=>o.onOpenChange(false):void 0,children:jsx("div",{className:a$1(q({size:e}),"animate-scale-in pointer-events-auto shadow-2xl",i),role:"dialog",onClick:o.closeOnOutsideClick?u=>u.stopPropagation():void 0,...c,children:s})})}function B({className:e,...t}){return jsx("div",{className:a$1("mb-4 space-y-1",e),...t})}function V({className:e,...t}){return jsx("h2",{className:a$1("text-primary-900 dark:text-primary-100 flex items-center gap-1.5 text-lg font-semibold [&_svg]:h-5 [&_svg]:w-5 [&_svg]:shrink-0",e),...t})}function j({className:e,...t}){return jsx("p",{className:a$1("text-primary-500 dark:text-primary-400 text-sm",e),...t})}function _({className:e,...t}){return jsx("div",{className:a$1("mt-6 flex justify-end gap-2",e),...t})}function I({className:e,...t}){let i=useContext(g);return jsx("button",{className:a$1("text-primary-400 hover:text-primary-600 dark:hover:text-primary-200 absolute top-4 right-4 rounded-md p-1 transition-colors",e),onClick:()=>i?.onOpenChange(false),"aria-label":"Close",...t,children:jsx(X,{className:"h-4 w-4"})})}export{R as a,A as b,B as c,V as d,j as e,_ as f,I as g};
@@ -0,0 +1 @@
1
+ import {a as a$1}from'./chunk-XAOBJSFW.js';import {a}from'./chunk-AXBJKPZZ.js';import X,{useState,useRef,useEffect,useCallback,useMemo}from'react';import {ChevronDown,Check}from'lucide-react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function ee(n,t){return n.key??(typeof n.label=="string"?n.label:String(t))}var C=40,$=150,q=120;function F(n,t,y,g){return g?y?{animation:"var(--animate-dropdown-item-out)",animationDelay:`${(t-1-n)*C}ms`}:{animation:"var(--animate-dropdown-item-in)",animationDelay:`${n*C}ms`}:{}}function te(n,t,y){if(!y)return {};if(t){let g=Math.max(n-1,0)*C+$;return {animation:`dropdown-container-out ${q}ms ease-in both`,animationDelay:`${g}ms`}}return {animation:"var(--animate-dropdown-container-in)"}}function ie({label:n,items:t,intent:y,size:g,align:_="left",className:U,disabled:R,editable:x=false,onAddItem:B,multiple:s=false,selected:l=[],onSelectionChange:H,animated:m=true,...j}){let[o,k]=useState(false),[N,T]=useState(false),[c,p]=useState(""),M=useRef(null),K=useRef(null),d=useRef(void 0);useEffect(()=>()=>{d.current&&clearTimeout(d.current);},[]);let f=useCallback(()=>{if(!m||!o){k(false),p("");return}T(true);let r=(Math.max(t.length,1)-1)*C+$+q+20;d.current=setTimeout(()=>{k(false),T(false),p("");},r);},[m,o,t.length]),z=useCallback(()=>{R||(o?f():(d.current&&clearTimeout(d.current),T(false),k(true),p(""),x&&requestAnimationFrame(()=>K.current?.focus())));},[R,o,f,x]);useEffect(()=>{if(!o)return;let e=r=>{M.current&&!M.current.contains(r.target)&&f();};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[o,f]),useEffect(()=>{if(!o)return;let e=r=>{r.key==="Escape"&&f();};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o,f]);let E=c.toLowerCase(),h=useMemo(()=>c?t.filter(e=>(typeof e.label=="string"?e.label:e.key??"").toLowerCase().includes(E)):t,[t,E]),b=useMemo(()=>!x||!c.trim()?false:!t.some(e=>(typeof e.label=="string"?e.label:e.key??"").toLowerCase()===E),[x,E,t]),D=useCallback(()=>{let e=c.trim();e&&(B?.(e),p(""));},[c,B]),G=useCallback(e=>{e.key==="Enter"&&b&&(e.preventDefault(),D());},[b,D]),J=useCallback(e=>{let r=l.includes(e)?l.filter(v=>v!==e):[...l,e];H?.(r);},[l,H]),Q=s&&l.length>0?jsxs(Fragment,{children:[n," ",jsx("span",{className:"ml-1 rounded-full bg-white/20 px-1.5 text-xs font-semibold",children:l.length})]}):n,W=h.length===0&&!b||b?1:0,I=h.length+W;return jsxs("div",{ref:M,className:"relative inline-block",children:[jsxs("button",{type:"button",onClick:z,disabled:R,className:a(a$1({intent:y,size:g}),"inline-flex items-center gap-1",U),"aria-haspopup":s?"listbox":"true","aria-expanded":o?"true":"false",...j,children:[Q,jsx(ChevronDown,{className:a("h-3.5 w-3.5 transition-transform",o&&"rotate-180")})]}),o&&jsxs("div",{className:a("absolute z-50 mt-1 min-w-44 rounded-md border py-1 shadow-lg","border-primary-200 dark:border-primary-700 dark:bg-primary-800 bg-white",_==="right"?"right-0":"left-0"),style:te(I,N,m),role:s?"listbox":"menu","aria-multiselectable":s||void 0,children:[x&&jsx("div",{className:"border-primary-200 dark:border-primary-700 border-b px-2 pb-1.5 pt-1",children:jsx("input",{ref:K,type:"text",value:c,onChange:e=>p(e.target.value),onKeyDown:G,placeholder:"Type to filter or add\u2026",className:"w-full bg-transparent text-sm text-secondary-900 placeholder:text-secondary-400 focus:outline-none dark:text-secondary-100 dark:placeholder:text-secondary-600"})}),jsxs("div",{className:"max-h-60 overflow-y-auto",children:[h.map((e,r)=>{let v=ee(e,r),L=s&&l.includes(v);return jsxs(X.Fragment,{children:[e.divider&&jsx("div",{className:"border-primary-200 dark:border-primary-700 my-1 border-t"}),jsxs("button",{type:"button",role:s?"option":"menuitem","aria-selected":s?L:void 0,disabled:e.disabled,className:a("flex w-full cursor-pointer items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors","text-primary-700 hover:bg-primary-100 dark:text-primary-300 dark:hover:bg-primary-700/50",e.disabled&&"pointer-events-none opacity-50"),style:F(r,I,N,m),onClick:()=>{s?J(v):(e.onClick?.(),d.current&&clearTimeout(d.current),k(false),T(false),p(""));},children:[s&&jsx("span",{className:a("flex h-4 w-4 shrink-0 items-center justify-center rounded border transition-colors",L?"border-primary-600 bg-primary-600 text-white dark:border-primary-500 dark:bg-primary-500":"border-secondary-300 bg-white dark:border-secondary-600 dark:bg-secondary-800"),children:L&&jsx(Check,{className:"h-3 w-3"})}),jsx("span",{className:"flex-1 truncate",children:e.label})]})]},v)}),h.length===0&&!b&&jsx("div",{className:"text-primary-400 px-3 py-2 text-center text-sm",style:F(0,1,N,m),children:"No matches"}),b&&jsxs("button",{type:"button",className:a("flex w-full cursor-pointer items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors","text-primary-600 hover:bg-primary-50 dark:text-primary-400 dark:hover:bg-primary-900/30"),style:F(h.length,I,N,m),onClick:D,children:[jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center text-lg leading-none",children:"+"}),jsxs("span",{className:"truncate",children:["Add \u201C",c.trim(),"\u201D"]})]})]})]})]})}export{ie as a};
@@ -1,4 +1,4 @@
1
- 'use strict';var chunkU2ZQHP4I_cjs=require('./chunk-U2ZQHP4I.cjs'),chunkBQLPFPCA_cjs=require('./chunk-BQLPFPCA.cjs'),chunkX5YP5TMY_cjs=require('./chunk-X5YP5TMY.cjs'),ze=require('react'),lucideReact=require('lucide-react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ze__default=/*#__PURE__*/_interopDefault(ze);function _(o){let f=o.lastIndexOf(".");return f>0?o.slice(f).toLowerCase():""}function Se(o){return o==null?"\u2014":o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:o<1024*1024*1024?`${(o/(1024*1024)).toFixed(1)} MB`:`${(o/(1024*1024*1024)).toFixed(2)} GB`}function ue(o){return o?(typeof o=="string"?new Date(o):o).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"\u2014"}var ut={".png":lucideReact.Image,".jpg":lucideReact.Image,".jpeg":lucideReact.Image,".gif":lucideReact.Image,".svg":lucideReact.Image,".webp":lucideReact.Image,".ico":lucideReact.Image,".bmp":lucideReact.Image,".mp3":lucideReact.Music,".wav":lucideReact.Music,".flac":lucideReact.Music,".ogg":lucideReact.Music,".aac":lucideReact.Music,".m4a":lucideReact.Music,".mp4":lucideReact.Video,".mkv":lucideReact.Video,".avi":lucideReact.Video,".mov":lucideReact.Video,".wmv":lucideReact.Video,".webm":lucideReact.Video,".ts":lucideReact.FileCode,".tsx":lucideReact.FileCode,".js":lucideReact.FileCode,".jsx":lucideReact.FileCode,".json":lucideReact.FileCode,".html":lucideReact.FileCode,".css":lucideReact.FileCode,".scss":lucideReact.FileCode,".py":lucideReact.FileCode,".rs":lucideReact.FileCode,".go":lucideReact.FileCode,".java":lucideReact.FileCode,".c":lucideReact.FileCode,".cpp":lucideReact.FileCode,".h":lucideReact.FileCode,".sh":lucideReact.Terminal,".bat":lucideReact.Terminal,".ps1":lucideReact.Terminal,".md":lucideReact.FileText,".txt":lucideReact.FileText,".pdf":lucideReact.FileText,".doc":lucideReact.FileText,".docx":lucideReact.FileText,".rtf":lucideReact.FileText,".csv":lucideReact.FileSpreadsheet,".xls":lucideReact.FileSpreadsheet,".xlsx":lucideReact.FileSpreadsheet,".db":lucideReact.Database,".sqlite":lucideReact.Database,".sql":lucideReact.Database,".zip":lucideReact.FileArchive,".tar":lucideReact.FileArchive,".gz":lucideReact.FileArchive,".rar":lucideReact.FileArchive,".7z":lucideReact.FileArchive};function fe(o){if(o.type==="directory")return lucideReact.Folder;let f=o.extension||_(o.name);return ut[f]||lucideReact.File}function Ie(o,f,I){return Math.max(f,Math.min(I,o))}function yt({files:o,title:f="File Explorer",accent:I="#8b5cf6",defaultView:Ae="list",initialPosition:Re,initialSize:Te,dockable:je=false,dockSide:Be="right",visible:G=true,onFileOpen:X,onSelectionChange:me,onNavigate:$,onDelete:U,onClose:Ve,onMinimize:pe,onPathSubmit:xe,defaultInputMode:Xe="search",actions:$e,resizable:He=true,minSize:L={width:400,height:300},className:Ke}){let[q,Oe]=ze.useState(Ae),[d,A]=ze.useState(new Set),[ge,H]=ze.useState(null),[l,Q]=ze.useState(false),[R,W]=ze.useState(false),[w,Pe]=ze.useState(""),[y,Ye]=ze.useState(Xe),[_e,Ge]=ze.useState(G),[Ue,K]=ze.useState(false),J=Te??{width:720,height:520},[x,O]=ze.useState(Re??{x:Math.max(0,Math.round((window.innerWidth-J.width)/2)),y:Math.max(0,Math.round((window.innerHeight-J.height)/2))}),[k,Z]=ze.useState(J),[h,qe]=ze.useState(null),ee=ze.useRef(false),te=ze.useRef({x:0,y:0}),ne=ze.useRef(null),T=ze.useRef(false),P=ze.useRef({x:0,y:0,w:0,h:0,px:0,py:0}),re=G!==void 0?G:_e,oe=ze.useMemo(()=>{let e=o.filter(i=>i.type==="directory"),n=o.filter(i=>i.type==="file");return e.sort((i,s)=>i.name.localeCompare(s.name)),n.sort((i,s)=>i.name.localeCompare(s.name)),[...e,...n]},[o]),u=ze.useMemo(()=>{if(y!=="search"||!w.trim())return oe;let e=w.toLowerCase();return oe.filter(n=>n.name.toLowerCase().includes(e))},[oe,w,y]),a=ge!=null?u[ge]:null,he=ze.useCallback((e,n)=>{A(i=>{let s=new Set(i);return n.ctrlKey||n.metaKey?s.has(e)?s.delete(e):s.add(e):(s.clear(),s.add(e)),s}),H(e);},[]);ze.useEffect(()=>{if(!me)return;let e=Array.from(d).map(n=>u[n]).filter(Boolean);me(e);},[d]);let be=ze.useCallback(e=>{let n=u[e];n&&(n.type==="directory"?$?.(n.path):X?.(n));},[u,X,$]),Qe=ze.useCallback(e=>{l||e.target.closest("button")||(ee.current=true,te.current={x:e.clientX-x.x,y:e.clientY-x.y},e.preventDefault());},[x,l]);ze.useEffect(()=>{let e=i=>{if(!ee.current)return;let s=window.innerWidth-100,m=window.innerHeight-40;O({x:Ie(i.clientX-te.current.x,0,s),y:Ie(i.clientY-te.current.y,0,m)});},n=()=>{ee.current=false,T.current=false,document.body.style.cursor="",document.body.style.userSelect="";};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n);}},[]);let b=ze.useCallback((e,n)=>{l||(n.preventDefault(),n.stopPropagation(),T.current=e,P.current={x:n.clientX,y:n.clientY,w:k.width,h:k.height,px:x.x,py:x.y},document.body.style.cursor=e==="e"||e==="w"?"ew-resize":e==="n"||e==="s"?"ns-resize":e==="nw"||e==="se"?"nwse-resize":"nesw-resize",document.body.style.userSelect="none");},[l,k,x]);ze.useEffect(()=>{let e=i=>{if(!T.current)return;let s=T.current,m=i.clientX-P.current.x,N=i.clientY-P.current.y,{w:M,h:D,px:se,py:ae}=P.current;if(s.includes("e")&&(M=Math.max(L.width,M+m)),s.includes("w")){let j=Math.max(L.width,M-m);se=se+(M-j),M=j;}if(s.includes("s")&&(D=Math.max(L.height,D+N)),s.includes("n")){let j=Math.max(L.height,D-N);ae=ae+(D-j),D=j;}Z({width:M,height:D}),O({x:se,y:ae});},n=()=>{T.current=false,document.body.style.cursor="",document.body.style.userSelect="";};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n);}},[L]);let ve=ze.useCallback(()=>{l?(h&&(O(h.pos),Z(h.size)),Q(false)):(qe({pos:x,size:k}),Q(true));},[l,x,k,h]),We=ze.useCallback(()=>{R?W(false):(l&&(Q(false),h&&(O(h.pos),Z(h.size))),W(true),pe?.());},[R,l,h,pe]);ze.useEffect(()=>{if(!re||R)return;let e=n=>{if(!(!ne.current?.contains(document.activeElement)&&document.activeElement!==ne.current)){if(n.key==="Escape"&&(H(null),A(new Set)),n.ctrlKey&&n.key==="a"){n.preventDefault();let i=new Set(u.map((s,m)=>m));A(i);}n.key==="Delete"&&d.size>0&&U&&(n.preventDefault(),K(true));}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[re,R,u,d,U]);let we={"--fe-accent":I};return R?jsxRuntime.jsx("div",{className:chunkX5YP5TMY_cjs.a("fixed z-100 cursor-pointer transition-all duration-300",Be==="right"?"right-0 top-1/2 -translate-y-1/2":"left-0 top-1/2 -translate-y-1/2"),style:we,onClick:()=>W(false),title:`Restore ${f}`,children:jsxRuntime.jsxs("div",{className:"fe-dock flex items-center gap-1.5 rounded-l-lg px-2 py-3 backdrop-blur-md",style:{writingMode:"vertical-rl",textOrientation:"mixed"},children:[jsxRuntime.jsx(lucideReact.HardDrive,{className:"h-3.5 w-3.5 text-(--fe-accent)"}),jsxRuntime.jsx("span",{className:"text-[10px] font-bold uppercase tracking-widest text-(--fe-text)",children:f})]})}):re?jsxRuntime.jsxs("div",{ref:ne,className:chunkX5YP5TMY_cjs.a("fe-window fixed z-100 flex flex-col overflow-hidden","rounded-xl border border-(--fe-border)","animate-[fe-window-in_0.35s_cubic-bezier(0.16,1,0.3,1)_both]",l&&"rounded-none",Ke),style:{...we,left:l?0:x.x,top:l?0:x.y,width:l?"100vw":k.width,height:l?"100vh":k.height,transition:l?"left 0.3s, top 0.3s, width 0.3s, height 0.3s":void 0},tabIndex:0,children:[jsxRuntime.jsxs("div",{className:"fe-titlebar group/titlebar flex h-10 shrink-0 cursor-grab items-center justify-between px-3 select-none active:cursor-grabbing",onMouseDown:Qe,onDoubleClick:ve,children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex h-5 w-5 items-center justify-center rounded",style:{background:"color-mix(in srgb, var(--fe-accent) 25%, transparent)"},children:jsxRuntime.jsx(lucideReact.HardDrive,{className:"h-3 w-3 text-(--fe-accent)"})}),jsxRuntime.jsx("span",{className:"text-xs font-bold uppercase tracking-widest text-(--fe-text)",children:f}),jsxRuntime.jsx("div",{className:"ml-2 hidden h-px w-20 md:block",style:{background:"linear-gradient(90deg, var(--fe-accent), transparent)",opacity:.3}})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-0.5",children:[jsxRuntime.jsx("button",{className:"fe-btn mr-1",onClick:()=>Oe(e=>e==="list"?"grid":"list"),title:q==="list"?"Grid view":"List view",children:q==="list"?jsxRuntime.jsx(lucideReact.LayoutGrid,{className:"h-3.5 w-3.5"}):jsxRuntime.jsx(lucideReact.LayoutList,{className:"h-3.5 w-3.5"})}),je&&jsxRuntime.jsx("button",{className:"fe-btn",onClick:We,title:"Dock to edge",children:jsxRuntime.jsx(lucideReact.Minus,{className:"h-3.5 w-3.5"})}),jsxRuntime.jsx("button",{className:"fe-btn",onClick:ve,title:l?"Restore":"Maximize",children:l?jsxRuntime.jsx(lucideReact.Minimize2,{className:"h-3.5 w-3.5"}):jsxRuntime.jsx(lucideReact.Maximize2,{className:"h-3.5 w-3.5"})}),jsxRuntime.jsx("button",{className:"fe-btn hover:bg-red-500/40! hover:text-red-300!",onClick:()=>{Ve?.(),Ge(false);},title:"Close",children:jsxRuntime.jsx(lucideReact.X,{className:"h-3.5 w-3.5"})})]})]}),jsxRuntime.jsxs("div",{className:"fe-toolbar flex h-9 shrink-0 items-center gap-2 px-3",children:[jsxRuntime.jsx("button",{className:"fe-btn p-1",onClick:()=>$?.(".."),title:"Go up",children:jsxRuntime.jsx(lucideReact.FolderUp,{className:"h-3.5 w-3.5"})}),jsxRuntime.jsx("button",{className:"fe-btn shrink-0 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider",style:y==="navigate"?{color:"var(--fe-accent)",background:"color-mix(in srgb, var(--fe-accent) 15%, transparent)"}:void 0,onClick:()=>Ye(e=>e==="search"?"navigate":"search"),title:y==="search"?"Switch to path navigation":"Switch to file search",children:y==="search"?jsxRuntime.jsx(lucideReact.Search,{className:"h-3 w-3"}):jsxRuntime.jsx(lucideReact.CornerRightDown,{className:"h-3 w-3"})}),jsxRuntime.jsx("div",{className:"relative flex-1",children:jsxRuntime.jsx("input",{type:"text",value:w,onChange:e=>Pe(e.target.value),onKeyDown:e=>{e.key==="Enter"&&w.trim()&&y==="navigate"&&(xe?xe(w.trim()):$?.(w.trim()));},placeholder:y==="search"?"Search files\u2026":"Enter path and press Enter\u2026",className:"h-6 w-full rounded border border-(--fe-input-border) bg-(--fe-input-bg) px-2 text-[11px] text-(--fe-text-strong) placeholder:text-(--fe-text-muted) outline-none transition-colors focus:border-(--fe-accent)/40 focus:bg-(--fe-input-bg)"})}),jsxRuntime.jsxs("span",{className:"shrink-0 font-mono text-[10px] text-(--fe-text-muted)",children:[u.length," item",u.length!==1?"s":"",d.size>0&&` \xB7 ${d.size} selected`]})]}),jsxRuntime.jsxs("div",{className:"flex flex-1 min-h-0",children:[jsxRuntime.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden p-1.5",onClick:e=>{e.target===e.currentTarget&&(A(new Set),H(null));},children:u.length===0?jsxRuntime.jsxs("div",{className:"flex h-full flex-col items-center justify-center text-(--fe-text-muted)",children:[jsxRuntime.jsx(lucideReact.Folder,{className:"mb-2 h-10 w-10"}),jsxRuntime.jsx("span",{className:"text-xs",children:"No files found"})]}):q==="list"?jsxRuntime.jsx("div",{className:"space-y-px",children:u.map((e,n)=>{let i=fe(e),s=d.has(n),m=e.extension||_(e.name);return jsxRuntime.jsxs("div",{className:chunkX5YP5TMY_cjs.a("fe-item group/item flex items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-(--fe-text) transition-all duration-150 cursor-pointer",s?"bg-(--fe-accent)/15 text-(--fe-text-strong)":"hover:bg-(--fe-surface-hover) hover:text-(--fe-text-strong)"),style:s?{boxShadow:"inset 2px 0 0 var(--fe-accent)"}:void 0,onClick:N=>he(n,N),onDoubleClick:()=>be(n),children:[jsxRuntime.jsx(i,{className:chunkX5YP5TMY_cjs.a("h-4 w-4 shrink-0",e.type==="directory"?"text-(--fe-accent)":"text-(--fe-text-muted)")}),jsxRuntime.jsx("span",{className:"flex-1 truncate text-xs font-medium",children:e.name}),m&&e.type==="file"&&jsxRuntime.jsx("span",{className:"shrink-0 rounded bg-(--fe-badge-bg) px-1.5 py-0.5 font-mono text-[9px] uppercase text-(--fe-text-muted)",children:m}),e.size!=null&&jsxRuntime.jsx("span",{className:"shrink-0 font-mono text-[10px] text-(--fe-text-muted)",children:Se(e.size)}),e.modifiedAt&&jsxRuntime.jsx("span",{className:"hidden shrink-0 font-mono text-[10px] text-(--fe-text-muted) lg:inline",children:ue(e.modifiedAt)})]},e.path+n)})}):jsxRuntime.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(90px,1fr))] gap-1.5 p-1",children:u.map((e,n)=>{let i=fe(e),s=d.has(n),m=e.extension||_(e.name);return jsxRuntime.jsxs("div",{className:chunkX5YP5TMY_cjs.a("fe-item group/item flex cursor-pointer flex-col items-center gap-1 rounded-lg px-2 py-2.5 text-center transition-all duration-150",s?"bg-(--fe-accent)/15 text-(--fe-text-strong) ring-1 ring-(--fe-accent)/30":"text-(--fe-text) hover:bg-(--fe-surface-hover) hover:text-(--fe-text-strong)"),onClick:N=>he(n,N),onDoubleClick:()=>be(n),children:[jsxRuntime.jsx(i,{className:chunkX5YP5TMY_cjs.a("h-7 w-7",e.type==="directory"?"text-(--fe-accent)":"text-(--fe-text-muted)")}),jsxRuntime.jsx("span",{className:"w-full truncate text-[10px] font-medium leading-tight",children:e.name}),m&&e.type==="file"&&jsxRuntime.jsx("span",{className:"font-mono text-[8px] uppercase text-(--fe-text-muted)",children:m})]},e.path+n)})})}),jsxRuntime.jsx("div",{className:chunkX5YP5TMY_cjs.a("shrink-0 overflow-hidden transition-[width] duration-300 ease-out",a?"w-56":"w-0"),children:a&&jsxRuntime.jsxs("div",{className:"fe-panel flex h-full w-56 flex-col border-l border-(--fe-border) p-4",children:[jsxRuntime.jsxs("div",{className:"mb-3 flex flex-col items-center",children:[ze__default.default.createElement(fe(a),{className:chunkX5YP5TMY_cjs.a("h-10 w-10 mb-2",a.type==="directory"?"text-(--fe-accent)":"text-(--fe-text-muted)")}),jsxRuntime.jsx("span",{className:"w-full text-center text-xs font-semibold text-(--fe-text-strong) break-all leading-tight",children:a.name})]}),jsxRuntime.jsxs("div",{className:"space-y-2.5 text-[10px]",children:[jsxRuntime.jsx(S,{label:"Type",value:a.type==="directory"?"Directory":a.mimeType||a.extension||_(a.name)||"File"}),a.size!=null&&jsxRuntime.jsx(S,{label:"Size",value:Se(a.size)}),jsxRuntime.jsx(S,{label:"Path",value:a.path,mono:true}),a.extension&&jsxRuntime.jsx(S,{label:"Extension",value:a.extension}),a.modifiedAt&&jsxRuntime.jsx(S,{label:"Modified",value:ue(a.modifiedAt)}),a.createdAt&&jsxRuntime.jsx(S,{label:"Created",value:ue(a.createdAt)})]}),jsxRuntime.jsxs("div",{className:"mt-auto flex flex-col gap-1.5",children:[a.type==="file"&&X&&jsxRuntime.jsxs("button",{className:"flex items-center justify-center gap-1.5 rounded-lg py-1.5 text-[10px] font-semibold uppercase tracking-wider text-(--fe-text-strong) transition-colors",style:{background:"color-mix(in srgb, var(--fe-accent) 20%, transparent)",border:"1px solid color-mix(in srgb, var(--fe-accent) 30%, transparent)"},onClick:()=>X(a),children:[jsxRuntime.jsx(lucideReact.ArrowUp,{className:"h-3 w-3 rotate-45"}),"Open"]}),$e?.map(e=>jsxRuntime.jsxs("button",{className:"fe-action flex items-center justify-center gap-1.5 rounded-lg py-1.5 text-[10px] font-semibold uppercase tracking-wider text-(--fe-text) transition-colors hover:text-(--fe-text-strong)",onClick:()=>e.onClick(a),children:[e.icon&&ze__default.default.createElement(e.icon,{className:"h-3 w-3"}),e.label]},e.key))]})]})})]}),jsxRuntime.jsxs("div",{className:"fe-statusbar flex h-6 shrink-0 items-center justify-between px-3 text-[9px] font-mono text-(--fe-text-muted)",children:[jsxRuntime.jsxs("span",{children:[u.length," items"]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[d.size>0&&jsxRuntime.jsxs("span",{className:"text-(--fe-accent)/70",children:[d.size," selected"]}),jsxRuntime.jsx("span",{className:"opacity-50",children:"Ctrl+Click multi-select \xB7 Esc clear"})]})]}),He&&!l&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"absolute top-0 left-2 right-2 h-1.5 cursor-ns-resize",onMouseDown:e=>b("n",e)}),jsxRuntime.jsx("div",{className:"absolute bottom-0 left-2 right-2 h-1.5 cursor-ns-resize",onMouseDown:e=>b("s",e)}),jsxRuntime.jsx("div",{className:"absolute top-2 left-0 bottom-2 w-1.5 cursor-ew-resize",onMouseDown:e=>b("w",e)}),jsxRuntime.jsx("div",{className:"absolute top-2 right-0 bottom-2 w-1.5 cursor-ew-resize",onMouseDown:e=>b("e",e)}),jsxRuntime.jsx("div",{className:"absolute top-0 left-0 h-3 w-3 cursor-nwse-resize",onMouseDown:e=>b("nw",e)}),jsxRuntime.jsx("div",{className:"absolute top-0 right-0 h-3 w-3 cursor-nesw-resize",onMouseDown:e=>b("ne",e)}),jsxRuntime.jsx("div",{className:"absolute bottom-0 left-0 h-3 w-3 cursor-nesw-resize",onMouseDown:e=>b("sw",e)}),jsxRuntime.jsx("div",{className:"absolute bottom-0 right-0 h-3 w-3 cursor-nwse-resize",onMouseDown:e=>b("se",e)})]}),jsxRuntime.jsx("style",{children:`
1
+ 'use strict';var chunkJJP23IOG_cjs=require('./chunk-JJP23IOG.cjs'),chunk2KVAFCQI_cjs=require('./chunk-2KVAFCQI.cjs'),chunkX5YP5TMY_cjs=require('./chunk-X5YP5TMY.cjs'),ze=require('react'),lucideReact=require('lucide-react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ze__default=/*#__PURE__*/_interopDefault(ze);function _(o){let f=o.lastIndexOf(".");return f>0?o.slice(f).toLowerCase():""}function Se(o){return o==null?"\u2014":o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:o<1024*1024*1024?`${(o/(1024*1024)).toFixed(1)} MB`:`${(o/(1024*1024*1024)).toFixed(2)} GB`}function ue(o){return o?(typeof o=="string"?new Date(o):o).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"\u2014"}var ut={".png":lucideReact.Image,".jpg":lucideReact.Image,".jpeg":lucideReact.Image,".gif":lucideReact.Image,".svg":lucideReact.Image,".webp":lucideReact.Image,".ico":lucideReact.Image,".bmp":lucideReact.Image,".mp3":lucideReact.Music,".wav":lucideReact.Music,".flac":lucideReact.Music,".ogg":lucideReact.Music,".aac":lucideReact.Music,".m4a":lucideReact.Music,".mp4":lucideReact.Video,".mkv":lucideReact.Video,".avi":lucideReact.Video,".mov":lucideReact.Video,".wmv":lucideReact.Video,".webm":lucideReact.Video,".ts":lucideReact.FileCode,".tsx":lucideReact.FileCode,".js":lucideReact.FileCode,".jsx":lucideReact.FileCode,".json":lucideReact.FileCode,".html":lucideReact.FileCode,".css":lucideReact.FileCode,".scss":lucideReact.FileCode,".py":lucideReact.FileCode,".rs":lucideReact.FileCode,".go":lucideReact.FileCode,".java":lucideReact.FileCode,".c":lucideReact.FileCode,".cpp":lucideReact.FileCode,".h":lucideReact.FileCode,".sh":lucideReact.Terminal,".bat":lucideReact.Terminal,".ps1":lucideReact.Terminal,".md":lucideReact.FileText,".txt":lucideReact.FileText,".pdf":lucideReact.FileText,".doc":lucideReact.FileText,".docx":lucideReact.FileText,".rtf":lucideReact.FileText,".csv":lucideReact.FileSpreadsheet,".xls":lucideReact.FileSpreadsheet,".xlsx":lucideReact.FileSpreadsheet,".db":lucideReact.Database,".sqlite":lucideReact.Database,".sql":lucideReact.Database,".zip":lucideReact.FileArchive,".tar":lucideReact.FileArchive,".gz":lucideReact.FileArchive,".rar":lucideReact.FileArchive,".7z":lucideReact.FileArchive};function fe(o){if(o.type==="directory")return lucideReact.Folder;let f=o.extension||_(o.name);return ut[f]||lucideReact.File}function Ie(o,f,I){return Math.max(f,Math.min(I,o))}function yt({files:o,title:f="File Explorer",accent:I="#8b5cf6",defaultView:Ae="list",initialPosition:Re,initialSize:Te,dockable:je=false,dockSide:Be="right",visible:G=true,onFileOpen:X,onSelectionChange:me,onNavigate:$,onDelete:U,onClose:Ve,onMinimize:pe,onPathSubmit:xe,defaultInputMode:Xe="search",actions:$e,resizable:He=true,minSize:L={width:400,height:300},className:Ke}){let[q,Oe]=ze.useState(Ae),[d,A]=ze.useState(new Set),[ge,H]=ze.useState(null),[l,Q]=ze.useState(false),[R,W]=ze.useState(false),[w,Pe]=ze.useState(""),[y,Ye]=ze.useState(Xe),[_e,Ge]=ze.useState(G),[Ue,K]=ze.useState(false),J=Te??{width:720,height:520},[x,O]=ze.useState(Re??{x:Math.max(0,Math.round((window.innerWidth-J.width)/2)),y:Math.max(0,Math.round((window.innerHeight-J.height)/2))}),[k,Z]=ze.useState(J),[h,qe]=ze.useState(null),ee=ze.useRef(false),te=ze.useRef({x:0,y:0}),ne=ze.useRef(null),T=ze.useRef(false),P=ze.useRef({x:0,y:0,w:0,h:0,px:0,py:0}),re=G!==void 0?G:_e,oe=ze.useMemo(()=>{let e=o.filter(i=>i.type==="directory"),n=o.filter(i=>i.type==="file");return e.sort((i,s)=>i.name.localeCompare(s.name)),n.sort((i,s)=>i.name.localeCompare(s.name)),[...e,...n]},[o]),u=ze.useMemo(()=>{if(y!=="search"||!w.trim())return oe;let e=w.toLowerCase();return oe.filter(n=>n.name.toLowerCase().includes(e))},[oe,w,y]),a=ge!=null?u[ge]:null,he=ze.useCallback((e,n)=>{A(i=>{let s=new Set(i);return n.ctrlKey||n.metaKey?s.has(e)?s.delete(e):s.add(e):(s.clear(),s.add(e)),s}),H(e);},[]);ze.useEffect(()=>{if(!me)return;let e=Array.from(d).map(n=>u[n]).filter(Boolean);me(e);},[d]);let be=ze.useCallback(e=>{let n=u[e];n&&(n.type==="directory"?$?.(n.path):X?.(n));},[u,X,$]),Qe=ze.useCallback(e=>{l||e.target.closest("button")||(ee.current=true,te.current={x:e.clientX-x.x,y:e.clientY-x.y},e.preventDefault());},[x,l]);ze.useEffect(()=>{let e=i=>{if(!ee.current)return;let s=window.innerWidth-100,m=window.innerHeight-40;O({x:Ie(i.clientX-te.current.x,0,s),y:Ie(i.clientY-te.current.y,0,m)});},n=()=>{ee.current=false,T.current=false,document.body.style.cursor="",document.body.style.userSelect="";};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n);}},[]);let b=ze.useCallback((e,n)=>{l||(n.preventDefault(),n.stopPropagation(),T.current=e,P.current={x:n.clientX,y:n.clientY,w:k.width,h:k.height,px:x.x,py:x.y},document.body.style.cursor=e==="e"||e==="w"?"ew-resize":e==="n"||e==="s"?"ns-resize":e==="nw"||e==="se"?"nwse-resize":"nesw-resize",document.body.style.userSelect="none");},[l,k,x]);ze.useEffect(()=>{let e=i=>{if(!T.current)return;let s=T.current,m=i.clientX-P.current.x,N=i.clientY-P.current.y,{w:M,h:D,px:se,py:ae}=P.current;if(s.includes("e")&&(M=Math.max(L.width,M+m)),s.includes("w")){let j=Math.max(L.width,M-m);se=se+(M-j),M=j;}if(s.includes("s")&&(D=Math.max(L.height,D+N)),s.includes("n")){let j=Math.max(L.height,D-N);ae=ae+(D-j),D=j;}Z({width:M,height:D}),O({x:se,y:ae});},n=()=>{T.current=false,document.body.style.cursor="",document.body.style.userSelect="";};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n);}},[L]);let ve=ze.useCallback(()=>{l?(h&&(O(h.pos),Z(h.size)),Q(false)):(qe({pos:x,size:k}),Q(true));},[l,x,k,h]),We=ze.useCallback(()=>{R?W(false):(l&&(Q(false),h&&(O(h.pos),Z(h.size))),W(true),pe?.());},[R,l,h,pe]);ze.useEffect(()=>{if(!re||R)return;let e=n=>{if(!(!ne.current?.contains(document.activeElement)&&document.activeElement!==ne.current)){if(n.key==="Escape"&&(H(null),A(new Set)),n.ctrlKey&&n.key==="a"){n.preventDefault();let i=new Set(u.map((s,m)=>m));A(i);}n.key==="Delete"&&d.size>0&&U&&(n.preventDefault(),K(true));}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[re,R,u,d,U]);let we={"--fe-accent":I};return R?jsxRuntime.jsx("div",{className:chunkX5YP5TMY_cjs.a("fixed z-100 cursor-pointer transition-all duration-300",Be==="right"?"right-0 top-1/2 -translate-y-1/2":"left-0 top-1/2 -translate-y-1/2"),style:we,onClick:()=>W(false),title:`Restore ${f}`,children:jsxRuntime.jsxs("div",{className:"fe-dock flex items-center gap-1.5 rounded-l-lg px-2 py-3 backdrop-blur-md",style:{writingMode:"vertical-rl",textOrientation:"mixed"},children:[jsxRuntime.jsx(lucideReact.HardDrive,{className:"h-3.5 w-3.5 text-(--fe-accent)"}),jsxRuntime.jsx("span",{className:"text-[10px] font-bold uppercase tracking-widest text-(--fe-text)",children:f})]})}):re?jsxRuntime.jsxs("div",{ref:ne,className:chunkX5YP5TMY_cjs.a("fe-window fixed z-100 flex flex-col overflow-hidden","rounded-xl border border-(--fe-border)","animate-[fe-window-in_0.35s_cubic-bezier(0.16,1,0.3,1)_both]",l&&"rounded-none",Ke),style:{...we,left:l?0:x.x,top:l?0:x.y,width:l?"100vw":k.width,height:l?"100vh":k.height,transition:l?"left 0.3s, top 0.3s, width 0.3s, height 0.3s":void 0},tabIndex:0,children:[jsxRuntime.jsxs("div",{className:"fe-titlebar group/titlebar flex h-10 shrink-0 cursor-grab items-center justify-between px-3 select-none active:cursor-grabbing",onMouseDown:Qe,onDoubleClick:ve,children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("div",{className:"flex h-5 w-5 items-center justify-center rounded",style:{background:"color-mix(in srgb, var(--fe-accent) 25%, transparent)"},children:jsxRuntime.jsx(lucideReact.HardDrive,{className:"h-3 w-3 text-(--fe-accent)"})}),jsxRuntime.jsx("span",{className:"text-xs font-bold uppercase tracking-widest text-(--fe-text)",children:f}),jsxRuntime.jsx("div",{className:"ml-2 hidden h-px w-20 md:block",style:{background:"linear-gradient(90deg, var(--fe-accent), transparent)",opacity:.3}})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-0.5",children:[jsxRuntime.jsx("button",{className:"fe-btn mr-1",onClick:()=>Oe(e=>e==="list"?"grid":"list"),title:q==="list"?"Grid view":"List view",children:q==="list"?jsxRuntime.jsx(lucideReact.LayoutGrid,{className:"h-3.5 w-3.5"}):jsxRuntime.jsx(lucideReact.LayoutList,{className:"h-3.5 w-3.5"})}),je&&jsxRuntime.jsx("button",{className:"fe-btn",onClick:We,title:"Dock to edge",children:jsxRuntime.jsx(lucideReact.Minus,{className:"h-3.5 w-3.5"})}),jsxRuntime.jsx("button",{className:"fe-btn",onClick:ve,title:l?"Restore":"Maximize",children:l?jsxRuntime.jsx(lucideReact.Minimize2,{className:"h-3.5 w-3.5"}):jsxRuntime.jsx(lucideReact.Maximize2,{className:"h-3.5 w-3.5"})}),jsxRuntime.jsx("button",{className:"fe-btn hover:bg-red-500/40! hover:text-red-300!",onClick:()=>{Ve?.(),Ge(false);},title:"Close",children:jsxRuntime.jsx(lucideReact.X,{className:"h-3.5 w-3.5"})})]})]}),jsxRuntime.jsxs("div",{className:"fe-toolbar flex h-9 shrink-0 items-center gap-2 px-3",children:[jsxRuntime.jsx("button",{className:"fe-btn p-1",onClick:()=>$?.(".."),title:"Go up",children:jsxRuntime.jsx(lucideReact.FolderUp,{className:"h-3.5 w-3.5"})}),jsxRuntime.jsx("button",{className:"fe-btn shrink-0 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-wider",style:y==="navigate"?{color:"var(--fe-accent)",background:"color-mix(in srgb, var(--fe-accent) 15%, transparent)"}:void 0,onClick:()=>Ye(e=>e==="search"?"navigate":"search"),title:y==="search"?"Switch to path navigation":"Switch to file search",children:y==="search"?jsxRuntime.jsx(lucideReact.Search,{className:"h-3 w-3"}):jsxRuntime.jsx(lucideReact.CornerRightDown,{className:"h-3 w-3"})}),jsxRuntime.jsx("div",{className:"relative flex-1",children:jsxRuntime.jsx("input",{type:"text",value:w,onChange:e=>Pe(e.target.value),onKeyDown:e=>{e.key==="Enter"&&w.trim()&&y==="navigate"&&(xe?xe(w.trim()):$?.(w.trim()));},placeholder:y==="search"?"Search files\u2026":"Enter path and press Enter\u2026",className:"h-6 w-full rounded border border-(--fe-input-border) bg-(--fe-input-bg) px-2 text-[11px] text-(--fe-text-strong) placeholder:text-(--fe-text-muted) outline-none transition-colors focus:border-(--fe-accent)/40 focus:bg-(--fe-input-bg)"})}),jsxRuntime.jsxs("span",{className:"shrink-0 font-mono text-[10px] text-(--fe-text-muted)",children:[u.length," item",u.length!==1?"s":"",d.size>0&&` \xB7 ${d.size} selected`]})]}),jsxRuntime.jsxs("div",{className:"flex flex-1 min-h-0",children:[jsxRuntime.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden p-1.5",onClick:e=>{e.target===e.currentTarget&&(A(new Set),H(null));},children:u.length===0?jsxRuntime.jsxs("div",{className:"flex h-full flex-col items-center justify-center text-(--fe-text-muted)",children:[jsxRuntime.jsx(lucideReact.Folder,{className:"mb-2 h-10 w-10"}),jsxRuntime.jsx("span",{className:"text-xs",children:"No files found"})]}):q==="list"?jsxRuntime.jsx("div",{className:"space-y-px",children:u.map((e,n)=>{let i=fe(e),s=d.has(n),m=e.extension||_(e.name);return jsxRuntime.jsxs("div",{className:chunkX5YP5TMY_cjs.a("fe-item group/item flex items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-(--fe-text) transition-all duration-150 cursor-pointer",s?"bg-(--fe-accent)/15 text-(--fe-text-strong)":"hover:bg-(--fe-surface-hover) hover:text-(--fe-text-strong)"),style:s?{boxShadow:"inset 2px 0 0 var(--fe-accent)"}:void 0,onClick:N=>he(n,N),onDoubleClick:()=>be(n),children:[jsxRuntime.jsx(i,{className:chunkX5YP5TMY_cjs.a("h-4 w-4 shrink-0",e.type==="directory"?"text-(--fe-accent)":"text-(--fe-text-muted)")}),jsxRuntime.jsx("span",{className:"flex-1 truncate text-xs font-medium",children:e.name}),m&&e.type==="file"&&jsxRuntime.jsx("span",{className:"shrink-0 rounded bg-(--fe-badge-bg) px-1.5 py-0.5 font-mono text-[9px] uppercase text-(--fe-text-muted)",children:m}),e.size!=null&&jsxRuntime.jsx("span",{className:"shrink-0 font-mono text-[10px] text-(--fe-text-muted)",children:Se(e.size)}),e.modifiedAt&&jsxRuntime.jsx("span",{className:"hidden shrink-0 font-mono text-[10px] text-(--fe-text-muted) lg:inline",children:ue(e.modifiedAt)})]},e.path+n)})}):jsxRuntime.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(90px,1fr))] gap-1.5 p-1",children:u.map((e,n)=>{let i=fe(e),s=d.has(n),m=e.extension||_(e.name);return jsxRuntime.jsxs("div",{className:chunkX5YP5TMY_cjs.a("fe-item group/item flex cursor-pointer flex-col items-center gap-1 rounded-lg px-2 py-2.5 text-center transition-all duration-150",s?"bg-(--fe-accent)/15 text-(--fe-text-strong) ring-1 ring-(--fe-accent)/30":"text-(--fe-text) hover:bg-(--fe-surface-hover) hover:text-(--fe-text-strong)"),onClick:N=>he(n,N),onDoubleClick:()=>be(n),children:[jsxRuntime.jsx(i,{className:chunkX5YP5TMY_cjs.a("h-7 w-7",e.type==="directory"?"text-(--fe-accent)":"text-(--fe-text-muted)")}),jsxRuntime.jsx("span",{className:"w-full truncate text-[10px] font-medium leading-tight",children:e.name}),m&&e.type==="file"&&jsxRuntime.jsx("span",{className:"font-mono text-[8px] uppercase text-(--fe-text-muted)",children:m})]},e.path+n)})})}),jsxRuntime.jsx("div",{className:chunkX5YP5TMY_cjs.a("shrink-0 overflow-hidden transition-[width] duration-300 ease-out",a?"w-56":"w-0"),children:a&&jsxRuntime.jsxs("div",{className:"fe-panel flex h-full w-56 flex-col border-l border-(--fe-border) p-4",children:[jsxRuntime.jsxs("div",{className:"mb-3 flex flex-col items-center",children:[ze__default.default.createElement(fe(a),{className:chunkX5YP5TMY_cjs.a("h-10 w-10 mb-2",a.type==="directory"?"text-(--fe-accent)":"text-(--fe-text-muted)")}),jsxRuntime.jsx("span",{className:"w-full text-center text-xs font-semibold text-(--fe-text-strong) break-all leading-tight",children:a.name})]}),jsxRuntime.jsxs("div",{className:"space-y-2.5 text-[10px]",children:[jsxRuntime.jsx(S,{label:"Type",value:a.type==="directory"?"Directory":a.mimeType||a.extension||_(a.name)||"File"}),a.size!=null&&jsxRuntime.jsx(S,{label:"Size",value:Se(a.size)}),jsxRuntime.jsx(S,{label:"Path",value:a.path,mono:true}),a.extension&&jsxRuntime.jsx(S,{label:"Extension",value:a.extension}),a.modifiedAt&&jsxRuntime.jsx(S,{label:"Modified",value:ue(a.modifiedAt)}),a.createdAt&&jsxRuntime.jsx(S,{label:"Created",value:ue(a.createdAt)})]}),jsxRuntime.jsxs("div",{className:"mt-auto flex flex-col gap-1.5",children:[a.type==="file"&&X&&jsxRuntime.jsxs("button",{className:"flex items-center justify-center gap-1.5 rounded-lg py-1.5 text-[10px] font-semibold uppercase tracking-wider text-(--fe-text-strong) transition-colors",style:{background:"color-mix(in srgb, var(--fe-accent) 20%, transparent)",border:"1px solid color-mix(in srgb, var(--fe-accent) 30%, transparent)"},onClick:()=>X(a),children:[jsxRuntime.jsx(lucideReact.ArrowUp,{className:"h-3 w-3 rotate-45"}),"Open"]}),$e?.map(e=>jsxRuntime.jsxs("button",{className:"fe-action flex items-center justify-center gap-1.5 rounded-lg py-1.5 text-[10px] font-semibold uppercase tracking-wider text-(--fe-text) transition-colors hover:text-(--fe-text-strong)",onClick:()=>e.onClick(a),children:[e.icon&&ze__default.default.createElement(e.icon,{className:"h-3 w-3"}),e.label]},e.key))]})]})})]}),jsxRuntime.jsxs("div",{className:"fe-statusbar flex h-6 shrink-0 items-center justify-between px-3 text-[9px] font-mono text-(--fe-text-muted)",children:[jsxRuntime.jsxs("span",{children:[u.length," items"]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[d.size>0&&jsxRuntime.jsxs("span",{className:"text-(--fe-accent)/70",children:[d.size," selected"]}),jsxRuntime.jsx("span",{className:"opacity-50",children:"Ctrl+Click multi-select \xB7 Esc clear"})]})]}),He&&!l&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"absolute top-0 left-2 right-2 h-1.5 cursor-ns-resize",onMouseDown:e=>b("n",e)}),jsxRuntime.jsx("div",{className:"absolute bottom-0 left-2 right-2 h-1.5 cursor-ns-resize",onMouseDown:e=>b("s",e)}),jsxRuntime.jsx("div",{className:"absolute top-2 left-0 bottom-2 w-1.5 cursor-ew-resize",onMouseDown:e=>b("w",e)}),jsxRuntime.jsx("div",{className:"absolute top-2 right-0 bottom-2 w-1.5 cursor-ew-resize",onMouseDown:e=>b("e",e)}),jsxRuntime.jsx("div",{className:"absolute top-0 left-0 h-3 w-3 cursor-nwse-resize",onMouseDown:e=>b("nw",e)}),jsxRuntime.jsx("div",{className:"absolute top-0 right-0 h-3 w-3 cursor-nesw-resize",onMouseDown:e=>b("ne",e)}),jsxRuntime.jsx("div",{className:"absolute bottom-0 left-0 h-3 w-3 cursor-nesw-resize",onMouseDown:e=>b("sw",e)}),jsxRuntime.jsx("div",{className:"absolute bottom-0 right-0 h-3 w-3 cursor-nwse-resize",onMouseDown:e=>b("se",e)})]}),jsxRuntime.jsx("style",{children:`
2
2
  .fe-window {
3
3
  background: var(--fe-bg);
4
4
  box-shadow: var(--fe-shadow);
@@ -52,4 +52,4 @@
52
52
  from { opacity: 0; transform: translateX(-4px); }
53
53
  to { opacity: 1; transform: translateX(0); }
54
54
  }
55
- `}),jsxRuntime.jsx(chunkU2ZQHP4I_cjs.a,{open:Ue,onOpenChange:K,children:jsxRuntime.jsxs(chunkU2ZQHP4I_cjs.b,{size:"sm",children:[jsxRuntime.jsxs(chunkU2ZQHP4I_cjs.c,{children:[jsxRuntime.jsxs(chunkU2ZQHP4I_cjs.d,{children:[jsxRuntime.jsx(lucideReact.AlertTriangle,{className:"text-danger-500"}),"Confirm Deletion"]}),jsxRuntime.jsxs(chunkU2ZQHP4I_cjs.e,{children:[d.size===1?`Are you sure you want to delete "${u[Array.from(d)[0]]?.name}"?`:`Are you sure you want to delete ${d.size} selected items?`," ","This action cannot be undone."]})]}),jsxRuntime.jsxs(chunkU2ZQHP4I_cjs.f,{children:[jsxRuntime.jsx(chunkBQLPFPCA_cjs.a,{intent:"ghost",onClick:()=>K(false),children:"Cancel"}),jsxRuntime.jsxs(chunkBQLPFPCA_cjs.a,{intent:"danger",onClick:()=>{let e=Array.from(d).map(n=>u[n]).filter(Boolean);U?.(e),A(new Set),H(null),K(false);},children:[jsxRuntime.jsx(lucideReact.Trash2,{className:"h-4 w-4"}),"Delete"]})]})]})})]}):null}function S({label:o,value:f,mono:I}){return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{className:"mb-0.5 font-semibold uppercase tracking-wider text-(--fe-text-muted)",children:o}),jsxRuntime.jsx("div",{className:chunkX5YP5TMY_cjs.a("text-(--fe-text) break-all leading-snug",I&&"font-mono text-[9px]"),children:f})]})}exports.a=yt;
55
+ `}),jsxRuntime.jsx(chunkJJP23IOG_cjs.a,{open:Ue,onOpenChange:K,children:jsxRuntime.jsxs(chunkJJP23IOG_cjs.b,{size:"sm",children:[jsxRuntime.jsxs(chunkJJP23IOG_cjs.c,{children:[jsxRuntime.jsxs(chunkJJP23IOG_cjs.d,{children:[jsxRuntime.jsx(lucideReact.AlertTriangle,{className:"text-danger-500"}),"Confirm Deletion"]}),jsxRuntime.jsxs(chunkJJP23IOG_cjs.e,{children:[d.size===1?`Are you sure you want to delete "${u[Array.from(d)[0]]?.name}"?`:`Are you sure you want to delete ${d.size} selected items?`," ","This action cannot be undone."]})]}),jsxRuntime.jsxs(chunkJJP23IOG_cjs.f,{children:[jsxRuntime.jsx(chunk2KVAFCQI_cjs.a,{intent:"ghost",onClick:()=>K(false),children:"Cancel"}),jsxRuntime.jsxs(chunk2KVAFCQI_cjs.a,{intent:"danger",onClick:()=>{let e=Array.from(d).map(n=>u[n]).filter(Boolean);U?.(e),A(new Set),H(null),K(false);},children:[jsxRuntime.jsx(lucideReact.Trash2,{className:"h-4 w-4"}),"Delete"]})]})]})})]}):null}function S({label:o,value:f,mono:I}){return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{className:"mb-0.5 font-semibold uppercase tracking-wider text-(--fe-text-muted)",children:o}),jsxRuntime.jsx("div",{className:chunkX5YP5TMY_cjs.a("text-(--fe-text) break-all leading-snug",I&&"font-mono text-[9px]"),children:f})]})}exports.a=yt;