@bi-digital/react 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/dist/{alert-footer-CHHPzMiX.d.mts → alert-footer-D_kCDrhn.d.mts} +109 -232
  2. package/dist/components/alert/alert-footer.d.mts +1 -14
  3. package/dist/components/alert/alert-footer.mjs +15 -2
  4. package/dist/components/alert/alert-footer.mjs.map +1 -0
  5. package/dist/components/alert/alert.d.mts +1 -14
  6. package/dist/components/alert/alert.mjs +33 -2
  7. package/dist/components/alert/alert.mjs.map +1 -0
  8. package/dist/components/alert/index.d.mts +1 -14
  9. package/dist/components/alert/index.mjs +3 -5
  10. package/dist/components/avatar/avatar.d.mts +1 -14
  11. package/dist/components/avatar/avatar.mjs +37 -2
  12. package/dist/components/avatar/avatar.mjs.map +1 -0
  13. package/dist/components/avatar/index.d.mts +1 -14
  14. package/dist/components/avatar/index.mjs +2 -4
  15. package/dist/components/badge/badge.d.mts +1 -14
  16. package/dist/components/badge/badge.mjs +19 -2
  17. package/dist/components/badge/badge.mjs.map +1 -0
  18. package/dist/components/badge/index.d.mts +1 -14
  19. package/dist/components/badge/index.mjs +2 -4
  20. package/dist/components/button/button.d.mts +1 -14
  21. package/dist/components/button/button.mjs +39 -4
  22. package/dist/components/button/button.mjs.map +1 -0
  23. package/dist/components/button/index.d.mts +1 -14
  24. package/dist/components/button/index.mjs +2 -6
  25. package/dist/components/card/card-action.d.mts +1 -14
  26. package/dist/components/card/card-action.mjs +21 -6
  27. package/dist/components/card/card-action.mjs.map +1 -0
  28. package/dist/components/card/card-actions.d.mts +1 -14
  29. package/dist/components/card/card-actions.mjs +14 -2
  30. package/dist/components/card/card-actions.mjs.map +1 -0
  31. package/dist/components/card/card-content.d.mts +1 -14
  32. package/dist/components/card/card-content.mjs +15 -2
  33. package/dist/components/card/card-content.mjs.map +1 -0
  34. package/dist/components/card/card-date.d.mts +1 -14
  35. package/dist/components/card/card-date.mjs +14 -2
  36. package/dist/components/card/card-date.mjs.map +1 -0
  37. package/dist/components/card/card-header.d.mts +1 -14
  38. package/dist/components/card/card-header.mjs +37 -2
  39. package/dist/components/card/card-header.mjs.map +1 -0
  40. package/dist/components/card/card-media.d.mts +1 -14
  41. package/dist/components/card/card-media.mjs +17 -2
  42. package/dist/components/card/card-media.mjs.map +1 -0
  43. package/dist/components/card/card.d.mts +1 -14
  44. package/dist/components/card/card.mjs +19 -2
  45. package/dist/components/card/card.mjs.map +1 -0
  46. package/dist/components/card/index.d.mts +1 -14
  47. package/dist/components/card/index.mjs +8 -14
  48. package/dist/components/checkbox/checkbox-subsection.d.mts +1 -14
  49. package/dist/components/checkbox/checkbox-subsection.mjs +15 -2
  50. package/dist/components/checkbox/checkbox-subsection.mjs.map +1 -0
  51. package/dist/components/checkbox/checkbox.d.mts +1 -14
  52. package/dist/components/checkbox/checkbox.mjs +59 -11
  53. package/dist/components/checkbox/checkbox.mjs.map +1 -0
  54. package/dist/components/checkbox/index.d.mts +1 -14
  55. package/dist/components/checkbox/index.mjs +3 -14
  56. package/dist/components/chip/chip.d.mts +1 -14
  57. package/dist/components/chip/chip.mjs +24 -2
  58. package/dist/components/chip/chip.mjs.map +1 -0
  59. package/dist/components/chip/index.d.mts +1 -14
  60. package/dist/components/chip/index.mjs +2 -4
  61. package/dist/components/details/details-content.d.mts +1 -14
  62. package/dist/components/details/details-content.mjs +20 -2
  63. package/dist/components/details/details-content.mjs.map +1 -0
  64. package/dist/components/details/details-summary.d.mts +1 -14
  65. package/dist/components/details/details-summary.mjs +20 -2
  66. package/dist/components/details/details-summary.mjs.map +1 -0
  67. package/dist/components/details/details.d.mts +1 -14
  68. package/dist/components/details/details.mjs +33 -2
  69. package/dist/components/details/details.mjs.map +1 -0
  70. package/dist/components/details/index.d.mts +1 -14
  71. package/dist/components/details/index.mjs +4 -6
  72. package/dist/components/dialog/dialog-close-button.d.mts +1 -14
  73. package/dist/components/dialog/dialog-close-button.mjs +28 -6
  74. package/dist/components/dialog/dialog-close-button.mjs.map +1 -0
  75. package/dist/components/dialog/dialog-content.d.mts +1 -14
  76. package/dist/components/dialog/dialog-content.mjs +16 -2
  77. package/dist/components/dialog/dialog-content.mjs.map +1 -0
  78. package/dist/components/dialog/dialog-footer.d.mts +1 -14
  79. package/dist/components/dialog/dialog-footer.mjs +16 -2
  80. package/dist/components/dialog/dialog-footer.mjs.map +1 -0
  81. package/dist/components/dialog/dialog-header.d.mts +1 -14
  82. package/dist/components/dialog/dialog-header.mjs +16 -2
  83. package/dist/components/dialog/dialog-header.mjs.map +1 -0
  84. package/dist/components/dialog/dialog-trigger-context.d.mts +1 -1
  85. package/dist/components/dialog/dialog-trigger-context.mjs +21 -2
  86. package/dist/components/dialog/dialog-trigger-context.mjs.map +1 -0
  87. package/dist/components/dialog/dialog-trigger.d.mts +1 -14
  88. package/dist/components/dialog/dialog-trigger.mjs +20 -7
  89. package/dist/components/dialog/dialog-trigger.mjs.map +1 -0
  90. package/dist/components/dialog/dialog.d.mts +1 -14
  91. package/dist/components/dialog/dialog.mjs +62 -4
  92. package/dist/components/dialog/dialog.mjs.map +1 -0
  93. package/dist/components/dialog/index.d.mts +2 -14
  94. package/dist/components/dialog/index.mjs +8 -15
  95. package/dist/components/dropdown/dropdown-button.d.mts +1 -14
  96. package/dist/components/dropdown/dropdown-button.mjs +14 -6
  97. package/dist/components/dropdown/dropdown-button.mjs.map +1 -0
  98. package/dist/components/dropdown/dropdown-item.d.mts +1 -1
  99. package/dist/components/dropdown/dropdown-item.mjs +9 -2
  100. package/dist/components/dropdown/dropdown-item.mjs.map +1 -0
  101. package/dist/components/dropdown/dropdown-list.d.mts +1 -1
  102. package/dist/components/dropdown/dropdown-list.mjs +9 -2
  103. package/dist/components/dropdown/dropdown-list.mjs.map +1 -0
  104. package/dist/components/dropdown/dropdown-trigger-context.d.mts +1 -14
  105. package/dist/components/dropdown/dropdown-trigger-context.mjs +27 -12
  106. package/dist/components/dropdown/dropdown-trigger-context.mjs.map +1 -0
  107. package/dist/components/dropdown/dropdown-trigger.d.mts +1 -14
  108. package/dist/components/dropdown/dropdown-trigger.mjs +12 -12
  109. package/dist/components/dropdown/dropdown-trigger.mjs.map +1 -0
  110. package/dist/components/dropdown/dropdown.d.mts +1 -14
  111. package/dist/components/dropdown/dropdown.mjs +43 -12
  112. package/dist/components/dropdown/dropdown.mjs.map +1 -0
  113. package/dist/components/dropdown/index.d.mts +3 -14
  114. package/dist/components/dropdown/index.mjs +7 -19
  115. package/dist/components/field/field-affix.d.mts +1 -14
  116. package/dist/components/field/field-affix.mjs +43 -2
  117. package/dist/components/field/field-affix.mjs.map +1 -0
  118. package/dist/components/field/field-description.d.mts +1 -14
  119. package/dist/components/field/field-description.mjs +14 -2
  120. package/dist/components/field/field-description.mjs.map +1 -0
  121. package/dist/components/field/field.d.mts +1 -14
  122. package/dist/components/field/field.mjs +28 -2
  123. package/dist/components/field/field.mjs.map +1 -0
  124. package/dist/components/field/index.d.mts +1 -14
  125. package/dist/components/field/index.mjs +4 -6
  126. package/dist/components/fieldset/fieldset-description.d.mts +1 -14
  127. package/dist/components/fieldset/fieldset-description.mjs +12 -2
  128. package/dist/components/fieldset/fieldset-description.mjs.map +1 -0
  129. package/dist/components/fieldset/fieldset-legend.d.mts +1 -14
  130. package/dist/components/fieldset/fieldset-legend.mjs +18 -4
  131. package/dist/components/fieldset/fieldset-legend.mjs.map +1 -0
  132. package/dist/components/fieldset/fieldset.d.mts +1 -14
  133. package/dist/components/fieldset/fieldset.mjs +15 -2
  134. package/dist/components/fieldset/fieldset.mjs.map +1 -0
  135. package/dist/components/fieldset/index.d.mts +1 -14
  136. package/dist/components/fieldset/index.mjs +4 -8
  137. package/dist/components/filter-group/filter-group.d.mts +1 -14
  138. package/dist/components/filter-group/filter-group.mjs +38 -2
  139. package/dist/components/filter-group/filter-group.mjs.map +1 -0
  140. package/dist/components/filter-group/index.d.mts +1 -14
  141. package/dist/components/filter-group/index.mjs +2 -4
  142. package/dist/components/footer/footer-links.d.mts +1 -1
  143. package/dist/components/footer/footer-links.mjs +13 -2
  144. package/dist/components/footer/footer-links.mjs.map +1 -0
  145. package/dist/components/footer/footer.d.mts +1 -14
  146. package/dist/components/footer/footer.mjs +110 -6
  147. package/dist/components/footer/footer.mjs.map +1 -0
  148. package/dist/components/footer/index.d.mts +2 -14
  149. package/dist/components/footer/index.mjs +3 -9
  150. package/dist/components/index.d.mts +9 -15
  151. package/dist/components/index.mjs +104 -120
  152. package/dist/components/input/index.d.mts +1 -14
  153. package/dist/components/input/index.mjs +2 -4
  154. package/dist/components/input/input.d.mts +1 -14
  155. package/dist/components/input/input.mjs +23 -2
  156. package/dist/components/input/input.mjs.map +1 -0
  157. package/dist/components/label/index.d.mts +1 -14
  158. package/dist/components/label/index.mjs +2 -4
  159. package/dist/components/label/label.d.mts +1 -14
  160. package/dist/components/label/label.mjs +16 -2
  161. package/dist/components/label/label.mjs.map +1 -0
  162. package/dist/components/link/index.d.mts +1 -14
  163. package/dist/components/link/index.mjs +2 -4
  164. package/dist/components/link/link.d.mts +1 -14
  165. package/dist/components/link/link.mjs +17 -2
  166. package/dist/components/link/link.mjs.map +1 -0
  167. package/dist/components/logo/index.d.mts +1 -14
  168. package/dist/components/logo/index.mjs +2 -4
  169. package/dist/components/logo/logo.d.mts +1 -14
  170. package/dist/components/logo/logo.mjs +17 -2
  171. package/dist/components/logo/logo.mjs.map +1 -0
  172. package/dist/components/navbar/index.d.mts +1 -14
  173. package/dist/components/navbar/index.mjs +3 -13
  174. package/dist/components/navbar/navbar.d.mts +1 -14
  175. package/dist/components/navbar/navbar.mjs +22 -4
  176. package/dist/components/navbar/navbar.mjs.map +1 -0
  177. package/dist/components/navbar/sub-navbar.d.mts +1 -14
  178. package/dist/components/navbar/sub-navbar.mjs +27 -8
  179. package/dist/components/navbar/sub-navbar.mjs.map +1 -0
  180. package/dist/components/pagination/index.d.mts +2 -14
  181. package/dist/components/pagination/index.mjs +4 -10
  182. package/dist/components/pagination/pagination-button.d.mts +1 -14
  183. package/dist/components/pagination/pagination-button.mjs +13 -6
  184. package/dist/components/pagination/pagination-button.mjs.map +1 -0
  185. package/dist/components/pagination/pagination-item.d.mts +1 -1
  186. package/dist/components/pagination/pagination-item.mjs +13 -2
  187. package/dist/components/pagination/pagination-item.mjs.map +1 -0
  188. package/dist/components/pagination/pagination.d.mts +1 -14
  189. package/dist/components/pagination/pagination.mjs +15 -2
  190. package/dist/components/pagination/pagination.mjs.map +1 -0
  191. package/dist/components/popover/index.d.mts +2 -14
  192. package/dist/components/popover/index.mjs +4 -12
  193. package/dist/components/popover/popover-trigger-context.d.mts +1 -1
  194. package/dist/components/popover/popover-trigger-context.mjs +37 -2
  195. package/dist/components/popover/popover-trigger-context.mjs.map +1 -0
  196. package/dist/components/popover/popover-trigger.d.mts +1 -14
  197. package/dist/components/popover/popover-trigger.mjs +43 -7
  198. package/dist/components/popover/popover-trigger.mjs.map +1 -0
  199. package/dist/components/popover/popover.d.mts +1 -14
  200. package/dist/components/popover/popover.mjs +110 -5
  201. package/dist/components/popover/popover.mjs.map +1 -0
  202. package/dist/components/radio/index.d.mts +1 -14
  203. package/dist/components/radio/index.mjs +2 -12
  204. package/dist/components/radio/radio.d.mts +1 -14
  205. package/dist/components/radio/radio.mjs +46 -10
  206. package/dist/components/radio/radio.mjs.map +1 -0
  207. package/dist/components/search/index.d.mts +1 -14
  208. package/dist/components/search/index.mjs +2 -14
  209. package/dist/components/search/search.d.mts +1 -14
  210. package/dist/components/search/search.mjs +59 -12
  211. package/dist/components/search/search.mjs.map +1 -0
  212. package/dist/components/select/index.d.mts +1 -14
  213. package/dist/components/select/index.mjs +4 -6
  214. package/dist/components/select/select-optgroup.d.mts +1 -14
  215. package/dist/components/select/select-optgroup.mjs +12 -2
  216. package/dist/components/select/select-optgroup.mjs.map +1 -0
  217. package/dist/components/select/select-option.d.mts +1 -14
  218. package/dist/components/select/select-option.mjs +12 -2
  219. package/dist/components/select/select-option.mjs.map +1 -0
  220. package/dist/components/select/select.d.mts +1 -14
  221. package/dist/components/select/select.mjs +24 -2
  222. package/dist/components/select/select.mjs.map +1 -0
  223. package/dist/components/selectfield/index.d.mts +1 -14
  224. package/dist/components/selectfield/index.mjs +2 -16
  225. package/dist/components/selectfield/selectfield.d.mts +1 -14
  226. package/dist/components/selectfield/selectfield.mjs +55 -14
  227. package/dist/components/selectfield/selectfield.mjs.map +1 -0
  228. package/dist/components/skip-link/index.d.mts +1 -14
  229. package/dist/components/skip-link/index.mjs +2 -4
  230. package/dist/components/skip-link/skip-link.d.mts +1 -14
  231. package/dist/components/skip-link/skip-link.mjs +15 -2
  232. package/dist/components/skip-link/skip-link.mjs.map +1 -0
  233. package/dist/components/spinner/index.d.mts +1 -14
  234. package/dist/components/spinner/index.mjs +2 -4
  235. package/dist/components/spinner/spinner.d.mts +1 -14
  236. package/dist/components/spinner/spinner.mjs +15 -2
  237. package/dist/components/spinner/spinner.mjs.map +1 -0
  238. package/dist/components/sticky-header/index.d.mts +1 -2
  239. package/dist/components/sticky-header/index.mjs +2 -4
  240. package/dist/components/sticky-header/sticky-header.d.mts +1 -1
  241. package/dist/components/sticky-header/sticky-header.mjs +18 -2
  242. package/dist/components/sticky-header/sticky-header.mjs.map +1 -0
  243. package/dist/components/switch/index.d.mts +1 -14
  244. package/dist/components/switch/index.mjs +2 -12
  245. package/dist/components/switch/switch.d.mts +1 -14
  246. package/dist/components/switch/switch.mjs +35 -10
  247. package/dist/components/switch/switch.mjs.map +1 -0
  248. package/dist/components/tabs/index.d.mts +2 -15
  249. package/dist/components/tabs/index.mjs +5 -11
  250. package/dist/components/tabs/tab.d.mts +1 -14
  251. package/dist/components/tabs/tab.mjs +28 -6
  252. package/dist/components/tabs/tab.mjs.map +1 -0
  253. package/dist/components/tabs/tabs-list.d.mts +1 -14
  254. package/dist/components/tabs/tabs-list.mjs +14 -2
  255. package/dist/components/tabs/tabs-list.mjs.map +1 -0
  256. package/dist/components/tabs/tabs-panel.d.mts +1 -14
  257. package/dist/components/tabs/tabs-panel.mjs +18 -2
  258. package/dist/components/tabs/tabs-panel.mjs.map +1 -0
  259. package/dist/components/tabs/tabs.d.mts +2 -15
  260. package/dist/components/tabs/tabs.mjs +51 -2
  261. package/dist/components/tabs/tabs.mjs.map +1 -0
  262. package/dist/components/textarea/index.d.mts +1 -14
  263. package/dist/components/textarea/index.mjs +2 -4
  264. package/dist/components/textarea/textarea.d.mts +1 -14
  265. package/dist/components/textarea/textarea.mjs +15 -2
  266. package/dist/components/textarea/textarea.mjs.map +1 -0
  267. package/dist/components/textfield/index.d.mts +1 -14
  268. package/dist/components/textfield/index.mjs +2 -16
  269. package/dist/components/textfield/textfield.d.mts +1 -14
  270. package/dist/components/textfield/textfield.mjs +68 -14
  271. package/dist/components/textfield/textfield.mjs.map +1 -0
  272. package/dist/components/validation-message/index.d.mts +1 -14
  273. package/dist/components/validation-message/index.mjs +2 -4
  274. package/dist/components/validation-message/validation-message.d.mts +1 -14
  275. package/dist/components/validation-message/validation-message.mjs +16 -2
  276. package/dist/components/validation-message/validation-message.mjs.map +1 -0
  277. package/dist/dialog-trigger-context-CAC7jh1K.d.mts +20 -0
  278. package/dist/{dropdown-item-wInrqt83.d.mts → dropdown-item-aYyDctA9.d.mts} +3 -3
  279. package/dist/{dropdown-list-z14BOCh4.d.mts → dropdown-list-Dg3yJhKc.d.mts} +3 -3
  280. package/dist/{footer-links-C7vC-VD7.d.mts → footer-links-BiBVxNWE.d.mts} +3 -3
  281. package/dist/main.d.mts +15 -18
  282. package/dist/main.mjs +76 -121
  283. package/dist/{pagination-item-cKOuhfhM.d.mts → pagination-item-BNyKs6wz.d.mts} +3 -3
  284. package/dist/{popover-trigger-context-sQGC75uf.d.mts → popover-trigger-context-DTh-_AMm.d.mts} +5 -5
  285. package/dist/{sticky-header-Y0uT-nWI.d.mts → sticky-header-CLZPboYg.d.mts} +3 -3
  286. package/dist/{types-Bgj7p8nD.d.mts → types-BXsMIYrD.d.mts} +1 -1
  287. package/dist/{types-Biyhmxh9.d.mts → types-CgAV-Uiu.d.mts} +1 -1
  288. package/dist/types.d.mts +1 -1
  289. package/dist/types.mjs +1 -1
  290. package/dist/{useCheckboxGroup-BUpI46_M.d.mts → useCheckboxGroup-Boc_tLJ3.d.mts} +1 -1
  291. package/dist/{useIsElementAboveViewport-BcIGWQqn.d.mts → useIsElementAboveViewport-DmYCeDwm.d.mts} +1 -1
  292. package/dist/useIsomorphicLayoutEffect-DXCY5AxR.d.mts +7 -0
  293. package/dist/{useMediaQuery-CIi3MXay.d.mts → useMediaQuery-Cz0DvE8S.d.mts} +1 -1
  294. package/dist/{useScrollDirection-Cm7w2CbB.d.mts → useScrollDirection-CepdY5lA.d.mts} +1 -1
  295. package/dist/utilities/hooks/index.d.mts +6 -16
  296. package/dist/utilities/hooks/index.mjs +7 -9
  297. package/dist/utilities/hooks/useCheckboxGroup/useCheckboxGroup.d.mts +1 -1
  298. package/dist/utilities/hooks/useCheckboxGroup/useCheckboxGroup.mjs +16 -2
  299. package/dist/{useCheckboxGroup-B2Px3eiz.mjs.map → utilities/hooks/useCheckboxGroup/useCheckboxGroup.mjs.map} +1 -1
  300. package/dist/utilities/hooks/useIsElementAboveViewport/useIsElementAboveViewport.d.mts +1 -1
  301. package/dist/utilities/hooks/useIsElementAboveViewport/useIsElementAboveViewport.mjs +18 -2
  302. package/dist/{useIsElementAboveViewport-BaSLEYQk.mjs.map → utilities/hooks/useIsElementAboveViewport/useIsElementAboveViewport.mjs.map} +1 -1
  303. package/dist/utilities/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.mts +1 -1
  304. package/dist/utilities/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +6 -2
  305. package/dist/{useIsomorphicLayoutEffect-Bn8aiGVW.mjs.map → utilities/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs.map} +1 -1
  306. package/dist/utilities/hooks/useMediaQuery/useMediaQuery.d.mts +1 -1
  307. package/dist/utilities/hooks/useMediaQuery/useMediaQuery.mjs +42 -3
  308. package/dist/{useMediaQuery-BRGC6S33.mjs.map → utilities/hooks/useMediaQuery/useMediaQuery.mjs.map} +1 -1
  309. package/dist/utilities/hooks/useMergeRefs/useMergeRefs.mjs +40 -2
  310. package/dist/{useMergeRefs-DeEL5hK6.mjs.map → utilities/hooks/useMergeRefs/useMergeRefs.mjs.map} +1 -1
  311. package/dist/utilities/hooks/usePagination/usePagination.d.mts +1 -14
  312. package/dist/utilities/hooks/usePagination/usePagination.mjs +95 -2
  313. package/dist/{usePagination-aBXSjQBp.mjs.map → utilities/hooks/usePagination/usePagination.mjs.map} +1 -1
  314. package/dist/utilities/hooks/useScrollDirection/useScrollDirection.d.mts +1 -1
  315. package/dist/utilities/hooks/useScrollDirection/useScrollDirection.mjs +26 -2
  316. package/dist/{useScrollDirection-C36-HP3S.mjs.map → utilities/hooks/useScrollDirection/useScrollDirection.mjs.map} +1 -1
  317. package/dist/utilities/index.d.mts +7 -17
  318. package/dist/utilities/index.mjs +8 -9
  319. package/dist/utilities/types.d.mts +1 -1
  320. package/dist/utilities/types.mjs +1 -1
  321. package/dist/vanilla/dropdown/index.mjs +2 -3
  322. package/dist/vanilla/dropdown/index.mjs.map +1 -1
  323. package/dist/vanilla/index.mjs +3 -3
  324. package/dist/vanilla/popover/index.mjs +83 -2
  325. package/dist/vanilla/popover/index.mjs.map +1 -0
  326. package/dist/vanilla/sub-navbar/index.mjs +1 -1
  327. package/dist/vanilla/sub-navbar/index.mjs.map +1 -1
  328. package/package.json +14 -16
  329. package/dist/alert-B-qfyhxc.mjs +0 -35
  330. package/dist/alert-B-qfyhxc.mjs.map +0 -1
  331. package/dist/alert-footer-CiXj-PGD.mjs +0 -17
  332. package/dist/alert-footer-CiXj-PGD.mjs.map +0 -1
  333. package/dist/alert-vOhEayej.mjs +0 -1
  334. package/dist/avatar-5e5_er9-.mjs +0 -1
  335. package/dist/avatar-BEjjwjRn.mjs +0 -39
  336. package/dist/avatar-BEjjwjRn.mjs.map +0 -1
  337. package/dist/badge-D6dJHxi2.mjs +0 -1
  338. package/dist/badge-tAjYsQEq.mjs +0 -21
  339. package/dist/badge-tAjYsQEq.mjs.map +0 -1
  340. package/dist/button-BoSub8TT.mjs +0 -1
  341. package/dist/button-Df0Se51p.mjs +0 -40
  342. package/dist/button-Df0Se51p.mjs.map +0 -1
  343. package/dist/card-BwkKWLCT.mjs +0 -21
  344. package/dist/card-BwkKWLCT.mjs.map +0 -1
  345. package/dist/card-action-DAFhhfZ5.mjs +0 -22
  346. package/dist/card-action-DAFhhfZ5.mjs.map +0 -1
  347. package/dist/card-actions-DQXkkGKI.mjs +0 -16
  348. package/dist/card-actions-DQXkkGKI.mjs.map +0 -1
  349. package/dist/card-content-zQQxsR9_.mjs +0 -17
  350. package/dist/card-content-zQQxsR9_.mjs.map +0 -1
  351. package/dist/card-date-PwKzeTzD.mjs +0 -16
  352. package/dist/card-date-PwKzeTzD.mjs.map +0 -1
  353. package/dist/card-header-DkKr5o8N.mjs +0 -39
  354. package/dist/card-header-DkKr5o8N.mjs.map +0 -1
  355. package/dist/card-media-Bv2VWU3K.mjs +0 -19
  356. package/dist/card-media-Bv2VWU3K.mjs.map +0 -1
  357. package/dist/card-qYOn8pIl.mjs +0 -1
  358. package/dist/checkbox-BPiURV39.mjs +0 -1
  359. package/dist/checkbox-DLGjrSt2.mjs +0 -58
  360. package/dist/checkbox-DLGjrSt2.mjs.map +0 -1
  361. package/dist/checkbox-subsection-Dq60blow.mjs +0 -17
  362. package/dist/checkbox-subsection-Dq60blow.mjs.map +0 -1
  363. package/dist/chip-BEnK1Tg4.mjs +0 -1
  364. package/dist/chip-BzRByPTB.mjs +0 -26
  365. package/dist/chip-BzRByPTB.mjs.map +0 -1
  366. package/dist/components/drawer/drawer-close-button.d.mts +0 -15
  367. package/dist/components/drawer/drawer-close-button.mjs +0 -16
  368. package/dist/components/drawer/drawer-content.d.mts +0 -15
  369. package/dist/components/drawer/drawer-content.mjs +0 -16
  370. package/dist/components/drawer/drawer-footer.d.mts +0 -15
  371. package/dist/components/drawer/drawer-footer.mjs +0 -16
  372. package/dist/components/drawer/drawer-header.d.mts +0 -15
  373. package/dist/components/drawer/drawer-header.mjs +0 -16
  374. package/dist/components/drawer/drawer-trigger-context.d.mts +0 -2
  375. package/dist/components/drawer/drawer-trigger-context.mjs +0 -16
  376. package/dist/components/drawer/drawer-trigger.d.mts +0 -15
  377. package/dist/components/drawer/drawer-trigger.mjs +0 -16
  378. package/dist/components/drawer/drawer.d.mts +0 -15
  379. package/dist/components/drawer/drawer.mjs +0 -16
  380. package/dist/components/drawer/index.d.mts +0 -15
  381. package/dist/components/drawer/index.mjs +0 -23
  382. package/dist/details-BFP82eFe.mjs +0 -35
  383. package/dist/details-BFP82eFe.mjs.map +0 -1
  384. package/dist/details-BTkav6FR.mjs +0 -1
  385. package/dist/details-content-B-YYBzuY.mjs +0 -22
  386. package/dist/details-content-B-YYBzuY.mjs.map +0 -1
  387. package/dist/details-summary-BiXSfZfC.mjs +0 -22
  388. package/dist/details-summary-BiXSfZfC.mjs.map +0 -1
  389. package/dist/dialog-CRNSJEfp.mjs +0 -91
  390. package/dist/dialog-CRNSJEfp.mjs.map +0 -1
  391. package/dist/dialog-DOBwB8ll.mjs +0 -1
  392. package/dist/dialog-close-button-CJZrsHfN.mjs +0 -24
  393. package/dist/dialog-close-button-CJZrsHfN.mjs.map +0 -1
  394. package/dist/dialog-content-CrbstN2A.mjs +0 -18
  395. package/dist/dialog-content-CrbstN2A.mjs.map +0 -1
  396. package/dist/dialog-footer-CFNIIiwS.mjs +0 -18
  397. package/dist/dialog-footer-CFNIIiwS.mjs.map +0 -1
  398. package/dist/dialog-header-Duz76tEF.mjs +0 -18
  399. package/dist/dialog-header-Duz76tEF.mjs.map +0 -1
  400. package/dist/dialog-trigger-CEvyANEF.mjs +0 -22
  401. package/dist/dialog-trigger-CEvyANEF.mjs.map +0 -1
  402. package/dist/dialog-trigger-context-Dlf5Whq6.d.mts +0 -15
  403. package/dist/dialog-trigger-context-DqM6S5V-.mjs +0 -16
  404. package/dist/dialog-trigger-context-DqM6S5V-.mjs.map +0 -1
  405. package/dist/drawer-DYVQZLML.mjs +0 -1
  406. package/dist/drawer-Ds2MkNjF.mjs +0 -46
  407. package/dist/drawer-Ds2MkNjF.mjs.map +0 -1
  408. package/dist/drawer-close-button-gjzgYKSw.mjs +0 -12
  409. package/dist/drawer-close-button-gjzgYKSw.mjs.map +0 -1
  410. package/dist/drawer-content-DxY9zj19.mjs +0 -14
  411. package/dist/drawer-content-DxY9zj19.mjs.map +0 -1
  412. package/dist/drawer-footer-DEZvKbZ9.mjs +0 -14
  413. package/dist/drawer-footer-DEZvKbZ9.mjs.map +0 -1
  414. package/dist/drawer-header-8MFxFbKD.mjs +0 -14
  415. package/dist/drawer-header-8MFxFbKD.mjs.map +0 -1
  416. package/dist/drawer-trigger-CUFZtPLQ.mjs +0 -12
  417. package/dist/drawer-trigger-CUFZtPLQ.mjs.map +0 -1
  418. package/dist/drawer-trigger-context-3hDiHR-k.d.mts +0 -13
  419. package/dist/drawer-trigger-context-DUYTD43h.mjs +0 -9
  420. package/dist/drawer-trigger-context-DUYTD43h.mjs.map +0 -1
  421. package/dist/dropdown-4m7NoRv7.mjs +0 -1
  422. package/dist/dropdown-BZZfp-oa.mjs +0 -44
  423. package/dist/dropdown-BZZfp-oa.mjs.map +0 -1
  424. package/dist/dropdown-button-DFRD5c3-.mjs +0 -15
  425. package/dist/dropdown-button-DFRD5c3-.mjs.map +0 -1
  426. package/dist/dropdown-item-rKVicLWJ.mjs +0 -11
  427. package/dist/dropdown-item-rKVicLWJ.mjs.map +0 -1
  428. package/dist/dropdown-list-CCnbpP3r.mjs +0 -11
  429. package/dist/dropdown-list-CCnbpP3r.mjs.map +0 -1
  430. package/dist/dropdown-trigger-FhCAqY-W.mjs +0 -13
  431. package/dist/dropdown-trigger-FhCAqY-W.mjs.map +0 -1
  432. package/dist/dropdown-trigger-context-DnY5awW2.mjs +0 -28
  433. package/dist/dropdown-trigger-context-DnY5awW2.mjs.map +0 -1
  434. package/dist/field-BIBlDQoi.mjs +0 -30
  435. package/dist/field-BIBlDQoi.mjs.map +0 -1
  436. package/dist/field-D8ZE0keC.mjs +0 -1
  437. package/dist/field-affix-DNZXWyx-.mjs +0 -45
  438. package/dist/field-affix-DNZXWyx-.mjs.map +0 -1
  439. package/dist/field-description-Dt2qLchF.mjs +0 -16
  440. package/dist/field-description-Dt2qLchF.mjs.map +0 -1
  441. package/dist/fieldset-CcTi6Dum.mjs +0 -17
  442. package/dist/fieldset-CcTi6Dum.mjs.map +0 -1
  443. package/dist/fieldset-EvlIWkNe.mjs +0 -1
  444. package/dist/fieldset-description-C2jSmnwk.mjs +0 -14
  445. package/dist/fieldset-description-C2jSmnwk.mjs.map +0 -1
  446. package/dist/fieldset-legend-CSlBCJxg.mjs +0 -19
  447. package/dist/fieldset-legend-CSlBCJxg.mjs.map +0 -1
  448. package/dist/filter-group-CqgWY3I1.mjs +0 -1
  449. package/dist/filter-group-Djsr79gi.mjs +0 -40
  450. package/dist/filter-group-Djsr79gi.mjs.map +0 -1
  451. package/dist/footer-CFU5m0uE.mjs +0 -1
  452. package/dist/footer-TlcFTYFC.mjs +0 -111
  453. package/dist/footer-TlcFTYFC.mjs.map +0 -1
  454. package/dist/footer-links-CE3T7evI.mjs +0 -15
  455. package/dist/footer-links-CE3T7evI.mjs.map +0 -1
  456. package/dist/hooks-DndqtgSU.mjs +0 -1
  457. package/dist/input-8Az-c2K1.mjs +0 -1
  458. package/dist/input-DU_8Z4cN.mjs +0 -25
  459. package/dist/input-DU_8Z4cN.mjs.map +0 -1
  460. package/dist/label-BrxPu7QD.mjs +0 -1
  461. package/dist/label-QZyUM8Df.mjs +0 -18
  462. package/dist/label-QZyUM8Df.mjs.map +0 -1
  463. package/dist/link-CU3kBJB8.mjs +0 -19
  464. package/dist/link-CU3kBJB8.mjs.map +0 -1
  465. package/dist/link-CYniSrWk.mjs +0 -1
  466. package/dist/logo-Cj67VFWL.mjs +0 -1
  467. package/dist/logo-d750FIud.mjs +0 -19
  468. package/dist/logo-d750FIud.mjs.map +0 -1
  469. package/dist/navbar-A1xgv5BY.mjs +0 -23
  470. package/dist/navbar-A1xgv5BY.mjs.map +0 -1
  471. package/dist/navbar-Ch7rJsaf.mjs +0 -1
  472. package/dist/pagination-BK24_vW3.mjs +0 -1
  473. package/dist/pagination-Drbd1147.mjs +0 -17
  474. package/dist/pagination-Drbd1147.mjs.map +0 -1
  475. package/dist/pagination-button-F_ZOuaN-.mjs +0 -14
  476. package/dist/pagination-button-F_ZOuaN-.mjs.map +0 -1
  477. package/dist/pagination-item-BfCHe-dC.mjs +0 -15
  478. package/dist/pagination-item-BfCHe-dC.mjs.map +0 -1
  479. package/dist/popover-B8P0dE2-.mjs +0 -85
  480. package/dist/popover-B8P0dE2-.mjs.map +0 -1
  481. package/dist/popover-CGqBsAam.mjs +0 -112
  482. package/dist/popover-CGqBsAam.mjs.map +0 -1
  483. package/dist/popover-C_lxbEYu.mjs +0 -1
  484. package/dist/popover-trigger-BDYAK6jg.mjs +0 -44
  485. package/dist/popover-trigger-BDYAK6jg.mjs.map +0 -1
  486. package/dist/popover-trigger-context-DZFORTLq.mjs +0 -39
  487. package/dist/popover-trigger-context-DZFORTLq.mjs.map +0 -1
  488. package/dist/radio-CikbRUIb.mjs +0 -45
  489. package/dist/radio-CikbRUIb.mjs.map +0 -1
  490. package/dist/radio-DoypqZjr.mjs +0 -1
  491. package/dist/search-B71qkkhd.mjs +0 -1
  492. package/dist/search-B9aa1_12.mjs +0 -58
  493. package/dist/search-B9aa1_12.mjs.map +0 -1
  494. package/dist/select-D80ba0X2.mjs +0 -1
  495. package/dist/select-optgroup-BzjAhfRU.mjs +0 -14
  496. package/dist/select-optgroup-BzjAhfRU.mjs.map +0 -1
  497. package/dist/select-option-DLslGIIp.mjs +0 -14
  498. package/dist/select-option-DLslGIIp.mjs.map +0 -1
  499. package/dist/select-vw7cl3d_.mjs +0 -26
  500. package/dist/select-vw7cl3d_.mjs.map +0 -1
  501. package/dist/selectfield-BrXuaiOJ.mjs +0 -53
  502. package/dist/selectfield-BrXuaiOJ.mjs.map +0 -1
  503. package/dist/selectfield-acG211WN.mjs +0 -1
  504. package/dist/skip-link-0SNs70lF.mjs +0 -17
  505. package/dist/skip-link-0SNs70lF.mjs.map +0 -1
  506. package/dist/skip-link-DtgRPO9V.mjs +0 -1
  507. package/dist/spinner-C4Z-GQVz.mjs +0 -1
  508. package/dist/spinner-xmvtWIZ0.mjs +0 -17
  509. package/dist/spinner-xmvtWIZ0.mjs.map +0 -1
  510. package/dist/sticky-header-Bwee74P6.mjs +0 -20
  511. package/dist/sticky-header-Bwee74P6.mjs.map +0 -1
  512. package/dist/sticky-header-j3zwZtj_.mjs +0 -1
  513. package/dist/sub-navbar-Dke7jNvB.mjs +0 -28
  514. package/dist/sub-navbar-Dke7jNvB.mjs.map +0 -1
  515. package/dist/switch-CJtJvYv6.mjs +0 -34
  516. package/dist/switch-CJtJvYv6.mjs.map +0 -1
  517. package/dist/switch-DZsMi5Uf.mjs +0 -1
  518. package/dist/tab-Bm-746fZ.mjs +0 -27
  519. package/dist/tab-Bm-746fZ.mjs.map +0 -1
  520. package/dist/tabs-BYYODpZJ.mjs +0 -24
  521. package/dist/tabs-BYYODpZJ.mjs.map +0 -1
  522. package/dist/tabs-Bdxundn7.mjs +0 -1
  523. package/dist/tabs-list-BAnPnTwx.mjs +0 -20
  524. package/dist/tabs-list-BAnPnTwx.mjs.map +0 -1
  525. package/dist/tabs-panel-GX2ZoOvH.mjs +0 -21
  526. package/dist/tabs-panel-GX2ZoOvH.mjs.map +0 -1
  527. package/dist/textarea-BDAr1Unx.mjs +0 -1
  528. package/dist/textarea-CHhlswpx.mjs +0 -17
  529. package/dist/textarea-CHhlswpx.mjs.map +0 -1
  530. package/dist/textfield-BFLLhYVI.mjs +0 -1
  531. package/dist/textfield-rcRRkfZB.mjs +0 -65
  532. package/dist/textfield-rcRRkfZB.mjs.map +0 -1
  533. package/dist/useCheckboxGroup-B2Px3eiz.mjs +0 -17
  534. package/dist/useIsElementAboveViewport-BaSLEYQk.mjs +0 -20
  535. package/dist/useIsomorphicLayoutEffect-Bn8aiGVW.mjs +0 -8
  536. package/dist/useIsomorphicLayoutEffect-PJRUcTSc.d.mts +0 -7
  537. package/dist/useMediaQuery-BRGC6S33.mjs +0 -44
  538. package/dist/useMergeRefs-DeEL5hK6.mjs +0 -42
  539. package/dist/usePagination-aBXSjQBp.mjs +0 -97
  540. package/dist/useScrollDirection-C36-HP3S.mjs +0 -28
  541. package/dist/validation-message-376E95cm.mjs +0 -18
  542. package/dist/validation-message-376E95cm.mjs.map +0 -1
  543. package/dist/validation-message-YHHHXfxE.mjs +0 -1
  544. /package/dist/{index-C3reD4RP.d.mts → index-D9zIjQH9.d.mts} +0 -0
