entangle-ui 0.8.2 → 0.9.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 (203) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/esm/assets/src/components/controls/Combobox/Combobox.css.ts.vanilla-B7B5ttkq.css +210 -0
  3. package/dist/esm/assets/src/components/controls/FileUploader/FileUploader.css.ts.vanilla-T4nRiI7s.css +194 -0
  4. package/dist/esm/assets/src/components/controls/MultiSelect/MultiSelect.css.ts.vanilla-CdYayqaF.css +311 -0
  5. package/dist/esm/assets/src/components/controls/TagInput/TagInput.css.ts.vanilla-hnkMOPp1.css +141 -0
  6. package/dist/esm/assets/src/components/data/DataTable/DataTable.css.ts.vanilla-CmRgtjIW.css +231 -0
  7. package/dist/esm/assets/src/components/feedback/Alert/{Alert.css.ts.vanilla-CRAI-xHx.css → Alert.css.ts.vanilla-CfCDsIEg.css} +2 -0
  8. package/dist/esm/assets/src/components/feedback/CommandPalette/CommandPalette.css.ts.vanilla-DGdrLKYZ.css +160 -0
  9. package/dist/esm/assets/src/components/feedback/Drawer/Drawer.css.ts.vanilla-CLPTOUrA.css +247 -0
  10. package/dist/esm/assets/src/components/feedback/Skeleton/SkeletonLayout.css.ts.vanilla-Db7bpqiI.css +75 -0
  11. package/dist/esm/assets/src/components/feedback/Stat/Stat.css.ts.vanilla-GBk3JAMB.css +69 -0
  12. package/dist/esm/assets/src/components/layout/Card/Card.css.ts.vanilla-Ducn1gUX.css +124 -0
  13. package/dist/esm/assets/src/components/navigation/Pagination/Pagination.css.ts.vanilla-CmlFyyjh.css +103 -0
  14. package/dist/esm/assets/src/components/primitives/HoverCard/HoverCard.css.ts.vanilla-BYT0qbLp.css +41 -0
  15. package/dist/esm/components/Icons/CloudUploadIcon.js +24 -0
  16. package/dist/esm/components/Icons/CloudUploadIcon.js.map +1 -0
  17. package/dist/esm/components/Icons/ExternalLinkIcon.js +26 -0
  18. package/dist/esm/components/Icons/ExternalLinkIcon.js.map +1 -0
  19. package/dist/esm/components/Icons/FirstIcon.js +23 -0
  20. package/dist/esm/components/Icons/FirstIcon.js.map +1 -0
  21. package/dist/esm/components/Icons/LastIcon.js +23 -0
  22. package/dist/esm/components/Icons/LastIcon.js.map +1 -0
  23. package/dist/esm/components/Icons/UnlinkIcon.js +26 -0
  24. package/dist/esm/components/Icons/UnlinkIcon.js.map +1 -0
  25. package/dist/esm/components/controls/Combobox/Combobox.css.js +20 -0
  26. package/dist/esm/components/controls/Combobox/Combobox.css.js.map +1 -0
  27. package/dist/esm/components/controls/Combobox/Combobox.js +354 -0
  28. package/dist/esm/components/controls/Combobox/Combobox.js.map +1 -0
  29. package/dist/esm/components/controls/FileUploader/FileUploader.css.js +20 -0
  30. package/dist/esm/components/controls/FileUploader/FileUploader.css.js.map +1 -0
  31. package/dist/esm/components/controls/FileUploader/FileUploader.js +264 -0
  32. package/dist/esm/components/controls/FileUploader/FileUploader.js.map +1 -0
  33. package/dist/esm/components/controls/MultiSelect/MultiSelect.css.js +23 -0
  34. package/dist/esm/components/controls/MultiSelect/MultiSelect.css.js.map +1 -0
  35. package/dist/esm/components/controls/MultiSelect/MultiSelect.js +269 -0
  36. package/dist/esm/components/controls/MultiSelect/MultiSelect.js.map +1 -0
  37. package/dist/esm/components/controls/Select/Select.js +5 -4
  38. package/dist/esm/components/controls/Select/Select.js.map +1 -1
  39. package/dist/esm/components/controls/TagInput/TagInput.css.js +12 -0
  40. package/dist/esm/components/controls/TagInput/TagInput.css.js.map +1 -0
  41. package/dist/esm/components/controls/TagInput/TagInput.js +189 -0
  42. package/dist/esm/components/controls/TagInput/TagInput.js.map +1 -0
  43. package/dist/esm/components/controls/TreeView/TreeNode.js +87 -1
  44. package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -1
  45. package/dist/esm/components/controls/VectorInput/VectorInput.js +87 -4
  46. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
  47. package/dist/esm/components/data/DataTable/DataTable.css.js +25 -0
  48. package/dist/esm/components/data/DataTable/DataTable.css.js.map +1 -0
  49. package/dist/esm/components/data/DataTable/DataTable.js +502 -0
  50. package/dist/esm/components/data/DataTable/DataTable.js.map +1 -0
  51. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js +87 -5
  52. package/dist/esm/components/editor/ChatPanel/ChatCodeBlock.js.map +1 -1
  53. package/dist/esm/components/editor/ChatPanel/ChatInput.js +87 -5
  54. package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
  55. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +87 -2
  56. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  57. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +87 -3
  58. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -1
  59. package/dist/esm/components/editor/PropertyInspector/PropertySection.js +87 -3
  60. package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -1
  61. package/dist/esm/components/feedback/Alert/Alert.css.js +1 -1
  62. package/dist/esm/components/feedback/Alert/Alert.js +3 -2
  63. package/dist/esm/components/feedback/Alert/Alert.js.map +1 -1
  64. package/dist/esm/components/feedback/CommandPalette/CommandPalette.css.js +20 -0
  65. package/dist/esm/components/feedback/CommandPalette/CommandPalette.css.js.map +1 -0
  66. package/dist/esm/components/feedback/CommandPalette/CommandPalette.js +261 -0
  67. package/dist/esm/components/feedback/CommandPalette/CommandPalette.js.map +1 -0
  68. package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js +86 -0
  69. package/dist/esm/components/feedback/CommandPalette/fuzzySearch.js.map +1 -0
  70. package/dist/esm/components/feedback/CommandPalette/useRecentItems.js +63 -0
  71. package/dist/esm/components/feedback/CommandPalette/useRecentItems.js.map +1 -0
  72. package/dist/esm/components/feedback/Dialog/DialogHeader.js +2 -1
  73. package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -1
  74. package/dist/esm/components/feedback/Drawer/Drawer.css.js +17 -0
  75. package/dist/esm/components/feedback/Drawer/Drawer.css.js.map +1 -0
  76. package/dist/esm/components/feedback/Drawer/Drawer.js +120 -0
  77. package/dist/esm/components/feedback/Drawer/Drawer.js.map +1 -0
  78. package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js +74 -0
  79. package/dist/esm/components/feedback/Drawer/useDrawerAnimation.js.map +1 -0
  80. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.css.js +18 -0
  81. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.css.js.map +1 -0
  82. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js +95 -0
  83. package/dist/esm/components/feedback/Skeleton/SkeletonLayout.js.map +1 -0
  84. package/dist/esm/components/feedback/Stat/Stat.css.js +15 -0
  85. package/dist/esm/components/feedback/Stat/Stat.css.js.map +1 -0
  86. package/dist/esm/components/feedback/Stat/Stat.js +55 -0
  87. package/dist/esm/components/feedback/Stat/Stat.js.map +1 -0
  88. package/dist/esm/components/feedback/Toast/ToastItem.js +12 -15
  89. package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -1
  90. package/dist/esm/components/layout/Accordion/Accordion.js +2 -1
  91. package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -1
  92. package/dist/esm/components/layout/Accordion/AccordionTrigger.js +2 -3
  93. package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -1
  94. package/dist/esm/components/layout/Card/Card.css.js +18 -0
  95. package/dist/esm/components/layout/Card/Card.css.js.map +1 -0
  96. package/dist/esm/components/layout/Card/Card.js +66 -0
  97. package/dist/esm/components/layout/Card/Card.js.map +1 -0
  98. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +1 -0
  99. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -1
  100. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +1 -0
  101. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -1
  102. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +5 -0
  103. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -1
  104. package/dist/esm/components/navigation/Pagination/Pagination.css.js +12 -0
  105. package/dist/esm/components/navigation/Pagination/Pagination.css.js.map +1 -0
  106. package/dist/esm/components/navigation/Pagination/Pagination.js +107 -0
  107. package/dist/esm/components/navigation/Pagination/Pagination.js.map +1 -0
  108. package/dist/esm/components/navigation/Pagination/usePagination.js +143 -0
  109. package/dist/esm/components/navigation/Pagination/usePagination.js.map +1 -0
  110. package/dist/esm/components/primitives/Avatar/Avatar.js +87 -1
  111. package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -1
  112. package/dist/esm/components/primitives/Badge/Badge.js +87 -1
  113. package/dist/esm/components/primitives/Badge/Badge.js.map +1 -1
  114. package/dist/esm/components/primitives/Checkbox/Checkbox.js +5 -2
  115. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
  116. package/dist/esm/components/primitives/Collapsible/Collapsible.js +2 -3
  117. package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -1
  118. package/dist/esm/components/primitives/HoverCard/HoverCard.css.js +7 -0
  119. package/dist/esm/components/primitives/HoverCard/HoverCard.css.js.map +1 -0
  120. package/dist/esm/components/primitives/HoverCard/HoverCard.js +169 -0
  121. package/dist/esm/components/primitives/HoverCard/HoverCard.js.map +1 -0
  122. package/dist/esm/components/primitives/Icon/Icon.js +16 -2
  123. package/dist/esm/components/primitives/Icon/Icon.js.map +1 -1
  124. package/dist/esm/components/primitives/Link/Link.js +3 -3
  125. package/dist/esm/components/primitives/Link/Link.js.map +1 -1
  126. package/dist/esm/components/primitives/Popover/PopoverClose.js +2 -3
  127. package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -1
  128. package/dist/esm/components/primitives/Radio/Radio.js +1 -1
  129. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js +44 -0
  130. package/dist/esm/hooks/useBreakpoint/useBreakpoint.js.map +1 -0
  131. package/dist/esm/hooks/useDebounced/useDebouncedCallback.js +97 -0
  132. package/dist/esm/hooks/useDebounced/useDebouncedCallback.js.map +1 -0
  133. package/dist/esm/hooks/useDebounced/useDebouncedValue.js +35 -0
  134. package/dist/esm/hooks/useDebounced/useDebouncedValue.js.map +1 -0
  135. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +73 -0
  136. package/dist/esm/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -0
  137. package/dist/esm/hooks/useListboxNav/useListboxNav.js +181 -0
  138. package/dist/esm/hooks/useListboxNav/useListboxNav.js.map +1 -0
  139. package/dist/esm/hooks/useMediaQuery/useMediaQuery.js +54 -0
  140. package/dist/esm/hooks/useMediaQuery/useMediaQuery.js.map +1 -0
  141. package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js +78 -0
  142. package/dist/esm/hooks/useThrottledCallback/useThrottledCallback.js.map +1 -0
  143. package/dist/esm/index.js +25 -0
  144. package/dist/esm/index.js.map +1 -1
  145. package/dist/esm/theme/breakpoints.js +27 -0
  146. package/dist/esm/theme/breakpoints.js.map +1 -0
  147. package/dist/esm/theme/index.js +1 -0
  148. package/dist/esm/theme/index.js.map +1 -1
  149. package/dist/tokens/tokens.dark.css +1 -1
  150. package/dist/tokens/tokens.json +1 -1
  151. package/dist/tokens/tokens.light.css +1 -1
  152. package/dist/types/components/Icons/CloudUploadIcon.d.ts +27 -0
  153. package/dist/types/components/Icons/ExternalLinkIcon.d.ts +29 -0
  154. package/dist/types/components/Icons/FirstIcon.d.ts +26 -0
  155. package/dist/types/components/Icons/LastIcon.d.ts +26 -0
  156. package/dist/types/components/Icons/UnlinkIcon.d.ts +29 -0
  157. package/dist/types/components/controls/Combobox/Combobox.d.ts +29 -0
  158. package/dist/types/components/controls/Combobox/Combobox.types.d.ts +109 -0
  159. package/dist/types/components/controls/FileUploader/FileUploader.d.ts +34 -0
  160. package/dist/types/components/controls/FileUploader/FileUploader.types.d.ts +94 -0
  161. package/dist/types/components/controls/MultiSelect/MultiSelect.d.ts +31 -0
  162. package/dist/types/components/controls/MultiSelect/MultiSelect.types.d.ts +85 -0
  163. package/dist/types/components/controls/TagInput/TagInput.d.ts +24 -0
  164. package/dist/types/components/controls/TagInput/TagInput.types.d.ts +100 -0
  165. package/dist/types/components/data/DataTable/DataTable.d.ts +8 -0
  166. package/dist/types/components/data/DataTable/DataTable.types.d.ts +159 -0
  167. package/dist/types/components/feedback/Alert/Alert.d.ts +1 -0
  168. package/dist/types/components/feedback/Alert/Alert.types.d.ts +7 -0
  169. package/dist/types/components/feedback/CommandPalette/CommandPalette.d.ts +29 -0
  170. package/dist/types/components/feedback/CommandPalette/CommandPalette.types.d.ts +61 -0
  171. package/dist/types/components/feedback/CommandPalette/fuzzySearch.d.ts +6 -0
  172. package/dist/types/components/feedback/Drawer/Drawer.d.ts +12 -0
  173. package/dist/types/components/feedback/Drawer/Drawer.types.d.ts +70 -0
  174. package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +44 -1
  175. package/dist/types/components/feedback/Skeleton/SkeletonLayout.d.ts +314 -0
  176. package/dist/types/components/feedback/Stat/Stat.d.ts +23 -0
  177. package/dist/types/components/feedback/Stat/Stat.types.d.ts +38 -0
  178. package/dist/types/components/layout/Accordion/Accordion.types.d.ts +7 -0
  179. package/dist/types/components/layout/Card/Card.d.ts +12 -0
  180. package/dist/types/components/layout/Card/Card.types.d.ts +54 -0
  181. package/dist/types/components/navigation/Pagination/Pagination.d.ts +22 -0
  182. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +49 -0
  183. package/dist/types/components/primitives/Button/Button.d.ts +1 -1
  184. package/dist/types/components/primitives/HoverCard/HoverCard.d.ts +10 -0
  185. package/dist/types/components/primitives/HoverCard/HoverCard.types.d.ts +64 -0
  186. package/dist/types/components/primitives/Icon/Icon.d.ts +14 -1
  187. package/dist/types/components/primitives/IconButton/IconButton.d.ts +1 -1
  188. package/dist/types/hooks/useBreakpoint/useBreakpoint.d.ts +19 -0
  189. package/dist/types/hooks/useBreakpoint/useBreakpoint.types.d.ts +20 -0
  190. package/dist/types/hooks/useDebounced/useDebounced.types.d.ts +15 -0
  191. package/dist/types/hooks/useDebounced/useDebouncedCallback.d.ts +22 -0
  192. package/dist/types/hooks/useDebounced/useDebouncedValue.d.ts +16 -0
  193. package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +22 -0
  194. package/dist/types/hooks/useIntersectionObserver/useIntersectionObserver.types.d.ts +22 -0
  195. package/dist/types/hooks/useListboxNav/useListboxNav.d.ts +75 -0
  196. package/dist/types/hooks/useMediaQuery/useMediaQuery.d.ts +19 -0
  197. package/dist/types/hooks/useMediaQuery/useMediaQuery.types.d.ts +6 -0
  198. package/dist/types/hooks/useThrottledCallback/useThrottledCallback.d.ts +23 -0
  199. package/dist/types/hooks/useThrottledCallback/useThrottledCallback.types.d.ts +13 -0
  200. package/dist/types/index.d.ts +43 -1
  201. package/dist/types/theme/breakpoints.d.ts +22 -0
  202. package/dist/types/theme/index.d.ts +1 -0
  203. package/package.json +3 -1
