@ahrowe/ui 0.42.0 → 0.44.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 (332) hide show
  1. package/CHANGELOG.md +946 -0
  2. package/README.md +14 -12
  3. package/dist/cjs-types/common/accordion/accordion.types.d.ts +17 -2
  4. package/dist/cjs-types/common/actionButtons/actionButtons.types.d.ts +7 -1
  5. package/dist/cjs-types/common/actionIcon/actionIcon.d.ts +1 -1
  6. package/dist/cjs-types/common/actionIcon/actionIcon.types.d.ts +7 -9
  7. package/dist/cjs-types/common/alert/alert.types.d.ts +6 -8
  8. package/dist/cjs-types/common/animatedLogo/animatedLogo.types.d.ts +3 -2
  9. package/dist/cjs-types/common/badge/badge.types.d.ts +10 -6
  10. package/dist/cjs-types/common/button/button.types.d.ts +14 -4
  11. package/dist/cjs-types/common/calendar/calendar.types.d.ts +25 -10
  12. package/dist/cjs-types/common/calendar/components/agendaList/agendaList.d.ts +1 -1
  13. package/dist/cjs-types/common/calendar/components/agendaList/agendaList.types.d.ts +3 -0
  14. package/dist/cjs-types/common/calendar/components/calendarHeader/calendarHeader.d.ts +1 -1
  15. package/dist/cjs-types/common/calendar/components/calendarHeader/calendarHeader.types.d.ts +2 -0
  16. package/dist/cjs-types/common/calendar/components/compactMonth/compactMonth.d.ts +1 -1
  17. package/dist/cjs-types/common/calendar/components/monthView/monthView.d.ts +1 -1
  18. package/dist/cjs-types/common/calendar/components/monthView/monthView.types.d.ts +3 -2
  19. package/dist/cjs-types/common/calendar/components/timeGrid/timeGrid.d.ts +1 -1
  20. package/dist/cjs-types/common/calendar/components/timeGrid/timeGrid.types.d.ts +9 -1
  21. package/dist/cjs-types/common/calendar/dates.d.ts +21 -5
  22. package/dist/cjs-types/common/calendar/format.d.ts +3 -2
  23. package/dist/cjs-types/common/calendar/layout.d.ts +5 -0
  24. package/dist/cjs-types/common/calendar/useNow.d.ts +4 -0
  25. package/dist/cjs-types/common/calendar/view.types.d.ts +9 -2
  26. package/dist/cjs-types/common/card/card.types.d.ts +16 -2
  27. package/dist/cjs-types/common/chip/chip.types.d.ts +10 -5
  28. package/dist/cjs-types/common/configProvider/configProvider.types.d.ts +4 -0
  29. package/dist/cjs-types/common/copyButton/copyButton.types.d.ts +5 -4
  30. package/dist/cjs-types/common/fab/components/fabBase/fabBase.d.ts +1 -1
  31. package/dist/cjs-types/common/fab/components/fabBase/fabBase.types.d.ts +2 -1
  32. package/dist/cjs-types/common/loader/index.d.ts +2 -0
  33. package/dist/cjs-types/common/loader/loader.d.ts +4 -0
  34. package/dist/cjs-types/common/loader/loader.types.d.ts +31 -0
  35. package/dist/cjs-types/common/loadingOverlay/index.d.ts +2 -0
  36. package/dist/cjs-types/common/loadingOverlay/loadingOverlay.d.ts +4 -0
  37. package/dist/cjs-types/common/loadingOverlay/loadingOverlay.types.d.ts +21 -0
  38. package/dist/cjs-types/common/progressBar/progressBar.d.ts +0 -1
  39. package/dist/cjs-types/common/progressBar/progressBar.types.d.ts +3 -1
  40. package/dist/cjs-types/common/splitButton/splitButton.types.d.ts +4 -1
  41. package/dist/cjs-types/common/styles/tone.d.ts +11 -0
  42. package/dist/cjs-types/common/themeProvider/color.types.d.ts +20 -0
  43. package/dist/cjs-types/common/themeProvider/index.d.ts +2 -0
  44. package/dist/cjs-types/common/themeProvider/theme.types.d.ts +7 -6
  45. package/dist/cjs-types/common/timeline/timeline.types.d.ts +3 -10
  46. package/dist/cjs-types/common/toast/index.d.ts +1 -1
  47. package/dist/cjs-types/common/toast/toast.types.d.ts +7 -3
  48. package/dist/cjs-types/common/types/actions.types.d.ts +1 -1
  49. package/dist/cjs-types/common/utils/dismissClick.d.ts +4 -0
  50. package/dist/cjs-types/common/utils/isDev.d.ts +1 -0
  51. package/dist/cjs-types/index.d.ts +4 -1
  52. package/dist/esm/common/accordion/accordion.mjs +1 -1
  53. package/dist/esm/common/accordion/accordion.mjs.map +1 -1
  54. package/dist/esm/common/accordion/accordion.module.mjs +1 -1
  55. package/dist/esm/common/accordion/accordion.module.mjs.map +1 -1
  56. package/dist/esm/common/accordion/accordion.types.mjs +1 -1
  57. package/dist/esm/common/accordion/accordion.types.mjs.map +1 -1
  58. package/dist/esm/common/actionButtons/actionButtons.mjs +1 -1
  59. package/dist/esm/common/actionButtons/actionButtons.mjs.map +1 -1
  60. package/dist/esm/common/actionIcon/actionIcon.mjs +1 -1
  61. package/dist/esm/common/actionIcon/actionIcon.mjs.map +1 -1
  62. package/dist/esm/common/actionIcon/actionIcon.module.mjs +1 -1
  63. package/dist/esm/common/actionIcon/actionIcon.module.mjs.map +1 -1
  64. package/dist/esm/common/alert/alert.mjs +1 -1
  65. package/dist/esm/common/alert/alert.mjs.map +1 -1
  66. package/dist/esm/common/alert/alert.module.mjs +1 -1
  67. package/dist/esm/common/alert/alert.module.mjs.map +1 -1
  68. package/dist/esm/common/animatedLogo/animatedLogo.mjs +1 -1
  69. package/dist/esm/common/animatedLogo/animatedLogo.mjs.map +1 -1
  70. package/dist/esm/common/avatar/avatar.mjs +1 -1
  71. package/dist/esm/common/avatar/avatar.mjs.map +1 -1
  72. package/dist/esm/common/badge/badge.mjs +1 -1
  73. package/dist/esm/common/badge/badge.mjs.map +1 -1
  74. package/dist/esm/common/badge/badge.module.mjs +1 -1
  75. package/dist/esm/common/badge/badge.module.mjs.map +1 -1
  76. package/dist/esm/common/badge/badge.types.mjs +1 -1
  77. package/dist/esm/common/badge/badge.types.mjs.map +1 -1
  78. package/dist/esm/common/bodyEnd/bodyEnd.mjs +1 -1
  79. package/dist/esm/common/bodyEnd/bodyEnd.mjs.map +1 -1
  80. package/dist/esm/common/breadcrumb/breadcrumb.mjs +1 -1
  81. package/dist/esm/common/breadcrumb/breadcrumb.mjs.map +1 -1
  82. package/dist/esm/common/breadcrumb/breadcrumb.module.mjs.map +1 -1
  83. package/dist/esm/common/button/button.mjs +1 -1
  84. package/dist/esm/common/button/button.mjs.map +1 -1
  85. package/dist/esm/common/button/button.module.mjs +1 -1
  86. package/dist/esm/common/button/button.module.mjs.map +1 -1
  87. package/dist/esm/common/button/button.types.mjs +1 -1
  88. package/dist/esm/common/button/button.types.mjs.map +1 -1
  89. package/dist/esm/common/calendar/calendar.mjs +1 -1
  90. package/dist/esm/common/calendar/calendar.mjs.map +1 -1
  91. package/dist/esm/common/calendar/calendar.module.mjs.map +1 -1
  92. package/dist/esm/common/calendar/calendar.types.mjs.map +1 -1
  93. package/dist/esm/common/calendar/components/agendaList/agendaList.mjs +1 -1
  94. package/dist/esm/common/calendar/components/agendaList/agendaList.mjs.map +1 -1
  95. package/dist/esm/common/calendar/components/agendaList/agendaList.module.mjs.map +1 -1
  96. package/dist/esm/common/calendar/components/calendarHeader/calendarHeader.mjs +1 -1
  97. package/dist/esm/common/calendar/components/calendarHeader/calendarHeader.mjs.map +1 -1
  98. package/dist/esm/common/calendar/components/calendarHeader/calendarHeader.module.mjs +1 -1
  99. package/dist/esm/common/calendar/components/calendarHeader/calendarHeader.module.mjs.map +1 -1
  100. package/dist/esm/common/calendar/components/compactMonth/compactMonth.mjs +1 -1
  101. package/dist/esm/common/calendar/components/compactMonth/compactMonth.mjs.map +1 -1
  102. package/dist/esm/common/calendar/components/compactMonth/compactMonth.module.mjs +1 -1
  103. package/dist/esm/common/calendar/components/compactMonth/compactMonth.module.mjs.map +1 -1
  104. package/dist/esm/common/calendar/components/monthView/monthView.mjs +1 -1
  105. package/dist/esm/common/calendar/components/monthView/monthView.mjs.map +1 -1
  106. package/dist/esm/common/calendar/components/monthView/monthView.module.mjs +1 -1
  107. package/dist/esm/common/calendar/components/monthView/monthView.module.mjs.map +1 -1
  108. package/dist/esm/common/calendar/components/timeGrid/timeGrid.mjs +1 -1
  109. package/dist/esm/common/calendar/components/timeGrid/timeGrid.mjs.map +1 -1
  110. package/dist/esm/common/calendar/components/timeGrid/timeGrid.module.mjs +1 -1
  111. package/dist/esm/common/calendar/components/timeGrid/timeGrid.module.mjs.map +1 -1
  112. package/dist/esm/common/calendar/dates.mjs +1 -1
  113. package/dist/esm/common/calendar/dates.mjs.map +1 -1
  114. package/dist/esm/common/calendar/format.mjs +1 -1
  115. package/dist/esm/common/calendar/format.mjs.map +1 -1
  116. package/dist/esm/common/calendar/layout.mjs +1 -1
  117. package/dist/esm/common/calendar/layout.mjs.map +1 -1
  118. package/dist/esm/common/calendar/useNow.mjs +2 -0
  119. package/dist/esm/common/calendar/useNow.mjs.map +1 -0
  120. package/dist/esm/common/card/Card.mjs +1 -1
  121. package/dist/esm/common/card/Card.mjs.map +1 -1
  122. package/dist/esm/common/card/CardActions.mjs +1 -1
  123. package/dist/esm/common/card/CardActions.mjs.map +1 -1
  124. package/dist/esm/common/card/CardHeader.mjs.map +1 -1
  125. package/dist/esm/common/card/card.module.mjs +1 -1
  126. package/dist/esm/common/card/card.module.mjs.map +1 -1
  127. package/dist/esm/common/card/card.types.mjs +1 -1
  128. package/dist/esm/common/card/card.types.mjs.map +1 -1
  129. package/dist/esm/common/carousel/carousel.mjs +1 -1
  130. package/dist/esm/common/carousel/carousel.mjs.map +1 -1
  131. package/dist/esm/common/carousel/carousel.module.mjs.map +1 -1
  132. package/dist/esm/common/checkbox/checkbox.mjs +1 -1
  133. package/dist/esm/common/checkbox/checkbox.mjs.map +1 -1
  134. package/dist/esm/common/checkbox/checkbox.module.mjs +1 -1
  135. package/dist/esm/common/checkbox/checkbox.module.mjs.map +1 -1
  136. package/dist/esm/common/chip/chip.mjs +1 -1
  137. package/dist/esm/common/chip/chip.mjs.map +1 -1
  138. package/dist/esm/common/chip/chip.module.mjs +1 -1
  139. package/dist/esm/common/chip/chip.module.mjs.map +1 -1
  140. package/dist/esm/common/chip/chip.types.mjs +1 -1
  141. package/dist/esm/common/chip/chip.types.mjs.map +1 -1
  142. package/dist/esm/common/colorPicker/colorPicker.mjs +1 -1
  143. package/dist/esm/common/colorPicker/colorPicker.mjs.map +1 -1
  144. package/dist/esm/common/colorPicker/colorPicker.module.mjs.map +1 -1
  145. package/dist/esm/common/confirmModal/confirmModal.mjs +1 -1
  146. package/dist/esm/common/confirmModal/confirmModal.mjs.map +1 -1
  147. package/dist/esm/common/copyButton/copyButton.mjs +1 -1
  148. package/dist/esm/common/copyButton/copyButton.mjs.map +1 -1
  149. package/dist/esm/common/copyButton/copyButton.module.mjs +1 -1
  150. package/dist/esm/common/copyButton/copyButton.module.mjs.map +1 -1
  151. package/dist/esm/common/dropdown/dropdown.mjs +1 -1
  152. package/dist/esm/common/dropdown/dropdown.mjs.map +1 -1
  153. package/dist/esm/common/dropdown/dropdown.module.mjs +1 -1
  154. package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -1
  155. package/dist/esm/common/errorBoundary/errorBoundary.mjs +2 -2
  156. package/dist/esm/common/errorBoundary/errorBoundary.mjs.map +1 -1
  157. package/dist/esm/common/fab/components/fabBase/fabBase.mjs +1 -1
  158. package/dist/esm/common/fab/components/fabBase/fabBase.mjs.map +1 -1
  159. package/dist/esm/common/fab/fab.mjs +1 -1
  160. package/dist/esm/common/fab/fab.mjs.map +1 -1
  161. package/dist/esm/common/flip/flip.mjs +1 -1
  162. package/dist/esm/common/flip/flip.mjs.map +1 -1
  163. package/dist/esm/common/kanbanBoard/KanbanColumn.mjs +1 -1
  164. package/dist/esm/common/kanbanBoard/KanbanColumn.mjs.map +1 -1
  165. package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs +1 -1
  166. package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs.map +1 -1
  167. package/dist/esm/common/klipyPicker/klipyPicker.mjs +1 -1
  168. package/dist/esm/common/klipyPicker/klipyPicker.mjs.map +1 -1
  169. package/dist/esm/common/loader/loader.mjs +2 -0
  170. package/dist/esm/common/loader/loader.mjs.map +1 -0
  171. package/dist/esm/common/loader/loader.module.mjs +2 -0
  172. package/dist/esm/common/loader/loader.module.mjs.map +1 -0
  173. package/dist/esm/common/loader/loader.types.mjs +2 -0
  174. package/dist/esm/common/loader/loader.types.mjs.map +1 -0
  175. package/dist/esm/common/loadingOverlay/loadingOverlay.mjs +2 -0
  176. package/dist/esm/common/loadingOverlay/loadingOverlay.mjs.map +1 -0
  177. package/dist/esm/common/loadingOverlay/loadingOverlay.module.mjs +2 -0
  178. package/dist/esm/common/loadingOverlay/loadingOverlay.module.mjs.map +1 -0
  179. package/dist/esm/common/modal/modal.mjs +1 -1
  180. package/dist/esm/common/modal/modal.mjs.map +1 -1
  181. package/dist/esm/common/modal/modal.module.mjs.map +1 -1
  182. package/dist/esm/common/numberInput/numberInput.mjs +1 -1
  183. package/dist/esm/common/numberInput/numberInput.mjs.map +1 -1
  184. package/dist/esm/common/numberInput/numberInput.module.mjs.map +1 -1
  185. package/dist/esm/common/popover/popover.mjs +1 -1
  186. package/dist/esm/common/popover/popover.mjs.map +1 -1
  187. package/dist/esm/common/progressBar/progressBar.mjs +1 -1
  188. package/dist/esm/common/progressBar/progressBar.mjs.map +1 -1
  189. package/dist/esm/common/progressBar/progressBar.module.mjs +1 -1
  190. package/dist/esm/common/progressBar/progressBar.module.mjs.map +1 -1
  191. package/dist/esm/common/roomDrawer/roomDrawer.mjs +1 -1
  192. package/dist/esm/common/roomDrawer/roomDrawer.mjs.map +1 -1
  193. package/dist/esm/common/roomDrawer/roomDrawer.module.mjs.map +1 -1
  194. package/dist/esm/common/sectionHeader/sectionHeader.mjs.map +1 -1
  195. package/dist/esm/common/splitButton/splitButton.mjs +1 -1
  196. package/dist/esm/common/splitButton/splitButton.mjs.map +1 -1
  197. package/dist/esm/common/styles/tone.mjs +4 -0
  198. package/dist/esm/common/styles/tone.mjs.map +1 -0
  199. package/dist/esm/common/styles/tone.module.mjs +2 -0
  200. package/dist/esm/common/styles/tone.module.mjs.map +1 -0
  201. package/dist/esm/common/themeProvider/color.types.mjs +2 -0
  202. package/dist/esm/common/themeProvider/color.types.mjs.map +1 -0
  203. package/dist/esm/common/themeProvider/defaultTheme.mjs +1 -1
  204. package/dist/esm/common/themeProvider/defaultTheme.mjs.map +1 -1
  205. package/dist/esm/common/tilt/tilt.mjs +1 -1
  206. package/dist/esm/common/tilt/tilt.mjs.map +1 -1
  207. package/dist/esm/common/timeInput/timeInput.mjs +1 -1
  208. package/dist/esm/common/timeInput/timeInput.mjs.map +1 -1
  209. package/dist/esm/common/timeline/timeline.mjs +1 -1
  210. package/dist/esm/common/timeline/timeline.mjs.map +1 -1
  211. package/dist/esm/common/timeline/timeline.module.mjs +1 -1
  212. package/dist/esm/common/timeline/timeline.module.mjs.map +1 -1
  213. package/dist/esm/common/timeline/timeline.types.mjs +1 -1
  214. package/dist/esm/common/timeline/timeline.types.mjs.map +1 -1
  215. package/dist/esm/common/timer/timer.mjs +1 -1
  216. package/dist/esm/common/timer/timer.mjs.map +1 -1
  217. package/dist/esm/common/timer/timer.module.mjs +1 -1
  218. package/dist/esm/common/timer/timer.module.mjs.map +1 -1
  219. package/dist/esm/common/toast/toast.mjs +1 -1
  220. package/dist/esm/common/toast/toast.mjs.map +1 -1
  221. package/dist/esm/common/toast/toast.module.mjs +1 -1
  222. package/dist/esm/common/toast/toast.module.mjs.map +1 -1
  223. package/dist/esm/common/toast/toastHost.mjs +1 -1
  224. package/dist/esm/common/toast/toastHost.mjs.map +1 -1
  225. package/dist/esm/common/utils/dismissClick.mjs +2 -0
  226. package/dist/esm/common/utils/dismissClick.mjs.map +1 -0
  227. package/dist/esm/common/utils/isDev.mjs +2 -0
  228. package/dist/esm/common/utils/isDev.mjs.map +1 -0
  229. package/dist/esm/common/virtualList/virtualList.mjs +1 -1
  230. package/dist/esm/common/virtualList/virtualList.mjs.map +1 -1
  231. package/dist/esm/common/virtualList/virtualList.module.mjs +1 -1
  232. package/dist/esm/common/virtualList/virtualList.module.mjs.map +1 -1
  233. package/dist/esm/index.mjs +1 -1
  234. package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs +1 -1
  235. package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs.map +1 -1
  236. package/dist/index.cjs +5 -3
  237. package/dist/index.cjs.map +1 -1
  238. package/dist/style.css +1 -1
  239. package/dist/types/common/accordion/accordion.types.d.ts +17 -2
  240. package/dist/types/common/actionButtons/actionButtons.types.d.ts +7 -1
  241. package/dist/types/common/actionIcon/actionIcon.d.ts +1 -1
  242. package/dist/types/common/actionIcon/actionIcon.types.d.ts +7 -9
  243. package/dist/types/common/alert/alert.types.d.ts +6 -8
  244. package/dist/types/common/animatedLogo/animatedLogo.types.d.ts +3 -2
  245. package/dist/types/common/badge/badge.types.d.ts +10 -6
  246. package/dist/types/common/button/button.types.d.ts +14 -4
  247. package/dist/types/common/calendar/calendar.types.d.ts +25 -10
  248. package/dist/types/common/calendar/components/agendaList/agendaList.d.ts +1 -1
  249. package/dist/types/common/calendar/components/agendaList/agendaList.types.d.ts +3 -0
  250. package/dist/types/common/calendar/components/calendarHeader/calendarHeader.d.ts +1 -1
  251. package/dist/types/common/calendar/components/calendarHeader/calendarHeader.types.d.ts +2 -0
  252. package/dist/types/common/calendar/components/compactMonth/compactMonth.d.ts +1 -1
  253. package/dist/types/common/calendar/components/monthView/monthView.d.ts +1 -1
  254. package/dist/types/common/calendar/components/monthView/monthView.types.d.ts +3 -2
  255. package/dist/types/common/calendar/components/timeGrid/timeGrid.d.ts +1 -1
  256. package/dist/types/common/calendar/components/timeGrid/timeGrid.types.d.ts +9 -1
  257. package/dist/types/common/calendar/dates.d.ts +21 -5
  258. package/dist/types/common/calendar/format.d.ts +3 -2
  259. package/dist/types/common/calendar/layout.d.ts +5 -0
  260. package/dist/types/common/calendar/useNow.d.ts +4 -0
  261. package/dist/types/common/calendar/view.types.d.ts +9 -2
  262. package/dist/types/common/card/card.types.d.ts +16 -2
  263. package/dist/types/common/chip/chip.types.d.ts +10 -5
  264. package/dist/types/common/configProvider/configProvider.types.d.ts +4 -0
  265. package/dist/types/common/copyButton/copyButton.types.d.ts +5 -4
  266. package/dist/types/common/fab/components/fabBase/fabBase.d.ts +1 -1
  267. package/dist/types/common/fab/components/fabBase/fabBase.types.d.ts +2 -1
  268. package/dist/types/common/loader/index.d.ts +2 -0
  269. package/dist/types/common/loader/loader.d.ts +4 -0
  270. package/dist/types/common/loader/loader.types.d.ts +31 -0
  271. package/dist/types/common/loadingOverlay/index.d.ts +2 -0
  272. package/dist/types/common/loadingOverlay/loadingOverlay.d.ts +4 -0
  273. package/dist/types/common/loadingOverlay/loadingOverlay.types.d.ts +21 -0
  274. package/dist/types/common/progressBar/progressBar.d.ts +0 -1
  275. package/dist/types/common/progressBar/progressBar.types.d.ts +3 -1
  276. package/dist/types/common/splitButton/splitButton.types.d.ts +4 -1
  277. package/dist/types/common/styles/tone.d.ts +11 -0
  278. package/dist/types/common/themeProvider/color.types.d.ts +20 -0
  279. package/dist/types/common/themeProvider/index.d.ts +2 -0
  280. package/dist/types/common/themeProvider/theme.types.d.ts +7 -6
  281. package/dist/types/common/timeline/timeline.types.d.ts +3 -10
  282. package/dist/types/common/toast/index.d.ts +1 -1
  283. package/dist/types/common/toast/toast.types.d.ts +7 -3
  284. package/dist/types/common/types/actions.types.d.ts +1 -1
  285. package/dist/types/common/utils/dismissClick.d.ts +4 -0
  286. package/dist/types/common/utils/isDev.d.ts +1 -0
  287. package/dist/types/index.d.ts +4 -1
  288. package/docs/Accordion.md +74 -5
  289. package/docs/ActionButtons.md +6 -3
  290. package/docs/ActionIcon.md +39 -14
  291. package/docs/Alert.md +27 -17
  292. package/docs/AnimatedLogo.md +1 -1
  293. package/docs/Badge.md +24 -7
  294. package/docs/Button.md +98 -40
  295. package/docs/ButtonGroup.md +18 -18
  296. package/docs/CLAUDE.md +24 -13
  297. package/docs/Calendar.md +35 -17
  298. package/docs/Card.md +53 -14
  299. package/docs/Checkbox.md +1 -1
  300. package/docs/Chip.md +24 -9
  301. package/docs/ConfigProvider.md +4 -4
  302. package/docs/CopyButton.md +6 -5
  303. package/docs/Loader.md +95 -0
  304. package/docs/LoadingOverlay.md +85 -0
  305. package/docs/ProgressBar.md +7 -4
  306. package/docs/SectionHeader.md +1 -1
  307. package/docs/Skeleton.md +1 -1
  308. package/docs/SplitButton.md +6 -5
  309. package/docs/ThemeColor.md +103 -0
  310. package/docs/ThemeProvider.md +5 -5
  311. package/docs/Timeline.md +18 -9
  312. package/docs/Toast.md +25 -11
  313. package/package.json +3 -2
  314. package/dist/cjs-types/common/loading/index.d.ts +0 -1
  315. package/dist/cjs-types/common/loading/spinnerLoading/index.d.ts +0 -2
  316. package/dist/cjs-types/common/loading/spinnerLoading/spinnerLoading.d.ts +0 -6
  317. package/dist/esm/common/accordion/accordion.plain.module.mjs +0 -2
  318. package/dist/esm/common/accordion/accordion.plain.module.mjs.map +0 -1
  319. package/dist/esm/common/accordion/accordion.primary.module.mjs +0 -2
  320. package/dist/esm/common/accordion/accordion.primary.module.mjs.map +0 -1
  321. package/dist/esm/common/alert/alert.types.mjs +0 -2
  322. package/dist/esm/common/alert/alert.types.mjs.map +0 -1
  323. package/dist/esm/common/loading/spinnerLoading/index.mjs +0 -2
  324. package/dist/esm/common/loading/spinnerLoading/index.mjs.map +0 -1
  325. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs +0 -2
  326. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs.map +0 -1
  327. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs +0 -2
  328. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs.map +0 -1
  329. package/dist/types/common/loading/index.d.ts +0 -1
  330. package/dist/types/common/loading/spinnerLoading/index.d.ts +0 -2
  331. package/dist/types/common/loading/spinnerLoading/spinnerLoading.d.ts +0 -6
  332. package/docs/Loading.md +0 -68
