@lifesg/react-design-system 4.0.0-alpha.4 → 4.0.0-alpha.5

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 (545) hide show
  1. package/accordion/accordion-item.styles_1j4eb32.css +2 -2
  2. package/accordion/accordion.d.ts +19 -0
  3. package/accordion/accordion.js.map +1 -1
  4. package/accordion/accordion.styles_bzrfrs.css +2 -2
  5. package/accordion/types.d.ts +42 -2
  6. package/alert/alert.d.ts +8 -0
  7. package/alert/alert.js.map +1 -1
  8. package/alert/alert.styles_patwo2.css +2 -2
  9. package/alert/types.d.ts +26 -2
  10. package/animations/loading-dots/loading-dots.styles_1rgrrmw.css +2 -2
  11. package/animations/loading-dots/lottie-animation.styles_1m15v69.css +1 -1
  12. package/animations/loading-dots-spinner/loading-dots-spinner.styles_1hcqkhs.css +2 -2
  13. package/animations/loading-dots-spinner/lottie-animation.styles_13d1unb.css +1 -1
  14. package/animations/loading-spinner/loading-spinner.styles_n6xoft.css +2 -2
  15. package/animations/loading-spinner/lottie-animation.styles_bnn4qt.css +1 -1
  16. package/avatar/avatar.d.ts +7 -0
  17. package/avatar/avatar.js.map +1 -1
  18. package/avatar/avatar.styles_16efw4.css +2 -2
  19. package/avatar/types.d.ts +11 -0
  20. package/badge/badge.d.ts +7 -0
  21. package/badge/badge.js.map +1 -1
  22. package/badge/badge.styles_1c3c6wj.css +2 -2
  23. package/badge/types.d.ts +20 -0
  24. package/box-container/box-container.d.ts +8 -0
  25. package/box-container/box-container.js.map +1 -1
  26. package/box-container/box-container.styles_5t2j9k.css +2 -2
  27. package/box-container/types.d.ts +24 -0
  28. package/breadcrumb/breadcrumb.styles_1nl4aua.css +2 -2
  29. package/button/button.styles_1pxy0co.css +2 -2
  30. package/calendar/calendar.styles_11ho5x8.css +2 -2
  31. package/card/card.styles_1gh9gs3.css +2 -2
  32. package/checkbox/checkbox.styles_gm5bu1.css +2 -2
  33. package/cjs/accordion/accordion-item.styles_1j4eb32.css +2 -2
  34. package/cjs/accordion/accordion.js.map +1 -1
  35. package/cjs/accordion/accordion.styles_bzrfrs.css +2 -2
  36. package/cjs/alert/alert.js.map +1 -1
  37. package/cjs/alert/alert.styles_patwo2.css +2 -2
  38. package/cjs/animations/loading-dots/loading-dots.styles_1rgrrmw.css +2 -2
  39. package/cjs/animations/loading-dots/lottie-animation.styles_1m15v69.css +1 -1
  40. package/cjs/animations/loading-dots-spinner/loading-dots-spinner.styles_1hcqkhs.css +2 -2
  41. package/cjs/animations/loading-dots-spinner/lottie-animation.styles_13d1unb.css +1 -1
  42. package/cjs/animations/loading-spinner/loading-spinner.styles_n6xoft.css +2 -2
  43. package/cjs/animations/loading-spinner/lottie-animation.styles_bnn4qt.css +1 -1
  44. package/cjs/avatar/avatar.js.map +1 -1
  45. package/cjs/avatar/avatar.styles_16efw4.css +2 -2
  46. package/cjs/badge/badge.js.map +1 -1
  47. package/cjs/badge/badge.styles_1c3c6wj.css +2 -2
  48. package/cjs/box-container/box-container.js.map +1 -1
  49. package/cjs/box-container/box-container.styles_5t2j9k.css +2 -2
  50. package/cjs/breadcrumb/breadcrumb.styles_1nl4aua.css +2 -2
  51. package/cjs/button/button.styles_1pxy0co.css +2 -2
  52. package/cjs/calendar/calendar.styles_11ho5x8.css +2 -2
  53. package/cjs/card/card.styles_1gh9gs3.css +2 -2
  54. package/cjs/checkbox/checkbox.styles_gm5bu1.css +2 -2
  55. package/cjs/countdown-timer/countdown-timer.js.map +1 -1
  56. package/cjs/countdown-timer/countdown-timer.styles_ipn1b0.css +2 -2
  57. package/cjs/dashed-border/dashed-border.js.map +1 -1
  58. package/cjs/dashed-border/dashed-border.styles_zszoox.css +2 -2
  59. package/cjs/data-table/data-table.js.map +1 -1
  60. package/cjs/data-table/data-table.styles_1iqq1g7.css +2 -2
  61. package/cjs/date-input/date-input.js.map +1 -1
  62. package/cjs/date-input/date-input.styles_1r5kcc7.css +1 -1
  63. package/cjs/date-navigator/date-navigator.js.map +1 -1
  64. package/cjs/date-navigator/date-navigator.styles_wokh56.css +2 -2
  65. package/cjs/date-range-input/date-range-input.js.map +1 -1
  66. package/cjs/date-range-input/date-range-input.styles_1s7ojnj.css +2 -2
  67. package/cjs/divider/divider.js.map +1 -1
  68. package/cjs/divider/divider.styles_1xpzh8p.css +2 -2
  69. package/cjs/drawer/drawer.js.map +1 -1
  70. package/cjs/drawer/drawer.styles_94hx3y.css +2 -2
  71. package/cjs/e-signature/e-signature-canvas.js +1 -1
  72. package/cjs/e-signature/e-signature-canvas.js.map +1 -1
  73. package/cjs/e-signature/e-signature.js.map +1 -1
  74. package/cjs/e-signature/e-signature.styles_lukd9f.css +2 -2
  75. package/cjs/error-display/error-display.js.map +1 -1
  76. package/cjs/error-display/error-display.styles_d3tql1.css +2 -2
  77. package/cjs/external/dompurify/dist/purify.es.js +3 -3
  78. package/cjs/external/dompurify/dist/purify.es.js.map +1 -1
  79. package/cjs/feedback-rating/feedback-rating-stars-container.styles_dmi8z9.css +2 -2
  80. package/cjs/feedback-rating/feedback-rating.js.map +1 -1
  81. package/cjs/feedback-rating/feedback-rating.styles_1kdklb6.css +2 -2
  82. package/cjs/file-download/file-download.js.map +1 -1
  83. package/cjs/file-download/file-download.styles_iggk8q.css +2 -2
  84. package/cjs/file-download/file-list-card/file-list-card.styles.js +1 -1
  85. package/cjs/file-download/file-list-card/file-list-card.styles.js.map +1 -1
  86. package/cjs/file-download/file-list-card/{file-list-card.styles_oom8ii.css → file-list-card.styles_18j2gut.css} +3 -3
  87. package/cjs/file-upload/dropzone.styles_1pllsau.css +2 -2
  88. package/cjs/file-upload/file-item-edit.js +1 -1
  89. package/cjs/file-upload/file-item-edit.js.map +1 -1
  90. package/cjs/file-upload/file-item-edit.styles.js +1 -1
  91. package/cjs/file-upload/file-item-edit.styles.js.map +1 -1
  92. package/cjs/file-upload/{file-item-edit.styles_1qbpbxj.css → file-item-edit.styles_19bvztn.css} +6 -5
  93. package/cjs/file-upload/file-list/file-list.js +1 -1
  94. package/cjs/file-upload/file-list/file-list.js.map +1 -1
  95. package/cjs/file-upload/file-list/file-list.styles.js +1 -1
  96. package/cjs/file-upload/file-list/file-list.styles.js.map +1 -1
  97. package/cjs/file-upload/file-list/file-list.styles_1w7so98.css +3 -0
  98. package/cjs/file-upload/file-list-item/file-list-item-thumbnail.styles_1y4si19.css +2 -2
  99. package/cjs/file-upload/file-list-item/file-list-item.js +1 -1
  100. package/cjs/file-upload/file-list-item/file-list-item.js.map +1 -1
  101. package/cjs/file-upload/file-list-item/file-list-item.styles.js +1 -1
  102. package/cjs/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
  103. package/cjs/file-upload/file-list-item/file-list-item.styles_o8000f.css +17 -0
  104. package/cjs/file-upload/file-upload.js +1 -1
  105. package/cjs/file-upload/file-upload.js.map +1 -1
  106. package/cjs/file-upload/file-upload.styles_9ffwcd.css +2 -2
  107. package/cjs/filter/addons/filter-item-checkbox.styles_7degw7.css +2 -2
  108. package/cjs/filter/filter-item-page.styles_17ewfrz.css +1 -1
  109. package/cjs/filter/filter-item.js.map +1 -1
  110. package/cjs/filter/filter-item.styles_cphjnj.css +2 -2
  111. package/cjs/filter/filter-modal.styles_qw3xlg.css +2 -2
  112. package/cjs/filter/filter-sidebar.styles_1otwpjl.css +2 -2
  113. package/cjs/filter/filter.js.map +1 -1
  114. package/cjs/filter/filter.styles_1ykijwm.css +2 -2
  115. package/cjs/footer/footer-download-app.styles_1v1j2us.css +2 -2
  116. package/cjs/footer/footer-resource-addon.styles_1jepb1d.css +2 -2
  117. package/cjs/footer/footer.js +1 -1
  118. package/cjs/footer/footer.js.map +1 -1
  119. package/cjs/footer/footer.styles_1msorhc.css +2 -2
  120. package/cjs/form/form-label-addon.styles_b00z8p.css +1 -1
  121. package/cjs/form/form-label.styles.js +1 -1
  122. package/cjs/form/form-label.styles.js.map +1 -1
  123. package/cjs/form/{form-label.styles_11r0652.css → form-label.styles_1nbe0bm.css} +2 -2
  124. package/cjs/form/form-textarea.styles_3p9qoy.css +2 -2
  125. package/cjs/form/form-wrapper.styles_199rslu.css +1 -1
  126. package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.styles_vc6y5c.css +2 -2
  127. package/cjs/fullscreen-image-carousel/stateful-image.styles_1xe8ypm.css +2 -2
  128. package/cjs/histogram-slider/histogram-slider.styles_wvd4w.css +2 -2
  129. package/cjs/image-button/image-button.styles_6n1qsr.css +2 -2
  130. package/cjs/index.js +1 -1
  131. package/cjs/input/input.styles_1cblor0.css +2 -2
  132. package/cjs/input-group/input-group-list-addon.styles_17iuqtw.css +2 -2
  133. package/cjs/input-group/input-group.styles_bqye6f.css +2 -2
  134. package/cjs/input-range-select/input-range-select.styles_adbrbm.css +2 -2
  135. package/cjs/input-range-slider/input-range-slider.styles_aljl2v.css +2 -2
  136. package/cjs/input-textarea/textarea-counter.styles_1n3wsnv.css +1 -1
  137. package/cjs/input-textarea/textarea.styles_22z4n3.css +2 -2
  138. package/cjs/language-switcher/dropdown-panel.styles_1qsjf8d.css +2 -2
  139. package/cjs/language-switcher/dropdown-variant.styles_1vrdfky.css +2 -2
  140. package/cjs/language-switcher/link-container-variant.styles_1iw6zux.css +2 -2
  141. package/cjs/layout/col-div.styles_16o6mwx.css +1 -1
  142. package/cjs/layout/container.styles_v70ec6.css +2 -2
  143. package/cjs/layout/section.styles_hstcaf.css +1 -1
  144. package/cjs/link-list/link-list.styles_m57vks.css +2 -2
  145. package/cjs/local-nav/local-nav-dropdown/local-nav-dropdown.styles_uhd4xl.css +2 -2
  146. package/cjs/local-nav/local-nav-menu/local-nav-menu.styles_pq19dh.css +2 -2
  147. package/cjs/markup/markup.style_1iu40x9.css +2 -2
  148. package/cjs/masked-input/masked-input.styles_1cm388a.css +2 -2
  149. package/cjs/masthead/masthead.styles_1huzon9.css +2 -2
  150. package/cjs/menu/menu-content.styles_p7ijll.css +2 -2
  151. package/cjs/menu/menu-item.styles_liyed8.css +2 -2
  152. package/cjs/menu/menu-link.styles_hfxoez.css +2 -2
  153. package/cjs/menu/menu-section.styles_g7my4d.css +2 -2
  154. package/cjs/modal/modal-box.styles_y52cts.css +2 -2
  155. package/cjs/modal/modal.styles_1lbblx6.css +2 -2
  156. package/cjs/modal-v2/modal-v2.styles_a8gv5i.css +2 -2
  157. package/cjs/modal-v2/slots/slot-styles_13sd376.css +2 -2
  158. package/cjs/navbar/brand.styles_zcgddp.css +1 -1
  159. package/cjs/navbar/drawer.js +1 -1
  160. package/cjs/navbar/drawer.js.map +1 -1
  161. package/cjs/navbar/drawer.styles_7hnxp5.css +2 -2
  162. package/cjs/navbar/menu.styles_gdpqc.css +2 -2
  163. package/cjs/navbar/navbar-action-buttons.styles_1vpm0nk.css +2 -2
  164. package/cjs/navbar/navbar-items.styles_1i3ltot.css +2 -2
  165. package/cjs/navbar/navbar.js +1 -1
  166. package/cjs/navbar/navbar.js.map +1 -1
  167. package/cjs/navbar/navbar.styles_koy0c7.css +2 -2
  168. package/cjs/notification-banner/notification-banner.styles_uxlysy.css +2 -2
  169. package/cjs/otp-input/otp-input.styles_5sbutl.css +2 -2
  170. package/cjs/otp-verification/contact-input-section.styles_odrjvt.css +2 -2
  171. package/cjs/otp-verification/otp-verification.styles_dg9bm8.css +1 -1
  172. package/cjs/otp-verification/thumbnail/thumbnail.styles_shqylh.css +2 -2
  173. package/cjs/otp-verification/verification-section.styles_x8jj.css +2 -2
  174. package/cjs/overlay/overlay.js +1 -1
  175. package/cjs/overlay/overlay.js.map +1 -1
  176. package/cjs/overlay/overlay.styles_12wym18.css +2 -2
  177. package/cjs/pagination/pagination.styles_6bcgva.css +2 -2
  178. package/cjs/pill/pill.styles_xwrniu.css +2 -2
  179. package/cjs/popover/popover-inline/popover-inline.styles_bkopnt.css +2 -2
  180. package/cjs/popover/popover-trigger.styles_8zokig.css +1 -1
  181. package/cjs/popover/popover.styles_ujnf0h.css +2 -2
  182. package/cjs/progress-indicator/progress-indicator.styles_1c038s4.css +2 -2
  183. package/cjs/radio-button/radio-button.styles_1c4v6v.css +2 -2
  184. package/cjs/schedule/schedule-day-view/schedule-day-view.styles_8ti149.css +2 -2
  185. package/cjs/schedule/schedule-header/schedule-header.js +1 -1
  186. package/cjs/schedule/schedule-header/schedule-header.js.map +1 -1
  187. package/cjs/schedule/schedule-header/schedule-header.styles_1n2u5vj.css +2 -2
  188. package/cjs/schedule/schedule-week-view/schedule-week-view.styles_x7x50m.css +2 -2
  189. package/cjs/schedule/schedule-week-view/time-cell.styles_1sorjz8.css +2 -2
  190. package/cjs/schedule/schedule.styles_fdy5a1.css +2 -2
  191. package/cjs/schedule/shared/with-optional-popover.styles_7mv3p2.css +1 -1
  192. package/cjs/schedule/time-indicator/time-indicator.styles_1eaxyes.css +2 -2
  193. package/cjs/select-histogram/select-histogram.styles_n260dy.css +2 -2
  194. package/cjs/shared/accessibility/index_13g9vp.css +1 -1
  195. package/cjs/shared/clickable-icon/clickable-icon.styles_1v2imml.css +2 -2
  196. package/cjs/shared/component-loading-spinner/component-loading-spinner.styles_15eq02i.css +2 -2
  197. package/cjs/shared/dropdown-list/dropdown-label.styles_mloii0.css +2 -2
  198. package/cjs/shared/dropdown-list/dropdown-list.styles_konwm.css +2 -2
  199. package/cjs/shared/dropdown-list/dropdown-search.styles_1hc1gkh.css +2 -2
  200. package/cjs/shared/dropdown-list/expandable-element.styles_rkkvqr.css +2 -2
  201. package/cjs/shared/dropdown-list/nested-dropdown-list.styles_wdhxoe.css +2 -2
  202. package/cjs/shared/dropdown-wrapper/dropdown-wrapper.styles_15hwwoj.css +2 -2
  203. package/cjs/shared/fade-wrapper/fade-wrapper.styles_16iug7l.css +2 -2
  204. package/cjs/shared/image-placeholder/image-placeholder.styles_44nwil.css +1 -1
  205. package/cjs/shared/input-wrapper/input-wrapper.styles_je6maw.css +2 -2
  206. package/cjs/shared/internal-calendar/calendar-dropdown.styles_wybjai.css +1 -1
  207. package/cjs/shared/internal-calendar/calendar-manager.js +1 -1
  208. package/cjs/shared/internal-calendar/calendar-manager.js.map +1 -1
  209. package/cjs/shared/internal-calendar/calendar-manager.styles.js +1 -1
  210. package/cjs/shared/internal-calendar/calendar-manager.styles.js.map +1 -1
  211. package/cjs/shared/internal-calendar/{calendar-manager.styles_1iuq5zw.css → calendar-manager.styles_1njwkj2.css} +3 -3
  212. package/cjs/shared/internal-calendar/day-cell/day-cell.styles_1t5oqc1.css +2 -2
  213. package/cjs/shared/internal-calendar/internal-calendar-month.styles_14oh57f.css +2 -2
  214. package/cjs/shared/internal-calendar/internal-calendar-year.styles_therlc.css +2 -2
  215. package/cjs/shared/internal-calendar/internal-calendar.styles_gnc3eq.css +1 -1
  216. package/cjs/shared/internal-calendar/standard/standard-calendar-day-view.styles_1bw26au.css +2 -2
  217. package/cjs/shared/progress-bar/progress-bar.styles_125ri7a.css +1 -1
  218. package/cjs/shared/range-input-inner-container/range-input-inner-container.styles_1v61utg.css +2 -2
  219. package/cjs/shared/standalone-date-input/standalone-date-input.styles_157qo89.css +2 -2
  220. package/cjs/shared/time-slot/time-slot.styles_18s0to7.css +2 -2
  221. package/cjs/shared/timepicker-dropdown/timepicker-dropdown.styles_119l6k6.css +2 -2
  222. package/cjs/sidenav/sidenav-drawer-item.styles_1ljnyx2.css +2 -2
  223. package/cjs/sidenav/sidenav-drawer-subitem.styles_2y58kf.css +1 -1
  224. package/cjs/sidenav/sidenav-group.styles_1x604sw.css +2 -2
  225. package/cjs/sidenav/sidenav-item.styles_lqw3kh.css +2 -2
  226. package/cjs/sidenav/sidenav.styles_1vxezie.css +2 -2
  227. package/cjs/singpass-button/singpass-button.styles_1miyex3.css +2 -2
  228. package/cjs/smart-app-banner/smart-app-banner.styles_15u6yv4.css +2 -2
  229. package/cjs/tab/tab-link-chain.styles_49got4.css +2 -2
  230. package/cjs/tab/tab.styles_1najffw.css +1 -1
  231. package/cjs/table/table.styles_1af5ipv.css +2 -2
  232. package/cjs/tag/tag.style_d98c53.css +2 -2
  233. package/cjs/text-list/text-list.styles_w3fvyt.css +2 -2
  234. package/cjs/theme/types.js +1 -1
  235. package/cjs/theme/types.js.map +1 -1
  236. package/cjs/theme/utils/use-design-token-override.js +2 -0
  237. package/cjs/theme/utils/use-design-token-override.js.map +1 -0
  238. package/cjs/time-range-picker/combobox-picker/combobox-picker.styles_7i9vso.css +1 -1
  239. package/cjs/time-range-picker/common.styles_1qwp4xa.css +2 -2
  240. package/cjs/time-slot-bar/time-slot-bar.styles_wigbyd.css +2 -2
  241. package/cjs/time-slot-bar-week/time-slot-bar-week-days.styles_evdvs9.css +2 -2
  242. package/cjs/time-slot-bar-week/time-slot-bar-week.styles_11ybf42.css +1 -1
  243. package/cjs/time-slot-week-view/time-slot-week-days.styles_1h21vyw.css +2 -2
  244. package/cjs/time-slot-week-view/time-slot-week-view.styles_gqgsw2.css +1 -1
  245. package/cjs/timeline/timeline.styles_1jxzik4.css +2 -2
  246. package/cjs/timepicker/timepicker.styles_1jm33yw.css +1 -1
  247. package/cjs/timetable/timetable-header/timetable-header.styles_11gl1h4.css +2 -2
  248. package/cjs/timetable/timetable-row/row-bar.styles_1x0vrsz.css +1 -1
  249. package/cjs/timetable/timetable-row/row-cell.styles_y1dl5j.css +2 -2
  250. package/cjs/timetable/timetable.styles_7rp8kz.css +2 -2
  251. package/cjs/toast/toast.styles_1e0l60w.css +2 -2
  252. package/cjs/toggle/toggle-icon.styles_ba71y.css +2 -2
  253. package/cjs/toggle/toggle.styles_1t5qrye.css +2 -2
  254. package/cjs/typography/typography-text.styles_1734x2k.css +2 -2
  255. package/cjs/typography/typography.styles.js +1 -1
  256. package/cjs/typography/typography.styles.js.map +1 -1
  257. package/cjs/typography/{typography.styles_1155j4c.css → typography.styles_1wd82dn.css} +2 -2
  258. package/cjs/uneditable-section/section-item.styles_mwx8ht.css +2 -2
  259. package/cjs/uneditable-section/uneditable-section.js +1 -1
  260. package/cjs/uneditable-section/uneditable-section.js.map +1 -1
  261. package/cjs/uneditable-section/uneditable-section.styles_aj9zun.css +2 -2
  262. package/cjs/unit-number/unit-number-input.styles_8yizj.css +2 -2
  263. package/countdown-timer/countdown-timer.d.ts +6 -0
  264. package/countdown-timer/countdown-timer.js.map +1 -1
  265. package/countdown-timer/countdown-timer.styles_ipn1b0.css +2 -2
  266. package/countdown-timer/types.d.ts +55 -11
  267. package/dashed-border/dashed-border.d.ts +6 -0
  268. package/dashed-border/dashed-border.js.map +1 -1
  269. package/dashed-border/dashed-border.styles_zszoox.css +2 -2
  270. package/dashed-border/types.d.ts +27 -5
  271. package/data-table/data-table.d.ts +8 -0
  272. package/data-table/data-table.js.map +1 -1
  273. package/data-table/data-table.styles_1iqq1g7.css +2 -2
  274. package/data-table/types.d.ts +58 -12
  275. package/date-input/date-input.d.ts +5 -0
  276. package/date-input/date-input.js.map +1 -1
  277. package/date-input/date-input.styles_1r5kcc7.css +1 -1
  278. package/date-input/types.d.ts +32 -16
  279. package/date-navigator/date-navigator.d.ts +6 -0
  280. package/date-navigator/date-navigator.js.map +1 -1
  281. package/date-navigator/date-navigator.styles_wokh56.css +2 -2
  282. package/date-navigator/types.d.ts +44 -7
  283. package/date-range-input/date-range-input.d.ts +4 -0
  284. package/date-range-input/date-range-input.js.map +1 -1
  285. package/date-range-input/date-range-input.styles_1s7ojnj.css +2 -2
  286. package/date-range-input/types.d.ts +50 -14
  287. package/divider/divider.d.ts +6 -0
  288. package/divider/divider.js.map +1 -1
  289. package/divider/divider.styles_1xpzh8p.css +2 -2
  290. package/divider/types.d.ts +27 -4
  291. package/drawer/drawer.d.ts +7 -0
  292. package/drawer/drawer.js.map +1 -1
  293. package/drawer/drawer.styles_94hx3y.css +2 -2
  294. package/drawer/types.d.ts +16 -4
  295. package/e-signature/e-signature-canvas.js +1 -1
  296. package/e-signature/e-signature-canvas.js.map +1 -1
  297. package/e-signature/e-signature.d.ts +5 -0
  298. package/e-signature/e-signature.js.map +1 -1
  299. package/e-signature/e-signature.styles_lukd9f.css +2 -2
  300. package/e-signature/types.d.ts +23 -1
  301. package/error-display/error-display.d.ts +7 -0
  302. package/error-display/error-display.js.map +1 -1
  303. package/error-display/error-display.styles_d3tql1.css +2 -2
  304. package/error-display/types.d.ts +36 -6
  305. package/external/dompurify/dist/purify.es.js +2 -2
  306. package/external/dompurify/dist/purify.es.js.map +1 -1
  307. package/feedback-rating/feedback-rating-stars-container.styles_dmi8z9.css +2 -2
  308. package/feedback-rating/feedback-rating.d.ts +6 -0
  309. package/feedback-rating/feedback-rating.js.map +1 -1
  310. package/feedback-rating/feedback-rating.styles_1kdklb6.css +2 -2
  311. package/feedback-rating/types.d.ts +29 -0
  312. package/file-download/file-download.d.ts +6 -0
  313. package/file-download/file-download.js.map +1 -1
  314. package/file-download/file-download.styles_iggk8q.css +2 -2
  315. package/file-download/file-list-card/file-list-card.styles.js +1 -1
  316. package/file-download/file-list-card/file-list-card.styles.js.map +1 -1
  317. package/file-download/file-list-card/{file-list-card.styles_oom8ii.css → file-list-card.styles_18j2gut.css} +3 -3
  318. package/file-download/types.d.ts +44 -11
  319. package/file-upload/dropzone.styles_1pllsau.css +2 -2
  320. package/file-upload/file-item-edit.d.ts +4 -1
  321. package/file-upload/file-item-edit.js +1 -1
  322. package/file-upload/file-item-edit.js.map +1 -1
  323. package/file-upload/file-item-edit.styles.d.ts +1 -0
  324. package/file-upload/file-item-edit.styles.js +1 -1
  325. package/file-upload/file-item-edit.styles.js.map +1 -1
  326. package/file-upload/{file-item-edit.styles_1qbpbxj.css → file-item-edit.styles_19bvztn.css} +6 -5
  327. package/file-upload/file-list/file-list.d.ts +3 -0
  328. package/file-upload/file-list/file-list.js +1 -1
  329. package/file-upload/file-list/file-list.js.map +1 -1
  330. package/file-upload/file-list/file-list.styles.js +1 -1
  331. package/file-upload/file-list/file-list.styles.js.map +1 -1
  332. package/file-upload/file-list/file-list.styles_1w7so98.css +3 -0
  333. package/file-upload/file-list-item/file-list-item-thumbnail.styles_1y4si19.css +2 -2
  334. package/file-upload/file-list-item/file-list-item.d.ts +3 -1
  335. package/file-upload/file-list-item/file-list-item.js +1 -1
  336. package/file-upload/file-list-item/file-list-item.js.map +1 -1
  337. package/file-upload/file-list-item/file-list-item.styles.d.ts +3 -0
  338. package/file-upload/file-list-item/file-list-item.styles.js +1 -1
  339. package/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
  340. package/file-upload/file-list-item/file-list-item.styles_o8000f.css +17 -0
  341. package/file-upload/file-upload.d.ts +2 -1
  342. package/file-upload/file-upload.js +1 -1
  343. package/file-upload/file-upload.js.map +1 -1
  344. package/file-upload/file-upload.styles_9ffwcd.css +2 -2
  345. package/file-upload/types.d.ts +125 -20
  346. package/filter/addons/filter-item-checkbox.styles_7degw7.css +2 -2
  347. package/filter/filter-item-page.styles_17ewfrz.css +1 -1
  348. package/filter/filter-item.js.map +1 -1
  349. package/filter/filter-item.styles_cphjnj.css +2 -2
  350. package/filter/filter-modal.styles_qw3xlg.css +2 -2
  351. package/filter/filter-sidebar.styles_1otwpjl.css +2 -2
  352. package/filter/filter.d.ts +21 -0
  353. package/filter/filter.js.map +1 -1
  354. package/filter/filter.styles_1ykijwm.css +2 -2
  355. package/filter/types.d.ts +161 -21
  356. package/footer/footer-download-app.styles_1v1j2us.css +2 -2
  357. package/footer/footer-resource-addon.styles_1jepb1d.css +2 -2
  358. package/footer/footer.d.ts +8 -1
  359. package/footer/footer.js +1 -1
  360. package/footer/footer.js.map +1 -1
  361. package/footer/footer.styles_1msorhc.css +2 -2
  362. package/footer/types.d.ts +55 -4
  363. package/form/form-label-addon.styles_b00z8p.css +1 -1
  364. package/form/form-label.styles.js +1 -1
  365. package/form/form-label.styles.js.map +1 -1
  366. package/form/{form-label.styles_11r0652.css → form-label.styles_1nbe0bm.css} +2 -2
  367. package/form/form-textarea.styles_3p9qoy.css +2 -2
  368. package/form/form-wrapper.styles_199rslu.css +1 -1
  369. package/fullscreen-image-carousel/fullscreen-image-carousel.styles_vc6y5c.css +2 -2
  370. package/fullscreen-image-carousel/stateful-image.styles_1xe8ypm.css +2 -2
  371. package/histogram-slider/histogram-slider.styles_wvd4w.css +2 -2
  372. package/image-button/image-button.styles_6n1qsr.css +2 -2
  373. package/index.d.ts +0 -1
  374. package/index.js +1 -1
  375. package/input/input.styles_1cblor0.css +2 -2
  376. package/input-group/input-group-list-addon.styles_17iuqtw.css +2 -2
  377. package/input-group/input-group.styles_bqye6f.css +2 -2
  378. package/input-range-select/input-range-select.styles_adbrbm.css +2 -2
  379. package/input-range-slider/input-range-slider.styles_aljl2v.css +2 -2
  380. package/input-textarea/textarea-counter.styles_1n3wsnv.css +1 -1
  381. package/input-textarea/textarea.styles_22z4n3.css +2 -2
  382. package/language-switcher/dropdown-panel.styles_1qsjf8d.css +2 -2
  383. package/language-switcher/dropdown-variant.styles_1vrdfky.css +2 -2
  384. package/language-switcher/link-container-variant.styles_1iw6zux.css +2 -2
  385. package/layout/col-div.styles_16o6mwx.css +1 -1
  386. package/layout/container.styles_v70ec6.css +2 -2
  387. package/layout/section.styles_hstcaf.css +1 -1
  388. package/link-list/link-list.styles_m57vks.css +2 -2
  389. package/local-nav/local-nav-dropdown/local-nav-dropdown.styles_uhd4xl.css +2 -2
  390. package/local-nav/local-nav-menu/local-nav-menu.styles_pq19dh.css +2 -2
  391. package/markup/markup.style_1iu40x9.css +2 -2
  392. package/masked-input/masked-input.styles_1cm388a.css +2 -2
  393. package/masthead/masthead.styles_1huzon9.css +2 -2
  394. package/menu/menu-content.styles_p7ijll.css +2 -2
  395. package/menu/menu-item.styles_liyed8.css +2 -2
  396. package/menu/menu-link.styles_hfxoez.css +2 -2
  397. package/menu/menu-section.styles_g7my4d.css +2 -2
  398. package/modal/modal-box.styles_y52cts.css +2 -2
  399. package/modal/modal.styles_1lbblx6.css +2 -2
  400. package/modal-v2/modal-v2.styles_a8gv5i.css +2 -2
  401. package/modal-v2/slots/slot-styles_13sd376.css +2 -2
  402. package/navbar/brand.styles_zcgddp.css +1 -1
  403. package/navbar/drawer.js +1 -1
  404. package/navbar/drawer.js.map +1 -1
  405. package/navbar/drawer.styles_7hnxp5.css +2 -2
  406. package/navbar/menu.styles_gdpqc.css +2 -2
  407. package/navbar/navbar-action-buttons.styles_1vpm0nk.css +2 -2
  408. package/navbar/navbar-items.styles_1i3ltot.css +2 -2
  409. package/navbar/navbar.js +1 -1
  410. package/navbar/navbar.js.map +1 -1
  411. package/navbar/navbar.styles_koy0c7.css +2 -2
  412. package/notification-banner/notification-banner.styles_uxlysy.css +2 -2
  413. package/otp-input/otp-input.styles_5sbutl.css +2 -2
  414. package/otp-verification/contact-input-section.styles_odrjvt.css +2 -2
  415. package/otp-verification/otp-verification.styles_dg9bm8.css +1 -1
  416. package/otp-verification/thumbnail/thumbnail.styles_shqylh.css +2 -2
  417. package/otp-verification/verification-section.styles_x8jj.css +2 -2
  418. package/overlay/overlay.js +1 -1
  419. package/overlay/overlay.js.map +1 -1
  420. package/overlay/overlay.styles_12wym18.css +2 -2
  421. package/overlay/types.d.ts +0 -13
  422. package/package.json +1 -7
  423. package/pagination/pagination.styles_6bcgva.css +2 -2
  424. package/pill/pill.styles_xwrniu.css +2 -2
  425. package/popover/popover-inline/popover-inline.styles_bkopnt.css +2 -2
  426. package/popover/popover-trigger.styles_8zokig.css +1 -1
  427. package/popover/popover.styles_ujnf0h.css +2 -2
  428. package/progress-indicator/progress-indicator.styles_1c038s4.css +2 -2
  429. package/radio-button/radio-button.styles_1c4v6v.css +2 -2
  430. package/schedule/schedule-day-view/schedule-day-view.styles_8ti149.css +2 -2
  431. package/schedule/schedule-header/schedule-header.js +1 -1
  432. package/schedule/schedule-header/schedule-header.js.map +1 -1
  433. package/schedule/schedule-header/schedule-header.styles_1n2u5vj.css +2 -2
  434. package/schedule/schedule-week-view/schedule-week-view.styles_x7x50m.css +2 -2
  435. package/schedule/schedule-week-view/time-cell.styles_1sorjz8.css +2 -2
  436. package/schedule/schedule.styles_fdy5a1.css +2 -2
  437. package/schedule/shared/with-optional-popover.styles_7mv3p2.css +1 -1
  438. package/schedule/time-indicator/time-indicator.styles_1eaxyes.css +2 -2
  439. package/select-histogram/select-histogram.styles_n260dy.css +2 -2
  440. package/shared/accessibility/index_13g9vp.css +1 -1
  441. package/shared/clickable-icon/clickable-icon.styles_1v2imml.css +2 -2
  442. package/shared/component-loading-spinner/component-loading-spinner.styles_15eq02i.css +2 -2
  443. package/shared/dropdown-list/dropdown-label.styles_mloii0.css +2 -2
  444. package/shared/dropdown-list/dropdown-list.styles_konwm.css +2 -2
  445. package/shared/dropdown-list/dropdown-search.styles_1hc1gkh.css +2 -2
  446. package/shared/dropdown-list/expandable-element.styles_rkkvqr.css +2 -2
  447. package/shared/dropdown-list/nested-dropdown-list.styles_wdhxoe.css +2 -2
  448. package/shared/dropdown-wrapper/dropdown-wrapper.styles_15hwwoj.css +2 -2
  449. package/shared/fade-wrapper/fade-wrapper.styles_16iug7l.css +2 -2
  450. package/shared/image-placeholder/image-placeholder.styles_44nwil.css +1 -1
  451. package/shared/input-wrapper/input-wrapper.styles_je6maw.css +2 -2
  452. package/shared/internal-calendar/calendar-dropdown.styles_wybjai.css +1 -1
  453. package/shared/internal-calendar/calendar-manager.js +1 -1
  454. package/shared/internal-calendar/calendar-manager.js.map +1 -1
  455. package/shared/internal-calendar/calendar-manager.styles.js +1 -1
  456. package/shared/internal-calendar/calendar-manager.styles.js.map +1 -1
  457. package/shared/internal-calendar/{calendar-manager.styles_1iuq5zw.css → calendar-manager.styles_1njwkj2.css} +3 -3
  458. package/shared/internal-calendar/day-cell/day-cell.styles_1t5oqc1.css +2 -2
  459. package/shared/internal-calendar/internal-calendar-month.styles_14oh57f.css +2 -2
  460. package/shared/internal-calendar/internal-calendar-year.styles_therlc.css +2 -2
  461. package/shared/internal-calendar/internal-calendar.styles_gnc3eq.css +1 -1
  462. package/shared/internal-calendar/standard/standard-calendar-day-view.styles_1bw26au.css +2 -2
  463. package/shared/progress-bar/progress-bar.styles_125ri7a.css +1 -1
  464. package/shared/range-input-inner-container/range-input-inner-container.styles_1v61utg.css +2 -2
  465. package/shared/standalone-date-input/standalone-date-input.styles_157qo89.css +2 -2
  466. package/shared/time-slot/time-slot.styles_18s0to7.css +2 -2
  467. package/shared/timepicker-dropdown/timepicker-dropdown.styles_119l6k6.css +2 -2
  468. package/sidenav/sidenav-drawer-item.styles_1ljnyx2.css +2 -2
  469. package/sidenav/sidenav-drawer-subitem.styles_2y58kf.css +1 -1
  470. package/sidenav/sidenav-group.styles_1x604sw.css +2 -2
  471. package/sidenav/sidenav-item.styles_lqw3kh.css +2 -2
  472. package/sidenav/sidenav.styles_1vxezie.css +2 -2
  473. package/singpass-button/singpass-button.styles_1miyex3.css +2 -2
  474. package/smart-app-banner/smart-app-banner.styles_15u6yv4.css +2 -2
  475. package/tab/tab-link-chain.styles_49got4.css +2 -2
  476. package/tab/tab.styles_1najffw.css +1 -1
  477. package/table/table.styles_1af5ipv.css +2 -2
  478. package/tag/tag.style_d98c53.css +2 -2
  479. package/text-list/text-list.styles_w3fvyt.css +2 -2
  480. package/theme/styles/a11y-playground.css +3 -0
  481. package/theme/styles/bookingsg.css +7 -4
  482. package/theme/styles/careercompass.css +4 -1
  483. package/theme/styles/ccube.css +3 -0
  484. package/theme/styles/default.css +9 -5
  485. package/theme/styles/imda.css +3 -0
  486. package/theme/styles/lifesg.css +3 -0
  487. package/theme/styles/mylegacy.css +7 -4
  488. package/theme/styles/oneservice.css +52 -0
  489. package/theme/styles/pa.css +3 -0
  490. package/theme/styles/rbs.css +3 -0
  491. package/theme/styles/sgw-digital-lobby.css +5 -2
  492. package/theme/styles/smgs.css +3 -0
  493. package/theme/styles/spf.css +3 -0
  494. package/theme/styles/supportgowhere.css +3 -0
  495. package/theme/types.d.ts +1 -1
  496. package/theme/types.js +1 -1
  497. package/theme/types.js.map +1 -1
  498. package/theme/utils/index.d.ts +1 -0
  499. package/theme/utils/use-design-token-override.d.ts +11 -0
  500. package/theme/utils/use-design-token-override.js +2 -0
  501. package/theme/utils/use-design-token-override.js.map +1 -0
  502. package/time-range-picker/combobox-picker/combobox-picker.styles_7i9vso.css +1 -1
  503. package/time-range-picker/common.styles_1qwp4xa.css +2 -2
  504. package/time-slot-bar/time-slot-bar.styles_wigbyd.css +2 -2
  505. package/time-slot-bar-week/time-slot-bar-week-days.styles_evdvs9.css +2 -2
  506. package/time-slot-bar-week/time-slot-bar-week.styles_11ybf42.css +1 -1
  507. package/time-slot-week-view/time-slot-week-days.styles_1h21vyw.css +2 -2
  508. package/time-slot-week-view/time-slot-week-view.styles_gqgsw2.css +1 -1
  509. package/timeline/timeline.styles_1jxzik4.css +2 -2
  510. package/timepicker/timepicker.styles_1jm33yw.css +1 -1
  511. package/timetable/timetable-header/timetable-header.styles_11gl1h4.css +2 -2
  512. package/timetable/timetable-row/row-bar.styles_1x0vrsz.css +1 -1
  513. package/timetable/timetable-row/row-cell.styles_y1dl5j.css +2 -2
  514. package/timetable/timetable.styles_7rp8kz.css +2 -2
  515. package/toast/toast.styles_1e0l60w.css +2 -2
  516. package/toggle/toggle-icon.styles_ba71y.css +2 -2
  517. package/toggle/toggle.styles_1t5qrye.css +2 -2
  518. package/typography/typography-text.styles_1734x2k.css +2 -2
  519. package/typography/typography.styles.js +1 -1
  520. package/typography/typography.styles.js.map +1 -1
  521. package/typography/{typography.styles_1155j4c.css → typography.styles_1wd82dn.css} +2 -2
  522. package/uneditable-section/index.d.ts +1 -1
  523. package/uneditable-section/section-item.styles_mwx8ht.css +2 -2
  524. package/uneditable-section/uneditable-section.d.ts +2 -1
  525. package/uneditable-section/uneditable-section.js +1 -1
  526. package/uneditable-section/uneditable-section.js.map +1 -1
  527. package/uneditable-section/uneditable-section.styles_aj9zun.css +2 -2
  528. package/unit-number/unit-number-input.styles_8yizj.css +2 -2
  529. package/cjs/example/example.js +0 -2
  530. package/cjs/example/example.js.map +0 -1
  531. package/cjs/example/example_r47nvz.css +0 -1
  532. package/cjs/example/index.js +0 -2
  533. package/cjs/example/index.js.map +0 -1
  534. package/cjs/file-upload/file-list/file-list.styles_1ea12kj.css +0 -3
  535. package/cjs/file-upload/file-list-item/file-list-item.styles_y7my2m.css +0 -14
  536. package/example/example.d.ts +0 -2
  537. package/example/example.js +0 -2
  538. package/example/example.js.map +0 -1
  539. package/example/example_r47nvz.css +0 -1
  540. package/example/index.d.ts +0 -1
  541. package/example/index.js +0 -2
  542. package/example/index.js.map +0 -1
  543. package/example/types.d.ts +0 -3
  544. package/file-upload/file-list/file-list.styles_1ea12kj.css +0 -3
  545. package/file-upload/file-list-item/file-list-item.styles_y7my2m.css +0 -14