@@ -1,15 +1,2 @@
1
- import "../../../useCheckboxGroup-BUpI46_M.mjs";
2
- import "../../../useIsomorphicLayoutEffect-PJRUcTSc.mjs";
3
- import "../../../types-Bgj7p8nD.mjs";
4
- import { i as usePagination, r as UsePaginationProps } from "../../../alert-footer-CHHPzMiX.mjs";
5
- import "../../../dialog-trigger-context-Dlf5Whq6.mjs";
6
- import "../../../drawer-trigger-context-3hDiHR-k.mjs";
7
- import "../../../popover-trigger-context-sQGC75uf.mjs";
8
- import "../../../dropdown-item-wInrqt83.mjs";
9
- import "../../../dropdown-list-z14BOCh4.mjs";
10
- import "../../../footer-links-C7vC-VD7.mjs";
11
- import "../../../pagination-item-cKOuhfhM.mjs";
12
- import "../../../sticky-header-Y0uT-nWI.mjs";
13
- import "../../../index-C3reD4RP.mjs";
14
- import "../../../useIsElementAboveViewport-BcIGWQqn.mjs";
1
+ import { i as usePagination, r as UsePaginationProps } from "../../../alert-footer-D_kCDrhn.mjs";
15
2
  export { UsePaginationProps, usePagination };
