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

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 (910) hide show
  1. package/accordion/accordion.js.map +1 -1
  2. package/accordion/types.d.ts +1 -1
  3. package/alert/alert.js.map +1 -1
  4. package/alert/types.d.ts +2 -0
  5. package/animations/loading-dots/loading-dots.d.ts +5 -2
  6. package/animations/loading-dots/loading-dots.js.map +1 -1
  7. package/animations/loading-dots-spinner/loading-dots-spinner.d.ts +3 -0
  8. package/animations/loading-dots-spinner/loading-dots-spinner.js.map +1 -1
  9. package/animations/loading-dots-spinner/lottie-animation.d.ts +2 -2
  10. package/animations/loading-dots-spinner/lottie-animation.js.map +1 -1
  11. package/animations/loading-spinner/loading-spinner.d.ts +5 -2
  12. package/animations/loading-spinner/loading-spinner.js.map +1 -1
  13. package/animations/themed-loading-spinner/themed-loading-spinner.d.ts +5 -2
  14. package/animations/themed-loading-spinner/themed-loading-spinner.js.map +1 -1
  15. package/animations/types.d.ts +13 -6
  16. package/avatar/avatar.js.map +1 -1
  17. package/badge/badge.js.map +1 -1
  18. package/badge/types.d.ts +13 -2
  19. package/box-container/box-container.js.map +1 -1
  20. package/box-container/types.d.ts +2 -0
  21. package/breadcrumb/breadcrumb.d.ts +7 -0
  22. package/breadcrumb/breadcrumb.js.map +1 -1
  23. package/breadcrumb/types.d.ts +36 -0
  24. package/button/button.d.ts +1 -0
  25. package/button/button.js.map +1 -1
  26. package/button/types.d.ts +47 -9
  27. package/calendar/calendar.d.ts +3 -0
  28. package/calendar/calendar.js.map +1 -1
  29. package/calendar/types.d.ts +46 -10
  30. package/card/card.d.ts +1 -0
  31. package/card/card.js.map +1 -1
  32. package/card/types.d.ts +1 -0
  33. package/checkbox/checkbox.d.ts +3 -0
  34. package/checkbox/checkbox.js.map +1 -1
  35. package/checkbox/types.d.ts +23 -3
  36. package/cjs/accordion/accordion.js.map +1 -1
  37. package/cjs/alert/alert.js.map +1 -1
  38. package/cjs/animations/loading-dots/loading-dots.js.map +1 -1
  39. package/cjs/animations/loading-dots-spinner/loading-dots-spinner.js.map +1 -1
  40. package/cjs/animations/loading-dots-spinner/lottie-animation.js.map +1 -1
  41. package/cjs/animations/loading-spinner/loading-spinner.js.map +1 -1
  42. package/cjs/animations/themed-loading-spinner/themed-loading-spinner.js.map +1 -1
  43. package/cjs/avatar/avatar.js.map +1 -1
  44. package/cjs/badge/badge.js.map +1 -1
  45. package/cjs/box-container/box-container.js.map +1 -1
  46. package/cjs/breadcrumb/breadcrumb.js.map +1 -1
  47. package/cjs/button/button.js.map +1 -1
  48. package/cjs/calendar/calendar.js.map +1 -1
  49. package/cjs/card/card.js.map +1 -1
  50. package/cjs/checkbox/checkbox.js.map +1 -1
  51. package/cjs/countdown-timer/countdown-timer.js.map +1 -1
  52. package/cjs/dashed-border/dashed-border.js.map +1 -1
  53. package/cjs/data-table/data-table.js +1 -1
  54. package/cjs/data-table/data-table.js.map +1 -1
  55. package/cjs/data-table/data-table.styles.js +1 -1
  56. package/cjs/data-table/data-table.styles.js.map +1 -1
  57. package/cjs/data-table/data-table.styles_rxganh.css +27 -0
  58. package/cjs/date-input/date-input.js.map +1 -1
  59. package/cjs/date-navigator/date-navigator.js.map +1 -1
  60. package/cjs/date-range-input/date-range-input.js.map +1 -1
  61. package/cjs/divider/divider.js.map +1 -1
  62. package/cjs/drawer/drawer.js.map +1 -1
  63. package/cjs/e-signature/e-signature.js.map +1 -1
  64. package/cjs/error-display/error-display.js.map +1 -1
  65. package/cjs/external/dompurify/dist/purify.es.js +2 -2
  66. package/cjs/external/dompurify/dist/purify.es.js.map +1 -1
  67. package/cjs/external/lodash/_setCacheHas.js.map +1 -1
  68. package/cjs/external/lodash/lodash.js +1 -1
  69. package/cjs/external/lodash/lodash.js.map +1 -1
  70. package/cjs/feedback-rating/feedback-rating.js.map +1 -1
  71. package/cjs/file-download/file-download.js.map +1 -1
  72. package/cjs/file-upload/file-item-edit.js.map +1 -1
  73. package/cjs/file-upload/file-list/file-list.js.map +1 -1
  74. package/cjs/file-upload/file-list-item/file-list-item.js.map +1 -1
  75. package/cjs/file-upload/file-list-item/file-list-item.styles.js +1 -1
  76. package/cjs/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
  77. package/cjs/file-upload/file-list-item/{file-list-item.styles_o8000f.css → file-list-item.styles_kgtfke.css} +1 -1
  78. package/cjs/file-upload/file-upload.js.map +1 -1
  79. package/cjs/filter/addons/filter-item-checkbox-helpers.js.map +1 -1
  80. package/cjs/filter/addons/filter-item-checkbox.js.map +1 -1
  81. package/cjs/filter/filter-item.js +1 -1
  82. package/cjs/filter/filter-item.js.map +1 -1
  83. package/cjs/filter/filter.js.map +1 -1
  84. package/cjs/footer/footer.js.map +1 -1
  85. package/cjs/form/form-custom-field/form-custom-field.js +2 -0
  86. package/cjs/form/form-custom-field/form-custom-field.js.map +1 -0
  87. package/cjs/form/form-date-input/form-date-input.js +2 -0
  88. package/cjs/form/form-date-input/form-date-input.js.map +1 -0
  89. package/cjs/form/form-date-range-input/form-date-range-input.js +2 -0
  90. package/cjs/form/form-date-range-input/form-date-range-input.js.map +1 -0
  91. package/cjs/form/form-e-signature/form-e-signature.js +2 -0
  92. package/cjs/form/form-e-signature/form-e-signature.js.map +1 -0
  93. package/cjs/form/form-histogram-slider/form-histogram-slider.js +2 -0
  94. package/cjs/form/form-histogram-slider/form-histogram-slider.js.map +1 -0
  95. package/cjs/form/form-input/form-input.js +2 -0
  96. package/cjs/form/form-input/form-input.js.map +1 -0
  97. package/cjs/form/form-input-group/form-input-group.js +2 -0
  98. package/cjs/form/form-input-group/form-input-group.js.map +1 -0
  99. package/cjs/form/form-label/form-label-addon.js +2 -0
  100. package/cjs/form/form-label/form-label-addon.js.map +1 -0
  101. package/cjs/form/form-label/form-label-addon.styles.js +2 -0
  102. package/cjs/form/form-label/form-label-addon.styles.js.map +1 -0
  103. package/cjs/form/form-label/form-label-addon.styles_aztasj.css +1 -0
  104. package/cjs/form/form-label/form-label.js +2 -0
  105. package/cjs/form/form-label/form-label.js.map +1 -0
  106. package/cjs/form/form-label/form-label.styles.js +2 -0
  107. package/cjs/form/form-label/form-label.styles.js.map +1 -0
  108. package/cjs/form/form-label/form-label.styles_180zf7j.css +6 -0
  109. package/cjs/form/form-masked-input/form-masked-input.js +2 -0
  110. package/cjs/form/form-masked-input/form-masked-input.js.map +1 -0
  111. package/cjs/form/form-multi-select/form-multi-select.js +2 -0
  112. package/cjs/form/form-multi-select/form-multi-select.js.map +1 -0
  113. package/cjs/form/form-nested-multi-select/form-nested-multi-select.js +2 -0
  114. package/cjs/form/form-nested-multi-select/form-nested-multi-select.js.map +1 -0
  115. package/cjs/form/form-nested-select/form-nested-select.js +2 -0
  116. package/cjs/form/form-nested-select/form-nested-select.js.map +1 -0
  117. package/cjs/form/form-otp-verification/form-otp-verification.js +2 -0
  118. package/cjs/form/form-otp-verification/form-otp-verification.js.map +1 -0
  119. package/cjs/form/form-phone-number-input/form-phone-number-input.js +2 -0
  120. package/cjs/form/form-phone-number-input/form-phone-number-input.js.map +1 -0
  121. package/cjs/form/form-predictive-text-input/form-predictive-text-input.js +2 -0
  122. package/cjs/form/form-predictive-text-input/form-predictive-text-input.js.map +1 -0
  123. package/cjs/form/form-range-select/form-range-select.js +2 -0
  124. package/cjs/form/form-range-select/form-range-select.js.map +1 -0
  125. package/cjs/form/form-range-slider/form-range-slider.js +2 -0
  126. package/cjs/form/form-range-slider/form-range-slider.js.map +1 -0
  127. package/cjs/form/form-select/form-select.js +2 -0
  128. package/cjs/form/form-select/form-select.js.map +1 -0
  129. package/cjs/form/form-select-histogram/form-select-histogram.js +2 -0
  130. package/cjs/form/form-select-histogram/form-select-histogram.js.map +1 -0
  131. package/cjs/form/form-slider/form-slider.js +2 -0
  132. package/cjs/form/form-slider/form-slider.js.map +1 -0
  133. package/cjs/form/form-textarea/form-textarea.js +2 -0
  134. package/cjs/form/form-textarea/form-textarea.js.map +1 -0
  135. package/cjs/form/form-textarea/form-textarea.styles.js +2 -0
  136. package/cjs/form/form-textarea/form-textarea.styles.js.map +1 -0
  137. package/cjs/form/form-textarea/form-textarea.styles_1kneyif.css +3 -0
  138. package/cjs/form/form-time-range-picker/form-time-range-picker.js +2 -0
  139. package/cjs/form/form-time-range-picker/form-time-range-picker.js.map +1 -0
  140. package/cjs/form/form-timepicker/form-timepicker.js +2 -0
  141. package/cjs/form/form-timepicker/form-timepicker.js.map +1 -0
  142. package/cjs/form/form-unit-number-input/form-unit-number-input.js +2 -0
  143. package/cjs/form/form-unit-number-input/form-unit-number-input.js.map +1 -0
  144. package/cjs/form/form-wrapper.js +1 -1
  145. package/cjs/form/form-wrapper.js.map +1 -1
  146. package/cjs/form/index.js +1 -1
  147. package/cjs/form/index.js.map +1 -1
  148. package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
  149. package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
  150. package/cjs/histogram-slider/histogram-slider.js.map +1 -1
  151. package/cjs/image-button/image-button.js.map +1 -1
  152. package/cjs/index.js +1 -1
  153. package/cjs/input/input.js.map +1 -1
  154. package/cjs/input-group/input-group.js.map +1 -1
  155. package/cjs/input-multi-select/input-multi-select.js.map +1 -1
  156. package/cjs/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
  157. package/cjs/input-nested-select/input-nested-select.js.map +1 -1
  158. package/cjs/input-range-select/input-range-select.js.map +1 -1
  159. package/cjs/input-range-slider/input-range-slider.js.map +1 -1
  160. package/cjs/input-select/input-select.js.map +1 -1
  161. package/cjs/input-slider/input-slider.js.map +1 -1
  162. package/cjs/input-textarea/textarea.js.map +1 -1
  163. package/cjs/input-textarea/textarea.styles.js +1 -1
  164. package/cjs/input-textarea/textarea.styles.js.map +1 -1
  165. package/cjs/input-textarea/{textarea.styles_22z4n3.css → textarea.styles_q77m5x.css} +1 -1
  166. package/cjs/language-switcher/language-switcher.js.map +1 -1
  167. package/cjs/layout/index.js +1 -1
  168. package/cjs/layout/index.js.map +1 -1
  169. package/cjs/link-list/components/common.js.map +1 -1
  170. package/cjs/link-list/components/link-list-eager.js.map +1 -1
  171. package/cjs/link-list/components/link-list-lazy.js.map +1 -1
  172. package/cjs/link-list/link-list.js.map +1 -1
  173. package/cjs/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
  174. package/cjs/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
  175. package/cjs/markup/markup.js.map +1 -1
  176. package/cjs/masked-input/masked-input.js.map +1 -1
  177. package/cjs/masthead/masthead.js.map +1 -1
  178. package/cjs/menu/menu.js +1 -1
  179. package/cjs/menu/menu.js.map +1 -1
  180. package/cjs/modal/index.js.map +1 -1
  181. package/cjs/modal/modal-box.js +1 -1
  182. package/cjs/modal/modal-box.js.map +1 -1
  183. package/cjs/modal-v2/index.js +1 -1
  184. package/cjs/modal-v2/index.js.map +1 -1
  185. package/cjs/modal-v2/modal-v2.js +1 -1
  186. package/cjs/modal-v2/modal-v2.js.map +1 -1
  187. package/cjs/modal-v2/slots/card.js +1 -1
  188. package/cjs/modal-v2/slots/card.js.map +1 -1
  189. package/cjs/navbar/navbar.js.map +1 -1
  190. package/cjs/notification-banner/notification-banner-hoc.js.map +1 -1
  191. package/cjs/notification-banner/notification-banner.js.map +1 -1
  192. package/cjs/otp-input/otp-input.js +1 -1
  193. package/cjs/otp-input/otp-input.js.map +1 -1
  194. package/cjs/otp-verification/contact-input-section.js +1 -1
  195. package/cjs/otp-verification/contact-input-section.js.map +1 -1
  196. package/cjs/otp-verification/otp-verification.js.map +1 -1
  197. package/cjs/otp-verification/verification-section.js +1 -1
  198. package/cjs/otp-verification/verification-section.js.map +1 -1
  199. package/cjs/overlay/overlay.js.map +1 -1
  200. package/cjs/pagination/pagination.js.map +1 -1
  201. package/cjs/phone-number-input/phone-number-input.js.map +1 -1
  202. package/cjs/pill/pill.js.map +1 -1
  203. package/cjs/popover/popover-inline/popover-inline.js.map +1 -1
  204. package/cjs/popover/popover-trigger.js.map +1 -1
  205. package/cjs/popover/popover.js +1 -1
  206. package/cjs/popover/popover.js.map +1 -1
  207. package/cjs/predictive-text-input/predictive-text-input.js +1 -1
  208. package/cjs/predictive-text-input/predictive-text-input.js.map +1 -1
  209. package/cjs/progress-indicator/progress-indicator.js.map +1 -1
  210. package/cjs/radio-button/radio-button.js.map +1 -1
  211. package/cjs/schedule/schedule.js.map +1 -1
  212. package/cjs/schedule/shared/with-optional-popover.js +1 -1
  213. package/cjs/schedule/shared/with-optional-popover.js.map +1 -1
  214. package/cjs/select-histogram/select-histogram.js.map +1 -1
  215. package/cjs/shared/dropdown-list/dropdown-list.js +1 -1
  216. package/cjs/shared/dropdown-list/dropdown-list.js.map +1 -1
  217. package/cjs/shared/dropdown-wrapper/element-with-dropdown.js +1 -1
  218. package/cjs/shared/dropdown-wrapper/element-with-dropdown.js.map +1 -1
  219. package/cjs/sidenav/sidenav.js.map +1 -1
  220. package/cjs/singpass-button/singpass-button.js.map +1 -1
  221. package/cjs/smart-app-banner/smart-app-banner.js.map +1 -1
  222. package/cjs/tab/tab.js.map +1 -1
  223. package/cjs/table/table.js.map +1 -1
  224. package/cjs/table/table.styles.js +1 -1
  225. package/cjs/table/table.styles.js.map +1 -1
  226. package/cjs/table/{table.styles_1af5ipv.css → table.styles_1vjx31g.css} +1 -1
  227. package/cjs/tag/tag.js.map +1 -1
  228. package/cjs/text-list/index.js.map +1 -1
  229. package/cjs/theme/theme-provider/breakpoint.js +1 -1
  230. package/cjs/theme/theme-provider/breakpoint.js.map +1 -1
  231. package/cjs/theme/theme-provider/hooks.js.map +1 -1
  232. package/cjs/theme/theme-provider/index.js.map +1 -1
  233. package/cjs/theme/tokens/border.js.map +1 -1
  234. package/cjs/theme/tokens/breakpoint.js.map +1 -1
  235. package/cjs/theme/tokens/colour.js.map +1 -1
  236. package/cjs/theme/tokens/component.js.map +1 -1
  237. package/cjs/theme/tokens/font.js.map +1 -1
  238. package/cjs/theme/tokens/media-query.js.map +1 -1
  239. package/cjs/theme/tokens/motion.js.map +1 -1
  240. package/cjs/theme/tokens/radius.js.map +1 -1
  241. package/cjs/theme/tokens/shadow.js.map +1 -1
  242. package/cjs/theme/tokens/spacing.js.map +1 -1
  243. package/cjs/theme/types.js.map +1 -1
  244. package/cjs/theme/utils/css-variable.js.map +1 -1
  245. package/cjs/theme/utils/font.js.map +1 -1
  246. package/cjs/theme/utils/use-apply-styles.js +1 -1
  247. package/cjs/theme/utils/use-apply-styles.js.map +1 -1
  248. package/cjs/theme/utils/use-design-token-override.js.map +1 -1
  249. package/cjs/theme/utils/use-design-token.js.map +1 -1
  250. package/cjs/theme/utils/use-media-query.js.map +1 -1
  251. package/cjs/time-range-picker/combobox-picker/combobox-picker.js +1 -1
  252. package/cjs/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
  253. package/cjs/time-range-picker/common.styles.js +1 -1
  254. package/cjs/time-range-picker/common.styles.js.map +1 -1
  255. package/cjs/time-range-picker/{common.styles_1qwp4xa.css → common.styles_cnkkax.css} +2 -1
  256. package/cjs/time-range-picker/dial-picker/dial-picker.js +1 -1
  257. package/cjs/time-range-picker/dial-picker/dial-picker.js.map +1 -1
  258. package/cjs/time-range-picker/time-range-picker.js.map +1 -1
  259. package/cjs/time-slot-bar/time-slot-bar.js.map +1 -1
  260. package/cjs/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
  261. package/cjs/time-slot-week-view/time-slot-week-view.js.map +1 -1
  262. package/cjs/timeline/timeline.js.map +1 -1
  263. package/cjs/timepicker/timepicker.js +1 -1
  264. package/cjs/timepicker/timepicker.js.map +1 -1
  265. package/cjs/timepicker/timepicker.styles.js +1 -1
  266. package/cjs/timepicker/timepicker.styles.js.map +1 -1
  267. package/cjs/timepicker/timepicker.styles_lyizvq.css +2 -0
  268. package/cjs/timetable/timetable-row/with-optional-popover.js +1 -1
  269. package/cjs/timetable/timetable-row/with-optional-popover.js.map +1 -1
  270. package/cjs/timetable/timetable.js +1 -1
  271. package/cjs/timetable/timetable.js.map +1 -1
  272. package/cjs/toast/toast.js.map +1 -1
  273. package/cjs/toggle/toggle.js.map +1 -1
  274. package/cjs/typography/index.js.map +1 -1
  275. package/cjs/uneditable-section/index.js.map +1 -1
  276. package/cjs/uneditable-section/section-item.js +1 -1
  277. package/cjs/uneditable-section/section-item.js.map +1 -1
  278. package/cjs/unit-number/unit-number-input.js.map +1 -1
  279. package/cjs/util/merge-refs.js.map +1 -1
  280. package/cjs/util/use-throttle.js +2 -0
  281. package/cjs/util/use-throttle.js.map +1 -0
  282. package/countdown-timer/countdown-timer.js.map +1 -1
  283. package/countdown-timer/types.d.ts +6 -6
  284. package/dashed-border/dashed-border.js.map +1 -1
  285. package/data-table/data-table.js +1 -1
  286. package/data-table/data-table.js.map +1 -1
  287. package/data-table/data-table.styles.d.ts +2 -1
  288. package/data-table/data-table.styles.js +1 -1
  289. package/data-table/data-table.styles.js.map +1 -1
  290. package/data-table/data-table.styles_rxganh.css +27 -0
  291. package/date-input/date-input.js.map +1 -1
  292. package/date-input/types.d.ts +1 -1
  293. package/date-navigator/date-navigator.js.map +1 -1
  294. package/date-navigator/types.d.ts +1 -1
  295. package/date-range-input/date-range-input.js.map +1 -1
  296. package/date-range-input/types.d.ts +2 -2
  297. package/divider/divider.js.map +1 -1
  298. package/divider/types.d.ts +1 -1
  299. package/docs/component-catalog.json +644 -0
  300. package/drawer/drawer.js.map +1 -1
  301. package/drawer/types.d.ts +1 -1
  302. package/e-signature/e-signature.js.map +1 -1
  303. package/e-signature/types.d.ts +1 -1
  304. package/error-display/error-display.js.map +1 -1
  305. package/external/dompurify/dist/purify.es.js +2 -2
  306. package/external/dompurify/dist/purify.es.js.map +1 -1
  307. package/external/lodash/_setCacheHas.js.map +1 -1
  308. package/external/lodash/lodash.js +1 -1
  309. package/external/lodash/lodash.js.map +1 -1
  310. package/feedback-rating/feedback-rating.js.map +1 -1
  311. package/file-download/file-download.js.map +1 -1
  312. package/file-download/types.d.ts +6 -1
  313. package/file-upload/file-item-edit.d.ts +1 -1
  314. package/file-upload/file-item-edit.js.map +1 -1
  315. package/file-upload/file-list/file-list.d.ts +1 -1
  316. package/file-upload/file-list/file-list.js.map +1 -1
  317. package/file-upload/file-list-item/file-list-item.d.ts +1 -1
  318. package/file-upload/file-list-item/file-list-item.js.map +1 -1
  319. package/file-upload/file-list-item/file-list-item.styles.js +1 -1
  320. package/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
  321. package/file-upload/file-list-item/{file-list-item.styles_o8000f.css → file-list-item.styles_kgtfke.css} +1 -1
  322. package/file-upload/file-upload.js.map +1 -1
  323. package/file-upload/types.d.ts +6 -3
  324. package/filter/addons/filter-item-checkbox-helpers.d.ts +2 -2
  325. package/filter/addons/filter-item-checkbox-helpers.js.map +1 -1
  326. package/filter/addons/filter-item-checkbox.d.ts +1 -1
  327. package/filter/addons/filter-item-checkbox.js.map +1 -1
  328. package/filter/addons/internal-types.d.ts +12 -0
  329. package/filter/addons/types.d.ts +60 -9
  330. package/filter/filter-item.js +1 -1
  331. package/filter/filter-item.js.map +1 -1
  332. package/filter/filter.d.ts +1 -1
  333. package/filter/filter.js.map +1 -1
  334. package/filter/index.d.ts +1 -0
  335. package/filter/types.d.ts +36 -72
  336. package/footer/footer.js.map +1 -1
  337. package/form/form-custom-field/form-custom-field.js +2 -0
  338. package/form/form-custom-field/form-custom-field.js.map +1 -0
  339. package/form/form-custom-field/index.d.ts +2 -0
  340. package/form/form-custom-field/types.d.ts +7 -0
  341. package/form/form-date-input/form-date-input.js +2 -0
  342. package/form/form-date-input/form-date-input.js.map +1 -0
  343. package/form/form-date-input/index.d.ts +2 -0
  344. package/form/form-date-input/types.d.ts +8 -0
  345. package/form/form-date-range-input/form-date-range-input.js +2 -0
  346. package/form/form-date-range-input/form-date-range-input.js.map +1 -0
  347. package/form/form-date-range-input/index.d.ts +2 -0
  348. package/form/form-date-range-input/types.d.ts +8 -0
  349. package/form/form-e-signature/form-e-signature.js +2 -0
  350. package/form/form-e-signature/form-e-signature.js.map +1 -0
  351. package/form/form-e-signature/index.d.ts +2 -0
  352. package/form/form-e-signature/types.d.ts +8 -0
  353. package/form/form-histogram-slider/form-histogram-slider.js +2 -0
  354. package/form/form-histogram-slider/form-histogram-slider.js.map +1 -0
  355. package/form/form-histogram-slider/index.d.ts +2 -0
  356. package/form/form-histogram-slider/types.d.ts +8 -0
  357. package/form/form-input/form-input.js +2 -0
  358. package/form/form-input/form-input.js.map +1 -0
  359. package/form/form-input/index.d.ts +2 -0
  360. package/form/form-input/types.d.ts +8 -0
  361. package/form/form-input-group/form-input-group.js +2 -0
  362. package/form/form-input-group/form-input-group.js.map +1 -0
  363. package/form/form-input-group/index.d.ts +2 -0
  364. package/form/form-input-group/types.d.ts +10 -0
  365. package/form/form-label/form-label-addon.js +2 -0
  366. package/form/form-label/form-label-addon.js.map +1 -0
  367. package/form/form-label/form-label-addon.styles.js +2 -0
  368. package/form/form-label/form-label-addon.styles.js.map +1 -0
  369. package/form/form-label/form-label-addon.styles_aztasj.css +1 -0
  370. package/form/form-label/form-label.js +2 -0
  371. package/form/form-label/form-label.js.map +1 -0
  372. package/form/form-label/form-label.styles.js +2 -0
  373. package/form/form-label/form-label.styles.js.map +1 -0
  374. package/form/form-label/form-label.styles_180zf7j.css +6 -0
  375. package/form/form-label/index.d.ts +2 -0
  376. package/form/form-label/types.d.ts +39 -0
  377. package/form/form-masked-input/form-masked-input.js +2 -0
  378. package/form/form-masked-input/form-masked-input.js.map +1 -0
  379. package/form/form-masked-input/index.d.ts +2 -0
  380. package/form/form-masked-input/types.d.ts +8 -0
  381. package/form/form-multi-select/form-multi-select.js +2 -0
  382. package/form/form-multi-select/form-multi-select.js.map +1 -0
  383. package/form/form-multi-select/index.d.ts +2 -0
  384. package/form/form-multi-select/types.d.ts +10 -0
  385. package/form/form-nested-multi-select/form-nested-multi-select.js +2 -0
  386. package/form/form-nested-multi-select/form-nested-multi-select.js.map +1 -0
  387. package/form/form-nested-multi-select/index.d.ts +2 -0
  388. package/form/form-nested-multi-select/types.d.ts +11 -0
  389. package/form/form-nested-select/form-nested-select.js +2 -0
  390. package/form/form-nested-select/form-nested-select.js.map +1 -0
  391. package/form/form-nested-select/index.d.ts +2 -0
  392. package/form/form-nested-select/types.d.ts +11 -0
  393. package/form/{form-otp-verification.d.ts → form-otp-verification/form-otp-verification.d.ts} +1 -1
  394. package/form/form-otp-verification/form-otp-verification.js +2 -0
  395. package/form/form-otp-verification/form-otp-verification.js.map +1 -0
  396. package/form/form-otp-verification/index.d.ts +2 -0
  397. package/form/form-otp-verification/types.d.ts +1 -0
  398. package/form/form-phone-number-input/form-phone-number-input.js +2 -0
  399. package/form/form-phone-number-input/form-phone-number-input.js.map +1 -0
  400. package/form/form-phone-number-input/index.d.ts +2 -0
  401. package/form/form-phone-number-input/types.d.ts +8 -0
  402. package/form/form-predictive-text-input/form-predictive-text-input.js +2 -0
  403. package/form/form-predictive-text-input/form-predictive-text-input.js.map +1 -0
  404. package/form/form-predictive-text-input/index.d.ts +2 -0
  405. package/form/form-predictive-text-input/types.d.ts +10 -0
  406. package/form/form-range-select/form-range-select.js +2 -0
  407. package/form/form-range-select/form-range-select.js.map +1 -0
  408. package/form/form-range-select/index.d.ts +2 -0
  409. package/form/form-range-select/types.d.ts +10 -0
  410. package/form/form-range-slider/form-range-slider.js +2 -0
  411. package/form/form-range-slider/form-range-slider.js.map +1 -0
  412. package/form/form-range-slider/index.d.ts +2 -0
  413. package/form/form-range-slider/types.d.ts +8 -0
  414. package/form/form-select/form-select.js +2 -0
  415. package/form/form-select/form-select.js.map +1 -0
  416. package/form/form-select/index.d.ts +2 -0
  417. package/form/form-select/types.d.ts +10 -0
  418. package/form/form-select-histogram/form-select-histogram.js +2 -0
  419. package/form/form-select-histogram/form-select-histogram.js.map +1 -0
  420. package/form/form-select-histogram/index.d.ts +2 -0
  421. package/form/form-select-histogram/types.d.ts +8 -0
  422. package/form/form-slider/form-slider.js +2 -0
  423. package/form/form-slider/form-slider.js.map +1 -0
  424. package/form/form-slider/index.d.ts +2 -0
  425. package/form/form-slider/types.d.ts +8 -0
  426. package/form/form-textarea/form-textarea.js +2 -0
  427. package/form/form-textarea/form-textarea.js.map +1 -0
  428. package/form/form-textarea/form-textarea.styles.js +2 -0
  429. package/form/form-textarea/form-textarea.styles.js.map +1 -0
  430. package/form/form-textarea/form-textarea.styles_1kneyif.css +3 -0
  431. package/form/form-textarea/index.d.ts +2 -0
  432. package/form/form-textarea/types.d.ts +8 -0
  433. package/form/form-time-range-picker/form-time-range-picker.js +2 -0
  434. package/form/form-time-range-picker/form-time-range-picker.js.map +1 -0
  435. package/form/form-time-range-picker/index.d.ts +2 -0
  436. package/form/form-time-range-picker/types.d.ts +8 -0
  437. package/form/form-timepicker/form-timepicker.js +2 -0
  438. package/form/form-timepicker/form-timepicker.js.map +1 -0
  439. package/form/form-timepicker/index.d.ts +2 -0
  440. package/form/form-timepicker/types.d.ts +8 -0
  441. package/form/form-unit-number-input/form-unit-number-input.js +2 -0
  442. package/form/form-unit-number-input/form-unit-number-input.js.map +1 -0
  443. package/form/form-unit-number-input/index.d.ts +2 -0
  444. package/form/form-unit-number-input/types.d.ts +8 -0
  445. package/form/form-wrapper.js +1 -1
  446. package/form/form-wrapper.js.map +1 -1
  447. package/form/index.d.ts +104 -24
  448. package/form/index.js +1 -1
  449. package/form/index.js.map +1 -1
  450. package/form/types.d.ts +27 -85
  451. package/fullscreen-image-carousel/fullscreen-image-carousel.d.ts +7 -0
  452. package/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
  453. package/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
  454. package/fullscreen-image-carousel/types.d.ts +91 -3
  455. package/histogram-slider/histogram-slider.d.ts +6 -0
  456. package/histogram-slider/histogram-slider.js.map +1 -1
  457. package/histogram-slider/types.d.ts +63 -3
  458. package/image-button/image-button.d.ts +6 -0
  459. package/image-button/image-button.js.map +1 -1
  460. package/image-button/types.d.ts +11 -1
  461. package/index.js +1 -1
  462. package/input/input.d.ts +6 -0
  463. package/input/input.js.map +1 -1
  464. package/input/types.d.ts +38 -2
  465. package/input-group/input-group.d.ts +7 -0
  466. package/input-group/input-group.js.map +1 -1
  467. package/input-group/types.d.ts +84 -8
  468. package/input-multi-select/input-multi-select.d.ts +6 -0
  469. package/input-multi-select/input-multi-select.js.map +1 -1
  470. package/input-multi-select/types.d.ts +46 -5
  471. package/input-nested-multi-select/input-nested-multi-select.d.ts +8 -0
  472. package/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
  473. package/input-nested-multi-select/types.d.ts +35 -5
  474. package/input-nested-select/input-nested-select.d.ts +9 -2
  475. package/input-nested-select/input-nested-select.js.map +1 -1
  476. package/input-nested-select/types.d.ts +77 -8
  477. package/input-range-select/input-range-select.d.ts +6 -0
  478. package/input-range-select/input-range-select.js.map +1 -1
  479. package/input-range-select/types.d.ts +68 -1
  480. package/input-range-slider/input-range-slider.d.ts +7 -0
  481. package/input-range-slider/input-range-slider.js.map +1 -1
  482. package/input-range-slider/types.d.ts +91 -6
  483. package/input-select/input-select.d.ts +5 -0
  484. package/input-select/input-select.js.map +1 -1
  485. package/input-select/types.d.ts +70 -14
  486. package/input-slider/input-slider.d.ts +6 -0
  487. package/input-slider/input-slider.js.map +1 -1
  488. package/input-slider/types.d.ts +21 -2
  489. package/input-textarea/textarea.d.ts +3 -0
  490. package/input-textarea/textarea.js.map +1 -1
  491. package/input-textarea/textarea.styles.js +1 -1
  492. package/input-textarea/textarea.styles.js.map +1 -1
  493. package/input-textarea/{textarea.styles_22z4n3.css → textarea.styles_q77m5x.css} +1 -1
  494. package/input-textarea/types.d.ts +24 -1
  495. package/language-switcher/language-switcher.d.ts +6 -0
  496. package/language-switcher/language-switcher.js.map +1 -1
  497. package/language-switcher/types.d.ts +23 -0
  498. package/layout/index.d.ts +16 -2
  499. package/layout/index.js +1 -1
  500. package/layout/index.js.map +1 -1
  501. package/layout/types.d.ts +61 -3
  502. package/link-list/components/common.d.ts +1 -1
  503. package/link-list/components/common.js.map +1 -1
  504. package/link-list/components/link-list-eager.d.ts +2 -2
  505. package/link-list/components/link-list-eager.js.map +1 -1
  506. package/link-list/components/link-list-lazy.d.ts +2 -2
  507. package/link-list/components/link-list-lazy.js.map +1 -1
  508. package/link-list/link-list.d.ts +6 -0
  509. package/link-list/link-list.js.map +1 -1
  510. package/link-list/types.d.ts +92 -3
  511. package/local-nav/local-nav-dropdown/local-nav-dropdown.d.ts +11 -0
  512. package/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
  513. package/local-nav/local-nav-menu/local-nav-menu.d.ts +6 -0
  514. package/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
  515. package/local-nav/types.d.ts +51 -0
  516. package/markup/markup.d.ts +6 -0
  517. package/markup/markup.js.map +1 -1
  518. package/markup/types.d.ts +6 -2
  519. package/masked-input/masked-input.d.ts +6 -0
  520. package/masked-input/masked-input.js.map +1 -1
  521. package/masked-input/types.d.ts +83 -8
  522. package/masthead/masthead.d.ts +6 -0
  523. package/masthead/masthead.js.map +1 -1
  524. package/masthead/types.d.ts +9 -0
  525. package/menu/menu.d.ts +27 -4
  526. package/menu/menu.js +1 -1
  527. package/menu/menu.js.map +1 -1
  528. package/menu/types.d.ts +49 -1
  529. package/modal/index.d.ts +13 -0
  530. package/modal/index.js.map +1 -1
  531. package/modal/modal-box.js +1 -1
  532. package/modal/modal-box.js.map +1 -1
  533. package/modal/types.d.ts +56 -7
  534. package/modal-v2/index.d.ts +1 -15
  535. package/modal-v2/index.js +1 -1
  536. package/modal-v2/index.js.map +1 -1
  537. package/modal-v2/modal-v2.d.ts +32 -1
  538. package/modal-v2/modal-v2.js +1 -1
  539. package/modal-v2/modal-v2.js.map +1 -1
  540. package/modal-v2/slots/card.js +1 -1
  541. package/modal-v2/slots/card.js.map +1 -1
  542. package/modal-v2/types.d.ts +92 -8
  543. package/navbar/navbar.d.ts +7 -0
  544. package/navbar/navbar.js.map +1 -1
  545. package/navbar/types.d.ts +201 -13
  546. package/notification-banner/notification-banner-hoc.d.ts +6 -0
  547. package/notification-banner/notification-banner-hoc.js.map +1 -1
  548. package/notification-banner/notification-banner.d.ts +7 -0
  549. package/notification-banner/notification-banner.js.map +1 -1
  550. package/notification-banner/types.d.ts +57 -2
  551. package/otp-input/otp-input.d.ts +7 -0
  552. package/otp-input/otp-input.js +1 -1
  553. package/otp-input/otp-input.js.map +1 -1
  554. package/otp-input/types.d.ts +63 -15
  555. package/otp-verification/contact-input-section.js +1 -1
  556. package/otp-verification/contact-input-section.js.map +1 -1
  557. package/otp-verification/internal-types.d.ts +22 -5
  558. package/otp-verification/otp-verification.d.ts +6 -0
  559. package/otp-verification/otp-verification.js.map +1 -1
  560. package/otp-verification/types.d.ts +125 -6
  561. package/otp-verification/verification-section.js +1 -1
  562. package/otp-verification/verification-section.js.map +1 -1
  563. package/overlay/overlay.d.ts +7 -0
  564. package/overlay/overlay.js.map +1 -1
  565. package/overlay/types.d.ts +57 -2
  566. package/package.json +1 -1
  567. package/pagination/pagination.d.ts +5 -0
  568. package/pagination/pagination.js.map +1 -1
  569. package/pagination/types.d.ts +48 -0
  570. package/phone-number-input/phone-number-input.d.ts +7 -0
  571. package/phone-number-input/phone-number-input.js.map +1 -1
  572. package/phone-number-input/types.d.ts +78 -13
  573. package/pill/pill.d.ts +6 -0
  574. package/pill/pill.js.map +1 -1
  575. package/pill/types.d.ts +19 -0
  576. package/popover/popover-inline/index.d.ts +1 -0
  577. package/popover/popover-inline/popover-inline.d.ts +6 -1
  578. package/popover/popover-inline/popover-inline.js.map +1 -1
  579. package/popover/popover-inline/types.d.ts +36 -0
  580. package/popover/popover-trigger.d.ts +6 -0
  581. package/popover/popover-trigger.js.map +1 -1
  582. package/popover/popover.d.ts +6 -0
  583. package/popover/popover.js +1 -1
  584. package/popover/popover.js.map +1 -1
  585. package/popover/types.d.ts +125 -11
  586. package/predictive-text-input/predictive-text-input.d.ts +6 -0
  587. package/predictive-text-input/predictive-text-input.js +1 -1
  588. package/predictive-text-input/predictive-text-input.js.map +1 -1
  589. package/predictive-text-input/types.d.ts +65 -11
  590. package/progress-indicator/progress-indicator.d.ts +7 -0
  591. package/progress-indicator/progress-indicator.js.map +1 -1
  592. package/progress-indicator/types.d.ts +18 -0
  593. package/radio-button/radio-button.d.ts +5 -0
  594. package/radio-button/radio-button.js.map +1 -1
  595. package/radio-button/types.d.ts +14 -0
  596. package/schedule/internal-types.d.ts +18 -0
  597. package/schedule/schedule-day-view/types.d.ts +2 -1
  598. package/schedule/schedule-week-view/types.d.ts +2 -1
  599. package/schedule/schedule.d.ts +3 -0
  600. package/schedule/schedule.js.map +1 -1
  601. package/schedule/shared/with-optional-popover.js +1 -1
  602. package/schedule/shared/with-optional-popover.js.map +1 -1
  603. package/schedule/types.d.ts +129 -10
  604. package/select-histogram/select-histogram.d.ts +5 -0
  605. package/select-histogram/select-histogram.js.map +1 -1
  606. package/select-histogram/types.d.ts +57 -4
  607. package/shared/dropdown-list/dropdown-list.js +1 -1
  608. package/shared/dropdown-list/dropdown-list.js.map +1 -1
  609. package/shared/dropdown-list/types.d.ts +52 -19
  610. package/shared/dropdown-wrapper/element-with-dropdown.d.ts +5 -4
  611. package/shared/dropdown-wrapper/element-with-dropdown.js +1 -1
  612. package/shared/dropdown-wrapper/element-with-dropdown.js.map +1 -1
  613. package/shared/dropdown-wrapper/types.d.ts +6 -0
  614. package/sidenav/sidenav.d.ts +10 -0
  615. package/sidenav/sidenav.js.map +1 -1
  616. package/sidenav/types.d.ts +71 -21
  617. package/singpass-button/singpass-button.d.ts +6 -0
  618. package/singpass-button/singpass-button.js.map +1 -1
  619. package/singpass-button/types.d.ts +29 -2
  620. package/smart-app-banner/smart-app-banner.d.ts +5 -0
  621. package/smart-app-banner/smart-app-banner.js.map +1 -1
  622. package/smart-app-banner/types.d.ts +56 -0
  623. package/tab/tab.d.ts +7 -0
  624. package/tab/tab.js.map +1 -1
  625. package/tab/types.d.ts +55 -6
  626. package/table/table.d.ts +30 -8
  627. package/table/table.js.map +1 -1
  628. package/table/table.styles.js +1 -1
  629. package/table/table.styles.js.map +1 -1
  630. package/table/{table.styles_1af5ipv.css → table.styles_1vjx31g.css} +1 -1
  631. package/table/types.d.ts +35 -0
  632. package/tag/tag.d.ts +5 -0
  633. package/tag/tag.js.map +1 -1
  634. package/tag/types.d.ts +24 -0
  635. package/text-list/index.d.ts +17 -0
  636. package/text-list/index.js.map +1 -1
  637. package/text-list/types.d.ts +33 -4
  638. package/theme/theme-provider/breakpoint.d.ts +0 -1
  639. package/theme/theme-provider/breakpoint.js +1 -1
  640. package/theme/theme-provider/breakpoint.js.map +1 -1
  641. package/theme/theme-provider/hooks.d.ts +16 -0
  642. package/theme/theme-provider/hooks.js.map +1 -1
  643. package/theme/theme-provider/index.d.ts +7 -0
  644. package/theme/theme-provider/index.js.map +1 -1
  645. package/theme/theme-provider/types.d.ts +14 -0
  646. package/theme/tokens/border.d.ts +9 -0
  647. package/theme/tokens/border.js.map +1 -1
  648. package/theme/tokens/breakpoint.d.ts +3 -0
  649. package/theme/tokens/breakpoint.js.map +1 -1
  650. package/theme/tokens/colour.d.ts +9 -0
  651. package/theme/tokens/colour.js.map +1 -1
  652. package/theme/tokens/component.d.ts +3 -0
  653. package/theme/tokens/component.js.map +1 -1
  654. package/theme/tokens/font.d.ts +6 -0
  655. package/theme/tokens/font.js.map +1 -1
  656. package/theme/tokens/media-query.d.ts +3 -0
  657. package/theme/tokens/media-query.js.map +1 -1
  658. package/theme/tokens/motion.d.ts +3 -0
  659. package/theme/tokens/motion.js.map +1 -1
  660. package/theme/tokens/radius.d.ts +3 -0
  661. package/theme/tokens/radius.js.map +1 -1
  662. package/theme/tokens/shadow.d.ts +3 -0
  663. package/theme/tokens/shadow.js.map +1 -1
  664. package/theme/tokens/spacing.d.ts +3 -0
  665. package/theme/tokens/spacing.js.map +1 -1
  666. package/theme/types.d.ts +23 -3
  667. package/theme/types.js.map +1 -1
  668. package/theme/utils/css-variable.d.ts +10 -2
  669. package/theme/utils/css-variable.js.map +1 -1
  670. package/theme/utils/font.d.ts +2 -1
  671. package/theme/utils/font.js.map +1 -1
  672. package/theme/utils/use-apply-styles.d.ts +8 -2
  673. package/theme/utils/use-apply-styles.js +1 -1
  674. package/theme/utils/use-apply-styles.js.map +1 -1
  675. package/theme/utils/use-design-token-override.d.ts +9 -1
  676. package/theme/utils/use-design-token-override.js.map +1 -1
  677. package/theme/utils/use-design-token.d.ts +9 -0
  678. package/theme/utils/use-design-token.js.map +1 -1
  679. package/theme/utils/use-media-query.d.ts +41 -3
  680. package/theme/utils/use-media-query.js.map +1 -1
  681. package/time-range-picker/combobox-picker/combobox-picker.js +1 -1
  682. package/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
  683. package/time-range-picker/common.styles.d.ts +1 -0
  684. package/time-range-picker/common.styles.js +1 -1
  685. package/time-range-picker/common.styles.js.map +1 -1
  686. package/time-range-picker/{common.styles_1qwp4xa.css → common.styles_cnkkax.css} +2 -1
  687. package/time-range-picker/dial-picker/dial-picker.js +1 -1
  688. package/time-range-picker/dial-picker/dial-picker.js.map +1 -1
  689. package/time-range-picker/time-range-picker.d.ts +5 -0
  690. package/time-range-picker/time-range-picker.js.map +1 -1
  691. package/time-range-picker/types.d.ts +85 -25
  692. package/time-slot-bar/internal-types.d.ts +1 -0
  693. package/time-slot-bar/time-slot-bar.d.ts +7 -0
  694. package/time-slot-bar/time-slot-bar.js.map +1 -1
  695. package/time-slot-bar/types.d.ts +116 -20
  696. package/time-slot-bar-week/time-slot-bar-week.d.ts +8 -0
  697. package/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
  698. package/time-slot-bar-week/types.d.ts +80 -13
  699. package/time-slot-week-view/time-slot-week-view.d.ts +7 -0
  700. package/time-slot-week-view/time-slot-week-view.js.map +1 -1
  701. package/time-slot-week-view/types.d.ts +55 -10
  702. package/timeline/timeline.d.ts +6 -0
  703. package/timeline/timeline.js.map +1 -1
  704. package/timeline/types.d.ts +58 -4
  705. package/timepicker/timepicker.d.ts +5 -0
  706. package/timepicker/timepicker.js +1 -1
  707. package/timepicker/timepicker.js.map +1 -1
  708. package/timepicker/timepicker.styles.d.ts +1 -0
  709. package/timepicker/timepicker.styles.js +1 -1
  710. package/timepicker/timepicker.styles.js.map +1 -1
  711. package/timepicker/timepicker.styles_lyizvq.css +2 -0
  712. package/timepicker/types.d.ts +49 -14
  713. package/timetable/timetable-row/with-optional-popover.js +1 -1
  714. package/timetable/timetable-row/with-optional-popover.js.map +1 -1
  715. package/timetable/timetable.d.ts +6 -0
  716. package/timetable/timetable.js +1 -1
  717. package/timetable/timetable.js.map +1 -1
  718. package/timetable/types.d.ts +175 -50
  719. package/toast/toast.d.ts +6 -0
  720. package/toast/toast.js.map +1 -1
  721. package/toast/types.d.ts +44 -8
  722. package/toggle/toggle.d.ts +6 -0
  723. package/toggle/toggle.js.map +1 -1
  724. package/toggle/types.d.ts +95 -17
  725. package/tools/shared/generated-file-formatter.d.ts +6 -0
  726. package/tools/shared/jsdoc-parser.d.ts +36 -0
  727. package/tools/shared/ts-morph-project-factory.d.ts +9 -0
  728. package/tools/shared/typescript-source-provider.d.ts +9 -0
  729. package/tools/storybook-argtypes/adapters/file-system-adapter.d.ts +69 -0
  730. package/tools/storybook-argtypes/arg-types-generator.d.ts +85 -0
  731. package/tools/storybook-argtypes/config/arg-types-config.d.ts +31 -0
  732. package/tools/storybook-argtypes/index.d.ts +11 -0
  733. package/tools/storybook-argtypes/services/arg-types-row-builder.d.ts +43 -0
  734. package/tools/storybook-argtypes/services/file-path-resolver.d.ts +118 -0
  735. package/tools/storybook-argtypes/services/index.d.ts +6 -0
  736. package/tools/storybook-argtypes/services/jsdoc-metadata-extractor.d.ts +33 -0
  737. package/tools/storybook-argtypes/services/story-registry-generator.d.ts +27 -0
  738. package/tools/storybook-argtypes/services/type-dependency-resolver.d.ts +46 -0
  739. package/tools/storybook-argtypes/services/type-formatting-service.d.ts +27 -0
  740. package/tools/storybook-argtypes/types.d.ts +102 -0
  741. package/typography/index.d.ts +29 -0
  742. package/typography/index.js.map +1 -1
  743. package/typography/types.d.ts +51 -8
  744. package/uneditable-section/index.d.ts +15 -0
  745. package/uneditable-section/index.js.map +1 -1
  746. package/uneditable-section/section-item.js +1 -1
  747. package/uneditable-section/section-item.js.map +1 -1
  748. package/uneditable-section/types.d.ts +66 -23
  749. package/unit-number/types.d.ts +30 -4
  750. package/unit-number/unit-number-input.d.ts +6 -0
  751. package/unit-number/unit-number-input.js.map +1 -1
  752. package/util/index.d.ts +1 -0
  753. package/util/merge-refs.d.ts +1 -1
  754. package/util/merge-refs.js.map +1 -1
  755. package/util/use-throttle.d.ts +1 -0
  756. package/util/use-throttle.js +2 -0
  757. package/util/use-throttle.js.map +1 -0
  758. package/cjs/data-table/data-table.styles_1iqq1g7.css +0 -26
  759. package/cjs/form/form-custom-field.js +0 -2
  760. package/cjs/form/form-custom-field.js.map +0 -1
  761. package/cjs/form/form-date-input.js +0 -2
  762. package/cjs/form/form-date-input.js.map +0 -1
  763. package/cjs/form/form-date-range-input.js +0 -2
  764. package/cjs/form/form-date-range-input.js.map +0 -1
  765. package/cjs/form/form-e-signature.js +0 -2
  766. package/cjs/form/form-e-signature.js.map +0 -1
  767. package/cjs/form/form-histogram.js +0 -2
  768. package/cjs/form/form-histogram.js.map +0 -1
  769. package/cjs/form/form-input-group.js +0 -2
  770. package/cjs/form/form-input-group.js.map +0 -1
  771. package/cjs/form/form-input.js +0 -2
  772. package/cjs/form/form-input.js.map +0 -1
  773. package/cjs/form/form-label-addon.js +0 -2
  774. package/cjs/form/form-label-addon.js.map +0 -1
  775. package/cjs/form/form-label-addon.styles.js +0 -2
  776. package/cjs/form/form-label-addon.styles.js.map +0 -1
  777. package/cjs/form/form-label-addon.styles_b00z8p.css +0 -1
  778. package/cjs/form/form-label.js +0 -2
  779. package/cjs/form/form-label.js.map +0 -1
  780. package/cjs/form/form-label.styles.js +0 -2
  781. package/cjs/form/form-label.styles.js.map +0 -1
  782. package/cjs/form/form-label.styles_1nbe0bm.css +0 -6
  783. package/cjs/form/form-masked-input.js +0 -2
  784. package/cjs/form/form-masked-input.js.map +0 -1
  785. package/cjs/form/form-multi-select.js +0 -2
  786. package/cjs/form/form-multi-select.js.map +0 -1
  787. package/cjs/form/form-nested-multi-select.js +0 -2
  788. package/cjs/form/form-nested-multi-select.js.map +0 -1
  789. package/cjs/form/form-nested-select.js +0 -2
  790. package/cjs/form/form-nested-select.js.map +0 -1
  791. package/cjs/form/form-otp-verification.js +0 -2
  792. package/cjs/form/form-otp-verification.js.map +0 -1
  793. package/cjs/form/form-phone-number-input.js +0 -2
  794. package/cjs/form/form-phone-number-input.js.map +0 -1
  795. package/cjs/form/form-predictive-text-input.js +0 -2
  796. package/cjs/form/form-predictive-text-input.js.map +0 -1
  797. package/cjs/form/form-range-select.js +0 -2
  798. package/cjs/form/form-range-select.js.map +0 -1
  799. package/cjs/form/form-range-slider.js +0 -2
  800. package/cjs/form/form-range-slider.js.map +0 -1
  801. package/cjs/form/form-select-histogram.js +0 -2
  802. package/cjs/form/form-select-histogram.js.map +0 -1
  803. package/cjs/form/form-select.js +0 -2
  804. package/cjs/form/form-select.js.map +0 -1
  805. package/cjs/form/form-slider.js +0 -2
  806. package/cjs/form/form-slider.js.map +0 -1
  807. package/cjs/form/form-textarea.js +0 -2
  808. package/cjs/form/form-textarea.js.map +0 -1
  809. package/cjs/form/form-textarea.styles.js +0 -2
  810. package/cjs/form/form-textarea.styles.js.map +0 -1
  811. package/cjs/form/form-textarea.styles_3p9qoy.css +0 -3
  812. package/cjs/form/form-time-range-picker.js +0 -2
  813. package/cjs/form/form-time-range-picker.js.map +0 -1
  814. package/cjs/form/form-timepicker.js +0 -2
  815. package/cjs/form/form-timepicker.js.map +0 -1
  816. package/cjs/form/form-unit-number-input.js +0 -2
  817. package/cjs/form/form-unit-number-input.js.map +0 -1
  818. package/cjs/timepicker/timepicker.styles_1jm33yw.css +0 -1
  819. package/data-table/data-table.styles_1iqq1g7.css +0 -26
  820. package/form/form-custom-field.js +0 -2
  821. package/form/form-custom-field.js.map +0 -1
  822. package/form/form-date-input.js +0 -2
  823. package/form/form-date-input.js.map +0 -1
  824. package/form/form-date-range-input.js +0 -2
  825. package/form/form-date-range-input.js.map +0 -1
  826. package/form/form-e-signature.js +0 -2
  827. package/form/form-e-signature.js.map +0 -1
  828. package/form/form-histogram.js +0 -2
  829. package/form/form-histogram.js.map +0 -1
  830. package/form/form-input-group.js +0 -2
  831. package/form/form-input-group.js.map +0 -1
  832. package/form/form-input.js +0 -2
  833. package/form/form-input.js.map +0 -1
  834. package/form/form-label-addon.js +0 -2
  835. package/form/form-label-addon.js.map +0 -1
  836. package/form/form-label-addon.styles.js +0 -2
  837. package/form/form-label-addon.styles.js.map +0 -1
  838. package/form/form-label-addon.styles_b00z8p.css +0 -1
  839. package/form/form-label.js +0 -2
  840. package/form/form-label.js.map +0 -1
  841. package/form/form-label.styles.js +0 -2
  842. package/form/form-label.styles.js.map +0 -1
  843. package/form/form-label.styles_1nbe0bm.css +0 -6
  844. package/form/form-masked-input.js +0 -2
  845. package/form/form-masked-input.js.map +0 -1
  846. package/form/form-multi-select.js +0 -2
  847. package/form/form-multi-select.js.map +0 -1
  848. package/form/form-nested-multi-select.js +0 -2
  849. package/form/form-nested-multi-select.js.map +0 -1
  850. package/form/form-nested-select.js +0 -2
  851. package/form/form-nested-select.js.map +0 -1
  852. package/form/form-otp-verification.js +0 -2
  853. package/form/form-otp-verification.js.map +0 -1
  854. package/form/form-phone-number-input.js +0 -2
  855. package/form/form-phone-number-input.js.map +0 -1
  856. package/form/form-predictive-text-input.js +0 -2
  857. package/form/form-predictive-text-input.js.map +0 -1
  858. package/form/form-range-select.js +0 -2
  859. package/form/form-range-select.js.map +0 -1
  860. package/form/form-range-slider.js +0 -2
  861. package/form/form-range-slider.js.map +0 -1
  862. package/form/form-select-histogram.js +0 -2
  863. package/form/form-select-histogram.js.map +0 -1
  864. package/form/form-select.js +0 -2
  865. package/form/form-select.js.map +0 -1
  866. package/form/form-slider.js +0 -2
  867. package/form/form-slider.js.map +0 -1
  868. package/form/form-textarea.js +0 -2
  869. package/form/form-textarea.js.map +0 -1
  870. package/form/form-textarea.styles.js +0 -2
  871. package/form/form-textarea.styles.js.map +0 -1
  872. package/form/form-textarea.styles_3p9qoy.css +0 -3
  873. package/form/form-time-range-picker.js +0 -2
  874. package/form/form-time-range-picker.js.map +0 -1
  875. package/form/form-timepicker.js +0 -2
  876. package/form/form-timepicker.js.map +0 -1
  877. package/form/form-unit-number-input.js +0 -2
  878. package/form/form-unit-number-input.js.map +0 -1
  879. package/link-list/internal-types.d.ts +0 -31
  880. package/timepicker/timepicker.styles_1jm33yw.css +0 -1
  881. /package/{codemod-utils.d.ts → codemods/codemod-utils.d.ts} +0 -0
  882. /package/{migrate-popover → codemods/migrate-popover}/index.d.ts +0 -0
  883. /package/{run-codemod.d.ts → codemods/run-codemod.d.ts} +0 -0
  884. /package/form/{form-custom-field.d.ts → form-custom-field/form-custom-field.d.ts} +0 -0
  885. /package/form/{form-date-input.d.ts → form-date-input/form-date-input.d.ts} +0 -0
  886. /package/form/{form-date-range-input.d.ts → form-date-range-input/form-date-range-input.d.ts} +0 -0
  887. /package/form/{form-e-signature.d.ts → form-e-signature/form-e-signature.d.ts} +0 -0
  888. /package/form/{form-histogram.d.ts → form-histogram-slider/form-histogram-slider.d.ts} +0 -0
  889. /package/form/{form-input.d.ts → form-input/form-input.d.ts} +0 -0
  890. /package/form/{form-input-group.d.ts → form-input-group/form-input-group.d.ts} +0 -0
  891. /package/form/{form-label-addon.d.ts → form-label/form-label-addon.d.ts} +0 -0
  892. /package/form/{form-label-addon.styles.d.ts → form-label/form-label-addon.styles.d.ts} +0 -0
  893. /package/form/{form-label.d.ts → form-label/form-label.d.ts} +0 -0
  894. /package/form/{form-label.styles.d.ts → form-label/form-label.styles.d.ts} +0 -0
  895. /package/form/{form-masked-input.d.ts → form-masked-input/form-masked-input.d.ts} +0 -0
  896. /package/form/{form-multi-select.d.ts → form-multi-select/form-multi-select.d.ts} +0 -0
  897. /package/form/{form-nested-multi-select.d.ts → form-nested-multi-select/form-nested-multi-select.d.ts} +0 -0
  898. /package/form/{form-nested-select.d.ts → form-nested-select/form-nested-select.d.ts} +0 -0
  899. /package/form/{form-phone-number-input.d.ts → form-phone-number-input/form-phone-number-input.d.ts} +0 -0
  900. /package/form/{form-predictive-text-input.d.ts → form-predictive-text-input/form-predictive-text-input.d.ts} +0 -0
  901. /package/form/{form-range-select.d.ts → form-range-select/form-range-select.d.ts} +0 -0
  902. /package/form/{form-range-slider.d.ts → form-range-slider/form-range-slider.d.ts} +0 -0
  903. /package/form/{form-select.d.ts → form-select/form-select.d.ts} +0 -0
  904. /package/form/{form-select-histogram.d.ts → form-select-histogram/form-select-histogram.d.ts} +0 -0
  905. /package/form/{form-slider.d.ts → form-slider/form-slider.d.ts} +0 -0
  906. /package/form/{form-textarea.d.ts → form-textarea/form-textarea.d.ts} +0 -0
  907. /package/form/{form-textarea.styles.d.ts → form-textarea/form-textarea.styles.d.ts} +0 -0
  908. /package/form/{form-time-range-picker.d.ts → form-time-range-picker/form-time-range-picker.d.ts} +0 -0
  909. /package/form/{form-timepicker.d.ts → form-timepicker/form-timepicker.d.ts} +0 -0
  910. /package/form/{form-unit-number-input.d.ts → form-unit-number-input/form-unit-number-input.d.ts} +0 -0
