@timmbr/ui 1.0.0-beta

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 (432) hide show
  1. package/README.md +151 -0
  2. package/dist/components/Accordion/Accordion.d.ts +8 -0
  3. package/dist/components/Accordion/Accordion.d.ts.map +1 -0
  4. package/dist/components/Accordion/Accordion.js +52 -0
  5. package/dist/components/Accordion/Accordion.styles.d.ts +4 -0
  6. package/dist/components/Accordion/Accordion.styles.d.ts.map +1 -0
  7. package/dist/components/Accordion/Accordion.styles.js +11 -0
  8. package/dist/components/Accordion/Accordion.types.d.ts +12 -0
  9. package/dist/components/Accordion/Accordion.types.d.ts.map +1 -0
  10. package/dist/components/Accordion/index.d.ts +4 -0
  11. package/dist/components/Accordion/index.d.ts.map +1 -0
  12. package/dist/components/Alert/Alert.d.ts +6 -0
  13. package/dist/components/Alert/Alert.d.ts.map +1 -0
  14. package/dist/components/Alert/Alert.js +99 -0
  15. package/dist/components/Alert/Alert.styles.d.ts +11 -0
  16. package/dist/components/Alert/Alert.styles.d.ts.map +1 -0
  17. package/dist/components/Alert/Alert.styles.js +47 -0
  18. package/dist/components/Alert/Alert.types.d.ts +30 -0
  19. package/dist/components/Alert/Alert.types.d.ts.map +1 -0
  20. package/dist/components/Alert/index.d.ts +4 -0
  21. package/dist/components/Alert/index.d.ts.map +1 -0
  22. package/dist/components/Avatar/Avatar.d.ts +4 -0
  23. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  24. package/dist/components/Avatar/Avatar.js +74 -0
  25. package/dist/components/Avatar/Avatar.styles.d.ts +11 -0
  26. package/dist/components/Avatar/Avatar.styles.d.ts.map +1 -0
  27. package/dist/components/Avatar/Avatar.styles.js +55 -0
  28. package/dist/components/Avatar/Avatar.types.d.ts +26 -0
  29. package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
  30. package/dist/components/Avatar/index.d.ts +4 -0
  31. package/dist/components/Avatar/index.d.ts.map +1 -0
  32. package/dist/components/Badge/Badge.d.ts +4 -0
  33. package/dist/components/Badge/Badge.d.ts.map +1 -0
  34. package/dist/components/Badge/Badge.js +50 -0
  35. package/dist/components/Badge/Badge.styles.d.ts +7 -0
  36. package/dist/components/Badge/Badge.styles.d.ts.map +1 -0
  37. package/dist/components/Badge/Badge.styles.js +30 -0
  38. package/dist/components/Badge/Badge.types.d.ts +21 -0
  39. package/dist/components/Badge/Badge.types.d.ts.map +1 -0
  40. package/dist/components/Badge/index.d.ts +4 -0
  41. package/dist/components/Badge/index.d.ts.map +1 -0
  42. package/dist/components/Button/Button.d.ts +4 -0
  43. package/dist/components/Button/Button.d.ts.map +1 -0
  44. package/dist/components/Button/Button.js +89 -0
  45. package/dist/components/Button/Button.styles.d.ts +7 -0
  46. package/dist/components/Button/Button.styles.d.ts.map +1 -0
  47. package/dist/components/Button/Button.styles.js +31 -0
  48. package/dist/components/Button/Button.types.d.ts +30 -0
  49. package/dist/components/Button/Button.types.d.ts.map +1 -0
  50. package/dist/components/Button/index.d.ts +4 -0
  51. package/dist/components/Button/index.d.ts.map +1 -0
  52. package/dist/components/Card/Card.d.ts +9 -0
  53. package/dist/components/Card/Card.d.ts.map +1 -0
  54. package/dist/components/Card/Card.js +90 -0
  55. package/dist/components/Card/Card.styles.d.ts +12 -0
  56. package/dist/components/Card/Card.styles.d.ts.map +1 -0
  57. package/dist/components/Card/Card.styles.js +33 -0
  58. package/dist/components/Card/Card.types.d.ts +24 -0
  59. package/dist/components/Card/Card.types.d.ts.map +1 -0
  60. package/dist/components/Card/index.d.ts +4 -0
  61. package/dist/components/Card/index.d.ts.map +1 -0
  62. package/dist/components/Center/Center.d.ts +4 -0
  63. package/dist/components/Center/Center.d.ts.map +1 -0
  64. package/dist/components/Center/Center.js +26 -0
  65. package/dist/components/Center/Center.styles.d.ts +6 -0
  66. package/dist/components/Center/Center.styles.d.ts.map +1 -0
  67. package/dist/components/Center/Center.styles.js +18 -0
  68. package/dist/components/Center/Center.types.d.ts +9 -0
  69. package/dist/components/Center/Center.types.d.ts.map +1 -0
  70. package/dist/components/Center/index.d.ts +4 -0
  71. package/dist/components/Center/index.d.ts.map +1 -0
  72. package/dist/components/Checkbox/Checkbox.d.ts +4 -0
  73. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  74. package/dist/components/Checkbox/Checkbox.js +88 -0
  75. package/dist/components/Checkbox/Checkbox.styles.d.ts +10 -0
  76. package/dist/components/Checkbox/Checkbox.styles.d.ts.map +1 -0
  77. package/dist/components/Checkbox/Checkbox.styles.js +41 -0
  78. package/dist/components/Checkbox/Checkbox.types.d.ts +22 -0
  79. package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
  80. package/dist/components/Checkbox/index.d.ts +4 -0
  81. package/dist/components/Checkbox/index.d.ts.map +1 -0
  82. package/dist/components/Chip/Chip.d.ts +4 -0
  83. package/dist/components/Chip/Chip.d.ts.map +1 -0
  84. package/dist/components/Chip/Chip.js +74 -0
  85. package/dist/components/Chip/Chip.styles.d.ts +10 -0
  86. package/dist/components/Chip/Chip.styles.d.ts.map +1 -0
  87. package/dist/components/Chip/Chip.styles.js +43 -0
  88. package/dist/components/Chip/Chip.types.d.ts +26 -0
  89. package/dist/components/Chip/Chip.types.d.ts.map +1 -0
  90. package/dist/components/Chip/index.d.ts +4 -0
  91. package/dist/components/Chip/index.d.ts.map +1 -0
  92. package/dist/components/Container/Container.d.ts +4 -0
  93. package/dist/components/Container/Container.d.ts.map +1 -0
  94. package/dist/components/Container/Container.js +35 -0
  95. package/dist/components/Container/Container.styles.d.ts +7 -0
  96. package/dist/components/Container/Container.styles.d.ts.map +1 -0
  97. package/dist/components/Container/Container.styles.js +24 -0
  98. package/dist/components/Container/Container.types.d.ts +9 -0
  99. package/dist/components/Container/Container.types.d.ts.map +1 -0
  100. package/dist/components/Container/index.d.ts +4 -0
  101. package/dist/components/Container/index.d.ts.map +1 -0
  102. package/dist/components/DataList/DataList.d.ts +7 -0
  103. package/dist/components/DataList/DataList.d.ts.map +1 -0
  104. package/dist/components/DataList/DataList.js +95 -0
  105. package/dist/components/DataList/DataList.styles.d.ts +14 -0
  106. package/dist/components/DataList/DataList.styles.d.ts.map +1 -0
  107. package/dist/components/DataList/DataList.styles.js +49 -0
  108. package/dist/components/DataList/DataList.types.d.ts +59 -0
  109. package/dist/components/DataList/DataList.types.d.ts.map +1 -0
  110. package/dist/components/DataList/index.d.ts +4 -0
  111. package/dist/components/DataList/index.d.ts.map +1 -0
  112. package/dist/components/Dialog/Dialog.d.ts +14 -0
  113. package/dist/components/Dialog/Dialog.d.ts.map +1 -0
  114. package/dist/components/Dialog/Dialog.js +86 -0
  115. package/dist/components/Dialog/Dialog.styles.d.ts +7 -0
  116. package/dist/components/Dialog/Dialog.styles.d.ts.map +1 -0
  117. package/dist/components/Dialog/Dialog.styles.js +22 -0
  118. package/dist/components/Dialog/Dialog.types.d.ts +16 -0
  119. package/dist/components/Dialog/Dialog.types.d.ts.map +1 -0
  120. package/dist/components/Dialog/index.d.ts +4 -0
  121. package/dist/components/Dialog/index.d.ts.map +1 -0
  122. package/dist/components/Divider/Divider.d.ts +4 -0
  123. package/dist/components/Divider/Divider.d.ts.map +1 -0
  124. package/dist/components/Divider/Divider.js +74 -0
  125. package/dist/components/Divider/Divider.styles.d.ts +9 -0
  126. package/dist/components/Divider/Divider.styles.d.ts.map +1 -0
  127. package/dist/components/Divider/Divider.styles.js +48 -0
  128. package/dist/components/Divider/Divider.types.d.ts +47 -0
  129. package/dist/components/Divider/Divider.types.d.ts.map +1 -0
  130. package/dist/components/Divider/index.d.ts +4 -0
  131. package/dist/components/Divider/index.d.ts.map +1 -0
  132. package/dist/components/Drawer/Drawer.d.ts +14 -0
  133. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  134. package/dist/components/Drawer/Drawer.js +69 -0
  135. package/dist/components/Drawer/Drawer.styles.d.ts +9 -0
  136. package/dist/components/Drawer/Drawer.styles.d.ts.map +1 -0
  137. package/dist/components/Drawer/Drawer.styles.js +29 -0
  138. package/dist/components/Drawer/Drawer.types.d.ts +17 -0
  139. package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
  140. package/dist/components/Drawer/index.d.ts +4 -0
  141. package/dist/components/Drawer/index.d.ts.map +1 -0
  142. package/dist/components/Dropdown/Dropdown.d.ts +22 -0
  143. package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
  144. package/dist/components/Dropdown/Dropdown.js +133 -0
  145. package/dist/components/Dropdown/Dropdown.styles.d.ts +3 -0
  146. package/dist/components/Dropdown/Dropdown.styles.d.ts.map +1 -0
  147. package/dist/components/Dropdown/Dropdown.styles.js +10 -0
  148. package/dist/components/Dropdown/Dropdown.types.d.ts +15 -0
  149. package/dist/components/Dropdown/Dropdown.types.d.ts.map +1 -0
  150. package/dist/components/Dropdown/index.d.ts +4 -0
  151. package/dist/components/Dropdown/index.d.ts.map +1 -0
  152. package/dist/components/EmptyState/EmptyState.d.ts +4 -0
  153. package/dist/components/EmptyState/EmptyState.d.ts.map +1 -0
  154. package/dist/components/EmptyState/EmptyState.js +82 -0
  155. package/dist/components/EmptyState/EmptyState.styles.d.ts +10 -0
  156. package/dist/components/EmptyState/EmptyState.styles.d.ts.map +1 -0
  157. package/dist/components/EmptyState/EmptyState.styles.js +40 -0
  158. package/dist/components/EmptyState/EmptyState.types.d.ts +30 -0
  159. package/dist/components/EmptyState/EmptyState.types.d.ts.map +1 -0
  160. package/dist/components/EmptyState/index.d.ts +4 -0
  161. package/dist/components/EmptyState/index.d.ts.map +1 -0
  162. package/dist/components/FormField/FormField.d.ts +4 -0
  163. package/dist/components/FormField/FormField.d.ts.map +1 -0
  164. package/dist/components/FormField/FormField.js +58 -0
  165. package/dist/components/FormField/FormField.styles.d.ts +2 -0
  166. package/dist/components/FormField/FormField.styles.d.ts.map +1 -0
  167. package/dist/components/FormField/FormField.styles.js +5 -0
  168. package/dist/components/FormField/FormField.types.d.ts +28 -0
  169. package/dist/components/FormField/FormField.types.d.ts.map +1 -0
  170. package/dist/components/FormField/index.d.ts +4 -0
  171. package/dist/components/FormField/index.d.ts.map +1 -0
  172. package/dist/components/Grid/Grid.d.ts +4 -0
  173. package/dist/components/Grid/Grid.d.ts.map +1 -0
  174. package/dist/components/Grid/Grid.js +58 -0
  175. package/dist/components/Grid/Grid.styles.d.ts +7 -0
  176. package/dist/components/Grid/Grid.styles.d.ts.map +1 -0
  177. package/dist/components/Grid/Grid.styles.js +75 -0
  178. package/dist/components/Grid/Grid.types.d.ts +41 -0
  179. package/dist/components/Grid/Grid.types.d.ts.map +1 -0
  180. package/dist/components/Grid/index.d.ts +4 -0
  181. package/dist/components/Grid/index.d.ts.map +1 -0
  182. package/dist/components/Heading/Heading.d.ts +4 -0
  183. package/dist/components/Heading/Heading.d.ts.map +1 -0
  184. package/dist/components/Heading/Heading.js +47 -0
  185. package/dist/components/Heading/Heading.styles.d.ts +9 -0
  186. package/dist/components/Heading/Heading.styles.d.ts.map +1 -0
  187. package/dist/components/Heading/Heading.styles.js +42 -0
  188. package/dist/components/Heading/Heading.types.d.ts +34 -0
  189. package/dist/components/Heading/Heading.types.d.ts.map +1 -0
  190. package/dist/components/Heading/index.d.ts +4 -0
  191. package/dist/components/Heading/index.d.ts.map +1 -0
  192. package/dist/components/Icon/Icon.d.ts +4 -0
  193. package/dist/components/Icon/Icon.d.ts.map +1 -0
  194. package/dist/components/Icon/Icon.js +78 -0
  195. package/dist/components/Icon/Icon.styles.d.ts +8 -0
  196. package/dist/components/Icon/Icon.styles.d.ts.map +1 -0
  197. package/dist/components/Icon/Icon.styles.js +37 -0
  198. package/dist/components/Icon/Icon.types.d.ts +39 -0
  199. package/dist/components/Icon/Icon.types.d.ts.map +1 -0
  200. package/dist/components/Icon/index.d.ts +4 -0
  201. package/dist/components/Icon/index.d.ts.map +1 -0
  202. package/dist/components/Inline/Inline.d.ts +4 -0
  203. package/dist/components/Inline/Inline.d.ts.map +1 -0
  204. package/dist/components/Inline/Inline.js +48 -0
  205. package/dist/components/Inline/Inline.styles.d.ts +8 -0
  206. package/dist/components/Inline/Inline.styles.d.ts.map +1 -0
  207. package/dist/components/Inline/Inline.styles.js +31 -0
  208. package/dist/components/Inline/Inline.types.d.ts +17 -0
  209. package/dist/components/Inline/Inline.types.d.ts.map +1 -0
  210. package/dist/components/Inline/index.d.ts +4 -0
  211. package/dist/components/Inline/index.d.ts.map +1 -0
  212. package/dist/components/Input/Input.d.ts +4 -0
  213. package/dist/components/Input/Input.d.ts.map +1 -0
  214. package/dist/components/Input/Input.js +194 -0
  215. package/dist/components/Input/Input.styles.d.ts +10 -0
  216. package/dist/components/Input/Input.styles.d.ts.map +1 -0
  217. package/dist/components/Input/Input.styles.js +39 -0
  218. package/dist/components/Input/Input.types.d.ts +55 -0
  219. package/dist/components/Input/Input.types.d.ts.map +1 -0
  220. package/dist/components/Input/index.d.ts +4 -0
  221. package/dist/components/Input/index.d.ts.map +1 -0
  222. package/dist/components/Label/Label.d.ts +4 -0
  223. package/dist/components/Label/Label.d.ts.map +1 -0
  224. package/dist/components/Label/Label.js +29 -0
  225. package/dist/components/Label/Label.styles.d.ts +6 -0
  226. package/dist/components/Label/Label.styles.d.ts.map +1 -0
  227. package/dist/components/Label/Label.styles.js +20 -0
  228. package/dist/components/Label/Label.types.d.ts +14 -0
  229. package/dist/components/Label/Label.types.d.ts.map +1 -0
  230. package/dist/components/Label/index.d.ts +4 -0
  231. package/dist/components/Label/index.d.ts.map +1 -0
  232. package/dist/components/List/List.d.ts +8 -0
  233. package/dist/components/List/List.d.ts.map +1 -0
  234. package/dist/components/List/List.js +82 -0
  235. package/dist/components/List/List.styles.d.ts +14 -0
  236. package/dist/components/List/List.styles.d.ts.map +1 -0
  237. package/dist/components/List/List.styles.js +41 -0
  238. package/dist/components/List/List.types.d.ts +16 -0
  239. package/dist/components/List/List.types.d.ts.map +1 -0
  240. package/dist/components/List/index.d.ts +4 -0
  241. package/dist/components/List/index.d.ts.map +1 -0
  242. package/dist/components/Pagination/Pagination.d.ts +19 -0
  243. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  244. package/dist/components/Pagination/Pagination.js +100 -0
  245. package/dist/components/Pagination/Pagination.styles.d.ts +5 -0
  246. package/dist/components/Pagination/Pagination.styles.d.ts.map +1 -0
  247. package/dist/components/Pagination/Pagination.styles.js +24 -0
  248. package/dist/components/Pagination/Pagination.types.d.ts +98 -0
  249. package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
  250. package/dist/components/Pagination/index.d.ts +4 -0
  251. package/dist/components/Pagination/index.d.ts.map +1 -0
  252. package/dist/components/Popover/Popover.d.ts +9 -0
  253. package/dist/components/Popover/Popover.d.ts.map +1 -0
  254. package/dist/components/Popover/Popover.js +36 -0
  255. package/dist/components/Popover/Popover.styles.d.ts +2 -0
  256. package/dist/components/Popover/Popover.styles.d.ts.map +1 -0
  257. package/dist/components/Popover/Popover.styles.js +7 -0
  258. package/dist/components/Popover/Popover.types.d.ts +12 -0
  259. package/dist/components/Popover/Popover.types.d.ts.map +1 -0
  260. package/dist/components/Popover/index.d.ts +4 -0
  261. package/dist/components/Popover/index.d.ts.map +1 -0
  262. package/dist/components/Progress/Progress.d.ts +4 -0
  263. package/dist/components/Progress/Progress.d.ts.map +1 -0
  264. package/dist/components/Progress/Progress.js +66 -0
  265. package/dist/components/Progress/Progress.styles.d.ts +9 -0
  266. package/dist/components/Progress/Progress.styles.d.ts.map +1 -0
  267. package/dist/components/Progress/Progress.styles.js +36 -0
  268. package/dist/components/Progress/Progress.types.d.ts +30 -0
  269. package/dist/components/Progress/Progress.types.d.ts.map +1 -0
  270. package/dist/components/Progress/index.d.ts +4 -0
  271. package/dist/components/Progress/index.d.ts.map +1 -0
  272. package/dist/components/Radio/Radio.d.ts +6 -0
  273. package/dist/components/Radio/Radio.d.ts.map +1 -0
  274. package/dist/components/Radio/Radio.js +128 -0
  275. package/dist/components/Radio/Radio.styles.d.ts +9 -0
  276. package/dist/components/Radio/Radio.styles.d.ts.map +1 -0
  277. package/dist/components/Radio/Radio.styles.js +36 -0
  278. package/dist/components/Radio/Radio.types.d.ts +51 -0
  279. package/dist/components/Radio/Radio.types.d.ts.map +1 -0
  280. package/dist/components/Radio/index.d.ts +4 -0
  281. package/dist/components/Radio/index.d.ts.map +1 -0
  282. package/dist/components/RangeSlider/RangeSlider.d.ts +4 -0
  283. package/dist/components/RangeSlider/RangeSlider.d.ts.map +1 -0
  284. package/dist/components/RangeSlider/RangeSlider.js +138 -0
  285. package/dist/components/RangeSlider/RangeSlider.styles.d.ts +7 -0
  286. package/dist/components/RangeSlider/RangeSlider.styles.d.ts.map +1 -0
  287. package/dist/components/RangeSlider/RangeSlider.styles.js +16 -0
  288. package/dist/components/RangeSlider/RangeSlider.types.d.ts +68 -0
  289. package/dist/components/RangeSlider/RangeSlider.types.d.ts.map +1 -0
  290. package/dist/components/RangeSlider/index.d.ts +4 -0
  291. package/dist/components/RangeSlider/index.d.ts.map +1 -0
  292. package/dist/components/Select/Select.d.ts +13 -0
  293. package/dist/components/Select/Select.d.ts.map +1 -0
  294. package/dist/components/Select/Select.js +128 -0
  295. package/dist/components/Select/Select.styles.d.ts +10 -0
  296. package/dist/components/Select/Select.styles.d.ts.map +1 -0
  297. package/dist/components/Select/Select.styles.js +36 -0
  298. package/dist/components/Select/Select.types.d.ts +53 -0
  299. package/dist/components/Select/Select.types.d.ts.map +1 -0
  300. package/dist/components/Select/index.d.ts +4 -0
  301. package/dist/components/Select/index.d.ts.map +1 -0
  302. package/dist/components/Skeleton/Skeleton.d.ts +4 -0
  303. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -0
  304. package/dist/components/Skeleton/Skeleton.js +62 -0
  305. package/dist/components/Skeleton/Skeleton.styles.d.ts +7 -0
  306. package/dist/components/Skeleton/Skeleton.styles.d.ts.map +1 -0
  307. package/dist/components/Skeleton/Skeleton.styles.js +26 -0
  308. package/dist/components/Skeleton/Skeleton.types.d.ts +22 -0
  309. package/dist/components/Skeleton/Skeleton.types.d.ts.map +1 -0
  310. package/dist/components/Skeleton/index.d.ts +4 -0
  311. package/dist/components/Skeleton/index.d.ts.map +1 -0
  312. package/dist/components/Spinner/Spinner.d.ts +4 -0
  313. package/dist/components/Spinner/Spinner.d.ts.map +1 -0
  314. package/dist/components/Spinner/Spinner.js +44 -0
  315. package/dist/components/Spinner/Spinner.styles.d.ts +7 -0
  316. package/dist/components/Spinner/Spinner.styles.d.ts.map +1 -0
  317. package/dist/components/Spinner/Spinner.styles.js +29 -0
  318. package/dist/components/Spinner/Spinner.types.d.ts +13 -0
  319. package/dist/components/Spinner/Spinner.types.d.ts.map +1 -0
  320. package/dist/components/Spinner/index.d.ts +4 -0
  321. package/dist/components/Spinner/index.d.ts.map +1 -0
  322. package/dist/components/Stack/Stack.d.ts +4 -0
  323. package/dist/components/Stack/Stack.d.ts.map +1 -0
  324. package/dist/components/Stack/Stack.js +47 -0
  325. package/dist/components/Stack/Stack.styles.d.ts +7 -0
  326. package/dist/components/Stack/Stack.styles.d.ts.map +1 -0
  327. package/dist/components/Stack/Stack.styles.js +27 -0
  328. package/dist/components/Stack/Stack.types.d.ts +17 -0
  329. package/dist/components/Stack/Stack.types.d.ts.map +1 -0
  330. package/dist/components/Stack/index.d.ts +4 -0
  331. package/dist/components/Stack/index.d.ts.map +1 -0
  332. package/dist/components/Stat/Stat.d.ts +8 -0
  333. package/dist/components/Stat/Stat.d.ts.map +1 -0
  334. package/dist/components/Stat/Stat.js +87 -0
  335. package/dist/components/Stat/Stat.styles.d.ts +13 -0
  336. package/dist/components/Stat/Stat.styles.d.ts.map +1 -0
  337. package/dist/components/Stat/Stat.styles.js +42 -0
  338. package/dist/components/Stat/Stat.types.d.ts +16 -0
  339. package/dist/components/Stat/Stat.types.d.ts.map +1 -0
  340. package/dist/components/Stat/index.d.ts +4 -0
  341. package/dist/components/Stat/index.d.ts.map +1 -0
  342. package/dist/components/Switch/Switch.d.ts +4 -0
  343. package/dist/components/Switch/Switch.d.ts.map +1 -0
  344. package/dist/components/Switch/Switch.js +70 -0
  345. package/dist/components/Switch/Switch.styles.d.ts +9 -0
  346. package/dist/components/Switch/Switch.styles.d.ts.map +1 -0
  347. package/dist/components/Switch/Switch.styles.js +36 -0
  348. package/dist/components/Switch/Switch.types.d.ts +18 -0
  349. package/dist/components/Switch/Switch.types.d.ts.map +1 -0
  350. package/dist/components/Switch/index.d.ts +4 -0
  351. package/dist/components/Switch/index.d.ts.map +1 -0
  352. package/dist/components/Table/Table.d.ts +12 -0
  353. package/dist/components/Table/Table.d.ts.map +1 -0
  354. package/dist/components/Table/Table.js +104 -0
  355. package/dist/components/Table/Table.styles.d.ts +15 -0
  356. package/dist/components/Table/Table.styles.d.ts.map +1 -0
  357. package/dist/components/Table/Table.styles.js +53 -0
  358. package/dist/components/Table/Table.types.d.ts +57 -0
  359. package/dist/components/Table/Table.types.d.ts.map +1 -0
  360. package/dist/components/Table/TablePagination.d.ts +4 -0
  361. package/dist/components/Table/TablePagination.d.ts.map +1 -0
  362. package/dist/components/Table/TablePagination.js +107 -0
  363. package/dist/components/Table/index.d.ts +5 -0
  364. package/dist/components/Table/index.d.ts.map +1 -0
  365. package/dist/components/Tabs/Tabs.d.ts +7 -0
  366. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  367. package/dist/components/Tabs/Tabs.js +177 -0
  368. package/dist/components/Tabs/Tabs.styles.d.ts +13 -0
  369. package/dist/components/Tabs/Tabs.styles.d.ts.map +1 -0
  370. package/dist/components/Tabs/Tabs.styles.js +51 -0
  371. package/dist/components/Tabs/Tabs.types.d.ts +35 -0
  372. package/dist/components/Tabs/Tabs.types.d.ts.map +1 -0
  373. package/dist/components/Tabs/index.d.ts +4 -0
  374. package/dist/components/Tabs/index.d.ts.map +1 -0
  375. package/dist/components/Text/Text.d.ts +4 -0
  376. package/dist/components/Text/Text.d.ts.map +1 -0
  377. package/dist/components/Text/Text.js +46 -0
  378. package/dist/components/Text/Text.styles.d.ts +9 -0
  379. package/dist/components/Text/Text.styles.d.ts.map +1 -0
  380. package/dist/components/Text/Text.styles.js +45 -0
  381. package/dist/components/Text/Text.types.d.ts +28 -0
  382. package/dist/components/Text/Text.types.d.ts.map +1 -0
  383. package/dist/components/Text/index.d.ts +4 -0
  384. package/dist/components/Text/index.d.ts.map +1 -0
  385. package/dist/components/Textarea/Textarea.d.ts +4 -0
  386. package/dist/components/Textarea/Textarea.d.ts.map +1 -0
  387. package/dist/components/Textarea/Textarea.js +170 -0
  388. package/dist/components/Textarea/Textarea.styles.d.ts +9 -0
  389. package/dist/components/Textarea/Textarea.styles.d.ts.map +1 -0
  390. package/dist/components/Textarea/Textarea.styles.js +38 -0
  391. package/dist/components/Textarea/Textarea.types.d.ts +38 -0
  392. package/dist/components/Textarea/Textarea.types.d.ts.map +1 -0
  393. package/dist/components/Textarea/index.d.ts +4 -0
  394. package/dist/components/Textarea/index.d.ts.map +1 -0
  395. package/dist/components/Toast/Toast.d.ts +11 -0
  396. package/dist/components/Toast/Toast.d.ts.map +1 -0
  397. package/dist/components/Toast/Toast.js +107 -0
  398. package/dist/components/Toast/Toast.styles.d.ts +6 -0
  399. package/dist/components/Toast/Toast.styles.d.ts.map +1 -0
  400. package/dist/components/Toast/Toast.styles.js +21 -0
  401. package/dist/components/Toast/Toast.types.d.ts +27 -0
  402. package/dist/components/Toast/Toast.types.d.ts.map +1 -0
  403. package/dist/components/Toast/index.d.ts +4 -0
  404. package/dist/components/Toast/index.d.ts.map +1 -0
  405. package/dist/components/Tooltip/Tooltip.d.ts +14 -0
  406. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  407. package/dist/components/Tooltip/Tooltip.js +56 -0
  408. package/dist/components/Tooltip/Tooltip.styles.d.ts +2 -0
  409. package/dist/components/Tooltip/Tooltip.styles.d.ts.map +1 -0
  410. package/dist/components/Tooltip/Tooltip.styles.js +7 -0
  411. package/dist/components/Tooltip/Tooltip.types.d.ts +32 -0
  412. package/dist/components/Tooltip/Tooltip.types.d.ts.map +1 -0
  413. package/dist/components/Tooltip/index.d.ts +4 -0
  414. package/dist/components/Tooltip/index.d.ts.map +1 -0
  415. package/dist/index.d.ts +44 -0
  416. package/dist/index.d.ts.map +1 -0
  417. package/dist/index.js +86 -0
  418. package/dist/providers/AnimationProvider.d.ts +15 -0
  419. package/dist/providers/AnimationProvider.d.ts.map +1 -0
  420. package/dist/providers/AnimationProvider.js +35 -0
  421. package/dist/providers/TimmbrConfigProvider.d.ts +38 -0
  422. package/dist/providers/TimmbrConfigProvider.d.ts.map +1 -0
  423. package/dist/providers/TimmbrConfigProvider.js +76 -0
  424. package/dist/providers/index.d.ts +3 -0
  425. package/dist/providers/index.d.ts.map +1 -0
  426. package/dist/types/motion.d.ts +99 -0
  427. package/dist/types/motion.d.ts.map +1 -0
  428. package/dist/types/motion.js +73 -0
  429. package/dist/utils/gap.d.ts +2 -0
  430. package/dist/utils/gap.d.ts.map +1 -0
  431. package/dist/utils/gap.js +55 -0
  432. package/package.json +81 -0