@@ -1,3 +1,96 @@
1
- import { t as usePagination } from "../../../usePagination-aBXSjQBp.mjs";
1
+ import { useMemo } from "react";
2
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
3
+ //#region src/utilities/hooks/usePagination/usePagination.tsx
4
+ const range = (start, end) => {
5
+ const length = end - start + 1;
6
+ return Array.from({ length }, (_, i) => start + i);
7
+ };
8
+ /**
9
+ * Hook to help manage pagination state of a Pagination component.
10
+ *
11
+ * @example
12
+ * const { pages, nextButtonProps, prevButtonProps } = usePagination({
13
+ * page,
14
+ * count: 10,
15
+ * showPages: 7,
16
+ * boundaryCount: 1,
17
+ * siblingCount: 1,
18
+ * })
19
+ *
20
+ * <Pagination>
21
+ * <PaginationItem>
22
+ * <PaginationButton {...prevButtonProps}>Previous</PaginationButton>
23
+ * </PaginationItem>
24
+ * {pages.map(({ page, itemKey, buttonProps }) => (
25
+ * <PaginationItem key={itemKey}>
26
+ * {typeof page === 'number' && (
27
+ * <PaginationButton {...buttonProps} aria-label={`Page ${page}`}>
28
+ * {page}
29
+ * </PaginationButton>
30
+ * )}
31
+ * </PaginationItem>
32
+ * ))}
33
+ * <PaginationItem>
34
+ * <PaginationButton {...nextButtonProps}>Next</PaginationButton>
35
+ * </PaginationItem>
36
+ * </Pagination>
37
+ **/
38
+ const usePagination = ({ count, page: pageProp, defaultPage, boundaryCount = 1, siblingCount = 1, disabled = false, onPageChange }) => {
39
+ const [page, setPage] = useControllableState({
40
+ prop: pageProp,
41
+ onChange: onPageChange,
42
+ defaultProp: defaultPage ?? 1,
43
+ caller: "Pagination"
44
+ });
45
+ return useMemo(() => {
46
+ const startPages = range(1, Math.min(boundaryCount, count));
47
+ const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);
48
+ const siblingsStart = Math.max(Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1), boundaryCount + 2);
49
+ const siblingsEnd = Math.min(Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2), count - boundaryCount - 1);
50
+ const itemList = [
51
+ ...startPages,
52
+ ...siblingsStart > boundaryCount + 2 ? ["ellipsis"] : boundaryCount + 1 < count - boundaryCount ? [boundaryCount + 1] : [],
53
+ ...range(siblingsStart, siblingsEnd),
54
+ ...siblingsEnd < count - boundaryCount - 1 ? ["ellipsis"] : count - boundaryCount > boundaryCount ? [count - boundaryCount] : [],
55
+ ...endPages
56
+ ];
57
+ const hasNext = page < count;
58
+ const hasPrev = page !== 1;
59
+ return {
60
+ pages: itemList.map((item, index) => ({
61
+ page: item,
62
+ key: typeof item === "number" ? `page-${item}` : `ellipsis-${index}`,
63
+ buttonProps: typeof item === "number" ? {
64
+ "aria-current": item === page ? "page" : void 0,
65
+ onClick: () => setPage(item),
66
+ variant: "text"
67
+ } : null
68
+ })),
69
+ prevButtonProps: {
70
+ disabled: disabled || !hasPrev,
71
+ "aria-disabled": disabled || !hasPrev,
72
+ onClick: () => setPage(page - 1),
73
+ variant: "text"
74
+ },
75
+ nextButtonProps: {
76
+ disabled: disabled || !hasNext,
77
+ "aria-disabled": disabled || !hasNext,
78
+ onClick: () => setPage(page + 1),
79
+ variant: "text"
80
+ },
81
+ hasPrev,
82
+ hasNext
83
+ };
84
+ }, [
85
+ boundaryCount,
86
+ count,
87
+ disabled,
88
+ page,
89
+ setPage,
90
+ siblingCount
91
+ ]);
92
+ };
93
+ //#endregion
94
+ export { usePagination };
2
95
 