@@ -1,32 +1,107 @@
1
1
  import type { InputProps } from "../input/types";
2
+ /**
3
+ * Load state for `MaskedInput`.
4
+ */
2
5
  export type MaskedInputLoadState = "loading" | "fail" | "success";
6
+ /**
7
+ * Shared masking configuration used by `MaskedInput` and related components.
8
+ *
9
+ * Exactly one masking strategy should be provided. When multiple are supplied
10
+ * the precedence is: `maskTransformer` → `maskRegex` → `maskRange` /
11
+ * `unmaskRange`.
12
+ */
3
13
  export interface MaskAttributeProps {
14
+ /**
15
+ * Index range `[start, end]` of the characters to mask (inclusive, zero-based).
16
+ * Characters outside this range remain visible.
17
+ *
18
+ * @remarks Ignored when `maskTransformer` or `maskRegex` is provided.
19
+ */
4
20
  maskRange?: number[] | undefined;
21
+ /**
22
+ * Index range `[start, end]` of the characters to keep visible (inclusive, zero-based).
23
+ * Characters outside this range are masked.
24
+ *
25
+ * @remarks Ignored when `maskTransformer` or `maskRegex` is provided.
26
+ */
5
27
  unmaskRange?: number[] | undefined;
28
+ /**
29
+ * Regular expression whose matches are replaced with `maskChar`.
30
+ *
31
+ * @remarks Ignored when `maskTransformer` is provided.
32
+ */
6
33
  maskRegex?: RegExp | undefined;
34
+ /**
35
+ * Custom function that receives the raw value and returns the fully
36
+ * masked string. Takes precedence over `maskRegex`, `maskRange`, and
37
+ * `unmaskRange`.
38
+ */
7
39
  maskTransformer?: ((value: string) => string) | undefined;
40
+ /**
41
+ * Character used to replace each masked character in the displayed value.
42
+ *
43
+ * @default "•"
44
+ */
8
45
  maskChar?: string | undefined;
9
46
  }
