@inera/ids-react 8.2.0 → 9.0.1

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 (370) hide show
  1. package/components/accordion/accordion-base.d.ts +18 -0
  2. package/components/accordion/accordion-base.js +33 -0
  3. package/components/accordion/accordion.d.ts +5 -4
  4. package/components/accordion/accordion.js +16 -35
  5. package/components/alert/alert-base.d.ts +21 -0
  6. package/components/alert/alert-base.js +29 -0
  7. package/components/alert/alert.d.ts +3 -19
  8. package/components/alert/alert.js +8 -18
  9. package/components/alert/global-alert-base.d.ts +15 -0
  10. package/components/alert/global-alert-base.js +21 -0
  11. package/components/alert/global-alert.d.ts +7 -0
  12. package/components/alert/global-alert.js +19 -0
  13. package/components/badge/badge.js +2 -2
  14. package/components/breadcrumbs/breadcrumbs.js +2 -2
  15. package/components/{button-group → button}/button-group.js +2 -2
  16. package/components/button/button.js +3 -3
  17. package/components/card/card.js +3 -3
  18. package/components/carousel/carousel-item.d.ts +5 -4
  19. package/components/carousel/carousel-item.js +8 -6
  20. package/components/carousel/carousel.d.ts +4 -1
  21. package/components/carousel/carousel.js +24 -39
  22. package/components/{pagination/data-pagination → data-pagination}/data-pagination.d.ts +2 -6
  23. package/components/data-pagination/data-pagination.js +12 -0
  24. package/components/date-label/date-label.js +2 -2
  25. package/components/dialog/dialog-base.d.ts +21 -0
  26. package/components/dialog/dialog-base.js +29 -0
  27. package/components/dialog/dialog.d.ts +14 -17
  28. package/components/dialog/dialog.js +36 -36
  29. package/components/dropdown/dropdown-base.d.ts +18 -0
  30. package/components/dropdown/dropdown-base.js +42 -0
  31. package/components/dropdown/dropdown-content-button.d.ts +0 -1
  32. package/components/dropdown/dropdown-content-button.js +0 -1
  33. package/components/dropdown/dropdown-content-link.d.ts +2 -3
  34. package/components/dropdown/dropdown-content-link.js +3 -10
  35. package/components/dropdown/dropdown.d.ts +11 -13
  36. package/components/dropdown/dropdown.js +34 -53
  37. package/components/footer-1177/footer-1177.d.ts +6 -7
  38. package/components/footer-1177/footer-1177.js +8 -5
  39. package/components/footer-1177-admin/footer-1177-admin.d.ts +6 -7
  40. package/components/footer-1177-admin/footer-1177-admin.js +9 -6
  41. package/components/footer-1177-pro/footer-1177-pro.d.ts +6 -7
  42. package/components/footer-1177-pro/footer-1177-pro.js +9 -6
  43. package/components/footer-inera/footer-inera.d.ts +6 -7
  44. package/components/footer-inera/footer-inera.js +9 -6
  45. package/components/footer-inera-admin/footer-inera-admin.d.ts +6 -7
  46. package/components/footer-inera-admin/footer-inera-admin.js +9 -6
  47. package/components/form/check-button/check-button.d.ts +5 -6
  48. package/components/form/check-button/check-button.js +5 -10
  49. package/components/form/checkbox/checkbox-base.d.ts +19 -0
  50. package/components/form/checkbox/checkbox-base.js +29 -0
  51. package/components/form/checkbox/checkbox-group-base.d.ts +12 -0
  52. package/components/form/checkbox/checkbox-group-base.js +13 -0
  53. package/components/form/checkbox/checkbox-group.d.ts +4 -5
  54. package/components/form/checkbox/checkbox-group.js +26 -30
  55. package/components/form/checkbox/checkbox.d.ts +3 -3
  56. package/components/form/checkbox/checkbox.js +17 -41
  57. package/components/form/darkmode-toggle/darkmode-toggle.d.ts +11 -0
  58. package/components/form/darkmode-toggle/darkmode-toggle.js +13 -0
  59. package/components/form/datepicker/datepicker.d.ts +11 -4
  60. package/components/form/datepicker/datepicker.js +65 -27
  61. package/components/form/error-message/error-message.d.ts +1 -2
  62. package/components/form/error-message/error-message.js +2 -4
  63. package/components/form/form-hooks/useGroupValidity.d.ts +4 -1
  64. package/components/form/form-hooks/useGroupValidity.js +7 -2
  65. package/components/form/form-hooks/useInputValidity.d.ts +1 -1
  66. package/components/form/form-hooks/useInputValidity.js +9 -5
  67. package/components/form/input/input-base.d.ts +24 -0
  68. package/components/form/input/input-base.js +32 -0
  69. package/components/form/input/input.d.ts +3 -2
  70. package/components/form/input/input.js +8 -24
  71. package/components/form/radio/radio-base.d.ts +16 -0
  72. package/components/form/radio/radio-base.js +24 -0
  73. package/components/form/radio/radio-group-base.d.ts +13 -0
  74. package/components/form/radio/radio-group-base.js +10 -0
  75. package/components/form/radio/radio-group.d.ts +6 -5
  76. package/components/form/radio/radio-group.js +25 -19
  77. package/components/form/radio/radio.d.ts +9 -9
  78. package/components/form/radio/radio.js +7 -20
  79. package/components/form/radio-button/radio-button-group-base.d.ts +8 -0
  80. package/components/form/radio-button/radio-button-group-base.js +8 -0
  81. package/components/form/radio-button/radio-button-group.d.ts +4 -3
  82. package/components/form/radio-button/radio-button-group.js +18 -12
  83. package/components/form/radio-button/radio-button.d.ts +4 -5
  84. package/components/form/radio-button/radio-button.js +5 -10
  85. package/components/form/range/range-base.d.ts +18 -0
  86. package/components/form/range/range-base.js +16 -0
  87. package/components/form/range/range.d.ts +3 -6
  88. package/components/form/range/range.js +23 -23
  89. package/components/form/select/select-base.d.ts +19 -0
  90. package/components/form/select/select-base.js +24 -0
  91. package/components/form/select/select.d.ts +7 -7
  92. package/components/form/select/select.js +8 -18
  93. package/components/form/select-multiple/select-multiple-base.d.ts +27 -0
  94. package/components/form/select-multiple/select-multiple-base.js +27 -0
  95. package/components/form/select-multiple/select-multiple.d.ts +10 -7
  96. package/components/form/select-multiple/select-multiple.js +29 -54
  97. package/components/form/spinner/spinner.d.ts +3 -4
  98. package/components/form/spinner/spinner.js +3 -7
  99. package/components/form/textarea/textarea-base.d.ts +24 -0
  100. package/components/form/textarea/textarea-base.js +34 -0
  101. package/components/form/textarea/textarea.d.ts +4 -5
  102. package/components/form/textarea/textarea.js +6 -22
  103. package/components/form/time/time-base.d.ts +17 -0
  104. package/components/form/time/time-base.js +24 -0
  105. package/components/form/time/time.d.ts +8 -7
  106. package/components/form/time/time.js +5 -16
  107. package/components/form/toggle/toggle.d.ts +1 -2
  108. package/components/form/toggle/toggle.js +5 -8
  109. package/components/grid/column.d.ts +1 -1
  110. package/components/grid/column.js +6 -7
  111. package/components/grid/container.js +1 -1
  112. package/components/grid/row.js +1 -1
  113. package/components/grid-layout/grid-column.d.ts +19 -0
  114. package/components/grid-layout/grid-column.js +14 -0
  115. package/components/grid-layout/grid-container.d.ts +10 -0
  116. package/components/grid-layout/grid-container.js +17 -0
  117. package/components/grid-layout/grid-row.d.ts +8 -0
  118. package/components/grid-layout/grid-row.js +12 -0
  119. package/components/header-1177/header-1177-avatar-base.d.ts +16 -0
  120. package/components/header-1177/header-1177-avatar-base.js +24 -0
  121. package/components/header-1177/header-1177-avatar.d.ts +4 -7
  122. package/components/header-1177/header-1177-avatar.js +35 -42
  123. package/components/header-1177/header-1177-base.d.ts +18 -0
  124. package/components/header-1177/header-1177-base.js +14 -0
  125. package/components/header-1177/header-1177-item-base.d.ts +9 -0
  126. package/components/header-1177/header-1177-item-base.js +13 -0
  127. package/components/header-1177/header-1177-item.d.ts +2 -7
  128. package/components/header-1177/header-1177-item.js +6 -29
  129. package/components/header-1177/header-1177-menu-mobile-base.d.ts +12 -0
  130. package/components/header-1177/header-1177-menu-mobile-base.js +18 -0
  131. package/components/header-1177/header-1177-menu-mobile.d.ts +4 -5
  132. package/components/header-1177/header-1177-menu-mobile.js +29 -28
  133. package/components/header-1177/header-1177-nav-base.d.ts +9 -0
  134. package/components/header-1177/header-1177-nav-base.js +12 -0
  135. package/components/header-1177/header-1177-nav-item-base.d.ts +18 -0
  136. package/components/header-1177/header-1177-nav-item-base.js +31 -0
  137. package/components/header-1177/header-1177-nav-item-mobile-base.d.ts +7 -0
  138. package/components/header-1177/header-1177-nav-item-mobile-base.js +10 -0
  139. package/components/header-1177/header-1177-nav-item-mobile.d.ts +4 -8
  140. package/components/header-1177/header-1177-nav-item-mobile.js +5 -16
  141. package/components/header-1177/header-1177-nav-item.d.ts +7 -7
  142. package/components/header-1177/header-1177-nav-item.js +44 -35
  143. package/components/header-1177/header-1177-nav.d.ts +2 -4
  144. package/components/header-1177/header-1177-nav.js +5 -9
  145. package/components/header-1177/header-1177-region-picker-base.d.ts +9 -0
  146. package/components/header-1177/header-1177-region-picker-base.js +21 -0
  147. package/components/header-1177/header-1177-region-picker-mobile-base.d.ts +9 -0
  148. package/components/header-1177/header-1177-region-picker-mobile-base.js +21 -0
  149. package/components/header-1177/header-1177-region-picker-mobile.d.ts +3 -6
  150. package/components/header-1177/header-1177-region-picker-mobile.js +13 -29
  151. package/components/header-1177/header-1177-region-picker.d.ts +3 -6
  152. package/components/header-1177/header-1177-region-picker.js +15 -29
  153. package/components/header-1177/header-1177.d.ts +3 -3
  154. package/components/header-1177/header-1177.js +5 -10
  155. package/components/header-1177-admin/header-1177-admin-avatar-base.d.ts +14 -0
  156. package/components/header-1177-admin/header-1177-admin-avatar-base.js +23 -0
  157. package/components/header-1177-admin/header-1177-admin-avatar-mobile-base.d.ts +13 -0
  158. package/components/header-1177-admin/header-1177-admin-avatar-mobile-base.js +23 -0
  159. package/components/header-1177-admin/header-1177-admin-avatar-mobile.d.ts +3 -5
  160. package/components/header-1177-admin/header-1177-admin-avatar-mobile.js +27 -23
  161. package/components/header-1177-admin/header-1177-admin-avatar.d.ts +3 -5
  162. package/components/header-1177-admin/header-1177-admin-avatar.js +26 -25
  163. package/components/header-1177-admin/header-1177-admin-base.d.ts +18 -0
  164. package/components/header-1177-admin/header-1177-admin-base.js +14 -0
  165. package/components/header-1177-admin/header-1177-admin-item-base.d.ts +8 -0
  166. package/components/header-1177-admin/header-1177-admin-item-base.js +12 -0
  167. package/components/header-1177-admin/header-1177-admin-item.d.ts +3 -8
  168. package/components/header-1177-admin/header-1177-admin-item.js +5 -27
  169. package/components/header-1177-admin/header-1177-admin-menu-mobile-base.d.ts +11 -0
  170. package/components/header-1177-admin/header-1177-admin-menu-mobile-base.js +18 -0
  171. package/components/header-1177-admin/header-1177-admin-menu-mobile.d.ts +4 -5
  172. package/components/header-1177-admin/header-1177-admin-menu-mobile.js +27 -25
  173. package/components/header-1177-admin/header-1177-admin-nav-base.d.ts +7 -0
  174. package/components/header-1177-admin/header-1177-admin-nav-base.js +10 -0
  175. package/components/header-1177-admin/header-1177-admin-nav-item-base.d.ts +18 -0
  176. package/components/header-1177-admin/header-1177-admin-nav-item-base.js +31 -0
  177. package/components/header-1177-admin/header-1177-admin-nav-item-mobile-base.d.ts +7 -0
  178. package/components/header-1177-admin/header-1177-admin-nav-item-mobile-base.js +10 -0
  179. package/components/header-1177-admin/header-1177-admin-nav-item-mobile.d.ts +7 -0
  180. package/components/header-1177-admin/header-1177-admin-nav-item-mobile.js +11 -0
  181. package/components/header-1177-admin/header-1177-admin-nav-item.d.ts +6 -6
  182. package/components/header-1177-admin/header-1177-admin-nav-item.js +44 -35
  183. package/components/header-1177-admin/header-1177-admin-nav.d.ts +2 -4
  184. package/components/header-1177-admin/header-1177-admin-nav.js +4 -6
  185. package/components/header-1177-admin/header-1177-admin.d.ts +2 -3
  186. package/components/header-1177-admin/header-1177-admin.js +5 -10
  187. package/components/header-1177-pro/header-1177-pro-avatar-base.d.ts +14 -0
  188. package/components/header-1177-pro/header-1177-pro-avatar-base.js +23 -0
  189. package/components/header-1177-pro/header-1177-pro-avatar-mobile-base.d.ts +13 -0
  190. package/components/header-1177-pro/header-1177-pro-avatar-mobile-base.js +24 -0
  191. package/components/header-1177-pro/header-1177-pro-avatar-mobile.d.ts +3 -6
  192. package/components/header-1177-pro/header-1177-pro-avatar-mobile.js +23 -20
  193. package/components/header-1177-pro/header-1177-pro-avatar.d.ts +4 -6
  194. package/components/header-1177-pro/header-1177-pro-avatar.js +32 -30
  195. package/components/header-1177-pro/header-1177-pro-base.d.ts +19 -0
  196. package/components/header-1177-pro/header-1177-pro-base.js +11 -0
  197. package/components/header-1177-pro/header-1177-pro-item-base.d.ts +8 -0
  198. package/components/header-1177-pro/header-1177-pro-item-base.js +12 -0
  199. package/components/header-1177-pro/header-1177-pro-item.d.ts +3 -8
  200. package/components/header-1177-pro/header-1177-pro-item.js +5 -27
  201. package/components/header-1177-pro/header-1177-pro-menu-mobile-base.d.ts +11 -0
  202. package/components/header-1177-pro/header-1177-pro-menu-mobile-base.js +18 -0
  203. package/components/header-1177-pro/header-1177-pro-menu-mobile.d.ts +5 -6
  204. package/components/header-1177-pro/header-1177-pro-menu-mobile.js +27 -25
  205. package/components/header-1177-pro/header-1177-pro-nav-base.d.ts +10 -0
  206. package/components/header-1177-pro/header-1177-pro-nav-base.js +10 -0
  207. package/components/header-1177-pro/header-1177-pro-nav-item-base.d.ts +18 -0
  208. package/components/header-1177-pro/header-1177-pro-nav-item-base.js +31 -0
  209. package/components/header-1177-pro/header-1177-pro-nav-item-mobile-base.d.ts +7 -0
  210. package/components/header-1177-pro/header-1177-pro-nav-item-mobile-base.js +10 -0
  211. package/components/header-1177-pro/header-1177-pro-nav-item-mobile.d.ts +7 -0
  212. package/components/header-1177-pro/header-1177-pro-nav-item-mobile.js +11 -0
  213. package/components/header-1177-pro/header-1177-pro-nav-item.d.ts +6 -6
  214. package/components/header-1177-pro/header-1177-pro-nav-item.js +44 -35
  215. package/components/header-1177-pro/header-1177-pro-nav.d.ts +4 -5
  216. package/components/header-1177-pro/header-1177-pro-nav.js +5 -7
  217. package/components/header-1177-pro/header-1177-pro-region-picker-base.d.ts +9 -0
  218. package/components/header-1177-pro/header-1177-pro-region-picker-base.js +19 -0
  219. package/components/header-1177-pro/header-1177-pro-region-picker-mobile-base.d.ts +9 -0
  220. package/components/header-1177-pro/header-1177-pro-region-picker-mobile-base.js +19 -0
  221. package/components/header-1177-pro/header-1177-pro-region-picker-mobile.d.ts +3 -5
  222. package/components/header-1177-pro/header-1177-pro-region-picker-mobile.js +13 -29
  223. package/components/header-1177-pro/header-1177-pro-region-picker.d.ts +3 -5
  224. package/components/header-1177-pro/header-1177-pro-region-picker.js +15 -29
  225. package/components/header-1177-pro/header-1177-pro.d.ts +4 -5
  226. package/components/header-1177-pro/header-1177-pro.js +5 -7
  227. package/components/header-inera/header-inera-base.d.ts +14 -0
  228. package/components/header-inera/header-inera-base.js +11 -0
  229. package/components/header-inera/header-inera-item-base.d.ts +8 -0
  230. package/components/header-inera/header-inera-item-base.js +12 -0
  231. package/components/header-inera/header-inera-item.d.ts +3 -8
  232. package/components/header-inera/header-inera-item.js +5 -36
  233. package/components/header-inera/header-inera-menu-mobile-base.d.ts +11 -0
  234. package/components/header-inera/header-inera-menu-mobile-base.js +18 -0
  235. package/components/header-inera/header-inera-menu-mobile.d.ts +5 -6
  236. package/components/header-inera/header-inera-menu-mobile.js +27 -26
  237. package/components/header-inera/header-inera-nav-base.d.ts +7 -0
  238. package/components/header-inera/header-inera-nav-base.js +10 -0
  239. package/components/header-inera/header-inera-nav-item-base.d.ts +17 -0
  240. package/components/header-inera/header-inera-nav-item-base.js +26 -0
  241. package/components/header-inera/header-inera-nav-item.d.ts +7 -7
  242. package/components/header-inera/header-inera-nav-item.js +44 -34
  243. package/components/header-inera/header-inera-nav.d.ts +4 -6
  244. package/components/header-inera/header-inera-nav.js +4 -7
  245. package/components/header-inera/header-inera.d.ts +1 -3
  246. package/components/header-inera/header-inera.js +5 -7
  247. package/components/header-inera-admin/header-inera-admin-avatar-base.d.ts +14 -0
  248. package/components/header-inera-admin/header-inera-admin-avatar-base.js +23 -0
  249. package/components/header-inera-admin/header-inera-admin-avatar-mobile-base.d.ts +13 -0
  250. package/components/header-inera-admin/header-inera-admin-avatar-mobile-base.js +23 -0
  251. package/components/header-inera-admin/header-inera-admin-avatar-mobile.d.ts +3 -6
  252. package/components/header-inera-admin/header-inera-admin-avatar-mobile.js +26 -21
  253. package/components/header-inera-admin/header-inera-admin-avatar.d.ts +4 -6
  254. package/components/header-inera-admin/header-inera-admin-avatar.js +35 -31
  255. package/components/header-inera-admin/header-inera-admin-base.d.ts +15 -0
  256. package/components/header-inera-admin/header-inera-admin-base.js +20 -0
  257. package/components/header-inera-admin/header-inera-admin-item-base.d.ts +8 -0
  258. package/components/header-inera-admin/header-inera-admin-item-base.js +13 -0
  259. package/components/header-inera-admin/header-inera-admin-item.d.ts +3 -8
  260. package/components/header-inera-admin/header-inera-admin-item.js +6 -26
  261. package/components/header-inera-admin/header-inera-admin-menu-mobile-base.d.ts +11 -0
  262. package/components/header-inera-admin/header-inera-admin-menu-mobile-base.js +18 -0
  263. package/components/header-inera-admin/header-inera-admin-menu-mobile.d.ts +4 -5
  264. package/components/header-inera-admin/header-inera-admin-menu-mobile.js +27 -25
  265. package/components/header-inera-admin/header-inera-admin-nav-base.d.ts +7 -0
  266. package/components/header-inera-admin/header-inera-admin-nav-base.js +10 -0
  267. package/components/header-inera-admin/header-inera-admin-nav-item-base.d.ts +18 -0
  268. package/components/header-inera-admin/header-inera-admin-nav-item-base.js +31 -0
  269. package/components/header-inera-admin/header-inera-admin-nav-item-mobile-base.d.ts +7 -0
  270. package/components/header-inera-admin/header-inera-admin-nav-item-mobile-base.js +10 -0
  271. package/components/header-inera-admin/header-inera-admin-nav-item-mobile.d.ts +7 -0
  272. package/components/header-inera-admin/header-inera-admin-nav-item-mobile.js +11 -0
  273. package/components/header-inera-admin/header-inera-admin-nav-item.d.ts +7 -6
  274. package/components/header-inera-admin/header-inera-admin-nav-item.js +44 -34
  275. package/components/header-inera-admin/header-inera-admin-nav.d.ts +4 -6
  276. package/components/header-inera-admin/header-inera-admin-nav.js +5 -8
  277. package/components/header-inera-admin/header-inera-admin.d.ts +3 -4
  278. package/components/header-inera-admin/header-inera-admin.js +5 -16
  279. package/components/header-patient/header-patient.d.ts +2 -4
  280. package/components/header-patient/header-patient.js +6 -10
  281. package/components/{action-link → link}/action-link.js +2 -2
  282. package/components/link/box-link.d.ts +6 -0
  283. package/components/link/box-link.js +9 -0
  284. package/components/link/link.d.ts +2 -2
  285. package/components/link/link.js +3 -10
  286. package/components/list-pagination/list-pagination-links.d.ts +19 -0
  287. package/components/list-pagination/list-pagination-links.js +48 -0
  288. package/components/{pagination/list-pagination → list-pagination}/list-pagination.d.ts +3 -2
  289. package/components/{pagination/list-pagination → list-pagination}/list-pagination.js +4 -3
  290. package/components/mobile-menu/mobile-item-base.d.ts +14 -0
  291. package/components/mobile-menu/mobile-item-base.js +46 -0
  292. package/components/mobile-menu/mobile-item.d.ts +6 -0
  293. package/components/mobile-menu/mobile-item.js +26 -0
  294. package/components/mobile-menu/mobile-menu.d.ts +6 -0
  295. package/components/mobile-menu/mobile-menu.js +10 -0
  296. package/components/{navigation/content → navigation-content}/navigation-content.d.ts +1 -1
  297. package/components/{navigation/content → navigation-content}/navigation-content.js +1 -1
  298. package/components/{navigation/local → navigation-local}/navigation-local.d.ts +1 -1
  299. package/components/{navigation/local → navigation-local}/navigation-local.js +1 -1
  300. package/components/{notification/badge → notification-badge}/notification-badge.d.ts +1 -1
  301. package/components/notification-badge/notification-badge.js +9 -0
  302. package/components/popover/popover-base.d.ts +15 -0
  303. package/components/popover/popover-base.js +27 -0
  304. package/components/popover/popover-content.d.ts +19 -0
  305. package/components/popover/popover-content.js +20 -0
  306. package/components/popover/popover.d.ts +7 -8
  307. package/components/popover/popover.js +67 -161
  308. package/components/progressbar/progressbar.js +2 -2
  309. package/components/puff-list/{puff-list-item/puff-list-item-date.d.ts → puff-list-item-date.d.ts} +0 -1
  310. package/components/puff-list/{puff-list-item/puff-list-item-date.js → puff-list-item-date.js} +2 -3
  311. package/components/puff-list/{puff-list-item/puff-list-item-header.d.ts → puff-list-item-header.d.ts} +1 -1
  312. package/components/puff-list/puff-list-item-header.js +12 -0
  313. package/components/puff-list/{puff-list-item/puff-list-item-info.d.ts → puff-list-item-info.d.ts} +1 -2
  314. package/components/puff-list/puff-list-item-info.js +8 -0
  315. package/components/puff-list/{puff-list-item/puff-list-item.d.ts → puff-list-item.d.ts} +0 -1
  316. package/components/puff-list/{puff-list-item/puff-list-item.js → puff-list-item.js} +3 -3
  317. package/components/puff-list/puff-list.js +2 -3
  318. package/components/region-icon/region-icon.js +2 -2
  319. package/components/side-menu/side-menu-base.d.ts +22 -0
  320. package/components/side-menu/side-menu-base.js +42 -0
  321. package/components/side-menu/side-menu.d.ts +6 -9
  322. package/components/side-menu/side-menu.js +13 -43
  323. package/components/side-panel/side-panel-base.d.ts +24 -0
  324. package/components/side-panel/side-panel-base.js +33 -0
  325. package/components/side-panel/side-panel-provider.d.ts +7 -0
  326. package/components/side-panel/side-panel-provider.js +12 -0
  327. package/components/side-panel/side-panel.d.ts +14 -15
  328. package/components/side-panel/side-panel.js +49 -54
  329. package/components/stepper/step-base.d.ts +15 -0
  330. package/components/stepper/step-base.js +36 -0
  331. package/components/stepper/step.d.ts +5 -8
  332. package/components/stepper/step.js +17 -33
  333. package/components/stepper/stepper.d.ts +4 -6
  334. package/components/stepper/stepper.js +8 -13
  335. package/components/tabs/tab-link.d.ts +15 -0
  336. package/components/tabs/tab-link.js +10 -0
  337. package/components/tabs/tab-panel.d.ts +2 -4
  338. package/components/tabs/tab-panel.js +5 -12
  339. package/components/tabs/tab.d.ts +5 -5
  340. package/components/tabs/tab.js +5 -8
  341. package/components/tabs/tabs-base.d.ts +15 -0
  342. package/components/tabs/tabs-base.js +15 -0
  343. package/components/tabs/tabs.d.ts +5 -8
  344. package/components/tabs/tabs.js +38 -51
  345. package/components/tag/tag.d.ts +5 -15
  346. package/components/tag/tag.js +3 -8
  347. package/components/tooltip/tooltip-base.d.ts +14 -0
  348. package/components/tooltip/tooltip-base.js +18 -0
  349. package/components/tooltip/tooltip.d.ts +3 -10
  350. package/components/tooltip/tooltip.js +59 -43
  351. package/components/utils/contexts/HeaderContext.d.ts +1 -0
  352. package/index.d.ts +90 -16
  353. package/index.js +90 -16
  354. package/package.json +2 -2
  355. package/components/box-link/box-link.d.ts +0 -9
  356. package/components/box-link/box-link.js +0 -11
  357. package/components/global-alert/global-alert.d.ts +0 -16
  358. package/components/global-alert/global-alert.js +0 -26
  359. package/components/mobile/menu/item/mobile-item.d.ts +0 -15
  360. package/components/mobile/menu/item/mobile-item.js +0 -61
  361. package/components/mobile/menu/mobile-menu.d.ts +0 -7
  362. package/components/mobile/menu/mobile-menu.js +0 -12
  363. package/components/notification/badge/notification-badge.js +0 -9
  364. package/components/pagination/data-pagination/data-pagination.js +0 -16
  365. package/components/puff-list/puff-list-item/puff-list-item-header.js +0 -11
  366. package/components/puff-list/puff-list-item/puff-list-item-info.js +0 -10
  367. package/components/utils/hooks/useElementId.d.ts +0 -5
  368. package/components/utils/hooks/useElementId.js +0 -12
  369. /package/components/{button-group → button}/button-group.d.ts +0 -0
  370. /package/components/{action-link → link}/action-link.d.ts +0 -0
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
- import "@inera/ids-design/components/puff-list/puff-list.css";
3
2
  export interface IDSPuffListItemInfoProps extends React.HTMLAttributes<HTMLDivElement> {
4
3
  bottom?: boolean;
5
4
  }
