@ahrowe/ui 0.34.0 → 0.35.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 (516) hide show
  1. package/README.md +101 -40
  2. package/dist/esm/common/accordion/accordion.mjs +1 -1
  3. package/dist/esm/common/accordion/accordion.mjs.map +1 -1
  4. package/dist/esm/common/accordion/accordion.module.mjs +1 -1
  5. package/dist/esm/common/accordion/accordion.module.mjs.map +1 -1
  6. package/dist/esm/common/accordion/accordion.plain.module.mjs +1 -1
  7. package/dist/esm/common/accordion/accordion.plain.module.mjs.map +1 -1
  8. package/dist/esm/common/accordion/accordion.primary.module.mjs +1 -1
  9. package/dist/esm/common/accordion/accordion.primary.module.mjs.map +1 -1
  10. package/dist/esm/common/accordion/accordion.types.mjs +1 -1
  11. package/dist/esm/common/accordion/accordion.types.mjs.map +1 -1
  12. package/dist/esm/common/actionButtons/actionButtons.mjs +1 -1
  13. package/dist/esm/common/actionButtons/actionButtons.mjs.map +1 -1
  14. package/dist/esm/common/actionButtons/actionButtons.module.mjs +1 -1
  15. package/dist/esm/common/actionIcon/actionIcon.mjs +1 -1
  16. package/dist/esm/common/actionIcon/actionIcon.mjs.map +1 -1
  17. package/dist/esm/common/actionIcon/actionIcon.module.mjs +1 -1
  18. package/dist/esm/common/alert/alert.mjs +1 -1
  19. package/dist/esm/common/alert/alert.mjs.map +1 -1
  20. package/dist/esm/common/alert/alert.module.mjs +1 -1
  21. package/dist/esm/common/alert/alert.types.mjs +1 -1
  22. package/dist/esm/common/alert/alert.types.mjs.map +1 -1
  23. package/dist/esm/common/animatedIcon/animatedIcon.mjs +1 -1
  24. package/dist/esm/common/animatedIcon/animatedIcon.mjs.map +1 -1
  25. package/dist/esm/common/animatedIcon/animatedIcon.module.mjs +1 -1
  26. package/dist/esm/common/animatedLogo/animatedLogo.mjs +1 -1
  27. package/dist/esm/common/animatedLogo/animatedLogo.mjs.map +1 -1
  28. package/dist/esm/common/animatedLogo/animatedLogo.module.mjs +1 -1
  29. package/dist/esm/common/animatedText/animatedText.mjs +1 -1
  30. package/dist/esm/common/animatedText/animatedText.mjs.map +1 -1
  31. package/dist/esm/common/animatedText/animatedText.module.mjs +1 -1
  32. package/dist/esm/common/animatedText/animatedText.types.mjs +1 -1
  33. package/dist/esm/common/animatedText/animatedText.types.mjs.map +1 -1
  34. package/dist/esm/common/avatar/avatar.mjs +1 -1
  35. package/dist/esm/common/avatar/avatar.mjs.map +1 -1
  36. package/dist/esm/common/avatar/avatar.module.mjs +1 -1
  37. package/dist/esm/common/avatar/avatarGroup.mjs +1 -1
  38. package/dist/esm/common/avatar/avatarGroup.mjs.map +1 -1
  39. package/dist/esm/common/badge/badge.mjs +1 -1
  40. package/dist/esm/common/badge/badge.mjs.map +1 -1
  41. package/dist/esm/common/badge/badge.module.mjs +1 -1
  42. package/dist/esm/common/badge/badge.types.mjs +1 -1
  43. package/dist/esm/common/badge/badge.types.mjs.map +1 -1
  44. package/dist/esm/common/bodyEnd/bodyEnd.mjs +1 -1
  45. package/dist/esm/common/bodyEnd/bodyEnd.mjs.map +1 -1
  46. package/dist/esm/common/breadcrumb/breadcrumb.mjs +1 -1
  47. package/dist/esm/common/breadcrumb/breadcrumb.mjs.map +1 -1
  48. package/dist/esm/common/breadcrumb/breadcrumb.module.mjs +1 -1
  49. package/dist/esm/common/button/button.mjs +1 -1
  50. package/dist/esm/common/button/button.mjs.map +1 -1
  51. package/dist/esm/common/button/button.module.mjs +1 -1
  52. package/dist/esm/common/button/button.types.mjs +1 -1
  53. package/dist/esm/common/button/button.types.mjs.map +1 -1
  54. package/dist/esm/common/buttonGroup/buttonGroup.mjs +1 -1
  55. package/dist/esm/common/buttonGroup/buttonGroup.mjs.map +1 -1
  56. package/dist/esm/common/buttonGroup/buttonGroup.module.mjs +1 -1
  57. package/dist/esm/common/buttonGroup/buttonGroup.types.mjs +1 -1
  58. package/dist/esm/common/buttonGroup/buttonGroup.types.mjs.map +1 -1
  59. package/dist/esm/common/card/Card.mjs +1 -1
  60. package/dist/esm/common/card/Card.mjs.map +1 -1
  61. package/dist/esm/common/card/CardActions.mjs +1 -1
  62. package/dist/esm/common/card/CardActions.mjs.map +1 -1
  63. package/dist/esm/common/card/CardContent.mjs +1 -1
  64. package/dist/esm/common/card/CardContent.mjs.map +1 -1
  65. package/dist/esm/common/card/CardHeader.mjs +1 -1
  66. package/dist/esm/common/card/CardHeader.mjs.map +1 -1
  67. package/dist/esm/common/card/CardMedia.mjs +1 -1
  68. package/dist/esm/common/card/CardMedia.mjs.map +1 -1
  69. package/dist/esm/common/card/card.module.mjs +1 -1
  70. package/dist/esm/common/card/card.module.mjs.map +1 -1
  71. package/dist/esm/common/card/card.types.mjs +1 -1
  72. package/dist/esm/common/card/card.types.mjs.map +1 -1
  73. package/dist/esm/common/carousel/carousel.mjs +1 -1
  74. package/dist/esm/common/carousel/carousel.mjs.map +1 -1
  75. package/dist/esm/common/carousel/carousel.module.mjs +1 -1
  76. package/dist/esm/common/checkbox/checkbox.mjs +1 -1
  77. package/dist/esm/common/checkbox/checkbox.mjs.map +1 -1
  78. package/dist/esm/common/checkbox/checkbox.module.mjs +1 -1
  79. package/dist/esm/common/checkbox/checkbox.module.mjs.map +1 -1
  80. package/dist/esm/common/chip/chip.mjs +1 -1
  81. package/dist/esm/common/chip/chip.mjs.map +1 -1
  82. package/dist/esm/common/chip/chip.module.mjs +1 -1
  83. package/dist/esm/common/chip/chip.types.mjs +1 -1
  84. package/dist/esm/common/chip/chip.types.mjs.map +1 -1
  85. package/dist/esm/common/chip/chipContainer.mjs +1 -1
  86. package/dist/esm/common/chip/chipContainer.mjs.map +1 -1
  87. package/dist/esm/common/colorPicker/colorPicker.mjs +1 -1
  88. package/dist/esm/common/colorPicker/colorPicker.mjs.map +1 -1
  89. package/dist/esm/common/colorPicker/colorPicker.module.mjs +1 -1
  90. package/dist/esm/common/colorPicker/colorPicker.module.mjs.map +1 -1
  91. package/dist/esm/common/colorPicker/toHex.mjs +1 -1
  92. package/dist/esm/common/colorPicker/toHex.mjs.map +1 -1
  93. package/dist/esm/common/configProvider/configProvider.mjs +1 -1
  94. package/dist/esm/common/configProvider/configProvider.mjs.map +1 -1
  95. package/dist/esm/common/configProvider/presentation.types.mjs +1 -1
  96. package/dist/esm/common/configProvider/presentation.types.mjs.map +1 -1
  97. package/dist/esm/common/configProvider/useComponentDefaults.mjs +1 -1
  98. package/dist/esm/common/configProvider/useComponentDefaults.mjs.map +1 -1
  99. package/dist/esm/common/configProvider/useLabels.mjs +1 -1
  100. package/dist/esm/common/configProvider/useLabels.mjs.map +1 -1
  101. package/dist/esm/common/configProvider/usePresentationDefault.mjs +1 -1
  102. package/dist/esm/common/configProvider/usePresentationDefault.mjs.map +1 -1
  103. package/dist/esm/common/confirmModal/confirmModal.mjs +1 -1
  104. package/dist/esm/common/confirmModal/confirmModal.mjs.map +1 -1
  105. package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs +1 -1
  106. package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs.map +1 -1
  107. package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.module.mjs +1 -1
  108. package/dist/esm/common/datePicker/dateFunctions.mjs +1 -1
  109. package/dist/esm/common/datePicker/dateFunctions.mjs.map +1 -1
  110. package/dist/esm/common/datePicker/datePicker.mjs +1 -1
  111. package/dist/esm/common/datePicker/datePicker.mjs.map +1 -1
  112. package/dist/esm/common/datePicker/datePicker.module.mjs +1 -1
  113. package/dist/esm/common/divider/divider.mjs +1 -1
  114. package/dist/esm/common/divider/divider.mjs.map +1 -1
  115. package/dist/esm/common/divider/divider.module.mjs +1 -1
  116. package/dist/esm/common/divider/divider.types.mjs +1 -1
  117. package/dist/esm/common/divider/divider.types.mjs.map +1 -1
  118. package/dist/esm/common/drawer/drawer.mjs +1 -1
  119. package/dist/esm/common/drawer/drawer.mjs.map +1 -1
  120. package/dist/esm/common/drawer/drawer.module.mjs +1 -1
  121. package/dist/esm/common/dropZone/dropZone.mjs +1 -1
  122. package/dist/esm/common/dropZone/dropZone.mjs.map +1 -1
  123. package/dist/esm/common/dropZone/dropZone.module.mjs +1 -1
  124. package/dist/esm/common/dropZone/dropZone.types.mjs +1 -1
  125. package/dist/esm/common/dropZone/dropZone.types.mjs.map +1 -1
  126. package/dist/esm/common/dropdown/dropdown.mjs +1 -1
  127. package/dist/esm/common/dropdown/dropdown.mjs.map +1 -1
  128. package/dist/esm/common/dropdown/dropdown.module.mjs +1 -1
  129. package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -1
  130. package/dist/esm/common/emptyState/emptyState.mjs +1 -1
  131. package/dist/esm/common/emptyState/emptyState.mjs.map +1 -1
  132. package/dist/esm/common/emptyState/emptyState.module.mjs +1 -1
  133. package/dist/esm/common/errorBoundary/errorBoundary.mjs +1 -1
  134. package/dist/esm/common/errorBoundary/errorBoundary.mjs.map +1 -1
  135. package/dist/esm/common/errorBoundary/errorBoundary.module.mjs +1 -1
  136. package/dist/esm/common/fab/components/fabBase/fabBase.mjs +1 -1
  137. package/dist/esm/common/fab/components/fabBase/fabBase.mjs.map +1 -1
  138. package/dist/esm/common/fab/components/fabBase/fabBase.module.mjs +1 -1
  139. package/dist/esm/common/fab/fab.mjs +1 -1
  140. package/dist/esm/common/fab/fab.mjs.map +1 -1
  141. package/dist/esm/common/fab/fab.module.mjs +1 -1
  142. package/dist/esm/common/fab/fab.module.mjs.map +1 -1
  143. package/dist/esm/common/flip/flip.mjs +1 -1
  144. package/dist/esm/common/flip/flip.mjs.map +1 -1
  145. package/dist/esm/common/flip/flip.module.mjs +1 -1
  146. package/dist/esm/common/floorPlan/floorPlan.faces.mjs +1 -1
  147. package/dist/esm/common/floorPlan/floorPlan.faces.mjs.map +1 -1
  148. package/dist/esm/common/floorPlan/floorPlan.geometry.mjs +1 -1
  149. package/dist/esm/common/floorPlan/floorPlan.geometry.mjs.map +1 -1
  150. package/dist/esm/common/floorPlan/floorPlan.graph.mjs +1 -1
  151. package/dist/esm/common/floorPlan/floorPlan.graph.mjs.map +1 -1
  152. package/dist/esm/common/floorPlan/floorPlan.hit.mjs +1 -1
  153. package/dist/esm/common/floorPlan/floorPlan.hit.mjs.map +1 -1
  154. package/dist/esm/common/floorPlan/floorPlan.json.mjs +1 -1
  155. package/dist/esm/common/floorPlan/floorPlan.json.mjs.map +1 -1
  156. package/dist/esm/common/floorPlan/floorPlan.mesh.mjs +1 -1
  157. package/dist/esm/common/floorPlan/floorPlan.mesh.mjs.map +1 -1
  158. package/dist/esm/common/floorPlan/floorPlan.path.mjs +1 -1
  159. package/dist/esm/common/floorPlan/floorPlan.path.mjs.map +1 -1
  160. package/dist/esm/common/floorPlan/floorPlan.plan.mjs +1 -1
  161. package/dist/esm/common/floorPlan/floorPlan.plan.mjs.map +1 -1
  162. package/dist/esm/common/floorPlan/floorPlan.rooms.mjs +1 -1
  163. package/dist/esm/common/floorPlan/floorPlan.rooms.mjs.map +1 -1
  164. package/dist/esm/common/floorPlan/floorPlan.snap.mjs +1 -1
  165. package/dist/esm/common/floorPlan/floorPlan.snap.mjs.map +1 -1
  166. package/dist/esm/common/floorPlan/floorPlan.triangulate.mjs +1 -1
  167. package/dist/esm/common/floorPlan/floorPlan.triangulate.mjs.map +1 -1
  168. package/dist/esm/common/floorPlan/floorPlan.types.mjs +1 -1
  169. package/dist/esm/common/floorPlan/floorPlan.types.mjs.map +1 -1
  170. package/dist/esm/common/floorPlan/legacySvg.mjs +1 -1
  171. package/dist/esm/common/floorPlan/legacySvg.mjs.map +1 -1
  172. package/dist/esm/common/hooks/useAnchorTracking.mjs +1 -1
  173. package/dist/esm/common/hooks/useAnchorTracking.mjs.map +1 -1
  174. package/dist/esm/common/hooks/useCoarsePointer.mjs +1 -1
  175. package/dist/esm/common/hooks/useCoarsePointer.mjs.map +1 -1
  176. package/dist/esm/common/hooks/useFocusBoundary.mjs +1 -1
  177. package/dist/esm/common/hooks/useFocusBoundary.mjs.map +1 -1
  178. package/dist/esm/common/hooks/useMediaQuery.mjs +1 -1
  179. package/dist/esm/common/hooks/useMediaQuery.mjs.map +1 -1
  180. package/dist/esm/common/hooks/useOverlay.mjs +1 -1
  181. package/dist/esm/common/hooks/useOverlay.mjs.map +1 -1
  182. package/dist/esm/common/hooks/useSheet.mjs +1 -1
  183. package/dist/esm/common/hooks/useSheet.mjs.map +1 -1
  184. package/dist/esm/common/hooks/useSwipeDismiss.mjs +1 -1
  185. package/dist/esm/common/hooks/useSwipeDismiss.mjs.map +1 -1
  186. package/dist/esm/common/hooks/useVisualViewportSize.mjs +1 -1
  187. package/dist/esm/common/hooks/useVisualViewportSize.mjs.map +1 -1
  188. package/dist/esm/common/iconPicker/iconPicker.mjs +1 -1
  189. package/dist/esm/common/iconPicker/iconPicker.mjs.map +1 -1
  190. package/dist/esm/common/iconPicker/iconPicker.module.mjs +1 -1
  191. package/dist/esm/common/idleManager/idleManager.mjs +1 -1
  192. package/dist/esm/common/idleManager/idleManager.mjs.map +1 -1
  193. package/dist/esm/common/infiniteBlock/infiniteBlock.mjs +1 -1
  194. package/dist/esm/common/infiniteBlock/infiniteBlock.mjs.map +1 -1
  195. package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs +1 -1
  196. package/dist/esm/common/input/input.mjs +1 -1
  197. package/dist/esm/common/input/input.mjs.map +1 -1
  198. package/dist/esm/common/input/input.module.mjs +1 -1
  199. package/dist/esm/common/input/input.module.mjs.map +1 -1
  200. package/dist/esm/common/input/input.types.mjs +1 -1
  201. package/dist/esm/common/input/input.types.mjs.map +1 -1
  202. package/dist/esm/common/inputDropdown/inputDropdown.mjs +1 -1
  203. package/dist/esm/common/inputDropdown/inputDropdown.mjs.map +1 -1
  204. package/dist/esm/common/inputDropdown/inputDropdown.module.mjs +1 -1
  205. package/dist/esm/common/interactableDiv/index.mjs +1 -1
  206. package/dist/esm/common/interactableDiv/index.mjs.map +1 -1
  207. package/dist/esm/common/interactableDiv/interactableDiv.mjs +1 -1
  208. package/dist/esm/common/interactableDiv/interactableDiv.mjs.map +1 -1
  209. package/dist/esm/common/interactableDiv/interactableDiv.module.mjs +1 -1
  210. package/dist/esm/common/kanbanBoard/KanbanBoard.mjs +1 -1
  211. package/dist/esm/common/kanbanBoard/KanbanBoard.mjs.map +1 -1
  212. package/dist/esm/common/kanbanBoard/KanbanColumn.mjs +1 -1
  213. package/dist/esm/common/kanbanBoard/KanbanColumn.mjs.map +1 -1
  214. package/dist/esm/common/kanbanBoard/KanbanItem.mjs +1 -1
  215. package/dist/esm/common/kanbanBoard/KanbanItem.mjs.map +1 -1
  216. package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs +1 -1
  217. package/dist/esm/common/kanbanBoard/kanbanBoard.utils.mjs +1 -1
  218. package/dist/esm/common/kanbanBoard/kanbanBoard.utils.mjs.map +1 -1
  219. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs +1 -1
  220. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs.map +1 -1
  221. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs +1 -1
  222. package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs +1 -1
  223. package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs.map +1 -1
  224. package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs +1 -1
  225. package/dist/esm/common/klipyPicker/klipyPicker.mjs +1 -1
  226. package/dist/esm/common/klipyPicker/klipyPicker.mjs.map +1 -1
  227. package/dist/esm/common/klipyPicker/klipyPicker.module.mjs +1 -1
  228. package/dist/esm/common/loading/iconLoading/iconLoading.mjs +1 -1
  229. package/dist/esm/common/loading/iconLoading/iconLoading.mjs.map +1 -1
  230. package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs +1 -1
  231. package/dist/esm/common/loading/iconLoading/index.mjs +1 -1
  232. package/dist/esm/common/loading/iconLoading/index.mjs.map +1 -1
  233. package/dist/esm/common/loading/spinnerLoading/index.mjs +1 -1
  234. package/dist/esm/common/loading/spinnerLoading/index.mjs.map +1 -1
  235. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs +1 -1
  236. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs.map +1 -1
  237. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs +1 -1
  238. package/dist/esm/common/menu/menu.mjs +1 -1
  239. package/dist/esm/common/menu/menu.mjs.map +1 -1
  240. package/dist/esm/common/menu/menu.module.mjs +1 -1
  241. package/dist/esm/common/menu/menu.types.mjs +1 -1
  242. package/dist/esm/common/menu/menu.types.mjs.map +1 -1
  243. package/dist/esm/common/modal/modal.mjs +1 -1
  244. package/dist/esm/common/modal/modal.mjs.map +1 -1
  245. package/dist/esm/common/modal/modal.module.mjs +1 -1
  246. package/dist/esm/common/modal/modal.module.mjs.map +1 -1
  247. package/dist/esm/common/multiSelect/multiSelect.mjs +1 -1
  248. package/dist/esm/common/multiSelect/multiSelect.mjs.map +1 -1
  249. package/dist/esm/common/multiSelect/multiSelect.module.mjs +1 -1
  250. package/dist/esm/common/multiSelect/multiSelect.module.mjs.map +1 -1
  251. package/dist/esm/common/numberInput/index.mjs +1 -1
  252. package/dist/esm/common/numberInput/index.mjs.map +1 -1
  253. package/dist/esm/common/numberInput/numberInput.mjs +1 -1
  254. package/dist/esm/common/numberInput/numberInput.mjs.map +1 -1
  255. package/dist/esm/common/numberInput/numberInput.module.mjs +1 -1
  256. package/dist/esm/common/numberInput/useStepRepeat.mjs +1 -1
  257. package/dist/esm/common/numberInput/useStepRepeat.mjs.map +1 -1
  258. package/dist/esm/common/optionPicker/optionPicker.mjs +1 -1
  259. package/dist/esm/common/optionPicker/optionPicker.mjs.map +1 -1
  260. package/dist/esm/common/optionPicker/optionPicker.module.mjs +1 -1
  261. package/dist/esm/common/otpInput/otpInput.mjs +1 -1
  262. package/dist/esm/common/otpInput/otpInput.mjs.map +1 -1
  263. package/dist/esm/common/otpInput/otpInput.module.mjs +1 -1
  264. package/dist/esm/common/otpInput/otpInput.types.mjs +1 -1
  265. package/dist/esm/common/otpInput/otpInput.types.mjs.map +1 -1
  266. package/dist/esm/common/overscroll/overscroll.mjs +1 -1
  267. package/dist/esm/common/overscroll/overscroll.mjs.map +1 -1
  268. package/dist/esm/common/overscroll/overscroll.module.mjs +1 -1
  269. package/dist/esm/common/pagination/pagination.mjs +1 -1
  270. package/dist/esm/common/pagination/pagination.mjs.map +1 -1
  271. package/dist/esm/common/pagination/pagination.module.mjs +1 -1
  272. package/dist/esm/common/planCanvas/planCanvas.mjs +1 -1
  273. package/dist/esm/common/planCanvas/planCanvas.mjs.map +1 -1
  274. package/dist/esm/common/planCanvas/planCanvas.module.mjs +1 -1
  275. package/dist/esm/common/popover/popover.mjs +1 -1
  276. package/dist/esm/common/popover/popover.mjs.map +1 -1
  277. package/dist/esm/common/popover/popover.module.mjs +1 -1
  278. package/dist/esm/common/popover/popover.types.mjs +1 -1
  279. package/dist/esm/common/popover/popover.types.mjs.map +1 -1
  280. package/dist/esm/common/popover/usePopoverPosition.mjs +1 -1
  281. package/dist/esm/common/popover/usePopoverPosition.mjs.map +1 -1
  282. package/dist/esm/common/progressBar/progressBar.mjs +1 -1
  283. package/dist/esm/common/progressBar/progressBar.mjs.map +1 -1
  284. package/dist/esm/common/progressBar/progressBar.module.mjs +1 -1
  285. package/dist/esm/common/progressBar/progressBar.module.mjs.map +1 -1
  286. package/dist/esm/common/radioGroup/radioGroup.mjs +1 -1
  287. package/dist/esm/common/radioGroup/radioGroup.mjs.map +1 -1
  288. package/dist/esm/common/radioGroup/radioGroup.module.mjs +1 -1
  289. package/dist/esm/common/radioGroup/radioGroup.module.mjs.map +1 -1
  290. package/dist/esm/common/radioGroup/radioGroup.types.mjs +1 -1
  291. package/dist/esm/common/radioGroup/radioGroup.types.mjs.map +1 -1
  292. package/dist/esm/common/rating/rating.mjs +1 -1
  293. package/dist/esm/common/rating/rating.mjs.map +1 -1
  294. package/dist/esm/common/rating/rating.module.mjs +1 -1
  295. package/dist/esm/common/revealLens/revealLens.mjs +1 -1
  296. package/dist/esm/common/revealLens/revealLens.mjs.map +1 -1
  297. package/dist/esm/common/revealLens/revealLens.module.mjs +1 -1
  298. package/dist/esm/common/ripple/ripple.mjs +1 -1
  299. package/dist/esm/common/ripple/ripple.mjs.map +1 -1
  300. package/dist/esm/common/ripple/ripple.module.mjs +1 -1
  301. package/dist/esm/common/ripple/ripple.module.mjs.map +1 -1
  302. package/dist/esm/common/roomDrawer/roomDrawer.mjs +1 -1
  303. package/dist/esm/common/roomDrawer/roomDrawer.mjs.map +1 -1
  304. package/dist/esm/common/roomDrawer/roomDrawer.module.mjs +1 -1
  305. package/dist/esm/common/roomDrawer/usePlanHistory.mjs +1 -1
  306. package/dist/esm/common/roomDrawer/usePlanHistory.mjs.map +1 -1
  307. package/dist/esm/common/roomViewer/roomViewer.mjs +1 -1
  308. package/dist/esm/common/roomViewer/roomViewer.mjs.map +1 -1
  309. package/dist/esm/common/roomViewer/roomViewer.module.mjs +1 -1
  310. package/dist/esm/common/scrollbarProvider/index.mjs +1 -1
  311. package/dist/esm/common/scrollbarProvider/index.mjs.map +1 -1
  312. package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs +1 -1
  313. package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs.map +1 -1
  314. package/dist/esm/common/scrollbarProvider/scrollbarProvider.module.mjs +1 -1
  315. package/dist/esm/common/searchInput/searchInput.mjs +1 -1
  316. package/dist/esm/common/searchInput/searchInput.mjs.map +1 -1
  317. package/dist/esm/common/searchInput/searchInput.module.mjs +1 -1
  318. package/dist/esm/common/sectionHeader/sectionHeader.mjs +1 -1
  319. package/dist/esm/common/sectionHeader/sectionHeader.mjs.map +1 -1
  320. package/dist/esm/common/sectionHeader/sectionHeader.module.mjs +1 -1
  321. package/dist/esm/common/sectionHeader/sectionHeader.types.mjs +1 -1
  322. package/dist/esm/common/sectionHeader/sectionHeader.types.mjs.map +1 -1
  323. package/dist/esm/common/sheetBackdrop/sheetBackdrop.mjs +1 -1
  324. package/dist/esm/common/sheetBackdrop/sheetBackdrop.mjs.map +1 -1
  325. package/dist/esm/common/skeleton/skeleton.mjs +1 -1
  326. package/dist/esm/common/skeleton/skeleton.mjs.map +1 -1
  327. package/dist/esm/common/skeleton/skeleton.module.mjs +1 -1
  328. package/dist/esm/common/skeleton/skeleton.types.mjs +1 -1
  329. package/dist/esm/common/skeleton/skeleton.types.mjs.map +1 -1
  330. package/dist/esm/common/slider/slider.mjs +1 -1
  331. package/dist/esm/common/slider/slider.mjs.map +1 -1
  332. package/dist/esm/common/slider/slider.module.mjs +1 -1
  333. package/dist/esm/common/splitButton/splitButton.mjs +1 -1
  334. package/dist/esm/common/splitButton/splitButton.mjs.map +1 -1
  335. package/dist/esm/common/splitButton/splitButton.module.mjs +1 -1
  336. package/dist/esm/common/stepper/stepper.mjs +1 -1
  337. package/dist/esm/common/stepper/stepper.mjs.map +1 -1
  338. package/dist/esm/common/stepper/stepper.module.mjs +1 -1
  339. package/dist/esm/common/stepper/stepper.types.mjs +1 -1
  340. package/dist/esm/common/stepper/stepper.types.mjs.map +1 -1
  341. package/dist/esm/common/sticky/sticky.mjs +1 -1
  342. package/dist/esm/common/sticky/sticky.mjs.map +1 -1
  343. package/dist/esm/common/sticky/sticky.module.mjs +1 -1
  344. package/dist/esm/common/sticky/stickyStack.mjs +1 -1
  345. package/dist/esm/common/sticky/stickyStack.mjs.map +1 -1
  346. package/dist/esm/common/styles/sheet.module.mjs +1 -1
  347. package/dist/esm/common/styles/sheet.module.mjs.map +1 -1
  348. package/dist/esm/common/switch/switch.mjs +1 -1
  349. package/dist/esm/common/switch/switch.mjs.map +1 -1
  350. package/dist/esm/common/switch/switch.module.mjs +1 -1
  351. package/dist/esm/common/switch/switch.module.mjs.map +1 -1
  352. package/dist/esm/common/tabHeader/tabHeader.mjs +1 -1
  353. package/dist/esm/common/tabHeader/tabHeader.mjs.map +1 -1
  354. package/dist/esm/common/tabHeader/tabHeader.module.mjs +1 -1
  355. package/dist/esm/common/textarea/textarea.mjs +1 -1
  356. package/dist/esm/common/textarea/textarea.mjs.map +1 -1
  357. package/dist/esm/common/themeProvider/defaultTheme.mjs +1 -1
  358. package/dist/esm/common/themeProvider/defaultTheme.mjs.map +1 -1
  359. package/dist/esm/common/themeProvider/lightTheme.mjs +2 -0
  360. package/dist/esm/common/themeProvider/lightTheme.mjs.map +1 -0
  361. package/dist/esm/common/themeProvider/theme.module.mjs +1 -1
  362. package/dist/esm/common/themeProvider/themeProvider.mjs +1 -1
  363. package/dist/esm/common/themeProvider/themeProvider.mjs.map +1 -1
  364. package/dist/esm/common/themeProvider/themeVariablesContext.mjs +1 -1
  365. package/dist/esm/common/themeProvider/themeVariablesContext.mjs.map +1 -1
  366. package/dist/esm/common/themeProvider/useTheme.mjs +1 -1
  367. package/dist/esm/common/themeProvider/useTheme.mjs.map +1 -1
  368. package/dist/esm/common/tilt/tilt.mjs +1 -1
  369. package/dist/esm/common/tilt/tilt.mjs.map +1 -1
  370. package/dist/esm/common/tilt/tilt.module.mjs +1 -1
  371. package/dist/esm/common/tilt/tiltMath.mjs +1 -1
  372. package/dist/esm/common/tilt/tiltMath.mjs.map +1 -1
  373. package/dist/esm/common/tiltGroup/tiltGroup.mjs +1 -1
  374. package/dist/esm/common/tiltGroup/tiltGroup.mjs.map +1 -1
  375. package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs +1 -1
  376. package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs.map +1 -1
  377. package/dist/esm/common/timeInput/components/clockDial/clockDial.module.mjs +1 -1
  378. package/dist/esm/common/timeInput/timeFunctions.mjs +1 -1
  379. package/dist/esm/common/timeInput/timeFunctions.mjs.map +1 -1
  380. package/dist/esm/common/timeInput/timeInput.mjs +1 -1
  381. package/dist/esm/common/timeInput/timeInput.mjs.map +1 -1
  382. package/dist/esm/common/timeInput/timeInput.module.mjs +1 -1
  383. package/dist/esm/common/timeline/timeline.mjs +1 -1
  384. package/dist/esm/common/timeline/timeline.mjs.map +1 -1
  385. package/dist/esm/common/timeline/timeline.module.mjs +1 -1
  386. package/dist/esm/common/timeline/timeline.types.mjs +1 -1
  387. package/dist/esm/common/timeline/timeline.types.mjs.map +1 -1
  388. package/dist/esm/common/timer/timer.chime.mjs +1 -1
  389. package/dist/esm/common/timer/timer.chime.mjs.map +1 -1
  390. package/dist/esm/common/timer/timer.mjs +1 -1
  391. package/dist/esm/common/timer/timer.mjs.map +1 -1
  392. package/dist/esm/common/timer/timer.module.mjs +1 -1
  393. package/dist/esm/common/toast/toast.mjs +1 -1
  394. package/dist/esm/common/toast/toast.mjs.map +1 -1
  395. package/dist/esm/common/toast/toast.module.mjs +1 -1
  396. package/dist/esm/common/toast/toast.module.mjs.map +1 -1
  397. package/dist/esm/common/toast/toastProvider.mjs +1 -1
  398. package/dist/esm/common/toast/toastProvider.mjs.map +1 -1
  399. package/dist/esm/common/toast/toastService.mjs +1 -1
  400. package/dist/esm/common/toast/toastService.mjs.map +1 -1
  401. package/dist/esm/common/tooltip/tooltip.mjs +1 -1
  402. package/dist/esm/common/tooltip/tooltip.mjs.map +1 -1
  403. package/dist/esm/common/tooltip/tooltip.module.mjs +1 -1
  404. package/dist/esm/common/tree/flattenTree.mjs +1 -1
  405. package/dist/esm/common/tree/flattenTree.mjs.map +1 -1
  406. package/dist/esm/common/tree/tree.mjs +1 -1
  407. package/dist/esm/common/tree/tree.mjs.map +1 -1
  408. package/dist/esm/common/tree/tree.module.mjs +1 -1
  409. package/dist/esm/common/tree/tree.module.mjs.map +1 -1
  410. package/dist/esm/common/utils/activationKey.mjs +1 -1
  411. package/dist/esm/common/utils/activationKey.mjs.map +1 -1
  412. package/dist/esm/common/utils/mergeRefs.mjs +2 -0
  413. package/dist/esm/common/utils/mergeRefs.mjs.map +1 -0
  414. package/dist/esm/common/utils/renderIcon.mjs +1 -1
  415. package/dist/esm/common/utils/renderIcon.mjs.map +1 -1
  416. package/dist/esm/common/utils/scrollAncestors.mjs +1 -1
  417. package/dist/esm/common/utils/scrollAncestors.mjs.map +1 -1
  418. package/dist/esm/common/utils/visualViewport.mjs +1 -1
  419. package/dist/esm/common/utils/visualViewport.mjs.map +1 -1
  420. package/dist/esm/common/virtualList/useColumnResize.mjs +1 -1
  421. package/dist/esm/common/virtualList/useColumnResize.mjs.map +1 -1
  422. package/dist/esm/common/virtualList/useColumns.mjs +1 -1
  423. package/dist/esm/common/virtualList/useColumns.mjs.map +1 -1
  424. package/dist/esm/common/virtualList/useHeaderNavigation.mjs +1 -1
  425. package/dist/esm/common/virtualList/useHeaderNavigation.mjs.map +1 -1
  426. package/dist/esm/common/virtualList/useRowDrag.mjs +1 -1
  427. package/dist/esm/common/virtualList/useRowDrag.mjs.map +1 -1
  428. package/dist/esm/common/virtualList/useRowNavigation.mjs +1 -1
  429. package/dist/esm/common/virtualList/useRowNavigation.mjs.map +1 -1
  430. package/dist/esm/common/virtualList/useSelection.mjs +1 -1
  431. package/dist/esm/common/virtualList/useSelection.mjs.map +1 -1
  432. package/dist/esm/common/virtualList/useSorting.mjs +1 -1
  433. package/dist/esm/common/virtualList/useSorting.mjs.map +1 -1
  434. package/dist/esm/common/virtualList/useVirtualWindow.mjs +1 -1
  435. package/dist/esm/common/virtualList/useVirtualWindow.mjs.map +1 -1
  436. package/dist/esm/common/virtualList/virtualList.mjs +1 -1
  437. package/dist/esm/common/virtualList/virtualList.mjs.map +1 -1
  438. package/dist/esm/common/virtualList/virtualList.module.mjs +1 -1
  439. package/dist/esm/common/virtualList/virtualList.utils.mjs +1 -1
  440. package/dist/esm/common/virtualList/virtualList.utils.mjs.map +1 -1
  441. package/dist/esm/common/virtualList/virtualListHeader.mjs +1 -1
  442. package/dist/esm/common/virtualList/virtualListHeader.mjs.map +1 -1
  443. package/dist/esm/common/virtualList/virtualRow.mjs +1 -1
  444. package/dist/esm/common/virtualList/virtualRow.mjs.map +1 -1
  445. package/dist/esm/common/wizard/wizard.mjs +1 -1
  446. package/dist/esm/common/wizard/wizard.mjs.map +1 -1
  447. package/dist/esm/common/wizard/wizard.module.mjs +1 -1
  448. package/dist/esm/hooks/useWindowSize.mjs +1 -1
  449. package/dist/esm/hooks/useWindowSize.mjs.map +1 -1
  450. package/dist/esm/index.mjs +1 -1
  451. package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs +1 -1
  452. package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs.map +1 -1
  453. package/dist/esm/services/formValidation/index.mjs +1 -1
  454. package/dist/esm/services/formValidation/useFormValidatorGroup.mjs +1 -1
  455. package/dist/esm/services/formValidation/useFormValidatorGroup.mjs.map +1 -1
  456. package/dist/esm/services/formValidation/validatableComponent.mjs +1 -1
  457. package/dist/esm/services/formValidation/validatableComponent.mjs.map +1 -1
  458. package/dist/esm/services/klipy.mjs +1 -1
  459. package/dist/esm/services/klipy.mjs.map +1 -1
  460. package/dist/esm/services/localization.mjs +1 -1
  461. package/dist/esm/services/localization.mjs.map +1 -1
  462. package/dist/index.cjs +3 -3
  463. package/dist/index.cjs.map +1 -1
  464. package/dist/mcp.js +21096 -5
  465. package/dist/style.css +1 -1
  466. package/dist/types/common/actionIcon/actionIcon.types.d.ts +3 -1
  467. package/dist/types/common/card/card.types.d.ts +3 -1
  468. package/dist/types/common/checkbox/checkbox.types.d.ts +3 -1
  469. package/dist/types/common/colorPicker/colorPicker.types.d.ts +4 -0
  470. package/dist/types/common/configProvider/configProvider.types.d.ts +4 -0
  471. package/dist/types/common/flip/flip.d.ts +2 -2
  472. package/dist/types/common/flip/flip.types.d.ts +3 -1
  473. package/dist/types/common/input/input.types.d.ts +5 -0
  474. package/dist/types/common/interactableDiv/interactableDiv.d.ts +3 -2
  475. package/dist/types/common/loading/spinnerLoading/spinnerLoading.d.ts +0 -5
  476. package/dist/types/common/numberInput/numberInput.types.d.ts +2 -0
  477. package/dist/types/common/otpInput/otpInput.types.d.ts +2 -0
  478. package/dist/types/common/planCanvas/planCanvas.d.ts +1 -1
  479. package/dist/types/common/planCanvas/planCanvas.types.d.ts +3 -1
  480. package/dist/types/common/ripple/ripple.d.ts +1 -1
  481. package/dist/types/common/ripple/ripple.types.d.ts +1 -0
  482. package/dist/types/common/roomDrawer/roomDrawer.d.ts +2 -2
  483. package/dist/types/common/roomDrawer/roomDrawer.types.d.ts +3 -1
  484. package/dist/types/common/roomViewer/roomViewer.d.ts +2 -2
  485. package/dist/types/common/roomViewer/roomViewer.types.d.ts +3 -1
  486. package/dist/types/common/searchInput/searchInput.d.ts +1 -1
  487. package/dist/types/common/searchInput/searchInput.types.d.ts +3 -0
  488. package/dist/types/common/switch/switch.types.d.ts +3 -1
  489. package/dist/types/common/themeProvider/index.d.ts +1 -0
  490. package/dist/types/common/themeProvider/lightTheme.d.ts +13 -0
  491. package/dist/types/common/tilt/tilt.d.ts +2 -2
  492. package/dist/types/common/tilt/tilt.types.d.ts +3 -1
  493. package/dist/types/common/timer/timer.d.ts +2 -2
  494. package/dist/types/common/timer/timer.types.d.ts +3 -1
  495. package/dist/types/common/tooltip/tooltip.d.ts +1 -1
  496. package/dist/types/common/tooltip/tooltip.types.d.ts +7 -0
  497. package/dist/types/common/types/baseProps.types.d.ts +6 -0
  498. package/dist/types/common/utils/mergeRefs.d.ts +12 -0
  499. package/dist/types/common/virtualList/virtualList.d.ts +2 -4
  500. package/dist/types/common/virtualList/virtualList.types.d.ts +3 -1
  501. package/docs/Accordion.md +9 -0
  502. package/docs/ActionIcon.md +1 -0
  503. package/docs/CLAUDE.md +37 -0
  504. package/docs/Card.md +1 -0
  505. package/docs/Checkbox.md +1 -0
  506. package/docs/ColorPicker.md +12 -2
  507. package/docs/Input.md +1 -0
  508. package/docs/KlipyPicker.md +1 -1
  509. package/docs/NumberInput.md +1 -0
  510. package/docs/OtpInput.md +1 -0
  511. package/docs/SearchInput.md +1 -0
  512. package/docs/Switch.md +1 -0
  513. package/docs/Textarea.md +1 -0
  514. package/docs/ThemeProvider.md +30 -1
  515. package/docs/Tooltip.md +23 -1
  516. package/package.json +8 -7
