@postenbring/hedwig-react 0.0.81 → 0.0.82

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 (523) 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-XC3UHH2U.mjs → chunk-3WVRY6CC.mjs} +4 -4
  52. package/dist/{chunk-XC3UHH2U.mjs.map → chunk-3WVRY6CC.mjs.map} +1 -1
  53. package/dist/{chunk-GSJPTZT3.mjs → chunk-6AGDK5V3.mjs} +34 -19
  54. package/dist/chunk-6AGDK5V3.mjs.map +1 -0
  55. package/dist/{chunk-3MQKXNZ6.mjs → chunk-7UD72WOC.mjs} +13 -1
  56. package/dist/chunk-7UD72WOC.mjs.map +1 -0
  57. package/dist/chunk-7YWW46R3.mjs +1 -0
  58. package/dist/chunk-7YWW46R3.mjs.map +1 -0
  59. package/dist/{chunk-ENKVTAJB.mjs → chunk-AJWSQEDP.mjs} +18 -17
  60. package/dist/chunk-AJWSQEDP.mjs.map +1 -0
  61. package/dist/chunk-ARHJZUZG.mjs +1 -0
  62. package/dist/chunk-ARHJZUZG.mjs.map +1 -0
  63. package/dist/chunk-BCFV6VOE.mjs +1 -0
  64. package/dist/chunk-BCFV6VOE.mjs.map +1 -0
  65. package/dist/{chunk-7JRS4WEB.mjs → chunk-C34HEQXO.mjs} +33 -29
  66. package/dist/chunk-C34HEQXO.mjs.map +1 -0
  67. package/dist/{chunk-PLXB3TNA.mjs → chunk-D7QPJIUZ.mjs} +5 -5
  68. package/dist/{chunk-PLXB3TNA.mjs.map → chunk-D7QPJIUZ.mjs.map} +1 -1
  69. package/dist/chunk-FYFJ75NX.mjs +1 -0
  70. package/dist/chunk-FYFJ75NX.mjs.map +1 -0
  71. package/dist/chunk-G65EYZFQ.mjs +1 -0
  72. package/dist/chunk-G65EYZFQ.mjs.map +1 -0
  73. package/dist/chunk-H3E546OT.mjs +1 -0
  74. package/dist/chunk-H3E546OT.mjs.map +1 -0
  75. package/dist/chunk-HQVL3ZJ2.mjs +1 -0
  76. package/dist/chunk-HQVL3ZJ2.mjs.map +1 -0
  77. package/dist/{chunk-XUWZ4HGD.mjs → chunk-LCJSUBCZ.mjs} +48 -45
  78. package/dist/chunk-LCJSUBCZ.mjs.map +1 -0
  79. package/dist/{chunk-KPGSRU4I.mjs → chunk-M3Y3XOGC.mjs} +13 -1
  80. package/dist/chunk-M3Y3XOGC.mjs.map +1 -0
  81. package/dist/{chunk-CIHZDFSQ.mjs → chunk-NU6OSFAU.mjs} +20 -9
  82. package/dist/chunk-NU6OSFAU.mjs.map +1 -0
  83. package/dist/chunk-RC76SXBP.mjs +1 -0
  84. package/dist/chunk-RC76SXBP.mjs.map +1 -0
  85. package/dist/{chunk-TQDUBRCZ.mjs → chunk-SQ63E7KM.mjs} +24 -22
  86. package/dist/chunk-SQ63E7KM.mjs.map +1 -0
  87. package/dist/{chunk-ES6ISHOV.mjs → chunk-UP3M3NEZ.mjs} +14 -13
  88. package/dist/{chunk-ES6ISHOV.mjs.map → chunk-UP3M3NEZ.mjs.map} +1 -1
  89. package/dist/chunk-ZKMFJZSH.mjs +1 -0
  90. package/dist/chunk-ZKMFJZSH.mjs.map +1 -0
  91. package/dist/description-list/description-list.d.ts +42 -2
  92. package/dist/description-list/description-list.d.ts.map +1 -0
  93. package/dist/description-list/index.d.ts +3 -2
  94. package/dist/description-list/index.d.ts.map +1 -0
  95. package/dist/footer/footer.d.ts +67 -7
  96. package/dist/footer/footer.d.ts.map +1 -0
  97. package/dist/footer/footer.js +79 -76
  98. package/dist/footer/footer.js.map +1 -1
  99. package/dist/footer/footer.mjs +4 -4
  100. package/dist/footer/index.d.ts +3 -7
  101. package/dist/footer/index.d.ts.map +1 -0
  102. package/dist/footer/index.js +80 -84
  103. package/dist/footer/index.js.map +1 -1
  104. package/dist/footer/index.mjs +7 -8
  105. package/dist/form/checkbox/checkbox.d.ts +28 -2
  106. package/dist/form/checkbox/checkbox.d.ts.map +1 -0
  107. package/dist/form/checkbox/index.d.ts +3 -2
  108. package/dist/form/checkbox/index.d.ts.map +1 -0
  109. package/dist/form/date-picker/date-picker.d.ts +33 -2
  110. package/dist/form/date-picker/date-picker.d.ts.map +1 -0
  111. package/dist/form/date-picker/index.d.ts +3 -2
  112. package/dist/form/date-picker/index.d.ts.map +1 -0
  113. package/dist/form/error-message/error-message.d.ts +8 -2
  114. package/dist/form/error-message/error-message.d.ts.map +1 -0
  115. package/dist/form/error-message/index.d.ts +3 -2
  116. package/dist/form/error-message/index.d.ts.map +1 -0
  117. package/dist/form/fieldset/fieldset.d.ts +22 -3
  118. package/dist/form/fieldset/fieldset.d.ts.map +1 -0
  119. package/dist/form/fieldset/index.d.ts +3 -3
  120. package/dist/form/fieldset/index.d.ts.map +1 -0
  121. package/dist/form/index.d.ts +9 -20
  122. package/dist/form/index.d.ts.map +1 -0
  123. package/dist/form/input/index.d.ts +3 -2
  124. package/dist/form/input/index.d.ts.map +1 -0
  125. package/dist/form/input/input.d.ts +5 -2
  126. package/dist/form/input/input.d.ts.map +1 -0
  127. package/dist/form/input-group/index.d.ts +3 -2
  128. package/dist/form/input-group/index.d.ts.map +1 -0
  129. package/dist/form/input-group/input-group.d.ts +27 -2
  130. package/dist/form/input-group/input-group.d.ts.map +1 -0
  131. package/dist/form/radiobutton/index.d.ts +5 -5
  132. package/dist/form/radiobutton/index.d.ts.map +1 -0
  133. package/dist/form/radiobutton/radiobutton.d.ts +17 -2
  134. package/dist/form/radiobutton/radiobutton.d.ts.map +1 -0
  135. package/dist/form/radiobutton/radiogroup.d.ts +24 -3
  136. package/dist/form/radiobutton/radiogroup.d.ts.map +1 -0
  137. package/dist/form/select/index.d.ts +3 -2
  138. package/dist/form/select/index.d.ts.map +1 -0
  139. package/dist/form/select/select.d.ts +9 -2
  140. package/dist/form/select/select.d.ts.map +1 -0
  141. package/dist/form/textarea/index.d.ts +3 -2
  142. package/dist/form/textarea/index.d.ts.map +1 -0
  143. package/dist/form/textarea/textarea.d.ts +5 -2
  144. package/dist/form/textarea/textarea.d.ts.map +1 -0
  145. package/dist/help-text/help-text.d.ts +51 -1
  146. package/dist/help-text/help-text.d.ts.map +1 -0
  147. package/dist/help-text/help-text.js +17 -20
  148. package/dist/help-text/help-text.js.map +1 -1
  149. package/dist/help-text/help-text.mjs +3 -3
  150. package/dist/help-text/index.d.ts +3 -1
  151. package/dist/help-text/index.d.ts.map +1 -0
  152. package/dist/help-text/index.js +17 -20
  153. package/dist/help-text/index.js.map +1 -1
  154. package/dist/help-text/index.mjs +3 -3
  155. package/dist/index-no-css.d.ts +26 -128
  156. package/dist/index-no-css.d.ts.map +1 -0
  157. package/dist/index-no-css.js +372 -393
  158. package/dist/index-no-css.js.map +1 -1
  159. package/dist/index-no-css.mjs +50 -57
  160. package/dist/index.d.ts +11 -128
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +372 -393
  163. package/dist/index.js.map +1 -1
  164. package/dist/index.mjs +50 -57
  165. package/dist/index.mjs.map +1 -1
  166. package/dist/layout/container/container.d.ts +23 -2
  167. package/dist/layout/container/container.d.ts.map +1 -0
  168. package/dist/layout/grid/grid.d.ts +101 -4
  169. package/dist/layout/grid/grid.d.ts.map +1 -0
  170. package/dist/layout/grid/grid.js +11 -10
  171. package/dist/layout/grid/grid.js.map +1 -1
  172. package/dist/layout/grid/grid.mjs +1 -1
  173. package/dist/layout/grid/index.d.ts +3 -4
  174. package/dist/layout/grid/index.d.ts.map +1 -0
  175. package/dist/layout/grid/index.js +12 -15
  176. package/dist/layout/grid/index.js.map +1 -1
  177. package/dist/layout/grid/index.mjs +4 -5
  178. package/dist/layout/index.d.ts +4 -10
  179. package/dist/layout/index.d.ts.map +1 -0
  180. package/dist/layout/index.js +12 -15
  181. package/dist/layout/index.js.map +1 -1
  182. package/dist/layout/index.mjs +4 -5
  183. package/dist/layout/responsive.d.ts +10 -2
  184. package/dist/layout/responsive.d.ts.map +1 -0
  185. package/dist/layout/spacing.d.ts +33 -3
  186. package/dist/layout/spacing.d.ts.map +1 -0
  187. package/dist/layout/stack/index.d.ts +3 -4
  188. package/dist/layout/stack/index.d.ts.map +1 -0
  189. package/dist/layout/stack/stack.d.ts +62 -4
  190. package/dist/layout/stack/stack.d.ts.map +1 -0
  191. package/dist/link/index.d.ts +3 -2
  192. package/dist/link/index.d.ts.map +1 -0
  193. package/dist/link/link.d.ts +20 -2
  194. package/dist/link/link.d.ts.map +1 -0
  195. package/dist/list/index.d.ts +5 -5
  196. package/dist/list/index.d.ts.map +1 -0
  197. package/dist/list/link-list.d.ts +12 -2
  198. package/dist/list/link-list.d.ts.map +1 -0
  199. package/dist/list/list.d.ts +40 -3
  200. package/dist/list/list.d.ts.map +1 -0
  201. package/dist/message/index.d.ts +3 -3
  202. package/dist/message/index.d.ts.map +1 -0
  203. package/dist/message/index.js +36 -38
  204. package/dist/message/index.js.map +1 -1
  205. package/dist/message/index.mjs +5 -6
  206. package/dist/message/message.d.ts +36 -4
  207. package/dist/message/message.d.ts.map +1 -0
  208. package/dist/message/message.js +35 -32
  209. package/dist/message/message.js.map +1 -1
  210. package/dist/message/message.mjs +2 -2
  211. package/dist/modal/index.d.ts +3 -5
  212. package/dist/modal/index.d.ts.map +1 -0
  213. package/dist/modal/index.js +60 -62
  214. package/dist/modal/index.js.map +1 -1
  215. package/dist/modal/index.mjs +5 -6
  216. package/dist/modal/modal.d.ts +81 -5
  217. package/dist/modal/modal.d.ts.map +1 -0
  218. package/dist/modal/modal.js +59 -55
  219. package/dist/modal/modal.js.map +1 -1
  220. package/dist/modal/modal.mjs +2 -2
  221. package/dist/navbar/icons.d.ts +3 -2
  222. package/dist/navbar/icons.d.ts.map +1 -0
  223. package/dist/navbar/index.d.ts +4 -13
  224. package/dist/navbar/index.d.ts.map +1 -0
  225. package/dist/navbar/index.js +144 -145
  226. package/dist/navbar/index.js.map +1 -1
  227. package/dist/navbar/index.mjs +4 -5
  228. package/dist/navbar/navbar-expandable-menu.d.ts +35 -7
  229. package/dist/navbar/navbar-expandable-menu.d.ts.map +1 -0
  230. package/dist/navbar/navbar.d.ts +130 -9
  231. package/dist/navbar/navbar.d.ts.map +1 -0
  232. package/dist/navbar/navbar.js +237 -28
  233. package/dist/navbar/navbar.js.map +1 -1
  234. package/dist/navbar/navbar.mjs +4 -1
  235. package/dist/show-more/index.d.ts +5 -4
  236. package/dist/show-more/index.d.ts.map +1 -0
  237. package/dist/show-more/show-more.d.ts +42 -2
  238. package/dist/show-more/show-more.d.ts.map +1 -0
  239. package/dist/skeleton/index.d.ts +3 -2
  240. package/dist/skeleton/index.d.ts.map +1 -0
  241. package/dist/skeleton/skeleton.d.ts +67 -2
  242. package/dist/skeleton/skeleton.d.ts.map +1 -0
  243. package/dist/step-indicator/index.d.ts +3 -1
  244. package/dist/step-indicator/index.d.ts.map +1 -0
  245. package/dist/step-indicator/step-indicator.d.ts +36 -1
  246. package/dist/step-indicator/step-indicator.d.ts.map +1 -0
  247. package/dist/styled-html/index.d.ts +3 -2
  248. package/dist/styled-html/index.d.ts.map +1 -0
  249. package/dist/styled-html/styled-html.d.ts +36 -2
  250. package/dist/styled-html/styled-html.d.ts.map +1 -0
  251. package/dist/table/index.d.ts +3 -1
  252. package/dist/table/index.d.ts.map +1 -0
  253. package/dist/table/table.d.ts +25 -1
  254. package/dist/table/table.d.ts.map +1 -0
  255. package/dist/tabs/context.d.ts +8 -3
  256. package/dist/tabs/context.d.ts.map +1 -0
  257. package/dist/tabs/index.d.ts +7 -10
  258. package/dist/tabs/index.d.ts.map +1 -0
  259. package/dist/tabs/index.js +34 -37
  260. package/dist/tabs/index.js.map +1 -1
  261. package/dist/tabs/index.mjs +4 -4
  262. package/dist/tabs/tabs-content.d.ts +26 -4
  263. package/dist/tabs/tabs-content.d.ts.map +1 -0
  264. package/dist/tabs/tabs-list.d.ts +21 -4
  265. package/dist/tabs/tabs-list.d.ts.map +1 -0
  266. package/dist/tabs/tabs.d.ts +26 -2
  267. package/dist/tabs/tabs.d.ts.map +1 -0
  268. package/dist/tabs/tabs.js +205 -8
  269. package/dist/tabs/tabs.js.map +1 -1
  270. package/dist/tabs/tabs.mjs +4 -1
  271. package/dist/text/index.d.ts +4 -2
  272. package/dist/text/index.d.ts.map +1 -0
  273. package/dist/text/text.d.ts +58 -2
  274. package/dist/text/text.d.ts.map +1 -0
  275. package/dist/utilities/auto-animate-height.d.ts +33 -2
  276. package/dist/utilities/auto-animate-height.d.ts.map +1 -0
  277. package/dist/utilities/index.d.ts +3 -2
  278. package/dist/utilities/index.d.ts.map +1 -0
  279. package/dist/utils.d.ts +28 -5
  280. package/dist/utils.d.ts.map +1 -0
  281. package/dist/warning-banner/index.d.ts +3 -2
  282. package/dist/warning-banner/index.d.ts.map +1 -0
  283. package/dist/warning-banner/index.js +16 -19
  284. package/dist/warning-banner/index.js.map +1 -1
  285. package/dist/warning-banner/index.mjs +3 -3
  286. package/dist/warning-banner/warning-banner.d.ts +8 -2
  287. package/dist/warning-banner/warning-banner.d.ts.map +1 -0
  288. package/dist/warning-banner/warning-banner.js +16 -19
  289. package/dist/warning-banner/warning-banner.js.map +1 -1
  290. package/dist/warning-banner/warning-banner.mjs +3 -3
  291. package/package.json +9 -5
  292. package/src/accordion/accordion-content.tsx +31 -0
  293. package/src/accordion/accordion-header.tsx +36 -0
  294. package/src/accordion/accordion-item.tsx +62 -0
  295. package/src/accordion/accordion.stories.tsx +154 -0
  296. package/src/accordion/accordion.tsx +68 -0
  297. package/src/accordion/context.ts +8 -0
  298. package/src/accordion/index.tsx +9 -0
  299. package/src/badge/badge.stories.tsx +44 -0
  300. package/src/badge/badge.tsx +63 -0
  301. package/src/badge/index.tsx +3 -0
  302. package/src/box/box.stories.tsx +112 -0
  303. package/src/box/box.tsx +122 -0
  304. package/src/box/index.tsx +3 -0
  305. package/src/breadcrumbs/breadcrumbs.stories.tsx +50 -0
  306. package/src/breadcrumbs/breadcrumbs.tsx +47 -0
  307. package/src/breadcrumbs/index.tsx +3 -0
  308. package/src/button/button.stories.tsx +104 -0
  309. package/src/button/button.tsx +87 -0
  310. package/src/button/index.tsx +3 -0
  311. package/src/card/card.stories.tsx +82 -0
  312. package/src/card/card.tsx +222 -0
  313. package/src/card/index.tsx +14 -0
  314. package/src/description-list/description-list.stories.tsx +95 -0
  315. package/src/description-list/description-list.tsx +61 -0
  316. package/src/description-list/index.tsx +2 -0
  317. package/src/footer/footer.tsx +169 -0
  318. package/src/footer/index.tsx +9 -0
  319. package/src/form/checkbox/checkbox.stories.tsx +104 -0
  320. package/src/form/checkbox/checkbox.tsx +82 -0
  321. package/src/form/checkbox/index.tsx +2 -0
  322. package/src/form/date-picker/date-picker.stories.tsx +27 -0
  323. package/src/form/date-picker/date-picker.tsx +85 -0
  324. package/src/form/date-picker/index.tsx +2 -0
  325. package/src/form/error-message/error-message.stories.tsx +19 -0
  326. package/src/form/error-message/error-message.tsx +25 -0
  327. package/src/form/error-message/index.tsx +2 -0
  328. package/src/form/fieldset/fieldset.stories.tsx +86 -0
  329. package/src/form/fieldset/fieldset.tsx +64 -0
  330. package/src/form/fieldset/index.tsx +2 -0
  331. package/src/form/index.tsx +8 -0
  332. package/src/form/input/index.tsx +2 -0
  333. package/src/form/input/input.stories.tsx +166 -0
  334. package/src/form/input/input.tsx +30 -0
  335. package/src/form/input-group/index.tsx +2 -0
  336. package/src/form/input-group/input-group.tsx +106 -0
  337. package/src/form/radiobutton/index.tsx +4 -0
  338. package/src/form/radiobutton/radiobutton.stories.tsx +93 -0
  339. package/src/form/radiobutton/radiobutton.tsx +85 -0
  340. package/src/form/radiobutton/radiogroup.stories.tsx +39 -0
  341. package/src/form/radiobutton/radiogroup.tsx +52 -0
  342. package/src/form/select/index.tsx +2 -0
  343. package/src/form/select/select.stories.tsx +93 -0
  344. package/src/form/select/select.tsx +33 -0
  345. package/src/form/textarea/index.tsx +2 -0
  346. package/src/form/textarea/textarea.stories.tsx +106 -0
  347. package/src/form/textarea/textarea.tsx +33 -0
  348. package/src/help-text/help-text.tsx +98 -0
  349. package/src/help-text/index.ts +2 -0
  350. package/src/index-no-css.tsx +25 -0
  351. package/src/index.tsx +11 -0
  352. package/src/layout/container/container.stories.tsx +62 -0
  353. package/src/layout/container/container.tsx +47 -0
  354. package/src/layout/grid/grid.tsx +163 -0
  355. package/src/layout/grid/index.tsx +3 -0
  356. package/src/layout/index.tsx +3 -0
  357. package/src/layout/responsive.ts +26 -0
  358. package/src/layout/spacing.ts +37 -0
  359. package/src/layout/stack/index.tsx +2 -0
  360. package/src/layout/stack/stack.tsx +128 -0
  361. package/src/link/index.tsx +3 -0
  362. package/src/link/link.stories.tsx +64 -0
  363. package/src/link/link.tsx +46 -0
  364. package/src/list/index.tsx +5 -0
  365. package/src/list/link-list.stories.tsx +38 -0
  366. package/src/list/link-list.tsx +26 -0
  367. package/src/list/list.stories.tsx +71 -0
  368. package/src/list/list.tsx +65 -0
  369. package/src/message/index.tsx +2 -0
  370. package/src/message/message.stories.tsx +93 -0
  371. package/src/message/message.tsx +89 -0
  372. package/src/modal/index.tsx +3 -0
  373. package/src/modal/modal.stories.tsx +147 -0
  374. package/src/modal/modal.tsx +199 -0
  375. package/src/navbar/icons.tsx +21 -0
  376. package/src/navbar/index.tsx +18 -0
  377. package/src/navbar/navbar-expandable-menu.tsx +176 -0
  378. package/src/navbar/navbar.stories.tsx +99 -0
  379. package/src/navbar/navbar.tsx +264 -0
  380. package/src/show-more/index.ts +5 -0
  381. package/src/show-more/show-more.stories.tsx +119 -0
  382. package/src/show-more/show-more.tsx +66 -0
  383. package/src/skeleton/index.ts +2 -0
  384. package/src/skeleton/skeleton.stories.tsx +152 -0
  385. package/src/skeleton/skeleton.tsx +114 -0
  386. package/src/step-indicator/index.ts +2 -0
  387. package/src/step-indicator/step-indicator.stories.tsx +50 -0
  388. package/src/step-indicator/step-indicator.tsx +116 -0
  389. package/src/styled-html/index.ts +2 -0
  390. package/src/styled-html/styled-html.stories.tsx +189 -0
  391. package/src/styled-html/styled-html.tsx +59 -0
  392. package/src/table/index.ts +2 -0
  393. package/src/table/table.tsx +59 -0
  394. package/src/tabs/context.ts +18 -0
  395. package/src/tabs/index.tsx +7 -0
  396. package/src/tabs/tabs-content.tsx +62 -0
  397. package/src/tabs/tabs-list.tsx +129 -0
  398. package/src/tabs/tabs.stories.tsx +138 -0
  399. package/src/tabs/tabs.tsx +50 -0
  400. package/src/text/index.tsx +4 -0
  401. package/src/text/text.stories.tsx +112 -0
  402. package/src/text/text.tsx +129 -0
  403. package/src/utilities/auto-animate-height.tsx +139 -0
  404. package/src/utilities/index.ts +2 -0
  405. package/src/utils.ts +110 -0
  406. package/src/warning-banner/index.tsx +2 -0
  407. package/src/warning-banner/warning-banner.stories.tsx +43 -0
  408. package/src/warning-banner/warning-banner.tsx +79 -0
  409. package/dist/_tsup-dts-rollup.d.mts +0 -2600
  410. package/dist/_tsup-dts-rollup.d.ts +0 -2600
  411. package/dist/accordion/accordion-content.d.mts +0 -2
  412. package/dist/accordion/accordion-header.d.mts +0 -2
  413. package/dist/accordion/accordion-item.d.mts +0 -3
  414. package/dist/accordion/accordion.d.mts +0 -2
  415. package/dist/accordion/context.d.mts +0 -2
  416. package/dist/accordion/index.d.mts +0 -9
  417. package/dist/badge/badge.d.mts +0 -5
  418. package/dist/badge/index.d.mts +0 -6
  419. package/dist/box/box.d.mts +0 -4
  420. package/dist/box/index.d.mts +0 -4
  421. package/dist/breadcrumbs/breadcrumbs.d.mts +0 -2
  422. package/dist/breadcrumbs/index.d.mts +0 -2
  423. package/dist/button/button.d.mts +0 -3
  424. package/dist/button/index.d.mts +0 -3
  425. package/dist/card/card.d.mts +0 -12
  426. package/dist/card/index.d.mts +0 -12
  427. package/dist/chunk-3MQKXNZ6.mjs.map +0 -1
  428. package/dist/chunk-3NDUE23B.mjs +0 -19
  429. package/dist/chunk-3NDUE23B.mjs.map +0 -1
  430. package/dist/chunk-3NL3TOZF.mjs +0 -13
  431. package/dist/chunk-3NL3TOZF.mjs.map +0 -1
  432. package/dist/chunk-3ZFEUABU.mjs +0 -23
  433. package/dist/chunk-3ZFEUABU.mjs.map +0 -1
  434. package/dist/chunk-722MZPXO.mjs +0 -13
  435. package/dist/chunk-722MZPXO.mjs.map +0 -1
  436. package/dist/chunk-7JRS4WEB.mjs.map +0 -1
  437. package/dist/chunk-CIHZDFSQ.mjs.map +0 -1
  438. package/dist/chunk-CYEYGPRH.mjs +0 -17
  439. package/dist/chunk-CYEYGPRH.mjs.map +0 -1
  440. package/dist/chunk-ENKVTAJB.mjs.map +0 -1
  441. package/dist/chunk-GSJPTZT3.mjs.map +0 -1
  442. package/dist/chunk-IJAX6APL.mjs +0 -23
  443. package/dist/chunk-IJAX6APL.mjs.map +0 -1
  444. package/dist/chunk-IKJJWKXM.mjs +0 -15
  445. package/dist/chunk-IKJJWKXM.mjs.map +0 -1
  446. package/dist/chunk-KPGSRU4I.mjs.map +0 -1
  447. package/dist/chunk-PT5H3QV6.mjs +0 -29
  448. package/dist/chunk-PT5H3QV6.mjs.map +0 -1
  449. package/dist/chunk-TQDUBRCZ.mjs.map +0 -1
  450. package/dist/chunk-V6UKKHKD.mjs +0 -33
  451. package/dist/chunk-V6UKKHKD.mjs.map +0 -1
  452. package/dist/chunk-XUWZ4HGD.mjs.map +0 -1
  453. package/dist/description-list/description-list.d.mts +0 -2
  454. package/dist/description-list/index.d.mts +0 -2
  455. package/dist/footer/footer.d.mts +0 -7
  456. package/dist/footer/index.d.mts +0 -7
  457. package/dist/form/checkbox/checkbox.d.mts +0 -2
  458. package/dist/form/checkbox/index.d.mts +0 -2
  459. package/dist/form/date-picker/date-picker.d.mts +0 -2
  460. package/dist/form/date-picker/index.d.mts +0 -2
  461. package/dist/form/error-message/error-message.d.mts +0 -2
  462. package/dist/form/error-message/index.d.mts +0 -2
  463. package/dist/form/fieldset/fieldset.d.mts +0 -3
  464. package/dist/form/fieldset/index.d.mts +0 -3
  465. package/dist/form/index.d.mts +0 -20
  466. package/dist/form/input/index.d.mts +0 -2
  467. package/dist/form/input/input.d.mts +0 -2
  468. package/dist/form/input-group/index.d.mts +0 -2
  469. package/dist/form/input-group/input-group.d.mts +0 -2
  470. package/dist/form/radiobutton/index.d.mts +0 -5
  471. package/dist/form/radiobutton/radiobutton.d.mts +0 -2
  472. package/dist/form/radiobutton/radiogroup.d.mts +0 -3
  473. package/dist/form/select/index.d.mts +0 -2
  474. package/dist/form/select/select.d.mts +0 -2
  475. package/dist/form/textarea/index.d.mts +0 -2
  476. package/dist/form/textarea/textarea.d.mts +0 -2
  477. package/dist/help-text/help-text.d.mts +0 -1
  478. package/dist/help-text/index.d.mts +0 -1
  479. package/dist/index-no-css.d.mts +0 -128
  480. package/dist/index.d.mts +0 -128
  481. package/dist/layout/container/container.d.mts +0 -2
  482. package/dist/layout/grid/grid.d.mts +0 -4
  483. package/dist/layout/grid/index.d.mts +0 -4
  484. package/dist/layout/index.d.mts +0 -10
  485. package/dist/layout/responsive.d.mts +0 -2
  486. package/dist/layout/spacing.d.mts +0 -3
  487. package/dist/layout/stack/index.d.mts +0 -4
  488. package/dist/layout/stack/stack.d.mts +0 -4
  489. package/dist/link/index.d.mts +0 -2
  490. package/dist/link/link.d.mts +0 -2
  491. package/dist/list/index.d.mts +0 -5
  492. package/dist/list/link-list.d.mts +0 -2
  493. package/dist/list/list.d.mts +0 -3
  494. package/dist/message/index.d.mts +0 -3
  495. package/dist/message/message.d.mts +0 -4
  496. package/dist/modal/index.d.mts +0 -5
  497. package/dist/modal/modal.d.mts +0 -5
  498. package/dist/navbar/icons.d.mts +0 -2
  499. package/dist/navbar/index.d.mts +0 -13
  500. package/dist/navbar/navbar-expandable-menu.d.mts +0 -7
  501. package/dist/navbar/navbar.d.mts +0 -9
  502. package/dist/show-more/index.d.mts +0 -4
  503. package/dist/show-more/show-more.d.mts +0 -2
  504. package/dist/skeleton/index.d.mts +0 -2
  505. package/dist/skeleton/skeleton.d.mts +0 -2
  506. package/dist/step-indicator/index.d.mts +0 -1
  507. package/dist/step-indicator/step-indicator.d.mts +0 -1
  508. package/dist/styled-html/index.d.mts +0 -2
  509. package/dist/styled-html/styled-html.d.mts +0 -2
  510. package/dist/table/index.d.mts +0 -1
  511. package/dist/table/table.d.mts +0 -1
  512. package/dist/tabs/context.d.mts +0 -3
  513. package/dist/tabs/index.d.mts +0 -10
  514. package/dist/tabs/tabs-content.d.mts +0 -4
  515. package/dist/tabs/tabs-list.d.mts +0 -4
  516. package/dist/tabs/tabs.d.mts +0 -2
  517. package/dist/text/index.d.mts +0 -2
  518. package/dist/text/text.d.mts +0 -2
  519. package/dist/utilities/auto-animate-height.d.mts +0 -2
  520. package/dist/utilities/index.d.mts +0 -2
  521. package/dist/utils.d.mts +0 -5
  522. package/dist/warning-banner/index.d.mts +0 -2
  523. package/dist/warning-banner/warning-banner.d.mts +0 -2