6
- export declare function IDSPuffListItemInfo({ bottom, children, className, ...props }: IDSPuffListItemInfoProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function IDSPuffListItemInfo({ bottom, children, ...props }: IDSPuffListItemInfoProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import clsx from 'clsx';
3
+
4
+ function IDSPuffListItemInfo({ bottom = false, children, ...props }) {
5
+ return (jsx("div", { ...props, className: clsx("ids-puff-list-item__info", { "ids-puff-list-item__info--bottom": bottom }), children: children }));
6
+ }
7
+
8
+ export { IDSPuffListItemInfo };
@@ -9,7 +9,6 @@ export interface IDSPuffListItemProps extends React.HTMLAttributes<HTMLDivElemen
9
9
  lean?: boolean;
10
10
  dateLabel?: ReactNode;
11
11
  extra?: ReactNode;
12
- children?: ReactNode;
13
12
  }
14
13
  export declare function IDSPuffListItem({ header, itemLink, date, dateTo, noContent, lean, dateLabel, extra, className, children, ...props }: IDSPuffListItemProps): import("react/jsx-runtime").JSX.Element;
15
14
  export declare namespace IDSPuffListItem {
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { isValidElement, cloneElement } from 'react';
3
- import '@inera/ids-design/components/puff-list/puff-list.css';
4
3
  import clsx from 'clsx';
4
+ import '@inera/ids-design/components/puff-list/puff-list.css';
5
5
 
6
6
  function IDSPuffListItem({ header, itemLink, date, dateTo, noContent = false, lean = false, dateLabel, extra, className, children, ...props }) {
7
7
  const renderBody = () => {
@@ -15,10 +15,10 @@ function IDSPuffListItem({ header, itemLink, date, dateTo, noContent = false, le
15
15
  }
16
16
  return content;
17
17
  };
18
- return (jsxs("div", { className: clsx("ids-puff-list-item", {
18
+ return (jsxs("div", { ...props, className: clsx("ids-puff-list-item", {
19
19
  "ids-puff-list-item--interactive": !!itemLink,
20
20
  "ids-puff-list-item--lean": !!lean
21
- }, className), ...props, children: [jsxs("div", { className: "ids-puff-list-item__inner", children: [dateLabel && jsx("div", { className: "ids-puff-list-item__date-label", children: dateLabel }), jsxs("div", { className: "ids-puff-list-item__content", children: [!!date && date, !!date && !!dateTo && (jsxs(Fragment, { children: [jsx("span", { className: "ids-puff-list-item__date-spacer", children: "\u2015" }), dateTo] })), renderBody()] }), extra && jsx("div", { className: "ids-puff-list-item__extra-content", children: extra })] }), jsx("div", { className: "ids-puff-list-item-separator" })] }));
21
+ }, className), children: [jsxs("div", { className: "ids-puff-list-item__inner", children: [dateLabel && jsx("div", { className: "ids-puff-list-item__date-label", children: dateLabel }), jsxs("div", { className: "ids-puff-list-item__content", children: [!!date && date, !!date && !!dateTo && (jsxs(Fragment, { children: [jsx("span", { className: "ids-puff-list-item__date-spacer", children: "\u2015" }), dateTo] })), renderBody()] }), extra && jsx("div", { className: "ids-puff-list-item__extra-content", children: extra })] }), jsx("div", { className: "ids-puff-list-item-separator" })] }));
22
22
  }
23
23
  IDSPuffListItem.displayName = "IDSPuffListItem";
24
24
 
@@ -1,10 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import '@inera/ids-design/components/puff-list/puff-list.css';
3
2
  import clsx from 'clsx';
3
+ import '@inera/ids-design/components/puff-list/puff-list.css';
4
4
 
5
5
  function IDSPuffList({ children, className, ...props }) {
6
- const classes = clsx("ids-puff-list", className);
7
- return (jsx("div", { className: classes, ...props, children: children }));
6
+ return (jsx("div", { ...props, className: clsx("ids-puff-list", className), children: children }));
8
7
  }
9
8
 
10
9
  export { IDSPuffList };
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import '@inera/ids-design/components/region-icon/region-icon.css';
3
2
  import clsx from 'clsx';
3
+ import '@inera/ids-design/components/region-icon/region-icon.css';
4
4
 
5
5
  function IDSRegionIcon({ name, size = "m", colorPreset = 1, light = false, inline = false, className, ...props }) {
6
6
  const getSize = () => {
@@ -19,7 +19,7 @@ function IDSRegionIcon({ name, size = "m", colorPreset = 1, light = false, inlin
19
19
  return "2.5rem";
20
20
  }
21
21
  };
22
- return (jsx("span", { className: clsx("ids-region-icon", `ids-region-icon--${name}`, `ids-region-icon--color-preset-${light ? 3 : colorPreset}`, { "ids-region-icon--inline": inline }, className), style: { fontSize: getSize() }, ...props }));
22
+ return (jsx("span", { ...props, className: clsx("ids-region-icon", `ids-region-icon--${name}`, `ids-region-icon--color-preset-${light ? 3 : colorPreset}`, { "ids-region-icon--inline": inline }, className), style: { fontSize: getSize() } }));
23
23
  }
24
24
 
25
25
  export { IDSRegionIcon };
@@ -0,0 +1,22 @@
1
+ import React, { ReactNode } from "react";
2
+ import "@inera/ids-design/components/side-menu/side-menu.css";
3
+ interface IDSSideMenuBaseProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ label?: string;
5
+ srToggleText?: string;
6
+ expanded?: boolean;
7
+ active?: boolean;
8
+ level?: number;
9
+ icon?: string;
10
+ labelNotification?: ReactNode;
11
+ link?: ReactNode;
12
+ isExpanded?: boolean;
13
+ onToggleMenu?: (e: React.MouseEvent | React.KeyboardEvent) => void;
14
+ handleKeyDown?: (e: React.KeyboardEvent) => void;
15
+ toggleButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
16
+ client?: boolean;
17
+ }
18
+ export declare function IDSSideMenuBase({ label, srToggleText, expanded, active, level, icon, labelNotification, link, isExpanded, onToggleMenu, handleKeyDown, toggleButtonProps, className, children, client, ...props }: IDSSideMenuBaseProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare namespace IDSSideMenuBase {
20
+ var displayName: string;
21
+ }
22
+ export {};
@@ -0,0 +1,42 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import clsx from 'clsx';
4
+ import '@inera/ids-design/components/side-menu/side-menu.css';
5
+
6
+ function IDSSideMenuBase({ label = "", srToggleText = "Sektion", expanded = false, active = false, level = 1, icon = "", labelNotification, link, isExpanded = expanded, onToggleMenu, handleKeyDown, toggleButtonProps, className, children, client = false, ...props }) {
7
+ const hasChildren = !!React.Children.toArray(children).length;
8
+ const toggleHandlers = client && onToggleMenu
9
+ ? {
10
+ onClick: onToggleMenu,
11
+ onKeyDown: handleKeyDown
12
+ }
13
+ : {};
14
+ const renderExpandButton = () => {
15
+ if (hasChildren) {
16
+ return (jsx("button", { className: clsx("ids-side-menu__chevron-button", {
17
+ "ids-side-menu__chevron-button--expanded": isExpanded
18
+ }), ...toggleHandlers, ...toggleButtonProps, "aria-expanded": isExpanded, "aria-label": srToggleText }));
19
+ }
20
+ return icon ? (jsx("div", { className: "ids-side-menu__label-icon", "aria-hidden": "true", children: jsx("span", { className: `ids-icon-${icon}` }) })) : (jsx("div", { className: "ids-side-menu__chevron-button--empty" }));
21
+ };
22
+ const renderLabel = () => {
23
+ if (hasChildren) {
24
+ return (jsxs("button", { className: "ids-side-menu__label-button", ...toggleHandlers, ...toggleButtonProps, "aria-expanded": isExpanded, "aria-label": srToggleText, children: [jsx("div", { className: clsx("ids-side-menu__label-chevron", {
25
+ "ids-side-menu__label-chevron--expanded": isExpanded
26
+ }) }), jsxs("div", { className: "ids-side-menu__label", children: [label, labelNotification] })] }));
27
+ }
28
+ return (jsxs(Fragment, { children: [icon ? (jsx("div", { className: "ids-side-menu__label-icon", "aria-hidden": "true", children: jsx("span", { className: `ids-icon-${icon}` }) })) : (jsx("div", { className: "ids-side-menu__chevron-button--empty" })), jsxs("div", { className: "ids-side-menu__label", children: [jsx("span", { className: "ids-side-menu__label-text", children: label }), labelNotification] })] }));
29
+ };
30
+ const renderMenuPost = () => {
31
+ if (label)
32
+ return renderLabel();
33
+ return (jsxs(Fragment, { children: [renderExpandButton(), jsx("div", { className: "ids-side-menu__link", onClick: e => e.stopPropagation(), onKeyDown: e => e.code !== "Escape" && e.stopPropagation(), children: link })] }));
34
+ };
35
+ return (jsxs("div", { className: clsx("ids-side-menu", `ids-side-menu--level-${level}`, className), ...props, children: [jsx("div", { className: clsx("ids-side-menu__header", {
36
+ "ids-side-menu--active": active,
37
+ "ids-side-menu--node-label": hasChildren && label
38
+ }), children: jsx("div", { className: "ids-side-menu__header-inner", children: renderMenuPost() }) }), isExpanded && jsx("div", { className: "ids-side-menu__children", children: children })] }));
39
+ }
40
+ IDSSideMenuBase.displayName = "IDSSideMenuBase";
41
+
42
+ export { IDSSideMenuBase };
@@ -1,16 +1,13 @@
1
- import React, { ReactNode } from "react";
2
- import "@inera/ids-design/components/side-menu/side-menu.css";
3
- interface IDSSideMenuProps extends React.HTMLAttributes<HTMLDivElement> {
1
+ import React from "react";
2
+ export interface IDSSideMenuProps extends React.HTMLAttributes<HTMLDivElement> {
4
3
  label?: string;
5
4
  srToggleText?: string;
6
5
  expanded?: boolean;
7
6
  active?: boolean;
8
7
  level?: number;
9
8
  icon?: string;
10
- labelNotification?: ReactNode;
11
- link?: ReactNode;
12
- children?: ReactNode;
13
- onExpandedChange?: (isExpanded: boolean) => void;
9
+ labelNotification?: React.ReactNode;
10
+ link?: React.ReactNode;
11
+ onToggleMenu?: (isExpanded: boolean) => void;
14
12
  }
15
- export declare const IDSSideMenu: React.FC<IDSSideMenuProps>;
16
- export {};
13
+ export declare function IDSSideMenu({ expanded, onToggleMenu, srToggleText, className, ...props }: IDSSideMenuProps): import("react/jsx-runtime").JSX.Element;
@@ -1,55 +1,25 @@
1
1
  "use client";
2
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
- import React, { useState } from 'react';
4
- import '@inera/ids-design/components/side-menu/side-menu.css';
5
- import clsx from 'clsx';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { useState } from 'react';
4
+ import { IDSSideMenuBase } from './side-menu-base.js';
6
5
 
7
- const IDSSideMenu = ({ label = "", srToggleText = "Sektion", expanded = false, active = false, level = 1, icon = "", labelNotification, link, children, className, onExpandedChange, ...props }) => {
6
+ function IDSSideMenu({ expanded = false, onToggleMenu, srToggleText = "Sektion", className, ...props }) {
8
7
  const [isExpanded, setIsExpanded] = useState(expanded);
9
- const hasChildren = React.Children.toArray(children).some(child => React.isValidElement(child) && child.type === IDSSideMenu);
10
- const toggleExpanded = (e) => {
8
+ const handleToggleMenu = (e) => {
11
9
  e.stopPropagation();
12
- if (hasChildren) {
13
- const newExpanded = !isExpanded;
14
- setIsExpanded(newExpanded);
15
- onExpandedChange?.(newExpanded);
16
- }
10
+ const newExpanded = !isExpanded;
11
+ setIsExpanded(newExpanded);
12
+ onToggleMenu?.(newExpanded);
17
13
  };
18
14
  const handleKeyDown = (e) => {
19
- if (e.code !== "Escape") {
15
+ if (e.code !== "Escape")
20
16
  e.stopPropagation();
21
- }
22
17
  if (e.code === "Space" || e.code === "Enter") {
23
- e.preventDefault(); // ✅ Prevent browser from also firing `click`
24
- toggleExpanded(e);
25
- }
26
- };
27
- const renderExpandButton = () => {
28
- if (hasChildren) {
29
- return (jsx("button", { className: clsx("ids-side-menu__chevron-button", {
30
- "ids-side-menu__chevron-button--expanded": isExpanded
31
- }), onClick: toggleExpanded, onKeyDown: handleKeyDown, "aria-expanded": isExpanded, "aria-label": srToggleText }));
32
- }
33
- return icon ? (jsx("div", { className: "ids-side-menu__leaf-icon", "aria-hidden": "true", children: jsx("span", { className: `ids-icon-${icon}` }) })) : (jsx("div", { className: "ids-side-menu__leaf-icon--empty" }));
34
- };
35
- const renderLabel = () => {
36
- if (hasChildren) {
37
- return (jsxs("button", { className: "ids-side-menu__label-button", onClick: toggleExpanded, onKeyDown: handleKeyDown, "aria-expanded": isExpanded, "aria-label": srToggleText, children: [jsx("div", { className: clsx("ids-side-menu__label-chevron", {
38
- "ids-side-menu__label-chevron--expanded": isExpanded
39
- }) }), jsxs("div", { className: "ids-side-menu__label", children: [label, labelNotification] })] }));
40
- }
41
- return (jsxs(Fragment, { children: [icon ? (jsx("div", { className: "ids-side-menu__leaf-icon", "aria-hidden": "true", children: jsx("span", { className: `ids-icon-${icon}` }) })) : (jsx("div", { className: "ids-side-menu__leaf-icon--empty" })), jsxs("div", { className: "ids-side-menu__label", children: [jsx("span", { className: "ids-side-menu__label-text", children: label }), labelNotification] })] }));
42
- };
43
- const renderMenuPost = () => {
44
- if (label) {
45
- return renderLabel();
18
+ e.preventDefault();
19
+ handleToggleMenu(e);
46
20
  }
47
- return (jsxs(Fragment, { children: [renderExpandButton(), jsx("div", { className: "ids-side-menu__link", children: link })] }));
48
21
  };
49
- return (jsxs("div", { className: clsx("ids-side-menu", className), ...props, children: [jsx("div", { className: clsx("ids-side-menu__header", `ids-side-menu--level-${level}`, {
50
- "ids-side-menu--active": active,
51
- "ids-side-menu--node-label": hasChildren && label
52
- }), children: jsx("div", { className: "ids-side-menu__header-inner", children: renderMenuPost() }) }), isExpanded && jsx("div", { className: "ids-side-menu__children", children: children })] }));
53
- };
22
+ return (jsx(IDSSideMenuBase, { ...props, client: true, className: className, srToggleText: srToggleText, isExpanded: isExpanded, onToggleMenu: handleToggleMenu, handleKeyDown: handleKeyDown }));
23
+ }
54
24
 
55
25
  export { IDSSideMenu };
@@ -0,0 +1,24 @@
1
+ import React, { ReactNode } from "react";
2
+ import "@inera/ids-design/components/side-panel/side-panel.css";
3
+ export type PanelSize = "s" | "m" | "l";
4
+ export interface IDSSidePanelBaseProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ visible?: boolean;
6
+ left?: boolean;
7
+ elevated?: boolean;
8
+ menu?: boolean;
9
+ footer?: boolean;
10
+ footerDarkmodeToggle?: ReactNode;
11
+ size?: PanelSize;
12
+ srLabel?: string;
13
+ onTogglePanel?: () => void;
14
+ onClosePanel?: () => void;
15
+ headline?: ReactNode;
16
+ footerLinks?: ReactNode;
17
+ footerText?: ReactNode;
18
+ client?: boolean;
19
+ srClose?: string;
20
+ srOpen?: string;
21
+ noScrollAreaFocus?: boolean;
22
+ hamburgerRef?: React.Ref<HTMLButtonElement>;
23
+ }
24
+ export declare const IDSSidePanelBase: React.ForwardRefExoticComponent<IDSSidePanelBaseProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,33 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import clsx from 'clsx';
4
+ import '@inera/ids-design/components/side-panel/side-panel.css';
5
+
6
+ const IDSSidePanelBase = forwardRef(({ visible = false, left = false, elevated = false, menu = false, footer = false, noScrollAreaFocus = false, footerDarkmodeToggle, size = "m", srLabel = "Sidopanel", onTogglePanel, onClosePanel, srClose, srOpen, client, headline, footerLinks, footerText, hamburgerRef, className, children, ...props }, ref) => {
7
+ const classNames = clsx("ids-side-panel", "ids-focus-trap--tablet", size && !menu && `ids-side-panel--${size}`, menu ? "ids-side-panel--menu" : "ids-side-panel--regular", {
8
+ "ids-side-panel--show": visible,
9
+ "ids-side-panel--elevated": elevated,
10
+ "ids-side-panel--left": !menu && left
11
+ }, className);
12
+ const toggleHandler = client && onTogglePanel
13
+ ? {
14
+ onClick: onTogglePanel
15
+ }
16
+ : {};
17
+ const closeHandler = client && onClosePanel
18
+ ? {
19
+ onClick: onClosePanel
20
+ }
21
+ : {};
22
+ const renderFooter = () => {
23
+ if (menu && footer) {
24
+ return (jsxs("footer", { className: "ids-side-panel__footer", children: [footerLinks && jsx("div", { className: "ids-side-panel__footer-links", children: footerLinks }), footerDarkmodeToggle && jsx("div", { className: "ids-side-panel__footer-toggle", children: footerDarkmodeToggle }), footerText && jsx("div", { className: "ids-side-panel__footer-text", children: footerText })] }));
25
+ }
26
+ return null;
27
+ };
28
+ const renderContent = () => (jsxs("div", { className: "ids-side-panel__content", tabIndex: noScrollAreaFocus ? -1 : 0, children: [jsxs("div", { className: "ids-side-panel__inner", children: [headline, children] }), renderFooter()] }));
29
+ return (jsx("div", { className: classNames, ref: ref, ...props, children: jsxs("div", { className: "ids-side-panel__panel", children: [jsx("div", { className: "ids-side-panel__actions", children: menu ? (jsx("button", { "aria-label": visible ? srClose : srOpen, className: "ids-side-panel__hamburger", "aria-expanded": visible, ...toggleHandler, ref: hamburgerRef, children: jsx("div", { className: "ids-hamburger", children: jsx("div", { className: "ids-hamburger__lines" }) }) })) : (jsx("button", { "aria-label": srClose, "aria-expanded": visible, className: "ids-side-panel__close-button", ...closeHandler })) }), renderContent()] }) }));
30
+ });
31
+ IDSSidePanelBase.displayName = "IDSSidePanelBase";
32
+
33
+ export { IDSSidePanelBase };
@@ -0,0 +1,7 @@
1
+ import React, { ReactNode } from "react";
2
+ export interface IDSSidePanelProviderProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ left?: boolean;
4
+ hideSidePanel?: boolean;
5
+ sidePanel: ReactNode;
6
+ }
7
+ export declare function IDSSidePanelProvider({ left, hideSidePanel, sidePanel, className, children, ...props }: IDSSidePanelProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsxs } from 'react/jsx-runtime';
2
+ import clsx from 'clsx';
3
+
4
+ function IDSSidePanelProvider({ left, hideSidePanel, sidePanel, className, children, ...props }) {
5
+ const classNames = clsx("ids-side-panel-provider", { "ids-side-panel-provider--left": !!left }, className);
6
+ if (!!left) {
7
+ return (jsxs("div", { className: classNames, ...props, children: [!hideSidePanel && sidePanel, " ", children] }));
8
+ }
9
+ return (jsxs("div", { className: classNames, ...props, children: [children, " ", !hideSidePanel && sidePanel] }));
10
+ }
11
+
12
+ export { IDSSidePanelProvider };
@@ -1,23 +1,22 @@
1
- import React, { ReactNode } from "react";
2
- import "@inera/ids-design/components/side-panel/side-panel.css";
3
- type PanelSize = "s" | "m" | "l";
4
- interface IDSSidePanelProps extends React.HTMLAttributes<HTMLDivElement> {
1
+ import { ReactNode } from "react";
2
+ import { PanelSize } from "./side-panel-base";
3
+ export interface IDSSidePanelProps extends React.HTMLAttributes<HTMLDivElement> {
5
4
  show?: boolean;
6
- left?: boolean;
5
+ onVisibilityChange?: (visible: boolean) => void;
6
+ onOpen?: () => void;
7
+ onClose?: () => void;
8
+ srClose?: string;
9
+ srOpen?: string;
7
10
  elevated?: boolean;
11
+ left?: boolean;
8
12
  menu?: boolean;
9
13
  footer?: boolean;
10
- srLabel?: string;
11
- srClose?: string;
12
- srOpen?: string;
14
+ footerDarkmodeToggle?: ReactNode;
13
15
  size?: PanelSize;
14
- onVisibilityChange?: (visible: boolean) => void;
15
- onOpen?: () => void;
16
- onClose?: () => void;
16
+ srLabel?: string;
17
+ headline?: ReactNode;
17
18
  footerLinks?: ReactNode;
18
19
  footerText?: ReactNode;
19
- headline?: ReactNode;
20
- children?: ReactNode;
20
+ noScrollAreaFocus?: boolean;
21
21
  }
22
- export declare const IDSSidePanel: React.FC<IDSSidePanelProps>;
23
- export {};
22
+ export declare function IDSSidePanel({ show, menu, noScrollAreaFocus, srLabel, onVisibilityChange, srClose, srOpen, onOpen, onClose, className, children, ...props }: IDSSidePanelProps): import("react/jsx-runtime").JSX.Element;
@@ -1,77 +1,72 @@
1
1
  "use client";
2
- import { jsx, jsxs } from 'react/jsx-runtime';
3
- import { useState, useRef, useEffect } from 'react';
4
- import '@inera/ids-design/components/side-panel/side-panel.css';
5
- import clsx from 'clsx';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { useRef, useState, useEffect } from 'react';
4
+ import { IDSSidePanelBase } from './side-panel-base.js';
6
5
 
7
- const IDSSidePanel = ({ show = false, left = false, elevated = false, menu = false, footer = false, size = "m", srLabel = "Sidopanel", srClose = "Stäng", srOpen = "Öppna", onVisibilityChange, onOpen, onClose, footerLinks, footerText, headline, className, children, ...props }) => {
8
- const [isVisible, setIsVisible] = useState(show);
6
+ function IDSSidePanel({ show = false, menu = false, noScrollAreaFocus = false, srLabel = "Sidopanel", onVisibilityChange, srClose = "Stäng", srOpen = "Öppna", onOpen, onClose, className, children, ...props }) {
7
+ const internalRef = useRef(null);
9
8
  const hamburgerRef = useRef(null);
10
- const panelRef = useRef(null);
11
- const classNames = clsx("ids-side-panel", "ids-focus-trap--tablet", size && !menu && `ids-side-panel--${size}`, menu ? "ids-side-panel--menu" : "ids-side-panel--regular", {
12
- "ids-side-panel--show": isVisible,
13
- "ids-side-panel--elevated": elevated,
14
- "ids-side-panel--left": !menu && left
15
- }, className);
9
+ const [internalShow, setInternalShow] = useState(show);
16
10
  useEffect(() => {
17
- const handleResize = () => {
18
- if (panelRef.current) {
19
- if (window.innerWidth <= 1024) {
20
- panelRef.current.setAttribute("role", "dialog");
21
- panelRef.current.setAttribute("aria-modal", "true");
22
- panelRef.current.setAttribute("aria-label", srLabel);
23
- }
24
- else {
25
- panelRef.current.removeAttribute("role");
26
- panelRef.current.removeAttribute("aria-modal");
27
- panelRef.current.removeAttribute("aria-label");
28
- }
29
- }
30
- };
31
- handleResize();
32
- window.addEventListener("resize", handleResize);
33
- return () => window.removeEventListener("resize", handleResize);
34
- }, []);
35
- useEffect(() => {
36
- setIsVisible(show);
11
+ if (show !== internalShow) {
12
+ setInternalShow(show);
13
+ onVisibilityChange?.(show);
14
+ }
37
15
  }, [show]);
16
+ // Escape key
38
17
  useEffect(() => {
39
18
  const handleKeyDown = (e) => {
40
- if (e.key === "Escape" && isVisible) {
41
- setIsVisible(false);
19
+ if (e.key === "Escape" && internalShow) {
20
+ setInternalShow(false);
21
+ onVisibilityChange?.(false);
42
22
  }
43
23
  };
44
- window.addEventListener("keydown", handleKeyDown);
45
- return () => window.removeEventListener("keydown", handleKeyDown);
46
- }, [isVisible]);
24
+ document.addEventListener("keydown", handleKeyDown);
25
+ return () => document.removeEventListener("keydown", handleKeyDown);
26
+ }, [internalShow]);
47
27
  useEffect(() => {
48
- onVisibilityChange?.(isVisible);
49
- if (isVisible) {
28
+ if (internalShow) {
50
29
  onOpen?.();
51
- const heading = panelRef.current?.querySelector("h1, h2, h3, h4, h5, h6");
30
+ const heading = internalRef.current?.querySelector("h1, h2, h3, h4, h5, h6");
52
31
  heading?.setAttribute("tabindex", "-1");
53
32
  heading?.focus();
54
33
  }
55
34
  else {
56
- onClose?.();
57
35
  if (menu && hamburgerRef.current) {
58
36
  hamburgerRef.current.focus();
59
37
  }
38
+ onClose?.();
60
39
  }
61
- }, [isVisible]);
62
- const togglePanel = () => setIsVisible(prev => !prev);
63
- const closePanel = () => setIsVisible(false);
64
- const renderButton = () => {
65
- return menu ? (jsx("button", { "aria-label": isVisible ? srClose : srOpen, className: "ids-side-panel__hamburger", id: "js-hamburger", "aria-expanded": isVisible, onClick: togglePanel, ref: hamburgerRef, children: jsx("div", { className: "ids-hamburger", children: jsx("div", { className: "ids-hamburger__lines" }) }) })) : (jsx("button", { "aria-label": srClose, "aria-expanded": isVisible, className: "ids-side-panel__close-button", onClick: closePanel }));
40
+ }, [internalShow]);
41
+ // Window resize ARIA attributes
42
+ useEffect(() => {
43
+ const handleResize = () => {
44
+ const panel = internalRef.current;
45
+ if (panel) {
46
+ if (window.innerWidth <= 1024) {
47
+ panel.setAttribute("role", "dialog");
48
+ panel.setAttribute("aria-modal", "true");
49
+ panel.setAttribute("aria-label", srLabel);
50
+ }
51
+ else {
52
+ panel.removeAttribute("role");
53
+ panel.removeAttribute("aria-modal");
54
+ panel.removeAttribute("aria-label");
55
+ }
56
+ }
57
+ };
58
+ handleResize();
59
+ window.addEventListener("resize", handleResize);
60
+ return () => window.removeEventListener("resize", handleResize);
61
+ }, [srLabel]);
62
+ const onClosePanel = () => {
63
+ setInternalShow(false);
64
+ onVisibilityChange?.(false);
66
65
  };
67
- const renderFooter = () => {
68
- if (menu && footer) {
69
- return (jsxs("footer", { className: "ids-side-panel__footer", children: [footerLinks && jsx("div", { className: "ids-side-panel__footer-links", children: footerLinks }), jsx("div", { className: "ids-side-panel__footer-text", children: footerText })] }));
70
- }
71
- return null;
66
+ const onTogglePanel = () => {
67
+ setInternalShow(prev => !prev);
72
68
  };
73
- const renderContent = () => (jsxs("div", { className: "ids-side-panel__content", tabIndex: 0, children: [jsxs("div", { className: "ids-side-panel__inner", children: [headline, children] }), renderFooter()] }));
74
- return (jsx("div", { className: classNames, ref: panelRef, ...props, children: jsxs("div", { className: "ids-side-panel__panel", children: [jsx("div", { className: "ids-side-panel__actions", children: renderButton() }), renderContent()] }) }));
75
- };
69
+ return (jsx(IDSSidePanelBase, { ...props, ref: internalRef, client: true, menu: menu, className: className, srClose: srClose, srOpen: srOpen, noScrollAreaFocus: noScrollAreaFocus, visible: internalShow, onClosePanel: onClosePanel, onTogglePanel: onTogglePanel, hamburgerRef: hamburgerRef, children: children }));
70
+ }
76
71
 
77
72
  export { IDSSidePanel };
@@ -0,0 +1,15 @@
1
+ import React, { ReactNode } from "react";
2
+ import "@inera/ids-design/components/stepper/stepper.css";
3
+ export type StepState = "" | "valid" | "invalid" | "selected";
4
+ export interface IDSStepBaseProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ state?: StepState;
6
+ headline?: ReactNode;
7
+ label?: string;
8
+ stepNumber?: string;
9
+ srIndicatorText?: string;
10
+ expanded?: boolean;
11
+ disabled?: boolean;
12
+ onToggleStep?: (step: string, expanded: boolean) => void;
13
+ client?: boolean;
14
+ }
15
+ export declare const IDSStepBase: React.ForwardRefExoticComponent<IDSStepBaseProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,36 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import clsx from 'clsx';
4
+ import '@inera/ids-design/components/stepper/stepper.css';
5
+
6
+ const IDSStepBase = forwardRef(({ state = "", headline, label = "", stepNumber = "", srIndicatorText = "", expanded = false, disabled = false, onToggleStep, client, className, children, ...props }, ref) => {
7
+ const renderStepIndicator = () => {
8
+ if (state === "valid" || state === "invalid")
9
+ return null;
10
+ return stepNumber;
11
+ };
12
+ const handleKeyPress = (e) => {
13
+ if (!onToggleStep)
14
+ return;
15
+ if (e.key === "Enter" || e.key === " ") {
16
+ e.preventDefault();
17
+ onToggleStep(stepNumber, expanded);
18
+ }
19
+ };
20
+ const toggleHandlers = client && onToggleStep
21
+ ? {
22
+ onClick: () => onToggleStep?.(stepNumber, expanded),
23
+ onKeyDown: handleKeyPress
24
+ }
25
+ : {};
26
+ return (jsxs("div", { className: clsx("ids-step", className), ...props, children: [jsx("div", { ref: ref, role: "button", tabIndex: disabled ? -1 : 0, className: clsx("ids-step__button", {
27
+ "ids-step__button--disabled": disabled
28
+ }), "aria-expanded": expanded, ...toggleHandlers, children: jsxs("div", { className: "ids-step__button-inner", children: [jsx("div", { className: "ids-step__indicator-wrapper", children: jsx("div", { "aria-label": srIndicatorText || stepNumber, role: "img", className: `ids-step__indicator ids-step__indicator--${state}`, children: renderStepIndicator() }) }), jsxs("div", { className: "ids-step__button-text", children: [jsxs("div", { className: "ids-step__headline-label", children: [label && jsx("div", { className: "ids-step__label", children: label }), headline && jsx("div", { className: "ids-step__headline", children: headline })] }), jsx("div", { className: clsx("ids-step__chevron", {
29
+ "ids-step__chevron--expanded": expanded
30
+ }) })] })] }) }), jsx("div", { className: clsx("ids-step__content", {
31
+ "ids-step__content--expanded": expanded
32
+ }), children: children })] }));
33
+ });
34
+ IDSStepBase.displayName = "IDSStepBase";
35
+
36
+ export { IDSStepBase };
@@ -1,18 +1,15 @@
1
- import React, { ReactNode } from "react";
2
- import "@inera/ids-design/components/stepper/stepper.css";
3
- export type StepState = "" | "valid" | "invalid" | "selected";
1
+ import React from "react";
2
+ import type { StepState } from "./step-base";
4
3
  export interface IDSStepProps extends React.HTMLAttributes<HTMLDivElement> {
5
4
  state?: StepState;
6
- headline?: ReactNode;
5
+ headline?: React.ReactNode;
7
6
  label?: string;
8
7
  stepNumber?: string;
9
8
  srIndicatorText?: string;
10
- last?: string;
11
9
  expanded?: boolean;
12
10
  disabled?: boolean;
13
- onToggleExpansion?: (step: number, expanded: boolean) => void;
11
+ onToggleStep?: (step: string, expanded: boolean) => void;
14
12
  onExpanded?: () => void;
15
13
  onClosed?: () => void;
16
- children?: ReactNode;
17
14
  }
18
- export declare const IDSStep: React.FC<IDSStepProps>;
15
+ export declare const IDSStep: React.ForwardRefExoticComponent<IDSStepProps & React.RefAttributes<HTMLDivElement>>;