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

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 (954) 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.d.ts +7 -0
  29. package/breadcrumb/breadcrumb.js.map +1 -1
  30. package/breadcrumb/breadcrumb.styles_1nl4aua.css +2 -2
  31. package/breadcrumb/types.d.ts +31 -0
  32. package/button/button.d.ts +1 -0
  33. package/button/button.js.map +1 -1
  34. package/button/button.styles_1pxy0co.css +2 -2
  35. package/button/types.d.ts +42 -9
  36. package/calendar/calendar.d.ts +3 -0
  37. package/calendar/calendar.js.map +1 -1
  38. package/calendar/calendar.styles_11ho5x8.css +2 -2
  39. package/calendar/types.d.ts +43 -7
  40. package/card/card.d.ts +1 -0
  41. package/card/card.js.map +1 -1
  42. package/card/card.styles_1gh9gs3.css +2 -2
  43. package/card/types.d.ts +1 -0
  44. package/checkbox/checkbox.d.ts +3 -0
  45. package/checkbox/checkbox.js.map +1 -1
  46. package/checkbox/checkbox.styles_gm5bu1.css +2 -2
  47. package/checkbox/types.d.ts +19 -3
  48. package/cjs/accordion/accordion-item.styles_1j4eb32.css +2 -2
  49. package/cjs/accordion/accordion.js.map +1 -1
  50. package/cjs/accordion/accordion.styles_bzrfrs.css +2 -2
  51. package/cjs/alert/alert.js.map +1 -1
  52. package/cjs/alert/alert.styles_patwo2.css +2 -2
  53. package/cjs/animations/loading-dots/loading-dots.styles_1rgrrmw.css +2 -2
  54. package/cjs/animations/loading-dots/lottie-animation.styles_1m15v69.css +1 -1
  55. package/cjs/animations/loading-dots-spinner/loading-dots-spinner.styles_1hcqkhs.css +2 -2
  56. package/cjs/animations/loading-dots-spinner/lottie-animation.styles_13d1unb.css +1 -1
  57. package/cjs/animations/loading-spinner/loading-spinner.styles_n6xoft.css +2 -2
  58. package/cjs/animations/loading-spinner/lottie-animation.styles_bnn4qt.css +1 -1
  59. package/cjs/avatar/avatar.js.map +1 -1
  60. package/cjs/avatar/avatar.styles_16efw4.css +2 -2
  61. package/cjs/badge/badge.js.map +1 -1
  62. package/cjs/badge/badge.styles_1c3c6wj.css +2 -2
  63. package/cjs/box-container/box-container.js.map +1 -1
  64. package/cjs/box-container/box-container.styles_5t2j9k.css +2 -2
  65. package/cjs/breadcrumb/breadcrumb.js.map +1 -1
  66. package/cjs/breadcrumb/breadcrumb.styles_1nl4aua.css +2 -2
  67. package/cjs/button/button.js.map +1 -1
  68. package/cjs/button/button.styles_1pxy0co.css +2 -2
  69. package/cjs/calendar/calendar.js.map +1 -1
  70. package/cjs/calendar/calendar.styles_11ho5x8.css +2 -2
  71. package/cjs/card/card.js.map +1 -1
  72. package/cjs/card/card.styles_1gh9gs3.css +2 -2
  73. package/cjs/checkbox/checkbox.js.map +1 -1
  74. package/cjs/checkbox/checkbox.styles_gm5bu1.css +2 -2
  75. package/cjs/countdown-timer/countdown-timer.js.map +1 -1
  76. package/cjs/countdown-timer/countdown-timer.styles_ipn1b0.css +2 -2
  77. package/cjs/dashed-border/dashed-border.js.map +1 -1
  78. package/cjs/dashed-border/dashed-border.styles_zszoox.css +2 -2
  79. package/cjs/data-table/data-table.js +1 -1
  80. package/cjs/data-table/data-table.js.map +1 -1
  81. package/cjs/data-table/data-table.styles.js +1 -1
  82. package/cjs/data-table/data-table.styles.js.map +1 -1
  83. package/cjs/data-table/data-table.styles_rxganh.css +27 -0
  84. package/cjs/date-input/date-input.js.map +1 -1
  85. package/cjs/date-input/date-input.styles_1r5kcc7.css +1 -1
  86. package/cjs/date-navigator/date-navigator.js.map +1 -1
  87. package/cjs/date-navigator/date-navigator.styles_wokh56.css +2 -2
  88. package/cjs/date-range-input/date-range-input.js.map +1 -1
  89. package/cjs/date-range-input/date-range-input.styles_1s7ojnj.css +2 -2
  90. package/cjs/divider/divider.js.map +1 -1
  91. package/cjs/divider/divider.styles_1xpzh8p.css +2 -2
  92. package/cjs/drawer/drawer.js.map +1 -1
  93. package/cjs/drawer/drawer.styles_94hx3y.css +2 -2
  94. package/cjs/e-signature/e-signature-canvas.js +1 -1
  95. package/cjs/e-signature/e-signature-canvas.js.map +1 -1
  96. package/cjs/e-signature/e-signature.js.map +1 -1
  97. package/cjs/e-signature/e-signature.styles_lukd9f.css +2 -2
  98. package/cjs/error-display/error-display.js.map +1 -1
  99. package/cjs/error-display/error-display.styles_d3tql1.css +2 -2
  100. package/cjs/external/dompurify/dist/purify.es.js +3 -3
  101. package/cjs/external/dompurify/dist/purify.es.js.map +1 -1
  102. package/cjs/external/lodash/_setCacheHas.js.map +1 -1
  103. package/cjs/external/lodash/lodash.js +1 -1
  104. package/cjs/external/lodash/lodash.js.map +1 -1
  105. package/cjs/feedback-rating/feedback-rating-stars-container.styles_dmi8z9.css +2 -2
  106. package/cjs/feedback-rating/feedback-rating.js.map +1 -1
  107. package/cjs/feedback-rating/feedback-rating.styles_1kdklb6.css +2 -2
  108. package/cjs/file-download/file-download.js.map +1 -1
  109. package/cjs/file-download/file-download.styles_iggk8q.css +2 -2
  110. package/cjs/file-download/file-list-card/file-list-card.styles.js +1 -1
  111. package/cjs/file-download/file-list-card/file-list-card.styles.js.map +1 -1
  112. package/{file-download/file-list-card/file-list-card.styles_oom8ii.css → cjs/file-download/file-list-card/file-list-card.styles_18j2gut.css} +3 -3
  113. package/cjs/file-upload/dropzone.styles_1pllsau.css +2 -2
  114. package/cjs/file-upload/file-item-edit.js +1 -1
  115. package/cjs/file-upload/file-item-edit.js.map +1 -1
  116. package/cjs/file-upload/file-item-edit.styles.js +1 -1
  117. package/cjs/file-upload/file-item-edit.styles.js.map +1 -1
  118. package/cjs/file-upload/{file-item-edit.styles_1qbpbxj.css → file-item-edit.styles_19bvztn.css} +6 -5
  119. package/cjs/file-upload/file-list/file-list.js +1 -1
  120. package/cjs/file-upload/file-list/file-list.js.map +1 -1
  121. package/cjs/file-upload/file-list/file-list.styles.js +1 -1
  122. package/cjs/file-upload/file-list/file-list.styles.js.map +1 -1
  123. package/cjs/file-upload/file-list/file-list.styles_1w7so98.css +3 -0
  124. package/cjs/file-upload/file-list-item/file-list-item-thumbnail.styles_1y4si19.css +2 -2
  125. package/cjs/file-upload/file-list-item/file-list-item.js +1 -1
  126. package/cjs/file-upload/file-list-item/file-list-item.js.map +1 -1
  127. package/cjs/file-upload/file-list-item/file-list-item.styles.js +1 -1
  128. package/cjs/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
  129. package/cjs/file-upload/file-list-item/file-list-item.styles_o8000f.css +17 -0
  130. package/cjs/file-upload/file-upload.js +1 -1
  131. package/cjs/file-upload/file-upload.js.map +1 -1
  132. package/cjs/file-upload/file-upload.styles_9ffwcd.css +2 -2
  133. package/cjs/filter/addons/filter-item-checkbox.styles_7degw7.css +2 -2
  134. package/cjs/filter/filter-item-page.styles_17ewfrz.css +1 -1
  135. package/cjs/filter/filter-item.js.map +1 -1
  136. package/cjs/filter/filter-item.styles_cphjnj.css +2 -2
  137. package/cjs/filter/filter-modal.styles_qw3xlg.css +2 -2
  138. package/cjs/filter/filter-sidebar.styles_1otwpjl.css +2 -2
  139. package/cjs/filter/filter.js.map +1 -1
  140. package/cjs/filter/filter.styles_1ykijwm.css +2 -2
  141. package/cjs/footer/footer-download-app.styles_1v1j2us.css +2 -2
  142. package/cjs/footer/footer-resource-addon.styles_1jepb1d.css +2 -2
  143. package/cjs/footer/footer.js +1 -1
  144. package/cjs/footer/footer.js.map +1 -1
  145. package/cjs/footer/footer.styles_1msorhc.css +2 -2
  146. package/cjs/form/form-label-addon.js +1 -1
  147. package/cjs/form/form-label-addon.js.map +1 -1
  148. package/cjs/form/form-label-addon.styles_b00z8p.css +1 -1
  149. package/cjs/form/form-label.styles.js +1 -1
  150. package/cjs/form/form-label.styles.js.map +1 -1
  151. package/cjs/form/{form-label.styles_11r0652.css → form-label.styles_1nbe0bm.css} +2 -2
  152. package/cjs/form/form-textarea.styles_3p9qoy.css +2 -2
  153. package/cjs/form/form-wrapper.styles_199rslu.css +1 -1
  154. package/cjs/form/index.js +1 -1
  155. package/cjs/form/index.js.map +1 -1
  156. package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
  157. package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
  158. package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.styles_vc6y5c.css +2 -2
  159. package/cjs/fullscreen-image-carousel/stateful-image.styles_1xe8ypm.css +2 -2
  160. package/cjs/histogram-slider/histogram-slider.js.map +1 -1
  161. package/cjs/histogram-slider/histogram-slider.styles_wvd4w.css +2 -2
  162. package/cjs/image-button/image-button.js.map +1 -1
  163. package/cjs/image-button/image-button.styles_6n1qsr.css +2 -2
  164. package/cjs/index.js +1 -1
  165. package/cjs/input/input.js.map +1 -1
  166. package/cjs/input/input.styles_1cblor0.css +2 -2
  167. package/cjs/input-group/input-group-list-addon.styles_17iuqtw.css +2 -2
  168. package/cjs/input-group/input-group.js.map +1 -1
  169. package/cjs/input-group/input-group.styles_bqye6f.css +2 -2
  170. package/cjs/input-multi-select/input-multi-select.js.map +1 -1
  171. package/cjs/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
  172. package/cjs/input-nested-select/input-nested-select.js.map +1 -1
  173. package/cjs/input-range-select/input-range-select.js.map +1 -1
  174. package/cjs/input-range-select/input-range-select.styles_adbrbm.css +2 -2
  175. package/cjs/input-range-slider/input-range-slider.js.map +1 -1
  176. package/cjs/input-range-slider/input-range-slider.styles_aljl2v.css +2 -2
  177. package/cjs/input-select/input-select.js.map +1 -1
  178. package/cjs/input-slider/input-slider.js.map +1 -1
  179. package/cjs/input-textarea/textarea-counter.styles_1n3wsnv.css +1 -1
  180. package/cjs/input-textarea/textarea.js.map +1 -1
  181. package/cjs/input-textarea/textarea.styles_22z4n3.css +2 -2
  182. package/cjs/language-switcher/dropdown-panel.styles_1qsjf8d.css +2 -2
  183. package/cjs/language-switcher/dropdown-variant.styles_1vrdfky.css +2 -2
  184. package/cjs/language-switcher/language-switcher.js.map +1 -1
  185. package/cjs/language-switcher/link-container-variant.styles_1iw6zux.css +2 -2
  186. package/cjs/layout/col-div.styles_16o6mwx.css +1 -1
  187. package/cjs/layout/container.styles_v70ec6.css +2 -2
  188. package/cjs/layout/index.js +1 -1
  189. package/cjs/layout/index.js.map +1 -1
  190. package/cjs/layout/section.styles_hstcaf.css +1 -1
  191. package/cjs/link-list/link-list.js.map +1 -1
  192. package/cjs/link-list/link-list.styles_m57vks.css +2 -2
  193. package/cjs/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
  194. package/cjs/local-nav/local-nav-dropdown/local-nav-dropdown.styles_uhd4xl.css +2 -2
  195. package/cjs/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
  196. package/cjs/local-nav/local-nav-menu/local-nav-menu.styles_pq19dh.css +2 -2
  197. package/cjs/markup/markup.js.map +1 -1
  198. package/cjs/markup/markup.style_1iu40x9.css +2 -2
  199. package/cjs/masked-input/masked-input.js.map +1 -1
  200. package/cjs/masked-input/masked-input.styles_1cm388a.css +2 -2
  201. package/cjs/masthead/masthead.js.map +1 -1
  202. package/cjs/masthead/masthead.styles_1huzon9.css +2 -2
  203. package/cjs/menu/menu-content.styles_p7ijll.css +2 -2
  204. package/cjs/menu/menu-item.styles_liyed8.css +2 -2
  205. package/cjs/menu/menu-link.styles_hfxoez.css +2 -2
  206. package/cjs/menu/menu-section.styles_g7my4d.css +2 -2
  207. package/cjs/menu/menu.js +1 -1
  208. package/cjs/menu/menu.js.map +1 -1
  209. package/cjs/modal/index.js.map +1 -1
  210. package/cjs/modal/modal-box.js +1 -1
  211. package/cjs/modal/modal-box.js.map +1 -1
  212. package/cjs/modal/modal-box.styles_y52cts.css +2 -2
  213. package/cjs/modal/modal.styles_1lbblx6.css +2 -2
  214. package/cjs/modal-v2/index.js +1 -1
  215. package/cjs/modal-v2/index.js.map +1 -1
  216. package/cjs/modal-v2/modal-v2.js +1 -1
  217. package/cjs/modal-v2/modal-v2.js.map +1 -1
  218. package/cjs/modal-v2/modal-v2.styles_a8gv5i.css +2 -2
  219. package/cjs/modal-v2/slots/card.js +1 -1
  220. package/cjs/modal-v2/slots/card.js.map +1 -1
  221. package/cjs/modal-v2/slots/slot-styles_13sd376.css +2 -2
  222. package/cjs/navbar/brand.styles_zcgddp.css +1 -1
  223. package/cjs/navbar/drawer.js +1 -1
  224. package/cjs/navbar/drawer.js.map +1 -1
  225. package/cjs/navbar/drawer.styles_7hnxp5.css +2 -2
  226. package/cjs/navbar/menu.styles_gdpqc.css +2 -2
  227. package/cjs/navbar/navbar-action-buttons.styles_1vpm0nk.css +2 -2
  228. package/cjs/navbar/navbar-items.styles_1i3ltot.css +2 -2
  229. package/cjs/navbar/navbar.js +1 -1
  230. package/cjs/navbar/navbar.js.map +1 -1
  231. package/cjs/navbar/navbar.styles_koy0c7.css +2 -2
  232. package/cjs/notification-banner/notification-banner-hoc.js.map +1 -1
  233. package/cjs/notification-banner/notification-banner.js.map +1 -1
  234. package/cjs/notification-banner/notification-banner.styles_uxlysy.css +2 -2
  235. package/cjs/otp-input/otp-input.js.map +1 -1
  236. package/cjs/otp-input/otp-input.styles_5sbutl.css +2 -2
  237. package/cjs/otp-verification/contact-input-section.styles_odrjvt.css +2 -2
  238. package/cjs/otp-verification/otp-verification.js.map +1 -1
  239. package/cjs/otp-verification/otp-verification.styles_dg9bm8.css +1 -1
  240. package/cjs/otp-verification/thumbnail/thumbnail.styles_shqylh.css +2 -2
  241. package/cjs/otp-verification/verification-section.styles_x8jj.css +2 -2
  242. package/cjs/overlay/overlay.js +1 -1
  243. package/cjs/overlay/overlay.js.map +1 -1
  244. package/cjs/overlay/overlay.styles_12wym18.css +2 -2
  245. package/cjs/pagination/pagination.js.map +1 -1
  246. package/cjs/pagination/pagination.styles_6bcgva.css +2 -2
  247. package/cjs/phone-number-input/phone-number-input.js.map +1 -1
  248. package/cjs/pill/pill.js.map +1 -1
  249. package/cjs/pill/pill.styles_xwrniu.css +2 -2
  250. package/cjs/popover/popover-inline/popover-inline.js.map +1 -1
  251. package/cjs/popover/popover-inline/popover-inline.styles_bkopnt.css +2 -2
  252. package/cjs/popover/popover-trigger.js.map +1 -1
  253. package/cjs/popover/popover-trigger.styles_8zokig.css +1 -1
  254. package/cjs/popover/popover.js +1 -1
  255. package/cjs/popover/popover.js.map +1 -1
  256. package/cjs/popover/popover.styles_ujnf0h.css +2 -2
  257. package/cjs/predictive-text-input/predictive-text-input.js.map +1 -1
  258. package/cjs/progress-indicator/progress-indicator.js.map +1 -1
  259. package/cjs/progress-indicator/progress-indicator.styles_1c038s4.css +2 -2
  260. package/cjs/radio-button/radio-button.js.map +1 -1
  261. package/cjs/radio-button/radio-button.styles_1c4v6v.css +2 -2
  262. package/cjs/schedule/schedule-day-view/schedule-day-view.styles_8ti149.css +2 -2
  263. package/cjs/schedule/schedule-header/schedule-header.js +1 -1
  264. package/cjs/schedule/schedule-header/schedule-header.js.map +1 -1
  265. package/cjs/schedule/schedule-header/schedule-header.styles_1n2u5vj.css +2 -2
  266. package/cjs/schedule/schedule-week-view/schedule-week-view.styles_x7x50m.css +2 -2
  267. package/cjs/schedule/schedule-week-view/time-cell.styles_1sorjz8.css +2 -2
  268. package/cjs/schedule/schedule.js.map +1 -1
  269. package/cjs/schedule/schedule.styles_fdy5a1.css +2 -2
  270. package/cjs/schedule/shared/with-optional-popover.js +1 -1
  271. package/cjs/schedule/shared/with-optional-popover.js.map +1 -1
  272. package/cjs/schedule/shared/with-optional-popover.styles_7mv3p2.css +1 -1
  273. package/cjs/schedule/time-indicator/time-indicator.styles_1eaxyes.css +2 -2
  274. package/cjs/select-histogram/select-histogram.js.map +1 -1
  275. package/cjs/select-histogram/select-histogram.styles_n260dy.css +2 -2
  276. package/cjs/shared/accessibility/index_13g9vp.css +1 -1
  277. package/cjs/shared/clickable-icon/clickable-icon.styles_1v2imml.css +2 -2
  278. package/cjs/shared/component-loading-spinner/component-loading-spinner.styles_15eq02i.css +2 -2
  279. package/cjs/shared/dropdown-list/dropdown-label.styles_mloii0.css +2 -2
  280. package/cjs/shared/dropdown-list/dropdown-list.styles_konwm.css +2 -2
  281. package/cjs/shared/dropdown-list/dropdown-search.styles_1hc1gkh.css +2 -2
  282. package/cjs/shared/dropdown-list/expandable-element.styles_rkkvqr.css +2 -2
  283. package/cjs/shared/dropdown-list/nested-dropdown-list.styles_wdhxoe.css +2 -2
  284. package/cjs/shared/dropdown-wrapper/dropdown-wrapper.styles_15hwwoj.css +2 -2
  285. package/cjs/shared/fade-wrapper/fade-wrapper.styles_16iug7l.css +2 -2
  286. package/cjs/shared/image-placeholder/image-placeholder.styles_44nwil.css +1 -1
  287. package/cjs/shared/input-wrapper/input-wrapper.styles_je6maw.css +2 -2
  288. package/cjs/shared/internal-calendar/calendar-dropdown.styles_wybjai.css +1 -1
  289. package/cjs/shared/internal-calendar/calendar-manager.js +1 -1
  290. package/cjs/shared/internal-calendar/calendar-manager.js.map +1 -1
  291. package/cjs/shared/internal-calendar/calendar-manager.styles.js +1 -1
  292. package/cjs/shared/internal-calendar/calendar-manager.styles.js.map +1 -1
  293. package/cjs/shared/internal-calendar/{calendar-manager.styles_1iuq5zw.css → calendar-manager.styles_1njwkj2.css} +3 -3
  294. package/cjs/shared/internal-calendar/day-cell/day-cell.styles_1t5oqc1.css +2 -2
  295. package/cjs/shared/internal-calendar/internal-calendar-month.styles_14oh57f.css +2 -2
  296. package/cjs/shared/internal-calendar/internal-calendar-year.styles_therlc.css +2 -2
  297. package/cjs/shared/internal-calendar/internal-calendar.styles_gnc3eq.css +1 -1
  298. package/cjs/shared/internal-calendar/standard/standard-calendar-day-view.styles_1bw26au.css +2 -2
  299. package/cjs/shared/progress-bar/progress-bar.styles_125ri7a.css +1 -1
  300. package/cjs/shared/range-input-inner-container/range-input-inner-container.styles_1v61utg.css +2 -2
  301. package/cjs/shared/standalone-date-input/standalone-date-input.styles_157qo89.css +2 -2
  302. package/cjs/shared/time-slot/time-slot.styles_18s0to7.css +2 -2
  303. package/cjs/shared/timepicker-dropdown/timepicker-dropdown.styles_119l6k6.css +2 -2
  304. package/cjs/sidenav/sidenav-drawer-item.styles_1ljnyx2.css +2 -2
  305. package/cjs/sidenav/sidenav-drawer-subitem.styles_2y58kf.css +1 -1
  306. package/cjs/sidenav/sidenav-group.styles_1x604sw.css +2 -2
  307. package/cjs/sidenav/sidenav-item.styles_lqw3kh.css +2 -2
  308. package/cjs/sidenav/sidenav.js.map +1 -1
  309. package/cjs/sidenav/sidenav.styles_1vxezie.css +2 -2
  310. package/cjs/singpass-button/singpass-button.js.map +1 -1
  311. package/cjs/singpass-button/singpass-button.styles_1miyex3.css +2 -2
  312. package/cjs/smart-app-banner/smart-app-banner.js.map +1 -1
  313. package/cjs/smart-app-banner/smart-app-banner.styles_15u6yv4.css +2 -2
  314. package/cjs/tab/tab-link-chain.styles_49got4.css +2 -2
  315. package/cjs/tab/tab.js.map +1 -1
  316. package/cjs/tab/tab.styles_1najffw.css +1 -1
  317. package/cjs/table/table.js.map +1 -1
  318. package/cjs/table/table.styles.js +1 -1
  319. package/cjs/table/table.styles.js.map +1 -1
  320. package/cjs/table/{table.styles_1af5ipv.css → table.styles_1vjx31g.css} +2 -2
  321. package/cjs/tag/tag.js.map +1 -1
  322. package/cjs/tag/tag.style_d98c53.css +2 -2
  323. package/cjs/text-list/index.js.map +1 -1
  324. package/cjs/text-list/text-list.styles_w3fvyt.css +2 -2
  325. package/cjs/theme/theme-provider/breakpoint.js +1 -1
  326. package/cjs/theme/theme-provider/breakpoint.js.map +1 -1
  327. package/cjs/theme/theme-provider/hooks.js.map +1 -1
  328. package/cjs/theme/theme-provider/index.js.map +1 -1
  329. package/cjs/theme/tokens/border.js.map +1 -1
  330. package/cjs/theme/tokens/breakpoint.js.map +1 -1
  331. package/cjs/theme/tokens/colour.js.map +1 -1
  332. package/cjs/theme/tokens/component.js.map +1 -1
  333. package/cjs/theme/tokens/font.js.map +1 -1
  334. package/cjs/theme/tokens/media-query.js.map +1 -1
  335. package/cjs/theme/tokens/motion.js.map +1 -1
  336. package/cjs/theme/tokens/radius.js.map +1 -1
  337. package/cjs/theme/tokens/shadow.js.map +1 -1
  338. package/cjs/theme/tokens/spacing.js.map +1 -1
  339. package/cjs/theme/types.js +1 -1
  340. package/cjs/theme/types.js.map +1 -1
  341. package/cjs/theme/utils/css-variable.js.map +1 -1
  342. package/cjs/theme/utils/font.js.map +1 -1
  343. package/cjs/theme/utils/use-apply-styles.js +1 -1
  344. package/cjs/theme/utils/use-apply-styles.js.map +1 -1
  345. package/cjs/theme/utils/use-design-token-override.js +2 -0
  346. package/cjs/theme/utils/use-design-token-override.js.map +1 -0
  347. package/cjs/theme/utils/use-design-token.js.map +1 -1
  348. package/cjs/theme/utils/use-media-query.js.map +1 -1
  349. package/cjs/time-range-picker/combobox-picker/combobox-picker.js +1 -1
  350. package/cjs/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
  351. package/cjs/time-range-picker/combobox-picker/combobox-picker.styles_7i9vso.css +1 -1
  352. package/cjs/time-range-picker/common.styles.js +1 -1
  353. package/cjs/time-range-picker/common.styles.js.map +1 -1
  354. package/cjs/time-range-picker/{common.styles_1qwp4xa.css → common.styles_cnkkax.css} +2 -1
  355. package/cjs/time-range-picker/dial-picker/dial-picker.js +1 -1
  356. package/cjs/time-range-picker/dial-picker/dial-picker.js.map +1 -1
  357. package/cjs/time-range-picker/time-range-picker.js.map +1 -1
  358. package/cjs/time-slot-bar/time-slot-bar.js.map +1 -1
  359. package/cjs/time-slot-bar/time-slot-bar.styles_wigbyd.css +2 -2
  360. package/cjs/time-slot-bar-week/time-slot-bar-week-days.styles_evdvs9.css +2 -2
  361. package/cjs/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
  362. package/cjs/time-slot-bar-week/time-slot-bar-week.styles_11ybf42.css +1 -1
  363. package/cjs/time-slot-week-view/time-slot-week-days.styles_1h21vyw.css +2 -2
  364. package/cjs/time-slot-week-view/time-slot-week-view.js.map +1 -1
  365. package/cjs/time-slot-week-view/time-slot-week-view.styles_gqgsw2.css +1 -1
  366. package/cjs/timeline/timeline.js.map +1 -1
  367. package/cjs/timeline/timeline.styles_1jxzik4.css +2 -2
  368. package/cjs/timepicker/timepicker.js +1 -1
  369. package/cjs/timepicker/timepicker.js.map +1 -1
  370. package/cjs/timepicker/timepicker.styles.js +1 -1
  371. package/cjs/timepicker/timepicker.styles.js.map +1 -1
  372. package/cjs/timepicker/timepicker.styles_lyizvq.css +2 -0
  373. package/cjs/timetable/timetable-header/timetable-header.styles_11gl1h4.css +2 -2
  374. package/cjs/timetable/timetable-row/row-bar.styles_1x0vrsz.css +1 -1
  375. package/cjs/timetable/timetable-row/row-cell.styles_y1dl5j.css +2 -2
  376. package/cjs/timetable/timetable-row/with-optional-popover.js +1 -1
  377. package/cjs/timetable/timetable-row/with-optional-popover.js.map +1 -1
  378. package/cjs/timetable/timetable.js +1 -1
  379. package/cjs/timetable/timetable.js.map +1 -1
  380. package/cjs/timetable/timetable.styles_7rp8kz.css +2 -2
  381. package/cjs/toast/toast.js.map +1 -1
  382. package/cjs/toast/toast.styles_1e0l60w.css +2 -2
  383. package/cjs/toggle/toggle-icon.styles_ba71y.css +2 -2
  384. package/cjs/toggle/toggle.js.map +1 -1
  385. package/cjs/toggle/toggle.styles_1t5qrye.css +2 -2
  386. package/cjs/typography/index.js.map +1 -1
  387. package/cjs/typography/typography-text.styles_1734x2k.css +2 -2
  388. package/cjs/typography/typography.styles.js +1 -1
  389. package/cjs/typography/typography.styles.js.map +1 -1
  390. package/cjs/typography/{typography.styles_1155j4c.css → typography.styles_1wd82dn.css} +2 -2
  391. package/cjs/uneditable-section/index.js.map +1 -1
  392. package/cjs/uneditable-section/section-item.styles_mwx8ht.css +2 -2
  393. package/cjs/uneditable-section/uneditable-section.js +1 -1
  394. package/cjs/uneditable-section/uneditable-section.js.map +1 -1
  395. package/cjs/uneditable-section/uneditable-section.styles_aj9zun.css +2 -2
  396. package/cjs/unit-number/unit-number-input.js.map +1 -1
  397. package/cjs/unit-number/unit-number-input.styles_8yizj.css +2 -2
  398. package/cjs/util/merge-refs.js.map +1 -1
  399. package/cjs/util/use-throttle.js +2 -0
  400. package/cjs/util/use-throttle.js.map +1 -0
  401. package/countdown-timer/countdown-timer.d.ts +6 -0
  402. package/countdown-timer/countdown-timer.js.map +1 -1
  403. package/countdown-timer/countdown-timer.styles_ipn1b0.css +2 -2
  404. package/countdown-timer/types.d.ts +55 -11
  405. package/dashed-border/dashed-border.d.ts +6 -0
  406. package/dashed-border/dashed-border.js.map +1 -1
  407. package/dashed-border/dashed-border.styles_zszoox.css +2 -2
  408. package/dashed-border/types.d.ts +27 -5
  409. package/data-table/data-table.d.ts +8 -0
  410. package/data-table/data-table.js +1 -1
  411. package/data-table/data-table.js.map +1 -1
  412. package/data-table/data-table.styles.d.ts +2 -1
  413. package/data-table/data-table.styles.js +1 -1
  414. package/data-table/data-table.styles.js.map +1 -1
  415. package/data-table/data-table.styles_rxganh.css +27 -0
  416. package/data-table/types.d.ts +58 -12
  417. package/date-input/date-input.d.ts +5 -0
  418. package/date-input/date-input.js.map +1 -1
  419. package/date-input/date-input.styles_1r5kcc7.css +1 -1
  420. package/date-input/types.d.ts +32 -16
  421. package/date-navigator/date-navigator.d.ts +6 -0
  422. package/date-navigator/date-navigator.js.map +1 -1
  423. package/date-navigator/date-navigator.styles_wokh56.css +2 -2
  424. package/date-navigator/types.d.ts +44 -7
  425. package/date-range-input/date-range-input.d.ts +4 -0
  426. package/date-range-input/date-range-input.js.map +1 -1
  427. package/date-range-input/date-range-input.styles_1s7ojnj.css +2 -2
  428. package/date-range-input/types.d.ts +50 -14
  429. package/divider/divider.d.ts +6 -0
  430. package/divider/divider.js.map +1 -1
  431. package/divider/divider.styles_1xpzh8p.css +2 -2
  432. package/divider/types.d.ts +27 -4
  433. package/drawer/drawer.d.ts +7 -0
  434. package/drawer/drawer.js.map +1 -1
  435. package/drawer/drawer.styles_94hx3y.css +2 -2
  436. package/drawer/types.d.ts +16 -4
  437. package/e-signature/e-signature-canvas.js +1 -1
  438. package/e-signature/e-signature-canvas.js.map +1 -1
  439. package/e-signature/e-signature.d.ts +5 -0
  440. package/e-signature/e-signature.js.map +1 -1
  441. package/e-signature/e-signature.styles_lukd9f.css +2 -2
  442. package/e-signature/types.d.ts +23 -1
  443. package/error-display/error-display.d.ts +7 -0
  444. package/error-display/error-display.js.map +1 -1
  445. package/error-display/error-display.styles_d3tql1.css +2 -2
  446. package/error-display/types.d.ts +36 -6
  447. package/external/dompurify/dist/purify.es.js +2 -2
  448. package/external/dompurify/dist/purify.es.js.map +1 -1
  449. package/external/lodash/_setCacheHas.js.map +1 -1
  450. package/external/lodash/lodash.js +1 -1
  451. package/external/lodash/lodash.js.map +1 -1
  452. package/feedback-rating/feedback-rating-stars-container.styles_dmi8z9.css +2 -2
  453. package/feedback-rating/feedback-rating.d.ts +6 -0
  454. package/feedback-rating/feedback-rating.js.map +1 -1
  455. package/feedback-rating/feedback-rating.styles_1kdklb6.css +2 -2
  456. package/feedback-rating/types.d.ts +29 -0
  457. package/file-download/file-download.d.ts +6 -0
  458. package/file-download/file-download.js.map +1 -1
  459. package/file-download/file-download.styles_iggk8q.css +2 -2
  460. package/file-download/file-list-card/file-list-card.styles.js +1 -1
  461. package/file-download/file-list-card/file-list-card.styles.js.map +1 -1
  462. package/{cjs/file-download/file-list-card/file-list-card.styles_oom8ii.css → file-download/file-list-card/file-list-card.styles_18j2gut.css} +3 -3
  463. package/file-download/types.d.ts +44 -11
  464. package/file-upload/dropzone.styles_1pllsau.css +2 -2
  465. package/file-upload/file-item-edit.d.ts +4 -1
  466. package/file-upload/file-item-edit.js +1 -1
  467. package/file-upload/file-item-edit.js.map +1 -1
  468. package/file-upload/file-item-edit.styles.d.ts +1 -0
  469. package/file-upload/file-item-edit.styles.js +1 -1
  470. package/file-upload/file-item-edit.styles.js.map +1 -1
  471. package/file-upload/{file-item-edit.styles_1qbpbxj.css → file-item-edit.styles_19bvztn.css} +6 -5
  472. package/file-upload/file-list/file-list.d.ts +3 -0
  473. package/file-upload/file-list/file-list.js +1 -1
  474. package/file-upload/file-list/file-list.js.map +1 -1
  475. package/file-upload/file-list/file-list.styles.js +1 -1
  476. package/file-upload/file-list/file-list.styles.js.map +1 -1
  477. package/file-upload/file-list/file-list.styles_1w7so98.css +3 -0
  478. package/file-upload/file-list-item/file-list-item-thumbnail.styles_1y4si19.css +2 -2
  479. package/file-upload/file-list-item/file-list-item.d.ts +3 -1
  480. package/file-upload/file-list-item/file-list-item.js +1 -1
  481. package/file-upload/file-list-item/file-list-item.js.map +1 -1
  482. package/file-upload/file-list-item/file-list-item.styles.d.ts +3 -0
  483. package/file-upload/file-list-item/file-list-item.styles.js +1 -1
  484. package/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
  485. package/file-upload/file-list-item/file-list-item.styles_o8000f.css +17 -0
  486. package/file-upload/file-upload.d.ts +2 -1
  487. package/file-upload/file-upload.js +1 -1
  488. package/file-upload/file-upload.js.map +1 -1
  489. package/file-upload/file-upload.styles_9ffwcd.css +2 -2
  490. package/file-upload/types.d.ts +124 -20
  491. package/filter/addons/filter-item-checkbox.styles_7degw7.css +2 -2
  492. package/filter/filter-item-page.styles_17ewfrz.css +1 -1
  493. package/filter/filter-item.js.map +1 -1
  494. package/filter/filter-item.styles_cphjnj.css +2 -2
  495. package/filter/filter-modal.styles_qw3xlg.css +2 -2
  496. package/filter/filter-sidebar.styles_1otwpjl.css +2 -2
  497. package/filter/filter.d.ts +21 -0
  498. package/filter/filter.js.map +1 -1
  499. package/filter/filter.styles_1ykijwm.css +2 -2
  500. package/filter/types.d.ts +157 -21
  501. package/footer/footer-download-app.styles_1v1j2us.css +2 -2
  502. package/footer/footer-resource-addon.styles_1jepb1d.css +2 -2
  503. package/footer/footer.d.ts +8 -1
  504. package/footer/footer.js +1 -1
  505. package/footer/footer.js.map +1 -1
  506. package/footer/footer.styles_1msorhc.css +2 -2
  507. package/footer/types.d.ts +55 -4
  508. package/form/form-label-addon.js +1 -1
  509. package/form/form-label-addon.js.map +1 -1
  510. package/form/form-label-addon.styles_b00z8p.css +1 -1
  511. package/form/form-label.styles.js +1 -1
  512. package/form/form-label.styles.js.map +1 -1
  513. package/form/{form-label.styles_11r0652.css → form-label.styles_1nbe0bm.css} +2 -2
  514. package/form/form-textarea.styles_3p9qoy.css +2 -2
  515. package/form/form-wrapper.styles_199rslu.css +1 -1
  516. package/form/index.d.ts +65 -8
  517. package/form/index.js +1 -1
  518. package/form/index.js.map +1 -1
  519. package/form/types.d.ts +155 -6
  520. package/fullscreen-image-carousel/fullscreen-image-carousel.d.ts +7 -0
  521. package/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
  522. package/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
  523. package/fullscreen-image-carousel/fullscreen-image-carousel.styles_vc6y5c.css +2 -2
  524. package/fullscreen-image-carousel/stateful-image.styles_1xe8ypm.css +2 -2
  525. package/fullscreen-image-carousel/types.d.ts +91 -3
  526. package/histogram-slider/histogram-slider.d.ts +6 -0
  527. package/histogram-slider/histogram-slider.js.map +1 -1
  528. package/histogram-slider/histogram-slider.styles_wvd4w.css +2 -2
  529. package/histogram-slider/types.d.ts +63 -3
  530. package/image-button/image-button.d.ts +6 -0
  531. package/image-button/image-button.js.map +1 -1
  532. package/image-button/image-button.styles_6n1qsr.css +2 -2
  533. package/image-button/types.d.ts +11 -1
  534. package/index.d.ts +0 -1
  535. package/index.js +1 -1
  536. package/input/input.d.ts +6 -0
  537. package/input/input.js.map +1 -1
  538. package/input/input.styles_1cblor0.css +2 -2
  539. package/input/types.d.ts +38 -2
  540. package/input-group/input-group-list-addon.styles_17iuqtw.css +2 -2
  541. package/input-group/input-group.d.ts +7 -0
  542. package/input-group/input-group.js.map +1 -1
  543. package/input-group/input-group.styles_bqye6f.css +2 -2
  544. package/input-group/types.d.ts +84 -8
  545. package/input-multi-select/input-multi-select.d.ts +6 -0
  546. package/input-multi-select/input-multi-select.js.map +1 -1
  547. package/input-multi-select/types.d.ts +46 -5
  548. package/input-nested-multi-select/input-nested-multi-select.d.ts +8 -0
  549. package/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
  550. package/input-nested-multi-select/types.d.ts +35 -5
  551. package/input-nested-select/input-nested-select.d.ts +9 -2
  552. package/input-nested-select/input-nested-select.js.map +1 -1
  553. package/input-nested-select/types.d.ts +77 -8
  554. package/input-range-select/input-range-select.d.ts +6 -0
  555. package/input-range-select/input-range-select.js.map +1 -1
  556. package/input-range-select/input-range-select.styles_adbrbm.css +2 -2
  557. package/input-range-select/types.d.ts +68 -1
  558. package/input-range-slider/input-range-slider.d.ts +7 -0
  559. package/input-range-slider/input-range-slider.js.map +1 -1
  560. package/input-range-slider/input-range-slider.styles_aljl2v.css +2 -2
  561. package/input-range-slider/types.d.ts +91 -6
  562. package/input-select/input-select.d.ts +5 -0
  563. package/input-select/input-select.js.map +1 -1
  564. package/input-select/types.d.ts +70 -14
  565. package/input-slider/input-slider.d.ts +6 -0
  566. package/input-slider/input-slider.js.map +1 -1
  567. package/input-slider/types.d.ts +21 -2
  568. package/input-textarea/textarea-counter.styles_1n3wsnv.css +1 -1
  569. package/input-textarea/textarea.d.ts +3 -0
  570. package/input-textarea/textarea.js.map +1 -1
  571. package/input-textarea/textarea.styles_22z4n3.css +2 -2
  572. package/input-textarea/types.d.ts +24 -1
  573. package/language-switcher/dropdown-panel.styles_1qsjf8d.css +2 -2
  574. package/language-switcher/dropdown-variant.styles_1vrdfky.css +2 -2
  575. package/language-switcher/language-switcher.d.ts +6 -0
  576. package/language-switcher/language-switcher.js.map +1 -1
  577. package/language-switcher/link-container-variant.styles_1iw6zux.css +2 -2
  578. package/language-switcher/types.d.ts +23 -0
  579. package/layout/col-div.styles_16o6mwx.css +1 -1
  580. package/layout/container.styles_v70ec6.css +2 -2
  581. package/layout/index.d.ts +16 -2
  582. package/layout/index.js +1 -1
  583. package/layout/index.js.map +1 -1
  584. package/layout/section.styles_hstcaf.css +1 -1
  585. package/layout/types.d.ts +61 -3
  586. package/link-list/internal-types.d.ts +57 -3
  587. package/link-list/link-list.d.ts +6 -0
  588. package/link-list/link-list.js.map +1 -1
  589. package/link-list/link-list.styles_m57vks.css +2 -2
  590. package/link-list/types.d.ts +3 -0
  591. package/local-nav/local-nav-dropdown/local-nav-dropdown.d.ts +11 -0
  592. package/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
  593. package/local-nav/local-nav-dropdown/local-nav-dropdown.styles_uhd4xl.css +2 -2
  594. package/local-nav/local-nav-menu/local-nav-menu.d.ts +6 -0
  595. package/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
  596. package/local-nav/local-nav-menu/local-nav-menu.styles_pq19dh.css +2 -2
  597. package/local-nav/types.d.ts +51 -0
  598. package/markup/markup.d.ts +6 -0
  599. package/markup/markup.js.map +1 -1
  600. package/markup/markup.style_1iu40x9.css +2 -2
  601. package/markup/types.d.ts +6 -2
  602. package/masked-input/masked-input.d.ts +6 -0
  603. package/masked-input/masked-input.js.map +1 -1
  604. package/masked-input/masked-input.styles_1cm388a.css +2 -2
  605. package/masked-input/types.d.ts +83 -8
  606. package/masthead/masthead.d.ts +6 -0
  607. package/masthead/masthead.js.map +1 -1
  608. package/masthead/masthead.styles_1huzon9.css +2 -2
  609. package/masthead/types.d.ts +9 -0
  610. package/menu/menu-content.styles_p7ijll.css +2 -2
  611. package/menu/menu-item.styles_liyed8.css +2 -2
  612. package/menu/menu-link.styles_hfxoez.css +2 -2
  613. package/menu/menu-section.styles_g7my4d.css +2 -2
  614. package/menu/menu.d.ts +27 -4
  615. package/menu/menu.js +1 -1
  616. package/menu/menu.js.map +1 -1
  617. package/menu/types.d.ts +32 -0
  618. package/modal/index.d.ts +13 -0
  619. package/modal/index.js.map +1 -1
  620. package/modal/modal-box.js +1 -1
  621. package/modal/modal-box.js.map +1 -1
  622. package/modal/modal-box.styles_y52cts.css +2 -2
  623. package/modal/modal.styles_1lbblx6.css +2 -2
  624. package/modal/types.d.ts +54 -7
  625. package/modal-v2/index.d.ts +1 -15
  626. package/modal-v2/index.js +1 -1
  627. package/modal-v2/index.js.map +1 -1
  628. package/modal-v2/modal-v2.d.ts +32 -1
  629. package/modal-v2/modal-v2.js +1 -1
  630. package/modal-v2/modal-v2.js.map +1 -1
  631. package/modal-v2/modal-v2.styles_a8gv5i.css +2 -2
  632. package/modal-v2/slots/card.js +1 -1
  633. package/modal-v2/slots/card.js.map +1 -1
  634. package/modal-v2/slots/slot-styles_13sd376.css +2 -2
  635. package/modal-v2/types.d.ts +75 -8
  636. package/navbar/brand.styles_zcgddp.css +1 -1
  637. package/navbar/drawer.js +1 -1
  638. package/navbar/drawer.js.map +1 -1
  639. package/navbar/drawer.styles_7hnxp5.css +2 -2
  640. package/navbar/menu.styles_gdpqc.css +2 -2
  641. package/navbar/navbar-action-buttons.styles_1vpm0nk.css +2 -2
  642. package/navbar/navbar-items.styles_1i3ltot.css +2 -2
  643. package/navbar/navbar.d.ts +7 -0
  644. package/navbar/navbar.js +1 -1
  645. package/navbar/navbar.js.map +1 -1
  646. package/navbar/navbar.styles_koy0c7.css +2 -2
  647. package/navbar/types.d.ts +200 -13
  648. package/notification-banner/notification-banner-hoc.d.ts +6 -0
  649. package/notification-banner/notification-banner-hoc.js.map +1 -1
  650. package/notification-banner/notification-banner.d.ts +7 -0
  651. package/notification-banner/notification-banner.js.map +1 -1
  652. package/notification-banner/notification-banner.styles_uxlysy.css +2 -2
  653. package/notification-banner/types.d.ts +57 -2
  654. package/otp-input/otp-input.d.ts +7 -0
  655. package/otp-input/otp-input.js.map +1 -1
  656. package/otp-input/otp-input.styles_5sbutl.css +2 -2
  657. package/otp-input/types.d.ts +54 -11
  658. package/otp-verification/contact-input-section.styles_odrjvt.css +2 -2
  659. package/otp-verification/internal-types.d.ts +22 -5
  660. package/otp-verification/otp-verification.d.ts +6 -0
  661. package/otp-verification/otp-verification.js.map +1 -1
  662. package/otp-verification/otp-verification.styles_dg9bm8.css +1 -1
  663. package/otp-verification/thumbnail/thumbnail.styles_shqylh.css +2 -2
  664. package/otp-verification/types.d.ts +125 -6
  665. package/otp-verification/verification-section.styles_x8jj.css +2 -2
  666. package/overlay/overlay.d.ts +7 -0
  667. package/overlay/overlay.js +1 -1
  668. package/overlay/overlay.js.map +1 -1
  669. package/overlay/overlay.styles_12wym18.css +2 -2
  670. package/overlay/types.d.ts +57 -15
  671. package/package.json +1 -7
  672. package/pagination/pagination.d.ts +5 -0
  673. package/pagination/pagination.js.map +1 -1
  674. package/pagination/pagination.styles_6bcgva.css +2 -2
  675. package/pagination/types.d.ts +48 -0
  676. package/phone-number-input/phone-number-input.d.ts +7 -0
  677. package/phone-number-input/phone-number-input.js.map +1 -1
  678. package/phone-number-input/types.d.ts +78 -13
  679. package/pill/pill.d.ts +6 -0
  680. package/pill/pill.js.map +1 -1
  681. package/pill/pill.styles_xwrniu.css +2 -2
  682. package/pill/types.d.ts +19 -0
  683. package/popover/popover-inline/popover-inline.d.ts +5 -0
  684. package/popover/popover-inline/popover-inline.js.map +1 -1
  685. package/popover/popover-inline/popover-inline.styles_bkopnt.css +2 -2
  686. package/popover/popover-trigger.d.ts +6 -0
  687. package/popover/popover-trigger.js.map +1 -1
  688. package/popover/popover-trigger.styles_8zokig.css +1 -1
  689. package/popover/popover.d.ts +6 -0
  690. package/popover/popover.js +1 -1
  691. package/popover/popover.js.map +1 -1
  692. package/popover/popover.styles_ujnf0h.css +2 -2
  693. package/popover/types.d.ts +150 -3
  694. package/predictive-text-input/predictive-text-input.d.ts +6 -0
  695. package/predictive-text-input/predictive-text-input.js.map +1 -1
  696. package/predictive-text-input/types.d.ts +65 -11
  697. package/progress-indicator/progress-indicator.d.ts +7 -0
  698. package/progress-indicator/progress-indicator.js.map +1 -1
  699. package/progress-indicator/progress-indicator.styles_1c038s4.css +2 -2
  700. package/progress-indicator/types.d.ts +18 -0
  701. package/radio-button/radio-button.d.ts +5 -0
  702. package/radio-button/radio-button.js.map +1 -1
  703. package/radio-button/radio-button.styles_1c4v6v.css +2 -2
  704. package/radio-button/types.d.ts +11 -0
  705. package/schedule/internal-types.d.ts +18 -0
  706. package/schedule/schedule-day-view/schedule-day-view.styles_8ti149.css +2 -2
  707. package/schedule/schedule-day-view/types.d.ts +2 -1
  708. package/schedule/schedule-header/schedule-header.js +1 -1
  709. package/schedule/schedule-header/schedule-header.js.map +1 -1
  710. package/schedule/schedule-header/schedule-header.styles_1n2u5vj.css +2 -2
  711. package/schedule/schedule-week-view/schedule-week-view.styles_x7x50m.css +2 -2
  712. package/schedule/schedule-week-view/time-cell.styles_1sorjz8.css +2 -2
  713. package/schedule/schedule-week-view/types.d.ts +2 -1
  714. package/schedule/schedule.d.ts +3 -0
  715. package/schedule/schedule.js.map +1 -1
  716. package/schedule/schedule.styles_fdy5a1.css +2 -2
  717. package/schedule/shared/with-optional-popover.js +1 -1
  718. package/schedule/shared/with-optional-popover.js.map +1 -1
  719. package/schedule/shared/with-optional-popover.styles_7mv3p2.css +1 -1
  720. package/schedule/time-indicator/time-indicator.styles_1eaxyes.css +2 -2
  721. package/schedule/types.d.ts +129 -10
  722. package/select-histogram/select-histogram.d.ts +5 -0
  723. package/select-histogram/select-histogram.js.map +1 -1
  724. package/select-histogram/select-histogram.styles_n260dy.css +2 -2
  725. package/select-histogram/types.d.ts +57 -4
  726. package/shared/accessibility/index_13g9vp.css +1 -1
  727. package/shared/clickable-icon/clickable-icon.styles_1v2imml.css +2 -2
  728. package/shared/component-loading-spinner/component-loading-spinner.styles_15eq02i.css +2 -2
  729. package/shared/dropdown-list/dropdown-label.styles_mloii0.css +2 -2
  730. package/shared/dropdown-list/dropdown-list.styles_konwm.css +2 -2
  731. package/shared/dropdown-list/dropdown-search.styles_1hc1gkh.css +2 -2
  732. package/shared/dropdown-list/expandable-element.styles_rkkvqr.css +2 -2
  733. package/shared/dropdown-list/nested-dropdown-list.styles_wdhxoe.css +2 -2
  734. package/shared/dropdown-list/types.d.ts +52 -19
  735. package/shared/dropdown-wrapper/dropdown-wrapper.styles_15hwwoj.css +2 -2
  736. package/shared/dropdown-wrapper/types.d.ts +6 -0
  737. package/shared/fade-wrapper/fade-wrapper.styles_16iug7l.css +2 -2
  738. package/shared/image-placeholder/image-placeholder.styles_44nwil.css +1 -1
  739. package/shared/input-wrapper/input-wrapper.styles_je6maw.css +2 -2
  740. package/shared/internal-calendar/calendar-dropdown.styles_wybjai.css +1 -1
  741. package/shared/internal-calendar/calendar-manager.js +1 -1
  742. package/shared/internal-calendar/calendar-manager.js.map +1 -1
  743. package/shared/internal-calendar/calendar-manager.styles.js +1 -1
  744. package/shared/internal-calendar/calendar-manager.styles.js.map +1 -1
  745. package/shared/internal-calendar/{calendar-manager.styles_1iuq5zw.css → calendar-manager.styles_1njwkj2.css} +3 -3
  746. package/shared/internal-calendar/day-cell/day-cell.styles_1t5oqc1.css +2 -2
  747. package/shared/internal-calendar/internal-calendar-month.styles_14oh57f.css +2 -2
  748. package/shared/internal-calendar/internal-calendar-year.styles_therlc.css +2 -2
  749. package/shared/internal-calendar/internal-calendar.styles_gnc3eq.css +1 -1
  750. package/shared/internal-calendar/standard/standard-calendar-day-view.styles_1bw26au.css +2 -2
  751. package/shared/progress-bar/progress-bar.styles_125ri7a.css +1 -1
  752. package/shared/range-input-inner-container/range-input-inner-container.styles_1v61utg.css +2 -2
  753. package/shared/standalone-date-input/standalone-date-input.styles_157qo89.css +2 -2
  754. package/shared/time-slot/time-slot.styles_18s0to7.css +2 -2
  755. package/shared/timepicker-dropdown/timepicker-dropdown.styles_119l6k6.css +2 -2
  756. package/sidenav/sidenav-drawer-item.styles_1ljnyx2.css +2 -2
  757. package/sidenav/sidenav-drawer-subitem.styles_2y58kf.css +1 -1
  758. package/sidenav/sidenav-group.styles_1x604sw.css +2 -2
  759. package/sidenav/sidenav-item.styles_lqw3kh.css +2 -2
  760. package/sidenav/sidenav.d.ts +10 -0
  761. package/sidenav/sidenav.js.map +1 -1
  762. package/sidenav/sidenav.styles_1vxezie.css +2 -2
  763. package/sidenav/types.d.ts +70 -21
  764. package/singpass-button/singpass-button.d.ts +6 -0
  765. package/singpass-button/singpass-button.js.map +1 -1
  766. package/singpass-button/singpass-button.styles_1miyex3.css +2 -2
  767. package/singpass-button/types.d.ts +29 -2
  768. package/smart-app-banner/smart-app-banner.d.ts +5 -0
  769. package/smart-app-banner/smart-app-banner.js.map +1 -1
  770. package/smart-app-banner/smart-app-banner.styles_15u6yv4.css +2 -2
  771. package/smart-app-banner/types.d.ts +54 -0
  772. package/tab/tab-link-chain.styles_49got4.css +2 -2
  773. package/tab/tab.d.ts +7 -0
  774. package/tab/tab.js.map +1 -1
  775. package/tab/tab.styles_1najffw.css +1 -1
  776. package/tab/types.d.ts +55 -6
  777. package/table/table.d.ts +21 -0
  778. package/table/table.js.map +1 -1
  779. package/table/table.styles.js +1 -1
  780. package/table/table.styles.js.map +1 -1
  781. package/table/{table.styles_1af5ipv.css → table.styles_1vjx31g.css} +2 -2
  782. package/tag/tag.d.ts +5 -0
  783. package/tag/tag.js.map +1 -1
  784. package/tag/tag.style_d98c53.css +2 -2
  785. package/tag/types.d.ts +24 -0
  786. package/text-list/index.d.ts +17 -0
  787. package/text-list/index.js.map +1 -1
  788. package/text-list/text-list.styles_w3fvyt.css +2 -2
  789. package/text-list/types.d.ts +33 -4
  790. package/theme/styles/a11y-playground.css +3 -0
  791. package/theme/styles/bookingsg.css +7 -4
  792. package/theme/styles/careercompass.css +4 -1
  793. package/theme/styles/ccube.css +3 -0
  794. package/theme/styles/default.css +9 -5
  795. package/theme/styles/imda.css +3 -0
  796. package/theme/styles/lifesg.css +3 -0
  797. package/theme/styles/mylegacy.css +7 -4
  798. package/theme/styles/oneservice.css +52 -0
  799. package/theme/styles/pa.css +3 -0
  800. package/theme/styles/rbs.css +3 -0
  801. package/theme/styles/sgw-digital-lobby.css +5 -2
  802. package/theme/styles/smgs.css +3 -0
  803. package/theme/styles/spf.css +3 -0
  804. package/theme/styles/supportgowhere.css +3 -0
  805. package/theme/theme-provider/breakpoint.d.ts +0 -1
  806. package/theme/theme-provider/breakpoint.js +1 -1
  807. package/theme/theme-provider/breakpoint.js.map +1 -1
  808. package/theme/theme-provider/hooks.d.ts +16 -0
  809. package/theme/theme-provider/hooks.js.map +1 -1
  810. package/theme/theme-provider/index.d.ts +7 -0
  811. package/theme/theme-provider/index.js.map +1 -1
  812. package/theme/theme-provider/types.d.ts +14 -0
  813. package/theme/tokens/border.d.ts +3 -0
  814. package/theme/tokens/border.js.map +1 -1
  815. package/theme/tokens/breakpoint.d.ts +3 -0
  816. package/theme/tokens/breakpoint.js.map +1 -1
  817. package/theme/tokens/colour.d.ts +3 -0
  818. package/theme/tokens/colour.js.map +1 -1
  819. package/theme/tokens/component.d.ts +1 -0
  820. package/theme/tokens/component.js.map +1 -1
  821. package/theme/tokens/font.d.ts +2 -0
  822. package/theme/tokens/font.js.map +1 -1
  823. package/theme/tokens/media-query.d.ts +1 -0
  824. package/theme/tokens/media-query.js.map +1 -1
  825. package/theme/tokens/motion.d.ts +1 -0
  826. package/theme/tokens/motion.js.map +1 -1
  827. package/theme/tokens/radius.d.ts +1 -0
  828. package/theme/tokens/radius.js.map +1 -1
  829. package/theme/tokens/shadow.d.ts +1 -0
  830. package/theme/tokens/shadow.js.map +1 -1
  831. package/theme/tokens/spacing.d.ts +1 -0
  832. package/theme/tokens/spacing.js.map +1 -1
  833. package/theme/types.d.ts +24 -4
  834. package/theme/types.js +1 -1
  835. package/theme/types.js.map +1 -1
  836. package/theme/utils/css-variable.d.ts +10 -2
  837. package/theme/utils/css-variable.js.map +1 -1
  838. package/theme/utils/font.d.ts +2 -1
  839. package/theme/utils/font.js.map +1 -1
  840. package/theme/utils/index.d.ts +1 -0
  841. package/theme/utils/use-apply-styles.d.ts +8 -2
  842. package/theme/utils/use-apply-styles.js +1 -1
  843. package/theme/utils/use-apply-styles.js.map +1 -1
  844. package/theme/utils/use-design-token-override.d.ts +19 -0
  845. package/theme/utils/use-design-token-override.js +2 -0
  846. package/theme/utils/use-design-token-override.js.map +1 -0
  847. package/theme/utils/use-design-token.d.ts +9 -0
  848. package/theme/utils/use-design-token.js.map +1 -1
  849. package/theme/utils/use-media-query.d.ts +41 -3
  850. package/theme/utils/use-media-query.js.map +1 -1
  851. package/time-range-picker/combobox-picker/combobox-picker.js +1 -1
  852. package/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
  853. package/time-range-picker/combobox-picker/combobox-picker.styles_7i9vso.css +1 -1
  854. package/time-range-picker/common.styles.d.ts +1 -0
  855. package/time-range-picker/common.styles.js +1 -1
  856. package/time-range-picker/common.styles.js.map +1 -1
  857. package/time-range-picker/{common.styles_1qwp4xa.css → common.styles_cnkkax.css} +2 -1
  858. package/time-range-picker/dial-picker/dial-picker.js +1 -1
  859. package/time-range-picker/dial-picker/dial-picker.js.map +1 -1
  860. package/time-range-picker/time-range-picker.d.ts +5 -0
  861. package/time-range-picker/time-range-picker.js.map +1 -1
  862. package/time-range-picker/types.d.ts +85 -25
  863. package/time-slot-bar/internal-types.d.ts +1 -0
  864. package/time-slot-bar/time-slot-bar.d.ts +7 -0
  865. package/time-slot-bar/time-slot-bar.js.map +1 -1
  866. package/time-slot-bar/time-slot-bar.styles_wigbyd.css +2 -2
  867. package/time-slot-bar/types.d.ts +112 -20
  868. package/time-slot-bar-week/time-slot-bar-week-days.styles_evdvs9.css +2 -2
  869. package/time-slot-bar-week/time-slot-bar-week.d.ts +8 -0
  870. package/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
  871. package/time-slot-bar-week/time-slot-bar-week.styles_11ybf42.css +1 -1
  872. package/time-slot-bar-week/types.d.ts +74 -13
  873. package/time-slot-week-view/time-slot-week-days.styles_1h21vyw.css +2 -2
  874. package/time-slot-week-view/time-slot-week-view.d.ts +7 -0
  875. package/time-slot-week-view/time-slot-week-view.js.map +1 -1
  876. package/time-slot-week-view/time-slot-week-view.styles_gqgsw2.css +1 -1
  877. package/time-slot-week-view/types.d.ts +53 -10
  878. package/timeline/timeline.d.ts +6 -0
  879. package/timeline/timeline.js.map +1 -1
  880. package/timeline/timeline.styles_1jxzik4.css +2 -2
  881. package/timeline/types.d.ts +58 -4
  882. package/timepicker/timepicker.d.ts +5 -0
  883. package/timepicker/timepicker.js +1 -1
  884. package/timepicker/timepicker.js.map +1 -1
  885. package/timepicker/timepicker.styles.d.ts +1 -0
  886. package/timepicker/timepicker.styles.js +1 -1
  887. package/timepicker/timepicker.styles.js.map +1 -1
  888. package/timepicker/timepicker.styles_lyizvq.css +2 -0
  889. package/timepicker/types.d.ts +49 -14
  890. package/timetable/timetable-header/timetable-header.styles_11gl1h4.css +2 -2
  891. package/timetable/timetable-row/row-bar.styles_1x0vrsz.css +1 -1
  892. package/timetable/timetable-row/row-cell.styles_y1dl5j.css +2 -2
  893. package/timetable/timetable-row/with-optional-popover.js +1 -1
  894. package/timetable/timetable-row/with-optional-popover.js.map +1 -1
  895. package/timetable/timetable.d.ts +6 -0
  896. package/timetable/timetable.js +1 -1
  897. package/timetable/timetable.js.map +1 -1
  898. package/timetable/timetable.styles_7rp8kz.css +2 -2
  899. package/timetable/types.d.ts +175 -50
  900. package/toast/toast.d.ts +6 -0
  901. package/toast/toast.js.map +1 -1
  902. package/toast/toast.styles_1e0l60w.css +2 -2
  903. package/toast/types.d.ts +42 -8
  904. package/toggle/toggle-icon.styles_ba71y.css +2 -2
  905. package/toggle/toggle.d.ts +6 -0
  906. package/toggle/toggle.js.map +1 -1
  907. package/toggle/toggle.styles_1t5qrye.css +2 -2
  908. package/toggle/types.d.ts +95 -17
  909. package/typography/index.d.ts +29 -0
  910. package/typography/index.js.map +1 -1
  911. package/typography/types.d.ts +51 -8
  912. package/typography/typography-text.styles_1734x2k.css +2 -2
  913. package/typography/typography.styles.js +1 -1
  914. package/typography/typography.styles.js.map +1 -1
  915. package/typography/{typography.styles_1155j4c.css → typography.styles_1wd82dn.css} +2 -2
  916. package/uneditable-section/index.d.ts +16 -1
  917. package/uneditable-section/index.js.map +1 -1
  918. package/uneditable-section/section-item.styles_mwx8ht.css +2 -2
  919. package/uneditable-section/types.d.ts +66 -23
  920. package/uneditable-section/uneditable-section.d.ts +2 -1
  921. package/uneditable-section/uneditable-section.js +1 -1
  922. package/uneditable-section/uneditable-section.js.map +1 -1
  923. package/uneditable-section/uneditable-section.styles_aj9zun.css +2 -2
  924. package/unit-number/types.d.ts +30 -4
  925. package/unit-number/unit-number-input.d.ts +6 -0
  926. package/unit-number/unit-number-input.js.map +1 -1
  927. package/unit-number/unit-number-input.styles_8yizj.css +2 -2
  928. package/util/index.d.ts +1 -0
  929. package/util/merge-refs.d.ts +1 -1
  930. package/util/merge-refs.js.map +1 -1
  931. package/util/use-throttle.d.ts +1 -0
  932. package/util/use-throttle.js +2 -0
  933. package/util/use-throttle.js.map +1 -0
  934. package/cjs/data-table/data-table.styles_1iqq1g7.css +0 -26
  935. package/cjs/example/example.js +0 -2
  936. package/cjs/example/example.js.map +0 -1
  937. package/cjs/example/example_r47nvz.css +0 -1
  938. package/cjs/example/index.js +0 -2
  939. package/cjs/example/index.js.map +0 -1
  940. package/cjs/file-upload/file-list/file-list.styles_1ea12kj.css +0 -3
  941. package/cjs/file-upload/file-list-item/file-list-item.styles_y7my2m.css +0 -14
  942. package/cjs/timepicker/timepicker.styles_1jm33yw.css +0 -1
  943. package/data-table/data-table.styles_1iqq1g7.css +0 -26
  944. package/example/example.d.ts +0 -2
  945. package/example/example.js +0 -2
  946. package/example/example.js.map +0 -1
  947. package/example/example_r47nvz.css +0 -1
  948. package/example/index.d.ts +0 -1
  949. package/example/index.js +0 -2
  950. package/example/index.js.map +0 -1
  951. package/example/types.d.ts +0 -3
  952. package/file-upload/file-list/file-list.styles_1ea12kj.css +0 -3
  953. package/file-upload/file-list-item/file-list-item.styles_y7my2m.css +0 -14
  954. package/timepicker/timepicker.styles_1jm33yw.css +0 -1
