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,314 @@
1
+ import React from 'react';
2
+ import { SkeletonLayoutVariant, SkeletonAnimation } from './Skeleton.types.js';
3
+
4
+ /**
5
+ * Pre-built skeleton layouts for common loading patterns — card, list, table,
6
+ * grid, and chat. Drop one in when the surrounding UI shape is known and you
7
+ * want the placeholder structure to mirror it without composing every block
8
+ * by hand.
9
+ *
10
+ * Each variant uses the base `Skeleton` primitive underneath, so animation
11
+ * and reduced-motion behavior match the rest of the library. Use `count` to
12
+ * scale the number of rows/cells, `columns` for `grid` and `table`, and
13
+ * `animation` to opt out of motion for dense surfaces.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * <SkeletonLayout variant="card" />
18
+ * <SkeletonLayout variant="list" count={8} />
19
+ * <SkeletonLayout variant="table" columns={5} count={6} />
20
+ * <SkeletonLayout variant="grid" columns={3} count={9} />
21
+ * <SkeletonLayout variant="chat" count={6} />
22
+ * ```
23
+ */
24
+ declare const SkeletonLayout: React.NamedExoticComponent<{
25
+ variant: SkeletonLayoutVariant;
26
+ count?: number | undefined;
27
+ columns?: number | undefined;
28
+ animation?: SkeletonAnimation | undefined;
29
+ width?: number | string | undefined;
30
+ id?: string | undefined | undefined;
31
+ className?: string | undefined | undefined;
32
+ testId?: string | undefined;
33
+ style?: React.CSSProperties | undefined;
34
+ ref?: React.Ref<HTMLDivElement> | undefined;
35
+ defaultChecked?: boolean | undefined | undefined;
36
+ defaultValue?: string | number | readonly string[] | undefined;
37
+ suppressContentEditableWarning?: boolean | undefined | undefined;
38
+ suppressHydrationWarning?: boolean | undefined | undefined;
39
+ accessKey?: string | undefined | undefined;
40
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
41
+ autoFocus?: boolean | undefined | undefined;
42
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
43
+ contextMenu?: string | undefined | undefined;
44
+ dir?: string | undefined | undefined;
45
+ draggable?: (boolean | "true" | "false") | undefined;
46
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
47
+ hidden?: boolean | undefined | undefined;
48
+ lang?: string | undefined | undefined;
49
+ nonce?: string | undefined | undefined;
50
+ slot?: string | undefined | undefined;
51
+ spellCheck?: (boolean | "true" | "false") | undefined;
52
+ tabIndex?: number | undefined | undefined;
53
+ title?: string | undefined | undefined;
54
+ translate?: "yes" | "no" | undefined | undefined;
55
+ radioGroup?: string | undefined | undefined;
56
+ role?: React.AriaRole | undefined;
57
+ about?: string | undefined | undefined;
58
+ content?: string | undefined | undefined;
59
+ datatype?: string | undefined | undefined;
60
+ inlist?: any;
61
+ prefix?: string | undefined | undefined;
62
+ property?: string | undefined | undefined;
63
+ rel?: string | undefined | undefined;
64
+ resource?: string | undefined | undefined;
65
+ rev?: string | undefined | undefined;
66
+ typeof?: string | undefined | undefined;
67
+ vocab?: string | undefined | undefined;
68
+ autoCorrect?: string | undefined | undefined;
69
+ autoSave?: string | undefined | undefined;
70
+ color?: string | undefined | undefined;
71
+ itemProp?: string | undefined | undefined;
72
+ itemScope?: boolean | undefined | undefined;
73
+ itemType?: string | undefined | undefined;
74
+ itemID?: string | undefined | undefined;
75
+ itemRef?: string | undefined | undefined;
76
+ results?: number | undefined | undefined;
77
+ security?: string | undefined | undefined;
78
+ unselectable?: "on" | "off" | undefined | undefined;
79
+ popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
80
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
81
+ popoverTarget?: string | undefined | undefined;
82
+ inert?: boolean | undefined | undefined;
83
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
84
+ is?: string | undefined | undefined;
85
+ exportparts?: string | undefined | undefined;
86
+ part?: string | undefined | undefined;
87
+ "aria-activedescendant"?: string | undefined | undefined;
88
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
89
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
90
+ "aria-braillelabel"?: string | undefined | undefined;
91
+ "aria-brailleroledescription"?: string | undefined | undefined;
92
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
93
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
94
+ "aria-colcount"?: number | undefined | undefined;
95
+ "aria-colindex"?: number | undefined | undefined;
96
+ "aria-colindextext"?: string | undefined | undefined;
97
+ "aria-colspan"?: number | undefined | undefined;
98
+ "aria-controls"?: string | undefined | undefined;
99
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
100
+ "aria-describedby"?: string | undefined | undefined;
101
+ "aria-description"?: string | undefined | undefined;
102
+ "aria-details"?: string | undefined | undefined;
103
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
104
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
105
+ "aria-errormessage"?: string | undefined | undefined;
106
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
107
+ "aria-flowto"?: string | undefined | undefined;
108
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
109
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
110
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
111
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
112
+ "aria-keyshortcuts"?: string | undefined | undefined;
113
+ "aria-label"?: string | undefined | undefined;
114
+ "aria-labelledby"?: string | undefined | undefined;
115
+ "aria-level"?: number | undefined | undefined;
116
+ "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
117
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
118
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
119
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
120
+ "aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
121
+ "aria-owns"?: string | undefined | undefined;
122
+ "aria-placeholder"?: string | undefined | undefined;
123
+ "aria-posinset"?: number | undefined | undefined;
124
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
125
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
126
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
127
+ "aria-required"?: (boolean | "true" | "false") | undefined;
128
+ "aria-roledescription"?: string | undefined | undefined;
129
+ "aria-rowcount"?: number | undefined | undefined;
130
+ "aria-rowindex"?: number | undefined | undefined;
131
+ "aria-rowindextext"?: string | undefined | undefined;
132
+ "aria-rowspan"?: number | undefined | undefined;
133
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
134
+ "aria-setsize"?: number | undefined | undefined;
135
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
136
+ "aria-valuemax"?: number | undefined | undefined;
137
+ "aria-valuemin"?: number | undefined | undefined;
138
+ "aria-valuenow"?: number | undefined | undefined;
139
+ "aria-valuetext"?: string | undefined | undefined;
140
+ children?: React.ReactNode;
141
+ dangerouslySetInnerHTML?: {
142
+ __html: string | TrustedHTML;
143
+ } | undefined | undefined;
144
+ onCopy?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
145
+ onCopyCapture?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
146
+ onCut?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
147
+ onCutCapture?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
148
+ onPaste?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
149
+ onPasteCapture?: React.ClipboardEventHandler<HTMLDivElement> | undefined;
150
+ onCompositionEnd?: React.CompositionEventHandler<HTMLDivElement> | undefined;
151
+ onCompositionEndCapture?: React.CompositionEventHandler<HTMLDivElement> | undefined;
152
+ onCompositionStart?: React.CompositionEventHandler<HTMLDivElement> | undefined;
153
+ onCompositionStartCapture?: React.CompositionEventHandler<HTMLDivElement> | undefined;
154
+ onCompositionUpdate?: React.CompositionEventHandler<HTMLDivElement> | undefined;
155
+ onCompositionUpdateCapture?: React.CompositionEventHandler<HTMLDivElement> | undefined;
156
+ onFocus?: React.FocusEventHandler<HTMLDivElement> | undefined;
157
+ onFocusCapture?: React.FocusEventHandler<HTMLDivElement> | undefined;
158
+ onBlur?: React.FocusEventHandler<HTMLDivElement> | undefined;
159
+ onBlurCapture?: React.FocusEventHandler<HTMLDivElement> | undefined;
160
+ onChange?: React.ChangeEventHandler<HTMLDivElement, Element> | undefined;
161
+ onChangeCapture?: React.ChangeEventHandler<HTMLDivElement, Element> | undefined;
162
+ onBeforeInput?: React.InputEventHandler<HTMLDivElement> | undefined;
163
+ onBeforeInputCapture?: React.InputEventHandler<HTMLDivElement> | undefined;
164
+ onInput?: React.InputEventHandler<HTMLDivElement> | undefined;
165
+ onInputCapture?: React.InputEventHandler<HTMLDivElement> | undefined;
166
+ onReset?: React.ReactEventHandler<HTMLDivElement> | undefined;
167
+ onResetCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
168
+ onSubmit?: React.SubmitEventHandler<HTMLDivElement> | undefined;
169
+ onSubmitCapture?: React.SubmitEventHandler<HTMLDivElement> | undefined;
170
+ onInvalid?: React.ReactEventHandler<HTMLDivElement> | undefined;
171
+ onInvalidCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
172
+ onLoad?: React.ReactEventHandler<HTMLDivElement> | undefined;
173
+ onLoadCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
174
+ onError?: React.ReactEventHandler<HTMLDivElement> | undefined;
175
+ onErrorCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
176
+ onKeyDown?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
177
+ onKeyDownCapture?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
178
+ onKeyPress?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
179
+ onKeyPressCapture?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
180
+ onKeyUp?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
181
+ onKeyUpCapture?: React.KeyboardEventHandler<HTMLDivElement> | undefined;
182
+ onAbort?: React.ReactEventHandler<HTMLDivElement> | undefined;
183
+ onAbortCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
184
+ onCanPlay?: React.ReactEventHandler<HTMLDivElement> | undefined;
185
+ onCanPlayCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
186
+ onCanPlayThrough?: React.ReactEventHandler<HTMLDivElement> | undefined;
187
+ onCanPlayThroughCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
188
+ onDurationChange?: React.ReactEventHandler<HTMLDivElement> | undefined;
189
+ onDurationChangeCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
190
+ onEmptied?: React.ReactEventHandler<HTMLDivElement> | undefined;
191
+ onEmptiedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
192
+ onEncrypted?: React.ReactEventHandler<HTMLDivElement> | undefined;
193
+ onEncryptedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
194
+ onEnded?: React.ReactEventHandler<HTMLDivElement> | undefined;
195
+ onEndedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
196
+ onLoadedData?: React.ReactEventHandler<HTMLDivElement> | undefined;
197
+ onLoadedDataCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
198
+ onLoadedMetadata?: React.ReactEventHandler<HTMLDivElement> | undefined;
199
+ onLoadedMetadataCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
200
+ onLoadStart?: React.ReactEventHandler<HTMLDivElement> | undefined;
201
+ onLoadStartCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
202
+ onPause?: React.ReactEventHandler<HTMLDivElement> | undefined;
203
+ onPauseCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
204
+ onPlay?: React.ReactEventHandler<HTMLDivElement> | undefined;
205
+ onPlayCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
206
+ onPlaying?: React.ReactEventHandler<HTMLDivElement> | undefined;
207
+ onPlayingCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
208
+ onProgress?: React.ReactEventHandler<HTMLDivElement> | undefined;
209
+ onProgressCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
210
+ onRateChange?: React.ReactEventHandler<HTMLDivElement> | undefined;
211
+ onRateChangeCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
212
+ onSeeked?: React.ReactEventHandler<HTMLDivElement> | undefined;
213
+ onSeekedCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
214
+ onSeeking?: React.ReactEventHandler<HTMLDivElement> | undefined;
215
+ onSeekingCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
216
+ onStalled?: React.ReactEventHandler<HTMLDivElement> | undefined;
217
+ onStalledCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
218
+ onSuspend?: React.ReactEventHandler<HTMLDivElement> | undefined;
219
+ onSuspendCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
220
+ onTimeUpdate?: React.ReactEventHandler<HTMLDivElement> | undefined;
221
+ onTimeUpdateCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
222
+ onVolumeChange?: React.ReactEventHandler<HTMLDivElement> | undefined;
223
+ onVolumeChangeCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
224
+ onWaiting?: React.ReactEventHandler<HTMLDivElement> | undefined;
225
+ onWaitingCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
226
+ onAuxClick?: React.MouseEventHandler<HTMLDivElement> | undefined;
227
+ onAuxClickCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
228
+ onClick?: React.MouseEventHandler<HTMLDivElement> | undefined;
229
+ onClickCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
230
+ onContextMenu?: React.MouseEventHandler<HTMLDivElement> | undefined;
231
+ onContextMenuCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
232
+ onDoubleClick?: React.MouseEventHandler<HTMLDivElement> | undefined;
233
+ onDoubleClickCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
234
+ onDrag?: React.DragEventHandler<HTMLDivElement> | undefined;
235
+ onDragCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
236
+ onDragEnd?: React.DragEventHandler<HTMLDivElement> | undefined;
237
+ onDragEndCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
238
+ onDragEnter?: React.DragEventHandler<HTMLDivElement> | undefined;
239
+ onDragEnterCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
240
+ onDragExit?: React.DragEventHandler<HTMLDivElement> | undefined;
241
+ onDragExitCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
242
+ onDragLeave?: React.DragEventHandler<HTMLDivElement> | undefined;
243
+ onDragLeaveCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
244
+ onDragOver?: React.DragEventHandler<HTMLDivElement> | undefined;
245
+ onDragOverCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
246
+ onDragStart?: React.DragEventHandler<HTMLDivElement> | undefined;
247
+ onDragStartCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
248
+ onDrop?: React.DragEventHandler<HTMLDivElement> | undefined;
249
+ onDropCapture?: React.DragEventHandler<HTMLDivElement> | undefined;
250
+ onMouseDown?: React.MouseEventHandler<HTMLDivElement> | undefined;
251
+ onMouseDownCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
252
+ onMouseEnter?: React.MouseEventHandler<HTMLDivElement> | undefined;
253
+ onMouseLeave?: React.MouseEventHandler<HTMLDivElement> | undefined;
254
+ onMouseMove?: React.MouseEventHandler<HTMLDivElement> | undefined;
255
+ onMouseMoveCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
256
+ onMouseOut?: React.MouseEventHandler<HTMLDivElement> | undefined;
257
+ onMouseOutCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
258
+ onMouseOver?: React.MouseEventHandler<HTMLDivElement> | undefined;
259
+ onMouseOverCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
260
+ onMouseUp?: React.MouseEventHandler<HTMLDivElement> | undefined;
261
+ onMouseUpCapture?: React.MouseEventHandler<HTMLDivElement> | undefined;
262
+ onSelect?: React.ReactEventHandler<HTMLDivElement> | undefined;
263
+ onSelectCapture?: React.ReactEventHandler<HTMLDivElement> | undefined;
264
+ onTouchCancel?: React.TouchEventHandler<HTMLDivElement> | undefined;
265
+ onTouchCancelCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
266
+ onTouchEnd?: React.TouchEventHandler<HTMLDivElement> | undefined;
267
+ onTouchEndCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
268
+ onTouchMove?: React.TouchEventHandler<HTMLDivElement> | undefined;
269
+ onTouchMoveCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
270
+ onTouchStart?: React.TouchEventHandler<HTMLDivElement> | undefined;
271
+ onTouchStartCapture?: React.TouchEventHandler<HTMLDivElement> | undefined;
272
+ onPointerDown?: React.PointerEventHandler<HTMLDivElement> | undefined;
273
+ onPointerDownCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
274
+ onPointerMove?: React.PointerEventHandler<HTMLDivElement> | undefined;
275
+ onPointerMoveCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
276
+ onPointerUp?: React.PointerEventHandler<HTMLDivElement> | undefined;
277
+ onPointerUpCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
278
+ onPointerCancel?: React.PointerEventHandler<HTMLDivElement> | undefined;
279
+ onPointerCancelCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
280
+ onPointerEnter?: React.PointerEventHandler<HTMLDivElement> | undefined;
281
+ onPointerLeave?: React.PointerEventHandler<HTMLDivElement> | undefined;
282
+ onPointerOver?: React.PointerEventHandler<HTMLDivElement> | undefined;
283
+ onPointerOverCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
284
+ onPointerOut?: React.PointerEventHandler<HTMLDivElement> | undefined;
285
+ onPointerOutCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
286
+ onGotPointerCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
287
+ onGotPointerCaptureCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
288
+ onLostPointerCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
289
+ onLostPointerCaptureCapture?: React.PointerEventHandler<HTMLDivElement> | undefined;
290
+ onScroll?: React.UIEventHandler<HTMLDivElement> | undefined;
291
+ onScrollCapture?: React.UIEventHandler<HTMLDivElement> | undefined;
292
+ onScrollEnd?: React.UIEventHandler<HTMLDivElement> | undefined;
293
+ onScrollEndCapture?: React.UIEventHandler<HTMLDivElement> | undefined;
294
+ onWheel?: React.WheelEventHandler<HTMLDivElement> | undefined;
295
+ onWheelCapture?: React.WheelEventHandler<HTMLDivElement> | undefined;
296
+ onAnimationStart?: React.AnimationEventHandler<HTMLDivElement> | undefined;
297
+ onAnimationStartCapture?: React.AnimationEventHandler<HTMLDivElement> | undefined;
298
+ onAnimationEnd?: React.AnimationEventHandler<HTMLDivElement> | undefined;
299
+ onAnimationEndCapture?: React.AnimationEventHandler<HTMLDivElement> | undefined;
300
+ onAnimationIteration?: React.AnimationEventHandler<HTMLDivElement> | undefined;
301
+ onAnimationIterationCapture?: React.AnimationEventHandler<HTMLDivElement> | undefined;
302
+ onToggle?: React.ToggleEventHandler<HTMLDivElement> | undefined;
303
+ onBeforeToggle?: React.ToggleEventHandler<HTMLDivElement> | undefined;
304
+ onTransitionCancel?: React.TransitionEventHandler<HTMLDivElement> | undefined;
305
+ onTransitionCancelCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
306
+ onTransitionEnd?: React.TransitionEventHandler<HTMLDivElement> | undefined;
307
+ onTransitionEndCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
308
+ onTransitionRun?: React.TransitionEventHandler<HTMLDivElement> | undefined;
309
+ onTransitionRunCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
310
+ onTransitionStart?: React.TransitionEventHandler<HTMLDivElement> | undefined;
311
+ onTransitionStartCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
312
+ }>;
313
+
314
+ export { SkeletonLayout };
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { StatProps } from './Stat.types.js';
3
+
4
+ /**
5
+ * KPI / metric display: label + value + optional trend delta.
6
+ *
7
+ * Use `delta.semantics` to indicate whether "up" is good. Errors and
8
+ * latency, for example, want `semantics: "negative"` so an upward
9
+ * direction shows red.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <Stat
14
+ * label="MRR"
15
+ * value="$12,400"
16
+ * delta={{ value: '+8.2%', direction: 'up' }}
17
+ * helper="vs. last month"
18
+ * />
19
+ * ```
20
+ */
21
+ declare const Stat: React.FC<StatProps>;
22
+
23
+ export { Stat };
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ import { BaseComponent } from '../../../types/common.js';
3
+ import { Prettify } from '../../../types/utilities.js';
4
+
5
+ type StatSize = 'sm' | 'md' | 'lg';
6
+ type StatDeltaDirection = 'up' | 'down' | 'neutral';
7
+ type StatDeltaSemantics = 'positive' | 'negative' | 'neutral';
8
+ interface StatDelta {
9
+ /** Delta value to display (e.g. "+12.4%"). */
10
+ value: React.ReactNode;
11
+ /** Direction of change — drives the icon. */
12
+ direction: StatDeltaDirection;
13
+ /**
14
+ * What the "up" direction means for this metric.
15
+ * - `positive`: up is good (revenue, signups) — green for up, red for down
16
+ * - `negative`: up is bad (errors, latency) — red for up, green for down
17
+ * - `neutral`: just show the direction with muted color
18
+ * @default "positive"
19
+ */
20
+ semantics?: StatDeltaSemantics;
21
+ }
22
+ interface StatBaseProps extends Omit<BaseComponent<HTMLDivElement>, 'title'> {
23
+ /** Label above the value. */
24
+ label: React.ReactNode;
25
+ /** Primary value (already formatted by the consumer). */
26
+ value: React.ReactNode;
27
+ /** Optional delta — displayed below the value. */
28
+ delta?: StatDelta;
29
+ /** Helper text below the delta. */
30
+ helper?: React.ReactNode;
31
+ /** Optional leading icon. */
32
+ icon?: React.ReactNode;
33
+ /** Size variant. @default "md" */
34
+ size?: StatSize;
35
+ }
36
+ type StatProps = Prettify<StatBaseProps>;
37
+
38
+ export type { StatBaseProps, StatDelta, StatDeltaDirection, StatDeltaSemantics, StatProps, StatSize };
@@ -46,6 +46,13 @@ interface AccordionBaseProps extends Omit<BaseComponent, 'onChange'> {
46
46
  * @default 0
47
47
  */
48
48
  gap?: number;
49
+ /**
50
+ * Width of the accordion. Number → px, string → CSS value.
51
+ * Defaults to `100%` so the accordion fills its parent and keeps a stable
52
+ * width when items expand or collapse.
53
+ * @default "100%"
54
+ */
55
+ width?: number | string;
49
56
  /**
50
57
  * AccordionItem children
51
58
  */
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { CardProps, CardHeaderProps, CardMediaProps, CardBodyProps, CardFooterProps } from './Card.types.js';
3
+
4
+ interface CardComponent extends React.FC<CardProps> {
5
+ Header: React.FC<CardHeaderProps>;
6
+ Media: React.FC<CardMediaProps>;
7
+ Body: React.FC<CardBodyProps>;
8
+ Footer: React.FC<CardFooterProps>;
9
+ }
10
+ declare const Card: CardComponent;
11
+
12
+ export { Card };
@@ -0,0 +1,54 @@
1
+ import React from 'react';
2
+ import { BaseComponent } from '../../../types/common.js';
3
+ import { Prettify } from '../../../types/utilities.js';
4
+
5
+ type CardVariant = 'outlined' | 'filled' | 'elevated';
6
+ interface CardBaseProps extends Omit<BaseComponent<HTMLDivElement>, 'onClick'> {
7
+ /** Visual variant. @default "outlined" */
8
+ variant?: CardVariant;
9
+ /** Click handler — when set, the whole card becomes interactive (button role). */
10
+ onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
11
+ /** Selected state (e.g. for a card grid). @default false */
12
+ selected?: boolean;
13
+ /** Disabled state. @default false */
14
+ disabled?: boolean;
15
+ /** Children — typically Card.Header / Card.Media / Card.Body / Card.Footer. */
16
+ children?: React.ReactNode;
17
+ }
18
+ type CardProps = Prettify<CardBaseProps>;
19
+ interface CardHeaderBaseProps extends Omit<BaseComponent<HTMLDivElement>, 'title'> {
20
+ /** Title row content. Ignored when `children` is provided. */
21
+ title?: React.ReactNode;
22
+ /** Subtitle below the title. Ignored when `children` is provided. */
23
+ subtitle?: React.ReactNode;
24
+ /** Leading visual (icon, Avatar). */
25
+ leading?: React.ReactNode;
26
+ /** Trailing actions (IconButton, Menu). */
27
+ trailing?: React.ReactNode;
28
+ /** Custom content — overrides title/subtitle layout. */
29
+ children?: React.ReactNode;
30
+ }
31
+ type CardHeaderProps = Prettify<CardHeaderBaseProps>;
32
+ interface CardMediaBaseProps extends BaseComponent<HTMLDivElement> {
33
+ /** Image source — shortcut for an `<img>` child. */
34
+ src?: string;
35
+ /** Alt text for the image. */
36
+ alt?: string;
37
+ /** Aspect ratio (width/height). @default 16/9 */
38
+ aspectRatio?: number;
39
+ children?: React.ReactNode;
40
+ }
41
+ type CardMediaProps = Prettify<CardMediaBaseProps>;
42
+ interface CardBodyBaseProps extends BaseComponent<HTMLDivElement> {
43
+ children?: React.ReactNode;
44
+ }
45
+ type CardBodyProps = Prettify<CardBodyBaseProps>;
46
+ type CardFooterAlign = 'left' | 'center' | 'right' | 'space-between';
47
+ interface CardFooterBaseProps extends BaseComponent<HTMLDivElement> {
48
+ /** Horizontal alignment of footer content. @default "right" */
49
+ align?: CardFooterAlign;
50
+ children?: React.ReactNode;
51
+ }
52
+ type CardFooterProps = Prettify<CardFooterBaseProps>;
53
+
54
+ export type { CardBaseProps, CardBodyBaseProps, CardBodyProps, CardFooterAlign, CardFooterBaseProps, CardFooterProps, CardHeaderBaseProps, CardHeaderProps, CardMediaBaseProps, CardMediaProps, CardProps, CardVariant };
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { PaginationProps } from './Pagination.types.js';
3
+ export { PaginationSize } from './Pagination.types.js';
4
+
5
+ /**
6
+ * Page navigator with sibling/boundary ellipsis logic. Controlled when `page`
7
+ * is set, otherwise uncontrolled with `defaultPage`. Pages are 1-based.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Pagination count={20} defaultPage={1} onChange={(_, p) => setPage(p)} />
12
+ *
13
+ * // Compact: only prev/next + numbers
14
+ * <Pagination count={20} siblingCount={0} boundaryCount={1} />
15
+ *
16
+ * // Full controls
17
+ * <Pagination count={50} showFirstButton showLastButton />
18
+ * ```
19
+ */
20
+ declare const Pagination: React.FC<PaginationProps>;
21
+
22
+ export { Pagination };
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { BaseComponent } from '../../../types/common.js';
3
+ import { Prettify } from '../../../types/utilities.js';
4
+
5
+ type PaginationSize = 'sm' | 'md' | 'lg';
6
+ type PaginationItemType = 'page' | 'ellipsis' | 'first' | 'previous' | 'next' | 'last';
7
+ /**
8
+ * A single item resolved by the pagination algorithm. `page` is `null` for
9
+ * ellipsis items and for prev/next/first/last when the corresponding action
10
+ * is not available (e.g. `previous` while on page 1).
11
+ */
12
+ interface PaginationItem {
13
+ type: PaginationItemType;
14
+ page: number | null;
15
+ selected: boolean;
16
+ disabled: boolean;
17
+ }
18
+ type PaginationItemAriaLabelGetter = (type: PaginationItemType, page: number | null, selected: boolean) => string;
19
+ interface PaginationBaseProps extends Omit<BaseComponent<HTMLElement>, 'onChange'> {
20
+ /** Total number of pages. */
21
+ count: number;
22
+ /** Currently selected page (1-based). Controls the component when set. */
23
+ page?: number;
24
+ /** Default selected page in uncontrolled mode (1-based). @default 1 */
25
+ defaultPage?: number;
26
+ /** Called when the user requests a new page. */
27
+ onChange?: (event: React.SyntheticEvent, page: number) => void;
28
+ /** Pages shown on each side of the current page. @default 1 */
29
+ siblingCount?: number;
30
+ /** Pages always shown at the start and end of the list. @default 1 */
31
+ boundaryCount?: number;
32
+ /** Show the "jump to first" button. @default false */
33
+ showFirstButton?: boolean;
34
+ /** Show the "jump to last" button. @default false */
35
+ showLastButton?: boolean;
36
+ /** Hide the previous-page button. @default false */
37
+ hidePrevButton?: boolean;
38
+ /** Hide the next-page button. @default false */
39
+ hideNextButton?: boolean;
40
+ /** Visual size. @default "md" */
41
+ size?: PaginationSize;
42
+ /** Disable the whole control. @default false */
43
+ disabled?: boolean;
44
+ /** Custom aria-label generator for each item. */
45
+ getItemAriaLabel?: PaginationItemAriaLabelGetter;
46
+ }
47
+ type PaginationProps = Prettify<PaginationBaseProps>;
48
+
49
+ export type { PaginationBaseProps, PaginationItem, PaginationItemAriaLabelGetter, PaginationItemType, PaginationProps, PaginationSize };
@@ -390,6 +390,7 @@ declare const Button: React.NamedExoticComponent<{
390
390
  onTransitionStart?: React.TransitionEventHandler<HTMLButtonElement> | undefined;
391
391
  onTransitionStartCapture?: React.TransitionEventHandler<HTMLButtonElement> | undefined;
392
392
  form?: string | undefined | undefined;
393
+ value?: string | number | readonly string[] | undefined;
393
394
  name?: string | undefined | undefined;
394
395
  formAction?: string | ((formData: FormData) => void | Promise<void>) | undefined;
395
396
  formEncType?: string | undefined | undefined;
@@ -397,7 +398,6 @@ declare const Button: React.NamedExoticComponent<{
397
398
  formNoValidate?: boolean | undefined | undefined;
398
399
  formTarget?: string | undefined | undefined;
399
400
  type?: "submit" | "reset" | "button" | undefined | undefined;
400
- value?: string | number | readonly string[] | undefined;
401
401
  }>;
402
402
 
403
403
  export { Button };
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { HoverCardProps, HoverCardTriggerProps, HoverCardContentProps } from './HoverCard.types.js';
3
+
4
+ interface HoverCardComponent extends React.FC<HoverCardProps> {
5
+ Trigger: React.FC<HoverCardTriggerProps>;
6
+ Content: React.FC<HoverCardContentProps>;
7
+ }
8
+ declare const HoverCard: HoverCardComponent;
9
+
10
+ export { HoverCard };
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ import { UseFloatingReturn, FloatingContext } from '@floating-ui/react';
3
+ import { BaseComponent } from '../../../types/common.js';
4
+ import { Prettify } from '../../../types/utilities.js';
5
+ import { PopoverPlacement } from '../Popover/Popover.types.js';
6
+
7
+ interface HoverCardBaseProps {
8
+ /** Open state (controlled). */
9
+ open?: boolean;
10
+ /** Default open state (uncontrolled). @default false */
11
+ defaultOpen?: boolean;
12
+ /** Side relative to the trigger. @default "bottom-start" */
13
+ placement?: PopoverPlacement;
14
+ /** Distance in pixels from the trigger. @default 8 */
15
+ offset?: number;
16
+ /** Delay before opening on hover, in ms. @default 400 */
17
+ openDelay?: number;
18
+ /** Delay before closing once cursor leaves, in ms. @default 150 */
19
+ closeDelay?: number;
20
+ /** Render the content in a portal. @default true */
21
+ portal?: boolean;
22
+ /**
23
+ * Disable the safe polygon that lets the cursor move from the trigger
24
+ * onto the content without closing. @default false
25
+ */
26
+ disableSafePolygon?: boolean;
27
+ /** Disable the entire HoverCard (never opens). @default false */
28
+ disabled?: boolean;
29
+ /** Callback when open state changes. */
30
+ onOpenChange?: (open: boolean) => void;
31
+ /** `HoverCard.Trigger` + `HoverCard.Content` children. */
32
+ children: React.ReactNode;
33
+ }
34
+ type HoverCardProps = Prettify<HoverCardBaseProps>;
35
+ interface HoverCardTriggerBaseProps {
36
+ /** Trigger element — must be a single React element. */
37
+ children: React.ReactElement;
38
+ }
39
+ type HoverCardTriggerProps = Prettify<HoverCardTriggerBaseProps>;
40
+ interface HoverCardContentBaseProps extends BaseComponent<HTMLDivElement> {
41
+ /** Content rendered inside the floating panel. */
42
+ children: React.ReactNode;
43
+ /** Width of the content. */
44
+ width?: number | string;
45
+ /** Maximum height with scroll. */
46
+ maxHeight?: number | string;
47
+ /** Padding inside the content. @default "md" */
48
+ padding?: 'none' | 'sm' | 'md' | 'lg';
49
+ }
50
+ type HoverCardContentProps = Prettify<HoverCardContentBaseProps>;
51
+ interface HoverCardContextValue {
52
+ isOpen: boolean;
53
+ hoverCardId: string;
54
+ portal: boolean;
55
+ triggerRef: React.RefObject<HTMLElement | null>;
56
+ contentRef: React.RefObject<HTMLDivElement | null>;
57
+ floatingRefs: UseFloatingReturn['refs'];
58
+ floatingStyles: React.CSSProperties;
59
+ floatingContext: FloatingContext;
60
+ getReferenceProps: (props?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;
61
+ getFloatingProps: (props?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;
62
+ }
63
+
64
+ export type { HoverCardBaseProps, HoverCardContentBaseProps, HoverCardContentProps, HoverCardContextValue, HoverCardProps, HoverCardTriggerBaseProps, HoverCardTriggerProps };
@@ -2,11 +2,24 @@ import React from 'react';
2
2
  import { LiteralUnion, Prettify } from '../../../types/utilities.js';
3
3
  import { Size } from '../../../types/common.js';
4
4
 
5
- type IconSize = Size;
5
+ type IconSize = LiteralUnion<Size, string> | number;
6
6
  type IconColor = LiteralUnion<'primary' | 'secondary' | 'muted' | 'accent' | 'success' | 'warning' | 'error'>;
7
7
  interface IconBaseProps {
8
8
  children: React.ReactNode;
9
+ /**
10
+ * Icon size. `'sm' | 'md' | 'lg'` map to 12 / 16 / 20 px through the theme
11
+ * recipe. Pass a `number` for a custom pixel size, or a `string` for any
12
+ * CSS length (e.g. `'1.5em'`, `'24px'`).
13
+ * @default "md"
14
+ */
9
15
  size?: IconSize;
16
+ /**
17
+ * Icon color. Standard tokens (`'primary' | 'secondary' | 'muted' |
18
+ * 'accent' | 'success' | 'warning' | 'error'`) map to theme variables;
19
+ * any other string is forwarded as an inline `color` value (hex,
20
+ * `currentColor`, `var(--…)`, etc.).
21
+ * @default "primary"
22
+ */
10
23
  color?: IconColor;
11
24
  className?: string;
12
25
  title?: string;