package/docs/Alert.md CHANGED
@@ -4,24 +4,24 @@
4
4
 
5
5
  **Keywords:** warning box
6
6
 
7
- **Import:** `import { Alert, AlertStyleType } from '@ahrowe/ui'`
7
+ **Import:** `import { Alert, ThemeColor } from '@ahrowe/ui'`
8
8
 
9
- **Style variants:** `AlertStyleType.Default` | `AlertStyleType.Info` | `AlertStyleType.Success` | `AlertStyleType.Warn` | `AlertStyleType.Error`
9
+ **Colours:** any `color`: a `ThemeColor` (default `Primary`) or any CSS colour, see [ThemeColor.md](ThemeColor.md). A `ThemeColor` also picks the icon: a bell for `Primary` and `Neutral`, then info, check, warning and cross. Any other colour shows `icon`, or the bell.
10
10
 
11
11
  ```tsx
12
- import { Alert, AlertStyleType } from '@ahrowe/ui';
12
+ import { Alert, ThemeColor } from '@ahrowe/ui';
13
13
 
14
- // Default, neutral message
15
- <Alert>A default, neutral message.</Alert>
14
+ // In the primary colour, the default
15
+ <Alert>Here is what changed since your last visit.</Alert>
16
16
 
17
- // Semantic variants
18
- <Alert styleType={AlertStyleType.Info}>Here's something worth knowing.</Alert>
19
- <Alert styleType={AlertStyleType.Success}>Your changes were saved.</Alert>
20
- <Alert styleType={AlertStyleType.Warn}>Your storage is almost full.</Alert>
21
- <Alert styleType={AlertStyleType.Error}>Something went wrong. Please try again.</Alert>
17
+ // Semantic colours
18
+ <Alert color={ThemeColor.Info}>Here's something worth knowing.</Alert>
19
+ <Alert color={ThemeColor.Success}>Your changes were saved.</Alert>
20
+ <Alert color={ThemeColor.Warn}>Your storage is almost full.</Alert>
21
+ <Alert color={ThemeColor.Error}>Something went wrong. Please try again.</Alert>
22
22
 
23
23
  // With a title
24
- <Alert styleType={AlertStyleType.Warn} title="Storage almost full">
24
+ <Alert color={ThemeColor.Warn} title="Storage almost full">
25
25
  You've used 92% of your available space. Free up room or upgrade your plan.
26
26
  </Alert>
27
27
 
@@ -30,7 +30,7 @@ import { Alert, AlertStyleType } from '@ahrowe/ui';
30
30
  const [visible, setVisible] = useState(true);
31
31
  {visible && (
32
32
  <Alert
33
- styleType={AlertStyleType.Info}
33
+ color={ThemeColor.Info}
34
34
  title="New feature available"
35
35
  onClose={() => setVisible(false)}
36
36
  >
@@ -39,13 +39,13 @@ const [visible, setVisible] = useState(true);
39
39
  )}
40
40
 
41
41
  // Without the leading icon
42
- <Alert styleType={AlertStyleType.Success} hideIcon>
42
+ <Alert color={ThemeColor.Success} hideIcon>
43
43
  A minimal message with no leading icon.
44
44
  </Alert>
45
45
 
46
- // Custom icon, overriding the styleType default
46
+ // Custom icon, overriding the colour's own
47
47
  import { faRocket } from '@fortawesome/free-solid-svg-icons';
48
- <Alert styleType={AlertStyleType.Info} icon={faRocket}>
48
+ <Alert color={ThemeColor.Info} icon={faRocket}>
49
49
  Shipping a new release tonight.
50
50
  </Alert>
51
51
  ```