47
+ /**
48
+ * Props for the `MaskedInput` component.
49
+ */
10
50
  export interface MaskedInputProps extends InputProps, MaskAttributeProps {
11
51
  value?: string | undefined;
12
- iconMask?: JSX.Element;
52
+ /**
53
+ * Icon rendered inside the toggle button while the value is masked
54
+ *
55
+ * @default <EyeIcon />
56
+ */
13
57
  iconUnmask?: JSX.Element;
58
+ /**
59
+ * Icon rendered inside the toggle button while the value is unmasked
60
+ *
61
+ * @default <EyeSlashIcon />
62
+ */
63
+ iconMask?: JSX.Element;
64
+ /**
65
+ * CSS color value applied to the mask-toggle icon when it is active
66
+ */
14
67
  iconActiveColor?: string | undefined;
68
+ /**
69
+ * CSS color value applied to the mask-toggle icon in its default
70
+ * inactive state.
71
+ */
15
72
  iconInactiveColor?: string | undefined;
73
+ /**
74
+ * When `true`, masking is permanently disabled and the raw value is
75
+ * always shown. The toggle icon is not rendered.
76
+ *
77
+ * @default false
78
+ */
16
79
  disableMask?: boolean | undefined;
80
+ /**
81
+ * Automatically transforms the typed value before it is stored and
82
+ * passed to `onChange`.
83
+ */
17
84
  transformInput?: "uppercase" | "lowercase" | undefined;
18
85
  /**
19
- * Specifies the state of the component when there is a
20
- * loading behaviour. Note that this only applies if
21
- * the component is in `readOnly` mode.
22
- *
23
- * Values: "loading" | "fail" | "success"
86
+ * Retrieval state for the value. Only applies when `readOnly` is `true`.
24
87
  */
25
88
  loadState?: MaskedInputLoadState | undefined;
89
+ /**
90
+ * Called when the value transitions from unmasked to masked.
91
+ */
26
92
  onMask?: (() => void) | undefined;
93
+ /**
94
+ * Called when the value transitions from masked to unmasked.
95
+ */
27
96
  onUnmask?: (() => void) | undefined;
28
- /** The callback function when the "Try again" button is clicked in error state */
97
+ /**
98
+ * Called when the user clicks the "Try again?" button shown in the
99
+ * `loadState="fail"` state. Only relevant when `readOnly` is `true`.
100
+ */
29
101
  onTryAgain?: (() => void) | undefined;
30
102
  }
