@flikk/ui 1.0.0-beta.1 → 1.0.0-beta.11

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 (528) hide show
  1. package/dist/components/ai/ApprovalCard/ApprovalCard.js +3 -2
  2. package/dist/components/ai/ApprovalCard/ApprovalCard.types.d.ts +2 -2
  3. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +2 -2
  4. package/dist/components/ai/PromptInput/PromptInput.animations.d.ts +25 -0
  5. package/dist/components/ai/PromptInput/PromptInput.animations.js +61 -0
  6. package/dist/components/ai/PromptInput/PromptInput.js +264 -31
  7. package/dist/components/ai/PromptInput/PromptInput.theme.js +6 -1
  8. package/dist/components/ai/PromptInput/PromptInput.types.d.ts +68 -0
  9. package/dist/components/ai/PromptInput/VoiceRecorder.d.ts +10 -0
  10. package/dist/components/ai/PromptInput/VoiceRecorder.js +258 -0
  11. package/dist/components/ai/PromptInput/VoiceRecorder.types.d.ts +17 -0
  12. package/dist/components/ai/PromptInput/index.d.ts +1 -0
  13. package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.js +1 -1
  14. package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -2
  15. package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +51 -27
  16. package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +4 -5
  17. package/dist/components/ai/StreamingResponse/StreamingCursor.js +5 -12
  18. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +7 -0
  19. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +20 -1
  20. package/dist/components/ai/StreamingResponse/StreamingResponse.js +2 -2
  21. package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +4 -4
  22. package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +2 -0
  23. package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +27 -0
  24. package/dist/components/ai/StreamingResponse/WordAnimationContext.js +134 -0
  25. package/dist/components/ai/StreamingResponse/index.d.ts +3 -1
  26. package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.theme.js +2 -2
  27. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +6 -6
  28. package/dist/components/ai/index.js +1 -0
  29. package/dist/components/charts/ActivityRings/ActivityRings.js +1 -1
  30. package/dist/components/charts/ActivityRings/ActivityRings.theme.js +2 -2
  31. package/dist/components/charts/BarChart/BarChart.js +3 -3
  32. package/dist/components/charts/ChartContainer.js +1 -1
  33. package/dist/components/charts/ComboChart/ComboChart.js +2 -2
  34. package/dist/components/charts/DonutChart/DonutChart.theme.js +1 -1
  35. package/dist/components/charts/DonutChart/DonutChart.types.d.ts +1 -2
  36. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.js +1 -1
  37. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
  38. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.types.d.ts +1 -2
  39. package/dist/components/charts/FunnelChart/FunnelChart.js +7 -7
  40. package/dist/components/charts/Heatmap/Heatmap.theme.js +1 -1
  41. package/dist/components/charts/Heatmap/HeatmapCell.js +1 -1
  42. package/dist/components/charts/Heatmap/HeatmapLegend.js +1 -1
  43. package/dist/components/charts/RadarChart/RadarChart.theme.js +2 -2
  44. package/dist/components/charts/ScatterPlot/ScatterPlot.js +1 -1
  45. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +2 -2
  46. package/dist/components/charts/StackedBarChart/StackedBarChart.js +2 -2
  47. package/dist/components/charts/shared/ChartErrorBoundary/ChartErrorBoundary.js +1 -1
  48. package/dist/components/charts/shared/ChartLegend/ChartLegendContent.js +1 -1
  49. package/dist/components/charts/shared/ChartText/ChartText.js +1 -1
  50. package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
  51. package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +4 -4
  52. package/dist/components/core/Accordion/Accordion.animations.d.ts +6 -1
  53. package/dist/components/core/Accordion/Accordion.animations.js +15 -1
  54. package/dist/components/core/Accordion/Accordion.theme.js +5 -5
  55. package/dist/components/core/Accordion/Accordion.types.d.ts +25 -0
  56. package/dist/components/core/Accordion/AccordionContent.js +1 -1
  57. package/dist/components/core/Accordion/AccordionTrigger.js +11 -6
  58. package/dist/components/core/Alert/Alert.js +3 -2
  59. package/dist/components/core/Alert/Alert.theme.js +4 -8
  60. package/dist/components/core/Alert/Alert.types.d.ts +4 -3
  61. package/dist/components/core/AlertDialog/AlertDialog.d.ts +1 -1
  62. package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
  63. package/dist/components/core/AlertDialog/AlertDialog.types.d.ts +2 -2
  64. package/dist/components/core/Avatar/Avatar.theme.js +5 -5
  65. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +1 -1
  66. package/dist/components/core/Badge/Badge.d.ts +1 -1
  67. package/dist/components/core/Badge/Badge.js +11 -9
  68. package/dist/components/core/Badge/Badge.theme.js +24 -20
  69. package/dist/components/core/Badge/Badge.types.d.ts +10 -5
  70. package/dist/components/core/Breadcrumbs/Breadcrumbs.js +1 -1
  71. package/dist/components/core/Button/Button.d.ts +1 -1
  72. package/dist/components/core/Button/Button.js +21 -18
  73. package/dist/components/core/Button/Button.ripple.d.ts +5 -1
  74. package/dist/components/core/Button/Button.ripple.js +27 -17
  75. package/dist/components/core/Button/Button.theme.d.ts +1 -2
  76. package/dist/components/core/Button/Button.theme.js +46 -41
  77. package/dist/components/core/Button/Button.types.d.ts +3 -3
  78. package/dist/components/core/Button/index.d.ts +2 -0
  79. package/dist/components/core/ButtonGroup/ButtonGroup.theme.js +1 -1
  80. package/dist/components/core/Calendar/Calendar.js +1 -1
  81. package/dist/components/core/Calendar/Calendar.theme.js +9 -9
  82. package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +1 -1
  83. package/dist/components/core/Card/Card.d.ts +2 -2
  84. package/dist/components/core/Card/Card.js +6 -7
  85. package/dist/components/core/Card/Card.theme.js +2 -2
  86. package/dist/components/core/Card/Card.types.d.ts +7 -27
  87. package/dist/components/core/Card/CardSubtitle.d.ts +3 -0
  88. package/dist/components/core/Card/CardSubtitle.js +11 -0
  89. package/dist/components/core/Card/CardTitle.d.ts +1 -1
  90. package/dist/components/core/Card/index.d.ts +2 -2
  91. package/dist/components/core/CommandPalette/CommandItem.d.ts +1 -1
  92. package/dist/components/core/CommandPalette/CommandItem.js +2 -2
  93. package/dist/components/core/CommandPalette/CommandPalette.js +2 -2
  94. package/dist/components/core/CommandPalette/CommandPalette.theme.js +6 -6
  95. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -2
  96. package/dist/components/core/ContextMenu/ContextMenu.theme.js +3 -3
  97. package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +1 -1
  98. package/dist/components/core/ContextMenu/ContextMenuItem.js +3 -3
  99. package/dist/components/core/Drawer/Drawer.d.ts +13 -1
  100. package/dist/components/core/Drawer/Drawer.js +23 -10
  101. package/dist/components/core/Drawer/Drawer.theme.d.ts +2 -0
  102. package/dist/components/core/Drawer/Drawer.theme.js +15 -13
  103. package/dist/components/core/Drawer/Drawer.types.d.ts +26 -9
  104. package/dist/components/core/Drawer/DrawerContent.js +1 -1
  105. package/dist/components/core/Drawer/DrawerHeader.d.ts +5 -0
  106. package/dist/components/core/Drawer/DrawerHeader.js +15 -0
  107. package/dist/components/core/Drawer/DrawerSubtitle.d.ts +5 -0
  108. package/dist/components/core/Drawer/DrawerSubtitle.js +11 -0
  109. package/dist/components/core/Drawer/DrawerTitle.d.ts +5 -0
  110. package/dist/components/core/Drawer/DrawerTitle.js +11 -0
  111. package/dist/components/core/Drawer/index.d.ts +1 -1
  112. package/dist/components/core/Dropdown/Dropdown.theme.js +1 -1
  113. package/dist/components/core/Dropdown/Dropdown.types.d.ts +4 -4
  114. package/dist/components/core/Dropdown/DropdownItem.js +2 -2
  115. package/dist/components/core/Dropdown/DropdownMenu.js +1 -0
  116. package/dist/components/core/Empty/Empty.js +2 -2
  117. package/dist/components/core/Empty/Empty.theme.d.ts +1 -1
  118. package/dist/components/core/Empty/Empty.theme.js +3 -3
  119. package/dist/components/core/Empty/Empty.types.d.ts +2 -2
  120. package/dist/components/core/Kbd/Kbd.theme.js +3 -3
  121. package/dist/components/core/Link/Link.d.ts +1 -1
  122. package/dist/components/core/Link/Link.types.d.ts +2 -2
  123. package/dist/components/core/Loader/Loader.theme.js +1 -1
  124. package/dist/components/core/MenuItem/MenuItem.js +2 -2
  125. package/dist/components/core/MenuItem/MenuItem.theme.d.ts +1 -2
  126. package/dist/components/core/MenuItem/MenuItem.theme.js +9 -11
  127. package/dist/components/core/MenuItem/MenuItem.types.d.ts +1 -1
  128. package/dist/components/core/Message/Message.d.ts +3 -2
  129. package/dist/components/core/Message/Message.js +30 -24
  130. package/dist/components/core/Message/Message.theme.d.ts +1 -1
  131. package/dist/components/core/Message/Message.theme.js +22 -24
  132. package/dist/components/core/Message/Message.types.d.ts +0 -7
  133. package/dist/components/core/Message/MessageList.animations.d.ts +6 -0
  134. package/dist/components/core/Message/MessageList.animations.js +32 -0
  135. package/dist/components/core/Message/MessageList.d.ts +5 -0
  136. package/dist/components/core/Message/MessageList.js +78 -0
  137. package/dist/components/core/Message/MessageList.theme.d.ts +2 -0
  138. package/dist/components/core/Message/MessageList.theme.js +6 -0
  139. package/dist/components/core/Message/MessageList.types.d.ts +32 -0
  140. package/dist/components/core/Message/index.d.ts +2 -0
  141. package/dist/components/core/Modal/Modal.d.ts +2 -2
  142. package/dist/components/core/Modal/Modal.js +5 -5
  143. package/dist/components/core/Modal/Modal.theme.js +6 -6
  144. package/dist/components/core/Modal/Modal.types.d.ts +4 -4
  145. package/dist/components/core/Modal/ModalHeader.js +1 -0
  146. package/dist/components/core/Modal/ModalSubtitle.d.ts +5 -0
  147. package/dist/components/core/Modal/ModalSubtitle.js +11 -0
  148. package/dist/components/core/ModalStack/ModalStack.animations.js +3 -3
  149. package/dist/components/core/ModalStack/ModalStackModal.js +3 -3
  150. package/dist/components/core/NavItem/NavItem.js +1 -1
  151. package/dist/components/core/NavItem/NavItem.theme.js +1 -1
  152. package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +3 -3
  153. package/dist/components/core/PageHeading/PageHeading.d.ts +8 -0
  154. package/dist/components/core/PageHeading/PageHeading.js +28 -0
  155. package/dist/components/core/PageHeading/PageHeading.theme.d.ts +2 -0
  156. package/dist/components/core/PageHeading/PageHeading.theme.js +11 -0
  157. package/dist/components/core/PageHeading/PageHeading.types.d.ts +55 -0
  158. package/dist/components/core/PageHeading/PageHeadingActions.d.ts +3 -0
  159. package/dist/components/core/PageHeading/PageHeadingActions.js +11 -0
  160. package/dist/components/core/PageHeading/PageHeadingBackButton.d.ts +3 -0
  161. package/dist/components/core/PageHeading/PageHeadingBackButton.js +12 -0
  162. package/dist/components/core/PageHeading/PageHeadingIcon.d.ts +3 -0
  163. package/dist/components/core/PageHeading/PageHeadingIcon.js +11 -0
  164. package/dist/components/core/PageHeading/PageHeadingSubtitle.d.ts +3 -0
  165. package/dist/components/core/PageHeading/PageHeadingSubtitle.js +11 -0
  166. package/dist/components/core/PageHeading/PageHeadingTitle.d.ts +3 -0
  167. package/dist/components/core/PageHeading/PageHeadingTitle.js +11 -0
  168. package/dist/components/core/PageHeading/index.d.ts +2 -0
  169. package/dist/components/core/Pagination/Pagination.theme.js +2 -2
  170. package/dist/components/core/Pill/Pill.theme.js +3 -3
  171. package/dist/components/core/Popover/Popover.theme.js +1 -1
  172. package/dist/components/core/Popover/Popover.types.d.ts +6 -0
  173. package/dist/components/core/Popover/PopoverContent.js +8 -2
  174. package/dist/components/core/Progress/Progress.theme.js +10 -7
  175. package/dist/components/core/Progress/Progress.types.d.ts +2 -1
  176. package/dist/components/core/Segmented/Segmented.theme.js +5 -5
  177. package/dist/components/core/Sidebar/Sidebar.js +1 -0
  178. package/dist/components/core/Sidebar/SidebarNavGroup.js +1 -1
  179. package/dist/components/core/SocialIcon/SocialIcon.d.ts +3 -0
  180. package/dist/components/core/SocialIcon/SocialIcon.js +30 -0
  181. package/dist/components/core/SocialIcon/SocialIcon.theme.d.ts +2 -0
  182. package/dist/components/core/SocialIcon/SocialIcon.theme.js +12 -0
  183. package/dist/components/core/SocialIcon/SocialIcon.types.d.ts +18 -0
  184. package/dist/components/core/SocialIcon/index.d.ts +2 -0
  185. package/dist/components/core/SocialIcon/platforms.d.ts +17 -0
  186. package/dist/components/core/SocialIcon/platforms.js +234 -0
  187. package/dist/components/core/Spinner/Spinner.theme.js +3 -5
  188. package/dist/components/core/Spinner/Spinner.types.d.ts +2 -1
  189. package/dist/components/core/Tabs/Tabs.theme.js +2 -2
  190. package/dist/components/core/Tag/Tag.d.ts +2 -2
  191. package/dist/components/core/Tag/Tag.js +21 -4
  192. package/dist/components/core/Tag/Tag.theme.js +12 -4
  193. package/dist/components/core/Tag/Tag.types.d.ts +24 -1
  194. package/dist/components/core/Toast/Toast.js +4 -4
  195. package/dist/components/core/Toast/Toast.theme.js +4 -4
  196. package/dist/components/core/Toast/Toast.types.d.ts +9 -9
  197. package/dist/components/core/Toast/useToast.js +6 -6
  198. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
  199. package/dist/components/core/Tree/Tree.theme.js +1 -1
  200. package/dist/components/core/index.d.ts +2 -7
  201. package/dist/components/core/index.js +10 -19
  202. package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +8 -0
  203. package/dist/components/{core → data-display}/Feed/Feed.js +3 -3
  204. package/dist/components/{core → data-display}/Feed/Feed.theme.js +2 -2
  205. package/dist/components/data-display/GanttChart/GanttChart.animations.d.ts +4 -0
  206. package/dist/components/data-display/GanttChart/GanttChart.animations.js +21 -0
  207. package/dist/components/data-display/GanttChart/GanttChart.d.ts +8 -0
  208. package/dist/components/data-display/GanttChart/GanttChart.js +170 -0
  209. package/dist/components/data-display/GanttChart/GanttChart.theme.d.ts +2 -0
  210. package/dist/components/data-display/GanttChart/GanttChart.theme.js +23 -0
  211. package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +162 -0
  212. package/dist/components/data-display/GanttChart/GanttChart.types.js +9 -0
  213. package/dist/components/data-display/GanttChart/GanttChart.utils.d.ts +80 -0
  214. package/dist/components/data-display/GanttChart/GanttChart.utils.js +274 -0
  215. package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +9 -0
  216. package/dist/components/data-display/GanttChart/GanttChartPanel.js +82 -0
  217. package/dist/components/data-display/GanttChart/GanttDependencyArrows.d.ts +2 -0
  218. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +35 -0
  219. package/dist/components/data-display/GanttChart/GanttGroupBar.d.ts +8 -0
  220. package/dist/components/data-display/GanttChart/GanttGroupBar.js +26 -0
  221. package/dist/components/data-display/GanttChart/GanttMilestone.d.ts +9 -0
  222. package/dist/components/data-display/GanttChart/GanttMilestone.js +44 -0
  223. package/dist/components/data-display/GanttChart/GanttProgressCircle.d.ts +9 -0
  224. package/dist/components/data-display/GanttChart/GanttProgressCircle.js +11 -0
  225. package/dist/components/data-display/GanttChart/GanttSplitter.d.ts +2 -0
  226. package/dist/components/data-display/GanttChart/GanttSplitter.js +39 -0
  227. package/dist/components/data-display/GanttChart/GanttTableGroupRow.d.ts +7 -0
  228. package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +23 -0
  229. package/dist/components/data-display/GanttChart/GanttTableHeader.d.ts +2 -0
  230. package/dist/components/data-display/GanttChart/GanttTableHeader.js +13 -0
  231. package/dist/components/data-display/GanttChart/GanttTablePanel.d.ts +6 -0
  232. package/dist/components/data-display/GanttChart/GanttTablePanel.js +20 -0
  233. package/dist/components/data-display/GanttChart/GanttTableTaskRow.d.ts +8 -0
  234. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +30 -0
  235. package/dist/components/data-display/GanttChart/GanttTaskBar.d.ts +9 -0
  236. package/dist/components/data-display/GanttChart/GanttTaskBar.js +206 -0
  237. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.d.ts +8 -0
  238. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +17 -0
  239. package/dist/components/data-display/GanttChart/GanttTimelineGrid.d.ts +7 -0
  240. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +33 -0
  241. package/dist/components/data-display/GanttChart/GanttTimelineHeader.d.ts +8 -0
  242. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +43 -0
  243. package/dist/components/data-display/GanttChart/GanttToolbar.d.ts +2 -0
  244. package/dist/components/data-display/GanttChart/GanttToolbar.js +29 -0
  245. package/dist/components/data-display/GanttChart/hooks/useGanttDates.d.ts +12 -0
  246. package/dist/components/data-display/GanttChart/hooks/useGanttDates.js +25 -0
  247. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.d.ts +25 -0
  248. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +144 -0
  249. package/dist/components/data-display/GanttChart/hooks/useGanttLayout.d.ts +2 -0
  250. package/dist/components/data-display/GanttChart/hooks/useGanttLayout.js +33 -0
  251. package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.d.ts +6 -0
  252. package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.js +32 -0
  253. package/dist/components/data-display/GanttChart/index.d.ts +3 -0
  254. package/dist/components/{core → data-display}/KPI/KPI.js +10 -8
  255. package/dist/components/{core → data-display}/KPI/KPI.theme.js +12 -12
  256. package/dist/components/{core → data-display}/KPI/KPI.types.d.ts +6 -5
  257. package/dist/components/{core → data-display}/KPI/index.d.ts +1 -0
  258. package/dist/components/{core → data-display}/Metric/Metric.js +4 -7
  259. package/dist/components/{core → data-display}/Metric/Metric.theme.js +17 -13
  260. package/dist/components/{core → data-display}/Metric/Metric.types.d.ts +8 -7
  261. package/dist/components/{core → data-display}/Table/Table.theme.js +4 -4
  262. package/dist/components/{core → data-display}/Table/TableActions.js +8 -8
  263. package/dist/components/{core → data-display}/Table/TableActionsMenu.js +1 -1
  264. package/dist/components/{core → data-display}/Table/TableColumnManager.js +6 -5
  265. package/dist/components/{core → data-display}/Table/TableFilter.js +6 -6
  266. package/dist/components/{core → data-display}/Table/TableHeader.js +1 -1
  267. package/dist/components/data-display/Table/TablePagination.js +25 -0
  268. package/dist/components/{core → data-display}/Table/TableRow.js +1 -1
  269. package/dist/components/{core → data-display}/Table/TableSelectionHeader.js +3 -3
  270. package/dist/components/{core → data-display}/Timeline/Timeline.theme.js +2 -2
  271. package/dist/components/data-display/index.d.ts +7 -0
  272. package/dist/components/data-display/index.js +20 -0
  273. package/dist/components/effects/3d/index.d.ts +6 -0
  274. package/dist/components/effects/3d/index.js +3 -0
  275. package/dist/components/effects/Aurora/Aurora.d.ts +24 -0
  276. package/dist/components/effects/Aurora/Aurora.js +119 -0
  277. package/dist/components/effects/Aurora/Aurora.types.d.ts +15 -0
  278. package/dist/components/effects/Aurora/index.d.ts +2 -0
  279. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +2 -2
  280. package/dist/components/effects/CustomCursor/CustomCursor.js +1 -1
  281. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +3 -1
  282. package/dist/components/effects/CustomCursor/CustomCursor.types.d.ts +5 -4
  283. package/dist/components/effects/DotPattern/DotPattern.d.ts +18 -0
  284. package/dist/components/effects/DotPattern/DotPattern.js +65 -0
  285. package/dist/components/effects/DotPattern/DotPattern.types.d.ts +47 -0
  286. package/dist/components/effects/DotPattern/index.d.ts +2 -0
  287. package/dist/components/effects/GridPattern/GridPattern.d.ts +18 -0
  288. package/dist/components/effects/GridPattern/GridPattern.js +64 -0
  289. package/dist/components/effects/GridPattern/GridPattern.types.d.ts +47 -0
  290. package/dist/components/effects/GridPattern/index.d.ts +2 -0
  291. package/dist/components/effects/MagneticElement/MagneticElement.d.ts +30 -0
  292. package/dist/components/effects/MagneticElement/MagneticElement.js +110 -0
  293. package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +44 -0
  294. package/dist/components/effects/MagneticElement/index.d.ts +2 -0
  295. package/dist/components/effects/MorphingText/MorphingText.d.ts +17 -0
  296. package/dist/components/effects/MorphingText/MorphingText.js +91 -0
  297. package/dist/components/effects/MorphingText/MorphingText.types.d.ts +18 -0
  298. package/dist/components/effects/MorphingText/index.d.ts +2 -0
  299. package/dist/components/effects/NoiseOverlay/NoiseOverlay.d.ts +28 -0
  300. package/dist/components/effects/NoiseOverlay/NoiseOverlay.js +61 -0
  301. package/dist/components/effects/NoiseOverlay/NoiseOverlay.types.d.ts +35 -0
  302. package/dist/components/effects/NoiseOverlay/index.d.ts +2 -0
  303. package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +26 -0
  304. package/dist/components/effects/ParallaxSection/ParallaxSection.js +71 -0
  305. package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +11 -0
  306. package/dist/components/effects/ParallaxSection/index.d.ts +2 -0
  307. package/dist/components/effects/Particles/Particles.d.ts +22 -0
  308. package/dist/components/effects/Particles/Particles.js +33 -0
  309. package/dist/components/effects/Particles/Particles.scene.d.ts +3 -0
  310. package/dist/components/effects/Particles/Particles.scene.js +284 -0
  311. package/dist/components/effects/Particles/Particles.types.d.ts +65 -0
  312. package/dist/components/effects/Particles/index.d.ts +2 -0
  313. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.d.ts +3 -0
  314. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +75 -0
  315. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.d.ts +7 -0
  316. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.js +12 -0
  317. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +47 -0
  318. package/dist/components/effects/ProgressiveBlur/index.d.ts +2 -0
  319. package/dist/components/effects/ScrollReveal/ScrollReveal.d.ts +29 -0
  320. package/dist/components/effects/ScrollReveal/ScrollReveal.js +121 -0
  321. package/dist/components/effects/ScrollReveal/ScrollReveal.types.d.ts +25 -0
  322. package/dist/components/effects/ScrollReveal/index.d.ts +2 -0
  323. package/dist/components/effects/Spotlight/Spotlight.d.ts +36 -0
  324. package/dist/components/effects/Spotlight/Spotlight.js +112 -0
  325. package/dist/components/effects/Spotlight/Spotlight.types.d.ts +29 -0
  326. package/dist/components/effects/Spotlight/index.d.ts +2 -0
  327. package/dist/components/effects/StickyScroll/StickyScroll.d.ts +30 -0
  328. package/dist/components/effects/StickyScroll/StickyScroll.js +128 -0
  329. package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +19 -0
  330. package/dist/components/effects/StickyScroll/index.d.ts +2 -0
  331. package/dist/components/effects/index.d.ts +22 -4
  332. package/dist/components/effects/index.js +11 -2
  333. package/dist/components/forms/Checkbox/Checkbox.d.ts +3 -4
  334. package/dist/components/forms/Checkbox/Checkbox.js +36 -12
  335. package/dist/components/forms/Checkbox/Checkbox.theme.js +9 -5
  336. package/dist/components/forms/Checkbox/Checkbox.types.d.ts +28 -2
  337. package/dist/components/forms/Checkbox/CheckboxContext.d.ts +14 -0
  338. package/dist/components/forms/Checkbox/CheckboxContext.js +12 -0
  339. package/dist/components/forms/Checkbox/CheckboxGroup.d.ts +3 -0
  340. package/dist/components/forms/Checkbox/CheckboxGroup.js +40 -0
  341. package/dist/components/forms/Checkbox/index.d.ts +1 -1
  342. package/dist/components/forms/ColorPicker/ColorPicker.js +1 -1
  343. package/dist/components/forms/ColorPicker/ColorPicker.theme.js +3 -3
  344. package/dist/components/forms/ColorPicker/ColorPickerInput.js +7 -7
  345. package/dist/components/forms/CronInput/CronInput.d.ts +3 -0
  346. package/dist/components/forms/CronInput/CronInput.js +107 -0
  347. package/dist/components/forms/CronInput/CronInput.theme.d.ts +6 -0
  348. package/dist/components/forms/CronInput/CronInput.theme.js +84 -0
  349. package/dist/components/forms/CronInput/CronInput.types.d.ts +98 -0
  350. package/dist/components/forms/CronInput/CronInput.utils.d.ts +67 -0
  351. package/dist/components/forms/CronInput/CronInput.utils.js +505 -0
  352. package/dist/components/forms/CronInput/index.d.ts +4 -0
  353. package/dist/components/forms/DatePicker/DatePicker.theme.js +3 -3
  354. package/dist/components/forms/DatePicker/DatePickerContent.js +1 -1
  355. package/dist/components/forms/FileUpload/FileUpload.js +80 -2
  356. package/dist/components/forms/FileUpload/FileUpload.theme.js +4 -4
  357. package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
  358. package/dist/components/forms/Input/Input.theme.js +1 -1
  359. package/dist/components/forms/InputCounter/InputCounter.d.ts +1 -1
  360. package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
  361. package/dist/components/forms/InputCounter/InputCounter.types.d.ts +3 -2
  362. package/dist/components/forms/InputOTP/InputOTP.theme.js +2 -2
  363. package/dist/components/forms/InputTag/InputTag.js +1 -1
  364. package/dist/components/forms/Mention/Mention.d.ts +3 -0
  365. package/dist/components/forms/Mention/Mention.js +607 -0
  366. package/dist/components/forms/Mention/Mention.theme.d.ts +6 -0
  367. package/dist/components/forms/Mention/Mention.theme.js +55 -0
  368. package/dist/components/forms/Mention/Mention.types.d.ts +151 -0
  369. package/dist/components/forms/Mention/Mention.utils.d.ts +42 -0
  370. package/dist/components/forms/Mention/Mention.utils.js +285 -0
  371. package/dist/components/forms/Mention/index.d.ts +3 -0
  372. package/dist/components/forms/Radio/Radio.d.ts +3 -4
  373. package/dist/components/forms/Radio/Radio.js +25 -12
  374. package/dist/components/forms/Radio/Radio.theme.js +34 -5
  375. package/dist/components/forms/Radio/Radio.types.d.ts +30 -4
  376. package/dist/components/forms/Radio/RadioContext.d.ts +14 -0
  377. package/dist/components/forms/Radio/RadioContext.js +12 -0
  378. package/dist/components/forms/Radio/RadioGroup.d.ts +3 -0
  379. package/dist/components/forms/Radio/RadioGroup.js +36 -0
  380. package/dist/components/forms/Radio/index.d.ts +1 -1
  381. package/dist/components/forms/RichTextEditor/RichTextEditor.js +2 -2
  382. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +1 -1
  383. package/dist/components/forms/Select/Select.theme.js +1 -1
  384. package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +2 -0
  385. package/dist/components/forms/SelectableCard/SelectableCard.animations.js +9 -0
  386. package/dist/components/forms/SelectableCard/SelectableCard.d.ts +5 -0
  387. package/dist/components/forms/SelectableCard/SelectableCard.js +58 -0
  388. package/dist/components/forms/SelectableCard/SelectableCard.theme.d.ts +2 -0
  389. package/dist/components/forms/SelectableCard/SelectableCard.theme.js +38 -0
  390. package/dist/components/forms/SelectableCard/SelectableCard.types.d.ts +33 -0
  391. package/dist/components/forms/SelectableCard/SelectableCardContext.d.ts +3 -0
  392. package/dist/components/forms/SelectableCard/SelectableCardContext.js +12 -0
  393. package/dist/components/forms/SelectableCard/SelectableCardGroup.d.ts +3 -0
  394. package/dist/components/forms/SelectableCard/SelectableCardGroup.js +37 -0
  395. package/dist/components/forms/SelectableCard/index.d.ts +3 -0
  396. package/dist/components/forms/Signature/Signature.theme.js +1 -1
  397. package/dist/components/forms/Slider/Slider.theme.js +3 -3
  398. package/dist/components/forms/Switch/Switch.theme.js +1 -1
  399. package/dist/components/forms/TimePicker/TimePicker.theme.js +2 -2
  400. package/dist/components/forms/TimePicker/TimePickerContent.js +78 -1
  401. package/dist/components/forms/TransferList/TransferList.animations.d.ts +10 -0
  402. package/dist/components/forms/TransferList/TransferList.animations.js +32 -0
  403. package/dist/components/forms/TransferList/TransferList.d.ts +28 -0
  404. package/dist/components/forms/TransferList/TransferList.js +199 -0
  405. package/dist/components/forms/TransferList/TransferList.theme.d.ts +6 -0
  406. package/dist/components/forms/TransferList/TransferList.theme.js +60 -0
  407. package/dist/components/forms/TransferList/TransferList.types.d.ts +101 -0
  408. package/dist/components/forms/TransferList/index.d.ts +3 -0
  409. package/dist/components/forms/forms.theme.js +6 -6
  410. package/dist/components/forms/index.d.ts +15 -2
  411. package/dist/components/forms/index.js +87 -0
  412. package/dist/components/layout/FormLayout/FormLayout.d.ts +8 -0
  413. package/dist/components/layout/FormLayout/FormLayout.js +22 -0
  414. package/dist/components/layout/FormLayout/FormLayout.theme.d.ts +2 -0
  415. package/dist/components/layout/FormLayout/FormLayout.theme.js +16 -0
  416. package/dist/components/layout/FormLayout/FormLayout.types.d.ts +61 -0
  417. package/dist/components/layout/FormLayout/FormLayoutBody.d.ts +3 -0
  418. package/dist/components/layout/FormLayout/FormLayoutBody.js +91 -0
  419. package/dist/components/layout/FormLayout/FormLayoutFooter.d.ts +3 -0
  420. package/dist/components/layout/FormLayout/FormLayoutFooter.js +12 -0
  421. package/dist/components/layout/FormLayout/FormLayoutHeader.d.ts +3 -0
  422. package/dist/components/layout/FormLayout/FormLayoutHeader.js +12 -0
  423. package/dist/components/layout/FormLayout/FormLayoutSection.d.ts +3 -0
  424. package/dist/components/layout/FormLayout/FormLayoutSection.js +12 -0
  425. package/dist/components/layout/FormLayout/index.d.ts +3 -0
  426. package/dist/components/layout/PageLayout/PageLayout.d.ts +7 -0
  427. package/dist/components/layout/PageLayout/PageLayout.js +33 -0
  428. package/dist/components/layout/PageLayout/PageLayout.theme.d.ts +2 -0
  429. package/dist/components/layout/PageLayout/PageLayout.theme.js +10 -0
  430. package/dist/components/layout/PageLayout/PageLayout.types.d.ts +39 -0
  431. package/dist/components/layout/PageLayout/PageLayoutContent.d.ts +3 -0
  432. package/dist/components/layout/PageLayout/PageLayoutContent.js +12 -0
  433. package/dist/components/layout/PageLayout/PageLayoutHeader.d.ts +3 -0
  434. package/dist/components/layout/PageLayout/PageLayoutHeader.js +12 -0
  435. package/dist/components/layout/PageLayout/PageLayoutSidebar.d.ts +3 -0
  436. package/dist/components/layout/PageLayout/PageLayoutSidebar.js +12 -0
  437. package/dist/components/layout/PageLayout/index.d.ts +3 -0
  438. package/dist/components/layout/index.d.ts +2 -0
  439. package/dist/hooks/useSelectPortal.d.ts +4 -2
  440. package/dist/hooks/useSelectPortal.js +139 -51
  441. package/dist/index.d.ts +2 -0
  442. package/dist/index.js +206 -167
  443. package/dist/styles.css +1 -1
  444. package/dist/utils/colorUtils.d.ts +23 -0
  445. package/dist/utils/colorUtils.js +45 -0
  446. package/dist/utils/dateUtils.d.ts +30 -0
  447. package/dist/utils/dateUtils.js +58 -1
  448. package/dist/utils/index.d.ts +2 -1
  449. package/package.json +38 -26
  450. package/src/global.scss +673 -0
  451. package/src/styles/theme.css +378 -0
  452. package/src/theme-plugin.css +11 -0
  453. package/dist/components/core/Button/Button.animations.d.ts +0 -5
  454. package/dist/components/core/Card/CardDescription.d.ts +0 -3
  455. package/dist/components/core/Card/CardDescription.js +0 -11
  456. package/dist/components/core/DescriptionList/DescriptionList.theme.js +0 -8
  457. package/dist/components/core/Modal/ModalDescription.d.ts +0 -5
  458. package/dist/components/core/Modal/ModalDescription.js +0 -11
  459. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.d.ts +0 -34
  460. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.js +0 -218
  461. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.theme.d.ts +0 -9
  462. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.types.d.ts +0 -48
  463. package/dist/components/core/ProgressiveBlur/index.d.ts +0 -2
  464. package/dist/components/core/Table/TablePagination.js +0 -25
  465. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.d.ts +0 -0
  466. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.js +0 -0
  467. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.theme.d.ts +0 -0
  468. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.types.d.ts +0 -0
  469. /package/dist/components/{core → data-display}/DescriptionList/index.d.ts +0 -0
  470. /package/dist/components/{core → data-display}/Feed/Feed.d.ts +0 -0
  471. /package/dist/components/{core → data-display}/Feed/Feed.theme.d.ts +0 -0
  472. /package/dist/components/{core → data-display}/Feed/Feed.types.d.ts +0 -0
  473. /package/dist/components/{core → data-display}/Feed/index.d.ts +0 -0
  474. /package/dist/components/{core → data-display}/KPI/KPI.d.ts +0 -0
  475. /package/dist/components/{core → data-display}/KPI/KPI.theme.d.ts +0 -0
  476. /package/dist/components/{core → data-display}/Metric/Metric.d.ts +0 -0
  477. /package/dist/components/{core → data-display}/Metric/Metric.theme.d.ts +0 -0
  478. /package/dist/components/{core → data-display}/Metric/index.d.ts +0 -0
  479. /package/dist/components/{core → data-display}/Table/Table.animations.d.ts +0 -0
  480. /package/dist/components/{core → data-display}/Table/Table.animations.js +0 -0
  481. /package/dist/components/{core → data-display}/Table/Table.d.ts +0 -0
  482. /package/dist/components/{core → data-display}/Table/Table.filterUtils.d.ts +0 -0
  483. /package/dist/components/{core → data-display}/Table/Table.filterUtils.js +0 -0
  484. /package/dist/components/{core → data-display}/Table/Table.js +0 -0
  485. /package/dist/components/{core → data-display}/Table/Table.theme.d.ts +0 -0
  486. /package/dist/components/{core → data-display}/Table/Table.types.d.ts +0 -0
  487. /package/dist/components/{core → data-display}/Table/Table.utils.d.ts +0 -0
  488. /package/dist/components/{core → data-display}/Table/Table.utils.js +0 -0
  489. /package/dist/components/{core → data-display}/Table/TableActions.d.ts +0 -0
  490. /package/dist/components/{core → data-display}/Table/TableActionsMenu.d.ts +0 -0
  491. /package/dist/components/{core → data-display}/Table/TableBody.d.ts +0 -0
  492. /package/dist/components/{core → data-display}/Table/TableBody.js +0 -0
  493. /package/dist/components/{core → data-display}/Table/TableCell.d.ts +0 -0
  494. /package/dist/components/{core → data-display}/Table/TableCell.js +0 -0
  495. /package/dist/components/{core → data-display}/Table/TableColumnManager.d.ts +0 -0
  496. /package/dist/components/{core → data-display}/Table/TableDeclarative.d.ts +0 -0
  497. /package/dist/components/{core → data-display}/Table/TableDeclarative.js +0 -0
  498. /package/dist/components/{core → data-display}/Table/TableFilter.d.ts +0 -0
  499. /package/dist/components/{core → data-display}/Table/TableHeader.d.ts +0 -0
  500. /package/dist/components/{core → data-display}/Table/TablePagination.d.ts +0 -0
  501. /package/dist/components/{core → data-display}/Table/TableRow.d.ts +0 -0
  502. /package/dist/components/{core → data-display}/Table/TableSelectionHeader.d.ts +0 -0
  503. /package/dist/components/{core → data-display}/Table/hooks/index.d.ts +0 -0
  504. /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.d.ts +0 -0
  505. /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.js +0 -0
  506. /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.d.ts +0 -0
  507. /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.js +0 -0
  508. /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.d.ts +0 -0
  509. /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.js +0 -0
  510. /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.d.ts +0 -0
  511. /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.js +0 -0
  512. /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.d.ts +0 -0
  513. /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.js +0 -0
  514. /package/dist/components/{core → data-display}/Table/index.d.ts +0 -0
  515. /package/dist/components/{core → data-display}/Table/index.js +0 -0
  516. /package/dist/components/{core → data-display}/Timeline/Timeline.animations.d.ts +0 -0
  517. /package/dist/components/{core → data-display}/Timeline/Timeline.animations.js +0 -0
  518. /package/dist/components/{core → data-display}/Timeline/Timeline.d.ts +0 -0
  519. /package/dist/components/{core → data-display}/Timeline/Timeline.js +0 -0
  520. /package/dist/components/{core → data-display}/Timeline/Timeline.theme.d.ts +0 -0
  521. /package/dist/components/{core → data-display}/Timeline/Timeline.types.d.ts +0 -0
  522. /package/dist/components/{core → data-display}/Timeline/TimelineContent.d.ts +0 -0
  523. /package/dist/components/{core → data-display}/Timeline/TimelineContent.js +0 -0
  524. /package/dist/components/{core → data-display}/Timeline/TimelineItem.d.ts +0 -0
  525. /package/dist/components/{core → data-display}/Timeline/TimelineItem.js +0 -0
  526. /package/dist/components/{core → data-display}/Timeline/TimelineMarker.d.ts +0 -0
  527. /package/dist/components/{core → data-display}/Timeline/TimelineMarker.js +0 -0
  528. /package/dist/components/{core → data-display}/Timeline/index.d.ts +0 -0