3
- export { usePagination };
96
+ //# sourceMappingURL=usePagination.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePagination-aBXSjQBp.mjs","names":[],"sources":["../src/utilities/hooks/usePagination/usePagination.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport type { PaginationButtonProps } from '../../../components';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nconst range = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, i) => start + i);\n};\n\nexport type UsePaginationProps = {\n /**\n * The number of pages\n */\n count: number;\n /*\n * The current page. The numbering starts from `1`, if controlled\n * @default 1\n */\n page?: number;\n /*\n * The current page. The numbering starts from `1`, if uncontrolled\n * @default 1\n */\n defaultPage?: number;\n /**\n * Number of always visible pages at the beginning and end.\n * @default 1\n */\n boundaryCount?: number;\n /**\n * Number of always visible pages before and after the current page.\n * @default 1\n */\n siblingCount?: number;\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled?: boolean;\n /** Callback when the page changes */\n onPageChange?: (page: number) => void;\n};\n\n/**\n * Hook to help manage pagination state of a Pagination component.\n *\n * @example\n * const { pages, nextButtonProps, prevButtonProps } = usePagination({\n * page,\n * count: 10,\n * showPages: 7,\n * boundaryCount: 1,\n * siblingCount: 1,\n * })\n *\n * <Pagination>\n * <PaginationItem>\n * <PaginationButton {...prevButtonProps}>Previous</PaginationButton>\n * </PaginationItem>\n * {pages.map(({ page, itemKey, buttonProps }) => (\n * <PaginationItem key={itemKey}>\n * {typeof page === 'number' && (\n * <PaginationButton {...buttonProps} aria-label={`Page ${page}`}>\n * {page}\n * </PaginationButton>\n * )}\n * </PaginationItem>\n * ))}\n * <PaginationItem>\n * <PaginationButton {...nextButtonProps}>Next</PaginationButton>\n * </PaginationItem>\n * </Pagination>\n **/\nexport const usePagination = ({\n count,\n page: pageProp,\n defaultPage,\n boundaryCount = 1,\n siblingCount = 1,\n disabled = false,\n onPageChange,\n}: UsePaginationProps) => {\n const [page, setPage] = useControllableState({\n prop: pageProp,\n onChange: onPageChange,\n defaultProp: defaultPage ?? 1,\n caller: 'Pagination',\n });\n\n return useMemo(() => {\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = Math.max(\n Math.min(\n // Natural start\n page - siblingCount,\n // Lower boundary when page is high\n count - boundaryCount - siblingCount * 2 - 1,\n ),\n // Greater than startPages\n boundaryCount + 2,\n );\n\n const siblingsEnd = Math.min(\n Math.max(\n // Natural end\n page + siblingCount,\n // Upper boundary when page is low\n boundaryCount + siblingCount * 2 + 2,\n ),\n // Less than endPages\n count - boundaryCount - 1,\n );\n\n // Basic list of items to render, for example: itemList = ['previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next']\n const itemList: (number | 'ellipsis')[] = [\n ...startPages,\n\n // Start ellipsis\n ...(siblingsStart > boundaryCount + 2\n ? (['ellipsis'] as const)\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n\n // Sibling pages\n ...range(siblingsStart, siblingsEnd),\n\n // End ellipsis\n ...(siblingsEnd < count - boundaryCount - 1\n ? (['ellipsis'] as const)\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n\n ...endPages,\n ];\n\n const hasNext = page < count;\n const hasPrev = page !== 1;\n\n return {\n /** Items and pages to be displayed */\n pages: itemList.map((item, index) => ({\n /** Page number, \"ellipsis\" for ellipsis items */\n page: item,\n /** Unique key for the item */\n key: typeof item === 'number' ? `page-${item}` : `ellipsis-${index}`,\n /** Properties to spread on PaginationButton */\n buttonProps: (typeof item === 'number'\n ? {\n 'aria-current': item === page ? 'page' : undefined,\n onClick: () => setPage(item),\n variant: 'text',\n }\n : null) satisfies PaginationButtonProps | null,\n })),\n /** Properties to spread on PaginationButton used for previous navigation */\n prevButtonProps: {\n disabled: disabled || !hasPrev,\n 'aria-disabled': disabled || !hasPrev, // Using aria-disabled to support all HTML elements if asChild is used\n onClick: () => setPage(page - 1),\n variant: 'text',\n } as PaginationButtonProps,\n /** Properties to spread on PaginationButton used for next naviagation */\n nextButtonProps: {\n disabled: disabled || !hasNext,\n 'aria-disabled': disabled || !hasNext, // Using aria-disabled to support all HTML elements if asChild is used\n onClick: () => setPage(page + 1),\n variant: 'text',\n } as PaginationButtonProps,\n /** If previous page action should be shown */\n hasPrev,\n /** If next page action should be shown */\n hasNext,\n };\n }, [boundaryCount, count, disabled, page, setPage, siblingCount]);\n};\n"],"mappings":";;;;AAIA,MAAM,SAAS,OAAe,QAAgB;CAC5C,MAAM,SAAS,MAAM,QAAQ;AAC7B,QAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,MAAM,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEpD,MAAa,iBAAiB,EAC5B,OACA,MAAM,UACN,aACA,gBAAgB,GAChB,eAAe,GACf,WAAW,OACX,mBACwB;CACxB,MAAM,CAAC,MAAM,WAAW,qBAAqB;EAC3C,MAAM;EACN,UAAU;EACV,aAAa,eAAe;EAC5B,QAAQ;EACT,CAAC;AAEF,QAAO,cAAc;EACnB,MAAM,aAAa,MAAM,GAAG,KAAK,IAAI,eAAe,MAAM,CAAC;EAC3D,MAAM,WAAW,MAAM,KAAK,IAAI,QAAQ,gBAAgB,GAAG,gBAAgB,EAAE,EAAE,MAAM;EAErF,MAAM,gBAAgB,KAAK,IACzB,KAAK,IAEH,OAAO,cAEP,QAAQ,gBAAgB,eAAe,IAAI,EAC5C,EAED,gBAAgB,EACjB;EAED,MAAM,cAAc,KAAK,IACvB,KAAK,IAEH,OAAO,cAEP,gBAAgB,eAAe,IAAI,EACpC,EAED,QAAQ,gBAAgB,EACzB;EAGD,MAAM,WAAoC;GACxC,GAAG;GAGH,GAAI,gBAAgB,gBAAgB,IAC/B,CAAC,WAAW,GACb,gBAAgB,IAAI,QAAQ,gBAC1B,CAAC,gBAAgB,EAAE,GACnB,EAAE;GAGR,GAAG,MAAM,eAAe,YAAY;GAGpC,GAAI,cAAc,QAAQ,gBAAgB,IACrC,CAAC,WAAW,GACb,QAAQ,gBAAgB,gBACtB,CAAC,QAAQ,cAAc,GACvB,EAAE;GAER,GAAG;GACJ;EAED,MAAM,UAAU,OAAO;EACvB,MAAM,UAAU,SAAS;AAEzB,SAAO;GAEL,OAAO,SAAS,KAAK,MAAM,WAAW;IAEpC,MAAM;IAEN,KAAK,OAAO,SAAS,WAAW,QAAQ,SAAS,YAAY;IAE7D,aAAc,OAAO,SAAS,WAC1B;KACE,gBAAgB,SAAS,OAAO,SAAS;KACzC,eAAe,QAAQ,KAAK;KAC5B,SAAS;KACV,GACD;IACL,EAAE;GAEH,iBAAiB;IACf,UAAU,YAAY,CAAC;IACvB,iBAAiB,YAAY,CAAC;IAC9B,eAAe,QAAQ,OAAO,EAAE;IAChC,SAAS;IACV;GAED,iBAAiB;IACf,UAAU,YAAY,CAAC;IACvB,iBAAiB,YAAY,CAAC;IAC9B,eAAe,QAAQ,OAAO,EAAE;IAChC,SAAS;IACV;GAED;GAEA;GACD;IACA;EAAC;EAAe;EAAO;EAAU;EAAM;EAAS;EAAa,CAAC"}
1
+ {"version":3,"file":"usePagination.mjs","names":[],"sources":["../../../../src/utilities/hooks/usePagination/usePagination.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport type { PaginationButtonProps } from '../../../components';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nconst range = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, i) => start + i);\n};\n\nexport type UsePaginationProps = {\n /**\n * The number of pages\n */\n count: number;\n /*\n * The current page. The numbering starts from `1`, if controlled\n * @default 1\n */\n page?: number;\n /*\n * The current page. The numbering starts from `1`, if uncontrolled\n * @default 1\n */\n defaultPage?: number;\n /**\n * Number of always visible pages at the beginning and end.\n * @default 1\n */\n boundaryCount?: number;\n /**\n * Number of always visible pages before and after the current page.\n * @default 1\n */\n siblingCount?: number;\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled?: boolean;\n /** Callback when the page changes */\n onPageChange?: (page: number) => void;\n};\n\n/**\n * Hook to help manage pagination state of a Pagination component.\n *\n * @example\n * const { pages, nextButtonProps, prevButtonProps } = usePagination({\n * page,\n * count: 10,\n * showPages: 7,\n * boundaryCount: 1,\n * siblingCount: 1,\n * })\n *\n * <Pagination>\n * <PaginationItem>\n * <PaginationButton {...prevButtonProps}>Previous</PaginationButton>\n * </PaginationItem>\n * {pages.map(({ page, itemKey, buttonProps }) => (\n * <PaginationItem key={itemKey}>\n * {typeof page === 'number' && (\n * <PaginationButton {...buttonProps} aria-label={`Page ${page}`}>\n * {page}\n * </PaginationButton>\n * )}\n * </PaginationItem>\n * ))}\n * <PaginationItem>\n * <PaginationButton {...nextButtonProps}>Next</PaginationButton>\n * </PaginationItem>\n * </Pagination>\n **/\nexport const usePagination = ({\n count,\n page: pageProp,\n defaultPage,\n boundaryCount = 1,\n siblingCount = 1,\n disabled = false,\n onPageChange,\n}: UsePaginationProps) => {\n const [page, setPage] = useControllableState({\n prop: pageProp,\n onChange: onPageChange,\n defaultProp: defaultPage ?? 1,\n caller: 'Pagination',\n });\n\n return useMemo(() => {\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = Math.max(\n Math.min(\n // Natural start\n page - siblingCount,\n // Lower boundary when page is high\n count - boundaryCount - siblingCount * 2 - 1,\n ),\n // Greater than startPages\n boundaryCount + 2,\n );\n\n const siblingsEnd = Math.min(\n Math.max(\n // Natural end\n page + siblingCount,\n // Upper boundary when page is low\n boundaryCount + siblingCount * 2 + 2,\n ),\n // Less than endPages\n count - boundaryCount - 1,\n );\n\n // Basic list of items to render, for example: itemList = ['previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next']\n const itemList: (number | 'ellipsis')[] = [\n ...startPages,\n\n // Start ellipsis\n ...(siblingsStart > boundaryCount + 2\n ? (['ellipsis'] as const)\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n\n // Sibling pages\n ...range(siblingsStart, siblingsEnd),\n\n // End ellipsis\n ...(siblingsEnd < count - boundaryCount - 1\n ? (['ellipsis'] as const)\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n\n ...endPages,\n ];\n\n const hasNext = page < count;\n const hasPrev = page !== 1;\n\n return {\n /** Items and pages to be displayed */\n pages: itemList.map((item, index) => ({\n /** Page number, \"ellipsis\" for ellipsis items */\n page: item,\n /** Unique key for the item */\n key: typeof item === 'number' ? `page-${item}` : `ellipsis-${index}`,\n /** Properties to spread on PaginationButton */\n buttonProps: (typeof item === 'number'\n ? {\n 'aria-current': item === page ? 'page' : undefined,\n onClick: () => setPage(item),\n variant: 'text',\n }\n : null) satisfies PaginationButtonProps | null,\n })),\n /** Properties to spread on PaginationButton used for previous navigation */\n prevButtonProps: {\n disabled: disabled || !hasPrev,\n 'aria-disabled': disabled || !hasPrev, // Using aria-disabled to support all HTML elements if asChild is used\n onClick: () => setPage(page - 1),\n variant: 'text',\n } as PaginationButtonProps,\n /** Properties to spread on PaginationButton used for next naviagation */\n nextButtonProps: {\n disabled: disabled || !hasNext,\n 'aria-disabled': disabled || !hasNext, // Using aria-disabled to support all HTML elements if asChild is used\n onClick: () => setPage(page + 1),\n variant: 'text',\n } as PaginationButtonProps,\n /** If previous page action should be shown */\n hasPrev,\n /** If next page action should be shown */\n hasNext,\n };\n }, [boundaryCount, count, disabled, page, setPage, siblingCount]);\n};\n"],"mappings":";;;AAIA,MAAM,SAAS,OAAe,QAAgB;CAC5C,MAAM,SAAS,MAAM,QAAQ;AAC7B,QAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,MAAM,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEpD,MAAa,iBAAiB,EAC5B,OACA,MAAM,UACN,aACA,gBAAgB,GAChB,eAAe,GACf,WAAW,OACX,mBACwB;CACxB,MAAM,CAAC,MAAM,WAAW,qBAAqB;EAC3C,MAAM;EACN,UAAU;EACV,aAAa,eAAe;EAC5B,QAAQ;EACT,CAAC;AAEF,QAAO,cAAc;EACnB,MAAM,aAAa,MAAM,GAAG,KAAK,IAAI,eAAe,MAAM,CAAC;EAC3D,MAAM,WAAW,MAAM,KAAK,IAAI,QAAQ,gBAAgB,GAAG,gBAAgB,EAAE,EAAE,MAAM;EAErF,MAAM,gBAAgB,KAAK,IACzB,KAAK,IAEH,OAAO,cAEP,QAAQ,gBAAgB,eAAe,IAAI,EAC5C,EAED,gBAAgB,EACjB;EAED,MAAM,cAAc,KAAK,IACvB,KAAK,IAEH,OAAO,cAEP,gBAAgB,eAAe,IAAI,EACpC,EAED,QAAQ,gBAAgB,EACzB;EAGD,MAAM,WAAoC;GACxC,GAAG;GAGH,GAAI,gBAAgB,gBAAgB,IAC/B,CAAC,WAAW,GACb,gBAAgB,IAAI,QAAQ,gBAC1B,CAAC,gBAAgB,EAAE,GACnB,EAAE;GAGR,GAAG,MAAM,eAAe,YAAY;GAGpC,GAAI,cAAc,QAAQ,gBAAgB,IACrC,CAAC,WAAW,GACb,QAAQ,gBAAgB,gBACtB,CAAC,QAAQ,cAAc,GACvB,EAAE;GAER,GAAG;GACJ;EAED,MAAM,UAAU,OAAO;EACvB,MAAM,UAAU,SAAS;AAEzB,SAAO;GAEL,OAAO,SAAS,KAAK,MAAM,WAAW;IAEpC,MAAM;IAEN,KAAK,OAAO,SAAS,WAAW,QAAQ,SAAS,YAAY;IAE7D,aAAc,OAAO,SAAS,WAC1B;KACE,gBAAgB,SAAS,OAAO,SAAS,KAAA;KACzC,eAAe,QAAQ,KAAK;KAC5B,SAAS;KACV,GACD;IACL,EAAE;GAEH,iBAAiB;IACf,UAAU,YAAY,CAAC;IACvB,iBAAiB,YAAY,CAAC;IAC9B,eAAe,QAAQ,OAAO,EAAE;IAChC,SAAS;IACV;GAED,iBAAiB;IACf,UAAU,YAAY,CAAC;IACvB,iBAAiB,YAAY,CAAC;IAC9B,eAAe,QAAQ,OAAO,EAAE;IAChC,SAAS;IACV;GAED;GAEA;GACD;IACA;EAAC;EAAe;EAAO;EAAU;EAAM;EAAS;EAAa,CAAC"}
@@ -1,2 +1,2 @@
1
- import { t as useScrollDirection } from "../../../useScrollDirection-Cm7w2CbB.mjs";
1
+ import { t as useScrollDirection } from "../../../useScrollDirection-CepdY5lA.mjs";
2
2
  export { useScrollDirection };