31
- /** To be exposed for Form component inheritance */
103
+ /**
104
+ * A subset of `MaskedInputProps` used by form components that manage
105
+ * the `error` state themselves.
106
+ */
32
107
  export type MaskedInputPartialProps = Omit<MaskedInputProps, "error">;
@@ -1,4 +1,10 @@
1
1
  import "@govtechsg/sgds-web-component/themes/day.css";
2
2
  import "@govtechsg/sgds-web-component/themes/night.css";
3
3
  import type { MastheadProps } from "./types";
4
+ /**
5
+ * Displays the Singapore Government Design System (SGDS) masthead banner.
6
+ *
7
+ * Use `Masthead` at the top of government digital services to meet the SGDS
8
+ * masthead requirement.
9
+ */
4
10
  export declare const Masthead: import("react").MemoExoticComponent<({ stretch }: MastheadProps) => JSX.Element>;
@@ -1 +1 @@
1
- {"version":3,"file":"masthead.js","sources":["../../src/masthead/masthead.tsx"],"sourcesContent":["import \"@govtechsg/sgds-web-component/themes/day.css\";\nimport \"@govtechsg/sgds-web-component/themes/night.css\";\n\nimport clsx from \"clsx\";\nimport { memo, useEffect } from \"react\";\n\nimport { useTheme } from \"../theme\";\n\nimport * as styles from \"./masthead.styles\";\nimport type { MastheadProps } from \"./types\";\n\nconst MastheadComponent = ({ stretch = false }: MastheadProps): JSX.Element => {\n const { mode } = useTheme();\n const isDarkMode = mode === \"dark\";\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n if (!doAssetsExist()) {\n addAssets();\n }\n }, []);\n\n useEffect(() => {\n // SGDS dark mode only takes effect when this class is set on the :root element\n if (isDarkMode) {\n document.documentElement.classList.add(SGDS_THEME_NIGHT_CLASSNAME);\n } else {\n document.documentElement.classList.remove(\n SGDS_THEME_NIGHT_CLASSNAME\n );\n }\n }, [isDarkMode]);\n\n // =============================================================================\n // HELPER FUNCTIONS\n // =============================================================================\n const doAssetsExist = () => {\n return document.getElementById(SCRIPT_ID);\n };\n\n const addAssets = () => {\n if (!document.getElementById(SCRIPT_ID)) {\n const script = document.createElement(\"script\");\n script.id = SCRIPT_ID;\n script.type = \"module\";\n script.src = SCRIPT_SRC;\n\n document.head.appendChild(script);\n }\n };\n\n const createContent = () => {\n /**\n * Note: Had to use this method because we had to create a\n * custom type to handle Web Components (refer to this guide\n * https://blog.devgenius.io/how-to-use-web-components-in-react-54c951399bfd)\n * But we are having troubles exporting the custom type definition\n * via rollup\n */\n return { __html: \"<sgds-masthead></sgds-masthead>\" };\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n\n return (\n <div\n className={clsx(styles.wrapper, stretch && styles.wrapperStretch)}\n dangerouslySetInnerHTML={createContent()}\n />\n );\n};\n\nexport const Masthead = memo(MastheadComponent);\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\nconst SCRIPT_ID = \"lifesg-ds-masthead-script\";\nconst SCRIPT_SRC =\n \"https://cdn.jsdelivr.net/npm/@govtechsg/sgds-web-component@3/components/Masthead/index.umd.js\";\nconst SGDS_THEME_NIGHT_CLASSNAME = \"sgds-night-theme\";\n"],"names":["Masthead","memo","stretch","mode","useTheme","isDarkMode","useEffect","doAssetsExist","addAssets","document","documentElement","classList","add","SGDS_THEME_NIGHT_CLASSNAME","remove","getElementById","SCRIPT_ID","script","createElement","id","type","src","SCRIPT_SRC","head","appendChild","_jsx","className","clsx","styles.wrapper","styles.wrapperStretch","dangerouslySetInnerHTML","__html"],"mappings":"wsBAWA,MAiEaA,EAAWC,GAjEE,EAAGC,WAAU,MACnC,MAAMC,KAAEA,GAASC,IACXC,EAAsB,SAATF,EAKnBG,GAAU,KACDC,KACDC,GACJ,GACD,IAEHF,GAAU,KAEFD,EACAI,SAASC,gBAAgBC,UAAUC,IAAIC,GAEvCJ,SAASC,gBAAgBC,UAAUG,OAC/BD,EAER,GACD,CAACR,IAKJ,MAAME,EAAgB,IACXE,SAASM,eAAeC,GAG7BR,EAAY,KACd,IAAKC,SAASM,eAAeC,GAAY,CACrC,MAAMC,EAASR,SAASS,cAAc,UACtCD,EAAOE,GAAKH,EACZC,EAAOG,KAAO,SACdH,EAAOI,IAAMC,EAEbb,SAASc,KAAKC,YAAYP,EAC9B,GAkBJ,OACIQ,SACIC,UAAWC,EAAKC,EAAgB1B,GAAW2B,GAC3CC,wBAVG,CAAEC,OAAQ,oCAWf,IASJf,EAAY,4BACZM,EACF,gGACET,EAA6B"}
1
+ {"version":3,"file":"masthead.js","sources":["../../src/masthead/masthead.tsx"],"sourcesContent":["import \"@govtechsg/sgds-web-component/themes/day.css\";\nimport \"@govtechsg/sgds-web-component/themes/night.css\";\n\nimport clsx from \"clsx\";\nimport { memo, useEffect } from \"react\";\n\nimport { useTheme } from \"../theme\";\nimport * as styles from \"./masthead.styles\";\nimport type { MastheadProps } from \"./types\";\n\nconst MastheadComponent = ({ stretch = false }: MastheadProps): JSX.Element => {\n const { mode } = useTheme();\n const isDarkMode = mode === \"dark\";\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n if (!doAssetsExist()) {\n addAssets();\n }\n }, []);\n\n useEffect(() => {\n // SGDS dark mode only takes effect when this class is set on the :root element\n if (isDarkMode) {\n document.documentElement.classList.add(SGDS_THEME_NIGHT_CLASSNAME);\n } else {\n document.documentElement.classList.remove(\n SGDS_THEME_NIGHT_CLASSNAME\n );\n }\n }, [isDarkMode]);\n\n // =============================================================================\n // HELPER FUNCTIONS\n // =============================================================================\n const doAssetsExist = () => {\n return document.getElementById(SCRIPT_ID);\n };\n\n const addAssets = () => {\n if (!document.getElementById(SCRIPT_ID)) {\n const script = document.createElement(\"script\");\n script.id = SCRIPT_ID;\n script.type = \"module\";\n script.src = SCRIPT_SRC;\n\n document.head.appendChild(script);\n }\n };\n\n const createContent = () => {\n /**\n * Note: Had to use this method because we had to create a\n * custom type to handle Web Components (refer to this guide\n * https://blog.devgenius.io/how-to-use-web-components-in-react-54c951399bfd)\n * But we are having troubles exporting the custom type definition\n * via rollup\n */\n return { __html: \"<sgds-masthead></sgds-masthead>\" };\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n\n return (\n <div\n className={clsx(styles.wrapper, stretch && styles.wrapperStretch)}\n dangerouslySetInnerHTML={createContent()}\n />\n );\n};\n\n// @catalog\n/**\n * Displays the Singapore Government Design System (SGDS) masthead banner.\n *\n * Use `Masthead` at the top of government digital services to meet the SGDS\n * masthead requirement.\n */\nexport const Masthead = memo(MastheadComponent);\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\nconst SCRIPT_ID = \"lifesg-ds-masthead-script\";\nconst SCRIPT_SRC =\n \"https://cdn.jsdelivr.net/npm/@govtechsg/sgds-web-component@3/components/Masthead/index.umd.js\";\nconst SGDS_THEME_NIGHT_CLASSNAME = \"sgds-night-theme\";\n"],"names":["Masthead","memo","stretch","mode","useTheme","isDarkMode","useEffect","doAssetsExist","addAssets","document","documentElement","classList","add","SGDS_THEME_NIGHT_CLASSNAME","remove","getElementById","SCRIPT_ID","script","createElement","id","type","src","SCRIPT_SRC","head","appendChild","_jsx","className","clsx","styles.wrapper","styles.wrapperStretch","dangerouslySetInnerHTML","__html"],"mappings":"wsBAUA,MAwEaA,EAAWC,GAxEE,EAAGC,WAAU,MACnC,MAAMC,KAAEA,GAASC,IACXC,EAAsB,SAATF,EAKnBG,GAAU,KACDC,KACDC,GACJ,GACD,IAEHF,GAAU,KAEFD,EACAI,SAASC,gBAAgBC,UAAUC,IAAIC,GAEvCJ,SAASC,gBAAgBC,UAAUG,OAC/BD,EAER,GACD,CAACR,IAKJ,MAAME,EAAgB,IACXE,SAASM,eAAeC,GAG7BR,EAAY,KACd,IAAKC,SAASM,eAAeC,GAAY,CACrC,MAAMC,EAASR,SAASS,cAAc,UACtCD,EAAOE,GAAKH,EACZC,EAAOG,KAAO,SACdH,EAAOI,IAAMC,EAEbb,SAASc,KAAKC,YAAYP,EAC9B,GAkBJ,OACIQ,SACIC,UAAWC,EAAKC,EAAgB1B,GAAW2B,GAC3CC,wBAVG,CAAEC,OAAQ,oCAWf,IAgBJf,EAAY,4BACZM,EACF,gGACET,EAA6B"}
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Props for the `Masthead` component.
3
+ */
1
4
  export interface MastheadProps {
5
+ /**
6
+ * Allows the masthead to span the full width of its container rather than
7
+ * constraining to the default layout width.
8
+ *
9
+ * @default false
10
+ */
2
11
  stretch?: boolean | undefined;
3
12
  }