@@ -0,0 +1,129 @@
1
+ import type { HTMLAttributes, ReactElement, MouseEvent } from "react";
2
+ import { forwardRef, useEffect, useRef } from "react";
3
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
4
+ import { useResize, useHydrated, useMergeRefs } from "../utils";
5
+ import { useTabsContext } from "./context";
6
+
7
+ export interface TabsListProps extends HTMLAttributes<HTMLDivElement> {
8
+ children: ReactElement<TabsTabProps> | ReactElement<TabsTabProps>[];
9
+
10
+ /**
11
+ * Direction of the tabs. Can either be vertical or horizontal.
12
+ * Horizontal breaks on window width with fallback back to vertical
13
+ *
14
+ * @default "horizontal"
15
+ */
16
+ direction?: "vertical" | "horizontal";
17
+ }
18
+
19
+ export const TabsList = forwardRef<HTMLDivElement, TabsListProps>(
20
+ ({ children, direction = "horizontal", className, ...rest }, ref) => {
21
+ const { activeTabId } = useTabsContext();
22
+ const tabsListRef = useRef<HTMLDivElement>(null);
23
+ const mergedRef = useMergeRefs([tabsListRef, ref]);
24
+ const { width: tabsWidth } = useResize(tabsListRef);
25
+
26
+ const isClientSide = useHydrated();
27
+ const { innerWidth } = isClientSide ? window : { innerWidth: 1000 };
28
+ const wideEnough = innerWidth >= tabsWidth;
29
+
30
+ const previousTabId = useRef(activeTabId);
31
+
32
+ // Marker animation
33
+ useEffect(() => {
34
+ const tabList = tabsListRef.current;
35
+ const activeTab = tabList?.querySelector(`[data-tabid="${activeTabId}"]`);
36
+ if (!activeTab || !tabList) return;
37
+
38
+ const { offsetHeight: containerHeight, offsetWidth: containerWidth } = tabList;
39
+ const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = activeTab as HTMLElement;
40
+
41
+ // Calculate the height and width of the marker relative to the container
42
+ const height = offsetHeight / containerHeight;
43
+ const width = offsetWidth / containerWidth;
44
+
45
+ // NOTE: Doing a DOM manipulation here to set the CSS variables for the marker
46
+ // Not really the react idomatic way, but as long as it works we are able to skip some intermidiate `useState`
47
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-height", String(height));
48
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-width", String(width));
49
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-top", `${offsetTop}px`);
50
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-left", `${offsetLeft}px`);
51
+
52
+ // Start with border fallback, then switch to the animated marker when the user changes tabs
53
+ // This way the marker is placed immediately to the default tab, then animates smoothly to the next when selected
54
+ if (previousTabId.current !== activeTabId) {
55
+ tabsListRef.current.style.setProperty(
56
+ "--_hds-tabs-marker-animated-color",
57
+ "var(--_hds-tabs-marker-color)",
58
+ );
59
+ tabsListRef.current.style.setProperty(
60
+ "--_hds-tabs-marker-border-fallback-color",
61
+ "transparent",
62
+ );
63
+ }
64
+ previousTabId.current = activeTabId;
65
+ }, [activeTabId, innerWidth]);
66
+
67
+ return (
68
+ <div
69
+ className={clsx(
70
+ "hds-tabs__list",
71
+ direction === "horizontal"
72
+ ? {
73
+ "hds-tabs__list--horizontal": wideEnough,
74
+ "hds-tabs__list--vertical": !wideEnough,
75
+ }
76
+ : {
77
+ "hds-tabs__list--vertical": true,
78
+ },
79
+ className as undefined,
80
+ )}
81
+ ref={mergedRef}
82
+ role="tablist"
83
+ {...rest}
84
+ >
85
+ {children}
86
+ </div>
87
+ );
88
+ },
89
+ );
90
+ TabsList.displayName = "Tabs.List";
91
+
92
+ export interface TabsTabProps extends HTMLAttributes<HTMLButtonElement> {
93
+ children: ReactElement<HTMLElement> | string;
94
+
95
+ /**
96
+ * Identifier for the tab
97
+ */
98
+ tabId: string;
99
+ }
100
+
101
+ export const TabsTab = forwardRef<HTMLButtonElement, TabsTabProps>(
102
+ ({ children, tabId, className, onClick, ...rest }, ref) => {
103
+ const context = useTabsContext();
104
+
105
+ const toggleTab = (e: MouseEvent<HTMLButtonElement>) => {
106
+ e.preventDefault();
107
+ context.toggleActiveTabId(tabId);
108
+ onClick?.(e);
109
+ };
110
+ return (
111
+ <button
112
+ className={clsx(
113
+ "hds-tabs__tab",
114
+ { "hds-tabs__tab--active": context.activeTabId === tabId },
115
+ className as undefined,
116
+ )}
117
+ data-tabid={tabId}
118
+ onClick={toggleTab}
119
+ ref={ref}
120
+ type="button"
121
+ role="tab"
122
+ {...rest}
123
+ >
124
+ {children}
125
+ </button>
126
+ );
127
+ },
128
+ );
129
+ TabsTab.displayName = "Tabs.Tab";
@@ -0,0 +1,138 @@
1
+ /* eslint-disable import/no-extraneous-dependencies -- storybook story */
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import { StyledHtml } from "../styled-html";
4
+ import { Tabs } from ".";
5
+
6
+ type Story = StoryObj<typeof Tabs>;
7
+
8
+ const meta: Meta<typeof Tabs> = {
9
+ title: "Tabs",
10
+ component: Tabs,
11
+ };
12
+
13
+ export const Horizontal: Story = {
14
+ args: {
15
+ defaultTab: "first",
16
+ children: (
17
+ <>
18
+ <Tabs.List>
19
+ <Tabs.Tab tabId="first">First</Tabs.Tab>
20
+ <Tabs.Tab tabId="second">Second</Tabs.Tab>
21
+ <Tabs.Tab tabId="third">Third</Tabs.Tab>
22
+ <Tabs.Tab tabId="forth">Forth</Tabs.Tab>
23
+ <Tabs.Tab tabId="fifth">Fifth</Tabs.Tab>
24
+ <Tabs.Tab tabId="sixth">Sixth</Tabs.Tab>
25
+ </Tabs.List>
26
+ <Tabs.Contents>
27
+ <Tabs.Content forTabId="first">First tab</Tabs.Content>
28
+ <Tabs.Content forTabId="second">Second tab</Tabs.Content>
29
+ <Tabs.Content forTabId="third">Third tab</Tabs.Content>
30
+ <Tabs.Content forTabId="forth">Forth tab</Tabs.Content>
31
+ <Tabs.Content forTabId="fifth">Fifth tab</Tabs.Content>
32
+ <Tabs.Content forTabId="sixth">Sixth tab</Tabs.Content>
33
+ </Tabs.Contents>
34
+ </>
35
+ ),
36
+ },
37
+ };
38
+
39
+ export const Vertical: Story = {
40
+ args: {
41
+ defaultTab: "first",
42
+ children: (
43
+ <>
44
+ <Tabs.List direction="vertical">
45
+ <Tabs.Tab tabId="first">First</Tabs.Tab>
46
+ <Tabs.Tab tabId="second">Second</Tabs.Tab>
47
+ <Tabs.Tab tabId="third">Third</Tabs.Tab>
48
+ <Tabs.Tab tabId="forth">Forth</Tabs.Tab>
49
+ <Tabs.Tab tabId="fifth">Fifth</Tabs.Tab>
50
+ <Tabs.Tab tabId="sixth">Sixth</Tabs.Tab>
51
+ </Tabs.List>
52
+ <Tabs.Contents>
53
+ <Tabs.Content forTabId="first">First tab</Tabs.Content>
54
+ <Tabs.Content forTabId="second">Second tab</Tabs.Content>
55
+ <Tabs.Content forTabId="third">Third tab</Tabs.Content>
56
+ <Tabs.Content forTabId="forth">Forth tab</Tabs.Content>
57
+ <Tabs.Content forTabId="fifth">Fifth tab</Tabs.Content>
58
+ <Tabs.Content forTabId="sixth">Sixth tab</Tabs.Content>
59
+ </Tabs.Contents>
60
+ </>
61
+ ),
62
+ },
63
+ };
64
+
65
+ export const HorizontalWithMiddleSelected: Story = {
66
+ args: {
67
+ defaultTab: "second",
68
+ children: (
69
+ <>
70
+ <Tabs.List>
71
+ <Tabs.Tab tabId="first">Pakker og gods for bedrift</Tabs.Tab>
72
+ <Tabs.Tab tabId="second">Post og brevpost</Tabs.Tab>
73
+ <Tabs.Tab tabId="third">Bud- og ekspress-pakker</Tabs.Tab>
74
+ </Tabs.List>
75
+ <Tabs.Contents>
76
+ <Tabs.Content forTabId="first" asChild>
77
+ <StyledHtml>
78
+ <h2>Vilkår for transport til bedrifter nasjonalt</h2>
79
+ <ul>
80
+ <li>
81
+ <a href="/tjenester/pakker-og-gods/Transportguiden_01122023.pdf">
82
+ Transportguiden fra 01.12.2023 (pdf)
83
+ </a>
84
+ </li>
85
+ <li>
86
+ <a
87
+ href="https://lovdata.no/dokument/NL/lov/1974-12-20-68?q=Lov+om+vegfraktavtaler"
88
+ rel="noopener"
89
+ target="_blank"
90
+ >
91
+ Link til Lov om Vegfraktavtaler fra Lovdata
92
+ </a>
93
+ </li>
94
+ <li>
95
+ <a href="/vilkar/nsab-2000.pdf">NSAB 2000 (pdf)</a>
96
+ </li>
97
+ <li>
98
+ <a href="/vilkar/nsab-2015.pdf">NSAB 2015 (pdf)</a>
99
+ </li>
100
+ <li>
101
+ <a href="/vilkar/pakker-til-bedrifter-i-utlandet-pakker-og-gods-sikkerhetsbestemmelser">
102
+ Pakker og gods - sikkerhetsbestemmelser
103
+ </a>
104
+ </li>
105
+ <li>
106
+ <a href="/vilkar/vilkar-for-pakke-til-bedrift">Vilkår for Pakke til bedrift</a>
107
+ </li>
108
+ <li>
109
+ <a href="/vilkar/vilkar-for-ekspress-neste-dag">Vilkår for Ekspress neste dag</a>
110
+ </li>
111
+ <li>
112
+ <a href="/vilkar/Betingelser%20Oljeekspressen.pdf">
113
+ Betingelser Oljeekspressen (pdf)
114
+ </a>
115
+ &nbsp;
116
+ </li>
117
+ <li>
118
+ <a href="/tjenester/pakker-og-gods/Transportguiden_01122023.pdf">
119
+ Vilkår for godstjenester fra 01.12.2023 (pdf)
120
+ </a>
121
+ &nbsp;
122
+ </li>
123
+ </ul>
124
+ </StyledHtml>
125
+ </Tabs.Content>
126
+ <Tabs.Content forTabId="second">
127
+ <h2>Vilkår for post med like formater</h2>
128
+ </Tabs.Content>
129
+ <Tabs.Content forTabId="third">
130
+ <h2>Generelle vilkår</h2>
131
+ </Tabs.Content>
132
+ </Tabs.Contents>
133
+ </>
134
+ ),
135
+ },
136
+ };
137
+
138
+ export default meta;
@@ -0,0 +1,50 @@
1
+ import type { HTMLAttributes, ReactElement } from "react";
2
+ import { forwardRef, useState } from "react";
3
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
4
+ import { Slot } from "@radix-ui/react-slot";
5
+ import { TabsContext } from "./context";
6
+ import { TabsContent, TabsContents, type TabsContentsProps } from "./tabs-content";
7
+ import { TabsList, TabsTab, type TabsListProps } from "./tabs-list";
8
+
9
+ export interface TabsProps extends HTMLAttributes<HTMLDivElement> {
10
+ children: ReactElement<TabsListProps | TabsContentsProps>[] | ReactElement;
11
+
12
+ /**
13
+ * Define which tab to use as default. Must be one of the <Tab/>s identifier.
14
+ */
15
+ defaultTab: string;
16
+
17
+ /**
18
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
19
+ *
20
+ * @default false
21
+ */
22
+ asChild?: boolean;
23
+ }
24
+
25
+ export const Tabs = forwardRef<HTMLDivElement, TabsProps>(
26
+ ({ asChild, defaultTab, children, ...rest }, ref) => {
27
+ const [activeTabId, setActiveTabId] = useState<string>(defaultTab);
28
+ const Component = asChild ? Slot : "div";
29
+ return (
30
+ <Component className={clsx("hds-tabs")} ref={ref} {...rest}>
31
+ <TabsContext.Provider value={{ activeTabId, toggleActiveTabId: setActiveTabId }}>
32
+ {children}
33
+ </TabsContext.Provider>
34
+ </Component>
35
+ );
36
+ },
37
+ ) as TabsType;
38
+ Tabs.displayName = "Tabs";
39
+
40
+ type TabsType = ReturnType<typeof forwardRef<HTMLDivElement, TabsProps>> & {
41
+ List: typeof TabsList;
42
+ Tab: typeof TabsTab;
43
+ Contents: typeof TabsContents;
44
+ Content: typeof TabsContent;
45
+ };
46
+
47
+ Tabs.List = TabsList;
48
+ Tabs.Tab = TabsTab;
49
+ Tabs.Contents = TabsContents;
50
+ Tabs.Content = TabsContent;
@@ -0,0 +1,4 @@
1
+ import { Text } from "./text";
2
+
3
+ export { Text };
4
+ export type * from "./text";
@@ -0,0 +1,112 @@
1
+ /* eslint-disable import/no-extraneous-dependencies -- storybook story */
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import { HStack, VStack } from "../layout";
4
+ import { Text } from ".";
5
+
6
+ const meta: Meta<typeof Text> = {
7
+ title: "Text",
8
+ component: Text,
9
+ };
10
+
11
+ export default meta;
12
+
13
+ type Story = StoryObj<typeof Text>;
14
+ export const Default: Story = {
15
+ render: FontGallery,
16
+ };
17
+
18
+ export const PostenBringSideBySide: Story = {
19
+ render: () => (
20
+ <HStack gap="16">
21
+ <div className="hds-theme-posten">
22
+ <FontGalleryHeader>Posten</FontGalleryHeader>
23
+ <FontGallery />
24
+ </div>
25
+ <div className="hds-theme-bring">
26
+ <FontGalleryHeader>Bring</FontGalleryHeader>
27
+ <FontGallery />
28
+ </div>
29
+ </HStack>
30
+ ),
31
+ };
32
+
33
+ export const MinAndMax: Story = {
34
+ render: () => (
35
+ <HStack gap="16">
36
+ <div>
37
+ <FontGalleryHeader>Min</FontGalleryHeader>
38
+ <FontGallery size="min" />
39
+ </div>
40
+ <div>
41
+ <FontGalleryHeader>Max</FontGalleryHeader>
42
+ <FontGallery size="max" />
43
+ </div>
44
+ </HStack>
45
+ ),
46
+ };
47
+
48
+ function FontGalleryHeader({ children }: { children: React.ReactNode }) {
49
+ return (
50
+ <h2
51
+ style={{
52
+ padding: "var(--hds-spacing-8)",
53
+ background: "var(--hds-colors-signature)",
54
+ color: "var(--hds-button-colors-text)",
55
+ fontWeight: 500,
56
+ margin: 0,
57
+ }}
58
+ >
59
+ {children}
60
+ </h2>
61
+ );
62
+ }
63
+
64
+ function FontGallery({ size }: { size?: "min" | "max" | "fluid" }) {
65
+ return (
66
+ <VStack gap="16">
67
+ <div>
68
+ <Text size={size} variant="h1-display" as="p">
69
+ Display
70
+ </Text>
71
+ <Text size={size} variant="h1" as="p">
72
+ H1
73
+ </Text>
74
+ <Text size={size} variant="h2" as="p">
75
+ H2
76
+ </Text>
77
+ <Text size={size} variant="h3" as="p">
78
+ H3
79
+ </Text>
80
+ <Text size={size} variant="body">
81
+ Body
82
+ </Text>
83
+ <Text size={size} variant="body-small">
84
+ Body Small
85
+ </Text>
86
+ <Text size={size} variant="technical">
87
+ Technical
88
+ </Text>
89
+ <Text size={size} variant="caption">
90
+ Caption
91
+ </Text>
92
+ </div>
93
+ <div>
94
+ <Text size={size} variant="h3-title" as="p">
95
+ H3 Title
96
+ </Text>
97
+ <Text size={size} variant="body-title">
98
+ Body Title
99
+ </Text>
100
+ <Text size={size} variant="body-small-title">
101
+ Body Small Title
102
+ </Text>
103
+ <Text size={size} variant="technical-title">
104
+ Technical Title
105
+ </Text>
106
+ <Text size={size} variant="caption-title">
107
+ Caption Title
108
+ </Text>
109
+ </div>
110
+ </VStack>
111
+ );
112
+ }
@@ -0,0 +1,129 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment -- Typings for the differnt html elements */
2
+ /* eslint-disable @typescript-eslint/no-explicit-any -- Typings for the differnt html elements */
3
+
4
+ import React, { forwardRef } from "react";
5
+ import { clsx } from "@postenbring/hedwig-css/typed-classname";
6
+ import { Slot } from "@radix-ui/react-slot";
7
+
8
+ type HeadingProps =
9
+ | {
10
+ variant: "h1-display" | "h1" | "h2" | "h3" | "h3-title";
11
+ asChild: true;
12
+ as?: never;
13
+ }
14
+ | {
15
+ variant: "h1-display" | "h1" | "h2" | "h3" | "h3-title";
16
+ as: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "span" | "div" | "label" | "p";
17
+ asChild?: never;
18
+ };
19
+
20
+ interface ParagraphProps {
21
+ variant?:
22
+ | "body"
23
+ | "body-title"
24
+ | "body-small"
25
+ | "body-small-title"
26
+ | "technical"
27
+ | "technical-title"
28
+ | "caption"
29
+ | "caption-title";
30
+ }
31
+
32
+ export type TextProps = {
33
+ children: React.ReactNode;
34
+
35
+ /**
36
+ * The font-size of the component. By default it's `fluid` which means it's smaller on mobile and larger on desktop.
37
+ *
38
+ * But you can lock it to either the min or the max size.
39
+ *
40
+ * @default "fluid"
41
+ */
42
+ size?: "min" | "max" | "fluid";
43
+
44
+ /**
45
+ * Change the default rendered element for the one passed as a child, merging their props and behavior.
46
+ *
47
+ * @default false
48
+ */
49
+ asChild?: boolean;
50
+
51
+ /**
52
+ * Convienence prop to change the rendered element.
53
+ *
54
+ * Use {@link TextProps.asChild} if you need more control of the rendered element.
55
+ */
56
+ as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "span" | "div" | "label" | "p";
57
+
58
+ /**
59
+ * 🚧 Experimental spacing
60
+ */
61
+ _unstableSpacing?: boolean;
62
+ } & (HeadingProps | ParagraphProps) &
63
+ React.HTMLAttributes<HTMLParagraphElement | HTMLHeadingElement>;
64
+
65
+ const defaultHTMLTag: Record<NonNullable<TextProps["variant"]>, `h${1 | 2 | 3}` | "p"> = {
66
+ "h1-display": "h1",
67
+ h1: "h1",
68
+ h2: "h2",
69
+ h3: "h3",
70
+ "h3-title": "h3",
71
+ body: "p",
72
+ "body-title": "p",
73
+ "body-small": "p",
74
+ "body-small-title": "p",
75
+ technical: "p",
76
+ "technical-title": "p",
77
+ caption: "p",
78
+ "caption-title": "p",
79
+ };
80
+
81
+ /**
82
+ * Text component
83
+ *
84
+ * If the variant is `h1-display`, `h1`, `h2`, `h3`, or `h3-title` the `as` or `asChild` prop is required.
85
+ *
86
+ * This is to force the consumer to consider which semantic html element to use. E.g. `<h1>` or `<h2>`
87
+ *
88
+ * @example
89
+ * ```tsx
90
+ * <Text variant="h1-display" as="h1">Hello world</Text>
91
+ * <Text variant="body">
92
+ * This is a body text
93
+ * </Text>
94
+ * ```
95
+ */
96
+ export const Text = forwardRef<HTMLParagraphElement | HTMLHeadingElement, TextProps>(
97
+ (
98
+ {
99
+ as: Tag,
100
+ asChild,
101
+ variant = "body",
102
+ size = "fluid",
103
+ _unstableSpacing: spacing,
104
+ children,
105
+ className,
106
+ ...rest
107
+ },
108
+ ref,
109
+ ) => {
110
+ const Component = asChild ? Slot : Tag ?? defaultHTMLTag[variant];
111
+ const sizeModifier =
112
+ size !== "fluid" && variant !== "caption" && variant !== "caption-title" && size;
113
+ return (
114
+ <Component
115
+ className={clsx(
116
+ `hds-text-${variant}`,
117
+ sizeModifier && `hds-text--${sizeModifier}`,
118
+ spacing && "hds-text--spacing",
119
+ className as undefined,
120
+ )}
121
+ ref={ref as any}
122
+ {...(rest as any)}
123
+ >
124
+ {children}
125
+ </Component>
126
+ );
127
+ },
128
+ );
129
+ Text.displayName = "Text";