entangle-ui 0.6.3 → 0.8.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 (446) hide show
  1. package/CHANGELOG.md +219 -0
  2. package/dist/esm/assets/src/components/controls/ColorPicker/{ColorPicker.css.ts.vanilla-Do5nbdgO.css → ColorPicker.css.ts.vanilla-D7ccNVQx.css} +14 -0
  3. package/dist/esm/assets/src/components/controls/Select/{Select.css.ts.vanilla-D4C059Ua.css → Select.css.ts.vanilla-oZnFUorL.css} +11 -0
  4. package/dist/esm/assets/src/components/controls/Slider/{Slider.css.ts.vanilla-C5SJ_7A1.css → Slider.css.ts.vanilla-Cqm3fQ0S.css} +14 -0
  5. package/dist/esm/assets/src/components/controls/TreeView/{TreeNode.css.ts.vanilla-D3ylUhuW.css → TreeNode.css.ts.vanilla-B_f8pUb8.css} +5 -0
  6. package/dist/esm/assets/src/components/controls/VectorInput/{VectorInput.css.ts.vanilla-BJma3iQ4.css → VectorInput.css.ts.vanilla-BpoiuhDA.css} +9 -0
  7. package/dist/esm/assets/src/components/editor/ChatPanel/{ChatPanel.css.ts.vanilla-DPIGnZ4A.css → ChatPanel.css.ts.vanilla-CLn8idfz.css} +180 -116
  8. package/dist/esm/assets/src/components/editor/PropertyInspector/{PropertySection.css.ts.vanilla-DJBtY_xk.css → PropertySection.css.ts.vanilla-DK12opZc.css} +5 -0
  9. package/dist/esm/assets/src/components/editor/TransformControl/TransformControl.css.ts.vanilla-H-iW-T0s.css +82 -0
  10. package/dist/esm/assets/src/components/feedback/Alert/Alert.css.ts.vanilla-CRAI-xHx.css +84 -0
  11. package/dist/esm/assets/src/components/feedback/Dialog/{Dialog.css.ts.vanilla-BrXTOHwS.css → Dialog.css.ts.vanilla-BxBFePLG.css} +8 -0
  12. package/dist/esm/assets/src/components/feedback/EmptyState/EmptyState.css.ts.vanilla-B_TWsTOW.css +58 -0
  13. package/dist/esm/assets/src/components/feedback/ProgressBar/ProgressBar.css.ts.vanilla-4WLVf1hx.css +152 -0
  14. package/dist/esm/assets/src/components/feedback/Skeleton/Skeleton.css.ts.vanilla-Dk2_SSsC.css +39 -0
  15. package/dist/esm/assets/src/components/feedback/Spinner/Spinner.css.ts.vanilla-DEUewqdK.css +80 -0
  16. package/dist/esm/assets/src/components/feedback/Toast/{ToastItem.css.ts.vanilla-D6UuPKAj.css → ToastItem.css.ts.vanilla-DUeXqiaH.css} +9 -0
  17. package/dist/esm/assets/src/components/form/{InputWrapper.css.ts.vanilla-Bl7u62PI.css → InputWrapper.css.ts.vanilla-CLpKbEjq.css} +5 -0
  18. package/dist/esm/assets/src/components/layout/Accordion/{Accordion.css.ts.vanilla-Ck5Yew0e.css → Accordion.css.ts.vanilla-CJQum8px.css} +8 -0
  19. package/dist/esm/assets/src/components/layout/Divider/Divider.css.ts.vanilla-CPvd_RW9.css +72 -0
  20. package/dist/esm/assets/src/components/layout/ListItem/ListItem.css.ts.vanilla-BwAZrX2f.css +68 -0
  21. package/dist/esm/assets/src/components/layout/PageHeader/PageHeader.css.ts.vanilla-DdbyyWAN.css +70 -0
  22. package/dist/esm/assets/src/components/layout/SplitPane/{SplitPane.css.ts.vanilla-BFxdvwyI.css → SplitPane.css.ts.vanilla-BGFZ7zDa.css} +5 -0
  23. package/dist/esm/assets/src/components/navigation/Breadcrumbs/Breadcrumbs.css.ts.vanilla-DZ4jm_bw.css +128 -0
  24. package/dist/esm/assets/src/components/navigation/SegmentedControl/SegmentedControl.css.ts.vanilla-BHOnDD2B.css +197 -0
  25. package/dist/esm/assets/src/components/navigation/Tabs/{Tabs.css.ts.vanilla-D7RGpDPC.css → Tabs.css.ts.vanilla-CQucokdg.css} +14 -0
  26. package/dist/esm/assets/src/components/primitives/Avatar/Avatar.css.ts.vanilla-jG5hUudL.css +149 -0
  27. package/dist/esm/assets/src/components/primitives/Badge/Badge.css.ts.vanilla-DxCUcxYW.css +95 -0
  28. package/dist/esm/assets/src/components/primitives/Button/{Button.css.ts.vanilla-CT592JL7.css → Button.css.ts.vanilla-DXJcIb94.css} +9 -0
  29. package/dist/esm/assets/src/components/primitives/Checkbox/{Checkbox.css.ts.vanilla-dvrGPiPs.css → Checkbox.css.ts.vanilla-DNa-Gqto.css} +5 -0
  30. package/dist/esm/assets/src/components/primitives/Code/Code.css.ts.vanilla-mayBqLDM.css +19 -0
  31. package/dist/esm/assets/src/components/primitives/Collapsible/{Collapsible.css.ts.vanilla-C1rYV-JT.css → Collapsible.css.ts.vanilla-Dz4Vy-ob.css} +8 -0
  32. package/dist/esm/assets/src/components/primitives/IconButton/{IconButton.css.ts.vanilla-C-xAQoR3.css → IconButton.css.ts.vanilla-CPkPZJRU.css} +9 -0
  33. package/dist/esm/assets/src/components/primitives/Kbd/Kbd.css.ts.vanilla-Co2-Rxgv.css +60 -0
  34. package/dist/esm/assets/src/components/primitives/Link/Link.css.ts.vanilla-q-bqHUOF.css +82 -0
  35. package/dist/esm/assets/src/components/primitives/Popover/{Popover.css.ts.vanilla-DW6aAr57.css → Popover.css.ts.vanilla-KCfDIs4G.css} +5 -0
  36. package/dist/esm/assets/src/components/primitives/Radio/Radio.css.ts.vanilla-CPjdD-ZM.css +127 -0
  37. package/dist/esm/assets/src/components/primitives/Switch/{Switch.css.ts.vanilla-CxqwUToB.css → Switch.css.ts.vanilla-CDSt-M5W.css} +5 -0
  38. package/dist/esm/assets/src/components/primitives/TextArea/TextArea.css.ts.vanilla-M9l1t4HR.css +90 -0
  39. package/dist/esm/assets/src/components/primitives/VisuallyHidden/VisuallyHidden.css.ts.vanilla-DBulVh4Q.css +36 -0
  40. package/dist/esm/assets/src/theme/{darkTheme.css.ts.vanilla-DCe89yCJ.css → darkTheme.css.ts.vanilla-ab1WD4dr.css} +3 -0
  41. package/dist/esm/assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css +21 -0
  42. package/dist/esm/assets/src/theme/lightTheme.css.ts.vanilla-OaRI_wIc.css +99 -0
  43. package/dist/esm/assets/src/utils/animations.css.ts.vanilla-CRLFsBSV.css +72 -0
  44. package/dist/esm/components/Icons/AddIcon.js +30 -0
  45. package/dist/esm/components/Icons/AddIcon.js.map +1 -0
  46. package/dist/esm/components/Icons/AiChatIcon.js +31 -0
  47. package/dist/esm/components/Icons/AiChatIcon.js.map +1 -0
  48. package/dist/esm/components/Icons/AiSparklesIcon.js +31 -0
  49. package/dist/esm/components/Icons/AiSparklesIcon.js.map +1 -0
  50. package/dist/esm/components/Icons/ArrowDownIcon.js +30 -0
  51. package/dist/esm/components/Icons/ArrowDownIcon.js.map +1 -0
  52. package/dist/esm/components/Icons/ArrowLeftIcon.js +30 -0
  53. package/dist/esm/components/Icons/ArrowLeftIcon.js.map +1 -0
  54. package/dist/esm/components/Icons/ArrowRightIcon.js +30 -0
  55. package/dist/esm/components/Icons/ArrowRightIcon.js.map +1 -0
  56. package/dist/esm/components/Icons/ArrowUpIcon.js +30 -0
  57. package/dist/esm/components/Icons/ArrowUpIcon.js.map +1 -0
  58. package/dist/esm/components/Icons/BookmarkIcon.js +30 -0
  59. package/dist/esm/components/Icons/BookmarkIcon.js.map +1 -0
  60. package/dist/esm/components/Icons/CalendarIcon.js +30 -0
  61. package/dist/esm/components/Icons/CalendarIcon.js.map +1 -0
  62. package/dist/esm/components/Icons/ClockIcon.js +30 -0
  63. package/dist/esm/components/Icons/ClockIcon.js.map +1 -0
  64. package/dist/esm/components/Icons/CodeIcon.js +30 -0
  65. package/dist/esm/components/Icons/CodeIcon.js.map +1 -0
  66. package/dist/esm/components/Icons/CopyIcon.js +30 -0
  67. package/dist/esm/components/Icons/CopyIcon.js.map +1 -0
  68. package/dist/esm/components/Icons/CutIcon.js +30 -0
  69. package/dist/esm/components/Icons/CutIcon.js.map +1 -0
  70. package/dist/esm/components/Icons/DownloadIcon.js +30 -0
  71. package/dist/esm/components/Icons/DownloadIcon.js.map +1 -0
  72. package/dist/esm/components/Icons/EditIcon.js +30 -0
  73. package/dist/esm/components/Icons/EditIcon.js.map +1 -0
  74. package/dist/esm/components/Icons/ErrorIcon.js +30 -0
  75. package/dist/esm/components/Icons/ErrorIcon.js.map +1 -0
  76. package/dist/esm/components/Icons/EyeIcon.js +30 -0
  77. package/dist/esm/components/Icons/EyeIcon.js.map +1 -0
  78. package/dist/esm/components/Icons/FilterIcon.js +30 -0
  79. package/dist/esm/components/Icons/FilterIcon.js.map +1 -0
  80. package/dist/esm/components/Icons/FolderIcon.js +30 -0
  81. package/dist/esm/components/Icons/FolderIcon.js.map +1 -0
  82. package/dist/esm/components/Icons/FullscreenIcon.js +30 -0
  83. package/dist/esm/components/Icons/FullscreenIcon.js.map +1 -0
  84. package/dist/esm/components/Icons/GridIcon.js +30 -0
  85. package/dist/esm/components/Icons/GridIcon.js.map +1 -0
  86. package/dist/esm/components/Icons/HeartIcon.js +30 -0
  87. package/dist/esm/components/Icons/HeartIcon.js.map +1 -0
  88. package/dist/esm/components/Icons/HelpIcon.js +30 -0
  89. package/dist/esm/components/Icons/HelpIcon.js.map +1 -0
  90. package/dist/esm/components/Icons/HomeIcon.js +30 -0
  91. package/dist/esm/components/Icons/HomeIcon.js.map +1 -0
  92. package/dist/esm/components/Icons/InfoIcon.js +30 -0
  93. package/dist/esm/components/Icons/InfoIcon.js.map +1 -0
  94. package/dist/esm/components/Icons/LinkIcon.js +30 -0
  95. package/dist/esm/components/Icons/LinkIcon.js.map +1 -0
  96. package/dist/esm/components/Icons/ListIcon.js +30 -0
  97. package/dist/esm/components/Icons/ListIcon.js.map +1 -0
  98. package/dist/esm/components/Icons/LockIcon.js +30 -0
  99. package/dist/esm/components/Icons/LockIcon.js.map +1 -0
  100. package/dist/esm/components/Icons/MaximizeIcon.js +30 -0
  101. package/dist/esm/components/Icons/MaximizeIcon.js.map +1 -0
  102. package/dist/esm/components/Icons/MenuIcon.js +30 -0
  103. package/dist/esm/components/Icons/MenuIcon.js.map +1 -0
  104. package/dist/esm/components/Icons/MinimizeIcon.js +30 -0
  105. package/dist/esm/components/Icons/MinimizeIcon.js.map +1 -0
  106. package/dist/esm/components/Icons/PasteIcon.js +30 -0
  107. package/dist/esm/components/Icons/PasteIcon.js.map +1 -0
  108. package/dist/esm/components/Icons/PlayIcon.js +30 -0
  109. package/dist/esm/components/Icons/PlayIcon.js.map +1 -0
  110. package/dist/esm/components/Icons/RedoIcon.js +30 -0
  111. package/dist/esm/components/Icons/RedoIcon.js.map +1 -0
  112. package/dist/esm/components/Icons/RefreshIcon.js +30 -0
  113. package/dist/esm/components/Icons/RefreshIcon.js.map +1 -0
  114. package/dist/esm/components/Icons/RobotIcon.js +30 -0
  115. package/dist/esm/components/Icons/RobotIcon.js.map +1 -0
  116. package/dist/esm/components/Icons/SaveIcon.js +30 -0
  117. package/dist/esm/components/Icons/SaveIcon.js.map +1 -0
  118. package/dist/esm/components/Icons/SearchIcon.js +30 -0
  119. package/dist/esm/components/Icons/SearchIcon.js.map +1 -0
  120. package/dist/esm/components/Icons/SettingsIcon.js +30 -0
  121. package/dist/esm/components/Icons/SettingsIcon.js.map +1 -0
  122. package/dist/esm/components/Icons/SortIcon.js +30 -0
  123. package/dist/esm/components/Icons/SortIcon.js.map +1 -0
  124. package/dist/esm/components/Icons/StarIcon.js +30 -0
  125. package/dist/esm/components/Icons/StarIcon.js.map +1 -0
  126. package/dist/esm/components/Icons/SuccessIcon.js +30 -0
  127. package/dist/esm/components/Icons/SuccessIcon.js.map +1 -0
  128. package/dist/esm/components/Icons/TagIcon.js +30 -0
  129. package/dist/esm/components/Icons/TagIcon.js.map +1 -0
  130. package/dist/esm/components/Icons/TrashIcon.js +30 -0
  131. package/dist/esm/components/Icons/TrashIcon.js.map +1 -0
  132. package/dist/esm/components/Icons/UndoIcon.js +30 -0
  133. package/dist/esm/components/Icons/UndoIcon.js.map +1 -0
  134. package/dist/esm/components/Icons/UnlockIcon.js +30 -0
  135. package/dist/esm/components/Icons/UnlockIcon.js.map +1 -0
  136. package/dist/esm/components/Icons/UploadIcon.js +30 -0
  137. package/dist/esm/components/Icons/UploadIcon.js.map +1 -0
  138. package/dist/esm/components/Icons/UserIcon.js +30 -0
  139. package/dist/esm/components/Icons/UserIcon.js.map +1 -0
  140. package/dist/esm/components/Icons/WarningIcon.js +30 -0
  141. package/dist/esm/components/Icons/WarningIcon.js.map +1 -0
  142. package/dist/esm/components/Icons/ZoomInIcon.js +30 -0
  143. package/dist/esm/components/Icons/ZoomInIcon.js.map +1 -0
  144. package/dist/esm/components/Icons/ZoomOutIcon.js +30 -0
  145. package/dist/esm/components/Icons/ZoomOutIcon.js.map +1 -0
  146. package/dist/esm/components/controls/ColorPicker/ColorPicker.css.js +1 -1
  147. package/dist/esm/components/controls/NumberInput/useNumberInput.js +2 -1
  148. package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -1
  149. package/dist/esm/components/controls/Select/Select.css.js +1 -1
  150. package/dist/esm/components/controls/Slider/Slider.css.js +1 -1
  151. package/dist/esm/components/controls/TreeView/TreeNode.css.js +1 -1
  152. package/dist/esm/components/controls/VectorInput/VectorInput.css.js +1 -1
  153. package/dist/esm/components/controls/VectorInput/VectorInput.js +1 -0
  154. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
  155. package/dist/esm/components/editor/ChatPanel/ChatInput.js +18 -7
  156. package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
  157. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js +268 -0
  158. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -0
  159. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +17 -13
  160. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  161. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js +23 -15
  162. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
  163. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js +73 -63
  164. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js.map +1 -1
  165. package/dist/esm/components/editor/ChatPanel/ChatPanel.js +15 -3
  166. package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
  167. package/dist/esm/components/editor/ChatPanel/useChatInput.js +3 -3
  168. package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
  169. package/dist/esm/components/editor/ChatPanel/useChatScroll.js +53 -2
  170. package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
  171. package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js +1 -1
  172. package/dist/esm/components/editor/TransformControl/TransformControl.css.js +11 -0
  173. package/dist/esm/components/editor/TransformControl/TransformControl.css.js.map +1 -0
  174. package/dist/esm/components/editor/TransformControl/TransformControl.js +158 -0
  175. package/dist/esm/components/editor/TransformControl/TransformControl.js.map +1 -0
  176. package/dist/esm/components/feedback/Alert/Alert.css.js +16 -0
  177. package/dist/esm/components/feedback/Alert/Alert.css.js.map +1 -0
  178. package/dist/esm/components/feedback/Alert/Alert.js +90 -0
  179. package/dist/esm/components/feedback/Alert/Alert.js.map +1 -0
  180. package/dist/esm/components/feedback/Alert/AlertActions.js +30 -0
  181. package/dist/esm/components/feedback/Alert/AlertActions.js.map +1 -0
  182. package/dist/esm/components/feedback/Alert/AlertDescription.js +28 -0
  183. package/dist/esm/components/feedback/Alert/AlertDescription.js.map +1 -0
  184. package/dist/esm/components/feedback/Alert/AlertTitle.js +28 -0
  185. package/dist/esm/components/feedback/Alert/AlertTitle.js.map +1 -0
  186. package/dist/esm/components/feedback/Dialog/Dialog.css.js +1 -1
  187. package/dist/esm/components/feedback/Dialog/Dialog.js +4 -12
  188. package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -1
  189. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +10 -3
  190. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -1
  191. package/dist/esm/components/feedback/EmptyState/EmptyState.css.js +13 -0
  192. package/dist/esm/components/feedback/EmptyState/EmptyState.css.js.map +1 -0
  193. package/dist/esm/components/feedback/EmptyState/EmptyState.js +43 -0
  194. package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -0
  195. package/dist/esm/components/feedback/ProgressBar/CircularProgress.js +113 -0
  196. package/dist/esm/components/feedback/ProgressBar/CircularProgress.js.map +1 -0
  197. package/dist/esm/components/feedback/ProgressBar/ProgressBar.css.js +22 -0
  198. package/dist/esm/components/feedback/ProgressBar/ProgressBar.css.js.map +1 -0
  199. package/dist/esm/components/feedback/ProgressBar/ProgressBar.js +80 -0
  200. package/dist/esm/components/feedback/ProgressBar/ProgressBar.js.map +1 -0
  201. package/dist/esm/components/feedback/Skeleton/Skeleton.css.js +13 -0
  202. package/dist/esm/components/feedback/Skeleton/Skeleton.css.js.map +1 -0
  203. package/dist/esm/components/feedback/Skeleton/Skeleton.js +78 -0
  204. package/dist/esm/components/feedback/Skeleton/Skeleton.js.map +1 -0
  205. package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js +58 -0
  206. package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js.map +1 -0
  207. package/dist/esm/components/feedback/Spinner/Spinner.css.js +16 -0
  208. package/dist/esm/components/feedback/Spinner/Spinner.css.js.map +1 -0
  209. package/dist/esm/components/feedback/Spinner/Spinner.js +50 -0
  210. package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -0
  211. package/dist/esm/components/feedback/Toast/ToastItem.css.js +1 -1
  212. package/dist/esm/components/form/InputWrapper.css.js +1 -1
  213. package/dist/esm/components/layout/Accordion/Accordion.css.js +1 -1
  214. package/dist/esm/components/layout/Divider/Divider.css.js +9 -0
  215. package/dist/esm/components/layout/Divider/Divider.css.js.map +1 -0
  216. package/dist/esm/components/layout/Divider/Divider.js +51 -0
  217. package/dist/esm/components/layout/Divider/Divider.js.map +1 -0
  218. package/dist/esm/components/layout/ListItem/ListItem.css.js +10 -0
  219. package/dist/esm/components/layout/ListItem/ListItem.css.js.map +1 -0
  220. package/dist/esm/components/layout/ListItem/ListItem.js +45 -0
  221. package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -0
  222. package/dist/esm/components/layout/PageHeader/PageHeader.css.js +13 -0
  223. package/dist/esm/components/layout/PageHeader/PageHeader.css.js.map +1 -0
  224. package/dist/esm/components/layout/PageHeader/PageHeader.js +29 -0
  225. package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -0
  226. package/dist/esm/components/layout/ScrollArea/ScrollArea.js +17 -20
  227. package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -1
  228. package/dist/esm/components/layout/SplitPane/SplitPane.css.js +1 -1
  229. package/dist/esm/components/layout/SplitPane/SplitPane.js +2 -10
  230. package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -1
  231. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +49 -0
  232. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -0
  233. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +89 -0
  234. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -0
  235. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js +22 -0
  236. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js.map +1 -0
  237. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.css.js +16 -0
  238. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.css.js.map +1 -0
  239. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +152 -0
  240. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -0
  241. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.css.js +15 -0
  242. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.css.js.map +1 -0
  243. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js +240 -0
  244. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -0
  245. package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js +83 -0
  246. package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js.map +1 -0
  247. package/dist/esm/components/navigation/Tabs/Tab.js +0 -1
  248. package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -1
  249. package/dist/esm/components/navigation/Tabs/TabPanel.js +6 -3
  250. package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
  251. package/dist/esm/components/navigation/Tabs/Tabs.css.js +1 -1
  252. package/dist/esm/components/navigation/Tabs/Tabs.js +3 -1
  253. package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
  254. package/dist/esm/components/primitives/Avatar/Avatar.css.js +16 -0
  255. package/dist/esm/components/primitives/Avatar/Avatar.css.js.map +1 -0
  256. package/dist/esm/components/primitives/Avatar/Avatar.js +138 -0
  257. package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -0
  258. package/dist/esm/components/primitives/Avatar/AvatarGroup.js +81 -0
  259. package/dist/esm/components/primitives/Avatar/AvatarGroup.js.map +1 -0
  260. package/dist/esm/components/primitives/Badge/Badge.css.js +12 -0
  261. package/dist/esm/components/primitives/Badge/Badge.css.js.map +1 -0
  262. package/dist/esm/components/primitives/Badge/Badge.js +67 -0
  263. package/dist/esm/components/primitives/Badge/Badge.js.map +1 -0
  264. package/dist/esm/components/primitives/Button/Button.css.js +1 -1
  265. package/dist/esm/components/primitives/Checkbox/Checkbox.css.js +1 -1
  266. package/dist/esm/components/primitives/Checkbox/Checkbox.js +9 -1
  267. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
  268. package/dist/esm/components/primitives/Code/Code.css.js +7 -0
  269. package/dist/esm/components/primitives/Code/Code.css.js.map +1 -0
  270. package/dist/esm/components/primitives/Code/Code.js +24 -0
  271. package/dist/esm/components/primitives/Code/Code.js.map +1 -0
  272. package/dist/esm/components/primitives/Collapsible/Collapsible.css.js +1 -1
  273. package/dist/esm/components/primitives/IconButton/IconButton.css.js +1 -1
  274. package/dist/esm/components/primitives/Kbd/Kbd.css.js +9 -0
  275. package/dist/esm/components/primitives/Kbd/Kbd.css.js.map +1 -0
  276. package/dist/esm/components/primitives/Kbd/Kbd.js +46 -0
  277. package/dist/esm/components/primitives/Kbd/Kbd.js.map +1 -0
  278. package/dist/esm/components/primitives/Link/Link.css.js +11 -0
  279. package/dist/esm/components/primitives/Link/Link.css.js.map +1 -0
  280. package/dist/esm/components/primitives/Link/Link.js +160 -0
  281. package/dist/esm/components/primitives/Link/Link.js.map +1 -0
  282. package/dist/esm/components/primitives/Popover/Popover.css.js +1 -1
  283. package/dist/esm/components/primitives/Radio/Radio.css.js +18 -0
  284. package/dist/esm/components/primitives/Radio/Radio.css.js.map +1 -0
  285. package/dist/esm/components/primitives/Radio/Radio.js +109 -0
  286. package/dist/esm/components/primitives/Radio/Radio.js.map +1 -0
  287. package/dist/esm/components/primitives/Radio/RadioGroup.js +82 -0
  288. package/dist/esm/components/primitives/Radio/RadioGroup.js.map +1 -0
  289. package/dist/esm/components/primitives/Switch/Switch.css.js +1 -1
  290. package/dist/esm/components/primitives/TextArea/TextArea.css.js +10 -0
  291. package/dist/esm/components/primitives/TextArea/TextArea.css.js.map +1 -0
  292. package/dist/esm/components/primitives/TextArea/TextArea.js +97 -0
  293. package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -0
  294. package/dist/esm/components/primitives/Tooltip/Tooltip.js +7 -2
  295. package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -1
  296. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.css.js +7 -0
  297. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.css.js.map +1 -0
  298. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js +38 -0
  299. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js.map +1 -0
  300. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +2 -10
  301. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -1
  302. package/dist/esm/context/KeyboardContext.js +1 -0
  303. package/dist/esm/context/KeyboardContext.js.map +1 -1
  304. package/dist/esm/hooks/useClickOutside/useClickOutside.js +60 -0
  305. package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -0
  306. package/dist/esm/hooks/useClipboard/useClipboard.js +147 -0
  307. package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -0
  308. package/dist/esm/hooks/useControlledState/useControlledState.js +75 -0
  309. package/dist/esm/hooks/useControlledState/useControlledState.js.map +1 -0
  310. package/dist/esm/hooks/useDisclosure/useDisclosure.js +49 -0
  311. package/dist/esm/hooks/useDisclosure/useDisclosure.js.map +1 -0
  312. package/dist/esm/{components/feedback/Dialog → hooks/useFocusTrap}/useFocusTrap.js +7 -7
  313. package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -0
  314. package/dist/esm/hooks/useHotkey/useHotkey.js +203 -0
  315. package/dist/esm/hooks/useHotkey/useHotkey.js.map +1 -0
  316. package/dist/esm/hooks/useKeyboard/useKeyboard.js +56 -0
  317. package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -0
  318. package/dist/esm/hooks/useKeyboard/utils.js +56 -0
  319. package/dist/esm/hooks/useKeyboard/utils.js.map +1 -0
  320. package/dist/esm/hooks/useMergedRef/useMergedRef.js +39 -0
  321. package/dist/esm/hooks/useMergedRef/useMergedRef.js.map +1 -0
  322. package/dist/esm/hooks/useResizeObserver/useResizeObserver.js +75 -0
  323. package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -0
  324. package/dist/esm/hooks/useTheme/useTheme.js +198 -0
  325. package/dist/esm/hooks/useTheme/useTheme.js.map +1 -0
  326. package/dist/esm/index.js +50 -1
  327. package/dist/esm/index.js.map +1 -1
  328. package/dist/esm/theme/ThemeProvider.js +17 -3
  329. package/dist/esm/theme/ThemeProvider.js.map +1 -1
  330. package/dist/esm/theme/contract.css.js +1 -1
  331. package/dist/esm/theme/createLightTheme.js +29 -0
  332. package/dist/esm/theme/createLightTheme.js.map +1 -0
  333. package/dist/esm/theme/darkTheme.css.js +2 -2
  334. package/dist/esm/theme/darkThemeValues.js +155 -0
  335. package/dist/esm/theme/darkThemeValues.js.map +1 -0
  336. package/dist/esm/theme/globalScrollbars.css.js +6 -0
  337. package/dist/esm/theme/globalScrollbars.css.js.map +1 -0
  338. package/dist/esm/theme/index.js +10 -0
  339. package/dist/esm/theme/index.js.map +1 -0
  340. package/dist/esm/theme/lightTheme.css.js +6 -0
  341. package/dist/esm/theme/lightTheme.css.js.map +1 -0
  342. package/dist/esm/theme/lightThemeValues.js +164 -0
  343. package/dist/esm/theme/lightThemeValues.js.map +1 -0
  344. package/dist/esm/theme/themeContractData.js +161 -0
  345. package/dist/esm/theme/themeContractData.js.map +1 -0
  346. package/dist/esm/theme-values.js +4 -0
  347. package/dist/esm/theme-values.js.map +1 -0
  348. package/dist/esm/utils/animations.css.js +15 -0
  349. package/dist/esm/utils/animations.css.js.map +1 -0
  350. package/dist/esm/utils/devWarn.js +36 -0
  351. package/dist/esm/utils/devWarn.js.map +1 -0
  352. package/dist/esm/utils/platform.js +91 -0
  353. package/dist/esm/utils/platform.js.map +1 -0
  354. package/dist/tokens/tokens.dark.css +98 -0
  355. package/dist/tokens/tokens.json +851 -0
  356. package/dist/tokens/tokens.light.css +98 -0
  357. package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.d.ts +323 -0
  358. package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.types.d.ts +46 -0
  359. package/dist/types/components/editor/ChatPanel/ChatMessage.d.ts +1 -0
  360. package/dist/types/components/editor/ChatPanel/ChatMessageList.d.ts +2 -1
  361. package/dist/types/components/editor/ChatPanel/ChatPanel.d.ts +1 -0
  362. package/dist/types/components/editor/ChatPanel/ChatPanel.types.d.ts +82 -1
  363. package/dist/types/components/editor/TransformControl/TransformControl.d.ts +34 -0
  364. package/dist/types/components/editor/TransformControl/TransformControl.types.d.ts +153 -0
  365. package/dist/types/components/feedback/Alert/Alert.d.ts +340 -0
  366. package/dist/types/components/feedback/Alert/Alert.types.d.ts +82 -0
  367. package/dist/types/components/feedback/Alert/AlertActions.d.ts +306 -0
  368. package/dist/types/components/feedback/Alert/AlertDescription.d.ts +303 -0
  369. package/dist/types/components/feedback/Alert/AlertTitle.d.ts +303 -0
  370. package/dist/types/components/feedback/EmptyState/EmptyState.d.ts +313 -0
  371. package/dist/types/components/feedback/EmptyState/EmptyState.types.d.ts +31 -0
  372. package/dist/types/components/feedback/ProgressBar/CircularProgress.d.ts +313 -0
  373. package/dist/types/components/feedback/ProgressBar/ProgressBar.d.ts +315 -0
  374. package/dist/types/components/feedback/ProgressBar/ProgressBar.types.d.ts +132 -0
  375. package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +312 -0
  376. package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +82 -0
  377. package/dist/types/components/feedback/Skeleton/SkeletonGroup.d.ts +313 -0
  378. package/dist/types/components/feedback/Spinner/Spinner.d.ts +306 -0
  379. package/dist/types/components/feedback/Spinner/Spinner.types.d.ts +41 -0
  380. package/dist/types/components/layout/Divider/Divider.d.ts +307 -0
  381. package/dist/types/components/layout/Divider/Divider.types.d.ts +50 -0
  382. package/dist/types/components/layout/ListItem/ListItem.d.ts +312 -0
  383. package/dist/types/components/layout/ListItem/ListItem.types.d.ts +35 -0
  384. package/dist/types/components/layout/PageHeader/PageHeader.d.ts +311 -0
  385. package/dist/types/components/layout/PageHeader/PageHeader.types.d.ts +30 -0
  386. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEllipsis.d.ts +297 -0
  387. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbItem.d.ts +304 -0
  388. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbSeparator.d.ts +296 -0
  389. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts +311 -0
  390. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +89 -0
  391. package/dist/types/components/navigation/SegmentedControl/SegmentedControl.d.ts +24 -0
  392. package/dist/types/components/navigation/SegmentedControl/SegmentedControl.types.d.ts +85 -0
  393. package/dist/types/components/navigation/SegmentedControl/SegmentedControlItem.d.ts +12 -0
  394. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +10 -0
  395. package/dist/types/components/primitives/Avatar/Avatar.d.ts +317 -0
  396. package/dist/types/components/primitives/Avatar/Avatar.types.d.ts +139 -0
  397. package/dist/types/components/primitives/Avatar/AvatarGroup.d.ts +316 -0
  398. package/dist/types/components/primitives/Badge/Badge.d.ts +310 -0
  399. package/dist/types/components/primitives/Badge/Badge.types.d.ts +67 -0
  400. package/dist/types/components/primitives/Button/Button.d.ts +2 -2
  401. package/dist/types/components/primitives/Code/Code.d.ts +301 -0
  402. package/dist/types/components/primitives/Code/Code.types.d.ts +17 -0
  403. package/dist/types/components/primitives/IconButton/IconButton.d.ts +2 -2
  404. package/dist/types/components/primitives/Kbd/Kbd.d.ts +307 -0
  405. package/dist/types/components/primitives/Kbd/Kbd.types.d.ts +49 -0
  406. package/dist/types/components/primitives/Link/Link.d.ts +20 -0
  407. package/dist/types/components/primitives/Link/Link.types.d.ts +123 -0
  408. package/dist/types/components/primitives/Radio/Radio.d.ts +319 -0
  409. package/dist/types/components/primitives/Radio/Radio.types.d.ts +155 -0
  410. package/dist/types/components/primitives/Radio/RadioGroup.d.ts +320 -0
  411. package/dist/types/components/primitives/TextArea/TextArea.d.ts +26 -0
  412. package/dist/types/components/primitives/TextArea/TextArea.types.d.ts +76 -0
  413. package/dist/types/components/primitives/VisuallyHidden/VisuallyHidden.d.ts +316 -0
  414. package/dist/types/components/primitives/VisuallyHidden/VisuallyHidden.types.d.ts +29 -0
  415. package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +37 -0
  416. package/dist/types/hooks/useClipboard/useClipboard.d.ts +24 -0
  417. package/dist/types/hooks/useClipboard/useClipboard.types.d.ts +22 -0
  418. package/dist/types/hooks/useControlledState/useControlledState.d.ts +38 -0
  419. package/dist/types/hooks/useDisclosure/useDisclosure.d.ts +25 -0
  420. package/dist/types/hooks/useDisclosure/useDisclosure.types.d.ts +22 -0
  421. package/dist/types/hooks/useFocusTrap/useFocusTrap.d.ts +30 -0
  422. package/dist/types/hooks/useHotkey/useHotkey.d.ts +23 -0
  423. package/dist/types/hooks/useHotkey/useHotkey.types.d.ts +36 -0
  424. package/dist/types/hooks/useKeyboard/types.d.ts +14 -0
  425. package/dist/types/hooks/useKeyboard/useKeyboard.d.ts +36 -0
  426. package/dist/types/hooks/useKeyboard/utils.d.ts +6 -0
  427. package/dist/types/hooks/useMergedRef/useMergedRef.d.ts +22 -0
  428. package/dist/types/hooks/useResizeObserver/useResizeObserver.d.ts +35 -0
  429. package/dist/types/hooks/useTheme/useTheme.d.ts +48 -0
  430. package/dist/types/hooks/useTheme/useTheme.types.d.ts +60 -0
  431. package/dist/types/index.d.ts +75 -3
  432. package/dist/types/theme/ThemeProvider.d.ts +14 -2
  433. package/dist/types/theme/contract.css.d.ts +125 -118
  434. package/dist/types/theme/createCustomTheme.d.ts +1 -1
  435. package/dist/types/theme/createLightTheme.d.ts +24 -0
  436. package/dist/types/theme/{darkTheme.css.d.ts → darkThemeValues.d.ts} +9 -2
  437. package/dist/types/theme/globalScrollbars.css.d.ts +15 -0
  438. package/dist/types/theme/index.d.ts +9 -0
  439. package/dist/types/theme/lightTheme.css.d.ts +17 -0
  440. package/dist/types/theme/lightThemeValues.d.ts +168 -0
  441. package/dist/types/theme/themeContractData.d.ts +160 -0
  442. package/dist/types/theme-values.d.ts +10 -0
  443. package/dist/types/utils/animations.css.d.ts +20 -0
  444. package/dist/types/utils/platform.d.ts +16 -0
  445. package/package.json +13 -4
  446. package/dist/esm/components/feedback/Dialog/useFocusTrap.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,224 @@