@@ -3,59 +3,108 @@ interface SidenavBaseProps {
3
3
  "data-testid"?: string | undefined;
4
4
  className?: string | undefined;
5
5
  }
6
+ /**
7
+ * Props for the `Sidenav` component.
8
+ */
6
9
  export interface SidenavProps extends SidenavBaseProps {
7
- /** Specifies if sidenav should be fixed to left. Defaults to true */
10
+ /**
11
+ * Pins the sidebar to the left edge of the viewport while the page scrolls.
12
+ *
13
+ * @default true
14
+ */
8
15
  fixed?: boolean | undefined;
9
16
  /**
10
- * <Sidenav.Group>
11
- * ...
12
- * </Sidenav.Group>
17
+ * Navigation groups and items. Accepts `Sidenav.Group` elements.
13
18
  */
14
19
  children: React.ReactNode;
15
- /** the accessible label */
20
+ /**
21
+ * Accessible label announced for the sidebar navigation landmark.
22
+ *
23
+ * @default "Sidebar"
24
+ */
16
25
  "aria-label"?: string | undefined;
17
26
  }
27
+ /**
28
+ * Props for the `Sidenav.Group` sub-component.
29
+ */
18
30
  export interface SidenavGroupProps extends SidenavBaseProps {
19
- /** Specifies if bottom divider will be rendered */
31
+ /**
32
+ * Renders a horizontal divider after the last item in the group.
33
+ */
20
34
  separator?: boolean | undefined;
21
35
  /**
22
- * <Sidenav.Item>
23
- * ...
24
- * </Sidenav.Item>
36
+ * Navigation items within the group. Accepts `Sidenav.Item` elements.
25
37
  */
26
38
  children: React.ReactNode;
27
- /** the accessible label */
39
+ /**
40
+ * Accessible label for this navigation group.
41
+ */
28
42
  "aria-label"?: string | undefined;
29
43
  }