package/filter/types.d.ts CHANGED
@@ -2,6 +2,11 @@ import type { CSSProperties, ReactNode } from "react";
2
2
  import type { ButtonStyleType } from "../button/types";
3
3
  import type { FormLabelAddonProps } from "../form/types";
4
4
  import type { Insets } from "../shared/types";
5
+ /**
6
+ * Rendering context for the filter panel.
7
+ *
8
+ * `"default"` indicates the desktop sidebar; `"mobile"` indicates the modal overlay.
9
+ */
5
10
  export type Mode = "default" | "mobile";
6
11
  interface FilterSidebarCustomLabelProps {
7
12
  headerTitle?: string | undefined;
@@ -13,98 +18,233 @@ interface FilterModalCustomLabelProps {
13
18
  doneButtonLabel?: string | undefined;
14
19
  clearButtonLabel?: string | undefined;
15
20
  }
21
+ /**
22
+ * Shared props for the sidebar and modal variants of the filter panel.
23
+ */
16
24
  export interface FilterBaseProps {
17
25
  id?: string | undefined;
18
26
  "data-testid"?: string | undefined;
19
27
  className?: string | undefined;
20
28
  style?: CSSProperties | undefined;
29
+ /**
30
+ * Number of active filter selections displayed as a badge on the header and
31
+ * toggle button.
32
+ */
21
33
  count?: number | undefined;
34
+ /**
35
+ * When `true`, the clear button is rendered in a disabled state.
36
+ *
37
+ * @default false
38
+ */
22
39
  clearButtonDisabled?: boolean | undefined;
23
- /** Called when clear button is pressed */
40
+ /** Called when the clear button is pressed. */
24
41
  onClear?: (() => void) | undefined;
42
+ /**
43
+ * Content rendered inside the filter panel.
44
+ *
45
+ * Pass a render function to receive the current `Mode` and conditionally
46
+ * render different content for desktop (`"default"`) and mobile (`"mobile"`).
47
+ */
25
48
  children?: ReactNode | ((mode: Mode) => ReactNode);
26
49
  /**
27
- * @deprecated
28
- * use customLabels instead
50
+ * @deprecated Use `customLabels` instead.
29
51
  */
30
52
  headerTitle?: string | undefined;
31
53
  /**
32
- * @deprecated
33
- * use customLabels instead
54
+ * @deprecated Use `customLabels` instead.
34
55
  */
35
56
  toggleFilterButtonLabel?: string | undefined;
36
57
  /**
37
- * @deprecated
38
- * use customLabels instead
58
+ * @deprecated Use `customLabels` instead.
39
59
  */
40
60
  doneButtonLabel?: string | undefined;
41
61
  }
62
+ /**
63
+ * Props for the desktop sidebar variant of the filter panel.
64
+ */
42
65
  export interface FilterSidebarProps extends FilterBaseProps {
66
+ /** Overrides default labels used by the sidebar variant. */
43
67
  customLabels?: FilterSidebarCustomLabelProps | undefined;
44
68
  }
69
+ /**
70
+ * Props for the mobile modal variant of the filter panel.
71
+ */
45
72
  export interface FilterModalProps extends FilterBaseProps {
46
- /** Called when dismiss button is pressed (mobile mode only) */
73
+ /** Called when the dismiss (close) button is pressed in the modal overlay. */
47
74
  onDismiss?: (() => void) | undefined;
48
- /** Called when done button is pressed (mobile mode only) */
75
+ /** Called when the done button is pressed in the modal overlay. */
49
76
  onDone?: (() => void) | undefined;
77
+ /** Called when the modal overlay is opened by the toggle button. */
50
78
  onModalOpen?: () => void;
79
+ /**
80
+ * Visual style of the toggle button that opens the modal.
81
+ *
82
+ * @default "light"
83
+ */
51
84
  toggleFilterButtonStyle?: ButtonStyleType | undefined;
85
+ /** Overrides default labels used by the modal variant. */
52
86
  customLabels?: FilterModalCustomLabelProps | undefined;
87
+ /**
88
+ * Safe-area insets applied to the modal header and footer, useful for
89
+ * notch or home-indicator offsets on mobile devices.
90
+ */
53
91
  insets?: Insets | undefined;
54
92
  }
93
+ /**
94
+ * Props for the `Filter` component, combining both sidebar and modal variants.
95
+ */
55
96
  export interface FilterProps extends Omit<FilterSidebarProps, "customLabels">, Omit<FilterModalProps, "customLabels"> {
97
+ /**
98
+ * Overrides default labels for the active variant.
99
+ *
100
+ * Only the labels relevant to the current mode (sidebar or modal) are used.
101
+ */
56
102
  customLabels?: FilterModalCustomLabelProps | FilterSidebarCustomLabelProps | undefined;
57
103
  }
104
+ /**
105
+ * Props for a single collapsible filter section within a filter panel.
106
+ */
58
107
  export interface FilterItemProps {
108
+ /**
109
+ * Content rendered inside the filter item.
110
+ *
111
+ * Pass a render function to receive the current `Mode` and minimised state,
112
+ * enabling content to adapt between desktop and mobile contexts.
113
+ */
59
114
  children: React.ReactNode | ((mode: Mode, state: {
60
115
  minimised: boolean;
61
116
  }) => React.ReactNode);
62
- /** Specifies if header divider is visible in default mode */
117
+ /**
118
+ * Whether a divider line is shown above the item in desktop mode.
119
+ *
120
+ * @default true
121
+ */
63
122
  showDivider?: boolean | undefined;
64
- /** Specifies if divider is visible in mobile mode */
123
+ /**
124
+ * Whether a divider line is shown above the item in mobile mode.
125
+ *
126
+ * @default true
127
+ */
65
128
  showMobileDivider?: boolean | undefined;
129
+ /** Label rendered in the item header. */
66
130
  title?: string | undefined;
131
+ /** Optional popover addon displayed inline with the title. */
67
132
  addon?: FormLabelAddonProps | undefined;
68
133
  className?: string | undefined;
69
134
  id?: string | undefined;
70
135
  "data-testid"?: string | undefined;
136
+ /**
137
+ * Whether the item can be expanded or collapsed in desktop mode.
138
+ * Items are always expanded in mobile mode regardless of this setting.
139
+ *
140
+ * @default true
141
+ */
71
142
  collapsible?: boolean | undefined;
72
- /** Specifies the initial expand state for the uncontrolled component */
143
+ /**
144
+ * Initial expanded state for the uncontrolled component.
145
+ * Has no effect when `expanded` is provided.
146
+ *
147
+ * @default false
148
+ */
73
149
  initialExpanded?: boolean | undefined;
74
- /** Specifies the expand state for the controlled component */
150
+ /**
151
+ * Controls the expanded state. When provided, the component is controlled
152
+ * and `onExpandChange` must be used to update the value.
153
+ */
75
154
  expanded?: boolean | undefined;
76
- /** Called when the expand state changes */
155
+ /**
156
+ * Called when the user toggles the expand/collapse state.
157
+ */
77
158
  onExpandChange?: ((expanded: boolean) => void) | undefined;
159
+ /**
160
+ * Whether the item content can be minimised to show a truncated height with
161
+ * a "View more" button.
162
+ *
163
+ * @default false
164
+ */
78
165
  minimisable?: boolean | undefined;
166
+ /**
167
+ * Height in pixels to clip the content when minimised.
168
+ * Defaults to 50% of content height, capped at 216 px.
169
+ */
79
170
  minimisedHeight?: number | undefined;
80
171
  style?: React.CSSProperties | undefined;
81
172
  }
173
+ /**
174
+ * Props for a full-screen sub-page overlay within the mobile filter modal.
175
+ *
176
+ * `Filter.Page` provides a back-navigation header and a done button,
177
+ * intended for drill-down selection flows inside a filter item.
178
+ */
82
179
  export interface FilterPageProps {
83
180
  "data-testid"?: string | undefined;
84
181
  children: React.ReactNode;
85
- /** Called when dismiss button is pressed */
182
+ /** Called when the back (dismiss) button is pressed. */
86
183
  onDismiss?: (() => void) | undefined;
87
- /** Called when done button is pressed */
184
+ /** Called when the done button is pressed. */
88
185
  onDone?: (() => void) | undefined;
89
186
  }
187
+ /**
188
+ * Default shape for a checkbox option in `Filter.Checkbox`.
189
+ *
190
+ * Nest `options` to create hierarchical groups with parent-level
191
+ * select/deselect all behavior.
192
+ */
90
193
  export interface FilterItemCheckboxOptionProps {
91
194
  value: any;
92
195
  label: string;
196
+ /** Nested child options. Providing children makes this item a parent node. */
93
197
  options?: FilterItemCheckboxOptionProps[] | undefined;
94
198
  }
199
+ /**
200
+ * Props for `Filter.Checkbox`, a filter item that renders a list of selectable
201
+ * checkboxes (desktop) or toggle chips (mobile).
202
+ *
203
+ * Supply a generic type `T` to use a custom option shape together with
204
+ * `labelExtractor` and `valueExtractor`.
205
+ */
95
206
  export interface FilterItemCheckboxProps<T = FilterItemCheckboxOptionProps> extends Omit<FilterItemProps, "children"> {
207
+ /** The full list of selectable options. */
96
208
  options: T[];
209
+ /**
210
+ * The currently selected options. When provided, the component syncs its
211
+ * internal selection state to this value.
212
+ */
97
213
  selectedOptions?: T[] | undefined;
214
+ /**
215
+ * Called when the selection changes.
216
+ *
217
+ * @param options The updated array of selected options.
218
+ */
98
219
  onSelect?: ((options: T[]) => void) | undefined;
99
- /** Function to derive display value from an item. If not set, checks `item.label`. */
220
+ /**
221
+ * Derives the display label from an option item.
222
+ * Falls back to `item.label` when not provided.
223
+ */
100
224
  labelExtractor?: ((item: T) => React.ReactNode) | undefined;
101
- /** Function to derive value from an item. If not set, checks `item.value`. */
225
+ /**
226
+ * Derives the unique value key from an option item.
227
+ * Falls back to `item.value` when not provided.
228
+ */
102
229
  valueExtractor?: ((item: T) => string) | undefined;
103
- /** Changes min-width of toggle in mobile view to fit content */
230
+ /**
231
+ * When `true`, toggle chips in mobile mode grow to fit their content width
232
+ * instead of stretching to a fixed minimum width.
233
+ */
104
234
  useToggleContentWidth?: boolean | undefined;
105
- /** Display checkbox list for mobile view */
235
+ /**
236
+ * When `true`, renders checkboxes instead of toggle chips in mobile mode.
237
+ * Has no effect for nested option trees, which always use checkboxes.
238
+ *
239
+ * @default false
240
+ */
106
241
  showAsCheckboxInMobile?: boolean | undefined;
107
- /** Whether to allow minimising (show "View more" button) */
242
+ /**
243
+ * When `true`, shows a "View more / View less" button when there are more
244
+ * options than the minimised threshold.
245
+ *
246
+ * @default true
247
+ */
108
248
  minimisableOptions?: boolean | undefined;
109
249
  }
110
250
  export {};
@@ -1,4 +1,4 @@
1
- .wmm1xbv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}:where(body.fds-breakpoint-lg-max) .wmm1xbv{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding:0;}
1
+ @layer fds{.wmm1xbv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}:where(body.fds-breakpoint-lg-max) .wmm1xbv{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding:0;}
2
2
  .l171bo4j{margin-bottom:var(--fds-spacing-16);color:var(--fds-footer-colour-text);}