@@ -56,8 +56,8 @@ import { faRocket } from '@fortawesome/free-solid-svg-icons';
56
56
  |------|------|-------------|
57
57
  | `title` | `ReactNode` | Optional bold heading above the description |
58
58
  | `children` | `ReactNode` | The message body |
59
- | `styleType` | `AlertStyleType` | Colour variant and default icon (default `Default`) |
60
- | `icon` | `IconDefinition \| ReactElement` | Overrides the default icon for `styleType` — FontAwesome icon or any React element |
59
+ | `color` | `ColorValue` | A `ThemeColor` (default `Primary`) or any CSS colour; a `ThemeColor` also picks the icon |
60
+ | `icon` | `IconDefinition \| ReactElement` | Overrides the colour's icon — FontAwesome icon or any React element |
61
61
  | `hideIcon` | `boolean` | Hide the leading icon entirely |
62
62
  | `onClose` | `() => void` | Shows a close button and is called when it's clicked. `Alert` doesn't hide itself, so stop rendering it (or update your own state) in the handler |
63
63
 
@@ -70,3 +70,13 @@ import { faRocket } from '@fortawesome/free-solid-svg-icons';
70
70
  ## Sizing
71
71
 
72
72
  Every length in an alert is `em`, so the padding, the icon, the close button and the accent bar keep their ratios to the body copy at any base font.