@@ -0,0 +1,159 @@
1
+ import React from 'react';
2
+ import { BaseComponent } from '../../../types/common.js';
3
+ import { Prettify } from '../../../types/utilities.js';
4
+
5
+ /** Visual density. Affects row height and cell padding. */
6
+ type DataTableDensity = 'comfortable' | 'compact' | 'dense';
7
+ /** Cell horizontal alignment. */
8
+ type DataTableAlign = 'left' | 'center' | 'right';
9
+ /** Sort direction. `null` means unsorted (third state of the sort cycle). */
10
+ type DataTableSortDirection = 'asc' | 'desc' | null;
11
+ /** Selection behavior. */
12
+ type DataTableSelectionMode = 'single' | 'multiple' | false;
13
+ /**
14
+ * Description of a single column.
15
+ *
16
+ * `R` is the row data type.
17
+ *
18
+ * `accessor` may be a string (key of `R`) or a function returning the cell
19
+ * value. When omitted, `id` is used as a key into `R` if it matches a key,
20
+ * otherwise the cell is empty.
21
+ */
22
+ interface DataTableColumn<R> {
23
+ /** Stable column identifier. Required. */
24
+ id: string;
25
+ /** Header content (string or any node). */
26
+ header?: React.ReactNode;
27
+ /** How to read the cell value from a row. */
28
+ accessor?: keyof R | ((row: R, rowIndex: number) => unknown);
29
+ /**
30
+ * Cell renderer. Receives the resolved value and the row.
31
+ * When omitted, the value is rendered with `String(value)` (or empty for
32
+ * `null`/`undefined`).
33
+ */
34
+ cell?: (info: {
35
+ value: unknown;
36
+ row: R;
37
+ rowIndex: number;
38
+ column: DataTableColumn<R>;
39
+ }) => React.ReactNode;
40
+ /** Fixed column width (px or any CSS dimension). */
41
+ width?: number | string;
42
+ /** Minimum column width in px (used for resizing). */
43
+ minWidth?: number;
44
+ /** Maximum column width in px (used for resizing). */
45
+ maxWidth?: number;
46
+ /** When true, header click toggles sort on this column. */
47
+ sortable?: boolean;
48
+ /**
49
+ * Custom comparator. Receives the resolved cell values for two rows.
50
+ * Default: `localeCompare` for strings, `<` for numbers, `Date`,
51
+ * `null`/`undefined` ordered last.
52
+ */
53
+ sortComparator?: (a: unknown, b: unknown, rowA: R, rowB: R) => number;
54
+ /** Cell horizontal alignment. @default "left" */
55
+ align?: DataTableAlign;
56
+ /** Per-column className. */
57
+ className?: string;
58
+ /** When true, this column sticks to the left edge while scrolling. */
59
+ sticky?: boolean;
60
+ /** When false, the column header is not focusable for keyboard users. */
61
+ ariaHidden?: boolean;
62
+ /** When true, this column cannot be resized even if `resizableColumns` is on. */
63
+ disableResize?: boolean;
64
+ }
65
+ /** Controlled sort state. */
66
+ interface DataTableSortState {
67
+ /** Column id, or null when no sort is applied. */
68
+ columnId: string | null;
69
+ /** Direction. `null` is treated as no sort. */
70
+ direction: DataTableSortDirection;
71
+ }
72
+ /** Selection state. Always an array of row keys; for `single` it has 0 or 1 items. */
73
+ type DataTableSelectionState = string[];
74
+ /** Argument passed to render slot helpers. */
75
+ interface DataTableRowRenderInfo<R> {
76
+ row: R;
77
+ rowIndex: number;
78
+ selected: boolean;
79
+ }
80
+ /** Virtualization mode. `'auto'` enables virtualization above the threshold. */
81
+ type DataTableVirtualizationMode = boolean | 'auto';
82
+ interface DataTableBaseProps<R> extends Omit<BaseComponent<HTMLDivElement>, 'onSelect' | 'children' | 'onChange'> {
83
+ /** Row data. */
84
+ rows: readonly R[];
85
+ /** Column definitions. */
86
+ columns: readonly DataTableColumn<R>[];
87
+ /**
88
+ * How to derive a stable key for each row. Either a string key on `R` or a
89
+ * function. Required for selection and virtualization stability.
90
+ */
91
+ rowKey: keyof R | ((row: R, rowIndex: number) => string);
92
+ /** Visual density. @default "comfortable" */
93
+ density?: DataTableDensity;
94
+ /** Sticky column header. @default true */
95
+ stickyHeader?: boolean;
96
+ /** Controlled sort state. */
97
+ sort?: DataTableSortState | null;
98
+ /** Default sort state for the uncontrolled mode. */
99
+ defaultSort?: DataTableSortState | null;
100
+ /** Called when the user changes the sort. */
101
+ onSortChange?: (state: DataTableSortState) => void;
102
+ /**
103
+ * When true, the consumer fully owns sorting and the table renders rows
104
+ * as-is. Useful for server-side sorting. @default false
105
+ */
106
+ manualSort?: boolean;
107
+ /** Selection mode. @default false */
108
+ selectionMode?: DataTableSelectionMode;
109
+ /** Controlled selection (array of row keys). */
110
+ selection?: DataTableSelectionState;
111
+ /** Default selection for the uncontrolled mode. */
112
+ defaultSelection?: DataTableSelectionState;
113
+ /** Called when selection changes. */
114
+ onSelectionChange?: (next: DataTableSelectionState) => void;
115
+ /** Disable selection of a specific row. */
116
+ isRowSelectable?: (row: R, rowIndex: number) => boolean;
117
+ /** Row click handler. Independent of selection. */
118
+ onRowClick?: (row: R, rowIndex: number, event: React.MouseEvent) => void;
119
+ /** Row activation (Enter key or double click). */
120
+ onRowActivate?: (row: R, rowIndex: number) => void;
121
+ /** Custom row renderer. Receives the default cells; consumer wraps them. */
122
+ renderRow?: (info: DataTableRowRenderInfo<R>, cells: React.ReactNode) => React.ReactNode;
123
+ /** Empty state slot (or text). Rendered when `rows.length === 0`. */
124
+ emptyState?: React.ReactNode;
125
+ /** Loading flag — renders skeleton rows. @default false */
126
+ loading?: boolean;
127
+ /** Number of skeleton rows shown while loading. @default 5 */
128
+ loadingRowCount?: number;
129
+ /**
130
+ * Virtualization mode. `'auto'` enables it once `rows.length` exceeds
131
+ * `virtualizationThreshold`. Set to `false` for tests / a11y tools or for
132
+ * very small tables.
133
+ * @default "auto"
134
+ */
135
+ virtualized?: DataTableVirtualizationMode;
136
+ /** Threshold above which `'auto'` mode flips on. @default 100 */
137
+ virtualizationThreshold?: number;
138
+ /** Estimated row height in px. @default depends on density */
139
+ estimatedRowHeight?: number;
140
+ /** Number of off-screen rows kept mounted. @default 8 */
141
+ overscan?: number;
142
+ /** Total scroll container height. Required when virtualized. @default 480 */
143
+ height?: number | string;
144
+ /** Maximum height before scroll engages (non-virtualized mode). */
145
+ maxHeight?: number | string;
146
+ /** Resizable columns (drag the right edge of the header). @default false */
147
+ resizableColumns?: boolean;
148
+ /** Called when a column is resized. */
149
+ onColumnResize?: (columnId: string, width: number) => void;
150
+ /** Optional aria-label for the grid. */
151
+ 'aria-label'?: string;
152
+ /** Optional aria-labelledby for the grid. */
153
+ 'aria-labelledby'?: string;
154
+ /** Hidden form id. Forwarded to the root element. */
155
+ id?: string;
156
+ }
157
+ type DataTableProps<R> = Prettify<DataTableBaseProps<R>>;
158
+
159
+ export type { DataTableAlign, DataTableBaseProps, DataTableColumn, DataTableDensity, DataTableProps, DataTableRowRenderInfo, DataTableSelectionMode, DataTableSelectionState, DataTableSortDirection, DataTableSortState, DataTableVirtualizationMode };
@@ -41,6 +41,7 @@ declare const AlertImpl: React.NamedExoticComponent<{
41
41
  icon?: React.ReactNode;
42
42
  onClose?: (() => void) | undefined;
43
43
  title?: React.ReactNode;
44
+ width?: number | string | undefined;
44
45
  children?: React.ReactNode;
45
46
  popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
46
47
  id?: string | undefined | undefined;
@@ -54,6 +54,13 @@ interface AlertBaseProps extends Omit<BaseComponent<HTMLDivElement>, 'title'> {
54
54
  * (don't do this; pick one).
55
55
  */
56
56
  title?: React.ReactNode;
57
+ /**
58
+ * Width of the alert. Number → px, string → CSS value.
59
+ * Defaults to `100%` so the alert fills its parent and keeps a stable width
60
+ * regardless of content length; long text wraps inside.
61
+ * @default "100%"
62
+ */
63
+ width?: number | string;
57
64
  /**
58
65
  * Children — typically `Alert.Title` / `Alert.Description` / `Alert.Actions`.
59
66
  * Plain string content is also fine (treated as description).
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { CommandPaletteProps } from './CommandPalette.types.js';
3
+
4
+ /**
5
+ * Search-driven command list shown as a centred floating dialog. Type to
6
+ * fuzzy-filter, ArrowUp/ArrowDown to navigate, Enter to select, Escape to
7
+ * close. Recent selections are tracked in localStorage when `recentKey` is
8
+ * set. The component does not bind a global hotkey — wire `useHotkey` in
9
+ * the consumer.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * useHotkey('Mod+K', () => { setOpen(true); });
14
+ *
15
+ * <CommandPalette
16
+ * open={open}
17
+ * onClose={() => setOpen(false)}
18
+ * items={[
19
+ * { id: 'open', label: 'Open File', shortcut: 'Cmd+O', group: 'File' },
20
+ * { id: 'save', label: 'Save', shortcut: 'Cmd+S', group: 'File' },
21
+ * ]}
22
+ * onSelect={(item) => runCommand(item.id)}
23
+ * recentKey="myapp:command-palette"
24
+ * />
25
+ * ```
26
+ */
27
+ declare const CommandPalette: React.FC<CommandPaletteProps>;
28
+
29
+ export { CommandPalette };
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ import { BaseComponent } from '../../../types/common.js';
3
+ import { Prettify } from '../../../types/utilities.js';
4
+
5
+ interface CommandItem {
6
+ /** Stable unique identifier — used for keys and the recent list. */
7
+ id: string;
8
+ /** Visible label. */
9
+ label: string;
10
+ /** Optional secondary description. */
11
+ description?: string;
12
+ /** Group name for sectioning the list. Items without a group go into "default". */
13
+ group?: string;
14
+ /** Leading icon. */
15
+ icon?: React.ReactNode;
16
+ /** Keyboard shortcut to display (e.g. "Cmd+S"). */
17
+ shortcut?: string;
18
+ /** Extra strings used by the fuzzy matcher in addition to label/description. */
19
+ keywords?: string[];
20
+ /** When true, the item is rendered but cannot be selected. */
21
+ disabled?: boolean;
22
+ /** Callback fired when this item is chosen. Falls back to top-level `onSelect`. */
23
+ onSelect?: () => void;
24
+ }
25
+ interface CommandPaletteRenderItemState {
26
+ selected: boolean;
27
+ query: string;
28
+ }
29
+ interface CommandPaletteBaseProps extends Omit<BaseComponent, 'onSelect'> {
30
+ /** Whether the palette is open. */
31
+ open: boolean;
32
+ /** Called when the palette requests close (Escape, overlay, after select). */
33
+ onClose: () => void;
34
+ /** All commands. The component filters them as the user types. */
35
+ items: readonly CommandItem[];
36
+ /** Default handler invoked when an item without its own `onSelect` is chosen. */
37
+ onSelect?: (item: CommandItem) => void;
38
+ /** Placeholder text for the search input. @default "Type a command or search..." */
39
+ placeholder?: string;
40
+ /** Custom node when no items match the current query. */
41
+ emptyState?: React.ReactNode;
42
+ /** Localised label for the recent items group header. @default "Recent" */
43
+ recentLabel?: string;
44
+ /** localStorage key for tracking recently selected items. Recent tracking is off when omitted. */
45
+ recentKey?: string;
46
+ /** Maximum number of recent items to track. @default 5 */
47
+ maxRecent?: number;
48
+ /** Debounce in ms applied to the search query. @default 150 */
49
+ debounceMs?: number;
50
+ /** Custom renderer for each item — replaces the default row layout. */
51
+ renderItem?: (item: CommandItem, state: CommandPaletteRenderItemState) => React.ReactNode;
52
+ /** Render in a portal. @default true */
53
+ portal?: boolean;
54
+ /** Maximum height of the results list in px. @default 400 */
55
+ maxHeight?: number;
56
+ /** Width in px or any CSS value. @default 640 */
57
+ width?: number | string;
58
+ }
59
+ type CommandPaletteProps = Prettify<CommandPaletteBaseProps>;
60
+
61
+ export type { CommandItem, CommandPaletteBaseProps, CommandPaletteProps, CommandPaletteRenderItemState };
@@ -0,0 +1,6 @@
1
+ interface FuzzyMatch<T> {
2
+ item: T;
3
+ score: number;
4
+ }
5
+
6
+ export type { FuzzyMatch };
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { DrawerProps, DrawerHeaderProps, DrawerBodyProps, DrawerFooterProps, DrawerCloseButtonProps } from './Drawer.types.js';
3
+
4
+ interface DrawerComponent extends React.FC<DrawerProps> {
5
+ Header: React.FC<DrawerHeaderProps>;
6
+ Body: React.FC<DrawerBodyProps>;
7
+ Footer: React.FC<DrawerFooterProps>;
8
+ CloseButton: React.FC<DrawerCloseButtonProps>;
9
+ }
10
+ declare const Drawer: DrawerComponent;
11
+
12
+ export { Drawer };
@@ -0,0 +1,70 @@
1
+ import React from 'react';
2
+ import { BaseComponent } from '../../../types/common.js';
3
+ import { Prettify } from '../../../types/utilities.js';
4
+
5
+ type DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';
6
+ type DrawerSizePreset = 'sm' | 'md' | 'lg' | 'xl';
7
+ type DrawerSize = DrawerSizePreset | (string & {}) | number;
8
+ type DrawerFooterAlign = 'left' | 'center' | 'right' | 'space-between';
9
+ interface DrawerBaseProps extends BaseComponent {
10
+ /** Whether the drawer is open. */
11
+ open: boolean;
12
+ /** Called when the drawer requests close (overlay click, Escape, close button). */
13
+ onClose: () => void;
14
+ /** Edge from which the drawer enters. @default "right" */
15
+ anchor?: DrawerAnchor;
16
+ /** Drawer size on the cross axis. Strings like "sm" use presets, number = px, string = CSS. @default "md" */
17
+ size?: DrawerSize;
18
+ /** Modal mode renders a backdrop and traps focus. @default true */
19
+ modal?: boolean;
20
+ /** Close when the overlay is clicked. Only applies when modal. @default true */
21
+ closeOnOverlayClick?: boolean;
22
+ /** Close on Escape. @default true */
23
+ closeOnEscape?: boolean;
24
+ /** Trap focus inside the drawer. Defaults to `modal`. */
25
+ trapFocus?: boolean;
26
+ /** Element to focus on open. */
27
+ initialFocusRef?: React.RefObject<HTMLElement | null>;
28
+ /** Render in a portal on document.body. @default true */
29
+ portal?: boolean;
30
+ /** Used as aria-labelledby reference. Pass as a string or use Drawer.Header. */
31
+ title?: string;
32
+ /** Used as aria-describedby reference. */
33
+ description?: string;
34
+ /** Drawer content (typically Drawer.Header/Body/Footer). */
35
+ children: React.ReactNode;
36
+ }
37
+ type DrawerProps = Prettify<DrawerBaseProps>;
38
+ interface DrawerHeaderBaseProps extends BaseComponent {
39
+ /** Title content. */
40
+ children: React.ReactNode;
41
+ /** Whether to render a close button on the right. @default true */
42
+ showClose?: boolean;
43
+ /** Optional description below the title. */
44
+ description?: string;
45
+ }
46
+ type DrawerHeaderProps = Prettify<DrawerHeaderBaseProps>;
47
+ interface DrawerBodyBaseProps extends BaseComponent {
48
+ children: React.ReactNode;
49
+ }
50
+ type DrawerBodyProps = Prettify<DrawerBodyBaseProps>;
51
+ interface DrawerFooterBaseProps extends BaseComponent {
52
+ children: React.ReactNode;
53
+ /** Horizontal alignment. @default "right" */
54
+ align?: DrawerFooterAlign;
55
+ }
56
+ type DrawerFooterProps = Prettify<DrawerFooterBaseProps>;
57
+ interface DrawerCloseButtonBaseProps extends Omit<BaseComponent<HTMLButtonElement>, 'children'> {
58
+ /** Custom button content; defaults to an X icon. */
59
+ children?: React.ReactNode;
60
+ /** Override aria-label. @default "Close drawer" */
61
+ 'aria-label'?: string;
62
+ }
63
+ type DrawerCloseButtonProps = Prettify<DrawerCloseButtonBaseProps>;
64
+ interface DrawerContextValue {
65
+ onClose: () => void;
66
+ titleId: string;
67
+ descriptionId: string;
68
+ }
69
+
70
+ export type { DrawerAnchor, DrawerBaseProps, DrawerBodyBaseProps, DrawerBodyProps, DrawerCloseButtonBaseProps, DrawerCloseButtonProps, DrawerContextValue, DrawerFooterAlign, DrawerFooterBaseProps, DrawerFooterProps, DrawerHeaderBaseProps, DrawerHeaderProps, DrawerProps, DrawerSize, DrawerSizePreset };
@@ -78,5 +78,48 @@ interface SkeletonGroupBaseProps extends BaseComponent<HTMLDivElement> {
78
78
  children?: React.ReactNode;
79
79
  }
80
80
  type SkeletonGroupProps = Prettify<SkeletonGroupBaseProps>;
81
+ /**
82
+ * Pre-built skeleton arrangement.
83
+ *
84
+ * - `card` — circular avatar, a few text lines, and a thumbnail block
85
+ * - `list` — vertical rows of avatar + two text lines
86
+ * - `table` — header row + data rows laid out on a CSS grid
87
+ * - `grid` — uniform grid of square blocks (no animation by default)
88
+ * - `chat` — alternating left/right message bubbles
89
+ */
90
+ type SkeletonLayoutVariant = 'card' | 'list' | 'table' | 'grid' | 'chat';
91
+ interface SkeletonLayoutBaseProps extends BaseComponent<HTMLDivElement> {
92
+ /**
93
+ * Which pre-built arrangement to render.
94
+ */
95
+ variant: SkeletonLayoutVariant;
96
+ /**
97
+ * Number of repeating units in the layout.
98
+ *
99
+ * - `list` — number of rows (default 5)
100
+ * - `table` — number of data rows excluding the header (default 5)
101
+ * - `grid` — total number of cells (default 12)
102
+ * - `chat` — number of message bubbles (default 4)
103
+ * - `card` — ignored (a card is a single unit)
104
+ */
105
+ count?: number;
106
+ /**
107
+ * Number of columns. Only meaningful for `grid` and `table` variants.
108
+ * @default 4
109
+ */
110
+ columns?: number;
111
+ /**
112
+ * Animation applied to every nested skeleton.
113
+ * Defaults to `pulse` for most variants and `none` for `grid` — running
114
+ * dozens of animations at once is more noise than help on dense surfaces.
115
+ */
116
+ animation?: SkeletonAnimation;
117
+ /**
118
+ * Width of the layout container. Number → px, string → CSS value.
119
+ * @default "100%"
120
+ */
121
+ width?: number | string;
122
+ }
123
+ type SkeletonLayoutProps = Prettify<SkeletonLayoutBaseProps>;
81
124
 
82
- export type { SkeletonAnimation, SkeletonBaseProps, SkeletonGroupBaseProps, SkeletonGroupProps, SkeletonProps, SkeletonShape };
125
+ export type { SkeletonAnimation, SkeletonBaseProps, SkeletonGroupBaseProps, SkeletonGroupProps, SkeletonLayoutBaseProps, SkeletonLayoutProps, SkeletonLayoutVariant, SkeletonProps, SkeletonShape };