3
3
  .a17bpz54{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:var(--fds-spacing-16);-webkit-column-gap:var(--fds-spacing-16);column-gap:var(--fds-spacing-16);}
4
- .a30jq0e img{width:auto;height:3.75rem;object-fit:contain;display:block;}:where(body.fds-breakpoint-lg-max) .a30jq0e img{height:3rem;width:100%;}
4
+ .a30jq0e img{width:auto;height:3.75rem;object-fit:contain;display:block;}:where(body.fds-breakpoint-lg-max) .a30jq0e img{height:3rem;width:100%;}}
@@ -1,4 +1,4 @@
1
- .ieulqso{max-height:var(--fds-spacing-72);max-width:100%;}
1
+ @layer fds{.ieulqso{max-height:var(--fds-spacing-72);max-width:100%;}
2
2
  .gaeoncc{height:4.5rem;}
3
3
  .prt8kdt{height:3.5rem;}
4
- .ich52w2{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:var(--fds-spacing-32);margin-top:var(--fds-spacing-16);}
4
+ .ich52w2{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;gap:var(--fds-spacing-32);margin-top:var(--fds-spacing-16);}}
@@ -1,2 +1,9 @@
1
1
  import type { FooterProps } from "./types";
2
- export declare const Footer: <T>({ children, links, lastUpdated, disclaimerLinks, showDownloadAddon, showResourceAddon, logoSrc, copyrightInfo, onFooterLinkClick, layout, hideLogo, className, ...otherProps }: FooterProps<T>) => import("react/jsx-runtime").JSX.Element;
2
+ /**
3
+ * Site-wide footer with navigation links, branding, and legal copy.
4
+ *
5
+ * Use `Footer` at the bottom of a page to surface navigation links grouped
6
+ * into columns, a theme-appropriate logo, download-app or resource add-ons,
7
+ * and disclaimer links with auto-generated copyright text.
8
+ */
9
+ export declare const Footer: <T>({ children, links, lastUpdated, disclaimerLinks, showDownloadAddon, showResourceAddon, logoSrc, logoAlt, copyrightInfo, onFooterLinkClick, layout, hideLogo, className, ...otherProps }: FooterProps<T>) => import("react/jsx-runtime").JSX.Element;
package/footer/footer.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__rest as e}from"../_virtual/_tslib.js";import{jsxs as o,jsx as t,Fragment as i}from"react/jsx-runtime";import r from"clsx";import{useContext as s}from"react";import{Divider as l}from"../divider/divider.js";import{Layout as n}from"../layout/index.js";import{ThemeContext as a}from"../theme/theme-provider/context.js";import{Typography as c}from"../typography/index.js";import{bottomSection as d,bottomSectionContent as m,copyrightText as h,copyrightSection as p,baseFooter as u,logoSection as f,logoImage as g,logoSize as k,linkSectionWrapper as v,linkSection as y,addonSection as N,topSection as j,fullWidthDivider as L,disclaimerTextLink as C,footerLink as b}from"./footer.styles.js";import{DownloadApp as w}from"./footer-download-app.js";import{FooterHelper as x}from"./footer-helper.js";import{ResourceAddon as D}from"./footer-resource-addon.js";const S=S=>{var{children:A,links:O,lastUpdated:F,disclaimerLinks:I,showDownloadAddon:R,showResourceAddon:T,logoSrc:U,copyrightInfo:X,onFooterLinkClick:$,layout:_="default",hideLogo:B,className:M}=S,q=e(S,["children","links","lastUpdated","disclaimerLinks","showDownloadAddon","showResourceAddon","logoSrc","copyrightInfo","onFooterLinkClick","layout","hideLogo","className"]);const z="stretch"===_,E=s(a),G=o=>o.map(((o,i)=>{const{"data-options":r}=o,s=e(o,["data-options"]);return t("li",{children:t(c.LinkMD,Object.assign({underlineStyle:"none",className:b},s,{onClick:e=>((e,o)=>{o.onClick?(e.preventDefault(),o.onClick(e)):$&&(e.preventDefault(),$(o))})(e,o)}))},i)}));return o("footer",Object.assign({},q,{className:r(u,M),children:[(()=>{let s=null;if(A)return A;if(O||R){const l=x.getFooterLogoAttribute(null==E?void 0:E.theme),{src:n,logoType:a}=l,c=e(l,["src","logoType"]);s=o(i,{children:[(U||n)&&!B&&t("div",{"data-testid":"logo-section",className:f,children:t("img",Object.assign({src:U||n,"data-testid":"logo",className:r(g,a&&k[a])},c))}),t("div",{className:v,children:null==O?void 0:O.map(((e,o)=>t("ul",{"data-testid":`link-col-${o}`,className:y,children:G(e)},`link-col-${o}`)))}),R&&t("div",{className:N,children:t(w,{})}),!R&&T&&t("div",{className:N,children:t(D,{})})]})}return s?o(i,{children:[t(n.Content,{className:j,stretch:z,children:s}),t(l,{className:L})]}):null})(),o(n.Content,{className:d,stretch:z,children:[t("div",{className:m,children:(()=>{const e=x.getDisclaimerLinks(null==E?void 0:E.theme,I);return Object.keys(e).map((o=>t(c.LinkXS,Object.assign({underlineStyle:"none",className:C},e[o]),o)))})()},"disclaimer"),t("div",{className:r(m,p),children:t(c.BodyXS,{"data-testid":"copyright-text",className:h,children:X||o(i,{children:["©"," ",x.getCopyrightInfo(F,null==E?void 0:E.theme)]})})},"copyright")]})]}))};export{S as Footer};
1
+ import{__rest as e}from"../_virtual/_tslib.js";import{jsxs as o,jsx as t,Fragment as i}from"react/jsx-runtime";import l from"clsx";import{useContext as r}from"react";import{Divider as s}from"../divider/divider.js";import{Layout as n}from"../layout/index.js";import{ThemeContext as a}from"../theme/theme-provider/context.js";import{Typography as c}from"../typography/index.js";import{bottomSection as d,bottomSectionContent as m,copyrightText as h,copyrightSection as p,baseFooter as u,logoSection as f,logoImage as g,logoSize as k,linkSectionWrapper as v,linkSection as y,addonSection as N,topSection as j,fullWidthDivider as L,disclaimerTextLink as C,footerLink as b}from"./footer.styles.js";import{DownloadApp as w}from"./footer-download-app.js";import{FooterHelper as x}from"./footer-helper.js";import{ResourceAddon as A}from"./footer-resource-addon.js";const D=D=>{var{children:S,links:O,lastUpdated:F,disclaimerLinks:I,showDownloadAddon:R,showResourceAddon:T,logoSrc:U,logoAlt:X="",copyrightInfo:$,onFooterLinkClick:_,layout:B="default",hideLogo:M,className:q}=D,z=e(D,["children","links","lastUpdated","disclaimerLinks","showDownloadAddon","showResourceAddon","logoSrc","logoAlt","copyrightInfo","onFooterLinkClick","layout","hideLogo","className"]);const E="stretch"===B,G=r(a),H=o=>o.map(((o,i)=>{const{"data-options":l}=o,r=e(o,["data-options"]);return t("li",{children:t(c.LinkMD,Object.assign({underlineStyle:"none",className:b},r,{onClick:e=>((e,o)=>{o.onClick?(e.preventDefault(),o.onClick(e)):_&&(e.preventDefault(),_(o))})(e,o)}))},i)}));return o("footer",Object.assign({},z,{className:l(u,q),children:[(()=>{let r=null;if(S)return S;if(O||R){const s=x.getFooterLogoAttribute(null==G?void 0:G.theme),{src:n,alt:a,logoType:c}=s,d=e(s,["src","alt","logoType"]);r=o(i,{children:[(U||n)&&!M&&t("div",{"data-testid":"logo-section",className:f,children:t("img",Object.assign({src:U||n,"data-testid":"logo",className:l(g,c&&k[c]),alt:X||a},d))}),t("div",{className:v,children:null==O?void 0:O.map(((e,o)=>t("ul",{"data-testid":`link-col-${o}`,className:y,children:H(e)},`link-col-${o}`)))}),R&&t("div",{className:N,children:t(w,{})}),!R&&T&&t("div",{className:N,children:t(A,{})})]})}return r?o(i,{children:[t(n.Content,{className:j,stretch:E,children:r}),t(s,{className:L})]}):null})(),o(n.Content,{className:d,stretch:E,children:[t("div",{className:m,children:(()=>{const e=x.getDisclaimerLinks(null==G?void 0:G.theme,I);return Object.keys(e).map((o=>t(c.LinkXS,Object.assign({underlineStyle:"none",className:C},e[o]),o)))})()},"disclaimer"),t("div",{className:l(m,p),children:t(c.BodyXS,{"data-testid":"copyright-text",className:h,children:$||o(i,{children:["©"," ",x.getCopyrightInfo(F,null==G?void 0:G.theme)]})})},"copyright")]})]}))};export{D as Footer};
2
2
  //# sourceMappingURL=footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"footer.js","sources":["../../src/footer/footer.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type React from \"react\";\nimport { useContext } from \"react\";\n\nimport { Divider } from \"../divider\";\nimport { Layout } from \"../layout\";\nimport { ThemeContext } from \"../theme/theme-provider/context\";\nimport { Typography } from \"../typography\";\nimport * as styles from \"./footer.styles\";\nimport { DownloadApp } from \"./footer-download-app\";\nimport type { InternalDisclaimerLinks } from \"./footer-helper\";\nimport { FooterHelper } from \"./footer-helper\";\nimport { ResourceAddon } from \"./footer-resource-addon\";\nimport type { FooterLinkProps, FooterProps } from \"./types\";\n\nexport const Footer = <T,>({\n children,\n links,\n lastUpdated,\n disclaimerLinks,\n showDownloadAddon,\n showResourceAddon,\n logoSrc,\n copyrightInfo,\n onFooterLinkClick,\n layout = \"default\",\n hideLogo,\n className,\n ...otherProps\n}: FooterProps<T>) => {\n // =============================================================================\n // CONST, STATE, REFS\n // =============================================================================\n const isStretch = layout === \"stretch\";\n const theme = useContext(ThemeContext);\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleLinkClick = <K extends T>(\n event: React.MouseEvent<HTMLAnchorElement>,\n item: FooterLinkProps<K>\n ) => {\n /**\n * Individual link onClick will override\n * the onFooterLinkClick callback\n */\n if (item.onClick) {\n event.preventDefault();\n item.onClick(event);\n } else if (onFooterLinkClick) {\n event.preventDefault();\n onFooterLinkClick(item);\n } else {\n // do nothing, let default behaviour happen\n }\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderDisclaimerLinks = () => {\n const links = FooterHelper.getDisclaimerLinks(\n theme?.theme,\n disclaimerLinks\n );\n\n return (Object.keys(links) as (keyof InternalDisclaimerLinks)[]).map(\n (key) => {\n return (\n <Typography.LinkXS\n key={key}\n underlineStyle=\"none\"\n className={styles.disclaimerTextLink}\n {...links[key]}\n />\n );\n }\n );\n };\n\n const renderFooterLinks = (links: FooterLinkProps<T>[]) => {\n return links.map((link, index) => {\n const { \"data-options\": _options, ...otherProps } = link;\n\n return (\n <li key={index}>\n <Typography.LinkMD\n underlineStyle=\"none\"\n className={styles.footerLink}\n {...otherProps}\n onClick={(event) => handleLinkClick(event, link)}\n />\n </li>\n );\n });\n };\n\n const renderTopSection = () => {\n let component: React.ReactNode = null;\n\n if (children) {\n return children;\n }\n\n if (links || showDownloadAddon) {\n const { src, logoType, ...otherLogoAttributes } =\n FooterHelper.getFooterLogoAttribute(theme?.theme);\n component = (\n <>\n {(logoSrc || src) && !hideLogo && (\n <div\n data-testid=\"logo-section\"\n className={styles.logoSection}\n >\n <img\n src={logoSrc || src}\n data-testid=\"logo\"\n className={clsx(\n styles.logoImage,\n logoType && styles.logoSize[logoType]\n )}\n {...otherLogoAttributes}\n />\n </div>\n )}\n <div className={styles.linkSectionWrapper}>\n {links?.map((columnLinks, columnIndex) => (\n <ul\n key={`link-col-${columnIndex}`}\n data-testid={`link-col-${columnIndex}`}\n className={styles.linkSection}\n >\n {renderFooterLinks(columnLinks)}\n </ul>\n ))}\n </div>\n {showDownloadAddon && (\n <div className={styles.addonSection}>\n <DownloadApp />\n </div>\n )}\n {/* when showDownloadAddon and showResourceAddon are enabled, showDownloadAddon should take priority to being rendered */}\n {!showDownloadAddon && showResourceAddon && (\n <div className={styles.addonSection}>\n <ResourceAddon />\n </div>\n )}\n </>\n );\n }\n\n if (component) {\n return (\n <>\n <Layout.Content\n className={styles.topSection}\n stretch={isStretch}\n >\n {component}\n </Layout.Content>\n <Divider className={styles.fullWidthDivider} />\n </>\n );\n }\n\n return null;\n };\n return (\n <footer {...otherProps} className={clsx(styles.baseFooter, className)}>\n {renderTopSection()}\n <Layout.Content\n className={styles.bottomSection}\n stretch={isStretch}\n >\n <div key=\"disclaimer\" className={styles.bottomSectionContent}>\n {renderDisclaimerLinks()}\n </div>\n <div\n key=\"copyright\"\n className={clsx(\n styles.bottomSectionContent,\n styles.copyrightSection\n )}\n >\n <Typography.BodyXS\n data-testid={\"copyright-text\"}\n className={styles.copyrightText}\n >\n {copyrightInfo || (\n <>\n &copy;{\" \"}\n {FooterHelper.getCopyrightInfo(\n lastUpdated,\n theme?.theme\n )}\n </>\n )}\n </Typography.BodyXS>\n </div>\n </Layout.Content>\n </footer>\n );\n};\n"],"names":["Footer","_a","children","links","lastUpdated","disclaimerLinks","showDownloadAddon","showResourceAddon","logoSrc","copyrightInfo","onFooterLinkClick","layout","hideLogo","className","otherProps","__rest","isStretch","theme","useContext","ThemeContext","renderFooterLinks","map","link","index","_options","_jsx","Typography","LinkMD","Object","assign","underlineStyle","styles.footerLink","onClick","event","item","preventDefault","handleLinkClick","_jsxs","clsx","styles.baseFooter","component","FooterHelper","getFooterLogoAttribute","src","logoType","otherLogoAttributes","_Fragment","styles.logoSection","styles.logoImage","styles.logoSize","styles.linkSectionWrapper","columnLinks","columnIndex","styles.linkSection","styles.addonSection","DownloadApp","ResourceAddon","Layout","Content","styles.topSection","stretch","Divider","styles.fullWidthDivider","renderTopSection","styles.bottomSection","styles.bottomSectionContent","getDisclaimerLinks","keys","key","LinkXS","styles.disclaimerTextLink","renderDisclaimerLinks","styles.copyrightSection","BodyXS","styles.copyrightText","getCopyrightInfo"],"mappings":"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"}
