@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/Skeleton.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Skeleton
2
2
 
3
- **When to use:** Content-shaped loading placeholder, shown while real content is being fetched — more polished than a spinner for content-heavy pages (lists, cards, profile headers). Pick the `variant` that matches the shape of what's loading.
3
+ **When to use:** Content-shaped loading placeholder, shown while real content is being fetched — more polished than a [Loader](Loader.md) for content-heavy pages (lists, cards, profile headers). Pick the `variant` that matches the shape of what's loading.
4
4
 
5
5
  **Keywords:** shimmer placeholder, content placeholder
6
6
 
@@ -9,7 +9,7 @@
9
9
  **Enums:** `import { PopoverAlign } from '@ahrowe/ui'` for `align`.
10
10
 
11
11
  ```tsx
12
- import { SplitButton } from '@ahrowe/ui';
12
+ import { SplitButton, ThemeColor } from '@ahrowe/ui';
13
13
  import type { SplitButtonAction } from '@ahrowe/ui';
14
14
 
15
15
  const actions: SplitButtonAction[] = [
@@ -21,12 +21,12 @@ const actions: SplitButtonAction[] = [
21
21
  Save
22
22
  </SplitButton>
23
23
 
24
- // Destructive style, matching Button's own style variants
24
+ // Destructive, with Button's own style and colour
25
25
  import { ButtonStyleType } from '@ahrowe/ui';
26
26
 
27
27
  <SplitButton
28
28
  actions={[{ id: 'archive', label: 'Archive instead', onClick: () => archive() }]}
29
- styleType={ButtonStyleType.Delete}
29
+ color={ThemeColor.Error}
30
30
  onClick={() => deleteItem()}
31
31
  >
32
32
  Delete
@@ -68,7 +68,8 @@ import { ButtonStyleType } from '@ahrowe/ui';
68
68
  | `children` | `ReactNode` | The primary button's label |
69
69
  | `onClick` | `(event) => void \| Promise<void>` | The primary button's click handler |
70
70
  | `actions` | `SplitButtonAction[]` | Secondary actions shown in the dropdown |
71
- | `styleType` | `ButtonStyleType` | Visual variant, shared by both the primary and trigger button (default `Primary`) |
71
+ | `styleType` | `ButtonStyleType` | Shared by both the primary and trigger button (default `Filled`) |
72
+ | `color` | `ColorValue` | Shared by both buttons (default `Primary`); or any CSS colour, as on Button |
72
73
  | `size` | `ButtonSize` | Size variant, shared by both buttons |
73
74
  | `disabled` | `boolean` | Disables both the primary and trigger button |
74
75
  | `isLoading` | `boolean` | Shows a spinner on the primary button (same as `Button`'s own `isLoading`) |
@@ -76,7 +77,7 @@ import { ButtonStyleType } from '@ahrowe/ui';
76
77
 
77
78
  **`isLoading` vs. `disabled`:** `isLoading` only affects the primary button — the trigger and its menu stay usable while the primary action is in flight, e.g. to cancel via a menu action. To lock the whole control during the async action instead, pass both: `isLoading={isSaving} disabled={isSaving}`. Setting `disabled` also closes the menu if it happened to be open already, and blocks any in-flight click on a menu action.
78
79
 
79
- **Global defaults:** adopts `ConfigProvider`, e.g. `defaultProps={{ SplitButton: { styleType: ButtonStyleType.Default } }}`. See [ConfigProvider.md](ConfigProvider.md).
80
+ **Global defaults:** adopts `ConfigProvider`, e.g. `defaultProps={{ SplitButton: { styleType: ButtonStyleType.Outlined } }}`. See [ConfigProvider.md](ConfigProvider.md).
80
81
 
81
82
  **Keyboard:** the list is a [Menu](Menu.md), so it behaves like one: `↓` `↑` move between actions and skip disabled ones, `Home` and `End` jump to either end, typing a letter jumps to the action that starts with it, `Enter` and `Space` run the focused action, and `Escape` closes and hands the focus back. A click opens the menu without taking the focus, so nothing is marked until you point at an action or press an arrow key; opening with the keyboard focuses the first action straight away. The trigger announces itself as a menu button.
82
83
 
@@ -0,0 +1,103 @@
1
+ # ThemeColor
2
+
3
+ **When to use:** The `color` prop of every component that takes one: the theme's named colours, or any CSS colour of your own.
4
+
5
+ **Keywords:** colour, palette, tone, variant, status, semantic, danger, destructive, brand, custom
6
+
7
+ **Import:** `import { ThemeColor } from '@ahrowe/ui'`
8
+ **Types:** `import type { ColorValue } from '@ahrowe/ui'`
9
+
10
+ Every `color` prop in the library takes the same `ColorValue`: one of the six `ThemeColor`s, or
11
+ any CSS colour. A component's **style** (how much it stands out) is a separate prop, `styleType`,
12
+ so any style works in any colour.
13
+
14
+ ```tsx
15
+ import { Badge, Button, ButtonStyleType, ThemeColor, showToast } from '@ahrowe/ui';
16
+
17
+ <Button styleType={ButtonStyleType.Filled} color={ThemeColor.Error}>Delete</Button>
18
+ <Badge count={3} color={ThemeColor.Success} />
19
+ showToast('Saved', { color: ThemeColor.Success });
20
+
21
+ // Any CSS colour, a theme variable included
22
+ <Button color="var(--brand)">Upgrade</Button>
23
+ <Badge content="Beta" color="#7c3aed" />
24
+ ```
25
+
26
+ **Enums:**
27
+
28
+ - `ThemeColor`: `Primary` | `Neutral` | `Success` | `Info` | `Warn` | `Error`
29
+
30
+ | Colour | Reads | Notes |
31
+ |--------|-------|-------|
32
+ | `Primary` | `--primary-color`, `--text-on-primary`, `--primary-gradient` | The fill paints the gradient when the theme sets one |
33
+ | `Neutral` | the surrounding text colour, `--border-color` | Takes the colour of what it sits on: a close button on an Alert, a toolbar on a primary header. Its fill and tint are see-through mixes of that colour |
34
+ | `Success` | `--success-color` | |
35
+ | `Info` | `--info-color` | |
36
+ | `Warn` | `--warn-color` | |
37
+ | `Error` | `--error-color`, `--text-on-delete` | For destructive actions |
38
+
39
+ **Where it applies:** Button, ActionIcon, CopyButton, SplitButton, ActionButtons (`submitButtonColor`,
40
+ `cancelButtonColor`), Card and its actions, Badge, Chip, Accordion, Alert, Toast, Timeline items, Calendar
41
+ events, ProgressBar segments, Loader and AnimatedLogo.
42
+
43
+ **Styles share their names:** where two components offer the same look, it has the same name in
44
+ each one's own `styleType` enum. Each component offers only the ones it can draw.
45
+
46
+ | Style | Looks like | Offered by |
47
+ |-------|------------|------------|
48
+ | `Filled` | a solid fill, text in a contrasting colour | Button, Badge, Chip |
49
+ | `Light` | a light tint of the colour, text in the colour | Button, Badge, Chip, Accordion (its header), Card (its surface, text unchanged) |
50
+ | `Outlined` | a border and text in the colour | Button, Badge, Chip, Accordion, Card (its border, text unchanged) |
51
+ | `Plain` | text in the colour only | Button, ActionIcon, Accordion |
52
+
53
+ Alert, Toast and Timeline have a single look, so they take a `color` and no style.
54
+
55
+ **Which style to use.** Every component offers the same few, so the choice is about emphasis,
56
+ and a page stays consistent when each one means the same everywhere:
57
+
58
+ - `Filled`: the one main action of a region, and counts. At most one `Filled` per region.
59
+ - `Light`: status labels, a selected filter, secondary emphasis.
60
+ - `Outlined`: secondary actions and grouped content. The default for Button and Accordion.
61
+ - `Plain`: tertiary and toolbar actions, close buttons, a disclosure inside text.
62
+
63
+ **How each is drawn.** `Light` is a 22% see-through tint of the colour (8% of the text colour for
64
+ `Neutral`), the same for every colour. Text in the colour (`Light`, `Outlined`, `Plain`) is the
65
+ colour moved a third of the way toward the page's text colour in lightness, keeping its
66
+ saturation: the pure colour is often too faint to read as text, dark red on a dark theme most of
67
+ all. Borders, bars, dots and icons keep the pure colour. Text on a fill is black or white, see
68
+ below.
69
+
70
+ ## A colour of your own
71
+
72
+ Pass any CSS colour. It replaces the theme's colour everywhere the component uses one, including
73
+ the hover tint and the gradient, which a colour of your own does not get:
74
+
75
+ ```tsx
76
+ <Button styleType={ButtonStyleType.Filled} color="var(--brand)">Upgrade</Button>
77
+ ```
78
+
79
+ **Text on a fill** is white wherever it reaches a contrast of 3:1 on the colour, otherwise black,
80
+ which then has at least 7:1: `color="#fde047"` gets black text and `color="#7c3aed"` white. On a
81
+ mid-tone blue that keeps white, which reads better there than black, though it can fall short of
82
+ WCAG's 4.5:1 for small text. It is worked out in CSS from the colour's relative luminance with
83
+ relative colour syntax, so a `var()` that changes with the theme changes its text with it.
84
+ A browser older than Chrome 119 or Firefox 128 gets `--text-on-primary` instead. To choose the
85
+ text yourself, set `color` in the component's `style` or a class. A built-in colour keeps the theme's own `--text-on-primary` or
86
+ `--text-on-delete`; a theme without them gets the same automatic choice.
87
+
88
+ **A value that can never be a colour** (`color="eror"`) logs a warning in development. A `var()`
89
+ cannot be checked until it renders.
90
+
91
+ **For a whole section or the app**, set the default rather than repeating it:
92
+ `defaultProps={{ Button: { color: 'var(--brand)' } }}` on `AhroweProvider`, or on a
93
+ `ConfigProvider` around the section ([ConfigProvider.md](ConfigProvider.md)). A default prop does
94
+ not change with the theme; for a colour that does, give each theme a variable of your own and
95
+ pass that: `color: 'var(--app-button)'`.
96
+
97
+ **A preset**, a fixed mix of props you use repeatedly, is a component in your app:
98
+
99
+ ```tsx
100
+ export function DeleteIconButton(props: ActionIconProps) {
101
+ return <ActionIcon color={ThemeColor.Error} icon={faTrash} {...props} />;
102
+ }
103
+ ```
@@ -148,16 +148,16 @@ Surfaces that honour it:
148
148
 
149
149
  | Component | Surface |
150
150
  |-----------|---------|
151
- | `Button` | primary style |
152
- | `Chip` | primary style |
151
+ | `Button` | `Filled` `Primary` |
152
+ | `Chip` | `Filled` `Primary` |
153
153
  | `ProgressBar` | fill |
154
154
  | `Switch` | checked track |
155
155
  | `Slider` | filled range |
156
156
  | `Pagination` | active page |
157
157
  | `OptionPicker` | selected option |
158
- | `Badge` | primary style, except the `dot` variant |
159
- | `Alert` | default-style accent border |
160
- | `Toast` | default-style accent border |
158
+ | `Badge` | `Filled` `Primary`, except a `dot` |
159
+ | `Alert` | `Primary` accent border |
160
+ | `Toast` | `Primary` accent border |
161
161
  | `TabHeader` | active tab indicator |
162
162
 
163
163
  Everything else stays flat: focus rings, outlines, icons, primary-coloured text, and small marks
package/docs/Timeline.md CHANGED
@@ -1,25 +1,24 @@
1
1
  # Timeline
2
2
 
3
- **When to use:** A vertical list of dated events, connected by a line, for audit logs, activity feeds, order status history, and deploy logs. Each entry can carry a title, timestamp, description, an icon or status colour, and arbitrary extra content.
3
+ **When to use:** A vertical list of dated events, connected by a line, for audit logs, activity feeds, order status history, and deploy logs. Each entry can carry a title, timestamp, description, an icon or a colour, and arbitrary extra content.
4
4
 
5
5
  **Keywords:** history log
6
6
 
7
- **Import:** `import { Timeline, TimelineAlignment, TimelineItemStatus } from '@ahrowe/ui'`
7
+ **Import:** `import { Timeline, TimelineAlignment, ThemeColor } from '@ahrowe/ui'`
8
8
  **Types:** `import type { TimelineItem, TimelineProps } from '@ahrowe/ui'`
9
9
 
10
10
  **Enums:**
11
11
  - `TimelineAlignment`: `Left` (default) | `Right` | `Alternate`
12
- - `TimelineItemStatus`: `Default` (default) | `Primary` | `Success` | `Warn` | `Error`
13
12
 
14
13
  ```tsx
