@postenbring/hedwig-react 0.0.81 → 0.0.83

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 (580) hide show
  1. package/dist/accordion/accordion-content.d.ts +6 -2
  2. package/dist/accordion/accordion-content.d.ts.map +1 -0
  3. package/dist/accordion/accordion-header.d.ts +6 -2
  4. package/dist/accordion/accordion-header.d.ts.map +1 -0
  5. package/dist/accordion/accordion-item.d.ts +24 -3
  6. package/dist/accordion/accordion-item.d.ts.map +1 -0
  7. package/dist/accordion/accordion.d.ts +44 -2
  8. package/dist/accordion/accordion.d.ts.map +1 -0
  9. package/dist/accordion/accordion.js +102 -4
  10. package/dist/accordion/accordion.js.map +1 -1
  11. package/dist/accordion/accordion.mjs +5 -1
  12. package/dist/accordion/context.d.ts +7 -2
  13. package/dist/accordion/context.d.ts.map +1 -0
  14. package/dist/accordion/index.d.ts +9 -9
  15. package/dist/accordion/index.d.ts.map +1 -0
  16. package/dist/accordion/index.js +52 -53
  17. package/dist/accordion/index.js.map +1 -1
  18. package/dist/accordion/index.mjs +7 -7
  19. package/dist/badge/badge.d.ts +21 -5
  20. package/dist/badge/badge.d.ts.map +1 -0
  21. package/dist/badge/index.d.ts +3 -6
  22. package/dist/badge/index.d.ts.map +1 -0
  23. package/dist/box/box.d.ts +50 -4
  24. package/dist/box/box.d.ts.map +1 -0
  25. package/dist/box/box.js +15 -14
  26. package/dist/box/box.js.map +1 -1
  27. package/dist/box/box.mjs +1 -1
  28. package/dist/box/index.d.ts +3 -4
  29. package/dist/box/index.d.ts.map +1 -0
  30. package/dist/box/index.js +16 -19
  31. package/dist/box/index.js.map +1 -1
  32. package/dist/box/index.mjs +4 -5
  33. package/dist/breadcrumbs/breadcrumbs.d.ts +33 -2
  34. package/dist/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  35. package/dist/breadcrumbs/index.d.ts +3 -2
  36. package/dist/breadcrumbs/index.d.ts.map +1 -0
  37. package/dist/button/button.d.ts +33 -3
  38. package/dist/button/button.d.ts.map +1 -0
  39. package/dist/button/index.d.ts +3 -3
  40. package/dist/button/index.d.ts.map +1 -0
  41. package/dist/card/card.d.ts +69 -12
  42. package/dist/card/card.d.ts.map +1 -0
  43. package/dist/card/card.js +17 -6
  44. package/dist/card/card.js.map +1 -1
  45. package/dist/card/card.mjs +1 -1
  46. package/dist/card/index.d.ts +3 -12
  47. package/dist/card/index.d.ts.map +1 -0
  48. package/dist/card/index.js +18 -19
  49. package/dist/card/index.js.map +1 -1
  50. package/dist/card/index.mjs +4 -5
  51. package/dist/{chunk-6R7AXKBR.mjs → chunk-35TXKAUH.mjs} +2 -2
  52. package/dist/chunk-35TXKAUH.mjs.map +1 -0
  53. package/dist/{chunk-XC3UHH2U.mjs → chunk-3WVRY6CC.mjs} +4 -4
  54. package/dist/{chunk-XC3UHH2U.mjs.map → chunk-3WVRY6CC.mjs.map} +1 -1
  55. package/dist/{chunk-67TP3E2D.mjs → chunk-6FBPKLWB.mjs} +3 -3
  56. package/dist/chunk-6FBPKLWB.mjs.map +1 -0
  57. package/dist/chunk-7YWW46R3.mjs +1 -0
  58. package/dist/{chunk-ENKVTAJB.mjs → chunk-AJWSQEDP.mjs} +18 -17
  59. package/dist/chunk-AJWSQEDP.mjs.map +1 -0
  60. package/dist/chunk-ARHJZUZG.mjs +1 -0
  61. package/dist/{chunk-4WQWU5TL.mjs → chunk-AXQCREUJ.mjs} +2 -2
  62. package/dist/chunk-AXQCREUJ.mjs.map +1 -0
  63. package/dist/chunk-BCFV6VOE.mjs +1 -0
  64. package/dist/{chunk-F2C3KZFX.mjs → chunk-BVPSZ3JI.mjs} +2 -2
  65. package/dist/chunk-BVPSZ3JI.mjs.map +1 -0
  66. package/dist/{chunk-7JRS4WEB.mjs → chunk-C34HEQXO.mjs} +33 -29
  67. package/dist/chunk-C34HEQXO.mjs.map +1 -0
  68. package/dist/chunk-CYDWEPFL.mjs +1 -0
  69. package/dist/{chunk-PLXB3TNA.mjs → chunk-D7QPJIUZ.mjs} +5 -5
  70. package/dist/{chunk-PLXB3TNA.mjs.map → chunk-D7QPJIUZ.mjs.map} +1 -1
  71. package/dist/{chunk-GSJPTZT3.mjs → chunk-FC4CEI2V.mjs} +34 -19
  72. package/dist/chunk-FC4CEI2V.mjs.map +1 -0
  73. package/dist/chunk-FYFJ75NX.mjs +1 -0
  74. package/dist/chunk-FYFJ75NX.mjs.map +1 -0
  75. package/dist/chunk-G65EYZFQ.mjs +1 -0
  76. package/dist/chunk-G65EYZFQ.mjs.map +1 -0
  77. package/dist/chunk-H3E546OT.mjs +1 -0
  78. package/dist/chunk-H3E546OT.mjs.map +1 -0
  79. package/dist/chunk-HQVL3ZJ2.mjs +1 -0
  80. package/dist/chunk-HQVL3ZJ2.mjs.map +1 -0
  81. package/dist/{chunk-KPGSRU4I.mjs → chunk-M3Y3XOGC.mjs} +13 -1
  82. package/dist/chunk-M3Y3XOGC.mjs.map +1 -0
  83. package/dist/{chunk-CIHZDFSQ.mjs → chunk-NU6OSFAU.mjs} +20 -9
  84. package/dist/chunk-NU6OSFAU.mjs.map +1 -0
  85. package/dist/{chunk-XUWZ4HGD.mjs → chunk-OGZ2NBMH.mjs} +49 -46
  86. package/dist/chunk-OGZ2NBMH.mjs.map +1 -0
  87. package/dist/{chunk-3MQKXNZ6.mjs → chunk-QZZIOBF4.mjs} +13 -1
  88. package/dist/chunk-QZZIOBF4.mjs.map +1 -0
  89. package/dist/chunk-RC76SXBP.mjs +1 -0
  90. package/dist/chunk-RC76SXBP.mjs.map +1 -0
  91. package/dist/{chunk-TQDUBRCZ.mjs → chunk-SQ63E7KM.mjs} +24 -22
  92. package/dist/chunk-SQ63E7KM.mjs.map +1 -0
  93. package/dist/{chunk-DEX36MFK.mjs → chunk-TDXU2IC6.mjs} +3 -4
  94. package/dist/chunk-TDXU2IC6.mjs.map +1 -0
  95. package/dist/{chunk-ES6ISHOV.mjs → chunk-UP3M3NEZ.mjs} +14 -13
  96. package/dist/{chunk-ES6ISHOV.mjs.map → chunk-UP3M3NEZ.mjs.map} +1 -1
  97. package/dist/chunk-ZKMFJZSH.mjs +1 -0
  98. package/dist/chunk-ZKMFJZSH.mjs.map +1 -0
  99. package/dist/description-list/description-list.d.ts +42 -2
  100. package/dist/description-list/description-list.d.ts.map +1 -0
  101. package/dist/description-list/index.d.ts +3 -2
  102. package/dist/description-list/index.d.ts.map +1 -0
  103. package/dist/footer/footer.d.ts +67 -7
  104. package/dist/footer/footer.d.ts.map +1 -0
  105. package/dist/footer/footer.js +79 -76
  106. package/dist/footer/footer.js.map +1 -1
  107. package/dist/footer/footer.mjs +4 -4
  108. package/dist/footer/index.d.ts +3 -7
  109. package/dist/footer/index.d.ts.map +1 -0
  110. package/dist/footer/index.js +80 -84
  111. package/dist/footer/index.js.map +1 -1
  112. package/dist/footer/index.mjs +7 -8
  113. package/dist/form/checkbox/checkbox.d.ts +28 -2
  114. package/dist/form/checkbox/checkbox.d.ts.map +1 -0
  115. package/dist/form/checkbox/index.d.ts +3 -2
  116. package/dist/form/checkbox/index.d.ts.map +1 -0
  117. package/dist/form/date-picker/date-picker.d.ts +33 -2
  118. package/dist/form/date-picker/date-picker.d.ts.map +1 -0
  119. package/dist/form/date-picker/date-picker.js +1 -1
  120. package/dist/form/date-picker/date-picker.js.map +1 -1
  121. package/dist/form/date-picker/date-picker.mjs +2 -2
  122. package/dist/form/date-picker/index.d.ts +3 -2
  123. package/dist/form/date-picker/index.d.ts.map +1 -0
  124. package/dist/form/date-picker/index.js +1 -1
  125. package/dist/form/date-picker/index.js.map +1 -1
  126. package/dist/form/date-picker/index.mjs +2 -2
  127. package/dist/form/error-message/error-message.d.ts +8 -2
  128. package/dist/form/error-message/error-message.d.ts.map +1 -0
  129. package/dist/form/error-message/index.d.ts +3 -2
  130. package/dist/form/error-message/index.d.ts.map +1 -0
  131. package/dist/form/fieldset/fieldset.d.ts +22 -3
  132. package/dist/form/fieldset/fieldset.d.ts.map +1 -0
  133. package/dist/form/fieldset/index.d.ts +3 -3
  134. package/dist/form/fieldset/index.d.ts.map +1 -0
  135. package/dist/form/index.d.ts +9 -20
  136. package/dist/form/index.d.ts.map +1 -0
  137. package/dist/form/index.js +1 -1
  138. package/dist/form/index.js.map +1 -1
  139. package/dist/form/index.mjs +2 -2
  140. package/dist/form/input/index.d.ts +3 -2
  141. package/dist/form/input/index.d.ts.map +1 -0
  142. package/dist/form/input/input.d.ts +5 -2
  143. package/dist/form/input/input.d.ts.map +1 -0
  144. package/dist/form/input-group/index.d.ts +3 -2
  145. package/dist/form/input-group/index.d.ts.map +1 -0
  146. package/dist/form/input-group/input-group.d.ts +27 -2
  147. package/dist/form/input-group/input-group.d.ts.map +1 -0
  148. package/dist/form/radiobutton/index.d.ts +5 -5
  149. package/dist/form/radiobutton/index.d.ts.map +1 -0
  150. package/dist/form/radiobutton/radiobutton.d.ts +17 -2
  151. package/dist/form/radiobutton/radiobutton.d.ts.map +1 -0
  152. package/dist/form/radiobutton/radiogroup.d.ts +24 -3
  153. package/dist/form/radiobutton/radiogroup.d.ts.map +1 -0
  154. package/dist/form/select/index.d.ts +3 -2
  155. package/dist/form/select/index.d.ts.map +1 -0
  156. package/dist/form/select/select.d.ts +9 -2
  157. package/dist/form/select/select.d.ts.map +1 -0
  158. package/dist/form/textarea/index.d.ts +3 -2
  159. package/dist/form/textarea/index.d.ts.map +1 -0
  160. package/dist/form/textarea/textarea.d.ts +5 -2
  161. package/dist/form/textarea/textarea.d.ts.map +1 -0
  162. package/dist/help-text/help-text.d.ts +51 -1
  163. package/dist/help-text/help-text.d.ts.map +1 -0
  164. package/dist/help-text/help-text.js +17 -20
  165. package/dist/help-text/help-text.js.map +1 -1
  166. package/dist/help-text/help-text.mjs +3 -3
  167. package/dist/help-text/index.d.ts +3 -1
  168. package/dist/help-text/index.d.ts.map +1 -0
  169. package/dist/help-text/index.js +17 -20
  170. package/dist/help-text/index.js.map +1 -1
  171. package/dist/help-text/index.mjs +3 -3
  172. package/dist/index-no-css.d.ts +26 -128
  173. package/dist/index-no-css.d.ts.map +1 -0
  174. package/dist/index-no-css.js +385 -398
  175. package/dist/index-no-css.js.map +1 -1
  176. package/dist/index-no-css.mjs +70 -68
  177. package/dist/index.d.ts +11 -128
  178. package/dist/index.d.ts.map +1 -0
  179. package/dist/index.js +385 -398
  180. package/dist/index.js.map +1 -1
  181. package/dist/index.mjs +70 -68
  182. package/dist/index.mjs.map +1 -1
  183. package/dist/layout/container/container.d.ts +23 -2
  184. package/dist/layout/container/container.d.ts.map +1 -0
  185. package/dist/layout/grid/grid.d.ts +101 -4
  186. package/dist/layout/grid/grid.d.ts.map +1 -0
  187. package/dist/layout/grid/grid.js +11 -10
  188. package/dist/layout/grid/grid.js.map +1 -1
  189. package/dist/layout/grid/grid.mjs +1 -1
  190. package/dist/layout/grid/index.d.ts +3 -4
  191. package/dist/layout/grid/index.d.ts.map +1 -0
  192. package/dist/layout/grid/index.js +12 -15
  193. package/dist/layout/grid/index.js.map +1 -1
  194. package/dist/layout/grid/index.mjs +4 -5
  195. package/dist/layout/index.d.ts +4 -10
  196. package/dist/layout/index.d.ts.map +1 -0
  197. package/dist/layout/index.js +12 -15
  198. package/dist/layout/index.js.map +1 -1
  199. package/dist/layout/index.mjs +4 -5
  200. package/dist/layout/responsive.d.ts +10 -2
  201. package/dist/layout/responsive.d.ts.map +1 -0
  202. package/dist/layout/spacing.d.ts +33 -3
  203. package/dist/layout/spacing.d.ts.map +1 -0
  204. package/dist/layout/stack/index.d.ts +3 -4
  205. package/dist/layout/stack/index.d.ts.map +1 -0
  206. package/dist/layout/stack/stack.d.ts +62 -4
  207. package/dist/layout/stack/stack.d.ts.map +1 -0
  208. package/dist/link/index.d.ts +3 -2
  209. package/dist/link/index.d.ts.map +1 -0
  210. package/dist/link/link.d.ts +20 -2
  211. package/dist/link/link.d.ts.map +1 -0
  212. package/dist/list/index.d.ts +5 -5
  213. package/dist/list/index.d.ts.map +1 -0
  214. package/dist/list/link-list.d.ts +12 -2
  215. package/dist/list/link-list.d.ts.map +1 -0
  216. package/dist/list/list.d.ts +40 -3
  217. package/dist/list/list.d.ts.map +1 -0
  218. package/dist/message/index.d.ts +3 -3
  219. package/dist/message/index.d.ts.map +1 -0
  220. package/dist/message/index.js +36 -38
  221. package/dist/message/index.js.map +1 -1
  222. package/dist/message/index.mjs +5 -6
  223. package/dist/message/message.d.ts +36 -4
  224. package/dist/message/message.d.ts.map +1 -0
  225. package/dist/message/message.js +35 -32
  226. package/dist/message/message.js.map +1 -1
  227. package/dist/message/message.mjs +2 -2
  228. package/dist/modal/index.d.ts +3 -5
  229. package/dist/modal/index.d.ts.map +1 -0
  230. package/dist/modal/index.js +61 -63
  231. package/dist/modal/index.js.map +1 -1
  232. package/dist/modal/index.mjs +6 -7
  233. package/dist/modal/modal.d.ts +81 -5
  234. package/dist/modal/modal.d.ts.map +1 -0
  235. package/dist/modal/modal.js +60 -56
  236. package/dist/modal/modal.js.map +1 -1
  237. package/dist/modal/modal.mjs +3 -3
  238. package/dist/navbar/icons.d.ts +3 -2
  239. package/dist/navbar/icons.d.ts.map +1 -0
  240. package/dist/navbar/index.d.ts +4 -13
  241. package/dist/navbar/index.d.ts.map +1 -0
  242. package/dist/navbar/index.js +145 -146
  243. package/dist/navbar/index.js.map +1 -1
  244. package/dist/navbar/index.mjs +6 -7
  245. package/dist/navbar/navbar-expandable-menu.d.ts +35 -7
  246. package/dist/navbar/navbar-expandable-menu.d.ts.map +1 -0
  247. package/dist/navbar/navbar-expandable-menu.js +1 -1
  248. package/dist/navbar/navbar-expandable-menu.js.map +1 -1
  249. package/dist/navbar/navbar-expandable-menu.mjs +2 -2
  250. package/dist/navbar/navbar.d.ts +130 -9
  251. package/dist/navbar/navbar.d.ts.map +1 -0
  252. package/dist/navbar/navbar.js +237 -28
  253. package/dist/navbar/navbar.js.map +1 -1
  254. package/dist/navbar/navbar.mjs +4 -1
  255. package/dist/show-more/index.d.ts +5 -4
  256. package/dist/show-more/index.d.ts.map +1 -0
  257. package/dist/show-more/index.js +3 -3
  258. package/dist/show-more/index.js.map +1 -1
  259. package/dist/show-more/index.mjs +2 -2
  260. package/dist/show-more/show-more.d.ts +42 -2
  261. package/dist/show-more/show-more.d.ts.map +1 -0
  262. package/dist/skeleton/index.d.ts +3 -2
  263. package/dist/skeleton/index.d.ts.map +1 -0
  264. package/dist/skeleton/skeleton.d.ts +67 -2
  265. package/dist/skeleton/skeleton.d.ts.map +1 -0
  266. package/dist/step-indicator/index.d.ts +3 -1
  267. package/dist/step-indicator/index.d.ts.map +1 -0
  268. package/dist/step-indicator/step-indicator.d.ts +36 -1
  269. package/dist/step-indicator/step-indicator.d.ts.map +1 -0
  270. package/dist/styled-html/index.d.ts +3 -2
  271. package/dist/styled-html/index.d.ts.map +1 -0
  272. package/dist/styled-html/styled-html.d.ts +36 -2
  273. package/dist/styled-html/styled-html.d.ts.map +1 -0
  274. package/dist/table/index.d.ts +3 -1
  275. package/dist/table/index.d.ts.map +1 -0
  276. package/dist/table/table.d.ts +25 -1
  277. package/dist/table/table.d.ts.map +1 -0
  278. package/dist/tabs/context.d.ts +8 -3
  279. package/dist/tabs/context.d.ts.map +1 -0
  280. package/dist/tabs/index.d.ts +7 -10
  281. package/dist/tabs/index.d.ts.map +1 -0
  282. package/dist/tabs/index.js +35 -38
  283. package/dist/tabs/index.js.map +1 -1
  284. package/dist/tabs/index.mjs +6 -6
  285. package/dist/tabs/tabs-content.d.ts +26 -4
  286. package/dist/tabs/tabs-content.d.ts.map +1 -0
  287. package/dist/tabs/tabs-list.d.ts +21 -4
  288. package/dist/tabs/tabs-list.d.ts.map +1 -0
  289. package/dist/tabs/tabs-list.js +1 -1
  290. package/dist/tabs/tabs-list.js.map +1 -1
  291. package/dist/tabs/tabs-list.mjs +2 -2
  292. package/dist/tabs/tabs.d.ts +26 -2
  293. package/dist/tabs/tabs.d.ts.map +1 -0
  294. package/dist/tabs/tabs.js +205 -8
  295. package/dist/tabs/tabs.js.map +1 -1
  296. package/dist/tabs/tabs.mjs +4 -1
  297. package/dist/text/index.d.ts +4 -2
  298. package/dist/text/index.d.ts.map +1 -0
  299. package/dist/text/text.d.ts +58 -2
  300. package/dist/text/text.d.ts.map +1 -0
  301. package/dist/utils/auto-animate-height.d.ts +33 -0
  302. package/dist/utils/auto-animate-height.d.ts.map +1 -0
  303. package/dist/{utilities → utils}/auto-animate-height.js +3 -3
  304. package/dist/utils/auto-animate-height.js.map +1 -0
  305. package/dist/utils/auto-animate-height.mjs +9 -0
  306. package/dist/utils/auto-animate-height.mjs.map +1 -0
  307. package/dist/utils/index.d.ts +4 -0
  308. package/dist/utils/index.d.ts.map +1 -0
  309. package/dist/{utilities → utils}/index.js +81 -11
  310. package/dist/utils/index.js.map +1 -0
  311. package/dist/utils/index.mjs +19 -0
  312. package/dist/utils/index.mjs.map +1 -0
  313. package/dist/utils/utils.d.ts +24 -0
  314. package/dist/utils/utils.d.ts.map +1 -0
  315. package/dist/{utils.js → utils/utils.js} +1 -3
  316. package/dist/utils/utils.js.map +1 -0
  317. package/dist/utils/utils.mjs +14 -0
  318. package/dist/utils/utils.mjs.map +1 -0
  319. package/dist/warning-banner/index.d.ts +3 -2
  320. package/dist/warning-banner/index.d.ts.map +1 -0
  321. package/dist/warning-banner/index.js +16 -19
  322. package/dist/warning-banner/index.js.map +1 -1
  323. package/dist/warning-banner/index.mjs +3 -3
  324. package/dist/warning-banner/warning-banner.d.ts +8 -2
  325. package/dist/warning-banner/warning-banner.d.ts.map +1 -0
  326. package/dist/warning-banner/warning-banner.js +16 -19
  327. package/dist/warning-banner/warning-banner.js.map +1 -1
  328. package/dist/warning-banner/warning-banner.mjs +3 -3
  329. package/package.json +12 -8
  330. package/src/accordion/accordion-content.tsx +31 -0
  331. package/src/accordion/accordion-header.tsx +36 -0
  332. package/src/accordion/accordion-item.tsx +62 -0
  333. package/src/accordion/accordion.stories.tsx +154 -0
  334. package/src/accordion/accordion.tsx +68 -0
  335. package/src/accordion/context.ts +8 -0
  336. package/src/accordion/index.tsx +9 -0
  337. package/src/badge/badge.stories.tsx +44 -0
  338. package/src/badge/badge.tsx +63 -0
  339. package/src/badge/index.tsx +3 -0
  340. package/src/box/box.stories.tsx +112 -0
  341. package/src/box/box.tsx +122 -0
  342. package/src/box/index.tsx +3 -0
  343. package/src/breadcrumbs/breadcrumbs.stories.tsx +50 -0
  344. package/src/breadcrumbs/breadcrumbs.tsx +47 -0
  345. package/src/breadcrumbs/index.tsx +3 -0
  346. package/src/button/button.stories.tsx +104 -0
  347. package/src/button/button.tsx +87 -0
  348. package/src/button/index.tsx +3 -0
  349. package/src/card/card.stories.tsx +82 -0
  350. package/src/card/card.tsx +222 -0
  351. package/src/card/index.tsx +14 -0
  352. package/src/description-list/description-list.stories.tsx +95 -0
  353. package/src/description-list/description-list.tsx +61 -0
  354. package/src/description-list/index.tsx +2 -0
  355. package/src/footer/footer.tsx +169 -0
  356. package/src/footer/index.tsx +9 -0
  357. package/src/form/checkbox/checkbox.stories.tsx +104 -0
  358. package/src/form/checkbox/checkbox.tsx +82 -0
  359. package/src/form/checkbox/index.tsx +2 -0
  360. package/src/form/date-picker/date-picker.stories.tsx +27 -0
  361. package/src/form/date-picker/date-picker.tsx +85 -0
  362. package/src/form/date-picker/index.tsx +2 -0
  363. package/src/form/error-message/error-message.stories.tsx +19 -0
  364. package/src/form/error-message/error-message.tsx +25 -0
  365. package/src/form/error-message/index.tsx +2 -0
  366. package/src/form/fieldset/fieldset.stories.tsx +86 -0
  367. package/src/form/fieldset/fieldset.tsx +64 -0
  368. package/src/form/fieldset/index.tsx +2 -0
  369. package/src/form/index.tsx +8 -0
  370. package/src/form/input/index.tsx +2 -0
  371. package/src/form/input/input.stories.tsx +166 -0
  372. package/src/form/input/input.tsx +30 -0
  373. package/src/form/input-group/index.tsx +2 -0
  374. package/src/form/input-group/input-group.tsx +106 -0
  375. package/src/form/radiobutton/index.tsx +4 -0
  376. package/src/form/radiobutton/radiobutton.stories.tsx +93 -0
  377. package/src/form/radiobutton/radiobutton.tsx +85 -0
  378. package/src/form/radiobutton/radiogroup.stories.tsx +39 -0
  379. package/src/form/radiobutton/radiogroup.tsx +52 -0
  380. package/src/form/select/index.tsx +2 -0
  381. package/src/form/select/select.stories.tsx +93 -0
  382. package/src/form/select/select.tsx +33 -0
  383. package/src/form/textarea/index.tsx +2 -0
  384. package/src/form/textarea/textarea.stories.tsx +106 -0
  385. package/src/form/textarea/textarea.tsx +33 -0
  386. package/src/help-text/help-text.tsx +98 -0
  387. package/src/help-text/index.ts +2 -0
  388. package/src/index-no-css.tsx +25 -0
  389. package/src/index.tsx +11 -0
  390. package/src/layout/container/container.stories.tsx +62 -0
  391. package/src/layout/container/container.tsx +47 -0
  392. package/src/layout/grid/grid.tsx +163 -0
  393. package/src/layout/grid/index.tsx +3 -0
  394. package/src/layout/index.tsx +3 -0
  395. package/src/layout/responsive.ts +26 -0
  396. package/src/layout/spacing.ts +37 -0
  397. package/src/layout/stack/index.tsx +2 -0
  398. package/src/layout/stack/stack.tsx +128 -0
  399. package/src/link/index.tsx +3 -0
  400. package/src/link/link.stories.tsx +64 -0
  401. package/src/link/link.tsx +46 -0
  402. package/src/list/index.tsx +5 -0
  403. package/src/list/link-list.stories.tsx +38 -0
  404. package/src/list/link-list.tsx +26 -0
  405. package/src/list/list.stories.tsx +71 -0
  406. package/src/list/list.tsx +65 -0
  407. package/src/message/index.tsx +2 -0
  408. package/src/message/message.stories.tsx +93 -0
  409. package/src/message/message.tsx +89 -0
  410. package/src/modal/index.tsx +3 -0
  411. package/src/modal/modal.stories.tsx +147 -0
  412. package/src/modal/modal.tsx +199 -0
  413. package/src/navbar/icons.tsx +21 -0
  414. package/src/navbar/index.tsx +18 -0
  415. package/src/navbar/navbar-expandable-menu.tsx +176 -0
  416. package/src/navbar/navbar.stories.tsx +99 -0
  417. package/src/navbar/navbar.tsx +264 -0
  418. package/src/show-more/index.ts +5 -0
  419. package/src/show-more/show-more.stories.tsx +119 -0
  420. package/src/show-more/show-more.tsx +66 -0
  421. package/src/skeleton/index.ts +2 -0
  422. package/src/skeleton/skeleton.stories.tsx +152 -0
  423. package/src/skeleton/skeleton.tsx +114 -0
  424. package/src/step-indicator/index.ts +2 -0
  425. package/src/step-indicator/step-indicator.stories.tsx +50 -0
  426. package/src/step-indicator/step-indicator.tsx +116 -0
  427. package/src/styled-html/index.ts +2 -0
  428. package/src/styled-html/styled-html.stories.tsx +189 -0
  429. package/src/styled-html/styled-html.tsx +59 -0
  430. package/src/table/index.ts +2 -0
  431. package/src/table/table.tsx +59 -0
  432. package/src/tabs/context.ts +18 -0
  433. package/src/tabs/index.tsx +7 -0
  434. package/src/tabs/tabs-content.tsx +62 -0
  435. package/src/tabs/tabs-list.tsx +129 -0
  436. package/src/tabs/tabs.stories.tsx +138 -0
  437. package/src/tabs/tabs.tsx +50 -0
  438. package/src/text/index.tsx +4 -0
  439. package/src/text/text.stories.tsx +112 -0
  440. package/src/text/text.tsx +129 -0
  441. package/src/utils/auto-animate-height.tsx +139 -0
  442. package/src/utils/index.ts +4 -0
  443. package/src/utils/utils.ts +110 -0
  444. package/src/warning-banner/index.tsx +2 -0
  445. package/src/warning-banner/warning-banner.stories.tsx +43 -0
  446. package/src/warning-banner/warning-banner.tsx +79 -0
  447. package/dist/_tsup-dts-rollup.d.mts +0 -2600
  448. package/dist/_tsup-dts-rollup.d.ts +0 -2600
  449. package/dist/accordion/accordion-content.d.mts +0 -2
  450. package/dist/accordion/accordion-header.d.mts +0 -2
  451. package/dist/accordion/accordion-item.d.mts +0 -3
  452. package/dist/accordion/accordion.d.mts +0 -2
  453. package/dist/accordion/context.d.mts +0 -2
  454. package/dist/accordion/index.d.mts +0 -9
  455. package/dist/badge/badge.d.mts +0 -5
  456. package/dist/badge/index.d.mts +0 -6
  457. package/dist/box/box.d.mts +0 -4
  458. package/dist/box/index.d.mts +0 -4
  459. package/dist/breadcrumbs/breadcrumbs.d.mts +0 -2
  460. package/dist/breadcrumbs/index.d.mts +0 -2
  461. package/dist/button/button.d.mts +0 -3
  462. package/dist/button/index.d.mts +0 -3
  463. package/dist/card/card.d.mts +0 -12
  464. package/dist/card/index.d.mts +0 -12
  465. package/dist/chunk-3MQKXNZ6.mjs.map +0 -1
  466. package/dist/chunk-3NDUE23B.mjs +0 -19
  467. package/dist/chunk-3NDUE23B.mjs.map +0 -1
  468. package/dist/chunk-3NL3TOZF.mjs +0 -13
  469. package/dist/chunk-3NL3TOZF.mjs.map +0 -1
  470. package/dist/chunk-3ZFEUABU.mjs +0 -23
  471. package/dist/chunk-3ZFEUABU.mjs.map +0 -1
  472. package/dist/chunk-4WQWU5TL.mjs.map +0 -1
  473. package/dist/chunk-67TP3E2D.mjs.map +0 -1
  474. package/dist/chunk-6R7AXKBR.mjs.map +0 -1
  475. package/dist/chunk-722MZPXO.mjs +0 -13
  476. package/dist/chunk-722MZPXO.mjs.map +0 -1
  477. package/dist/chunk-7JRS4WEB.mjs.map +0 -1
  478. package/dist/chunk-CIHZDFSQ.mjs.map +0 -1
  479. package/dist/chunk-CYEYGPRH.mjs +0 -17
  480. package/dist/chunk-CYEYGPRH.mjs.map +0 -1
  481. package/dist/chunk-DEX36MFK.mjs.map +0 -1
  482. package/dist/chunk-DZNH5JHY.mjs +0 -1
  483. package/dist/chunk-ENKVTAJB.mjs.map +0 -1
  484. package/dist/chunk-F2C3KZFX.mjs.map +0 -1
  485. package/dist/chunk-GSJPTZT3.mjs.map +0 -1
  486. package/dist/chunk-IJAX6APL.mjs +0 -23
  487. package/dist/chunk-IJAX6APL.mjs.map +0 -1
  488. package/dist/chunk-IKJJWKXM.mjs +0 -15
  489. package/dist/chunk-IKJJWKXM.mjs.map +0 -1
  490. package/dist/chunk-KPGSRU4I.mjs.map +0 -1
  491. package/dist/chunk-PT5H3QV6.mjs +0 -29
  492. package/dist/chunk-PT5H3QV6.mjs.map +0 -1
  493. package/dist/chunk-TQDUBRCZ.mjs.map +0 -1
  494. package/dist/chunk-V6UKKHKD.mjs +0 -33
  495. package/dist/chunk-V6UKKHKD.mjs.map +0 -1
  496. package/dist/chunk-XUWZ4HGD.mjs.map +0 -1
  497. package/dist/description-list/description-list.d.mts +0 -2
  498. package/dist/description-list/index.d.mts +0 -2
  499. package/dist/footer/footer.d.mts +0 -7
  500. package/dist/footer/index.d.mts +0 -7
  501. package/dist/form/checkbox/checkbox.d.mts +0 -2
  502. package/dist/form/checkbox/index.d.mts +0 -2
  503. package/dist/form/date-picker/date-picker.d.mts +0 -2
  504. package/dist/form/date-picker/index.d.mts +0 -2
  505. package/dist/form/error-message/error-message.d.mts +0 -2
  506. package/dist/form/error-message/index.d.mts +0 -2
  507. package/dist/form/fieldset/fieldset.d.mts +0 -3
  508. package/dist/form/fieldset/index.d.mts +0 -3
  509. package/dist/form/index.d.mts +0 -20
  510. package/dist/form/input/index.d.mts +0 -2
  511. package/dist/form/input/input.d.mts +0 -2
  512. package/dist/form/input-group/index.d.mts +0 -2
  513. package/dist/form/input-group/input-group.d.mts +0 -2
  514. package/dist/form/radiobutton/index.d.mts +0 -5
  515. package/dist/form/radiobutton/radiobutton.d.mts +0 -2
  516. package/dist/form/radiobutton/radiogroup.d.mts +0 -3
  517. package/dist/form/select/index.d.mts +0 -2
  518. package/dist/form/select/select.d.mts +0 -2
  519. package/dist/form/textarea/index.d.mts +0 -2
  520. package/dist/form/textarea/textarea.d.mts +0 -2
  521. package/dist/help-text/help-text.d.mts +0 -1
  522. package/dist/help-text/index.d.mts +0 -1
  523. package/dist/index-no-css.d.mts +0 -128
  524. package/dist/index.d.mts +0 -128
  525. package/dist/layout/container/container.d.mts +0 -2
  526. package/dist/layout/grid/grid.d.mts +0 -4
  527. package/dist/layout/grid/index.d.mts +0 -4
  528. package/dist/layout/index.d.mts +0 -10
  529. package/dist/layout/responsive.d.mts +0 -2
  530. package/dist/layout/spacing.d.mts +0 -3
  531. package/dist/layout/stack/index.d.mts +0 -4
  532. package/dist/layout/stack/stack.d.mts +0 -4
  533. package/dist/link/index.d.mts +0 -2
  534. package/dist/link/link.d.mts +0 -2
  535. package/dist/list/index.d.mts +0 -5
  536. package/dist/list/link-list.d.mts +0 -2
  537. package/dist/list/list.d.mts +0 -3
  538. package/dist/message/index.d.mts +0 -3
  539. package/dist/message/message.d.mts +0 -4
  540. package/dist/modal/index.d.mts +0 -5
  541. package/dist/modal/modal.d.mts +0 -5
  542. package/dist/navbar/icons.d.mts +0 -2
  543. package/dist/navbar/index.d.mts +0 -13
  544. package/dist/navbar/navbar-expandable-menu.d.mts +0 -7
  545. package/dist/navbar/navbar.d.mts +0 -9
  546. package/dist/show-more/index.d.mts +0 -4
  547. package/dist/show-more/show-more.d.mts +0 -2
  548. package/dist/skeleton/index.d.mts +0 -2
  549. package/dist/skeleton/skeleton.d.mts +0 -2
  550. package/dist/step-indicator/index.d.mts +0 -1
  551. package/dist/step-indicator/step-indicator.d.mts +0 -1
  552. package/dist/styled-html/index.d.mts +0 -2
  553. package/dist/styled-html/styled-html.d.mts +0 -2
  554. package/dist/table/index.d.mts +0 -1
  555. package/dist/table/table.d.mts +0 -1
  556. package/dist/tabs/context.d.mts +0 -3
  557. package/dist/tabs/index.d.mts +0 -10
  558. package/dist/tabs/tabs-content.d.mts +0 -4
  559. package/dist/tabs/tabs-list.d.mts +0 -4
  560. package/dist/tabs/tabs.d.mts +0 -2
  561. package/dist/text/index.d.mts +0 -2
  562. package/dist/text/text.d.mts +0 -2
  563. package/dist/utilities/auto-animate-height.d.mts +0 -2
  564. package/dist/utilities/auto-animate-height.d.ts +0 -2
  565. package/dist/utilities/auto-animate-height.js.map +0 -1
  566. package/dist/utilities/auto-animate-height.mjs +0 -9
  567. package/dist/utilities/index.d.mts +0 -2
  568. package/dist/utilities/index.d.ts +0 -2
  569. package/dist/utilities/index.js.map +0 -1
  570. package/dist/utilities/index.mjs +0 -10
  571. package/dist/utils.d.mts +0 -5
  572. package/dist/utils.d.ts +0 -5
  573. package/dist/utils.js.map +0 -1
  574. package/dist/utils.mjs +0 -16
  575. package/dist/warning-banner/index.d.mts +0 -2
  576. package/dist/warning-banner/warning-banner.d.mts +0 -2
  577. /package/dist/{chunk-DZNH5JHY.mjs.map → chunk-7YWW46R3.mjs.map} +0 -0
  578. /package/dist/{utilities/auto-animate-height.mjs.map → chunk-ARHJZUZG.mjs.map} +0 -0
  579. /package/dist/{utilities/index.mjs.map → chunk-BCFV6VOE.mjs.map} +0 -0
  580. /package/dist/{utils.mjs.map → chunk-CYDWEPFL.mjs.map} +0 -0