1
+ {"version":3,"file":"footer.js","sources":["../../src/footer/footer.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type React from \"react\";\nimport { useContext } from \"react\";\n\nimport { Divider } from \"../divider\";\nimport { Layout } from \"../layout\";\nimport { ThemeContext } from \"../theme/theme-provider/context\";\nimport { Typography } from \"../typography\";\nimport * as styles from \"./footer.styles\";\nimport { DownloadApp } from \"./footer-download-app\";\nimport type { InternalDisclaimerLinks } from \"./footer-helper\";\nimport { FooterHelper } from \"./footer-helper\";\nimport { ResourceAddon } from \"./footer-resource-addon\";\nimport type { FooterLinkProps, FooterProps } from \"./types\";\n\n/**\n * Site-wide footer with navigation links, branding, and legal copy.\n *\n * Use `Footer` at the bottom of a page to surface navigation links grouped\n * into columns, a theme-appropriate logo, download-app or resource add-ons,\n * and disclaimer links with auto-generated copyright text.\n */\nexport const Footer = <T,>({\n children,\n links,\n lastUpdated,\n disclaimerLinks,\n showDownloadAddon,\n showResourceAddon,\n logoSrc,\n logoAlt = \"\",\n copyrightInfo,\n onFooterLinkClick,\n layout = \"default\",\n hideLogo,\n className,\n ...otherProps\n}: FooterProps<T>) => {\n // =============================================================================\n // CONST, STATE, REFS\n // =============================================================================\n const isStretch = layout === \"stretch\";\n const theme = useContext(ThemeContext);\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleLinkClick = <K extends T>(\n event: React.MouseEvent<HTMLAnchorElement>,\n item: FooterLinkProps<K>\n ) => {\n /**\n * Individual link onClick will override\n * the onFooterLinkClick callback\n */\n if (item.onClick) {\n event.preventDefault();\n item.onClick(event);\n } else if (onFooterLinkClick) {\n event.preventDefault();\n onFooterLinkClick(item);\n } else {\n // do nothing, let default behaviour happen\n }\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderDisclaimerLinks = () => {\n const links = FooterHelper.getDisclaimerLinks(\n theme?.theme,\n disclaimerLinks\n );\n\n return (Object.keys(links) as (keyof InternalDisclaimerLinks)[]).map(\n (key) => {\n return (\n <Typography.LinkXS\n key={key}\n underlineStyle=\"none\"\n className={styles.disclaimerTextLink}\n {...links[key]}\n />\n );\n }\n );\n };\n\n const renderFooterLinks = (links: FooterLinkProps<T>[]) => {\n return links.map((link, index) => {\n const { \"data-options\": _options, ...otherProps } = link;\n\n return (\n <li key={index}>\n <Typography.LinkMD\n underlineStyle=\"none\"\n className={styles.footerLink}\n {...otherProps}\n onClick={(event) => handleLinkClick(event, link)}\n />\n </li>\n );\n });\n };\n\n const renderTopSection = () => {\n let component: React.ReactNode = null;\n\n if (children) {\n return children;\n }\n\n if (links || showDownloadAddon) {\n const { src, alt, logoType, ...otherLogoAttributes } =\n FooterHelper.getFooterLogoAttribute(theme?.theme);\n component = (\n <>\n {(logoSrc || src) && !hideLogo && (\n <div\n data-testid=\"logo-section\"\n className={styles.logoSection}\n >\n <img\n src={logoSrc || src}\n data-testid=\"logo\"\n className={clsx(\n styles.logoImage,\n logoType && styles.logoSize[logoType]\n )}\n alt={logoAlt || alt}\n {...otherLogoAttributes}\n />\n </div>\n )}\n <div className={styles.linkSectionWrapper}>\n {links?.map((columnLinks, columnIndex) => (\n <ul\n key={`link-col-${columnIndex}`}\n data-testid={`link-col-${columnIndex}`}\n className={styles.linkSection}\n >\n {renderFooterLinks(columnLinks)}\n </ul>\n ))}\n </div>\n {showDownloadAddon && (\n <div className={styles.addonSection}>\n <DownloadApp />\n </div>\n )}\n {/* when showDownloadAddon and showResourceAddon are enabled, showDownloadAddon should take priority to being rendered */}\n {!showDownloadAddon && showResourceAddon && (\n <div className={styles.addonSection}>\n <ResourceAddon />\n </div>\n )}\n </>\n );\n }\n\n if (component) {\n return (\n <>\n <Layout.Content\n className={styles.topSection}\n stretch={isStretch}\n >\n {component}\n </Layout.Content>\n <Divider className={styles.fullWidthDivider} />\n </>\n );\n }\n\n return null;\n };\n return (\n <footer {...otherProps} className={clsx(styles.baseFooter, className)}>\n {renderTopSection()}\n <Layout.Content\n className={styles.bottomSection}\n stretch={isStretch}\n >\n <div key=\"disclaimer\" className={styles.bottomSectionContent}>\n {renderDisclaimerLinks()}\n </div>\n <div\n key=\"copyright\"\n className={clsx(\n styles.bottomSectionContent,\n styles.copyrightSection\n )}\n >\n <Typography.BodyXS\n data-testid={\"copyright-text\"}\n className={styles.copyrightText}\n >\n {copyrightInfo || (\n <>\n &copy;{\" \"}\n {FooterHelper.getCopyrightInfo(\n lastUpdated,\n theme?.theme\n )}\n </>\n )}\n </Typography.BodyXS>\n </div>\n </Layout.Content>\n </footer>\n );\n};\n"],"names":["Footer","_a","children","links","lastUpdated","disclaimerLinks","showDownloadAddon","showResourceAddon","logoSrc","logoAlt","copyrightInfo","onFooterLinkClick","layout","hideLogo","className","otherProps","__rest","isStretch","theme","useContext","ThemeContext","renderFooterLinks","map","link","index","_options","_jsx","Typography","LinkMD","Object","assign","underlineStyle","styles.footerLink","onClick","event","item","preventDefault","handleLinkClick","_jsxs","clsx","styles.baseFooter","component","FooterHelper","getFooterLogoAttribute","src","alt","logoType","otherLogoAttributes","_Fragment","styles.logoSection","styles.logoImage","styles.logoSize","styles.linkSectionWrapper","columnLinks","columnIndex","styles.linkSection","styles.addonSection","DownloadApp","ResourceAddon","Layout","Content","styles.topSection","stretch","Divider","styles.fullWidthDivider","renderTopSection","styles.bottomSection","styles.bottomSectionContent","getDisclaimerLinks","keys","key","LinkXS","styles.disclaimerTextLink","renderDisclaimerLinks","styles.copyrightSection","BodyXS","styles.copyrightText","getCopyrightInfo"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- .b1ozupxm{background:var(--fds-footer-colour-bg);}
1
+ @layer fds{.b1ozupxm{background:var(--fds-footer-colour-bg);}
2
2
  .f1b3ng0m{color:var(--fds-footer-link-colour-text);}.f1b3ng0m:hover{color:var(--fds-footer-link-colour-text-hover);}
3
3
  .f1f7a2pi{width:100%;}
4
4
  .t1nab4kr{padding:var(--fds-spacing-64) 0;}:where(body.fds-breakpoint-lg-max) .t1nab4kr{padding:var(--fds-spacing-32) 0;}:where(body.fds-breakpoint-lg-max) .t1nab4kr [data-id="container"]{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:var(--fds-spacing-32);}
@@ -16,4 +16,4 @@
16
16
  .bakpusz{-webkit-flex:1 1 50%;-ms-flex:1 1 50%;flex:1 1 50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}:where(body.fds-breakpoint-lg-max) .bakpusz{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:var(--fds-spacing-8);}:where(body.fds-breakpoint-lg-max) .bakpusz:not(:last-child){margin-right:0;}
17
17
  .cb1d27e{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}:where(body.fds-breakpoint-lg-max) .cb1d27e{margin-top:var(--fds-spacing-16);-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}
18
18
  .cntgl6w{color:var(--fds-footer-colour-text);}
19
- .d2vgmpj{color:var(--fds-footer-disclaimer-link-colour-text);}.d2vgmpj:not(:last-child){margin-right:var(--fds-spacing-16);}.d2vgmpj:hover{color:var(--fds-footer-disclaimer-link-colour-text-hover);}:where(body.fds-breakpoint-lg-max) .d2vgmpj:not(:last-child){margin-right:0;}
19
+ .d2vgmpj{color:var(--fds-footer-disclaimer-link-colour-text);}.d2vgmpj:not(:last-child){margin-right:var(--fds-spacing-16);}.d2vgmpj:hover{color:var(--fds-footer-disclaimer-link-colour-text-hover);}:where(body.fds-breakpoint-lg-max) .d2vgmpj:not(:last-child){margin-right:0;}}
package/footer/types.d.ts CHANGED
@@ -1,38 +1,89 @@
1
1
  import type { TypographyLinkProps } from "../typography";
2
2
  type DisclaimerTextLinkProps = Omit<TypographyLinkProps, "children">;
3
+ /**
4
+ * Override attributes for the built-in disclaimer links rendered at the bottom of the footer.
5
+ *
6
+ * Each key corresponds to a standard disclaimer link. When a key is omitted, the
7
+ * default URL for the active theme is used. Provided values are merged with the
8
+ * theme defaults, so only the attributes supplied are overridden.
9
+ */
3
10
  export interface DisclaimerLinks {
4
11
  privacy?: DisclaimerTextLinkProps | undefined;
5
12
  termsOfUse?: DisclaimerTextLinkProps | undefined;
6
13
  reportVulnerability?: DisclaimerTextLinkProps | undefined;
7
14
  }
15
+ /**
16
+ * Props for a single link rendered in the footer navigation columns.
17
+ *
18
+ * Extends `TypographyLinkProps`. The type parameter `T` is the shape of any
19
+ * application-specific metadata attached to the link via `data-options`, and
20
+ * is passed back through the `onFooterLinkClick` callback.
21
+ */
8
22
  export interface FooterLinkProps<T = void> extends TypographyLinkProps {
9
23
  /** Any custom attributes you would like to pass to the link */
10
24
  "data-options"?: T | undefined;
11
25
  "data-testid"?: string | undefined;
12
26
  }
27
+ /**
28
+ * Props for the `Footer` component.
29
+ *
30
+ * The type parameter `T` flows through `FooterLinkProps` and is returned via
31
+ * `onFooterLinkClick`, allowing consumers to attach typed metadata to each link.
32
+ */
13
33
  export interface FooterProps<T = void> {
14
34
  /** The footer links. Multi array to present in different columns */
15
35
  links?: FooterLinkProps<T>[][] | undefined;
16
36
  /** Indicates if the download app icons are to be present */
17
37
  showDownloadAddon?: boolean | undefined;
18
- /** Indicates if additional app resources should be displayed */
38
+ /**
39
+ * Indicates if additional app resources should be displayed.
40
+ *
41
+ * When both `showDownloadAddon` and `showResourceAddon` are `true`,
42
+ * `showDownloadAddon` takes priority and the resource add-on is not rendered.
43
+ */
19
44
  showResourceAddon?: boolean | undefined;
20
45
  /** Custom component. This overrides the logo, links and download section */
21
46
  children?: JSX.Element | JSX.Element[] | undefined;
22
- /** Custom disclaimer link attributes */
47
+ /**
48
+ * Override attributes for the built-in disclaimer links.
49
+ *
50
+ * Each supplied key is merged with the theme defaults. Omitted keys fall
51
+ * back to the default URLs for the active theme.
52
+ */
23
53
  disclaimerLinks?: DisclaimerLinks | undefined;
24
54
  /** A custom copyright text */
25
55
  copyrightInfo?: string | undefined;
26
56
  /** Custom logo source */
27
57
  logoSrc?: string | undefined;
28
- /** Last updated date value that is displayed in the bottom of the Footer */
58
+ /** Custom logo alt text */
59
+ logoAlt?: string | undefined;
60
+ /**
61
+ * Date displayed in the copyright line as "Last updated D MMMM YYYY".
62
+ *
63
+ * @remarks Falls back to the current date when omitted.
64
+ */
29
65
  lastUpdated?: Date | undefined;
66
+ /**
67
+ * Called when a footer navigation link is clicked.
68
+ *
69
+ * Receives the full `FooterLinkProps` for the clicked link. If the link
70
+ * defines its own `onClick` handler, that handler takes priority and
71
+ * `onFooterLinkClick` is not called.
72
+ */
30
73
  onFooterLinkClick?: ((link: FooterLinkProps<T>) => void) | undefined;
31
- /** Determines if the content of the footer scales with the max width */
74
+ /**
75
+ * Controls whether the footer content is constrained to a maximum width or
76
+ * stretches to fill the full viewport width.
77
+ *
78
+ * @default "default"
79
+ */
32
80
  layout?: "default" | "stretch" | undefined;
33
81
  id?: string | undefined;
34
82
  "data-testid"?: string | undefined;
35
83
  className?: string | undefined;
84
+ /**
85
+ * Suppresses the logo even when a `logoSrc` or a theme-based logo URL is available.
86
+ */
36
87
  hideLogo?: boolean | undefined;
37
88
  }
38
89
  export {};
@@ -1 +1 @@
1
- .akbk9y1{padding-left:var(--fds-spacing-4);display:inline;}
1
+ @layer fds{.akbk9y1{padding-left:var(--fds-spacing-4);display:inline;}}
@@ -1,2 +1,2 @@
1
- import"./form-label.styles_11r0652.css";const s="l170pjsx",e="lf1tnj",l="eyg2zu6",o="e4aab9k",r="e39ds6s",t="s1n6ixex";export{l as errorIcon,r as errorMessage,o as errorMessageContainer,e as label,s as labelContainer,t as subtitle};
1
+ import"./form-label.styles_1nbe0bm.css";const s="l170pjsx",e="lf1tnj",l="eyg2zu6",o="e4aab9k",t="e39ds6s",b="s1n6ixex";export{l as errorIcon,t as errorMessage,o as errorMessageContainer,e as label,s as labelContainer,b as subtitle};
2
2
  //# sourceMappingURL=form-label.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-label.styles.js","sources":["../../src/form/form-label.styles.ts"],"sourcesContent":["import { css } from \"@linaria/core\";\n\nimport { Colour, Font, Spacing } from \"../theme\";\n\n// =============================================================================\n// STYLING\n// =============================================================================\nexport const labelContainer = css`\n margin-bottom: ${Spacing[\"spacing-8\"]};\n`;\n\nexport const label = css`\n color: ${Colour[\"text-subtle\"]};\n display: inline-block;\n ${Font[\"form-label\"]}\n font-weight: ${Font.Spec[\"weight-semibold\"]};\n`;\n\nexport const errorIcon = css`\n height: 1lh;\n width: 1em;\n flex-shrink: 0;\n color: ${Colour[\"icon-error-strong\"]};\n`;\n\nexport const errorMessageContainer = css`\n ${Font[\"body-sm-semibold\"]}\n display: flex;\n gap: ${Spacing[\"spacing-4\"]};\n margin-top: ${Spacing[\"spacing-8\"]};\n`;\n\nexport const errorMessage = css`\n color: ${Colour[\"text-error\"]};\n ${Font[\"body-sm-semibold\"]}\n margin-bottom: 0;\n outline: none;\n`;\n\nexport const subtitle = css`\n ${Font[\"form-description\"]}\n color: ${Colour[\"text-subtler\"]};\n display: block;\n`;\n"],"names":["labelContainer","label","errorIcon","errorMessageContainer","errorMessage","subtitle"],"mappings":"4DAOO,MAAMA,EAAc,WAIdC,EAAK,SAOLC,EAAS,UAOTC,EAAqB,UAOrBC,EAAY,UAOZC,EAAQ"}
1
+ {"version":3,"file":"form-label.styles.js","sources":["../../src/form/form-label.styles.ts"],"sourcesContent":["import { css } from \"@linaria/core\";\n\nimport { Colour, Font, Spacing } from \"../theme\";\n\n// =============================================================================\n// STYLING\n// =============================================================================\nexport const labelContainer = css`\n margin-bottom: ${Spacing[\"spacing-8\"]};\n display: flex;\n flex-direction: column;\n gap: ${Spacing[\"spacing-4\"]};\n`;\n\nexport const label = css`\n color: ${Colour[\"text-subtle\"]};\n display: inline-block;\n ${Font[\"form-label\"]}\n font-weight: ${Font.Spec[\"weight-semibold\"]};\n`;\n\nexport const errorIcon = css`\n height: 1lh;\n width: 1em;\n flex-shrink: 0;\n color: ${Colour[\"icon-error-strong\"]};\n`;\n\nexport const errorMessageContainer = css`\n ${Font[\"body-sm-semibold\"]}\n display: flex;\n gap: ${Spacing[\"spacing-4\"]};\n margin-top: ${Spacing[\"spacing-8\"]};\n`;\n\nexport const errorMessage = css`\n color: ${Colour[\"text-error\"]};\n ${Font[\"body-sm-semibold\"]}\n margin-bottom: 0;\n outline: none;\n`;\n\nexport const subtitle = css`\n ${Font[\"form-description\"]}\n color: ${Colour[\"text-subtler\"]};\n display: block;\n`;\n"],"names":["labelContainer","label","errorIcon","errorMessageContainer","errorMessage","subtitle"],"mappings":"4DAOO,MAAMA,EAAc,WAOdC,EAAK,SAOLC,EAAS,UAOTC,EAAqB,UAOrBC,EAAY,UAOZC,EAAQ"}
@@ -1,6 +1,6 @@
1
- .l170pjsx{margin-bottom:var(--fds-spacing-8);}
1
+ @layer fds{.l170pjsx{margin-bottom:var(--fds-spacing-8);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:var(--fds-spacing-4);}
2
2
  .lf1tnj{color:var(--fds-colour-text-subtle);display:inline-block;font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-form-label-size);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-form-label-lh);letter-spacing:var(--fds-font-form-label-ls);font-weight:var(--fds-font-weight-semibold);}
3
3
  .eyg2zu6{height:1lh;width:1em;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:var(--fds-colour-icon-error-strong);}
4
4
  .e4aab9k{font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-sm);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-sm);letter-spacing:var(--fds-font-body-ls-sm);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:var(--fds-spacing-4);margin-top:var(--fds-spacing-8);}