15
- import { Timeline, TimelineItemStatus } from '@ahrowe/ui';
14
+ import { Timeline, ThemeColor } from '@ahrowe/ui';
16
15
  import type { TimelineItem } from '@ahrowe/ui';
17
16
 
18
17
  const items: TimelineItem[] = [
19
18
  { title: 'Invoice created', description: 'by Jane Doe', timestamp: '09:12' },
20
19
  { title: 'Invoice sent to client', description: 'via email', timestamp: '09:15' },
21
- { title: 'Payment received', status: TimelineItemStatus.Success, timestamp: '2 days later' },
22
- { title: 'Invoice closed', status: TimelineItemStatus.Success, timestamp: 'Today' },
20
+ { title: 'Payment received', color: ThemeColor.Success, timestamp: '2 days later' },
21
+ { title: 'Invoice closed', color: ThemeColor.Success, timestamp: 'Today' },
23
22
  ];
24
23
 
25
24
  // Default: left-aligned line and markers, content to the right
@@ -30,7 +29,7 @@ import { faUserPlus, faCheck } from '@fortawesome/free-solid-svg-icons';
30
29
  <Timeline
31
30
  items={[
32
31
  { title: 'Account created', icon: faUserPlus, timestamp: 'Mon' },
33
- { title: 'Email verified', icon: faCheck, status: TimelineItemStatus.Success, timestamp: 'Wed' },
32
+ { title: 'Email verified', icon: faCheck, color: ThemeColor.Success, timestamp: 'Wed' },
34
33
  ]}