44
+ /**
45
+ * Props for the `Sidenav.Item` sub-component.
46
+ */
30
47
  export interface SidenavItemProps extends SidenavBaseProps {
48
+ /**
49
+ * Label displayed below the icon.
50
+ */
31
51
  title: string;
32
- /** The icon to be rendered */
52
+ /**
53
+ * Icon displayed above the title.
54
+ */
33
55
  icon: React.ReactNode;
34
- /** Indicates if an item is initially selected */
56
+ /**
57
+ * Sets the item as initially selected on mount.
58
+ */
35
59
  selected?: boolean | undefined;
36
- /** Called when item is selected */
60
+ /**
61
+ * Called when the item is activated and it has no drawer children. When
62
+ * `children` are provided, clicking opens the drawer without invoking this
63
+ * callback.
64
+ *
65
+ * @param id The item's resolved `id` value.
66
+ */
37
67
  onClick?: ((id: string | undefined) => void) | undefined;
38
68
  /**
39
- * <Sidenav.DrawerItem>
40
- * ...
41
- * </Sidenav.DrawerItem>
69
+ * Drawer content displayed to the right of the sidebar when the item is
70
+ * active. Accepts `Sidenav.DrawerItem` elements.
42
71
  */
43
72
  children?: React.ReactNode | undefined;
44
73
  }