@@ -0,0 +1,33 @@
1
+ import { forwardRef, type ReactNode , type SelectHTMLAttributes } from "react";
2
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
3
+ import { InputGroup } from "../input-group";
4
+ import type { InputGroupProps } from "../input-group";
5
+
6
+ export type SelectProps = Omit<
7
+ InputGroupProps & SelectHTMLAttributes<HTMLSelectElement>,
8
+ "readOnly" | "children"
9
+ > & { children: ReactNode };
10
+
11
+ export const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(
12
+ { className, variant, errorMessage, labelProps, label, id, style, disabled, children, ...rest },
13
+ ref,
14
+ ) {
15
+ return (
16
+ <InputGroup
17
+ className={clsx("hds-select", className as undefined)}
18
+ disabled={disabled}
19
+ errorMessage={errorMessage}
20
+ id={id}
21
+ label={label}
22
+ labelProps={labelProps}
23
+ style={style}
24
+ variant={variant}
25
+ >
26
+ <select {...rest} disabled={disabled} ref={ref}>
27
+ {children}
28
+ </select>
29
+ </InputGroup>
30
+ );
31
+ });
32
+
33
+ Select.displayName = "Select";
@@ -0,0 +1,2 @@
1
+ export { Textarea } from "./textarea";
2
+ export type * from "./textarea";
@@ -0,0 +1,106 @@
1
+ /* eslint-disable import/no-extraneous-dependencies -- storybook story */
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import { Textarea } from ".";
4
+
5
+ const meta: Meta<typeof Textarea> = {
6
+ title: "Form/Textarea",
7
+ component: Textarea,
8
+ };
9
+
10
+ export default meta;
11
+
12
+ type Story = StoryObj<typeof Textarea>;
13
+
14
+ export const PlainTextarea: Story = {
15
+ args: {
16
+ label: "Some kind of textarea",
17
+ placeholder: "I am a placeholder",
18
+ errorMessage: "",
19
+ readOnly: false,
20
+ variant: "default",
21
+ },
22
+ argTypes: {
23
+ variant: { control: "inline-radio", options: ["default", "white"] },
24
+ },
25
+ };
26
+
27
+ export const PlainTextareaWithError: Story = {
28
+ args: {
29
+ label: "Some kind of textarea with error",
30
+ errorMessage: "This is invalid",
31
+ placeholder: "I am a placeholder",
32
+ },
33
+ };
34
+
35
+ export const ReadonlyTextarea: Story = {
36
+ args: {
37
+ label: "Some kind of readonly textarea",
38
+ readOnly: true,
39
+ value: "This is a read-only value",
40
+ },
41
+ };
42
+
43
+ export const ReadonlyTextareaWithError: Story = {
44
+ args: {
45
+ label: "Some kind of readonly textarea",
46
+ readOnly: true,
47
+ value: "This is a read-only value",
48
+ errorMessage: "This is invalid",
49
+ },
50
+ };
51
+
52
+ export const WhiteTextarea: Story = {
53
+ args: {
54
+ label: "Some kind of white textarea",
55
+ variant: "white",
56
+ placeholder: "I am a placeholder",
57
+ },
58
+ render: (props) => (
59
+ <div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
60
+ <Textarea {...props} />
61
+ </div>
62
+ ),
63
+ };
64
+
65
+ export const WhiteTextareaWithError: Story = {
66
+ args: {
67
+ label: "Some kind of white textarea",
68
+ variant: "white",
69
+ placeholder: "I am a placeholder",
70
+ errorMessage: "This is invalid",
71
+ },
72
+ render: (props) => (
73
+ <div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
74
+ <Textarea {...props} />
75
+ </div>
76
+ ),
77
+ };
78
+
79
+ export const WhiteReadonlyTextarea: Story = {
80
+ args: {
81
+ label: "Some kind of readonly textarea",
82
+ variant: "white",
83
+ readOnly: true,
84
+ value: "This is a read-only value",
85
+ },
86
+ render: (props) => (
87
+ <div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
88
+ <Textarea {...props} />
89
+ </div>
90
+ ),
91
+ };
92
+
93
+ export const WhiteReadonlyTextareaWithError: Story = {
94
+ args: {
95
+ label: "Some kind of readonly textarea",
96
+ variant: "white",
97
+ readOnly: true,
98
+ value: "This is a read-only value",
99
+ errorMessage: "This is invalid",
100
+ },
101
+ render: (props) => (
102
+ <div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
103
+ <Textarea {...props} />
104
+ </div>
105
+ ),
106
+ };
@@ -0,0 +1,33 @@
1
+ import { forwardRef } from "react";
2
+ import type { TextareaHTMLAttributes } from "react";
3
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
4
+ import { InputGroup } from "../input-group";
5
+ import type { InputGroupProps } from "../input-group";
6
+
7
+ export type TextareaProps = Omit<
8
+ InputGroupProps & TextareaHTMLAttributes<HTMLTextAreaElement>,
9
+ "children"
10
+ >;
11
+
12
+ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(
13
+ { className, variant, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },
14
+ ref,
15
+ ) {
16
+ return (
17
+ <InputGroup
18
+ className={clsx("hds-textarea", className as undefined)}
19
+ disabled={disabled}
20
+ errorMessage={errorMessage}
21
+ id={id}
22
+ label={label}
23
+ labelProps={labelProps}
24
+ readOnly={readOnly}
25
+ style={style}
26
+ variant={variant}
27
+ >
28
+ <textarea {...rest} disabled={disabled} readOnly={readOnly} ref={ref} />
29
+ </InputGroup>
30
+ );
31
+ });
32
+
33
+ Textarea.displayName = "Textarea";
@@ -0,0 +1,98 @@
1
+ import * as Popover from "@radix-ui/react-popover";
2
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
3
+ import { forwardRef } from "react";
4
+ import { Box } from "../box";
5
+
6
+ interface HelpTextProps extends React.HTMLAttributes<HTMLButtonElement> {
7
+ className?: string;
8
+
9
+ /**
10
+ * The content of the help text, often a word or phrase that could use some explanation
11
+ */
12
+ children: React.ReactNode;
13
+
14
+ /**
15
+ * The help text that will be shown when the user clicks the trigger
16
+ */
17
+ helpText: React.ReactNode;
18
+
19
+ /**
20
+ * The title of the help text. Used by screen readers and if the user hover over the help text
21
+ */
22
+ title?: string;
23
+
24
+ /**
25
+ * Props for the `Box` that contains the help text
26
+ */
27
+ boxProps?: React.ComponentProps<typeof Box>;
28
+
29
+ /**
30
+ * The side of the trigger the popover should be attached to
31
+ *
32
+ * @default "top"
33
+ */
34
+ side?: "top" | "right" | "bottom" | "left";
35
+
36
+ /**
37
+ * The alignment of the popover content
38
+ *
39
+ * @default "start"
40
+ */
41
+ align?: "center" | "end" | "start";
42
+ }
43
+
44
+ /**
45
+ * Show a help text for a word or phrase when clicked
46
+ *
47
+ * Useful for providing explanations for domain-specific terms, acronyms or phrases that could do with further elaboration
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * <p>
52
+ * En annen avgjørende faktor for avgifter er om nettbutikken er registrert i{" "}
53
+ * <HelpText helpText={`VOEC er en forkortelse for "VAT on E-commerce" (mva. på e-handel).`}>
54
+ * VOEC
55
+ * </HelpText>
56
+ * </p>
57
+ * ```
58
+ */
59
+ export const HelpText = forwardRef<HTMLButtonElement, HelpTextProps>(
60
+ (
61
+ { children, className, helpText, title, side = "top", align = "start", boxProps, ...rest },
62
+ ref,
63
+ ) => {
64
+ return (
65
+ // NOTE: Using radix's [Popover component](https://www.radix-ui.com/primitives/docs/components/popover)
66
+ // In the future we can use the native popover api, but as of writing, though all browsers support it
67
+ // it's not far enough back to be used in production
68
+ // https://caniuse.com/mdn-html_elements_input_popovertarget
69
+ <Popover.Root>
70
+ <Popover.Trigger asChild>
71
+ <button
72
+ ref={ref}
73
+ className={clsx("hds-help-text-button", className as undefined)}
74
+ title={title}
75
+ type="button"
76
+ {...rest}
77
+ >
78
+ {children}
79
+ </button>
80
+ </Popover.Trigger>
81
+ <Popover.Portal>
82
+ <Popover.Content asChild side={side} align={align}>
83
+ <Box
84
+ {...boxProps}
85
+ className={clsx("hds-help-text-box", boxProps?.className as undefined)}
86
+ >
87
+ <Popover.Close asChild>
88
+ <Box.CloseButton />
89
+ </Popover.Close>
90
+ {helpText}
91
+ </Box>
92
+ </Popover.Content>
93
+ </Popover.Portal>
94
+ </Popover.Root>
95
+ );
96
+ },
97
+ );
98
+ HelpText.displayName = "HelpText";
@@ -0,0 +1,2 @@
1
+ export { HelpText } from "./help-text";
2
+ export type * from "./help-text";
@@ -0,0 +1,25 @@
1
+ export * from "./accordion";
2
+ export * from "./badge";
3
+ export * from "./box";
4
+ export * from "./breadcrumbs";
5
+ export * from "./button";
6
+ export * from "./card";
7
+ export * from "./description-list";
8
+ export * from "./form";
9
+ export * from "./footer";
10
+ export * from "./help-text";
11
+ export * from "./layout";
12
+ export * from "./link";
13
+ export * from "./list";
14
+ export * from "./message";
15
+ export * from "./modal";
16
+ export * from "./navbar";
17
+ export * from "./show-more";
18
+ export * from "./skeleton";
19
+ export * from "./step-indicator";
20
+ export * from "./styled-html";
21
+ export * from "./table";
22
+ export * from "./tabs";
23
+ export * from "./text";
24
+ export * from "./utils";
25
+ export * from "./warning-banner";
package/src/index.tsx ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Import the hedwig css file, so the consumers don't have to. Plug and play.
3
+ *
4
+ * NOTE: Importing the full path, not just the package name.
5
+ * For some reason vite did not include the css during development when this file only imported the package name.
6
+ *
7
+ * Consumers using the `@postenbring/hedwig-css` package directly should only need to import the package without a path.
8
+ */
9
+ import "@postenbring/hedwig-css/dist/index.css";
10
+
11
+ export * from "./index-no-css";
@@ -0,0 +1,62 @@
1
+ /* eslint-disable import/no-extraneous-dependencies -- storybook story */
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import { useState, useEffect, useRef, useId } from "react";
4
+ import { Container } from "..";
5
+
6
+ const meta: Meta<typeof Container> = {
7
+ title: "Layout/Container",
8
+ component: Container,
9
+ render: (args) => (
10
+ <Container {...args} style={{ background: "var(--hds-ui-colors-warning-yellow)" }}>
11
+ <div style={{ background: "var(--hds-ui-colors-warning-yellow-light-fill)" }}>
12
+ <Widths />
13
+ </div>
14
+ </Container>
15
+ ),
16
+ };
17
+
18
+ export default meta;
19
+
20
+ type Story = StoryObj<typeof Container>;
21
+
22
+ export const Default: Story = {};
23
+
24
+ export const Slim: Story = {
25
+ args: {
26
+ variant: "slim",
27
+ },
28
+ };
29
+
30
+ function Widths() {
31
+ const id = useId().replace(":", "").replace(":", "");
32
+ const [windowWidth, setWindowWidth] = useState(window.innerWidth);
33
+ const [containerWidth, setContainerWidth] = useState(0);
34
+ const [innerWidth, setInnerWidth] = useState(0);
35
+ const ref = useRef<HTMLDivElement>(null);
36
+ useEffect(() => {
37
+ const handleResize = () => {
38
+ setWindowWidth(window.innerWidth);
39
+ const container = document.querySelector(`.hds-container:has(#${id})`);
40
+ if (container !== null) {
41
+ setContainerWidth(container.getBoundingClientRect().width);
42
+ }
43
+ if (ref.current !== null) {
44
+ setInnerWidth(ref.current.getBoundingClientRect().width);
45
+ }
46
+ };
47
+
48
+ handleResize();
49
+ window.addEventListener("resize", handleResize);
50
+ return () => {
51
+ window.removeEventListener("resize", handleResize);
52
+ };
53
+ }, [id]);
54
+
55
+ return (
56
+ <div id={id} ref={ref}>
57
+ <p>Window width: {windowWidth}</p>
58
+ <p>Container width: {containerWidth}</p>
59
+ <p>Inner width: {innerWidth}</p>
60
+ </div>
61
+ );
62
+ }
@@ -0,0 +1,47 @@
1
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
2
+ import { Slot } from "@radix-ui/react-slot";
3
+ import type { HTMLAttributes, ReactNode } from "react";
4
+ import { forwardRef } from "react";
5
+
6
+ export interface ContainerProps extends HTMLAttributes<HTMLDivElement> {
7
+ variant?: "default" | "slim";
8
+ children: ReactNode;
9
+
10
+ /**
11
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
12
+ *
13
+ * @default false
14
+ */
15
+ asChild?: boolean;
16
+
17
+ /**
18
+ * Convienence prop to change the rendered element.
19
+ *
20
+ * Use {@link ContainerProps.asChild} if you need more control of the rendered element.
21
+ */
22
+ as?: "div" | "section" | "aside" | "main" | "article" | "header" | "footer";
23
+ }
24
+
25
+ /**
26
+ * Container is a layout component that is used to wrap content.
27
+ * It ensures a max-width and minimum spacing on the sides.
28
+ */
29
+ export const Container = forwardRef<HTMLDivElement, ContainerProps>(
30
+ ({ as: Tag = "div", asChild, className, children, variant, ...rest }, ref) => {
31
+ const Component = asChild ? Slot : Tag;
32
+ return (
33
+ <Component
34
+ {...rest}
35
+ className={clsx(
36
+ "hds-container",
37
+ { "hds-container--slim": variant === "slim" },
38
+ className as undefined,
39
+ )}
40
+ ref={ref}
41
+ >
42
+ {children}
43
+ </Component>
44
+ );
45
+ },
46
+ );
47
+ Container.displayName = "Container";
@@ -0,0 +1,163 @@
1
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
2
+ import { Slot } from "@radix-ui/react-slot";
3
+ import { forwardRef } from "react";
4
+ import { getResponsiveProps, type ResponsiveProp } from "../responsive";
5
+ import { type SpacingSizes, type ResponsiveSpacingSizes, getSpacingVariable } from "../spacing";
6
+
7
+ export interface GridItemProps extends React.HTMLAttributes<HTMLDivElement> {
8
+ children: React.ReactNode;
9
+
10
+ /**
11
+ * Column span for the grid item
12
+ *
13
+ * `default` is `12`
14
+ */
15
+ span?: ResponsiveProp<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12>;
16
+
17
+ /**
18
+ * Center the grid item horizontally
19
+ *
20
+ * Offsets the start position of the grid item relative to it's span so that it appears centered.
21
+ *
22
+ * assumes a span of 2, 4, 6, 8, or 10
23
+ *
24
+ * a span of `12` is 100% width and centering has no effect
25
+ *
26
+ * `default` is `false`
27
+ */
28
+ center?: ResponsiveProp<boolean>;
29
+
30
+ /**
31
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
32
+ */
33
+ asChild?: boolean;
34
+ }
35
+
36
+ /**
37
+ * 🚧 Grid.Item
38
+ *
39
+ * Use as the direct child of a `Grid` to override `span` and `center` for individual items.
40
+ */
41
+ export const GridItem = forwardRef<HTMLDivElement, GridItemProps>(
42
+ ({ children, asChild, className, span, center, style: _style, ...rest }, ref) => {
43
+ const Component = asChild ? Slot : "div";
44
+ const style: React.CSSProperties = {
45
+ ..._style,
46
+ ...getResponsiveProps("--hds-grid-item-span", span),
47
+ ...getResponsiveProps("--hds-grid-item-center", center, (value) => (value ? "1" : "0")),
48
+ };
49
+ return (
50
+ <Component
51
+ style={style}
52
+ className={clsx("hds-grid__item", className as undefined)}
53
+ ref={ref}
54
+ {...rest}
55
+ >
56
+ {children}
57
+ </Component>
58
+ );
59
+ },
60
+ );
61
+ GridItem.displayName = "Grid.Item";
62
+
63
+ export interface GridProps extends React.HTMLAttributes<HTMLDivElement> {
64
+ children: React.ReactNode;
65
+
66
+ /**
67
+ * Space between grid items. Both horizontal and vertical.
68
+ *
69
+ * Use the responsive shorthand `12-16` to jump a level at the `large` breakpoint.
70
+ *
71
+ * Or use the responsive object `{ initial: 40, large: 64 }` to set different values at different breakpoints.
72
+ *
73
+ * Use `gapX` and `gapY` to set different values for horizontal and vertical spacing.
74
+ */
75
+ gap?: ResponsiveProp<SpacingSizes> | ResponsiveSpacingSizes;
76
+
77
+ /**
78
+ * Space between grid items horizontally
79
+ */
80
+ gapX?: ResponsiveProp<SpacingSizes> | ResponsiveSpacingSizes;
81
+
82
+ /**
83
+ * Space between grid items vertically
84
+ */
85
+ gapY?: ResponsiveProp<SpacingSizes> | ResponsiveSpacingSizes;
86
+
87
+ /**
88
+ * Column span for the grid items
89
+ *
90
+ * `default` is `12`
91
+ */
92
+ span?: ResponsiveProp<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12>;
93
+
94
+ /**
95
+ * Center grid items horizontally
96
+ *
97
+ * Offsets the start position of the grid items relative to their span so that it appears centered.
98
+ *
99
+ * assumes a span of 2, 4, 6, 8, or 10
100
+ *
101
+ * a span of `12` is 100% width and centering has no effect
102
+ *
103
+ * `default` is `false`
104
+ */
105
+ center?: ResponsiveProp<boolean>;
106
+
107
+ /**
108
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
109
+ *
110
+ * @default false
111
+ */
112
+ asChild?: boolean;
113
+ }
114
+
115
+ /**
116
+ * A simple opionated abstraction over CSS Grid.
117
+ *
118
+ * The grid is always a 12 column grid.
119
+ *
120
+ * @example
121
+ * ```tsx
122
+ * <Grid gap="12-16" span={{ small: 6 }}>
123
+ * <div>6/12</div>
124
+ * <div>6/12</div>
125
+ * <Grid.Item span={{ small: 12 }}>12/12</Grid.Item>
126
+ * <div>6/12</div>
127
+ * <div>6/12</div>
128
+ * </Grid>
129
+ * ```
130
+ */
131
+ export const Grid = forwardRef<HTMLDivElement, GridProps>(
132
+ (
133
+ { children, asChild, className, span, center, style: _style, gap, gapX, gapY, ...rest },
134
+ ref,
135
+ ) => {
136
+ const Component = asChild ? Slot : "div";
137
+ const style: React.CSSProperties = {
138
+ ..._style,
139
+ ...getResponsiveProps("--hds-grid-gap", gap, getSpacingVariable),
140
+ ...getResponsiveProps("--hds-grid-gap-x", gapX, getSpacingVariable),
141
+ ...getResponsiveProps("--hds-grid-gap-y", gapY, getSpacingVariable),
142
+ ...getResponsiveProps("--hds-grid-span", span),
143
+ ...getResponsiveProps("--hds-grid-center", center, (value) => (value ? "1" : "0")),
144
+ };
145
+ return (
146
+ <Component
147
+ style={style}
148
+ className={clsx("hds-grid", className as undefined)}
149
+ ref={ref}
150
+ {...rest}
151
+ >
152
+ {children}
153
+ </Component>
154
+ );
155
+ },
156
+ ) as GridType;
157
+ Grid.displayName = "Grid";
158
+
159
+ type GridType = ReturnType<typeof forwardRef<HTMLDivElement, GridProps>> & {
160
+ Item: typeof GridItem;
161
+ };
162
+
163
+ Grid.Item = GridItem;
@@ -0,0 +1,3 @@
1
+ export { Grid, GridItem } from "./grid";
2
+
3
+ export type * from "./grid";
@@ -0,0 +1,3 @@
1
+ export * from "./container/container";
2
+ export * from "./grid";
3
+ export * from "./stack";
@@ -0,0 +1,26 @@
1
+ type Breakpoints = "initial" | "small" | "medium" | "large" | "xlarge";
2
+
3
+ type ResponsiveValues<T> = {
4
+ [Breakpoint in Breakpoints]?: T;
5
+ };
6
+
7
+ export type ResponsiveProp<T> = T | ResponsiveValues<T>;
8
+
9
+ export function getResponsiveProps<T>(
10
+ variable: `--hds-${string}`,
11
+ inputValues?: ResponsiveProp<T>,
12
+ valueTransformer: (value: T) => string = (value) => String(value),
13
+ ) {
14
+ if (!inputValues) return {};
15
+
16
+ if (typeof inputValues !== "object") {
17
+ return { [`${variable}-initial`]: valueTransformer(inputValues) };
18
+ }
19
+
20
+ const result: Record<string, string> = {};
21
+ for (const [key, value] of Object.entries(inputValues as ResponsiveValues<T>)) {
22
+ result[`${variable}-${key}`] = valueTransformer(value);
23
+ }
24
+
25
+ return result;
26
+ }
@@ -0,0 +1,37 @@
1
+ // TODO: Get from tokens package
2
+ // For now it's fine, since it's still in this monorepo
3
+ const spacingSizes = {
4
+ "4": "4",
5
+ "8": "8",
6
+ "12": "12",
7
+ "16": "16",
8
+ "20": "20",
9
+ "24": "24",
10
+ "32": "32",
11
+ "40": "40",
12
+ "48": "48",
13
+ "64": "64",
14
+ "80": "80",
15
+ "120": "120",
16
+ } as const;
17
+ export type SpacingSizes = keyof typeof spacingSizes;
18
+
19
+ const responsiveSpacingSizes = {
20
+ "4-8": "4-8",
21
+ "8-12": "8-12",
22
+ "12-16": "12-16",
23
+ "16-20": "16-20",
24
+ "20-24": "20-24",
25
+ "24-32": "24-32",
26
+ "32-40": "32-40",
27
+ "40-48": "40-48",
28
+ "48-64": "48-64",
29
+ "64-80": "64-80",
30
+ "80-120": "80-120",
31
+ "120-160": "120-160",
32
+ } as const;
33
+ export type ResponsiveSpacingSizes = keyof typeof responsiveSpacingSizes;
34
+
35
+ export function getSpacingVariable(size: SpacingSizes | ResponsiveSpacingSizes) {
36
+ return `var(--hds-spacing-${size})`;
37
+ }
@@ -0,0 +1,2 @@
1
+ export { Stack, HStack, VStack } from "./stack";
2
+ export type * from "./stack";