35
34
  />
36
35
 
@@ -88,7 +87,7 @@ function AuditLog() {
88
87
  | `description` | `ReactNode` | Secondary line under the title |
89
88
  | `timestamp` | `ReactNode` | Rendered next to the title, e.g. a date or relative time ("2 hours ago") |
90
89
  | `icon` | `IconDefinition \| ReactElement` | Icon shown in the marker instead of a plain dot — FontAwesome icon or any React element |
91
- | `status` | `TimelineItemStatus` | Semantic marker colour (default `Default`) |
90
+ | `color` | `ColorValue` | The marker's colour: a `ThemeColor` or any CSS colour, see [ThemeColor.md](ThemeColor.md). Unset, it is `--timeline-dot-color` |
92
91
  | `content` | `ReactNode` | Extra content rendered under the description, e.g. a diff, an attachment, an actor avatar |
93
92
  | `onClick` | `(event: MouseEvent<HTMLDivElement>) => void` | Makes the whole entry clickable, rendering it as an accessible button (`role="button"`, focusable, click and Enter both fire it). Omit to render a plain, non-interactive row |
94
93
  | `disabled` | `boolean` | Disables the entry: never clickable, dimmed. Only relevant alongside `onClick` |
@@ -113,7 +112,7 @@ function AuditLog() {
113
112
  | `--timeline-item-gap` | `20px` (vertical gap between entries) |
114
113
  | `--timeline-icon-dot-size` | `28px` (marker size when an entry has `icon`) |
115
114
 
116
- `TimelineItemStatus` values other than `Default` resolve directly to the matching theme colour (`--primary-color`, `--success-color`, `--warn-color`, `--error-color`) rather than a dedicated `--timeline-*` variable, so they always match the rest of the app's semantic colours.
115
+ An entry's `color` replaces `--timeline-dot-color` for that marker, and an icon in it is black or white, whichever reads on the colour. A `ThemeColor` reads the theme's own colour, so it always matches the rest of the app.
117
116
 
118
117
  ```tsx
119
118
  // Theme-wide, via ThemeProvider: thicker line, larger dots
@@ -127,3 +126,13 @@ const theme: Theme = {
127
126
  ```
128
127
 
129
128
  **Slots:** `root` `item` `marker` `dot` `connector` `content` `title` `description` `timestamp`
129
+
130
+ ## Migration from `status`
131
+
132
+ Before 0.43 an entry's marker colour was `status`, typed `TimelineItemStatus`. It is now `color`,
133
+ typed `ColorValue`, and `TimelineItemStatus` is gone:
134
+
135
+ | Before | After |
136
+ |--------|-------|
137
+ | `status: TimelineItemStatus.Default` | nothing: an unset `color` is `--timeline-dot-color` |
138
+ | `status: TimelineItemStatus.Success` (and `Primary`, `Warn`, `Error`) | `color: ThemeColor.Success` |
package/docs/Toast.md CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  **Keywords:** snackbar, notification popup
6
6
 
7
- **Import:** `import { showToast } from '@ahrowe/ui'`
8
- **Types:** `import type { ToastOptions, ToastContextConfig, ToastLabels, ToastType, ToastPosition } from '@ahrowe/ui'`
7
+ **Import:** `import { showToast, ThemeColor } from '@ahrowe/ui'`
8
+ **Types:** `import type { ToastOptions, ToastContextConfig, ToastLabels, ToastPosition, ColorValue } from '@ahrowe/ui'`
9
9
 
10
10
  **Setup:** [AhroweProvider](AhroweProvider.md) shows the toasts. Its `toast` prop sets the defaults for all of them:
11
11
 
@@ -22,16 +22,16 @@ import { AhroweProvider } from '@ahrowe/ui';
22
22
  **Usage:** Call `showToast` anywhere — no component hierarchy required:
23
23
 
24
24
  ```tsx
25
- import { showToast } from '@ahrowe/ui';
25
+ import { showToast, ThemeColor } from '@ahrowe/ui';
26
26
 
27
- // Simple message
27
+ // Simple message, in the primary colour
28
28
  showToast('Profile saved!');
29
29
 
30
- // With type
31
- showToast('Something went wrong.', { type: 'error' });
32
- showToast('3 items updated.', { type: 'info' });
33
- showToast('Your changes were saved.', { type: 'success' });
34
- showToast('Disk space is low.', { type: 'warn' });
30
+ // Semantic colours, each with its own icon
31
+ showToast('Something went wrong.', { color: ThemeColor.Error });
32
+ showToast('3 items updated.', { color: ThemeColor.Info });
33
+ showToast('Your changes were saved.', { color: ThemeColor.Success });
34
+ showToast('Disk space is low.', { color: ThemeColor.Warn });
35
35
 
36
36
  // Persistent (no auto-dismiss)
37
37
  showToast('Processing…', { duration: 0, showCloseButton: true });
@@ -50,7 +50,7 @@ showToast('Copied!', { position: 'top-center', duration: 1500 });
50
50
 
51
51
  // With slot overrides
52
52
  showToast('Done', {
53
- type: 'info',
53
+ color: ThemeColor.Info,
54
54
  classNames: { root: 'my-toast' },
55
55
  styles: { progressBar: { backgroundColor: '#6200ea' } },
56
56
  });
@@ -72,7 +72,7 @@ showToast('Done', {
72
72
 
73
73
  **ToastPosition:** `'top-left'` `'top-center'` `'top-right'` `'bottom-left'` `'bottom-center'` `'bottom-right'`
74
74
 
75
- **ToastType:** `'default'` `'info'` `'success'` `'error'` `'warn'`
75
+ **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 the bell.
76
76
 
77
77
  **Slots:** `root` `icon` `content` `closeButton` `progressBar`
78
78
 
@@ -83,3 +83,17 @@ showToast('Done', {
83
83
  A toast is sized and spaced by its font: the padding, the gap, the body copy, the icon, the close button, the variant accent bar and the progress bar all scale with the theme's text, as does the gap between stacked toasts.
84
84
 
85
85
  Its `min-width` and `max-width` are `em` rather than pixels, so they bound the *measure* — roughly how many characters fit on a line — instead of a fixed width that would grow cramped as the text got larger.
86
+
87
+ ## Migration from `type`
88
+
89
+ Before 0.43 a toast's colour was `type`, a string: `showToast('Saved', { type: 'success' })`. It
90
+ is now `color`, and `ToastType` is gone:
91
+
92
+ | Before | After |
93
+ |--------|-------|
94
+ | `{ type: 'default' }` | nothing: `Primary` is the default, with the same bell |
95
+ | `{ type: 'success' }` (and `'info'`, `'warn'`, `'error'`) | `{ color: ThemeColor.Success }` |
96
+
97
+ The string still works as a value, `{ color: 'success' }`, since a `ThemeColor` is that string.
98
+ `type` itself does not: TypeScript reports it, and in plain JavaScript the toast falls back to the
99
+ primary colour.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ahrowe/ui",
3
- "version": "0.42.0",
3
+ "version": "0.44.0",
4
4
  "description": "A React UI component library with theming, CSS Modules, and TypeScript support",
5
5
  "keywords": [
6
6
  "agent",
@@ -32,7 +32,8 @@
32
32
  },
33
33
  "files": [
34
34
  "dist",
35
- "docs"
35
+ "docs",
36
+ "CHANGELOG.md"
36
37
  ],
37
38
  "type": "module",
38
39
  "sideEffects": false,
@@ -1 +0,0 @@
1
- export { default as SpinnerLoading } from './spinnerLoading/index.js';
@@ -1,2 +0,0 @@
1
- import { default as SpinnerLoading } from './spinnerLoading.js';
2
- export default SpinnerLoading;
@@ -1,6 +0,0 @@
1
- import { ReactElement } from 'react';
2
- interface Properties {
3
- className?: string | undefined;
4
- }
5
- declare function SpinnerLoading({ className }: Properties): ReactElement;
6
- export default SpinnerLoading;
@@ -1,2 +0,0 @@
1
- "use client";var e=`accordion_wkZJf`,t=`accordion-title_-qwNy`,n=`accordion-active_t9-a2`,r=`accordion-header_-oST6`,i=`accordion-header-active_UvKis`,a=`accordion-body_ZagrJ`,o=`accordion-body-inner_HE7PL`,s=`accordion-icon_kHxym`,c=`accordion-icon-active_-L8BH`,l={accordion:e,"accordion-title":`accordion-title_-qwNy`,accordionTitle:t,"accordion-active":`accordion-active_t9-a2`,accordionActive:n,"accordion-header":`accordion-header_-oST6`,accordionHeader:r,"accordion-header-active":`accordion-header-active_UvKis`,accordionHeaderActive:i,"accordion-body":`accordion-body_ZagrJ`,accordionBody:a,"accordion-body-inner":`accordion-body-inner_HE7PL`,accordionBodyInner:o,"accordion-icon":`accordion-icon_kHxym`,accordionIcon:s,"accordion-icon-active":`accordion-icon-active_-L8BH`,accordionIconActive:c};export{e as accordion,n as accordionActive,a as accordionBody,o as accordionBodyInner,r as accordionHeader,i as accordionHeaderActive,s as accordionIcon,c as accordionIconActive,t as accordionTitle,l as default};
2
- //# sourceMappingURL=accordion.plain.module.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.plain.module.mjs","names":[],"sources":["../../../../package/common/accordion/accordion.plain.module.pcss"],"sourcesContent":[".accordion {\n transition: margin 0.2s;\n margin: -1px;\n\n &-title {\n width: 100%;\n }\n\n &-active {\n margin: 0.625em 0;\n }\n\n &-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n border-radius: var(--default-border-radius);\n font-size: var(--default-font-size);\n font-weight: 400;\n transition: all 0.2s;\n\n &-active {\n border-radius: var(--default-border-radius) var(--default-border-radius) 0 0;\n }\n }\n\n &-body {\n overflow: hidden;\n transition: all 0.2s ease;\n position: relative;\n border-radius: 0 0 var(--default-border-radius) var(--default-border-radius);\n\n &-inner {\n padding: 0;\n }\n }\n\n &-icon {\n transition: transform 0.2s;\n transform: rotate(0deg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n color: var(--primary-color);\n\n &-active {\n transform: rotate(180deg);\n }\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .accordion,\n .accordion-header,\n .accordion-body,\n .accordion-icon {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use client";var e=`accordion_X64Nz`,t=`accordion-title_2q-FF`,n=`accordion-active_72VwY`,r=`accordion-header_XuGF6`,i=`accordion-header-active_xf8Ch`,a=`accordion-body_0Jsco`,o=`accordion-body-inner_0UBPf`,s=`accordion-body-active_XFSy1`,c=`accordion-icon_W1mz5`,l=`accordion-icon-active_LI98q`,u={accordion:e,"accordion-title":`accordion-title_2q-FF`,accordionTitle:t,"accordion-active":`accordion-active_72VwY`,accordionActive:n,"accordion-header":`accordion-header_XuGF6`,accordionHeader:r,"accordion-header-active":`accordion-header-active_xf8Ch`,accordionHeaderActive:i,"accordion-body":`accordion-body_0Jsco`,accordionBody:a,"accordion-body-inner":`accordion-body-inner_0UBPf`,accordionBodyInner:o,"accordion-body-active":`accordion-body-active_XFSy1`,accordionBodyActive:s,"accordion-icon":`accordion-icon_W1mz5`,accordionIcon:c,"accordion-icon-active":`accordion-icon-active_LI98q`,accordionIconActive:l};export{e as accordion,n as accordionActive,a as accordionBody,s as accordionBodyActive,o as accordionBodyInner,r as accordionHeader,i as accordionHeaderActive,c as accordionIcon,l as accordionIconActive,t as accordionTitle,u as default};
2
- //# sourceMappingURL=accordion.primary.module.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.primary.module.mjs","names":[],"sources":["../../../../package/common/accordion/accordion.primary.module.pcss"],"sourcesContent":[".accordion {\n transition: margin 0.2s;\n margin: -1px;\n\n &-title {\n width: 100%;\n }\n\n &-active {\n margin: 0.625em 0;\n border: 2px solid var(--primary-color);\n border-radius: var(--default-border-radius);\n }\n\n &-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n /* There is no fixed height any more: the header is this padding plus the title's line. */\n padding: 0.75em 1em;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n background: var(--background);\n border-radius: var(--default-border-radius);\n font-size: var(--default-font-size);\n font-weight: 400;\n transition: all 0.2s;\n\n &-active {\n background: var(--background-accent);\n border-radius: var(--default-border-radius) var(--default-border-radius) 0 0;\n }\n }\n\n &-body {\n overflow: hidden;\n transition: all 0.2s ease;\n position: relative;\n border-radius: 0 0 var(--default-border-radius) var(--default-border-radius);\n border-top: none;\n border-bottom: none;\n\n &-inner {\n padding: 1em;\n }\n\n &-active {\n border-top: none;\n }\n }\n\n &-icon {\n transition: transform 0.2s;\n transform: rotate(0deg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n color: var(--primary-color);\n\n &-active {\n transform: rotate(180deg);\n }\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .accordion,\n .accordion-header,\n .accordion-body,\n .accordion-icon {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use client";var e=function(e){return e.Default=`default`,e.Info=`info`,e.Success=`success`,e.Warn=`warn`,e.Error=`error`,e}({});export{e as AlertStyleType};
2
- //# sourceMappingURL=alert.types.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alert.types.mjs","names":[],"sources":["../../../../package/common/alert/alert.types.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport type { IconContent } from '../types/icon.types';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum AlertStyleType {\n Default = 'default',\n Info = 'info',\n Success = 'success',\n Warn = 'warn',\n Error = 'error',\n}\n\nexport type AlertSlots = 'root' | 'icon' | 'content' | 'title' | 'description' | 'closeButton';\n\n/** Text Alert renders of its own, for translating it. */\nexport interface AlertLabels {\n /** Close button, read out by screen readers. */\n dismiss?: string;\n}\n\nexport interface AlertProps extends Omit<HtmlProps, 'title'> {\n title?: ReactNode;\n children?: ReactNode;\n styleType?: AlertStyleType;\n icon?: IconContent;\n hideIcon?: boolean;\n onClose?: () => void;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<AlertSlots>;\n styles?: SlotStyles<AlertSlots>;\n /** Overrides the text Alert renders of its own. Merged per key. */\n labels?: AlertLabels;\n}\n"],"mappings":"aAIA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,UACA,EAAA,KAAA,OACA,EAAA,QAAA,UACA,EAAA,KAAA,OACA,EAAA,MAAA,SACF,EAAA,CAAA,CAAA"}
@@ -1,2 +0,0 @@
1
- "use client";import e from"./spinnerLoading.mjs";var t=e;export{t as default};
2
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/index.ts"],"sourcesContent":["import SpinnerLoading from './spinnerLoading';\n\nexport default SpinnerLoading;\n"],"mappings":"iDAEA,IAAA,EAAe"}
@@ -1,2 +0,0 @@
1
- "use client";import e from"./spinnerLoading.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";function r({className:r}){return n(`svg`,{"data-testid":`spinner`,className:t(e.spinnerLoading,r),xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,fill:`none`,stroke:`var(--primary-color)`,children:n(`circle`,{cx:`50`,cy:`50`,r:`45`,strokeWidth:`10`})})}export{r as default};
2
- //# sourceMappingURL=spinnerLoading.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinnerLoading.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/spinnerLoading.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport styles from './spinnerLoading.module.pcss';\n\ninterface Properties {\n className?: string | undefined;\n}\n\nfunction SpinnerLoading({ className }: Properties): ReactElement {\n return (\n <svg\n data-testid='spinner'\n className={cx(styles.spinnerLoading, className)}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 100 100'\n fill='none'\n stroke='var(--primary-color)'\n >\n <circle cx='50' cy='50' r='45' strokeWidth='10' />\n </svg>\n );\n}\n\nexport default SpinnerLoading;\n"],"mappings":"0HASA,SAAS,EAAe,CAAE,aAAuC,CAC/D,OACE,EAAC,MAAD,CACE,cAAY,UACZ,UAAW,EAAG,EAAO,eAAgB,CAAS,EAC9C,MAAM,6BACN,QAAQ,cACR,KAAK,OACL,OAAO,uBAEP,SAAA,EAAC,SAAD,CAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,YAAY,IAAM,CAAA,CAC9C,CAAA,CAET"}
@@ -1,2 +0,0 @@
1
- "use client";var e=`spinner-loading_qbxX-`,t=`animate-spinner_6HoVF`,n=`spin_axdh6`,r={"spinner-loading":`spinner-loading_qbxX-`,spinnerLoading:e,"animate-spinner":`animate-spinner_6HoVF`,animateSpinner:t,spin:n};export{t as animateSpinner,r as default,n as spin,e as spinnerLoading};
2
- //# sourceMappingURL=spinnerLoading.module.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinnerLoading.module.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/spinnerLoading.module.pcss"],"sourcesContent":[".spinner-loading {\n width: 70px;\n height: 70px;\n\n circle {\n stroke-dasharray: 283;\n stroke-dashoffset: 281;\n stroke-linecap: round;\n animation:\n animate-spinner 2s cubic-bezier(0.89, 0.01, 0.12, 1) infinite,\n spin 3s linear infinite;\n transform-origin: center;\n }\n\n @keyframes animate-spinner {\n 0% {\n stroke-dashoffset: 281;\n }\n\n 50% {\n stroke-dashoffset: 0;\n }\n\n 100% {\n stroke-dashoffset: -281;\n }\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n}\n"],"mappings":""}
@@ -1 +0,0 @@
1
- export { default as SpinnerLoading } from './spinnerLoading/index.js';
@@ -1,2 +0,0 @@
1
- import { default as SpinnerLoading } from './spinnerLoading.js';
2
- export default SpinnerLoading;
@@ -1,6 +0,0 @@
1
- import { ReactElement } from 'react';
2
- interface Properties {
3
- className?: string | undefined;
4
- }
5
- declare function SpinnerLoading({ className }: Properties): ReactElement;
6
- export default SpinnerLoading;
package/docs/Loading.md DELETED
@@ -1,68 +0,0 @@
1
- # Loading (SpinnerLoading)
2
-
3
- **When to use:** A loading indicator for async operations: page loads, data fetching, or covering a region while it refreshes. For a button use `Button`'s built-in `isLoading`, and for placeholder content that mirrors the shape of what is coming use [Skeleton.md](Skeleton.md).
4
-
5
- **Keywords:** busy, waiting, activity indicator, throbber, progress, async, fetching, overlay
6
-
7
- **Import:** `import { SpinnerLoading } from '@ahrowe/ui'`
8
-
9
- ```tsx
10
- import { SpinnerLoading } from '@ahrowe/ui';
11
-
12
- // Default: a 70x70 circular spinner stroked in var(--primary-color)
13
- {isLoading && <SpinnerLoading />}
14
-
15
- // Sized through className
16
- <SpinnerLoading className="my-spinner" />
17
- ```
18
-
19
- ```css
20
- .my-spinner {
21
- width: 24px;
22
- height: 24px;
23
- }
24
- ```
25
-
26
- **Key props:**
27
-
28
- | Prop | Type | Description |
29
- |------|------|-------------|
30
- | `className` | `string` | Root `svg` element. This is also how you size it |
31
-
32
- ## Covering a region while it loads
33
-
34
- `SpinnerLoading` is the indicator only. To overlay it on content, centre it in a positioned parent:
35
-
36
- ```tsx
37
- <div className="panel">
38
- <YourContent />
39
- {isLoading && (
40
- <div className="panel-overlay">
41
- <SpinnerLoading className="my-spinner" />
42
- </div>
43
- )}
44
- </div>
45
- ```
46
-
47
- ```css
48
- .panel {
49
- position: relative;
50
- }
51
-
52
- .panel-overlay {
53
- position: absolute;
54
- inset: 0;
55
- display: flex;
56
- align-items: center;
57
- justify-content: center;
58
- pointer-events: none;
59
- }
60
- ```
61
-
62
- Drop the `pointer-events: none` if the overlay should also block interaction with what is underneath, and add a translucent `background` if it should dim it.
63
-
64
- For a branded loading screen rather than a generic spinner, [AnimatedLogo.md](AnimatedLogo.md) draws an SVG mark and sits in the same overlay.
65
-
66
- **Note:** the spinner animates continuously even under `prefers-reduced-motion`. A frozen spinner would say the app has hung, which is the opposite of what it is there to communicate.
67
-
68
- **Slots:** none. The root `svg` takes `className`.