74
+ /**
75
+ * Props for the `Sidenav.DrawerItem` sub-component.
76
+ */
45
77
  export interface SidenavDrawerItemProps extends SidenavBaseProps {
78
+ /**
79
+ * The displayed label.
80
+ */
46
81
  title: string;
47
82
  /**
48
- * <Sidenav.DrawerSubitem>
49
- * ...
50
- * </Sidenav.DrawerSubitem>
83
+ * Sub-level entries for this section. Accepts `Sidenav.DrawerSubitem`
84
+ * elements. When provided, clicking toggles the collapsed/expanded state
85
+ * instead of invoking `onClick`.
51
86
  */
52
87
  children?: React.ReactNode | undefined;
53
- /** Called when item is selected */
88
+ /**
89
+ * Called when the item is activated and it has no sub-item children.
90
+ *
91
+ * @param id The item's `id` value.
92
+ */
54
93
  onClick?: ((id: string | undefined) => void) | undefined;
55
94
  }
95
+ /**
96
+ * Props for the `Sidenav.DrawerSubitem` sub-component.
97
+ */
56
98
  export interface SidenavDrawerSubitemProps extends SidenavBaseProps {
99
+ /**
100
+ * The displayed label.
101
+ */
57
102
  title: string;
58
- /** Called when item is selected */
103
+ /**
104
+ * Called when the sub-item is activated.
105
+ *
106
+ * @param id The sub-item's `id` value.
107
+ */
59
108
  onClick?: ((id: string | undefined) => void) | undefined;
60
109
  }
61
110
  export {};
@@ -1,4 +1,10 @@
1
1
  import type { SingpassButtonProps } from "./types";