package/menu/menu.d.ts CHANGED
@@ -1,20 +1,43 @@
1
1
  import type { MenuContentProps, MenuProps } from "./types";
2
+ /**
3
+ * Trigger wrapper that anchors a `Menu.Content` panel to its child element.
4
+ *
5
+ * Prefer the `Menu` composite export when building a full menu — it bundles
6
+ * `Menu.Content`, `Menu.Section`, `Menu.Item`, and `Menu.Link` as named
7
+ * sub-components alongside the trigger.
8
+ */
2
9
  export declare const MenuTrigger: ({ children, position, menuContent, "data-testid": testId, ...otherProps }: MenuProps) => JSX.Element;
10
+ /**
11
+ * A popover-anchored menu composed of sections and interactive items.
12
+ *
13
+ * Use `Menu` when a trigger element should open a floating panel of actions or
14
+ * navigation links.
15
+ *
16
+ * Sub-components:
17
+ * - `Menu.Content` — the floating panel that contains menu sections.
18
+ * - `Menu.Item` — a non-anchor interactive list item with a primary label and optional sub-label.
19
+ * - `Menu.Link` — an anchor (`<a>`) list item styled as a menu entry.
20
+ * - `Menu.Section` — a grouping container for `Menu.Item` and `Menu.Link` entries.
21
+ */
3
22
  export declare const Menu: (({ children, position, menuContent, "data-testid": testId, ...otherProps }: MenuProps) => JSX.Element) & {
23
+ /** Renders the floating panel that contains menu sections. */
4
24
  Content: {
5
25
  ({ children, className, "data-testid": testId, overflow, maxHeight, ...otherProps }: MenuContentProps): JSX.Element;
6
26
  displayName: string;
7
27
  };
8
- Section: {
9
- ({ children, label, showDivider, className, "data-testid": testId, ...otherProps }: import("./types").MenuSectionProps): JSX.Element;
10
- displayName: string;
11
- };
28
+ /** Renders a non-anchor interactive list item with a primary label and optional sub-label. */
12
29
  Item: {
13
30
  ({ label, subLabel, children, className, "data-testid": testId, ...otherProps }: import("./types").MenuItemProps): JSX.Element;
14
31
  displayName: string;
15
32
  };
33
+ /** Renders an anchor (`<a>`) list item styled as a menu entry. */
16
34
  Link: {
17
35
  ({ children, className, "data-testid": testId, ...otherProps }: import("./types").MenuLinkProps): JSX.Element;
18
36
  displayName: string;
19
37
  };
38
+ /** Groups related menu entries. */
39
+ Section: {
40
+ ({ children, label, showDivider, className, "data-testid": testId, ...otherProps }: import("./types").MenuSectionProps): JSX.Element;
41
+ displayName: string;
42
+ };
20
43
  };
package/menu/menu.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__rest as t}from"../_virtual/_tslib.js";import{jsx as e}from"react/jsx-runtime";import{cloneElement as o}from"react";import"clsx";import"../theme/theme-provider/context.js";import"../typography/typography.js";import"../card/card.styles_1gh9gs3.css";import"../markup/markup.js";import"../modal-v2/index.js";import"../theme/theme-provider/index.js";import"../theme/tokens/border.js";import"../theme/tokens/colour.js";import"../theme/tokens/font.js";import"../theme/tokens/media-query.js";import"../util/calendar-helper.js";import"../external/dayjs/dayjs.min.js";import"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import"../theme/utils/use-media-query.js";import"../popover/popover.styles_ujnf0h.css";import{PopoverTrigger as r}from"../popover/popover-trigger.js";import"../popover/popover-inline/popover-inline.styles_bkopnt.css";import{MenuContent as i}from"./menu-content.js";import{MenuItem as m}from"./menu-item.js";import{MenuLink as p}from"./menu-link.js";import{MenuSection as s}from"./menu-section.js";const n=i=>{var{children:m,position:p="bottom-start",menuContent:s,"data-testid":n="menu"}=i,a=t(i,["children","position","menuContent","data-testid"]);return e(r,Object.assign({position:p,popoverContent:t=>o(s,{overflow:t.overflow,maxHeight:t.maxHeight}),"data-testid":n},a,{children:m}))},a=Object.assign(n,{Content:i,Section:s,Item:m,Link:p});export{a as Menu,n as MenuTrigger};
1
+ import{__rest as t}from"../_virtual/_tslib.js";import{jsx as e}from"react/jsx-runtime";import{cloneElement as o}from"react";import"clsx";import"../theme/theme-provider/context.js";import"../typography/typography.js";import"../card/card.styles_1gh9gs3.css";import"../markup/markup.js";import"../modal-v2/modal-v2.js";import"../theme/theme-provider/index.js";import"../theme/tokens/border.js";import"../theme/tokens/colour.js";import"../theme/tokens/font.js";import"../theme/tokens/media-query.js";import"../util/calendar-helper.js";import"../external/dayjs/dayjs.min.js";import"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import"../theme/utils/use-media-query.js";import"../popover/popover.styles_ujnf0h.css";import{PopoverTrigger as r}from"../popover/popover-trigger.js";import"../popover/popover-inline/popover-inline.styles_bkopnt.css";import{MenuContent as i}from"./menu-content.js";import{MenuItem as m}from"./menu-item.js";import{MenuLink as p}from"./menu-link.js";import{MenuSection as s}from"./menu-section.js";const n=i=>{var{children:m,position:p="bottom-start",menuContent:s,"data-testid":n="menu"}=i,a=t(i,["children","position","menuContent","data-testid"]);return e(r,Object.assign({position:p,popoverContent:t=>o(s,{overflow:t.overflow,maxHeight:t.maxHeight}),"data-testid":n},a,{children:m}))},a=Object.assign(n,{Content:i,Item:m,Link:p,Section:s});export{a as Menu,n as MenuTrigger};
2
2
  //# sourceMappingURL=menu.js.map
