@postenbring/hedwig-react 0.0.76 → 0.0.77

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 (429) hide show
  1. package/dist/_tsup-dts-rollup.d.mts +498 -492
  2. package/dist/_tsup-dts-rollup.d.ts +498 -492
  3. package/dist/accordion/accordion-content.js +20 -18
  4. package/dist/accordion/accordion-content.js.map +1 -1
  5. package/dist/accordion/accordion-content.mjs +1 -1
  6. package/dist/accordion/accordion-header.js +24 -22
  7. package/dist/accordion/accordion-header.js.map +1 -1
  8. package/dist/accordion/accordion-header.mjs +1 -1
  9. package/dist/accordion/accordion-item.js +2 -16
  10. package/dist/accordion/accordion-item.js.map +1 -1
  11. package/dist/accordion/accordion-item.mjs +1 -1
  12. package/dist/accordion/accordion.js +2 -2
  13. package/dist/accordion/accordion.js.map +1 -1
  14. package/dist/accordion/accordion.mjs +1 -1
  15. package/dist/accordion/index.js +48 -58
  16. package/dist/accordion/index.js.map +1 -1
  17. package/dist/accordion/index.mjs +7 -7
  18. package/dist/badge/badge.d.mts +2 -2
  19. package/dist/badge/badge.d.ts +2 -2
  20. package/dist/badge/badge.js +23 -30
  21. package/dist/badge/badge.js.map +1 -1
  22. package/dist/badge/badge.mjs +3 -3
  23. package/dist/badge/index.d.mts +2 -1
  24. package/dist/badge/index.d.ts +2 -1
  25. package/dist/badge/index.js +22 -29
  26. package/dist/badge/index.js.map +1 -1
  27. package/dist/badge/index.mjs +3 -3
  28. package/dist/box/box.js +5 -3
  29. package/dist/box/box.js.map +1 -1
  30. package/dist/box/box.mjs +1 -1
  31. package/dist/box/index.js +5 -3
  32. package/dist/box/index.js.map +1 -1
  33. package/dist/box/index.mjs +2 -2
  34. package/dist/breadcrumbs/breadcrumbs.js.map +1 -1
  35. package/dist/breadcrumbs/breadcrumbs.mjs +1 -1
  36. package/dist/breadcrumbs/index.js.map +1 -1
  37. package/dist/breadcrumbs/index.mjs +1 -1
  38. package/dist/button/button.d.mts +0 -1
  39. package/dist/button/button.d.ts +0 -1
  40. package/dist/button/button.js +15 -22
  41. package/dist/button/button.js.map +1 -1
  42. package/dist/button/button.mjs +1 -3
  43. package/dist/button/index.d.mts +0 -1
  44. package/dist/button/index.d.ts +0 -1
  45. package/dist/button/index.js +15 -20
  46. package/dist/button/index.js.map +1 -1
  47. package/dist/button/index.mjs +1 -1
  48. package/dist/card/card.d.mts +1 -1
  49. package/dist/card/card.d.ts +1 -1
  50. package/dist/card/card.js +63 -46
  51. package/dist/card/card.js.map +1 -1
  52. package/dist/card/card.mjs +1 -1
  53. package/dist/card/index.d.mts +3 -3
  54. package/dist/card/index.d.ts +3 -3
  55. package/dist/card/index.js +80 -59
  56. package/dist/card/index.js.map +1 -1
  57. package/dist/card/index.mjs +10 -2
  58. package/dist/chunk-2UWPZNXC.mjs +40 -0
  59. package/dist/chunk-2UWPZNXC.mjs.map +1 -0
  60. package/dist/chunk-3EFAPJ3H.mjs +44 -0
  61. package/dist/chunk-3EFAPJ3H.mjs.map +1 -0
  62. package/dist/{chunk-XVFQWVHO.mjs → chunk-3MQKXNZ6.mjs} +4 -2
  63. package/dist/chunk-3MQKXNZ6.mjs.map +1 -0
  64. package/dist/{chunk-NMMFIRLZ.mjs → chunk-3NL3TOZF.mjs} +2 -2
  65. package/dist/{chunk-DM4PJFLG.mjs → chunk-6N4TGRZB.mjs} +2 -2
  66. package/dist/{chunk-JDXYRFLJ.mjs → chunk-722MZPXO.mjs} +2 -2
  67. package/dist/chunk-7JDEN3T6.mjs +109 -0
  68. package/dist/chunk-7JDEN3T6.mjs.map +1 -0
  69. package/dist/{chunk-HMB4TY2F.mjs → chunk-7W4HONVO.mjs} +3 -3
  70. package/dist/{chunk-62F4I3MQ.mjs → chunk-A2H2LAII.mjs} +3 -17
  71. package/dist/chunk-A2H2LAII.mjs.map +1 -0
  72. package/dist/{chunk-YC7MT6SO.mjs → chunk-A4ME3VXV.mjs} +2 -2
  73. package/dist/chunk-ACEYO4LN.mjs +33 -0
  74. package/dist/chunk-ACEYO4LN.mjs.map +1 -0
  75. package/dist/{chunk-VVPJOVFP.mjs → chunk-AXKJB47E.mjs} +1 -1
  76. package/dist/chunk-AXKJB47E.mjs.map +1 -0
  77. package/dist/{chunk-UWTGHSWT.mjs → chunk-CCVZAHYA.mjs} +11 -6
  78. package/dist/chunk-CCVZAHYA.mjs.map +1 -0
  79. package/dist/chunk-CIHZDFSQ.mjs +148 -0
  80. package/dist/chunk-CIHZDFSQ.mjs.map +1 -0
  81. package/dist/chunk-COEZA7WA.mjs +30 -0
  82. package/dist/chunk-COEZA7WA.mjs.map +1 -0
  83. package/dist/chunk-CSXSUQ2M.mjs +1 -0
  84. package/dist/chunk-CSXSUQ2M.mjs.map +1 -0
  85. package/dist/{chunk-4GSNPCNT.mjs → chunk-CYEYGPRH.mjs} +2 -2
  86. package/dist/{chunk-E2AG5TUR.mjs → chunk-DCCQXWD6.mjs} +4 -4
  87. package/dist/{chunk-JXA3B33M.mjs → chunk-DEX36MFK.mjs} +1 -1
  88. package/dist/chunk-DEX36MFK.mjs.map +1 -0
  89. package/dist/chunk-DFU2THGC.mjs +31 -0
  90. package/dist/chunk-DFU2THGC.mjs.map +1 -0
  91. package/dist/{chunk-EGXM575K.mjs → chunk-ENKVTAJB.mjs} +6 -4
  92. package/dist/chunk-ENKVTAJB.mjs.map +1 -0
  93. package/dist/{chunk-25R7DBK6.mjs → chunk-ES6ISHOV.mjs} +1 -1
  94. package/dist/chunk-ES6ISHOV.mjs.map +1 -0
  95. package/dist/{chunk-PYR6QEIS.mjs → chunk-FCPQXZQV.mjs} +12 -12
  96. package/dist/chunk-FCPQXZQV.mjs.map +1 -0
  97. package/dist/{chunk-57SSGJ4X.mjs → chunk-GGQB2WWD.mjs} +6 -3
  98. package/dist/chunk-GGQB2WWD.mjs.map +1 -0
  99. package/dist/chunk-GSJPTZT3.mjs +121 -0
  100. package/dist/chunk-GSJPTZT3.mjs.map +1 -0
  101. package/dist/{chunk-S3BGPCLK.mjs → chunk-HFXVRPBA.mjs} +13 -26
  102. package/dist/chunk-HFXVRPBA.mjs.map +1 -0
  103. package/dist/{chunk-Z753E3XF.mjs → chunk-HMATZX4A.mjs} +1 -1
  104. package/dist/chunk-HMATZX4A.mjs.map +1 -0
  105. package/dist/{chunk-S5RB7KLJ.mjs → chunk-I3ZIMS72.mjs} +4 -2
  106. package/dist/chunk-I3ZIMS72.mjs.map +1 -0
  107. package/dist/{chunk-EJ7ANN7M.mjs → chunk-IKJJWKXM.mjs} +2 -2
  108. package/dist/{chunk-A47QULAK.mjs → chunk-JF3HBGAA.mjs} +10 -6
  109. package/dist/chunk-JF3HBGAA.mjs.map +1 -0
  110. package/dist/{chunk-KTRIVJM3.mjs → chunk-JL4PLDXN.mjs} +2 -2
  111. package/dist/{chunk-UXJIK76H.mjs → chunk-K3CBNVXC.mjs} +3 -5
  112. package/dist/chunk-K3CBNVXC.mjs.map +1 -0
  113. package/dist/{chunk-BWFFP6BB.mjs → chunk-KEKPEN2C.mjs} +17 -23
  114. package/dist/chunk-KEKPEN2C.mjs.map +1 -0
  115. package/dist/{chunk-VRIY65P5.mjs → chunk-KPGSRU4I.mjs} +3 -3
  116. package/dist/chunk-KPGSRU4I.mjs.map +1 -0
  117. package/dist/{chunk-CSAEHQ4R.mjs → chunk-LTTJWLS7.mjs} +2 -2
  118. package/dist/{chunk-5QL53TR2.mjs → chunk-MJ2DZH3N.mjs} +4 -2
  119. package/dist/chunk-MJ2DZH3N.mjs.map +1 -0
  120. package/dist/{chunk-DFH4YKQA.mjs → chunk-NAIBK23T.mjs} +2 -2
  121. package/dist/chunk-P6KBFRF4.mjs +54 -0
  122. package/dist/chunk-P6KBFRF4.mjs.map +1 -0
  123. package/dist/{chunk-TNU64NUN.mjs → chunk-P6WIBHQH.mjs} +2 -2
  124. package/dist/{chunk-E2RTLHMZ.mjs → chunk-PLXB3TNA.mjs} +2 -2
  125. package/dist/chunk-PLXB3TNA.mjs.map +1 -0
  126. package/dist/chunk-PT5H3QV6.mjs +29 -0
  127. package/dist/chunk-PT5H3QV6.mjs.map +1 -0
  128. package/dist/{chunk-5YMUST7H.mjs → chunk-QY2K3GWU.mjs} +3 -3
  129. package/dist/{chunk-6NGF7FFY.mjs → chunk-RYM3LM7K.mjs} +2 -2
  130. package/dist/{chunk-ME66RUR6.mjs → chunk-TQDUBRCZ.mjs} +7 -4
  131. package/dist/chunk-TQDUBRCZ.mjs.map +1 -0
  132. package/dist/{chunk-ZDPU3N54.mjs → chunk-UB2R7TCG.mjs} +1 -1
  133. package/dist/chunk-UB2R7TCG.mjs.map +1 -0
  134. package/dist/{chunk-RHCMBJOT.mjs → chunk-UMYOYHUI.mjs} +3 -3
  135. package/dist/{chunk-I6GDRDYD.mjs → chunk-USXU6ULZ.mjs} +4 -2
  136. package/dist/chunk-USXU6ULZ.mjs.map +1 -0
  137. package/dist/{chunk-MGUYIOP2.mjs → chunk-W2MRIP5P.mjs} +1 -1
  138. package/dist/chunk-W2MRIP5P.mjs.map +1 -0
  139. package/dist/chunk-WHMIHTPC.mjs +41 -0
  140. package/dist/chunk-WHMIHTPC.mjs.map +1 -0
  141. package/dist/{chunk-PUESATBQ.mjs → chunk-XC3UHH2U.mjs} +31 -45
  142. package/dist/chunk-XC3UHH2U.mjs.map +1 -0
  143. package/dist/{chunk-MKC7HZCM.mjs → chunk-XUWZ4HGD.mjs} +16 -15
  144. package/dist/chunk-XUWZ4HGD.mjs.map +1 -0
  145. package/dist/{chunk-GGEQEVZ4.mjs → chunk-YSFZCRWS.mjs} +1 -1
  146. package/dist/chunk-YSFZCRWS.mjs.map +1 -0
  147. package/dist/{chunk-XYIY6FHW.mjs → chunk-ZMLHJZQK.mjs} +9 -9
  148. package/dist/description-list/description-list.js.map +1 -1
  149. package/dist/description-list/description-list.mjs +1 -1
  150. package/dist/description-list/index.js.map +1 -1
  151. package/dist/description-list/index.mjs +1 -1
  152. package/dist/footer/footer.d.mts +1 -1
  153. package/dist/footer/footer.d.ts +1 -1
  154. package/dist/footer/footer.js +117 -134
  155. package/dist/footer/footer.js.map +1 -1
  156. package/dist/footer/footer.mjs +9 -9
  157. package/dist/footer/index.js +117 -134
  158. package/dist/footer/index.js.map +1 -1
  159. package/dist/footer/index.mjs +10 -10
  160. package/dist/form/checkbox/checkbox.js +25 -19
  161. package/dist/form/checkbox/checkbox.js.map +1 -1
  162. package/dist/form/checkbox/checkbox.mjs +3 -3
  163. package/dist/form/checkbox/index.js +25 -19
  164. package/dist/form/checkbox/index.js.map +1 -1
  165. package/dist/form/checkbox/index.mjs +3 -3
  166. package/dist/form/date-picker/date-picker.js +28 -22
  167. package/dist/form/date-picker/date-picker.js.map +1 -1
  168. package/dist/form/date-picker/date-picker.mjs +4 -4
  169. package/dist/form/date-picker/index.js +28 -22
  170. package/dist/form/date-picker/index.js.map +1 -1
  171. package/dist/form/date-picker/index.mjs +4 -4
  172. package/dist/form/error-message/error-message.d.mts +1 -1
  173. package/dist/form/error-message/error-message.d.ts +1 -1
  174. package/dist/form/error-message/error-message.js +46 -11
  175. package/dist/form/error-message/error-message.js.map +1 -1
  176. package/dist/form/error-message/error-message.mjs +1 -1
  177. package/dist/form/error-message/index.js +46 -11
  178. package/dist/form/error-message/index.js.map +1 -1
  179. package/dist/form/error-message/index.mjs +1 -1
  180. package/dist/form/fieldset/fieldset.js +22 -16
  181. package/dist/form/fieldset/fieldset.js.map +1 -1
  182. package/dist/form/fieldset/fieldset.mjs +2 -2
  183. package/dist/form/fieldset/index.js +22 -16
  184. package/dist/form/fieldset/index.js.map +1 -1
  185. package/dist/form/fieldset/index.mjs +2 -2
  186. package/dist/form/index.js +48 -42
  187. package/dist/form/index.js.map +1 -1
  188. package/dist/form/index.mjs +11 -11
  189. package/dist/form/input/index.js +26 -20
  190. package/dist/form/input/index.js.map +1 -1
  191. package/dist/form/input/index.mjs +3 -3
  192. package/dist/form/input/input.js +26 -20
  193. package/dist/form/input/input.js.map +1 -1
  194. package/dist/form/input/input.mjs +3 -3
  195. package/dist/form/input-group/index.js +24 -18
  196. package/dist/form/input-group/index.js.map +1 -1
  197. package/dist/form/input-group/index.mjs +2 -2
  198. package/dist/form/input-group/input-group.js +24 -18
  199. package/dist/form/input-group/input-group.js.map +1 -1
  200. package/dist/form/input-group/input-group.mjs +2 -2
  201. package/dist/form/radiobutton/index.js +28 -22
  202. package/dist/form/radiobutton/index.js.map +1 -1
  203. package/dist/form/radiobutton/index.mjs +4 -4
  204. package/dist/form/radiobutton/radiobutton.js +28 -22
  205. package/dist/form/radiobutton/radiobutton.js.map +1 -1
  206. package/dist/form/radiobutton/radiobutton.mjs +4 -4
  207. package/dist/form/radiobutton/radiogroup.js +25 -19
  208. package/dist/form/radiobutton/radiogroup.js.map +1 -1
  209. package/dist/form/radiobutton/radiogroup.mjs +3 -3
  210. package/dist/form/select/index.js +26 -20
  211. package/dist/form/select/index.js.map +1 -1
  212. package/dist/form/select/index.mjs +3 -3
  213. package/dist/form/select/select.js +26 -20
  214. package/dist/form/select/select.js.map +1 -1
  215. package/dist/form/select/select.mjs +3 -3
  216. package/dist/form/textarea/index.js +26 -20
  217. package/dist/form/textarea/index.js.map +1 -1
  218. package/dist/form/textarea/index.mjs +3 -3
  219. package/dist/form/textarea/textarea.js +26 -20
  220. package/dist/form/textarea/textarea.js.map +1 -1
  221. package/dist/form/textarea/textarea.mjs +3 -3
  222. package/dist/help-text/help-text.js +5 -3
  223. package/dist/help-text/help-text.js.map +1 -1
  224. package/dist/help-text/help-text.mjs +3 -3
  225. package/dist/help-text/index.js +5 -3
  226. package/dist/help-text/index.js.map +1 -1
  227. package/dist/help-text/index.mjs +3 -3
  228. package/dist/index-no-css.d.mts +12 -20
  229. package/dist/index-no-css.d.ts +12 -20
  230. package/dist/index-no-css.js +615 -614
  231. package/dist/index-no-css.js.map +1 -1
  232. package/dist/index-no-css.mjs +85 -92
  233. package/dist/index.d.mts +12 -20
  234. package/dist/index.d.ts +12 -20
  235. package/dist/index.js +615 -614
  236. package/dist/index.js.map +1 -1
  237. package/dist/index.mjs +85 -92
  238. package/dist/index.mjs.map +1 -1
  239. package/dist/layout/container/container.js +3 -1
  240. package/dist/layout/container/container.js.map +1 -1
  241. package/dist/layout/container/container.mjs +1 -1
  242. package/dist/layout/grid/grid.js.map +1 -1
  243. package/dist/layout/grid/grid.mjs +1 -1
  244. package/dist/layout/grid/index.js.map +1 -1
  245. package/dist/layout/grid/index.mjs +2 -2
  246. package/dist/layout/index.js +8 -6
  247. package/dist/layout/index.js.map +1 -1
  248. package/dist/layout/index.mjs +4 -4
  249. package/dist/layout/stack/index.js.map +1 -1
  250. package/dist/layout/stack/index.mjs +1 -1
  251. package/dist/layout/stack/stack.js.map +1 -1
  252. package/dist/layout/stack/stack.mjs +1 -1
  253. package/dist/link/index.js +3 -1
  254. package/dist/link/index.js.map +1 -1
  255. package/dist/link/index.mjs +1 -1
  256. package/dist/link/link.js +3 -1
  257. package/dist/link/link.js.map +1 -1
  258. package/dist/link/link.mjs +1 -1
  259. package/dist/list/index.js +39 -31
  260. package/dist/list/index.js.map +1 -1
  261. package/dist/list/index.mjs +2 -2
  262. package/dist/list/link-list.d.mts +1 -1
  263. package/dist/list/link-list.d.ts +1 -1
  264. package/dist/list/link-list.js +39 -31
  265. package/dist/list/link-list.js.map +1 -1
  266. package/dist/list/link-list.mjs +2 -2
  267. package/dist/list/list.d.mts +1 -1
  268. package/dist/list/list.d.ts +1 -1
  269. package/dist/list/list.js +26 -26
  270. package/dist/list/list.js.map +1 -1
  271. package/dist/list/list.mjs +1 -1
  272. package/dist/message/index.js +10 -5
  273. package/dist/message/index.js.map +1 -1
  274. package/dist/message/index.mjs +3 -3
  275. package/dist/message/message.js +10 -5
  276. package/dist/message/message.js.map +1 -1
  277. package/dist/message/message.mjs +2 -2
  278. package/dist/modal/index.d.mts +0 -1
  279. package/dist/modal/index.d.ts +0 -1
  280. package/dist/modal/index.js +17 -13
  281. package/dist/modal/index.js.map +1 -1
  282. package/dist/modal/index.mjs +4 -4
  283. package/dist/modal/modal.d.mts +0 -1
  284. package/dist/modal/modal.d.ts +0 -1
  285. package/dist/modal/modal.js +19 -17
  286. package/dist/modal/modal.js.map +1 -1
  287. package/dist/modal/modal.mjs +5 -7
  288. package/dist/navbar/icons.js.map +1 -1
  289. package/dist/navbar/icons.mjs +1 -1
  290. package/dist/navbar/index.d.mts +7 -1
  291. package/dist/navbar/index.d.ts +7 -1
  292. package/dist/navbar/index.js +87 -39
  293. package/dist/navbar/index.js.map +1 -1
  294. package/dist/navbar/index.mjs +19 -7
  295. package/dist/navbar/navbar-expandable-menu.d.mts +3 -3
  296. package/dist/navbar/navbar-expandable-menu.d.ts +3 -3
  297. package/dist/navbar/navbar-expandable-menu.js +9 -9
  298. package/dist/navbar/navbar-expandable-menu.js.map +1 -1
  299. package/dist/navbar/navbar-expandable-menu.mjs +3 -3
  300. package/dist/navbar/navbar.d.mts +4 -1
  301. package/dist/navbar/navbar.d.ts +4 -1
  302. package/dist/navbar/navbar.js +64 -24
  303. package/dist/navbar/navbar.js.map +1 -1
  304. package/dist/navbar/navbar.mjs +9 -3
  305. package/dist/show-more/index.js +1 -3
  306. package/dist/show-more/index.js.map +1 -1
  307. package/dist/show-more/index.mjs +3 -3
  308. package/dist/show-more/show-more.js.map +1 -1
  309. package/dist/show-more/show-more.mjs +1 -1
  310. package/dist/skeleton/index.js +9 -5
  311. package/dist/skeleton/index.js.map +1 -1
  312. package/dist/skeleton/index.mjs +1 -1
  313. package/dist/skeleton/skeleton.js +9 -5
  314. package/dist/skeleton/skeleton.js.map +1 -1
  315. package/dist/skeleton/skeleton.mjs +1 -1
  316. package/dist/styled-html/index.js +3 -1
  317. package/dist/styled-html/index.js.map +1 -1
  318. package/dist/styled-html/index.mjs +1 -1
  319. package/dist/styled-html/styled-html.js +3 -1
  320. package/dist/styled-html/styled-html.js.map +1 -1
  321. package/dist/styled-html/styled-html.mjs +1 -1
  322. package/dist/tabs/index.d.mts +2 -2
  323. package/dist/tabs/index.d.ts +2 -2
  324. package/dist/tabs/index.js +73 -63
  325. package/dist/tabs/index.js.map +1 -1
  326. package/dist/tabs/index.mjs +5 -5
  327. package/dist/tabs/tabs-content.d.mts +1 -1
  328. package/dist/tabs/tabs-content.d.ts +1 -1
  329. package/dist/tabs/tabs-content.js +10 -5
  330. package/dist/tabs/tabs-content.js.map +1 -1
  331. package/dist/tabs/tabs-content.mjs +1 -1
  332. package/dist/tabs/tabs-list.d.mts +1 -1
  333. package/dist/tabs/tabs-list.d.ts +1 -1
  334. package/dist/tabs/tabs-list.js +60 -57
  335. package/dist/tabs/tabs-list.js.map +1 -1
  336. package/dist/tabs/tabs-list.mjs +2 -2
  337. package/dist/tabs/tabs.js +3 -1
  338. package/dist/tabs/tabs.js.map +1 -1
  339. package/dist/tabs/tabs.mjs +1 -1
  340. package/dist/text/index.d.mts +0 -13
  341. package/dist/text/index.d.ts +0 -13
  342. package/dist/text/index.js +7 -68
  343. package/dist/text/index.js.map +1 -1
  344. package/dist/text/index.mjs +3 -30
  345. package/dist/text/text.js +5 -2
  346. package/dist/text/text.js.map +1 -1
  347. package/dist/text/text.mjs +1 -1
  348. package/dist/utilities/auto-animate-height.js +1 -3
  349. package/dist/utilities/auto-animate-height.js.map +1 -1
  350. package/dist/utilities/auto-animate-height.mjs +2 -2
  351. package/dist/utilities/index.js +1 -3
  352. package/dist/utilities/index.js.map +1 -1
  353. package/dist/utilities/index.mjs +2 -2
  354. package/dist/utils.d.mts +0 -1
  355. package/dist/utils.d.ts +0 -1
  356. package/dist/utils.js.map +1 -1
  357. package/dist/utils.mjs +1 -1
  358. package/dist/warning-banner/index.js +34 -46
  359. package/dist/warning-banner/index.js.map +1 -1
  360. package/dist/warning-banner/index.mjs +3 -3
  361. package/dist/warning-banner/warning-banner.js +34 -46
  362. package/dist/warning-banner/warning-banner.js.map +1 -1
  363. package/dist/warning-banner/warning-banner.mjs +3 -3
  364. package/package.json +5 -5
  365. package/dist/chunk-25R7DBK6.mjs.map +0 -1
  366. package/dist/chunk-57SSGJ4X.mjs.map +0 -1
  367. package/dist/chunk-5QL53TR2.mjs.map +0 -1
  368. package/dist/chunk-625SVQEP.mjs +0 -84
  369. package/dist/chunk-625SVQEP.mjs.map +0 -1
  370. package/dist/chunk-62F4I3MQ.mjs.map +0 -1
  371. package/dist/chunk-A47QULAK.mjs.map +0 -1
  372. package/dist/chunk-BWFFP6BB.mjs.map +0 -1
  373. package/dist/chunk-E2RTLHMZ.mjs.map +0 -1
  374. package/dist/chunk-EGXM575K.mjs.map +0 -1
  375. package/dist/chunk-FYNTNGIY.mjs +0 -61
  376. package/dist/chunk-FYNTNGIY.mjs.map +0 -1
  377. package/dist/chunk-GGEQEVZ4.mjs.map +0 -1
  378. package/dist/chunk-GJDRW6PA.mjs +0 -22
  379. package/dist/chunk-GJDRW6PA.mjs.map +0 -1
  380. package/dist/chunk-GUB3UCXO.mjs +0 -38
  381. package/dist/chunk-GUB3UCXO.mjs.map +0 -1
  382. package/dist/chunk-I6GDRDYD.mjs.map +0 -1
  383. package/dist/chunk-IL7576PP.mjs +0 -19
  384. package/dist/chunk-IL7576PP.mjs.map +0 -1
  385. package/dist/chunk-JXA3B33M.mjs.map +0 -1
  386. package/dist/chunk-ME66RUR6.mjs.map +0 -1
  387. package/dist/chunk-MF2AREPQ.mjs +0 -28
  388. package/dist/chunk-MF2AREPQ.mjs.map +0 -1
  389. package/dist/chunk-MGUYIOP2.mjs.map +0 -1
  390. package/dist/chunk-MKC7HZCM.mjs.map +0 -1
  391. package/dist/chunk-PMLDK3VC.mjs +0 -39
  392. package/dist/chunk-PMLDK3VC.mjs.map +0 -1
  393. package/dist/chunk-PUESATBQ.mjs.map +0 -1
  394. package/dist/chunk-PYR6QEIS.mjs.map +0 -1
  395. package/dist/chunk-S3BGPCLK.mjs.map +0 -1
  396. package/dist/chunk-S5RB7KLJ.mjs.map +0 -1
  397. package/dist/chunk-SRLRTLHS.mjs +0 -106
  398. package/dist/chunk-SRLRTLHS.mjs.map +0 -1
  399. package/dist/chunk-UWTGHSWT.mjs.map +0 -1
  400. package/dist/chunk-UXJIK76H.mjs.map +0 -1
  401. package/dist/chunk-VRIY65P5.mjs.map +0 -1
  402. package/dist/chunk-VVPJOVFP.mjs.map +0 -1
  403. package/dist/chunk-W3D4VR4Y.mjs +0 -61
  404. package/dist/chunk-W3D4VR4Y.mjs.map +0 -1
  405. package/dist/chunk-X5JERDDU.mjs +0 -131
  406. package/dist/chunk-X5JERDDU.mjs.map +0 -1
  407. package/dist/chunk-XE4UZBL2.mjs +0 -33
  408. package/dist/chunk-XE4UZBL2.mjs.map +0 -1
  409. package/dist/chunk-XVFQWVHO.mjs.map +0 -1
  410. package/dist/chunk-YXHXRUFX.mjs +0 -42
  411. package/dist/chunk-YXHXRUFX.mjs.map +0 -1
  412. package/dist/chunk-Z753E3XF.mjs.map +0 -1
  413. package/dist/chunk-ZDPU3N54.mjs.map +0 -1
  414. /package/dist/{chunk-NMMFIRLZ.mjs.map → chunk-3NL3TOZF.mjs.map} +0 -0
  415. /package/dist/{chunk-DM4PJFLG.mjs.map → chunk-6N4TGRZB.mjs.map} +0 -0
  416. /package/dist/{chunk-JDXYRFLJ.mjs.map → chunk-722MZPXO.mjs.map} +0 -0
  417. /package/dist/{chunk-HMB4TY2F.mjs.map → chunk-7W4HONVO.mjs.map} +0 -0
  418. /package/dist/{chunk-YC7MT6SO.mjs.map → chunk-A4ME3VXV.mjs.map} +0 -0
  419. /package/dist/{chunk-4GSNPCNT.mjs.map → chunk-CYEYGPRH.mjs.map} +0 -0
  420. /package/dist/{chunk-E2AG5TUR.mjs.map → chunk-DCCQXWD6.mjs.map} +0 -0
  421. /package/dist/{chunk-EJ7ANN7M.mjs.map → chunk-IKJJWKXM.mjs.map} +0 -0
  422. /package/dist/{chunk-KTRIVJM3.mjs.map → chunk-JL4PLDXN.mjs.map} +0 -0
  423. /package/dist/{chunk-CSAEHQ4R.mjs.map → chunk-LTTJWLS7.mjs.map} +0 -0
  424. /package/dist/{chunk-DFH4YKQA.mjs.map → chunk-NAIBK23T.mjs.map} +0 -0
  425. /package/dist/{chunk-TNU64NUN.mjs.map → chunk-P6WIBHQH.mjs.map} +0 -0
  426. /package/dist/{chunk-5YMUST7H.mjs.map → chunk-QY2K3GWU.mjs.map} +0 -0
  427. /package/dist/{chunk-6NGF7FFY.mjs.map → chunk-RYM3LM7K.mjs.map} +0 -0
  428. /package/dist/{chunk-RHCMBJOT.mjs.map → chunk-UMYOYHUI.mjs.map} +0 -0
  429. /package/dist/{chunk-XYIY6FHW.mjs.map → chunk-ZMLHJZQK.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/skeleton/index.ts","../../src/skeleton/skeleton.tsx"],"sourcesContent":["export { Skeleton } from \"./skeleton\";\nexport type * from \"./skeleton\";\n","import * as React from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { forwardRef } from \"react\";\nimport type { OverridableComponent } from \"../utils\";\n\ninterface DimensionsFromWidthAndHeight {\n height?: number | string;\n width?: number | string;\n}\n\ninterface SkeletonPropsInner extends React.AnchorHTMLAttributes<HTMLDivElement> {\n /**\n * The visual style of the Skeleton\n */\n variant?: \"text\" | \"circle\" | \"rectangle\" | \"rounded\";\n\n /**\n * Whether to show animation or not\n * In the future the animation effect might become configurable\n *\n * default true\n */\n animation?: boolean;\n\n children?: React.ReactNode;\n}\n\nexport type SkeletonProps = SkeletonPropsInner & DimensionsFromWidthAndHeight;\n\n/**\n * Make skeleton loading states as placeholders for your content while waiting for data to load.\n *\n * **Note**\n *\n * Consider if this is really needed. The best experience is to avoid loading states altogether.\n * If your loading takes under 1 second, it better to not show anything at all.\n *\n * - Make your backend faster\n * - Preload/prefetch data\n * - Avoid data loading waterfalls\n * - Use optimistic ui when doing mutations\n *\n * **Usage**\n *\n * ```tsx\n * <Skeleton variant=\"circle\" width=\"2rem\" height=\"2rem\" />\n * <Skeleton variant=\"text\" />\n * <Skeleton variant=\"text\" width=\"80%\" />\n * <Skeleton variant=\"text\">Uses content to determine width</Skeleton>\n * <Skeleton variant=\"rectangle\" width=\"300px\" height=\"400px\" />\n * ```\n *\n * Remember to set `aria-hidden` on top level components you use that are not the `Skeleton` component.\n *\n * The `Skeleton` component does this for it self, but if you are using other components higher up in the tree, it might cause problems with screen readers\n *\n * **References**\n * - https://aksel.nav.no/komponenter/core/skeleton\n * - https://chakra-ui.com/docs/components/skeleton\n * - https://mui.com/material-ui/react-skeleton/\n */\nexport const Skeleton: OverridableComponent<SkeletonProps, HTMLDivElement> = forwardRef(\n (\n {\n as: Component = \"div\",\n children,\n animation = true,\n variant = \"text\",\n width,\n height,\n className,\n style,\n ...rest\n },\n ref,\n ) => {\n return (\n <Component\n className={clsx(\n \"hds-skeleton\",\n `hds-skeleton--${variant}`,\n !animation && `hds-skeleton--no-animation`,\n className as undefined,\n )}\n style={{ ...style, width, height }}\n ref={ref}\n aria-hidden\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\nSkeleton.displayName = \"Skeleton\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;AACvB,6BAAqB;AACrB,mBAA2B;AA2ErB;AAhBC,IAAM,eAAgE;AAAA,EAC3E,CACE,IAWA,QACG;AAZH,iBACE;AAAA,UAAI,YAAY;AAAA,MAChB;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAvEN,IA+DI,IASK,iBATL,IASK;AAAA,MARH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,iBAAiB,OAAO;AAAA,UACxB,CAAC,aAAa;AAAA,UACd;AAAA,QACF;AAAA,QACA,OAAO,iCAAK,QAAL,EAAY,OAAO,OAAO;AAAA,QACjC;AAAA,QACA,eAAW;AAAA,SACP,OAVL;AAAA,QAYE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/skeleton/index.ts","../../src/skeleton/skeleton.tsx"],"sourcesContent":["export { Skeleton } from \"./skeleton\";\nexport type * from \"./skeleton\";\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment -- Typings for the differnt html elements */\n/* eslint-disable @typescript-eslint/no-explicit-any -- Typings for the differnt html elements */\n\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\n\ninterface DimensionsFromWidthAndHeight {\n height?: number | string;\n width?: number | string;\n}\n\ninterface SkeletonPropsInner extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * The visual style of the Skeleton\n */\n variant?: \"text\" | \"circle\" | \"rectangle\" | \"rounded\";\n\n /**\n * Whether to show animation or not\n * In the future the animation effect might become configurable\n *\n * default true\n */\n animation?: boolean;\n\n children?: React.ReactNode;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n\n /**\n * Convienence prop to change the rendered element.\n *\n * Use {@link SkeletonProps.asChild} if you need more control of the rendered element.\n */\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | \"div\" | \"label\" | \"p\";\n}\n\nexport type SkeletonProps = SkeletonPropsInner & DimensionsFromWidthAndHeight;\n\n/**\n * Make skeleton loading states as placeholders for your content while waiting for data to load.\n *\n * **Note**\n *\n * Consider if this is really needed. The best experience is to avoid loading states altogether.\n * If your loading takes under 1 second, it better to not show anything at all.\n *\n * - Make your backend faster\n * - Preload/prefetch data\n * - Avoid data loading waterfalls\n * - Use optimistic ui when doing mutations\n *\n * **Usage**\n *\n * ```tsx\n * <Skeleton variant=\"circle\" width=\"2rem\" height=\"2rem\" />\n * <Skeleton variant=\"text\" />\n * <Skeleton variant=\"text\" width=\"80%\" />\n * <Skeleton variant=\"text\">Uses content to determine width</Skeleton>\n * <Skeleton variant=\"rectangle\" width=\"300px\" height=\"400px\" />\n * ```\n *\n * Remember to set `aria-hidden` on top level components you use that are not the `Skeleton` component.\n *\n * The `Skeleton` component does this for it self, but if you are using other components higher up in the tree, it might cause problems with screen readers\n *\n * **References**\n * - https://aksel.nav.no/komponenter/core/skeleton\n * - https://chakra-ui.com/docs/components/skeleton\n * - https://mui.com/material-ui/react-skeleton/\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n as: Tag = \"div\",\n asChild,\n children,\n animation = true,\n variant = \"text\",\n width,\n height,\n className,\n style,\n ...rest\n },\n ref,\n ) => {\n const Component = asChild ? Slot : Tag;\n return (\n <Component\n className={clsx(\n \"hds-skeleton\",\n `hds-skeleton--${variant}`,\n !animation && `hds-skeleton--no-animation`,\n className as undefined,\n )}\n style={{ ...style, width, height }}\n aria-hidden\n {...{ inert: \"true\" }}\n ref={ref as any}\n {...(rest as any)}\n >\n {children}\n </Component>\n );\n },\n);\nSkeleton.displayName = \"Skeleton\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,6BAAqB;AACrB,wBAAqB;AACrB,mBAA2B;AA0FrB;AAlBC,IAAM,eAAW;AAAA,EACtB,CACE,IAYA,QACG;AAbH,iBACE;AAAA,UAAI,MAAM;AAAA,MACV;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAxFN,IA+EI,IAUK,iBAVL,IAUK;AAAA,MATH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,YAAY,UAAU,yBAAO;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,iBAAiB,OAAO;AAAA,UACxB,CAAC,aAAa;AAAA,UACd;AAAA,QACF;AAAA,QACA,OAAO,iCAAK,QAAL,EAAY,OAAO,OAAO;AAAA,QACjC,eAAW;AAAA,SACP,EAAE,OAAO,OAAO,IATrB;AAAA,QAUC;AAAA,UACK,OAXN;AAAA,QAaE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import "../chunk-JTZPQHKD.mjs";
2
2
  import {
3
3
  Skeleton
4
- } from "../chunk-A47QULAK.mjs";
4
+ } from "../chunk-JF3HBGAA.mjs";
5
5
  import "../chunk-R4SQKVDQ.mjs";