@@ -1,3 +1,27 @@
1
- import { t as useScrollDirection } from "../../../useScrollDirection-C36-HP3S.mjs";
1
+ import { useEffect, useState } from "react";
2
+ //#region src/utilities/hooks/useScrollDirection/useScrollDirection.tsx
3
+ /**
4
+ * A custom React hook that detects the vertical scroll direction of the page.
5
+ *
6
+ * @returns {'up' | 'down' | null} The current scroll direction. Returns `null` on the initial render.
7
+ * The direction is only updated if the scroll distance exceeds a 5px threshold to prevent sensitivity to minor scroll jitter.
8
+ */
9
+ const useScrollDirection = () => {
10
+ const [scrollDirection, setScrollDirection] = useState(null);
11
+ useEffect(() => {
12
+ let lastScrollY = window.pageYOffset;
13
+ const updateScrollDirection = () => {
14
+ const scrollY = window.pageYOffset;
15
+ const direction = scrollY > lastScrollY ? "down" : "up";
16
+ if (direction !== scrollDirection && (scrollY - lastScrollY > 5 || scrollY - lastScrollY < -5)) setScrollDirection(direction);
17
+ lastScrollY = scrollY > 0 ? scrollY : 0;
18
+ };
19
+ window.addEventListener("scroll", updateScrollDirection);
20
+ return () => window.removeEventListener("scroll", updateScrollDirection);
21
+ }, [scrollDirection]);
22
+ return scrollDirection;
23
+ };
24
+ //#endregion
25
+ export { useScrollDirection };
2
26
 
3
- export { useScrollDirection };
27
+ //# sourceMappingURL=useScrollDirection.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollDirection-C36-HP3S.mjs","names":[],"sources":["../src/utilities/hooks/useScrollDirection/useScrollDirection.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * A custom React hook that detects the vertical scroll direction of the page.\n *\n * @returns {'up' | 'down' | null} The current scroll direction. Returns `null` on the initial render.\n * The direction is only updated if the scroll distance exceeds a 5px threshold to prevent sensitivity to minor scroll jitter.\n */\nexport const useScrollDirection = () => {\n const [scrollDirection, setScrollDirection] = useState<'up' | 'down' | null>(null);\n useEffect(() => {\n let lastScrollY = window.pageYOffset;\n const updateScrollDirection = () => {\n const scrollY = window.pageYOffset;\n const direction = scrollY > lastScrollY ? 'down' : 'up';\n if (direction !== scrollDirection && (scrollY - lastScrollY > 5 || scrollY - lastScrollY < -5)) {\n setScrollDirection(direction);\n }\n lastScrollY = scrollY > 0 ? scrollY : 0;\n };\n window.addEventListener('scroll', updateScrollDirection);\n return () => window.removeEventListener('scroll', updateScrollDirection);\n }, [scrollDirection]);\n\n return scrollDirection;\n};\n"],"mappings":";;;;;;;;;AAQA,MAAa,2BAA2B;CACtC,MAAM,CAAC,iBAAiB,sBAAsB,SAA+B,KAAK;AAClF,iBAAgB;EACd,IAAI,cAAc,OAAO;EACzB,MAAM,8BAA8B;GAClC,MAAM,UAAU,OAAO;GACvB,MAAM,YAAY,UAAU,cAAc,SAAS;AACnD,OAAI,cAAc,oBAAoB,UAAU,cAAc,KAAK,UAAU,cAAc,IACzF,oBAAmB,UAAU;AAE/B,iBAAc,UAAU,IAAI,UAAU;;AAExC,SAAO,iBAAiB,UAAU,sBAAsB;AACxD,eAAa,OAAO,oBAAoB,UAAU,sBAAsB;IACvE,CAAC,gBAAgB,CAAC;AAErB,QAAO"}
1
+ {"version":3,"file":"useScrollDirection.mjs","names":[],"sources":["../../../../src/utilities/hooks/useScrollDirection/useScrollDirection.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * A custom React hook that detects the vertical scroll direction of the page.\n *\n * @returns {'up' | 'down' | null} The current scroll direction. Returns `null` on the initial render.\n * The direction is only updated if the scroll distance exceeds a 5px threshold to prevent sensitivity to minor scroll jitter.\n */\nexport const useScrollDirection = () => {\n const [scrollDirection, setScrollDirection] = useState<'up' | 'down' | null>(null);\n useEffect(() => {\n let lastScrollY = window.pageYOffset;\n const updateScrollDirection = () => {\n const scrollY = window.pageYOffset;\n const direction = scrollY > lastScrollY ? 'down' : 'up';\n if (direction !== scrollDirection && (scrollY - lastScrollY > 5 || scrollY - lastScrollY < -5)) {\n setScrollDirection(direction);\n }\n lastScrollY = scrollY > 0 ? scrollY : 0;\n };\n window.addEventListener('scroll', updateScrollDirection);\n return () => window.removeEventListener('scroll', updateScrollDirection);\n }, [scrollDirection]);\n\n return scrollDirection;\n};\n"],"mappings":";;;;;;;;AAQA,MAAa,2BAA2B;CACtC,MAAM,CAAC,iBAAiB,sBAAsB,SAA+B,KAAK;AAClF,iBAAgB;EACd,IAAI,cAAc,OAAO;EACzB,MAAM,8BAA8B;GAClC,MAAM,UAAU,OAAO;GACvB,MAAM,YAAY,UAAU,cAAc,SAAS;AACnD,OAAI,cAAc,oBAAoB,UAAU,cAAc,KAAK,UAAU,cAAc,IACzF,oBAAmB,UAAU;AAE/B,iBAAc,UAAU,IAAI,UAAU;;AAExC,SAAO,iBAAiB,UAAU,sBAAsB;AACxD,eAAa,OAAO,oBAAoB,UAAU,sBAAsB;IACvE,CAAC,gBAAgB,CAAC;AAErB,QAAO"}
@@ -1,18 +1,8 @@
1
- import { r as useCheckboxGroup, t as UseCheckboxGroupOptions } from "../useCheckboxGroup-BUpI46_M.mjs";
2
- import { t as useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect-PJRUcTSc.mjs";
3
- import "../types-Bgj7p8nD.mjs";
4
- import { i as usePagination, r as UsePaginationProps } from "../alert-footer-CHHPzMiX.mjs";
5
- import "../dialog-trigger-context-Dlf5Whq6.mjs";
6
- import "../drawer-trigger-context-3hDiHR-k.mjs";
7
- import "../popover-trigger-context-sQGC75uf.mjs";
8
- import "../dropdown-item-wInrqt83.mjs";
9
- import "../dropdown-list-z14BOCh4.mjs";
10
- import "../footer-links-C7vC-VD7.mjs";
11
- import "../pagination-item-cKOuhfhM.mjs";
12
- import "../sticky-header-Y0uT-nWI.mjs";
13
- import "../index-C3reD4RP.mjs";
14
- import { t as useIsElementAboveViewport } from "../useIsElementAboveViewport-BcIGWQqn.mjs";
15
- import { t as useScrollDirection } from "../useScrollDirection-Cm7w2CbB.mjs";
16
- import { n as useMediaQuery, t as UseMediaQueryOptions } from "../useMediaQuery-CIi3MXay.mjs";
17
- import { t as MergeRight } from "../types-Biyhmxh9.mjs";
1
+ import { r as useCheckboxGroup, t as UseCheckboxGroupOptions } from "../useCheckboxGroup-Boc_tLJ3.mjs";
2
+ import { t as useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect-DXCY5AxR.mjs";
3
+ import { i as usePagination, r as UsePaginationProps } from "../alert-footer-D_kCDrhn.mjs";
4
+ import { t as useIsElementAboveViewport } from "../useIsElementAboveViewport-DmYCeDwm.mjs";
5
+ import { t as useScrollDirection } from "../useScrollDirection-CepdY5lA.mjs";
6
+ import { n as useMediaQuery, t as UseMediaQueryOptions } from "../useMediaQuery-Cz0DvE8S.mjs";
7
+ import { t as MergeRight } from "../types-CgAV-Uiu.mjs";
18
8
  export { MergeRight, UseCheckboxGroupOptions, UseMediaQueryOptions, UsePaginationProps, useCheckboxGroup, useIsElementAboveViewport, useIsomorphicLayoutEffect, useMediaQuery, usePagination, useScrollDirection };
@@ -1,9 +1,8 @@
1
- import { t as useCheckboxGroup } from "../useCheckboxGroup-B2Px3eiz.mjs";
2
- import { t as useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect-Bn8aiGVW.mjs";
3
- import { t as usePagination } from "../usePagination-aBXSjQBp.mjs";
4
- import { t as useIsElementAboveViewport } from "../useIsElementAboveViewport-BaSLEYQk.mjs";
5
- import { t as useScrollDirection } from "../useScrollDirection-C36-HP3S.mjs";
6
- import { t as useMediaQuery } from "../useMediaQuery-BRGC6S33.mjs";
7
- import "../hooks-DndqtgSU.mjs";
8
-
9
- export { useCheckboxGroup, useIsElementAboveViewport, useIsomorphicLayoutEffect, useMediaQuery, usePagination, useScrollDirection };
1
+ import { useCheckboxGroup } from "./hooks/useCheckboxGroup/useCheckboxGroup.mjs";
2
+ import { useIsomorphicLayoutEffect } from "./hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs";
3
+ import { usePagination } from "./hooks/usePagination/usePagination.mjs";
4
+ import { useIsElementAboveViewport } from "./hooks/useIsElementAboveViewport/useIsElementAboveViewport.mjs";
5
+ import { useScrollDirection } from "./hooks/useScrollDirection/useScrollDirection.mjs";
6
+ import { useMediaQuery } from "./hooks/useMediaQuery/useMediaQuery.mjs";
7
+ import "./hooks/index.mjs";
8
+ export { useCheckboxGroup, useIsElementAboveViewport, useIsomorphicLayoutEffect, useMediaQuery, usePagination, useScrollDirection };
@@ -1,2 +1,2 @@
1
- import { t as MergeRight } from "../types-Biyhmxh9.mjs";
1
+ import { t as MergeRight } from "../types-CgAV-Uiu.mjs";
2
2
  export { MergeRight };
@@ -1 +1 @@
1
- export { };
1
+ export {};
@@ -1,5 +1,4 @@
1
- import { n as initPopover } from "../../popover-B8P0dE2-.mjs";
2
-
1
+ import { initPopover } from "../popover/index.mjs";
3
2
  //#region src/vanilla/dropdown/index.ts
4
3
  /**
5
4
  * Initializes the dropdown.
@@ -13,7 +12,7 @@ const initDropdown = ({ id, disableAutoPlacement = false, placement = "bottom",
13
12
  positionMiddleware,
14
13
  padding
15
14
  });
16
-
17
15
  //#endregion
18
16
  export { initDropdown };
17
+
19
18
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/vanilla/dropdown/index.ts"],"sourcesContent":["import type { Middleware, Placement } from '@floating-ui/dom';\nimport { initPopover } from '../popover';\n\nexport type InitDropdownOptions = {\n /** The id of the dropdown to initialize. The trigger element should have a `aria-controls` attribute with the same id. */\n id: string;\n /**\n * Placement of the dropdown relative to the trigger.\n * @default 'bottom'\n */\n placement?: Placement;\n /**\n * Additional middleware to use for positioning the dropdown.\n *\n * @example\n * Prevent the dropdown from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware: [\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * The padding used by the `offset` middleware.\n * @default '20'\n */\n padding?: number;\n};\n\n/**\n * Initializes the dropdown.\n * @param options - InitDropdownOptions\n * @returns A function to programmatically toggle the dropdown.\n */\nexport const initDropdown = ({\n id,\n disableAutoPlacement = false,\n placement = 'bottom',\n positionMiddleware = [],\n padding,\n}: InitDropdownOptions) => initPopover({ id, disableAutoPlacement, placement, positionMiddleware, padding });\n"],"mappings":";;;;;;;;AAiDA,MAAa,gBAAgB,EAC3B,IACA,uBAAuB,OACvB,YAAY,UACZ,qBAAqB,EAAE,EACvB,cACyB,YAAY;CAAE;CAAI;CAAsB;CAAW;CAAoB;CAAS,CAAC"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/vanilla/dropdown/index.ts"],"sourcesContent":["import type { Middleware, Placement } from '@floating-ui/dom';\nimport { initPopover } from '../popover';\n\nexport type InitDropdownOptions = {\n /** The id of the dropdown to initialize. The trigger element should have a `aria-controls` attribute with the same id. */\n id: string;\n /**\n * Placement of the dropdown relative to the trigger.\n * @default 'bottom'\n */\n placement?: Placement;\n /**\n * Additional middleware to use for positioning the dropdown.\n *\n * @example\n * Prevent the dropdown from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware: [\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * The padding used by the `offset` middleware.\n * @default '20'\n */\n padding?: number;\n};\n\n/**\n * Initializes the dropdown.\n * @param options - InitDropdownOptions\n * @returns A function to programmatically toggle the dropdown.\n */\nexport const initDropdown = ({\n id,\n disableAutoPlacement = false,\n placement = 'bottom',\n positionMiddleware = [],\n padding,\n}: InitDropdownOptions) => initPopover({ id, disableAutoPlacement, placement, positionMiddleware, padding });\n"],"mappings":";;;;;;;AAiDA,MAAa,gBAAgB,EAC3B,IACA,uBAAuB,OACvB,YAAY,UACZ,qBAAqB,EAAE,EACvB,cACyB,YAAY;CAAE;CAAI;CAAsB;CAAW;CAAoB;CAAS,CAAC"}
@@ -1,5 +1,5 @@
1
- import { n as initPopover, t as arrowPseudoElement } from "../popover-B8P0dE2-.mjs";
1
+ import { arrowPseudoElement, initPopover } from "./popover/index.mjs";
2
2
  import { initDropdown } from "./dropdown/index.mjs";