package/menu/menu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sources":["../../src/menu/menu.tsx"],"sourcesContent":["import { cloneElement } from \"react\";\n\nimport type { PopoverRenderProps } from \"../popover\";\nimport { PopoverTrigger } from \"../popover\";\nimport { MenuContent } from \"./menu-content\";\nimport { MenuItem } from \"./menu-item\";\nimport { MenuLink } from \"./menu-link\";\nimport { MenuSection } from \"./menu-section\";\nimport type { MenuContentProps, MenuProps } from \"./types\";\n\nexport const MenuTrigger = ({\n children,\n position = \"bottom-start\",\n menuContent,\n \"data-testid\": testId = \"menu\",\n ...otherProps\n}: MenuProps): JSX.Element => {\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n return (\n <PopoverTrigger\n position={position}\n popoverContent={(renderProps: PopoverRenderProps) =>\n cloneElement<MenuContentProps>(menuContent, {\n overflow: renderProps.overflow,\n maxHeight: renderProps.maxHeight,\n })\n }\n data-testid={testId}\n {...otherProps}\n >\n {children}\n </PopoverTrigger>\n );\n};\n\nexport const Menu = Object.assign(MenuTrigger, {\n Content: MenuContent,\n Section: MenuSection,\n Item: MenuItem,\n Link: MenuLink,\n});\n"],"names":["MenuTrigger","_a","children","position","menuContent","testId","otherProps","__rest","_jsx","PopoverTrigger","popoverContent","renderProps","cloneElement","overflow","maxHeight","Menu","Object","assign","Content","MenuContent","Section","MenuSection","Item","MenuItem","Link","MenuLink"],"mappings":"ylCAUO,MAAMA,EAAeC,IAAA,IAAAC,SACxBA,EAAQC,SACRA,EAAW,eAAcC,YACzBA,EACA,cAAeC,EAAS,QAAMJ,EAC3BK,EAAUC,EAAAN,EALW,qDAUxB,OACIO,EAACC,iBACGN,SAAUA,EACVO,eAAiBC,GACbC,EAA+BR,EAAa,CACxCS,SAAUF,EAAYE,SACtBC,UAAWH,EAAYG,YACzB,cAEOT,GACTC,YAEHJ,IACY,EAIZa,EAAOC,OAAOC,OAAOjB,EAAa,CAC3CkB,QAASC,EACTC,QAASC,EACTC,KAAMC,EACNC,KAAMC"}
1
+ {"version":3,"file":"menu.js","sources":["../../src/menu/menu.tsx"],"sourcesContent":["import { cloneElement } from \"react\";\n\nimport type { PopoverRenderProps } from \"../popover\";\nimport { PopoverTrigger } from \"../popover\";\nimport { MenuContent } from \"./menu-content\";\nimport { MenuItem } from \"./menu-item\";\nimport { MenuLink } from \"./menu-link\";\nimport { MenuSection } from \"./menu-section\";\nimport type { MenuContentProps, MenuProps } from \"./types\";\n\n/**\n * Trigger wrapper that anchors a `Menu.Content` panel to its child element.\n *\n * Prefer the `Menu` composite export when building a full menu — it bundles\n * `Menu.Content`, `Menu.Section`, `Menu.Item`, and `Menu.Link` as named\n * sub-components alongside the trigger.\n */\nexport const MenuTrigger = ({\n children,\n position = \"bottom-start\",\n menuContent,\n \"data-testid\": testId = \"menu\",\n ...otherProps\n}: MenuProps): JSX.Element => {\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n return (\n <PopoverTrigger\n position={position}\n popoverContent={(renderProps: PopoverRenderProps) =>\n cloneElement<MenuContentProps>(menuContent, {\n overflow: renderProps.overflow,\n maxHeight: renderProps.maxHeight,\n })\n }\n data-testid={testId}\n {...otherProps}\n >\n {children}\n </PopoverTrigger>\n );\n};\n\n// @catalog\n/**\n * A popover-anchored menu composed of sections and interactive items.\n *\n * Use `Menu` when a trigger element should open a floating panel of actions or\n * navigation links.\n *\n * Sub-components:\n * - `Menu.Content` — the floating panel that contains menu sections.\n * - `Menu.Item` — a non-anchor interactive list item with a primary label and optional sub-label.\n * - `Menu.Link` — an anchor (`<a>`) list item styled as a menu entry.\n * - `Menu.Section` — a grouping container for `Menu.Item` and `Menu.Link` entries.\n */\nexport const Menu = Object.assign(MenuTrigger, {\n /** Renders the floating panel that contains menu sections. */\n Content: MenuContent,\n /** Renders a non-anchor interactive list item with a primary label and optional sub-label. */\n Item: MenuItem,\n /** Renders an anchor (`<a>`) list item styled as a menu entry. */\n Link: MenuLink,\n /** Groups related menu entries. */\n Section: MenuSection,\n});\n"],"names":["MenuTrigger","_a","children","position","menuContent","testId","otherProps","__rest","_jsx","PopoverTrigger","popoverContent","renderProps","cloneElement","overflow","maxHeight","Menu","Object","assign","Content","MenuContent","Item","MenuItem","Link","MenuLink","Section","MenuSection"],"mappings":"4lCAiBO,MAAMA,EAAeC,IAAA,IAAAC,SACxBA,EAAQC,SACRA,EAAW,eAAcC,YACzBA,EACA,cAAeC,EAAS,QAAMJ,EAC3BK,EAAUC,EAAAN,EALW,qDAUxB,OACIO,EAACC,iBACGN,SAAUA,EACVO,eAAiBC,GACbC,EAA+BR,EAAa,CACxCS,SAAUF,EAAYE,SACtBC,UAAWH,EAAYG,YACzB,cAEOT,GACTC,YAEHJ,IACY,EAiBZa,EAAOC,OAAOC,OAAOjB,EAAa,CAE3CkB,QAASC,EAETC,KAAMC,EAENC,KAAMC,EAENC,QAASC"}
package/menu/types.d.ts CHANGED
@@ -1,28 +1,76 @@
1
1
  import type { AnchorHTMLAttributes, FunctionComponentElement, HTMLAttributes, ReactElement } from "react";
2
- import type { PopoverRenderProps, PopoverTriggerProps } from "../popover";
2
+ import type { PopoverPosition, PopoverRenderProps, PopoverTriggerProps } from "../popover";
3
3
  import type { MenuItem } from "./menu-item";
4
4
  import type { MenuLink } from "./menu-link";
5
5
  import type { MenuSection } from "./menu-section";
6
+ /**
7
+ * Props for the `Menu` component.
8
+ *
9
+ */
6
10
  export interface MenuProps extends Omit<PopoverTriggerProps, "popoverContent"> {
11
+ /**
12
+ * The `Menu.Content` element to display inside the popover panel.
13
+ */
7
14
  menuContent: FunctionComponentElement<MenuContentProps>;
15
+ /**
16
+ * Preferred placement of the popover relative to the trigger.
17
+ *
18
+ * @default "bottom-start"
19
+ */
20
+ position?: PopoverPosition | undefined;
8
21
  }
22
+ /**
23
+ * Props for the `Menu.Content` sub-component.
24
+ */
9
25
  export interface MenuContentProps extends HTMLAttributes<HTMLDivElement>, PopoverRenderProps {
26
+ /** One or more `Menu.Section` elements that make up the panel body. */
10
27
  children: ReactElement<typeof MenuSection> | ReactElement<typeof MenuSection>[];
11
28
  "data-testid"?: string | undefined;
12
29
  }
13
30
  type MenuSectionItem = ReactElement<typeof MenuItem> | ReactElement<typeof MenuLink>;
31
+ /**
32
+ * Props for the `Menu.Section` sub-component.
33
+ */
14
34
  export interface MenuSectionProps extends HTMLAttributes<HTMLUListElement> {
35
+ /** One or more `Menu.Item` or `Menu.Link` elements within this section. */
15
36
  children: MenuSectionItem | MenuSectionItem[];
37
+ /**
38
+ * Whether to render a top divider separating this section from the one above.
39
+ *
40
+ * @default true
41
+ */
16
42
  showDivider?: boolean | undefined;
43
+ /**
44
+ * Accessible group label rendered above the section items.
45
+ */
17
46
  label?: string | undefined;
47
+ /**
48
+ * @default "menu-section"
49
+ */
18
50
  "data-testid"?: string | undefined;
19
51
  }
52
+ /**
53
+ * Props for the `Menu.Item` sub-component.
54
+ */
20
55
  export interface MenuItemProps extends HTMLAttributes<HTMLLIElement> {
56
+ /** Primary text label. */
21
57
  label?: string | undefined;
58
+ /**
59
+ * Secondary descriptive text rendered below `label`.
60
+ */
22
61
  subLabel?: string | undefined;
62
+ /**
63
+ * @default "menu-item"
64
+ */
23
65
  "data-testid"?: string | undefined;
24
66
  }
67
+ /**
68
+ * Props for the `Menu.Link` sub-component.
69
+ */
25
70
  export interface MenuLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
71
+ /**
72
+ * @default "menu-link"
73
+ */
26
74
  "data-testid"?: string | undefined;
27
75
  }
28
76
  export {};
package/modal/index.d.ts CHANGED
@@ -1,4 +1,17 @@
1
+ /**
2
+ * A full-screen overlay modal with a slide animation.
3
+ *
4
+ * Use `Modal` to present content that requires the user's immediate attention
5
+ * or a focused interaction. Use `ModalV2` for built-in scroll handling and improved accessibility.
6
+ *
7
+ * Sub-components:
8
+ * - `Modal.Box` — a styled content box with an optional close button.
9
+ */
1
10
  export declare const Modal: (({ id, show, animationFrom, children, enableOverlayClick, rootComponentId, zIndex, onOverlayClick, dismissKeyboardOnShow, className, ...otherProps }: import("./types").ModalProps) => JSX.Element) & {
11
+ /**
12
+ * A styled content container for use inside `Modal`. Renders an optional
13
+ * close button and stops click events from propagating to the overlay.
14
+ */
2
15
  Box: (props: import("./types").ModalBoxProps & import("react").RefAttributes<HTMLDivElement>) => React.ReactElement | null;
3
16
  };
4
17
  export * from "./types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/modal/index.ts"],"sourcesContent":["import { Modal as Base } from \"./modal\";\nimport { ModalBox as Box } from \"./modal-box\";\n\nexport const Modal = Object.assign(Base, {\n Box,\n});\n\nexport * from \"./types\";\n"],"names":["Modal","Object","assign","Base","Box"],"mappings":"mFAGaA,EAAQC,OAAOC,OAAOC,EAAM,KACrCC"}
1
+ {"version":3,"file":"index.js","sources":["../../src/modal/index.ts"],"sourcesContent":["import { Modal as Base } from \"./modal\";\nimport { ModalBox as Box } from \"./modal-box\";\n\n// @catalog\n/**\n * A full-screen overlay modal with a slide animation.\n *\n * Use `Modal` to present content that requires the user's immediate attention\n * or a focused interaction. Use `ModalV2` for built-in scroll handling and improved accessibility.\n *\n * Sub-components:\n * - `Modal.Box` — a styled content box with an optional close button.\n */\nexport const Modal = Object.assign(Base, {\n /**\n * A styled content container for use inside `Modal`. Renders an optional\n * close button and stops click events from propagating to the overlay.\n */\n Box,\n});\n\nexport * from \"./types\";\n"],"names":["Modal","Object","assign","Base","Box"],"mappings":"mFAaaA,EAAQC,OAAOC,OAAOC,EAAM,KAKrCC"}
@@ -1,2 +1,2 @@
1
- import{__rest as o}from"../_virtual/_tslib.js";import{jsxs as s,jsx as t}from"react/jsx-runtime";import{CrossIcon as i}from"@lifesg/react-icons/cross";import r from"clsx";import{forwardRef as e}from"react";import{ClickableIcon as l}from"../shared/clickable-icon/clickable-icon.js";import{box as a,closeButton as c}from"./modal-box.styles.js";const m=e((function(e,m){var{id:n="modal-box",children:d,onClose:f,showCloseButton:p=!0,className:u}=e,h=o(e,["id","children","onClose","showCloseButton","className"]);return s("div",Object.assign({ref:m,"data-testid":n},h,{onClick:o=>{o.stopPropagation()},className:r(a,u),children:[p&&t(l,{onClick:f,"data-testid":"close-button",focusHighlight:!1,focusOutline:"browser",className:c,children:t(i,{})}),d]}))}));m.displayName="Modal.Box";export{m as ModalBox};
1
+ import{__rest as o}from"../_virtual/_tslib.js";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{CrossIcon as t}from"@lifesg/react-icons/cross";import i from"clsx";import{forwardRef as s}from"react";import{ClickableIcon as l}from"../shared/clickable-icon/clickable-icon.js";import"../util/calendar-helper.js";import"../external/dayjs/dayjs.min.js";import{mergeRefs as a}from"../util/merge-refs.js";import"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import{box as m,closeButton as n}from"./modal-box.styles.js";const c=s((function(s,c){var{id:d="modal-box",children:p,onClose:f,showCloseButton:u=!0,className:j,elementRef:h}=s,b=o(s,["id","children","onClose","showCloseButton","className","elementRef"]);return e("div",Object.assign({ref:a(c,h),"data-testid":d},b,{onClick:o=>{o.stopPropagation()},className:i(m,j),children:[u&&r(l,{onClick:f,"data-testid":"close-button",focusHighlight:!1,focusOutline:"browser",className:n,children:r(t,{})}),p]}))}));c.displayName="Modal.Box";export{c as ModalBox};
2
2
  //# sourceMappingURL=modal-box.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-box.js","sources":["../../src/modal/modal-box.tsx"],"sourcesContent":["import { CrossIcon } from \"@lifesg/react-icons/cross\";\nimport clsx from \"clsx\";\nimport type React from \"react\";\nimport type { NamedExoticComponent } from \"react\";\nimport { forwardRef } from \"react\";\n\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport * as styles from \"./modal-box.styles\";\nimport type { ModalBoxProps } from \"./types\";\n\nfunction ModalBoxInner(\n {\n id = \"modal-box\",\n children,\n onClose,\n showCloseButton = true,\n className,\n ...otherProps\n }: ModalBoxProps,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleOnClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderCloseButton = () => {\n return (\n <ClickableIcon\n onClick={onClose}\n data-testid=\"close-button\"\n focusHighlight={false}\n focusOutline=\"browser\"\n className={styles.closeButton}\n >\n <CrossIcon />\n </ClickableIcon>\n );\n };\n\n return (\n <div\n ref={ref}\n data-testid={id}\n {...otherProps}\n onClick={handleOnClick}\n className={clsx(styles.box, className)}\n >\n {showCloseButton && renderCloseButton()}\n {children}\n </div>\n );\n}\n\nexport const ModalBox = forwardRef<HTMLDivElement, ModalBoxProps>(\n ModalBoxInner\n);\n\n(ModalBox as NamedExoticComponent).displayName = \"Modal.Box\";\n"],"names":["ModalBox","forwardRef","_a","ref","id","children","onClose","showCloseButton","className","otherProps","__rest","_jsxs","Object","assign","onClick","event","stopPropagation","clsx","styles.box","_jsx","ClickableIcon","focusHighlight","focusOutline","styles.closeButton","CrossIcon","displayName"],"mappings":"4VA2DaA,EAAWC,GAjDxB,SACIC,EAQAC,GARA,IAAAC,GACIA,EAAK,YAAWC,SAChBA,EAAQC,QACRA,EAAOC,gBACPA,GAAkB,EAAIC,UACtBA,GAASN,EACNO,EAAUC,EAAAR,EANjB,2DAkCA,OACIS,EAAA,MAAAC,OAAAC,OAAA,CACIV,IAAKA,EAAG,cACKC,GACTK,EAAU,CACdK,QA1BeC,IACnBA,EAAMC,iBAAiB,EA0BnBR,UAAWS,EAAKC,EAAYV,GAAUH,SAAA,CAErCE,GApBDY,EAACC,EAAa,CACVN,QAASR,EAAO,cACJ,eACZe,gBAAgB,EAChBC,aAAa,UACbd,UAAWe,EAAkBlB,SAE7Bc,EAACK,EAAS,CAAA,KAcbnB,KAGb,IAMCL,EAAkCyB,YAAc"}
1
+ {"version":3,"file":"modal-box.js","sources":["../../src/modal/modal-box.tsx"],"sourcesContent":["import { CrossIcon } from \"@lifesg/react-icons/cross\";\nimport clsx from \"clsx\";\nimport type React from \"react\";\nimport type { NamedExoticComponent } from \"react\";\nimport { forwardRef } from \"react\";\n\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport { mergeRefs } from \"../util\";\nimport * as styles from \"./modal-box.styles\";\nimport type { ModalBoxProps } from \"./types\";\n\nfunction ModalBoxInner(\n {\n id = \"modal-box\",\n children,\n onClose,\n showCloseButton = true,\n className,\n elementRef,\n ...otherProps\n }: ModalBoxProps,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleOnClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n const renderCloseButton = () => {\n return (\n <ClickableIcon\n onClick={onClose}\n data-testid=\"close-button\"\n focusHighlight={false}\n focusOutline=\"browser\"\n className={styles.closeButton}\n >\n <CrossIcon />\n </ClickableIcon>\n );\n };\n\n return (\n <div\n ref={mergeRefs(ref, elementRef)}\n data-testid={id}\n {...otherProps}\n onClick={handleOnClick}\n className={clsx(styles.box, className)}\n >\n {showCloseButton && renderCloseButton()}\n {children}\n </div>\n );\n}\n\nexport const ModalBox = forwardRef<HTMLDivElement, ModalBoxProps>(\n ModalBoxInner\n);\n\n(ModalBox as NamedExoticComponent).displayName = \"Modal.Box\";\n"],"names":["ModalBox","forwardRef","_a","ref","id","children","onClose","showCloseButton","className","elementRef","otherProps","__rest","_jsxs","Object","assign","mergeRefs","onClick","event","stopPropagation","clsx","styles.box","_jsx","ClickableIcon","focusHighlight","focusOutline","styles.closeButton","CrossIcon","displayName"],"mappings":"mkBA6DaA,EAAWC,GAlDxB,SACIC,EASAC,OATAC,GACIA,EAAK,YAAWC,SAChBA,EAAQC,QACRA,EAAOC,gBACPA,GAAkB,EAAIC,UACtBA,EAASC,WACTA,GAAUP,EACPQ,EAAUC,EAAAT,EAPjB,wEAmCA,OACIU,EAAA,MAAAC,OAAAC,OAAA,CACIX,IAAKY,EAAUZ,EAAKM,iBACPL,GACTM,EAAU,CACdM,QA1BeC,IACnBA,EAAMC,iBAAiB,EA0BnBV,UAAWW,EAAKC,EAAYZ,GAAUH,SAAA,CAErCE,GApBDc,EAACC,EAAa,CACVN,QAASV,EAAO,cACJ,eACZiB,gBAAgB,EAChBC,aAAa,UACbhB,UAAWiB,EAAkBpB,SAE7BgB,EAACK,EAAS,CAAA,KAcbrB,KAGb,IAMCL,EAAkC2B,YAAc"}
package/modal/types.d.ts CHANGED
@@ -1,23 +1,72 @@
1
1
  import type { ModalAnimationDirection } from "../modal-v2/types";