6
6
  export {
7
7
  Skeleton
@@ -52,14 +52,15 @@ __export(skeleton_exports, {
52
52
  Skeleton: () => Skeleton
53
53
  });
54
54
  module.exports = __toCommonJS(skeleton_exports);
55
- var React = require("react");
56
55
  var import_typed_classname = require("@postenbring/hedwig-css/typed-classname");
56
+ var import_react_slot = require("@radix-ui/react-slot");
57
57
  var import_react = require("react");
58
58
  var import_jsx_runtime = require("react/jsx-runtime");
59
59
  var Skeleton = (0, import_react.forwardRef)(
60
60
  (_a, ref) => {
61
61
  var _b = _a, {
62
- as: Component = "div",
62
+ as: Tag = "div",
63
+ asChild,
63
64
  children,
64
65
  animation = true,
65
66
  variant = "text",
@@ -69,6 +70,7 @@ var Skeleton = (0, import_react.forwardRef)(
69
70
  style
70
71
  } = _b, rest = __objRest(_b, [
71
72
  "as",
73
+ "asChild",
72
74
  "children",
73
75
  "animation",
74
76
  "variant",
@@ -77,9 +79,10 @@ var Skeleton = (0, import_react.forwardRef)(
77
79
  "className",
78
80
  "style"
79
81
  ]);
82
+ const Component = asChild ? import_react_slot.Slot : Tag;
80
83
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
81
84
  Component,
82
- __spreadProps(__spreadValues({
85
+ __spreadProps(__spreadValues(__spreadProps(__spreadValues({
83
86
  className: (0, import_typed_classname.clsx)(
84
87
  "hds-skeleton",
85
88
  `hds-skeleton--${variant}`,
@@ -87,9 +90,10 @@ var Skeleton = (0, import_react.forwardRef)(
87
90
  className
88
91
  ),
89
92
  style: __spreadProps(__spreadValues({}, style), { width, height }),
90
- ref,
91
93
  "aria-hidden": true
92
- }, rest), {
94
+ }, { inert: "true" }), {
95
+ ref
96
+ }), rest), {
93
97
  children
94
98
  })
95
99
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/skeleton/skeleton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { forwardRef } from \"react\";\nimport type { OverridableComponent } from \"../utils\";\n\ninterface DimensionsFromWidthAndHeight {\n height?: number | string;\n width?: number | string;\n}\n\ninterface SkeletonPropsInner extends React.AnchorHTMLAttributes<HTMLDivElement> {\n /**\n * The visual style of the Skeleton\n */\n variant?: \"text\" | \"circle\" | \"rectangle\" | \"rounded\";\n\n /**\n * Whether to show animation or not\n * In the future the animation effect might become configurable\n *\n * default true\n */\n animation?: boolean;\n\n children?: React.ReactNode;\n}\n\nexport type SkeletonProps = SkeletonPropsInner & DimensionsFromWidthAndHeight;\n\n/**\n * Make skeleton loading states as placeholders for your content while waiting for data to load.\n *\n * **Note**\n *\n * Consider if this is really needed. The best experience is to avoid loading states altogether.\n * If your loading takes under 1 second, it better to not show anything at all.\n *\n * - Make your backend faster\n * - Preload/prefetch data\n * - Avoid data loading waterfalls\n * - Use optimistic ui when doing mutations\n *\n * **Usage**\n *\n * ```tsx\n * <Skeleton variant=\"circle\" width=\"2rem\" height=\"2rem\" />\n * <Skeleton variant=\"text\" />\n * <Skeleton variant=\"text\" width=\"80%\" />\n * <Skeleton variant=\"text\">Uses content to determine width</Skeleton>\n * <Skeleton variant=\"rectangle\" width=\"300px\" height=\"400px\" />\n * ```\n *\n * Remember to set `aria-hidden` on top level components you use that are not the `Skeleton` component.\n *\n * The `Skeleton` component does this for it self, but if you are using other components higher up in the tree, it might cause problems with screen readers\n *\n * **References**\n * - https://aksel.nav.no/komponenter/core/skeleton\n * - https://chakra-ui.com/docs/components/skeleton\n * - https://mui.com/material-ui/react-skeleton/\n */\nexport const Skeleton: OverridableComponent<SkeletonProps, HTMLDivElement> = forwardRef(\n (\n {\n as: Component = \"div\",\n children,\n animation = true,\n variant = \"text\",\n width,\n height,\n className,\n style,\n ...rest\n },\n ref,\n ) => {\n return (\n <Component\n className={clsx(\n \"hds-skeleton\",\n `hds-skeleton--${variant}`,\n !animation && `hds-skeleton--no-animation`,\n className as undefined,\n )}\n style={{ ...style, width, height }}\n ref={ref}\n aria-hidden\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\nSkeleton.displayName = \"Skeleton\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,6BAAqB;AACrB,mBAA2B;AA2ErB;AAhBC,IAAM,eAAgE;AAAA,EAC3E,CACE,IAWA,QACG;AAZH,iBACE;AAAA,UAAI,YAAY;AAAA,MAChB;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAvEN,IA+DI,IASK,iBATL,IASK;AAAA,MARH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,iBAAiB,OAAO;AAAA,UACxB,CAAC,aAAa;AAAA,UACd;AAAA,QACF;AAAA,QACA,OAAO,iCAAK,QAAL,EAAY,OAAO,OAAO;AAAA,QACjC;AAAA,QACA,eAAW;AAAA,SACP,OAVL;AAAA,QAYE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/skeleton/skeleton.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment -- Typings for the differnt html elements */\n/* eslint-disable @typescript-eslint/no-explicit-any -- Typings for the differnt html elements */\n\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\n\ninterface DimensionsFromWidthAndHeight {\n height?: number | string;\n width?: number | string;\n}\n\ninterface SkeletonPropsInner extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * The visual style of the Skeleton\n */\n variant?: \"text\" | \"circle\" | \"rectangle\" | \"rounded\";\n\n /**\n * Whether to show animation or not\n * In the future the animation effect might become configurable\n *\n * default true\n */\n animation?: boolean;\n\n children?: React.ReactNode;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n\n /**\n * Convienence prop to change the rendered element.\n *\n * Use {@link SkeletonProps.asChild} if you need more control of the rendered element.\n */\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | \"div\" | \"label\" | \"p\";\n}\n\nexport type SkeletonProps = SkeletonPropsInner & DimensionsFromWidthAndHeight;\n\n/**\n * Make skeleton loading states as placeholders for your content while waiting for data to load.\n *\n * **Note**\n *\n * Consider if this is really needed. The best experience is to avoid loading states altogether.\n * If your loading takes under 1 second, it better to not show anything at all.\n *\n * - Make your backend faster\n * - Preload/prefetch data\n * - Avoid data loading waterfalls\n * - Use optimistic ui when doing mutations\n *\n * **Usage**\n *\n * ```tsx\n * <Skeleton variant=\"circle\" width=\"2rem\" height=\"2rem\" />\n * <Skeleton variant=\"text\" />\n * <Skeleton variant=\"text\" width=\"80%\" />\n * <Skeleton variant=\"text\">Uses content to determine width</Skeleton>\n * <Skeleton variant=\"rectangle\" width=\"300px\" height=\"400px\" />\n * ```\n *\n * Remember to set `aria-hidden` on top level components you use that are not the `Skeleton` component.\n *\n * The `Skeleton` component does this for it self, but if you are using other components higher up in the tree, it might cause problems with screen readers\n *\n * **References**\n * - https://aksel.nav.no/komponenter/core/skeleton\n * - https://chakra-ui.com/docs/components/skeleton\n * - https://mui.com/material-ui/react-skeleton/\n */\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n as: Tag = \"div\",\n asChild,\n children,\n animation = true,\n variant = \"text\",\n width,\n height,\n className,\n style,\n ...rest\n },\n ref,\n ) => {\n const Component = asChild ? Slot : Tag;\n return (\n <Component\n className={clsx(\n \"hds-skeleton\",\n `hds-skeleton--${variant}`,\n !animation && `hds-skeleton--no-animation`,\n className as undefined,\n )}\n style={{ ...style, width, height }}\n aria-hidden\n {...{ inert: \"true\" }}\n ref={ref as any}\n {...(rest as any)}\n >\n {children}\n </Component>\n );\n },\n);\nSkeleton.displayName = \"Skeleton\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,6BAAqB;AACrB,wBAAqB;AACrB,mBAA2B;AA0FrB;AAlBC,IAAM,eAAW;AAAA,EACtB,CACE,IAYA,QACG;AAbH,iBACE;AAAA,UAAI,MAAM;AAAA,MACV;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAxFN,IA+EI,IAUK,iBAVL,IAUK;AAAA,MATH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,YAAY,UAAU,yBAAO;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,iBAAiB,OAAO;AAAA,UACxB,CAAC,aAAa;AAAA,UACd;AAAA,QACF;AAAA,QACA,OAAO,iCAAK,QAAL,EAAY,OAAO,OAAO;AAAA,QACjC,eAAW;AAAA,SACP,EAAE,OAAO,OAAO,IATrB;AAAA,QAUC;AAAA,UACK,OAXN;AAAA,QAaE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Skeleton
3
- } from "../chunk-A47QULAK.mjs";
3
+ } from "../chunk-JF3HBGAA.mjs";
4
4
  import "../chunk-R4SQKVDQ.mjs";
5
5
  export {
6
6
  Skeleton
@@ -56,10 +56,12 @@ module.exports = __toCommonJS(styled_html_exports);
56
56
  // src/styled-html/styled-html.tsx
57
57
  var import_react = require("react");
58
58
  var import_typed_classname = require("@postenbring/hedwig-css/typed-classname");
59
+ var import_react_slot = require("@radix-ui/react-slot");
59
60
  var import_jsx_runtime = require("react/jsx-runtime");
60
61
  var StyledHtml = (0, import_react.forwardRef)(
61
62
  (_a, ref) => {
62
- var _b = _a, { as: Component = "div", children, size, darkmode = false, className } = _b, rest = __objRest(_b, ["as", "children", "size", "darkmode", "className"]);
63
+ var _b = _a, { asChild, children, size, darkmode = false, className } = _b, rest = __objRest(_b, ["asChild", "children", "size", "darkmode", "className"]);
64
+ const Component = asChild ? import_react_slot.Slot : "div";
63
65
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
64
66
  Component,
65
67
  __spreadProps(__spreadValues({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/styled-html/index.ts","../../src/styled-html/styled-html.tsx"],"sourcesContent":["export { StyledHtml } from \"./styled-html\";\nexport type * from \"./styled-html\";\n","import React, { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport type { OverridableComponent } from \"../utils\";\n\nexport interface StyledHtmlProps {\n children?: React.ReactNode;\n size?: \"default\" | \"small\";\n darkmode?: boolean;\n}\n\n/**\n * A component for displaying dynamic content that you want to apply hedwig styling to.\n * the styling depends on the semantic html elements you use inside the component.\n *\n * Useful when you have dynamic content that you want styled with hedwig, like content from a CMS.\n *\n * Previously known as `hw-wysiwyg` in hedwig legacy. In tailwind this kind of component it is known as `prose`.\n *\n * ```tsx\n * <StyledHtml>\n * <h1>Heading 1</h1>\n * <h2>Heading 2</h2>\n * <a href=\"https://www.postenbring.no\">Postenbring</a>\n * <ul>\n * <li>Hei</li>\n * <li>Hallo</li>\n * <li>Hello</li>\n * </ul>\n * </StyledHtml>\n * ```\n */\nexport const StyledHtml: OverridableComponent<StyledHtmlProps, HTMLDivElement> = forwardRef(\n ({ as: Component = \"div\", children, size, darkmode = false, className, ...rest }, ref) => {\n return (\n <Component\n className={clsx(\n `hds-styled-html`,\n size === \"small\" && \"hds-styled-html--small\",\n darkmode && \"hds-styled-html--darkmode\",\n className as undefined,\n )}\n ref={ref}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\nStyledHtml.displayName = \"StyledHtml\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAkC;AAClC,6BAAqB;AAiCf;AAHC,IAAM,iBAAoE;AAAA,EAC/E,CAAC,IAAiF,QAAQ;AAAzF,iBAAE,MAAI,YAAY,OAAO,UAAU,MAAM,WAAW,OAAO,UAhC9D,IAgCG,IAAyE,iBAAzE,IAAyE,CAAvE,MAAuB,YAAU,QAAM,YAAkB;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,SAAS,WAAW;AAAA,UACpB,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QACA;AAAA,SACI,OARL;AAAA,QAUE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/styled-html/index.ts","../../src/styled-html/styled-html.tsx"],"sourcesContent":["export { StyledHtml } from \"./styled-html\";\nexport type * from \"./styled-html\";\n","import { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport interface StyledHtmlProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n size?: \"default\" | \"small\";\n darkmode?: boolean;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n}\n\n/**\n * A component for displaying dynamic content that you want to apply hedwig styling to.\n * the styling depends on the semantic html elements you use inside the component.\n *\n * Useful when you have dynamic content that you want styled with hedwig, like content from a CMS.\n *\n * Previously known as `hw-wysiwyg` in hedwig legacy. In tailwind this kind of component it is known as `prose`.\n *\n * @example\n * ```tsx\n * <StyledHtml>\n * <h1>Heading 1</h1>\n * <h2>Heading 2</h2>\n * <a href=\"https://www.postenbring.no\">Postenbring</a>\n * <ul>\n * <li>Hei</li>\n * <li>Hallo</li>\n * <li>Hello</li>\n * </ul>\n * </StyledHtml>\n * ```\n */\nexport const StyledHtml = forwardRef<HTMLDivElement, StyledHtmlProps>(\n ({ asChild, children, size, darkmode = false, className, ...rest }, ref) => {\n const Component = asChild ? Slot : \"div\";\n return (\n <Component\n className={clsx(\n `hds-styled-html`,\n size === \"small\" && \"hds-styled-html--small\",\n darkmode && \"hds-styled-html--darkmode\",\n className as undefined,\n )}\n ref={ref}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\nStyledHtml.displayName = \"StyledHtml\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAA2B;AAC3B,6BAAqB;AACrB,wBAAqB;AAyCf;AAJC,IAAM,iBAAa;AAAA,EACxB,CAAC,IAAmE,QAAQ;AAA3E,iBAAE,WAAS,UAAU,MAAM,WAAW,OAAO,UAxChD,IAwCG,IAA2D,iBAA3D,IAA2D,CAAzD,WAAS,YAAU,QAAM,YAAkB;AAC5C,UAAM,YAAY,UAAU,yBAAO;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,SAAS,WAAW;AAAA,UACpB,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QACA;AAAA,SACI,OARL;AAAA,QAUE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import "../chunk-JKCVB5TR.mjs";
2
2
  import {
3
3
  StyledHtml
4
- } from "../chunk-S5RB7KLJ.mjs";
4
+ } from "../chunk-I3ZIMS72.mjs";
5
5
  import "../chunk-R4SQKVDQ.mjs";
6
6
  export {
7
7
  StyledHtml
@@ -54,10 +54,12 @@ __export(styled_html_exports, {
54
54
  module.exports = __toCommonJS(styled_html_exports);
55
55
  var import_react = require("react");
56
56
  var import_typed_classname = require("@postenbring/hedwig-css/typed-classname");
57
+ var import_react_slot = require("@radix-ui/react-slot");
57
58
  var import_jsx_runtime = require("react/jsx-runtime");
58
59
  var StyledHtml = (0, import_react.forwardRef)(
59
60
  (_a, ref) => {
60
- var _b = _a, { as: Component = "div", children, size, darkmode = false, className } = _b, rest = __objRest(_b, ["as", "children", "size", "darkmode", "className"]);
61
+ var _b = _a, { asChild, children, size, darkmode = false, className } = _b, rest = __objRest(_b, ["asChild", "children", "size", "darkmode", "className"]);
62
+ const Component = asChild ? import_react_slot.Slot : "div";
61
63
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
62
64
  Component,
63
65
  __spreadProps(__spreadValues({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/styled-html/styled-html.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport type { OverridableComponent } from \"../utils\";\n\nexport interface StyledHtmlProps {\n children?: React.ReactNode;\n size?: \"default\" | \"small\";\n darkmode?: boolean;\n}\n\n/**\n * A component for displaying dynamic content that you want to apply hedwig styling to.\n * the styling depends on the semantic html elements you use inside the component.\n *\n * Useful when you have dynamic content that you want styled with hedwig, like content from a CMS.\n *\n * Previously known as `hw-wysiwyg` in hedwig legacy. In tailwind this kind of component it is known as `prose`.\n *\n * ```tsx\n * <StyledHtml>\n * <h1>Heading 1</h1>\n * <h2>Heading 2</h2>\n * <a href=\"https://www.postenbring.no\">Postenbring</a>\n * <ul>\n * <li>Hei</li>\n * <li>Hallo</li>\n * <li>Hello</li>\n * </ul>\n * </StyledHtml>\n * ```\n */\nexport const StyledHtml: OverridableComponent<StyledHtmlProps, HTMLDivElement> = forwardRef(\n ({ as: Component = \"div\", children, size, darkmode = false, className, ...rest }, ref) => {\n return (\n <Component\n className={clsx(\n `hds-styled-html`,\n size === \"small\" && \"hds-styled-html--small\",\n darkmode && \"hds-styled-html--darkmode\",\n className as undefined,\n )}\n ref={ref}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\nStyledHtml.displayName = \"StyledHtml\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AAClC,6BAAqB;AAiCf;AAHC,IAAM,iBAAoE;AAAA,EAC/E,CAAC,IAAiF,QAAQ;AAAzF,iBAAE,MAAI,YAAY,OAAO,UAAU,MAAM,WAAW,OAAO,UAhC9D,IAgCG,IAAyE,iBAAzE,IAAyE,CAAvE,MAAuB,YAAU,QAAM,YAAkB;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,SAAS,WAAW;AAAA,UACpB,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QACA;AAAA,SACI,OARL;AAAA,QAUE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/styled-html/styled-html.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport interface StyledHtmlProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n size?: \"default\" | \"small\";\n darkmode?: boolean;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n}\n\n/**\n * A component for displaying dynamic content that you want to apply hedwig styling to.\n * the styling depends on the semantic html elements you use inside the component.\n *\n * Useful when you have dynamic content that you want styled with hedwig, like content from a CMS.\n *\n * Previously known as `hw-wysiwyg` in hedwig legacy. In tailwind this kind of component it is known as `prose`.\n *\n * @example\n * ```tsx\n * <StyledHtml>\n * <h1>Heading 1</h1>\n * <h2>Heading 2</h2>\n * <a href=\"https://www.postenbring.no\">Postenbring</a>\n * <ul>\n * <li>Hei</li>\n * <li>Hallo</li>\n * <li>Hello</li>\n * </ul>\n * </StyledHtml>\n * ```\n */\nexport const StyledHtml = forwardRef<HTMLDivElement, StyledHtmlProps>(\n ({ asChild, children, size, darkmode = false, className, ...rest }, ref) => {\n const Component = asChild ? Slot : \"div\";\n return (\n <Component\n className={clsx(\n `hds-styled-html`,\n size === \"small\" && \"hds-styled-html--small\",\n darkmode && \"hds-styled-html--darkmode\",\n className as undefined,\n )}\n ref={ref}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\nStyledHtml.displayName = \"StyledHtml\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2B;AAC3B,6BAAqB;AACrB,wBAAqB;AAyCf;AAJC,IAAM,iBAAa;AAAA,EACxB,CAAC,IAAmE,QAAQ;AAA3E,iBAAE,WAAS,UAAU,MAAM,WAAW,OAAO,UAxChD,IAwCG,IAA2D,iBAA3D,IAA2D,CAAzD,WAAS,YAAU,QAAM,YAAkB;AAC5C,UAAM,YAAY,UAAU,yBAAO;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,SAAS,WAAW;AAAA,UACpB,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,QACA;AAAA,SACI,OARL;AAAA,QAUE;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,WAAW,cAAc;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StyledHtml
3
- } from "../chunk-S5RB7KLJ.mjs";
3
+ } from "../chunk-I3ZIMS72.mjs";
4
4
  import "../chunk-R4SQKVDQ.mjs";
5
5
  export {
6
6
  StyledHtml
@@ -4,7 +4,7 @@ export { TabsTab_alias_2 as TabsTab } from '../_tsup-dts-rollup';
4
4
  export { TabsContents_alias_2 as TabsContents } from '../_tsup-dts-rollup';
5
5
  export { TabsContent_alias_2 as TabsContent } from '../_tsup-dts-rollup';
6
6
  export { TabsProps_alias_2 as TabsProps } from '../_tsup-dts-rollup';
7
- export { TabListProps_alias_2 as TabListProps } from '../_tsup-dts-rollup';
7
+ export { TabsListProps_alias_2 as TabsListProps } from '../_tsup-dts-rollup';
8
8
  export { TabsTabProps_alias_2 as TabsTabProps } from '../_tsup-dts-rollup';
9
- export { TabContentsProps_alias_2 as TabContentsProps } from '../_tsup-dts-rollup';
9
+ export { TabsContentsProps_alias_2 as TabsContentsProps } from '../_tsup-dts-rollup';
10
10
  export { TabsContentProps_alias_2 as TabsContentProps } from '../_tsup-dts-rollup';
@@ -4,7 +4,7 @@ export { TabsTab_alias_2 as TabsTab } from '../_tsup-dts-rollup';
4
4
  export { TabsContents_alias_2 as TabsContents } from '../_tsup-dts-rollup';
5
5
  export { TabsContent_alias_2 as TabsContent } from '../_tsup-dts-rollup';
6
6
  export { TabsProps_alias_2 as TabsProps } from '../_tsup-dts-rollup';
7
- export { TabListProps_alias_2 as TabListProps } from '../_tsup-dts-rollup';
7
+ export { TabsListProps_alias_2 as TabsListProps } from '../_tsup-dts-rollup';
8
8
  export { TabsTabProps_alias_2 as TabsTabProps } from '../_tsup-dts-rollup';
9
- export { TabContentsProps_alias_2 as TabContentsProps } from '../_tsup-dts-rollup';
9
+ export { TabsContentsProps_alias_2 as TabsContentsProps } from '../_tsup-dts-rollup';
10
10
  export { TabsContentProps_alias_2 as TabsContentProps } from '../_tsup-dts-rollup';
@@ -70,6 +70,7 @@ module.exports = __toCommonJS(tabs_exports);
70
70
  // src/tabs/tabs.tsx
71
71
  var import_react2 = require("react");
72
72
  var import_typed_classname = require("@postenbring/hedwig-css/typed-classname");
73
+ var import_react_slot = require("@radix-ui/react-slot");
73
74
 
74
75
  // src/tabs/context.ts
75
76
  var import_react = require("react");
@@ -88,8 +89,9 @@ function useTabsContext() {
88
89
  var import_jsx_runtime = require("react/jsx-runtime");
89
90
  var Tabs = (0, import_react2.forwardRef)(
90
91
  (_a, ref) => {
91
- var _b = _a, { as: Component = "div", defaultTab, children } = _b, rest = __objRest(_b, ["as", "defaultTab", "children"]);
92
+ var _b = _a, { asChild, defaultTab, children } = _b, rest = __objRest(_b, ["asChild", "defaultTab", "children"]);
92
93
  const [activeTabId, setActiveTabId] = (0, import_react2.useState)(defaultTab);
94
+ const Component = asChild ? import_react_slot.Slot : "div";
93
95
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, __spreadProps(__spreadValues({ className: (0, import_typed_classname.clsx)("hds-tabs"), ref }, rest), { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TabsContext.Provider, { value: { activeTabId, toggleActiveTabId: setActiveTabId }, children }) }));
94
96
  }
95
97
  );
@@ -139,72 +141,74 @@ function useHydrated() {
139
141
 
140
142
  // src/tabs/tabs-list.tsx
141
143
  var import_jsx_runtime2 = require("react/jsx-runtime");
142
- function TabsList(_a) {
143
- var _b = _a, { children, direction = "horizontal", className } = _b, rest = __objRest(_b, ["children", "direction", "className"]);
144
- const { activeTabId } = useTabsContext();
145
- const tabsListRef = (0, import_react4.useRef)(null);
146
- const { width: tabsWidth } = useResize(tabsListRef);
147
- const isClientSide = useHydrated();
148
- const { innerWidth } = isClientSide ? window : { innerWidth: 1e3 };
149
- const wideEnough = innerWidth >= tabsWidth;
150
- const previousTabId = (0, import_react4.useRef)(activeTabId);
151
- (0, import_react4.useEffect)(() => {
152
- const tabList = tabsListRef.current;
153
- const activeTab = tabList == null ? void 0 : tabList.querySelector(`[data-tabid="${activeTabId}"]`);
154
- if (!activeTab || !tabList)
155
- return;
156
- const { offsetHeight: containerHeight, offsetWidth: containerWidth } = tabList;
157
- const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = activeTab;
158
- const height = offsetHeight / containerHeight;
159
- const width = offsetWidth / containerWidth;
160
- tabsListRef.current.style.setProperty("--_hds-tabs-marker-height", String(height));
161
- tabsListRef.current.style.setProperty("--_hds-tabs-marker-width", String(width));
162
- tabsListRef.current.style.setProperty("--_hds-tabs-marker-top", `${offsetTop}px`);
163
- tabsListRef.current.style.setProperty("--_hds-tabs-marker-left", `${offsetLeft}px`);
164
- if (previousTabId.current !== activeTabId) {
165
- tabsListRef.current.style.setProperty(
166
- "--_hds-tabs-marker-animated-color",
167
- "var(--_hds-tabs-marker-color)"
168
- );
169
- tabsListRef.current.style.setProperty(
170
- "--_hds-tabs-marker-border-fallback-color",
171
- "transparent"
172
- );
173
- }
174
- previousTabId.current = activeTabId;
175
- }, [activeTabId, innerWidth]);
176
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
177
- "div",
178
- __spreadProps(__spreadValues({
179
- className: (0, import_typed_classname2.clsx)(
180
- "hds-tabs__list",
181
- direction === "horizontal" ? {
182
- "hds-tabs__list--horizontal": wideEnough,
183
- "hds-tabs__list--vertical": !wideEnough
184
- } : {
185
- "hds-tabs__list--vertical": true
186
- },
187
- className
188
- ),
189
- ref: tabsListRef,
190
- role: "tablist"
191
- }, rest), {
192
- children
193
- })
194
- );
195
- }
144
+ var TabsList = (0, import_react4.forwardRef)(
145
+ (_a) => {
146
+ var _b = _a, { children, direction = "horizontal", className } = _b, rest = __objRest(_b, ["children", "direction", "className"]);
147
+ const { activeTabId } = useTabsContext();
148
+ const tabsListRef = (0, import_react4.useRef)(null);
149
+ const { width: tabsWidth } = useResize(tabsListRef);
150
+ const isClientSide = useHydrated();
151
+ const { innerWidth } = isClientSide ? window : { innerWidth: 1e3 };
152
+ const wideEnough = innerWidth >= tabsWidth;
153
+ const previousTabId = (0, import_react4.useRef)(activeTabId);
154
+ (0, import_react4.useEffect)(() => {
155
+ const tabList = tabsListRef.current;
156
+ const activeTab = tabList == null ? void 0 : tabList.querySelector(`[data-tabid="${activeTabId}"]`);
157
+ if (!activeTab || !tabList)
158
+ return;
159
+ const { offsetHeight: containerHeight, offsetWidth: containerWidth } = tabList;
160
+ const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = activeTab;
161
+ const height = offsetHeight / containerHeight;
162
+ const width = offsetWidth / containerWidth;
163
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-height", String(height));
164
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-width", String(width));
165
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-top", `${offsetTop}px`);
166
+ tabsListRef.current.style.setProperty("--_hds-tabs-marker-left", `${offsetLeft}px`);
167
+ if (previousTabId.current !== activeTabId) {
168
+ tabsListRef.current.style.setProperty(
169
+ "--_hds-tabs-marker-animated-color",
170
+ "var(--_hds-tabs-marker-color)"
171
+ );
172
+ tabsListRef.current.style.setProperty(
173
+ "--_hds-tabs-marker-border-fallback-color",
174
+ "transparent"
175
+ );
176
+ }
177
+ previousTabId.current = activeTabId;
178
+ }, [activeTabId, innerWidth]);
179
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
180
+ "div",
181
+ __spreadProps(__spreadValues({
182
+ className: (0, import_typed_classname2.clsx)(
183
+ "hds-tabs__list",
184
+ direction === "horizontal" ? {
185
+ "hds-tabs__list--horizontal": wideEnough,
186
+ "hds-tabs__list--vertical": !wideEnough
187
+ } : {
188
+ "hds-tabs__list--vertical": true
189
+ },
190
+ className
191
+ ),
192
+ ref: tabsListRef,
193
+ role: "tablist"
194
+ }, rest), {
195
+ children
196
+ })
197
+ );
198
+ }
199
+ );
196
200
  TabsList.displayName = "Tabs.List";
197
201
  var TabsTab = (0, import_react4.forwardRef)(
198
202
  (_a, ref) => {
199
- var _b = _a, { as: Component = "button", children, tabId, className, onClick } = _b, rest = __objRest(_b, ["as", "children", "tabId", "className", "onClick"]);
203
+ var _b = _a, { children, tabId, className, onClick } = _b, rest = __objRest(_b, ["children", "tabId", "className", "onClick"]);
200
204
  const context = useTabsContext();
201
205
  const toggleTab = (e) => {
202
206
  e.preventDefault();
203
207
  context.toggleActiveTabId(tabId);
204
- onClick && onClick(e);
208
+ onClick == null ? void 0 : onClick(e);
205
209
  };
206
210
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
207
- Component,
211
+ "button",
208
212
  __spreadProps(__spreadValues({
209
213
  className: (0, import_typed_classname2.clsx)(
210
214
  "hds-tabs__tab",
@@ -214,6 +218,7 @@ var TabsTab = (0, import_react4.forwardRef)(
214
218
  "data-tabid": tabId,
215
219
  onClick: toggleTab,
216
220
  ref,
221
+ type: "button",
217
222
  role: "tab"
218
223
  }, rest), {
219
224
  children
@@ -226,16 +231,21 @@ TabsTab.displayName = "Tabs.Tab";
226
231
  // src/tabs/tabs-content.tsx
227
232
  var import_react5 = require("react");
228
233
  var import_typed_classname3 = require("@postenbring/hedwig-css/typed-classname");
234
+ var import_react_slot2 = require("@radix-ui/react-slot");
229
235
  var import_jsx_runtime3 = require("react/jsx-runtime");
230
- function TabsContents(_a) {
231
- var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
232
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", __spreadProps(__spreadValues({ className: (0, import_typed_classname3.clsx)("hds-tabs__contents") }, rest), { children }));
233
- }
236
+ var TabsContents = (0, import_react5.forwardRef)(
237
+ (_a, ref) => {
238
+ var _b = _a, { asChild, children } = _b, rest = __objRest(_b, ["asChild", "children"]);
239
+ const Component = asChild ? import_react_slot2.Slot : "div";
240
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Component, __spreadProps(__spreadValues({ ref, className: (0, import_typed_classname3.clsx)("hds-tabs__contents") }, rest), { children }));
241
+ }
242
+ );
234
243
  TabsContents.displayName = "Tabs.Contents";
235
244
  var TabsContent = (0, import_react5.forwardRef)(
236
245
  (_a, ref) => {
237
- var _b = _a, { as: Component = "div", forTabId, children } = _b, rest = __objRest(_b, ["as", "forTabId", "children"]);
246
+ var _b = _a, { asChild, forTabId, children } = _b, rest = __objRest(_b, ["asChild", "forTabId", "children"]);
238
247
  const context = useTabsContext();
248
+ const Component = asChild ? import_react_slot2.Slot : "div";
239
249
  if (context.activeTabId === forTabId) {
240
250
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Component, __spreadProps(__spreadValues({}, rest), { ref, children }));
241
251
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tabs/index.tsx","../../src/tabs/tabs.tsx","../../src/tabs/context.ts","../../src/tabs/tabs-list.tsx","../../src/utils.ts","../../src/tabs/tabs-content.tsx"],"sourcesContent":["import { Tabs } from \"./tabs\";\nimport { TabsList, TabsTab } from \"./tabs-list\";\nimport { TabsContents, TabsContent } from \"./tabs-content\";\n\nconst TabsComponent = Tabs as typeof Tabs & {\n List: typeof TabsList;\n Tab: typeof TabsTab;\n Contents: typeof TabsContents;\n Content: typeof TabsContent;\n};\nTabsComponent.List = TabsList;\nTabsComponent.Tab = TabsTab;\nTabsComponent.Contents = TabsContents;\nTabsComponent.Content = TabsContent;\n\nexport { TabsComponent as Tabs, TabsList, TabsTab, TabsContents, TabsContent };\n\nexport type * from \"./tabs\";\nexport type * from \"./tabs-list\";\nexport type * from \"./tabs-content\";\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { forwardRef, useState } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport type { OverridableComponent } from \"../utils\";\nimport { TabsContext } from \"./context\";\nimport type { TabContentsProps } from \"./tabs-content\";\nimport type { TabListProps } from \"./tabs-list\";\n\nexport interface TabsProps extends HTMLAttributes<HTMLElement> {\n children: ReactElement<TabListProps | TabContentsProps>[] | ReactElement;\n\n /**\n * Define which tab to use as default. Must be one of the <Tab/>s identifier.\n */\n defaultTab: string;\n}\n\nexport const Tabs: OverridableComponent<TabsProps, HTMLDivElement> = forwardRef(\n ({ as: Component = \"div\", defaultTab, children, ...rest }, ref) => {\n const [activeTabId, setActiveTabId] = useState<string>(defaultTab);\n return (\n <Component className={clsx(\"hds-tabs\")} ref={ref} {...rest}>\n <TabsContext.Provider value={{ activeTabId, toggleActiveTabId: setActiveTabId }}>\n {children}\n </TabsContext.Provider>\n </Component>\n );\n },\n);\n\nTabs.displayName = \"Tabs\";\n","import { createContext, useContext } from \"react\";\n\nexport interface TabsContextProps {\n activeTabId: string;\n toggleActiveTabId: (tabId: string) => void;\n}\n\nexport const TabsContext = createContext<TabsContextProps | null>(null);\n\nexport function useTabsContext() {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\n \"Tabs context required. Did you use `<Tabs.List />`, `<Tabs.Tab />`, or `<Tabs.Content />` outside of <Tabs/>?\",\n );\n }\n return context;\n}\n","import type { HTMLAttributes, ReactElement, MouseEvent } from \"react\";\nimport { forwardRef, useEffect, useRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { type OverridableComponent, useResize, useHydrated } from \"../utils\";\nimport { useTabsContext } from \"./context\";\n\nexport interface TabListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement<TabsTabProps> | ReactElement<TabsTabProps>[];\n\n /**\n * Direction of the tabs. Can either be vertical or horizontal.\n * Horizontal breaks on window width with fallback back to vertical\n */\n direction?: \"vertical\" | \"horizontal\";\n}\n\nexport function TabsList({ children, direction = \"horizontal\", className, ...rest }: TabListProps) {\n const { activeTabId } = useTabsContext();\n const tabsListRef = useRef<HTMLDivElement>(null);\n const { width: tabsWidth } = useResize(tabsListRef);\n\n const isClientSide = useHydrated();\n const { innerWidth } = isClientSide ? window : { innerWidth: 1000 };\n const wideEnough = innerWidth >= tabsWidth;\n\n const previousTabId = useRef(activeTabId);\n\n // Marker animation\n useEffect(() => {\n const tabList = tabsListRef.current;\n const activeTab = tabList?.querySelector(`[data-tabid=\"${activeTabId}\"]`);\n if (!activeTab || !tabList) return;\n\n const { offsetHeight: containerHeight, offsetWidth: containerWidth } = tabList;\n const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = activeTab as HTMLElement;\n\n // Calculate the height and width of the marker relative to the container\n const height = offsetHeight / containerHeight;\n const width = offsetWidth / containerWidth;\n\n // NOTE: Doing a DOM manipulation here to set the CSS variables for the marker\n // Not really the react idomatic way, but as long as it works we are able to skip some intermidiate `useState`\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-height\", String(height));\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-width\", String(width));\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-top\", `${offsetTop}px`);\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-left\", `${offsetLeft}px`);\n\n // Start with border fallback, then switch to the animated marker when the user changes tabs\n // This way the marker is placed immediately to the default tab, then animates smoothly to the next when selected\n if (previousTabId.current !== activeTabId) {\n tabsListRef.current.style.setProperty(\n \"--_hds-tabs-marker-animated-color\",\n \"var(--_hds-tabs-marker-color)\",\n );\n tabsListRef.current.style.setProperty(\n \"--_hds-tabs-marker-border-fallback-color\",\n \"transparent\",\n );\n }\n previousTabId.current = activeTabId;\n }, [activeTabId, innerWidth]);\n\n return (\n <div\n className={clsx(\n \"hds-tabs__list\",\n direction === \"horizontal\"\n ? {\n \"hds-tabs__list--horizontal\": wideEnough,\n \"hds-tabs__list--vertical\": !wideEnough,\n }\n : {\n \"hds-tabs__list--vertical\": true,\n },\n className as undefined,\n )}\n ref={tabsListRef}\n role=\"tablist\"\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nTabsList.displayName = \"Tabs.List\";\n\nexport interface TabsTabProps extends HTMLAttributes<HTMLButtonElement> {\n children: ReactElement<HTMLElement> | string;\n\n /**\n * Identifier for the tab\n */\n tabId: string;\n}\n\nexport const TabsTab: OverridableComponent<TabsTabProps, HTMLButtonElement> = forwardRef(\n ({ as: Component = \"button\", children, tabId, className, onClick, ...rest }, ref) => {\n const context = useTabsContext();\n\n const toggleTab = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n context.toggleActiveTabId(tabId);\n onClick && onClick(e);\n };\n return (\n <Component\n className={clsx(\n \"hds-tabs__tab\",\n { \"hds-tabs__tab--active\": context.activeTabId === tabId },\n className as undefined,\n )}\n data-tabid={tabId}\n onClick={toggleTab}\n ref={ref}\n role=\"tab\"\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nTabsTab.displayName = \"Tabs.Tab\";\n","import type { ComponentPropsWithRef, ElementType, FC, RefAttributes } from \"react\";\nimport * as React from \"react\";\nimport { useCallback, useEffect, useState } from \"react\";\n\n/**\n * OverridableComponent makes the `as` prop available,\n * to be used to override the html element being used for a component\n *\n * Taken from digdir design system: https://github.com/digdir/designsystem/blob/main/packages/react/src/types/OverridableComponent.ts\n */\nexport type OverridableComponent<ComponentProps, Element extends HTMLElement> = {\n (props: ComponentProps & RefAttributes<Element>): ReturnType<FC>;\n\n <As extends ElementType>(\n props: {\n /** Override html element */\n as?: As;\n } & ComponentProps &\n Omit<ComponentPropsWithRef<As>, keyof ComponentProps>,\n ): ReturnType<FC>;\n} & Pick<FC, \"displayName\">;\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nexport function useMergeRefs<Instance>(\n refs: (React.Ref<Instance> | undefined)[],\n): React.RefCallback<Instance> | null {\n return React.useMemo(() => {\n if (refs.every((ref) => ref === null)) {\n return null;\n }\n\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null) {\n (ref as React.MutableRefObject<Instance | null>).current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, refs);\n}\n\nexport function useResize<Instance extends HTMLElement>(\n ref: React.RefObject<Instance> | undefined | null,\n): { width: number; height: number } {\n const [width, setWidth] = useState<number>(0);\n const [height, setHeight] = useState<number>(0);\n const handleResize = useCallback(() => {\n if (ref?.current !== null) {\n setWidth(ref?.current?.offsetWidth ?? 0);\n setHeight(ref?.current?.offsetHeight ?? 0);\n }\n }, [ref]);\n useEffect(() => {\n window.addEventListener(\"load\", handleResize);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"load\", handleResize);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [ref, handleResize]);\n useEffect(() => {\n handleResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, []);\n return { width, height };\n}\n\nfunction subscribe() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- It's ok\n return () => {};\n}\n\nexport function useHydrated() {\n return React.useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n );\n}\n\n/**\n * Trap focus inside an element using the `inert` attribute.\n *\n * Adds `inert` to all siblings of the given element, and all their ancestors up to the body.\n * Returns a cleanup function which removes the `inert` property from the elements, effectively giving focus back to rest of the document.\n *\n * NOTE: Does not support portals, i.e. elements outside the DOM hierarchy of the given element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert\n * @see https://web.dev/articles/inert\n */\nexport function focusTrap(element: HTMLElement) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- NOP on focus trapping the body element\n if (element === document.body) return () => {};\n\n let inertElements: HTMLElement[] = [];\n for (let el: HTMLElement | null = element; el; el = el.parentElement) {\n if (el === document.body) break;\n\n for (const sibling of el.parentElement?.children ?? []) {\n if (sibling === el) continue;\n if (!(sibling instanceof HTMLElement)) continue;\n if (sibling.hasAttribute(\"inert\")) continue;\n\n sibling.setAttribute(\"inert\", \"true\");\n inertElements.push(sibling);\n }\n }\n\n return () => {\n releaseFocusTrap(inertElements);\n inertElements = [];\n };\n}\n\n/**\n * Unset the `inert` attribute on all elements given\n */\nexport function releaseFocusTrap(inertElements: Iterable<HTMLElement>) {\n for (const el of inertElements) {\n el.removeAttribute(\"inert\");\n }\n}\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport type { OverridableComponent } from \"../utils\";\nimport { useTabsContext } from \"./context\";\n\nexport interface TabContentsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement<TabsContentProps> | ReactElement<TabsContentProps>[];\n}\n\nexport function TabsContents({ children, ...rest }: TabContentsProps) {\n return (\n <div className={clsx(\"hds-tabs__contents\")} {...rest}>\n {children}\n </div>\n );\n}\nTabsContents.displayName = \"Tabs.Contents\";\n\nexport interface TabsContentProps extends HTMLAttributes<HTMLElement> {\n children: ReactElement<HTMLElement> | ReactElement<HTMLElement>[] | string;\n\n /**\n * Content for the referenced tabId\n */\n forTabId: string;\n}\n\nexport const TabsContent: OverridableComponent<TabsContentProps, HTMLElement> = forwardRef(\n ({ as: Component = \"div\", forTabId, children, ...rest }, ref) => {\n const context = useTabsContext();\n\n if (context.activeTabId === forTabId) {\n return (\n <Component {...rest} ref={ref}>\n {children}\n </Component>\n );\n }\n return null;\n },\n);\n\nTabsContent.displayName = \"Tabs.Content\";\n"],"mappings":"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","names":["import_react","import_react","import_typed_classname","import_react","import_jsx_runtime","import_react","import_typed_classname","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/tabs/index.tsx","../../src/tabs/tabs.tsx","../../src/tabs/context.ts","../../src/tabs/tabs-list.tsx","../../src/utils.ts","../../src/tabs/tabs-content.tsx"],"sourcesContent":["import { Tabs } from \"./tabs\";\nimport { TabsList, TabsTab } from \"./tabs-list\";\nimport { TabsContents, TabsContent } from \"./tabs-content\";\n\nconst TabsComponent = Tabs as typeof Tabs & {\n List: typeof TabsList;\n Tab: typeof TabsTab;\n Contents: typeof TabsContents;\n Content: typeof TabsContent;\n};\nTabsComponent.List = TabsList;\nTabsComponent.Tab = TabsTab;\nTabsComponent.Contents = TabsContents;\nTabsComponent.Content = TabsContent;\n\nexport { TabsComponent as Tabs, TabsList, TabsTab, TabsContents, TabsContent };\n\nexport type * from \"./tabs\";\nexport type * from \"./tabs-list\";\nexport type * from \"./tabs-content\";\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { forwardRef, useState } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { TabsContext } from \"./context\";\nimport type { TabsContentsProps } from \"./tabs-content\";\nimport type { TabsListProps } from \"./tabs-list\";\n\nexport interface TabsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement<TabsListProps | TabsContentsProps>[] | ReactElement;\n\n /**\n * Define which tab to use as default. Must be one of the <Tab/>s identifier.\n */\n defaultTab: string;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n}\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(\n ({ asChild, defaultTab, children, ...rest }, ref) => {\n const [activeTabId, setActiveTabId] = useState<string>(defaultTab);\n const Component = asChild ? Slot : \"div\";\n return (\n <Component className={clsx(\"hds-tabs\")} ref={ref} {...rest}>\n <TabsContext.Provider value={{ activeTabId, toggleActiveTabId: setActiveTabId }}>\n {children}\n </TabsContext.Provider>\n </Component>\n );\n },\n);\nTabs.displayName = \"Tabs\";\n","import { createContext, useContext } from \"react\";\n\nexport interface TabsContextProps {\n activeTabId: string;\n toggleActiveTabId: (tabId: string) => void;\n}\n\nexport const TabsContext = createContext<TabsContextProps | null>(null);\n\nexport function useTabsContext() {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\n \"Tabs context required. Did you use `<Tabs.List />`, `<Tabs.Tab />`, or `<Tabs.Content />` outside of <Tabs/>?\",\n );\n }\n return context;\n}\n","import type { HTMLAttributes, ReactElement, MouseEvent } from \"react\";\nimport { forwardRef, useEffect, useRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { useResize, useHydrated } from \"../utils\";\nimport { useTabsContext } from \"./context\";\n\nexport interface TabsListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement<TabsTabProps> | ReactElement<TabsTabProps>[];\n\n /**\n * Direction of the tabs. Can either be vertical or horizontal.\n * Horizontal breaks on window width with fallback back to vertical\n *\n * @default \"horizontal\"\n */\n direction?: \"vertical\" | \"horizontal\";\n}\n\nexport const TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n ({ children, direction = \"horizontal\", className, ...rest }) => {\n const { activeTabId } = useTabsContext();\n const tabsListRef = useRef<HTMLDivElement>(null);\n const { width: tabsWidth } = useResize(tabsListRef);\n\n const isClientSide = useHydrated();\n const { innerWidth } = isClientSide ? window : { innerWidth: 1000 };\n const wideEnough = innerWidth >= tabsWidth;\n\n const previousTabId = useRef(activeTabId);\n\n // Marker animation\n useEffect(() => {\n const tabList = tabsListRef.current;\n const activeTab = tabList?.querySelector(`[data-tabid=\"${activeTabId}\"]`);\n if (!activeTab || !tabList) return;\n\n const { offsetHeight: containerHeight, offsetWidth: containerWidth } = tabList;\n const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = activeTab as HTMLElement;\n\n // Calculate the height and width of the marker relative to the container\n const height = offsetHeight / containerHeight;\n const width = offsetWidth / containerWidth;\n\n // NOTE: Doing a DOM manipulation here to set the CSS variables for the marker\n // Not really the react idomatic way, but as long as it works we are able to skip some intermidiate `useState`\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-height\", String(height));\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-width\", String(width));\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-top\", `${offsetTop}px`);\n tabsListRef.current.style.setProperty(\"--_hds-tabs-marker-left\", `${offsetLeft}px`);\n\n // Start with border fallback, then switch to the animated marker when the user changes tabs\n // This way the marker is placed immediately to the default tab, then animates smoothly to the next when selected\n if (previousTabId.current !== activeTabId) {\n tabsListRef.current.style.setProperty(\n \"--_hds-tabs-marker-animated-color\",\n \"var(--_hds-tabs-marker-color)\",\n );\n tabsListRef.current.style.setProperty(\n \"--_hds-tabs-marker-border-fallback-color\",\n \"transparent\",\n );\n }\n previousTabId.current = activeTabId;\n }, [activeTabId, innerWidth]);\n\n return (\n <div\n className={clsx(\n \"hds-tabs__list\",\n direction === \"horizontal\"\n ? {\n \"hds-tabs__list--horizontal\": wideEnough,\n \"hds-tabs__list--vertical\": !wideEnough,\n }\n : {\n \"hds-tabs__list--vertical\": true,\n },\n className as undefined,\n )}\n ref={tabsListRef}\n role=\"tablist\"\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\nTabsList.displayName = \"Tabs.List\";\n\nexport interface TabsTabProps extends HTMLAttributes<HTMLButtonElement> {\n children: ReactElement<HTMLElement> | string;\n\n /**\n * Identifier for the tab\n */\n tabId: string;\n}\n\nexport const TabsTab = forwardRef<HTMLButtonElement, TabsTabProps>(\n ({ children, tabId, className, onClick, ...rest }, ref) => {\n const context = useTabsContext();\n\n const toggleTab = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n context.toggleActiveTabId(tabId);\n onClick?.(e);\n };\n return (\n <button\n className={clsx(\n \"hds-tabs__tab\",\n { \"hds-tabs__tab--active\": context.activeTabId === tabId },\n className as undefined,\n )}\n data-tabid={tabId}\n onClick={toggleTab}\n ref={ref}\n type=\"button\"\n role=\"tab\"\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\nTabsTab.displayName = \"Tabs.Tab\";\n","import * as React from \"react\";\nimport { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nexport function useMergeRefs<Instance>(\n refs: (React.Ref<Instance> | undefined)[],\n): React.RefCallback<Instance> | null {\n return React.useMemo(() => {\n if (refs.every((ref) => ref === null)) {\n return null;\n }\n\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null) {\n (ref as React.MutableRefObject<Instance | null>).current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, refs);\n}\n\nexport function useResize<Instance extends HTMLElement>(\n ref: React.RefObject<Instance> | undefined | null,\n): { width: number; height: number } {\n const [width, setWidth] = useState<number>(0);\n const [height, setHeight] = useState<number>(0);\n const handleResize = useCallback(() => {\n if (ref?.current !== null) {\n setWidth(ref?.current?.offsetWidth ?? 0);\n setHeight(ref?.current?.offsetHeight ?? 0);\n }\n }, [ref]);\n useEffect(() => {\n window.addEventListener(\"load\", handleResize);\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"load\", handleResize);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [ref, handleResize]);\n useEffect(() => {\n handleResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- It's ok\n }, []);\n return { width, height };\n}\n\nfunction subscribe() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- It's ok\n return () => {};\n}\n\nexport function useHydrated() {\n return React.useSyncExternalStore(\n subscribe,\n () => true,\n () => false,\n );\n}\n\n/**\n * Trap focus inside an element using the `inert` attribute.\n *\n * Adds `inert` to all siblings of the given element, and all their ancestors up to the body.\n * Returns a cleanup function which removes the `inert` property from the elements, effectively giving focus back to rest of the document.\n *\n * NOTE: Does not support portals, i.e. elements outside the DOM hierarchy of the given element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert\n * @see https://web.dev/articles/inert\n */\nexport function focusTrap(element: HTMLElement) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- NOP on focus trapping the body element\n if (element === document.body) return () => {};\n\n let inertElements: HTMLElement[] = [];\n for (let el: HTMLElement | null = element; el; el = el.parentElement) {\n if (el === document.body) break;\n\n for (const sibling of el.parentElement?.children ?? []) {\n if (sibling === el) continue;\n if (!(sibling instanceof HTMLElement)) continue;\n if (sibling.hasAttribute(\"inert\")) continue;\n\n sibling.setAttribute(\"inert\", \"true\");\n inertElements.push(sibling);\n }\n }\n\n return () => {\n releaseFocusTrap(inertElements);\n inertElements = [];\n };\n}\n\n/**\n * Unset the `inert` attribute on all elements given\n */\nexport function releaseFocusTrap(inertElements: Iterable<HTMLElement>) {\n for (const el of inertElements) {\n el.removeAttribute(\"inert\");\n }\n}\n","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useTabsContext } from \"./context\";\n\nexport interface TabsContentsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement<TabsContentProps> | ReactElement<TabsContentProps>[];\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n}\n\nexport const TabsContents = forwardRef<HTMLDivElement, TabsContentsProps>(\n ({ asChild, children, ...rest }, ref) => {\n const Component = asChild ? Slot : \"div\";\n return (\n <Component ref={ref} className={clsx(\"hds-tabs__contents\")} {...rest}>\n {children}\n </Component>\n );\n },\n);\nTabsContents.displayName = \"Tabs.Contents\";\n\nexport interface TabsContentProps extends HTMLAttributes<HTMLElement> {\n children: ReactElement<HTMLElement> | ReactElement<HTMLElement>[] | string;\n\n /**\n * Content for the referenced tabId\n */\n forTabId: string;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n}\n\nexport const TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(\n ({ asChild, forTabId, children, ...rest }, ref) => {\n const context = useTabsContext();\n const Component = asChild ? Slot : \"div\";\n\n if (context.activeTabId === forTabId) {\n return (\n <Component {...rest} ref={ref}>\n {children}\n </Component>\n );\n }\n return null;\n },\n);\n\nTabsContent.displayName = \"Tabs.Content\";\n"],"mappings":"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","names":["import_react","import_react","import_typed_classname","import_react","import_jsx_runtime","import_react","import_typed_classname","import_react_slot","import_jsx_runtime"]}
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  TabsComponent
3
- } from "../chunk-E2AG5TUR.mjs";
3
+ } from "../chunk-DCCQXWD6.mjs";
4
4
  import {
5
5
  TabsList,
6
6
  TabsTab
7
- } from "../chunk-SRLRTLHS.mjs";
8
- import "../chunk-XVFQWVHO.mjs";
7
+ } from "../chunk-7JDEN3T6.mjs";
8
+ import "../chunk-3MQKXNZ6.mjs";
9
9
  import {
10
10
  TabsContent,
11
11
  TabsContents
12
- } from "../chunk-UWTGHSWT.mjs";
12
+ } from "../chunk-CCVZAHYA.mjs";
13
13
  import "../chunk-KQITCS3U.mjs";
14
- import "../chunk-JXA3B33M.mjs";
14
+ import "../chunk-DEX36MFK.mjs";
15
15
  import "../chunk-R4SQKVDQ.mjs";
16
16
  export {
17
17
  TabsComponent as Tabs,
@@ -1,4 +1,4 @@
1
+ export { TabsContentsProps_alias_3 as TabsContentsProps } from '../_tsup-dts-rollup';
1
2
  export { TabsContents_alias_3 as TabsContents } from '../_tsup-dts-rollup';
2
- export { TabContentsProps_alias_3 as TabContentsProps } from '../_tsup-dts-rollup';
3
3
  export { TabsContentProps_alias_3 as TabsContentProps } from '../_tsup-dts-rollup';
4
4
  export { TabsContent_alias_3 as TabsContent } from '../_tsup-dts-rollup';
@@ -1,4 +1,4 @@
1
+ export { TabsContentsProps_alias_3 as TabsContentsProps } from '../_tsup-dts-rollup';
1
2
  export { TabsContents_alias_3 as TabsContents } from '../_tsup-dts-rollup';
2
- export { TabContentsProps_alias_3 as TabContentsProps } from '../_tsup-dts-rollup';
3
3
  export { TabsContentProps_alias_3 as TabsContentProps } from '../_tsup-dts-rollup';
4
4
  export { TabsContent_alias_3 as TabsContent } from '../_tsup-dts-rollup';
@@ -55,6 +55,7 @@ __export(tabs_content_exports, {
55
55
  module.exports = __toCommonJS(tabs_content_exports);
56
56
  var import_react2 = require("react");
57
57
  var import_typed_classname = require("@postenbring/hedwig-css/typed-classname");
58
+ var import_react_slot = require("@radix-ui/react-slot");
58
59
 
59
60
  // src/tabs/context.ts
60
61
  var import_react = require("react");
@@ -71,15 +72,19 @@ function useTabsContext() {
71
72
 
72
73
  // src/tabs/tabs-content.tsx
73
74
  var import_jsx_runtime = require("react/jsx-runtime");
74
- function TabsContents(_a) {
75
- var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
76
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", __spreadProps(__spreadValues({ className: (0, import_typed_classname.clsx)("hds-tabs__contents") }, rest), { children }));
77
- }
75
+ var TabsContents = (0, import_react2.forwardRef)(
76
+ (_a, ref) => {
77
+ var _b = _a, { asChild, children } = _b, rest = __objRest(_b, ["asChild", "children"]);
78
+ const Component = asChild ? import_react_slot.Slot : "div";
79
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, __spreadProps(__spreadValues({ ref, className: (0, import_typed_classname.clsx)("hds-tabs__contents") }, rest), { children }));
80
+ }
81
+ );
78
82
  TabsContents.displayName = "Tabs.Contents";
79
83
  var TabsContent = (0, import_react2.forwardRef)(
80
84
  (_a, ref) => {
81
- var _b = _a, { as: Component = "div", forTabId, children } = _b, rest = __objRest(_b, ["as", "forTabId", "children"]);
85
+ var _b = _a, { asChild, forTabId, children } = _b, rest = __objRest(_b, ["asChild", "forTabId", "children"]);
82
86
  const context = useTabsContext();
87
+ const Component = asChild ? import_react_slot.Slot : "div";
83
88
  if (context.activeTabId === forTabId) {
84
89
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, __spreadProps(__spreadValues({}, rest), { ref, children }));
85
90
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tabs/tabs-content.tsx","../../src/tabs/context.ts"],"sourcesContent":["import type { HTMLAttributes, ReactElement } from \"react\";\nimport { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport type { OverridableComponent } from \"../utils\";\nimport { useTabsContext } from \"./context\";\n\nexport interface TabContentsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement<TabsContentProps> | ReactElement<TabsContentProps>[];\n}\n\nexport function TabsContents({ children, ...rest }: TabContentsProps) {\n return (\n <div className={clsx(\"hds-tabs__contents\")} {...rest}>\n {children}\n </div>\n );\n}\nTabsContents.displayName = \"Tabs.Contents\";\n\nexport interface TabsContentProps extends HTMLAttributes<HTMLElement> {\n children: ReactElement<HTMLElement> | ReactElement<HTMLElement>[] | string;\n\n /**\n * Content for the referenced tabId\n */\n forTabId: string;\n}\n\nexport const TabsContent: OverridableComponent<TabsContentProps, HTMLElement> = forwardRef(\n ({ as: Component = \"div\", forTabId, children, ...rest }, ref) => {\n const context = useTabsContext();\n\n if (context.activeTabId === forTabId) {\n return (\n <Component {...rest} ref={ref}>\n {children}\n </Component>\n );\n }\n return null;\n },\n);\n\nTabsContent.displayName = \"Tabs.Content\";\n","import { createContext, useContext } from \"react\";\n\nexport interface TabsContextProps {\n activeTabId: string;\n toggleActiveTabId: (tabId: string) => void;\n}\n\nexport const TabsContext = createContext<TabsContextProps | null>(null);\n\nexport function useTabsContext() {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\n \"Tabs context required. Did you use `<Tabs.List />`, `<Tabs.Tab />`, or `<Tabs.Content />` outside of <Tabs/>?\",\n );\n }\n return context;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,IAAAA,gBAA2B;AAC3B,6BAAqB;;;ACFrB,mBAA0C;AAOnC,IAAM,kBAAc,4BAAuC,IAAI;AAE/D,SAAS,iBAAiB;AAC/B,QAAM,cAAU,yBAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ADLI;AAFG,SAAS,aAAa,IAAyC;AAAzC,eAAE,WAV/B,IAU6B,IAAe,iBAAf,IAAe,CAAb;AAC7B,SACE,4CAAC,sCAAI,eAAW,6BAAK,oBAAoB,KAAO,OAA/C,EACE,WACH;AAEJ;AACA,aAAa,cAAc;AAWpB,IAAM,kBAAmE;AAAA,EAC9E,CAAC,IAAwD,QAAQ;AAAhE,iBAAE,MAAI,YAAY,OAAO,UAAU,SA7BtC,IA6BG,IAAgD,iBAAhD,IAAgD,CAA9C,MAAuB,YAAU;AAClC,UAAM,UAAU,eAAe;AAE/B,QAAI,QAAQ,gBAAgB,UAAU;AACpC,aACE,4CAAC,4CAAc,OAAd,EAAoB,KAClB,WACH;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AACF;AAEA,YAAY,cAAc;","names":["import_react"]}
1
+ {"version":3,"sources":["../../src/tabs/tabs-content.tsx","../../src/tabs/context.ts"],"sourcesContent":["import type { HTMLAttributes, ReactElement } from \"react\";\nimport { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useTabsContext } from \"./context\";\n\nexport interface TabsContentsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement<TabsContentProps> | ReactElement<TabsContentProps>[];\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n}\n\nexport const TabsContents = forwardRef<HTMLDivElement, TabsContentsProps>(\n ({ asChild, children, ...rest }, ref) => {\n const Component = asChild ? Slot : \"div\";\n return (\n <Component ref={ref} className={clsx(\"hds-tabs__contents\")} {...rest}>\n {children}\n </Component>\n );\n },\n);\nTabsContents.displayName = \"Tabs.Contents\";\n\nexport interface TabsContentProps extends HTMLAttributes<HTMLElement> {\n children: ReactElement<HTMLElement> | ReactElement<HTMLElement>[] | string;\n\n /**\n * Content for the referenced tabId\n */\n forTabId: string;\n\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n *\n * @default false\n */\n asChild?: boolean;\n}\n\nexport const TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(\n ({ asChild, forTabId, children, ...rest }, ref) => {\n const context = useTabsContext();\n const Component = asChild ? Slot : \"div\";\n\n if (context.activeTabId === forTabId) {\n return (\n <Component {...rest} ref={ref}>\n {children}\n </Component>\n );\n }\n return null;\n },\n);\n\nTabsContent.displayName = \"Tabs.Content\";\n","import { createContext, useContext } from \"react\";\n\nexport interface TabsContextProps {\n activeTabId: string;\n toggleActiveTabId: (tabId: string) => void;\n}\n\nexport const TabsContext = createContext<TabsContextProps | null>(null);\n\nexport function useTabsContext() {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\n \"Tabs context required. Did you use `<Tabs.List />`, `<Tabs.Tab />`, or `<Tabs.Content />` outside of <Tabs/>?\",\n );\n }\n return context;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,IAAAA,gBAA2B;AAC3B,6BAAqB;AACrB,wBAAqB;;;ACHrB,mBAA0C;AAOnC,IAAM,kBAAc,4BAAuC,IAAI;AAE/D,SAAS,iBAAiB;AAC/B,QAAM,cAAU,yBAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ADIM;AAJC,IAAM,mBAAe;AAAA,EAC1B,CAAC,IAAgC,QAAQ;AAAxC,iBAAE,WAAS,SAlBd,IAkBG,IAAwB,iBAAxB,IAAwB,CAAtB,WAAS;AACV,UAAM,YAAY,UAAU,yBAAO;AACnC,WACE,4CAAC,0CAAU,KAAU,eAAW,6BAAK,oBAAoB,KAAO,OAA/D,EACE,WACH;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;AAkBpB,IAAM,kBAAc;AAAA,EACzB,CAAC,IAA0C,QAAQ;AAAlD,iBAAE,WAAS,UAAU,SA9CxB,IA8CG,IAAkC,iBAAlC,IAAkC,CAAhC,WAAS,YAAU;AACpB,UAAM,UAAU,eAAe;AAC/B,UAAM,YAAY,UAAU,yBAAO;AAEnC,QAAI,QAAQ,gBAAgB,UAAU;AACpC,aACE,4CAAC,4CAAc,OAAd,EAAoB,KAClB,WACH;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AACF;AAEA,YAAY,cAAc;","names":["import_react"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  TabsContent,
3
3
  TabsContents
4
- } from "../chunk-UWTGHSWT.mjs";
4
+ } from "../chunk-CCVZAHYA.mjs";
5
5
  import "../chunk-KQITCS3U.mjs";
6
6
  import "../chunk-R4SQKVDQ.mjs";
7
7
  export {