package/README.md ADDED
@@ -0,0 +1,151 @@
1
+ # @timmbr/ui
2
+
3
+ High-performance, Next.js App Router-compatible UI component library for the Timmbr Design System. Built with **Radix UI**, **Tailwind CSS v4**, **Class Variance Authority (CVA)**, and **Vite (Library Mode)**.
4
+
5
+ ## Key Architectural Principles
6
+
7
+ 1. **Next.js App Router & RSC Compatible**:
8
+ - Preserves `'use client'` directives via `rollup-plugin-preserve-directives`.
9
+ - Uses `preserveModules: true` so bundlers can tree-shake unused components without bundling unnecessary client boundaries.
10
+ 2. **Dual-Layer Animation Architecture**:
11
+ - Global toggle support via `TimmbrConfigProvider` or `AnimationProvider`.
12
+ - Component-level override support via the `motion` prop on animated components.
13
+ 3. **Hierarchical Global & Local Configuration**:
14
+ - Global defaults can be set via `TimmbrConfigProvider` (optional; zero config needed out of the box).
15
+ - Any component prop locally overrides global defaults.
16
+
17
+ ## Installation
18
+
19
+ Within the monorepo:
20
+
21
+ ```bash
22
+ pnpm add @timmbr/ui --filter your-app
23
+ ```
24
+
25
+ ## Setup in Consuming Next.js App
26
+
27
+ ### 1. Configure CSS (Tailwind v4)
28
+
29
+ In `app/globals.css`:
30
+
31
+ ```css
32
+ @import "tailwindcss";
33
+ @import "@timmbr/theme/theme.css";
34
+
35
+ @source "../node_modules/@timmbr/ui/dist";
36
+ @source "../node_modules/@timmbr/icons/dist";
37
+ ```
38
+
39
+ ### 2. Optional: Wrap with `TimmbrConfigProvider`
40
+
41
+ In `app/layout.tsx`:
42
+
43
+ ```tsx
44
+ import { TimmbrConfigProvider } from '@timmbr/ui';
45
+
46
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
47
+ return (
48
+ <html lang="en">
49
+ <body>
50
+ <TimmbrConfigProvider
51
+ config={{
52
+ animations: { enabled: true },
53
+ components: {
54
+ button: { defaultVariant: 'default', defaultSize: 'default' },
55
+ },
56
+ }}
57
+ >
58
+ {children}
59
+ </TimmbrConfigProvider>
60
+ </body>
61
+ </html>
62
+ );
63
+ }
64
+ ```
65
+
66
+ ## Available Components
67
+
68
+ | Category | Components | Description |
69
+ | :--- | :--- | :--- |
70
+ | **Actions** | `Button` | Accessible button with adornment icons, loading spinner, CVA variants, and `asChild` composition. |
71
+ | **Typography** | `Text`, `Heading` | Typography primitives restricted to semantic elements (`<p>`, `<span>`, `<h1>`–`<h6>`) with design token scaling. |
72
+ | **Surfaces** | `Card`, `Avatar`, `Badge`, `Chip`, `Divider` | Display primitives including user avatars, status pills, elevated cards, interactive chips, and separators. |
73
+ | **Layout** | `Container`, `Stack`, `Inline`, `Grid`, `Center` | Responsive breakpoint containers, flex distribution, responsive CSS grid, and centered wrappers. |
74
+ | **Form Controls** | `Input`, `Textarea`, `Select`, `Checkbox`, `Radio`, `Switch`, `RangeSlider`, `FormField`, `Label` | Comprehensive form primitives with labels, helper text, validation error states, and dual-thumb sliders. |
75
+ | **Navigation** | `Tabs`, `Pagination` | Radix-driven accessible tabs with spring-physics glider indicator and multi-page pagination. |
76
+ | **Feedback** | `Alert`, `Progress`, `Skeleton`, `Spinner`, `Toast` | Status banners, determinate/indeterminate progress, shimmer loaders, and card-deck multi-toasts with hover-spread. |
77
+ | **Overlays** | `Dialog`, `Drawer`, `Dropdown`, `Popover`, `Tooltip` | Centered dialogs, off-canvas sliding drawers, contextual dropdowns, interactive popovers, and accessible tooltips. |
78
+ | **Data Display** | `Table`, `DataList`, `Stat`, `EmptyState` | Structured data tables with pagination, key-value data lists, KPI metrics, and empty state placeholders. |
79
+ | **Visual Media** | `Icon` | Unified icon wrapper supporting Lucide icons, external image URLs, raw SVGs, and clickable modes. |
80
+
81
+
82
+ ## Component Usage
83
+
84
+
85
+ ### Button
86
+
87
+ ```tsx
88
+ import { Button } from '@timmbr/ui';
89
+ import Link from 'next/link';
90
+
91
+ export function Example() {
92
+ return (
93
+ <div className="flex gap-4">
94
+ {/* Standard variants */}
95
+ <Button variant="default">Primary</Button>
96
+ <Button variant="outline">Outline</Button>
97
+ <Button variant="ghost">Ghost</Button>
98
+
99
+ {/* Composition with Next.js Link via asChild */}
100
+ <Button asChild>
101
+ <Link href="/dashboard">Go to Dashboard</Link>
102
+ </Button>
103
+ </div>
104
+ );
105
+ }
106
+ ```
107
+
108
+ ### Accordion
109
+
110
+ ```tsx
111
+ import {
112
+ Accordion,
113
+ AccordionItem,
114
+ AccordionTrigger,
115
+ AccordionContent,
116
+ } from '@timmbr/ui';
117
+
118
+ export function AccordionDemo() {
119
+ return (
120
+ <Accordion type="single" collapsible>
121
+ <AccordionItem value="item-1">
122
+ <AccordionTrigger>What is Timmbr?</AccordionTrigger>
123
+ <AccordionContent>
124
+ An enterprise-grade UI design system.
125
+ </AccordionContent>
126
+ </AccordionItem>
127
+ <AccordionItem value="item-2">
128
+ <AccordionTrigger>Locally disabled animation?</AccordionTrigger>
129
+ {/* Local override disables motion strictly on this panel */}
130
+ <AccordionContent motion={false}>
131
+ This panel opens instantaneously without animations.
132
+ </AccordionContent>
133
+ </AccordionItem>
134
+ </Accordion>
135
+ );
136
+ }
137
+ ```
138
+
139
+ ## Component Folder Layout Standards
140
+
141
+ Every component in `@timmbr/ui` adheres to this flat, predictable layout:
142
+
143
+ ```text
144
+ packages/ui/src/components/ComponentName/
145
+ ├── ComponentName.tsx # Component implementation & Radix slot integration
146
+ ├── ComponentName.styles.ts # CVA definitions for Tailwind variants
147
+ ├── ComponentName.types.ts # TypeScript interfaces
148
+ ├── ComponentName.stories.tsx # Storybook stories & playground
149
+ ├── ComponentName.test.tsx # Vitest / React Testing Library specs
150
+ └── index.ts # Barrel export
151
+ ```
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+ import type { AccordionContentProps } from './Accordion.types';
4
+ export declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
5
+ export declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
+ export declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
7
+ export declare const AccordionContent: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
8
+ //# sourceMappingURL=Accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAShE,OAAO,KAAK,EAIV,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,SAAS,8JAA0B,CAAC;AAEjD,eAAO,MAAM,aAAa,iKASxB,CAAC;AAGH,eAAO,MAAM,gBAAgB,0KAc3B,CAAC;AAGH,eAAO,MAAM,gBAAgB,8FAoB3B,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import * as React from 'react';
4
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
5
+ import { ChevronDown } from '@timmbr/icons';
6
+ import { cn } from '@timmbr/utils';
7
+ import { accordionContentVariants, accordionItemVariants, accordionTriggerVariants } from './Accordion.styles.js';
8
+ import { useGlobalAnimation } from '../../providers/AnimationProvider.js';
9
+
10
+ const Accordion = AccordionPrimitive.Root;
11
+ const AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
12
+ AccordionPrimitive.Item,
13
+ {
14
+ ref,
15
+ className: cn(accordionItemVariants(), className),
16
+ ...props
17
+ }
18
+ ));
19
+ AccordionItem.displayName = "AccordionItem";
20
+ const AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
21
+ AccordionPrimitive.Trigger,
22
+ {
23
+ ref,
24
+ className: cn(accordionTriggerVariants(), className),
25
+ ...props,
26
+ children: [
27
+ children,
28
+ /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 text-slate-500 transition-transform duration-200" })
29
+ ]
30
+ }
31
+ ) }));
32
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
33
+ const AccordionContent = React.forwardRef(({ className, children, motion = true, ...props }, ref) => {
34
+ const globalMotion = useGlobalAnimation();
35
+ const shouldAnimate = globalMotion && motion;
36
+ return /* @__PURE__ */ jsx(
37
+ AccordionPrimitive.Content,
38
+ {
39
+ ref,
40
+ className: cn(
41
+ accordionContentVariants(),
42
+ !shouldAnimate && "transition-none duration-0 data-[state=closed]:animate-none data-[state=open]:animate-none",
43
+ className
44
+ ),
45
+ ...props,
46
+ children: /* @__PURE__ */ jsx("div", { className: "pb-4 pt-0", children })
47
+ }
48
+ );
49
+ });
50
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
51
+
52
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
@@ -0,0 +1,4 @@
1
+ export declare const accordionItemVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
2
+ export declare const accordionTriggerVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
3
+ export declare const accordionContentVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
4
+ //# sourceMappingURL=Accordion.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,oFAAyD,CAAC;AAE5F,eAAO,MAAM,wBAAwB,oFAEpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,oFAEpC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { cva } from 'class-variance-authority';
2
+
3
+ const accordionItemVariants = cva("border-b border-slate-200 dark:border-slate-800");
4
+ const accordionTriggerVariants = cva(
5
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180 cursor-pointer"
6
+ );
7
+ const accordionContentVariants = cva(
8
+ "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
9
+ );
10
+
11
+ export { accordionContentVariants, accordionItemVariants, accordionTriggerVariants };
@@ -0,0 +1,12 @@
1
+ import type * as React from 'react';
2
+ import type * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+ export type AccordionProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;
4
+ export type AccordionItemProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>;
5
+ export type AccordionTriggerProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>;
6
+ export interface AccordionContentProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> {
7
+ /**
8
+ * Local toggle to override animation behavior for this accordion panel.
9
+ */
10
+ motion?: boolean;
11
+ }
12
+ //# sourceMappingURL=Accordion.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.types.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,wBAAwB,CACzD,OAAO,kBAAkB,CAAC,IAAI,CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAC7D,OAAO,kBAAkB,CAAC,IAAI,CAC/B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,wBAAwB,CAChE,OAAO,kBAAkB,CAAC,OAAO,CAClC,CAAC;AAEF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACzE;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,4 @@
1
+ export * from './Accordion';
2
+ export * from './Accordion.styles';
3
+ export * from './Accordion.types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import type { AlertProps, AlertTitleProps, AlertDescriptionProps } from './Alert.types';
3
+ export declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
4
+ export declare const AlertTitle: React.ForwardRefExoticComponent<AlertTitleProps & React.RefAttributes<HTMLHeadingElement>>;
5
+ export declare const AlertDescription: React.ForwardRefExoticComponent<AlertDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
6
+ //# sourceMappingURL=Alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/Alert.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAUxF,eAAO,MAAM,KAAK,mFAkEjB,CAAC;AAGF,eAAO,MAAM,UAAU,4FAStB,CAAC;AAGF,eAAO,MAAM,gBAAgB,oGAS5B,CAAC"}
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import * as React from 'react';
4
+ import { cn } from '@timmbr/utils';
5
+ import { AlertCircle, AlertTriangle, CheckCircle, Info, X } from '@timmbr/icons';
6
+ import { resolveMotion } from '../../types/motion.js';
7
+ import { alertIconVariants, alertVariants } from './Alert.styles.js';
8
+ import { useGlobalAnimation } from '../../providers/AnimationProvider.js';
9
+
10
+ const DEFAULT_ICONS = {
11
+ default: Info,
12
+ info: Info,
13
+ success: CheckCircle,
14
+ warning: AlertTriangle,
15
+ destructive: AlertCircle
16
+ };
17
+ const Alert = React.forwardRef(
18
+ ({
19
+ className,
20
+ variant = "default",
21
+ size = "default",
22
+ title,
23
+ icon,
24
+ dismissible = false,
25
+ onClose,
26
+ motion,
27
+ children,
28
+ ...props
29
+ }, ref) => {
30
+ const [closed, setClosed] = React.useState(false);
31
+ const globalMotion = useGlobalAnimation();
32
+ const { shouldAnimate, motionClass } = resolveMotion(motion, globalMotion);
33
+ if (closed) return null;
34
+ const IconComponent = DEFAULT_ICONS[variant ?? "default"] || Info;
35
+ const handleDismiss = () => {
36
+ setClosed(true);
37
+ onClose?.();
38
+ };
39
+ return /* @__PURE__ */ jsxs(
40
+ "div",
41
+ {
42
+ ref,
43
+ role: "alert",
44
+ "data-slot": "alert",
45
+ className: cn(
46
+ alertVariants({ variant, size }),
47
+ !shouldAnimate && "transition-none animate-none",
48
+ motionClass,
49
+ className
50
+ ),
51
+ ...props,
52
+ children: [
53
+ icon !== null && /* @__PURE__ */ jsx("div", { className: alertIconVariants({ variant, size }), "data-slot": "alert-icon", children: icon ?? /* @__PURE__ */ jsx(IconComponent, { className: "size-full", "aria-hidden": "true" }) }),
54
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 space-y-1", children: [
55
+ title && /* @__PURE__ */ jsx(AlertTitle, { children: title }),
56
+ children && /* @__PURE__ */ jsx(AlertDescription, { children })
57
+ ] }),
58
+ dismissible && /* @__PURE__ */ jsx(
59
+ "button",
60
+ {
61
+ type: "button",
62
+ onClick: handleDismiss,
63
+ "aria-label": "Dismiss alert",
64
+ className: "shrink-0 p-1 -mr-1 -mt-1 text-muted-foreground hover:text-foreground rounded-sm transition-colors hover:bg-black/5 dark:hover:bg-white/5 cursor-pointer active:scale-95",
65
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
66
+ }
67
+ )
68
+ ]
69
+ }
70
+ );
71
+ }
72
+ );
73
+ Alert.displayName = "Alert";
74
+ const AlertTitle = React.forwardRef(
75
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
76
+ "h5",
77
+ {
78
+ ref,
79
+ "data-slot": "alert-title",
80
+ className: cn("font-semibold leading-tight tracking-tight text-foreground", className),
81
+ ...props
82
+ }
83
+ )
84
+ );
85
+ AlertTitle.displayName = "AlertTitle";
86
+ const AlertDescription = React.forwardRef(
87
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
88
+ "div",
89
+ {
90
+ ref,
91
+ "data-slot": "alert-description",
92
+ className: cn("text-xs text-muted-foreground leading-relaxed", className),
93
+ ...props
94
+ }
95
+ )
96
+ );
97
+ AlertDescription.displayName = "AlertDescription";
98
+
99
+ export { Alert, AlertDescription, AlertTitle };
@@ -0,0 +1,11 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ export declare const alertVariants: (props?: ({
3
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
4
+ size?: "default" | "sm" | "lg" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare const alertIconVariants: (props?: ({
7
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
8
+ size?: "default" | "sm" | "lg" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ export type AlertVariants = VariantProps<typeof alertVariants>;
11
+ //# sourceMappingURL=Alert.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/Alert.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,eAAO,MAAM,aAAa;;;8EA2BzB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;8EAmB5B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { cva } from 'class-variance-authority';
2
+
3
+ const alertVariants = cva(
4
+ "relative flex w-full gap-3 p-4 rounded-lg border text-sm font-sans transition-all duration-200",
5
+ {
6
+ variants: {
7
+ variant: {
8
+ default: "border-grey-200 dark:border-grey-800 bg-grey-50 dark:bg-grey-900/50 text-foreground",
9
+ info: "border-info/30 bg-info/10 text-foreground dark:border-info/40 dark:bg-info/15",
10
+ success: "border-success/30 bg-success/10 text-foreground dark:border-success/40 dark:bg-success/15",
11
+ warning: "border-warning/30 bg-warning/10 text-foreground dark:border-warning/40 dark:bg-warning/15",
12
+ destructive: "border-destructive/30 bg-destructive/10 text-foreground dark:border-destructive/40 dark:bg-destructive/15"
13
+ },
14
+ size: {
15
+ sm: "p-3 text-xs gap-2.5",
16
+ default: "p-4 text-sm gap-3",
17
+ lg: "p-5 text-base gap-3.5"
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ variant: "default",
22
+ size: "default"
23
+ }
24
+ }
25
+ );
26
+ const alertIconVariants = cva("shrink-0 transition-colors", {
27
+ variants: {
28
+ variant: {
29
+ default: "text-grey-700 dark:text-grey-300",
30
+ info: "text-info",
31
+ success: "text-success",
32
+ warning: "text-warning",
33
+ destructive: "text-destructive"
34
+ },
35
+ size: {
36
+ sm: "size-4 mt-0.5",
37
+ default: "size-5 mt-0.5",
38
+ lg: "size-6 mt-0.5"
39
+ }
40
+ },
41
+ defaultVariants: {
42
+ variant: "default",
43
+ size: "default"
44
+ }
45
+ });
46
+
47
+ export { alertIconVariants, alertVariants };
@@ -0,0 +1,30 @@
1
+ import type * as React from 'react';
2
+ import type { AlertVariants } from './Alert.styles';
3
+ import type { MotionProp } from '../../types/motion';
4
+ export interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>, AlertVariants {
5
+ /**
6
+ * Title text or heading node.
7
+ */
8
+ title?: React.ReactNode;
9
+ /**
10
+ * Custom leading icon. If omitted, an appropriate icon is rendered based on variant.
11
+ */
12
+ icon?: React.ReactNode;
13
+ /**
14
+ * If true, renders an accessible dismiss button.
15
+ */
16
+ dismissible?: boolean;
17
+ /**
18
+ * Callback fired when the dismiss button is clicked.
19
+ */
20
+ onClose?: () => void;
21
+ /**
22
+ * Motion transition control.
23
+ */
24
+ motion?: MotionProp;
25
+ }
26
+ export interface AlertTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
27
+ }
28
+ export interface AlertDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {
29
+ }
30
+ //# sourceMappingURL=Alert.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.types.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/Alert.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EACzD,aAAa;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC;CAAG;AAEpF,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC;CAAG"}
@@ -0,0 +1,4 @@
1
+ export * from './Alert';
2
+ export * from './Alert.types';
3
+ export * from './Alert.styles';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { AvatarProps } from './Avatar.types';
3
+ export declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
4
+ //# sourceMappingURL=Avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAO,MAAM,MAAM,oFAiElB,CAAC"}
@@ -0,0 +1,74 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import * as React from 'react';
4
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
5
+ import { cn } from '@timmbr/utils';
6
+ import { avatarRootVariants, avatarStatusVariants } from './Avatar.styles.js';
7
+
8
+ const Avatar = React.forwardRef(
9
+ ({
10
+ className,
11
+ style,
12
+ src,
13
+ alt = "Avatar",
14
+ initials,
15
+ size = "md",
16
+ variant = "primary",
17
+ status,
18
+ children,
19
+ ...props
20
+ }, ref) => {
21
+ return /* @__PURE__ */ jsxs("div", { className: "relative inline-block shrink-0", style, children: [
22
+ /* @__PURE__ */ jsxs(
23
+ AvatarPrimitive.Root,
24
+ {
25
+ ref,
26
+ "data-slot": "avatar",
27
+ "data-testid": "timmbr-avatar",
28
+ className: cn(avatarRootVariants({ size, variant, className })),
29
+ ...props,
30
+ children: [
31
+ src && /* @__PURE__ */ jsx(
32
+ AvatarPrimitive.Image,
33
+ {
34
+ src,
35
+ alt,
36
+ className: "aspect-square size-full object-cover",
37
+ "data-slot": "avatar-image"
38
+ }
39
+ ),
40
+ /* @__PURE__ */ jsx(
41
+ AvatarPrimitive.Fallback,
42
+ {
43
+ delayMs: src ? 300 : void 0,
44
+ className: "flex size-full items-center justify-center font-bold uppercase select-none",
45
+ "data-slot": "avatar-fallback",
46
+ children: initials ? /* @__PURE__ */ jsx("span", { children: initials }) : children ? children : /* @__PURE__ */ jsx(
47
+ "svg",
48
+ {
49
+ className: "size-1/2 text-current opacity-70",
50
+ fill: "currentColor",
51
+ viewBox: "0 0 24 24",
52
+ "aria-hidden": "true",
53
+ children: /* @__PURE__ */ jsx("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })
54
+ }
55
+ )
56
+ }
57
+ )
58
+ ]
59
+ }
60
+ ),
61
+ status && /* @__PURE__ */ jsx(
62
+ "span",
63
+ {
64
+ className: cn(avatarStatusVariants({ status, size })),
65
+ "data-slot": "avatar-status",
66
+ "aria-label": `Status: ${status}`
67
+ }
68
+ )
69
+ ] });
70
+ }
71
+ );
72
+ Avatar.displayName = "Avatar";
73
+
74
+ export { Avatar };
@@ -0,0 +1,11 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ export declare const avatarRootVariants: (props?: ({
3
+ size?: "sm" | "lg" | "md" | "xl" | "2xl" | "xs" | null | undefined;
4
+ variant?: "outline" | "grey" | "subtle" | "primary" | "secondary" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare const avatarStatusVariants: (props?: ({
7
+ status?: "online" | "offline" | "busy" | "away" | null | undefined;
8
+ size?: "sm" | "lg" | "md" | "xl" | "2xl" | "xs" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ export type AvatarVariants = VariantProps<typeof avatarRootVariants>;
11
+ //# sourceMappingURL=Avatar.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.styles.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;8EAyB9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;8EAwBhC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { cva } from 'class-variance-authority';
2
+
3
+ const avatarRootVariants = cva(
4
+ "relative inline-flex shrink-0 select-none overflow-hidden rounded-full items-center justify-center font-sans font-bold",
5
+ {
6
+ variants: {
7
+ size: {
8
+ xs: "size-6 text-[10px]",
9
+ sm: "size-8 text-xs",
10
+ md: "size-10 text-[15px]",
11
+ lg: "size-12 text-base",
12
+ xl: "size-16 text-xl",
13
+ "2xl": "size-20 text-2xl"
14
+ },
15
+ variant: {
16
+ primary: "bg-primary text-white",
17
+ secondary: "bg-secondary text-secondary-foreground",
18
+ subtle: "bg-bg-subtle text-foreground",
19
+ grey: "bg-grey-700 text-white",
20
+ outline: "bg-background border border-grey-300 dark:border-grey-700 text-foreground"
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ size: "md",
25
+ variant: "primary"
26
+ }
27
+ }
28
+ );
29
+ const avatarStatusVariants = cva(
30
+ "absolute bottom-0 right-0 rounded-full ring-2 ring-background",
31
+ {
32
+ variants: {
33
+ status: {
34
+ online: "bg-emerald-500",
35
+ offline: "bg-grey-400",
36
+ busy: "bg-rose-500",
37
+ away: "bg-amber-500"
38
+ },
39
+ size: {
40
+ xs: "size-1.5",
41
+ sm: "size-2",
42
+ md: "size-2.5",
43
+ lg: "size-3",
44
+ xl: "size-4",
45
+ "2xl": "size-5"
46
+ }
47
+ },
48
+ defaultVariants: {
49
+ status: "online",
50
+ size: "md"
51
+ }
52
+ }
53
+ );
54
+
55
+ export { avatarRootVariants, avatarStatusVariants };