73
+
74
+ ## Migration from `AlertStyleType`
75
+
76
+ Before 0.43 an Alert's colour was `styleType`, typed `AlertStyleType`. It is now `color`, typed
77
+ `ColorValue`, and `AlertStyleType` is gone, so TypeScript points at every use:
78
+
79
+ | Before | After |
80
+ |--------|-------|
81
+ | `styleType={AlertStyleType.Default}` | nothing: `Primary` is the default, with the same bell |
82
+ | `styleType={AlertStyleType.Info}` (and `Success`, `Warn`, `Error`) | `color={ThemeColor.Info}` |
@@ -49,7 +49,7 @@ import { AnimatedLogo } from '@ahrowe/ui';
49
49
  | `path` | `string` | SVG path `d` data to draw and fill (default: the AhroweUI mark). Multiple subpaths (several `M` commands in one `d`) are supported. |
50
50
  | `viewBox` | `string` | `viewBox` matching `path`'s coordinate space (default: the AhroweUI mark's viewBox) |
51
51
  | `size` | `number \| string` | Width/height of the root `svg` (default `96`) |
52
- | `color` | `string` | Overrides stroke/fill colour (default `var(--primary-color)`) |
52
+ | `color` | `ColorValue` | The stroke and fill: a `ThemeColor` or any CSS colour (default `--primary-color`) |
53
53
  | `duration` | `number` | Length of one draw-fill cycle, in seconds (default `4.2`) |
54
54
  | `loop` | `boolean` | Repeats the draw-fill-retract cycle forever; `false` plays once and holds filled (default `true`) |
55
55
  | `fill` | `boolean` | Fills the interior once drawn; `false` keeps it an outline-only trace (default `true`) |
package/docs/Badge.md CHANGED
@@ -4,14 +4,14 @@
4
4
 
5
5
  **Keywords:** pill
6
6
 
7
- **Import:** `import { Badge, BadgeStyleType, BadgePosition } from '@ahrowe/ui'`
7
+ **Import:** `import { Badge, BadgeStyleType, BadgePosition, ThemeColor } from '@ahrowe/ui'`
8
8
 