5
5
  .e39ds6s{color:var(--fds-colour-text-error);font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-sm);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-sm);letter-spacing:var(--fds-font-body-ls-sm);margin-bottom:0;outline:none;}
6
- .s1n6ixex{font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-form-description-size);font-weight:var(--fds-font-weight-regular);line-height:var(--fds-font-form-description-lh);letter-spacing:var(--fds-font-form-description-ls);color:var(--fds-colour-text-subtler);display:block;}
6
+ .s1n6ixex{font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-form-description-size);font-weight:var(--fds-font-weight-regular);line-height:var(--fds-font-form-description-lh);letter-spacing:var(--fds-font-form-description-ls);color:var(--fds-colour-text-subtler);display:block;}}
@@ -1,3 +1,3 @@
1
- .l1g6v039{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;margin-top:var(--fds-spacing-8);}
1
+ @layer fds{.l1g6v039{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;margin-top:var(--fds-spacing-8);}
2
2
  .exxic43{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;margin-right:var(--fds-spacing-12);gap:var(--fds-spacing-4);}
3
- .ebp2a0d{margin-top:0;}
3
+ .ebp2a0d{margin-top:0;}}
@@ -1 +1 @@
1
- .c10mmo3e{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.c10mmo3e:not(:last-child){margin-bottom:var(--fds-spacing-32);}
1
+ @layer fds{.c10mmo3e{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.c10mmo3e:not(:last-child){margin-bottom:var(--fds-spacing-32);}}
@@ -1,4 +1,4 @@
1
- .t1d7v1ct{--fds-internal-fullscreenImageCarousel-topActionButtons-insetTop:initial;--fds-internal-fullscreenImageCarousel-topActionButtons-insetLeft:initial;--fds-internal-fullscreenImageCarousel-topActionButtons-insetRight:initial;-webkit-order:-1;-ms-flex-order:-1;order:-1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;gap:var(--fds-spacing-16);}.t1d7v1ct[data-has-file-info="true"]{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;background-color:var(--fds-colour-bg-inverse);padding-top:calc(
1
+ @layer fds{.t1d7v1ct{--fds-internal-fullscreenImageCarousel-topActionButtons-insetTop:initial;--fds-internal-fullscreenImageCarousel-topActionButtons-insetLeft:initial;--fds-internal-fullscreenImageCarousel-topActionButtons-insetRight:initial;-webkit-order:-1;-ms-flex-order:-1;order:-1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;gap:var(--fds-spacing-16);}.t1d7v1ct[data-has-file-info="true"]{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;background-color:var(--fds-colour-bg-inverse);padding-top:calc(
2
2
  var(--fds-spacing-24) +
3
3
  var(--fds-internal-fullscreenImageCarousel-topActionButtons-insetTop, 0px)
4
4
  );padding-bottom:var(--fds-spacing-24);padding-left:calc(
@@ -72,4 +72,4 @@
72
72
  );}
73
73
  .f1ysk79e{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}
74
74
  .f1cpwiz6{color:var(--fds-colour-text-inverse);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
75
- .f17g5ble{color:var(--fds-colour-text-inverse);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
75
+ .f17g5ble{color:var(--fds-colour-text-inverse);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}}
@@ -1,3 +1,3 @@
1
- .i1h1mxc8{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}
1
+ @layer fds{.i1h1mxc8{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}
2
2
  .i1k1jgcv{--fds-internal-fullscreenImageCarousel-statefulImage-imageBox-fit:initial;height:100%;width:100%;object-fit:var(--fds-internal-fullscreenImageCarousel-statefulImage-imageBox-fit, contain);}
3
- .d1w2ubkx{width:100%;height:100%;}
3
+ .d1w2ubkx{width:100%;height:100%;}}
@@ -1,8 +1,8 @@
1
- .l1qwb62w{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:var(--fds-spacing-16);-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;}
1
+ @layer fds{.l1qwb62w{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:var(--fds-spacing-16);-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;}
2
2
  .s1f028jb{margin:0 0.5rem;}
3
3
  .hu29dsu{width:100%;height:4rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;padding:0 0.4375rem;}
4
4
  .b1koddre{-webkit-flex:1;-ms-flex:1;flex:1;border-radius:var(--fds-radius-sm) var(--fds-radius-sm) 0 0;border:0.5px solid transparent;-webkit-background-clip:content-box;background-clip:content-box;background-color:var(--fds-colour-bg-strongest);}
5
5
  .b1im7sez{background-color:var(--fds-colour-bg-disabled);}
6
6
  .b8ooyxk{background-color:var(--fds-colour-bg-selected-stronger);}
7
7
  .b9tfims{background-color:var(--fds-colour-bg-selected-stronger-disabled);}
8
- .s1q1626e{margin-top:-0.3125rem;}
8
+ .s1q1626e{margin-top:-0.3125rem;}}
@@ -1,5 +1,5 @@
1
- .mqb1plh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:0.5rem;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:1.5rem 1rem;background-color:var(--fds-colour-bg);border:var(--fds-border-width-010) var(--fds-border-style-solid) transparent;border-radius:var(--fds-radius-md);cursor:pointer;max-width:13rem;-webkit-transition:all var(--fds-motion-duration-250) var(--fds-motion-timing-ease-default);transition:all var(--fds-motion-duration-250) var(--fds-motion-timing-ease-default);font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-baseline);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-baseline);letter-spacing:var(--fds-font-body-ls-baseline);color:var(--fds-colour-text);overflow-wrap:anywhere;}.mqb1plh img{min-width:3.5rem;width:3.5rem;height:3.5rem;object-fit:contain;}.mqb1plh:hover{border-color:var(--fds-colour-border-hover-strong);}:where(body.fds-breakpoint-sm-max) .mqb1plh{padding:0.5rem 0.25rem;gap:0.25rem;font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-md);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-md);letter-spacing:var(--fds-font-body-ls-md);}
1
+ @layer fds{.mqb1plh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:0.5rem;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:1.5rem 1rem;background-color:var(--fds-colour-bg);border:var(--fds-border-width-010) var(--fds-border-style-solid) transparent;border-radius:var(--fds-radius-md);cursor:pointer;max-width:13rem;-webkit-transition:all var(--fds-motion-duration-250) var(--fds-motion-timing-ease-default);transition:all var(--fds-motion-duration-250) var(--fds-motion-timing-ease-default);font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-baseline);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-baseline);letter-spacing:var(--fds-font-body-ls-baseline);color:var(--fds-colour-text);overflow-wrap:anywhere;}.mqb1plh img{min-width:3.5rem;width:3.5rem;height:3.5rem;object-fit:contain;}.mqb1plh:hover{border-color:var(--fds-colour-border-hover-strong);}:where(body.fds-breakpoint-sm-max) .mqb1plh{padding:0.5rem 0.25rem;gap:0.25rem;font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-md);font-weight:var(--fds-font-weight-semibold);line-height:var(--fds-font-body-lh-md);letter-spacing:var(--fds-font-body-ls-md);}
2
2
  .mpjl8bn{color:var(--fds-colour-text-primary);}
