@lifesg/react-design-system 4.0.0-alpha.6 → 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.
- package/accordion/accordion.js.map +1 -1
- package/alert/alert.js.map +1 -1
- package/alert/types.d.ts +2 -0
- package/animations/loading-dots/loading-dots.d.ts +5 -2
- package/animations/loading-dots/loading-dots.js.map +1 -1
- package/animations/loading-dots-spinner/loading-dots-spinner.d.ts +3 -0
- package/animations/loading-dots-spinner/loading-dots-spinner.js.map +1 -1
- package/animations/loading-dots-spinner/lottie-animation.d.ts +2 -2
- package/animations/loading-dots-spinner/lottie-animation.js.map +1 -1
- package/animations/loading-spinner/loading-spinner.d.ts +5 -2
- package/animations/loading-spinner/loading-spinner.js.map +1 -1
- package/animations/themed-loading-spinner/themed-loading-spinner.d.ts +5 -2
- package/animations/themed-loading-spinner/themed-loading-spinner.js.map +1 -1
- package/animations/types.d.ts +13 -6
- package/avatar/avatar.js.map +1 -1
- package/badge/badge.js.map +1 -1
- package/badge/types.d.ts +13 -2
- package/box-container/box-container.js.map +1 -1
- package/box-container/types.d.ts +2 -0
- package/breadcrumb/breadcrumb.js.map +1 -1
- package/breadcrumb/types.d.ts +7 -2
- package/button/button.js.map +1 -1
- package/button/types.d.ts +5 -0
- package/calendar/calendar.js.map +1 -1
- package/calendar/types.d.ts +3 -3
- package/card/card.js.map +1 -1
- package/checkbox/checkbox.js.map +1 -1
- package/checkbox/types.d.ts +4 -0
- package/cjs/accordion/accordion.js.map +1 -1
- package/cjs/alert/alert.js.map +1 -1
- package/cjs/animations/loading-dots/loading-dots.js.map +1 -1
- package/cjs/animations/loading-dots-spinner/loading-dots-spinner.js.map +1 -1
- package/cjs/animations/loading-dots-spinner/lottie-animation.js.map +1 -1
- package/cjs/animations/loading-spinner/loading-spinner.js.map +1 -1
- package/cjs/animations/themed-loading-spinner/themed-loading-spinner.js.map +1 -1
- package/cjs/avatar/avatar.js.map +1 -1
- package/cjs/badge/badge.js.map +1 -1
- package/cjs/box-container/box-container.js.map +1 -1
- package/cjs/breadcrumb/breadcrumb.js.map +1 -1
- package/cjs/button/button.js.map +1 -1
- package/cjs/calendar/calendar.js.map +1 -1
- package/cjs/card/card.js.map +1 -1
- package/cjs/checkbox/checkbox.js.map +1 -1
- package/cjs/countdown-timer/countdown-timer.js.map +1 -1
- package/cjs/dashed-border/dashed-border.js.map +1 -1
- package/cjs/data-table/data-table.js.map +1 -1
- package/cjs/date-input/date-input.js.map +1 -1
- package/cjs/date-navigator/date-navigator.js.map +1 -1
- package/cjs/date-range-input/date-range-input.js.map +1 -1
- package/cjs/divider/divider.js.map +1 -1
- package/cjs/drawer/drawer.js.map +1 -1
- package/cjs/e-signature/e-signature.js.map +1 -1
- package/cjs/error-display/error-display.js.map +1 -1
- package/cjs/feedback-rating/feedback-rating.js.map +1 -1
- package/cjs/file-download/file-download.js.map +1 -1
- package/cjs/file-upload/file-item-edit.js.map +1 -1
- package/cjs/file-upload/file-list/file-list.js.map +1 -1
- package/cjs/file-upload/file-list-item/file-list-item.js.map +1 -1
- package/cjs/file-upload/file-list-item/file-list-item.styles.js +1 -1
- package/cjs/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
- package/cjs/file-upload/file-list-item/{file-list-item.styles_o8000f.css → file-list-item.styles_kgtfke.css} +1 -1
- package/cjs/file-upload/file-upload.js.map +1 -1
- package/cjs/filter/addons/filter-item-checkbox-helpers.js.map +1 -1
- package/cjs/filter/addons/filter-item-checkbox.js.map +1 -1
- package/cjs/filter/filter-item.js +1 -1
- package/cjs/filter/filter-item.js.map +1 -1
- package/cjs/filter/filter.js.map +1 -1
- package/cjs/footer/footer.js.map +1 -1
- package/cjs/form/form-custom-field/form-custom-field.js +2 -0
- package/cjs/form/form-custom-field/form-custom-field.js.map +1 -0
- package/cjs/form/form-date-input/form-date-input.js +2 -0
- package/cjs/form/form-date-input/form-date-input.js.map +1 -0
- package/cjs/form/form-date-range-input/form-date-range-input.js +2 -0
- package/cjs/form/form-date-range-input/form-date-range-input.js.map +1 -0
- package/cjs/form/form-e-signature/form-e-signature.js +2 -0
- package/cjs/form/form-e-signature/form-e-signature.js.map +1 -0
- package/cjs/form/form-histogram-slider/form-histogram-slider.js +2 -0
- package/cjs/form/form-histogram-slider/form-histogram-slider.js.map +1 -0
- package/cjs/form/form-input/form-input.js +2 -0
- package/cjs/form/form-input/form-input.js.map +1 -0
- package/cjs/form/form-input-group/form-input-group.js +2 -0
- package/cjs/form/form-input-group/form-input-group.js.map +1 -0
- package/cjs/form/form-label/form-label-addon.js +2 -0
- package/cjs/form/form-label/form-label-addon.js.map +1 -0
- package/cjs/form/form-label/form-label-addon.styles.js +2 -0
- package/cjs/form/form-label/form-label-addon.styles.js.map +1 -0
- package/cjs/form/form-label/form-label-addon.styles_aztasj.css +1 -0
- package/cjs/form/form-label/form-label.js +2 -0
- package/cjs/form/form-label/form-label.js.map +1 -0
- package/cjs/form/form-label/form-label.styles.js +2 -0
- package/cjs/form/form-label/form-label.styles.js.map +1 -0
- package/cjs/form/form-label/form-label.styles_180zf7j.css +6 -0
- package/cjs/form/form-masked-input/form-masked-input.js +2 -0
- package/cjs/form/form-masked-input/form-masked-input.js.map +1 -0
- package/cjs/form/form-multi-select/form-multi-select.js +2 -0
- package/cjs/form/form-multi-select/form-multi-select.js.map +1 -0
- package/cjs/form/form-nested-multi-select/form-nested-multi-select.js +2 -0
- package/cjs/form/form-nested-multi-select/form-nested-multi-select.js.map +1 -0
- package/cjs/form/form-nested-select/form-nested-select.js +2 -0
- package/cjs/form/form-nested-select/form-nested-select.js.map +1 -0
- package/cjs/form/form-otp-verification/form-otp-verification.js +2 -0
- package/cjs/form/form-otp-verification/form-otp-verification.js.map +1 -0
- package/cjs/form/form-phone-number-input/form-phone-number-input.js +2 -0
- package/cjs/form/form-phone-number-input/form-phone-number-input.js.map +1 -0
- package/cjs/form/form-predictive-text-input/form-predictive-text-input.js +2 -0
- package/cjs/form/form-predictive-text-input/form-predictive-text-input.js.map +1 -0
- package/cjs/form/form-range-select/form-range-select.js +2 -0
- package/cjs/form/form-range-select/form-range-select.js.map +1 -0
- package/cjs/form/form-range-slider/form-range-slider.js +2 -0
- package/cjs/form/form-range-slider/form-range-slider.js.map +1 -0
- package/cjs/form/form-select/form-select.js +2 -0
- package/cjs/form/form-select/form-select.js.map +1 -0
- package/cjs/form/form-select-histogram/form-select-histogram.js +2 -0
- package/cjs/form/form-select-histogram/form-select-histogram.js.map +1 -0
- package/cjs/form/form-slider/form-slider.js +2 -0
- package/cjs/form/form-slider/form-slider.js.map +1 -0
- package/cjs/form/form-textarea/form-textarea.js +2 -0
- package/cjs/form/form-textarea/form-textarea.js.map +1 -0
- package/cjs/form/form-textarea/form-textarea.styles.js +2 -0
- package/cjs/form/form-textarea/form-textarea.styles.js.map +1 -0
- package/cjs/form/form-textarea/form-textarea.styles_1kneyif.css +3 -0
- package/cjs/form/form-time-range-picker/form-time-range-picker.js +2 -0
- package/cjs/form/form-time-range-picker/form-time-range-picker.js.map +1 -0
- package/cjs/form/form-timepicker/form-timepicker.js +2 -0
- package/cjs/form/form-timepicker/form-timepicker.js.map +1 -0
- package/cjs/form/form-unit-number-input/form-unit-number-input.js +2 -0
- package/cjs/form/form-unit-number-input/form-unit-number-input.js.map +1 -0
- package/cjs/form/form-wrapper.js +1 -1
- package/cjs/form/form-wrapper.js.map +1 -1
- package/cjs/form/index.js +1 -1
- package/cjs/form/index.js.map +1 -1
- package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
- package/cjs/histogram-slider/histogram-slider.js.map +1 -1
- package/cjs/image-button/image-button.js.map +1 -1
- package/cjs/input/input.js.map +1 -1
- package/cjs/input-group/input-group.js.map +1 -1
- package/cjs/input-multi-select/input-multi-select.js.map +1 -1
- package/cjs/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
- package/cjs/input-nested-select/input-nested-select.js.map +1 -1
- package/cjs/input-range-select/input-range-select.js.map +1 -1
- package/cjs/input-range-slider/input-range-slider.js.map +1 -1
- package/cjs/input-select/input-select.js.map +1 -1
- package/cjs/input-slider/input-slider.js.map +1 -1
- package/cjs/input-textarea/textarea.js.map +1 -1
- package/cjs/input-textarea/textarea.styles.js +1 -1
- package/cjs/input-textarea/textarea.styles.js.map +1 -1
- package/cjs/input-textarea/{textarea.styles_22z4n3.css → textarea.styles_q77m5x.css} +1 -1
- package/cjs/language-switcher/language-switcher.js.map +1 -1
- package/cjs/layout/index.js.map +1 -1
- package/cjs/link-list/components/common.js.map +1 -1
- package/cjs/link-list/components/link-list-eager.js.map +1 -1
- package/cjs/link-list/components/link-list-lazy.js.map +1 -1
- package/cjs/link-list/link-list.js.map +1 -1
- package/cjs/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
- package/cjs/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
- package/cjs/markup/markup.js.map +1 -1
- package/cjs/masked-input/masked-input.js.map +1 -1
- package/cjs/masthead/masthead.js.map +1 -1
- package/cjs/menu/menu.js.map +1 -1
- package/cjs/modal/index.js.map +1 -1
- package/cjs/modal-v2/modal-v2.js.map +1 -1
- package/cjs/navbar/navbar.js.map +1 -1
- package/cjs/notification-banner/notification-banner.js.map +1 -1
- package/cjs/otp-input/otp-input.js +1 -1
- package/cjs/otp-input/otp-input.js.map +1 -1
- package/cjs/otp-verification/contact-input-section.js +1 -1
- package/cjs/otp-verification/contact-input-section.js.map +1 -1
- package/cjs/otp-verification/otp-verification.js.map +1 -1
- package/cjs/otp-verification/verification-section.js +1 -1
- package/cjs/otp-verification/verification-section.js.map +1 -1
- package/cjs/overlay/overlay.js.map +1 -1
- package/cjs/pagination/pagination.js.map +1 -1
- package/cjs/phone-number-input/phone-number-input.js.map +1 -1
- package/cjs/pill/pill.js.map +1 -1
- package/cjs/popover/popover-inline/popover-inline.js.map +1 -1
- package/cjs/popover/popover.js.map +1 -1
- package/cjs/predictive-text-input/predictive-text-input.js +1 -1
- package/cjs/predictive-text-input/predictive-text-input.js.map +1 -1
- package/cjs/progress-indicator/progress-indicator.js.map +1 -1
- package/cjs/radio-button/radio-button.js.map +1 -1
- package/cjs/schedule/schedule.js.map +1 -1
- package/cjs/select-histogram/select-histogram.js.map +1 -1
- package/cjs/shared/dropdown-list/dropdown-list.js +1 -1
- package/cjs/shared/dropdown-list/dropdown-list.js.map +1 -1
- package/cjs/shared/dropdown-wrapper/element-with-dropdown.js +1 -1
- package/cjs/shared/dropdown-wrapper/element-with-dropdown.js.map +1 -1
- package/cjs/sidenav/sidenav.js.map +1 -1
- package/cjs/singpass-button/singpass-button.js.map +1 -1
- package/cjs/smart-app-banner/smart-app-banner.js.map +1 -1
- package/cjs/tab/tab.js.map +1 -1
- package/cjs/table/table.js.map +1 -1
- package/cjs/tag/tag.js.map +1 -1
- package/cjs/text-list/index.js.map +1 -1
- package/cjs/theme/theme-provider/hooks.js.map +1 -1
- package/cjs/theme/theme-provider/index.js.map +1 -1
- package/cjs/theme/tokens/border.js.map +1 -1
- package/cjs/theme/tokens/breakpoint.js.map +1 -1
- package/cjs/theme/tokens/colour.js.map +1 -1
- package/cjs/theme/tokens/component.js.map +1 -1
- package/cjs/theme/tokens/font.js.map +1 -1
- package/cjs/theme/tokens/media-query.js.map +1 -1
- package/cjs/theme/tokens/motion.js.map +1 -1
- package/cjs/theme/tokens/radius.js.map +1 -1
- package/cjs/theme/tokens/shadow.js.map +1 -1
- package/cjs/theme/tokens/spacing.js.map +1 -1
- package/cjs/theme/utils/use-apply-styles.js.map +1 -1
- package/cjs/theme/utils/use-design-token.js.map +1 -1
- package/cjs/theme/utils/use-media-query.js.map +1 -1
- package/cjs/time-range-picker/combobox-picker/combobox-picker.js +1 -1
- package/cjs/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
- package/cjs/time-range-picker/time-range-picker.js.map +1 -1
- package/cjs/time-slot-bar/time-slot-bar.js.map +1 -1
- package/cjs/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
- package/cjs/time-slot-week-view/time-slot-week-view.js.map +1 -1
- package/cjs/timeline/timeline.js.map +1 -1
- package/cjs/timepicker/timepicker.js.map +1 -1
- package/cjs/timetable/timetable.js.map +1 -1
- package/cjs/toast/toast.js.map +1 -1
- package/cjs/toggle/toggle.js.map +1 -1
- package/cjs/typography/index.js.map +1 -1
- package/cjs/uneditable-section/index.js.map +1 -1
- package/cjs/uneditable-section/section-item.js +1 -1
- package/cjs/uneditable-section/section-item.js.map +1 -1
- package/cjs/unit-number/unit-number-input.js.map +1 -1
- package/countdown-timer/countdown-timer.js.map +1 -1
- package/countdown-timer/types.d.ts +3 -3
- package/dashed-border/dashed-border.js.map +1 -1
- package/data-table/data-table.js.map +1 -1
- package/date-input/date-input.js.map +1 -1
- package/date-input/types.d.ts +1 -1
- package/date-navigator/date-navigator.js.map +1 -1
- package/date-navigator/types.d.ts +1 -1
- package/date-range-input/date-range-input.js.map +1 -1
- package/date-range-input/types.d.ts +1 -1
- package/divider/divider.js.map +1 -1
- package/divider/types.d.ts +1 -1
- package/docs/component-catalog.json +644 -0
- package/drawer/drawer.js.map +1 -1
- package/e-signature/e-signature.js.map +1 -1
- package/error-display/error-display.js.map +1 -1
- package/feedback-rating/feedback-rating.js.map +1 -1
- package/file-download/file-download.js.map +1 -1
- package/file-download/types.d.ts +6 -1
- package/file-upload/file-item-edit.d.ts +1 -1
- package/file-upload/file-item-edit.js.map +1 -1
- package/file-upload/file-list/file-list.d.ts +1 -1
- package/file-upload/file-list/file-list.js.map +1 -1
- package/file-upload/file-list-item/file-list-item.d.ts +1 -1
- package/file-upload/file-list-item/file-list-item.js.map +1 -1
- package/file-upload/file-list-item/file-list-item.styles.js +1 -1
- package/file-upload/file-list-item/file-list-item.styles.js.map +1 -1
- package/file-upload/file-list-item/{file-list-item.styles_o8000f.css → file-list-item.styles_kgtfke.css} +1 -1
- package/file-upload/file-upload.js.map +1 -1
- package/file-upload/types.d.ts +6 -2
- package/filter/addons/filter-item-checkbox-helpers.d.ts +2 -2
- package/filter/addons/filter-item-checkbox-helpers.js.map +1 -1
- package/filter/addons/filter-item-checkbox.d.ts +1 -1
- package/filter/addons/filter-item-checkbox.js.map +1 -1
- package/filter/addons/internal-types.d.ts +12 -0
- package/filter/addons/types.d.ts +60 -9
- package/filter/filter-item.js +1 -1
- package/filter/filter-item.js.map +1 -1
- package/filter/filter.d.ts +1 -1
- package/filter/filter.js.map +1 -1
- package/filter/index.d.ts +1 -0
- package/filter/types.d.ts +31 -63
- package/footer/footer.js.map +1 -1
- package/form/form-custom-field/form-custom-field.js +2 -0
- package/form/form-custom-field/form-custom-field.js.map +1 -0
- package/form/form-custom-field/index.d.ts +2 -0
- package/form/form-custom-field/types.d.ts +7 -0
- package/form/form-date-input/form-date-input.js +2 -0
- package/form/form-date-input/form-date-input.js.map +1 -0
- package/form/form-date-input/index.d.ts +2 -0
- package/form/form-date-input/types.d.ts +8 -0
- package/form/form-date-range-input/form-date-range-input.js +2 -0
- package/form/form-date-range-input/form-date-range-input.js.map +1 -0
- package/form/form-date-range-input/index.d.ts +2 -0
- package/form/form-date-range-input/types.d.ts +8 -0
- package/form/form-e-signature/form-e-signature.js +2 -0
- package/form/form-e-signature/form-e-signature.js.map +1 -0
- package/form/form-e-signature/index.d.ts +2 -0
- package/form/form-e-signature/types.d.ts +8 -0
- package/form/form-histogram-slider/form-histogram-slider.js +2 -0
- package/form/form-histogram-slider/form-histogram-slider.js.map +1 -0
- package/form/form-histogram-slider/index.d.ts +2 -0
- package/form/form-histogram-slider/types.d.ts +8 -0
- package/form/form-input/form-input.js +2 -0
- package/form/form-input/form-input.js.map +1 -0
- package/form/form-input/index.d.ts +2 -0
- package/form/form-input/types.d.ts +8 -0
- package/form/form-input-group/form-input-group.js +2 -0
- package/form/form-input-group/form-input-group.js.map +1 -0
- package/form/form-input-group/index.d.ts +2 -0
- package/form/form-input-group/types.d.ts +10 -0
- package/form/form-label/form-label-addon.js +2 -0
- package/form/form-label/form-label-addon.js.map +1 -0
- package/form/form-label/form-label-addon.styles.js +2 -0
- package/form/form-label/form-label-addon.styles.js.map +1 -0
- package/form/form-label/form-label-addon.styles_aztasj.css +1 -0
- package/form/form-label/form-label.js +2 -0
- package/form/form-label/form-label.js.map +1 -0
- package/form/form-label/form-label.styles.js +2 -0
- package/form/form-label/form-label.styles.js.map +1 -0
- package/form/form-label/form-label.styles_180zf7j.css +6 -0
- package/form/form-label/index.d.ts +2 -0
- package/form/form-label/types.d.ts +39 -0
- package/form/form-masked-input/form-masked-input.js +2 -0
- package/form/form-masked-input/form-masked-input.js.map +1 -0
- package/form/form-masked-input/index.d.ts +2 -0
- package/form/form-masked-input/types.d.ts +8 -0
- package/form/form-multi-select/form-multi-select.js +2 -0
- package/form/form-multi-select/form-multi-select.js.map +1 -0
- package/form/form-multi-select/index.d.ts +2 -0
- package/form/form-multi-select/types.d.ts +10 -0
- package/form/form-nested-multi-select/form-nested-multi-select.js +2 -0
- package/form/form-nested-multi-select/form-nested-multi-select.js.map +1 -0
- package/form/form-nested-multi-select/index.d.ts +2 -0
- package/form/form-nested-multi-select/types.d.ts +11 -0
- package/form/form-nested-select/form-nested-select.js +2 -0
- package/form/form-nested-select/form-nested-select.js.map +1 -0
- package/form/form-nested-select/index.d.ts +2 -0
- package/form/form-nested-select/types.d.ts +11 -0
- package/form/{form-otp-verification.d.ts → form-otp-verification/form-otp-verification.d.ts} +1 -1
- package/form/form-otp-verification/form-otp-verification.js +2 -0
- package/form/form-otp-verification/form-otp-verification.js.map +1 -0
- package/form/form-otp-verification/index.d.ts +2 -0
- package/form/form-otp-verification/types.d.ts +1 -0
- package/form/form-phone-number-input/form-phone-number-input.js +2 -0
- package/form/form-phone-number-input/form-phone-number-input.js.map +1 -0
- package/form/form-phone-number-input/index.d.ts +2 -0
- package/form/form-phone-number-input/types.d.ts +8 -0
- package/form/form-predictive-text-input/form-predictive-text-input.js +2 -0
- package/form/form-predictive-text-input/form-predictive-text-input.js.map +1 -0
- package/form/form-predictive-text-input/index.d.ts +2 -0
- package/form/form-predictive-text-input/types.d.ts +10 -0
- package/form/form-range-select/form-range-select.js +2 -0
- package/form/form-range-select/form-range-select.js.map +1 -0
- package/form/form-range-select/index.d.ts +2 -0
- package/form/form-range-select/types.d.ts +10 -0
- package/form/form-range-slider/form-range-slider.js +2 -0
- package/form/form-range-slider/form-range-slider.js.map +1 -0
- package/form/form-range-slider/index.d.ts +2 -0
- package/form/form-range-slider/types.d.ts +8 -0
- package/form/form-select/form-select.js +2 -0
- package/form/form-select/form-select.js.map +1 -0
- package/form/form-select/index.d.ts +2 -0
- package/form/form-select/types.d.ts +10 -0
- package/form/form-select-histogram/form-select-histogram.js +2 -0
- package/form/form-select-histogram/form-select-histogram.js.map +1 -0
- package/form/form-select-histogram/index.d.ts +2 -0
- package/form/form-select-histogram/types.d.ts +8 -0
- package/form/form-slider/form-slider.js +2 -0
- package/form/form-slider/form-slider.js.map +1 -0
- package/form/form-slider/index.d.ts +2 -0
- package/form/form-slider/types.d.ts +8 -0
- package/form/form-textarea/form-textarea.js +2 -0
- package/form/form-textarea/form-textarea.js.map +1 -0
- package/form/form-textarea/form-textarea.styles.js +2 -0
- package/form/form-textarea/form-textarea.styles.js.map +1 -0
- package/form/form-textarea/form-textarea.styles_1kneyif.css +3 -0
- package/form/form-textarea/index.d.ts +2 -0
- package/form/form-textarea/types.d.ts +8 -0
- package/form/form-time-range-picker/form-time-range-picker.js +2 -0
- package/form/form-time-range-picker/form-time-range-picker.js.map +1 -0
- package/form/form-time-range-picker/index.d.ts +2 -0
- package/form/form-time-range-picker/types.d.ts +8 -0
- package/form/form-timepicker/form-timepicker.js +2 -0
- package/form/form-timepicker/form-timepicker.js.map +1 -0
- package/form/form-timepicker/index.d.ts +2 -0
- package/form/form-timepicker/types.d.ts +8 -0
- package/form/form-unit-number-input/form-unit-number-input.js +2 -0
- package/form/form-unit-number-input/form-unit-number-input.js.map +1 -0
- package/form/form-unit-number-input/index.d.ts +2 -0
- package/form/form-unit-number-input/types.d.ts +8 -0
- package/form/form-wrapper.js +1 -1
- package/form/form-wrapper.js.map +1 -1
- package/form/index.d.ts +47 -24
- package/form/index.js +1 -1
- package/form/index.js.map +1 -1
- package/form/types.d.ts +1 -208
- package/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
- package/histogram-slider/histogram-slider.js.map +1 -1
- package/image-button/image-button.js.map +1 -1
- package/input/input.js.map +1 -1
- package/input-group/input-group.js.map +1 -1
- package/input-group/types.d.ts +1 -1
- package/input-multi-select/input-multi-select.js.map +1 -1
- package/input-multi-select/types.d.ts +1 -1
- package/input-nested-multi-select/input-nested-multi-select.js.map +1 -1
- package/input-nested-select/input-nested-select.js.map +1 -1
- package/input-nested-select/types.d.ts +1 -1
- package/input-range-select/input-range-select.js.map +1 -1
- package/input-range-select/types.d.ts +1 -1
- package/input-range-slider/input-range-slider.js.map +1 -1
- package/input-select/input-select.js.map +1 -1
- package/input-select/types.d.ts +1 -1
- package/input-slider/input-slider.js.map +1 -1
- package/input-slider/types.d.ts +1 -1
- package/input-textarea/textarea.js.map +1 -1
- package/input-textarea/textarea.styles.js +1 -1
- package/input-textarea/textarea.styles.js.map +1 -1
- package/input-textarea/{textarea.styles_22z4n3.css → textarea.styles_q77m5x.css} +1 -1
- package/language-switcher/language-switcher.js.map +1 -1
- package/layout/index.js.map +1 -1
- package/link-list/components/common.d.ts +1 -1
- package/link-list/components/common.js.map +1 -1
- package/link-list/components/link-list-eager.d.ts +2 -2
- package/link-list/components/link-list-eager.js.map +1 -1
- package/link-list/components/link-list-lazy.d.ts +2 -2
- package/link-list/components/link-list-lazy.js.map +1 -1
- package/link-list/link-list.js.map +1 -1
- package/link-list/types.d.ts +89 -3
- package/local-nav/local-nav-dropdown/local-nav-dropdown.js.map +1 -1
- package/local-nav/local-nav-menu/local-nav-menu.js.map +1 -1
- package/markup/markup.js.map +1 -1
- package/masked-input/masked-input.js.map +1 -1
- package/masthead/masthead.js.map +1 -1
- package/menu/menu.js.map +1 -1
- package/menu/types.d.ts +17 -1
- package/modal/index.js.map +1 -1
- package/modal/types.d.ts +3 -1
- package/modal-v2/modal-v2.js.map +1 -1
- package/modal-v2/types.d.ts +17 -0
- package/navbar/navbar.js.map +1 -1
- package/navbar/types.d.ts +1 -0
- package/notification-banner/notification-banner.js.map +1 -1
- package/otp-input/otp-input.js +1 -1
- package/otp-input/otp-input.js.map +1 -1
- package/otp-input/types.d.ts +14 -9
- package/otp-verification/contact-input-section.js +1 -1
- package/otp-verification/contact-input-section.js.map +1 -1
- package/otp-verification/otp-verification.js.map +1 -1
- package/otp-verification/verification-section.js +1 -1
- package/otp-verification/verification-section.js.map +1 -1
- package/overlay/overlay.js.map +1 -1
- package/package.json +1 -1
- package/pagination/pagination.js.map +1 -1
- package/phone-number-input/phone-number-input.js.map +1 -1
- package/pill/pill.js.map +1 -1
- package/popover/popover-inline/index.d.ts +1 -0
- package/popover/popover-inline/popover-inline.d.ts +1 -1
- package/popover/popover-inline/popover-inline.js.map +1 -1
- package/popover/popover-inline/types.d.ts +36 -0
- package/popover/popover.js.map +1 -1
- package/popover/types.d.ts +2 -35
- package/predictive-text-input/predictive-text-input.js +1 -1
- package/predictive-text-input/predictive-text-input.js.map +1 -1
- package/predictive-text-input/types.d.ts +1 -1
- package/progress-indicator/progress-indicator.js.map +1 -1
- package/radio-button/radio-button.js.map +1 -1
- package/radio-button/types.d.ts +3 -0
- package/schedule/schedule.js.map +1 -1
- package/select-histogram/select-histogram.js.map +1 -1
- package/select-histogram/types.d.ts +1 -1
- package/shared/dropdown-list/dropdown-list.js +1 -1
- package/shared/dropdown-list/dropdown-list.js.map +1 -1
- package/shared/dropdown-wrapper/element-with-dropdown.d.ts +5 -4
- package/shared/dropdown-wrapper/element-with-dropdown.js +1 -1
- package/shared/dropdown-wrapper/element-with-dropdown.js.map +1 -1
- package/sidenav/sidenav.js.map +1 -1
- package/sidenav/types.d.ts +1 -0
- package/singpass-button/singpass-button.js.map +1 -1
- package/smart-app-banner/smart-app-banner.js.map +1 -1
- package/smart-app-banner/types.d.ts +2 -0
- package/tab/tab.js.map +1 -1
- package/table/table.d.ts +9 -8
- package/table/table.js.map +1 -1
- package/table/types.d.ts +35 -0
- package/tag/tag.js.map +1 -1
- package/text-list/index.js.map +1 -1
- package/theme/theme-provider/hooks.js.map +1 -1
- package/theme/theme-provider/index.js.map +1 -1
- package/theme/tokens/border.d.ts +9 -3
- package/theme/tokens/border.js.map +1 -1
- package/theme/tokens/breakpoint.js.map +1 -1
- package/theme/tokens/colour.d.ts +9 -3
- package/theme/tokens/colour.js.map +1 -1
- package/theme/tokens/component.d.ts +3 -1
- package/theme/tokens/component.js.map +1 -1
- package/theme/tokens/font.d.ts +6 -2
- package/theme/tokens/font.js.map +1 -1
- package/theme/tokens/media-query.d.ts +3 -1
- package/theme/tokens/media-query.js.map +1 -1
- package/theme/tokens/motion.d.ts +3 -1
- package/theme/tokens/motion.js.map +1 -1
- package/theme/tokens/radius.d.ts +3 -1
- package/theme/tokens/radius.js.map +1 -1
- package/theme/tokens/shadow.d.ts +3 -1
- package/theme/tokens/shadow.js.map +1 -1
- package/theme/tokens/spacing.d.ts +3 -1
- package/theme/tokens/spacing.js.map +1 -1
- package/theme/utils/use-apply-styles.js.map +1 -1
- package/theme/utils/use-design-token.js.map +1 -1
- package/theme/utils/use-media-query.js.map +1 -1
- package/time-range-picker/combobox-picker/combobox-picker.js +1 -1
- package/time-range-picker/combobox-picker/combobox-picker.js.map +1 -1
- package/time-range-picker/time-range-picker.js.map +1 -1
- package/time-range-picker/types.d.ts +1 -1
- package/time-slot-bar/time-slot-bar.js.map +1 -1
- package/time-slot-bar/types.d.ts +5 -1
- package/time-slot-bar-week/time-slot-bar-week.js.map +1 -1
- package/time-slot-bar-week/types.d.ts +6 -0
- package/time-slot-week-view/time-slot-week-view.js.map +1 -1
- package/time-slot-week-view/types.d.ts +2 -0
- package/timeline/timeline.js.map +1 -1
- package/timeline/types.d.ts +1 -1
- package/timepicker/timepicker.js.map +1 -1
- package/timepicker/types.d.ts +2 -2
- package/timetable/timetable.js.map +1 -1
- package/toast/toast.js.map +1 -1
- package/toast/types.d.ts +2 -0
- package/toggle/toggle.js.map +1 -1
- package/tools/shared/generated-file-formatter.d.ts +6 -0
- package/tools/shared/jsdoc-parser.d.ts +36 -0
- package/tools/shared/ts-morph-project-factory.d.ts +9 -0
- package/tools/shared/typescript-source-provider.d.ts +9 -0
- package/tools/storybook-argtypes/adapters/file-system-adapter.d.ts +69 -0
- package/tools/storybook-argtypes/arg-types-generator.d.ts +85 -0
- package/tools/storybook-argtypes/config/arg-types-config.d.ts +31 -0
- package/tools/storybook-argtypes/index.d.ts +11 -0
- package/tools/storybook-argtypes/services/arg-types-row-builder.d.ts +43 -0
- package/tools/storybook-argtypes/services/file-path-resolver.d.ts +118 -0
- package/tools/storybook-argtypes/services/index.d.ts +6 -0
- package/tools/storybook-argtypes/services/jsdoc-metadata-extractor.d.ts +33 -0
- package/tools/storybook-argtypes/services/story-registry-generator.d.ts +27 -0
- package/tools/storybook-argtypes/services/type-dependency-resolver.d.ts +46 -0
- package/tools/storybook-argtypes/services/type-formatting-service.d.ts +27 -0
- package/tools/storybook-argtypes/types.d.ts +102 -0
- package/typography/index.js.map +1 -1
- package/uneditable-section/index.js.map +1 -1
- package/uneditable-section/section-item.js +1 -1
- package/uneditable-section/section-item.js.map +1 -1
- package/uneditable-section/types.d.ts +2 -2
- package/unit-number/unit-number-input.js.map +1 -1
- package/cjs/form/form-custom-field.js +0 -2
- package/cjs/form/form-custom-field.js.map +0 -1
- package/cjs/form/form-date-input.js +0 -2
- package/cjs/form/form-date-input.js.map +0 -1
- package/cjs/form/form-date-range-input.js +0 -2
- package/cjs/form/form-date-range-input.js.map +0 -1
- package/cjs/form/form-e-signature.js +0 -2
- package/cjs/form/form-e-signature.js.map +0 -1
- package/cjs/form/form-histogram.js +0 -2
- package/cjs/form/form-histogram.js.map +0 -1
- package/cjs/form/form-input-group.js +0 -2
- package/cjs/form/form-input-group.js.map +0 -1
- package/cjs/form/form-input.js +0 -2
- package/cjs/form/form-input.js.map +0 -1
- package/cjs/form/form-label-addon.js +0 -2
- package/cjs/form/form-label-addon.js.map +0 -1
- package/cjs/form/form-label-addon.styles.js +0 -2
- package/cjs/form/form-label-addon.styles.js.map +0 -1
- package/cjs/form/form-label-addon.styles_b00z8p.css +0 -1
- package/cjs/form/form-label.js +0 -2
- package/cjs/form/form-label.js.map +0 -1
- package/cjs/form/form-label.styles.js +0 -2
- package/cjs/form/form-label.styles.js.map +0 -1
- package/cjs/form/form-label.styles_1nbe0bm.css +0 -6
- package/cjs/form/form-masked-input.js +0 -2
- package/cjs/form/form-masked-input.js.map +0 -1
- package/cjs/form/form-multi-select.js +0 -2
- package/cjs/form/form-multi-select.js.map +0 -1
- package/cjs/form/form-nested-multi-select.js +0 -2
- package/cjs/form/form-nested-multi-select.js.map +0 -1
- package/cjs/form/form-nested-select.js +0 -2
- package/cjs/form/form-nested-select.js.map +0 -1
- package/cjs/form/form-otp-verification.js +0 -2
- package/cjs/form/form-otp-verification.js.map +0 -1
- package/cjs/form/form-phone-number-input.js +0 -2
- package/cjs/form/form-phone-number-input.js.map +0 -1
- package/cjs/form/form-predictive-text-input.js +0 -2
- package/cjs/form/form-predictive-text-input.js.map +0 -1
- package/cjs/form/form-range-select.js +0 -2
- package/cjs/form/form-range-select.js.map +0 -1
- package/cjs/form/form-range-slider.js +0 -2
- package/cjs/form/form-range-slider.js.map +0 -1
- package/cjs/form/form-select-histogram.js +0 -2
- package/cjs/form/form-select-histogram.js.map +0 -1
- package/cjs/form/form-select.js +0 -2
- package/cjs/form/form-select.js.map +0 -1
- package/cjs/form/form-slider.js +0 -2
- package/cjs/form/form-slider.js.map +0 -1
- package/cjs/form/form-textarea.js +0 -2
- package/cjs/form/form-textarea.js.map +0 -1
- package/cjs/form/form-textarea.styles.js +0 -2
- package/cjs/form/form-textarea.styles.js.map +0 -1
- package/cjs/form/form-textarea.styles_3p9qoy.css +0 -3
- package/cjs/form/form-time-range-picker.js +0 -2
- package/cjs/form/form-time-range-picker.js.map +0 -1
- package/cjs/form/form-timepicker.js +0 -2
- package/cjs/form/form-timepicker.js.map +0 -1
- package/cjs/form/form-unit-number-input.js +0 -2
- package/cjs/form/form-unit-number-input.js.map +0 -1
- package/form/form-custom-field.js +0 -2
- package/form/form-custom-field.js.map +0 -1
- package/form/form-date-input.js +0 -2
- package/form/form-date-input.js.map +0 -1
- package/form/form-date-range-input.js +0 -2
- package/form/form-date-range-input.js.map +0 -1
- package/form/form-e-signature.js +0 -2
- package/form/form-e-signature.js.map +0 -1
- package/form/form-histogram.js +0 -2
- package/form/form-histogram.js.map +0 -1
- package/form/form-input-group.js +0 -2
- package/form/form-input-group.js.map +0 -1
- package/form/form-input.js +0 -2
- package/form/form-input.js.map +0 -1
- package/form/form-label-addon.js +0 -2
- package/form/form-label-addon.js.map +0 -1
- package/form/form-label-addon.styles.js +0 -2
- package/form/form-label-addon.styles.js.map +0 -1
- package/form/form-label-addon.styles_b00z8p.css +0 -1
- package/form/form-label.js +0 -2
- package/form/form-label.js.map +0 -1
- package/form/form-label.styles.js +0 -2
- package/form/form-label.styles.js.map +0 -1
- package/form/form-label.styles_1nbe0bm.css +0 -6
- package/form/form-masked-input.js +0 -2
- package/form/form-masked-input.js.map +0 -1
- package/form/form-multi-select.js +0 -2
- package/form/form-multi-select.js.map +0 -1
- package/form/form-nested-multi-select.js +0 -2
- package/form/form-nested-multi-select.js.map +0 -1
- package/form/form-nested-select.js +0 -2
- package/form/form-nested-select.js.map +0 -1
- package/form/form-otp-verification.js +0 -2
- package/form/form-otp-verification.js.map +0 -1
- package/form/form-phone-number-input.js +0 -2
- package/form/form-phone-number-input.js.map +0 -1
- package/form/form-predictive-text-input.js +0 -2
- package/form/form-predictive-text-input.js.map +0 -1
- package/form/form-range-select.js +0 -2
- package/form/form-range-select.js.map +0 -1
- package/form/form-range-slider.js +0 -2
- package/form/form-range-slider.js.map +0 -1
- package/form/form-select-histogram.js +0 -2
- package/form/form-select-histogram.js.map +0 -1
- package/form/form-select.js +0 -2
- package/form/form-select.js.map +0 -1
- package/form/form-slider.js +0 -2
- package/form/form-slider.js.map +0 -1
- package/form/form-textarea.js +0 -2
- package/form/form-textarea.js.map +0 -1
- package/form/form-textarea.styles.js +0 -2
- package/form/form-textarea.styles.js.map +0 -1
- package/form/form-textarea.styles_3p9qoy.css +0 -3
- package/form/form-time-range-picker.js +0 -2
- package/form/form-time-range-picker.js.map +0 -1
- package/form/form-timepicker.js +0 -2
- package/form/form-timepicker.js.map +0 -1
- package/form/form-unit-number-input.js +0 -2
- package/form/form-unit-number-input.js.map +0 -1
- package/link-list/internal-types.d.ts +0 -85
- /package/{codemod-utils.d.ts → codemods/codemod-utils.d.ts} +0 -0
- /package/{migrate-popover → codemods/migrate-popover}/index.d.ts +0 -0
- /package/{run-codemod.d.ts → codemods/run-codemod.d.ts} +0 -0
- /package/form/{form-custom-field.d.ts → form-custom-field/form-custom-field.d.ts} +0 -0
- /package/form/{form-date-input.d.ts → form-date-input/form-date-input.d.ts} +0 -0
- /package/form/{form-date-range-input.d.ts → form-date-range-input/form-date-range-input.d.ts} +0 -0
- /package/form/{form-e-signature.d.ts → form-e-signature/form-e-signature.d.ts} +0 -0
- /package/form/{form-histogram.d.ts → form-histogram-slider/form-histogram-slider.d.ts} +0 -0
- /package/form/{form-input.d.ts → form-input/form-input.d.ts} +0 -0
- /package/form/{form-input-group.d.ts → form-input-group/form-input-group.d.ts} +0 -0
- /package/form/{form-label-addon.d.ts → form-label/form-label-addon.d.ts} +0 -0
- /package/form/{form-label-addon.styles.d.ts → form-label/form-label-addon.styles.d.ts} +0 -0
- /package/form/{form-label.d.ts → form-label/form-label.d.ts} +0 -0
- /package/form/{form-label.styles.d.ts → form-label/form-label.styles.d.ts} +0 -0
- /package/form/{form-masked-input.d.ts → form-masked-input/form-masked-input.d.ts} +0 -0
- /package/form/{form-multi-select.d.ts → form-multi-select/form-multi-select.d.ts} +0 -0
- /package/form/{form-nested-multi-select.d.ts → form-nested-multi-select/form-nested-multi-select.d.ts} +0 -0
- /package/form/{form-nested-select.d.ts → form-nested-select/form-nested-select.d.ts} +0 -0
- /package/form/{form-phone-number-input.d.ts → form-phone-number-input/form-phone-number-input.d.ts} +0 -0
- /package/form/{form-predictive-text-input.d.ts → form-predictive-text-input/form-predictive-text-input.d.ts} +0 -0
- /package/form/{form-range-select.d.ts → form-range-select/form-range-select.d.ts} +0 -0
- /package/form/{form-range-slider.d.ts → form-range-slider/form-range-slider.d.ts} +0 -0
- /package/form/{form-select.d.ts → form-select/form-select.d.ts} +0 -0
- /package/form/{form-select-histogram.d.ts → form-select-histogram/form-select-histogram.d.ts} +0 -0
- /package/form/{form-slider.d.ts → form-slider/form-slider.d.ts} +0 -0
- /package/form/{form-textarea.d.ts → form-textarea/form-textarea.d.ts} +0 -0
- /package/form/{form-textarea.styles.d.ts → form-textarea/form-textarea.styles.d.ts} +0 -0
- /package/form/{form-time-range-picker.d.ts → form-time-range-picker/form-time-range-picker.d.ts} +0 -0
- /package/form/{form-timepicker.d.ts → form-timepicker/form-timepicker.d.ts} +0 -0
- /package/form/{form-unit-number-input.d.ts → form-unit-number-input/form-unit-number-input.d.ts} +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArgTypesRowBuilder - Build individual Storybook argType rows.
|
|
3
|
+
*
|
|
4
|
+
* Constructs complete argType entries with type information, descriptions,
|
|
5
|
+
* and control metadata from TypeScript properties and type declarations.
|
|
6
|
+
*/
|
|
7
|
+
import type { GeneratedArgType } from "../types";
|
|
8
|
+
/**
|
|
9
|
+
* Builds Storybook argType rows.
|
|
10
|
+
* Creates complete argType entries with metadata.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const builder = new ArgTypesRowBuilder();
|
|
15
|
+
* const row = builder.buildArgTypeRow({
|
|
16
|
+
* key: 'Button.color',
|
|
17
|
+
* name: 'color',
|
|
18
|
+
* category: 'Styling',
|
|
19
|
+
* typeSummary: 'string | number'
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class ArgTypesRowBuilder {
|
|
24
|
+
/**
|
|
25
|
+
* Build a complete argType row.
|
|
26
|
+
* Combines property information with metadata to create a Storybook argType entry.
|
|
27
|
+
*
|
|
28
|
+
* @param opts Options object containing name, property, description, etc.
|
|
29
|
+
* @returns Generated argType row
|
|
30
|
+
*/
|
|
31
|
+
buildArgTypeRow(opts: {
|
|
32
|
+
key: string;
|
|
33
|
+
name: string;
|
|
34
|
+
category: string;
|
|
35
|
+
tabGroup?: string;
|
|
36
|
+
typeSummary?: string;
|
|
37
|
+
typeSummaryParts?: string[];
|
|
38
|
+
defaultValue?: string;
|
|
39
|
+
deprecated?: string | boolean;
|
|
40
|
+
description?: string;
|
|
41
|
+
required?: boolean;
|
|
42
|
+
}): GeneratedArgType;
|
|
43
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FilePathResolver - Resolve file paths and import paths for components and types.
|
|
3
|
+
*
|
|
4
|
+
* Handles mapping story files to their corresponding type files
|
|
5
|
+
* and resolving import paths for components.
|
|
6
|
+
*/
|
|
7
|
+
import type { IFileSystemAdapter } from "../adapters/file-system-adapter";
|
|
8
|
+
/**
|
|
9
|
+
* Resolves file paths for type definitions and story imports.
|
|
10
|
+
* Maps story files to component types and resolves import paths.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const resolver = new FilePathResolver();
|
|
15
|
+
* const typesFile = resolver.getTypesFileFromStoryDirectory('stories/button/button.stories.ts');
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class FilePathResolver {
|
|
19
|
+
private readonly fileSystemAdapter;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new FilePathResolver.
|
|
22
|
+
*
|
|
23
|
+
* @param fileSystemAdapter Adapter for filesystem operations (optional, uses default)
|
|
24
|
+
*/
|
|
25
|
+
constructor(fileSystemAdapter?: IFileSystemAdapter);
|
|
26
|
+
/**
|
|
27
|
+
* Extract the story title from story file text.
|
|
28
|
+
*
|
|
29
|
+
* @param fileText Content of the story file
|
|
30
|
+
* @returns Story title or undefined if not found
|
|
31
|
+
*/
|
|
32
|
+
getStoryTitle(fileText: string): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Extract the component reference from story file text.
|
|
35
|
+
* Matches `component: Form.CustomField` style declarations.
|
|
36
|
+
*
|
|
37
|
+
* @param fileText Content of the story file
|
|
38
|
+
* @returns Object with rootIdentifier and memberPath, or undefined if not found
|
|
39
|
+
*/
|
|
40
|
+
getComponentReference(fileText: string): {
|
|
41
|
+
rootIdentifier: string;
|
|
42
|
+
memberPath: string[];
|
|
43
|
+
} | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Get the import path for a referenced identifier in story file text.
|
|
46
|
+
*
|
|
47
|
+
* @param fileText Story file content
|
|
48
|
+
* @param identifier Component identifier to find
|
|
49
|
+
* @returns Import path or undefined if not found
|
|
50
|
+
*/
|
|
51
|
+
getImportPathForIdentifier(fileText: string, identifier: string): string | undefined;
|
|
52
|
+
toKebabCase(name: string): string;
|
|
53
|
+
private buildResolutionCandidates;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve an import path to an absolute file path.
|
|
56
|
+
* Handles `src/`-prefixed paths and relative paths.
|
|
57
|
+
*
|
|
58
|
+
* @param storyFilePath Path to the story file (for relative resolution)
|
|
59
|
+
* @param importPath Import path to resolve
|
|
60
|
+
* @returns Absolute file path or undefined if not found
|
|
61
|
+
*/
|
|
62
|
+
resolveImportPath(storyFilePath: string, importPath: string): string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Get component directory from a component source path.
|
|
65
|
+
*
|
|
66
|
+
* @param componentSourcePath Path to component source file
|
|
67
|
+
* @returns Component directory path
|
|
68
|
+
*/
|
|
69
|
+
getComponentDirectory(componentSourcePath: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* Get the types.ts file for a component directory.
|
|
72
|
+
*
|
|
73
|
+
* @param componentDirectory Component directory path
|
|
74
|
+
* @returns Path to types.ts or undefined if not found
|
|
75
|
+
*/
|
|
76
|
+
getTypesFileForComponentDirectory(componentDirectory: string): string | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Get the types file for a nested form component (e.g., Form.CustomField).
|
|
79
|
+
* Maps `form` directory + member path to `form-{leaf-member}/types.ts`.
|
|
80
|
+
*
|
|
81
|
+
* @param componentDirectory Component directory (must be the `form` directory)
|
|
82
|
+
* @param memberPath Member access path (e.g., ["CustomField"])
|
|
83
|
+
* @returns Path to the types file or undefined
|
|
84
|
+
*/
|
|
85
|
+
getNestedFormTypesFile(componentDirectory: string, memberPath: string[]): string | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Get the types file inferred from a story file's location.
|
|
88
|
+
* Resolves `stories/{dir}/{story-name}.stories.ts` to `src/{dir}/types.ts`
|
|
89
|
+
* with subdirectory-aware fallback logic.
|
|
90
|
+
*
|
|
91
|
+
* @param storyFilePath Path to the story file
|
|
92
|
+
* @returns Path to the inferred types file or undefined
|
|
93
|
+
*/
|
|
94
|
+
getTypesFileFromStoryDirectory(storyFilePath: string): string | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Get the output file path for a types source file.
|
|
97
|
+
* e.g. `src/button/types.ts` → `.storybook/generated/button.argtypes.generated.ts`
|
|
98
|
+
*
|
|
99
|
+
* @param sourceFilePath Absolute path to the types source file
|
|
100
|
+
* @returns Absolute path to the generated output file
|
|
101
|
+
*/
|
|
102
|
+
getOutputFile(sourceFilePath: string): string;
|
|
103
|
+
/**
|
|
104
|
+
* Get the export name for the component's argTypes object.
|
|
105
|
+
* e.g. "form-custom-field" → "formCustomFieldExtraArgTypes"
|
|
106
|
+
*
|
|
107
|
+
* @param sourceFilePath Absolute path to the types source file
|
|
108
|
+
* @returns Export identifier name
|
|
109
|
+
*/
|
|
110
|
+
getExportName(sourceFilePath: string): string;
|
|
111
|
+
/**
|
|
112
|
+
* Get the relative import path for a generated argTypes file.
|
|
113
|
+
*
|
|
114
|
+
* @param outputFile Absolute path to the generated output file
|
|
115
|
+
* @returns Relative import path (suitable for use in import statements)
|
|
116
|
+
*/
|
|
117
|
+
getArgTypesImportPath(outputFile: string): string;
|
|
118
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ArgTypesRowBuilder } from "./arg-types-row-builder";
|
|
2
|
+
export { FilePathResolver } from "./file-path-resolver";
|
|
3
|
+
export { JsDocMetadataExtractor } from "./jsdoc-metadata-extractor";
|
|
4
|
+
export { StoryRegistryGenerator } from "./story-registry-generator";
|
|
5
|
+
export { TypeDependencyResolver } from "./type-dependency-resolver";
|
|
6
|
+
export { TypeFormattingService } from "./type-formatting-service";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JsDocMetadataExtractor - Extract JSDoc and comment metadata from TypeScript nodes.
|
|
3
|
+
*
|
|
4
|
+
* Parses JSDoc tags and comments to extract documentation metadata
|
|
5
|
+
* like descriptions, examples, deprecation notices, and custom fields.
|
|
6
|
+
*/
|
|
7
|
+
import { type IndexSignatureDeclaration, type PropertySignature, type SourceFile } from "ts-morph";
|
|
8
|
+
import type { JsDocMeta, StorybookTaggedDeclarationNode } from "../types";
|
|
9
|
+
/** Nodes that can carry JSDoc in storybook generation. */
|
|
10
|
+
type JsDocNode = IndexSignatureDeclaration | PropertySignature | StorybookTaggedDeclarationNode;
|
|
11
|
+
/**
|
|
12
|
+
* Extracts JSDoc metadata from TypeScript declarations.
|
|
13
|
+
* Parses "@deprecated", "@default", "@remarks", "@example", and "@storybookSection" tags.
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const extractor = new JsDocMetadataExtractor();
|
|
18
|
+
* const meta = extractor.getJsDocMeta(declaration);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class JsDocMetadataExtractor {
|
|
22
|
+
private readonly parser;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a source file should be skipped from argTypes generation.
|
|
25
|
+
* Only top-of-file line comments are considered.
|
|
26
|
+
*/
|
|
27
|
+
isSkippedSourceFile(sourceFile: SourceFile): boolean;
|
|
28
|
+
hasSkipTag(node: StorybookTaggedDeclarationNode): boolean;
|
|
29
|
+
getJsDocMeta(node: JsDocNode): JsDocMeta;
|
|
30
|
+
mergeJsDocMeta(metas: JsDocMeta[]): JsDocMeta;
|
|
31
|
+
toStorybookDescription(meta: JsDocMeta): string | undefined;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StoryRegistryGenerator - Generate story-title to argTypes registry content.
|
|
3
|
+
*/
|
|
4
|
+
import { type SourceFile } from "ts-morph";
|
|
5
|
+
import type { IFileSystemAdapter } from "../adapters/file-system-adapter";
|
|
6
|
+
import { FilePathResolver } from "./file-path-resolver";
|
|
7
|
+
/**
|
|
8
|
+
* Generates registry file content from story source files.
|
|
9
|
+
*/
|
|
10
|
+
export declare class StoryRegistryGenerator {
|
|
11
|
+
private readonly filePathResolver;
|
|
12
|
+
/**
|
|
13
|
+
* Create a new StoryRegistryGenerator.
|
|
14
|
+
*
|
|
15
|
+
* @param filePathResolver File path resolver service (optional, uses default)
|
|
16
|
+
* @param fileSystemAdapter Filesystem adapter (optional, uses default)
|
|
17
|
+
*/
|
|
18
|
+
constructor(filePathResolver?: FilePathResolver, fileSystemAdapter?: IFileSystemAdapter);
|
|
19
|
+
/**
|
|
20
|
+
* Generate complete registry file content.
|
|
21
|
+
* Returns the full content for the storybook-argtypes.generated.ts file.
|
|
22
|
+
*
|
|
23
|
+
* @returns Complete file content
|
|
24
|
+
*/
|
|
25
|
+
generateRegistryFileContent(storyFiles: SourceFile[], shouldIncludeTypesFile: (typesFilePath: string) => boolean): string;
|
|
26
|
+
private renderRegistryFileContent;
|
|
27
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeDependencyResolver - Resolve and cache type dependencies across source files.
|
|
3
|
+
*
|
|
4
|
+
* Owns type-level dependency concerns: local type discovery, imported type source
|
|
5
|
+
* resolution, and safe property-symbol extraction from declarations.
|
|
6
|
+
*/
|
|
7
|
+
import { type InterfaceDeclaration, type PropertySignature, type SourceFile, type Symbol as TsMorphSymbol, type TypeAliasDeclaration } from "ts-morph";
|
|
8
|
+
/**
|
|
9
|
+
* Resolves and caches type dependency operations used by argTypes generation.
|
|
10
|
+
*/
|
|
11
|
+
export declare class TypeDependencyResolver {
|
|
12
|
+
/** Cache of locally declared interface/type-alias names keyed by source file path. */
|
|
13
|
+
private readonly localTypeNamesCache;
|
|
14
|
+
/** Cache of wrapped imported type usage grouped by source file path and type name. */
|
|
15
|
+
private readonly wrappedTypeNamesCache;
|
|
16
|
+
/**
|
|
17
|
+
* Returns local interface/type-alias names for a file and memoizes the result.
|
|
18
|
+
*/
|
|
19
|
+
getLocalTypeNames(sourceFile: SourceFile): Set<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Returns the first property-signature declaration for a symbol, if present.
|
|
22
|
+
*/
|
|
23
|
+
getPropertyDeclaration(symbol: TsMorphSymbol): PropertySignature | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Treats symbols from node_modules and custom-types as external declarations.
|
|
26
|
+
*/
|
|
27
|
+
isExternalDeclaration(symbol: TsMorphSymbol): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves declaration properties and filters out external symbols.
|
|
30
|
+
*/
|
|
31
|
+
getResolvedProperties(declaration: InterfaceDeclaration | TypeAliasDeclaration): TsMorphSymbol[];
|
|
32
|
+
/**
|
|
33
|
+
* Resolves the source file backing an imported type name.
|
|
34
|
+
*
|
|
35
|
+
* Resolution order:
|
|
36
|
+
* 1. Follow alias symbol declarations for interface/type-alias declarations.
|
|
37
|
+
* 2. Fall back to module specifier source file when declaration lookup is not available.
|
|
38
|
+
*/
|
|
39
|
+
resolveImportedTypeSourceFile(sourceFile: SourceFile, importedTypeName: string): SourceFile | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Gets cached wrapped type names or computes and stores them lazily.
|
|
42
|
+
*/
|
|
43
|
+
getOrCreateWrappedTypeNames(sourceFile: SourceFile, factory: () => Map<string, Set<string | undefined>>): Map<string, Set<string | undefined>>;
|
|
44
|
+
/** Clear all in-memory caches. */
|
|
45
|
+
clear(): void;
|
|
46
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeFormattingService - Transform and format TypeScript type text for Storybook.
|
|
3
|
+
*
|
|
4
|
+
* Handles type text cleaning, union simplification, and formatting
|
|
5
|
+
* to make types more readable in Storybook's argTypes table.
|
|
6
|
+
*/
|
|
7
|
+
import { type IndexSignatureDeclaration, type Node, type PropertySignature, type Type } from "ts-morph";
|
|
8
|
+
/**
|
|
9
|
+
* Formats TypeScript type text for Storybook argTypes.
|
|
10
|
+
* Provides type cleaning, union handling, and description generation.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const formatter = new TypeFormattingService();
|
|
15
|
+
* const cleaned = formatter.cleanType('string | undefined');
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class TypeFormattingService {
|
|
19
|
+
cleanType(type: string): string;
|
|
20
|
+
formatUnionSummary(typeText: string): string;
|
|
21
|
+
isSimpleLiteralUnion(type: Type): boolean;
|
|
22
|
+
getExpandedLiteralUnionText(type: Type, contextNode: Node): string | undefined;
|
|
23
|
+
getSummaryTypeText(type: Type, contextNode: Node, fallbackText?: string): string;
|
|
24
|
+
getUnionMemberTexts(type: Type, contextNode: Node): string[] | undefined;
|
|
25
|
+
getPropertyTypeText(property: PropertySignature): string;
|
|
26
|
+
getIndexSignatureTypeText(indexSignature: IndexSignatureDeclaration): string;
|
|
27
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Storybook argTypes generation system.
|
|
3
|
+
* Centralizes all interfaces and types for better discoverability and reusability.
|
|
4
|
+
*/
|
|
5
|
+
import type { IndexSignatureDeclaration, InterfaceDeclaration, PropertySignature, Symbol as TsMorphSymbol, TypeAliasDeclaration, VariableStatement } from "ts-morph";
|
|
6
|
+
/**
|
|
7
|
+
* Parsed JSDoc metadata extracted from a TypeScript declaration.
|
|
8
|
+
* Supports these tags: "@deprecated", "@default", "@remarks", "@example", "@storybookSection"
|
|
9
|
+
*/
|
|
10
|
+
export interface JsDocMeta {
|
|
11
|
+
defaultValue?: string;
|
|
12
|
+
deprecated?: string | boolean;
|
|
13
|
+
description?: string;
|
|
14
|
+
examples?: string[];
|
|
15
|
+
remarks?: string;
|
|
16
|
+
tabGroups?: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Metadata about a story file that determines which argTypes it uses.
|
|
20
|
+
*/
|
|
21
|
+
export interface StoryMetadata {
|
|
22
|
+
componentReference?: ComponentReference;
|
|
23
|
+
filePath: string;
|
|
24
|
+
title: string;
|
|
25
|
+
typesFilePath?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parsed component reference from story's component property.
|
|
29
|
+
* Examples:
|
|
30
|
+
* - component: Form.CustomField → { rootIdentifier: "Form", memberPath: ["CustomField"] }
|
|
31
|
+
* - component: Button → { rootIdentifier: "Button", memberPath: [] }
|
|
32
|
+
*/
|
|
33
|
+
export interface ComponentReference {
|
|
34
|
+
memberPath: string[];
|
|
35
|
+
rootIdentifier: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Single argType row for display in Storybook's props table.
|
|
39
|
+
* Maps to Storybook's internal ArgType structure.
|
|
40
|
+
*/
|
|
41
|
+
export interface GeneratedArgType {
|
|
42
|
+
key: string;
|
|
43
|
+
value: {
|
|
44
|
+
control: false;
|
|
45
|
+
deprecated?: string | boolean;
|
|
46
|
+
description?: string;
|
|
47
|
+
name: string;
|
|
48
|
+
type?: {
|
|
49
|
+
required?: boolean;
|
|
50
|
+
};
|
|
51
|
+
table: {
|
|
52
|
+
category: string;
|
|
53
|
+
defaultValue?: {
|
|
54
|
+
summary: string;
|
|
55
|
+
};
|
|
56
|
+
tabGroup?: string;
|
|
57
|
+
type: {
|
|
58
|
+
summary?: string;
|
|
59
|
+
summaryParts?: string[];
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* TypeScript declaration nodes that can have JSDoc comments.
|
|
66
|
+
* Union of declaration kinds that support documentation in Storybook.
|
|
67
|
+
*/
|
|
68
|
+
export type StorybookTaggedDeclarationNode = InterfaceDeclaration | TypeAliasDeclaration | VariableStatement;
|
|
69
|
+
/**
|
|
70
|
+
* TypeScript symbol that can be resolved to a type.
|
|
71
|
+
* Alias for ts-morph's Symbol type for clearer intent.
|
|
72
|
+
*/
|
|
73
|
+
export type ResolvedSymbol = TsMorphSymbol;
|
|
74
|
+
/**
|
|
75
|
+
* Supported JSDoc declaration node types for metadata extraction.
|
|
76
|
+
*/
|
|
77
|
+
export type JsDocSupportedNode = IndexSignatureDeclaration | InterfaceDeclaration | PropertySignature | VariableStatement | TypeAliasDeclaration;
|
|
78
|
+
/**
|
|
79
|
+
* Options for configuring the ArgTypes generation.
|
|
80
|
+
*/
|
|
81
|
+
export interface ArgTypesGenerationConfig {
|
|
82
|
+
sourceFileGlobs: readonly string[];
|
|
83
|
+
storybookArgTypesFile: string;
|
|
84
|
+
storyFileGlob: string;
|
|
85
|
+
watchRoots: readonly string[];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Result of resolving a types file for a story.
|
|
89
|
+
* Includes both the file path and metadata about whether it was nested.
|
|
90
|
+
*/
|
|
91
|
+
export interface ResolvedTypesFile {
|
|
92
|
+
exportName: string;
|
|
93
|
+
filePath: string;
|
|
94
|
+
isNested: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* File statistics result from FileSystemAdapter.
|
|
98
|
+
*/
|
|
99
|
+
export interface FileStat {
|
|
100
|
+
isDirectory(): boolean;
|
|
101
|
+
isFile(): boolean;
|
|
102
|
+
}
|
package/typography/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/typography/index.ts"],"sourcesContent":["import {\n BodyBL,\n BodyMD,\n BodySM,\n BodyXS,\n HeadingLG,\n HeadingMD,\n HeadingSM,\n HeadingXL,\n HeadingXS,\n HeadingXXL,\n LinkBL,\n LinkMD,\n LinkSM,\n LinkXS,\n} from \"./typography\";\n\n/**\n * A collection of pre-styled text components covering headings, body copy, and\n * hyperlinks.\n *\n * Use `Typography` sub-components to render consistently sized and weighted\n * text.\n *\n * Sub-components:\n * - Heading variants (`HeadingXXL` through `HeadingXS`) render semantic heading elements by default.\n * - Body variants (`BodyBL`, `BodyMD`, `BodySM`, `BodyXS`) render `p` elements.\n * - Link variants (`LinkBL`, `LinkMD`, `LinkSM`, `LinkXS`) render `a` elements .\n *\n * @remarks All text variants accept an `as` prop to\n * override the rendered element for semantic flexibility.\n */\nexport const Typography = {\n /** Renders the largest heading (`h1`). */\n HeadingXXL,\n /** Renders an extra-large heading (`h2`). */\n HeadingXL,\n /** Renders a large heading (`h3`). */\n HeadingLG,\n /** Renders a medium heading (`h4`). */\n HeadingMD,\n /** Renders a small heading (`h5`). */\n HeadingSM,\n /** Renders the smallest heading (`h6`). */\n HeadingXS,\n /** Renders baseline body text (`p`). */\n BodyBL,\n /** Renders medium body text (`p`). */\n BodyMD,\n /** Renders small body text (`p`). */\n BodySM,\n /** Renders extra-small body text (`p`). */\n BodyXS,\n /** Renders a baseline-size hyperlink (`a`). */\n LinkBL,\n /** Renders a medium-size hyperlink (`a`). */\n LinkMD,\n /** Renders a small-size hyperlink (`a`). */\n LinkSM,\n /** Renders an extra-small hyperlink (`a`). */\n LinkXS,\n};\n\nexport * from \"./types\";\n"],"names":["Typography","HeadingXXL","HeadingXL","HeadingLG","HeadingMD","HeadingSM","HeadingXS","BodyBL","BodyMD","BodySM","BodyXS","LinkBL","LinkMD","LinkSM","LinkXS"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/typography/index.ts"],"sourcesContent":["import {\n BodyBL,\n BodyMD,\n BodySM,\n BodyXS,\n HeadingLG,\n HeadingMD,\n HeadingSM,\n HeadingXL,\n HeadingXS,\n HeadingXXL,\n LinkBL,\n LinkMD,\n LinkSM,\n LinkXS,\n} from \"./typography\";\n\n// @catalog\n/**\n * A collection of pre-styled text components covering headings, body copy, and\n * hyperlinks.\n *\n * Use `Typography` sub-components to render consistently sized and weighted\n * text.\n *\n * Sub-components:\n * - Heading variants (`HeadingXXL` through `HeadingXS`) render semantic heading elements by default.\n * - Body variants (`BodyBL`, `BodyMD`, `BodySM`, `BodyXS`) render `p` elements.\n * - Link variants (`LinkBL`, `LinkMD`, `LinkSM`, `LinkXS`) render `a` elements .\n *\n * @remarks All text variants accept an `as` prop to\n * override the rendered element for semantic flexibility.\n */\nexport const Typography = {\n /** Renders the largest heading (`h1`). */\n HeadingXXL,\n /** Renders an extra-large heading (`h2`). */\n HeadingXL,\n /** Renders a large heading (`h3`). */\n HeadingLG,\n /** Renders a medium heading (`h4`). */\n HeadingMD,\n /** Renders a small heading (`h5`). */\n HeadingSM,\n /** Renders the smallest heading (`h6`). */\n HeadingXS,\n /** Renders baseline body text (`p`). */\n BodyBL,\n /** Renders medium body text (`p`). */\n BodyMD,\n /** Renders small body text (`p`). */\n BodySM,\n /** Renders extra-small body text (`p`). */\n BodyXS,\n /** Renders a baseline-size hyperlink (`a`). */\n LinkBL,\n /** Renders a medium-size hyperlink (`a`). */\n LinkMD,\n /** Renders a small-size hyperlink (`a`). */\n LinkSM,\n /** Renders an extra-small hyperlink (`a`). */\n LinkXS,\n};\n\nexport * from \"./types\";\n"],"names":["Typography","HeadingXXL","HeadingXL","HeadingLG","HeadingMD","HeadingSM","HeadingXS","BodyBL","BodyMD","BodySM","BodyXS","LinkBL","LinkMD","LinkSM","LinkXS"],"mappings":"wNAiCO,MAAMA,EAAa,CAEtBC,aAEAC,YAEAC,YAEAC,YAEAC,YAEAC,YAEAC,SAEAC,SAEAC,SAEAC,SAEAC,SAEAC,SAEAC,SAEAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/uneditable-section/index.ts"],"sourcesContent":["import { UneditableItemSection } from \"./item-section\";\nimport { UneditableSectionItem } from \"./section-item\";\nimport { UneditableSectionBase } from \"./uneditable-section\";\n\nexport * from \"./types\";\n\n/**\n * A read-only summary section for displaying labeled field values.\n *\n * Use `UneditableSection` to present a group of non-editable field–value pairs\n * in a responsive grid layout\n *\n * Sub-components:\n * - `UneditableSection.Item` — a standalone labeled read-only field with optional masking.\n * - `UneditableSection.ItemSection` — a standalone grid list for composing items.\n */\nexport const UneditableSection = Object.assign(UneditableSectionBase, {\n /**\n * A standalone grid list for rendering `UneditableSection.Item` elements\n * outside the full section wrapper.\n */\n ItemSection: UneditableItemSection,\n /** A standalone labeled read-only field with optional masking support. */\n Item: UneditableSectionItem,\n});\n"],"names":["UneditableSection","Object","assign","UneditableSectionBase","ItemSection","UneditableItemSection","Item","UneditableSectionItem"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/uneditable-section/index.ts"],"sourcesContent":["import { UneditableItemSection } from \"./item-section\";\nimport { UneditableSectionItem } from \"./section-item\";\nimport { UneditableSectionBase } from \"./uneditable-section\";\n\nexport * from \"./types\";\n\n// @catalog\n/**\n * A read-only summary section for displaying labeled field values.\n *\n * Use `UneditableSection` to present a group of non-editable field–value pairs\n * in a responsive grid layout\n *\n * Sub-components:\n * - `UneditableSection.Item` — a standalone labeled read-only field with optional masking.\n * - `UneditableSection.ItemSection` — a standalone grid list for composing items.\n */\nexport const UneditableSection = Object.assign(UneditableSectionBase, {\n /**\n * A standalone grid list for rendering `UneditableSection.Item` elements\n * outside the full section wrapper.\n */\n ItemSection: UneditableItemSection,\n /** A standalone labeled read-only field with optional masking support. */\n Item: UneditableSectionItem,\n});\n"],"names":["UneditableSection","Object","assign","UneditableSectionBase","ItemSection","UneditableItemSection","Item","UneditableSectionItem"],"mappings":"0LAiBaA,EAAoBC,OAAOC,OAAOC,EAAuB,CAKlEC,YAAaC,EAEbC,KAAMC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as a,jsx as e,Fragment as s}from"react/jsx-runtime";import{ExclamationTriangleIcon as
|
|
1
|
+
import{jsxs as a,jsx as e,Fragment as s}from"react/jsx-runtime";import{ExclamationTriangleIcon as r}from"@lifesg/react-icons/exclamation-triangle";import{EyeIcon as i}from"@lifesg/react-icons/eye";import{EyeSlashIcon as t}from"@lifesg/react-icons/eye-slash";import{useState as n,useEffect as l}from"react";import{Alert as m}from"../alert/alert.js";import{FormLabel as o}from"../form/form-label/form-label.js";import{VisuallyHidden as c}from"../shared/accessibility/index.js";import{ComponentLoadingSpinner as d}from"../shared/component-loading-spinner/component-loading-spinner.js";import{Typography as p}from"../typography/index.js";import{StringHelper as k}from"../util/string-helper.js";import{container as f,alert as h,clickable as g,iconContainer as u,spinner as y,loadingLabel as b,errorIcon as j,errorLabel as N,tryAgainLabel as x}from"./section-item.styles.js";const R=({label:R,value:T,displayWidth:v="full",maskState:w,maskLoadingState:B,maskChar:C="•",maskRange:L,unmaskRange:M,maskRegex:D,disableMaskUnmask:S,alert:U,maskTransformer:W,onMask:$,onUnmask:z,onTryAgain:A,fullWidth:E})=>{const[H,O]=n(w);l((()=>{O(w)}),[w]);const V=()=>{switch("fail"===B&&A&&A(),H){case"masked":z&&z(),O("unmasked");break;case"unmasked":$&&$(),O("masked")}},q=()=>"string"!=typeof T?T:"masked"===H?k.maskValue(T,{maskChar:C,maskRange:L,unmaskRange:M,maskRegex:D,maskTransformer:W}):T,F=()=>{switch(B){case"fail":return a(s,{children:[e(r,{className:j}),e("span",{className:N,children:"Error"}),a("span",{className:x,children:["Try again?",e(c,{children:R})]})]});case"loading":return a(s,{children:[e(d,{className:y}),e("span",{className:b,children:"Retrieving..."})]});default:return a(s,{children:[q(),e("div",{className:u,"aria-label":"masked"===H?`Display ${R}`:`Hide ${R}`,children:"masked"===H?e(i,{"data-testid":"masked-icon"}):e(t,{"data-testid":"unmasked-icon"})})]})}};return a("li",{"data-width":v,"data-full-width":E,className:f,children:[e(o,{children:R}),"string"!=typeof T?T:H?S?e(p.BodyBL,{children:q()}):e("button",{className:g,"data-testid":"clickable-label",onClick:V,"aria-busy":"loading"===B,"aria-live":"polite",type:"button","aria-label":k.getMaskedDescription(T,H,L),children:F()}):e(p.BodyBL,{children:T}),U&&e(m,Object.assign({className:h,sizeType:"small"},U))]})};export{R as UneditableSectionItem};
|
|
2
2
|
//# sourceMappingURL=section-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-item.js","sources":["../../src/uneditable-section/section-item.tsx"],"sourcesContent":["import { ExclamationTriangleIcon } from \"@lifesg/react-icons/exclamation-triangle\";\nimport { EyeIcon } from \"@lifesg/react-icons/eye\";\nimport { EyeSlashIcon } from \"@lifesg/react-icons/eye-slash\";\nimport { useEffect, useState } from \"react\";\n\nimport { Alert } from \"../alert\";\nimport { FormLabel } from \"../form/form-label\";\nimport { VisuallyHidden } from \"../shared/accessibility\";\nimport { ComponentLoadingSpinner } from \"../shared/component-loading-spinner\";\nimport { Typography } from \"../typography\";\nimport { StringHelper } from \"../util/string-helper\";\nimport * as styles from \"./section-item.styles\";\nimport type {\n UneditableSectionItemMaskState,\n UneditableSectionItemProps,\n} from \"./types\";\n\nexport interface UneditableSectionItemComponentProps\n extends UneditableSectionItemProps {\n onMask?: (() => void) | undefined;\n onUnmask?: (() => void) | undefined;\n onTryAgain?: (() => void) | undefined;\n fullWidth?: boolean | undefined;\n}\n\nexport const UneditableSectionItem = ({\n label,\n value,\n displayWidth = \"full\",\n maskState,\n maskLoadingState,\n maskChar = \"•\",\n maskRange,\n unmaskRange,\n maskRegex,\n disableMaskUnmask,\n alert,\n maskTransformer,\n onMask,\n onUnmask,\n onTryAgain,\n fullWidth,\n}: UneditableSectionItemComponentProps) => {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const [displayMaskState, setMaskState] = useState<\n UneditableSectionItemMaskState | undefined\n >(maskState);\n\n // =========================================================================\n // EFFECTS\n // =========================================================================\n useEffect(() => {\n setMaskState(maskState);\n }, [maskState]);\n\n // =========================================================================\n // EVENT HANDLERS\n // =========================================================================\n const handleClickableClick = () => {\n if (maskLoadingState === \"fail\") {\n if (onTryAgain) onTryAgain();\n }\n\n switch (displayMaskState) {\n case \"masked\": {\n if (onUnmask) {\n onUnmask();\n }\n setMaskState(\"unmasked\");\n break;\n }\n case \"unmasked\": {\n if (onMask) {\n onMask();\n }\n setMaskState(\"masked\");\n break;\n }\n }\n };\n\n // =========================================================================\n // HELPER FUNCTIONS\n // =========================================================================\n const getValue = () => {\n if (typeof value !== \"string\") {\n return value;\n }\n\n return displayMaskState === \"masked\"\n ? StringHelper.maskValue(value, {\n maskChar,\n maskRange,\n unmaskRange,\n maskRegex,\n maskTransformer,\n })\n : value;\n };\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n const renderMaskingState = () => {\n switch (maskLoadingState) {\n case \"fail\":\n return (\n <>\n <ExclamationTriangleIcon className={styles.errorIcon} />\n <span className={styles.errorLabel}>Error</span>\n <span className={styles.tryAgainLabel}>\n Try again?\n <VisuallyHidden>{label}</VisuallyHidden>\n </span>\n </>\n );\n case \"loading\":\n return (\n <>\n <ComponentLoadingSpinner className={styles.spinner} />\n <span className={styles.loadingLabel}>\n Retrieving...\n </span>\n </>\n );\n default:\n return (\n <>\n {getValue()}\n <div\n className={styles.iconContainer}\n aria-label={\n displayMaskState === \"masked\"\n ? `Display ${label}`\n : `Hide ${label}`\n }\n >\n {displayMaskState === \"masked\" ? (\n <EyeIcon data-testid=\"masked-icon\" />\n ) : (\n <EyeSlashIcon data-testid=\"unmasked-icon\" />\n )}\n </div>\n </>\n );\n }\n };\n\n const renderContent = () => {\n if (typeof value !== \"string\") {\n return value;\n }\n\n if (!displayMaskState) {\n return <Typography.BodyBL>{value}</Typography.BodyBL>;\n }\n\n if (disableMaskUnmask) {\n return <Typography.BodyBL>{getValue()}</Typography.BodyBL>;\n }\n\n return (\n <button\n className={styles.clickable}\n data-testid=\"clickable-label\"\n onClick={handleClickableClick}\n aria-busy={maskLoadingState === \"loading\"}\n aria-live=\"polite\"\n type=\"button\"\n aria-label={StringHelper.getMaskedDescription(\n value,\n displayMaskState,\n maskRange\n )}\n >\n {renderMaskingState()}\n </button>\n );\n };\n\n return (\n <li\n data-width={displayWidth}\n data-full-width={fullWidth}\n className={styles.container}\n >\n <FormLabel>{label}</FormLabel>\n {renderContent()}\n {alert && (\n <Alert className={styles.alert} sizeType=\"small\" {...alert} />\n )}\n </li>\n );\n};\n"],"names":["UneditableSectionItem","label","value","displayWidth","maskState","maskLoadingState","maskChar","maskRange","unmaskRange","maskRegex","disableMaskUnmask","alert","maskTransformer","onMask","onUnmask","onTryAgain","fullWidth","displayMaskState","setMaskState","useState","useEffect","handleClickableClick","getValue","StringHelper","maskValue","renderMaskingState","_jsxs","_Fragment","children","_jsx","ExclamationTriangleIcon","className","styles.errorIcon","styles.errorLabel","styles.tryAgainLabel","VisuallyHidden","ComponentLoadingSpinner","styles.spinner","styles.loadingLabel","styles.iconContainer","EyeIcon","EyeSlashIcon","styles.container","FormLabel","Typography","BodyBL","styles.clickable","onClick","type","getMaskedDescription","Alert","styles.alert","sizeType"],"mappings":"
|
|
1
|
+
{"version":3,"file":"section-item.js","sources":["../../src/uneditable-section/section-item.tsx"],"sourcesContent":["import { ExclamationTriangleIcon } from \"@lifesg/react-icons/exclamation-triangle\";\nimport { EyeIcon } from \"@lifesg/react-icons/eye\";\nimport { EyeSlashIcon } from \"@lifesg/react-icons/eye-slash\";\nimport { useEffect, useState } from \"react\";\n\nimport { Alert } from \"../alert\";\nimport { FormLabel } from \"../form/form-label\";\nimport { VisuallyHidden } from \"../shared/accessibility\";\nimport { ComponentLoadingSpinner } from \"../shared/component-loading-spinner\";\nimport { Typography } from \"../typography\";\nimport { StringHelper } from \"../util/string-helper\";\nimport * as styles from \"./section-item.styles\";\nimport type {\n UneditableSectionItemMaskState,\n UneditableSectionItemProps,\n} from \"./types\";\n\nexport interface UneditableSectionItemComponentProps\n extends UneditableSectionItemProps {\n onMask?: (() => void) | undefined;\n onUnmask?: (() => void) | undefined;\n onTryAgain?: (() => void) | undefined;\n fullWidth?: boolean | undefined;\n}\n\nexport const UneditableSectionItem = ({\n label,\n value,\n displayWidth = \"full\",\n maskState,\n maskLoadingState,\n maskChar = \"•\",\n maskRange,\n unmaskRange,\n maskRegex,\n disableMaskUnmask,\n alert,\n maskTransformer,\n onMask,\n onUnmask,\n onTryAgain,\n fullWidth,\n}: UneditableSectionItemComponentProps) => {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const [displayMaskState, setMaskState] = useState<\n UneditableSectionItemMaskState | undefined\n >(maskState);\n\n // =========================================================================\n // EFFECTS\n // =========================================================================\n useEffect(() => {\n setMaskState(maskState);\n }, [maskState]);\n\n // =========================================================================\n // EVENT HANDLERS\n // =========================================================================\n const handleClickableClick = () => {\n if (maskLoadingState === \"fail\") {\n if (onTryAgain) onTryAgain();\n }\n\n switch (displayMaskState) {\n case \"masked\": {\n if (onUnmask) {\n onUnmask();\n }\n setMaskState(\"unmasked\");\n break;\n }\n case \"unmasked\": {\n if (onMask) {\n onMask();\n }\n setMaskState(\"masked\");\n break;\n }\n }\n };\n\n // =========================================================================\n // HELPER FUNCTIONS\n // =========================================================================\n const getValue = () => {\n if (typeof value !== \"string\") {\n return value;\n }\n\n return displayMaskState === \"masked\"\n ? StringHelper.maskValue(value, {\n maskChar,\n maskRange,\n unmaskRange,\n maskRegex,\n maskTransformer,\n })\n : value;\n };\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n const renderMaskingState = () => {\n switch (maskLoadingState) {\n case \"fail\":\n return (\n <>\n <ExclamationTriangleIcon className={styles.errorIcon} />\n <span className={styles.errorLabel}>Error</span>\n <span className={styles.tryAgainLabel}>\n Try again?\n <VisuallyHidden>{label}</VisuallyHidden>\n </span>\n </>\n );\n case \"loading\":\n return (\n <>\n <ComponentLoadingSpinner className={styles.spinner} />\n <span className={styles.loadingLabel}>\n Retrieving...\n </span>\n </>\n );\n default:\n return (\n <>\n {getValue()}\n <div\n className={styles.iconContainer}\n aria-label={\n displayMaskState === \"masked\"\n ? `Display ${label}`\n : `Hide ${label}`\n }\n >\n {displayMaskState === \"masked\" ? (\n <EyeIcon data-testid=\"masked-icon\" />\n ) : (\n <EyeSlashIcon data-testid=\"unmasked-icon\" />\n )}\n </div>\n </>\n );\n }\n };\n\n const renderContent = () => {\n if (typeof value !== \"string\") {\n return value;\n }\n\n if (!displayMaskState) {\n return <Typography.BodyBL>{value}</Typography.BodyBL>;\n }\n\n if (disableMaskUnmask) {\n return <Typography.BodyBL>{getValue()}</Typography.BodyBL>;\n }\n\n return (\n <button\n className={styles.clickable}\n data-testid=\"clickable-label\"\n onClick={handleClickableClick}\n aria-busy={maskLoadingState === \"loading\"}\n aria-live=\"polite\"\n type=\"button\"\n aria-label={StringHelper.getMaskedDescription(\n value,\n displayMaskState,\n maskRange\n )}\n >\n {renderMaskingState()}\n </button>\n );\n };\n\n return (\n <li\n data-width={displayWidth}\n data-full-width={fullWidth}\n className={styles.container}\n >\n <FormLabel>{label}</FormLabel>\n {renderContent()}\n {alert && (\n <Alert className={styles.alert} sizeType=\"small\" {...alert} />\n )}\n </li>\n );\n};\n"],"names":["UneditableSectionItem","label","value","displayWidth","maskState","maskLoadingState","maskChar","maskRange","unmaskRange","maskRegex","disableMaskUnmask","alert","maskTransformer","onMask","onUnmask","onTryAgain","fullWidth","displayMaskState","setMaskState","useState","useEffect","handleClickableClick","getValue","StringHelper","maskValue","renderMaskingState","_jsxs","_Fragment","children","_jsx","ExclamationTriangleIcon","className","styles.errorIcon","styles.errorLabel","styles.tryAgainLabel","VisuallyHidden","ComponentLoadingSpinner","styles.spinner","styles.loadingLabel","styles.iconContainer","EyeIcon","EyeSlashIcon","styles.container","FormLabel","Typography","BodyBL","styles.clickable","onClick","type","getMaskedDescription","Alert","styles.alert","sizeType"],"mappings":"q2BAyBO,MAAMA,EAAwB,EACjCC,QACAC,QACAC,eAAe,OACfC,YACAC,mBACAC,WAAW,IACXC,YACAC,cACAC,YACAC,oBAAiBC,MACjBA,EACAC,kBACAC,SACAC,WACAC,aACAC,gBAKA,MAAOC,EAAkBC,GAAgBC,EAEvCf,GAKFgB,GAAU,KACNF,EAAad,EAAU,GACxB,CAACA,IAKJ,MAAMiB,EAAuB,KAKzB,OAJyB,SAArBhB,GACIU,GAAYA,IAGZE,GACJ,IAAK,SACGH,GACAA,IAEJI,EAAa,YACb,MAEJ,IAAK,WACGL,GACAA,IAEJK,EAAa,YASnBI,EAAW,IACQ,iBAAVpB,EACAA,EAGiB,WAArBe,EACDM,EAAaC,UAAUtB,EAAO,CAC1BI,WACAC,YACAC,cACAC,YACAG,oBAEJV,EAMJuB,EAAqB,KACvB,OAAQpB,GACJ,IAAK,OACD,OACIqB,EAAAC,EAAA,CAAAC,SAAA,CACIC,EAACC,GAAwBC,UAAWC,IACpCH,EAAA,OAAA,CAAME,UAAWE,EAAiBL,SAAA,UAClCF,EAAA,OAAA,CAAMK,UAAWG,EAAoBN,SAAA,CAAA,aAEjCC,EAACM,YAAgBlC,UAIjC,IAAK,UACD,OACIyB,eACIG,EAACO,GAAwBL,UAAWM,IACpCR,EAAA,OAAA,CAAME,UAAWO,EAAmBV,SAAA,qBAKhD,QACI,OACIF,EAAAC,EAAA,CAAAC,SAAA,CACKN,IACDO,EAAA,MAAA,CACIE,UAAWQ,EAAoB,aAEN,WAArBtB,EACM,WAAWhB,IACX,QAAQA,IAAO2B,SAGH,WAArBX,EACGY,EAACW,EAAO,CAAA,cAAa,gBAErBX,EAACY,EAAY,CAAA,cAAa,yBAwCtD,OACIf,EAAA,KAAA,CAAA,aACgBvB,oBACKa,EACjBe,UAAWW,EAAgBd,SAAA,CAE3BC,EAACc,EAAS,CAAAf,SAAE3B,IArCK,iBAAVC,EACAA,EAGNe,EAIDP,EACOmB,EAACe,EAAWC,iBAAQvB,MAI3BO,EAAA,SAAA,CACIE,UAAWe,EAAgB,cACf,kBACZC,QAAS1B,cACuB,YAArBhB,EAA8B,YAC/B,SACV2C,KAAK,SAAQ,aACDzB,EAAa0B,qBACrB/C,EACAe,EACAV,GACHqB,SAEAH,MArBEI,EAACe,EAAWC,OAAM,CAAAjB,SAAE1B,IAkC1BS,GACGkB,EAACqB,iBAAMnB,UAAWoB,EAAcC,SAAS,SAAYzC,MAExD"}
|
|
@@ -8,7 +8,7 @@ export type UneditableSectionItemMaskState = "masked" | "unmasked";
|
|
|
8
8
|
/** Async loading state during a mask or unmask action. */
|
|
9
9
|
export type UneditableSectionItemMaskLoadingState = "loading" | "fail";
|
|
10
10
|
/**
|
|
11
|
-
* Props for `UneditableSection` component.
|
|
11
|
+
* Props for the `UneditableSection.Item` sub-component.
|
|
12
12
|
*/
|
|
13
13
|
export interface UneditableSectionItemProps extends MaskAttributeProps {
|
|
14
14
|
id?: string | undefined;
|
|
@@ -42,7 +42,7 @@ export interface UneditableSectionItemProps extends MaskAttributeProps {
|
|
|
42
42
|
alert?: AlertProps | undefined;
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
|
-
* Props for `UneditableSection.ItemSection
|
|
45
|
+
* Props for the `UneditableSection.ItemSection` sub-component.
|
|
46
46
|
*/
|
|
47
47
|
export interface UneditableSectionItemSectionProps extends React.HTMLAttributes<HTMLUListElement> {
|
|
48
48
|
/** Stretches every child item to fill the full width of the grid. */
|