9
- **Style variants:** `BadgeStyleType.Default` | `BadgeStyleType.Primary` (default) | `BadgeStyleType.Success` | `BadgeStyleType.Info` | `BadgeStyleType.Warn` | `BadgeStyleType.Error`
9
+ **Styles:** `BadgeStyleType.Filled` (default) | `BadgeStyleType.Light` | `BadgeStyleType.Outlined`, in any `color`: a `ThemeColor` (default `Primary`) or any CSS colour, see [ThemeColor.md](ThemeColor.md). A `dot` is always solid.
10
10
 
11
- **Position (when wrapping `children`):** `BadgePosition.TopRight` (default) | `BadgePosition.TopLeft` | `BadgePosition.BottomRight` | `BadgePosition.BottomLeft`
11
+ **Position (when wrapping `children`):** `BadgePosition.TopRight` (default) | `BadgePosition.TopLeft` | `BadgePosition.BottomRight` | `BadgePosition.BottomLeft`. A badge over its `children` sits on the page colour, so `Light`, `Outlined` and a `Neutral` `Filled` look as they do on the page instead of letting the avatar or icon show through.
12
12
 
13
13
  ```tsx
14
- import { Badge, BadgeStyleType } from '@ahrowe/ui';
14
+ import { Badge, BadgeStyleType, ThemeColor } from '@ahrowe/ui';
15
15
  import { faBell } from '@fortawesome/free-solid-svg-icons';
16
16
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
17
17
 
@@ -25,10 +25,13 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
25
25
  <Badge content="NEW" />
26
26
 
27
27
  // Plain dot, no text
28
- <Badge dot styleType={BadgeStyleType.Error} />
28
+ <Badge dot color={ThemeColor.Error} />
29
+
30
+ // A status label
31
+ <Badge content="Paid" styleType={BadgeStyleType.Light} color={ThemeColor.Success} />
29
32
 
30
33
  // Overlaying an icon
31
- <Badge count={12} styleType={BadgeStyleType.Error}>
34
+ <Badge count={12} color={ThemeColor.Error}>
32
35
  <FontAwesomeIcon icon={faBell} />
33
36
  </Badge>
34
37
 
@@ -47,8 +50,22 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
47
50
  | `content` | `ReactNode` | Custom content overriding the computed `count` text |
48
51
  | `dot` | `boolean` | Render as a plain dot with no text |
49
52
  | `showZero` | `boolean` | Show the badge when `count` is `0` |
50
- | `styleType` | `BadgeStyleType` | Colour variant (default `Primary`) |
53
+ | `styleType` | `BadgeStyleType` | `Filled` (default), `Light` or `Outlined`. Ignored by a `dot` |
54
+ | `color` | `ColorValue` | A `ThemeColor` (default `Primary`) or any CSS colour |
51
55
  | `position` | `BadgePosition` | Corner the badge attaches to when wrapping `children` (default `TopRight`) |
52
56
  | `children` | `ReactNode` | Element the badge overlays. Omit to render the badge inline on its own |
53
57
 
54
58
  **Slots:** `badge`
59
+
60
+ ## Migration from colour styles
61
+
62
+ Before 0.43, `BadgeStyleType` was a colour, and `Primary` was filled while the others were a light
63
+ tint. Style and colour are now separate props, so every colour comes in every style. The old
64
+ members are gone and TypeScript points at each:
65
+
66
+ | Before | After |
67
+ |--------|-------|
68
+ | `styleType={BadgeStyleType.Primary}` | nothing: `Filled` `Primary` is the default |
69
+ | `styleType={BadgeStyleType.Default}` | `styleType={BadgeStyleType.Light} color={ThemeColor.Neutral}` |
70
+ | `styleType={BadgeStyleType.Success}` (and `Info`, `Warn`, `Error`) | `styleType={BadgeStyleType.Light} color={ThemeColor.Success}` |
71
+ | `dot styleType={BadgeStyleType.Error}` | `dot color={ThemeColor.Error}` |
package/docs/Button.md CHANGED
@@ -1,37 +1,57 @@
1
1
  # Button
2
2
 
3
- **When to use:** Primary interactive action trigger. Supports loading state, icon, multiple visual styles and sizes.
3
+ **When to use:** Primary interactive action trigger. Supports loading state, icon, four styles in any colour, and sizes.
4
4
 
5
- **Keywords:** cta, action button
5
+ **Keywords:** cta, action button, ghost, text button, borderless, subtle, variant, danger, destructive, secondary
6
6
 
7
- **Import:** `import { Button, ButtonStyleType, ButtonSize, ButtonType } from '@ahrowe/ui'`
7
+ **Import:** `import { Button, ButtonStyleType, ButtonSize, ButtonType, ThemeColor } from '@ahrowe/ui'`
8
+
9
+ A button has a **style** (how much it stands out) and a **color**, set independently: any style
10
+ works with any colour. The colours are the library-wide `ThemeColor`s or any CSS colour, see
11
+ [ThemeColor.md](ThemeColor.md).
8
12
 
9
13
  ```tsx
10
- import { Button, ButtonStyleType, ButtonSize } from '@ahrowe/ui';
11
- import { faSave } from '@fortawesome/free-solid-svg-icons';
14
+ import { Button, ButtonStyleType, ButtonSize, ButtonType, ThemeColor } from '@ahrowe/ui';
15
+ import { faPlus, faSave, faTrash, faXmark } from '@fortawesome/free-solid-svg-icons';
12
16
 
13
- // Primary
14
- <Button styleType={ButtonStyleType.Primary} onClick={handleSave}>Save</Button>
17
+ // The main action
18
+ <Button styleType={ButtonStyleType.Filled} onClick={handleSave}>Save</Button>
15
19
 
16
- // With icon + loading state
20
+ // Secondary: Outlined is the default style, Primary the default colour
21
+ <Button onClick={handleCancel}>Cancel</Button>
22
+ <Button color={ThemeColor.Neutral} onClick={handleCancel}>Cancel</Button>
23
+
24
+ // Destructive
25
+ <Button styleType={ButtonStyleType.Filled} color={ThemeColor.Error} onClick={handleDelete}>Delete</Button>
26
+
27
+ // A trash icon in a table row
17
28
  <Button
18
- styleType={ButtonStyleType.Primary}
19
- icon={faSave}
20
- isLoading={isSaving}
21
- onClick={handleSave}
22
- >
29
+ styleType={ButtonStyleType.Plain}
30
+ color={ThemeColor.Error}
31
+ size={ButtonSize.Icon}
32
+ icon={faTrash}
33
+ aria-label="Delete row"
34
+ style={{ width: 32, height: 32 }}
35
+ />
36
+
37
+ // A close button: Neutral takes the text colour of whatever it sits on
38
+ <Button
39
+ styleType={ButtonStyleType.Plain}
40
+ color={ThemeColor.Neutral}
41
+ size={ButtonSize.Icon}
42
+ icon={faXmark}
43
+ aria-label="Close"
44
+ style={{ width: 32, height: 32 }}
45
+ />
46
+
47
+ // With icon + loading state
48
+ <Button styleType={ButtonStyleType.Filled} icon={faSave} isLoading={isSaving} onClick={handleSave}>
23
49
  Save
24
50
  </Button>
25
51
 
26
- // Delete / danger
27
- <Button styleType={ButtonStyleType.Delete} onClick={handleDelete}>Delete</Button>
28
-
29
52
  // Small
30
53
  <Button size={ButtonSize.Small}>Cancel</Button>
31
54
 
32
- // Icon-only — padding-free and square; give it the box size you want
33
- <Button size={ButtonSize.Icon} icon={faPlus} aria-label="Add" style={{ width: 44, height: 44 }} />
34
-
35
55
  // Press-and-hold: act on press rather than release
36
56
  <Button
37
57
  icon={faPlus}
@@ -42,12 +62,13 @@ import { faSave } from '@fortawesome/free-solid-svg-icons';
42
62
  />
43
63
 
44
64
  // Submit button in a form