@@ -0,0 +1,151 @@
1
+ import React from "react";
2
+ import type { TagSize } from "../../core/Tag/Tag.types";
3
+ /**
4
+ * A single suggestion item displayed in the mention dropdown.
5
+ */
6
+ export interface MentionSuggestion {
7
+ /** Unique identifier for the suggestion */
8
+ id: string;
9
+ /** Display label (e.g. user name, tag name) */
10
+ label: string;
11
+ /** Optional avatar URL */
12
+ avatar?: string;
13
+ /** Optional description line (e.g. job title, email) */
14
+ description?: string;
15
+ /** Allow arbitrary metadata */
16
+ [key: string]: unknown;
17
+ }
18
+ /**
19
+ * Rich mention data returned via onMentionsChange.
20
+ */
21
+ export interface MentionData {
22
+ /** Unique identifier */
23
+ id: string;
24
+ /** Display label */
25
+ label: string;
26
+ /** The trigger character used (e.g. '@', '#') */
27
+ trigger: string;
28
+ /** Optional avatar URL */
29
+ avatar?: string;
30
+ }
31
+ /**
32
+ * A text segment in the content model.
33
+ */
34
+ export interface TextSegment {
35
+ type: "text";
36
+ text: string;
37
+ }
38
+ /**
39
+ * A mention segment in the content model.
40
+ */
41
+ export interface MentionSegment {
42
+ type: "mention";
43
+ data: MentionData;
44
+ }
45
+ /**
46
+ * A content segment is either text or a mention.
47
+ */
48
+ export type ContentSegment = TextSegment | MentionSegment;
49
+ /**
50
+ * Configuration for a single trigger character and its suggestions.
51
+ */
52
+ export interface MentionTrigger {
53
+ /** The trigger character (e.g. '@', '#') */
54
+ trigger: string;
55
+ /** Available suggestions for this trigger */
56
+ suggestions: MentionSuggestion[];
57
+ /** Async search callback invoked when the user types after the trigger */
58
+ onSearch?: (query: string) => void | Promise<void>;
59
+ }
60
+ /**
61
+ * Size variants for the Mention component.
62
+ */
63
+ export type MentionSize = "sm" | "md" | "lg";
64
+ /**
65
+ * Theme configuration for the Mention component.
66
+ */
67
+ export interface MentionTheme {
68
+ /** Outermost wrapper style */
69
+ wrapperStyle: string;
70
+ /** Input group container style (border, focus ring) */
71
+ inputGroupStyle: string;
72
+ /** JS-driven focus ring style */
73
+ inputGroupFocusStyle: string;
74
+ /** Base editable div style */
75
+ editableStyle: string;
76
+ /** Size variants for the editable div */
77
+ sizes: Record<MentionSize, string>;
78
+ /** Inline mention Tag chip style */
79
+ mentionTagStyle: string;
80
+ /** Dropdown container style */
81
+ dropdownStyle: string;
82
+ /** Individual suggestion item style */
83
+ suggestionStyle: string;
84
+ /** Highlighted (keyboard-focused) suggestion style */
85
+ suggestionHighlightedStyle: string;
86
+ /** Avatar style inside a suggestion */
87
+ suggestionAvatarStyle: string;
88
+ /** Avatar fallback (initials) style */
89
+ suggestionAvatarFallbackStyle: string;
90
+ /** Suggestion label text style */
91
+ suggestionLabelStyle: string;
92
+ /** Suggestion description text style */
93
+ suggestionDescriptionStyle: string;
94
+ /** Empty state message style */
95
+ emptyMessageStyle: string;
96
+ /** Loading state style */
97
+ loadingStyle: string;
98
+ }
99
+ /**
100
+ * Partial theme overrides for the Mention component.
101
+ */
102
+ export type MentionThemeOverrides = Partial<MentionTheme>;
103
+ /**
104
+ * Props for the Mention component.
105
+ */
106
+ export interface MentionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
107
+ /** Multiple trigger configurations (e.g. '@' for users, '#' for tags) */
108
+ triggers?: MentionTrigger[];
109
+ /** Simple API: suggestions for the default '@' trigger */
110
+ suggestions?: MentionSuggestion[];
111
+ /** Simple API: async search callback for the default '@' trigger */
112
+ onSearch?: (query: string) => void;
113
+ /** Controlled value (plain text with trigger+label for mentions) */
114
+ value?: string;
115
+ /** Uncontrolled default value */
116
+ defaultValue?: string;
117
+ /** Change callback with the full text value */
118
+ onChange?: (value: string) => void;
119
+ /** Callback when a suggestion is selected */
120
+ onMentionSelect?: (suggestion: MentionSuggestion, trigger: string) => void;
121
+ /** Callback with current mention data whenever mentions change */
122
+ onMentionsChange?: (mentions: MentionData[]) => void;
123
+ /** Placeholder text */
124
+ placeholder?: string;
125
+ /** Size variant */
126
+ size?: MentionSize;
127
+ /** Maximum number of suggestions shown */
128
+ maxSuggestions?: number;
129
+ /** Additional className for the editable div */
130
+ className?: string;
131
+ /** Additional className for the wrapper */
132
+ wrapperClassName?: string;
133
+ /** Additional className for the dropdown */
134
+ dropdownClassName?: string;
135
+ /** Theme overrides */
136
+ theme?: MentionThemeOverrides;
137
+ /** Whether the mention input is disabled */
138
+ disabled?: boolean;
139
+ /** Custom renderer for suggestion items */
140
+ renderSuggestion?: (suggestion: MentionSuggestion, isHighlighted: boolean, trigger: string) => React.ReactNode;
141
+ /** Message shown when no suggestions match */
142
+ emptyMessage?: string;
143
+ /** Whether a search is currently loading */
144
+ loading?: boolean;
145
+ /** Size of the inline mention Tag chips */
146
+ mentionTagSize?: TagSize;
147
+ /** Additional className for inline mention Tag chips */
148
+ mentionTagClassName?: string;
149
+ /** Number of visible text rows (controls min-height) */
150
+ rows?: number;
151
+ }
@@ -0,0 +1,42 @@
1
+ import type { ContentSegment, MentionData } from "./Mention.types";
2
+ export declare const MENTION_ATTR = "data-mention-id";
3
+ /**
4
+ * Serialize segments to a plain text string.
5
+ * Mentions become `trigger + label` (e.g. "@Sarah Wilson").
6
+ */
7
+ export declare const serializeSegments: (segments: ContentSegment[]) => string;
8
+ /**
9
+ * Serialize segments but replace mention content with a neutral placeholder.
10
+ * This prevents `detectActiveMention` from matching trigger characters
11
+ * that belong to already-resolved mentions.
12
+ */
13
+ export declare const serializeSegmentsMasked: (segments: ContentSegment[]) => string;
14
+ /**
15
+ * Merge adjacent text segments and ensure the array starts/ends with text.
16
+ * Returns a new array (never mutates input).
17
+ */
18
+ export declare const normalizeSegments: (segments: ContentSegment[]) => ContentSegment[];
19
+ /**
20
+ * Insert a mention into the segments array at the given plain-text position.
21
+ * `startIndex` is the position of the trigger character.
22
+ * `replaceLength` includes the trigger + query length.
23
+ */
24
+ export declare const insertMentionIntoSegments: (segments: ContentSegment[], mention: MentionData, startIndex: number, replaceLength: number) => ContentSegment[];
25
+ /**
26
+ * Get the plain text offset of the current caret position within a
27
+ * contentEditable container. Mention nodes count as their trigger+label length.
28
+ */
29
+ export declare const getPlainTextOffset: (container: HTMLElement) => number | null;
30
+ /**
31
+ * Parse the DOM of a contentEditable container back into segments.
32
+ * Text nodes become TextSegments, elements with MENTION_ATTR become MentionSegments.
33
+ */
34
+ export declare const parseDOMToSegments: (container: HTMLElement, mentionMap: Map<string, MentionData>) => ContentSegment[];
35
+ /**
36
+ * Place the caret right after a given node inside a contentEditable container.
37
+ */
38
+ export declare const setCaretAfterNode: (node: Node) => void;
39
+ /**
40
+ * Set the caret at a specific plain-text offset within a contentEditable container.
41
+ */
42
+ export declare const setCaretAtOffset: (container: HTMLElement, targetOffset: number) => void;
@@ -0,0 +1,285 @@
1
+ // Data attribute used to identify mention nodes in the DOM
2
+ const MENTION_ATTR = "data-mention-id";
3
+ /**
4
+ * Serialize segments to a plain text string.
5
+ * Mentions become `trigger + label` (e.g. "@Sarah Wilson").
6
+ */
7
+ const serializeSegments = (segments) => {
8
+ return segments
9
+ .map((seg) => seg.type === "text" ? seg.text : `${seg.data.trigger}${seg.data.label}`)
10
+ .join("");
11
+ };
12
+ /**
13
+ * Serialize segments but replace mention content with a neutral placeholder.
14
+ * This prevents `detectActiveMention` from matching trigger characters
15
+ * that belong to already-resolved mentions.
16
+ */
17
+ const serializeSegmentsMasked = (segments) => {
18
+ return segments
19
+ .map((seg) => seg.type === "text"
20
+ ? seg.text
21
+ : "\uFFFC".repeat(seg.data.trigger.length + seg.data.label.length))
22
+ .join("");
23
+ };
24
+ /**
25
+ * Merge adjacent text segments and ensure the array starts/ends with text.
26
+ * Returns a new array (never mutates input).
27
+ */
28
+ const normalizeSegments = (segments) => {
29
+ if (segments.length === 0)
30
+ return [{ type: "text", text: "" }];
31
+ const result = [];
32
+ for (const seg of segments) {
33
+ if (seg.type === "text" &&
34
+ result.length > 0 &&
35
+ result[result.length - 1].type === "text") {
36
+ // Merge adjacent text segments
37
+ result[result.length - 1].text += seg.text;
38
+ }
39
+ else {
40
+ // Clone to avoid mutating input
41
+ result.push(seg.type === "text"
42
+ ? { type: "text", text: seg.text }
43
+ : { type: "mention", data: { ...seg.data } });
44
+ }
45
+ }
46
+ // Ensure text bookends
47
+ if (result[0].type !== "text") {
48
+ result.unshift({ type: "text", text: "" });
49
+ }
50
+ if (result[result.length - 1].type !== "text") {
51
+ result.push({ type: "text", text: "" });
52
+ }
53
+ return result;
54
+ };
55
+ /**
56
+ * Insert a mention into the segments array at the given plain-text position.
57
+ * `startIndex` is the position of the trigger character.
58
+ * `replaceLength` includes the trigger + query length.
59
+ */
60
+ const insertMentionIntoSegments = (segments, mention, startIndex, replaceLength) => {
61
+ const newSegments = [];
62
+ let offset = 0;
63
+ for (const seg of segments) {
64
+ if (seg.type === "mention") {
65
+ const mentionText = `${seg.data.trigger}${seg.data.label}`;
66
+ const segLen = mentionText.length;
67
+ if (offset + segLen <= startIndex ||
68
+ offset >= startIndex + replaceLength) {
69
+ newSegments.push({ type: "mention", data: { ...seg.data } });
70
+ }
71
+ // If the mention overlaps with replacement range, skip it
72
+ offset += segLen;
73
+ }
74
+ else {
75
+ const segLen = seg.text.length;
76
+ const segStart = offset;
77
+ const segEnd = offset + segLen;
78
+ if (segEnd <= startIndex || segStart >= startIndex + replaceLength) {
79
+ // Entirely outside the replacement range
80
+ newSegments.push({ type: "text", text: seg.text });
81
+ }
82
+ else {
83
+ // This text segment overlaps the replacement range
84
+ const beforeStart = Math.max(0, startIndex - segStart);
85
+ const afterStart = Math.min(segLen, startIndex + replaceLength - segStart);
86
+ const before = seg.text.slice(0, beforeStart);
87
+ const after = seg.text.slice(afterStart);
88
+ if (before) {
89
+ newSegments.push({ type: "text", text: before });
90
+ }
91
+ newSegments.push({ type: "mention", data: mention });
92
+ // Add a trailing space after the mention
93
+ newSegments.push({ type: "text", text: " " + after });
94
+ }
95
+ offset += segLen;
96
+ }
97
+ }
98
+ return normalizeSegments(newSegments);
99
+ };
100
+ /**
101
+ * Get the plain text offset of the current caret position within a
102
+ * contentEditable container. Mention nodes count as their trigger+label length.
103
+ */
104
+ const getPlainTextOffset = (container) => {
105
+ const sel = window.getSelection();
106
+ if (!sel || sel.rangeCount === 0)
107
+ return null;
108
+ const range = sel.getRangeAt(0);
109
+ if (!container.contains(range.startContainer))
110
+ return null;
111
+ let offset = 0;
112
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, {
113
+ acceptNode: (node) => {
114
+ if (node.nodeType === Node.TEXT_NODE)
115
+ return NodeFilter.FILTER_ACCEPT;
116
+ if (node.nodeType === Node.ELEMENT_NODE &&
117
+ node.hasAttribute(MENTION_ATTR)) {
118
+ return NodeFilter.FILTER_ACCEPT;
119
+ }
120
+ // Skip non-mention element nodes but traverse their children
121
+ return NodeFilter.FILTER_SKIP;
122
+ },
123
+ });
124
+ let node;
125
+ while ((node = walker.nextNode())) {
126
+ if (node === range.startContainer) {
127
+ // We're in a text node that contains the caret
128
+ return offset + range.startOffset;
129
+ }
130
+ if (node.nodeType === Node.TEXT_NODE) {
131
+ // Check if the range start is within a parent that is this text node's parent
132
+ if (node.parentNode === range.startContainer) {
133
+ // Range.startContainer is the parent element, startOffset is child index
134
+ // Check if this text node comes before the caret child index
135
+ const children = Array.from(range.startContainer.childNodes);
136
+ const nodeIndex = children.indexOf(node);
137
+ if (nodeIndex < range.startOffset) {
138
+ offset += (node.textContent || "").length;
139
+ }
140
+ else {
141
+ return offset;
142
+ }
143
+ }
144
+ else {
145
+ offset += (node.textContent || "").length;
146
+ }
147
+ }
148
+ else if (node.nodeType === Node.ELEMENT_NODE &&
149
+ node.hasAttribute(MENTION_ATTR)) {
150
+ // Check if caret is right after this mention element
151
+ if (range.startContainer === container ||
152
+ range.startContainer === node.parentNode) {
153
+ const children = Array.from(range.startContainer.childNodes);
154
+ const nodeIndex = children.indexOf(node);
155
+ if (nodeIndex < range.startOffset) {
156
+ node.getAttribute(MENTION_ATTR) || "";
157
+ const label = node.getAttribute("data-mention-label") || "";
158
+ const trigger = node.getAttribute("data-mention-trigger") || "";
159
+ offset += trigger.length + label.length;
160
+ }
161
+ else {
162
+ return offset;
163
+ }
164
+ }
165
+ else {
166
+ const trigger = node.getAttribute("data-mention-trigger") || "";
167
+ const label = node.getAttribute("data-mention-label") || "";
168
+ offset += trigger.length + label.length;
169
+ }
170
+ }
171
+ }
172
+ // Caret might be at the very end
173
+ if (range.startContainer === container) {
174
+ return offset;
175
+ }
176
+ return offset;
177
+ };
178
+ /**
179
+ * Parse the DOM of a contentEditable container back into segments.
180
+ * Text nodes become TextSegments, elements with MENTION_ATTR become MentionSegments.
181
+ */
182
+ const parseDOMToSegments = (container, mentionMap) => {
183
+ const segments = [];
184
+ const processNode = (node) => {
185
+ if (node.nodeType === Node.TEXT_NODE) {
186
+ const text = node.textContent || "";
187
+ if (text) {
188
+ segments.push({ type: "text", text });
189
+ }
190
+ }
191
+ else if (node.nodeType === Node.ELEMENT_NODE) {
192
+ const el = node;
193
+ if (el.hasAttribute(MENTION_ATTR)) {
194
+ const id = el.getAttribute(MENTION_ATTR) || "";
195
+ const data = mentionMap.get(id);
196
+ if (data) {
197
+ segments.push({ type: "mention", data: { ...data } });
198
+ }
199
+ // Don't recurse into mention nodes
200
+ return;
201
+ }
202
+ // Handle <br> as newline
203
+ if (el.tagName === "BR") {
204
+ segments.push({ type: "text", text: "\n" });
205
+ return;
206
+ }
207
+ // Handle block-level elements that create newlines (div, p)
208
+ const isBlock = el.tagName === "DIV" || el.tagName === "P";
209
+ if (isBlock && segments.length > 0) {
210
+ // Add newline before block content (if not first)
211
+ const lastSeg = segments[segments.length - 1];
212
+ if (lastSeg.type === "text" && !lastSeg.text.endsWith("\n")) {
213
+ segments.push({ type: "text", text: "\n" });
214
+ }
215
+ }
216
+ // Recurse into children
217
+ for (const child of Array.from(el.childNodes)) {
218
+ processNode(child);
219
+ }
220
+ }
221
+ };
222
+ for (const child of Array.from(container.childNodes)) {
223
+ processNode(child);
224
+ }
225
+ return normalizeSegments(segments);
226
+ };
227
+ /**
228
+ * Set the caret at a specific plain-text offset within a contentEditable container.
229
+ */
230
+ const setCaretAtOffset = (container, targetOffset) => {
231
+ const sel = window.getSelection();
232
+ if (!sel)
233
+ return;
234
+ let remaining = targetOffset;
235
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, {
236
+ acceptNode: (node) => {
237
+ if (node.nodeType === Node.TEXT_NODE)
238
+ return NodeFilter.FILTER_ACCEPT;
239
+ if (node.nodeType === Node.ELEMENT_NODE &&
240
+ node.hasAttribute(MENTION_ATTR)) {
241
+ return NodeFilter.FILTER_ACCEPT;
242
+ }
243
+ return NodeFilter.FILTER_SKIP;
244
+ },
245
+ });
246
+ let node;
247
+ while ((node = walker.nextNode())) {
248
+ if (node.nodeType === Node.TEXT_NODE) {
249
+ const len = (node.textContent || "").length;
250
+ if (remaining <= len) {
251
+ const range = document.createRange();
252
+ range.setStart(node, remaining);
253
+ range.collapse(true);
254
+ sel.removeAllRanges();
255
+ sel.addRange(range);
256
+ return;
257
+ }
258
+ remaining -= len;
259
+ }
260
+ else if (node.nodeType === Node.ELEMENT_NODE &&
261
+ node.hasAttribute(MENTION_ATTR)) {
262
+ const trigger = node.getAttribute("data-mention-trigger") || "";
263
+ const label = node.getAttribute("data-mention-label") || "";
264
+ const mentionLen = trigger.length + label.length;
265
+ if (remaining <= mentionLen) {
266
+ // Place caret after this mention
267
+ const range = document.createRange();
268
+ range.setStartAfter(node);
269
+ range.collapse(true);
270
+ sel.removeAllRanges();
271
+ sel.addRange(range);
272
+ return;
273
+ }
274
+ remaining -= mentionLen;
275
+ }
276
+ }
277
+ // If we didn't place the caret, put it at the end
278
+ const range = document.createRange();
279
+ range.selectNodeContents(container);
280
+ range.collapse(false);
281
+ sel.removeAllRanges();
282
+ sel.addRange(range);
283
+ };
284
+
285
+ export { MENTION_ATTR, getPlainTextOffset, insertMentionIntoSegments, normalizeSegments, parseDOMToSegments, serializeSegments, serializeSegmentsMasked, setCaretAtOffset };
@@ -0,0 +1,3 @@
1
+ export { Mention } from "./Mention";
2
+ export type { MentionProps, MentionSuggestion, MentionTrigger, MentionSize, MentionData, ContentSegment, TextSegment, MentionSegment, MentionTheme, MentionThemeOverrides, } from "./Mention.types";
3
+ export { mentionTheme } from "./Mention.theme";
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import { RadioProps } from "./Radio.types";
3
- /**
4
- * Radio component for selecting one option from a group
5
- */
6
- export declare const Radio: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>>;
3
+ export declare const Radio: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>> & {
4
+ Group: React.ForwardRefExoticComponent<import("./Radio.types").RadioGroupProps & React.RefAttributes<HTMLFieldSetElement>>;
5
+ };
@@ -1,29 +1,42 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import React__default, { useState } from 'react';
2
+ import React__default, { useId } from 'react';
3
3
  import { radioTheme } from './Radio.theme.js';
