@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,38 @@
|
|
|
1
|
+
# description-list
|
|
2
|
+
|
|
3
|
+
Binding: description-list
|
|
4
|
+
|
|
5
|
+
Present descriptive terms and their associated values.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
Show descriptive metadata as terms with associated values, such as status and owner.
|
|
10
|
+
|
|
11
|
+
## Avoid when
|
|
12
|
+
|
|
13
|
+
Use a table for tabular data and a list for tasks or actions. Do not use `dl` as a generic visual grid without term/value relationships.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
`DescriptionList` renders `dl`; compose `DescriptionTerm` (`dt`) and `DescriptionDetails` (`dd`) in consumer-authored source order. Keep each term adjacent to its description. Multiple terms or descriptions may be grouped when the content calls for it; no table roles or action-column API is added.
|
|
18
|
+
|
|
19
|
+
## Responsive
|
|
20
|
+
|
|
21
|
+
Let terms and long values wrap. A visual grid may stack at narrow widths, but DOM order remains term then details and uses logical CSS.
|
|
22
|
+
|
|
23
|
+
## States
|
|
24
|
+
|
|
25
|
+
This is static descriptive content with no selection or interaction state.
|
|
26
|
+
|
|
27
|
+
## Verify
|
|
28
|
+
|
|
29
|
+
Check source order, term/value pairing, long and CJK values, RTL, and zoom reflow. Assistive-technology announcements vary; no browser or screen-reader verification is recorded.
|
|
30
|
+
|
|
31
|
+
## Common mistake
|
|
32
|
+
|
|
33
|
+
Do not replace the native `dl`/`dt`/`dd` structure with table roles or make values depend on visual column alignment.
|
|
34
|
+
|
|
35
|
+
## Sources
|
|
36
|
+
|
|
37
|
+
- [design-system.service.gov.uk](https://design-system.service.gov.uk/components/summary-list/) (verified 2026-10-19)
|
|
38
|
+
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dl) (verified 2026-10-19)
|
|
@@ -1,50 +1,39 @@
|
|
|
1
1
|
# empty-state
|
|
2
2
|
|
|
3
|
-
Binding:
|
|
3
|
+
Binding: empty
|
|
4
4
|
|
|
5
|
-
Explain
|
|
5
|
+
Explain an empty collection and offer a relevant next step.
|
|
6
6
|
|
|
7
7
|
## Use when
|
|
8
8
|
|
|
9
|
-
A collection has no items and the person needs
|
|
9
|
+
A collection has no items and the person needs a clear explanation and useful next step.
|
|
10
10
|
|
|
11
11
|
## Avoid when
|
|
12
12
|
|
|
13
|
-
Do not
|
|
13
|
+
Do not use the same message for loading, errors, access denial, or filtered no-results. Name the actual state.
|
|
14
14
|
|
|
15
15
|
## Structure
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
`Empty` renders a `section`; compose `EmptyTitle` (`h2`), `EmptyDescription` (`p`), and optional `EmptyContent` (`div`). Use a heading level that fits the page. For a button-styled destination, use the published `Button` with `as="a"` and `href`; use a plain link when link styling is intended. Keep all copy caller-owned. This is static content: it does not announce with `status` or `alert`.
|
|
18
18
|
|
|
19
19
|
## Responsive
|
|
20
20
|
|
|
21
|
-
Keep the
|
|
21
|
+
Keep the explanation and action close in source order. Let long and translated copy wrap; do not constrain it to a narrow text column.
|
|
22
22
|
|
|
23
23
|
## States
|
|
24
24
|
|
|
25
|
-
Distinguish first-use empty
|
|
25
|
+
Distinguish first-use empty from no matches, loading, and unavailable/error. A caller that updates results dynamically owns any announcement behavior.
|
|
26
26
|
|
|
27
27
|
## Verify
|
|
28
28
|
|
|
29
|
-
Check
|
|
29
|
+
Check heading order, relevant action and destination, keyboard access, translated long-copy reflow, and static reading without JavaScript. Browser and assistive-technology proof is pending.
|
|
30
30
|
|
|
31
31
|
## Common mistake
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## Custom implementation
|
|
36
|
-
|
|
37
|
-
```html
|
|
38
|
-
<section aria-labelledby="empty-title">
|
|
39
|
-
<h2 id="empty-title">No invoices yet</h2>
|
|
40
|
-
<p>Create an invoice to see it listed here.</p>
|
|
41
|
-
<a href="/invoices/new">Create invoice</a>
|
|
42
|
-
</section>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
This is an app-level composition; UIify does not currently ship this component.
|
|
33
|
+
Do not label static content as a live region or offer an unrelated create action for a filtered search.
|
|
46
34
|
|
|
47
35
|
## Sources
|
|
48
36
|
|
|
49
|
-
- [
|
|
50
|
-
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/
|
|
37
|
+
- [ui.shadcn.com](https://ui.shadcn.com/docs/components/base/empty) (verified 2026-10-19)
|
|
38
|
+
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/headings-and-labels.html) (verified 2026-10-19)
|
|
39
|
+
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/alert_role) (verified 2026-10-19)
|
|
@@ -22,7 +22,7 @@ Keep labels and help text close to the control at narrow widths. Let long instru
|
|
|
22
22
|
|
|
23
23
|
## States
|
|
24
24
|
|
|
25
|
-
Native required validation works without JavaScript. For application validation, set `invalid` on Root and Control and render `Field.Error` with the same state after validation.
|
|
25
|
+
Native required validation works without JavaScript. For application validation, set `invalid` on Root and Control and render `Field.Error` with the same state after validation. Keep `Field.Description` mounted alongside the conditional Error: Control always references its derived description ID. Parts own their IDs and Control's ARIA relationships; omit manual `id`/`aria-describedby` overrides. The error is included while invalid.
|
|
26
26
|
|
|
27
27
|
## Verify
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ Click the label and confirm its control receives focus. Inspect the accessibilit
|
|
|
30
30
|
|
|
31
31
|
## Common mistake
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Use `Field.Control as="input"`, which supplies the UIify Input marker and derived control ID. A standalone `Input id={rootId}` duplicates Root's ID and disconnects Field.Label. Do not guess ID suffixes; adapt the complete example. Click the label to verify the relationship.
|
|
34
34
|
|
|
35
35
|
Example: `references/examples/field-validation.md`.
|
|
36
36
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# fieldset
|
|
2
|
+
|
|
3
|
+
Binding: fieldset
|
|
4
|
+
|
|
5
|
+
Give related form controls a native group name with a legend.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
Related controls need a native group name, such as contact preferences or one radio question.
|
|
10
|
+
|
|
11
|
+
## Avoid when
|
|
12
|
+
|
|
13
|
+
Do not wrap every individual field in a fieldset or use one for unrelated controls.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
`Fieldset` renders `fieldset`; put `FieldsetLegend` (`legend`) first. The legend names the group, not each control. Give every input its own label. Compose published `Checkbox` controls for checkbox choices; `name` and `value` preserve native form submission. Keep caller-authored help/error relationships and native fieldset props.
|
|
18
|
+
|
|
19
|
+
## Responsive
|
|
20
|
+
|
|
21
|
+
Let legend and labels wrap in source order. Style the native outer group without obscuring descendant focus.
|
|
22
|
+
|
|
23
|
+
## States
|
|
24
|
+
|
|
25
|
+
Preserve native `disabled`: it disables descendant controls except controls inside the first legend. The component adds no synthetic group role or hidden legend.
|
|
26
|
+
|
|
27
|
+
## Verify
|
|
28
|
+
|
|
29
|
+
Check first-child legend, individual labels, group announcement, keyboard access, disabled descendants, RTL, and narrow/zoom reflow. Browser and assistive-technology proof is pending.
|
|
30
|
+
|
|
31
|
+
## Common mistake
|
|
32
|
+
|
|
33
|
+
Do not use `role="group"` on a `div` instead of native fieldset/legend semantics, or treat the legend as a control's label.
|
|
34
|
+
|
|
35
|
+
## Sources
|
|
36
|
+
|
|
37
|
+
- [design-system.service.gov.uk](https://design-system.service.gov.uk/components/fieldset/) (verified 2026-10-19)
|
|
38
|
+
- [html.spec.whatwg.org](https://html.spec.whatwg.org/multipage/forms.html) (verified 2026-10-19)
|
|
39
|
+
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/fieldset) (verified 2026-10-19)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# form-error-summary
|
|
2
|
+
|
|
3
|
+
Binding: form-error-summary
|
|
4
|
+
|
|
5
|
+
List form errors with links to the affected fields.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
A server-rendered form response needs a summary of errors and navigation to affected fields.
|
|
10
|
+
|
|
11
|
+
## Avoid when
|
|
12
|
+
|
|
13
|
+
Do not expect this static component to validate fields, announce dynamic updates, move focus, or repair missing IDs.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
`FormErrorSummary` takes required `title: ReactNode` and `errors: readonly { href: string; message: ReactNode }[]`. It renders a `section`, heading, and list of links. Name the section with native `aria-label` when useful. Each `href` must target a unique field ID in the same form instance. Use the published `Input` or `Field.Control` for matching fields, and associate matching inline error text with the control using caller-owned `aria-describedby`. An empty error array renders `null`.
|
|
18
|
+
|
|
19
|
+
## Responsive
|
|
20
|
+
|
|
21
|
+
Keep error links readable and allow long messages to wrap. Preserve the document order between the summary and form.
|
|
22
|
+
|
|
23
|
+
## States
|
|
24
|
+
|
|
25
|
+
The component is static and has no `role="alert"`, live region, focus movement, or validation engine. Use dynamic announcements only in caller-owned behavior when the application updates errors.
|
|
26
|
+
|
|
27
|
+
## Verify
|
|
28
|
+
|
|
29
|
+
Check every link target, matching field and inline description, empty rendering, keyboard fragment navigation, and long-copy reflow. Browser and assistive-technology behavior is pending verification.
|
|
30
|
+
|
|
31
|
+
## Common mistake
|
|
32
|
+
|
|
33
|
+
Do not repeat field IDs when mounting multiple examples: prefix every input, label, description and error link consistently. Do not render dead fragment links, replace inline errors with the summary, promise automatic focus, or mark initial static content as an urgent alert.
|
|
34
|
+
|
|
35
|
+
## Sources
|
|
36
|
+
|
|
37
|
+
- [design-system.service.gov.uk](https://design-system.service.gov.uk/components/error-summary/) (verified 2026-10-19)
|
|
38
|
+
- [www.w3.org](https://www.w3.org/WAI/tutorials/forms/notifications/) (verified 2026-10-19)
|
|
39
|
+
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/alert_role) (verified 2026-10-19)
|
|
@@ -1,46 +1,38 @@
|
|
|
1
1
|
# inline-alert
|
|
2
2
|
|
|
3
|
-
Binding:
|
|
3
|
+
Binding: alert
|
|
4
4
|
|
|
5
|
-
Give a short message context beside the content it affects.
|
|
5
|
+
Give a short persistent message context beside the content it affects.
|
|
6
6
|
|
|
7
7
|
## Use when
|
|
8
8
|
|
|
9
|
-
A message belongs beside the content or control it explains
|
|
9
|
+
A message belongs beside the content or control it explains and should remain visible.
|
|
10
10
|
|
|
11
11
|
## Avoid when
|
|
12
12
|
|
|
13
|
-
Do not use
|
|
13
|
+
Do not use a persistent alert for transient success or add an assertive live role to routine initial content.
|
|
14
14
|
|
|
15
15
|
## Structure
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Compose `Alert`, `AlertTitle`, and `AlertDescription` from `@gunkin/uiify/components/alert`. The static root owns `data-uiify-alert` and a `data-variant` (default `secondary`). It supplies a decorative text symbol: ⓘ, ✓, ⚠︎, or × for `secondary`, `success`, `warning`, or `destructive`. Pass `symbol="!"` to override it or `symbol={false}` to hide it. No SVG or demo layout is needed. Title/description expose `data-part="title|description"`; the built-in glyph is `data-part="symbol"`. The component adds no `role` by default.
|
|
18
18
|
|
|
19
19
|
## Responsive
|
|
20
20
|
|
|
21
|
-
Keep the message
|
|
21
|
+
Keep the message beside affected content. The optional package stylesheet handles wrapping, logical symbol placement and part typography. With Tailwind, style those same attributes/parts. Keep severity in the title or description; the glyph is hidden from assistive technology.
|
|
22
22
|
|
|
23
23
|
## States
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Pass `role="status"` for a dynamic non-urgent update or `role="alert"` for urgent content only when timing and urgency warrant announcement. Alert does not dismiss or move focus.
|
|
26
26
|
|
|
27
27
|
## Verify
|
|
28
28
|
|
|
29
|
-
Check
|
|
29
|
+
Check every variant, a hidden/custom symbol, default role, native props/ref forwarding and copied CSS/Tailwind code. For dynamic messages, test actual announcement timing and avoid duplicate live regions.
|
|
30
30
|
|
|
31
31
|
## Common mistake
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## Custom implementation
|
|
36
|
-
|
|
37
|
-
```html
|
|
38
|
-
<p role="status">Changes saved.</p>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
This is an app-level composition; UIify does not currently ship this component.
|
|
33
|
+
Use the real `variant` instead of making every outcome `secondary` and rebuilding its icon/layout in a demo wrapper. `role="alert"` is only for an urgent announcement.
|
|
42
34
|
|
|
43
35
|
## Sources
|
|
44
36
|
|
|
45
|
-
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html) (verified 2026-10-
|
|
46
|
-
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html) (verified 2026-10-
|
|
37
|
+
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html) (verified 2026-10-19)
|
|
38
|
+
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html) (verified 2026-10-19)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# input-group
|
|
2
|
+
|
|
3
|
+
Binding: input-group
|
|
4
|
+
|
|
5
|
+
Place text affixes or a related action beside a native input.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
Place a short prefix/suffix or a related native action beside an input.
|
|
10
|
+
|
|
11
|
+
## Avoid when
|
|
12
|
+
|
|
13
|
+
Do not use affix text as the only label or make passive text look clickable. Keep the input separate when the grouping harms reflow.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
`InputGroup` is a `div` layout wrapper. Compose the published `Input` for a matching field and `Button` for a related action; keep native children only when their needed behavior is not covered. Use `InputGroupAddon` for an add-on; its required `align` is `start` or `end` and appears as `data-align`. Keep a visible label associated with the input. If affix text gives instructions or a unit, include it in the input's `aria-describedby`.
|
|
18
|
+
|
|
19
|
+
## Responsive
|
|
20
|
+
|
|
21
|
+
Let the input shrink and long affix/action text wrap without clipping or hiding controls. Keep start/input/end in source order and use logical inline layout for RTL.
|
|
22
|
+
|
|
23
|
+
## States
|
|
24
|
+
|
|
25
|
+
Native input and action own their focus, disabled, and validation states. Keep server-invalid styling visible while the input is focused. Disabling an input does not disable a separate action. The group adds no click-to-focus behavior.
|
|
26
|
+
|
|
27
|
+
## Verify
|
|
28
|
+
|
|
29
|
+
With scripts disabled, check the label, affix, independently operable action, focus order, RTL, and long-copy reflow at narrow width and zoom. Browser proof is pending.
|
|
30
|
+
|
|
31
|
+
## Common mistake
|
|
32
|
+
|
|
33
|
+
Do not treat a protocol prefix or icon as a label. A displayed prefix is not part of the submitted value: a domain-only field with `https://` beside it uses `type="text"` and caller-owned URL assembly; `type="url"` expects the complete URL. Use unique field/description IDs for each example instance. Do not show an inert verification/copy button; use a real native form action or link.
|
|
34
|
+
|
|
35
|
+
## Sources
|
|
36
|
+
|
|
37
|
+
- [designsystem.digital.gov](https://designsystem.digital.gov/components/input-prefix-suffix/) (verified 2026-10-19)
|
|
38
|
+
- [ui.shadcn.com](https://ui.shadcn.com/docs/components/aria/input-group) (verified 2026-10-19)
|
|
39
|
+
- [www.w3.org](https://www.w3.org/WAI/tutorials/forms/labels/) (verified 2026-10-19)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# item
|
|
2
|
+
|
|
3
|
+
Binding: item
|
|
4
|
+
|
|
5
|
+
Compose a list row with primary content, metadata, media, and a separate action.
|
|
6
|
+
|
|
7
|
+
## Use when
|
|
8
|
+
|
|
9
|
+
A real list needs a row with leading media, primary content, metadata, and a separate action.
|
|
10
|
+
|
|
11
|
+
## Avoid when
|
|
12
|
+
|
|
13
|
+
Do not use standalone `li` outside `ul`/`ol`. This is not a selectable list, menu, or whole-row click target.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
Put `Item` (`li` by default) inside `ul` or `ol`. Compose sibling `ItemMedia` (`span`), `ItemContent` (`div`), optional `ItemMetadata` (`div`), and `ItemActions` (`div`). Put primary navigation in an actual link and use the published `Button` for button actions. Choose meaningful image alt text or `alt=""` for decorative media.
|
|
18
|
+
|
|
19
|
+
## Responsive
|
|
20
|
+
|
|
21
|
+
Keep DOM order aligned with reading order. Allow title and metadata to wrap and keep actions visible at narrow widths and zoom; do not rely on truncation for essential text.
|
|
22
|
+
|
|
23
|
+
## States
|
|
24
|
+
|
|
25
|
+
There is no selection, hover-reveal, or list keyboard state. Child links/buttons own their native states and focus.
|
|
26
|
+
|
|
27
|
+
## Verify
|
|
28
|
+
|
|
29
|
+
Check list/list-item semantics, source and tab order, image alternatives, long/CJK text, RTL, and zoom reflow. Browser and assistive-technology proof is pending.
|
|
30
|
+
|
|
31
|
+
## Common mistake
|
|
32
|
+
|
|
33
|
+
Do not turn the whole row into a click handler or nest an action button inside a row link.
|
|
34
|
+
|
|
35
|
+
## Sources
|
|
36
|
+
|
|
37
|
+
- [ui.shadcn.com](https://ui.shadcn.com/docs/components/aria/item) (verified 2026-10-19)
|
|
38
|
+
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/li) (verified 2026-10-19)
|
|
39
|
+
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ul) (verified 2026-10-19)
|
|
@@ -22,7 +22,7 @@ On narrow screens the default modal becomes a full-width bottom sheet. Its body
|
|
|
22
22
|
|
|
23
23
|
## States
|
|
24
24
|
|
|
25
|
-
The native `show-modal` dialog blocks interaction with the page.
|
|
25
|
+
The native `show-modal` dialog blocks interaction with the page. Default dismissal allows Escape. `dismiss="none"` uses native `closedby`; Safari ignores it and still permits Escape. Verify supported engines. Controlled or initially open state requires `ModalClientContent` from `@gunkin/uiify/components/modal/client`.
|
|
26
26
|
|
|
27
27
|
## Verify
|
|
28
28
|
|
|
@@ -8,6 +8,8 @@ Enter a numeric quantity with optional bounds and step controls.
|
|
|
8
8
|
|
|
9
9
|
Enter a quantity for which numeric stepping and bounds are meaningful.
|
|
10
10
|
|
|
11
|
+
Set `locale` to control both number formatting and parsing, including locale-specific digits and separators.
|
|
12
|
+
|
|
11
13
|
## Avoid when
|
|
12
14
|
|
|
13
15
|
Do not use a number field for identifiers, postal codes, card numbers, or values where spinbutton behavior is not useful; use a text input instead.
|
|
@@ -8,6 +8,8 @@ Navigate between pages of a result set.
|
|
|
8
8
|
|
|
9
9
|
Let people move through a result set split into discrete pages.
|
|
10
10
|
|
|
11
|
+
Set `locale` to format page numbers, and translate the `labels.page` template using its `{page}` placeholder.
|
|
12
|
+
|
|
11
13
|
## Avoid when
|
|
12
14
|
|
|
13
15
|
Do not paginate a small result set that is easier to scan as one list, or imply that ellipses are links.
|
|
@@ -1,47 +1,38 @@
|
|
|
1
1
|
# progress-bar
|
|
2
2
|
|
|
3
|
-
Binding:
|
|
3
|
+
Binding: progress
|
|
4
4
|
|
|
5
|
-
Show determinate
|
|
5
|
+
Show determinate or indeterminate progress for a task.
|
|
6
6
|
|
|
7
7
|
## Use when
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Show the completion of a task with a known range, or use indeterminate progress when the amount completed is unknown.
|
|
10
10
|
|
|
11
11
|
## Avoid when
|
|
12
12
|
|
|
13
|
-
Do not use
|
|
13
|
+
Do not use Progress for a static measurement or score; use `meter` for a measured quantity.
|
|
14
14
|
|
|
15
15
|
## Structure
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
`Progress` renders native `<progress>`. Set `value` and a positive `max` for a known amount; omit `value` for indeterminate progress. Give it an accessible name with an associated `<label>`, `aria-label`, or `aria-labelledby`.
|
|
18
18
|
|
|
19
19
|
## Responsive
|
|
20
20
|
|
|
21
|
-
Keep the label and
|
|
21
|
+
Keep the label and indicator together in reading order. The optional skin fills the available inline size; native browser rendering can differ.
|
|
22
22
|
|
|
23
23
|
## States
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
The browser exposes determinate or indeterminate semantics from the native attributes. UIify does not simulate value changes or announce them.
|
|
26
26
|
|
|
27
27
|
## Verify
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
Unit and public-page tests check native determinate and indeterminate markup and an associated label. In the consuming page, keep `value` between zero and `max` and check the accessible name.
|
|
30
30
|
|
|
31
31
|
## Common mistake
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## Custom implementation
|
|
36
|
-
|
|
37
|
-
```html
|
|
38
|
-
<label for="upload-progress">Upload</label>
|
|
39
|
-
<progress id="upload-progress" value="3" max="5"></progress>
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
This is an app-level composition; UIify does not currently ship this component.
|
|
33
|
+
Text inside `<progress>` is not its accessible name; associate a label or provide an ARIA name.
|
|
43
34
|
|
|
44
35
|
## Sources
|
|
45
36
|
|
|
46
|
-
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/progress) (verified 2026-10-
|
|
47
|
-
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html) (verified 2026-10-
|
|
37
|
+
- [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/progress) (verified 2026-10-19)
|
|
38
|
+
- [www.w3.org](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html) (verified 2026-10-19)
|
|
@@ -14,7 +14,7 @@ Avoid a select when users must compare several options at once or when the task
|
|
|
14
14
|
|
|
15
15
|
## Structure
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Wrap `Select.Root` in a native `<label>` as in the example. Alternatively, match a native label's `htmlFor` to an explicit unique `id` on Select.Root. `Field.Label` derives the ID for Field.Control; it does not label a standalone Select.Root. Do not reuse Field.Root's ID on the select. Group related options with `optgroup`; an empty prompt is for an optional value.
|
|
18
18
|
|
|
19
19
|
## Responsive
|
|
20
20
|
|
|
@@ -7,18 +7,30 @@ Export: `AlertConfirmation`
|
|
|
7
7
|
## Source
|
|
8
8
|
|
|
9
9
|
```tsx
|
|
10
|
-
|
|
10
|
+
"use client";
|
|
11
|
+
|
|
12
|
+
import { useRef, useState } from "react";
|
|
13
|
+
import { AlertModalAction, AlertModalCancel, AlertModalContent, AlertModalTrigger } from "@gunkin/uiify/components/alert-modal";
|
|
11
14
|
|
|
12
15
|
export function AlertConfirmation() {
|
|
16
|
+
const [deleted, setDeleted] = useState(false);
|
|
17
|
+
const heading = useRef<HTMLHeadingElement>(null);
|
|
13
18
|
return (
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
<section>
|
|
20
|
+
<h2 ref={heading} tabIndex={-1}>Draft</h2>
|
|
21
|
+
{deleted ? <p role="status">Draft removed from this demo.</p> : <>
|
|
22
|
+
<AlertModalTrigger target="delete-draft">Delete draft</AlertModalTrigger>
|
|
23
|
+
<AlertModalContent id="delete-draft" aria-labelledby="delete-draft-title" aria-describedby="delete-draft-description">
|
|
24
|
+
<h3 id="delete-draft-title">Delete draft?</h3>
|
|
25
|
+
<p id="delete-draft-description">This removes the draft from this demo.</p>
|
|
26
|
+
<AlertModalCancel target="delete-draft">Keep draft</AlertModalCancel>
|
|
27
|
+
<AlertModalAction target="delete-draft" onClick={() => {
|
|
28
|
+
setDeleted(true);
|
|
29
|
+
requestAnimationFrame(() => heading.current?.focus());
|
|
30
|
+
}}>Delete</AlertModalAction>
|
|
31
|
+
</AlertModalContent>
|
|
32
|
+
</>}
|
|
33
|
+
</section>
|
|
22
34
|
);
|
|
23
35
|
}
|
|
24
36
|
```
|
|
@@ -10,7 +10,7 @@ Export: `FieldValidation`
|
|
|
10
10
|
"use client";
|
|
11
11
|
|
|
12
12
|
import { useState } from "react";
|
|
13
|
-
import { Field } from "@gunkin/uiify";
|
|
13
|
+
import { Field } from "@gunkin/uiify/components/field";
|
|
14
14
|
|
|
15
15
|
export function FieldValidation() {
|
|
16
16
|
const [email, setEmail] = useState("");
|
|
@@ -18,7 +18,7 @@ export function FieldValidation() {
|
|
|
18
18
|
return (
|
|
19
19
|
<Field.Root id="email" invalid={invalid}>
|
|
20
20
|
<Field.Label fieldId="email">Email</Field.Label>
|
|
21
|
-
<Field.Control fieldId="email" as="input" type="email" invalid={invalid} value={email} onChange={(event) => setEmail(event.currentTarget.value)} />
|
|
21
|
+
<Field.Control fieldId="email" as="input" name="email" type="email" invalid={invalid} value={email} onChange={(event) => setEmail(event.currentTarget.value)} />
|
|
22
22
|
<Field.Description fieldId="email">We will send your receipt here.</Field.Description>
|
|
23
23
|
{invalid ? <Field.Error fieldId="email" invalid>Enter a valid email address.</Field.Error> : null}
|
|
24
24
|
</Field.Root>
|
|
@@ -10,7 +10,8 @@ Export: `TableControls`
|
|
|
10
10
|
"use client";
|
|
11
11
|
|
|
12
12
|
import { useState } from "react";
|
|
13
|
-
import {
|
|
13
|
+
import { Input } from "@gunkin/uiify/components/input";
|
|
14
|
+
import { Table } from "@gunkin/uiify/components/table";
|
|
14
15
|
|
|
15
16
|
const people = ["Ada Lovelace", "Grace Hopper", "Katherine Johnson"];
|
|
16
17
|
|
|
@@ -19,7 +20,7 @@ export function TableControls() {
|
|
|
19
20
|
const visible = people.filter((person) => person.toLowerCase().includes(query.toLowerCase()));
|
|
20
21
|
return (
|
|
21
22
|
<section>
|
|
22
|
-
<label>Filter people <
|
|
23
|
+
<label>Filter people <Input value={query} onValueChange={setQuery} /></label>
|
|
23
24
|
<Table.Root>
|
|
24
25
|
<Table.Header><Table.Row id="header"><Table.ColumnHeader id="name-heading">Name</Table.ColumnHeader></Table.Row></Table.Header>
|
|
25
26
|
<Table.Body>{visible.map((person) => <Table.Row id={person} key={person}><Table.Cell>{person}</Table.Cell></Table.Row>)}</Table.Body>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Localization
|
|
2
|
+
|
|
3
|
+
Use this guide when the project has an i18n setup (`next-intl`, `i18next`, `react-intl`, `@lingui/*`, `@inlang/paraglide-*`, or `locales/`, `messages/`, or `i18n/` folders), the request mentions languages, translation, RTL, Arabic, Hebrew or CJK, or the page declares `<html dir="rtl">`.
|
|
4
|
+
|
|
5
|
+
## Copy
|
|
6
|
+
|
|
7
|
+
Put every user-visible string in the project's message catalog. Pass translated UIify strings through `labels`, using `{name}` templates instead of concatenation, and pass the page language through `locale`. Do not leave UIify's English defaults on a non-English page.
|
|
8
|
+
|
|
9
|
+
## Direction and formatting
|
|
10
|
+
|
|
11
|
+
Set `lang` and `dir` on `<html>` on the server. UIify reads direction from the DOM; use `dir` props only for an island that differs. Use logical CSS such as `margin-inline-start`, `inset-inline-end` and `text-align: start` in custom styles. Mirror directional icons with `:dir(rtl)`.
|
|
12
|
+
|
|
13
|
+
Format numbers and dates with `Intl.*` and the page locale; do not hand-format them. Custom key handlers on text inputs should start with `isComposingKeyEvent(event)`.
|
|
14
|
+
|
|
15
|
+
## Typography and language picker
|
|
16
|
+
|
|
17
|
+
Avoid `letter-spacing` and uppercase styling on Arabic or CJK text. Let `:lang()` choose fonts. Use plain links and endonyms in a language picker, no flags, and mark the current language with `aria-current`.
|
|
18
|
+
|
|
19
|
+
## Verify
|
|
20
|
+
|
|
21
|
+
Render once with `dir="rtl"` and once with a long-text locale such as German or a pseudo-locale. Check overflow, popup anchoring and arrow keys.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Optional static lint
|
|
2
|
+
|
|
3
|
+
Run `node <resolved-skill-directory>/scripts/lint.mjs <project-root>` when the project's existing checks do not cover the relevant JSX attributes. Resolve the script from this skill directory, not the project root.
|
|
4
|
+
|
|
5
|
+
It runs the static checks compiled from the published laws when this skill was built and prints their names. It does not read `DESIGN.md` or other design files.
|
|
6
|
+
|
|
7
|
+
It inspects literal attributes of lowercase intrinsic JSX tags and of parts imported from `@gunkin/uiify/components` or `@gunkin/uiify/elements` (for example `Button` or `Field.Control`). Other custom components and computed attribute values are not analyzed.
|
|
8
|
+
|
|
9
|
+
No findings is not proof of accessibility. Missing parsers or execution failures mean unavailable, never a pass. Reuse project build, typecheck and tests, browser interaction checks, and axe coverage for the requested page; this lint does not replace them.
|