@neurocle/synapse-react 0.0.0-bootstrap → 0.0.0-stage
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/README.md +2 -162
- package/package.json +4 -409
- package/LICENSE +0 -21
- package/dist/_virtual/_rolldown/runtime.mjs +0 -13
- package/dist/components/accordion/accordion.d.mts +0 -38
- package/dist/components/accordion/accordion.d.mts.map +0 -1
- package/dist/components/accordion/accordion.mjs +0 -29
- package/dist/components/accordion/accordion.mjs.map +0 -1
- package/dist/components/accordion/accordion.recipe.mjs +0 -191
- package/dist/components/accordion/accordion.recipe.mjs.map +0 -1
- package/dist/components/accordion/index.d.mts +0 -2
- package/dist/components/accordion/index.mjs +0 -2
- package/dist/components/alert/alert.anatomy.mjs +0 -8
- package/dist/components/alert/alert.anatomy.mjs.map +0 -1
- package/dist/components/alert/alert.connect.d.mts +0 -4
- package/dist/components/alert/alert.connect.d.mts.map +0 -1
- package/dist/components/alert/alert.connect.mjs +0 -39
- package/dist/components/alert/alert.connect.mjs.map +0 -1
- package/dist/components/alert/alert.d.mts +0 -14
- package/dist/components/alert/alert.d.mts.map +0 -1
- package/dist/components/alert/alert.mjs +0 -37
- package/dist/components/alert/alert.mjs.map +0 -1
- package/dist/components/alert/alert.recipe.mjs +0 -141
- package/dist/components/alert/alert.recipe.mjs.map +0 -1
- package/dist/components/alert/index.d.mts +0 -3
- package/dist/components/alert/index.mjs +0 -2
- package/dist/components/angle-slider/angle-slider.d.mts +0 -35
- package/dist/components/angle-slider/angle-slider.d.mts.map +0 -1
- package/dist/components/angle-slider/angle-slider.mjs +0 -41
- package/dist/components/angle-slider/angle-slider.mjs.map +0 -1
- package/dist/components/angle-slider/angle-slider.recipe.mjs +0 -201
- package/dist/components/angle-slider/angle-slider.recipe.mjs.map +0 -1
- package/dist/components/angle-slider/index.d.mts +0 -2
- package/dist/components/angle-slider/index.mjs +0 -2
- package/dist/components/avatar/avatar.d.mts +0 -18
- package/dist/components/avatar/avatar.d.mts.map +0 -1
- package/dist/components/avatar/avatar.mjs +0 -35
- package/dist/components/avatar/avatar.mjs.map +0 -1
- package/dist/components/avatar/avatar.recipe.mjs +0 -113
- package/dist/components/avatar/avatar.recipe.mjs.map +0 -1
- package/dist/components/avatar/index.d.mts +0 -2
- package/dist/components/avatar/index.mjs +0 -2
- package/dist/components/badge/badge.anatomy.mjs +0 -8
- package/dist/components/badge/badge.anatomy.mjs.map +0 -1
- package/dist/components/badge/badge.connect.d.mts +0 -4
- package/dist/components/badge/badge.connect.d.mts.map +0 -1
- package/dist/components/badge/badge.connect.mjs +0 -32
- package/dist/components/badge/badge.connect.mjs.map +0 -1
- package/dist/components/badge/badge.d.mts +0 -14
- package/dist/components/badge/badge.d.mts.map +0 -1
- package/dist/components/badge/badge.mjs +0 -18
- package/dist/components/badge/badge.mjs.map +0 -1
- package/dist/components/badge/badge.recipe.mjs +0 -84
- package/dist/components/badge/badge.recipe.mjs.map +0 -1
- package/dist/components/badge/index.d.mts +0 -3
- package/dist/components/badge/index.mjs +0 -2
- package/dist/components/breadcrumb/breadcrumb.anatomy.mjs +0 -8
- package/dist/components/breadcrumb/breadcrumb.anatomy.mjs.map +0 -1
- package/dist/components/breadcrumb/breadcrumb.connect.mjs +0 -30
- package/dist/components/breadcrumb/breadcrumb.connect.mjs.map +0 -1
- package/dist/components/breadcrumb/breadcrumb.d.mts +0 -10
- package/dist/components/breadcrumb/breadcrumb.d.mts.map +0 -1
- package/dist/components/breadcrumb/breadcrumb.mjs +0 -31
- package/dist/components/breadcrumb/breadcrumb.mjs.map +0 -1
- package/dist/components/breadcrumb/breadcrumb.recipe.mjs +0 -121
- package/dist/components/breadcrumb/breadcrumb.recipe.mjs.map +0 -1
- package/dist/components/breadcrumb/index.d.mts +0 -2
- package/dist/components/breadcrumb/index.mjs +0 -2
- package/dist/components/button/button.anatomy.mjs +0 -8
- package/dist/components/button/button.anatomy.mjs.map +0 -1
- package/dist/components/button/button.connect.mjs +0 -35
- package/dist/components/button/button.connect.mjs.map +0 -1
- package/dist/components/button/button.d.mts +0 -19
- package/dist/components/button/button.d.mts.map +0 -1
- package/dist/components/button/button.mjs +0 -25
- package/dist/components/button/button.mjs.map +0 -1
- package/dist/components/button/button.recipe.mjs +0 -377
- package/dist/components/button/button.recipe.mjs.map +0 -1
- package/dist/components/button/index.d.mts +0 -2
- package/dist/components/button/index.mjs +0 -2
- package/dist/components/card/card.anatomy.mjs +0 -8
- package/dist/components/card/card.anatomy.mjs.map +0 -1
- package/dist/components/card/card.connect.mjs +0 -24
- package/dist/components/card/card.connect.mjs.map +0 -1
- package/dist/components/card/card.d.mts +0 -9
- package/dist/components/card/card.d.mts.map +0 -1
- package/dist/components/card/card.mjs +0 -23
- package/dist/components/card/card.mjs.map +0 -1
- package/dist/components/card/card.recipe.mjs +0 -58
- package/dist/components/card/card.recipe.mjs.map +0 -1
- package/dist/components/card/index.d.mts +0 -2
- package/dist/components/card/index.mjs +0 -2
- package/dist/components/carousel/carousel.d.mts +0 -67
- package/dist/components/carousel/carousel.d.mts.map +0 -1
- package/dist/components/carousel/carousel.mjs +0 -123
- package/dist/components/carousel/carousel.mjs.map +0 -1
- package/dist/components/carousel/carousel.recipe.mjs +0 -131
- package/dist/components/carousel/carousel.recipe.mjs.map +0 -1
- package/dist/components/carousel/index.d.mts +0 -2
- package/dist/components/carousel/index.mjs +0 -2
- package/dist/components/cascade-select/cascade-select.d.mts +0 -102
- package/dist/components/cascade-select/cascade-select.d.mts.map +0 -1
- package/dist/components/cascade-select/cascade-select.mjs +0 -169
- package/dist/components/cascade-select/cascade-select.mjs.map +0 -1
- package/dist/components/cascade-select/cascade-select.recipe.mjs +0 -309
- package/dist/components/cascade-select/cascade-select.recipe.mjs.map +0 -1
- package/dist/components/cascade-select/index.d.mts +0 -2
- package/dist/components/cascade-select/index.mjs +0 -2
- package/dist/components/checkbox/checkbox.d.mts +0 -37
- package/dist/components/checkbox/checkbox.d.mts.map +0 -1
- package/dist/components/checkbox/checkbox.mjs +0 -55
- package/dist/components/checkbox/checkbox.mjs.map +0 -1
- package/dist/components/checkbox/checkbox.recipe.mjs +0 -170
- package/dist/components/checkbox/checkbox.recipe.mjs.map +0 -1
- package/dist/components/checkbox/index.d.mts +0 -2
- package/dist/components/checkbox/index.mjs +0 -2
- package/dist/components/clipboard/clipboard.d.mts +0 -26
- package/dist/components/clipboard/clipboard.d.mts.map +0 -1
- package/dist/components/clipboard/clipboard.mjs +0 -76
- package/dist/components/clipboard/clipboard.mjs.map +0 -1
- package/dist/components/clipboard/clipboard.recipe.mjs +0 -119
- package/dist/components/clipboard/clipboard.recipe.mjs.map +0 -1
- package/dist/components/clipboard/index.d.mts +0 -2
- package/dist/components/clipboard/index.mjs +0 -2
- package/dist/components/collapsible/collapsible.d.mts +0 -21
- package/dist/components/collapsible/collapsible.d.mts.map +0 -1
- package/dist/components/collapsible/collapsible.mjs +0 -23
- package/dist/components/collapsible/collapsible.mjs.map +0 -1
- package/dist/components/collapsible/collapsible.recipe.mjs +0 -159
- package/dist/components/collapsible/collapsible.recipe.mjs.map +0 -1
- package/dist/components/collapsible/index.d.mts +0 -2
- package/dist/components/collapsible/index.mjs +0 -2
- package/dist/components/collection-window.mjs +0 -299
- package/dist/components/collection-window.mjs.map +0 -1
- package/dist/components/color-picker/color-picker.d.mts +0 -67
- package/dist/components/color-picker/color-picker.d.mts.map +0 -1
- package/dist/components/color-picker/color-picker.mjs +0 -230
- package/dist/components/color-picker/color-picker.mjs.map +0 -1
- package/dist/components/color-picker/color-picker.recipe.mjs +0 -345
- package/dist/components/color-picker/color-picker.recipe.mjs.map +0 -1
- package/dist/components/color-picker/index.d.mts +0 -2
- package/dist/components/color-picker/index.mjs +0 -2
- package/dist/components/combobox/combobox.d.mts +0 -129
- package/dist/components/combobox/combobox.d.mts.map +0 -1
- package/dist/components/combobox/combobox.mjs +0 -92
- package/dist/components/combobox/combobox.mjs.map +0 -1
- package/dist/components/combobox/combobox.recipe.mjs +0 -336
- package/dist/components/combobox/combobox.recipe.mjs.map +0 -1
- package/dist/components/combobox/index.d.mts +0 -2
- package/dist/components/combobox/index.mjs +0 -2
- package/dist/components/date-input/date-input.d.mts +0 -69
- package/dist/components/date-input/date-input.d.mts.map +0 -1
- package/dist/components/date-input/date-input.mjs +0 -106
- package/dist/components/date-input/date-input.mjs.map +0 -1
- package/dist/components/date-input/date-input.recipe.mjs +0 -142
- package/dist/components/date-input/date-input.recipe.mjs.map +0 -1
- package/dist/components/date-input/index.d.mts +0 -2
- package/dist/components/date-input/index.mjs +0 -2
- package/dist/components/date-picker/date-picker.d.mts +0 -114
- package/dist/components/date-picker/date-picker.d.mts.map +0 -1
- package/dist/components/date-picker/date-picker.mjs +0 -269
- package/dist/components/date-picker/date-picker.mjs.map +0 -1
- package/dist/components/date-picker/date-picker.recipe.mjs +0 -495
- package/dist/components/date-picker/date-picker.recipe.mjs.map +0 -1
- package/dist/components/date-picker/index.d.mts +0 -2
- package/dist/components/date-picker/index.mjs +0 -2
- package/dist/components/details.d.mts +0 -9
- package/dist/components/details.d.mts.map +0 -1
- package/dist/components/dialog/dialog.d.mts +0 -45
- package/dist/components/dialog/dialog.d.mts.map +0 -1
- package/dist/components/dialog/dialog.mjs +0 -49
- package/dist/components/dialog/dialog.mjs.map +0 -1
- package/dist/components/dialog/dialog.recipe.mjs +0 -138
- package/dist/components/dialog/dialog.recipe.mjs.map +0 -1
- package/dist/components/dialog/index.d.mts +0 -2
- package/dist/components/dialog/index.mjs +0 -2
- package/dist/components/drawer/drawer.d.mts +0 -62
- package/dist/components/drawer/drawer.d.mts.map +0 -1
- package/dist/components/drawer/drawer.mjs +0 -65
- package/dist/components/drawer/drawer.mjs.map +0 -1
- package/dist/components/drawer/drawer.recipe.mjs +0 -201
- package/dist/components/drawer/drawer.recipe.mjs.map +0 -1
- package/dist/components/drawer/index.d.mts +0 -2
- package/dist/components/drawer/index.mjs +0 -2
- package/dist/components/editable/editable.d.mts +0 -62
- package/dist/components/editable/editable.d.mts.map +0 -1
- package/dist/components/editable/editable.mjs +0 -78
- package/dist/components/editable/editable.mjs.map +0 -1
- package/dist/components/editable/editable.recipe.mjs +0 -152
- package/dist/components/editable/editable.recipe.mjs.map +0 -1
- package/dist/components/editable/index.d.mts +0 -2
- package/dist/components/editable/index.mjs +0 -2
- package/dist/components/empty-state/empty-state.anatomy.mjs +0 -8
- package/dist/components/empty-state/empty-state.anatomy.mjs.map +0 -1
- package/dist/components/empty-state/empty-state.connect.mjs +0 -26
- package/dist/components/empty-state/empty-state.connect.mjs.map +0 -1
- package/dist/components/empty-state/empty-state.d.mts +0 -10
- package/dist/components/empty-state/empty-state.d.mts.map +0 -1
- package/dist/components/empty-state/empty-state.mjs +0 -24
- package/dist/components/empty-state/empty-state.mjs.map +0 -1
- package/dist/components/empty-state/empty-state.recipe.mjs +0 -134
- package/dist/components/empty-state/empty-state.recipe.mjs.map +0 -1
- package/dist/components/empty-state/index.d.mts +0 -2
- package/dist/components/empty-state/index.mjs +0 -2
- package/dist/components/field/field.anatomy.mjs +0 -8
- package/dist/components/field/field.anatomy.mjs.map +0 -1
- package/dist/components/field/field.connect.mjs +0 -117
- package/dist/components/field/field.connect.mjs.map +0 -1
- package/dist/components/field/field.d.mts +0 -19
- package/dist/components/field/field.d.mts.map +0 -1
- package/dist/components/field/field.mjs +0 -77
- package/dist/components/field/field.mjs.map +0 -1
- package/dist/components/field/field.recipe.mjs +0 -60
- package/dist/components/field/field.recipe.mjs.map +0 -1
- package/dist/components/field/index.d.mts +0 -2
- package/dist/components/field/index.mjs +0 -2
- package/dist/components/fieldset/fieldset.anatomy.mjs +0 -8
- package/dist/components/fieldset/fieldset.anatomy.mjs.map +0 -1
- package/dist/components/fieldset/fieldset.connect.mjs +0 -60
- package/dist/components/fieldset/fieldset.connect.mjs.map +0 -1
- package/dist/components/fieldset/fieldset.d.mts +0 -13
- package/dist/components/fieldset/fieldset.d.mts.map +0 -1
- package/dist/components/fieldset/fieldset.mjs +0 -26
- package/dist/components/fieldset/fieldset.mjs.map +0 -1
- package/dist/components/fieldset/fieldset.recipe.mjs +0 -42
- package/dist/components/fieldset/fieldset.recipe.mjs.map +0 -1
- package/dist/components/fieldset/index.d.mts +0 -2
- package/dist/components/fieldset/index.mjs +0 -2
- package/dist/components/file-upload/file-upload.d.mts +0 -105
- package/dist/components/file-upload/file-upload.d.mts.map +0 -1
- package/dist/components/file-upload/file-upload.mjs +0 -127
- package/dist/components/file-upload/file-upload.mjs.map +0 -1
- package/dist/components/file-upload/file-upload.recipe.mjs +0 -236
- package/dist/components/file-upload/file-upload.recipe.mjs.map +0 -1
- package/dist/components/file-upload/index.d.mts +0 -2
- package/dist/components/file-upload/index.mjs +0 -2
- package/dist/components/floating-panel/floating-panel.d.mts +0 -87
- package/dist/components/floating-panel/floating-panel.d.mts.map +0 -1
- package/dist/components/floating-panel/floating-panel.mjs +0 -89
- package/dist/components/floating-panel/floating-panel.mjs.map +0 -1
- package/dist/components/floating-panel/floating-panel.recipe.mjs +0 -156
- package/dist/components/floating-panel/floating-panel.recipe.mjs.map +0 -1
- package/dist/components/floating-panel/index.d.mts +0 -2
- package/dist/components/floating-panel/index.mjs +0 -2
- package/dist/components/hover-card/hover-card.d.mts +0 -48
- package/dist/components/hover-card/hover-card.d.mts.map +0 -1
- package/dist/components/hover-card/hover-card.mjs +0 -31
- package/dist/components/hover-card/hover-card.mjs.map +0 -1
- package/dist/components/hover-card/hover-card.recipe.mjs +0 -133
- package/dist/components/hover-card/hover-card.recipe.mjs.map +0 -1
- package/dist/components/hover-card/index.d.mts +0 -2
- package/dist/components/hover-card/index.mjs +0 -2
- package/dist/components/image-cropper/image-cropper.d.mts +0 -111
- package/dist/components/image-cropper/image-cropper.d.mts.map +0 -1
- package/dist/components/image-cropper/image-cropper.mjs +0 -71
- package/dist/components/image-cropper/image-cropper.mjs.map +0 -1
- package/dist/components/image-cropper/image-cropper.recipe.mjs +0 -126
- package/dist/components/image-cropper/image-cropper.recipe.mjs.map +0 -1
- package/dist/components/image-cropper/index.d.mts +0 -2
- package/dist/components/image-cropper/index.mjs +0 -2
- package/dist/components/input/index.d.mts +0 -2
- package/dist/components/input/index.mjs +0 -2
- package/dist/components/input/input.anatomy.mjs +0 -8
- package/dist/components/input/input.anatomy.mjs.map +0 -1
- package/dist/components/input/input.connect.mjs +0 -82
- package/dist/components/input/input.connect.mjs.map +0 -1
- package/dist/components/input/input.d.mts +0 -31
- package/dist/components/input/input.d.mts.map +0 -1
- package/dist/components/input/input.mjs +0 -37
- package/dist/components/input/input.mjs.map +0 -1
- package/dist/components/input/input.recipe.mjs +0 -111
- package/dist/components/input/input.recipe.mjs.map +0 -1
- package/dist/components/kbd/index.d.mts +0 -2
- package/dist/components/kbd/index.mjs +0 -2
- package/dist/components/kbd/kbd.anatomy.mjs +0 -8
- package/dist/components/kbd/kbd.anatomy.mjs.map +0 -1
- package/dist/components/kbd/kbd.connect.mjs +0 -17
- package/dist/components/kbd/kbd.connect.mjs.map +0 -1
- package/dist/components/kbd/kbd.d.mts +0 -10
- package/dist/components/kbd/kbd.d.mts.map +0 -1
- package/dist/components/kbd/kbd.mjs +0 -18
- package/dist/components/kbd/kbd.mjs.map +0 -1
- package/dist/components/kbd/kbd.recipe.mjs +0 -55
- package/dist/components/kbd/kbd.recipe.mjs.map +0 -1
- package/dist/components/listbox/index.d.mts +0 -2
- package/dist/components/listbox/index.mjs +0 -2
- package/dist/components/listbox/listbox.d.mts +0 -70
- package/dist/components/listbox/listbox.d.mts.map +0 -1
- package/dist/components/listbox/listbox.mjs +0 -79
- package/dist/components/listbox/listbox.mjs.map +0 -1
- package/dist/components/listbox/listbox.recipe.mjs +0 -169
- package/dist/components/listbox/listbox.recipe.mjs.map +0 -1
- package/dist/components/machine-translations.mjs +0 -8
- package/dist/components/machine-translations.mjs.map +0 -1
- package/dist/components/marquee/index.d.mts +0 -2
- package/dist/components/marquee/index.mjs +0 -2
- package/dist/components/marquee/marquee.d.mts +0 -53
- package/dist/components/marquee/marquee.d.mts.map +0 -1
- package/dist/components/marquee/marquee.mjs +0 -30
- package/dist/components/marquee/marquee.mjs.map +0 -1
- package/dist/components/marquee/marquee.recipe.mjs +0 -123
- package/dist/components/marquee/marquee.recipe.mjs.map +0 -1
- package/dist/components/menu/index.d.mts +0 -2
- package/dist/components/menu/index.mjs +0 -2
- package/dist/components/menu/menu.d.mts +0 -66
- package/dist/components/menu/menu.d.mts.map +0 -1
- package/dist/components/menu/menu.mjs +0 -68
- package/dist/components/menu/menu.mjs.map +0 -1
- package/dist/components/menu/menu.recipe.mjs +0 -285
- package/dist/components/menu/menu.recipe.mjs.map +0 -1
- package/dist/components/navigation-menu/index.d.mts +0 -2
- package/dist/components/navigation-menu/index.mjs +0 -2
- package/dist/components/navigation-menu/navigation-menu.d.mts +0 -42
- package/dist/components/navigation-menu/navigation-menu.d.mts.map +0 -1
- package/dist/components/navigation-menu/navigation-menu.mjs +0 -47
- package/dist/components/navigation-menu/navigation-menu.mjs.map +0 -1
- package/dist/components/navigation-menu/navigation-menu.recipe.mjs +0 -271
- package/dist/components/navigation-menu/navigation-menu.recipe.mjs.map +0 -1
- package/dist/components/number-input/index.d.mts +0 -2
- package/dist/components/number-input/index.mjs +0 -2
- package/dist/components/number-input/number-input.d.mts +0 -88
- package/dist/components/number-input/number-input.d.mts.map +0 -1
- package/dist/components/number-input/number-input.mjs +0 -70
- package/dist/components/number-input/number-input.mjs.map +0 -1
- package/dist/components/number-input/number-input.recipe.mjs +0 -231
- package/dist/components/number-input/number-input.recipe.mjs.map +0 -1
- package/dist/components/pagination/index.d.mts +0 -2
- package/dist/components/pagination/index.mjs +0 -2
- package/dist/components/pagination/pagination.d.mts +0 -51
- package/dist/components/pagination/pagination.d.mts.map +0 -1
- package/dist/components/pagination/pagination.mjs +0 -74
- package/dist/components/pagination/pagination.mjs.map +0 -1
- package/dist/components/pagination/pagination.recipe.mjs +0 -144
- package/dist/components/pagination/pagination.recipe.mjs.map +0 -1
- package/dist/components/password-input/index.d.mts +0 -2
- package/dist/components/password-input/index.mjs +0 -2
- package/dist/components/password-input/password-input.d.mts +0 -37
- package/dist/components/password-input/password-input.d.mts.map +0 -1
- package/dist/components/password-input/password-input.mjs +0 -58
- package/dist/components/password-input/password-input.mjs.map +0 -1
- package/dist/components/password-input/password-input.recipe.mjs +0 -180
- package/dist/components/password-input/password-input.recipe.mjs.map +0 -1
- package/dist/components/pin-input/index.d.mts +0 -2
- package/dist/components/pin-input/index.mjs +0 -2
- package/dist/components/pin-input/pin-input.d.mts +0 -68
- package/dist/components/pin-input/pin-input.d.mts.map +0 -1
- package/dist/components/pin-input/pin-input.mjs +0 -51
- package/dist/components/pin-input/pin-input.mjs.map +0 -1
- package/dist/components/pin-input/pin-input.recipe.mjs +0 -81
- package/dist/components/pin-input/pin-input.recipe.mjs.map +0 -1
- package/dist/components/popover/index.d.mts +0 -2
- package/dist/components/popover/index.mjs +0 -2
- package/dist/components/popover/popover.d.mts +0 -42
- package/dist/components/popover/popover.d.mts.map +0 -1
- package/dist/components/popover/popover.mjs +0 -50
- package/dist/components/popover/popover.mjs.map +0 -1
- package/dist/components/popover/popover.recipe.mjs +0 -162
- package/dist/components/popover/popover.recipe.mjs.map +0 -1
- package/dist/components/progress/index.d.mts +0 -2
- package/dist/components/progress/index.mjs +0 -2
- package/dist/components/progress/progress.d.mts +0 -31
- package/dist/components/progress/progress.d.mts.map +0 -1
- package/dist/components/progress/progress.mjs +0 -42
- package/dist/components/progress/progress.mjs.map +0 -1
- package/dist/components/progress/progress.recipe.mjs +0 -189
- package/dist/components/progress/progress.recipe.mjs.map +0 -1
- package/dist/components/qr-code/index.d.mts +0 -2
- package/dist/components/qr-code/index.mjs +0 -2
- package/dist/components/qr-code/qr-code.d.mts +0 -36
- package/dist/components/qr-code/qr-code.d.mts.map +0 -1
- package/dist/components/qr-code/qr-code.mjs +0 -41
- package/dist/components/qr-code/qr-code.mjs.map +0 -1
- package/dist/components/qr-code/qr-code.recipe.mjs +0 -70
- package/dist/components/qr-code/qr-code.recipe.mjs.map +0 -1
- package/dist/components/radio-group/index.d.mts +0 -2
- package/dist/components/radio-group/index.mjs +0 -2
- package/dist/components/radio-group/radio-group.d.mts +0 -33
- package/dist/components/radio-group/radio-group.d.mts.map +0 -1
- package/dist/components/radio-group/radio-group.mjs +0 -47
- package/dist/components/radio-group/radio-group.mjs.map +0 -1
- package/dist/components/radio-group/radio-group.recipe.mjs +0 -189
- package/dist/components/radio-group/radio-group.recipe.mjs.map +0 -1
- package/dist/components/rating-group/index.d.mts +0 -2
- package/dist/components/rating-group/index.mjs +0 -2
- package/dist/components/rating-group/rating-group.d.mts +0 -43
- package/dist/components/rating-group/rating-group.d.mts.map +0 -1
- package/dist/components/rating-group/rating-group.mjs +0 -39
- package/dist/components/rating-group/rating-group.mjs.map +0 -1
- package/dist/components/rating-group/rating-group.recipe.mjs +0 -133
- package/dist/components/rating-group/rating-group.recipe.mjs.map +0 -1
- package/dist/components/scroll-area/index.d.mts +0 -2
- package/dist/components/scroll-area/index.mjs +0 -2
- package/dist/components/scroll-area/scroll-area.d.mts +0 -12
- package/dist/components/scroll-area/scroll-area.d.mts.map +0 -1
- package/dist/components/scroll-area/scroll-area.mjs +0 -31
- package/dist/components/scroll-area/scroll-area.mjs.map +0 -1
- package/dist/components/scroll-area/scroll-area.recipe.mjs +0 -76
- package/dist/components/scroll-area/scroll-area.recipe.mjs.map +0 -1
- package/dist/components/select/index.d.mts +0 -2
- package/dist/components/select/index.mjs +0 -2
- package/dist/components/select/select.d.mts +0 -90
- package/dist/components/select/select.d.mts.map +0 -1
- package/dist/components/select/select.mjs +0 -83
- package/dist/components/select/select.mjs.map +0 -1
- package/dist/components/select/select.recipe.mjs +0 -298
- package/dist/components/select/select.recipe.mjs.map +0 -1
- package/dist/components/separator/index.d.mts +0 -2
- package/dist/components/separator/index.mjs +0 -2
- package/dist/components/separator/separator.anatomy.mjs +0 -8
- package/dist/components/separator/separator.anatomy.mjs.map +0 -1
- package/dist/components/separator/separator.connect.mjs +0 -28
- package/dist/components/separator/separator.connect.mjs.map +0 -1
- package/dist/components/separator/separator.d.mts +0 -11
- package/dist/components/separator/separator.d.mts.map +0 -1
- package/dist/components/separator/separator.mjs +0 -15
- package/dist/components/separator/separator.mjs.map +0 -1
- package/dist/components/separator/separator.recipe.mjs +0 -22
- package/dist/components/separator/separator.recipe.mjs.map +0 -1
- package/dist/components/signature-pad/index.d.mts +0 -2
- package/dist/components/signature-pad/index.mjs +0 -2
- package/dist/components/signature-pad/signature-pad.d.mts +0 -44
- package/dist/components/signature-pad/signature-pad.d.mts.map +0 -1
- package/dist/components/signature-pad/signature-pad.mjs +0 -90
- package/dist/components/signature-pad/signature-pad.mjs.map +0 -1
- package/dist/components/signature-pad/signature-pad.recipe.mjs +0 -111
- package/dist/components/signature-pad/signature-pad.recipe.mjs.map +0 -1
- package/dist/components/skeleton/index.d.mts +0 -2
- package/dist/components/skeleton/index.mjs +0 -2
- package/dist/components/skeleton/skeleton.anatomy.mjs +0 -8
- package/dist/components/skeleton/skeleton.anatomy.mjs.map +0 -1
- package/dist/components/skeleton/skeleton.connect.mjs +0 -26
- package/dist/components/skeleton/skeleton.connect.mjs.map +0 -1
- package/dist/components/skeleton/skeleton.d.mts +0 -9
- package/dist/components/skeleton/skeleton.d.mts.map +0 -1
- package/dist/components/skeleton/skeleton.mjs +0 -16
- package/dist/components/skeleton/skeleton.mjs.map +0 -1
- package/dist/components/skeleton/skeleton.recipe.mjs +0 -46
- package/dist/components/skeleton/skeleton.recipe.mjs.map +0 -1
- package/dist/components/slider/index.d.mts +0 -2
- package/dist/components/slider/index.mjs +0 -2
- package/dist/components/slider/slider.d.mts +0 -72
- package/dist/components/slider/slider.d.mts.map +0 -1
- package/dist/components/slider/slider.mjs +0 -34
- package/dist/components/slider/slider.mjs.map +0 -1
- package/dist/components/slider/slider.recipe.mjs +0 -219
- package/dist/components/slider/slider.recipe.mjs.map +0 -1
- package/dist/components/snackbar/index.d.mts +0 -2
- package/dist/components/snackbar/index.mjs +0 -2
- package/dist/components/snackbar/snackbar.d.mts +0 -57
- package/dist/components/snackbar/snackbar.d.mts.map +0 -1
- package/dist/components/snackbar/snackbar.mjs +0 -226
- package/dist/components/snackbar/snackbar.mjs.map +0 -1
- package/dist/components/snackbar/snackbar.recipe.mjs +0 -217
- package/dist/components/snackbar/snackbar.recipe.mjs.map +0 -1
- package/dist/components/spinner/index.d.mts +0 -2
- package/dist/components/spinner/index.mjs +0 -2
- package/dist/components/spinner/spinner.anatomy.mjs +0 -8
- package/dist/components/spinner/spinner.anatomy.mjs.map +0 -1
- package/dist/components/spinner/spinner.connect.mjs +0 -27
- package/dist/components/spinner/spinner.connect.mjs.map +0 -1
- package/dist/components/spinner/spinner.d.mts +0 -10
- package/dist/components/spinner/spinner.d.mts.map +0 -1
- package/dist/components/spinner/spinner.mjs +0 -25
- package/dist/components/spinner/spinner.mjs.map +0 -1
- package/dist/components/spinner/spinner.recipe.mjs +0 -70
- package/dist/components/spinner/spinner.recipe.mjs.map +0 -1
- package/dist/components/splitter/index.d.mts +0 -2
- package/dist/components/splitter/index.mjs +0 -2
- package/dist/components/splitter/splitter.d.mts +0 -57
- package/dist/components/splitter/splitter.d.mts.map +0 -1
- package/dist/components/splitter/splitter.mjs +0 -40
- package/dist/components/splitter/splitter.mjs.map +0 -1
- package/dist/components/splitter/splitter.recipe.mjs +0 -129
- package/dist/components/splitter/splitter.recipe.mjs.map +0 -1
- package/dist/components/steps/index.d.mts +0 -2
- package/dist/components/steps/index.mjs +0 -2
- package/dist/components/steps/steps.d.mts +0 -42
- package/dist/components/steps/steps.d.mts.map +0 -1
- package/dist/components/steps/steps.mjs +0 -72
- package/dist/components/steps/steps.mjs.map +0 -1
- package/dist/components/steps/steps.recipe.mjs +0 -291
- package/dist/components/steps/steps.recipe.mjs.map +0 -1
- package/dist/components/switch/index.d.mts +0 -2
- package/dist/components/switch/index.mjs +0 -2
- package/dist/components/switch/switch.d.mts +0 -36
- package/dist/components/switch/switch.d.mts.map +0 -1
- package/dist/components/switch/switch.mjs +0 -50
- package/dist/components/switch/switch.mjs.map +0 -1
- package/dist/components/switch/switch.recipe.mjs +0 -171
- package/dist/components/switch/switch.recipe.mjs.map +0 -1
- package/dist/components/table/index.d.mts +0 -2
- package/dist/components/table/index.mjs +0 -2
- package/dist/components/table/table.anatomy.mjs +0 -8
- package/dist/components/table/table.anatomy.mjs.map +0 -1
- package/dist/components/table/table.connect.mjs +0 -50
- package/dist/components/table/table.connect.mjs.map +0 -1
- package/dist/components/table/table.d.mts +0 -10
- package/dist/components/table/table.d.mts.map +0 -1
- package/dist/components/table/table.mjs +0 -90
- package/dist/components/table/table.mjs.map +0 -1
- package/dist/components/table/table.recipe.mjs +0 -186
- package/dist/components/table/table.recipe.mjs.map +0 -1
- package/dist/components/tabs/index.d.mts +0 -2
- package/dist/components/tabs/index.mjs +0 -2
- package/dist/components/tabs/tabs.d.mts +0 -40
- package/dist/components/tabs/tabs.d.mts.map +0 -1
- package/dist/components/tabs/tabs.mjs +0 -23
- package/dist/components/tabs/tabs.mjs.map +0 -1
- package/dist/components/tabs/tabs.recipe.mjs +0 -182
- package/dist/components/tabs/tabs.recipe.mjs.map +0 -1
- package/dist/components/tags-input/index.d.mts +0 -2
- package/dist/components/tags-input/index.mjs +0 -2
- package/dist/components/tags-input/tags-input.d.mts +0 -77
- package/dist/components/tags-input/tags-input.d.mts.map +0 -1
- package/dist/components/tags-input/tags-input.mjs +0 -103
- package/dist/components/tags-input/tags-input.mjs.map +0 -1
- package/dist/components/tags-input/tags-input.recipe.mjs +0 -320
- package/dist/components/tags-input/tags-input.recipe.mjs.map +0 -1
- package/dist/components/textarea/index.d.mts +0 -2
- package/dist/components/textarea/index.mjs +0 -2
- package/dist/components/textarea/textarea.anatomy.mjs +0 -8
- package/dist/components/textarea/textarea.anatomy.mjs.map +0 -1
- package/dist/components/textarea/textarea.connect.mjs +0 -82
- package/dist/components/textarea/textarea.connect.mjs.map +0 -1
- package/dist/components/textarea/textarea.d.mts +0 -32
- package/dist/components/textarea/textarea.d.mts.map +0 -1
- package/dist/components/textarea/textarea.mjs +0 -41
- package/dist/components/textarea/textarea.mjs.map +0 -1
- package/dist/components/textarea/textarea.recipe.mjs +0 -58
- package/dist/components/textarea/textarea.recipe.mjs.map +0 -1
- package/dist/components/timer/index.d.mts +0 -2
- package/dist/components/timer/index.mjs +0 -2
- package/dist/components/timer/timer.d.mts +0 -31
- package/dist/components/timer/timer.d.mts.map +0 -1
- package/dist/components/timer/timer.mjs +0 -98
- package/dist/components/timer/timer.mjs.map +0 -1
- package/dist/components/timer/timer.recipe.mjs +0 -99
- package/dist/components/timer/timer.recipe.mjs.map +0 -1
- package/dist/components/toast/index.d.mts +0 -2
- package/dist/components/toast/index.mjs +0 -2
- package/dist/components/toast/toast.d.mts +0 -55
- package/dist/components/toast/toast.d.mts.map +0 -1
- package/dist/components/toast/toast.mjs +0 -194
- package/dist/components/toast/toast.mjs.map +0 -1
- package/dist/components/toast/toast.recipe.mjs +0 -172
- package/dist/components/toast/toast.recipe.mjs.map +0 -1
- package/dist/components/toc/index.d.mts +0 -2
- package/dist/components/toc/index.mjs +0 -2
- package/dist/components/toc/toc.d.mts +0 -47
- package/dist/components/toc/toc.d.mts.map +0 -1
- package/dist/components/toc/toc.mjs +0 -239
- package/dist/components/toc/toc.mjs.map +0 -1
- package/dist/components/toc/toc.recipe.mjs +0 -147
- package/dist/components/toc/toc.recipe.mjs.map +0 -1
- package/dist/components/toggle/index.d.mts +0 -2
- package/dist/components/toggle/index.mjs +0 -2
- package/dist/components/toggle/toggle.d.mts +0 -21
- package/dist/components/toggle/toggle.d.mts.map +0 -1
- package/dist/components/toggle/toggle.mjs +0 -34
- package/dist/components/toggle/toggle.mjs.map +0 -1
- package/dist/components/toggle/toggle.recipe.mjs +0 -175
- package/dist/components/toggle/toggle.recipe.mjs.map +0 -1
- package/dist/components/toggle-group/index.d.mts +0 -2
- package/dist/components/toggle-group/index.mjs +0 -2
- package/dist/components/toggle-group/toggle-group.d.mts +0 -29
- package/dist/components/toggle-group/toggle-group.d.mts.map +0 -1
- package/dist/components/toggle-group/toggle-group.mjs +0 -18
- package/dist/components/toggle-group/toggle-group.mjs.map +0 -1
- package/dist/components/toggle-group/toggle-group.recipe.mjs +0 -190
- package/dist/components/toggle-group/toggle-group.recipe.mjs.map +0 -1
- package/dist/components/tooltip/index.d.mts +0 -2
- package/dist/components/tooltip/index.mjs +0 -2
- package/dist/components/tooltip/tooltip.d.mts +0 -66
- package/dist/components/tooltip/tooltip.d.mts.map +0 -1
- package/dist/components/tooltip/tooltip.mjs +0 -64
- package/dist/components/tooltip/tooltip.mjs.map +0 -1
- package/dist/components/tooltip/tooltip.recipe.mjs +0 -149
- package/dist/components/tooltip/tooltip.recipe.mjs.map +0 -1
- package/dist/components/tour/index.d.mts +0 -2
- package/dist/components/tour/index.mjs +0 -2
- package/dist/components/tour/tour.d.mts +0 -92
- package/dist/components/tour/tour.d.mts.map +0 -1
- package/dist/components/tour/tour.mjs +0 -89
- package/dist/components/tour/tour.mjs.map +0 -1
- package/dist/components/tour/tour.recipe.mjs +0 -164
- package/dist/components/tour/tour.recipe.mjs.map +0 -1
- package/dist/components/tree-view/index.d.mts +0 -2
- package/dist/components/tree-view/index.mjs +0 -2
- package/dist/components/tree-view/tree-view.d.mts +0 -108
- package/dist/components/tree-view/tree-view.d.mts.map +0 -1
- package/dist/components/tree-view/tree-view.mjs +0 -145
- package/dist/components/tree-view/tree-view.mjs.map +0 -1
- package/dist/components/tree-view/tree-view.recipe.mjs +0 -458
- package/dist/components/tree-view/tree-view.recipe.mjs.map +0 -1
- package/dist/icons/src/calendar.mjs +0 -13
- package/dist/icons/src/calendar.mjs.map +0 -1
- package/dist/icons/src/checkmark.mjs +0 -13
- package/dist/icons/src/checkmark.mjs.map +0 -1
- package/dist/icons/src/chevron-down.mjs +0 -13
- package/dist/icons/src/chevron-down.mjs.map +0 -1
- package/dist/icons/src/chevron-left.mjs +0 -13
- package/dist/icons/src/chevron-left.mjs.map +0 -1
- package/dist/icons/src/chevron-right.mjs +0 -13
- package/dist/icons/src/chevron-right.mjs.map +0 -1
- package/dist/icons/src/chevron-up.mjs +0 -13
- package/dist/icons/src/chevron-up.mjs.map +0 -1
- package/dist/icons/src/chevrons-left.mjs +0 -13
- package/dist/icons/src/chevrons-left.mjs.map +0 -1
- package/dist/icons/src/chevrons-right.mjs +0 -13
- package/dist/icons/src/chevrons-right.mjs.map +0 -1
- package/dist/icons/src/chevrons-up-down.mjs +0 -13
- package/dist/icons/src/chevrons-up-down.mjs.map +0 -1
- package/dist/icons/src/close.mjs +0 -13
- package/dist/icons/src/close.mjs.map +0 -1
- package/dist/icons/src/copy.mjs +0 -13
- package/dist/icons/src/copy.mjs.map +0 -1
- package/dist/icons/src/edit.mjs +0 -13
- package/dist/icons/src/edit.mjs.map +0 -1
- package/dist/icons/src/error.mjs +0 -13
- package/dist/icons/src/error.mjs.map +0 -1
- package/dist/icons/src/eyedropper.mjs +0 -13
- package/dist/icons/src/eyedropper.mjs.map +0 -1
- package/dist/icons/src/file.mjs +0 -13
- package/dist/icons/src/file.mjs.map +0 -1
- package/dist/icons/src/hide.mjs +0 -13
- package/dist/icons/src/hide.mjs.map +0 -1
- package/dist/icons/src/index.mjs +0 -58
- package/dist/icons/src/index.mjs.map +0 -1
- package/dist/icons/src/info.mjs +0 -13
- package/dist/icons/src/info.mjs.map +0 -1
- package/dist/icons/src/maximize.mjs +0 -13
- package/dist/icons/src/maximize.mjs.map +0 -1
- package/dist/icons/src/minus.mjs +0 -13
- package/dist/icons/src/minus.mjs.map +0 -1
- package/dist/icons/src/pause.mjs +0 -13
- package/dist/icons/src/pause.mjs.map +0 -1
- package/dist/icons/src/play.mjs +0 -13
- package/dist/icons/src/play.mjs.map +0 -1
- package/dist/icons/src/reset.mjs +0 -13
- package/dist/icons/src/reset.mjs.map +0 -1
- package/dist/icons/src/restore.mjs +0 -13
- package/dist/icons/src/restore.mjs.map +0 -1
- package/dist/icons/src/show.mjs +0 -13
- package/dist/icons/src/show.mjs.map +0 -1
- package/dist/icons/src/star.mjs +0 -13
- package/dist/icons/src/star.mjs.map +0 -1
- package/dist/icons/src/success.mjs +0 -2
- package/dist/icons/src/trash.mjs +0 -13
- package/dist/icons/src/trash.mjs.map +0 -1
- package/dist/icons/src/user.mjs +0 -13
- package/dist/icons/src/user.mjs.map +0 -1
- package/dist/icons/src/warning.mjs +0 -13
- package/dist/icons/src/warning.mjs.map +0 -1
- package/dist/index.d.mts +0 -139
- package/dist/index.mjs +0 -71
- package/dist/preset.d.mts +0 -2
- package/dist/preset.mjs +0 -2
- package/dist/provider/locale-context.mjs +0 -36
- package/dist/provider/locale-context.mjs.map +0 -1
- package/dist/provider/synapse-provider.d.mts +0 -17
- package/dist/provider/synapse-provider.d.mts.map +0 -1
- package/dist/provider/synapse-provider.mjs +0 -59
- package/dist/provider/synapse-provider.mjs.map +0 -1
- package/dist/provider/translations.d.mts +0 -179
- package/dist/provider/translations.d.mts.map +0 -1
- package/dist/provider/translations.mjs +0 -201
- package/dist/provider/translations.mjs.map +0 -1
- package/dist/provider/use-theme.d.mts +0 -7
- package/dist/provider/use-theme.d.mts.map +0 -1
- package/dist/provider/use-theme.mjs +0 -37
- package/dist/provider/use-theme.mjs.map +0 -1
- package/dist/react/styled-system/css/conditions.mjs +0 -29
- package/dist/react/styled-system/css/conditions.mjs.map +0 -1
- package/dist/react/styled-system/css/css.mjs +0 -39
- package/dist/react/styled-system/css/css.mjs.map +0 -1
- package/dist/react/styled-system/css/cva.mjs +0 -66
- package/dist/react/styled-system/css/cva.mjs.map +0 -1
- package/dist/react/styled-system/css/cx.mjs +0 -13
- package/dist/react/styled-system/css/cx.mjs.map +0 -1
- package/dist/react/styled-system/css/sva.mjs +0 -44
- package/dist/react/styled-system/css/sva.mjs.map +0 -1
- package/dist/react/styled-system/helpers.mjs +0 -231
- package/dist/react/styled-system/helpers.mjs.map +0 -1
- package/dist/shared/button-style.mjs +0 -10
- package/dist/shared/button-style.mjs.map +0 -1
- package/dist/shared/character-count.mjs +0 -29
- package/dist/shared/character-count.mjs.map +0 -1
- package/dist/shared/collection-internal.mjs +0 -24
- package/dist/shared/collection-internal.mjs.map +0 -1
- package/dist/shared/collection.d.mts +0 -120
- package/dist/shared/collection.d.mts.map +0 -1
- package/dist/shared/collection.mjs +0 -395
- package/dist/shared/collection.mjs.map +0 -1
- package/dist/shared/controller.d.mts +0 -4
- package/dist/shared/controller.d.mts.map +0 -1
- package/dist/shared/controller.mjs +0 -53
- package/dist/shared/controller.mjs.map +0 -1
- package/dist/shared/field-context.mjs +0 -47
- package/dist/shared/field-context.mjs.map +0 -1
- package/dist/shared/field-description.mjs +0 -13
- package/dist/shared/field-description.mjs.map +0 -1
- package/dist/shared/icon.mjs +0 -23
- package/dist/shared/icon.mjs.map +0 -1
- package/dist/shared/input-modality.mjs +0 -47
- package/dist/shared/input-modality.mjs.map +0 -1
- package/dist/shared/input-style.mjs +0 -10
- package/dist/shared/input-style.mjs.map +0 -1
- package/dist/shared/layering.d.mts +0 -17
- package/dist/shared/layering.d.mts.map +0 -1
- package/dist/shared/layering.mjs +0 -37
- package/dist/shared/layering.mjs.map +0 -1
- package/dist/shared/notification.d.mts +0 -10
- package/dist/shared/notification.d.mts.map +0 -1
- package/dist/shared/notification.mjs +0 -105
- package/dist/shared/notification.mjs.map +0 -1
- package/dist/shared/reduced-motion.mjs +0 -19
- package/dist/shared/reduced-motion.mjs.map +0 -1
- package/dist/shared/select-indicator.mjs +0 -40
- package/dist/shared/select-indicator.mjs.map +0 -1
- package/dist/shared/size-scale.d.mts +0 -6
- package/dist/shared/size-scale.d.mts.map +0 -1
- package/dist/shared/size-scale.mjs +0 -28
- package/dist/shared/size-scale.mjs.map +0 -1
- package/dist/shared/state-parts.mjs +0 -123
- package/dist/shared/state-parts.mjs.map +0 -1
- package/dist/shared/text-entry.mjs +0 -54
- package/dist/shared/text-entry.mjs.map +0 -1
- package/dist/styles.css +0 -6238
- package/dist/system/as-child.mjs +0 -42
- package/dist/system/as-child.mjs.map +0 -1
- package/dist/system/context.mjs +0 -54
- package/dist/system/context.mjs.map +0 -1
- package/dist/system/controlled.mjs +0 -45
- package/dist/system/controlled.mjs.map +0 -1
- package/dist/system/create-component.mjs +0 -285
- package/dist/system/create-component.mjs.map +0 -1
- package/dist/system/create-part.mjs +0 -123
- package/dist/system/create-part.mjs.map +0 -1
- package/dist/system/dev-warn.mjs +0 -13
- package/dist/system/dev-warn.mjs.map +0 -1
- package/dist/system/getters.mjs +0 -24
- package/dist/system/getters.mjs.map +0 -1
- package/dist/system/merge-props.d.mts +0 -5
- package/dist/system/merge-props.d.mts.map +0 -1
- package/dist/system/merge-props.mjs +0 -95
- package/dist/system/merge-props.mjs.map +0 -1
- package/dist/system/react-node.mjs +0 -17
- package/dist/system/react-node.mjs.map +0 -1
- package/dist/system/refs.mjs +0 -21
- package/dist/system/refs.mjs.map +0 -1
- package/dist/system/styled-component.mjs +0 -15
- package/dist/system/styled-component.mjs.map +0 -1
- package/dist/system/types.d.mts +0 -47
- package/dist/system/types.d.mts.map +0 -1
- package/dist/tokens/dist/preset.d.mts +0 -6
- package/dist/tokens/dist/preset.d.mts.map +0 -1
- package/dist/tokens/dist/preset.mjs +0 -997
- package/dist/tokens/dist/preset.mjs.map +0 -1
- package/skills/components/accordion/SKILL.md +0 -138
- package/skills/components/alert/SKILL.md +0 -126
- package/skills/components/angle-slider/SKILL.md +0 -155
- package/skills/components/avatar/SKILL.md +0 -123
- package/skills/components/badge/SKILL.md +0 -117
- package/skills/components/breadcrumb/SKILL.md +0 -128
- package/skills/components/button/SKILL.md +0 -122
- package/skills/components/card/SKILL.md +0 -126
- package/skills/components/carousel/SKILL.md +0 -176
- package/skills/components/cascade-select/SKILL.md +0 -206
- package/skills/components/checkbox/SKILL.md +0 -149
- package/skills/components/clipboard/SKILL.md +0 -139
- package/skills/components/collapsible/SKILL.md +0 -130
- package/skills/components/color-picker/SKILL.md +0 -216
- package/skills/components/combobox/SKILL.md +0 -218
- package/skills/components/date-input/SKILL.md +0 -157
- package/skills/components/date-picker/SKILL.md +0 -235
- package/skills/components/dialog/SKILL.md +0 -159
- package/skills/components/drawer/SKILL.md +0 -192
- package/skills/components/editable/SKILL.md +0 -162
- package/skills/components/empty-state/SKILL.md +0 -125
- package/skills/components/field/SKILL.md +0 -133
- package/skills/components/fieldset/SKILL.md +0 -123
- package/skills/components/file-upload/SKILL.md +0 -184
- package/skills/components/floating-panel/SKILL.md +0 -206
- package/skills/components/hover-card/SKILL.md +0 -173
- package/skills/components/image-cropper/SKILL.md +0 -158
- package/skills/components/input/SKILL.md +0 -131
- package/skills/components/kbd/SKILL.md +0 -116
- package/skills/components/listbox/SKILL.md +0 -172
- package/skills/components/marquee/SKILL.md +0 -151
- package/skills/components/menu/SKILL.md +0 -202
- package/skills/components/navigation-menu/SKILL.md +0 -172
- package/skills/components/number-input/SKILL.md +0 -177
- package/skills/components/pagination/SKILL.md +0 -159
- package/skills/components/password-input/SKILL.md +0 -156
- package/skills/components/pin-input/SKILL.md +0 -157
- package/skills/components/popover/SKILL.md +0 -166
- package/skills/components/progress/SKILL.md +0 -144
- package/skills/components/qr-code/SKILL.md +0 -132
- package/skills/components/radio-group/SKILL.md +0 -153
- package/skills/components/rating-group/SKILL.md +0 -151
- package/skills/components/scroll-area/SKILL.md +0 -149
- package/skills/components/select/SKILL.md +0 -202
- package/skills/components/separator/SKILL.md +0 -114
- package/skills/components/signature-pad/SKILL.md +0 -161
- package/skills/components/skeleton/SKILL.md +0 -114
- package/skills/components/slider/SKILL.md +0 -178
- package/skills/components/snackbar/SKILL.md +0 -154
- package/skills/components/spinner/SKILL.md +0 -122
- package/skills/components/splitter/SKILL.md +0 -136
- package/skills/components/steps/SKILL.md +0 -150
- package/skills/components/switch/SKILL.md +0 -144
- package/skills/components/table/SKILL.md +0 -144
- package/skills/components/tabs/SKILL.md +0 -138
- package/skills/components/tags-input/SKILL.md +0 -194
- package/skills/components/textarea/SKILL.md +0 -131
- package/skills/components/timer/SKILL.md +0 -142
- package/skills/components/toast/SKILL.md +0 -129
- package/skills/components/toc/SKILL.md +0 -141
- package/skills/components/toggle/SKILL.md +0 -125
- package/skills/components/toggle-group/SKILL.md +0 -129
- package/skills/components/tooltip/SKILL.md +0 -188
- package/skills/components/tour/SKILL.md +0 -158
- package/skills/components/tree-view/SKILL.md +0 -180
- package/skills/synapse/SKILL.md +0 -301
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 'combobox'
|
|
3
|
-
description: 'Combobox — 사용자가 입력하는 대로 컬렉션을 좁히고 일치 항목을 떠 있는 목록으로 제시하는 텍스트 필드. 컴포넌트는 결코 필터링하지 않습니다. 사용처가 좁혀진 컬렉션을 전달하며, 컴포넌트는 키보드 도달, 타입어헤드, 알려지는 위치를 현재 화면에 있는 행이 아니라 컬렉션 전체를 기준으로 처리합니다. 다른 이름: combobox, autocomplete, typeahead, search select, filterable dropdown, lookup field, 콤보박스, 자동완성, 검색 셀렉트, 자동완성 입력.'
|
|
4
|
-
metadata:
|
|
5
|
-
package: '@neurocle/synapse-react'
|
|
6
|
-
packageVersion: '0.3.0'
|
|
7
|
-
registryEntry: 'packages/registry/data/components/combobox.json'
|
|
8
|
-
registryStructuralVersion: '0.3.0'
|
|
9
|
-
lifecycle: 'active'
|
|
10
|
-
generator: 'packages/react/src/skills/generate.ts'
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<!--
|
|
14
|
-
생성된 파일 — 손으로 고치지 않습니다.
|
|
15
|
-
|
|
16
|
-
Source: packages/registry/data/components/combobox.json (항목 구조 0.3.0)
|
|
17
|
-
Generator: packages/react/src/skills/generate.ts
|
|
18
|
-
Regenerate: npx nx run react:skills:generate
|
|
19
|
-
|
|
20
|
-
아래에서 이 컴포넌트에 대해 말하는 모든 문장은 그 항목의 필드입니다. 여기서 고친 내용은 다음
|
|
21
|
-
재생성 때 지워지고, 손으로 설명한 컴포넌트는 아무것도 실패하지 않은 채 설명과 어긋납니다.
|
|
22
|
-
대신 항목을 고칩니다.
|
|
23
|
-
-->
|
|
24
|
-
|
|
25
|
-
# Combobox
|
|
26
|
-
|
|
27
|
-
> 사용자가 입력하는 대로 컬렉션을 좁히고 일치 항목을 떠 있는 목록으로 제시하는 텍스트 필드. 컴포넌트는 결코 필터링하지 않습니다. 사용처가 좁혀진 컬렉션을 전달하며, 컴포넌트는 키보드 도달, 타입어헤드, 알려지는 위치를 현재 화면에 있는 행이 아니라 컬렉션 전체를 기준으로 처리합니다.
|
|
28
|
-
|
|
29
|
-
`@neurocle/synapse-react` 0.3.0에서 생성했습니다. 설치된 버전이 이 버전이 아니면, 이 페이지의 어떤 내용보다 설치된 패키지 안에 함께 배포된 Registry를 우선합니다.
|
|
30
|
-
|
|
31
|
-
- 패키지: `@neurocle/synapse-react`
|
|
32
|
-
- 내보내기: `Combobox`
|
|
33
|
-
- 분류: `collection-data-entry`
|
|
34
|
-
- 수명 주기: `active`
|
|
35
|
-
|
|
36
|
-
## 알려진 예외 — 사용 전에 확인
|
|
37
|
-
|
|
38
|
-
이 컴포넌트는 아래 기준 2개를 **의도적으로 충족하지 않습니다**. 기록된 결정이므로 고치려 들지 말고, 각 항목의 유의점을 지켜서 씁니다.
|
|
39
|
-
|
|
40
|
-
### WCAG 2.2 SC 1.4.11 비텍스트 대비 (AA)
|
|
41
|
-
|
|
42
|
-
- 대상 part: `item`
|
|
43
|
-
- 충족하지 못하는 것: Combobox의 강조된 항목은 `secondary.default` 배경만으로 표시되며, overlay 배경 대비 1.16:1(밝은 테마), 1.46:1(어두운 테마)로 3:1에 못 미칩니다. 포인터와 키보드 모두 링을 그리지 않습니다.
|
|
44
|
-
- 의도한 이유: 모든 강조 행에 링을 그리면 시스템의 다른 어떤 hover보다 무겁게 보였습니다. 포커스는 목록에 머물고 강조된 항목은 `aria-activedescendant`로 보조 기술에 전달되며, 선택된 항목은 파란 글자와 체크 표시로 따로 구분됩니다. `contrast-pairs.json`에 `highlight` 용도로 기록되어 있습니다.
|
|
45
|
-
- 사용 시 유의점: 저시력 사용자에게 강조 위치가 잘 보이지 않을 수 있습니다. 접근성 감사 대상 제품이라면 이 예외를 감사 문서에 포함하세요. 항목을 직접 그릴 때는 선택 상태의 글자색과 체크 표시를 지워 강조와 선택을 같은 모양으로 만들지 마세요.
|
|
46
|
-
|
|
47
|
-
### HTML 폼 제출 — 알려진 결함
|
|
48
|
-
|
|
49
|
-
- 충족하지 못하는 것: 숨겨진 필드 없이 보이는 입력의 텍스트가 제출됩니다. 단일 선택이면 항목의 value가 아니라 label이 제출되고, `multiple`이면 빈 문자열이 제출됩니다.
|
|
50
|
-
- 의도한 이유: machine이 숨겨진 입력을 제공하지 않고 `selectionBehavior`가 입력 텍스트를 label로 채우는 업스트림 동작입니다. 제출 값을 바꾸는 우회를 두지 않고 그대로 기록합니다.
|
|
51
|
-
- 사용 시 유의점: label과 value가 다르거나 `multiple`을 쓰면 `onValueChange`로 값을 받아 제품의 필드에 직접 넣어 제출하세요. 폼 제출만 믿고 서버에서 value를 기대하지 마세요.
|
|
52
|
-
|
|
53
|
-
## Do
|
|
54
|
-
|
|
55
|
-
> 훑어보기에는 너무 큰 집합에서의 선택으로, 입력이 사용자가 원하는 항목에 도달하는 방법인 경우 — 고객, 국가, 저장소, 태그. 키 입력마다 집합을 가져오는 경우에도 맞는 컨트롤입니다. `loading`과 `empty`는 컴포넌트가 시점을 정하고 제품이 문구를 쓰는 part이므로, 느린 검색은 빈 목록을 보여주는 대신 느리다고 말해줍니다. 집합에 없는 값도 정당할 때 — 이미 연락처일 수도 아닐 수도 있는 이메일 주소처럼 — `allowCustomValue`를 쓰세요.
|
|
56
|
-
|
|
57
|
-
## Don't
|
|
58
|
-
|
|
59
|
-
> 사용자가 입력할 필요가 없을 때는 쓰지 마세요. Select는 같은 컬렉션을 trigger 뒤에 보여주고 키 입력이 들지 않으며, 컬렉션이 여섯 항목뿐인 Combobox는 사용자가 그냥 읽을 수 있었던 것 위에 얹은 검색 필드일 뿐입니다. 여러 개의 자유 텍스트 항목을 수집하는 데 쓰지 마세요 — 그것은 각 항목을 하나의 문자열이 아니라 제거 가능한 토큰으로 유지하는 TagsInput입니다. label과 value가 다를 때 폼 참여 노트를 먼저 읽지 않고 폼 필드로 쓰지 마세요. input은 자기 텍스트, 즉 label을 제출합니다. 그리고 내비게이션에 쓰지 마세요. listbox는 행을 현재 값이 있는 선택지로 알리는데, 하나를 고르면 다른 곳으로 이동해 버린다면 그것은 거짓이 됩니다.
|
|
60
|
-
|
|
61
|
-
## Anti-patterns
|
|
62
|
-
|
|
63
|
-
> 컬렉션을 좁히는 대신 렌더링 루프 안에서 필터링하는 것 — JSX에서 `collection.items.filter(...)`를 map하는 식입니다. machine의 탐색, 타입어헤드, 알려지는 위치는 모두 컬렉션을 읽으므로, 렌더링 시점에만 필터링된 목록은 키보드가 화면에 없는 항목을 돌아다니게 하고 `aria-setsize`가 필터링되지 않은 전체 개수를 보고하게 만듭니다. `collection.withItems(...)`는 기존 컬렉션을 건드리지 않고 새 컬렉션을 반환하며, 같은 일을 올바르게 하는 지원 방식이 이것입니다.
|
|
64
|
-
|
|
65
|
-
Registry는 이 컴포넌트의 안내를 `reviewed`로 기록합니다(검토일 2026-09-22).
|
|
66
|
-
|
|
67
|
-
## 관련 컴포넌트
|
|
68
|
-
|
|
69
|
-
- `Select` (`select`)
|
|
70
|
-
- `Listbox` (`listbox`)
|
|
71
|
-
- `TagsInput` (`tags-input`)
|
|
72
|
-
- `CascadeSelect` (`cascade-select`)
|
|
73
|
-
- `Menu` (`menu`)
|
|
74
|
-
|
|
75
|
-
## 가져오기
|
|
76
|
-
|
|
77
|
-
```tsx
|
|
78
|
-
import { Combobox } from '@neurocle/synapse-react'
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Anatomy
|
|
82
|
-
|
|
83
|
-
React 네임스페이스가 노출하는 part 16개를 항목의 `parts.containment`가 기록한 대로 조합했습니다. 한 part가 놓일 수 있는 정당한 자리가 둘 이상이면 스니펫은 첫 번째를 쓰고, 아래 목록이 나머지를 알려 줍니다.
|
|
84
|
-
|
|
85
|
-
```tsx
|
|
86
|
-
<Combobox.Root>
|
|
87
|
-
<Combobox.Control>
|
|
88
|
-
<Combobox.ClearTrigger />
|
|
89
|
-
<Combobox.Input />
|
|
90
|
-
<Combobox.Trigger />
|
|
91
|
-
</Combobox.Control>
|
|
92
|
-
<Combobox.Label />
|
|
93
|
-
<Combobox.Positioner>
|
|
94
|
-
<Combobox.Content>
|
|
95
|
-
<Combobox.List>
|
|
96
|
-
<Combobox.ItemGroup>
|
|
97
|
-
<Combobox.Item>
|
|
98
|
-
<Combobox.ItemIndicator />
|
|
99
|
-
<Combobox.ItemText />
|
|
100
|
-
</Combobox.Item>
|
|
101
|
-
<Combobox.ItemGroupLabel />
|
|
102
|
-
</Combobox.ItemGroup>
|
|
103
|
-
</Combobox.List>
|
|
104
|
-
<Combobox.Empty />
|
|
105
|
-
<Combobox.Loading />
|
|
106
|
-
</Combobox.Content>
|
|
107
|
-
</Combobox.Positioner>
|
|
108
|
-
</Combobox.Root>
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
- `Combobox.Root` — 최상위에 놓입니다
|
|
112
|
-
- `Combobox.ClearTrigger` — `Control` 안에 놓입니다
|
|
113
|
-
- `Combobox.Content` — `Positioner` 안에 놓입니다
|
|
114
|
-
- `Combobox.Control` — `Root` 안에 놓입니다
|
|
115
|
-
- `Combobox.Input` — `Control` 안에 놓입니다
|
|
116
|
-
- `Combobox.Item` — `ItemGroup` 안, 또는 `List` 안에 놓입니다
|
|
117
|
-
- `Combobox.ItemGroup` — `List` 안에 놓입니다
|
|
118
|
-
- `Combobox.ItemGroupLabel` — `ItemGroup` 안에 놓입니다
|
|
119
|
-
- `Combobox.ItemIndicator` — `Item` 안에 놓입니다
|
|
120
|
-
- `Combobox.ItemText` — `Item` 안에 놓입니다
|
|
121
|
-
- `Combobox.Label` — `Root` 안에 놓입니다
|
|
122
|
-
- `Combobox.List` — `Content` 안에 놓입니다
|
|
123
|
-
- `Combobox.Positioner` — `Root` 안에 놓입니다
|
|
124
|
-
- `Combobox.Trigger` — `Control` 안에 놓입니다
|
|
125
|
-
- `Combobox.Empty` — `Content` 안, 또는 `List` 안에 놓입니다
|
|
126
|
-
- `Combobox.Loading` — `Content` 안, 또는 `List` 안에 놓입니다
|
|
127
|
-
|
|
128
|
-
### Synapse가 더하는 part
|
|
129
|
-
|
|
130
|
-
- `Combobox.Empty` — Combobox는 컬렉션이 필터링된 컬렉션인 컴포넌트이므로, '항목 없음'은 비어 있는 극단적인 경우가 아니라 정상적이고 빈번한 상태입니다 — 쿼리가 아무것과도 일치하지 않을 때 아무것도 렌더링하지 않는 목록은 로드에 실패한 목록과 구별할 수 없습니다. 컴포넌트는 `empty`를 `collection.size === 0`으로부터 판단하므로 사용처가 이를 명시할 필요가 없습니다. 문구는 사용처가 작성하는데, "No results found"를 소유하는 디자인 시스템은 그 문구를 사용처가 출시하는 모든 언어로 번역하는 일까지 떠안게 되기 때문입니다.
|
|
131
|
-
- `Combobox.Loading` — 컬렉션이 아니라 `loading` prop으로 판단합니다. 요청이 진행 중인지는 제품만 아는 사실이기 때문입니다. `empty`보다 우선합니다(공통 우선순위는 error, loading, empty 순입니다). 결과가 아직 도착하지 않아 비어 있는 컬렉션은 결과가 없는 컬렉션이 아니며, 요청 도중에 "일치 항목 없음"을 알리는 것이 바로 이 part가 막기 위해 존재하는 잘못된 답입니다.
|
|
132
|
-
|
|
133
|
-
## Props
|
|
134
|
-
|
|
135
|
-
빌드가 방출하는 선언에서 도출한 prop 34개. 선언에는 기본값을 둘 자리가 없으므로 prop 기록에는 기본값이 없습니다. 기본값이 있다면 그 prop의 설명에 적혀 있습니다.
|
|
136
|
-
|
|
137
|
-
### 필수
|
|
138
|
-
|
|
139
|
-
- `collection` — `SynapseCollection<TItem>`, 필수. 제시할 컬렉션이며, `createCollection`으로 만듭니다. 필터링은 사용처의 몫입니다: 질의가 바뀌는 대로 컬렉션을 좁히고 — `withItems`는 새 컬렉션을 돌려주고 이것은 건드리지 않습니다 — 그 결과를 넘기면 됩니다. 컴포넌트는 사용처를 대신해 필터링하지 않는데, 일치가 "~로 시작"인지 "~를 포함"인지 "퍼지"인지 "서버가 말한 대로"인지 알 수 없기 때문입니다.
|
|
140
|
-
|
|
141
|
-
### 선택
|
|
142
|
-
|
|
143
|
-
- `value` — `readonly string[]`, 선택. 제어되는 선택.
|
|
144
|
-
- `defaultValue` — `readonly string[]`, 선택. 비제어 초기 선택. `value`가 주어지면 무시됩니다.
|
|
145
|
-
- `onValueChange` — `(details: ComboboxValueChangeDetails) => void`, 선택. 제어 여부와 무관하게 선택이 바뀔 때마다 알림을 받습니다.
|
|
146
|
-
- `inputValue` — `string`, 선택. 제어되는 필드 안의 텍스트. 선택된 것을 뜻하는 `value`와는 별개입니다.
|
|
147
|
-
- `defaultInputValue` — `string`, 선택. 비제어 초기 필드 텍스트.
|
|
148
|
-
- `onInputValueChange` — `(details: ComboboxInputValueChangeDetails) => void`, 선택. 텍스트가 바뀔 때 알림을 받습니다 — 사용처가 컬렉션을 다시 거르는 지점입니다.
|
|
149
|
-
- `highlightedValue` — `string | null`, 선택. 제어되는 하이라이트 아이템 — `aria-activedescendant`가 가리키는 대상입니다.
|
|
150
|
-
- `defaultHighlightedValue` — `string | null`, 선택. 비제어 초기 하이라이트 아이템.
|
|
151
|
-
- `onHighlightChange` — `(details: ComboboxHighlightChangeDetails) => void`, 선택. 하이라이트가 움직일 때 알림을 받으며, 한 번도 렌더된 적 없는 아이템으로 갈 때도 받습니다.
|
|
152
|
-
- `open` — `boolean`, 선택. 제어되는 목록의 열림 상태.
|
|
153
|
-
- `defaultOpen` — `boolean`, 선택. 비제어 초기 열림 상태.
|
|
154
|
-
- `onOpenChange` — `(details: { open: boolean; }) => void`, 선택. 목록이 열리거나 닫힐 때마다 알림을 받습니다.
|
|
155
|
-
- `loading` — `boolean`, 선택. 요청이 진행 중입니다. 이 컴포넌트가 스스로 답할 수 없는 유일한 상태 part 사실입니다. `Combobox.Loading`을 움직이며, `Combobox.Empty`보다 우선합니다 — 결과가 아직 도착하지 않아 비어 있는 컬렉션은 결과가 없는 컬렉션이 아닙니다.
|
|
156
|
-
- `multiple` — `boolean`, 선택. 둘 이상을 선택할 수 있게 합니다.
|
|
157
|
-
- `allowCustomValue` — `boolean`, 선택. 어떤 아이템과도 일치하지 않는 텍스트도 값으로 받아들입니다.
|
|
158
|
-
- `closeOnSelect` — `boolean`, 선택. 선택하면 목록을 닫습니다. 단일 선택 Combobox에서는 기본값이 true입니다.
|
|
159
|
-
- `inputBehavior` — `ComboboxInputBehavior`, 선택. 필터링 말고도 타이핑이 무엇을 하는지. 기본값은 `none`입니다.
|
|
160
|
-
- `selectionBehavior` — `ComboboxSelectionBehavior`, 선택. 선택하면 필드의 텍스트가 어떻게 되는지. 기본값은 `replace`입니다.
|
|
161
|
-
- `openOnClick` — `boolean`, 선택. 필드를 클릭하면 목록을 엽니다.
|
|
162
|
-
- `openOnChange` — `boolean`, 선택. 텍스트가 바뀌는 즉시 목록을 엽니다. 기본값은 true입니다.
|
|
163
|
-
- `loopFocus` — `boolean`, 선택. 키보드 이동이 양 끝을 넘어가면 반대편으로 이어집니다.
|
|
164
|
-
- `placeholder` — `string`, 선택. 필드의 placeholder 텍스트.
|
|
165
|
-
- `positioning` — `ComboboxPositioning`, 선택. 목록이 놓이는 위치.
|
|
166
|
-
- `name` — `string`, 선택. 폼 필드 이름. 이것이 없으면 컨트롤은 아무것도 제출하지 않습니다.
|
|
167
|
-
- `form` — `string`, 선택. 폼 바깥에 렌더된 Combobox를 id로 폼과 연결합니다.
|
|
168
|
-
- `disabled` — `boolean`, 선택. 비활성화된 Combobox는 제출되지 않고 반응하지도 않습니다.
|
|
169
|
-
- `readOnly` — `boolean`, 선택. 읽기 전용 Combobox는 값을 제출하지만 바꿀 수는 없습니다.
|
|
170
|
-
- `invalid` — `boolean`, 선택. 보조 기술에 `aria-invalid`로 알려집니다.
|
|
171
|
-
- `required` — `boolean`, 선택. 제약 검증: 폼이 제출되려면 무언가가 선택되어 있어야 합니다.
|
|
172
|
-
- `autoFocus` — `boolean`, 선택. 마운트될 때 포커스를 필드 안으로 옮깁니다.
|
|
173
|
-
- `translations` — `TranslationOverrides`, 선택. 이 Combobox에만 적용되는 접근성 문자열이며, provider의 것보다 우선합니다.
|
|
174
|
-
- `size` — `Size`, 선택. 하나의 공유 척도에서 옵니다. 모든 컴포넌트가 그렇듯 기본값은 `md`입니다.
|
|
175
|
-
- `id` — `string`, 선택. 팩토리가 생성하는 식별자를 덮어씁니다. 서버와 클라이언트에서 동일합니다.
|
|
176
|
-
|
|
177
|
-
## Variants
|
|
178
|
-
|
|
179
|
-
- `size` — `xs`, `sm`, `md`, `lg`, `xl`. 기본값은 `md`. size 축은 컨트롤과 각 행의 최소 높이와 텍스트 스타일, 그리고 두 trigger의 아이콘 크기를 정합니다. 행 높이를 직접 정하지는 않습니다. 윈도가 알지 못하는 무언가에 높이가 좌우되는 행은 거짓말하는 스크롤바가 되므로, 레시피는 최솟값만 정하고 나머지는 콘텐츠가 결정하게 합니다.
|
|
180
|
-
|
|
181
|
-
## 폼
|
|
182
|
-
|
|
183
|
-
폼 참여: 예.
|
|
184
|
-
|
|
185
|
-
- `input`으로 제출합니다.
|
|
186
|
-
- 제출 값은 `value`에서 옵니다.
|
|
187
|
-
- 항목은 사용처가 아무것도 설정하지 않았을 때 제출되는 값을 기록하지 않습니다.
|
|
188
|
-
|
|
189
|
-
> 숨겨진 필드는 없습니다. `name`, `form`, `required`, `disabled`는 눈에 보이는 `role="combobox"` input에 적용되므로, 폼이 제출하는 것은 바로 그 입력의 텍스트입니다. 단일 Combobox에서 machine의 기본 `selectionBehavior`는 `replace`이며, 이는 텍스트를 선택된 항목의 label로 설정합니다 — 따라서 제출되는 문자열은 항목의 value가 아니라 label이며, label과 value가 다른 제품은 `onValueChange`를 읽어 value를 직접 제출해야 합니다. `multiple`이면 machine이 `selectionBehavior`를 `clear`로 바꾸므로 필드는 빈 문자열을 제출하고, 선택은 사용처 자신의 상태를 통해서만 폼에 전달됩니다. 이것은 업스트림의 형태이며, 서버에서 뒤늦게 발견되는 대신 여기에 기록해 둡니다.
|
|
190
|
-
|
|
191
|
-
## 이 컴포넌트에 일부러 없는 것
|
|
192
|
-
|
|
193
|
-
- `error-state` — Combobox는 이 상태가 보고할 실패를 낳는 요청을 수행하지 않습니다. 사용처가 가져오고 필터링하므로 요청이 실패했음을 아는 것은 사용처뿐이며 — 그 사실을 말할 자리는 컴포넌트가 자기 일정대로 열고 닫는 목록 안이 아니라 필드 옆입니다.
|
|
194
|
-
|
|
195
|
-
## 접근성
|
|
196
|
-
|
|
197
|
-
### 접근 가능한 이름
|
|
198
|
-
|
|
199
|
-
> 필드는 machine이 내보내는 `htmlFor`를 통해 Label part로 이름이 붙습니다. trigger와 clear trigger의 이름은 provider의 `combobox.trigger.label`과 `combobox.clearTrigger.label`에서 오며 `machineTranslations`를 거쳐 전달됩니다 — 그렇지 않으면 machine이 "Toggle suggestions"와 "Clear value"를 동작이 가장 나중에 적용되는 접근성 영역에 하드코딩하므로, Synapse가 제품이 바꿀 수 없는 이름을 허용하더라도 사용처가 prop을 넘겨 둘 중 어느 것도 덮어쓸 수 없게 됩니다.
|
|
200
|
-
|
|
201
|
-
### 포커스
|
|
202
|
-
|
|
203
|
-
> DOM 포커스는 결코 input을 떠나지 않습니다. 하이라이트된 행은 aria-activedescendant로 가리키며, 덕분에 목록이 아래에서 움직이는 동안에도 사용자가 계속 입력할 수 있습니다 — 고정된 행이 중요한 이유도 이것입니다. 그 속성이 가리키는 id는 작성자가 우연히 시험해 본 위치만이 아니라 모든 스크롤 위치에서 존재해야 합니다.
|
|
204
|
-
|
|
205
|
-
### 알려 주는 위치
|
|
206
|
-
|
|
207
|
-
> aria-posinset과 aria-setsize는 컬렉션 자체의 `positionOf`에서 오므로, 컬렉션 전체와 그 안에서의 절대적·그룹 상대적 위치를 나타냅니다. 둘 다 렌더링 루프에서 세지 않습니다. 렌더링 루프에서 세는 것은 윈도잉된 목록이 만 개짜리 컬렉션 위의 스무 행짜리 윈도에서 세 번째 행을 "3 of 20"로 알리게 되는 전형적인 경로입니다.
|
|
208
|
-
|
|
209
|
-
## 로케일과 컬렉션
|
|
210
|
-
|
|
211
|
-
- 로케일 의존: 예. 목록의 배치는 논리적이므로 `bottom-start`는 provider의 텍스트 방향을 따릅니다. 타입어헤드와 보이는 레이블은 사용처의 컬렉션이 담은 그대로이며, 이는 해당 로케일의 것입니다. trigger와 clear trigger의 이름은 provider의 번역에서 옵니다.
|
|
212
|
-
- 컬렉션 윈도잉: 예. 사용처가 자신의 children을 제공하지 않으면 `List`는 언제나 `resolveWindow`의 행을 렌더링합니다. 윈도잉은 올바른 동작을 얻기 위해 사용처가 선택해야 하는 옵션이 결코 아닙니다. 그 덕분에 키보드 도달, 타입어헤드, 알려지는 개수가 모두 렌더링된 윈도가 아니라 컬렉션 전체를 나타냅니다 — 그리고 활성 행은 범위 밖에 있어도 DOM에 고정되므로 `aria-activedescendant`가 존재하지 않는 id를 가리키는 일이 없습니다. Combobox는 이 고정이 가장 절실한 경우입니다. 입력할 때마다 컬렉션이 좁혀지고 machine이 첫 번째 일치 항목을 하이라이트하므로 하이라이트가 끊임없이 움직이며, activedescendant가 허공을 가리키는 컴포넌트는 정확히 사용되는 동안 조용히 쓸 수 없게 됩니다.
|
|
213
|
-
|
|
214
|
-
## 기능 용어와 다른 이름
|
|
215
|
-
|
|
216
|
-
- 다루는 기능: `type-to-filter`, `choose-from-list`, `custom-value`, `single-select`, `multi-select`, `windowed-collection`, `form-value`, `floating-layer`, `readonly-display`, `translatable-strings`.
|
|
217
|
-
- 다른 이름: `combobox`, `autocomplete`, `typeahead`, `search select`, `filterable dropdown`, `lookup field`, `콤보박스`, `자동완성`, `검색 셀렉트`, `자동완성 입력`.
|
|
218
|
-
- 어휘 상태: `controlled`.
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 'date-input'
|
|
3
|
-
description: 'DateInput — 자유 텍스트가 아니라 일, 월, 연도 세그먼트를 따로 두어 만든 날짜 필드이므로, 컴포넌트가 잘못 해석할 여지가 없습니다. 세그먼트는 provider의 로케일이 정한 순서로 나타나며, 사용처가 설정하고 읽는 값과 폼이 제출하는 값은 언제나 ISO 날짜입니다. 다른 이름: date input, date field, date entry, segmented date, dob field, datetime input, 날짜 입력, 날짜 필드, 생년월일 입력, 날짜 세그먼트 입력.'
|
|
4
|
-
metadata:
|
|
5
|
-
package: '@neurocle/synapse-react'
|
|
6
|
-
packageVersion: '0.3.0'
|
|
7
|
-
registryEntry: 'packages/registry/data/components/date-input.json'
|
|
8
|
-
registryStructuralVersion: '0.3.0'
|
|
9
|
-
lifecycle: 'active'
|
|
10
|
-
generator: 'packages/react/src/skills/generate.ts'
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<!--
|
|
14
|
-
생성된 파일 — 손으로 고치지 않습니다.
|
|
15
|
-
|
|
16
|
-
Source: packages/registry/data/components/date-input.json (항목 구조 0.3.0)
|
|
17
|
-
Generator: packages/react/src/skills/generate.ts
|
|
18
|
-
Regenerate: npx nx run react:skills:generate
|
|
19
|
-
|
|
20
|
-
아래에서 이 컴포넌트에 대해 말하는 모든 문장은 그 항목의 필드입니다. 여기서 고친 내용은 다음
|
|
21
|
-
재생성 때 지워지고, 손으로 설명한 컴포넌트는 아무것도 실패하지 않은 채 설명과 어긋납니다.
|
|
22
|
-
대신 항목을 고칩니다.
|
|
23
|
-
-->
|
|
24
|
-
|
|
25
|
-
# DateInput
|
|
26
|
-
|
|
27
|
-
> 자유 텍스트가 아니라 일, 월, 연도 세그먼트를 따로 두어 만든 날짜 필드이므로, 컴포넌트가 잘못 해석할 여지가 없습니다. 세그먼트는 provider의 로케일이 정한 순서로 나타나며, 사용처가 설정하고 읽는 값과 폼이 제출하는 값은 언제나 ISO 날짜입니다.
|
|
28
|
-
|
|
29
|
-
`@neurocle/synapse-react` 0.3.0에서 생성했습니다. 설치된 버전이 이 버전이 아니면, 이 페이지의 어떤 내용보다 설치된 패키지 안에 함께 배포된 Registry를 우선합니다.
|
|
30
|
-
|
|
31
|
-
- 패키지: `@neurocle/synapse-react`
|
|
32
|
-
- 내보내기: `DateInput`
|
|
33
|
-
- 분류: `collection-data-entry`
|
|
34
|
-
- 수명 주기: `active`
|
|
35
|
-
|
|
36
|
-
## Do
|
|
37
|
-
|
|
38
|
-
> 사용자가 알고 있어 그냥 입력하면 되는 모든 날짜 — 생년월일, 청구일, 만료일, 마감일. 날짜가 오늘에서 멀거나 정확히 알려져 있을 때는 언제나 달력보다 나은 컨트롤입니다. 월 그리드로 1974년에 도달하려면 십여 번의 조작이 필요하지만 입력하면 세 번이면 됩니다. 시간이 중요하면 `granularity`를 `minute`이나 `second`로 올리며, AM/PM 세그먼트가 나타날지는 로케일의 시계 관례가 결정합니다.
|
|
39
|
-
|
|
40
|
-
## Don't
|
|
41
|
-
|
|
42
|
-
> 사용자가 달력을 봐야 고를 수 있을 때 — 화요일 고르기, 주말 피하기, 월말 찾기 — 는 쓰지 마세요. 그것은 DatePicker이며, DatePicker는 어차피 이 필드를 자신의 텍스트 부분으로 조합합니다. 연도만 또는 월만 입력받는 데 쓰지 마세요. 세그먼트가 하나뿐인 세그먼트 필드는 키보드가 더 나쁜 NumberInput일 뿐입니다. "편의"를 위해 자유 텍스트 필드에 연결하지 마세요. 파싱된 문자열은 이 컴포넌트가 표현 불가능하게 만들려고 존재하는 바로 그 실패이며, 그럴듯하고 형식도 올바르지만 한 달이 어긋난 날짜를 만들어내면서도 화면에는 아무 흔적도 남기지 않습니다. 그리고 직접 작성한 코드에서 `valueAsString`을 제출하지 마세요 — ISO를 건네주는 `onValueChange`를 읽으세요.
|
|
43
|
-
|
|
44
|
-
## Anti-patterns
|
|
45
|
-
|
|
46
|
-
> machine 자신의 값이 경계를 넘어가게 두는 것. 그 값은 `@internationalized/date`의 `DateValue[]` — Synapse가 공개 계약에서 배제하는 업스트림 타입 — 이고, `valueAsString`은 로케일에 맞춰 형식화된 텍스트입니다. 그래서 숨겨진 input을 보정해야 했고, 변경 콜백을 `valueAsString`이 아니라 `details.value`로부터 만듭니다. `valueAsString`을 그대로 전달하면 타입 검사를 통과하고 `en-US`에서는 올바르게 보이지만, 영국의 사용처와 미국의 사용처에 서로 다른 날을 뜻하는 `03/04/2026`을 건네게 됩니다. 이제 제어 경로와 네이티브 제출 경로가 일치하며, 단지 형식이 아니라 그 일치가 바로 보장되는 속성입니다.
|
|
47
|
-
|
|
48
|
-
Registry는 이 컴포넌트의 안내를 `reviewed`로 기록합니다(검토일 2026-09-22).
|
|
49
|
-
|
|
50
|
-
## 관련 컴포넌트
|
|
51
|
-
|
|
52
|
-
- `DatePicker` (`date-picker`)
|
|
53
|
-
- `NumberInput` (`number-input`)
|
|
54
|
-
- `PinInput` (`pin-input`)
|
|
55
|
-
- `Editable` (`editable`)
|
|
56
|
-
|
|
57
|
-
## 가져오기
|
|
58
|
-
|
|
59
|
-
```tsx
|
|
60
|
-
import { DateInput } from '@neurocle/synapse-react'
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Anatomy
|
|
64
|
-
|
|
65
|
-
React 네임스페이스가 노출하는 part 6개를 항목의 `parts.containment`가 기록한 대로 조합했습니다. 한 part가 놓일 수 있는 정당한 자리가 둘 이상이면 스니펫은 첫 번째를 쓰고, 아래 목록이 나머지를 알려 줍니다.
|
|
66
|
-
|
|
67
|
-
```tsx
|
|
68
|
-
<DateInput.Root>
|
|
69
|
-
<DateInput.Label />
|
|
70
|
-
<DateInput.Control>
|
|
71
|
-
<DateInput.SegmentGroup>
|
|
72
|
-
<DateInput.Segment />
|
|
73
|
-
</DateInput.SegmentGroup>
|
|
74
|
-
</DateInput.Control>
|
|
75
|
-
<DateInput.HiddenInput />
|
|
76
|
-
</DateInput.Root>
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
- `DateInput.Root` — 최상위에 놓입니다
|
|
80
|
-
- `DateInput.Label` — `Root` 안에 놓입니다
|
|
81
|
-
- `DateInput.Control` — `Root` 안에 놓입니다
|
|
82
|
-
- `DateInput.SegmentGroup` — `Control` 안에 놓입니다
|
|
83
|
-
- `DateInput.Segment` — `SegmentGroup` 안에 놓입니다
|
|
84
|
-
- `DateInput.HiddenInput` — `Root` 안에 놓입니다
|
|
85
|
-
|
|
86
|
-
## Props
|
|
87
|
-
|
|
88
|
-
빌드가 방출하는 선언에서 도출한 prop 23개. 선언에는 기본값을 둘 자리가 없으므로 prop 기록에는 기본값이 없습니다. 기본값이 있다면 그 prop의 설명에 적혀 있습니다.
|
|
89
|
-
|
|
90
|
-
모든 prop이 선택입니다. 아무것도 넘기지 않으면 컴포넌트는 비제어로 동작합니다.
|
|
91
|
-
|
|
92
|
-
### 선택
|
|
93
|
-
|
|
94
|
-
- `value` — `readonly string[]`, 선택. 제어되는 값이며, ISO 날짜입니다 — `['2026-09-20']`.
|
|
95
|
-
- `defaultValue` — `readonly string[]`, 선택. 비제어 초기 값. `value`가 주어지면 무시됩니다.
|
|
96
|
-
- `onValueChange` — `(details: DateInputValueChangeDetails) => void`, 선택. 제어 여부와 무관하게 값이 바뀔 때마다 알림을 받습니다.
|
|
97
|
-
- `onFocusChange` — `(details: DateInputFocusChangeDetails) => void`, 선택. 키보드가 날짜 사이를 오갈 때 알림을 받습니다.
|
|
98
|
-
- `min` — `string`, 선택. 받아들이는 가장 이른 날짜이며, ISO 날짜입니다.
|
|
99
|
-
- `max` — `string`, 선택. 받아들이는 가장 늦은 날짜이며, ISO 날짜입니다.
|
|
100
|
-
- `isDateUnavailable` — `(date: Date) => boolean`, 선택. 필드 전체를 비활성화하지 않고 특정 날짜만 거부합니다.
|
|
101
|
-
- `selectionMode` — `DateInputSelectionMode`, 선택. 필드가 날짜를 몇 개나 쥐는지. 기본값은 `single`입니다.
|
|
102
|
-
- `granularity` — `DateInputGranularity`, 선택. 필드가 시점의 어디까지를 편집하는지. 기본값은 `day`입니다.
|
|
103
|
-
- `hourCycle` — `12 | 24`, 선택. 12시간제인지 24시간제인지. 기본값은 로캘의 방식을 따릅니다.
|
|
104
|
-
- `shouldForceLeadingZeros` — `boolean`, 선택. 일과 월을 두 자리로 채웁니다. 기본값은 로캘의 관행을 따릅니다.
|
|
105
|
-
- `timeZone` — `string`, 선택. 날짜를 해석할 때 쓰는 시간대.
|
|
106
|
-
- `hideTimeZone` — `boolean`, 선택. 정밀도에 시각이 포함될 때 시간대 세그먼트를 숨깁니다.
|
|
107
|
-
- `locale` — `string`, 선택. 이 필드에 한해 provider의 로캘을 덮어씁니다. 한 페이지에 정말로 여러 로캘이 섞이는 드문 제품을 위한 것입니다. 설정하지 않고 두면 애플리케이션 전체가 `SynapseProvider`의 로캘을 따라서, 모든 필드가 같은 규칙으로 날짜를 쓰고 해석합니다.
|
|
108
|
-
- `name` — `string`, 선택. 폼 필드 이름. 이것이 없으면 컨트롤은 아무것도 제출하지 않습니다.
|
|
109
|
-
- `form` — `string`, 선택. 폼 바깥에 렌더된 DateInput을 id로 폼과 연결합니다.
|
|
110
|
-
- `disabled` — `boolean`, 선택. 비활성화된 DateInput은 제출되지 않고 반응하지도 않습니다.
|
|
111
|
-
- `readOnly` — `boolean`, 선택. 읽기 전용 DateInput은 값을 제출하지만 바꿀 수는 없습니다.
|
|
112
|
-
- `invalid` — `boolean`, 선택. 보조 기술에 `aria-invalid`로 알려집니다.
|
|
113
|
-
- `required` — `boolean`, 선택. 제약 검증: 폼이 제출되려면 날짜가 있어야 합니다.
|
|
114
|
-
- `translations` — `TranslationOverrides`, 선택. 이 DateInput에만 적용되는 접근성 문자열이며, provider의 것보다 우선합니다.
|
|
115
|
-
- `size` — `Size`, 선택. 하나의 공유 척도에서 옵니다. 모든 컴포넌트가 그렇듯 기본값은 `md`입니다.
|
|
116
|
-
- `id` — `string`, 선택. 팩토리가 생성하는 식별자를 덮어씁니다. 서버와 클라이언트에서 동일합니다.
|
|
117
|
-
|
|
118
|
-
## Variants
|
|
119
|
-
|
|
120
|
-
- `size` — `xs`, `sm`, `md`, `lg`, `xl`. 기본값은 `md`. size 축은 컨트롤의 최소 높이와 각 세그먼트의 높이, 텍스트 스타일을 정합니다. 필드의 너비는 정하지 않습니다. 세그먼트가 몇 개이고 각각 얼마나 넓은지는 로케일과 granularity가 정하므로, 크기 이름에 고정된 필드는 `yyyy年mm月dd日`을 잘라내거나 `mm/dd` 뒤에 빈 공간을 남기게 됩니다.
|
|
121
|
-
|
|
122
|
-
## 폼
|
|
123
|
-
|
|
124
|
-
폼 참여: 예.
|
|
125
|
-
|
|
126
|
-
- `input`으로 제출합니다.
|
|
127
|
-
- 제출 값은 `value`에서 옵니다.
|
|
128
|
-
- 항목은 사용처가 아무것도 설정하지 않았을 때 제출되는 값을 기록하지 않습니다.
|
|
129
|
-
|
|
130
|
-
> `hiddenInput`은 anatomy part이므로 팩토리가 machine 자신의 getter로 이를 만들고 — 그런 다음 바로잡습니다. machine은 제출 값을 `valueAsString`으로 설정하는데, 이는 로케일에 맞춰 형식화된 텍스트입니다. `03/04/2026`을 받은 서버는 3월인지 4월인지 알 수 없으며, 값은 관련된 모두가 같은 로케일을 공유하는 동안에만 올바르게 왕복합니다. `amendBehaviorProps`는 그 prop 하나만 api 자신의 값에서 도출한 ISO 날짜로 대체하고 getter 출력의 나머지는 그대로 둡니다. `meta.amendedParts`가 `HiddenInput`을 명시하므로 이 보정은 묻혀 있지 않고 찾아볼 수 있습니다. 설정되지 않은 필드는 machine의 getter와 똑같이 빈 문자열을 제출하므로, 입력된 적 없는 날짜가 `undefined`라는 단어로 도착하지 않습니다. `range`나 `multiple` 필드는 날짜마다 `name[0]`, `name[1]`로 이름 붙은 숨겨진 input을 하나씩 렌더링하며, 각각은 그 input이 실제로 제출하는 날짜로부터 보정됩니다.
|
|
131
|
-
|
|
132
|
-
## 이 컴포넌트에 일부러 없는 것
|
|
133
|
-
|
|
134
|
-
- `empty-state` — 값이 없는 DateInput은 비어 있는 것이 아닙니다 — 세그먼트별 placeholder `mm`, `dd`, `yyyy`를 보여주는 필드이며, 이것이 사용자에게 무엇을 어떤 순서로 입력할지 알려줍니다. 그것이 곧 채워지지 않은 상태이며, 그 옆에서 "날짜 없음"을 알리는 영역은 이미 화면에 있는 것을 다시 설명할 뿐입니다.
|
|
135
|
-
- `loading-state` — 여기서는 아무것도 가져오지 않습니다. 필드는 제품이 이미 가진 값을 편집하므로, 아직 도착하지 않은 날짜는 비활성화된 컨트롤에 주변 폼이 그리는 스켈레톤을 더한 것입니다 — 이 시스템의 다른 모든 단일 값 컨트롤이 내놓는 것과 같은 답입니다.
|
|
136
|
-
- `error-state` — 유효하지 않음은 옆에 붙는 영역이 아니라 컨트롤의 상태입니다. `invalid`는 모든 세그먼트의 aria-invalid로 알려지며, `min`/`max` 밖이거나 `isDateUnavailable`이 거부한 날짜는 이미 세그먼트 자체의 spinbutton 범위로 도달할 수 없습니다. 그 이유를 설명하는 메시지는 그 안의 모든 컨트롤에 대한 레이블, 힌트, 유효성 검사 문구를 소유하는 주변 필드에 속합니다.
|
|
137
|
-
|
|
138
|
-
## 접근성
|
|
139
|
-
|
|
140
|
-
### 접근 가능한 이름
|
|
141
|
-
|
|
142
|
-
> 필드는 machine이 내보내는 id를 통해 Label로 이름이 붙고, 각 세그먼트는 자기 부분에 대한 aria-label로 스스로 이름을 붙입니다 — machine이 "Year", "Month" 등을 영어로 하드코딩하므로, 보정을 통해 provider의 `dateInput.segment.*` 키에서 가져옵니다. `machineTranslations: null`이어도 공백이 하나 남습니다. machine의 유일한 번역 항목은 세그먼트별 문자열의 객체인 `placeholder(locale)`이고 그 대부분은 로케일에서 도출되지만, `AM/PM`, `era`, `timeZone`, `weekday` placeholder는 업스트림 영어로 남아 있으며, `dateInput.segment.placeholder` 키는 객체를 전달할 수 있는 이음매를 기다리고 있습니다.
|
|
143
|
-
|
|
144
|
-
### 포커스
|
|
145
|
-
|
|
146
|
-
> 각 세그먼트는 따로 포커스를 받을 수 있으며, 이것이 이 컴포넌트 설계의 구조적인 절반입니다. 사용자는 날짜를 입력하는 것이 아니라 도착하기 전에 의미가 정해진 필드를 채우므로, `03/04/2026`이 두 가지를 뜻할 수 없습니다. Label을 클릭하면 숨겨진 input이 아니라 첫 번째 세그먼트에 포커스가 갑니다.
|
|
147
|
-
|
|
148
|
-
## 로케일과 컬렉션
|
|
149
|
-
|
|
150
|
-
- 로케일 의존: 예. 로케일 요구 사항은 바로 이 컴포넌트를 위해 쓰였습니다. 세그먼트 순서는 provider의 로케일을 따릅니다 — `Intl.DateTimeFormat.formatToParts`가 이를 결정하므로, 아무도 설정하지 않아도 `ja-JP`는 연-월-일, `en-GB`는 일-월-연 순서가 됩니다 — 반면 제출 값은 언제나 ISO 날짜입니다. 로케일은 `useMachineProps` 안의 `useLocale()`에서 오며 결코 브라우저에서 오지 않습니다. 팩토리는 `dir`는 자동으로 제공하지만 `locale`은 제공하지 않으므로, 그 한 줄이 없다면 provider에 `locale="de-DE"`를 설정한 제품이 미국식 날짜 필드를 받게 되고, 기본 로케일을 쓰는 모든 개발자에게는 그것이 올바르게 보일 것입니다. `locale` prop은 필드 하나에 대해 이를 덮어쓰며, 이는 기본값이 아니라 문서화된 예외입니다.
|
|
151
|
-
- 컬렉션 윈도잉: 아니요. 항목은 이를 이유 없이 사실로만 기록합니다.
|
|
152
|
-
|
|
153
|
-
## 기능 용어와 다른 이름
|
|
154
|
-
|
|
155
|
-
- 다루는 기능: `date-entry`, `segmented-input`, `date-range`, `date-time-granularity`, `iso-date-value`, `locale-formatting`, `form-value`, `readonly-display`, `translatable-strings`.
|
|
156
|
-
- 다른 이름: `date input`, `date field`, `date entry`, `segmented date`, `dob field`, `datetime input`, `날짜 입력`, `날짜 필드`, `생년월일 입력`, `날짜 세그먼트 입력`.
|
|
157
|
-
- 어휘 상태: `controlled`.
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 'date-picker'
|
|
3
|
-
description: 'DatePicker — 달력을 여는 필드. 그리드, 요일 순서, 월 이름, 한 주의 첫날은 모두 애플리케이션의 로케일에서 오며, 사용처가 읽고 쓰는 값은 어떤 로케일에서든 ISO 날짜 문자열입니다. 다른 이름: date picker, calendar, datepicker, date field, day picker, 날짜 선택기, 데이트 피커, 달력, 캘린더.'
|
|
4
|
-
metadata:
|
|
5
|
-
package: '@neurocle/synapse-react'
|
|
6
|
-
packageVersion: '0.3.0'
|
|
7
|
-
registryEntry: 'packages/registry/data/components/date-picker.json'
|
|
8
|
-
registryStructuralVersion: '0.3.0'
|
|
9
|
-
lifecycle: 'active'
|
|
10
|
-
generator: 'packages/react/src/skills/generate.ts'
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<!--
|
|
14
|
-
생성된 파일 — 손으로 고치지 않습니다.
|
|
15
|
-
|
|
16
|
-
Source: packages/registry/data/components/date-picker.json (항목 구조 0.3.0)
|
|
17
|
-
Generator: packages/react/src/skills/generate.ts
|
|
18
|
-
Regenerate: npx nx run react:skills:generate
|
|
19
|
-
|
|
20
|
-
아래에서 이 컴포넌트에 대해 말하는 모든 문장은 그 항목의 필드입니다. 여기서 고친 내용은 다음
|
|
21
|
-
재생성 때 지워지고, 손으로 설명한 컴포넌트는 아무것도 실패하지 않은 채 설명과 어긋납니다.
|
|
22
|
-
대신 항목을 고칩니다.
|
|
23
|
-
-->
|
|
24
|
-
|
|
25
|
-
# DatePicker
|
|
26
|
-
|
|
27
|
-
> 달력을 여는 필드. 그리드, 요일 순서, 월 이름, 한 주의 첫날은 모두 애플리케이션의 로케일에서 오며, 사용처가 읽고 쓰는 값은 어떤 로케일에서든 ISO 날짜 문자열입니다.
|
|
28
|
-
|
|
29
|
-
`@neurocle/synapse-react` 0.3.0에서 생성했습니다. 설치된 버전이 이 버전이 아니면, 이 페이지의 어떤 내용보다 설치된 패키지 안에 함께 배포된 Registry를 우선합니다.
|
|
30
|
-
|
|
31
|
-
- 패키지: `@neurocle/synapse-react`
|
|
32
|
-
- 내보내기: `DatePicker`
|
|
33
|
-
- 분류: `collection-data-entry`
|
|
34
|
-
- 수명 주기: `active`
|
|
35
|
-
|
|
36
|
-
## 알려진 예외 — 사용 전에 확인
|
|
37
|
-
|
|
38
|
-
이 컴포넌트는 아래 기준 2개를 **의도적으로 충족하지 않습니다**. 기록된 결정이므로 고치려 들지 말고, 각 항목의 유의점을 지켜서 씁니다.
|
|
39
|
-
|
|
40
|
-
### HTML 폼 제출 — 알려진 결함
|
|
41
|
-
|
|
42
|
-
- 대상 part: `input`
|
|
43
|
-
- 충족하지 못하는 것: ISO 날짜가 아니라 로케일에 맞춰 형식화된 표시 텍스트가 제출됩니다. `03/04/2026`은 3월 4일인지 4월 3일인지 알 수 없습니다. `form` prop도 없습니다.
|
|
44
|
-
- 의도한 이유: machine이 숨겨진 입력을 제공하지 않아 보이는 필드가 표시이자 제출 값이며, 컴포넌트 안의 어떤 이음매도 둘을 분리할 수 없습니다. 우회하지 않고 기록합니다.
|
|
45
|
-
- 사용 시 유의점: `onValueChange`로 값을 받아 ISO 문자열을 제품의 숨겨진 필드에 넣어 제출하세요. 제출된 텍스트를 서버에서 날짜로 파싱하지 마세요.
|
|
46
|
-
|
|
47
|
-
### 알려진 결함 — 주 번호
|
|
48
|
-
|
|
49
|
-
- 충족하지 못하는 것: 주 번호 열을 렌더링할 수 없고 `showWeekNumbers`는 공개 prop이 아닙니다.
|
|
50
|
-
- 의도한 이유: 주 번호 셀의 getter가 하나의 anatomy 키로 세 종류의 셀을 내보내므로 part로 표현할 수 없습니다.
|
|
51
|
-
- 사용 시 유의점: 주 번호가 필요한 달력은 이 컴포넌트로 만들 수 없습니다.
|
|
52
|
-
|
|
53
|
-
## Do
|
|
54
|
-
|
|
55
|
-
> 사용자가 맥락 속에서 봐야 하는 날짜 — 무슨 요일인지, 오늘에서 얼마나 떨어져 있는지, 근처에 무엇이 있는지에 따라 선택이 달라지는 경우. 그리드가 가치의 전부입니다. 예약, 일정, 마감일 선택기는 사용자가 숫자를 떠올리는 것이 아니라 한 달을 두고 따져보는 경우입니다. 대상 사용자가 여러 로케일에 걸쳐 있을 때도 맞는 컨트롤인데, 한 주의 첫날, 월 이름, 입력의 파싱이 모두 브라우저가 아니라 애플리케이션의 로케일을 따르기 때문입니다.
|
|
56
|
-
|
|
57
|
-
## Don't
|
|
58
|
-
|
|
59
|
-
> 사용자가 이미 알고 있어 그냥 입력하면 되는 날짜에는 쓰지 마세요. 생년월일은 숫자 세 개이며, 1989년에 닿으려고 사백 개월을 거슬러 넘기게 하는 것은 세그먼트 세 개짜리 필드보다 모든 면에서 나쁩니다 — 그것은 이 컴포넌트와 같은 ISO 계약을 공유하는 DateInput입니다. 월이나 연도만 고르는 데 쓰지 마세요. minView를 설정해 아무도 원하지 않는 날짜(day)를 묻는 대신 달력이 해당 그리드에서 멈추게 하세요. 값이 기간이나 반복일 때는 달력으로 표현할 수 없으므로 쓰지 말고, 현재로서는 이것을 유일한 폼 컨트롤로 의존하지 마세요. 제출되는 필드가 로케일 형식의 텍스트를 담으며, 이는 formParticipation에 기록되어 있습니다.
|
|
60
|
-
|
|
61
|
-
## Anti-patterns
|
|
62
|
-
|
|
63
|
-
> 브라우저의 로케일로 날짜를 형식화하거나 파싱하는 것. 모든 날짜 API의 기본값이고, 작성한 사람 눈에는 보이지 않으며, 그럴듯하고 형식도 올바르지만 한 달이 어긋난 날짜를 만들어냅니다 — `03/04/2026`은 영국에서는 4월 3일이고 미국에서는 3월 4일입니다. 두 번째 Anti-pattern은 첫 번째에서 이어집니다. 형식화된 문자열을 경계 너머로 넘기는 것입니다. 이 컴포넌트가 노출하는 모든 값은 ISO 날짜이므로, 사용처는 결코 달력 객체를 만들지 않으며 사용자가 우연히 본 텍스트를 보내지도 않습니다.
|
|
64
|
-
|
|
65
|
-
Registry는 이 컴포넌트의 안내를 `reviewed`로 기록합니다(검토일 2026-09-22).
|
|
66
|
-
|
|
67
|
-
## 관련 컴포넌트
|
|
68
|
-
|
|
69
|
-
- `DateInput` (`date-input`)
|
|
70
|
-
- `Select` (`select`)
|
|
71
|
-
- `Popover` (`popover`)
|
|
72
|
-
- `Combobox` (`combobox`)
|
|
73
|
-
|
|
74
|
-
## 가져오기
|
|
75
|
-
|
|
76
|
-
```tsx
|
|
77
|
-
import { DatePicker } from '@neurocle/synapse-react'
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Anatomy
|
|
81
|
-
|
|
82
|
-
React 네임스페이스가 노출하는 part 24개를 항목의 `parts.containment`가 기록한 대로 조합했습니다. 한 part가 놓일 수 있는 정당한 자리가 둘 이상이면 스니펫은 첫 번째를 쓰고, 아래 목록이 나머지를 알려 줍니다.
|
|
83
|
-
|
|
84
|
-
```tsx
|
|
85
|
-
<DatePicker.Root>
|
|
86
|
-
<DatePicker.Control>
|
|
87
|
-
<DatePicker.ClearTrigger />
|
|
88
|
-
<DatePicker.Input />
|
|
89
|
-
<DatePicker.Trigger />
|
|
90
|
-
</DatePicker.Control>
|
|
91
|
-
<DatePicker.Label />
|
|
92
|
-
<DatePicker.Positioner>
|
|
93
|
-
<DatePicker.Content>
|
|
94
|
-
<DatePicker.PresetTrigger />
|
|
95
|
-
<DatePicker.RangeText />
|
|
96
|
-
<DatePicker.View>
|
|
97
|
-
<DatePicker.MonthSelect />
|
|
98
|
-
<DatePicker.Table>
|
|
99
|
-
<DatePicker.TableBody>
|
|
100
|
-
<DatePicker.TableRow>
|
|
101
|
-
<DatePicker.TableCell>
|
|
102
|
-
<DatePicker.TableCellTrigger />
|
|
103
|
-
</DatePicker.TableCell>
|
|
104
|
-
<DatePicker.TableHeader />
|
|
105
|
-
</DatePicker.TableRow>
|
|
106
|
-
</DatePicker.TableBody>
|
|
107
|
-
<DatePicker.TableHead />
|
|
108
|
-
</DatePicker.Table>
|
|
109
|
-
<DatePicker.ViewControl>
|
|
110
|
-
<DatePicker.NextTrigger />
|
|
111
|
-
<DatePicker.PrevTrigger />
|
|
112
|
-
<DatePicker.ViewTrigger />
|
|
113
|
-
</DatePicker.ViewControl>
|
|
114
|
-
<DatePicker.YearSelect />
|
|
115
|
-
</DatePicker.View>
|
|
116
|
-
</DatePicker.Content>
|
|
117
|
-
</DatePicker.Positioner>
|
|
118
|
-
</DatePicker.Root>
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
- `DatePicker.Root` — 최상위에 놓입니다
|
|
122
|
-
- `DatePicker.ClearTrigger` — `Control` 안에 놓입니다
|
|
123
|
-
- `DatePicker.Content` — `Positioner` 안에 놓입니다
|
|
124
|
-
- `DatePicker.Control` — `Root` 안에 놓입니다
|
|
125
|
-
- `DatePicker.Input` — `Control` 안에 놓입니다
|
|
126
|
-
- `DatePicker.Label` — `Root` 안에 놓입니다
|
|
127
|
-
- `DatePicker.MonthSelect` — `View` 안에 놓입니다
|
|
128
|
-
- `DatePicker.NextTrigger` — `ViewControl` 안에 놓입니다
|
|
129
|
-
- `DatePicker.Positioner` — `Root` 안에 놓입니다
|
|
130
|
-
- `DatePicker.PresetTrigger` — `Content` 안에 놓입니다
|
|
131
|
-
- `DatePicker.PrevTrigger` — `ViewControl` 안에 놓입니다
|
|
132
|
-
- `DatePicker.RangeText` — `Content` 안에 놓입니다
|
|
133
|
-
- `DatePicker.Table` — `View` 안에 놓입니다
|
|
134
|
-
- `DatePicker.TableBody` — `Table` 안에 놓입니다
|
|
135
|
-
- `DatePicker.TableCell` — `TableRow` 안에 놓입니다
|
|
136
|
-
- `DatePicker.TableCellTrigger` — `TableCell` 안에 놓입니다
|
|
137
|
-
- `DatePicker.TableHead` — `Table` 안에 놓입니다
|
|
138
|
-
- `DatePicker.TableHeader` — `TableRow` 안에 놓입니다
|
|
139
|
-
- `DatePicker.TableRow` — `TableBody` 안, 또는 `TableHead` 안에 놓입니다
|
|
140
|
-
- `DatePicker.Trigger` — `Control` 안에 놓입니다
|
|
141
|
-
- `DatePicker.View` — `Content` 안에 놓입니다
|
|
142
|
-
- `DatePicker.ViewControl` — `View` 안에 놓입니다
|
|
143
|
-
- `DatePicker.ViewTrigger` — `ViewControl` 안에 놓입니다
|
|
144
|
-
- `DatePicker.YearSelect` — `View` 안에 놓입니다
|
|
145
|
-
|
|
146
|
-
## Props
|
|
147
|
-
|
|
148
|
-
빌드가 방출하는 선언에서 도출한 prop 37개. 선언에는 기본값을 둘 자리가 없으므로 prop 기록에는 기본값이 없습니다. 기본값이 있다면 그 prop의 설명에 적혀 있습니다.
|
|
149
|
-
|
|
150
|
-
모든 prop이 선택입니다. 아무것도 넘기지 않으면 컴포넌트는 비제어로 동작합니다.
|
|
151
|
-
|
|
152
|
-
### 선택
|
|
153
|
-
|
|
154
|
-
- `value` — `readonly string[]`, 선택. 제어되는 값이며, ISO 날짜입니다 — `['2026-09-20']`.
|
|
155
|
-
- `defaultValue` — `readonly string[]`, 선택. 비제어 초기 값. `value`가 주어지면 무시됩니다.
|
|
156
|
-
- `onValueChange` — `(details: DatePickerValueChangeDetails) => void`, 선택. 제어 여부와 무관하게 값이 바뀔 때마다 알림을 받습니다.
|
|
157
|
-
- `focusedValue` — `string`, 선택. 키보드가 올라가 있는, 제어되는 날짜이며 ISO 날짜입니다.
|
|
158
|
-
- `defaultFocusedValue` — `string`, 선택. 비제어 초기 포커스 날짜.
|
|
159
|
-
- `onFocusChange` — `(details: DatePickerFocusChangeDetails) => void`, 선택. 키보드가 날짜 사이를 오갈 때 알림을 받습니다.
|
|
160
|
-
- `open` — `boolean`, 선택. 제어되는 달력의 열림 상태.
|
|
161
|
-
- `defaultOpen` — `boolean`, 선택. 비제어 초기 열림 상태.
|
|
162
|
-
- `onOpenChange` — `(details: OpenChangeDetails) => void`, 선택. 달력이 열리거나 닫힐 때마다 알림을 받습니다.
|
|
163
|
-
- `view` — `DatePickerView`, 선택. 제어되는 격자 — 일, 월 또는 연입니다.
|
|
164
|
-
- `defaultView` — `DatePickerView`, 선택. 비제어 초기 격자. 기본값은 `minView`입니다.
|
|
165
|
-
- `onViewChange` — `(details: DatePickerViewChangeDetails) => void`, 선택. 격자가 바뀔 때 알림을 받습니다.
|
|
166
|
-
- `minView` — `DatePickerView`, 선택. 선택할 수 있는 가장 성긴 격자. 기본값은 `day`입니다.
|
|
167
|
-
- `maxView` — `DatePickerView`, 선택. 뷰 trigger가 올라갈 수 있는 가장 촘촘한 격자. 기본값은 `year`입니다.
|
|
168
|
-
- `min` — `string`, 선택. 받아들이는 가장 이른 날짜이며, ISO 날짜입니다.
|
|
169
|
-
- `max` — `string`, 선택. 받아들이는 가장 늦은 날짜이며, ISO 날짜입니다.
|
|
170
|
-
- `isDateUnavailable` — `(date: string) => boolean`, 선택. 피커 전체를 비활성화하지 않고 특정 날짜만 거부합니다. 날짜는 `value`와 같은 모양인 ISO 문자열로 도착하므로, 사용처가 답하기 위해 달력 객체를 만들거나 들여다볼 일이 없습니다.
|
|
171
|
-
- `selectionMode` — `DatePickerSelectionMode`, 선택. 피커가 날짜를 몇 개나 쥐는지. 기본값은 `single`입니다.
|
|
172
|
-
- `maxSelectedDates` — `number`, 선택. `multiple` 선택의 개수 상한을 정합니다.
|
|
173
|
-
- `fixedWeeks` — `boolean`, 선택. 언제나 여섯 주를 렌더해, 달마다 달력의 높이가 달라지지 않게 합니다.
|
|
174
|
-
- `startOfWeek` — `number`, 선택. 격자가 어느 요일에서 시작하는지이며, `0`이 일요일입니다. 기본값은 로캘을 따릅니다.
|
|
175
|
-
- `outsideDaySelectable` — `boolean`, 선택. 이웃한 달의 날짜도 그것이 보이는 격자에서 선택할 수 있게 합니다.
|
|
176
|
-
- `closeOnSelect` — `boolean`, 선택. 선택하면 달력을 닫습니다. 기본값은 true입니다.
|
|
177
|
-
- `openOnClick` — `boolean`, 선택. 필드를 클릭하면 달력을 엽니다.
|
|
178
|
-
- `inline` — `boolean`, 선택. 달력을 제자리에 렌더해 언제나 열려 있게 합니다.
|
|
179
|
-
- `positioning` — `DatePickerPositioning`, 선택. 달력이 놓이는 위치.
|
|
180
|
-
- `timeZone` — `string`, 선택. 날짜를 해석할 때 쓰는 시간대. 기본값은 `UTC`입니다.
|
|
181
|
-
- `placeholder` — `string`, 선택. 필드의 placeholder 텍스트. 기본값은 로캘의 날짜 형식입니다.
|
|
182
|
-
- `locale` — `string`, 선택. 이 피커에 한해 provider의 로캘을 덮어씁니다. 한 페이지에 정말로 여러 로캘이 섞이는 드문 제품을 위한 것입니다. 설정하지 않고 두면 애플리케이션 전체가 `SynapseProvider`의 로캘을 따라서, 모든 피커가 같은 규칙으로 날짜를 쓰고 해석합니다.
|
|
183
|
-
- `name` — `string`, 선택. 폼 필드 이름. 이것이 없으면 컨트롤은 아무것도 제출하지 않습니다.
|
|
184
|
-
- `disabled` — `boolean`, 선택. 비활성화된 DatePicker는 제출되지 않고 반응하지도 않습니다.
|
|
185
|
-
- `readOnly` — `boolean`, 선택. 읽기 전용 DatePicker는 값을 제출하지만 바꿀 수는 없습니다.
|
|
186
|
-
- `invalid` — `boolean`, 선택. 보조 기술에 `aria-invalid`로 알려집니다.
|
|
187
|
-
- `required` — `boolean`, 선택. 제약 검증: 폼이 제출되려면 날짜가 있어야 합니다.
|
|
188
|
-
- `translations` — `TranslationOverrides`, 선택. 이 DatePicker에만 적용되는 접근성 문자열이며, provider의 것보다 우선합니다.
|
|
189
|
-
- `size` — `Size`, 선택. 하나의 공유 척도에서 옵니다. 모든 컴포넌트가 그렇듯 기본값은 `md`입니다.
|
|
190
|
-
- `id` — `string`, 선택. 팩토리가 생성하는 식별자를 덮어씁니다. 서버와 클라이언트에서 동일합니다.
|
|
191
|
-
|
|
192
|
-
## Variants
|
|
193
|
-
|
|
194
|
-
- `size` — `xs`, `sm`, `md`, `lg`, `xl`. 기본값은 `md`.
|
|
195
|
-
|
|
196
|
-
## 폼
|
|
197
|
-
|
|
198
|
-
폼 참여: 예.
|
|
199
|
-
|
|
200
|
-
- `input`으로 제출합니다.
|
|
201
|
-
- 제출 값은 `value`에서 옵니다.
|
|
202
|
-
- 항목은 사용처가 아무것도 설정하지 않았을 때 제출되는 값을 기록하지 않습니다.
|
|
203
|
-
|
|
204
|
-
> 결함이며, 우회하지 않고 기록해 둡니다. `input` part가 machine의 `name`을 가지며 폼이 읽는 요소인데 — 그 값은 ISO 날짜가 아니라 사용자가 입력하고 읽는, 로케일에 맞춰 형식화된 날짜입니다. `03/04/2026`을 받은 서버는 4월 3일인지 3월 4일인지 알 수 없으며, 값은 관련된 모두가 같은 로케일을 공유하는 동안에만 올바르게 왕복합니다. DateInput도 같은 machine 결함을 겪었고 숨겨진 input에 `amendBehaviorProps`를 적용해 바로잡습니다. 이 machine은 숨겨진 input을 제공하지 않으므로, 보이는 필드가 표시이자 동시에 제출 값이며, 컴포넌트 안의 어떤 이음매도 둘을 분리할 수 없습니다. machine의 `syncInputElement` 이펙트가 변경될 때마다 `valueAsString`을 요소에 다시 기록하므로, 보정된 `defaultValue`는 첫 커밋까지만 살아남고 그 뒤에는 덮어써집니다. 해결책은 machine이 제공하는 숨겨진 input, 또는 팩토리가 렌더링할 수 있는 Synapse 소유의 숨겨진 input입니다. machine은 `form` prop도 선언하지 않으므로, DatePicker는 자신이 속한 폼과 함께 제출될 뿐 id로 폼과 연결될 수 없습니다.
|
|
205
|
-
|
|
206
|
-
## 이 컴포넌트에 일부러 없는 것
|
|
207
|
-
|
|
208
|
-
- `empty-state` — 달력은 결코 비어 있지 않습니다. 내용은 가져오는 것이 아니라 날짜와 로케일로부터 계산되므로, 모든 달에는 28일에서 31일이 있고 그리드에 보여줄 것이 없는 상태는 없습니다. 보이는 달 전체를 제외하는 `min`/`max` 범위라도 그 날들을 비활성화된 채로 렌더링합니다. 월 단위로 탐색하는 사용자는 자신이 어디에 도착했는지 봐야 하기 때문입니다.
|
|
209
|
-
- `loading-state` — 이 컴포넌트에서 로드되는 것은 없습니다. 그리드, 월 이름, 요일 순서는 `Intl`과 provider가 제공하는 로케일에서 오며, 이들 모두 첫 렌더링에서 동기적으로 사용할 수 있으므로 DatePicker가 무언가를 기다리는 구간은 없습니다.
|
|
210
|
-
- `error-state` — 거부된 날짜는 컨트롤의 `invalid`로 보고되고 `aria-invalid`로 알려지며, 제품이 받아들이지 않을 날짜는 `min`, `max`, `isDateUnavailable`로 제외되어 결코 선택될 수 없습니다. 둘 다 `error` 상태 part가 보고하는 것, 즉 사용처가 소유한 작업의 실패가 아닙니다.
|
|
211
|
-
|
|
212
|
-
## 접근성
|
|
213
|
-
|
|
214
|
-
### 접근 가능한 이름
|
|
215
|
-
|
|
216
|
-
> 필드는 htmlFor를 통해 Label part에서 이름을 얻습니다. 달력, clear trigger, 두 select는 provider의 번역 가능한 세트에서 이름을 얻으며 피커별로 덮어쓸 수 있습니다. machine의 함수형 문자열은 함수형 `machineTranslations`를 거쳐 전달됩니다: `dayCell`(사용자가 누르는 모든 날의 이름), `trigger`, `prevTrigger`, `nextTrigger`. view trigger의 이름은 보이는 월이나 연도로 시작하도록 보정에서 다시 구성되고(WCAG 2.5.3), preset trigger의 machine 레이블은 버려져 보이는 텍스트가 이름이 되며, 콘텐츠와 그리드의 aria-roledescription은 `datePicker.content.roleDescription`과 `datePicker.table.*`에서 옵니다. `weekNumberCell`은 렌더링되지 않고, `placeholder`는 로케일에서 도출됩니다.
|
|
217
|
-
|
|
218
|
-
### 포커스
|
|
219
|
-
|
|
220
|
-
> 그리드 안에서는 로빙 tabindex를 씁니다. 정확히 하나의 셀 trigger만 탭 순서에 있고 화살표 키가 포커스와 그 tabindex를 함께 옮기므로, 키보드 사용자는 마흔두 개의 셀을 일일이 거치지 않고 한 번의 탭으로 달력에 들어갑니다. 그리드 자체는 tabindex=-1이며 키 처리를 소유합니다.
|
|
221
|
-
|
|
222
|
-
### 선언된 부재
|
|
223
|
-
|
|
224
|
-
> 주 번호 열은 렌더링되지 않습니다. `getWeekNumberCellProps`와 `getWeekNumberHeaderCellProps`는 둘 다 `tableCell` part의 속성을 다른 역할 — rowheader, 그리고 scope=col인 열 머리글 — 로 내보내며, 하나의 anatomy 키로는 세 종류의 셀을 담을 수 없습니다. 그래서 이 열은 `unrenderedGetters`에 선언되고 `showWeekNumbers`는 공개 prop이 아닙니다.
|
|
225
|
-
|
|
226
|
-
## 로케일과 컬렉션
|
|
227
|
-
|
|
228
|
-
- 로케일 의존: 예. 시스템의 어떤 컴포넌트보다도 그렇습니다. 로케일은 한 주가 무슨 요일에 시작하는지, 요일 열을 무엇이라 부르는지, 월을 무엇이라 부르는지, 월과 연도를 함께 어떻게 쓰는지, 필드가 사용자의 입력을 어떻게 형식화하고 파싱하는지, 그리고 — 방향을 통해 — 이전·다음 화살표가 어느 쪽을 가리키는지를 결정합니다. 로케일은 SynapseProvider에서 오며 결코 브라우저에서 오지 않습니다. 피커별 `locale` prop은 한 페이지에서 실제로 여러 로케일을 섞어 쓰는 제품을 위한 문서화된 예외입니다. 값은 의도적으로 이 모든 것 바깥에 있습니다. 양방향 모두 ISO 날짜 문자열이므로, 사용처가 저장하는 값은 페이지의 언어에 따라 바뀌지 않습니다.
|
|
229
|
-
- 컬렉션 윈도잉: 아니요. 달력의 행은 컬렉션에서 가져오는 것이 아니라 보이는 달로부터 계산되며, 이 컴포넌트가 렌더링하는 가장 큰 그리드는 7칸짜리 6행입니다. 유일하게 긴 목록은 연도 선택이며, 이는 브라우저가 옵션을 스스로 가상화하는 네이티브 `select`입니다.
|
|
230
|
-
|
|
231
|
-
## 기능 용어와 다른 이름
|
|
232
|
-
|
|
233
|
-
- 다루는 기능: `pick-a-date`, `calendar-grid`, `date-range`, `iso-date-value`, `locale-formatting`, `locale-parsing`, `form-value`, `floating-layer`, `readonly-display`, `translatable-strings`.
|
|
234
|
-
- 다른 이름: `date picker`, `calendar`, `datepicker`, `date field`, `day picker`, `날짜 선택기`, `데이트 피커`, `달력`, `캘린더`.
|
|
235
|
-
- 어휘 상태: `controlled`.
|