2
+ /**
3
+ * Call-to-action for Singpass authentication,
4
+ * following the brand [guidelines](https://docs.developer.singpass.gov.sg/docs/products/login/singpass-button-guidelines-for-developers-and-designers).
5
+ *
6
+ * Use `SingpassButton` to let users log in with their Singpass account.
7
+ */
2
8
  export declare const SingpassButton: ((props: SingpassButtonProps & import("react").RefAttributes<HTMLButtonElement>) => React.ReactElement | null) & {
3
9
  /** @deprecated Use the `sizeType` prop instead: `<SingpassButton>` or `<SingpassButton sizeType="default">` */
4
10
  Default: (props: SingpassButtonProps & import("react").RefAttributes<HTMLButtonElement>) => React.ReactElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"singpass-button.js","sources":["../../src/singpass-button/singpass-button.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\n\nimport { getSpLogo } from \"./singpass-assets\";\nimport * as styles from \"./singpass-button.styles\";\nimport type {\n SingpassButtonProps,\n SingpassButtonRef,\n SingpassButtonSizeType,\n SingpassButtonStyleType,\n} from \"./types\";\n\nconst styleClassMap: Record<SingpassButtonStyleType, string> = {\n \"red-filled\": styles.mainStyleRedFilled,\n \"white-filled\": styles.mainStyleWhiteFilled,\n};\n\nconst sizeClassMap: Record<SingpassButtonSizeType, string> = {\n small: styles.mainSizeSmall,\n large: styles.mainSizeLarge,\n default: \"\",\n};\n\nconst Component = (props: SingpassButtonProps, ref: SingpassButtonRef) => {\n const {\n styleType = \"white-filled\",\n sizeType = \"default\",\n className,\n \"data-testid\": testId = \"singpass-button\",\n ...otherProps\n } = props;\n\n return (\n <button\n ref={ref}\n data-testid={testId}\n {...otherProps}\n aria-label=\"Log in with Singpass\"\n className={clsx(\n styles.main,\n sizeClassMap[sizeType],\n styleClassMap[styleType],\n className\n )}\n >\n <span\n className={clsx(\n styles.svgContainer,\n sizeType === \"large\" && styles.svgContainerSizeLarge\n )}\n >\n <img src={getSpLogo(styleType)} alt=\"\" />\n </span>\n </button>\n );\n};\n\nconst BaseSingpassButton = forwardRef(Component);\n\nconst DefaultSingpassButtonComponent = (\n props: SingpassButtonProps,\n ref: SingpassButtonRef\n) => (\n <BaseSingpassButton\n {...props}\n sizeType={props.sizeType ?? \"default\"}\n ref={ref}\n />\n);\nDefaultSingpassButtonComponent.displayName = \"SingpassButton.Default\";\n\nconst SmallSingpassButtonComponent = (\n props: SingpassButtonProps,\n ref: SingpassButtonRef\n) => <BaseSingpassButton {...props} sizeType=\"small\" ref={ref} />;\nSmallSingpassButtonComponent.displayName = \"SingpassButton.Small\";\n\nconst LargeSingpassButtonComponent = (\n props: SingpassButtonProps,\n ref: SingpassButtonRef\n) => <BaseSingpassButton {...props} sizeType=\"large\" ref={ref} />;\nLargeSingpassButtonComponent.displayName = \"SingpassButton.Large\";\n\nexport const SingpassButton = Object.assign(BaseSingpassButton, {\n /** @deprecated Use the `sizeType` prop instead: `<SingpassButton>` or `<SingpassButton sizeType=\"default\">` */\n Default: forwardRef(DefaultSingpassButtonComponent),\n /** @deprecated Use the `sizeType` prop instead: `<SingpassButton sizeType=\"small\">` */\n Small: forwardRef(SmallSingpassButtonComponent),\n /** @deprecated Use the `sizeType` prop instead: `<SingpassButton sizeType=\"large\">` */\n Large: forwardRef(LargeSingpassButtonComponent),\n});\n"],"names":["styleClassMap","styles.mainStyleRedFilled","styles.mainStyleWhiteFilled","sizeClassMap","small","styles.mainSizeSmall","large","styles.mainSizeLarge","default","BaseSingpassButton","forwardRef","props","ref","styleType","sizeType","className","testId","otherProps","__rest","_jsx","Object","assign","clsx","styles.main","children","styles.svgContainer","styles.svgContainerSizeLarge","src","getSpLogo","alt","DefaultSingpassButtonComponent","_a","displayName","SmallSingpassButtonComponent","LargeSingpassButtonComponent","SingpassButton","Default","Small","Large"],"mappings":"uXAYA,MAAMA,EAAyD,CAC3D,aAAcC,EACd,eAAgBC,GAGdC,EAAuD,CACzDC,MAAOC,EACPC,MAAOC,EACPC,QAAS,IAqCPC,EAAqBC,GAlCT,CAACC,EAA4BC,KAC3C,MAAMC,UACFA,EAAY,eAAcC,SAC1BA,EAAW,UAASC,UACpBA,EACA,cAAeC,EAAS,mBAExBL,EADGM,EAAUC,EACbP,EANE,CAAA,YAAA,WAAA,YAAA,gBAQN,OACIQ,EAAA,SAAAC,OAAAC,OAAA,CACIT,IAAKA,EAAG,cACKI,GACTC,EAAU,CAAA,aACH,uBACXF,UAAWO,EACPC,EACApB,EAAaW,GACbd,EAAca,GACdE,GACHS,SAEDL,EAAA,OAAA,CACIJ,UAAWO,EACPG,EACa,UAAbX,GAAwBY,GAC3BF,SAEDL,EAAA,MAAA,CAAKQ,IAAKC,EAAUf,GAAYgB,IAAI,SAEnC,IAMXC,EAAiC,CACnCnB,EACAC,WACC,OACDO,EAACV,EAAkBW,OAAAC,OAAA,CAAA,EACXV,EAAK,CACTG,SAAwB,QAAdiB,EAAApB,EAAMG,gBAAQ,IAAAiB,EAAAA,EAAI,UAC5BnB,IAAKA,IACP,EAENkB,EAA+BE,YAAc,yBAE7C,MAAMC,EAA+B,CACjCtB,EACAC,IACCO,EAACV,mBAAuBE,EAAK,CAAEG,SAAS,QAAQF,IAAKA,KAC1DqB,EAA6BD,YAAc,uBAE3C,MAAME,EAA+B,CACjCvB,EACAC,IACCO,EAACV,mBAAuBE,EAAK,CAAEG,SAAS,QAAQF,IAAKA,KAC1DsB,EAA6BF,YAAc,6BAE9BG,EAAiBf,OAAOC,OAAOZ,EAAoB,CAE5D2B,QAAS1B,EAAWoB,GAEpBO,MAAO3B,EAAWuB,GAElBK,MAAO5B,EAAWwB"}
1
+ {"version":3,"file":"singpass-button.js","sources":["../../src/singpass-button/singpass-button.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { forwardRef } from \"react\";\n\nimport { getSpLogo } from \"./singpass-assets\";\nimport * as styles from \"./singpass-button.styles\";\nimport type {\n SingpassButtonProps,\n SingpassButtonRef,\n SingpassButtonSizeType,\n SingpassButtonStyleType,\n} from \"./types\";\n\nconst styleClassMap: Record<SingpassButtonStyleType, string> = {\n \"red-filled\": styles.mainStyleRedFilled,\n \"white-filled\": styles.mainStyleWhiteFilled,\n};\n\nconst sizeClassMap: Record<SingpassButtonSizeType, string> = {\n small: styles.mainSizeSmall,\n large: styles.mainSizeLarge,\n default: \"\",\n};\n\nconst Component = (props: SingpassButtonProps, ref: SingpassButtonRef) => {\n const {\n styleType = \"white-filled\",\n sizeType = \"default\",\n className,\n \"data-testid\": testId = \"singpass-button\",\n ...otherProps\n } = props;\n\n return (\n <button\n ref={ref}\n data-testid={testId}\n {...otherProps}\n aria-label=\"Log in with Singpass\"\n className={clsx(\n styles.main,\n sizeClassMap[sizeType],\n styleClassMap[styleType],\n className\n )}\n >\n <span\n className={clsx(\n styles.svgContainer,\n sizeType === \"large\" && styles.svgContainerSizeLarge\n )}\n >\n <img src={getSpLogo(styleType)} alt=\"\" />\n </span>\n </button>\n );\n};\n\nconst BaseSingpassButton = forwardRef(Component);\n\nconst DefaultSingpassButtonComponent = (\n props: SingpassButtonProps,\n ref: SingpassButtonRef\n) => (\n <BaseSingpassButton\n {...props}\n sizeType={props.sizeType ?? \"default\"}\n ref={ref}\n />\n);\nDefaultSingpassButtonComponent.displayName = \"SingpassButton.Default\";\n\nconst SmallSingpassButtonComponent = (\n props: SingpassButtonProps,\n ref: SingpassButtonRef\n) => <BaseSingpassButton {...props} sizeType=\"small\" ref={ref} />;\nSmallSingpassButtonComponent.displayName = \"SingpassButton.Small\";\n\nconst LargeSingpassButtonComponent = (\n props: SingpassButtonProps,\n ref: SingpassButtonRef\n) => <BaseSingpassButton {...props} sizeType=\"large\" ref={ref} />;\nLargeSingpassButtonComponent.displayName = \"SingpassButton.Large\";\n\n/**\n * Call-to-action for Singpass authentication,\n * following the brand [guidelines](https://docs.developer.singpass.gov.sg/docs/products/login/singpass-button-guidelines-for-developers-and-designers).\n *\n * Use `SingpassButton` to let users log in with their Singpass account.\n */\nexport const SingpassButton = Object.assign(BaseSingpassButton, {\n /** @deprecated Use the `sizeType` prop instead: `<SingpassButton>` or `<SingpassButton sizeType=\"default\">` */\n Default: forwardRef(DefaultSingpassButtonComponent),\n /** @deprecated Use the `sizeType` prop instead: `<SingpassButton sizeType=\"small\">` */\n Small: forwardRef(SmallSingpassButtonComponent),\n /** @deprecated Use the `sizeType` prop instead: `<SingpassButton sizeType=\"large\">` */\n Large: forwardRef(LargeSingpassButtonComponent),\n});\n"],"names":["styleClassMap","styles.mainStyleRedFilled","styles.mainStyleWhiteFilled","sizeClassMap","small","styles.mainSizeSmall","large","styles.mainSizeLarge","default","BaseSingpassButton","forwardRef","props","ref","styleType","sizeType","className","testId","otherProps","__rest","_jsx","Object","assign","clsx","styles.main","children","styles.svgContainer","styles.svgContainerSizeLarge","src","getSpLogo","alt","DefaultSingpassButtonComponent","_a","displayName","SmallSingpassButtonComponent","LargeSingpassButtonComponent","SingpassButton","Default","Small","Large"],"mappings":"uXAYA,MAAMA,EAAyD,CAC3D,aAAcC,EACd,eAAgBC,GAGdC,EAAuD,CACzDC,MAAOC,EACPC,MAAOC,EACPC,QAAS,IAqCPC,EAAqBC,GAlCT,CAACC,EAA4BC,KAC3C,MAAMC,UACFA,EAAY,eAAcC,SAC1BA,EAAW,UAASC,UACpBA,EACA,cAAeC,EAAS,mBAExBL,EADGM,EAAUC,EACbP,EANE,CAAA,YAAA,WAAA,YAAA,gBAQN,OACIQ,EAAA,SAAAC,OAAAC,OAAA,CACIT,IAAKA,EAAG,cACKI,GACTC,EAAU,CAAA,aACH,uBACXF,UAAWO,EACPC,EACApB,EAAaW,GACbd,EAAca,GACdE,GACHS,SAEDL,EAAA,OAAA,CACIJ,UAAWO,EACPG,EACa,UAAbX,GAAwBY,GAC3BF,SAEDL,EAAA,MAAA,CAAKQ,IAAKC,EAAUf,GAAYgB,IAAI,SAEnC,IAMXC,EAAiC,CACnCnB,EACAC,WACC,OACDO,EAACV,EAAkBW,OAAAC,OAAA,CAAA,EACXV,EAAK,CACTG,SAAwB,QAAdiB,EAAApB,EAAMG,gBAAQ,IAAAiB,EAAAA,EAAI,UAC5BnB,IAAKA,IACP,EAENkB,EAA+BE,YAAc,yBAE7C,MAAMC,EAA+B,CACjCtB,EACAC,IACCO,EAACV,mBAAuBE,EAAK,CAAEG,SAAS,QAAQF,IAAKA,KAC1DqB,EAA6BD,YAAc,uBAE3C,MAAME,EAA+B,CACjCvB,EACAC,IACCO,EAACV,mBAAuBE,EAAK,CAAEG,SAAS,QAAQF,IAAKA,KAC1DsB,EAA6BF,YAAc,6BAQ9BG,EAAiBf,OAAOC,OAAOZ,EAAoB,CAE5D2B,QAAS1B,EAAWoB,GAEpBO,MAAO3B,EAAWuB,GAElBK,MAAO5B,EAAWwB"}
@@ -1,7 +1,7 @@
1
- .m18jjb1{padding:var(--fds-spacing-8) var(--fds-spacing-16);-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);border-radius:var(--fds-button-radius);cursor:pointer;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;min-height:3rem;}
1
+ @layer fds{.m18jjb1{padding:var(--fds-spacing-8) var(--fds-spacing-16);-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);border-radius:var(--fds-button-radius);cursor:pointer;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;min-height:3rem;}
2
2
  .m6wtgnj{height:2.5rem;min-height:unset;}
3
3
  .mijymjd{min-height:4rem;}
4
4
  .m1y6qkg6{background-color:#f4333d;border:none;}@media (pointer: fine){.m1y6qkg6:hover,.m1y6qkg6:active{background-color:#b0262d;}}
5
5
  .mmpvnp1{background-color:#ffffff;border:1px #c8c9cc solid;}@media (pointer: fine){.mmpvnp1:hover,.mmpvnp1:active{background-color:#f5f5f7;}}
6
6
  .s1mju8fq{height:1.5rem;}.s1mju8fq img{height:100%;}
7
- .sreiq2p{height:2.5rem;}
7
+ .sreiq2p{height:2.5rem;}}
@@ -1,11 +1,38 @@
1
1
  import type React from "react";
2
+ /**
3
+ * Visual style variant of the Singpass button.
4
+ *
5
+ * - `"red-filled"` — Singpass red background with white logo.
6
+ * - `"white-filled"` — white background with red logo.
7
+ */
2
8
  export type SingpassButtonStyleType = "red-filled" | "white-filled";
9
+ /**
10
+ * Size variant of the Singpass button.
11
+ *
12
+ * - `"default"` — standard button size.
13
+ * - `"small"` — compact button size.
14
+ * - `"large"` — expanded button size.
15
+ */
3
16
  export type SingpassButtonSizeType = "default" | "small" | "large";
17
+ /**
18
+ * Props for the Singpass-branded login button.
19
+ */
4
20
  export interface SingpassButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
5
21
  "data-testid"?: string | undefined;
6
- /** The style type of the button. Values: "red-filled" | "white-filled" */
22
+ /**
23
+ * Visual style variant controlling the button background and logo colour.
24
+ *
25
+ * @default "white-filled"
26
+ */
7
27
  styleType?: SingpassButtonStyleType | undefined;
8
- /** The size type of the button. Values: "default" | "small" | "large" */
28
+ /**
29
+ * Size variant of the button.
30
+ *
31
+ * @default "default"
32
+ */
9
33
  sizeType?: SingpassButtonSizeType | undefined;
10
34
  }
35
+ /**
36
+ * Ref type for the underlying `<button>` element rendered by `SingpassButton`.
37
+ */
11
38
  export type SingpassButtonRef = React.Ref<HTMLButtonElement>;
@@ -1,3 +1,8 @@
1
1
  import React from "react";
2
2
  import type { SmartAppBannerProps } from "./types";
