entangle-ui 0.7.0 → 0.8.1

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 (429) hide show
  1. package/CHANGELOG.md +190 -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-BI5569ZO.css → ChatPanel.css.ts.vanilla-CLn8idfz.css} +117 -133
  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/ProgressBar/ProgressBar.css.ts.vanilla-4WLVf1hx.css +152 -0
  13. package/dist/esm/assets/src/components/feedback/Skeleton/Skeleton.css.ts.vanilla-Dk2_SSsC.css +39 -0
  14. package/dist/esm/assets/src/components/feedback/Toast/{ToastItem.css.ts.vanilla-D6UuPKAj.css → ToastItem.css.ts.vanilla-DUeXqiaH.css} +9 -0
  15. package/dist/esm/assets/src/components/form/{InputWrapper.css.ts.vanilla-Bl7u62PI.css → InputWrapper.css.ts.vanilla-CLpKbEjq.css} +5 -0
  16. package/dist/esm/assets/src/components/layout/Accordion/{Accordion.css.ts.vanilla-Ck5Yew0e.css → Accordion.css.ts.vanilla-CJQum8px.css} +8 -0
  17. package/dist/esm/assets/src/components/navigation/Breadcrumbs/Breadcrumbs.css.ts.vanilla-DZ4jm_bw.css +128 -0
  18. package/dist/esm/assets/src/components/navigation/SegmentedControl/SegmentedControl.css.ts.vanilla-BHOnDD2B.css +197 -0
  19. package/dist/esm/assets/src/components/navigation/Tabs/{Tabs.css.ts.vanilla-D7RGpDPC.css → Tabs.css.ts.vanilla-CQucokdg.css} +14 -0
  20. package/dist/esm/assets/src/components/primitives/Avatar/Avatar.css.ts.vanilla-jG5hUudL.css +149 -0
  21. package/dist/esm/assets/src/components/primitives/Button/{Button.css.ts.vanilla-CT592JL7.css → Button.css.ts.vanilla-DXJcIb94.css} +9 -0
  22. package/dist/esm/assets/src/components/primitives/Checkbox/{Checkbox.css.ts.vanilla-dvrGPiPs.css → Checkbox.css.ts.vanilla-DNa-Gqto.css} +5 -0
  23. package/dist/esm/assets/src/components/primitives/Collapsible/{Collapsible.css.ts.vanilla-C1rYV-JT.css → Collapsible.css.ts.vanilla-Dz4Vy-ob.css} +8 -0
  24. package/dist/esm/assets/src/components/primitives/IconButton/{IconButton.css.ts.vanilla-C-xAQoR3.css → IconButton.css.ts.vanilla-CPkPZJRU.css} +9 -0
  25. package/dist/esm/assets/src/components/primitives/Kbd/Kbd.css.ts.vanilla-Co2-Rxgv.css +60 -0
  26. package/dist/esm/assets/src/components/primitives/Link/Link.css.ts.vanilla-q-bqHUOF.css +82 -0
  27. package/dist/esm/assets/src/components/primitives/Popover/{Popover.css.ts.vanilla-DW6aAr57.css → Popover.css.ts.vanilla-KCfDIs4G.css} +5 -0
  28. package/dist/esm/assets/src/components/primitives/Radio/Radio.css.ts.vanilla-CPjdD-ZM.css +127 -0
  29. package/dist/esm/assets/src/components/primitives/Switch/{Switch.css.ts.vanilla-CxqwUToB.css → Switch.css.ts.vanilla-CDSt-M5W.css} +5 -0
  30. package/dist/esm/assets/src/components/primitives/TextArea/{TextArea.css.ts.vanilla-DTOMjGkp.css → TextArea.css.ts.vanilla-M9l1t4HR.css} +5 -0
  31. package/dist/esm/assets/src/components/primitives/VisuallyHidden/VisuallyHidden.css.ts.vanilla-DBulVh4Q.css +36 -0
  32. package/dist/esm/assets/src/theme/lightTheme.css.ts.vanilla-OaRI_wIc.css +99 -0
  33. package/dist/esm/assets/src/utils/{animations.css.ts.vanilla-DOVlpljP.css → animations.css.ts.vanilla-CRLFsBSV.css} +22 -8
  34. package/dist/esm/components/Icons/AddIcon.js +30 -0
  35. package/dist/esm/components/Icons/AddIcon.js.map +1 -0
  36. package/dist/esm/components/Icons/AiChatIcon.js +31 -0
  37. package/dist/esm/components/Icons/AiChatIcon.js.map +1 -0
  38. package/dist/esm/components/Icons/AiSparklesIcon.js +31 -0
  39. package/dist/esm/components/Icons/AiSparklesIcon.js.map +1 -0
  40. package/dist/esm/components/Icons/ArrowDownIcon.js +30 -0
  41. package/dist/esm/components/Icons/ArrowDownIcon.js.map +1 -0
  42. package/dist/esm/components/Icons/ArrowLeftIcon.js +30 -0
  43. package/dist/esm/components/Icons/ArrowLeftIcon.js.map +1 -0
  44. package/dist/esm/components/Icons/ArrowRightIcon.js +30 -0
  45. package/dist/esm/components/Icons/ArrowRightIcon.js.map +1 -0
  46. package/dist/esm/components/Icons/ArrowUpIcon.js +30 -0
  47. package/dist/esm/components/Icons/ArrowUpIcon.js.map +1 -0
  48. package/dist/esm/components/Icons/BookmarkIcon.js +30 -0
  49. package/dist/esm/components/Icons/BookmarkIcon.js.map +1 -0
  50. package/dist/esm/components/Icons/CalendarIcon.js +30 -0
  51. package/dist/esm/components/Icons/CalendarIcon.js.map +1 -0
  52. package/dist/esm/components/Icons/ClockIcon.js +30 -0
  53. package/dist/esm/components/Icons/ClockIcon.js.map +1 -0
  54. package/dist/esm/components/Icons/CodeIcon.js +30 -0
  55. package/dist/esm/components/Icons/CodeIcon.js.map +1 -0
  56. package/dist/esm/components/Icons/CopyIcon.js +30 -0
  57. package/dist/esm/components/Icons/CopyIcon.js.map +1 -0
  58. package/dist/esm/components/Icons/CutIcon.js +30 -0
  59. package/dist/esm/components/Icons/CutIcon.js.map +1 -0
  60. package/dist/esm/components/Icons/DownloadIcon.js +30 -0
  61. package/dist/esm/components/Icons/DownloadIcon.js.map +1 -0
  62. package/dist/esm/components/Icons/EditIcon.js +30 -0
  63. package/dist/esm/components/Icons/EditIcon.js.map +1 -0
  64. package/dist/esm/components/Icons/ErrorIcon.js +30 -0
  65. package/dist/esm/components/Icons/ErrorIcon.js.map +1 -0
  66. package/dist/esm/components/Icons/EyeIcon.js +30 -0
  67. package/dist/esm/components/Icons/EyeIcon.js.map +1 -0
  68. package/dist/esm/components/Icons/FilterIcon.js +30 -0
  69. package/dist/esm/components/Icons/FilterIcon.js.map +1 -0
  70. package/dist/esm/components/Icons/FolderIcon.js +30 -0
  71. package/dist/esm/components/Icons/FolderIcon.js.map +1 -0
  72. package/dist/esm/components/Icons/FullscreenIcon.js +30 -0
  73. package/dist/esm/components/Icons/FullscreenIcon.js.map +1 -0
  74. package/dist/esm/components/Icons/GridIcon.js +30 -0
  75. package/dist/esm/components/Icons/GridIcon.js.map +1 -0
  76. package/dist/esm/components/Icons/HeartIcon.js +30 -0
  77. package/dist/esm/components/Icons/HeartIcon.js.map +1 -0
  78. package/dist/esm/components/Icons/HelpIcon.js +30 -0
  79. package/dist/esm/components/Icons/HelpIcon.js.map +1 -0
  80. package/dist/esm/components/Icons/HomeIcon.js +30 -0
  81. package/dist/esm/components/Icons/HomeIcon.js.map +1 -0
  82. package/dist/esm/components/Icons/InfoIcon.js +30 -0
  83. package/dist/esm/components/Icons/InfoIcon.js.map +1 -0
  84. package/dist/esm/components/Icons/LinkIcon.js +30 -0
  85. package/dist/esm/components/Icons/LinkIcon.js.map +1 -0
  86. package/dist/esm/components/Icons/ListIcon.js +30 -0
  87. package/dist/esm/components/Icons/ListIcon.js.map +1 -0
  88. package/dist/esm/components/Icons/LockIcon.js +30 -0
  89. package/dist/esm/components/Icons/LockIcon.js.map +1 -0
  90. package/dist/esm/components/Icons/MaximizeIcon.js +30 -0
  91. package/dist/esm/components/Icons/MaximizeIcon.js.map +1 -0
  92. package/dist/esm/components/Icons/MenuIcon.js +30 -0
  93. package/dist/esm/components/Icons/MenuIcon.js.map +1 -0
  94. package/dist/esm/components/Icons/MinimizeIcon.js +30 -0
  95. package/dist/esm/components/Icons/MinimizeIcon.js.map +1 -0
  96. package/dist/esm/components/Icons/PasteIcon.js +30 -0
  97. package/dist/esm/components/Icons/PasteIcon.js.map +1 -0
  98. package/dist/esm/components/Icons/PlayIcon.js +30 -0
  99. package/dist/esm/components/Icons/PlayIcon.js.map +1 -0
  100. package/dist/esm/components/Icons/RedoIcon.js +30 -0
  101. package/dist/esm/components/Icons/RedoIcon.js.map +1 -0
  102. package/dist/esm/components/Icons/RefreshIcon.js +30 -0
  103. package/dist/esm/components/Icons/RefreshIcon.js.map +1 -0
  104. package/dist/esm/components/Icons/RobotIcon.js +30 -0
  105. package/dist/esm/components/Icons/RobotIcon.js.map +1 -0
  106. package/dist/esm/components/Icons/SaveIcon.js +30 -0
  107. package/dist/esm/components/Icons/SaveIcon.js.map +1 -0
  108. package/dist/esm/components/Icons/SearchIcon.js +30 -0
  109. package/dist/esm/components/Icons/SearchIcon.js.map +1 -0
  110. package/dist/esm/components/Icons/SettingsIcon.js +30 -0
  111. package/dist/esm/components/Icons/SettingsIcon.js.map +1 -0
  112. package/dist/esm/components/Icons/SortIcon.js +30 -0
  113. package/dist/esm/components/Icons/SortIcon.js.map +1 -0
  114. package/dist/esm/components/Icons/StarIcon.js +30 -0
  115. package/dist/esm/components/Icons/StarIcon.js.map +1 -0
  116. package/dist/esm/components/Icons/SuccessIcon.js +30 -0
  117. package/dist/esm/components/Icons/SuccessIcon.js.map +1 -0
  118. package/dist/esm/components/Icons/TagIcon.js +30 -0
  119. package/dist/esm/components/Icons/TagIcon.js.map +1 -0
  120. package/dist/esm/components/Icons/TrashIcon.js +30 -0
  121. package/dist/esm/components/Icons/TrashIcon.js.map +1 -0
  122. package/dist/esm/components/Icons/UndoIcon.js +30 -0
  123. package/dist/esm/components/Icons/UndoIcon.js.map +1 -0
  124. package/dist/esm/components/Icons/UnlockIcon.js +30 -0
  125. package/dist/esm/components/Icons/UnlockIcon.js.map +1 -0
  126. package/dist/esm/components/Icons/UploadIcon.js +30 -0
  127. package/dist/esm/components/Icons/UploadIcon.js.map +1 -0
  128. package/dist/esm/components/Icons/UserIcon.js +30 -0
  129. package/dist/esm/components/Icons/UserIcon.js.map +1 -0
  130. package/dist/esm/components/Icons/WarningIcon.js +30 -0
  131. package/dist/esm/components/Icons/WarningIcon.js.map +1 -0
  132. package/dist/esm/components/Icons/ZoomInIcon.js +30 -0
  133. package/dist/esm/components/Icons/ZoomInIcon.js.map +1 -0
  134. package/dist/esm/components/Icons/ZoomOutIcon.js +30 -0
  135. package/dist/esm/components/Icons/ZoomOutIcon.js.map +1 -0
  136. package/dist/esm/components/controls/ColorPicker/ColorPicker.css.js +1 -1
  137. package/dist/esm/components/controls/NumberInput/useNumberInput.js +2 -1
  138. package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -1
  139. package/dist/esm/components/controls/Select/Select.css.js +1 -1
  140. package/dist/esm/components/controls/Slider/Slider.css.js +1 -1
  141. package/dist/esm/components/controls/TreeView/TreeNode.css.js +1 -1
  142. package/dist/esm/components/controls/VectorInput/VectorInput.css.js +1 -1
  143. package/dist/esm/components/controls/VectorInput/VectorInput.js +1 -0
  144. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -1
  145. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +4 -12
  146. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  147. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js +4 -10
  148. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
  149. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js +72 -74
  150. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js.map +1 -1
  151. package/dist/esm/components/editor/ChatPanel/useChatScroll.js +22 -28
  152. package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
  153. package/dist/esm/components/editor/PropertyInspector/PropertySection.css.js +1 -1
  154. package/dist/esm/components/editor/TransformControl/TransformControl.css.js +11 -0
  155. package/dist/esm/components/editor/TransformControl/TransformControl.css.js.map +1 -0
  156. package/dist/esm/components/editor/TransformControl/TransformControl.js +158 -0
  157. package/dist/esm/components/editor/TransformControl/TransformControl.js.map +1 -0
  158. package/dist/esm/components/feedback/Alert/Alert.css.js +16 -0
  159. package/dist/esm/components/feedback/Alert/Alert.css.js.map +1 -0
  160. package/dist/esm/components/feedback/Alert/Alert.js +90 -0
  161. package/dist/esm/components/feedback/Alert/Alert.js.map +1 -0
  162. package/dist/esm/components/feedback/Alert/AlertActions.js +30 -0
  163. package/dist/esm/components/feedback/Alert/AlertActions.js.map +1 -0
  164. package/dist/esm/components/feedback/Alert/AlertDescription.js +28 -0
  165. package/dist/esm/components/feedback/Alert/AlertDescription.js.map +1 -0
  166. package/dist/esm/components/feedback/Alert/AlertTitle.js +28 -0
  167. package/dist/esm/components/feedback/Alert/AlertTitle.js.map +1 -0
  168. package/dist/esm/components/feedback/Dialog/Dialog.css.js +1 -1
  169. package/dist/esm/components/feedback/Dialog/Dialog.js +4 -12
  170. package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -1
  171. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +10 -3
  172. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -1
  173. package/dist/esm/components/feedback/ProgressBar/CircularProgress.js +113 -0
  174. package/dist/esm/components/feedback/ProgressBar/CircularProgress.js.map +1 -0
  175. package/dist/esm/components/feedback/ProgressBar/ProgressBar.css.js +22 -0
  176. package/dist/esm/components/feedback/ProgressBar/ProgressBar.css.js.map +1 -0
  177. package/dist/esm/components/feedback/ProgressBar/ProgressBar.js +80 -0
  178. package/dist/esm/components/feedback/ProgressBar/ProgressBar.js.map +1 -0
  179. package/dist/esm/components/feedback/Skeleton/Skeleton.css.js +13 -0
  180. package/dist/esm/components/feedback/Skeleton/Skeleton.css.js.map +1 -0
  181. package/dist/esm/components/feedback/Skeleton/Skeleton.js +78 -0
  182. package/dist/esm/components/feedback/Skeleton/Skeleton.js.map +1 -0
  183. package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js +58 -0
  184. package/dist/esm/components/feedback/Skeleton/SkeletonGroup.js.map +1 -0
  185. package/dist/esm/components/feedback/Spinner/Spinner.css.js +1 -1
  186. package/dist/esm/components/feedback/Toast/ToastItem.css.js +1 -1
  187. package/dist/esm/components/form/InputWrapper.css.js +1 -1
  188. package/dist/esm/components/layout/Accordion/Accordion.css.js +1 -1
  189. package/dist/esm/components/layout/ScrollArea/ScrollArea.js +17 -20
  190. package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -1
  191. package/dist/esm/components/layout/SplitPane/SplitPane.js +2 -10
  192. package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -1
  193. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js +49 -0
  194. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbEllipsis.js.map +1 -0
  195. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js +89 -0
  196. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbItem.js.map +1 -0
  197. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js +22 -0
  198. package/dist/esm/components/navigation/Breadcrumbs/BreadcrumbSeparator.js.map +1 -0
  199. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.css.js +16 -0
  200. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.css.js.map +1 -0
  201. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js +152 -0
  202. package/dist/esm/components/navigation/Breadcrumbs/Breadcrumbs.js.map +1 -0
  203. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.css.js +15 -0
  204. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.css.js.map +1 -0
  205. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js +240 -0
  206. package/dist/esm/components/navigation/SegmentedControl/SegmentedControl.js.map +1 -0
  207. package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js +83 -0
  208. package/dist/esm/components/navigation/SegmentedControl/SegmentedControlItem.js.map +1 -0
  209. package/dist/esm/components/navigation/Tabs/Tab.js +0 -1
  210. package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -1
  211. package/dist/esm/components/navigation/Tabs/Tabs.css.js +1 -1
  212. package/dist/esm/components/primitives/Avatar/Avatar.css.js +16 -0
  213. package/dist/esm/components/primitives/Avatar/Avatar.css.js.map +1 -0
  214. package/dist/esm/components/primitives/Avatar/Avatar.js +138 -0
  215. package/dist/esm/components/primitives/Avatar/Avatar.js.map +1 -0
  216. package/dist/esm/components/primitives/Avatar/AvatarGroup.js +81 -0
  217. package/dist/esm/components/primitives/Avatar/AvatarGroup.js.map +1 -0
  218. package/dist/esm/components/primitives/Button/Button.css.js +1 -1
  219. package/dist/esm/components/primitives/Checkbox/Checkbox.css.js +1 -1
  220. package/dist/esm/components/primitives/Checkbox/Checkbox.js +9 -1
  221. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -1
  222. package/dist/esm/components/primitives/Collapsible/Collapsible.css.js +1 -1
  223. package/dist/esm/components/primitives/IconButton/IconButton.css.js +1 -1
  224. package/dist/esm/components/primitives/Kbd/Kbd.css.js +9 -0
  225. package/dist/esm/components/primitives/Kbd/Kbd.css.js.map +1 -0
  226. package/dist/esm/components/primitives/Kbd/Kbd.js +46 -0
  227. package/dist/esm/components/primitives/Kbd/Kbd.js.map +1 -0
  228. package/dist/esm/components/primitives/Link/Link.css.js +11 -0
  229. package/dist/esm/components/primitives/Link/Link.css.js.map +1 -0
  230. package/dist/esm/components/primitives/Link/Link.js +160 -0
  231. package/dist/esm/components/primitives/Link/Link.js.map +1 -0
  232. package/dist/esm/components/primitives/Popover/Popover.css.js +1 -1
  233. package/dist/esm/components/primitives/Radio/Radio.css.js +18 -0
  234. package/dist/esm/components/primitives/Radio/Radio.css.js.map +1 -0
  235. package/dist/esm/components/primitives/Radio/Radio.js +109 -0
  236. package/dist/esm/components/primitives/Radio/Radio.js.map +1 -0
  237. package/dist/esm/components/primitives/Radio/RadioGroup.js +82 -0
  238. package/dist/esm/components/primitives/Radio/RadioGroup.js.map +1 -0
  239. package/dist/esm/components/primitives/Switch/Switch.css.js +1 -1
  240. package/dist/esm/components/primitives/TextArea/TextArea.css.js +1 -1
  241. package/dist/esm/components/primitives/Tooltip/Tooltip.js +7 -2
  242. package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -1
  243. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.css.js +7 -0
  244. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.css.js.map +1 -0
  245. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js +38 -0
  246. package/dist/esm/components/primitives/VisuallyHidden/VisuallyHidden.js.map +1 -0
  247. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +2 -10
  248. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -1
  249. package/dist/esm/context/KeyboardContext.js +35 -10
  250. package/dist/esm/context/KeyboardContext.js.map +1 -1
  251. package/dist/esm/hooks/useClickOutside/useClickOutside.js +60 -0
  252. package/dist/esm/hooks/useClickOutside/useClickOutside.js.map +1 -0
  253. package/dist/esm/hooks/useClipboard/useClipboard.js +147 -0
  254. package/dist/esm/hooks/useClipboard/useClipboard.js.map +1 -0
  255. package/dist/esm/hooks/useControlledState/useControlledState.js +75 -0
  256. package/dist/esm/hooks/useControlledState/useControlledState.js.map +1 -0
  257. package/dist/esm/hooks/useDisclosure/useDisclosure.js +49 -0
  258. package/dist/esm/hooks/useDisclosure/useDisclosure.js.map +1 -0
  259. package/dist/esm/{components/feedback/Dialog → hooks/useFocusTrap}/useFocusTrap.js +7 -7
  260. package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -0
  261. package/dist/esm/hooks/useHotkey/useHotkey.js +203 -0
  262. package/dist/esm/hooks/useHotkey/useHotkey.js.map +1 -0
  263. package/dist/esm/hooks/useKeyboard/useKeyboard.js +56 -0
  264. package/dist/esm/hooks/useKeyboard/useKeyboard.js.map +1 -0
  265. package/dist/esm/hooks/useKeyboard/utils.js +56 -0
  266. package/dist/esm/hooks/useKeyboard/utils.js.map +1 -0
  267. package/dist/esm/hooks/useMergedRef/useMergedRef.js +39 -0
  268. package/dist/esm/hooks/useMergedRef/useMergedRef.js.map +1 -0
  269. package/dist/esm/hooks/useResizeObserver/useResizeObserver.js +75 -0
  270. package/dist/esm/hooks/useResizeObserver/useResizeObserver.js.map +1 -0
  271. package/dist/esm/hooks/useTheme/useTheme.js +199 -0
  272. package/dist/esm/hooks/useTheme/useTheme.js.map +1 -0
  273. package/dist/esm/index.js +104 -3
  274. package/dist/esm/index.js.map +1 -1
  275. package/dist/esm/theme/ThemeProvider.js +3 -2
  276. package/dist/esm/theme/ThemeProvider.js.map +1 -1
  277. package/dist/esm/theme/createLightTheme.js +29 -0
  278. package/dist/esm/theme/createLightTheme.js.map +1 -0
  279. package/dist/esm/theme/darkThemeValues.js +155 -0
  280. package/dist/esm/theme/darkThemeValues.js.map +1 -0
  281. package/dist/esm/theme/index.js +10 -0
  282. package/dist/esm/theme/index.js.map +1 -0
  283. package/dist/esm/theme/lightTheme.css.js +6 -0
  284. package/dist/esm/theme/lightTheme.css.js.map +1 -0
  285. package/dist/esm/theme/lightThemeValues.js +164 -0
  286. package/dist/esm/theme/lightThemeValues.js.map +1 -0
  287. package/dist/esm/theme/themeContractData.js +161 -0
  288. package/dist/esm/theme/themeContractData.js.map +1 -0
  289. package/dist/esm/theme-values.js +4 -0
  290. package/dist/esm/theme-values.js.map +1 -0
  291. package/dist/esm/utils/animations.css.js +8 -6
  292. package/dist/esm/utils/animations.css.js.map +1 -1
  293. package/dist/esm/utils/devWarn.js +36 -0
  294. package/dist/esm/utils/devWarn.js.map +1 -0
  295. package/dist/esm/utils/platform.js +91 -0
  296. package/dist/esm/utils/platform.js.map +1 -0
  297. package/dist/tokens/tokens.dark.css +98 -0
  298. package/dist/tokens/tokens.json +851 -0
  299. package/dist/tokens/tokens.light.css +98 -0
  300. package/dist/types/components/Icons/AddIcon.d.ts +33 -0
  301. package/dist/types/components/Icons/AiChatIcon.d.ts +34 -0
  302. package/dist/types/components/Icons/AiSparklesIcon.d.ts +34 -0
  303. package/dist/types/components/Icons/ArrowDownIcon.d.ts +33 -0
  304. package/dist/types/components/Icons/ArrowLeftIcon.d.ts +33 -0
  305. package/dist/types/components/Icons/ArrowRightIcon.d.ts +33 -0
  306. package/dist/types/components/Icons/ArrowUpIcon.d.ts +33 -0
  307. package/dist/types/components/Icons/BookmarkIcon.d.ts +33 -0
  308. package/dist/types/components/Icons/CalendarIcon.d.ts +33 -0
  309. package/dist/types/components/Icons/CheckIcon.d.ts +33 -0
  310. package/dist/types/components/Icons/ChevronDownIcon.d.ts +33 -0
  311. package/dist/types/components/Icons/ChevronUpIcon.d.ts +33 -0
  312. package/dist/types/components/Icons/CircleIcon.d.ts +33 -0
  313. package/dist/types/components/Icons/ClockIcon.d.ts +33 -0
  314. package/dist/types/components/Icons/CloseIcon.d.ts +33 -0
  315. package/dist/types/components/Icons/CodeIcon.d.ts +33 -0
  316. package/dist/types/components/Icons/CopyIcon.d.ts +33 -0
  317. package/dist/types/components/Icons/CutIcon.d.ts +33 -0
  318. package/dist/types/components/Icons/DownloadIcon.d.ts +33 -0
  319. package/dist/types/components/Icons/EditIcon.d.ts +33 -0
  320. package/dist/types/components/Icons/ErrorIcon.d.ts +33 -0
  321. package/dist/types/components/Icons/EyeDropperIcon.d.ts +34 -0
  322. package/dist/types/components/Icons/EyeIcon.d.ts +33 -0
  323. package/dist/types/components/Icons/FilterIcon.d.ts +33 -0
  324. package/dist/types/components/Icons/FolderIcon.d.ts +33 -0
  325. package/dist/types/components/Icons/FullscreenIcon.d.ts +33 -0
  326. package/dist/types/components/Icons/GridIcon.d.ts +33 -0
  327. package/dist/types/components/Icons/HeartIcon.d.ts +33 -0
  328. package/dist/types/components/Icons/HelpIcon.d.ts +33 -0
  329. package/dist/types/components/Icons/HomeIcon.d.ts +33 -0
  330. package/dist/types/components/Icons/InfoIcon.d.ts +33 -0
  331. package/dist/types/components/Icons/LinkIcon.d.ts +33 -0
  332. package/dist/types/components/Icons/ListIcon.d.ts +33 -0
  333. package/dist/types/components/Icons/LockIcon.d.ts +33 -0
  334. package/dist/types/components/Icons/MaximizeIcon.d.ts +33 -0
  335. package/dist/types/components/Icons/MenuIcon.d.ts +33 -0
  336. package/dist/types/components/Icons/MinimizeIcon.d.ts +33 -0
  337. package/dist/types/components/Icons/PasteIcon.d.ts +33 -0
  338. package/dist/types/components/Icons/PlayIcon.d.ts +33 -0
  339. package/dist/types/components/Icons/RedoIcon.d.ts +33 -0
  340. package/dist/types/components/Icons/RefreshIcon.d.ts +33 -0
  341. package/dist/types/components/Icons/RobotIcon.d.ts +33 -0
  342. package/dist/types/components/Icons/SaveIcon.d.ts +33 -0
  343. package/dist/types/components/Icons/SearchIcon.d.ts +33 -0
  344. package/dist/types/components/Icons/SettingsIcon.d.ts +33 -0
  345. package/dist/types/components/Icons/SortIcon.d.ts +33 -0
  346. package/dist/types/components/Icons/StarIcon.d.ts +33 -0
  347. package/dist/types/components/Icons/SuccessIcon.d.ts +33 -0
  348. package/dist/types/components/Icons/TagIcon.d.ts +33 -0
  349. package/dist/types/components/Icons/TangentAlignedIcon.d.ts +15 -0
  350. package/dist/types/components/Icons/TangentAutoIcon.d.ts +15 -0
  351. package/dist/types/components/Icons/TangentFreeIcon.d.ts +15 -0
  352. package/dist/types/components/Icons/TangentLinearIcon.d.ts +15 -0
  353. package/dist/types/components/Icons/TangentMirroredIcon.d.ts +15 -0
  354. package/dist/types/components/Icons/TangentStepIcon.d.ts +15 -0
  355. package/dist/types/components/Icons/TrashIcon.d.ts +33 -0
  356. package/dist/types/components/Icons/UndoIcon.d.ts +33 -0
  357. package/dist/types/components/Icons/UnlockIcon.d.ts +33 -0
  358. package/dist/types/components/Icons/UploadIcon.d.ts +33 -0
  359. package/dist/types/components/Icons/UserIcon.d.ts +33 -0
  360. package/dist/types/components/Icons/WarningIcon.d.ts +33 -0
  361. package/dist/types/components/Icons/ZoomInIcon.d.ts +33 -0
  362. package/dist/types/components/Icons/ZoomOutIcon.d.ts +33 -0
  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/ProgressBar/CircularProgress.d.ts +313 -0
  371. package/dist/types/components/feedback/ProgressBar/ProgressBar.d.ts +315 -0
  372. package/dist/types/components/feedback/ProgressBar/ProgressBar.types.d.ts +132 -0
  373. package/dist/types/components/feedback/Skeleton/Skeleton.d.ts +312 -0
  374. package/dist/types/components/feedback/Skeleton/Skeleton.types.d.ts +82 -0
  375. package/dist/types/components/feedback/Skeleton/SkeletonGroup.d.ts +313 -0
  376. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEllipsis.d.ts +297 -0
  377. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbItem.d.ts +304 -0
  378. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbSeparator.d.ts +296 -0
  379. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts +311 -0
  380. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +89 -0
  381. package/dist/types/components/navigation/SegmentedControl/SegmentedControl.d.ts +24 -0
  382. package/dist/types/components/navigation/SegmentedControl/SegmentedControl.types.d.ts +85 -0
  383. package/dist/types/components/navigation/SegmentedControl/SegmentedControlItem.d.ts +12 -0
  384. package/dist/types/components/primitives/Avatar/Avatar.d.ts +317 -0
  385. package/dist/types/components/primitives/Avatar/Avatar.types.d.ts +139 -0
  386. package/dist/types/components/primitives/Avatar/AvatarGroup.d.ts +316 -0
  387. package/dist/types/components/primitives/Button/Button.d.ts +2 -2
  388. package/dist/types/components/primitives/IconButton/IconButton.d.ts +2 -2
  389. package/dist/types/components/primitives/Kbd/Kbd.d.ts +307 -0
  390. package/dist/types/components/primitives/Kbd/Kbd.types.d.ts +49 -0
  391. package/dist/types/components/primitives/Link/Link.d.ts +20 -0
  392. package/dist/types/components/primitives/Link/Link.types.d.ts +123 -0
  393. package/dist/types/components/primitives/Radio/Radio.d.ts +319 -0
  394. package/dist/types/components/primitives/Radio/Radio.types.d.ts +155 -0
  395. package/dist/types/components/primitives/Radio/RadioGroup.d.ts +320 -0
  396. package/dist/types/components/primitives/VisuallyHidden/VisuallyHidden.d.ts +316 -0
  397. package/dist/types/components/primitives/VisuallyHidden/VisuallyHidden.types.d.ts +29 -0
  398. package/dist/types/context/KeyboardContext.d.ts +20 -0
  399. package/dist/types/hooks/useClickOutside/useClickOutside.d.ts +37 -0
  400. package/dist/types/hooks/useClipboard/useClipboard.d.ts +24 -0
  401. package/dist/types/hooks/useClipboard/useClipboard.types.d.ts +22 -0
  402. package/dist/types/hooks/useControlledState/useControlledState.d.ts +38 -0
  403. package/dist/types/hooks/useDisclosure/useDisclosure.d.ts +25 -0
  404. package/dist/types/hooks/useDisclosure/useDisclosure.types.d.ts +22 -0
  405. package/dist/types/hooks/useFocusTrap/useFocusTrap.d.ts +30 -0
  406. package/dist/types/hooks/useHotkey/useHotkey.d.ts +23 -0
  407. package/dist/types/hooks/useHotkey/useHotkey.types.d.ts +36 -0
  408. package/dist/types/hooks/useKeyboard/types.d.ts +14 -0
  409. package/dist/types/hooks/useKeyboard/useKeyboard.d.ts +36 -0
  410. package/dist/types/hooks/useKeyboard/utils.d.ts +6 -0
  411. package/dist/types/hooks/useMergedRef/useMergedRef.d.ts +22 -0
  412. package/dist/types/hooks/useResizeObserver/useResizeObserver.d.ts +35 -0
  413. package/dist/types/hooks/useTheme/useTheme.d.ts +48 -0
  414. package/dist/types/hooks/useTheme/useTheme.types.d.ts +60 -0
  415. package/dist/types/index.d.ts +120 -3
  416. package/dist/types/theme/contract.css.d.ts +125 -121
  417. package/dist/types/theme/createCustomTheme.d.ts +1 -1
  418. package/dist/types/theme/createLightTheme.d.ts +24 -0
  419. package/dist/types/theme/{darkTheme.css.d.ts → darkThemeValues.d.ts} +6 -2
  420. package/dist/types/theme/globalScrollbars.css.d.ts +15 -0
  421. package/dist/types/theme/index.d.ts +9 -0
  422. package/dist/types/theme/lightTheme.css.d.ts +17 -0
  423. package/dist/types/theme/lightThemeValues.d.ts +168 -0
  424. package/dist/types/theme/themeContractData.d.ts +160 -0
  425. package/dist/types/theme-values.d.ts +10 -0
  426. package/dist/types/utils/animations.css.d.ts +3 -1
  427. package/dist/types/utils/platform.d.ts +16 -0
  428. package/package.json +13 -4
  429. package/dist/esm/components/feedback/Dialog/useFocusTrap.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,195 @@