45
- <Button type={ButtonType.Submit} styleType={ButtonStyleType.Primary}>Submit</Button>
65
+ <Button type={ButtonType.Submit} styleType={ButtonStyleType.Filled}>Submit</Button>
46
66
  ```
47
67
 
48
68
  **Enums:**
49
69
 
50
- - `ButtonStyleType`: `Primary` | `Default` | `Delete`
70
+ - `ButtonStyleType`: `Filled` | `Light` | `Outlined` (default) | `Plain`
71
+ - `ThemeColor`: `Primary` (default) | `Neutral` | `Success` | `Info` | `Warn` | `Error`
51
72
  - `ButtonSize`: `Default` | `Small` | `Medium` | `Large` | `Icon`
52
73
  - `ButtonType`: `Button` | `Reset` | `Submit`
53
74
 
@@ -55,41 +76,42 @@ import { faSave } from '@fortawesome/free-solid-svg-icons';
55
76
 
56
77
  | Prop | Type | Description |
57
78
  |------|------|-------------|
58
- | `styleType` | `ButtonStyleType` | Visual variant |
79
+ | `styleType` | `ButtonStyleType` | `Filled`: solid fill, for the one main action. `Light`: a tint of the colour behind text in the colour. `Outlined` (default): border and text in the colour. `Plain`: text in the colour, no fill or border, for toolbar, icon and close buttons |
80
+ | `color` | `ColorValue` | A `ThemeColor` (default `Primary`) or any CSS colour. `Neutral` takes the surrounding text colour, with a `--border-color` outline; `Error` is for destructive actions. See [ThemeColor.md](ThemeColor.md) |
59
81
  | `size` | `ButtonSize` | Size variant. `Icon` strips all padding, inherits the surrounding text size, and centres a lone icon — set the width/height yourself |
60
82
  | `type` | `ButtonType` | HTML button type |
61
83
  | `icon` | `IconDefinition \| ReactElement` | FontAwesome icon or any React element, shown before label |
62
- | `isLoading` | `boolean` | Replaces content with a spinner |
63
- | `disabled` | `boolean` | |
84
+ | `isLoading` | `boolean` | Replaces content with a [Loader](Loader.md) in the button's text colour. Blocks clicks like `disabled` but keeps full colour |
85
+ | `disabled` | `boolean` | Fades the button to half opacity |
64
86
  | `onClick` | `(e: MouseEvent) => void \| Promise<void>` | |
65
87
 
66
88
  `ButtonProps` extends `React.ButtonHTMLAttributes<HTMLButtonElement>`, so every native `<button>`
67
89
  attribute is accepted and forwarded — pointer handlers (`onPointerDown` and friends, for
68
90
  press-and-hold controls that act on press rather than release), `onContextMenu`, `tabIndex`,
69
91
  `name`, `value`, `form`, `autoFocus`, and the rest. `type` and `onClick` are narrowed: `type`
70
- takes the `ButtonType` enum, and `onClick` may return a promise.
92
+ takes the `ButtonType` enum, and `onClick` may return a promise. `color` is Button's own prop, not
93
+ the obsolete HTML attribute.
71
94
 
72
- **Theming (default style):** the `Default` style is transparent text-coloured by default. Override it theme-wide (or per button via `style`) without touching `Primary`/`Delete`:
95
+ **Theming:** each colour reads the theme variables listed in [ThemeColor.md](ThemeColor.md). The
96
+ `Filled` `Primary` button also paints `--primary-gradient` when the theme sets one. See
97
+ [ThemeProvider.md](ThemeProvider.md).
73
98
 
74
- - `--button-default-background` — fill (default transparent)
75
- - `--button-default-color` — text colour (default `var(--text-color)`)
76
- - `--button-default-border` — full `border` shorthand, e.g. `1px solid var(--border-color)` (default a transparent `1px` border)
99
+ ## Custom colours and presets
77
100
 
78
- Every button reserves a transparent `1px` border, so switching `--button-default-border` on never shifts layout or changes button height. See [ThemeProvider.md](ThemeProvider.md).
101
+ `color` takes any CSS colour as well as a `ThemeColor`; the text on a `Filled` button is picked
102
+ for contrast. Presets are a component in your app, and a section or the whole app takes a default
103
+ through `ConfigProvider`. All three are in [ThemeColor.md](ThemeColor.md).
79
104
 
80
105
  ```tsx
81
- // Outlined default buttons across the app
82
- const theme: Theme = {
83
- id: 'brand',
84
- variables: { '--button-default-border': '1px solid var(--border-color)' },
85
- };
86
-
87
- // Or one-off via style
88
- <Button style={{ '--button-default-border': '1px solid var(--border-color)' } as React.CSSProperties}>
89
- Cancel
90
- </Button>
106
+ <Button styleType={ButtonStyleType.Filled} color="var(--brand)">Upgrade</Button>
91
107
  ```
92
108
 
109
+ **States:** hover and press lay a tint of the button's own text colour over the whole button, so
110
+ every style, colour and theme gets them with no variables of their own. The keyboard focus ring
111
+ sits inside the edge, in `--focus-border-color`, or in the text colour on a `Filled` button. The
112
+ ripple is in the text colour too. Every button reserves a `1px` border, so switching style never
113
+ shifts layout or changes its height.
114
+
93
115
  **Slots:** `background` `content` `loadingContainer` `label`
94
116
 
95
117
  **Sizing in a flex row:** a Button never shrinks below its own content (`min-width: min-content`),
@@ -100,3 +122,39 @@ so an icon is never cut off by a flexible sibling. A multi-word label still wrap
100
122
  A Button is sized by its font. `--default-font-size` is the base, and `Small` and `Large` are multiples of it (0.75x and 1.25x), so a theme with a smaller base font gets proportionally smaller controls everywhere. Padding and the icon gap are in `em`, so the whole box grows with the label rather than a large button wearing a default button's padding.
101
123
 
102
124
  `ButtonSize.Icon` is the exception: it inherits the surrounding text size and has no padding at all, because the caller sets the box.
125
+
126
+ ## Migration from `Primary`, `Default` and `Delete`
127
+
128
+ Before 0.43, `styleType` set emphasis and colour in one value. `Primary`, `Default` and `Delete` no
129
+ longer exist, so TypeScript points at every place that names them:
130
+
131
+ | Before | After |
132
+ |--------|-------|
133
+ | `styleType={ButtonStyleType.Primary}` | `styleType={ButtonStyleType.Filled}` |
134
+ | `styleType={ButtonStyleType.Default}` | nothing: `Outlined` is the default |
135
+ | `styleType={ButtonStyleType.Delete}` | `styleType={ButtonStyleType.Filled} color={ThemeColor.Error}` |
136
+ | ActionButtons `submitButtonStyle={ButtonStyleType.Delete}` | `submitButtonColor={ThemeColor.Error}` |
137
+ | SplitButton `styleType={ButtonStyleType.Delete}` | `color={ThemeColor.Error}` (`Filled` is its default) |
138
+ | Card action `styleType: ButtonStyleType.Delete` | `styleType: ButtonStyleType.Filled, color: ThemeColor.Error` |
139
+ | `defaultProps={{ Button: { styleType: ButtonStyleType.Primary } }}` | `defaultProps={{ Button: { styleType: ButtonStyleType.Filled } }}` |
140
+
141
+ Two things compile unchanged and need a look of their own:
142
+
143
+ **A Button with no `styleType`.** It was transparent text in `--text-color` unless the theme set
144
+ `--button-default-*`; the built-in `defaultTheme` made it an outline in `--primary-color`, which
145
+ is now the default everywhere. To keep the old look where you want it, use
146
+ `styleType={ButtonStyleType.Plain} color={ThemeColor.Neutral}`.
147
+
148
+ **`--button-default-background`, `--button-default-color` and `--button-default-border` in a
149
+ theme.** They are gone, and since a theme accepts any variable they still compile and do nothing.
150
+ What they styled is now the default `color`, set once on `AhroweProvider`:
151
+
152
+ | Theme set | Instead |
153
+ |-----------|---------|
154
+ | `--button-default-color: var(--text-color)` and a `--border-color` border | `defaultProps={{ Button: { color: ThemeColor.Neutral } }}` |
155
+ | another colour | `defaultProps={{ Button: { color: 'var(--your-colour)' } }}` |
156
+ | a fill in `--button-default-background` | also `styleType: ButtonStyleType.Filled`; `ThemeColor.Neutral` fills with a mix of the text colour |
157
+
158
+ A default prop does not change with the theme. Where each theme had its own default button, give
159
+ each theme a variable of your own, `'--app-button': '…'`, and set
160
+ `defaultProps={{ Button: { color: 'var(--app-button)' } }}` once: the variable follows the theme.
@@ -13,23 +13,23 @@ import { ButtonGroup, ButtonGroupOrientation, Button, ButtonStyleType } from '@a
13
13
 
14
14
  // Segmented toggle
15
15
  <ButtonGroup>
16
- <Button styleType={ButtonStyleType.Default}>Day</Button>
17
- <Button styleType={ButtonStyleType.Default}>Week</Button>
18
- <Button styleType={ButtonStyleType.Default}>Month</Button>
16
+ <Button styleType={ButtonStyleType.Outlined}>Day</Button>
17
+ <Button styleType={ButtonStyleType.Outlined}>Week</Button>
18
+ <Button styleType={ButtonStyleType.Outlined}>Month</Button>
19
19
  </ButtonGroup>
20
20
 
21
21
  // Icon toolbar
22
22
  <ButtonGroup>
23
- <Button styleType={ButtonStyleType.Default} icon={faBold} aria-label="Bold" />
24
- <Button styleType={ButtonStyleType.Default} icon={faItalic} aria-label="Italic" />
25
- <Button styleType={ButtonStyleType.Default} icon={faUnderline} aria-label="Underline" />
23
+ <Button styleType={ButtonStyleType.Outlined} icon={faBold} aria-label="Bold" />
24
+ <Button styleType={ButtonStyleType.Outlined} icon={faItalic} aria-label="Italic" />
25
+ <Button styleType={ButtonStyleType.Outlined} icon={faUnderline} aria-label="Underline" />
26
26
  </ButtonGroup>
27
27
 
28
28
  // Vertical
29
29
  <ButtonGroup orientation={ButtonGroupOrientation.Vertical}>
30
- <Button styleType={ButtonStyleType.Default}>Bold</Button>
31
- <Button styleType={ButtonStyleType.Default}>Italic</Button>
32
- <Button styleType={ButtonStyleType.Default}>Underline</Button>
30
+ <Button styleType={ButtonStyleType.Outlined}>Bold</Button>
31
+ <Button styleType={ButtonStyleType.Outlined}>Italic</Button>
32
+ <Button styleType={ButtonStyleType.Outlined}>Underline</Button>
33
33
  </ButtonGroup>
34
34
 
35
35
  // With a separator — filled styles (Primary/Delete) have no border of their own to merge,
@@ -37,23 +37,23 @@ import { ButtonGroup, ButtonGroupOrientation, Button, ButtonStyleType } from '@a
37
37
  import { Divider, DividerOrientation } from '@ahrowe/ui';
38
38
 
39
39
  <ButtonGroup>
40
- <Button styleType={ButtonStyleType.Primary}>Save</Button>
40
+ <Button styleType={ButtonStyleType.Filled}>Save</Button>
41
41
  <Divider orientation={DividerOrientation.Vertical} />
42
- <Button styleType={ButtonStyleType.Primary}>Save & new</Button>
42
+ <Button styleType={ButtonStyleType.Filled}>Save & new</Button>
43
43
  </ButtonGroup>
44
44
 
45
45
  // Nested groups — a toolbar made of two self-contained sub-groups, spaced apart rather
46
46
  // than merged into one continuous strip
47
47
  <ButtonGroup>
48
48
  <ButtonGroup>
49
- <Button styleType={ButtonStyleType.Default} icon={faBold} aria-label="Bold" />
50
- <Button styleType={ButtonStyleType.Default} icon={faItalic} aria-label="Italic" />
51
- <Button styleType={ButtonStyleType.Default} icon={faUnderline} aria-label="Underline" />
49
+ <Button styleType={ButtonStyleType.Outlined} icon={faBold} aria-label="Bold" />
50
+ <Button styleType={ButtonStyleType.Outlined} icon={faItalic} aria-label="Italic" />
51
+ <Button styleType={ButtonStyleType.Outlined} icon={faUnderline} aria-label="Underline" />
52
52
  </ButtonGroup>
53
53
  <ButtonGroup>
54
- <Button styleType={ButtonStyleType.Default} icon={faAlignLeft} aria-label="Align left" />
55
- <Button styleType={ButtonStyleType.Default} icon={faAlignCenter} aria-label="Align center" />
56
- <Button styleType={ButtonStyleType.Default} icon={faAlignRight} aria-label="Align right" />
54
+ <Button styleType={ButtonStyleType.Outlined} icon={faAlignLeft} aria-label="Align left" />
55
+ <Button styleType={ButtonStyleType.Outlined} icon={faAlignCenter} aria-label="Align center" />
56
+ <Button styleType={ButtonStyleType.Outlined} icon={faAlignRight} aria-label="Align right" />
57
57
  </ButtonGroup>
58
58
  </ButtonGroup>
59
59
 
@@ -64,7 +64,7 @@ import { Input } from '@ahrowe/ui';
64
64
 
65
65
  <ButtonGroup>
66
66
  <Input placeholder="Search…" value={search} onChange={setSearch} />
67
- <Button styleType={ButtonStyleType.Primary} icon={faMagnifyingGlass} aria-label="Search" />
67
+ <Button styleType={ButtonStyleType.Filled} icon={faMagnifyingGlass} aria-label="Search" />
68
68
  </ButtonGroup>
69
69
  ```