3
+ /**
4
+ * A fixed top banner that promotes a mobile app and links to its store listing.
5
+ *
6
+ * Use `SmartAppBanner` to invite users to install or open the native app.
7
+ */
3
8
  export declare const SmartAppBanner: (props: SmartAppBannerProps & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"smart-app-banner.js","sources":["../../src/smart-app-banner/smart-app-banner.tsx"],"sourcesContent":["import { CrossIcon } from \"@lifesg/react-icons/cross\";\nimport { StarIcon } from \"@lifesg/react-icons/star\";\nimport { StarFillIcon } from \"@lifesg/react-icons/star-fill\";\nimport { StarHalfIcon } from \"@lifesg/react-icons/star-half\";\nimport clsx from \"clsx\";\nimport React, { useContext, useRef } from \"react\";\n\nimport { Button } from \"../button\";\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport { useApplyStyle } from \"../theme\";\nimport { ThemeContext } from \"../theme/theme-provider/context\";\nimport { Typography } from \"../typography\";\nimport { mergeRefs } from \"../util\";\nimport * as styles from \"./smart-app-banner.styles\";\nimport type { SmartAppBannerProps } from \"./types\";\n\nconst APP_ICON =\n \"https://assets.life.gov.sg/react-design-system/img/app-icon/app-icon.png\";\n\nconst ID = \"smart-app-banner\";\nconst MAX_STARS = 5;\n\nfunction SmartAppBannerComponent(\n props: SmartAppBannerProps,\n ref: React.Ref<HTMLDivElement>\n): JSX.Element {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const {\n className,\n show,\n href,\n content,\n offset = 0,\n icon = APP_ICON,\n animated = false,\n onDismiss,\n onClick,\n } = props;\n\n const {\n title,\n message,\n buttonLabel,\n iconAriaLabel,\n buttonAriaLabel,\n numberOfStars,\n } = content;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const theme = useContext(ThemeContext);\n const isDark = theme?.mode === \"dark\";\n\n useApplyStyle(containerRef, {\n [styles.tokens.container.top]: `${offset}px`,\n });\n\n const ariaLabels = {\n dismiss: \"Close banner\",\n icon: iconAriaLabel ?? \"\",\n cta: buttonAriaLabel ?? buttonLabel,\n };\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleClick = (\n e: React.MouseEvent<HTMLDivElement | HTMLButtonElement>\n ) => {\n e.stopPropagation();\n window.open(href, \"_blank\", \"noreferrer\");\n onClick?.();\n };\n\n // =============================================================================\n // RENDER FUNCTION\n // =============================================================================\n\n const generateStarRating = () => {\n if (isNaN(numberOfStars) || numberOfStars < 0) {\n return;\n }\n\n const stars = [];\n const hasHalfStar = numberOfStars - Math.floor(numberOfStars) >= 0.4;\n\n for (let i = 0; i < Math.floor(numberOfStars); i++) {\n stars.push(\n <StarFillIcon\n key={`star${i}`}\n aria-hidden\n className={styles.starIcon}\n />\n );\n }\n if (hasHalfStar) {\n stars.push(\n <StarHalfIcon\n key={`halfstar`}\n aria-hidden\n className={styles.starIcon}\n />\n );\n }\n if (stars.length < MAX_STARS) {\n const remaining = 5 - stars.length;\n for (let i = 0; i < remaining; i++) {\n stars.push(\n <StarIcon\n key={`emptystar${i}`}\n aria-hidden\n className={styles.starIcon}\n />\n );\n }\n }\n\n /* maximum of 5 stars */\n return (\n <div\n className={styles.ratingContainer}\n role=\"group\"\n aria-label={`A rating of ${numberOfStars} out of ${MAX_STARS} stars`}\n data-testid={`${ID}-star-rating`}\n >\n {stars.slice(0, MAX_STARS)}\n </div>\n );\n };\n\n return (\n <>\n {show && (\n <div\n ref={mergeRefs(containerRef, ref)}\n data-testid={ID}\n className={clsx(\n styles.smartAppBannerContainer,\n isDark\n ? styles.smartAppBannerContainerDark\n : styles.smartAppBannerContainerLight,\n animated && styles.smartAppBannerContainerAnimated,\n className\n )}\n >\n <div\n className={styles.proceedContainer}\n onClick={handleClick}\n id={`${ID}-proceed`}\n data-testid={`${ID}-proceed-container`}\n >\n <img\n className={styles.bannerIcon}\n src={icon}\n alt={ariaLabels.icon}\n />\n <div className={styles.textContainer}>\n <Typography.BodySM className={styles.title}>\n {title}\n </Typography.BodySM>\n <Typography.BodyXS className={styles.description}>\n {message}\n </Typography.BodyXS>\n {generateStarRating()}\n </div>\n <div className={styles.buttonContainer}>\n <Button\n className={styles.button}\n type=\"button\"\n onClick={handleClick}\n aria-label={ariaLabels.cta}\n sizeType=\"small\"\n >\n {buttonLabel}\n </Button>\n </div>\n </div>\n <div\n className={styles.dismissContainer}\n onClick={onDismiss}\n id={`${ID}-dismiss`}\n data-testid={`${ID}-dismiss-container`}\n >\n <ClickableIcon\n className={styles.dismissButton}\n aria-label={ariaLabels.dismiss}\n >\n <CrossIcon className={styles.cross} />\n </ClickableIcon>\n </div>\n </div>\n )}\n </>\n );\n}\n\nexport const SmartAppBanner = React.forwardRef(SmartAppBannerComponent);\n"],"names":["APP_ICON","ID","SmartAppBanner","React","forwardRef","props","ref","className","show","href","content","offset","icon","animated","onDismiss","onClick","title","message","buttonLabel","iconAriaLabel","buttonAriaLabel","numberOfStars","containerRef","useRef","theme","useContext","ThemeContext","isDark","mode","useApplyStyle","styles.tokens","container","top","ariaLabels","dismiss","cta","handleClick","e","stopPropagation","window","open","_jsx","_Fragment","children","_jsxs","mergeRefs","clsx","styles.smartAppBannerContainer","styles.smartAppBannerContainerDark","styles.smartAppBannerContainerLight","styles.smartAppBannerContainerAnimated","styles.proceedContainer","id","styles.bannerIcon","src","alt","styles.textContainer","Typography","BodySM","styles.title","BodyXS","styles.description","isNaN","stars","hasHalfStar","Math","floor","i","push","StarFillIcon","styles.starIcon","StarHalfIcon","length","remaining","StarIcon","styles.ratingContainer","role","slice","generateStarRating","styles.buttonContainer","Button","styles.button","type","sizeType","styles.dismissContainer","ClickableIcon","styles.dismissButton","CrossIcon","styles.cross"],"mappings":"w+CAgBA,MAAMA,EACF,2EAEEC,EAAK,mBAiLJ,MAAMC,EAAiBC,EAAMC,YA9KpC,SACIC,EACAC,GAKA,MAAMC,UACFA,EAASC,KACTA,EAAIC,KACJA,EAAIC,QACJA,EAAOC,OACPA,EAAS,EAACC,KACVA,EAAOZ,EAAQa,SACfA,GAAW,EAAKC,UAChBA,EAASC,QACTA,GACAV,GAEEW,MACFA,EAAKC,QACLA,EAAOC,YACPA,EAAWC,cACXA,EAAaC,gBACbA,EAAeC,cACfA,GACAX,EAEEY,EAAeC,EAAuB,MACtCC,EAAQC,EAAWC,GACnBC,GAAyB,UAAhBH,aAAK,EAALA,EAAOI,MAEtBC,EAAcP,EAAc,CACxB,CAACQ,EAAcC,UAAUC,KAAM,GAAGrB,QAGtC,MAAMsB,GAAa,CACfC,QAAS,eACTtB,KAAMO,QAAAA,EAAiB,GACvBgB,IAAKf,QAAAA,EAAmBF,GAKtBkB,GACFC,IAEAA,EAAEC,kBACFC,OAAOC,KAAK/B,EAAM,SAAU,cAC5BM,SAAAA,GAAW,EA2Df,OACI0B,EAAAC,EAAA,CAAAC,SACKnC,GACGoC,SACItC,IAAKuC,EAAUvB,EAAchB,GAAI,cACpBL,EACbM,UAAWuC,EACPC,EACApB,GACMqB,EACAC,EACNpC,GAAYqC,EACZ3C,GACHoC,SAAA,CAEDC,SACIrC,UAAW4C,EACXpC,QAASqB,GACTgB,GAAI,GAAGnD,YAAY,cACN,GAAGA,gCAEhBwC,EAAA,MAAA,CACIlC,UAAW8C,EACXC,IAAK1C,EACL2C,IAAKtB,GAAWrB,OAEpBgC,EAAA,MAAA,CAAKrC,UAAWiD,EAAoBb,SAAA,CAChCF,EAACgB,EAAWC,OAAM,CAACnD,UAAWoD,EAAYhB,SACrC3B,IAELyB,EAACgB,EAAWG,OAAM,CAACrD,UAAWsD,EAAkBlB,SAC3C1B,IAnFF,MACvB,GAAI6C,MAAMzC,IAAkBA,EAAgB,EACxC,OAGJ,MAAM0C,EAAQ,GACRC,EAAc3C,EAAgB4C,KAAKC,MAAM7C,IAAkB,GAEjE,IAAK,IAAI8C,EAAI,EAAGA,EAAIF,KAAKC,MAAM7C,GAAgB8C,IAC3CJ,EAAMK,KACF3B,EAAC4B,oBAGG9D,UAAW+D,GAFN,OAAOH,MAexB,GATIH,GACAD,EAAMK,KACF3B,EAAC8B,EAAY,CAAA,eAAA,EAGThE,UAAW+D,GAFN,aAMbP,EAAMS,OApFA,EAoFoB,CAC1B,MAAMC,EAAY,EAAIV,EAAMS,OAC5B,IAAK,IAAIL,EAAI,EAAGA,EAAIM,EAAWN,IAC3BJ,EAAMK,KACF3B,EAACiC,oBAGGnE,UAAW+D,GAFN,YAAYH,KAMjC,CAGA,OACI1B,EAAA,MAAA,CACIlC,UAAWoE,EACXC,KAAK,QAAO,aACA,eAAevD,mBAAyC,cACvD,GAAGpB,gBAAgB0C,SAE/BoB,EAAMc,MAAM,EAzGX,IA0GA,EAqCWC,MAELrC,EAAA,MAAA,CAAKlC,UAAWwE,EAAsBpC,SAClCF,EAACuC,EAAM,CACHzE,UAAW0E,EACXC,KAAK,SACLnE,QAASqB,GAAW,aACRH,GAAWE,IACvBgD,SAAS,QAAOxC,SAEfzB,SAIbuB,EAAA,MAAA,CACIlC,UAAW6E,EACXrE,QAASD,EACTsC,GAAI,GAAGnD,0BACM,GAAGA,sBAAsB0C,SAEtCF,EAAC4C,EAAa,CACV9E,UAAW+E,EAAoB,aACnBrD,GAAWC,iBAEvBO,EAAC8C,GAAUhF,UAAWiF,YAOlD"}