@@ -1,4 +1,4 @@
1
- import { CSSProperties } from 'react';
1
+ import { default as React, CSSProperties } from 'react';
2
2
  import { IconContent } from '../types/icon.types';
3
3
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
4
4
  export type ActionIconSlots = 'root' | 'icon';
@@ -8,6 +8,8 @@ export interface ActionIconProps extends HtmlProps {
8
8
  style?: CSSProperties;
9
9
  title?: string;
10
10
  onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
11
+ /** Ref to the root element. */
12
+ ref?: React.Ref<HTMLDivElement>;
11
13
  classNames?: SlotClassNames<ActionIconSlots>;
12
14
  styles?: SlotStyles<ActionIconSlots>;
13
15
  }
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import { default as React, ReactNode } from 'react';
2
2
  import { ButtonStyleType } from '../button/button.types';
3
3
  import { HtmlProps, SlotClassNames, SlotStyles } from '../types/slots.types';
4
4
  import { IconAction } from '../types/actions.types';
@@ -18,6 +18,8 @@ export interface CardProps extends Omit<HtmlProps, 'tabIndex'> {
18
18
  style?: React.CSSProperties;
19
19
  autoGap?: boolean;
20
20
  clip?: boolean;
21
+ /** Ref to the root element. */
22
+ ref?: React.Ref<HTMLDivElement>;
21
23
  /** Classes for the inner elements. See `CardSlots`. */
22
24
  classNames?: SlotClassNames<CardSlots>;
23
25
  /** Inline styles for the inner elements. See `CardSlots`. */
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { FormValidator } from '../../services/formValidation';
3
3
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
4
4
  export type CheckboxSlots = 'icon' | 'checkmark' | 'label';
@@ -20,6 +20,8 @@ export interface CheckboxProps extends Omit<HtmlProps, 'onToggle'> {
20
20
  children?: ReactNode;
21
21
  background?: string | null;
22
22
  isLoading?: boolean;
23
+ /** Ref to the root element. */
24
+ ref?: Ref<HTMLDivElement>;
23
25
  classNames?: SlotClassNames<CheckboxSlots>;
24
26
  styles?: SlotStyles<CheckboxSlots>;
25
27
  }
@@ -4,6 +4,10 @@ export type ColorPickerSlots = 'root' | 'swatch' | 'panel' | 'gradient' | 'hueSl
4
4
  export interface ColorPickerLabels {
5
5
  /** The eyedropper button, read out by screen readers. */
6
6
  pickFromScreen?: string;
7
+ /** The saturation and brightness square, read out by screen readers. */
8
+ saturationAndBrightness?: string;
9
+ /** Where the square's cursor currently sits, read out after every move. */
10
+ saturationAndBrightnessValue?: (saturation: number, brightness: number) => string;
7
11
  }
8
12
  export interface ColorPickerProps extends Omit<HtmlProps, 'onChange'> {
9
13
  className?: string;
@@ -12,6 +12,7 @@ import { ColorPickerLabels } from '../colorPicker/colorPicker.types';
12
12
  import { EmptyStateLabels } from '../emptyState/emptyState.types';
13
13
  import { KlipyPickerLabels } from '../klipyPicker/klipyPicker.types';
14
14
  import { SearchInputLabels } from '../searchInput/searchInput.types';
15
+ import { TooltipLabels } from '../tooltip/tooltip.types';
15
16
  import { VirtualListLabels } from '../virtualList/virtualList.types';
16
17
  import { ButtonProps } from '../button/button.types';
17
18
  import { ActionButtonsProps } from '../actionButtons/actionButtons.types';
@@ -74,6 +75,9 @@ export interface ComponentDefaults {
74
75
  SearchInput?: {
75
76
  labels?: SearchInputLabels;
76
77
  };
78
+ Tooltip?: {
79
+ labels?: TooltipLabels;
80
+ };
77
81
  VirtualList?: {
78
82
  labels?: VirtualListLabels;
79
83
  };
@@ -1,3 +1,3 @@
1
- import { FlipHandle, FlipProps } from './flip.types';
2
- declare const Flip: import('react').ForwardRefExoticComponent<FlipProps & import('react').RefAttributes<FlipHandle>>;
1
+ import { FlipProps } from './flip.types';
2
+ declare function Flip(props: FlipProps): import("react").JSX.Element;
3
3
  export default Flip;
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
3
3
  export type FlipAxis = 'x' | 'y';
4
4
  export type FlipSlots = 'root' | 'perspective' | 'surface' | 'front' | 'back';
@@ -35,6 +35,8 @@ export interface FlipProps extends HtmlProps {
35
35
  onFlip?: (flipped: boolean) => void;
36
36
  /** Fires once the flip transition finishes settling on the new face, for any trigger (click, controlled prop change, or ref call). Fires synchronously under `prefers-reduced-motion: reduce`, since no transition runs to wait for. */
37
37
  onFlipEnd?: (flipped: boolean) => void;
38
+ /** Imperative handle for flipping without owning the state. */
39
+ ref?: Ref<FlipHandle>;
38
40
  className?: string;
39
41
  style?: CSSProperties;
40
42
  classNames?: SlotClassNames<FlipSlots>;
@@ -71,6 +71,11 @@ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
71
71
  multiline?: boolean;
72
72
  rows?: number;
73
73
  autoResize?: boolean;
74
+ /**
75
+ * Ref to the rendered `<input>` (or `<textarea>` when `multiline`). Not forwarded to a
76
+ * `customInput`, which owns its own ref.
77
+ */
78
+ ref?: React.Ref<HTMLInputElement | HTMLTextAreaElement>;
74
79
  classNames?: SlotClassNames<InputSlots>;
75
80
  styles?: SlotStyles<InputSlots>;
76
81
  /** Overrides the text Input renders of its own. Merged per key. */
@@ -1,7 +1,8 @@
1
- import { default as React } from 'react';
1
+ import { default as React, ReactElement } from 'react';
2
2
  import { DataProps } from '../types/baseProps.types';
3
3
  interface Properties extends DataProps, Omit<React.HTMLAttributes<HTMLDivElement>, 'tabIndex'> {
4
4
  tabIndex?: number | null;
5
+ ref?: React.Ref<HTMLDivElement>;
5
6
  }
6
- declare const InteractableDiv: React.ForwardRefExoticComponent<Properties & React.RefAttributes<HTMLDivElement>>;
7
+ declare function InteractableDiv({ className, children, onClick, onKeyDown, tabIndex, ref, ...props }: Properties): ReactElement;
7
8
  export default InteractableDiv;
@@ -3,9 +3,4 @@ interface Properties {
3
3
  className?: string | undefined;
4
4
  }
5
5
  declare function SpinnerLoading({ className }: Properties): ReactElement;
6
- declare namespace SpinnerLoading {
7
- var defaultProps: {
8
- className: undefined;
9
- };
10
- }
11
6
  export default SpinnerLoading;
@@ -67,6 +67,8 @@ export interface NumberInputProps extends Omit<NumericFormatProps, 'onValueChang
67
67
  onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
68
68
  /** Overrides the text NumberInput renders of its own. Merged per key. */
69
69
  labels?: NumberInputLabels;
70
+ /** Ref to the inner `<input>`, for focusing the field. */
71
+ ref?: React.Ref<HTMLInputElement>;
70
72
  /** Classes for the inner elements. See `NumberInputSlots`. */
71
73
  classNames?: SlotClassNames<NumberInputSlots>;
72
74
  /** Inline styles for the inner elements. See `NumberInputSlots`. */
@@ -51,6 +51,8 @@ export interface OtpInputProps extends Omit<HtmlProps, 'onChange'> {
51
51
  autoFocus?: boolean;
52
52
  className?: string;
53
53
  style?: React.CSSProperties;
54
+ /** Ref to the root element. */
55
+ ref?: React.Ref<HTMLDivElement>;
54
56
  classNames?: SlotClassNames<OtpInputSlots>;
55
57
  styles?: SlotStyles<OtpInputSlots>;
56
58
  /** Overrides the text OtpInput renders of its own. Merged per key. */
@@ -3,5 +3,5 @@ import { PlanCanvasProps } from './planCanvas.types';
3
3
  * The ref lands on the `<svg>` itself, which is what a consumer wants for measuring or
4
4
  * screenshotting. Both the drawer and the viewer expose it as `getSvgElement()`.
5
5
  */
6
- declare const PlanCanvas: import('react').ForwardRefExoticComponent<PlanCanvasProps & import('react').RefAttributes<SVGSVGElement>>;
6
+ declare function PlanCanvas(props: PlanCanvasProps): import("react").JSX.Element;
7
7
  export default PlanCanvas;
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { DerivedRoom, PlanFloor, PlanRoom, PlanSelection, PlanView } from '../floorPlan';
3
3
  import { SlotClassNames, SlotStyles } from '../types/slots.types';
4
4
  export type PlanCanvasSlots = 'canvas' | 'grid' | 'underlay' | 'rooms' | 'roomFill' | 'roomLabel' | 'walls' | 'wallBody' | 'openings' | 'opening' | 'overlay';
@@ -55,6 +55,8 @@ export interface PlanCanvasProps {
55
55
  height: number;
56
56
  };
57
57
  'aria-label'?: string;
58
+ /** Ref to the rendered `<svg>` root. */
59
+ ref?: Ref<SVGSVGElement>;
58
60
  className?: string;
59
61
  style?: CSSProperties;
60
62
  classNames?: SlotClassNames<PlanCanvasSlots>;
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
2
  import { RippleProps, RippleHandle } from './ripple.types';
3
3
  export type { RippleProps, RippleHandle };
4
- declare const Ripple: React.ForwardRefExoticComponent<RippleProps & React.RefAttributes<RippleHandle>>;
4
+ declare function Ripple({ disabled, children, className, style, overflowHidden, rippleAnimationLength, rippleBackground, manualOnly, ref, ...rest }: RippleProps): React.JSX.Element;
5
5
  export default Ripple;
@@ -9,6 +9,7 @@ export interface RippleProps extends HtmlProps {
9
9
  rippleAnimationLength?: number;
10
10
  rippleBackground?: string;
11
11
  manualOnly?: boolean;
12
+ ref?: React.Ref<RippleHandle>;
12
13
  }
13
14
  export interface RippleHandle {
14
15
  addRipple: () => void;
@@ -1,3 +1,3 @@
1
- import { RoomDrawerHandle, RoomDrawerProps } from './roomDrawer.types';
2
- declare const RoomDrawer: import('react').ForwardRefExoticComponent<RoomDrawerProps & import('react').RefAttributes<RoomDrawerHandle>>;
1
+ import { RoomDrawerProps } from './roomDrawer.types';
2
+ declare function RoomDrawer(props: RoomDrawerProps): import("react").JSX.Element;
3
3
  export default RoomDrawer;
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { FloorPlan, OpeningKind, PlanParseResult, PlanPoint, PlanRoom, PlanSelection, PlanView } from '../floorPlan';
3
3
  import { IconContent } from '../types/icon.types';
4
4
  import { HtmlProps, SlotClassNames, SlotStyles } from '../types/slots.types';
@@ -299,6 +299,8 @@ export interface RoomDrawerProps extends Omit<HtmlProps<HTMLDivElement>, 'onChan
299
299
  labels?: RoomDrawerLabels;
300
300
  icons?: RoomDrawerIcons;
301
301
  'aria-label'?: string;
302
+ /** Imperative handle for driving the editor. */
303
+ ref?: Ref<RoomDrawerHandle>;
302
304
  className?: string;
303
305
  style?: CSSProperties;
304
306
  classNames?: SlotClassNames<RoomDrawerSlots>;
@@ -1,4 +1,4 @@
1
- import { RoomViewerHandle, RoomViewerProps } from './roomViewer.types';
1
+ import { RoomViewerProps } from './roomViewer.types';
2
2
  /**
3
3
  * Read-only view of a floor plan.
4
4
  *
@@ -6,5 +6,5 @@ import { RoomViewerHandle, RoomViewerProps } from './roomViewer.types';
6
6
  * two cannot drift apart. Selection and hover are React state rather than classes pushed
7
7
  * onto DOM nodes, which is what lets them be controlled from outside.
8
8
  */
9
- declare const RoomViewer: import('react').ForwardRefExoticComponent<RoomViewerProps & import('react').RefAttributes<RoomViewerHandle>>;
9
+ declare function RoomViewer(props: RoomViewerProps): import("react").JSX.Element;
10
10
  export default RoomViewer;
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { DerivedRoom, FloorPlan, PlanRoom, PlanView } from '../floorPlan';
3
3
  import { IconContent } from '../types/icon.types';
4
4
  import { HtmlProps, SlotClassNames, SlotStyles } from '../types/slots.types';
@@ -82,6 +82,8 @@ export interface RoomViewerProps extends Omit<HtmlProps<HTMLDivElement>, 'onSele
82
82
  emptyState?: ReactNode;
83
83
  labels?: RoomViewerLabels;
84
84
  icons?: RoomViewerIcons;
85
+ /** Imperative handle for driving the viewport. */
86
+ ref?: Ref<RoomViewerHandle>;
85
87
  className?: string;
86
88
  style?: CSSProperties;
87
89
  classNames?: SlotClassNames<RoomViewerSlots>;
@@ -1,3 +1,3 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { SearchInputProps } from './searchInput.types';
3
- export default function SearchInput({ value, onChange, onDebounce, placeholder, label, debounceMs, totalAmount, showAmount, className, width, style, classNames, styles: slotStyles, labels, ...rest }: SearchInputProps): ReactElement;
3
+ export default function SearchInput({ value, onChange, onDebounce, placeholder, label, debounceMs, totalAmount, showAmount, className, width, style, classNames, styles: slotStyles, labels, ref, ...rest }: SearchInputProps): ReactElement;
@@ -1,3 +1,4 @@
1
+ import { default as React } from 'react';
1
2
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
2
3
  export type SearchInputSlots = 'root' | 'input' | 'resultCount';
3
4
  /** Text SearchInput renders of its own, for translating it. */
@@ -22,4 +23,6 @@ export interface SearchInputProps extends Omit<HtmlProps, 'onChange'> {
22
23
  styles?: SlotStyles<SearchInputSlots>;
23
24
  /** Overrides the text SearchInput renders of its own. Merged per key. */
24
25
  labels?: SearchInputLabels;
26
+ /** Ref to the inner `<input>`, for focusing the field. */
27
+ ref?: React.Ref<HTMLInputElement>;
25
28
  }
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { FormValidator } from '../../services/formValidation';
3
3
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
4
4
  export type SwitchSlots = 'track' | 'thumb' | 'label';
@@ -14,6 +14,8 @@ export interface SwitchProps extends Omit<HtmlProps, 'onToggle'> {
14
14
  tabIndex?: number;
15
15
  formValidator?: FormValidator | null;
16
16
  children?: ReactNode;
17
+ /** Ref to the root element. */
18
+ ref?: Ref<HTMLDivElement>;
17
19
  classNames?: SlotClassNames<SwitchSlots>;
18
20
  styles?: SlotStyles<SwitchSlots>;
19
21
  }
@@ -1,3 +1,4 @@
1
1
  export { default } from './themeProvider';
2
2
  export { defaultTheme } from './defaultTheme';
3
+ export { lightTheme } from './lightTheme';
3
4
  export type { Theme, ThemeVariables } from './theme.types';
@@ -0,0 +1,13 @@
1
+ import { Theme } from './theme.types';
2
+ /**
3
+ * The light sibling of {@link defaultTheme}, which is dark. Same brand, inverted surfaces:
4
+ * it declares only what has to flip, and inherits the rest through `baseThemeId`, so a change
5
+ * to the palette or the type scale reaches both themes at once.
6
+ *
7
+ * ```tsx
8
+ * <ThemeProvider themes={[defaultTheme, lightTheme]} activeThemeId='light'>
9
+ * ```
10
+ *
11
+ * `--primary-color` is deliberately untouched: it is the brand, and it reads on both.
12
+ */
13
+ export declare const lightTheme: Theme;
@@ -1,3 +1,3 @@
1
- import { TiltHandle, TiltProps } from './tilt.types';
2
- declare const Tilt: import('react').ForwardRefExoticComponent<TiltProps & import('react').RefAttributes<TiltHandle>>;
1
+ import { TiltProps } from './tilt.types';
2
+ declare function Tilt(props: TiltProps): import("react").JSX.Element;
3
3
  export default Tilt;
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
3
3
  import { TiltAxisLock } from './tiltMath';
4
4
  export type TiltTrackingMode = 'self' | 'group';
@@ -31,6 +31,8 @@ export interface TiltProps extends HtmlProps {
31
31
  disabled?: boolean;
32
32
  /** Fires on every applied tilt update. */
33
33
  onTiltChange?: (rotateX: number, rotateY: number) => void;
34
+ /** Imperative handle for driving the tilt directly. */
35
+ ref?: Ref<TiltHandle>;
34
36
  className?: string;
35
37
  style?: CSSProperties;
36
38
  classNames?: SlotClassNames<TiltSlots>;
@@ -1,3 +1,3 @@
1
- import { TimerHandle, TimerProps } from './timer.types';
2
- declare const Timer: import('react').ForwardRefExoticComponent<TimerProps & import('react').RefAttributes<TimerHandle>>;
1
+ import { TimerProps } from './timer.types';
2
+ declare function Timer(props: TimerProps): import("react").JSX.Element;
3
3
  export default Timer;
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
3
3
  export type TimerSlots = 'root' | 'ringWrapper' | 'ringSvg' | 'ringTrack' | 'ringProgress' | 'ripples' | 'ripple' | 'display' | 'time' | 'label' | 'controls' | 'addButton' | 'removeButton' | 'pauseButton' | 'cancelButton';
4
4
  export type TimerStatus = 'idle' | 'running' | 'paused' | 'completed' | 'cancelled';
@@ -99,6 +99,8 @@ export interface TimerProps extends HtmlProps {
99
99
  notificationTitle?: string;
100
100
  /** Notification body when `notifyOnComplete` is set. Falls back to `label` when it's a string. */
101
101
  notificationBody?: string;
102
+ /** Imperative handle for starting, pausing and resetting the timer. */
103
+ ref?: Ref<TimerHandle>;
102
104
  className?: string;
103
105
  style?: CSSProperties;
104
106
  classNames?: SlotClassNames<TimerSlots>;
@@ -1,3 +1,3 @@
1
1
  import { default as React } from 'react';
2
2
  import { TooltipProps } from './tooltip.types';
3
- export default function Tooltip({ variant, message, isVisible, tooltipPosition, onClick }: TooltipProps): React.JSX.Element | null;
3
+ export default function Tooltip({ variant, message, isVisible, tooltipPosition, onClick, labels, }: TooltipProps): React.JSX.Element | null;
@@ -1,5 +1,10 @@
1
1
  import { default as React } from 'react';
2
2
  export type TooltipVariant = 'info' | 'details' | 'error';
3
+ /** Text Tooltip renders of its own, for translating it. */
4
+ export interface TooltipLabels {
5
+ /** Accessible name of the `?` icon the `details` variant renders (default `More information`). */
6
+ details?: string;
7
+ }
3
8
  export interface TooltipProps {
4
9
  variant: TooltipVariant;
5
10
  message?: React.ReactNode;
@@ -7,4 +12,6 @@ export interface TooltipProps {
7
12
  iconPosition?: string;
8
13
  tooltipPosition?: string;
9
14
  onClick?: () => void;
15
+ /** Overrides the text Tooltip renders of its own. Merged per key. */
16
+ labels?: TooltipLabels;
10
17
  }
@@ -15,6 +15,12 @@ type DataAttributes = {
15
15
  * matching React type instead and add `DataProps` for the `data-*` half — `Button` does this
16
16
  * with `React.ButtonHTMLAttributes<HTMLButtonElement>`.
17
17
  *
18
+ * `ref` is deliberately *not* here. `Ref<E>` is invariant, so a shared `Ref<HTMLElement>` is not
19
+ * assignable to the `<div>` it would be spread onto, and narrowing the default to `HTMLDivElement`
20
+ * re-types every event handler with it — which breaks `Dropdown` and `SplitButton`, whose `onClick`
21
+ * is typed for the `<button>` they hand it to. A component that accepts a ref declares it itself,
22
+ * next to its other props, typed for the element it actually lands on.
23
+ *
18
24
  * A component prop that collides with a native one of the same name must `Omit` the native one.
19
25
  */
20
26
  export type HtmlProps<E extends HTMLElement = HTMLElement> = React.HTMLAttributes<E> & DataAttributes;
@@ -0,0 +1,12 @@
1
+ import { Ref } from 'react';
2
+ /**
3
+ * Fans one element out to several refs, for a component that needs the node itself *and*
4
+ * hands it to the consumer through a `ref` prop.
5
+ *
6
+ * The returned callback is a new function on every render, so React detaches and reattaches
7
+ * it each time (null, then the node). Every ref here is therefore written twice per render,
8
+ * which is fine for storing a node and wrong for anything with a side effect. Call it inline
9
+ * rather than memoising: a memo would have to list the refs it closes over, and a consumer
10
+ * passing an inline callback ref changes that identity every render anyway.
11
+ */
12
+ export declare function mergeRefs<T>(...refs: (Ref<T> | undefined)[]): (node: T | null) => void;
@@ -1,7 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { VirtualListProps, VirtualListHandle } from './virtualList.types';
2
+ import { VirtualListProps } from './virtualList.types';
3
3
  export { buildOffsets, findStartIndex, getVisibleRange, resolveReorderTarget, resolveTreeDropTarget, lastDescendantIndex, buildColumnTemplate, compareSortValues, isColumnSortable, isEmptySortValue, nextSort, sortItems, } from './virtualList.utils';
4
- declare const VirtualList: <T>(props: VirtualListProps<T> & {
5
- ref?: React.Ref<VirtualListHandle>;
6
- }) => React.ReactElement | null;
4
+ declare function VirtualList<T>({ ref, items, renderRow, ariaRoles, columns, height, estimatedRowHeight, overscan, rowGap, rowPadding, selectedKey, getItemKey, onRowClick, keyboardNavigation, visibleColumnKeys, onVisibleColumnsChange, persistColumnsKey, resizableColumns, columnWidths, onColumnWidthsChange, labels, sort, defaultSort, onSortChange, showColumnToggle, onLoadMore, loadMoreThreshold, isLoading, multiSelect, selectedKeys, onSelectionChange, reorderable, onReorder, longPressDelay, treeReorder, getItemDepth, isGroup, onTreeDrop, treeIndentPx, dragHandle, showDivider, rowHover, className, style, classNames, styles: slotStyles, ...rest }: VirtualListProps<T>): React.JSX.Element;
7
5
  export default VirtualList;
@@ -1,4 +1,4 @@
1
- import { CSSProperties, ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode, Ref } from 'react';
2
2
  import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';
3
3
  export type ColumnWidthFixed = {
4
4
  type: 'fixed';
@@ -308,6 +308,8 @@ export interface VirtualListProps<T> extends HtmlProps {
308
308
  * and touch. Render a handle in your row, e.g. `<span data-drag-handle>⠿</span>`.
309
309
  */
310
310
  dragHandle?: boolean;
311
+ /** Imperative handle for scrolling and for recalculating column layout. */
312
+ ref?: Ref<VirtualListHandle>;
311
313
  className?: string;
312
314
  style?: CSSProperties;
313
315
  classNames?: SlotClassNames<VirtualListSlots>;
package/docs/Accordion.md CHANGED
@@ -40,6 +40,15 @@ import { Accordion, AccordionStyleType } from '@ahrowe/ui';
40
40
  | `hideHeader` | `boolean` | Hide the clickable header |
41
41
  | `id` | `string` | Passed back in `onHeaderClicked` |
42
42
 
43
+ ## Accessibility
44
+
45
+ The header is a button: it takes focus, toggles on Enter and Space, and reports the section's
46
+ state through `aria-expanded`. It names the body it controls with `aria-controls`, and the body is
47
+ a `role="region"` labelled by the header, so a screen reader can move between the two.
48
+
49
+ An activation key pressed inside the body does not reach the header, so a Space typed into a
50
+ field in an open section types a space instead of collapsing the section.
51
+
43
52
  **Slots:** `root` `header` `title` `icon` `body` `bodyInner`
44
53
 
45
54
  ## Sizing
@@ -27,3 +27,4 @@ import { faTrash } from '@fortawesome/free-solid-svg-icons';
27
27
  | `title` | `string` | Tooltip / accessible label |
28
28
  | `onClick` | `(event: MouseEvent) => void` | Click handler |
29
29
  | `className` | `string` | Root element class |
30
+ | `ref` | `Ref<HTMLDivElement>` | Ref to the root element |
package/docs/CLAUDE.md CHANGED
@@ -90,6 +90,43 @@ Most components expose `classNames` and `styles` props for styling inner element
90
90
 
91
91
  Slot keys per component are documented in each component's doc file below.
92
92
 
93
+ ## Refs
94
+
95
+ The library targets **React 19 or newer**. Every component that takes a ref takes it as a plain
96
+ prop, not through `forwardRef`, so there is nothing to unwrap and a generic component keeps its
97
+ type parameter.
98
+
99
+ ```tsx
100
+ const input = useRef<HTMLInputElement>(null);
101
+ <Input label="Name" ref={input} />;
102
+ input.current?.focus();
103
+ ```
104
+
105
+ A ref lands on the element you would actually reach for, which is not always the root: `Input`,
106
+ `Textarea`, `NumberInput` and `SearchInput` give you the `<input>` or `<textarea>` inside, not
107
+ their wrapper. Components that do more than hold a node expose an imperative handle instead of an
108
+ element: `Timer` (`start`/`pause`/`reset`), `Flip` (`flip`/`setFlipped`/`reset`), `Tilt`
109
+ (`setTilt`/`reset`), `Ripple` (`addRipple`), `VirtualList` (scrolling and column layout),
110
+ `RoomDrawer` and `RoomViewer`. Each handle's type is exported next to the component's props.
111
+
112
+ ## Server components
113
+
114
+ Every module in the package is marked `'use client'`. All the components are interactive, so none
115
+ of them renders on a server, but they can be imported straight into a React Server Components app
116
+ (Next.js App Router and the like) with no wrapper component in between.
117
+
118
+ ## Right to left
119
+
120
+ Not supported. The stylesheets use physical CSS properties (`margin-left`, `left`), so the library
121
+ does not mirror for right-to-left languages.
122
+
123
+ ## Reduced motion
124
+
125
+ Components honour `prefers-reduced-motion: reduce`: entrances, slides, chevron rotations and the
126
+ ink ripple stop, while fades and colour changes stay. Two things deliberately keep moving, because
127
+ freezing them would state something untrue: the loading spinners, and the Toast progress bar that
128
+ shows how long a toast has left.
129
+
93
130
  ## Icon props (`IconDefinition | ReactElement`)
94
131
 
95
132
  Every `icon` prop (and every icon field inside an item/action object) accepts either a
package/docs/Card.md CHANGED
@@ -61,6 +61,7 @@ All sub-components are optional — use only what you need. Stacked sub-componen
61
61
  | `tabIndex` | `number \| null` | For keyboard navigation |
62
62
  | `autoGap` | `boolean` | Space stacked sub-components apart with a shared gap (default `true`); set `false` to space them yourself |
63
63
  | `clip` | `boolean` | Clip content to the rounded corners (`overflow: hidden`, default `false`). Set `true` for full-bleed `CardMedia` or a clipped hover/ripple effect. Safe to enable even when the card holds a `Dropdown`/`Popover`/`Tooltip` — those popovers are portaled and always escape the card regardless of this setting |
64
+ | `ref` | `Ref<HTMLDivElement>` | Ref to the root element |
64
65
 
65
66
  **CardHeaderProps:**
66
67
 
package/docs/Checkbox.md CHANGED
@@ -36,6 +36,7 @@ const agreedValidator = new FormValidator(false, [Validators.required()]);
36
36
  | `isLoading` | `boolean` | Shows skeleton state |
37
37
  | `children` | `ReactNode` | Custom label content |
38
38
  | `cursorDefault` | `boolean` | Use default cursor instead of pointer |
39
+ | `ref` | `Ref<HTMLDivElement>` | Ref to the root element |
39
40
 
40
41
  **Slots:** `icon` `checkmark` `label`
41
42
 
@@ -51,8 +51,18 @@ The inline swatch tracks the theme's text size, since it sits beside a label: `-
51
51
 
52
52
  The picker panel deliberately does not. It is a floating control surface with its own fixed layout — a saturation area, sliders and a hex field — and it holds together at a large base font rather than needing to grow with it.
53
53
 
54
- **Labels:** `pickFromScreen` — the text this component renders of its own. Pass `labels` to override any of them, on the component or app-wide through `ConfigProvider`; they merge per key. Type: `ColorPickerLabels`.
54
+ **Labels:** `pickFromScreen`, `saturationAndBrightness`, `saturationAndBrightnessValue(saturation, brightness)` — the text this component renders of its own. Pass `labels` to override any of them, on the component or app-wide through `ConfigProvider`; they merge per key. Type: `ColorPickerLabels`.
55
55
 
56
- **Keyboard:** the swatch is a button, so `Enter` or `Space` opens the panel and puts the focus on the hue slider, the arrow keys move it, `Tab` walks the rest of the panel, and `Escape` closes and hands the focus back. The saturation and value square is a pointer control with no keyboard equivalent; the hex field covers the same ground for anyone not using a mouse.
56
+ **Keyboard:** the swatch is a button, so `Enter` or `Space` opens the panel and puts the focus on the saturation and brightness square. A click leaves the focus on the swatch, since a pointer open is not a request to be taken somewhere. `Tab` walks the rest of the panel, and `Escape` closes and hands the focus back to the swatch.
57
+
58
+ | Key | Does |
59
+ |-----|------|
60
+ | `←` `→` | Saturation, a percent at a time |
61
+ | `↑` `↓` | Brightness, a percent at a time |
62
+ | `Shift` with any arrow | Ten at a time |
63
+ | `Home` `End` | Saturation to either end |
64
+ | `PageUp` `PageDown` | Brightness to either end |
65
+
66
+ The square is a two-axis control, which ARIA has no role for. It reports itself as a slider whose value is the horizontal axis, with `aria-valuetext` carrying both numbers, so a screen reader reads out "62% saturation, 40% brightness" after every move.
57
67
 
58
68
  **Slots:** `root` `swatch` `panel` `gradient` `hueSlider` `alphaSlider` `hexInput` `eyeDropper`
package/docs/Input.md CHANGED
@@ -122,6 +122,7 @@ The stored value is the formatted one, spaces included, so strip them before a l
122
122
  | `parse` | `(value: string) => string` | Transform the value on every change, before `onChange`/`formValidator` — also what gets rendered (see above) |
123
123
  | `isUppercase` | `boolean` | Uppercases the field's rendering (CSS only — the stored value is unchanged; use `parse` to uppercase the value itself) |
124
124
  | `customInput` | `ReactElement` | Element rendered in place of the internal `<input>`, cloned with all of Input's props. The escape hatch for a mask library; note `autoFocus` and `autoResize` stop working, since Input cannot attach its ref |
125
+ | `ref` | `Ref<HTMLInputElement \| HTMLTextAreaElement>` | Ref to the inner field, not the wrapper. Not forwarded to a `customInput` |
125
126
 
126
127
  **Slots:** `label` `container` `input` `suffix` `upperRightLabel` `fieldset`
127
128
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Import:** `import { KlipyPicker } from '@ahrowe/ui'`
8
8
 
9
- **Requires:** `<div id="bodyEnd"></div>` in your HTML when `isModal` is used (Modal renders via portal). A Klipy API token — the component ships with a default key, but supply your own `token` prop for production use.
9
+ **Requires:** `<div id="bodyEnd"></div>` in your HTML when `isModal` is used (Modal renders via portal). A Klipy API token, passed as the `token` prop. There is no built-in key: without one the picker renders but every request fails.
10
10
 
11
11
  ```tsx
12
12
  import { KlipyPicker } from '@ahrowe/ui';
@@ -76,6 +76,7 @@ const priceValidator = new FormValidator<number | undefined>(undefined, [Validat
76
76
  | `arrowsLayout` | `'auto' \| 'stacked' \| 'split'` | Stepper layout. Default: `'auto'` |
77
77
  | `labels.increase` | `string` | Accessible name for the increase button. Default: `'Increase'` |
78
78
  | `labels.decrease` | `string` | Accessible name for the decrease button. Default: `'Decrease'` |
79
+ | `ref` | `Ref<HTMLInputElement>` | Ref to the inner `<input>` |
79
80
 
80
81
  **Steppers (`showArrows`):** two layouts, picked by `arrowsLayout`:
81
82
 
package/docs/OtpInput.md CHANGED
@@ -88,6 +88,7 @@ const codeValidator = new FormValidator('', [Validators.required(), Validators.m
88
88
  | `clearErrorDelay` | `number` | Delay in ms before `clearOnError` clears the boxes (default `900`) |
89
89
  | `disabled` | `boolean` | |
90
90
  | `autoFocus` | `boolean` | Focuses the first empty box (or the first box) on mount |
91
+ | `ref` | `Ref<HTMLDivElement>` | Ref to the root element |
91
92
 
92
93
  **Slots:** `root` `label` `inputs` `input` `separator`
93
94
 
@@ -40,6 +40,7 @@ import { SearchInput } from '@ahrowe/ui';
40
40
  | Variable | Falls back to |
41
41
  |----------|---------------|
42
42
  | `--search-input-color` | *(none — unset by default)* |
43
+ | `ref` | `Ref<HTMLInputElement>` | Ref to the inner `<input>`, for focusing the field |
43
44
 
44
45
  **Key props:**
45
46
 
package/docs/Switch.md CHANGED
@@ -46,6 +46,7 @@ const notifyValidator = new FormValidator(false);
46
46
  | `disabled` | `boolean` | |
47
47
  | `children` | `ReactNode` | Custom label content (overrides `label`) |
48
48
  | `tabIndex` | `number` | |
49
+ | `ref` | `Ref<HTMLDivElement>` | Ref to the root element |
49
50
 
50
51
  **Sizing:** the track and thumb are dimensioned in `em`, so the whole switch scales with the inherited `font-size` — no dedicated size prop. Use `style={{ fontSize: ... }}` to scale everything together, or the `track`/`thumb` slots (`classNames`/`styles`) to resize just those parts.
51
52
 
package/docs/Textarea.md CHANGED
@@ -40,5 +40,6 @@ const descValidator = new FormValidator('', [Validators.required(), Validators.m
40
40
  | `formValidator` | `FormValidator` | Connects to validation |
41
41
  | `placeholder` | `string` | |
42
42
  | `readOnly` | `boolean` | |
43
+ | `ref` | `Ref<HTMLTextAreaElement>` | Ref to the inner `<textarea>` |
43
44
 
44
45
  **Slots:** Same as `Input` — `label` `container` `input` `suffix` `upperRightLabel` `fieldset`