70
70
 
package/docs/CLAUDE.md CHANGED
@@ -32,8 +32,13 @@ enums and slot names. Do not infer props from a component's name.
32
32
  - **Text a component renders itself** (close buttons, empty messages, page labels) is set with its
33
33
  `labels` prop. App-wide defaults for any prop go through `AhroweProvider`'s `defaultProps`
34
34
  (ConfigProvider.md).
35
- - **Variants are enums**, not strings: `ButtonStyleType.Primary`, `ButtonSize.Small`. Each doc lists
35
+ - **Variants are enums**, not strings: `ButtonStyleType.Filled`, `ButtonSize.Small`. Each doc lists
36
36
  them under **Enums**.
37
+ - **Colours are one vocabulary.** Every `color` prop takes a `ThemeColor` (`Primary`, `Neutral`,
38
+ `Success`, `Info`, `Warn`, `Error`) or any CSS colour, and a separate `styleType` sets how much
39
+ the component stands out, so any style works in any colour (ThemeColor.md). Pick the style by
40
+ emphasis, the same way everywhere: `Filled` for the one main action of a region (at most one),
41
+ `Light` for status and selection, `Outlined` for secondary actions, `Plain` for tertiary ones.
37
42
  - **`icon` props** take a FontAwesome `IconDefinition` or any React element.
38
43
  - **`ref`** is a plain prop, there is no `forwardRef`. It lands on the element you would reach for:
39
44
  Input, Textarea, NumberInput and SearchInput hand out their inner `<input>`. Timer, Flip, Tilt,
@@ -44,6 +49,10 @@ enums and slot names. Do not infer props from a component's name.
44
49
  or validates a plan. No right-to-left support.
45
50
  `prefers-reduced-motion` is honoured. Built for Chrome and Edge 111, Firefox 114, Safari 16.4
46
51
  and newer, with no polyfills. The package is 0.x: a minor can break, a patch cannot.
52
+ - **Upgrading.** Every breaking change has a `## Migration from …` section, an old-to-new table,
53
+ in the doc of the component it changed. When TypeScript reports a name as missing after an
54
+ update, search the docs for that name. `CHANGELOG.md` beside `docs/` lists every change by
55
+ version and names the section to read.
47
56
 
48
57
  ## Components
49
58
 
@@ -51,24 +60,24 @@ enums and slot names. Do not infer props from a component's name.
51
60
 
52
61
  | Doc | Exports | When to use |
53
62
  |-----|---------|-------------|
54
- | Accordion.md | Accordion | Collapsible sections for progressive disclosure — FAQs, settings panels, long-form content that users expand on demand |
63
+ | Accordion.md | Accordion, AccordionStyleType, ThemeColor | Collapsible sections for progressive disclosure — FAQs, settings panels, long-form content that users expand on demand |
55
64
  | ActionButtons.md | ActionButtons | Standardised Submit / Cancel button pair for forms, dialogs, and drawer footers |
56
- | ActionIcon.md | ActionIcon | Clickable icon button without a label — toolbar actions, table row actions, icon-only controls |
65
+ | ActionIcon.md | ActionIcon | Clickable icon button without a label — toolbar actions, table row actions, close buttons, icon-only controls |
57
66
  | AhroweProvider.md | AhroweProvider | The one wrapper an app needs, at its root: it applies the theme, sets default props for every component, shows toasts and renders the element that Modal, Tooltip, Popover, Menu and Toast portal into |
58
- | Alert.md | Alert, AlertStyleType | A persistent inline status message, used for form-level errors, page/section banners, empty-config warnings, and "here's what changed" notices |
67
+ | Alert.md | Alert, ThemeColor | A persistent inline status message, used for form-level errors, page/section banners, empty-config warnings, and "here's what changed" notices |
59
68
  | AnimatedLogo.md | AnimatedLogo | A self-drawing SVG mark for splash/loading screens, empty states, or anywhere a brand or icon mark should feel alive rather than static |