1
+ {"version":3,"file":"smart-app-banner.js","sources":["../../src/smart-app-banner/smart-app-banner.tsx"],"sourcesContent":["import { CrossIcon } from \"@lifesg/react-icons/cross\";\nimport { StarIcon } from \"@lifesg/react-icons/star\";\nimport { StarFillIcon } from \"@lifesg/react-icons/star-fill\";\nimport { StarHalfIcon } from \"@lifesg/react-icons/star-half\";\nimport clsx from \"clsx\";\nimport React, { useContext, useRef } from \"react\";\n\nimport { Button } from \"../button\";\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport { useApplyStyle } from \"../theme\";\nimport { ThemeContext } from \"../theme/theme-provider/context\";\nimport { Typography } from \"../typography\";\nimport { mergeRefs } from \"../util\";\nimport * as styles from \"./smart-app-banner.styles\";\nimport type { SmartAppBannerProps } from \"./types\";\n\nconst APP_ICON =\n \"https://assets.life.gov.sg/react-design-system/img/app-icon/app-icon.png\";\n\nconst ID = \"smart-app-banner\";\nconst MAX_STARS = 5;\n\nfunction SmartAppBannerComponent(\n props: SmartAppBannerProps,\n ref: React.Ref<HTMLDivElement>\n): JSX.Element {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const {\n className,\n show,\n href,\n content,\n offset = 0,\n icon = APP_ICON,\n animated = false,\n onDismiss,\n onClick,\n } = props;\n\n const {\n title,\n message,\n buttonLabel,\n iconAriaLabel,\n buttonAriaLabel,\n numberOfStars,\n } = content;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const theme = useContext(ThemeContext);\n const isDark = theme?.mode === \"dark\";\n\n useApplyStyle(containerRef, {\n [styles.tokens.container.top]: `${offset}px`,\n });\n\n const ariaLabels = {\n dismiss: \"Close banner\",\n icon: iconAriaLabel ?? \"\",\n cta: buttonAriaLabel ?? buttonLabel,\n };\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleClick = (\n e: React.MouseEvent<HTMLDivElement | HTMLButtonElement>\n ) => {\n e.stopPropagation();\n window.open(href, \"_blank\", \"noreferrer\");\n onClick?.();\n };\n\n // =============================================================================\n // RENDER FUNCTION\n // =============================================================================\n\n const generateStarRating = () => {\n if (isNaN(numberOfStars) || numberOfStars < 0) {\n return;\n }\n\n const stars = [];\n const hasHalfStar = numberOfStars - Math.floor(numberOfStars) >= 0.4;\n\n for (let i = 0; i < Math.floor(numberOfStars); i++) {\n stars.push(\n <StarFillIcon\n key={`star${i}`}\n aria-hidden\n className={styles.starIcon}\n />\n );\n }\n if (hasHalfStar) {\n stars.push(\n <StarHalfIcon\n key={`halfstar`}\n aria-hidden\n className={styles.starIcon}\n />\n );\n }\n if (stars.length < MAX_STARS) {\n const remaining = 5 - stars.length;\n for (let i = 0; i < remaining; i++) {\n stars.push(\n <StarIcon\n key={`emptystar${i}`}\n aria-hidden\n className={styles.starIcon}\n />\n );\n }\n }\n\n /* maximum of 5 stars */\n return (\n <div\n className={styles.ratingContainer}\n role=\"group\"\n aria-label={`A rating of ${numberOfStars} out of ${MAX_STARS} stars`}\n data-testid={`${ID}-star-rating`}\n >\n {stars.slice(0, MAX_STARS)}\n </div>\n );\n };\n\n return (\n <>\n {show && (\n <div\n ref={mergeRefs(containerRef, ref)}\n data-testid={ID}\n className={clsx(\n styles.smartAppBannerContainer,\n isDark\n ? styles.smartAppBannerContainerDark\n : styles.smartAppBannerContainerLight,\n animated && styles.smartAppBannerContainerAnimated,\n className\n )}\n >\n <div\n className={styles.proceedContainer}\n onClick={handleClick}\n id={`${ID}-proceed`}\n data-testid={`${ID}-proceed-container`}\n >\n <img\n className={styles.bannerIcon}\n src={icon}\n alt={ariaLabels.icon}\n />\n <div className={styles.textContainer}>\n <Typography.BodySM className={styles.title}>\n {title}\n </Typography.BodySM>\n <Typography.BodyXS className={styles.description}>\n {message}\n </Typography.BodyXS>\n {generateStarRating()}\n </div>\n <div className={styles.buttonContainer}>\n <Button\n className={styles.button}\n type=\"button\"\n onClick={handleClick}\n aria-label={ariaLabels.cta}\n sizeType=\"small\"\n >\n {buttonLabel}\n </Button>\n </div>\n </div>\n <div\n className={styles.dismissContainer}\n onClick={onDismiss}\n id={`${ID}-dismiss`}\n data-testid={`${ID}-dismiss-container`}\n >\n <ClickableIcon\n className={styles.dismissButton}\n aria-label={ariaLabels.dismiss}\n >\n <CrossIcon className={styles.cross} />\n </ClickableIcon>\n </div>\n </div>\n )}\n </>\n );\n}\n\n/**\n * A fixed top banner that promotes a mobile app and links to its store listing.\n *\n * Use `SmartAppBanner` to invite users to install or open the native app.\n */\nexport const SmartAppBanner = React.forwardRef(SmartAppBannerComponent);\n"],"names":["APP_ICON","ID","SmartAppBanner","React","forwardRef","props","ref","className","show","href","content","offset","icon","animated","onDismiss","onClick","title","message","buttonLabel","iconAriaLabel","buttonAriaLabel","numberOfStars","containerRef","useRef","theme","useContext","ThemeContext","isDark","mode","useApplyStyle","styles.tokens","container","top","ariaLabels","dismiss","cta","handleClick","e","stopPropagation","window","open","_jsx","_Fragment","children","_jsxs","mergeRefs","clsx","styles.smartAppBannerContainer","styles.smartAppBannerContainerDark","styles.smartAppBannerContainerLight","styles.smartAppBannerContainerAnimated","styles.proceedContainer","id","styles.bannerIcon","src","alt","styles.textContainer","Typography","BodySM","styles.title","BodyXS","styles.description","isNaN","stars","hasHalfStar","Math","floor","i","push","StarFillIcon","styles.starIcon","StarHalfIcon","length","remaining","StarIcon","styles.ratingContainer","role","slice","generateStarRating","styles.buttonContainer","Button","styles.button","type","sizeType","styles.dismissContainer","ClickableIcon","styles.dismissButton","CrossIcon","styles.cross"],"mappings":"w+CAgBA,MAAMA,EACF,2EAEEC,EAAK,mBAsLJ,MAAMC,EAAiBC,EAAMC,YAnLpC,SACIC,EACAC,GAKA,MAAMC,UACFA,EAASC,KACTA,EAAIC,KACJA,EAAIC,QACJA,EAAOC,OACPA,EAAS,EAACC,KACVA,EAAOZ,EAAQa,SACfA,GAAW,EAAKC,UAChBA,EAASC,QACTA,GACAV,GAEEW,MACFA,EAAKC,QACLA,EAAOC,YACPA,EAAWC,cACXA,EAAaC,gBACbA,EAAeC,cACfA,GACAX,EAEEY,EAAeC,EAAuB,MACtCC,EAAQC,EAAWC,GACnBC,GAAyB,UAAhBH,aAAK,EAALA,EAAOI,MAEtBC,EAAcP,EAAc,CACxB,CAACQ,EAAcC,UAAUC,KAAM,GAAGrB,QAGtC,MAAMsB,GAAa,CACfC,QAAS,eACTtB,KAAMO,QAAAA,EAAiB,GACvBgB,IAAKf,QAAAA,EAAmBF,GAKtBkB,GACFC,IAEAA,EAAEC,kBACFC,OAAOC,KAAK/B,EAAM,SAAU,cAC5BM,SAAAA,GAAW,EA2Df,OACI0B,EAAAC,EAAA,CAAAC,SACKnC,GACGoC,SACItC,IAAKuC,EAAUvB,EAAchB,GAAI,cACpBL,EACbM,UAAWuC,EACPC,EACApB,GACMqB,EACAC,EACNpC,GAAYqC,EACZ3C,GACHoC,SAAA,CAEDC,SACIrC,UAAW4C,EACXpC,QAASqB,GACTgB,GAAI,GAAGnD,YAAY,cACN,GAAGA,gCAEhBwC,EAAA,MAAA,CACIlC,UAAW8C,EACXC,IAAK1C,EACL2C,IAAKtB,GAAWrB,OAEpBgC,EAAA,MAAA,CAAKrC,UAAWiD,EAAoBb,SAAA,CAChCF,EAACgB,EAAWC,OAAM,CAACnD,UAAWoD,EAAYhB,SACrC3B,IAELyB,EAACgB,EAAWG,OAAM,CAACrD,UAAWsD,EAAkBlB,SAC3C1B,IAnFF,MACvB,GAAI6C,MAAMzC,IAAkBA,EAAgB,EACxC,OAGJ,MAAM0C,EAAQ,GACRC,EAAc3C,EAAgB4C,KAAKC,MAAM7C,IAAkB,GAEjE,IAAK,IAAI8C,EAAI,EAAGA,EAAIF,KAAKC,MAAM7C,GAAgB8C,IAC3CJ,EAAMK,KACF3B,EAAC4B,oBAGG9D,UAAW+D,GAFN,OAAOH,MAexB,GATIH,GACAD,EAAMK,KACF3B,EAAC8B,EAAY,CAAA,eAAA,EAGThE,UAAW+D,GAFN,aAMbP,EAAMS,OApFA,EAoFoB,CAC1B,MAAMC,EAAY,EAAIV,EAAMS,OAC5B,IAAK,IAAIL,EAAI,EAAGA,EAAIM,EAAWN,IAC3BJ,EAAMK,KACF3B,EAACiC,oBAGGnE,UAAW+D,GAFN,YAAYH,KAMjC,CAGA,OACI1B,EAAA,MAAA,CACIlC,UAAWoE,EACXC,KAAK,QAAO,aACA,eAAevD,mBAAyC,cACvD,GAAGpB,gBAAgB0C,SAE/BoB,EAAMc,MAAM,EAzGX,IA0GA,EAqCWC,MAELrC,EAAA,MAAA,CAAKlC,UAAWwE,EAAsBpC,SAClCF,EAACuC,EAAM,CACHzE,UAAW0E,EACXC,KAAK,SACLnE,QAASqB,GAAW,aACRH,GAAWE,IACvBgD,SAAS,QAAOxC,SAEfzB,SAIbuB,EAAA,MAAA,CACIlC,UAAW6E,EACXrE,QAASD,EACTsC,GAAI,GAAGnD,0BACM,GAAGA,sBAAsB0C,SAEtCF,EAAC4C,EAAa,CACV9E,UAAW+E,EAAoB,aACnBrD,GAAWC,iBAEvBO,EAAC8C,GAAUhF,UAAWiF,YAOlD"}
@@ -1,4 +1,4 @@
1
- .s4qb553{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;position:fixed;margin:0.5rem 1.25rem;--fds-internal-smartAppBanner-container-top:initial;top:var(--fds-internal-smartAppBanner-container-top);left:0;width:calc(100% - 2.5rem);min-height:5.5rem;z-index:9001;background:var(--fds-colour-bg);border-radius:var(--fds-radius-md);}
1
+ @layer fds{.s4qb553{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;position:fixed;margin:0.5rem 1.25rem;--fds-internal-smartAppBanner-container-top:initial;top:var(--fds-internal-smartAppBanner-container-top);left:0;width:calc(100% - 2.5rem);min-height:5.5rem;z-index:9001;background:var(--fds-colour-bg);border-radius:var(--fds-radius-md);}
2
2
  .s1yw94wd{box-shadow:var(--fds-shadow-md-subtle);}
3
3
  .s1gji45a{border:var(--fds-border-width-010) var(--fds-border-style-solid) var(--fds-colour-border);}
4
4
  .s9k7xr8{-webkit-animation:smart-app-banner-slide-down-s9k7xr8 0.3s;animation:smart-app-banner-slide-down-s9k7xr8 0.3s;}@-webkit-keyframes smart-app-banner-slide-down-s9k7xr8{from{opacity:0;-webkit-transform:translateY(-20%);-moz-transform:translateY(-20%);-ms-transform:translateY(-20%);transform:translateY(-20%);}to{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}@keyframes smart-app-banner-slide-down-s9k7xr8{from{opacity:0;-webkit-transform:translateY(-20%);-moz-transform:translateY(-20%);-ms-transform:translateY(-20%);transform:translateY(-20%);}to{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}
@@ -13,4 +13,4 @@
13
13
  .tmo9z7m{font-weight:var(--fds-font-weight-bold);overflow-wrap:anywhere;}:where(body.fds-breakpoint-xs-max) .tmo9z7m{font-family:var(--fds-font-family-body);font-variant:var(--fds-font-variant);font-size:var(--fds-font-body-size-xs);font-weight:var(--fds-font-weight-bold);line-height:var(--fds-font-body-lh-xs);letter-spacing:var(--fds-font-body-ls-xs);}
14
14
  .dp7x5g3{overflow-wrap:anywhere;}
15
15
  .r1gggq6r{margin-top:0.25rem;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;}
16
- .sda01s1{height:2rem;width:2rem;padding-right:0.25rem;color:#ffc107;}
16
+ .sda01s1{height:2rem;width:2rem;padding-right:0.25rem;color:#ffc107;}}
@@ -1,19 +1,73 @@
1
+ /**
2
+ * Props for the `SmartAppBanner` component.
3
+ */
1
4
  export interface SmartAppBannerProps {
5
+ /**
6
+ * Controls whether the banner is visible.
7
+ */
2
8
  show: boolean;
9
+ /**
10
+ * Destination URL opened in a new tab when the banner or CTA button is clicked.
11
+ */
3
12
  href: string;
13
+ /**
14
+ * Text, labels, and rating content rendered inside the banner.
15
+ */
4
16
  content: SmartAppBannerContentProps;
17
+ /**
18
+ * Top offset in pixels applied to the banner's position.
19
+ *
20
+ * @default 0
21
+ */
5
22
  offset?: number | undefined;
23
+ /**
24
+ * URL of the app icon image displayed in the banner.
25
+ */
6
26
  icon?: string | undefined;
27
+ /**
28
+ * Applies a slide-in entrance animation to the banner.
29
+ *
30
+ * @default false
31
+ */
7
32
  animated?: boolean | undefined;
8
33
  className?: string | undefined;
34
+ /**
35
+ * Called when the user clicks the dismiss button.
36
+ */
9
37
  onDismiss: () => void;
38
+ /**
39
+ * Called when the user clicks on the banner or the CTA button.
40
+ */
10
41
  onClick?: (() => void) | undefined;
11
42
  }
43
+ /**
44
+ * Text content and accessible labels rendered inside `SmartAppBanner`.
45
+ */
12
46
  export interface SmartAppBannerContentProps {
47
+ /**
48
+ * Primary heading text, typically the app name.
49
+ */
13
50
  title: string;
51
+ /**
52
+ * Label text for the CTA button.
53
+ */
14
54
  buttonLabel: string;
55
+ /**
56
+ * Alt text for the app icon image.
57
+ *
58
+ * @default ""
59
+ */
15
60
  iconAriaLabel?: string | undefined;
61
+ /**
62
+ * Accessible label for the CTA button. Falls back to `buttonLabel` when omitted.
63
+ */
16
64
  buttonAriaLabel?: string | undefined;
65
+ /**
66
+ * Secondary description text displayed beneath the title.
67
+ */
17
68
  message?: string | undefined;
69
+ /**
70
+ * App store rating rendered as up to 5 star icons.
71
+ */
18
72
  numberOfStars: number;
19
73
  }
@@ -1,4 +1,4 @@
1
- .c16oikpn{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;width:100%;list-style-type:none;}
1
+ @layer fds{.c16oikpn{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;width:100%;list-style-type:none;}
2
2
  .c2536gp::after{content:"";height:inherit;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-bottom:var(--fds-border-width-040) var(--fds-border-style-solid) var(--fds-colour-border);}
3
3
  .c1c3wbud{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:var(--fds-border-width-040) var(--fds-border-style-solid) var(--fds-colour-border);--fds-internal-tab-chainItem-width:initial;width:var(--fds-internal-tab-chainItem-width, auto);}:where(body.fds-breakpoint-sm-max) .c1c3wbud{-webkit-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}
4
4
  .cdfiwt{border-color:var(--fds-colour-border-primary);}
@@ -11,4 +11,4 @@
11
11
  .d1v8j9lw{opacity:0;}
12
12
  .s5l4m4t{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-primary);opacity:0;outline:none;}:where(body.fds-breakpoint-sm-max) .s5l4m4t{max-width:20ch;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}
13
13
  .shqgesl{opacity:1;}
14
- .c1r7bbxk [data-id="left-fade-indicator-button"],.c1r7bbxk [data-id="right-fade-indicator-button"]{margin-bottom:var(--fds-spacing-4);}
14
+ .c1r7bbxk [data-id="left-fade-indicator-button"],.c1r7bbxk [data-id="right-fade-indicator-button"]{margin-bottom:var(--fds-spacing-4);}}
package/tab/tab.d.ts CHANGED
@@ -1,8 +1,15 @@
1
1
  import type { TabProps } from "./types";
2
+ /**
3
+ * A tabbed-panel layout that switches visible content by selecting a tab link.
4
+ *
5
+ * Use `Tab` to organise content into labelled panels where only one panel is
6
+ * visible at a time. Compose with `Tab.Item` to define each panel.
7
+ */
2
8
  export declare const Tab: {
3
9
  ({ children, currentActive: currentActiveIndex, initialActive, onTabClick, "data-testid": testId, className, fullWidthIndicatorLine, fadeColor, ...otherProps }: TabProps): import("react/jsx-runtime").JSX.Element;
4
10
  displayName: string;
5
11
  } & {
12
+ /** Renders an individual content panel within a `Tab`. */
6
13
  Item: {
7
14
  ({ index, children, titleAddon: _titleAddon, ...otherProps }: import("./tab-item").TabItemComponentProps): import("react/jsx-runtime").JSX.Element | null;
8
15
  displayName: string;
package/tab/tab.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tab.js","sources":["../../src/tab/tab.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { ReactElement } from \"react\";\nimport { Children, cloneElement, useEffect, useMemo, useState } from \"react\";\n\nimport * as styles from \"./tab.styles\";\nimport type { TabLinkProps } from \"./tab-context\";\nimport { TabContext } from \"./tab-context\";\nimport { TabItem } from \"./tab-item\";\nimport { TabLinkChain } from \"./tab-link-chain\";\nimport type { TabItemProps, TabProps } from \"./types\";\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\nconst TabBase = ({\n children,\n currentActive: currentActiveIndex,\n initialActive = 0,\n onTabClick,\n \"data-testid\": testId,\n className,\n fullWidthIndicatorLine,\n fadeColor,\n ...otherProps\n}: TabProps) => {\n // =========================================================================\n // CONST, STATE, REFS\n // =========================================================================\n const [currentActive, setCurrentActive] = useState<number>(\n currentActiveIndex || initialActive\n );\n\n const tabLinks = useMemo(() => {\n const validChildren = Children.toArray(children).filter(\n Boolean\n ) as ReactElement<TabItemProps>[];\n\n return validChildren.map((child) => {\n return {\n title: child.props.title,\n width: child.props.width,\n titleAddon: child.props.titleAddon,\n };\n }) as TabLinkProps[];\n }, [children]);\n\n const tabContextValue = useMemo(\n () => ({\n tabLinks,\n currentActiveIndex: currentActive,\n setCurrentActiveIndex: setCurrentActive,\n }),\n [currentActive, tabLinks]\n );\n\n // =========================================================================\n // Effects\n // =========================================================================\n useEffect(() => {\n if (typeof currentActiveIndex === \"number\") {\n setCurrentActive(currentActiveIndex);\n }\n }, [currentActiveIndex]);\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n const renderChildren = () => {\n const validChildren = Children.toArray(children).filter(Boolean);\n\n return validChildren.map((child, index) => {\n const element = child as ReactElement<TabItemProps>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return cloneElement(child as ReactElement<any>, {\n key: element.key ?? element.props.title,\n index,\n });\n });\n };\n\n return (\n <div\n data-testid={testId}\n className={clsx(styles.wrapper, className)}\n {...otherProps}\n >\n <TabContext.Provider value={tabContextValue}>\n <TabLinkChain\n controlledMode={typeof currentActiveIndex === \"number\"}\n onTabClick={onTabClick}\n data-testid={`${testId}-tabs`}\n fullWidthIndicatorLine={fullWidthIndicatorLine}\n fadeColor={fadeColor}\n />\n {renderChildren()}\n </TabContext.Provider>\n </div>\n );\n};\n\nTabBase.displayName = \"Tab\";\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\nexport const Tab = Object.assign(TabBase, {\n Item: TabItem,\n});\n"],"names":["TabBase","_a","children","currentActive","currentActiveIndex","initialActive","onTabClick","testId","className","fullWidthIndicatorLine","fadeColor","otherProps","__rest","setCurrentActive","useState","tabLinks","useMemo","Children","toArray","filter","Boolean","map","child","title","props","width","titleAddon","tabContextValue","setCurrentActiveIndex","useEffect","_jsx","Object","assign","clsx","styles.wrapper","_jsxs","TabContext","Provider","value","TabLinkChain","controlledMode","index","element","cloneElement","key","displayName","Tab","Item","TabItem"],"mappings":"qYAcA,MAAMA,EAAWC,QAAAC,SACbA,EACAC,cAAeC,EAAkBC,cACjCA,EAAgB,EAACC,WACjBA,EACA,cAAeC,EAAMC,UACrBA,EAASC,uBACTA,EAAsBC,UACtBA,GAAST,EACNU,EAAUC,EAAAX,EATA,CAAA,WAAA,gBAAA,gBAAA,aAAA,cAAA,YAAA,yBAAA,cAcb,MAAOE,EAAeU,GAAoBC,EACtCV,GAAsBC,GAGpBU,EAAWC,GAAQ,IACCC,EAASC,QAAQhB,GAAUiB,OAC7CC,SAGiBC,KAAKC,IACf,CACHC,MAAOD,EAAME,MAAMD,MACnBE,MAAOH,EAAME,MAAMC,MACnBC,WAAYJ,EAAME,MAAME,gBAGjC,CAACxB,IAEEyB,EAAkBX,GACpB,KAAA,CACID,WACAX,mBAAoBD,EACpByB,sBAAuBf,KAE3B,CAACV,EAAeY,IAMpBc,GAAU,KAC4B,iBAAvBzB,GACPS,EAAiBT,EACrB,GACD,CAACA,IAmBJ,OACI0B,EAAA,MAAAC,OAAAC,OAAA,CAAA,cACiBzB,EACbC,UAAWyB,EAAKC,EAAgB1B,IAC5BG,EAAU,CAAAT,SAEdiC,EAACC,EAAWC,SAAQ,CAACC,MAAOX,EAAezB,SAAA,CACvC4B,EAACS,EAAY,CACTC,eAA8C,iBAAvBpC,EACvBE,WAAYA,EAAU,cACT,GAAGC,SAChBE,uBAAwBA,EACxBC,UAAWA,IAzBDO,EAASC,QAAQhB,GAAUiB,OAAOC,SAEnCC,KAAI,CAACC,EAAOmB,WAC7B,MAAMC,EAAUpB,EAGhB,OAAOqB,EAAarB,EAA4B,CAC5CsB,YAAK3C,EAAAyC,EAAQE,mBAAOF,EAAQlB,MAAMD,MAClCkB,SACF,SAoBA,EAIdzC,EAAQ6C,YAAc,YAKTC,EAAMf,OAAOC,OAAOhC,EAAS,CACtC+C,KAAMC"}
1
+ {"version":3,"file":"tab.js","sources":["../../src/tab/tab.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { ReactElement } from \"react\";\nimport { Children, cloneElement, useEffect, useMemo, useState } from \"react\";\n\nimport * as styles from \"./tab.styles\";\nimport type { TabLinkProps } from \"./tab-context\";\nimport { TabContext } from \"./tab-context\";\nimport { TabItem } from \"./tab-item\";\nimport { TabLinkChain } from \"./tab-link-chain\";\nimport type { TabItemProps, TabProps } from \"./types\";\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\nconst TabBase = ({\n children,\n currentActive: currentActiveIndex,\n initialActive = 0,\n onTabClick,\n \"data-testid\": testId,\n className,\n fullWidthIndicatorLine,\n fadeColor,\n ...otherProps\n}: TabProps) => {\n // =========================================================================\n // CONST, STATE, REFS\n // =========================================================================\n const [currentActive, setCurrentActive] = useState<number>(\n currentActiveIndex || initialActive\n );\n\n const tabLinks = useMemo(() => {\n const validChildren = Children.toArray(children).filter(\n Boolean\n ) as ReactElement<TabItemProps>[];\n\n return validChildren.map((child) => {\n return {\n title: child.props.title,\n width: child.props.width,\n titleAddon: child.props.titleAddon,\n };\n }) as TabLinkProps[];\n }, [children]);\n\n const tabContextValue = useMemo(\n () => ({\n tabLinks,\n currentActiveIndex: currentActive,\n setCurrentActiveIndex: setCurrentActive,\n }),\n [currentActive, tabLinks]\n );\n\n // =========================================================================\n // Effects\n // =========================================================================\n useEffect(() => {\n if (typeof currentActiveIndex === \"number\") {\n setCurrentActive(currentActiveIndex);\n }\n }, [currentActiveIndex]);\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n const renderChildren = () => {\n const validChildren = Children.toArray(children).filter(Boolean);\n\n return validChildren.map((child, index) => {\n const element = child as ReactElement<TabItemProps>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return cloneElement(child as ReactElement<any>, {\n key: element.key ?? element.props.title,\n index,\n });\n });\n };\n\n return (\n <div\n data-testid={testId}\n className={clsx(styles.wrapper, className)}\n {...otherProps}\n >\n <TabContext.Provider value={tabContextValue}>\n <TabLinkChain\n controlledMode={typeof currentActiveIndex === \"number\"}\n onTabClick={onTabClick}\n data-testid={`${testId}-tabs`}\n fullWidthIndicatorLine={fullWidthIndicatorLine}\n fadeColor={fadeColor}\n />\n {renderChildren()}\n </TabContext.Provider>\n </div>\n );\n};\n\nTabBase.displayName = \"Tab\";\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\n/**\n * A tabbed-panel layout that switches visible content by selecting a tab link.\n *\n * Use `Tab` to organise content into labelled panels where only one panel is\n * visible at a time. Compose with `Tab.Item` to define each panel.\n */\nexport const Tab = Object.assign(TabBase, {\n /** Renders an individual content panel within a `Tab`. */\n Item: TabItem,\n});\n"],"names":["TabBase","_a","children","currentActive","currentActiveIndex","initialActive","onTabClick","testId","className","fullWidthIndicatorLine","fadeColor","otherProps","__rest","setCurrentActive","useState","tabLinks","useMemo","Children","toArray","filter","Boolean","map","child","title","props","width","titleAddon","tabContextValue","setCurrentActiveIndex","useEffect","_jsx","Object","assign","clsx","styles.wrapper","_jsxs","TabContext","Provider","value","TabLinkChain","controlledMode","index","element","cloneElement","key","displayName","Tab","Item","TabItem"],"mappings":"qYAcA,MAAMA,EAAWC,QAAAC,SACbA,EACAC,cAAeC,EAAkBC,cACjCA,EAAgB,EAACC,WACjBA,EACA,cAAeC,EAAMC,UACrBA,EAASC,uBACTA,EAAsBC,UACtBA,GAAST,EACNU,EAAUC,EAAAX,EATA,CAAA,WAAA,gBAAA,gBAAA,aAAA,cAAA,YAAA,yBAAA,cAcb,MAAOE,EAAeU,GAAoBC,EACtCV,GAAsBC,GAGpBU,EAAWC,GAAQ,IACCC,EAASC,QAAQhB,GAAUiB,OAC7CC,SAGiBC,KAAKC,IACf,CACHC,MAAOD,EAAME,MAAMD,MACnBE,MAAOH,EAAME,MAAMC,MACnBC,WAAYJ,EAAME,MAAME,gBAGjC,CAACxB,IAEEyB,EAAkBX,GACpB,KAAA,CACID,WACAX,mBAAoBD,EACpByB,sBAAuBf,KAE3B,CAACV,EAAeY,IAMpBc,GAAU,KAC4B,iBAAvBzB,GACPS,EAAiBT,EACrB,GACD,CAACA,IAmBJ,OACI0B,EAAA,MAAAC,OAAAC,OAAA,CAAA,cACiBzB,EACbC,UAAWyB,EAAKC,EAAgB1B,IAC5BG,EAAU,CAAAT,SAEdiC,EAACC,EAAWC,SAAQ,CAACC,MAAOX,EAAezB,SAAA,CACvC4B,EAACS,EAAY,CACTC,eAA8C,iBAAvBpC,EACvBE,WAAYA,EAAU,cACT,GAAGC,SAChBE,uBAAwBA,EACxBC,UAAWA,IAzBDO,EAASC,QAAQhB,GAAUiB,OAAOC,SAEnCC,KAAI,CAACC,EAAOmB,WAC7B,MAAMC,EAAUpB,EAGhB,OAAOqB,EAAarB,EAA4B,CAC5CsB,YAAK3C,EAAAyC,EAAQE,mBAAOF,EAAQlB,MAAMD,MAClCkB,SACF,SAoBA,EAIdzC,EAAQ6C,YAAc,YAWTC,EAAMf,OAAOC,OAAOhC,EAAS,CAEtC+C,KAAMC"}
@@ -1 +1 @@
1
- .wchm9bj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}
1
+ @layer fds{.wchm9bj{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}}
package/tab/types.d.ts CHANGED
@@ -1,33 +1,82 @@
1
1
  import type { FadeColorSet } from "../shared/fade-wrapper";
2
+ /**
3
+ * Props for the `Tab` component.
4
+ */
2
5
  export interface TabProps {
3
6
  children: JSX.Element | JSX.Element[];
4
- /** Specify the initial tab index that is to be displayed */
7
+ /**
8
+ * Zero-based index of the tab panel displayed on first render.
9
+ *
10
+ * Ignored when `currentActive` is provided.
11
+ *
12
+ * @default 0
13
+ */
5
14
  initialActive?: number | undefined;
6
15
  /**
7
- * Specify the current tab index that is to be displayed. By specifying
8
- * this prop, the tab rendering will be manually controlled by you
16
+ * Zero-based index of the currently active tab panel.
17
+ *
18
+ * When provided, the component operates in controlled mode — the caller is
19
+ * responsible for updating this value in response to `onTabClick` to
20
+ * reflect tab changes.
9
21
  */
10
22
  currentActive?: number;
11
23
  className?: string | undefined;
12
24
  id?: string | undefined;
13
25
  "data-testid"?: string | undefined;
26
+ /**
27
+ * Called when the user clicks a tab link.
28
+ *
29
+ * @param title The `title` of the clicked `Tab.Item`.
30
+ * @param index The zero-based index of the clicked `Tab.Item`.
31
+ */
14
32
  onTabClick?: ((title: string, index: number) => void) | undefined;
33
+ /**
34
+ * Extends all tab indicator lines to the full width
35
+ * of the tab bar instead of matching only the tab link width.
36
+ *
37
+ * @default false
38
+ */
15
39
  fullWidthIndicatorLine?: boolean | undefined;
40
+ /**
41
+ * Background color(s) used for the fade overlays at the edges of the
42
+ * scrollable tab link bar.
43
+ *
44
+ * Pass a `string[]` to apply the same gradient stop colors on both edges,
45
+ * or a `FadeColorSet` to specify left and right edges independently.
46
+ */
16
47
  fadeColor?: string[] | FadeColorSet | undefined;
17
48
  }
49
+ /**
50
+ * Props for the `Tab.Item` sub-component.
51
+ */
18
52
  export interface TabItemProps {
53
+ /**
54
+ * Text label rendered in the tab link bar for this panel.
55
+ */
19
56
  title: string;
20
57
  children: JSX.Element | JSX.Element[];
21
- /** Custom addon content displayed next to the tab title */
58
+ /**
59
+ * Optional addon element rendered alongside the tab title in the link bar.
60
+ */
22
61
  titleAddon?: TitleAddonProps | undefined;
23
62
  className?: string | undefined;
24
63
  id?: string | undefined;
25
64
  "data-testid"?: string | undefined;
65
+ /**
66
+ * Explicit width for this tab link in the tab bar. Accepts any valid CSS width value.
67
+ */
26
68
  width?: string | undefined;
27
69
  }
70
+ /**
71
+ * Configuration for the optional addon element displayed next to a tab title.
72
+ */
28
73
  export interface TitleAddonProps {
29
- /** addon content */
74
+ /** The element rendered as the addon. */
30
75
  content: JSX.Element;
31
- /** position of the addon content, defaults to "right" */
76
+ /**
77
+ * Which side of the tab title the addon appears on.
78
+ *
79
+ * @default "right"
80
+ */
32
81
  position?: "left" | "right" | undefined;
33
82
  }
package/table/table.d.ts CHANGED
@@ -1,28 +1,49 @@
1
+ /**
2
+ * A styled HTML table with a scrollable container wrapper.
3
+ *
4
+ * Use `Table` when displaying structured tabular data. The default export
5
+ * wraps content in `Table.Container` and `Table.Table` automatically. For
6
+ * full layout control, compose the sub-components directly:
7
+ * - `Table.Container` — scrollable wrapper div
8
+ * - `Table.Table` — the bare `<table>` element
9
+ * - `Table.Head` — the `<thead>` section
10
+ * - `Table.Body` — the `<tbody>` section
11
+ * - `Table.Row` — a `<tr>` row within the body
12
+ * - `Table.Cell` — a `<td>` data cell
13
+ * - `Table.HeaderCell` — a `<th>` column header cell
14
+ */
1
15
  export declare const Table: (({ children, ...props }: React.TableHTMLAttributes<HTMLTableElement>) => import("react/jsx-runtime").JSX.Element) & {
16
+ /** Scrollable wrapper div that contains a `Table.Table`. */
2
17
  Container: {
3
18
  ({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
4
19
  displayName: string;
5
20
  };
21
+ /** The bare `<table>` element. Use directly when you need to place the table inside a custom container. */
6
22
  Table: {
7
23
  ({ children, className, ...props }: React.TableHTMLAttributes<HTMLTableElement>): import("react/jsx-runtime").JSX.Element;
8
24
  displayName: string;
9
25
  };
26
+ /** Renders the `<thead>` section of the table. */
10
27
  Head: {
11
28
  ({ children, ...props }: React.HTMLAttributes<HTMLTableSectionElement>): import("react/jsx-runtime").JSX.Element;
12
29
  displayName: string;
13
30
  };
31
+ /** Renders the `<tbody>` section of the table. */
14
32
  Body: {
15
33
  ({ children, className, ...props }: React.HTMLAttributes<HTMLTableSectionElement>): import("react/jsx-runtime").JSX.Element;
16
34
  displayName: string;
17
35
  };
36
+ /** Renders a `<tr>` row within a `Table.Body`. */
18
37
  Row: {
19
38
  ({ children, className, ...props }: React.HTMLAttributes<HTMLTableRowElement>): import("react/jsx-runtime").JSX.Element;
20
39
  displayName: string;
21
40
  };
41
+ /** Renders a `<td>` data cell within a `Table.Row`. */
22
42
  Cell: {
23
43
  ({ children, className, ...props }: React.TdHTMLAttributes<HTMLTableCellElement>): import("react/jsx-runtime").JSX.Element;
24
44
  displayName: string;
25
45
  };
46
+ /** Renders a `<th>` header cell within a `Table.Head` row. */
26
47
  HeaderCell: {
27
48
  ({ children, className, ...props }: React.ThHTMLAttributes<HTMLTableCellElement>): import("react/jsx-runtime").JSX.Element;
28
49
  displayName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../src/table/table.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nimport * as styles from \"./table.styles\";\n\nconst Head = ({\n children,\n ...props\n}: React.HTMLAttributes<HTMLTableSectionElement>) => (\n <thead {...props}>{children}</thead>\n);\nHead.displayName = \"Table.Head\";\n\nconst Body = ({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLTableSectionElement>) => (\n <tbody className={clsx(styles.tableBody, className)} {...props}>\n {children}\n </tbody>\n);\nBody.displayName = \"Table.Body\";\n\nconst Row = ({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLTableRowElement>) => (\n <tr className={clsx(styles.bodyRow, className)} {...props}>\n {children}\n </tr>\n);\nRow.displayName = \"Table.Row\";\n\nconst Cell = ({\n children,\n className,\n ...props\n}: React.TdHTMLAttributes<HTMLTableCellElement>) => (\n <td className={clsx(styles.bodyCell, className)} {...props}>\n {children}\n </td>\n);\nCell.displayName = \"Table.Cell\";\n\nconst Header = ({\n children,\n className,\n ...props\n}: React.ThHTMLAttributes<HTMLTableCellElement>) => (\n <th className={clsx(styles.headerCell, className)} {...props}>\n {children}\n </th>\n);\nHeader.displayName = \"Table.HeaderCell\";\n\nconst Container = ({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={clsx(styles.tableWrapper, className)}\n data-testid=\"table-wrapper\"\n {...props}\n >\n {children}\n </div>\n);\nContainer.displayName = \"Table.Container\";\n\nconst TableEl = ({\n children,\n className,\n ...props\n}: React.TableHTMLAttributes<HTMLTableElement>) => (\n <table className={clsx(styles.tableComponent, className)} {...props}>\n {children}\n </table>\n);\nTableEl.displayName = \"Table.Table\";\n\nexport const Table = Object.assign(\n ({ children, ...props }: React.TableHTMLAttributes<HTMLTableElement>) => (\n <Container>\n <TableEl {...props}>{children}</TableEl>\n </Container>\n ),\n {\n Container,\n Table: TableEl,\n Head,\n Body,\n Row,\n Cell,\n HeaderCell: Header,\n }\n);\n"],"names":["Head","_a","children","props","__rest","_jsx","Object","assign","displayName","Body","className","clsx","styles.tableBody","Row","styles.bodyRow","Cell","styles.bodyCell","Header","styles.headerCell","Container","styles.tableWrapper","TableEl","styles.tableComponent","Table","HeaderCell"],"mappings":"0OAIA,MAAMA,EAAQC,IAAA,IAAAC,SACVA,GAAQD,EACLE,EAAKC,EAAAH,EAFE,cAGuC,OACjDI,EAAA,QAAAC,OAAAC,OAAA,GAAWJ,YAAQD,IAAiB,EAExCF,EAAKQ,YAAc,aAEnB,MAAMC,EAAQR,QAAAC,SACVA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHE,0BAIuC,OACjDI,EAAA,QAAAC,OAAAC,OAAA,CAAOG,UAAWC,EAAKC,EAAkBF,IAAgBP,YACpDD,IACG,EAEZO,EAAKD,YAAc,aAEnB,MAAMK,EAAOZ,QAAAC,SACTA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHC,0BAIoC,OAC7CI,EAAA,KAAAC,OAAAC,OAAA,CAAIG,UAAWC,EAAKG,EAAgBJ,IAAgBP,YAC/CD,IACA,EAETW,EAAIL,YAAc,YAElB,MAAMO,EAAQd,QAAAC,SACVA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHE,0BAIsC,OAChDI,EAAA,KAAAC,OAAAC,OAAA,CAAIG,UAAWC,EAAKK,EAAiBN,IAAgBP,YAChDD,IACA,EAETa,EAAKP,YAAc,aAEnB,MAAMS,EAAUhB,QAAAC,SACZA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHI,0BAIoC,OAChDI,EAAA,KAAAC,OAAAC,OAAA,CAAIG,UAAWC,EAAKO,EAAmBR,IAAgBP,YAClDD,IACA,EAETe,EAAOT,YAAc,mBAErB,MAAMW,EAAalB,QAAAC,SACfA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHO,0BAIyB,OACxCI,uBACIK,UAAWC,EAAKS,EAAqBV,GAAU,cACnC,iBACRP,YAEHD,IACC,EAEViB,EAAUX,YAAc,kBAExB,MAAMa,EAAWpB,QAAAC,SACbA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHK,0BAIkC,OAC/CI,EAAA,QAAAC,OAAAC,OAAA,CAAOG,UAAWC,EAAKW,EAAuBZ,IAAgBP,YACzDD,IACG,EAEZmB,EAAQb,YAAc,cAEf,MAAMe,EAAQjB,OAAOC,QACvBN,IAAA,IAAAC,SAAEA,GAAQD,EAAKE,EAAKC,EAAAH,EAApB,cAAwE,OACrEI,EAACc,EAAS,CAAAjB,SACNG,EAACgB,EAAOf,OAAAC,OAAA,CAAA,EAAKJ,EAAK,CAAAD,SAAGA,MACb,GAEhB,CACIiB,YACAI,MAAOF,EACPrB,OACAS,OACAI,MACAE,OACAS,WAAYP"}
1
+ {"version":3,"file":"table.js","sources":["../../src/table/table.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nimport * as styles from \"./table.styles\";\n\nconst Head = ({\n children,\n ...props\n}: React.HTMLAttributes<HTMLTableSectionElement>) => (\n <thead {...props}>{children}</thead>\n);\nHead.displayName = \"Table.Head\";\n\nconst Body = ({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLTableSectionElement>) => (\n <tbody className={clsx(styles.tableBody, className)} {...props}>\n {children}\n </tbody>\n);\nBody.displayName = \"Table.Body\";\n\nconst Row = ({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLTableRowElement>) => (\n <tr className={clsx(styles.bodyRow, className)} {...props}>\n {children}\n </tr>\n);\nRow.displayName = \"Table.Row\";\n\nconst Cell = ({\n children,\n className,\n ...props\n}: React.TdHTMLAttributes<HTMLTableCellElement>) => (\n <td className={clsx(styles.bodyCell, className)} {...props}>\n {children}\n </td>\n);\nCell.displayName = \"Table.Cell\";\n\nconst Header = ({\n children,\n className,\n ...props\n}: React.ThHTMLAttributes<HTMLTableCellElement>) => (\n <th className={clsx(styles.headerCell, className)} {...props}>\n {children}\n </th>\n);\nHeader.displayName = \"Table.HeaderCell\";\n\nconst Container = ({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={clsx(styles.tableWrapper, className)}\n data-testid=\"table-wrapper\"\n {...props}\n >\n {children}\n </div>\n);\nContainer.displayName = \"Table.Container\";\n\nconst TableEl = ({\n children,\n className,\n ...props\n}: React.TableHTMLAttributes<HTMLTableElement>) => (\n <table className={clsx(styles.tableComponent, className)} {...props}>\n {children}\n </table>\n);\nTableEl.displayName = \"Table.Table\";\n\n/**\n * A styled HTML table with a scrollable container wrapper.\n *\n * Use `Table` when displaying structured tabular data. The default export\n * wraps content in `Table.Container` and `Table.Table` automatically. For\n * full layout control, compose the sub-components directly:\n * - `Table.Container` — scrollable wrapper div\n * - `Table.Table` — the bare `<table>` element\n * - `Table.Head` — the `<thead>` section\n * - `Table.Body` — the `<tbody>` section\n * - `Table.Row` — a `<tr>` row within the body\n * - `Table.Cell` — a `<td>` data cell\n * - `Table.HeaderCell` — a `<th>` column header cell\n */\nexport const Table = Object.assign(\n ({ children, ...props }: React.TableHTMLAttributes<HTMLTableElement>) => (\n <Container>\n <TableEl {...props}>{children}</TableEl>\n </Container>\n ),\n {\n /** Scrollable wrapper div that contains a `Table.Table`. */\n Container,\n /** The bare `<table>` element. Use directly when you need to place the table inside a custom container. */\n Table: TableEl,\n /** Renders the `<thead>` section of the table. */\n Head,\n /** Renders the `<tbody>` section of the table. */\n Body,\n /** Renders a `<tr>` row within a `Table.Body`. */\n Row,\n /** Renders a `<td>` data cell within a `Table.Row`. */\n Cell,\n /** Renders a `<th>` header cell within a `Table.Head` row. */\n HeaderCell: Header,\n }\n);\n"],"names":["Head","_a","children","props","__rest","_jsx","Object","assign","displayName","Body","className","clsx","styles.tableBody","Row","styles.bodyRow","Cell","styles.bodyCell","Header","styles.headerCell","Container","styles.tableWrapper","TableEl","styles.tableComponent","Table","HeaderCell"],"mappings":"0OAIA,MAAMA,EAAQC,IAAA,IAAAC,SACVA,GAAQD,EACLE,EAAKC,EAAAH,EAFE,cAGuC,OACjDI,EAAA,QAAAC,OAAAC,OAAA,GAAWJ,YAAQD,IAAiB,EAExCF,EAAKQ,YAAc,aAEnB,MAAMC,EAAQR,QAAAC,SACVA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHE,0BAIuC,OACjDI,EAAA,QAAAC,OAAAC,OAAA,CAAOG,UAAWC,EAAKC,EAAkBF,IAAgBP,YACpDD,IACG,EAEZO,EAAKD,YAAc,aAEnB,MAAMK,EAAOZ,QAAAC,SACTA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHC,0BAIoC,OAC7CI,EAAA,KAAAC,OAAAC,OAAA,CAAIG,UAAWC,EAAKG,EAAgBJ,IAAgBP,YAC/CD,IACA,EAETW,EAAIL,YAAc,YAElB,MAAMO,EAAQd,QAAAC,SACVA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHE,0BAIsC,OAChDI,EAAA,KAAAC,OAAAC,OAAA,CAAIG,UAAWC,EAAKK,EAAiBN,IAAgBP,YAChDD,IACA,EAETa,EAAKP,YAAc,aAEnB,MAAMS,EAAUhB,QAAAC,SACZA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHI,0BAIoC,OAChDI,EAAA,KAAAC,OAAAC,OAAA,CAAIG,UAAWC,EAAKO,EAAmBR,IAAgBP,YAClDD,IACA,EAETe,EAAOT,YAAc,mBAErB,MAAMW,EAAalB,QAAAC,SACfA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHO,0BAIyB,OACxCI,uBACIK,UAAWC,EAAKS,EAAqBV,GAAU,cACnC,iBACRP,YAEHD,IACC,EAEViB,EAAUX,YAAc,kBAExB,MAAMa,EAAWpB,QAAAC,SACbA,EAAQQ,UACRA,GAAST,EACNE,EAAKC,EAAAH,EAHK,0BAIkC,OAC/CI,EAAA,QAAAC,OAAAC,OAAA,CAAOG,UAAWC,EAAKW,EAAuBZ,IAAgBP,YACzDD,IACG,EAEZmB,EAAQb,YAAc,cAgBf,MAAMe,EAAQjB,OAAOC,QACvBN,IAAA,IAAAC,SAAEA,GAAQD,EAAKE,EAAKC,EAAAH,EAApB,cAAwE,OACrEI,EAACc,EAAS,CAAAjB,SACNG,EAACgB,EAAOf,OAAAC,OAAA,CAAA,EAAKJ,EAAK,CAAAD,SAAGA,MACb,GAEhB,CAEIiB,YAEAI,MAAOF,EAEPrB,OAEAS,OAEAI,MAEAE,OAEAS,WAAYP"}
@@ -1,2 +1,2 @@
1
- import"./table.styles_1af5ipv.css";const t="txzjt0s",s="t110f2kz",e="tdex3lc",a="htqww2s",b="b1gaqki2",l="b183mjh5";export{l as bodyCell,b as bodyRow,a as headerCell,e as tableBody,s as tableComponent,t as tableWrapper};
1
+ import"./table.styles_1vjx31g.css";const t="txzjt0s",s="t110f2kz",e="tdex3lc",b="htqww2s",l="b1gaqki2",x="b183mjh5";export{x as bodyCell,l as bodyRow,b as headerCell,e as tableBody,s as tableComponent,t as tableWrapper};
2
2
  //# sourceMappingURL=table.styles.js.map