@gunkin/uiify 0.0.19-alpha → 0.0.22-alpha
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/agents/components.md +14 -1
- package/agents/index.md +32 -1
- package/agents/reference/components/alert.md +44 -0
- package/agents/reference/components/aspect-ratio.md +26 -0
- package/agents/reference/components/avatar.md +32 -0
- package/agents/reference/components/badge.md +31 -0
- package/agents/reference/components/breadcrumb.md +11 -1
- package/agents/reference/components/button.md +4 -4
- package/agents/reference/components/candle-chart.md +20 -1
- package/agents/reference/components/card.md +24 -0
- package/agents/reference/components/carousel.md +3 -2
- package/agents/reference/components/checkbox.md +2 -0
- package/agents/reference/components/combobox.md +2 -1
- package/agents/reference/components/date-picker.md +23 -0
- package/agents/reference/components/description-list.md +38 -0
- package/agents/reference/components/drawer.md +8 -1
- package/agents/reference/components/dropdown-menu.md +1 -1
- package/agents/reference/components/empty.md +45 -0
- package/agents/reference/components/fieldset.md +31 -0
- package/agents/reference/components/file-upload.md +12 -1
- package/agents/reference/components/form-error-summary.md +33 -0
- package/agents/reference/components/input-group.md +33 -0
- package/agents/reference/components/item.md +52 -0
- package/agents/reference/components/line-chart.md +1 -0
- package/agents/reference/components/modal.md +8 -1
- package/agents/reference/components/number-field.md +14 -3
- package/agents/reference/components/pagination.md +22 -1
- package/agents/reference/components/progress.md +16 -0
- package/agents/reference/components/slider.md +9 -1
- package/agents/reference/components/spinner.md +8 -1
- package/agents/reference/components/toast.md +14 -1
- package/dist/components/alert/Alert.d.ts +15 -0
- package/dist/components/alert/Alert.d.ts.map +1 -0
- package/dist/components/alert/Alert.js +61 -0
- package/dist/components/alert/Alert.js.map +1 -0
- package/dist/components/alert/index.d.ts +3 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +7 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/alert/types.d.ts +20 -0
- package/dist/components/alert/types.d.ts.map +1 -0
- package/dist/components/alert/types.js +1 -0
- package/dist/components/alert/types.js.map +1 -0
- package/dist/components/alert.d.ts +1 -0
- package/dist/components/alert.js +1 -0
- package/dist/components/aspect-ratio/AspectRatio.d.ts +7 -0
- package/dist/components/aspect-ratio/AspectRatio.d.ts.map +1 -0
- package/dist/components/aspect-ratio/AspectRatio.js +26 -0
- package/dist/components/aspect-ratio/AspectRatio.js.map +1 -0
- package/dist/components/aspect-ratio/index.d.ts +3 -0
- package/dist/components/aspect-ratio/index.d.ts.map +1 -0
- package/dist/components/aspect-ratio/index.js +5 -0
- package/dist/components/aspect-ratio/index.js.map +1 -0
- package/dist/components/aspect-ratio/types.d.ts +9 -0
- package/dist/components/aspect-ratio/types.d.ts.map +1 -0
- package/dist/components/aspect-ratio/types.js +1 -0
- package/dist/components/aspect-ratio/types.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +1 -0
- package/dist/components/aspect-ratio.js +1 -0
- package/dist/components/avatar/Avatar.d.ts +7 -0
- package/dist/components/avatar/Avatar.d.ts.map +1 -0
- package/dist/components/avatar/Avatar.js +24 -0
- package/dist/components/avatar/Avatar.js.map +1 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +5 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/avatar/types.d.ts +12 -0
- package/dist/components/avatar/types.d.ts.map +1 -0
- package/dist/components/avatar/types.js +1 -0
- package/dist/components/avatar/types.js.map +1 -0
- package/dist/components/avatar.d.ts +1 -0
- package/dist/components/avatar.js +1 -0
- package/dist/components/badge/Badge.d.ts +7 -0
- package/dist/components/badge/Badge.d.ts.map +1 -0
- package/dist/components/badge/Badge.js +21 -0
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +5 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/badge/types.d.ts +11 -0
- package/dist/components/badge/types.d.ts.map +1 -0
- package/dist/components/badge/types.js +1 -0
- package/dist/components/badge/types.js.map +1 -0
- package/dist/components/badge.d.ts +1 -0
- package/dist/components/badge.js +1 -0
- package/dist/components/behavior.css +21 -9
- package/dist/components/behavior.css.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.js +21 -4
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/index.d.ts +1 -1
- package/dist/components/breadcrumb/index.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js.map +1 -1
- package/dist/components/breadcrumb/types.d.ts +7 -0
- package/dist/components/breadcrumb/types.d.ts.map +1 -1
- package/dist/components/button/types.d.ts +4 -0
- package/dist/components/button/types.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.js +81 -46
- package/dist/components/candle-chart/CandleChart.js.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.js +5 -0
- package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
- package/dist/components/candle-chart/index.d.ts +1 -1
- package/dist/components/candle-chart/index.d.ts.map +1 -1
- package/dist/components/candle-chart/index.js.map +1 -1
- package/dist/components/candle-chart/types.d.ts +17 -0
- package/dist/components/candle-chart/types.d.ts.map +1 -1
- package/dist/components/card/Card.d.ts +7 -0
- package/dist/components/card/Card.d.ts.map +1 -0
- package/dist/components/card/Card.js +16 -0
- package/dist/components/card/Card.js.map +1 -0
- package/dist/components/card/index.d.ts +3 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/card/index.js +5 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/card/types.d.ts +7 -0
- package/dist/components/card/types.d.ts.map +1 -0
- package/dist/components/card/types.js +1 -0
- package/dist/components/card/types.js.map +1 -0
- package/dist/components/card.d.ts +1 -0
- package/dist/components/card.js +1 -0
- package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.js +20 -3
- package/dist/components/carousel/CarouselMarkup.js.map +1 -1
- package/dist/components/carousel/carousel-markup.js +2 -2
- package/dist/components/carousel/carousel-markup.js.map +1 -1
- package/dist/components/carousel/types.d.ts +3 -2
- package/dist/components/carousel/types.d.ts.map +1 -1
- package/dist/components/checkbox/types.d.ts +2 -0
- package/dist/components/checkbox/types.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +37 -23
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/combobox-store.d.ts.map +1 -1
- package/dist/components/combobox/combobox-store.js +5 -2
- package/dist/components/combobox/combobox-store.js.map +1 -1
- package/dist/components/combobox/types.d.ts +2 -3
- package/dist/components/combobox/types.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.js +25 -5
- package/dist/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/components/date-picker/DatePicker.d.ts +7 -0
- package/dist/components/date-picker/DatePicker.d.ts.map +1 -0
- package/dist/components/date-picker/DatePicker.js +19 -0
- package/dist/components/date-picker/DatePicker.js.map +1 -0
- package/dist/components/date-picker/index.d.ts +3 -0
- package/dist/components/date-picker/index.d.ts.map +1 -0
- package/dist/components/date-picker/index.js +5 -0
- package/dist/components/date-picker/index.js.map +1 -0
- package/dist/components/date-picker/types.d.ts +5 -0
- package/dist/components/date-picker/types.d.ts.map +1 -0
- package/dist/components/date-picker/types.js +1 -0
- package/dist/components/date-picker/types.js.map +1 -0
- package/dist/components/date-picker.d.ts +1 -0
- package/dist/components/date-picker.js +1 -0
- package/dist/components/description-list/DescriptionList.d.ts +15 -0
- package/dist/components/description-list/DescriptionList.d.ts.map +1 -0
- package/dist/components/description-list/DescriptionList.js +48 -0
- package/dist/components/description-list/DescriptionList.js.map +1 -0
- package/dist/components/description-list/index.d.ts +3 -0
- package/dist/components/description-list/index.d.ts.map +1 -0
- package/dist/components/description-list/index.js +7 -0
- package/dist/components/description-list/index.js.map +1 -0
- package/dist/components/description-list/types.d.ts +15 -0
- package/dist/components/description-list/types.d.ts.map +1 -0
- package/dist/components/description-list/types.js +1 -0
- package/dist/components/description-list/types.js.map +1 -0
- package/dist/components/description-list.d.ts +1 -0
- package/dist/components/description-list.js +1 -0
- package/dist/components/drawer/DrawerNative.d.ts +1 -1
- package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
- package/dist/components/drawer/DrawerNative.js +5 -2
- package/dist/components/drawer/DrawerNative.js.map +1 -1
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer/index.d.ts.map +1 -1
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/drawer/types.d.ts +4 -0
- package/dist/components/drawer/types.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +31 -15
- package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.js +7 -5
- package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
- package/dist/components/dropdown-menu/types.d.ts +1 -1
- package/dist/components/dropdown-menu/types.d.ts.map +1 -1
- package/dist/components/empty/Empty.d.ts +19 -0
- package/dist/components/empty/Empty.d.ts.map +1 -0
- package/dist/components/empty/Empty.js +56 -0
- package/dist/components/empty/Empty.js.map +1 -0
- package/dist/components/empty/index.d.ts +3 -0
- package/dist/components/empty/index.d.ts.map +1 -0
- package/dist/components/empty/index.js +8 -0
- package/dist/components/empty/index.js.map +1 -0
- package/dist/components/empty/types.d.ts +19 -0
- package/dist/components/empty/types.d.ts.map +1 -0
- package/dist/components/empty/types.js +1 -0
- package/dist/components/empty/types.js.map +1 -0
- package/dist/components/empty.d.ts +1 -0
- package/dist/components/empty.js +1 -0
- package/dist/components/fieldset/Fieldset.d.ts +11 -0
- package/dist/components/fieldset/Fieldset.d.ts.map +1 -0
- package/dist/components/fieldset/Fieldset.js +38 -0
- package/dist/components/fieldset/Fieldset.js.map +1 -0
- package/dist/components/fieldset/index.d.ts +3 -0
- package/dist/components/fieldset/index.d.ts.map +1 -0
- package/dist/components/fieldset/index.js +6 -0
- package/dist/components/fieldset/index.js.map +1 -0
- package/dist/components/fieldset/types.d.ts +11 -0
- package/dist/components/fieldset/types.d.ts.map +1 -0
- package/dist/components/fieldset/types.js +1 -0
- package/dist/components/fieldset/types.js.map +1 -0
- package/dist/components/fieldset.d.ts +1 -0
- package/dist/components/fieldset.js +1 -0
- package/dist/components/file-upload/FileUpload.d.ts.map +1 -1
- package/dist/components/file-upload/FileUpload.js +11 -4
- package/dist/components/file-upload/FileUpload.js.map +1 -1
- package/dist/components/file-upload/FileUploadRoot.d.ts +1 -1
- package/dist/components/file-upload/FileUploadRoot.d.ts.map +1 -1
- package/dist/components/file-upload/FileUploadRoot.js +9 -0
- package/dist/components/file-upload/FileUploadRoot.js.map +1 -1
- package/dist/components/file-upload/index.d.ts +1 -1
- package/dist/components/file-upload/index.d.ts.map +1 -1
- package/dist/components/file-upload/index.js.map +1 -1
- package/dist/components/file-upload/types.d.ts +8 -0
- package/dist/components/file-upload/types.d.ts.map +1 -1
- package/dist/components/form-error-summary/FormErrorSummary.d.ts +7 -0
- package/dist/components/form-error-summary/FormErrorSummary.d.ts.map +1 -0
- package/dist/components/form-error-summary/FormErrorSummary.js +25 -0
- package/dist/components/form-error-summary/FormErrorSummary.js.map +1 -0
- package/dist/components/form-error-summary/index.d.ts +3 -0
- package/dist/components/form-error-summary/index.d.ts.map +1 -0
- package/dist/components/form-error-summary/index.js +5 -0
- package/dist/components/form-error-summary/index.js.map +1 -0
- package/dist/components/form-error-summary/types.d.ts +12 -0
- package/dist/components/form-error-summary/types.d.ts.map +1 -0
- package/dist/components/form-error-summary/types.js +1 -0
- package/dist/components/form-error-summary/types.js.map +1 -0
- package/dist/components/form-error-summary.d.ts +1 -0
- package/dist/components/form-error-summary.js +1 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +13 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/input-group/InputGroup.d.ts +5 -0
- package/dist/components/input-group/InputGroup.d.ts.map +1 -0
- package/dist/components/input-group/InputGroup.js +37 -0
- package/dist/components/input-group/InputGroup.js.map +1 -0
- package/dist/components/input-group/index.d.ts +3 -0
- package/dist/components/input-group/index.d.ts.map +1 -0
- package/dist/components/input-group/index.js +6 -0
- package/dist/components/input-group/index.js.map +1 -0
- package/dist/components/input-group/types.d.ts +12 -0
- package/dist/components/input-group/types.d.ts.map +1 -0
- package/dist/components/input-group/types.js +1 -0
- package/dist/components/input-group/types.js.map +1 -0
- package/dist/components/input-group.d.ts +1 -0
- package/dist/components/input-group.js +1 -0
- package/dist/components/internal/native-check-control/NativeCheckControl.d.ts.map +1 -1
- package/dist/components/internal/native-check-control/NativeCheckControl.js +4 -0
- package/dist/components/internal/native-check-control/NativeCheckControl.js.map +1 -1
- package/dist/components/internal/native-check-control/types.d.ts +2 -0
- package/dist/components/internal/native-check-control/types.d.ts.map +1 -1
- package/dist/components/item/Item.d.ts +23 -0
- package/dist/components/item/Item.d.ts.map +1 -0
- package/dist/components/item/Item.js +64 -0
- package/dist/components/item/Item.js.map +1 -0
- package/dist/components/item/index.d.ts +3 -0
- package/dist/components/item/index.d.ts.map +1 -0
- package/dist/components/item/index.js +9 -0
- package/dist/components/item/index.js.map +1 -0
- package/dist/components/item/types.d.ts +23 -0
- package/dist/components/item/types.d.ts.map +1 -0
- package/dist/components/item/types.js +1 -0
- package/dist/components/item/types.js.map +1 -0
- package/dist/components/item.d.ts +1 -0
- package/dist/components/item.js +1 -0
- package/dist/components/line-chart/LineChart.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.js +3 -2
- package/dist/components/line-chart/LineChart.js.map +1 -1
- package/dist/components/line-chart/line-chart-geometry.d.ts +2 -2
- package/dist/components/line-chart/line-chart-geometry.d.ts.map +1 -1
- package/dist/components/line-chart/line-chart-geometry.js +6 -6
- package/dist/components/line-chart/line-chart-geometry.js.map +1 -1
- package/dist/components/line-chart/types.d.ts +2 -0
- package/dist/components/line-chart/types.d.ts.map +1 -1
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +5 -2
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/index.d.ts +1 -1
- package/dist/components/modal/index.d.ts.map +1 -1
- package/dist/components/modal/index.js.map +1 -1
- package/dist/components/modal/types.d.ts +4 -0
- package/dist/components/modal/types.d.ts.map +1 -1
- package/dist/components/number-field/NumberField.d.ts +1 -1
- package/dist/components/number-field/NumberField.d.ts.map +1 -1
- package/dist/components/number-field/NumberField.js +25 -5
- package/dist/components/number-field/NumberField.js.map +1 -1
- package/dist/components/number-field/format.d.ts +1 -1
- package/dist/components/number-field/format.d.ts.map +1 -1
- package/dist/components/number-field/format.js +32 -7
- package/dist/components/number-field/format.js.map +1 -1
- package/dist/components/number-field/index.d.ts +1 -1
- package/dist/components/number-field/index.d.ts.map +1 -1
- package/dist/components/number-field/index.js.map +1 -1
- package/dist/components/number-field/types.d.ts +11 -2
- package/dist/components/number-field/types.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.js +2 -0
- package/dist/components/otp-input/OtpInput.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +93 -29
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/PaginationShell.d.ts +2 -1
- package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
- package/dist/components/pagination/PaginationShell.js +44 -9
- package/dist/components/pagination/PaginationShell.js.map +1 -1
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.d.ts.map +1 -1
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/pagination/types.d.ts +18 -0
- package/dist/components/pagination/types.d.ts.map +1 -1
- package/dist/components/progress/Progress.d.ts +7 -0
- package/dist/components/progress/Progress.d.ts.map +1 -0
- package/dist/components/progress/Progress.js +9 -0
- package/dist/components/progress/Progress.js.map +1 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/index.d.ts.map +1 -0
- package/dist/components/progress/index.js +5 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/progress/types.d.ts +3 -0
- package/dist/components/progress/types.d.ts.map +1 -0
- package/dist/components/progress/types.js +1 -0
- package/dist/components/progress/types.js.map +1 -0
- package/dist/components/progress.d.ts +1 -0
- package/dist/components/progress.js +1 -0
- package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
- package/dist/components/slider/client/SliderClient.js +11 -2
- package/dist/components/slider/client/SliderClient.js.map +1 -1
- package/dist/components/slider/index.d.ts +1 -1
- package/dist/components/slider/index.d.ts.map +1 -1
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/slider/types.d.ts +5 -0
- package/dist/components/slider/types.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.js +6 -3
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/spinner/index.d.ts +1 -1
- package/dist/components/spinner/index.d.ts.map +1 -1
- package/dist/components/spinner/index.js.map +1 -1
- package/dist/components/spinner/types.d.ts +4 -0
- package/dist/components/spinner/types.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.js +2 -0
- package/dist/components/tags-input/TagsInput.js.map +1 -1
- package/dist/components/toast/Toast.d.ts +1 -1
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +33 -29
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toast/ToastElements.d.ts.map +1 -1
- package/dist/components/toast/ToastElements.js +24 -12
- package/dist/components/toast/ToastElements.js.map +1 -1
- package/dist/components/toast/index.d.ts +1 -1
- package/dist/components/toast/index.d.ts.map +1 -1
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/toast/types.d.ts +10 -0
- package/dist/components/toast/types.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.d.ts +2 -2
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.js +8 -4
- package/dist/components/toolbar/Toolbar.js.map +1 -1
- package/dist/core/direction.d.ts +2 -0
- package/dist/core/direction.d.ts.map +1 -1
- package/dist/core/direction.js +8 -3
- package/dist/core/direction.js.map +1 -1
- package/dist/core/dismissable-layer-registry.d.ts.map +1 -1
- package/dist/core/dismissable-layer-registry.js +3 -1
- package/dist/core/dismissable-layer-registry.js.map +1 -1
- package/dist/core/format-label.d.ts +2 -0
- package/dist/core/format-label.d.ts.map +1 -0
- package/dist/core/format-label.js +13 -0
- package/dist/core/format-label.js.map +1 -0
- package/dist/core/ime.d.ts +16 -0
- package/dist/core/ime.d.ts.map +1 -0
- package/dist/core/ime.js +7 -0
- package/dist/core/ime.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/roving-focus-store.d.ts +3 -2
- package/dist/core/roving-focus-store.d.ts.map +1 -1
- package/dist/core/roving-focus-store.js +5 -3
- package/dist/core/roving-focus-store.js.map +1 -1
- package/dist/core/roving-focus.d.ts.map +1 -1
- package/dist/core/roving-focus.js +10 -5
- package/dist/core/roving-focus.js.map +1 -1
- package/dist/core/text-direction.d.ts +7 -0
- package/dist/core/text-direction.d.ts.map +1 -0
- package/dist/core/text-direction.js +7 -0
- package/dist/core/text-direction.js.map +1 -0
- package/dist/styles/index.css +1 -1
- package/package.json +2 -1
- package/skills/uiify/SKILL.md +43 -34
- package/skills/uiify/references/elements/alert-modal.md +5 -5
- package/skills/uiify/references/elements/aspect-ratio.md +59 -0
- package/skills/uiify/references/elements/avatar.md +10 -19
- package/skills/uiify/references/elements/badge.md +11 -19
- package/skills/uiify/references/elements/button.md +5 -5
- package/skills/uiify/references/elements/candle-chart.md +2 -0
- package/skills/uiify/references/elements/card.md +10 -21
- package/skills/uiify/references/elements/carousel.md +2 -0
- package/skills/uiify/references/elements/checkbox.md +1 -1
- package/skills/uiify/references/elements/date-picker.md +11 -15
- package/skills/uiify/references/elements/description-list.md +38 -0
- package/skills/uiify/references/elements/empty-state.md +12 -23
- package/skills/uiify/references/elements/field.md +2 -2
- package/skills/uiify/references/elements/fieldset.md +39 -0
- package/skills/uiify/references/elements/form-error-summary.md +39 -0
- package/skills/uiify/references/elements/inline-alert.md +11 -19
- package/skills/uiify/references/elements/input-group.md +39 -0
- package/skills/uiify/references/elements/item.md +39 -0
- package/skills/uiify/references/elements/modal.md +1 -1
- package/skills/uiify/references/elements/number-field.md +2 -0
- package/skills/uiify/references/elements/pagination.md +2 -0
- package/skills/uiify/references/elements/progress-bar.md +11 -20
- package/skills/uiify/references/elements/select.md +1 -1
- package/skills/uiify/references/examples/alert-confirmation.md +21 -9
- package/skills/uiify/references/examples/field-validation.md +2 -2
- package/skills/uiify/references/examples/select-basic.md +1 -1
- package/skills/uiify/references/examples/table-controls.md +3 -2
- package/skills/uiify/references/guides/i18n.md +21 -0
- package/skills/uiify/references/guides/verification.md +9 -0
- package/skills/uiify/scripts/static.mjs +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/input-group/index.ts"],"sourcesContent":["export { InputGroup, InputGroupAddon } from \"./InputGroup.js\";\nexport type {\n InputGroupAddonOwnProps,\n InputGroupAddonProps,\n InputGroupRootOwnProps,\n InputGroupRootProps,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,YAAY,uBAAuB;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ElementType, ReactNode } from "react";
|
|
2
|
+
import type { RenderableProps } from "@gunkin/uiify/core/render";
|
|
3
|
+
export interface InputGroupRootOwnProps {
|
|
4
|
+
readonly children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export type InputGroupRootProps<TAs extends ElementType = "div"> = RenderableProps<TAs, InputGroupRootOwnProps, Record<string, never>, HTMLDivElement>;
|
|
7
|
+
export interface InputGroupAddonOwnProps {
|
|
8
|
+
readonly align: "start" | "end";
|
|
9
|
+
readonly children?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export type InputGroupAddonProps<TAs extends ElementType = "span"> = RenderableProps<TAs, InputGroupAddonOwnProps, Record<string, never>, HTMLSpanElement>;
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/input-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,mBAAmB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAChF,GAAG,EACH,sBAAsB,EACtB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,cAAc,CACf,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,IAAI,eAAe,CAClF,GAAG,EACH,uBAAuB,EACvB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,eAAe,CAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./input-group/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./input-group/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeCheckControl.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/native-check-control/NativeCheckControl.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"NativeCheckControl.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/native-check-control/NativeCheckControl.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,CAkE/E;yBAlEe,kBAAkB"}
|
|
@@ -8,8 +8,10 @@ function NativeCheckControl(props) {
|
|
|
8
8
|
disabled = false,
|
|
9
9
|
id,
|
|
10
10
|
label,
|
|
11
|
+
name,
|
|
11
12
|
onCheckedChange,
|
|
12
13
|
className,
|
|
14
|
+
value,
|
|
13
15
|
"aria-label": ariaLabel
|
|
14
16
|
} = props;
|
|
15
17
|
const isControlled = checked !== void 0;
|
|
@@ -38,9 +40,11 @@ function NativeCheckControl(props) {
|
|
|
38
40
|
defaultChecked: !isControlled ? defaultChecked : void 0,
|
|
39
41
|
disabled: disabled || void 0,
|
|
40
42
|
id,
|
|
43
|
+
name,
|
|
41
44
|
onChange: handleChange,
|
|
42
45
|
ref: inputRef,
|
|
43
46
|
type: "checkbox",
|
|
47
|
+
value,
|
|
44
48
|
...label === void 0 ? { "data-uiify-checkbox": "" } : { "data-part": "control" }
|
|
45
49
|
}
|
|
46
50
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/internal/native-check-control/NativeCheckControl.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type { ChangeEvent, ReactElement } from \"react\";\nimport type { NativeCheckControlProps } from \"./types.js\";\n\nexport function NativeCheckControl(props: NativeCheckControlProps): ReactElement {\n const {\n checked,\n defaultChecked,\n disabled = false,\n id,\n label,\n onCheckedChange,\n className,\n \"aria-label\": ariaLabel,\n } = props;\n const isControlled = checked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked ?? false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const checkedValue = isControlled ? checked === true : uncontrolledChecked;\n\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = checked === \"indeterminate\";\n }, [checked]);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (checked === \"indeterminate\" && inputRef.current) {\n inputRef.current.indeterminate = true;\n }\n if (!isControlled) setUncontrolledChecked(event.currentTarget.checked);\n onCheckedChange?.(event.currentTarget.checked);\n };\n\n const input = (\n <input\n aria-checked={checked === \"indeterminate\" ? \"mixed\" : undefined}\n aria-label={label === undefined ? ariaLabel : undefined}\n aria-labelledby={label !== undefined ? `${id}-label` : undefined}\n checked={isControlled ? checkedValue : undefined}\n data-disabled={disabled ? \"\" : undefined}\n data-state={\n isControlled\n ? checked === \"indeterminate\"\n ? \"indeterminate\"\n : checkedValue\n ? \"checked\"\n : \"unchecked\"\n : undefined\n }\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled || undefined}\n id={id}\n onChange={handleChange}\n ref={inputRef}\n type=\"checkbox\"\n {...(label === undefined ? { \"data-uiify-checkbox\": \"\" } : { \"data-part\": \"control\" })}\n />\n );\n\n return label === undefined ? (\n input\n ) : (\n <label className={className} data-uiify-checkbox=\"\" id={`${id}-label`}>\n {input}\n {label}\n </label>\n );\n}\nNativeCheckControl.displayName = \"NativeCheckControl\";\n"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/internal/native-check-control/NativeCheckControl.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type { ChangeEvent, ReactElement } from \"react\";\nimport type { NativeCheckControlProps } from \"./types.js\";\n\nexport function NativeCheckControl(props: NativeCheckControlProps): ReactElement {\n const {\n checked,\n defaultChecked,\n disabled = false,\n id,\n label,\n name,\n onCheckedChange,\n className,\n value,\n \"aria-label\": ariaLabel,\n } = props;\n const isControlled = checked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked ?? false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const checkedValue = isControlled ? checked === true : uncontrolledChecked;\n\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = checked === \"indeterminate\";\n }, [checked]);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (checked === \"indeterminate\" && inputRef.current) {\n inputRef.current.indeterminate = true;\n }\n if (!isControlled) setUncontrolledChecked(event.currentTarget.checked);\n onCheckedChange?.(event.currentTarget.checked);\n };\n\n const input = (\n <input\n aria-checked={checked === \"indeterminate\" ? \"mixed\" : undefined}\n aria-label={label === undefined ? ariaLabel : undefined}\n aria-labelledby={label !== undefined ? `${id}-label` : undefined}\n checked={isControlled ? checkedValue : undefined}\n data-disabled={disabled ? \"\" : undefined}\n data-state={\n isControlled\n ? checked === \"indeterminate\"\n ? \"indeterminate\"\n : checkedValue\n ? \"checked\"\n : \"unchecked\"\n : undefined\n }\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled || undefined}\n id={id}\n name={name}\n onChange={handleChange}\n ref={inputRef}\n type=\"checkbox\"\n value={value}\n {...(label === undefined ? { \"data-uiify-checkbox\": \"\" } : { \"data-part\": \"control\" })}\n />\n );\n\n return label === undefined ? (\n input\n ) : (\n <label className={className} data-uiify-checkbox=\"\" id={`${id}-label`}>\n {input}\n {label}\n </label>\n );\n}\nNativeCheckControl.displayName = \"NativeCheckControl\";\n"],"mappings":";AAqCI,cA8BA,YA9BA;AAnCJ,SAAS,WAAW,QAAQ,gBAAgB;AAIrC,SAAS,mBAAmB,OAA8C;AAC/E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,EAChB,IAAI;AACJ,QAAM,eAAe,YAAY;AACjC,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,SAAS,kBAAkB,KAAK;AACtF,QAAM,WAAW,OAAgC,IAAI;AACrD,QAAM,eAAe,eAAe,YAAY,OAAO;AAEvD,YAAU,MAAM;AACd,QAAI,SAAS,QAAS,UAAS,QAAQ,gBAAgB,YAAY;AAAA,EACrE,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,eAAe,CAAC,UAAyC;AAC7D,QAAI,YAAY,mBAAmB,SAAS,SAAS;AACnD,eAAS,QAAQ,gBAAgB;AAAA,IACnC;AACA,QAAI,CAAC,aAAc,wBAAuB,MAAM,cAAc,OAAO;AACrE,sBAAkB,MAAM,cAAc,OAAO;AAAA,EAC/C;AAEA,QAAM,QACJ;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc,YAAY,kBAAkB,UAAU;AAAA,MACtD,cAAY,UAAU,SAAY,YAAY;AAAA,MAC9C,mBAAiB,UAAU,SAAY,GAAG,EAAE,WAAW;AAAA,MACvD,SAAS,eAAe,eAAe;AAAA,MACvC,iBAAe,WAAW,KAAK;AAAA,MAC/B,cACE,eACI,YAAY,kBACV,kBACA,eACE,YACA,cACJ;AAAA,MAEN,gBAAgB,CAAC,eAAe,iBAAiB;AAAA,MACjD,UAAU,YAAY;AAAA,MACtB;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACC,GAAI,UAAU,SAAY,EAAE,uBAAuB,GAAG,IAAI,EAAE,aAAa,UAAU;AAAA;AAAA,EACtF;AAGF,SAAO,UAAU,SACf,QAEA,qBAAC,WAAM,WAAsB,uBAAoB,IAAG,IAAI,GAAG,EAAE,UAC1D;AAAA;AAAA,IACA;AAAA,KACH;AAEJ;AACA,mBAAmB,cAAc;","names":[]}
|
|
@@ -6,6 +6,8 @@ export interface NativeCheckControlProps {
|
|
|
6
6
|
readonly checked?: CheckedState;
|
|
7
7
|
readonly defaultChecked?: boolean;
|
|
8
8
|
readonly disabled?: boolean;
|
|
9
|
+
readonly name?: string;
|
|
10
|
+
readonly value?: string;
|
|
9
11
|
readonly className?: string;
|
|
10
12
|
readonly onCheckedChange?: (checked: boolean) => void;
|
|
11
13
|
readonly "aria-label"?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/native-check-control/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,eAAe,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/internal/native-check-control/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,eAAe,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ElementType, ReactElement } from "react";
|
|
2
|
+
import type { ItemActionsProps, ItemContentProps, ItemMediaProps, ItemMetadataProps, ItemProps } from "./types.js";
|
|
3
|
+
export declare function Item<TAs extends ElementType = "li">(props: ItemProps<TAs>): ReactElement | null;
|
|
4
|
+
export declare namespace Item {
|
|
5
|
+
var displayName: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function ItemMedia<TAs extends ElementType = "span">(props: ItemMediaProps<TAs>): ReactElement | null;
|
|
8
|
+
export declare namespace ItemMedia {
|
|
9
|
+
var displayName: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function ItemContent<TAs extends ElementType = "div">(props: ItemContentProps<TAs>): ReactElement | null;
|
|
12
|
+
export declare namespace ItemContent {
|
|
13
|
+
var displayName: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function ItemMetadata<TAs extends ElementType = "div">(props: ItemMetadataProps<TAs>): ReactElement | null;
|
|
16
|
+
export declare namespace ItemMetadata {
|
|
17
|
+
var displayName: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function ItemActions<TAs extends ElementType = "div">(props: ItemActionsProps<TAs>): ReactElement | null;
|
|
20
|
+
export declare namespace ItemActions {
|
|
21
|
+
var displayName: string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../src/components/item/Item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,wBAAgB,IAAI,CAAC,GAAG,SAAS,WAAW,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,CAS/F;yBATe,IAAI;;;AAWpB,wBAAgB,SAAS,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,EACxD,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GACzB,YAAY,GAAG,IAAI,CASrB;yBAXe,SAAS;;;AAazB,wBAAgB,WAAW,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACzD,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAC3B,YAAY,GAAG,IAAI,CASrB;yBAXe,WAAW;;;AAa3B,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC1D,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CASrB;yBAXe,YAAY;;;AAa5B,wBAAgB,WAAW,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACzD,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAC3B,YAAY,GAAG,IAAI,CASrB;yBAXe,WAAW"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useRenderElement } from "@gunkin/uiify/core/render";
|
|
2
|
+
function Item(props) {
|
|
3
|
+
const { as, render, ...consumerProps } = props;
|
|
4
|
+
return useRenderElement({
|
|
5
|
+
as,
|
|
6
|
+
defaultTag: "li",
|
|
7
|
+
props: { ...consumerProps, "data-uiify-item": "" },
|
|
8
|
+
render,
|
|
9
|
+
state: {}
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function ItemMedia(props) {
|
|
13
|
+
const { as, render, ...consumerProps } = props;
|
|
14
|
+
return useRenderElement({
|
|
15
|
+
as,
|
|
16
|
+
defaultTag: "span",
|
|
17
|
+
props: { ...consumerProps, "data-uiify-item-media": "", "data-part": "media" },
|
|
18
|
+
render,
|
|
19
|
+
state: {}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function ItemContent(props) {
|
|
23
|
+
const { as, render, ...consumerProps } = props;
|
|
24
|
+
return useRenderElement({
|
|
25
|
+
as,
|
|
26
|
+
defaultTag: "div",
|
|
27
|
+
props: { ...consumerProps, "data-uiify-item-content": "", "data-part": "content" },
|
|
28
|
+
render,
|
|
29
|
+
state: {}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function ItemMetadata(props) {
|
|
33
|
+
const { as, render, ...consumerProps } = props;
|
|
34
|
+
return useRenderElement({
|
|
35
|
+
as,
|
|
36
|
+
defaultTag: "div",
|
|
37
|
+
props: { ...consumerProps, "data-uiify-item-metadata": "", "data-part": "metadata" },
|
|
38
|
+
render,
|
|
39
|
+
state: {}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function ItemActions(props) {
|
|
43
|
+
const { as, render, ...consumerProps } = props;
|
|
44
|
+
return useRenderElement({
|
|
45
|
+
as,
|
|
46
|
+
defaultTag: "div",
|
|
47
|
+
props: { ...consumerProps, "data-uiify-item-actions": "", "data-part": "actions" },
|
|
48
|
+
render,
|
|
49
|
+
state: {}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
Item.displayName = "Item";
|
|
53
|
+
ItemMedia.displayName = "ItemMedia";
|
|
54
|
+
ItemContent.displayName = "ItemContent";
|
|
55
|
+
ItemMetadata.displayName = "ItemMetadata";
|
|
56
|
+
ItemActions.displayName = "ItemActions";
|
|
57
|
+
export {
|
|
58
|
+
Item,
|
|
59
|
+
ItemActions,
|
|
60
|
+
ItemContent,
|
|
61
|
+
ItemMedia,
|
|
62
|
+
ItemMetadata
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=Item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/item/Item.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type {\n ItemActionsProps,\n ItemContentProps,\n ItemMediaProps,\n ItemMetadataProps,\n ItemProps,\n} from \"./types.js\";\n\nexport function Item<TAs extends ElementType = \"li\">(props: ItemProps<TAs>): ReactElement | null {\n const { as, render, ...consumerProps } = props as ItemProps<\"li\">;\n return useRenderElement({\n as,\n defaultTag: \"li\",\n props: { ...consumerProps, \"data-uiify-item\": \"\" },\n render,\n state: {},\n });\n}\n\nexport function ItemMedia<TAs extends ElementType = \"span\">(\n props: ItemMediaProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as ItemMediaProps<\"span\">;\n return useRenderElement({\n as,\n defaultTag: \"span\",\n props: { ...consumerProps, \"data-uiify-item-media\": \"\", \"data-part\": \"media\" },\n render,\n state: {},\n });\n}\n\nexport function ItemContent<TAs extends ElementType = \"div\">(\n props: ItemContentProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as ItemContentProps<\"div\">;\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: { ...consumerProps, \"data-uiify-item-content\": \"\", \"data-part\": \"content\" },\n render,\n state: {},\n });\n}\n\nexport function ItemMetadata<TAs extends ElementType = \"div\">(\n props: ItemMetadataProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as ItemMetadataProps<\"div\">;\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: { ...consumerProps, \"data-uiify-item-metadata\": \"\", \"data-part\": \"metadata\" },\n render,\n state: {},\n });\n}\n\nexport function ItemActions<TAs extends ElementType = \"div\">(\n props: ItemActionsProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as ItemActionsProps<\"div\">;\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: { ...consumerProps, \"data-uiify-item-actions\": \"\", \"data-part\": \"actions\" },\n render,\n state: {},\n });\n}\n\nItem.displayName = \"Item\";\nItemMedia.displayName = \"ItemMedia\";\nItemContent.displayName = \"ItemContent\";\nItemMetadata.displayName = \"ItemMetadata\";\nItemActions.displayName = \"ItemActions\";\n"],"mappings":"AACA,SAAS,wBAAwB;AAS1B,SAAS,KAAqC,OAA4C;AAC/F,QAAM,EAAE,IAAI,QAAQ,GAAG,cAAc,IAAI;AACzC,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO,EAAE,GAAG,eAAe,mBAAmB,GAAG;AAAA,IACjD;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,UACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,GAAG,cAAc,IAAI;AACzC,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO,EAAE,GAAG,eAAe,yBAAyB,IAAI,aAAa,QAAQ;AAAA,IAC7E;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,YACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,GAAG,cAAc,IAAI;AACzC,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO,EAAE,GAAG,eAAe,2BAA2B,IAAI,aAAa,UAAU;AAAA,IACjF;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,aACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,GAAG,cAAc,IAAI;AACzC,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO,EAAE,GAAG,eAAe,4BAA4B,IAAI,aAAa,WAAW;AAAA,IACnF;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEO,SAAS,YACd,OACqB;AACrB,QAAM,EAAE,IAAI,QAAQ,GAAG,cAAc,IAAI;AACzC,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO,EAAE,GAAG,eAAe,2BAA2B,IAAI,aAAa,UAAU;AAAA,IACjF;AAAA,IACA,OAAO,CAAC;AAAA,EACV,CAAC;AACH;AAEA,KAAK,cAAc;AACnB,UAAU,cAAc;AACxB,YAAY,cAAc;AAC1B,aAAa,cAAc;AAC3B,YAAY,cAAc;","names":[]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { Item, ItemActions, ItemContent, ItemMedia, ItemMetadata } from "./Item.js";
|
|
2
|
+
export type { ItemActionsOwnProps, ItemActionsProps, ItemContentOwnProps, ItemContentProps, ItemMediaOwnProps, ItemMediaProps, ItemMetadataOwnProps, ItemMetadataProps, ItemOwnProps, ItemProps, } from "./types.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/item/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpF,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,SAAS,GACV,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/item/index.ts"],"sourcesContent":["export { Item, ItemActions, ItemContent, ItemMedia, ItemMetadata } from \"./Item.js\";\nexport type {\n ItemActionsOwnProps,\n ItemActionsProps,\n ItemContentOwnProps,\n ItemContentProps,\n ItemMediaOwnProps,\n ItemMediaProps,\n ItemMetadataOwnProps,\n ItemMetadataProps,\n ItemOwnProps,\n ItemProps,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,MAAM,aAAa,aAAa,WAAW,oBAAoB;","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ElementType, ReactNode } from "react";
|
|
2
|
+
import type { RenderableProps } from "@gunkin/uiify/core/render";
|
|
3
|
+
export interface ItemOwnProps {
|
|
4
|
+
readonly children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export type ItemProps<TAs extends ElementType = "li"> = RenderableProps<TAs, ItemOwnProps, Record<string, never>, HTMLElement>;
|
|
7
|
+
export interface ItemMediaOwnProps {
|
|
8
|
+
readonly children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export type ItemMediaProps<TAs extends ElementType = "span"> = RenderableProps<TAs, ItemMediaOwnProps, Record<string, never>, HTMLElement>;
|
|
11
|
+
export interface ItemContentOwnProps {
|
|
12
|
+
readonly children?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export type ItemContentProps<TAs extends ElementType = "div"> = RenderableProps<TAs, ItemContentOwnProps, Record<string, never>, HTMLElement>;
|
|
15
|
+
export interface ItemMetadataOwnProps {
|
|
16
|
+
readonly children?: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export type ItemMetadataProps<TAs extends ElementType = "div"> = RenderableProps<TAs, ItemMetadataOwnProps, Record<string, never>, HTMLElement>;
|
|
19
|
+
export interface ItemActionsOwnProps {
|
|
20
|
+
readonly children?: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
export type ItemActionsProps<TAs extends ElementType = "div"> = RenderableProps<TAs, ItemActionsOwnProps, Record<string, never>, HTMLElement>;
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/item/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,SAAS,CAAC,GAAG,SAAS,WAAW,GAAG,IAAI,IAAI,eAAe,CACrE,GAAG,EACH,YAAY,EACZ,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,CACZ,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,MAAM,IAAI,eAAe,CAC5E,GAAG,EACH,iBAAiB,EACjB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,CACZ,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC7E,GAAG,EACH,mBAAmB,EACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,CACZ,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC9E,GAAG,EACH,oBAAoB,EACpB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,CACZ,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC7E,GAAG,EACH,mBAAmB,EACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrB,WAAW,CACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./item/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./item/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/LineChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA+B,YAAY,EAAE,MAAM,OAAO,CAAC;AAepF,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAE1F,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,EAC7B,EAAE,EAAE,GAAG,EACP,KAAK,EACL,aAAa,EACb,KAAK,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,WAAW,EACX,QAAQ,EACR,UAAU,EACV,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,EAAE,mBAAmB,GAAG,YAAY,CAmCpC;yBAlDe,cAAc;;;AAqD9B,wBAAgB,SAAS,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EAC1D,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GACzB,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/LineChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA+B,YAAY,EAAE,MAAM,OAAO,CAAC;AAepF,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAE1F,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,EAC7B,EAAE,EAAE,GAAG,EACP,KAAK,EACL,aAAa,EACb,KAAK,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,WAAW,EACX,QAAQ,EACR,UAAU,EACV,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,EAAE,mBAAmB,GAAG,YAAY,CAmCpC;yBAlDe,cAAc;;;AAqD9B,wBAAgB,SAAS,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EAC1D,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GACzB,YAAY,GAAG,IAAI,CAsJrB;yBAxJe,SAAS"}
|
|
@@ -74,6 +74,7 @@ function LineChart(props) {
|
|
|
74
74
|
activePointIndex,
|
|
75
75
|
cursorY,
|
|
76
76
|
interactive = false,
|
|
77
|
+
locale = "en-US",
|
|
77
78
|
onPointClick,
|
|
78
79
|
onPointPointerLeave,
|
|
79
80
|
onPointPointerMove,
|
|
@@ -86,8 +87,8 @@ function LineChart(props) {
|
|
|
86
87
|
} = props;
|
|
87
88
|
const { min, max } = getValueBounds(data);
|
|
88
89
|
const label = ariaLabel ?? "Line chart";
|
|
89
|
-
const timeLabels = axisLabelsFor(xAxis, monthLabelsFor(data));
|
|
90
|
-
const valueLabels = axisLabelsFor(yAxis, valueLabelsFor(min, max));
|
|
90
|
+
const timeLabels = axisLabelsFor(xAxis, monthLabelsFor(data, locale));
|
|
91
|
+
const valueLabels = axisLabelsFor(yAxis, valueLabelsFor(min, max, locale));
|
|
91
92
|
const readoutIndex = activePointIndex ?? selectedPointIndex ?? (data.length > 0 ? data.length - 1 : void 0);
|
|
92
93
|
const readoutPoint = readoutIndex === void 0 ? void 0 : data[readoutIndex];
|
|
93
94
|
const crosshairPoint = activePointIndex === void 0 ? void 0 : data[activePointIndex];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/line-chart/LineChart.tsx"],"sourcesContent":["import type { ElementType, KeyboardEvent, PointerEvent, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport {\n axisLabelsFor,\n axisStyle,\n crosshairStyle,\n cursorStyle,\n geometryFor,\n getValueBounds,\n monthLabelsFor,\n pointStyle,\n pointsStyle,\n slotCrosshairStyle,\n valueLabelsFor,\n} from \"./line-chart-geometry.js\";\nimport type { LineChartPointProps, LineChartProps, LineChartViewProps } from \"./types.js\";\n\n/** One point and the segment from its predecessor; shared by the static list and virtual rows. */\nexport function LineChartPoint({\n as: Tag,\n point,\n previousPoint,\n index,\n count,\n min,\n max,\n interactive,\n isActive,\n isSelected,\n cursorY,\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n}: LineChartPointProps): ReactElement {\n const geometry = geometryFor(point, previousPoint, index, count, min, max);\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onPointClick?.(index);\n };\n\n return (\n <Tag\n aria-hidden={interactive ? undefined : true}\n data-part=\"point\"\n data-first={previousPoint === undefined ? \"\" : undefined}\n data-crosshair-active={interactive && isActive ? \"\" : undefined}\n data-point-selected={interactive && isSelected ? \"\" : undefined}\n data-time={String(point.time)}\n data-trend={geometry.trend}\n style={pointStyle(geometry, isActive ? cursorY : undefined)}\n >\n {interactive ? (\n <button\n data-part=\"point-hit\"\n type=\"button\"\n aria-label={`Point ${String(point.time)}`}\n aria-pressed={isSelected}\n onClick={() => onPointClick?.(index)}\n onKeyDown={handleKeyDown}\n onPointerLeave={onPointPointerLeave}\n onPointerMove={(event: PointerEvent<HTMLButtonElement>) =>\n onPointPointerMove?.({ index, offsetY: event.nativeEvent.offsetY })\n }\n />\n ) : null}\n </Tag>\n );\n}\nLineChartPoint.displayName = \"LineChartPoint\";\n\nexport function LineChart<TAs extends ElementType = \"figure\">(\n props: LineChartProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n data,\n xAxis,\n yAxis,\n \"aria-label\": ariaLabel,\n activePointIndex,\n cursorY,\n interactive = false,\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n selectedPointIndex,\n pointLayer,\n announceReadout = true,\n slotCount,\n slotOffset = 0,\n ...consumerProps\n } = props as LineChartProps<\"figure\"> & LineChartViewProps;\n const { min, max } = getValueBounds(data);\n const label = ariaLabel ?? \"Line chart\";\n const timeLabels = axisLabelsFor(xAxis, monthLabelsFor(data));\n const valueLabels = axisLabelsFor(yAxis, valueLabelsFor(min, max));\n const readoutIndex =\n activePointIndex ?? selectedPointIndex ?? (data.length > 0 ? data.length - 1 : undefined);\n const readoutPoint = readoutIndex === undefined ? undefined : data[readoutIndex];\n const crosshairPoint = activePointIndex === undefined ? undefined : data[activePointIndex];\n const points = pointLayer ?? (\n <ol data-part=\"points\" aria-label={`${label} points`} style={pointsStyle(data.length)}>\n {data.map((point, index) => (\n <LineChartPoint\n key={`${point.time}-${index}`}\n as=\"li\"\n point={point}\n previousPoint={data[index - 1]}\n index={index}\n count={data.length}\n min={min}\n max={max}\n interactive={interactive}\n isActive={activePointIndex === index}\n isSelected={selectedPointIndex === index}\n cursorY={cursorY}\n onPointClick={onPointClick}\n onPointPointerLeave={onPointPointerLeave}\n onPointPointerMove={onPointPointerMove}\n />\n ))}\n </ol>\n );\n const crosshairFor = (index: number, y: number | undefined) =>\n slotCount === undefined\n ? crosshairStyle(index, data.length, y)\n : slotCrosshairStyle(slotOffset + index, slotCount, y);\n\n return useRenderElement({\n as,\n defaultTag: \"figure\",\n props: {\n ...consumerProps,\n \"aria-label\": label,\n \"data-uiify-line-chart\": \"\",\n \"data-interactive\": interactive ? \"\" : undefined,\n children: (\n <>\n <figcaption>{label}</figcaption>\n {interactive && readoutPoint ? (\n <div data-part=\"readout\" aria-live={announceReadout ? \"polite\" : \"off\"}>\n <span data-part=\"readout-time\">{String(readoutPoint.time)}</span>\n <span>{readoutPoint.value}</span>\n </div>\n ) : null}\n <div data-part=\"plot\" aria-hidden={interactive ? undefined : true}>\n <div data-part=\"scroll-viewport\">\n <div data-part=\"canvas\">\n <div data-part=\"viewport\">\n {points}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <div\n data-part=\"crosshair\"\n aria-hidden=\"true\"\n style={crosshairFor(activePointIndex, cursorY)}\n >\n <span data-part=\"crosshair-marker\">+</span>\n </div>\n ) : null}\n </div>\n <div data-part=\"time-viewport\">\n <ol data-part=\"time-axis\" data-axis=\"time\" aria-label={`${label} dates`}>\n {timeLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n style={axisStyle(\"x\", axisLabel.position)}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li\n data-part=\"crosshair-time\"\n style={crosshairFor(activePointIndex, undefined)}\n >\n {String(crosshairPoint.time)}\n </li>\n ) : null}\n </ol>\n </div>\n </div>\n </div>\n <ol data-part=\"value-axis\" data-axis=\"value\" aria-label={`${label} values`}>\n {valueLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n style={axisStyle(\"y\", axisLabel.position)}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li data-part=\"crosshair-value\" style={cursorStyle(cursorY)}>\n {crosshairPoint.value}\n </li>\n ) : null}\n </ol>\n </div>\n <table data-part=\"data\" aria-label={`${label} data`}>\n <thead>\n <tr>\n <th scope=\"col\">Time</th>\n <th scope=\"col\">Value</th>\n </tr>\n </thead>\n <tbody>\n {data.map((point, index) => (\n <tr key={`${point.time}-${index}`}>\n <th scope=\"row\">{String(point.time)}</th>\n <td>{point.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n ),\n },\n render,\n state: {},\n });\n}\nLineChart.displayName = \"LineChart\";\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/line-chart/LineChart.tsx"],"sourcesContent":["import type { ElementType, KeyboardEvent, PointerEvent, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport {\n axisLabelsFor,\n axisStyle,\n crosshairStyle,\n cursorStyle,\n geometryFor,\n getValueBounds,\n monthLabelsFor,\n pointStyle,\n pointsStyle,\n slotCrosshairStyle,\n valueLabelsFor,\n} from \"./line-chart-geometry.js\";\nimport type { LineChartPointProps, LineChartProps, LineChartViewProps } from \"./types.js\";\n\n/** One point and the segment from its predecessor; shared by the static list and virtual rows. */\nexport function LineChartPoint({\n as: Tag,\n point,\n previousPoint,\n index,\n count,\n min,\n max,\n interactive,\n isActive,\n isSelected,\n cursorY,\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n}: LineChartPointProps): ReactElement {\n const geometry = geometryFor(point, previousPoint, index, count, min, max);\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n onPointClick?.(index);\n };\n\n return (\n <Tag\n aria-hidden={interactive ? undefined : true}\n data-part=\"point\"\n data-first={previousPoint === undefined ? \"\" : undefined}\n data-crosshair-active={interactive && isActive ? \"\" : undefined}\n data-point-selected={interactive && isSelected ? \"\" : undefined}\n data-time={String(point.time)}\n data-trend={geometry.trend}\n style={pointStyle(geometry, isActive ? cursorY : undefined)}\n >\n {interactive ? (\n <button\n data-part=\"point-hit\"\n type=\"button\"\n aria-label={`Point ${String(point.time)}`}\n aria-pressed={isSelected}\n onClick={() => onPointClick?.(index)}\n onKeyDown={handleKeyDown}\n onPointerLeave={onPointPointerLeave}\n onPointerMove={(event: PointerEvent<HTMLButtonElement>) =>\n onPointPointerMove?.({ index, offsetY: event.nativeEvent.offsetY })\n }\n />\n ) : null}\n </Tag>\n );\n}\nLineChartPoint.displayName = \"LineChartPoint\";\n\nexport function LineChart<TAs extends ElementType = \"figure\">(\n props: LineChartProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n data,\n xAxis,\n yAxis,\n \"aria-label\": ariaLabel,\n activePointIndex,\n cursorY,\n interactive = false,\n locale = \"en-US\",\n onPointClick,\n onPointPointerLeave,\n onPointPointerMove,\n selectedPointIndex,\n pointLayer,\n announceReadout = true,\n slotCount,\n slotOffset = 0,\n ...consumerProps\n } = props as LineChartProps<\"figure\"> & LineChartViewProps;\n const { min, max } = getValueBounds(data);\n const label = ariaLabel ?? \"Line chart\";\n const timeLabels = axisLabelsFor(xAxis, monthLabelsFor(data, locale));\n const valueLabels = axisLabelsFor(yAxis, valueLabelsFor(min, max, locale));\n const readoutIndex =\n activePointIndex ?? selectedPointIndex ?? (data.length > 0 ? data.length - 1 : undefined);\n const readoutPoint = readoutIndex === undefined ? undefined : data[readoutIndex];\n const crosshairPoint = activePointIndex === undefined ? undefined : data[activePointIndex];\n const points = pointLayer ?? (\n <ol data-part=\"points\" aria-label={`${label} points`} style={pointsStyle(data.length)}>\n {data.map((point, index) => (\n <LineChartPoint\n key={`${point.time}-${index}`}\n as=\"li\"\n point={point}\n previousPoint={data[index - 1]}\n index={index}\n count={data.length}\n min={min}\n max={max}\n interactive={interactive}\n isActive={activePointIndex === index}\n isSelected={selectedPointIndex === index}\n cursorY={cursorY}\n onPointClick={onPointClick}\n onPointPointerLeave={onPointPointerLeave}\n onPointPointerMove={onPointPointerMove}\n />\n ))}\n </ol>\n );\n const crosshairFor = (index: number, y: number | undefined) =>\n slotCount === undefined\n ? crosshairStyle(index, data.length, y)\n : slotCrosshairStyle(slotOffset + index, slotCount, y);\n\n return useRenderElement({\n as,\n defaultTag: \"figure\",\n props: {\n ...consumerProps,\n \"aria-label\": label,\n \"data-uiify-line-chart\": \"\",\n \"data-interactive\": interactive ? \"\" : undefined,\n children: (\n <>\n <figcaption>{label}</figcaption>\n {interactive && readoutPoint ? (\n <div data-part=\"readout\" aria-live={announceReadout ? \"polite\" : \"off\"}>\n <span data-part=\"readout-time\">{String(readoutPoint.time)}</span>\n <span>{readoutPoint.value}</span>\n </div>\n ) : null}\n <div data-part=\"plot\" aria-hidden={interactive ? undefined : true}>\n <div data-part=\"scroll-viewport\">\n <div data-part=\"canvas\">\n <div data-part=\"viewport\">\n {points}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <div\n data-part=\"crosshair\"\n aria-hidden=\"true\"\n style={crosshairFor(activePointIndex, cursorY)}\n >\n <span data-part=\"crosshair-marker\">+</span>\n </div>\n ) : null}\n </div>\n <div data-part=\"time-viewport\">\n <ol data-part=\"time-axis\" data-axis=\"time\" aria-label={`${label} dates`}>\n {timeLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n style={axisStyle(\"x\", axisLabel.position)}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li\n data-part=\"crosshair-time\"\n style={crosshairFor(activePointIndex, undefined)}\n >\n {String(crosshairPoint.time)}\n </li>\n ) : null}\n </ol>\n </div>\n </div>\n </div>\n <ol data-part=\"value-axis\" data-axis=\"value\" aria-label={`${label} values`}>\n {valueLabels.map((axisLabel, index) => (\n <li\n key={`${axisLabel.position}-${index}`}\n style={axisStyle(\"y\", axisLabel.position)}\n >\n {axisLabel.label}\n </li>\n ))}\n {interactive && crosshairPoint && activePointIndex !== undefined ? (\n <li data-part=\"crosshair-value\" style={cursorStyle(cursorY)}>\n {crosshairPoint.value}\n </li>\n ) : null}\n </ol>\n </div>\n <table data-part=\"data\" aria-label={`${label} data`}>\n <thead>\n <tr>\n <th scope=\"col\">Time</th>\n <th scope=\"col\">Value</th>\n </tr>\n </thead>\n <tbody>\n {data.map((point, index) => (\n <tr key={`${point.time}-${index}`}>\n <th scope=\"row\">{String(point.time)}</th>\n <td>{point.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n ),\n },\n render,\n state: {},\n });\n}\nLineChart.displayName = \"LineChart\";\n"],"mappings":"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","names":[]}
|
|
@@ -46,8 +46,8 @@ export interface AxisLabel {
|
|
|
46
46
|
readonly position: number;
|
|
47
47
|
}
|
|
48
48
|
export declare function pointPosition(index: number, count: number): number;
|
|
49
|
-
export declare function monthLabelsFor(data: readonly LineChartData[]): AxisLabel[];
|
|
50
|
-
export declare function valueLabelsFor(min: number, max: number): AxisLabel[];
|
|
49
|
+
export declare function monthLabelsFor(data: readonly LineChartData[], locale: string): AxisLabel[];
|
|
50
|
+
export declare function valueLabelsFor(min: number, max: number, locale: string): AxisLabel[];
|
|
51
51
|
export declare function geometryFor(point: LineChartData, previousPoint: LineChartData | undefined, index: number, count: number, min: number, max: number): LinePointGeometry;
|
|
52
52
|
export declare function pointStyle(geometry: LinePointGeometry, cursorY: number | undefined): PointStyle;
|
|
53
53
|
export declare function pointsStyle(count: number): PointsStyle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-chart-geometry.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/line-chart-geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAExC,UAAU,iBAAiB;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAW3F;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAkBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"line-chart-geometry.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/line-chart-geometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,10 +21,10 @@ function monthKey(time) {
|
|
|
21
21
|
if (Number.isNaN(date.getTime())) return String(time);
|
|
22
22
|
return `${date.getUTCFullYear()}-${date.getUTCMonth()}`;
|
|
23
23
|
}
|
|
24
|
-
function monthLabel(time) {
|
|
24
|
+
function monthLabel(time, locale) {
|
|
25
25
|
const date = new Date(time);
|
|
26
26
|
if (Number.isNaN(date.getTime())) return String(time);
|
|
27
|
-
return new Intl.DateTimeFormat(
|
|
27
|
+
return new Intl.DateTimeFormat(locale, {
|
|
28
28
|
month: "short",
|
|
29
29
|
timeZone: "UTC",
|
|
30
30
|
year: "2-digit"
|
|
@@ -34,7 +34,7 @@ function pointPosition(index, count) {
|
|
|
34
34
|
if (count <= 1) return 50;
|
|
35
35
|
return index / (count - 1) * 100;
|
|
36
36
|
}
|
|
37
|
-
function monthLabelsFor(data) {
|
|
37
|
+
function monthLabelsFor(data, locale) {
|
|
38
38
|
const labels = [];
|
|
39
39
|
const seen = /* @__PURE__ */ new Set();
|
|
40
40
|
data.forEach((point, index) => {
|
|
@@ -42,20 +42,20 @@ function monthLabelsFor(data) {
|
|
|
42
42
|
if (seen.has(key)) return;
|
|
43
43
|
seen.add(key);
|
|
44
44
|
labels.push({
|
|
45
|
-
label: monthLabel(point.time),
|
|
45
|
+
label: monthLabel(point.time, locale),
|
|
46
46
|
position: pointPosition(index, data.length)
|
|
47
47
|
});
|
|
48
48
|
});
|
|
49
49
|
return labels;
|
|
50
50
|
}
|
|
51
|
-
function valueLabelsFor(min, max) {
|
|
51
|
+
function valueLabelsFor(min, max, locale) {
|
|
52
52
|
const tickCount = 6;
|
|
53
53
|
const range = max - min;
|
|
54
54
|
return Array.from({ length: tickCount }, (_, index) => {
|
|
55
55
|
const ratio = index / (tickCount - 1);
|
|
56
56
|
const value = max - range * ratio;
|
|
57
57
|
return {
|
|
58
|
-
label: new Intl.NumberFormat(
|
|
58
|
+
label: new Intl.NumberFormat(locale, { maximumFractionDigits: 2 }).format(value),
|
|
59
59
|
position: ratio * 100
|
|
60
60
|
};
|
|
61
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/line-chart/line-chart-geometry.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from \"react\";\nimport type { LineChartAxisLabel, LineChartData } from \"./types.js\";\n\nexport interface PointStyle extends CSSProperties {\n \"--line-prev-x\"?: string;\n \"--line-prev-y\"?: string;\n \"--line-rise\"?: string;\n \"--line-slot\": string;\n \"--line-x\": string;\n \"--line-y\": string;\n \"--line-cursor-y\"?: string;\n}\n\nexport interface PointsStyle extends CSSProperties {\n \"--line-count\": string;\n /** One segment's width in percentage points of the viewport width, unitless. */\n \"--line-run\": string;\n \"--line-segment-slot\": string;\n}\n\nexport interface CrosshairStyle extends CSSProperties {\n \"--line-crosshair-x\": string;\n \"--line-cursor-y\"?: string;\n}\n\nexport interface CursorStyle extends CSSProperties {\n \"--line-cursor-y\"?: string;\n}\n\nexport interface AxisStyle extends CSSProperties {\n \"--line-axis-x\"?: string;\n \"--line-axis-y\"?: string;\n}\n\ntype LineTrend = \"down\" | \"flat\" | \"up\";\n\ninterface LinePointGeometry {\n readonly previousX: string | undefined;\n readonly previousY: string | undefined;\n /** `y − previousY` in percentage points of the point box height, unitless. */\n readonly rise: string | undefined;\n readonly slot: string;\n readonly trend: LineTrend;\n readonly x: string;\n readonly y: string;\n}\n\nfunction percent(value: number): string {\n const rounded = Math.round(value * 10000) / 10000;\n return `${rounded}%`;\n}\n\nfunction valueToPercent(value: number, min: number, range: number): number {\n if (range === 0) return 50;\n return Math.min(100, Math.max(0, ((min + range - value) / range) * 100));\n}\n\nexport function getValueBounds(data: readonly LineChartData[]): { max: number; min: number } {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n for (const point of data) {\n min = Math.min(min, point.value);\n max = Math.max(max, point.value);\n }\n\n if (data.length === 0) return { max: 1, min: 0 };\n return { max, min };\n}\n\nexport interface AxisLabel {\n readonly label: ReactNode;\n readonly position: number;\n}\n\nfunction monthKey(time: string | number): string {\n const date = new Date(time);\n if (Number.isNaN(date.getTime())) return String(time);\n return `${date.getUTCFullYear()}-${date.getUTCMonth()}`;\n}\n\nfunction monthLabel(time: string | number): string {\n const date = new Date(time);\n if (Number.isNaN(date.getTime())) return String(time);\n return new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n timeZone: \"UTC\",\n year: \"2-digit\",\n }).format(date);\n}\n\nexport function pointPosition(index: number, count: number): number {\n if (count <= 1) return 50;\n return (index / (count - 1)) * 100;\n}\n\nexport function monthLabelsFor(data: readonly LineChartData[]): AxisLabel[] {\n const labels: AxisLabel[] = [];\n const seen = new Set<string>();\n\n data.forEach((point, index) => {\n const key = monthKey(point.time);\n if (seen.has(key)) return;\n seen.add(key);\n labels.push({\n label: monthLabel(point.time),\n position: pointPosition(index, data.length),\n });\n });\n\n return labels;\n}\n\nexport function valueLabelsFor(min: number, max: number): AxisLabel[] {\n const tickCount = 6;\n const range = max - min;\n\n return Array.from({ length: tickCount }, (_, index) => {\n const ratio = index / (tickCount - 1);\n const value = max - range * ratio;\n return {\n label: new Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 2 }).format(value),\n position: ratio * 100,\n };\n });\n}\n\nfunction trendFor(value: number, previousValue: number | undefined): LineTrend {\n if (previousValue === undefined || value === previousValue) return \"flat\";\n return value > previousValue ? \"up\" : \"down\";\n}\n\nexport function geometryFor(\n point: LineChartData,\n previousPoint: LineChartData | undefined,\n index: number,\n count: number,\n min: number,\n max: number,\n): LinePointGeometry {\n const range = max - min;\n const y = valueToPercent(point.value, min, range);\n const previousY =\n previousPoint === undefined ? undefined : valueToPercent(previousPoint.value, min, range);\n return {\n previousX: previousPoint === undefined ? undefined : percent(pointPosition(index - 1, count)),\n previousY: previousY === undefined ? undefined : percent(previousY),\n rise: previousY === undefined ? undefined : String(Math.round((y - previousY) * 10000) / 10000),\n slot: percent(count > 1 ? 100 / (count - 1) : 100),\n trend: trendFor(point.value, previousPoint?.value),\n x: percent(pointPosition(index, count)),\n y: percent(y),\n };\n}\n\nexport function pointStyle(geometry: LinePointGeometry, cursorY: number | undefined): PointStyle {\n return {\n ...(geometry.previousX === undefined ? {} : { \"--line-prev-x\": geometry.previousX }),\n ...(geometry.previousY === undefined ? {} : { \"--line-prev-y\": geometry.previousY }),\n ...(geometry.rise === undefined ? {} : { \"--line-rise\": geometry.rise }),\n \"--line-slot\": geometry.slot,\n \"--line-x\": geometry.x,\n \"--line-y\": geometry.y,\n ...(cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` }),\n };\n}\n\nexport function pointsStyle(count: number): PointsStyle {\n return {\n \"--line-count\": String(Math.max(count, 1)),\n \"--line-run\": String(Math.round((count > 1 ? 100 / (count - 1) : 100) * 10000) / 10000),\n \"--line-segment-slot\": percent(count > 1 ? 100 / (count - 1) : 100),\n };\n}\n\nexport function crosshairStyle(\n index: number,\n count: number,\n cursorY: number | undefined,\n): CrosshairStyle {\n return {\n \"--line-crosshair-x\": percent(pointPosition(index, count)),\n ...(cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` }),\n };\n}\n\n/** Crosshair at the center of slot `index` of `count` equal slots (live mode). */\nexport function slotCrosshairStyle(\n index: number,\n count: number,\n cursorY: number | undefined,\n): CrosshairStyle {\n return {\n \"--line-crosshair-x\": percent(((index + 0.5) / Math.max(count, 1)) * 100),\n ...(cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` }),\n };\n}\n\nexport function cursorStyle(cursorY: number | undefined): CursorStyle {\n return cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` };\n}\n\nexport function axisStyle(axis: \"x\" | \"y\", position: number): AxisStyle {\n const value = percent(Math.min(100, Math.max(0, position)));\n if (axis === \"x\") return { \"--line-axis-x\": value };\n return { \"--line-axis-y\": value };\n}\n\nexport function axisLabelsFor(\n overrides: readonly LineChartAxisLabel[] | undefined,\n fallback: readonly AxisLabel[],\n): readonly AxisLabel[] {\n return overrides ?? fallback;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/line-chart/line-chart-geometry.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from \"react\";\nimport type { LineChartAxisLabel, LineChartData } from \"./types.js\";\n\nexport interface PointStyle extends CSSProperties {\n \"--line-prev-x\"?: string;\n \"--line-prev-y\"?: string;\n \"--line-rise\"?: string;\n \"--line-slot\": string;\n \"--line-x\": string;\n \"--line-y\": string;\n \"--line-cursor-y\"?: string;\n}\n\nexport interface PointsStyle extends CSSProperties {\n \"--line-count\": string;\n /** One segment's width in percentage points of the viewport width, unitless. */\n \"--line-run\": string;\n \"--line-segment-slot\": string;\n}\n\nexport interface CrosshairStyle extends CSSProperties {\n \"--line-crosshair-x\": string;\n \"--line-cursor-y\"?: string;\n}\n\nexport interface CursorStyle extends CSSProperties {\n \"--line-cursor-y\"?: string;\n}\n\nexport interface AxisStyle extends CSSProperties {\n \"--line-axis-x\"?: string;\n \"--line-axis-y\"?: string;\n}\n\ntype LineTrend = \"down\" | \"flat\" | \"up\";\n\ninterface LinePointGeometry {\n readonly previousX: string | undefined;\n readonly previousY: string | undefined;\n /** `y − previousY` in percentage points of the point box height, unitless. */\n readonly rise: string | undefined;\n readonly slot: string;\n readonly trend: LineTrend;\n readonly x: string;\n readonly y: string;\n}\n\nfunction percent(value: number): string {\n const rounded = Math.round(value * 10000) / 10000;\n return `${rounded}%`;\n}\n\nfunction valueToPercent(value: number, min: number, range: number): number {\n if (range === 0) return 50;\n return Math.min(100, Math.max(0, ((min + range - value) / range) * 100));\n}\n\nexport function getValueBounds(data: readonly LineChartData[]): { max: number; min: number } {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n for (const point of data) {\n min = Math.min(min, point.value);\n max = Math.max(max, point.value);\n }\n\n if (data.length === 0) return { max: 1, min: 0 };\n return { max, min };\n}\n\nexport interface AxisLabel {\n readonly label: ReactNode;\n readonly position: number;\n}\n\nfunction monthKey(time: string | number): string {\n const date = new Date(time);\n if (Number.isNaN(date.getTime())) return String(time);\n return `${date.getUTCFullYear()}-${date.getUTCMonth()}`;\n}\n\nfunction monthLabel(time: string | number, locale: string): string {\n const date = new Date(time);\n if (Number.isNaN(date.getTime())) return String(time);\n return new Intl.DateTimeFormat(locale, {\n month: \"short\",\n timeZone: \"UTC\",\n year: \"2-digit\",\n }).format(date);\n}\n\nexport function pointPosition(index: number, count: number): number {\n if (count <= 1) return 50;\n return (index / (count - 1)) * 100;\n}\n\nexport function monthLabelsFor(data: readonly LineChartData[], locale: string): AxisLabel[] {\n const labels: AxisLabel[] = [];\n const seen = new Set<string>();\n\n data.forEach((point, index) => {\n const key = monthKey(point.time);\n if (seen.has(key)) return;\n seen.add(key);\n labels.push({\n label: monthLabel(point.time, locale),\n position: pointPosition(index, data.length),\n });\n });\n\n return labels;\n}\n\nexport function valueLabelsFor(min: number, max: number, locale: string): AxisLabel[] {\n const tickCount = 6;\n const range = max - min;\n\n return Array.from({ length: tickCount }, (_, index) => {\n const ratio = index / (tickCount - 1);\n const value = max - range * ratio;\n return {\n label: new Intl.NumberFormat(locale, { maximumFractionDigits: 2 }).format(value),\n position: ratio * 100,\n };\n });\n}\n\nfunction trendFor(value: number, previousValue: number | undefined): LineTrend {\n if (previousValue === undefined || value === previousValue) return \"flat\";\n return value > previousValue ? \"up\" : \"down\";\n}\n\nexport function geometryFor(\n point: LineChartData,\n previousPoint: LineChartData | undefined,\n index: number,\n count: number,\n min: number,\n max: number,\n): LinePointGeometry {\n const range = max - min;\n const y = valueToPercent(point.value, min, range);\n const previousY =\n previousPoint === undefined ? undefined : valueToPercent(previousPoint.value, min, range);\n return {\n previousX: previousPoint === undefined ? undefined : percent(pointPosition(index - 1, count)),\n previousY: previousY === undefined ? undefined : percent(previousY),\n rise: previousY === undefined ? undefined : String(Math.round((y - previousY) * 10000) / 10000),\n slot: percent(count > 1 ? 100 / (count - 1) : 100),\n trend: trendFor(point.value, previousPoint?.value),\n x: percent(pointPosition(index, count)),\n y: percent(y),\n };\n}\n\nexport function pointStyle(geometry: LinePointGeometry, cursorY: number | undefined): PointStyle {\n return {\n ...(geometry.previousX === undefined ? {} : { \"--line-prev-x\": geometry.previousX }),\n ...(geometry.previousY === undefined ? {} : { \"--line-prev-y\": geometry.previousY }),\n ...(geometry.rise === undefined ? {} : { \"--line-rise\": geometry.rise }),\n \"--line-slot\": geometry.slot,\n \"--line-x\": geometry.x,\n \"--line-y\": geometry.y,\n ...(cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` }),\n };\n}\n\nexport function pointsStyle(count: number): PointsStyle {\n return {\n \"--line-count\": String(Math.max(count, 1)),\n \"--line-run\": String(Math.round((count > 1 ? 100 / (count - 1) : 100) * 10000) / 10000),\n \"--line-segment-slot\": percent(count > 1 ? 100 / (count - 1) : 100),\n };\n}\n\nexport function crosshairStyle(\n index: number,\n count: number,\n cursorY: number | undefined,\n): CrosshairStyle {\n return {\n \"--line-crosshair-x\": percent(pointPosition(index, count)),\n ...(cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` }),\n };\n}\n\n/** Crosshair at the center of slot `index` of `count` equal slots (live mode). */\nexport function slotCrosshairStyle(\n index: number,\n count: number,\n cursorY: number | undefined,\n): CrosshairStyle {\n return {\n \"--line-crosshair-x\": percent(((index + 0.5) / Math.max(count, 1)) * 100),\n ...(cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` }),\n };\n}\n\nexport function cursorStyle(cursorY: number | undefined): CursorStyle {\n return cursorY === undefined ? {} : { \"--line-cursor-y\": `${Math.max(0, cursorY)}px` };\n}\n\nexport function axisStyle(axis: \"x\" | \"y\", position: number): AxisStyle {\n const value = percent(Math.min(100, Math.max(0, position)));\n if (axis === \"x\") return { \"--line-axis-x\": value };\n return { \"--line-axis-y\": value };\n}\n\nexport function axisLabelsFor(\n overrides: readonly LineChartAxisLabel[] | undefined,\n fallback: readonly AxisLabel[],\n): readonly AxisLabel[] {\n return overrides ?? fallback;\n}\n"],"mappings":"AA+CA,SAAS,QAAQ,OAAuB;AACtC,QAAM,UAAU,KAAK,MAAM,QAAQ,GAAK,IAAI;AAC5C,SAAO,GAAG,OAAO;AACnB;AAEA,SAAS,eAAe,OAAe,KAAa,OAAuB;AACzE,MAAI,UAAU,EAAG,QAAO;AACxB,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,IAAK,MAAM,QAAQ,SAAS,QAAS,GAAG,CAAC;AACzE;AAEO,SAAS,eAAe,MAA8D;AAC3F,MAAI,MAAM,OAAO;AACjB,MAAI,MAAM,OAAO;AAEjB,aAAW,SAAS,MAAM;AACxB,UAAM,KAAK,IAAI,KAAK,MAAM,KAAK;AAC/B,UAAM,KAAK,IAAI,KAAK,MAAM,KAAK;AAAA,EACjC;AAEA,MAAI,KAAK,WAAW,EAAG,QAAO,EAAE,KAAK,GAAG,KAAK,EAAE;AAC/C,SAAO,EAAE,KAAK,IAAI;AACpB;AAOA,SAAS,SAAS,MAA+B;AAC/C,QAAM,OAAO,IAAI,KAAK,IAAI;AAC1B,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAG,QAAO,OAAO,IAAI;AACpD,SAAO,GAAG,KAAK,eAAe,CAAC,IAAI,KAAK,YAAY,CAAC;AACvD;AAEA,SAAS,WAAW,MAAuB,QAAwB;AACjE,QAAM,OAAO,IAAI,KAAK,IAAI;AAC1B,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAG,QAAO,OAAO,IAAI;AACpD,SAAO,IAAI,KAAK,eAAe,QAAQ;AAAA,IACrC,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,EACR,CAAC,EAAE,OAAO,IAAI;AAChB;AAEO,SAAS,cAAc,OAAe,OAAuB;AAClE,MAAI,SAAS,EAAG,QAAO;AACvB,SAAQ,SAAS,QAAQ,KAAM;AACjC;AAEO,SAAS,eAAe,MAAgC,QAA6B;AAC1F,QAAM,SAAsB,CAAC;AAC7B,QAAM,OAAO,oBAAI,IAAY;AAE7B,OAAK,QAAQ,CAAC,OAAO,UAAU;AAC7B,UAAM,MAAM,SAAS,MAAM,IAAI;AAC/B,QAAI,KAAK,IAAI,GAAG,EAAG;AACnB,SAAK,IAAI,GAAG;AACZ,WAAO,KAAK;AAAA,MACV,OAAO,WAAW,MAAM,MAAM,MAAM;AAAA,MACpC,UAAU,cAAc,OAAO,KAAK,MAAM;AAAA,IAC5C,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AACT;AAEO,SAAS,eAAe,KAAa,KAAa,QAA6B;AACpF,QAAM,YAAY;AAClB,QAAM,QAAQ,MAAM;AAEpB,SAAO,MAAM,KAAK,EAAE,QAAQ,UAAU,GAAG,CAAC,GAAG,UAAU;AACrD,UAAM,QAAQ,SAAS,YAAY;AACnC,UAAM,QAAQ,MAAM,QAAQ;AAC5B,WAAO;AAAA,MACL,OAAO,IAAI,KAAK,aAAa,QAAQ,EAAE,uBAAuB,EAAE,CAAC,EAAE,OAAO,KAAK;AAAA,MAC/E,UAAU,QAAQ;AAAA,IACpB;AAAA,EACF,CAAC;AACH;AAEA,SAAS,SAAS,OAAe,eAA8C;AAC7E,MAAI,kBAAkB,UAAa,UAAU,cAAe,QAAO;AACnE,SAAO,QAAQ,gBAAgB,OAAO;AACxC;AAEO,SAAS,YACd,OACA,eACA,OACA,OACA,KACA,KACmB;AACnB,QAAM,QAAQ,MAAM;AACpB,QAAM,IAAI,eAAe,MAAM,OAAO,KAAK,KAAK;AAChD,QAAM,YACJ,kBAAkB,SAAY,SAAY,eAAe,cAAc,OAAO,KAAK,KAAK;AAC1F,SAAO;AAAA,IACL,WAAW,kBAAkB,SAAY,SAAY,QAAQ,cAAc,QAAQ,GAAG,KAAK,CAAC;AAAA,IAC5F,WAAW,cAAc,SAAY,SAAY,QAAQ,SAAS;AAAA,IAClE,MAAM,cAAc,SAAY,SAAY,OAAO,KAAK,OAAO,IAAI,aAAa,GAAK,IAAI,GAAK;AAAA,IAC9F,MAAM,QAAQ,QAAQ,IAAI,OAAO,QAAQ,KAAK,GAAG;AAAA,IACjD,OAAO,SAAS,MAAM,OAAO,eAAe,KAAK;AAAA,IACjD,GAAG,QAAQ,cAAc,OAAO,KAAK,CAAC;AAAA,IACtC,GAAG,QAAQ,CAAC;AAAA,EACd;AACF;AAEO,SAAS,WAAW,UAA6B,SAAyC;AAC/F,SAAO;AAAA,IACL,GAAI,SAAS,cAAc,SAAY,CAAC,IAAI,EAAE,iBAAiB,SAAS,UAAU;AAAA,IAClF,GAAI,SAAS,cAAc,SAAY,CAAC,IAAI,EAAE,iBAAiB,SAAS,UAAU;AAAA,IAClF,GAAI,SAAS,SAAS,SAAY,CAAC,IAAI,EAAE,eAAe,SAAS,KAAK;AAAA,IACtE,eAAe,SAAS;AAAA,IACxB,YAAY,SAAS;AAAA,IACrB,YAAY,SAAS;AAAA,IACrB,GAAI,YAAY,SAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,KAAK;AAAA,EACpF;AACF;AAEO,SAAS,YAAY,OAA4B;AACtD,SAAO;AAAA,IACL,gBAAgB,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC;AAAA,IACzC,cAAc,OAAO,KAAK,OAAO,QAAQ,IAAI,OAAO,QAAQ,KAAK,OAAO,GAAK,IAAI,GAAK;AAAA,IACtF,uBAAuB,QAAQ,QAAQ,IAAI,OAAO,QAAQ,KAAK,GAAG;AAAA,EACpE;AACF;AAEO,SAAS,eACd,OACA,OACA,SACgB;AAChB,SAAO;AAAA,IACL,sBAAsB,QAAQ,cAAc,OAAO,KAAK,CAAC;AAAA,IACzD,GAAI,YAAY,SAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,KAAK;AAAA,EACpF;AACF;AAGO,SAAS,mBACd,OACA,OACA,SACgB;AAChB,SAAO;AAAA,IACL,sBAAsB,SAAU,QAAQ,OAAO,KAAK,IAAI,OAAO,CAAC,IAAK,GAAG;AAAA,IACxE,GAAI,YAAY,SAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,KAAK;AAAA,EACpF;AACF;AAEO,SAAS,YAAY,SAA0C;AACpE,SAAO,YAAY,SAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,KAAK;AACvF;AAEO,SAAS,UAAU,MAAiB,UAA6B;AACtE,QAAM,QAAQ,QAAQ,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC;AAC1D,MAAI,SAAS,IAAK,QAAO,EAAE,iBAAiB,MAAM;AAClD,SAAO,EAAE,iBAAiB,MAAM;AAClC;AAEO,SAAS,cACd,WACA,UACsB;AACtB,SAAO,aAAa;AACtB;","names":[]}
|
|
@@ -20,6 +20,8 @@ export interface LineChartOwnProps {
|
|
|
20
20
|
readonly cursorY?: number;
|
|
21
21
|
readonly data: readonly LineChartData[];
|
|
22
22
|
readonly interactive?: boolean;
|
|
23
|
+
/** BCP 47 locale for default axis labels. Defaults to `"en-US"`. */
|
|
24
|
+
readonly locale?: string;
|
|
23
25
|
readonly onPointClick?: (index: number) => void;
|
|
24
26
|
readonly onPointPointerLeave?: () => void;
|
|
25
27
|
readonly onPointPointerMove?: (position: LineChartPointerPosition) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/line-chart/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import type { ModalProps } from "./types.js";
|
|
|
6
6
|
* Controlled or initially open dialogs use `ModalClientContent` from
|
|
7
7
|
* `@gunkin/uiify/components/modal/client`.
|
|
8
8
|
*/
|
|
9
|
-
export declare function Modal({ id, trigger, title, description, children, closeLabel, footer, className, align, backdrop, dismiss, size, }: ModalProps): ReactElement;
|
|
9
|
+
export declare function Modal({ id, trigger, title, description, children, closeLabel, labels, footer, className, align, backdrop, dismiss, size, }: ModalProps): ReactElement;
|
|
10
10
|
export declare namespace Modal {
|
|
11
11
|
var displayName: string;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAYrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAYrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAyB7C;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,EACpB,EAAE,EACF,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,IAAI,GACL,EAAE,UAAU,GAAG,YAAY,CAiC3B;yBA/Ce,KAAK"}
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
ModalTitle,
|
|
11
11
|
ModalTrigger
|
|
12
12
|
} from "./ModalParts.js";
|
|
13
|
+
const DEFAULT_MODAL_LABELS = { close: "Close" };
|
|
13
14
|
const CLOSE_ICON = /* @__PURE__ */ jsx(
|
|
14
15
|
"svg",
|
|
15
16
|
{
|
|
@@ -34,7 +35,8 @@ function Modal({
|
|
|
34
35
|
title,
|
|
35
36
|
description,
|
|
36
37
|
children,
|
|
37
|
-
closeLabel
|
|
38
|
+
closeLabel,
|
|
39
|
+
labels,
|
|
38
40
|
footer,
|
|
39
41
|
className,
|
|
40
42
|
align,
|
|
@@ -44,6 +46,7 @@ function Modal({
|
|
|
44
46
|
}) {
|
|
45
47
|
const titleId = `${id}-title`;
|
|
46
48
|
const descriptionId = `${id}-description`;
|
|
49
|
+
const effectiveCloseLabel = closeLabel ?? labels?.close ?? DEFAULT_MODAL_LABELS.close;
|
|
47
50
|
return /* @__PURE__ */ jsxs("div", { "data-part": "root", "data-uiify-modal": "", children: [
|
|
48
51
|
/* @__PURE__ */ jsx(ModalTrigger, { target: id, children: trigger }),
|
|
49
52
|
/* @__PURE__ */ jsxs(
|
|
@@ -62,7 +65,7 @@ function Modal({
|
|
|
62
65
|
/* @__PURE__ */ jsxs(ModalHeader, { children: [
|
|
63
66
|
/* @__PURE__ */ jsx(ModalTitle, { id: titleId, children: title }),
|
|
64
67
|
isAbsent(description) ? null : /* @__PURE__ */ jsx(ModalDescription, { id: descriptionId, children: description }),
|
|
65
|
-
/* @__PURE__ */ jsx(ModalClose, { "aria-label":
|
|
68
|
+
/* @__PURE__ */ jsx(ModalClose, { "aria-label": effectiveCloseLabel, target: id, children: CLOSE_ICON })
|
|
66
69
|
] }),
|
|
67
70
|
isAbsent(children) ? null : /* @__PURE__ */ jsx(ModalBody, { children }),
|
|
68
71
|
isAbsent(footer) ? null : /* @__PURE__ */ jsx(ModalFooter, { children: footer })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type { ReactElement, ReactNode } from \"react\";\nimport {\n ModalBody,\n ModalClose,\n ModalContent,\n ModalDescription,\n ModalFooter,\n ModalGrabber,\n ModalHeader,\n ModalTitle,\n ModalTrigger,\n} from \"./ModalParts.js\";\nimport type { ModalProps } from \"./types.js\";\n\nconst CLOSE_ICON = (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n focusable=\"false\"\n height=\"14\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.75\"\n viewBox=\"0 0 16 16\"\n width=\"14\"\n >\n <path d=\"M3 3l10 10M13 3L3 13\" />\n </svg>\n);\n\n/** `null` and `undefined` both mean \"not given\": no empty part, no dangling `aria-describedby`. */\nfunction isAbsent(node: ReactNode): node is null | undefined {\n return node === null || node === undefined;\n}\n\n/**\n * Convenience shell over the native parts: one trigger and one modal `<dialog>`\n * with a header (title, description, close icon), a body and an optional footer.\n * Controlled or initially open dialogs use `ModalClientContent` from\n * `@gunkin/uiify/components/modal/client`.\n */\nexport function Modal({\n id,\n trigger,\n title,\n description,\n children,\n closeLabel
|
|
1
|
+
{"version":3,"sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type { ReactElement, ReactNode } from \"react\";\nimport {\n ModalBody,\n ModalClose,\n ModalContent,\n ModalDescription,\n ModalFooter,\n ModalGrabber,\n ModalHeader,\n ModalTitle,\n ModalTrigger,\n} from \"./ModalParts.js\";\nimport type { ModalProps } from \"./types.js\";\n\nconst DEFAULT_MODAL_LABELS = { close: \"Close\" } as const;\n\nconst CLOSE_ICON = (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n focusable=\"false\"\n height=\"14\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"1.75\"\n viewBox=\"0 0 16 16\"\n width=\"14\"\n >\n <path d=\"M3 3l10 10M13 3L3 13\" />\n </svg>\n);\n\n/** `null` and `undefined` both mean \"not given\": no empty part, no dangling `aria-describedby`. */\nfunction isAbsent(node: ReactNode): node is null | undefined {\n return node === null || node === undefined;\n}\n\n/**\n * Convenience shell over the native parts: one trigger and one modal `<dialog>`\n * with a header (title, description, close icon), a body and an optional footer.\n * Controlled or initially open dialogs use `ModalClientContent` from\n * `@gunkin/uiify/components/modal/client`.\n */\nexport function Modal({\n id,\n trigger,\n title,\n description,\n children,\n closeLabel,\n labels,\n footer,\n className,\n align,\n backdrop,\n dismiss,\n size,\n}: ModalProps): ReactElement {\n const titleId = `${id}-title`;\n const descriptionId = `${id}-description`;\n const effectiveCloseLabel = closeLabel ?? labels?.close ?? DEFAULT_MODAL_LABELS.close;\n\n return (\n <div data-part=\"root\" data-uiify-modal=\"\">\n <ModalTrigger target={id}>{trigger}</ModalTrigger>\n <ModalContent\n align={align}\n aria-describedby={isAbsent(description) ? undefined : descriptionId}\n aria-labelledby={titleId}\n backdrop={backdrop}\n className={className}\n dismiss={dismiss}\n id={id}\n size={size}\n >\n <ModalGrabber />\n <ModalHeader>\n <ModalTitle id={titleId}>{title}</ModalTitle>\n {isAbsent(description) ? null : (\n <ModalDescription id={descriptionId}>{description}</ModalDescription>\n )}\n <ModalClose aria-label={effectiveCloseLabel} target={id}>\n {CLOSE_ICON}\n </ModalClose>\n </ModalHeader>\n {isAbsent(children) ? null : <ModalBody>{children}</ModalBody>}\n {isAbsent(footer) ? null : <ModalFooter>{footer}</ModalFooter>}\n </ModalContent>\n </div>\n );\n}\nModal.displayName = \"Modal\";\n"],"mappings":"AA4BI,cAgDI,YAhDJ;AA3BJ;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,MAAM,uBAAuB,EAAE,OAAO,QAAQ;AAE9C,MAAM,aACJ;AAAA,EAAC;AAAA;AAAA,IACC,eAAY;AAAA,IACZ,MAAK;AAAA,IACL,WAAU;AAAA,IACV,QAAO;AAAA,IACP,QAAO;AAAA,IACP,eAAc;AAAA,IACd,aAAY;AAAA,IACZ,SAAQ;AAAA,IACR,OAAM;AAAA,IAEN,8BAAC,UAAK,GAAE,wBAAuB;AAAA;AACjC;AAIF,SAAS,SAAS,MAA2C;AAC3D,SAAO,SAAS,QAAQ,SAAS;AACnC;AAQO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAC3B,QAAM,UAAU,GAAG,EAAE;AACrB,QAAM,gBAAgB,GAAG,EAAE;AAC3B,QAAM,sBAAsB,cAAc,QAAQ,SAAS,qBAAqB;AAEhF,SACE,qBAAC,SAAI,aAAU,QAAO,oBAAiB,IACrC;AAAA,wBAAC,gBAAa,QAAQ,IAAK,mBAAQ;AAAA,IACnC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,oBAAkB,SAAS,WAAW,IAAI,SAAY;AAAA,QACtD,mBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,8BAAC,gBAAa;AAAA,UACd,qBAAC,eACC;AAAA,gCAAC,cAAW,IAAI,SAAU,iBAAM;AAAA,YAC/B,SAAS,WAAW,IAAI,OACvB,oBAAC,oBAAiB,IAAI,eAAgB,uBAAY;AAAA,YAEpD,oBAAC,cAAW,cAAY,qBAAqB,QAAQ,IAClD,sBACH;AAAA,aACF;AAAA,UACC,SAAS,QAAQ,IAAI,OAAO,oBAAC,aAAW,UAAS;AAAA,UACjD,SAAS,MAAM,IAAI,OAAO,oBAAC,eAAa,kBAAO;AAAA;AAAA;AAAA,IAClD;AAAA,KACF;AAEJ;AACA,MAAM,cAAc;","names":[]}
|