3
3
  import { initSubNavbar } from "./sub-navbar/index.mjs";
4
-
5
- export { arrowPseudoElement, initDropdown, initPopover, initSubNavbar };
4
+ import "@digdir/designsystemet-web";
5
+ export { arrowPseudoElement, initDropdown, initPopover, initSubNavbar };
@@ -1,3 +1,84 @@
1
- import { n as initPopover, t as arrowPseudoElement } from "../../popover-B8P0dE2-.mjs";
1
+ import { autoUpdate, computePosition, flip, hide, offset, shift, size } from "@floating-ui/dom";
2
+ //#region src/vanilla/popover/index.ts
3
+ /**
4
+ * Initializes the popover.
5
+ * @param options - InitPopoverOptions
6
+ * @returns A function to programmatically toggle the popover.
7
+ */
8
+ const initPopover = ({ id, disableAutoPlacement = false, placement = "top", positionMiddleware = [], padding = 20 }) => {
9
+ let cleanup;
10
+ const popover = document.getElementById(id);
11
+ const triggerSelector = `[aria-controls="${id}"]`;
12
+ const trigger = document.querySelector(triggerSelector);
13
+ if (!popover || !trigger) return;
14
+ const togglePopover = (open) => {
15
+ if (open) {
16
+ cleanup = autoUpdate(trigger, popover, () => {
17
+ computePosition(trigger, popover, {
18
+ middleware: [
19
+ offset(padding),
20
+ ...disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })],
21
+ ...positionMiddleware,
22
+ hide({ padding }),
23
+ ...popover.dataset.arrow === "true" ? [arrowPseudoElement] : [],
24
+ size({ apply({ rects, elements }) {
25
+ elements.floating.style.setProperty("--bic-popover-trigger-width", `${rects.reference.width}px`);
26
+ } })
27
+ ],
28
+ strategy: "fixed",
29
+ placement
30
+ }).then(({ x, y, middlewareData }) => {
31
+ popover.style.translate = `${x}px ${y}px`;
32
+ popover.style.visibility = middlewareData.hide?.referenceHidden ? "hidden" : "visible";
33
+ });
34
+ });
35
+ popover.setAttribute("aria-hidden", "false");
36
+ trigger.setAttribute("aria-expanded", "true");
37
+ } else {
38
+ cleanup?.();
39
+ popover.setAttribute("aria-hidden", "true");
40
+ trigger.setAttribute("aria-expanded", "false");
41
+ }
42
+ };
43
+ document.addEventListener("click", (event) => {
44
+ const el = event.target;
45
+ const isTrigger = el?.closest?.(triggerSelector);
46
+ const isOutside = !isTrigger && !popover.contains(el);
47
+ const isOpen = popover.getAttribute("aria-hidden") === "false";
48
+ if (isTrigger) togglePopover(!isOpen);
49
+ if (isOutside && isOpen) togglePopover(false);
50
+ }, true);
51
+ return togglePopover;
52
+ };
53
+ const arrowPseudoElement = {
54
+ name: "ArrowPseudoElement",
55
+ fn(data) {
56
+ const { elements, rects, placement } = data;
57
+ let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;
58
+ let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;
59
+ if (rects.reference.width > rects.floating.width) arrowX = `${Math.round(rects.floating.width / 2)}px`;
60
+ if (rects.reference.height > rects.floating.height) arrowY = `${Math.round(rects.floating.height / 2)}px`;
61
+ switch (placement.split("-")[0]) {
62
+ case "top":
63
+ arrowY = "100%";
64
+ break;
65
+ case "right":
66
+ arrowX = "0";
67
+ break;
68
+ case "bottom":
69
+ arrowY = "0";
70
+ break;
71
+ case "left":
72
+ arrowX = "100%";
73
+ break;
74
+ }
75
+ elements.floating.setAttribute("data-placement", placement.split("-")[0]);
76
+ elements.floating.style.setProperty("--bic-popover-arrow-x", arrowX);
77
+ elements.floating.style.setProperty("--bic-popover-arrow-y", arrowY);
78
+ return data;
79
+ }
80
+ };
81
+ //#endregion
82
+ export { arrowPseudoElement, initPopover };
2
83
 