1
1
  # entangle-ui
2
2
 
3
+ ## 0.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#66](https://github.com/SebastianWebdev/entangle-ui/pull/66) [`ca1fc51`](https://github.com/SebastianWebdev/entangle-ui/commit/ca1fc51fa0db1aac0a090f940886bab8aba02962) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - Fix runtime crash in `Slider`, `NumberInput`, and `VectorInput` when used without a manual `KeyboardContextProvider` wrapper, and expose the icon set and provider from the package barrel.
8
+ - `useKeyboardContext` now returns a neutral keyboard state (no pressed keys, all modifiers `false`) when no provider is mounted, instead of throwing. This unblocks every minimal setup that renders a `Slider` / `NumberInput` directly under `ThemeProvider`.
9
+ - `ThemeProvider` now auto-mounts `KeyboardContextProvider` so apps get full Shift/Ctrl modifier awareness in `Slider` / `NumberInput` for free.
10
+ - `KeyboardContextProvider`, `useKeyboardContext`, `useEffectsOnKeyboard`, and the `KeyboardContextProviderProps` type are now exported from the package entry for explicit use in apps that don't render a `ThemeProvider`.
11
+ - The 63 built-in icon components (`SaveIcon`, `PlayIcon`, `AddIcon`, …) are now re-exported from the package entry, matching the documentation.
12
+
13
+ ## 0.8.0
14
+
15
+ ### Minor Changes
16
+
17
+ - [#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
18
+ notices, expired-credentials warnings, unsaved-changes banners, and similar
19
+ in-layout messages. Five semantic variants (`info`, `success`, `warning`,
20
+ `error`, `neutral`) drive the color and the default icon, with three visual
21
+ treatments: `subtle` (default), `solid`, and `outline`. Provide `onClose`
22
+ to render a dismiss button. Ships a compound API — `Alert.Title`,
23
+ `Alert.Description`, `Alert.Actions` — also exported as standalone
24
+ `AlertTitle`, `AlertDescription`, `AlertActions`. ARIA roles are derived
25
+ from the variant (`alert` for error/warning, `status` for info/success,
26
+ `region` for neutral). For transient confirmations like "File saved", reach
27
+ for `useToast` instead.
28
+
29
+ - [#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
30
+ named entities consistently across editor UIs. `Avatar` resolves an `src`
31
+ when one is available and falls back through initials (derived from `name`,
32
+ or set explicitly) to a generic user glyph; the fallback is always rendered
33
+ underneath the image so a slow load never produces a blank flash. Six sizes
34
+ (`xs` 16px → `xxl` 56px), three shapes (`circle`, `square`, `rounded`),
35
+ deterministic auto colour hashed from `name`, optional presence indicator
36
+ (`online` / `away` / `busy` / `offline`), and an interactive mode (`onClick`
37
+ makes it a focusable, Enter/Space-activatable button). `AvatarGroup`
38
+ overlaps multiple avatars with configurable spacing and collapses overflow
39
+ beyond `max` into a `+N` indicator with a tooltip listing the hidden names.
40
+
41
+ - [#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.
42
+
43
+ - [#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`.
44
+ - `useFocusTrap` was previously a private helper inside `Dialog`. It now lives in the public hooks API with the same `({ containerRef, enabled }) => onKeyDown` signature.
45
+ - `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.
46
+ - `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.
47
+
48
+ All three hooks have full documentation pages with runnable demos.
49
+
50
+ This is a pure extraction — no behavior changes in the affected components, all existing tests pass.
51
+
52
+ - [#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.
53
+
54
+ 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.
55
+
56
+ The hooks documentation site gets a new top-level "Hooks" section with a landing page and a dedicated page for `useControlledState`.
57
+
58
+ - [#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`.
59
+ - **`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`.
60
+ - **`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.
61
+ - **`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`.
62
+ - **`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.
63
+
64
+ 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.
65
+
66
+ - [#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
67
+ `createLightTheme()` helper that generates a build-time CSS class via
68
+ Vanilla Extract. Unlike the dark theme, the light preset is not applied
69
+ on `:root` — consumers opt in by wrapping a subtree with
70
+ `VanillaThemeProvider` and the generated class, so the same theming
71
+ machinery powers both whole-app light mode and scoped light surfaces
72
+ inside a dark app (and vice versa). Structural tokens (spacing,
73
+ typography, border-radius, transitions, z-index) are identical between
74
+ themes so layout and rhythm don't drift when users switch modes.
75
+ Storybook gains a global theme toggle for inspecting any story under
76
+ either theme.
77
+
78
+ - [#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,
79
+ hover, and focus behavior, plus `default` / `subtle` / `inline` variants
80
+ and `sm` / `md` / `lg` sizes. External links are auto-detected from
81
+ `http(s)://` hrefs (or set explicitly), get an external-link icon, and
82
+ ship `target="_blank" rel="noopener noreferrer"` along with an "(opens in
83
+ new tab)" screen-reader announcement. Polymorphic via `as` with a typed
84
+ generic so consumers can pass a router's link component (react-router,
85
+ TanStack Router, Next.js) and get the router's own props (`to`, …)
86
+ type-checked. `disabled` renders as a non-anchor span regardless of `as`,
87
+ strips navigation handlers, and suppresses the external affordance —
88
+ disabled router links cannot navigate via mouse, keyboard, or
89
+ programmatic activation.
90
+
91
+ - [#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
92
+ operations like uploads, exports, renders, and batch jobs. Both share `value`
93
+ / `min` / `max` semantics and four named colors (`primary`, `success`,
94
+ `warning`, `error`) plus arbitrary CSS color pass-through. Omitting `value`
95
+ renders an indeterminate variant — a sliding gradient on the linear bar, a
96
+ rotating arc on the circular one — with a `prefers-reduced-motion` fallback.
97
+ `ProgressBar` ships in three heights (`sm` 2px → `lg` 8px), supports inline /
98
+ overlay / custom labels, and an optional striped (optionally animated)
99
+ texture overlay; `CircularProgress` ranges from `xs` (16px) to `xl` (48px),
100
+ auto-derives stroke thickness from size (overridable via `thickness`), and
101
+ can render a center label for `lg`+ sizes. Both expose
102
+ `role="progressbar"` with the appropriate `aria-value*` attributes.
103
+
104
+ - [#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.
105
+ - `Radio`: standalone (controlled or uncontrolled) or context-driven, with sizes (sm/md/lg), label position, helper text, and error state.
106
+ - `RadioGroup`: manages exclusive selection, propagates `name`, `size`, `disabled`, and `error` via context, supports vertical/horizontal orientation, custom spacing, required/error states, and helper text.
107
+ - Native `<input type="radio">` under the hood so browser arrow-key navigation and form submission work out of the box.
108
+ - Honors `prefers-reduced-motion`.
109
+
110
+ - [#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.
111
+
112
+ - [#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
113
+ states. Supports `rect`, `circle`, and `line` shapes with `pulse`, `wave`,
114
+ or no animation. Animations honor `prefers-reduced-motion`. `SkeletonGroup`
115
+ auto-generates a configurable number of skeletons with consistent spacing
116
+ and direction, or lays out custom children.
117
+
118
+ - [#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
119
+ now publishes `entangle-ui/tokens.json` (a loosely DTCG-aligned export of
120
+ both themes), `entangle-ui/tokens.dark.css` (the dark `--etui-*` custom
121
+ properties scoped to `:root`), and `entangle-ui/tokens.light.css` (the light
122
+ preset scoped to the documented `etui-theme-light` class). Figma plugins,
123
+ Style Dictionary pipelines, and projects that don't use Vanilla Extract can
124
+ now consume the same values the components compile against. The tree-shaking
125
+ guarantees of the main entry point are unchanged — these files are only
126
+ loaded by consumers that explicitly import them.
127
+
128
+ - [#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
129
+ control for 3D editor interfaces. Composes `VectorInput`, `Select` and
130
+ `PropertyRow` into a single high-level component, mirroring the transform
131
+ widget found in Blender, Unity and Unreal. Renders three rows (position,
132
+ rotation, scale) plus a coordinate-space dropdown and a linked-scale lock
133
+ toggle, with sensible defaults for precision (`3 / 1 / 3`), step
134
+ (`0.1 / 1 / 0.01`) and units (`m / ° / ''`). Three independent atoms —
135
+ `value`, `coordinateSpace`, `linkedScale` — each support controlled and
136
+ uncontrolled usage. `linkedScale` performs uniform (not proportional)
137
+ scaling and does not snap values when toggled. Hide rows via `show`,
138
+ swap the coordinate-space options via `coordinateSpaceOptions`, and turn
139
+ on per-row reset buttons with `showReset`. The component intentionally
140
+ renders no `PropertySection` wrapper — slot it inside one of your own.
141
+ Note: changing the coordinate-space dropdown does not transform the
142
+ numeric values; the consumer's editor logic is responsible for re-projecting
143
+ them.
144
+
145
+ - [#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.
146
+
147
+ - [#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
148
+ variable snapshot from `:root`, the detected variant (`'dark'` / `'light'` /
149
+ `'custom'`), and `getToken(path)` / `getVar(path)` helpers for paths like
150
+ `'colors.accent.primary'`. Use it for canvas drawing, third-party libraries
151
+ that take colours as plain strings, and conditional logic — keep using
152
+ Vanilla Extract `vars.*` for ordinary styling. SSR-safe: returns dark-theme
153
+ defaults when no DOM is available.
154
+
155
+ - [#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
156
+ it accessible to screen readers. Implements the canonical SR-only style
157
+ and supports a `focusable` mode for skip-to-content links (revealed via
158
+ `:focus-within`). Renders as `<span>` by default with `as` overrides for
159
+ `div`, `label`, and `p`.
160
+
161
+ ### Patch Changes
162
+
163
+ - [#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
164
+ instead of inline JSX. The visual output (24px circle, initials fallback,
165
+ image when available) is unchanged from a consumer's perspective, but the
166
+ chat avatar now picks up Avatar's deterministic auto color, image-error
167
+ fallback chain, and standard accessible-name handling for free.
168
+
169
+ - [#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
170
+ animates anything. Loading spinners (Button, IconButton), Dialog overlay
171
+ and panel fade-in/out, Toast slide-in and auto-dismiss progress bar,
172
+ Select dropdown scale-in, Popover entry, Tooltip popup transition, Switch
173
+ thumb travel, Checkbox check-mark draw, expand/collapse chevrons (Accordion,
174
+ Collapsible, Select, TreeView, PropertySection, ChatPanel tool-call),
175
+ Accordion and Collapsible content height transitions, Avatar / Slider /
176
+ ColorPicker hover scale effects, and every `transition: all` block on
177
+ interactive primitives now collapse to a static state under reduced
178
+ motion. Direct-manipulation interactions (drag, scrub, gizmo rotation,
179
+ focus rings, hover color changes) are preserved. A new
180
+ [Accessibility](https://entangle-ui.dev/guides/accessibility) guide page
181
+ documents the library's reduced-motion stance and shows how to follow the
182
+ same pattern in consumer code.
183
+
184
+ - [#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.
185
+
186
+ - [#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.
187
+ The `NumberInput` inside each axis previously took its intrinsic content
188
+ width, causing values to clip and visually overlap when the row was tight
189
+ (typical inside property panels or alongside a lock toggle). The
190
+ `NumberInput` container now fills the remaining axis space with
191
+ `flex: 1; min-width: 0`, so axes share width evenly and shrink gracefully.
192
+
3
193
  ## 0.7.0
4
194
 
5
195
  ### Minor 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
  }