1
1
  # entangle-ui
2
2
 
3
+ ## 0.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#49](https://github.com/SebastianWebdev/entangle-ui/pull/49) [`0cd0997`](https://github.com/SebastianWebdev/entangle-ui/commit/0cd0997e236b822e9cd6b7d140e4285a1cbe365f) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `Alert` component for persistent inline status banners — read-only
8
+ notices, expired-credentials warnings, unsaved-changes banners, and similar
9
+ in-layout messages. Five semantic variants (`info`, `success`, `warning`,
10
+ `error`, `neutral`) drive the color and the default icon, with three visual
11
+ treatments: `subtle` (default), `solid`, and `outline`. Provide `onClose`
12
+ to render a dismiss button. Ships a compound API — `Alert.Title`,
13
+ `Alert.Description`, `Alert.Actions` — also exported as standalone
14
+ `AlertTitle`, `AlertDescription`, `AlertActions`. ARIA roles are derived
15
+ from the variant (`alert` for error/warning, `status` for info/success,
16
+ `region` for neutral). For transient confirmations like "File saved", reach
17
+ for `useToast` instead.
18
+
19
+ - [#50](https://github.com/SebastianWebdev/entangle-ui/pull/50) [`cad70ba`](https://github.com/SebastianWebdev/entangle-ui/commit/cad70ba1c6cbf4137345fe473448fd80697ae744) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `Avatar` and `AvatarGroup` primitives for rendering people, agents, and
20
+ named entities consistently across editor UIs. `Avatar` resolves an `src`
21
+ when one is available and falls back through initials (derived from `name`,
22
+ or set explicitly) to a generic user glyph; the fallback is always rendered
23
+ underneath the image so a slow load never produces a blank flash. Six sizes
24
+ (`xs` 16px → `xxl` 56px), three shapes (`circle`, `square`, `rounded`),
25
+ deterministic auto colour hashed from `name`, optional presence indicator
26
+ (`online` / `away` / `busy` / `offline`), and an interactive mode (`onClick`
27
+ makes it a focusable, Enter/Space-activatable button). `AvatarGroup`
28
+ overlaps multiple avatars with configurable spacing and collapses overflow
29
+ beyond `max` into a `+N` indicator with a tooltip listing the hidden names.
30
+
31
+ - [#51](https://github.com/SebastianWebdev/entangle-ui/pull/51) [`31469af`](https://github.com/SebastianWebdev/entangle-ui/commit/31469afb423b6eeb60791ab8762a0e06c7111159) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add Breadcrumbs navigation for hierarchical paths, including link/current/disabled item states, automatic or custom separators, collapsed trails with expandable ellipsis, truncation tooltips, Storybook coverage, and Starlight documentation.
32
+
33
+ - [#57](https://github.com/SebastianWebdev/entangle-ui/pull/57) [`434e750`](https://github.com/SebastianWebdev/entangle-ui/commit/434e7507c0df6c2a6f250340d0cdbd66ee0b2d3f) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Promote three internal patterns into public hooks: `useFocusTrap`, `useMergedRef`, and `useResizeObserver`.
34
+ - `useFocusTrap` was previously a private helper inside `Dialog`. It now lives in the public hooks API with the same `({ containerRef, enabled }) => onKeyDown` signature.
35
+ - `useMergedRef` replaces inline ref-merge boilerplate in `Dialog`, `ChatMessageList`, `FloatingPanel`, and `ScrollArea`. Pass any number of object refs, callback refs, `null`, or `undefined`, and get a single callback ref that fans the node out to all of them.
36
+ - `useResizeObserver` wraps the browser API with the conventions used elsewhere in the library: SSR-safe, stable callback identity (no re-subscription on callback change), and an `enabled` flag for toggling without unmount. `SplitPane`, `ScrollArea`, and the chat scroll hook (`useChatScroll`) now use it.
37
+
38
+ All three hooks have full documentation pages with runnable demos.
39
+
40
+ This is a pure extraction — no behavior changes in the affected components, all existing tests pass.
41
+
42
+ - [#57](https://github.com/SebastianWebdev/entangle-ui/pull/57) [`434e750`](https://github.com/SebastianWebdev/entangle-ui/commit/434e7507c0df6c2a6f250340d0cdbd66ee0b2d3f) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Establish the public hooks library and ship the first reference hook, `useControlledState`. The hook codifies the controlled / uncontrolled state pattern that every input-like component in the library reimplements: it accepts an optional `value`, `defaultValue`, `onChange`, and a required `fallback`, and returns a `[value, setValue]` tuple just like `useState`. Switching between controlled and uncontrolled modes during a component's lifetime emits a development-only warning that mirrors React's own `<input value/defaultValue>` warning.
43
+
44
+ Also adds a small `devWarn` / `devError` helper used internally by the library to gate developer-facing warnings to development builds. Several internal warnings that previously logged in production (Skeleton circle aspect, SegmentedControl a11y warning, NumberInput parse errors, useKeyboard fallback) are now silent in production.
45
+
46
+ The hooks documentation site gets a new top-level "Hooks" section with a landing page and a dedicated page for `useControlledState`.
47
+
48
+ - [#59](https://github.com/SebastianWebdev/entangle-ui/pull/59) [`583f19f`](https://github.com/SebastianWebdev/entangle-ui/commit/583f19fa12aef2c861c622e008a8ceafee03e7c5) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add four net-new hooks to the public API: `useDisclosure`, `useClipboard`, `useClickOutside`, and `useHotkey`.
49
+ - **`useDisclosure`** — manages a boolean `isOpen` state with stable `open`, `close`, `toggle`, and `setOpen` callbacks. Supports both controlled (`open` / `onOpenChange`) and uncontrolled (`defaultOpen`) modes, built on top of `useControlledState`.
50
+ - **`useClipboard`** — copies text to the clipboard with a built-in timeout-driven `copied` feedback flag, an `error` field, and a `reset` callback. Uses `navigator.clipboard.writeText` with a `document.execCommand` fallback; never throws.
51
+ - **`useClickOutside`** — fires a callback when a click lands outside one or more refs. Supports both single-ref and array-of-refs forms (useful for popover + trigger pairs) and is configurable to listen on `mousedown`, `click`, or `pointerdown`.
52
+ - **`useHotkey`** — binds a single keyboard combo (e.g. `'Ctrl+S'`, `'Cmd+K'`, `'Escape'`) to a callback. `Cmd` automatically maps to `Ctrl` on non-Mac platforms. Skips firing inside editable elements by default; `enableInInputs` opts back in for global shortcuts.
53
+
54
+ All four hooks are SSR-safe, clean up subscriptions on unmount, and use a stable handler-ref pattern so consumers do not need to memoize callbacks. Each hook ships with a dedicated page on the docs site under the Hooks section.
55
+
56
+ - [#58](https://github.com/SebastianWebdev/entangle-ui/pull/58) [`ac62afb`](https://github.com/SebastianWebdev/entangle-ui/commit/ac62afb6329ca533e0987973e0802c50229bb9c0) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add a maintained light theme preset. Ships `lightThemeValues` and a
57
+ `createLightTheme()` helper that generates a build-time CSS class via
58
+ Vanilla Extract. Unlike the dark theme, the light preset is not applied
59
+ on `:root` — consumers opt in by wrapping a subtree with
60
+ `VanillaThemeProvider` and the generated class, so the same theming
61
+ machinery powers both whole-app light mode and scoped light surfaces
62
+ inside a dark app (and vice versa). Structural tokens (spacing,
63
+ typography, border-radius, transitions, z-index) are identical between
64
+ themes so layout and rhythm don't drift when users switch modes.
65
+ Storybook gains a global theme toggle for inspecting any story under
66
+ either theme.
67
+
68
+ - [#55](https://github.com/SebastianWebdev/entangle-ui/pull/55) [`d01fe9e`](https://github.com/SebastianWebdev/entangle-ui/commit/d01fe9ea1b8d9d59e99ee4e639559872b2f83abe) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `Link` styled-anchor primitive. Provides theme-aware color, underline,
69
+ hover, and focus behavior, plus `default` / `subtle` / `inline` variants
70
+ and `sm` / `md` / `lg` sizes. External links are auto-detected from
71
+ `http(s)://` hrefs (or set explicitly), get an external-link icon, and
72
+ ship `target="_blank" rel="noopener noreferrer"` along with an "(opens in
73
+ new tab)" screen-reader announcement. Polymorphic via `as` with a typed
74
+ generic so consumers can pass a router's link component (react-router,
75
+ TanStack Router, Next.js) and get the router's own props (`to`, …)
76
+ type-checked. `disabled` renders as a non-anchor span regardless of `as`,
77
+ strips navigation handlers, and suppresses the external affordance —
78
+ disabled router links cannot navigate via mouse, keyboard, or
79
+ programmatic activation.
80
+
81
+ - [#52](https://github.com/SebastianWebdev/entangle-ui/pull/52) [`ce4240e`](https://github.com/SebastianWebdev/entangle-ui/commit/ce4240ede8cbabe7c4da09ad919d1e7d46408567) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `ProgressBar` and `CircularProgress` feedback components for measurable
82
+ operations like uploads, exports, renders, and batch jobs. Both share `value`
83
+ / `min` / `max` semantics and four named colors (`primary`, `success`,
84
+ `warning`, `error`) plus arbitrary CSS color pass-through. Omitting `value`
85
+ renders an indeterminate variant — a sliding gradient on the linear bar, a
86
+ rotating arc on the circular one — with a `prefers-reduced-motion` fallback.
87
+ `ProgressBar` ships in three heights (`sm` 2px → `lg` 8px), supports inline /
88
+ overlay / custom labels, and an optional striped (optionally animated)
89
+ texture overlay; `CircularProgress` ranges from `xs` (16px) to `xl` (48px),
90
+ auto-derives stroke thickness from size (overridable via `thickness`), and
91
+ can render a center label for `lg`+ sizes. Both expose
92
+ `role="progressbar"` with the appropriate `aria-value*` attributes.
93
+
94
+ - [#47](https://github.com/SebastianWebdev/entangle-ui/pull/47) [`0300928`](https://github.com/SebastianWebdev/entangle-ui/commit/0300928f4e1cce6e48dbcb15b657cbe77d6fa650) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `Radio` and `RadioGroup` primitives. Closes the last gap in Phase 1 by providing a styled, accessible alternative to native radio inputs for mutually exclusive selection.
95
+ - `Radio`: standalone (controlled or uncontrolled) or context-driven, with sizes (sm/md/lg), label position, helper text, and error state.
96
+ - `RadioGroup`: manages exclusive selection, propagates `name`, `size`, `disabled`, and `error` via context, supports vertical/horizontal orientation, custom spacing, required/error states, and helper text.
97
+ - Native `<input type="radio">` under the hood so browser arrow-key navigation and form submission work out of the box.
98
+ - Honors `prefers-reduced-motion`.
99
+
100
+ - [#54](https://github.com/SebastianWebdev/entangle-ui/pull/54) [`7e88083`](https://github.com/SebastianWebdev/entangle-ui/commit/7e8808322ec022ba7a7290f4686c315c09103123) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add SegmentedControl, a toolbar-density mutually exclusive selector for view modes, layout toggles, and small option groups. Compound API (`SegmentedControl` + `SegmentedControlItem`) with controlled and uncontrolled modes, three visual variants (subtle / solid / outline), three sizes, horizontal and vertical orientations, optional fullWidth, icon and icon-only segments with tooltip support, an animated sliding indicator that respects `prefers-reduced-motion`, full roving-tabindex keyboard navigation (Arrow keys / Home / End), `role="group"` + `aria-pressed` accessibility, Storybook coverage, and Starlight documentation.
101
+
102
+ - [#46](https://github.com/SebastianWebdev/entangle-ui/pull/46) [`014eecc`](https://github.com/SebastianWebdev/entangle-ui/commit/014eeccc4f4d96f2d6ea39f6dcfe427acb51d62d) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `Skeleton` and `SkeletonGroup` components for loading-placeholder
103
+ states. Supports `rect`, `circle`, and `line` shapes with `pulse`, `wave`,
104
+ or no animation. Animations honor `prefers-reduced-motion`. `SkeletonGroup`
105
+ auto-generates a configurable number of skeletons with consistent spacing
106
+ and direction, or lays out custom children.
107
+
108
+ - [#63](https://github.com/SebastianWebdev/entangle-ui/pull/63) [`f86981d`](https://github.com/SebastianWebdev/entangle-ui/commit/f86981dea383ea91027437998285001e3e535f98) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Ship machine-readable token artifacts alongside the JS bundle. Each release
109
+ now publishes `entangle-ui/tokens.json` (a loosely DTCG-aligned export of
110
+ both themes), `entangle-ui/tokens.dark.css` (the dark `--etui-*` custom
111
+ properties scoped to `:root`), and `entangle-ui/tokens.light.css` (the light
112
+ preset scoped to the documented `etui-theme-light` class). Figma plugins,
113
+ Style Dictionary pipelines, and projects that don't use Vanilla Extract can
114
+ now consume the same values the components compile against. The tree-shaking
115
+ guarantees of the main entry point are unchanged — these files are only
116
+ loaded by consumers that explicitly import them.
117
+
118
+ - [#61](https://github.com/SebastianWebdev/entangle-ui/pull/61) [`fb25779`](https://github.com/SebastianWebdev/entangle-ui/commit/fb25779de140def961c0ace8fad70399e676c7b5) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `TransformControl` — the canonical position / rotation / scale property
119
+ control for 3D editor interfaces. Composes `VectorInput`, `Select` and
120
+ `PropertyRow` into a single high-level component, mirroring the transform
121
+ widget found in Blender, Unity and Unreal. Renders three rows (position,
122
+ rotation, scale) plus a coordinate-space dropdown and a linked-scale lock
123
+ toggle, with sensible defaults for precision (`3 / 1 / 3`), step
124
+ (`0.1 / 1 / 0.01`) and units (`m / ° / ''`). Three independent atoms —
125
+ `value`, `coordinateSpace`, `linkedScale` — each support controlled and
126
+ uncontrolled usage. `linkedScale` performs uniform (not proportional)
127
+ scaling and does not snap values when toggled. Hide rows via `show`,
128
+ swap the coordinate-space options via `coordinateSpaceOptions`, and turn
129
+ on per-row reset buttons with `showReset`. The component intentionally
130
+ renders no `PropertySection` wrapper — slot it inside one of your own.
131
+ Note: changing the coordinate-space dropdown does not transform the
132
+ numeric values; the consumer's editor logic is responsible for re-projecting
133
+ them.
134
+
135
+ - [#53](https://github.com/SebastianWebdev/entangle-ui/pull/53) [`f6a6580`](https://github.com/SebastianWebdev/entangle-ui/commit/f6a6580344a2b591ca6549bdc46f7320793d6704) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add the Kbd primitive for consistent keyboard shortcut rendering across menus, tooltips, command palettes, and help panels. Includes platform-aware glyph utilities for macOS, Windows, and Linux shortcut labels.
136
+
137
+ - [#60](https://github.com/SebastianWebdev/entangle-ui/pull/60) [`27b61f0`](https://github.com/SebastianWebdev/entangle-ui/commit/27b61f02a69b37672cc279e67dd0481dfd717698) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `useTheme` hook for runtime theme reads. Returns the resolved CSS
138
+ variable snapshot from `:root`, the detected variant (`'dark'` / `'light'` /
139
+ `'custom'`), and `getToken(path)` / `getVar(path)` helpers for paths like
140
+ `'colors.accent.primary'`. Use it for canvas drawing, third-party libraries
141
+ that take colours as plain strings, and conditional logic — keep using
142
+ Vanilla Extract `vars.*` for ordinary styling. SSR-safe: returns dark-theme
143
+ defaults when no DOM is available.
144
+
145
+ - [#56](https://github.com/SebastianWebdev/entangle-ui/pull/56) [`af3f44a`](https://github.com/SebastianWebdev/entangle-ui/commit/af3f44a17d173f192f2e376a73760c82fe6a86f5) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add `VisuallyHidden` primitive for hiding content visually while keeping
146
+ it accessible to screen readers. Implements the canonical SR-only style
147
+ and supports a `focusable` mode for skip-to-content links (revealed via
148
+ `:focus-within`). Renders as `<span>` by default with `as` overrides for
149
+ `div`, `label`, and `p`.
150
+
151
+ ### Patch Changes
152
+
153
+ - [#50](https://github.com/SebastianWebdev/entangle-ui/pull/50) [`5763f0e`](https://github.com/SebastianWebdev/entangle-ui/commit/5763f0ea29a7820bee11a0c6860a3015849c83c6) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Internal refactor: `ChatMessage` now renders the new `Avatar` primitive
154
+ instead of inline JSX. The visual output (24px circle, initials fallback,
155
+ image when available) is unchanged from a consumer's perspective, but the
156
+ chat avatar now picks up Avatar's deterministic auto color, image-error
157
+ fallback chain, and standard accessible-name handling for free.
158
+
159
+ - [#62](https://github.com/SebastianWebdev/entangle-ui/pull/62) [`91f2c7b`](https://github.com/SebastianWebdev/entangle-ui/commit/91f2c7b18463d684f19a4e9a25f56b8fe70fcc69) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Honor `prefers-reduced-motion: reduce` across every existing component that
160
+ animates anything. Loading spinners (Button, IconButton), Dialog overlay
161
+ and panel fade-in/out, Toast slide-in and auto-dismiss progress bar,
162
+ Select dropdown scale-in, Popover entry, Tooltip popup transition, Switch
163
+ thumb travel, Checkbox check-mark draw, expand/collapse chevrons (Accordion,
164
+ Collapsible, Select, TreeView, PropertySection, ChatPanel tool-call),
165
+ Accordion and Collapsible content height transitions, Avatar / Slider /
166
+ ColorPicker hover scale effects, and every `transition: all` block on
167
+ interactive primitives now collapse to a static state under reduced
168
+ motion. Direct-manipulation interactions (drag, scrub, gizmo rotation,
169
+ focus rings, hover color changes) are preserved. A new
170
+ [Accessibility](https://entangle-ui.dev/guides/accessibility) guide page
171
+ documents the library's reduced-motion stance and shows how to follow the
172
+ same pattern in consumer code.
173
+
174
+ - [#48](https://github.com/SebastianWebdev/entangle-ui/pull/48) [`249a2aa`](https://github.com/SebastianWebdev/entangle-ui/commit/249a2aa11801a45871dffd11286a2535e895d7f4) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Add a CSS-free `entangle-ui/theme-values` export for Node, SSR, and tooling consumers that need raw theme data without importing Vanilla Extract CSS runtime files.
175
+
176
+ - [#61](https://github.com/SebastianWebdev/entangle-ui/pull/61) [`7bce1c9`](https://github.com/SebastianWebdev/entangle-ui/commit/7bce1c93a4432ddac252be65f6334211c68674b9) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Fix `VectorInput` axis inputs overflowing their column in narrow layouts.
177
+ The `NumberInput` inside each axis previously took its intrinsic content
178
+ width, causing values to clip and visually overlap when the row was tight
179
+ (typical inside property panels or alongside a lock toggle). The
180
+ `NumberInput` container now fills the remaining axis space with
181
+ `flex: 1; min-width: 0`, so axes share width evenly and shrink gracefully.
182
+
183
+ ## 0.7.0
184
+
185
+ ### Minor Changes
186
+
187
+ - [#44](https://github.com/SebastianWebdev/entangle-ui/pull/44) [`5529de0`](https://github.com/SebastianWebdev/entangle-ui/commit/5529de0c0eebb780e117f361997c52733ff8b66a) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - **v0.7.0 release — addresses the agent-ui audit findings.**
188
+
189
+ ### New components
190
+ - **Badge** (primitives): inline status indicator with `subtle`, `solid`, `outline`, and `dot` variants; named or raw colors; optional icon and remove button.
191
+ - **TextArea** (primitives): multi-line input with label / helper text / auto-resize (`minRows`/`maxRows`), char counter, and monospace mode. Visual parity with `Input`.
192
+ - **Divider** (layout): horizontal/vertical rule with `solid` / `dashed` / `dotted` variants and an optional centered label.
193
+ - **Spinner** (feedback): `ring` / `dots` / `pulse` variants; `xs`–`lg` sizes; honors `prefers-reduced-motion`.
194
+ - **EmptyState** (feedback): title + description + icon + action slots, `default`/`compact` variants, and a `loading` swap that renders a `Spinner`.
195
+ - **PageHeader** (layout): semantic `<header>` with icon, title, subtitle, breadcrumbs, and right-aligned actions.
196
+ - **Code** (primitives): small inline `<code>` primitive backed by the new `background.inset` token.
197
+ - **ListItem** (layout): list row with leading/trailing slots, selected/active/disabled states, keyboard-activatable when `onClick` is provided.
198
+ - **ChatMarkdownRenderer**: opt-in markdown renderer for `ChatMessage.renderContent` (bold/italic/code, lists, blockquotes, fenced code, GFM tables, safe links).
199
+
200
+ ### Bug fixes
201
+ - `ChatInput` now allows attachments-only submit — both controlled and uncontrolled paths check `attachments.length` in addition to the trimmed value; the send button stays enabled when attachments are queued.
202
+ - `ChatMessageList` auto-scroll is now streaming-aware: `useChatScroll` observes the content element's height via `ResizeObserver`, so the list stays pinned to the bottom when the last message grows token-by-token.
203
+ - `SplitPanePanel` now fills its wrapper (`width: 100%; height: 100%; minWidth: 0; minHeight: 0; box-sizing: border-box`) so nested `PanelSurface` / `ScrollArea` children with `height: 100%` lay out correctly.
204
+
205
+ ### New props & APIs
206
+ - `ChatMessage.maxWidth` and `ChatPanel.messageMaxWidth` — per-message and panel-level bubble width control via the new public `--etui-chat-message-max-width` CSS variable.
207
+ - `ChatMessageList.scrollApiRef` — imperative handle exposing `scrollToBottom`, `scrollTo`, `scrollToElement`, and `isAtBottom` for driving scroll from outside (search results, "jump to top" actions, etc.).
208
+ - `useChatScroll` now returns `scrollContentRef`, `scrollTo`, and `scrollToElement` alongside the existing API.
209
+ - `useChatInput` accepts `attachmentsCount` for attachments-only submit support.
210
+ - `Tabs.keepMounted` — parent-level cascade so every `TabPanel` stays mounted unless a child explicitly sets `keepMounted={false}`.
211
+
212
+ ### New theme tokens
213
+ - `colors.background.inset` — sunken surface for inline code, textarea backgrounds, and recessed preview areas.
214
+ - `colors.surface.row` / `colors.surface.rowHover` — list-row backgrounds that are lighter than `surface.hover` (which is reserved for interactive controls like buttons).
215
+
216
+ ### Developer experience
217
+ - `ThemeProvider` now accepts `globalScrollbars` (opt-in) which toggles consistent dark-theme scrollbar styling on `document.body`.
218
+ - Shared animation utilities (`animSpin`, `animPulse`, `animBlink`, `animFadeIn`) and keyframes (`spinKeyframe`, `pulseKeyframe`, `blinkKeyframe`, `fadeInKeyframe`) exported from the root. Each utility honors `prefers-reduced-motion`.
219
+
220
+ No breaking changes.
221
+
3
222
  ## 0.6.3
4
223
 
5
224
  ### Patch Changes
@@ -338,4 +338,18 @@
338
338
  opacity: 0.5;
339
339
  cursor: not-allowed;
340
340
  pointer-events: none;
341
+ }
342
+ @media (prefers-reduced-motion: reduce) {
343
+ .ColorPicker_presetButtonRecipe__11dms9om {
344
+ transition: none;
345
+ }
346
+ .ColorPicker_presetButtonRecipe__11dms9om:hover {
347
+ transform: none;
348
+ }
349
+ .ColorPicker_paletteShadeRecipe__11dms9oy {
350
+ transition: none;
351
+ }
352
+ .ColorPicker_paletteShadeRecipe__11dms9oy:hover {
353
+ transform: none;
354
+ }
341
355
  }
@@ -222,4 +222,15 @@
222
222
  color: var(--etui-color-accent-primary);
223
223
  display: flex;
224
224
  align-items: center;
225
+ }
226
+ @media (prefers-reduced-motion: reduce) {
227
+ .Select_triggerRecipe__ycpn702 {
228
+ transition: none;
229
+ }
230
+ .Select_chevronRecipe__ycpn70q {
231
+ transition: none;
232
+ }
233
+ .Select_dropdownStyle__ycpn70v {
234
+ animation: none;
235
+ }
225
236
  }
@@ -170,4 +170,18 @@
170
170
  .Slider_tooltipRecipe_visible_false__t8kxxsu {
171
171
  opacity: 0;
172
172
  transform: translateX(-50%) translateY(4px);
173
+ }
174
+ @media (prefers-reduced-motion: reduce) {
175
+ .Slider_thumbRecipe__t8kxxsi {
176
+ transition: none;
177
+ }
178
+ .Slider_thumbRecipe__t8kxxsi:hover {
179
+ transform: translate(-50%, -50%);
180
+ }
181
+ .Slider_thumbRecipe_isDragging_false__t8kxxsp {
182
+ transition: none;
183
+ }
184
+ .Slider_tooltipRecipe__t8kxxss {
185
+ transition: none;
186
+ }
173
187
  }
@@ -147,4 +147,9 @@
147
147
  width: 1px;
148
148
  background: color-mix(in srgb, var(--etui-color-border-default) 30%, transparent);
149
149
  pointer-events: none;
150
+ }
151
+ @media (prefers-reduced-motion: reduce) {
152
+ .TreeNode_chevronRecipe__8ws3nef {
153
+ transition: none;
154
+ }
150
155
  }
@@ -22,6 +22,10 @@
22
22
  align-items: center;
23
23
  gap: 0;
24
24
  }
25
+ .VectorInput_axisInputStyle__1osrtmk6 > *:last-child {
26
+ flex: 1;
27
+ min-width: 0;
28
+ }
25
29
  .VectorInput_axisLabelRecipe__1osrtmk7 {
26
30
  display: flex;
27
31
  align-items: center;
@@ -99,4 +103,9 @@
99
103
  width: 32px;
100
104
  height: 32px;
101
105
  min-width: 32px;
106
+ }
107
+ @media (prefers-reduced-motion: reduce) {
108
+ .VectorInput_linkButtonRecipe__1osrtmkb {
109
+ transition: none;
110
+ }
102
111
  }