3
- export { arrowPseudoElement, initPopover };
84
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/vanilla/popover/index.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift, hide, size } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\n\nexport type InitPopoverOptions = {\n /** The id of the popover to initialize. The trigger element should have a `aria-controls` attribute with the same id. */\n id: string;\n /**\n * Placement of the popover relative to the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware: [\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * The padding used by the `offset` middleware.\n * @default '20'\n */\n padding?: number;\n};\n\n/**\n * Initializes the popover.\n * @param options - InitPopoverOptions\n * @returns A function to programmatically toggle the popover.\n */\nexport const initPopover = ({\n id,\n disableAutoPlacement = false,\n placement = 'top',\n positionMiddleware = [],\n padding = 20,\n}: InitPopoverOptions) => {\n let cleanup: (() => void) | undefined;\n const popover = document.getElementById(id);\n const triggerSelector = `[aria-controls=\"${id}\"]`;\n const trigger = document.querySelector(triggerSelector);\n\n if (!popover || !trigger) return;\n\n const togglePopover = (open: boolean) => {\n if (open) {\n cleanup = autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding }),\n ...(popover.dataset.arrow === 'true' ? [arrowPseudoElement] : []),\n size({\n apply({ rects, elements }) {\n elements.floating.style.setProperty('--bic-popover-trigger-width', `${rects.reference.width}px`);\n },\n }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n popover.setAttribute('aria-hidden', 'false');\n trigger.setAttribute('aria-expanded', 'true');\n } else {\n cleanup?.();\n popover.setAttribute('aria-hidden', 'true');\n trigger.setAttribute('aria-expanded', 'false');\n }\n };\n\n document.addEventListener(\n 'click',\n (event) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(triggerSelector);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n const isOpen = popover.getAttribute('aria-hidden') === 'false';\n\n if (isTrigger) {\n togglePopover(!isOpen);\n }\n if (isOutside && isOpen) {\n togglePopover(false);\n }\n },\n true,\n );\n\n return togglePopover;\n};\n\nexport const arrowPseudoElement: Middleware = {\n name: 'ArrowPseudoElement',\n fn(data) {\n const { elements, rects, placement } = data;\n\n let arrowX = `${Math.round(rects.reference.width / 2 + rects.reference.x - data.x)}px`;\n let arrowY = `${Math.round(rects.reference.height / 2 + rects.reference.y - data.y)}px`;\n\n if (rects.reference.width > rects.floating.width) {\n arrowX = `${Math.round(rects.floating.width / 2)}px`;\n }\n\n if (rects.reference.height > rects.floating.height) {\n arrowY = `${Math.round(rects.floating.height / 2)}px`;\n }\n\n switch (placement.split('-')[0]) {\n case 'top':\n arrowY = '100%';\n break;\n case 'right':\n arrowX = '0';\n break;\n case 'bottom':\n arrowY = '0';\n break;\n case 'left':\n arrowX = '100%';\n break;\n }\n\n elements.floating.setAttribute('data-placement', placement.split('-')[0]); // We only need top/left/right/bottom\n elements.floating.style.setProperty('--bic-popover-arrow-x', arrowX);\n elements.floating.style.setProperty('--bic-popover-arrow-y', arrowY);\n return data;\n },\n};\n"],"mappings":";;;;;;;AAiDA,MAAa,eAAe,EAC1B,IACA,uBAAuB,OACvB,YAAY,OACZ,qBAAqB,EAAE,EACvB,UAAU,SACc;CACxB,IAAI;CACJ,MAAM,UAAU,SAAS,eAAe,GAAG;CAC3C,MAAM,kBAAkB,mBAAmB,GAAG;CAC9C,MAAM,UAAU,SAAS,cAAc,gBAAgB;AAEvD,KAAI,CAAC,WAAW,CAAC,QAAS;CAE1B,MAAM,iBAAiB,SAAkB;AACvC,MAAI,MAAM;AACR,aAAU,WAAW,SAAS,eAAe;AAC3C,oBAAgB,SAAS,SAAS;KAChC,YAAY;MACV,OAAO,QAAQ;MACf,GAAI,uBAAuB,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;MACvE,GAAG;MACH,KAAK,EAAE,SAAS,CAAC;MACjB,GAAI,QAAQ,QAAQ,UAAU,SAAS,CAAC,mBAAmB,GAAG,EAAE;MAChE,KAAK,EACH,MAAM,EAAE,OAAO,YAAY;AACzB,gBAAS,SAAS,MAAM,YAAY,+BAA+B,GAAG,MAAM,UAAU,MAAM,IAAI;SAEnG,CAAC;MACH;KACD,UAAU;KACV;KACD,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,qBAAqB;AACpC,aAAQ,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE;AACtC,aAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;MAC7E;KACF;AACF,WAAQ,aAAa,eAAe,QAAQ;AAC5C,WAAQ,aAAa,iBAAiB,OAAO;SACxC;AACL,cAAW;AACX,WAAQ,aAAa,eAAe,OAAO;AAC3C,WAAQ,aAAa,iBAAiB,QAAQ;;;AAIlD,UAAS,iBACP,UACC,UAAU;EACT,MAAM,KAAK,MAAM;EACjB,MAAM,YAAY,IAAI,UAAU,gBAAgB;EAChD,MAAM,YAAY,CAAC,aAAa,CAAC,QAAQ,SAAS,GAAW;EAC7D,MAAM,SAAS,QAAQ,aAAa,cAAc,KAAK;AAEvD,MAAI,UACF,eAAc,CAAC,OAAO;AAExB,MAAI,aAAa,OACf,eAAc,MAAM;IAGxB,KACD;AAED,QAAO;;AAGT,MAAa,qBAAiC;CAC5C,MAAM;CACN,GAAG,MAAM;EACP,MAAM,EAAE,UAAU,OAAO,cAAc;EAEvC,IAAI,SAAS,GAAG,KAAK,MAAM,MAAM,UAAU,QAAQ,IAAI,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;EACnF,IAAI,SAAS,GAAG,KAAK,MAAM,MAAM,UAAU,SAAS,IAAI,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;AAEpF,MAAI,MAAM,UAAU,QAAQ,MAAM,SAAS,MACzC,UAAS,GAAG,KAAK,MAAM,MAAM,SAAS,QAAQ,EAAE,CAAC;AAGnD,MAAI,MAAM,UAAU,SAAS,MAAM,SAAS,OAC1C,UAAS,GAAG,KAAK,MAAM,MAAM,SAAS,SAAS,EAAE,CAAC;AAGpD,UAAQ,UAAU,MAAM,IAAI,CAAC,IAA7B;GACE,KAAK;AACH,aAAS;AACT;GACF,KAAK;AACH,aAAS;AACT;GACF,KAAK;AACH,aAAS;AACT;GACF,KAAK;AACH,aAAS;AACT;;AAGJ,WAAS,SAAS,aAAa,kBAAkB,UAAU,MAAM,IAAI,CAAC,GAAG;AACzE,WAAS,SAAS,MAAM,YAAY,yBAAyB,OAAO;AACpE,WAAS,SAAS,MAAM,YAAY,yBAAyB,OAAO;AACpE,SAAO;;CAEV"}
@@ -112,7 +112,7 @@ const initSubNavbar = ({ selector = ".bi-sub-navbar" } = {}) => {
112
112
  scrollTracker.destroy();
113
113
  };
114
114
  };
115
-
116
115
  //#endregion
117
116
  export { initSubNavbar };
117
+
118
118
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/vanilla/sub-navbar/index.ts"],"sourcesContent":["/**\n * Detects the vertical scroll direction of the page.\n * Returns 'up' | 'down' | null. The direction is only updated if the scroll distance\n * exceeds a 5px threshold to prevent sensitivity to minor scroll jitter.\n */\nclass ScrollDirectionTracker {\n private scrollDirection: 'up' | 'down' | null = null;\n private lastScrollY = window.pageYOffset;\n private callbacks = new Set<(direction: 'up' | 'down' | null) => void>();\n\n constructor() {\n this.updateScrollDirection = this.updateScrollDirection.bind(this);\n window.addEventListener('scroll', this.updateScrollDirection);\n }\n\n private updateScrollDirection() {\n const scrollY = window.pageYOffset;\n const direction = scrollY > this.lastScrollY ? 'down' : 'up';\n\n if (direction !== this.scrollDirection && (scrollY - this.lastScrollY > 5 || scrollY - this.lastScrollY < -5)) {\n this.scrollDirection = direction;\n this.callbacks.forEach((callback) => callback(this.scrollDirection));\n }\n\n this.lastScrollY = scrollY > 0 ? scrollY : 0;\n }\n\n subscribe(callback: (direction: 'up' | 'down' | null) => void) {\n this.callbacks.add(callback);\n return () => this.callbacks.delete(callback);\n }\n\n destroy() {\n window.removeEventListener('scroll', this.updateScrollDirection);\n this.callbacks.clear();\n }\n\n getCurrentDirection() {\n return this.scrollDirection;\n }\n}\n\n/**\n * Detects when an element is scrolled past and is no longer in the viewport.\n */\nclass ElementAboveViewportTracker {\n private isAboveViewport = false;\n private observer: IntersectionObserver;\n private callbacks = new Set<(isAbove: boolean) => void>();\n\n constructor(private element: HTMLElement) {\n this.observer = new IntersectionObserver(\n ([entry]) => {\n const newIsAbove = entry.boundingClientRect.y < 0;\n if (newIsAbove !== this.isAboveViewport) {\n this.isAboveViewport = newIsAbove;\n this.callbacks.forEach((callback) => callback(this.isAboveViewport));\n }\n },\n { threshold: [0] },\n );\n\n this.observer.observe(this.element);\n }\n\n subscribe(callback: (isAbove: boolean) => void) {\n this.callbacks.add(callback);\n return () => this.callbacks.delete(callback);\n }\n\n destroy() {\n this.observer.disconnect();\n this.callbacks.clear();\n }\n\n getIsAboveViewport() {\n return this.isAboveViewport;\n }\n}\n\nexport type InitSubNavbarOptions = {\n /**\n * Custom selector to find sub-navbars.\n * @default '.bi-sub-navbar'\n */\n selector?: string;\n};\n\n/**\n * Initializes all sub-navbars on the page to handle scroll-based behavior.\n * This includes:\n * - Setting data-fixed attribute when the navbar is scrolled past\n * - Setting data-scroll-dir attribute based on scroll direction when fixed\n *\n * @param options Configuration options\n * @returns Cleanup function to remove all event listeners and observers\n */\nexport const initSubNavbar = ({ selector = '.bi-sub-navbar' }: InitSubNavbarOptions = {}) => {\n const subNavbars = document.querySelectorAll<HTMLElement>(selector);\n\n if (subNavbars.length === 0) {\n console.warn(`No elements found with selector: ${selector}`);\n return () => {};\n }\n\n const scrollTracker = new ScrollDirectionTracker();\n const cleanupFunctions: (() => void)[] = [];\n\n subNavbars.forEach((navbar) => {\n const wrapper = navbar.closest('.bi-sub-navbar--wrapper') as HTMLElement;\n if (!wrapper) {\n console.warn('Sub-navbar must be wrapped in an element with class \"bi-sub-navbar--wrapper\"');\n return;\n }\n\n // Find or create the reference element (empty div) that acts as the scroll trigger\n let referenceElement = wrapper.querySelector<HTMLElement>('div:first-child');\n if (!referenceElement || referenceElement === navbar) {\n referenceElement = document.createElement('div');\n wrapper.insertBefore(referenceElement, navbar);\n }\n\n const viewportTracker = new ElementAboveViewportTracker(referenceElement);\n\n // Subscribe to viewport changes\n const unsubscribeViewport = viewportTracker.subscribe((isAbove) => {\n navbar.setAttribute('data-fixed', String(isAbove));\n\n // Only set scroll direction when fixed\n if (isAbove) {\n const currentDirection = scrollTracker.getCurrentDirection();\n if (currentDirection) {\n navbar.setAttribute('data-scroll-dir', currentDirection);\n }\n } else {\n navbar.removeAttribute('data-scroll-dir');\n }\n });\n\n // Subscribe to scroll direction changes\n const unsubscribeScroll = scrollTracker.subscribe((direction) => {\n const isFixed = navbar.getAttribute('data-fixed') === 'true';\n if (isFixed && direction) {\n navbar.setAttribute('data-scroll-dir', direction);\n }\n });\n\n cleanupFunctions.push(() => {\n unsubscribeViewport();\n unsubscribeScroll();\n viewportTracker.destroy();\n });\n });\n\n // Return cleanup function\n return () => {\n cleanupFunctions.forEach((cleanup) => cleanup());\n scrollTracker.destroy();\n };\n};\n"],"mappings":";;;;;;AAKA,IAAM,yBAAN,MAA6B;CAK3B,cAAc;yBAJkC;qBAC1B,OAAO;mCACT,IAAI,KAAgD;AAGtE,OAAK,wBAAwB,KAAK,sBAAsB,KAAK,KAAK;AAClE,SAAO,iBAAiB,UAAU,KAAK,sBAAsB;;CAG/D,AAAQ,wBAAwB;EAC9B,MAAM,UAAU,OAAO;EACvB,MAAM,YAAY,UAAU,KAAK,cAAc,SAAS;AAExD,MAAI,cAAc,KAAK,oBAAoB,UAAU,KAAK,cAAc,KAAK,UAAU,KAAK,cAAc,KAAK;AAC7G,QAAK,kBAAkB;AACvB,QAAK,UAAU,SAAS,aAAa,SAAS,KAAK,gBAAgB,CAAC;;AAGtE,OAAK,cAAc,UAAU,IAAI,UAAU;;CAG7C,UAAU,UAAqD;AAC7D,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa,KAAK,UAAU,OAAO,SAAS;;CAG9C,UAAU;AACR,SAAO,oBAAoB,UAAU,KAAK,sBAAsB;AAChE,OAAK,UAAU,OAAO;;CAGxB,sBAAsB;AACpB,SAAO,KAAK;;;;;;AAOhB,IAAM,8BAAN,MAAkC;CAKhC,YAAY,AAAQ,SAAsB;EAAtB;yBAJM;mCAEN,IAAI,KAAiC;AAGvD,OAAK,WAAW,IAAI,sBACjB,CAAC,WAAW;GACX,MAAM,aAAa,MAAM,mBAAmB,IAAI;AAChD,OAAI,eAAe,KAAK,iBAAiB;AACvC,SAAK,kBAAkB;AACvB,SAAK,UAAU,SAAS,aAAa,SAAS,KAAK,gBAAgB,CAAC;;KAGxE,EAAE,WAAW,CAAC,EAAE,EAAE,CACnB;AAED,OAAK,SAAS,QAAQ,KAAK,QAAQ;;CAGrC,UAAU,UAAsC;AAC9C,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa,KAAK,UAAU,OAAO,SAAS;;CAG9C,UAAU;AACR,OAAK,SAAS,YAAY;AAC1B,OAAK,UAAU,OAAO;;CAGxB,qBAAqB;AACnB,SAAO,KAAK;;;;;;;;;;;;AAqBhB,MAAa,iBAAiB,EAAE,WAAW,qBAA2C,EAAE,KAAK;CAC3F,MAAM,aAAa,SAAS,iBAA8B,SAAS;AAEnE,KAAI,WAAW,WAAW,GAAG;AAC3B,UAAQ,KAAK,oCAAoC,WAAW;AAC5D,eAAa;;CAGf,MAAM,gBAAgB,IAAI,wBAAwB;CAClD,MAAM,mBAAmC,EAAE;AAE3C,YAAW,SAAS,WAAW;EAC7B,MAAM,UAAU,OAAO,QAAQ,0BAA0B;AACzD,MAAI,CAAC,SAAS;AACZ,WAAQ,KAAK,iFAA+E;AAC5F;;EAIF,IAAI,mBAAmB,QAAQ,cAA2B,kBAAkB;AAC5E,MAAI,CAAC,oBAAoB,qBAAqB,QAAQ;AACpD,sBAAmB,SAAS,cAAc,MAAM;AAChD,WAAQ,aAAa,kBAAkB,OAAO;;EAGhD,MAAM,kBAAkB,IAAI,4BAA4B,iBAAiB;EAGzE,MAAM,sBAAsB,gBAAgB,WAAW,YAAY;AACjE,UAAO,aAAa,cAAc,OAAO,QAAQ,CAAC;AAGlD,OAAI,SAAS;IACX,MAAM,mBAAmB,cAAc,qBAAqB;AAC5D,QAAI,iBACF,QAAO,aAAa,mBAAmB,iBAAiB;SAG1D,QAAO,gBAAgB,kBAAkB;IAE3C;EAGF,MAAM,oBAAoB,cAAc,WAAW,cAAc;AAE/D,OADgB,OAAO,aAAa,aAAa,KAAK,UACvC,UACb,QAAO,aAAa,mBAAmB,UAAU;IAEnD;AAEF,mBAAiB,WAAW;AAC1B,wBAAqB;AACrB,sBAAmB;AACnB,mBAAgB,SAAS;IACzB;GACF;AAGF,cAAa;AACX,mBAAiB,SAAS,YAAY,SAAS,CAAC;AAChD,gBAAc,SAAS"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/vanilla/sub-navbar/index.ts"],"sourcesContent":["/**\n * Detects the vertical scroll direction of the page.\n * Returns 'up' | 'down' | null. The direction is only updated if the scroll distance\n * exceeds a 5px threshold to prevent sensitivity to minor scroll jitter.\n */\nclass ScrollDirectionTracker {\n private scrollDirection: 'up' | 'down' | null = null;\n private lastScrollY = window.pageYOffset;\n private callbacks = new Set<(direction: 'up' | 'down' | null) => void>();\n\n constructor() {\n this.updateScrollDirection = this.updateScrollDirection.bind(this);\n window.addEventListener('scroll', this.updateScrollDirection);\n }\n\n private updateScrollDirection() {\n const scrollY = window.pageYOffset;\n const direction = scrollY > this.lastScrollY ? 'down' : 'up';\n\n if (direction !== this.scrollDirection && (scrollY - this.lastScrollY > 5 || scrollY - this.lastScrollY < -5)) {\n this.scrollDirection = direction;\n this.callbacks.forEach((callback) => callback(this.scrollDirection));\n }\n\n this.lastScrollY = scrollY > 0 ? scrollY : 0;\n }\n\n subscribe(callback: (direction: 'up' | 'down' | null) => void) {\n this.callbacks.add(callback);\n return () => this.callbacks.delete(callback);\n }\n\n destroy() {\n window.removeEventListener('scroll', this.updateScrollDirection);\n this.callbacks.clear();\n }\n\n getCurrentDirection() {\n return this.scrollDirection;\n }\n}\n\n/**\n * Detects when an element is scrolled past and is no longer in the viewport.\n */\nclass ElementAboveViewportTracker {\n private isAboveViewport = false;\n private observer: IntersectionObserver;\n private callbacks = new Set<(isAbove: boolean) => void>();\n\n constructor(private element: HTMLElement) {\n this.observer = new IntersectionObserver(\n ([entry]) => {\n const newIsAbove = entry.boundingClientRect.y < 0;\n if (newIsAbove !== this.isAboveViewport) {\n this.isAboveViewport = newIsAbove;\n this.callbacks.forEach((callback) => callback(this.isAboveViewport));\n }\n },\n { threshold: [0] },\n );\n\n this.observer.observe(this.element);\n }\n\n subscribe(callback: (isAbove: boolean) => void) {\n this.callbacks.add(callback);\n return () => this.callbacks.delete(callback);\n }\n\n destroy() {\n this.observer.disconnect();\n this.callbacks.clear();\n }\n\n getIsAboveViewport() {\n return this.isAboveViewport;\n }\n}\n\nexport type InitSubNavbarOptions = {\n /**\n * Custom selector to find sub-navbars.\n * @default '.bi-sub-navbar'\n */\n selector?: string;\n};\n\n/**\n * Initializes all sub-navbars on the page to handle scroll-based behavior.\n * This includes:\n * - Setting data-fixed attribute when the navbar is scrolled past\n * - Setting data-scroll-dir attribute based on scroll direction when fixed\n *\n * @param options Configuration options\n * @returns Cleanup function to remove all event listeners and observers\n */\nexport const initSubNavbar = ({ selector = '.bi-sub-navbar' }: InitSubNavbarOptions = {}) => {\n const subNavbars = document.querySelectorAll<HTMLElement>(selector);\n\n if (subNavbars.length === 0) {\n console.warn(`No elements found with selector: ${selector}`);\n return () => {};\n }\n\n const scrollTracker = new ScrollDirectionTracker();\n const cleanupFunctions: (() => void)[] = [];\n\n subNavbars.forEach((navbar) => {\n const wrapper = navbar.closest('.bi-sub-navbar--wrapper') as HTMLElement;\n if (!wrapper) {\n console.warn('Sub-navbar must be wrapped in an element with class \"bi-sub-navbar--wrapper\"');\n return;\n }\n\n // Find or create the reference element (empty div) that acts as the scroll trigger\n let referenceElement = wrapper.querySelector<HTMLElement>('div:first-child');\n if (!referenceElement || referenceElement === navbar) {\n referenceElement = document.createElement('div');\n wrapper.insertBefore(referenceElement, navbar);\n }\n\n const viewportTracker = new ElementAboveViewportTracker(referenceElement);\n\n // Subscribe to viewport changes\n const unsubscribeViewport = viewportTracker.subscribe((isAbove) => {\n navbar.setAttribute('data-fixed', String(isAbove));\n\n // Only set scroll direction when fixed\n if (isAbove) {\n const currentDirection = scrollTracker.getCurrentDirection();\n if (currentDirection) {\n navbar.setAttribute('data-scroll-dir', currentDirection);\n }\n } else {\n navbar.removeAttribute('data-scroll-dir');\n }\n });\n\n // Subscribe to scroll direction changes\n const unsubscribeScroll = scrollTracker.subscribe((direction) => {\n const isFixed = navbar.getAttribute('data-fixed') === 'true';\n if (isFixed && direction) {\n navbar.setAttribute('data-scroll-dir', direction);\n }\n });\n\n cleanupFunctions.push(() => {\n unsubscribeViewport();\n unsubscribeScroll();\n viewportTracker.destroy();\n });\n });\n\n // Return cleanup function\n return () => {\n cleanupFunctions.forEach((cleanup) => cleanup());\n scrollTracker.destroy();\n };\n};\n"],"mappings":";;;;;;AAKA,IAAM,yBAAN,MAA6B;CAK3B,cAAc;yBAJkC;qBAC1B,OAAO;mCACT,IAAI,KAAgD;AAGtE,OAAK,wBAAwB,KAAK,sBAAsB,KAAK,KAAK;AAClE,SAAO,iBAAiB,UAAU,KAAK,sBAAsB;;CAG/D,wBAAgC;EAC9B,MAAM,UAAU,OAAO;EACvB,MAAM,YAAY,UAAU,KAAK,cAAc,SAAS;AAExD,MAAI,cAAc,KAAK,oBAAoB,UAAU,KAAK,cAAc,KAAK,UAAU,KAAK,cAAc,KAAK;AAC7G,QAAK,kBAAkB;AACvB,QAAK,UAAU,SAAS,aAAa,SAAS,KAAK,gBAAgB,CAAC;;AAGtE,OAAK,cAAc,UAAU,IAAI,UAAU;;CAG7C,UAAU,UAAqD;AAC7D,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa,KAAK,UAAU,OAAO,SAAS;;CAG9C,UAAU;AACR,SAAO,oBAAoB,UAAU,KAAK,sBAAsB;AAChE,OAAK,UAAU,OAAO;;CAGxB,sBAAsB;AACpB,SAAO,KAAK;;;;;;AAOhB,IAAM,8BAAN,MAAkC;CAKhC,YAAY,SAA8B;AAAtB,OAAA,UAAA;yBAJM;mCAEN,IAAI,KAAiC;AAGvD,OAAK,WAAW,IAAI,sBACjB,CAAC,WAAW;GACX,MAAM,aAAa,MAAM,mBAAmB,IAAI;AAChD,OAAI,eAAe,KAAK,iBAAiB;AACvC,SAAK,kBAAkB;AACvB,SAAK,UAAU,SAAS,aAAa,SAAS,KAAK,gBAAgB,CAAC;;KAGxE,EAAE,WAAW,CAAC,EAAE,EAAE,CACnB;AAED,OAAK,SAAS,QAAQ,KAAK,QAAQ;;CAGrC,UAAU,UAAsC;AAC9C,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa,KAAK,UAAU,OAAO,SAAS;;CAG9C,UAAU;AACR,OAAK,SAAS,YAAY;AAC1B,OAAK,UAAU,OAAO;;CAGxB,qBAAqB;AACnB,SAAO,KAAK;;;;;;;;;;;;AAqBhB,MAAa,iBAAiB,EAAE,WAAW,qBAA2C,EAAE,KAAK;CAC3F,MAAM,aAAa,SAAS,iBAA8B,SAAS;AAEnE,KAAI,WAAW,WAAW,GAAG;AAC3B,UAAQ,KAAK,oCAAoC,WAAW;AAC5D,eAAa;;CAGf,MAAM,gBAAgB,IAAI,wBAAwB;CAClD,MAAM,mBAAmC,EAAE;AAE3C,YAAW,SAAS,WAAW;EAC7B,MAAM,UAAU,OAAO,QAAQ,0BAA0B;AACzD,MAAI,CAAC,SAAS;AACZ,WAAQ,KAAK,iFAA+E;AAC5F;;EAIF,IAAI,mBAAmB,QAAQ,cAA2B,kBAAkB;AAC5E,MAAI,CAAC,oBAAoB,qBAAqB,QAAQ;AACpD,sBAAmB,SAAS,cAAc,MAAM;AAChD,WAAQ,aAAa,kBAAkB,OAAO;;EAGhD,MAAM,kBAAkB,IAAI,4BAA4B,iBAAiB;EAGzE,MAAM,sBAAsB,gBAAgB,WAAW,YAAY;AACjE,UAAO,aAAa,cAAc,OAAO,QAAQ,CAAC;AAGlD,OAAI,SAAS;IACX,MAAM,mBAAmB,cAAc,qBAAqB;AAC5D,QAAI,iBACF,QAAO,aAAa,mBAAmB,iBAAiB;SAG1D,QAAO,gBAAgB,kBAAkB;IAE3C;EAGF,MAAM,oBAAoB,cAAc,WAAW,cAAc;AAE/D,OADgB,OAAO,aAAa,aAAa,KAAK,UACvC,UACb,QAAO,aAAa,mBAAmB,UAAU;IAEnD;AAEF,mBAAiB,WAAW;AAC1B,wBAAqB;AACrB,sBAAmB;AACnB,mBAAgB,SAAS;IACzB;GACF;AAGF,cAAa;AACX,mBAAiB,SAAS,YAAY,SAAS,CAAC;AAChD,gBAAc,SAAS"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bi-digital/react",
3
3
  "type": "module",
4
- "version": "0.9.0",
4
+ "version": "0.11.0",
5
5
  "description": "React components from BI Digital",
6
6
  "author": "BI Digital",
7
7
  "homepage": "https://designsystem.bi.no/",
@@ -33,37 +33,35 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@floating-ui/dom": "^1.7.4",
36
+ "@digdir/designsystemet-web": "^1.13.0",
37
+ "@floating-ui/dom": "^1.7.6",
37
38
  "@radix-ui/react-slot": "^1.2.4",
38
- "@radix-ui/react-tabs": "^1.1.13",
39
39
  "@radix-ui/react-use-controllable-state": "^1.2.2",
40
40
  "clsx": "^2.1.1",
41
- "@bi-digital/icons": "0.9.0"
41
+ "@bi-digital/icons": "0.11.0"
42
42
  },
43
43
  "devDependencies": {
44
- "@testing-library/dom": "^10.4.1",
45
- "@testing-library/jest-dom": "^6.9.1",
46
- "@testing-library/react": "^16.3.0",
47
- "@testing-library/user-event": "^14.6.1",
48
- "@types/react": "^19.2.3",
44
+ "@types/react": "^19.2.14",
49
45
  "@types/react-dom": "^19.2.3",
50
- "@vitest/coverage-v8": "^4.0.8",
51
- "@vitest/expect": "^4.0.18",
52
- "jsdom": "^28.1.0",
46
+ "@vitest/browser-playwright": "^4.1.0",
47
+ "@vitest/coverage-v8": "^4.1.0",
48
+ "@vitest/expect": "^4.1.0",
49
+ "playwright": "^1.58.2",
53
50
  "react": "^19.2.0",
54
51
  "react-dom": "^19.2.0",
55
52
  "tsconfck": "^3.1.6",
56
- "tsdown": "^0.20.1",
57
- "vitest": "^4.0.8"
53
+ "tsdown": "^0.21.0",
54
+ "vitest": "^4.1.0",
55
+ "vitest-browser-react": "^2.1.0"
58
56
  },
59
57
  "peerDependencies": {
60
58
  "react": "^19",
61
59
  "react-dom": "^19",
62
- "@bi-digital/css": "0.9.0"
60
+ "@bi-digital/css": "0.11.0"
63
61
  },
64
62
  "scripts": {
65
63
  "build": "tsdown",
66
64
  "dev": "tsdown --watch ./src",
67
- "test": "vitest run"
65
+ "test": "pnpm exec playwright install --with-deps chromium && vitest run"
68
66
  }
69
67
  }
@@ -1,35 +0,0 @@
1
- import clsx from "clsx/lite";
2
- import { Slot } from "@radix-ui/react-slot";
3
- import { CheckmarkSmallIcon, ErrorIcon, InfoIcon, WarningIcon } from "@bi-digital/icons";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
-
6
- //#region src/components/alert/alert.tsx
7
- const variantIcons = {
8
- info: InfoIcon,
9
- success: CheckmarkSmallIcon,
10
- warning: WarningIcon,
11
- alert: ErrorIcon,
12
- primary: InfoIcon,
13
- neutral: InfoIcon
14
- };
15
- const Alert = ({ className, children, closeButton, variant = "primary", icon, asChild, dark, size, ref, ...rest }) => {
16
- const Component = asChild ? Slot : "div";
17
- const DefaultIcon = variantIcons[variant];
18
- return /* @__PURE__ */ jsxs(Component, {
19
- className: clsx("bi-alert", className),
20
- "data-variant": variant,
21
- "data-size": size,
22
- "data-dark": dark,
23
- ref,
24
- ...rest,
25
- children: [
26
- icon === null ? null : icon ?? /* @__PURE__ */ jsx(DefaultIcon, {}),
27
- children,
28
- closeButton
29
- ]
30
- });
31
- };
32
-
33
- //#endregion
34
- export { Alert as t };
35
- //# sourceMappingURL=alert-B-qfyhxc.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alert-B-qfyhxc.mjs","names":[],"sources":["../src/components/alert/alert.tsx"],"sourcesContent":["import clsx from 'clsx/lite';\nimport { Slot } from '@radix-ui/react-slot';\nimport type { HTMLAttributes, ReactNode, Ref } from 'react';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { CheckmarkSmallIcon, ErrorIcon, InfoIcon, WarningIcon } from '@bi-digital/icons';\n\nexport type AlertProps = MergeRight<\n DefaultProps & HTMLAttributes<HTMLDivElement>,\n {\n /**\n * The alert variant.\n * @default 'primary'\n */\n variant?: 'info' | 'success' | 'warning' | 'alert' | 'primary' | 'neutral';\n /**\n * Size of the alert.\n * @default 'medium'\n */\n size?: 'small' | 'medium' | 'large';\n /** Custom close button. It's your responsibility to make the button close the alert. */\n closeButton?: ReactNode;\n /** Override the default icon which is decided by the `variant`. Set to `null` to remove the icon. */\n icon?: ReactNode;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n * @default false\n */\n asChild?: boolean;\n ref?: Ref<HTMLDivElement>;\n }\n>;\n\nconst variantIcons: Record<NonNullable<AlertProps['variant']>, React.ComponentType> = {\n info: InfoIcon,\n success: CheckmarkSmallIcon,\n warning: WarningIcon,\n alert: ErrorIcon,\n primary: InfoIcon,\n neutral: InfoIcon,\n};\n\nexport const Alert = ({\n className,\n children,\n closeButton,\n variant = 'primary',\n icon,\n asChild,\n dark,\n size,\n ref,\n ...rest\n}: AlertProps) => {\n const Component = asChild ? Slot : 'div';\n const DefaultIcon = variantIcons[variant];\n return (\n <Component\n className={clsx('bi-alert', className)}\n data-variant={variant}\n data-size={size}\n data-dark={dark}\n ref={ref}\n {...rest}\n >\n {icon === null ? null : (icon ?? <DefaultIcon />)}\n {children}\n {closeButton}\n </Component>\n );\n};\n"],"mappings":";;;;;;AAiCA,MAAM,eAAgF;CACpF,MAAM;CACN,SAAS;CACT,SAAS;CACT,OAAO;CACP,SAAS;CACT,SAAS;CACV;AAED,MAAa,SAAS,EACpB,WACA,UACA,aACA,UAAU,WACV,MACA,SACA,MACA,MACA,KACA,GAAG,WACa;CAChB,MAAM,YAAY,UAAU,OAAO;CACnC,MAAM,cAAc,aAAa;AACjC,QACE,qBAAC;EACC,WAAW,KAAK,YAAY,UAAU;EACtC,gBAAc;EACd,aAAW;EACX,aAAW;EACN;EACL,GAAI;;GAEH,SAAS,OAAO,OAAQ,QAAQ,oBAAC,gBAAc;GAC/C;GACA;;GACS"}
@@ -1,17 +0,0 @@
1
- import clsx from "clsx/lite";
2
- import { Slot } from "@radix-ui/react-slot";
3
- import { jsx } from "react/jsx-runtime";
4
-
5
- //#region src/components/alert/alert-footer.tsx
6
- const AlertFooter = ({ className, children, asChild, ref, ...rest }) => {
7
- return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
8
- className: clsx("bi-alert--footer", className),
9
- ref,
10
- ...rest,
11
- children
12
- });
13
- };
14
-
15
- //#endregion
16
- export { AlertFooter as t };
17
- //# sourceMappingURL=alert-footer-CiXj-PGD.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alert-footer-CiXj-PGD.mjs","names":[],"sources":["../src/components/alert/alert-footer.tsx"],"sourcesContent":["import clsx from 'clsx/lite';\nimport { Slot } from '@radix-ui/react-slot';\nimport type { HTMLAttributes, Ref } from 'react';\nimport type { MergeRight } from '../../utilities';\n\nexport type AlertFooterProps = MergeRight<\n HTMLAttributes<HTMLDivElement>,\n {\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n * @default false\n */\n asChild?: boolean;\n ref?: Ref<HTMLDivElement>;\n }\n>;\n\nexport const AlertFooter = ({ className, children, asChild, ref, ...rest }: AlertFooterProps) => {\n const Component = asChild ? Slot : 'div';\n return (\n <Component className={clsx('bi-alert--footer', className)} ref={ref} {...rest}>\n {children}\n </Component>\n );\n};\n"],"mappings":";;;;;AAiBA,MAAa,eAAe,EAAE,WAAW,UAAU,SAAS,KAAK,GAAG,WAA6B;AAE/F,QACE,oBAFgB,UAAU,OAAO;EAEtB,WAAW,KAAK,oBAAoB,UAAU;EAAO;EAAK,GAAI;EACtE;GACS"}
@@ -1 +0,0 @@
1
- export { };
@@ -1 +0,0 @@
1
- export { };
@@ -1,39 +0,0 @@
1
- import clsx from "clsx/lite";
2
- import { Slot } from "@radix-ui/react-slot";
3
- import { jsx } from "react/jsx-runtime";
4
- import { Fragment } from "react";
5
-
6
- //#region src/components/avatar/avatar.tsx
7
- /**
8
- * An Avatar represents a person.
9
- *
10
- * @example
11
- * <Avatar aria-label="Ola Nordmann">ON</Avatar>
12
- *
13
- * @example
14
- * <Avatar aria-label="Ola Nordmann">
15
- * <img src='…' alt='Ola Nordmann' />
16
- * </Avatar>
17
- */
18
- const Avatar = ({ "aria-label": ariaLabel, className, ref, dark, size, color, children, ...props }) => {
19
- const isSlotInUse = children && typeof children !== "string";
20
- const Component = isSlotInUse ? Slot : Fragment;
21
- return /* @__PURE__ */ jsx("span", {
22
- className: clsx("bi-avatar", className),
23
- "aria-label": ariaLabel,
24
- role: "img",
25
- "data-size": size,
26
- "data-color": color,
27
- "data-dark": dark,
28
- ref,
29
- ...props,
30
- children: /* @__PURE__ */ jsx(Component, {
31
- ...isSlotInUse ? { "aria-hidden": true } : {},
32
- children
33
- })
34
- });
35
- };
36
-
37
- //#endregion
38
- export { Avatar as t };
39
- //# sourceMappingURL=avatar-BEjjwjRn.mjs.map