2
+ /**
3
+ * Props for the `Modal` component.
4
+ */
2
5
  export interface ModalProps extends React.HTMLAttributes<HTMLDivElement> {
6
+ /**
7
+ * Controls whether the modal is visible.
8
+ *
9
+ * @default false
10
+ */
3
11
  show: boolean;
4
- /** The content of the modal. The parent element must be a valid HTML
5
- * element or a component that forwards a ref to a valid HTML element. This
6
- * element is used to determine the boundaries for overlay click
7
- * detection. Fragments are not supported. */
12
+ /**
13
+ * The content of the modal. The parent element must be a valid HTML
14
+ * element or a component that forwards a ref to a valid HTML element.
15
+ */
8
16
  children: React.JSX.Element;
9
- /** Animation direction of appearance and dismissal. Values: "top" | "bottom" | "left" | "right" */
17
+ /**
18
+ * Direction from which the modal slides in and out.
19
+ *
20
+ * @default "bottom"
21
+ */
10
22
  animationFrom?: ModalAnimationDirection | undefined;
23
+ /**
24
+ * Whether clicking the overlay backdrop dismisses the modal.
25
+ *
26
+ * @default true
27
+ */
11
28
  enableOverlayClick?: boolean | undefined;
12
- /** The identifier of the element to inject the Modal into */
29
+ /**
30
+ * The `id` of the DOM element to portal the modal into.
31
+ *
32
+ * @default document.body
33
+ */
13
34
  rootComponentId?: string | undefined;
35
+ /**
36
+ * The z-index applied to the overlay stack.
37
+ */
14
38
  zIndex?: number | undefined;
39
+ /**
40
+ * Called when the overlay backdrop is clicked and `enableOverlayClick` is
41
+ * `true`.
42
+ */
15
43
  onOverlayClick?: (() => void) | undefined;
16
- /** Dismiss keyboard to keep modal in fullscreen */
44
+ /**
45
+ * Blurs the currently focused element when the modal becomes visible,
46
+ * dismissing the on-screen keyboard on mobile to prevent it from
47
+ * obscuring the modal.
48
+ *
49
+ * @default true
50
+ */
17
51
  dismissKeyboardOnShow?: boolean | undefined;
18
52
  }
53
+ /**
54
+ * Props for the `Modal.Box` sub-component.
55
+ */
19
56
  export interface ModalBoxProps extends React.HTMLAttributes<HTMLDivElement> {
20
57
  children: React.ReactNode;
58
+ /**
59
+ * Whether to render the close button in the top-right corner of the box.
60
+ *
61
+ * @default true
62
+ */
21
63
  showCloseButton?: boolean | undefined;
64
+ /**
65
+ * Called when the close button is clicked.
66
+ */
22
67
  onClose?: (() => void) | undefined;
68
+ /**
69
+ * Ref to the modal box DOM element. When used within `Modal`, the default `ref` is not available and you can specify this instead.
70
+ */
71
+ elementRef?: React.Ref<HTMLDivElement> | undefined;
23
72
  }
@@ -1,16 +1,2 @@
1
- export declare const ModalV2: (({ id, show, onClose, animationFrom, children, enableOverlayClick, rootComponentId, zIndex, onOverlayClick, dismissKeyboardOnShow, "data-testid": testId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, disableInitialFocus, className, ...otherProps }: import("./types").ModalV2Props) => JSX.Element) & {
2
- Card: (props: import("./types").ModalCardProps & import("react").RefAttributes<HTMLDivElement>) => React.ReactElement | null;
3
- CloseButton: {
4
- ({ "data-testid": testId, className, ...otherProps }: import("./types").ModalCloseButtonProps): import("react/jsx-runtime").JSX.Element;
5
- displayName: string;
6
- };
7
- Content: {
8
- ({ "data-testid": testId, children, className, ...otherProps }: import("./types").ModalContentProps): import("react/jsx-runtime").JSX.Element;
9
- displayName: string;
10
- };
11
- Footer: {
12
- ({ "data-testid": testId, primaryButton, secondaryButton, className, ...otherProps }: import("./types").ModalFooterProps): import("react/jsx-runtime").JSX.Element;
13
- displayName: string;
14
- };
15
- };
1
+ export * from "./modal-v2";
16
2
  export * from "./types";
package/modal-v2/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{ModalV2 as o}from"./modal-v2.js";import{Card as t}from"./slots/card.js";import{CloseButton as s}from"./slots/close-button.js";import{Content as r}from"./slots/content.js";import{Footer as m}from"./slots/footer.js";const e=Object.assign(o,{Card:t,CloseButton:s,Content:r,Footer:m});export{e as ModalV2};
1
+ export{ModalV2}from"./modal-v2.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/modal-v2/index.ts"],"sourcesContent":["import { ModalV2 as Base } from \"./modal-v2\";\nimport { Card, CloseButton, Content, Footer } from \"./slots\";\n\nexport const ModalV2 = Object.assign(Base, {\n Card,\n CloseButton,\n Content,\n Footer,\n});\n\nexport * from \"./types\";\n"],"names":["ModalV2","Object","assign","Base","Card","CloseButton","Content","Footer"],"mappings":"mOAGaA,EAAUC,OAAOC,OAAOC,EAAM,CACvCC,OACAC,cACAC,UACAC"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,33 @@
1
+ import React from "react";
1
2
  import type { ModalV2Props } from "./types";