60
69
  | AnimatedText.md | AnimatedText, AnimatedTextVariant, AnimatedTextUnit | Decorative text entrance or emphasis effect, for hero headlines, empty-state messages, "premium"/"new" callouts, loading/decoding states |
61
70
  | Avatar.md | Avatar, AvatarGroup | User or entity image — profile pictures, comment authors, member lists |
62
- | Badge.md | Badge, BadgeStyleType, BadgePosition | Small count or status indicator — unread counts, notification dots, "new" markers |
71
+ | Badge.md | Badge, BadgeStyleType, BadgePosition, ThemeColor | Small count or status indicator — unread counts, notification dots, "new" markers |
63
72
  | BodyEnd.md | BodyEnd | Renders children through a React portal, to the end of the app |
64
73
  | Breadcrumb.md | Breadcrumb | A trail showing the current page's position within a hierarchy, with links back to each ancestor, such as a file browser path, a category/subcategory drill-down, or a multi-level settings page |
65
- | Button.md | Button, ButtonStyleType, ButtonSize, ButtonType | Primary interactive action trigger |
74
+ | Button.md | Button, ButtonStyleType, ButtonSize, ButtonType, ThemeColor | Primary interactive action trigger |
66
75
  | ButtonGroup.md | ButtonGroup, ButtonGroupOrientation | Joins a row (or column) of buttons into a single seamless control, merging their borders and rounding only the outer corners |
67
- | Calendar.md | Calendar, CalendarView | Showing and editing your own events over time, in month, week, day and agenda views: bookings, shifts, appointments, a team schedule |
68
- | Card.md | Card, CardStyleType, CardHeader, CardMedia, CardContent, CardActions | Surface container for grouping related content — list items, profile cards, dashboard tiles, product listings |
76
+ | Calendar.md | Calendar, CalendarView | Showing and editing your own events over time, in month, week, day and agenda views: bookings, shifts, appointments |
77
+ | Card.md | Card, CardStyleType, CardHeader, CardMedia, CardContent, CardActions, ThemeColor | Surface container for grouping related content — list items, profile cards, dashboard tiles, product listings |
69
78
  | Carousel.md | Carousel | A slide track for stepping through a set of items one at a time, with arrows, dots, and drag/swipe support, plus optional autoplay |
70
79
  | Checkbox.md | Checkbox | Boolean toggle input — settings, multi-select lists, accept terms, feature flags |
71
- | Chip.md | Chip, ChipContainer, ChipStyleType | Compact tag, label, or filter token — selected items, applied filters, category badges, user avatars with remove |
80
+ | Chip.md | Chip, ChipContainer, ChipStyleType, ThemeColor | Compact tag, label, or filter token — selected items, applied filters, category badges, user avatars with remove |
72
81
  | ColorPicker.md | ColorPicker | Hex colour selection — theme editors, annotation tools, customisation panels |
73
82
  | CommandPalette.md | CommandPalette | A search-first dialog for running any command or jumping anywhere in the app from the keyboard, usually opened with ⌘K / Ctrl+K |
74
83
  | ConfigProvider.md | ConfigProvider | Set global **default props** for library components once, near the root of your app, instead of repeating the same prop on every instance |
@@ -94,7 +103,8 @@ enums and slot names. Do not infer props from a component's name.
94
103
  | InteractableDiv.md | InteractableDiv | Accessible `<div>` that behaves like a button — click and keyboard (Enter/Space) events, with proper ARIA semantics |
95
104
  | KanbanBoard.md | KanbanBoard, KanbanColumn | Drag-and-drop board with columns — task management, workflow stages, status boards (e.g. Todo / In Progress / Done) |
96
105
  | KlipyPicker.md | KlipyPicker | GIF picker backed by the Klipy API — chat reactions, message composers, content authoring tools |
97
- | Loading.md | SpinnerLoading | A loading indicator for async operations: page loads, data fetching, or covering a region while it refreshes |
106
+ | Loader.md | Loader, LoaderType, ThemeColor | A loading indicator for something in progress with no known end: a fetch, a save, a connection |
107
+ | LoadingOverlay.md | LoadingOverlay, Loader, LoaderType | Covering content while it reloads: a table refreshing, a form saving, a panel fetching its next page |
98
108
  | Menu.md | Menu, menuHotkeys | A list of actions hanging off a trigger — a row's "more" button, a toolbar overflow, a context menu on a card |
99
109
  | Modal.md | Modal | Full overlay dialog — forms, detail views, confirmations, wizards that need to block the rest of the UI |
100
110
  | MultiSelect.md | MultiSelect | Pick several options from a list |
@@ -115,7 +125,7 @@ enums and slot names. Do not infer props from a component's name.
115
125
  | ScrollbarProvider.md | ScrollbarProvider | Applies custom scrollbar styling to a scrollable region — use to keep scrollbar appearance consistent with the theme |
116
126
  | SearchInput.md | SearchInput | Search field with built-in debouncing and an optional result count line — list filters, search-as-you-type pages |
117
127
  | SectionHeader.md | SectionHeader, SectionHeaderSize | A reusable heading block for the top of a page, panel, card, or any section — a title with an optional subtitle, a leading icon or thumbnail, and a trailing actions area |
118
- | Skeleton.md | Skeleton, SkeletonVariant, SkeletonAnimation | Content-shaped loading placeholder, shown while real content is being fetched — more polished than a spinner for content-heavy pages (lists, cards, profile headers) |
128
+ | Skeleton.md | Skeleton, SkeletonVariant, SkeletonAnimation | Content-shaped loading placeholder, shown while real content is being fetched — more polished than a Loader for content-heavy pages (lists, cards, profile headers) |
119
129
  | Slider.md | Slider | Let the user pick a number from a continuous or stepped range by dragging a thumb: volume, brightness, price ranges, zoom, quality presets |
120
130
  | SplitButton.md | SplitButton | A primary action button with a small attached dropdown for closely related secondary actions, e.g. "Save ▾" opening "Save as draft" / "Save and close" |
121
131
  | Stepper.md | Stepper | Step progress indicator for multi-step forms, onboarding flows, and checkout wizards |
@@ -123,12 +133,13 @@ enums and slot names. Do not infer props from a component's name.
123
133
  | Switch.md | Switch | Sliding boolean toggle — settings panels, feature flags, preference lists |
124
134
  | TabHeader.md | TabHeader | A horizontal row of tabs to switch between sibling views or sections — settings panels, dashboards, detail pages |
125
135
  | Textarea.md | Textarea | Multiline text input — comments, descriptions, notes, code snippets, long-form content |
136
+ | ThemeColor.md | ThemeColor | The `color` prop of every component that takes one: the theme's named colours, or any CSS colour of your own |
126
137
  | ThemeProvider.md | ThemeProvider | Applies a theme to its subtree, injecting its CSS custom properties as inline styles so every component inside can use them |
127
138
  | Tilt.md | Tilt, TiltGroup | Wrap content that should tilt toward the cursor in 3D |
128
139
  | TimeInput.md | TimeInput | Time-of-day selection — appointment times, opening hours, shift starts, reminders |
129
- | Timeline.md | Timeline, TimelineAlignment, TimelineItemStatus | A vertical list of dated events, connected by a line, for audit logs, activity feeds, order status history, and deploy logs |
140
+ | Timeline.md | Timeline, TimelineAlignment, ThemeColor | A vertical list of dated events, connected by a line, for audit logs, activity feeds, order status history, and deploy logs |
130
141
  | Timer.md | Timer | A countdown timer with a depleting ring, add/remove-time and pause/cancel controls, and an imperative ref API |
131
- | Toast.md | showToast | Non-blocking notifications — save confirmations, error alerts, info messages, warnings |
142
+ | Toast.md | showToast, ThemeColor | Non-blocking notifications — save confirmations, error alerts, info messages, warnings |
132
143
  | Tooltip.md | Tooltip | Contextual help, info icons, field explanations, error pointers |
133
144
  | Tree.md | Tree, flattenTree | A hierarchical list the user can expand, collapse and pick from: categories, nested locations, folder structures, org charts |
134
145
  | VirtualList.md | VirtualList | Efficiently render large lists or tables — thousands of rows rendered with a virtualised scroll window so only visible rows are in the DOM |