4
- import { FormLabel } from '../FormLabel/FormLabel.js';
4
+ import { formLabelTheme } from '../FormLabel/FormLabel.theme.js';
5
5
  import { cn } from '../../../utils/cn.js';
6
+ import { useRadioGroupContext } from './RadioContext.js';
7
+ import { RadioGroup } from './RadioGroup.js';
6
8
 
7
9
  /**
8
10
  * Radio component for selecting one option from a group
9
11
  */
10
- const Radio = React__default.forwardRef(({ id, name, value, checked: controlledChecked, onChange, label, description, state = "default", size = "md", className, ...restProps }, ref) => {
11
- const [internalChecked, setInternalChecked] = useState(false);
12
- // Determine if component is controlled or uncontrolled
13
- const isControlled = controlledChecked !== undefined;
14
- const isChecked = isControlled ? controlledChecked : internalChecked;
15
- // Derive state flags
12
+ const RadioComponent = React__default.forwardRef(({ id: idProp, name: nameProp, value, checked: checkedProp, defaultChecked, onChange, label, description, state: stateProp = "default", size: sizeProp = "md", className, ...restProps }, ref) => {
13
+ var _a, _b, _c, _d;
14
+ const autoId = useId();
15
+ const groupContext = useRadioGroupContext();
16
+ // Resolve props from group context or individual props
17
+ const id = idProp !== null && idProp !== void 0 ? idProp : autoId;
18
+ const name = (_b = (_a = groupContext === null || groupContext === void 0 ? void 0 : groupContext.name) !== null && _a !== void 0 ? _a : nameProp) !== null && _b !== void 0 ? _b : autoId;
19
+ const size = (_c = groupContext === null || groupContext === void 0 ? void 0 : groupContext.size) !== null && _c !== void 0 ? _c : sizeProp;
20
+ const state = stateProp === "disabled" ? "disabled" : ((_d = groupContext === null || groupContext === void 0 ? void 0 : groupContext.state) !== null && _d !== void 0 ? _d : stateProp);
16
21
  const isDisabled = state === "disabled";
22
+ // Determine checked state
23
+ const isInGroup = groupContext !== undefined;
24
+ const checked = isInGroup ? groupContext.value === value : checkedProp;
25
+ const isControlled = checked !== undefined;
17
26
  const handleChange = (e) => {
18
27
  if (isDisabled)
19
28
  return;
20
- if (!isControlled) {
21
- setInternalChecked(e.target.checked);
29
+ if (isInGroup) {
30
+ groupContext.onChange(value);
22
31
  }
23
32
  onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked, value);
24
33
  };
25
- return (jsxs("div", { className: cn(radioTheme.baseStyle, className), ...restProps, children: [jsxs("div", { className: cn(radioTheme.inputContainerStyle, radioTheme.sizes[size]), children: [jsx("input", { ref: ref, type: "radio", id: id, name: name, value: value, checked: isChecked, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "data-state": isDisabled ? "disabled" : "default", className: cn(radioTheme.inputStyle, radioTheme.sizes[size]) }), isChecked && (jsx("div", { className: cn(radioTheme.dotStyle, size === "sm" ? "size-2" : "size-3", "opacity-100") }))] }), (label || description) && (jsxs("div", { className: "cursor-pointer", children: [label && (jsx(FormLabel, { htmlFor: id, className: "!mb-0", state: state, children: label })), description && (jsx("div", { id: `${id}-description`, className: radioTheme.descriptionStyle, children: description }))] }))] }));
34
+ const inputProps = isControlled
35
+ ? { checked }
36
+ : { defaultChecked };
37
+ return (jsxs("div", { className: cn(radioTheme.baseStyle, className), ...restProps, children: [jsxs("div", { className: cn(radioTheme.inputContainerStyle, radioTheme.sizes[size]), children: [jsx("input", { ref: ref, type: "radio", id: id, name: name, value: value, ...inputProps, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "data-state": isDisabled ? "disabled" : "default", className: cn("peer", radioTheme.inputStyle, radioTheme.sizes[size]) }), jsx("div", { className: cn(radioTheme.dotStyle, size === "sm" ? "size-2.5 top-0.25" : "size-3") })] }), (label || description) && (jsxs("label", { htmlFor: id, className: cn("cursor-pointer", isDisabled && "cursor-not-allowed"), children: [label && (jsx("span", { className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[state], "mb-0"), children: label })), description && (jsx("div", { id: `${id}-description`, className: radioTheme.descriptionStyle, children: description }))] }))] }));
26
38
  });
27
- Radio.displayName = "Radio";
39
+ RadioComponent.displayName = "Radio";
40
+ const Radio = Object.assign(RadioComponent, { Group: RadioGroup });
28
41
 
29
42
  export { Radio };
@@ -4,13 +4,42 @@
4
4
  const radioTheme = {
5
5
  baseStyle: "relative flex items-start gap-3",
6
6
  inputContainerStyle: "relative flex-shrink-0 flex items-center justify-center",
7
- inputStyle: "peer appearance-none rounded-full border-2 border-[var(--color-border)] bg-white checked:border-[var(--color-primary)] checked:bg-white disabled:border-[var(--color-border)] disabled:bg-[var(--color-background-disabled)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-primary-600)] checked:outline-2 checked:outline-[var(--color-primary-100)] checked:outline-offset-1 transition-all duration-400 data-[state=disabled]:outline-0 data-[state=disabled]:border-[var(--color-border)] data-[state=disabled]:bg-[var(--color-background-disabled)] data-[state=disabled]:cursor-not-allowed",
8
- dotStyle: "absolute pointer-events-none rounded-full bg-[var(--color-primary)] opacity-0 transition-all duration-400 peer-data-[state=disabled]:saturate-0 peer-data-[state=disabled]:opacity-80",
9
- descriptionStyle: "text-sm text-[var(--color-text-secondary)] mt-1",
7
+ // Input styles with light and dark mode variants
8
+ inputStyle: "col-start-1 row-start-1 appearance-none rounded-full border-2 transition-all duration-400 " +
9
+ // Default state - light
10
+ "border-[var(--color-border)] bg-[var(--color-surface)] " +
11
+ // Default state - dark
12
+ "dark:bg-[var(--color-background-secondary)] " +
13
+ // Checked state - light
14
+ "checked:border-[var(--color-primary)] " +
15
+ // Checked state - dark
16
+ " " +
17
+ // Checked outline - light
18
+ "checked:outline-2 checked:outline-[var(--color-primary-100)] checked:outline-offset-1 " +
19
+ // Checked outline - dark
20
+ "dark:checked:outline-[var(--color-primary-900)] " +
21
+ // Focus visible - light
22
+ "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-primary-600)] " +
23
+ // Focus visible - dark
24
+ "dark:focus-visible:outline-[var(--color-primary-500)] " +
25
+ // Disabled state - light
26
+ "disabled:bg-[var(--color-background-disabled)] disabled:checked:outline-0 " +
27
+ "data-[state=disabled]:border-[var(--color-border)] data-[state=disabled]:bg-[var(--color-background-disabled)] data-[state=disabled]:cursor-not-allowed " +
28
+ // Disabled state - dark
29
+ "dark:disabled:bg-[var(--color-neutral-700)] dark:disabled:border-[var(--color-neutral-600)] " +
30
+ "dark:data-[state=disabled]:bg-[var(--color-neutral-700)] dark:data-[state=disabled]:border-[var(--color-neutral-600)]",
31
+ dotStyle: "absolute inset-0 m-auto pointer-events-none rounded-full bg-[var(--color-primary)] opacity-0 transition-all duration-400 peer-checked:opacity-100 peer-data-[state=disabled]:saturate-0 peer-data-[state=disabled]:peer-checked:opacity-80",
32
+ descriptionStyle: "text-base text-[var(--color-text-secondary)]/80 mt-0.5",
10
33
  sizes: {
11
34
  sm: "size-5 mt-0.25",
12
- md: "size-6"
13
- }
35
+ md: "size-6",
36
+ },
37
+ // Group styles
38
+ groupStyle: "flex flex-col gap-1.5",
39
+ groupHorizontalStyle: "flex-row flex-wrap gap-x-6 gap-y-3",
40
+ groupDescriptionStyle: "text-base text-[var(--color-text-secondary)]/80 -mt-0.5 mb-1",
41
+ groupErrorStyle: "text-base text-[var(--color-danger)] mt-1.5",
42
+ groupItemsStyle: "flex flex-col gap-3",
14
43
  };