3
3
  .mroo32y{background:var(--fds-colour-bg-selected);border-color:var(--fds-colour-border-selected);}.mroo32y:hover{background:var(--fds-colour-bg-selected-hover);border-color:var(--fds-colour-border-selected-hover);}
4
4
  .mz6wr40{background:var(--fds-colour-bg);border-color:var(--fds-colour-border-error);}.mz6wr40:hover{background:var(--fds-colour-bg);border-color:var(--fds-colour-border-error);}
5
- .m1hsk0n5{color:var(--fds-colour-text-disabled);cursor:not-allowed;}.m1hsk0n5 img{-webkit-filter:grayscale(100%);filter:grayscale(100%);}.m1hsk0n5:hover{border-color:transparent;}
5
+ .m1hsk0n5{color:var(--fds-colour-text-disabled);cursor:not-allowed;}.m1hsk0n5 img{-webkit-filter:grayscale(100%);filter:grayscale(100%);}.m1hsk0n5:hover{border-color:transparent;}}
package/index.d.ts CHANGED
@@ -19,7 +19,6 @@ export * from "./divider";
19
19
  export * from "./drawer";
20
20
  export * from "./e-signature";
21
21
  export * from "./error-display";
22
- export * from "./example";
23
22
  export * from "./feedback-rating";
24
23
  export * from "./file-download";
25
24
  export * from "./file-upload";