2
- export declare const ModalV2: ({ id, show, onClose, animationFrom, children, enableOverlayClick, rootComponentId, zIndex, onOverlayClick, dismissKeyboardOnShow, "data-testid": testId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, disableInitialFocus, className, ...otherProps }: ModalV2Props) => JSX.Element;
3
+ /**
4
+ * A composable modal dialog with slot-based content layout.
5
+ *
6
+ * Use `ModalV2` when you need a controlled overlay dialog with structured
7
+ * content slots.
8
+ *
9
+ * Sub-components:
10
+ * - `ModalV2.Card` — wraps modal content and arranges `Content`, `Footer`, and `CloseButton` slots in the correct layout.
11
+ * - `ModalV2.CloseButton` — renders an accessible close button that invokes the modal's `onClose` callback.
12
+ * - `ModalV2.Content` — container for the body content of the modal card.
13
+ * - `ModalV2.Footer` — footer area for primary and secondary action buttons.
14
+ */
15
+ export declare const ModalV2: (({ id, show, onClose, animationFrom, children, enableOverlayClick, rootComponentId, zIndex, onOverlayClick, dismissKeyboardOnShow, "data-testid": testId, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, disableInitialFocus, className, ...otherProps }: ModalV2Props) => JSX.Element) & {
16
+ /** Wraps modal content and arranges `Content`, `Footer`, and `CloseButton` slots in the correct layout. */
17
+ Card: (props: import("./types").ModalCardProps & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
18
+ /** Renders an accessible close button that invokes the modal's `onClose` callback. */
19
+ CloseButton: {
20
+ ({ "data-testid": testId, className, ...otherProps }: import("./types").ModalCloseButtonProps): import("react/jsx-runtime").JSX.Element;
21
+ displayName: string;
22
+ };
23
+ /** Container for the body content of the modal card. */
24
+ Content: {
25
+ ({ "data-testid": testId, children, className, ...otherProps }: import("./types").ModalContentProps): import("react/jsx-runtime").JSX.Element;
26
+ displayName: string;
27
+ };
28
+ /** Footer area for primary and secondary action buttons. */
29
+ Footer: {
30
+ ({ "data-testid": testId, primaryButton, secondaryButton, className, ...otherProps }: import("./types").ModalFooterProps): import("react/jsx-runtime").JSX.Element;
31
+ displayName: string;
32
+ };
33
+ };
@@ -1,2 +1,2 @@
1
- import{__rest as e}from"../_virtual/_tslib.js";import{jsx as t}from"react/jsx-runtime";import{useFloating as o,useTransitionStatus as i,useDismiss as r,useInteractions as a,FloatingFocusManager as l}from"@floating-ui/react";import s from"clsx";import n,{useRef as m}from"react";import{Overlay as d}from"../overlay/overlay.js";import{useViewport as c}from"../shared/hooks/useViewport.js";import"../theme/theme-provider/index.js";import"../theme/theme-provider/context.js";import"../theme/tokens/border.js";import"../theme/tokens/colour.js";import"../theme/tokens/font.js";import"../theme/tokens/media-query.js";import{useApplyStyle as p}from"../theme/utils/use-apply-styles.js";import"../theme/utils/use-media-query.js";import"../util/calendar-helper.js";import"../external/dayjs/dayjs.min.js";import"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import{useEvent as u}from"../util/use-event.js";import{ModalContext as b}from"./modal-context.js";import{tokens as h,scrollContainer as v,modalContainer as y,container as j}from"./modal-v2.styles.js";const f=f=>{var{id:g,show:x,onClose:C,animationFrom:k="bottom",children:O,enableOverlayClick:I=!0,rootComponentId:F,zIndex:w,onOverlayClick:N,dismissKeyboardOnShow:z=!0,"data-testid":P="modal","aria-label":S,"aria-labelledby":q,"aria-describedby":E,disableInitialFocus:H=!1,className:K}=f,$=e(f,["id","show","onClose","animationFrom","children","enableOverlayClick","rootComponentId","zIndex","onOverlayClick","dismissKeyboardOnShow","data-testid","aria-label","aria-labelledby","aria-describedby","disableInitialFocus","className"]);const _=u((()=>{var e,t;z&&(null===(t=null===(e=document.activeElement)||void 0===e?void 0:e.blur)||void 0===t||t.call(e))})),{verticalHeight:B}=c({enabled:x,onBeforeStart:_}),M=m(null),R=m(null),V=O&&n.cloneElement(O,{ref:M});p(R,{[h.container.verticalHeight]:null==B?null:`${B}px`});const{refs:A,context:D}=o({open:x,onOpenChange:e=>{e||null==C||C()}}),{isMounted:G,status:J}=i(D,{duration:300}),L=r(D,{outsidePress:!1,enabled:!!C}),{getFloatingProps:Q}=a([L]);return t(d,{"data-testid":`${P}-overlay`,show:x,enableOverlayClick:I,onOverlayClick:N,id:g,rootId:F,containerRef:M,zIndex:w,children:t("div",Object.assign({ref:R,"data-testid":P,"data-status":J,"data-animation-from":k},$,{className:s(j,K),children:t(b.Provider,{value:{onClose:C},children:G&&t(l,{context:D,initialFocus:H?-1:A.floating,children:t("div",{className:v,children:t("div",Object.assign({ref:A.setFloating},Q(),{role:"dialog","aria-label":S,"aria-labelledby":q,"aria-describedby":E,className:y,children:V}))})})})}))})};export{f as ModalV2};
1
+ import{__rest as e}from"../_virtual/_tslib.js";import{jsx as o}from"react/jsx-runtime";import{useFloating as t,useTransitionStatus as r,useDismiss as i,useInteractions as a,FloatingFocusManager as l}from"@floating-ui/react";import s from"clsx";import n,{useRef as m}from"react";import{Overlay as d}from"../overlay/overlay.js";import{useViewport as c}from"../shared/hooks/useViewport.js";import"../theme/theme-provider/index.js";import"../theme/theme-provider/context.js";import"../theme/tokens/border.js";import"../theme/tokens/colour.js";import"../theme/tokens/font.js";import"../theme/tokens/media-query.js";import{useApplyStyle as p}from"../theme/utils/use-apply-styles.js";import"../theme/utils/use-media-query.js";import"../util/calendar-helper.js";import"../external/dayjs/dayjs.min.js";import"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import{useEvent as u}from"../util/use-event.js";import{ModalContext as b}from"./modal-context.js";import{tokens as h,scrollContainer as j,modalContainer as v,container as f}from"./modal-v2.styles.js";import{Card as y}from"./slots/card.js";import{CloseButton as C}from"./slots/close-button.js";import{Content as g}from"./slots/content.js";import{Footer as x}from"./slots/footer.js";const O=Object.assign((y=>{var{id:C,show:g,onClose:x,animationFrom:O="bottom",children:k,enableOverlayClick:F=!0,rootComponentId:I,zIndex:w,onOverlayClick:N,dismissKeyboardOnShow:z=!0,"data-testid":P="modal","aria-label":S,"aria-labelledby":q,"aria-describedby":B,disableInitialFocus:E=!1,className:H}=y,K=e(y,["id","show","onClose","animationFrom","children","enableOverlayClick","rootComponentId","zIndex","onOverlayClick","dismissKeyboardOnShow","data-testid","aria-label","aria-labelledby","aria-describedby","disableInitialFocus","className"]);const $=u((()=>{var e,o;z&&(null===(o=null===(e=document.activeElement)||void 0===e?void 0:e.blur)||void 0===o||o.call(e))})),{verticalHeight:_}=c({enabled:g,onBeforeStart:$}),M=m(null),R=m(null),V=k&&n.cloneElement(k,{ref:M});p(R,{[h.container.verticalHeight]:null==_?null:`${_}px`});const{refs:A,context:D}=t({open:g,onOpenChange:e=>{e||null==x||x()}}),{isMounted:G,status:J}=r(D,{duration:300}),L=i(D,{outsidePress:!1,enabled:!!x}),{getFloatingProps:Q}=a([L]);return o(d,{"data-testid":`${P}-overlay`,show:g,enableOverlayClick:F,onOverlayClick:N,id:C,rootId:I,containerRef:M,zIndex:w,children:o("div",Object.assign({ref:R,"data-testid":P,"data-status":J,"data-animation-from":O},K,{className:s(f,H),children:o(b.Provider,{value:{onClose:x},children:G&&o(l,{context:D,initialFocus:E?-1:A.floating,children:o("div",{className:j,children:o("div",Object.assign({ref:A.setFloating},Q(),{role:"dialog","aria-label":S,"aria-labelledby":q,"aria-describedby":B,className:v,children:V}))})})})}))})}),{Card:y,CloseButton:C,Content:g,Footer:x});export{O as ModalV2};
2
2
  //# sourceMappingURL=modal-v2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-v2.js","sources":["../../src/modal-v2/modal-v2.tsx"],"sourcesContent":["import {\n FloatingFocusManager,\n useDismiss,\n useFloating,\n useInteractions,\n useTransitionStatus,\n} from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport React, { useRef } from \"react\";\n\nimport { Overlay } from \"../overlay/overlay\";\nimport { useViewport } from \"../shared/hooks\";\nimport { useApplyStyle } from \"../theme\";\nimport { useEvent } from \"../util\";\nimport { ModalContext } from \"./modal-context\";\nimport * as styles from \"./modal-v2.styles\";\nimport type { ModalV2Props } from \"./types\";\n\nexport const ModalV2 = ({\n id,\n show,\n onClose,\n animationFrom = \"bottom\",\n children,\n enableOverlayClick = true,\n rootComponentId,\n zIndex,\n onOverlayClick,\n dismissKeyboardOnShow = true,\n \"data-testid\": testId = \"modal\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n disableInitialFocus = false,\n className,\n ...otherProps\n}: ModalV2Props): JSX.Element => {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const dismissKeyboard = useEvent(() => {\n if (dismissKeyboardOnShow) {\n (document.activeElement as HTMLElement)?.blur?.();\n }\n });\n const { verticalHeight } = useViewport({\n enabled: show,\n onBeforeStart: dismissKeyboard,\n });\n const childRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const childWithRef =\n children && React.cloneElement(children, { ref: childRef });\n\n useApplyStyle(containerRef, {\n [styles.tokens.container.verticalHeight]:\n verticalHeight == null ? null : `${verticalHeight}px`,\n });\n\n // =========================================================================\n // FLOATING UI CONFIG\n // =========================================================================\n const { refs, context } = useFloating({\n open: show,\n onOpenChange: (isOpen) => {\n if (!isOpen) {\n onClose?.();\n }\n },\n });\n const { isMounted, status } = useTransitionStatus(context, {\n duration: 300,\n });\n const dismiss = useDismiss(context, {\n /* handled by overlayclick */\n outsidePress: false,\n enabled: !!onClose,\n });\n const { getFloatingProps } = useInteractions([dismiss]);\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n return (\n <Overlay\n data-testid={`${testId}-overlay`}\n show={show}\n enableOverlayClick={enableOverlayClick}\n onOverlayClick={onOverlayClick}\n id={id}\n rootId={rootComponentId}\n containerRef={childRef}\n zIndex={zIndex}\n >\n <div\n ref={containerRef}\n data-testid={testId}\n data-status={status}\n data-animation-from={animationFrom}\n {...otherProps}\n className={clsx(styles.container, className)}\n >\n <ModalContext.Provider value={{ onClose }}>\n {isMounted && (\n <FloatingFocusManager\n context={context}\n initialFocus={\n disableInitialFocus ? -1 : refs.floating\n }\n >\n <div className={styles.scrollContainer}>\n <div\n ref={refs.setFloating}\n {...getFloatingProps()}\n role=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={styles.modalContainer}\n >\n {childWithRef}\n </div>\n </div>\n </FloatingFocusManager>\n )}\n </ModalContext.Provider>\n </div>\n </Overlay>\n );\n};\n"],"names":["ModalV2","_a","id","show","onClose","animationFrom","children","enableOverlayClick","rootComponentId","zIndex","onOverlayClick","dismissKeyboardOnShow","testId","ariaLabel","ariaLabelledBy","ariaDescribedBy","disableInitialFocus","className","otherProps","__rest","dismissKeyboard","useEvent","_b","document","activeElement","blur","verticalHeight","useViewport","enabled","onBeforeStart","childRef","useRef","containerRef","childWithRef","React","cloneElement","ref","useApplyStyle","styles.tokens","container","refs","context","useFloating","open","onOpenChange","isOpen","isMounted","status","useTransitionStatus","duration","dismiss","useDismiss","outsidePress","getFloatingProps","useInteractions","_jsx","Overlay","rootId","Object","assign","clsx","styles.container","ModalContext","Provider","value","FloatingFocusManager","initialFocus","floating","styles.scrollContainer","setFloating","role","styles.modalContainer"],"mappings":"4kCAkBO,MAAMA,EAAWC,QAAAC,GACpBA,EAAEC,KACFA,EAAIC,QACJA,EAAOC,cACPA,EAAgB,SAAQC,SACxBA,EAAQC,mBACRA,GAAqB,EAAIC,gBACzBA,EAAeC,OACfA,EAAMC,eACNA,EAAcC,sBACdA,GAAwB,EACxB,cAAeC,EAAS,QACxB,aAAcC,EACd,kBAAmBC,EACnB,mBAAoBC,EAAeC,oBACnCA,GAAsB,EAAKC,UAC3BA,GAAShB,EACNiB,EAAUC,EAAAlB,EAjBO,CAAA,KAAA,OAAA,UAAA,gBAAA,WAAA,qBAAA,kBAAA,SAAA,iBAAA,wBAAA,cAAA,aAAA,kBAAA,mBAAA,sBAAA,cAsBpB,MAAMmB,EAAkBC,GAAS,aACzBV,YACAW,EAAuC,UAAtCC,SAASC,qBAA6B,IAAAvB,OAAA,EAAAA,EAAEwB,6BAC7C,KAEEC,eAAEA,GAAmBC,EAAY,CACnCC,QAASzB,EACT0B,cAAeT,IAEbU,EAAWC,EAAuB,MAClCC,EAAeD,EAAuB,MACtCE,EACF3B,GAAY4B,EAAMC,aAAa7B,EAAU,CAAE8B,IAAKN,IAEpDO,EAAcL,EAAc,CACxB,CAACM,EAAcC,UAAUb,gBACH,MAAlBA,EAAyB,KAAO,GAAGA,QAM3C,MAAMc,KAAEA,EAAIC,QAAEA,GAAYC,EAAY,CAClCC,KAAMxC,EACNyC,aAAeC,IACNA,GACDzC,SAAAA,GACJ,KAGF0C,UAAEA,EAASC,OAAEA,GAAWC,EAAoBP,EAAS,CACvDQ,SAAU,MAERC,EAAUC,EAAWV,EAAS,CAEhCW,cAAc,EACdxB,UAAWxB,KAETiD,iBAAEA,GAAqBC,EAAgB,CAACJ,IAK9C,OACIK,EAACC,EAAO,CAAA,cACS,GAAG5C,YAChBT,KAAMA,EACNI,mBAAoBA,EACpBG,eAAgBA,EAChBR,GAAIA,EACJuD,OAAQjD,EACRwB,aAAcF,EACdrB,OAAQA,EAAMH,SAEdiD,EAAA,MAAAG,OAAAC,OAAA,CACIvB,IAAKJ,EAAY,cACJpB,EAAM,cACNmC,EAAM,sBACE1C,GACjBa,GACJD,UAAW2C,EAAKC,EAAkB5C,GAAUX,SAE5CiD,EAACO,EAAaC,SAAQ,CAACC,MAAO,CAAE5D,WAASE,SACpCwC,GACGS,EAACU,EAAoB,CACjBxB,QAASA,EACTyB,aACIlD,GAAsB,EAAKwB,EAAK2B,SAAQ7D,SAG5CiD,EAAA,MAAA,CAAKtC,UAAWmD,EAAsB9D,SAClCiD,EAAA,MAAAG,OAAAC,OAAA,CACIvB,IAAKI,EAAK6B,aACNhB,IAAkB,CACtBiB,KAAK,SAAQ,aACDzD,EAAS,kBACJC,EAAc,mBACbC,EAClBE,UAAWsD,WAEVtC,eAOnB"}
1
+ {"version":3,"file":"modal-v2.js","sources":["../../src/modal-v2/modal-v2.tsx"],"sourcesContent":["import {\n FloatingFocusManager,\n useDismiss,\n useFloating,\n useInteractions,\n useTransitionStatus,\n} from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport React, { useRef } from \"react\";\n\nimport { Overlay } from \"../overlay/overlay\";\nimport { useViewport } from \"../shared/hooks\";\nimport { useApplyStyle } from \"../theme\";\nimport { useEvent } from \"../util\";\nimport { ModalContext } from \"./modal-context\";\nimport * as styles from \"./modal-v2.styles\";\nimport { Card, CloseButton, Content, Footer } from \"./slots\";\nimport type { ModalV2Props } from \"./types\";\n\nconst Base = ({\n id,\n show,\n onClose,\n animationFrom = \"bottom\",\n children,\n enableOverlayClick = true,\n rootComponentId,\n zIndex,\n onOverlayClick,\n dismissKeyboardOnShow = true,\n \"data-testid\": testId = \"modal\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n disableInitialFocus = false,\n className,\n ...otherProps\n}: ModalV2Props): JSX.Element => {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const dismissKeyboard = useEvent(() => {\n if (dismissKeyboardOnShow) {\n (document.activeElement as HTMLElement)?.blur?.();\n }\n });\n const { verticalHeight } = useViewport({\n enabled: show,\n onBeforeStart: dismissKeyboard,\n });\n const childRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const childWithRef =\n children && React.cloneElement(children, { ref: childRef });\n\n useApplyStyle(containerRef, {\n [styles.tokens.container.verticalHeight]:\n verticalHeight == null ? null : `${verticalHeight}px`,\n });\n\n // =========================================================================\n // FLOATING UI CONFIG\n // =========================================================================\n const { refs, context } = useFloating({\n open: show,\n onOpenChange: (isOpen) => {\n if (!isOpen) {\n onClose?.();\n }\n },\n });\n const { isMounted, status } = useTransitionStatus(context, {\n duration: 300,\n });\n const dismiss = useDismiss(context, {\n /* handled by overlayclick */\n outsidePress: false,\n enabled: !!onClose,\n });\n const { getFloatingProps } = useInteractions([dismiss]);\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n return (\n <Overlay\n data-testid={`${testId}-overlay`}\n show={show}\n enableOverlayClick={enableOverlayClick}\n onOverlayClick={onOverlayClick}\n id={id}\n rootId={rootComponentId}\n containerRef={childRef}\n zIndex={zIndex}\n >\n <div\n ref={containerRef}\n data-testid={testId}\n data-status={status}\n data-animation-from={animationFrom}\n {...otherProps}\n className={clsx(styles.container, className)}\n >\n <ModalContext.Provider value={{ onClose }}>\n {isMounted && (\n <FloatingFocusManager\n context={context}\n initialFocus={\n disableInitialFocus ? -1 : refs.floating\n }\n >\n <div className={styles.scrollContainer}>\n <div\n ref={refs.setFloating}\n {...getFloatingProps()}\n role=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={styles.modalContainer}\n >\n {childWithRef}\n </div>\n </div>\n </FloatingFocusManager>\n )}\n </ModalContext.Provider>\n </div>\n </Overlay>\n );\n};\n\n// @catalog\n/**\n * A composable modal dialog with slot-based content layout.\n *\n * Use `ModalV2` when you need a controlled overlay dialog with structured\n * content slots.\n *\n * Sub-components:\n * - `ModalV2.Card` — wraps modal content and arranges `Content`, `Footer`, and `CloseButton` slots in the correct layout.\n * - `ModalV2.CloseButton` — renders an accessible close button that invokes the modal's `onClose` callback.\n * - `ModalV2.Content` — container for the body content of the modal card.\n * - `ModalV2.Footer` — footer area for primary and secondary action buttons.\n */\nexport const ModalV2 = Object.assign(Base, {\n /** Wraps modal content and arranges `Content`, `Footer`, and `CloseButton` slots in the correct layout. */\n Card,\n /** Renders an accessible close button that invokes the modal's `onClose` callback. */\n CloseButton,\n /** Container for the body content of the modal card. */\n Content,\n /** Footer area for primary and secondary action buttons. */\n Footer,\n});\n"],"names":["ModalV2","Object","assign","_a","id","show","onClose","animationFrom","children","enableOverlayClick","rootComponentId","zIndex","onOverlayClick","dismissKeyboardOnShow","testId","ariaLabel","ariaLabelledBy","ariaDescribedBy","disableInitialFocus","className","otherProps","__rest","dismissKeyboard","useEvent","_b","document","activeElement","blur","verticalHeight","useViewport","enabled","onBeforeStart","childRef","useRef","containerRef","childWithRef","React","cloneElement","ref","useApplyStyle","styles.tokens","container","refs","context","useFloating","open","onOpenChange","isOpen","isMounted","status","useTransitionStatus","duration","dismiss","useDismiss","outsidePress","getFloatingProps","useInteractions","_jsx","Overlay","rootId","clsx","styles.container","ModalContext","Provider","value","FloatingFocusManager","initialFocus","floating","styles.scrollContainer","setFloating","role","styles.modalContainer","Card","CloseButton","Content","Footer"],"mappings":"iwCAmBA,MA8HaA,EAAUC,OAAOC,QA9HhBC,QAAAC,GACVA,EAAEC,KACFA,EAAIC,QACJA,EAAOC,cACPA,EAAgB,SAAQC,SACxBA,EAAQC,mBACRA,GAAqB,EAAIC,gBACzBA,EAAeC,OACfA,EAAMC,eACNA,EAAcC,sBACdA,GAAwB,EACxB,cAAeC,EAAS,QACxB,aAAcC,EACd,kBAAmBC,EACnB,mBAAoBC,EAAeC,oBACnCA,GAAsB,EAAKC,UAC3BA,GAAShB,EACNiB,EAAUC,EAAAlB,EAjBH,CAAA,KAAA,OAAA,UAAA,gBAAA,WAAA,qBAAA,kBAAA,SAAA,iBAAA,wBAAA,cAAA,aAAA,kBAAA,mBAAA,sBAAA,cAsBV,MAAMmB,EAAkBC,GAAS,aACzBV,YACAW,EAAuC,UAAtCC,SAASC,qBAA6B,IAAAvB,OAAA,EAAAA,EAAEwB,6BAC7C,KAEEC,eAAEA,GAAmBC,EAAY,CACnCC,QAASzB,EACT0B,cAAeT,IAEbU,EAAWC,EAAuB,MAClCC,EAAeD,EAAuB,MACtCE,EACF3B,GAAY4B,EAAMC,aAAa7B,EAAU,CAAE8B,IAAKN,IAEpDO,EAAcL,EAAc,CACxB,CAACM,EAAcC,UAAUb,gBACH,MAAlBA,EAAyB,KAAO,GAAGA,QAM3C,MAAMc,KAAEA,EAAIC,QAAEA,GAAYC,EAAY,CAClCC,KAAMxC,EACNyC,aAAeC,IACNA,GACDzC,SAAAA,GACJ,KAGF0C,UAAEA,EAASC,OAAEA,GAAWC,EAAoBP,EAAS,CACvDQ,SAAU,MAERC,EAAUC,EAAWV,EAAS,CAEhCW,cAAc,EACdxB,UAAWxB,KAETiD,iBAAEA,GAAqBC,EAAgB,CAACJ,IAK9C,OACIK,EAACC,EAAO,CAAA,cACS,GAAG5C,YAChBT,KAAMA,EACNI,mBAAoBA,EACpBG,eAAgBA,EAChBR,GAAIA,EACJuD,OAAQjD,EACRwB,aAAcF,EACdrB,OAAQA,EAAMH,SAEdiD,EAAA,MAAAxD,OAAAC,OAAA,CACIoC,IAAKJ,EAAY,cACJpB,EAAM,cACNmC,EAAM,sBACE1C,GACjBa,GACJD,UAAWyC,EAAKC,EAAkB1C,GAAUX,SAE5CiD,EAACK,EAAaC,SAAQ,CAACC,MAAO,CAAE1D,WAASE,SACpCwC,GACGS,EAACQ,EAAoB,CACjBtB,QAASA,EACTuB,aACIhD,GAAsB,EAAKwB,EAAKyB,SAAQ3D,SAG5CiD,EAAA,MAAA,CAAKtC,UAAWiD,EAAsB5D,SAClCiD,EAAA,MAAAxD,OAAAC,OAAA,CACIoC,IAAKI,EAAK2B,aACNd,IAAkB,CACtBe,KAAK,SAAQ,aACDvD,EAAS,kBACJC,EAAc,mBACbC,EAClBE,UAAWoD,WAEVpC,eAOnB,GAiByB,CAEvCqC,OAEAC,cAEAC,UAEAC"}
@@ -1,2 +1,2 @@
1
- import{__rest as t}from"../../_virtual/_tslib.js";import{jsxs as r}from"react/jsx-runtime";import o from"clsx";import s from"react";import a from"../../util/is-styled-components.js";import{CloseButton as e}from"./close-button.js";import{Content as i}from"./content.js";import{Footer as m}from"./footer.js";import{slotSpacer as d,modalCard as l}from"./slot-styles.js";const c=s.forwardRef((function(c,n){var{id:p,"data-testid":f="modal-card",children:j,className:u}=c,y=t(c,["id","data-testid","children","className"]);const h=t=>s.Children.toArray(j).find((r=>((t,r)=>a(t.type)?t.type.target===r:t.type===r)(r,t))),N=h(e),b=h(i),v=h(m),g=!!N;return r("div",Object.assign({ref:n,id:p,"data-testid":f},y,{onClick:t=>{t.stopPropagation()},className:o(l,u),children:[r("div",{"data-has-close-button":g?"true":"false",className:o(d),children:[b,v]}),g&&N]}))}));c.displayName="ModalV2.Card";export{c as Card};
1
+ import{__rest as t}from"../../_virtual/_tslib.js";import{jsxs as r}from"react/jsx-runtime";import e from"clsx";import i from"react";import"../../util/calendar-helper.js";import"../../external/dayjs/dayjs.min.js";import{mergeRefs as o}from"../../util/merge-refs.js";import"../../util/simple-id-generator.js";import"../../util/string-helper.js";import"@react-aria/live-announcer";import s from"../../util/is-styled-components.js";import{CloseButton as a}from"./close-button.js";import{Content as m}from"./content.js";import{Footer as l}from"./footer.js";import{slotSpacer as n,modalCard as d}from"./slot-styles.js";const p=i.forwardRef((function(p,c){var{id:f,"data-testid":j="modal-card",children:u,className:y,elementRef:h}=p,g=t(p,["id","data-testid","children","className","elementRef"]);const v=t=>i.Children.toArray(u).find((r=>((t,r)=>s(t.type)?t.type.target===r:t.type===r)(r,t))),N=v(a),b=v(m),x=v(l),C=!!N;return r("div",Object.assign({ref:o(c,h),id:f,"data-testid":j},g,{onClick:t=>{t.stopPropagation()},className:e(d,y),children:[r("div",{"data-has-close-button":C?"true":"false",className:e(n),children:[b,x]}),C&&N]}))}));p.displayName="ModalV2.Card";export{p as Card};
2
2
  //# sourceMappingURL=card.js.map