15
44
 
16
45
  export { radioTheme };
@@ -7,21 +7,42 @@ export type RadioState = 'default' | 'disabled';
7
7
  * Size variants for the radio component
8
8
  */
9
9
  export type RadioSize = 'sm' | 'md';
10
+ /**
11
+ * Orientation for Radio.Group layout
12
+ */
13
+ export type RadioGroupOrientation = 'vertical' | 'horizontal';
10
14
  /**
11
15
  * Radio component props
12
16
  */
13
17
  export interface RadioProps extends Omit<React.HTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {
14
- id: string;
15
- name: string;
16
- value: string;
18
+ id?: string;
19
+ name?: string;
20
+ value: string | number;
17
21
  checked?: boolean;
18
- onChange?: (checked: boolean, value: string) => void;
22
+ onChange?: (checked: boolean, value: string | number) => void;
19
23
  label?: string;
20
24
  description?: string;
21
25
  state?: RadioState;
22
26
  size?: RadioSize;
23
27
  className?: string;
24
28
  }
29
+ /**
30
+ * Radio.Group component props
31
+ */
32
+ export interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, 'onChange'> {
33
+ value?: string | number;
34
+ defaultValue?: string | number;
35
+ onChange?: (value: string | number) => void;
36
+ name?: string;
37
+ size?: RadioSize;
38
+ state?: RadioState;
39
+ orientation?: RadioGroupOrientation;
40
+ label?: string;
41
+ description?: string;
42
+ error?: string;
43
+ required?: boolean;
44
+ className?: string;
45
+ }
25
46
  /**
26
47
  * Radio theme configuration
27
48
  */
@@ -32,4 +53,9 @@ export interface RadioTheme {
32
53
  dotStyle: string;
33
54
  descriptionStyle: string;
34
55
  sizes: Record<RadioSize, string>;
56
+ groupStyle?: string;
57
+ groupHorizontalStyle?: string;
58
+ groupDescriptionStyle?: string;
59
+ groupErrorStyle?: string;
60
+ groupItemsStyle?: string;
35
61
  }