@starci/grammar 0.4.12 → 0.5.0
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/LICENSE +21 -21
- package/README.md +269 -47
- package/dist/.build-stamp.json +9 -0
- package/dist/common/components-forms.css +435 -0
- package/dist/common/components-navigation.css +1163 -0
- package/dist/common/components-overlays.css +939 -0
- package/dist/common/registry.d.ts +60 -1
- package/dist/common/registry.d.ts.map +1 -1
- package/dist/common/registry.js +6 -0
- package/dist/common/registry.js.map +1 -1
- package/dist/common/renderers-forms.d.ts +44 -0
- package/dist/common/renderers-forms.d.ts.map +1 -0
- package/dist/common/renderers-forms.js +49 -0
- package/dist/common/renderers-forms.js.map +1 -0
- package/dist/common/renderers-navigation.d.ts +42 -0
- package/dist/common/renderers-navigation.d.ts.map +1 -0
- package/dist/common/renderers-navigation.js +46 -0
- package/dist/common/renderers-navigation.js.map +1 -0
- package/dist/common/renderers-overlays.d.ts +32 -0
- package/dist/common/renderers-overlays.d.ts.map +1 -0
- package/dist/common/renderers-overlays.js +36 -0
- package/dist/common/renderers-overlays.js.map +1 -0
- package/dist/common/renderers.d.ts +5 -2
- package/dist/common/renderers.d.ts.map +1 -1
- package/dist/common/renderers.js +3 -0
- package/dist/common/renderers.js.map +1 -1
- package/dist/common/styles.css +282 -1
- package/dist/core/LeadingNumber.d.ts.map +1 -1
- package/dist/core/LeadingNumber.js +1 -1
- package/dist/core/LeadingNumber.js.map +1 -1
- package/dist/core/OtpInput.d.ts +17 -1
- package/dist/core/OtpInput.d.ts.map +1 -1
- package/dist/core/OtpInput.js +17 -5
- package/dist/core/OtpInput.js.map +1 -1
- package/dist/core/StateMark.d.ts +6 -1
- package/dist/core/StateMark.d.ts.map +1 -1
- package/dist/core/StateMark.js +7 -2
- package/dist/core/StateMark.js.map +1 -1
- package/dist/core/branch/Accordion/index.d.ts +28 -0
- package/dist/core/branch/Accordion/index.d.ts.map +1 -0
- package/dist/core/branch/Accordion/index.js +30 -0
- package/dist/core/branch/Accordion/index.js.map +1 -0
- package/dist/core/branch/AlertDialog/index.d.ts +40 -0
- package/dist/core/branch/AlertDialog/index.d.ts.map +1 -0
- package/dist/core/branch/AlertDialog/index.js +59 -0
- package/dist/core/branch/AlertDialog/index.js.map +1 -0
- package/dist/core/branch/Calendar/index.d.ts +26 -0
- package/dist/core/branch/Calendar/index.d.ts.map +1 -0
- package/dist/core/branch/Calendar/index.js +17 -0
- package/dist/core/branch/Calendar/index.js.map +1 -0
- package/dist/core/branch/ComboBox/index.d.ts +32 -0
- package/dist/core/branch/ComboBox/index.d.ts.map +1 -0
- package/dist/core/branch/ComboBox/index.js +28 -0
- package/dist/core/branch/ComboBox/index.js.map +1 -0
- package/dist/core/branch/DataTable/index.d.ts +52 -0
- package/dist/core/branch/DataTable/index.d.ts.map +1 -0
- package/dist/core/branch/DataTable/index.js +46 -0
- package/dist/core/branch/DataTable/index.js.map +1 -0
- package/dist/core/branch/DatePicker/index.d.ts +23 -0
- package/dist/core/branch/DatePicker/index.d.ts.map +1 -0
- package/dist/core/branch/DatePicker/index.js +29 -0
- package/dist/core/branch/DatePicker/index.js.map +1 -0
- package/dist/core/branch/DateRangePicker/index.d.ts +21 -0
- package/dist/core/branch/DateRangePicker/index.d.ts.map +1 -0
- package/dist/core/branch/DateRangePicker/index.js +22 -0
- package/dist/core/branch/DateRangePicker/index.js.map +1 -0
- package/dist/core/branch/Dialog/index.d.ts +36 -0
- package/dist/core/branch/Dialog/index.d.ts.map +1 -0
- package/dist/core/branch/Dialog/index.js +20 -0
- package/dist/core/branch/Dialog/index.js.map +1 -0
- package/dist/core/branch/Disclosure/index.d.ts +22 -0
- package/dist/core/branch/Disclosure/index.d.ts.map +1 -0
- package/dist/core/branch/Disclosure/index.js +26 -0
- package/dist/core/branch/Disclosure/index.js.map +1 -0
- package/dist/core/branch/Drawer/index.d.ts +35 -0
- package/dist/core/branch/Drawer/index.d.ts.map +1 -0
- package/dist/core/branch/Drawer/index.js +20 -0
- package/dist/core/branch/Drawer/index.js.map +1 -0
- package/dist/core/branch/DropdownMenu/index.d.ts +61 -0
- package/dist/core/branch/DropdownMenu/index.d.ts.map +1 -0
- package/dist/core/branch/DropdownMenu/index.js +59 -0
- package/dist/core/branch/DropdownMenu/index.js.map +1 -0
- package/dist/core/branch/ListBox/index.d.ts +30 -0
- package/dist/core/branch/ListBox/index.d.ts.map +1 -0
- package/dist/core/branch/ListBox/index.js +14 -0
- package/dist/core/branch/ListBox/index.js.map +1 -0
- package/dist/core/branch/MarkdownArticle/index.d.ts +8 -0
- package/dist/core/branch/MarkdownArticle/index.d.ts.map +1 -1
- package/dist/core/branch/MarkdownArticle/index.js +7 -2
- package/dist/core/branch/MarkdownArticle/index.js.map +1 -1
- package/dist/core/branch/Popover/index.d.ts +33 -0
- package/dist/core/branch/Popover/index.d.ts.map +1 -0
- package/dist/core/branch/Popover/index.js +16 -0
- package/dist/core/branch/Popover/index.js.map +1 -0
- package/dist/core/branch/Rail/index.d.ts +2 -0
- package/dist/core/branch/Rail/index.d.ts.map +1 -1
- package/dist/core/branch/Rail/index.js +10 -3
- package/dist/core/branch/Rail/index.js.map +1 -1
- package/dist/core/branch/Select/index.d.ts +31 -0
- package/dist/core/branch/Select/index.d.ts.map +1 -0
- package/dist/core/branch/Select/index.js +41 -0
- package/dist/core/branch/Select/index.js.map +1 -0
- package/dist/core/branch/SurfaceAccordionCard/index.d.ts +6 -0
- package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceAccordionCard/index.js +6 -6
- package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -1
- package/dist/core/branch/SurfaceCard/classNames.d.ts +7 -2
- package/dist/core/branch/SurfaceCard/classNames.d.ts.map +1 -1
- package/dist/core/branch/SurfaceCard/classNames.js +7 -2
- package/dist/core/branch/SurfaceCard/classNames.js.map +1 -1
- package/dist/core/branch/SurfaceCard/index.d.ts +6 -0
- package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceCard/index.js +4 -4
- package/dist/core/branch/SurfaceCard/index.js.map +1 -1
- package/dist/core/branch/SurfaceListCard/index.d.ts +17 -1
- package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceListCard/index.js +10 -4
- package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
- package/dist/core/branch/Tabs/index.js +1 -1
- package/dist/core/branch/Tabs/index.js.map +1 -1
- package/dist/core/branch/Toast/index.d.ts +75 -0
- package/dist/core/branch/Toast/index.d.ts.map +1 -0
- package/dist/core/branch/Toast/index.js +145 -0
- package/dist/core/branch/Toast/index.js.map +1 -0
- package/dist/core/composite/Alert/index.d.ts +40 -0
- package/dist/core/composite/Alert/index.d.ts.map +1 -0
- package/dist/core/composite/Alert/index.js +27 -0
- package/dist/core/composite/Alert/index.js.map +1 -0
- package/dist/core/composite/AvatarGroup/index.d.ts +23 -0
- package/dist/core/composite/AvatarGroup/index.d.ts.map +1 -0
- package/dist/core/composite/AvatarGroup/index.js +15 -0
- package/dist/core/composite/AvatarGroup/index.js.map +1 -0
- package/dist/core/composite/Breadcrumbs/index.d.ts +27 -0
- package/dist/core/composite/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/core/composite/Breadcrumbs/index.js +16 -0
- package/dist/core/composite/Breadcrumbs/index.js.map +1 -0
- package/dist/core/composite/ButtonGroup/index.d.ts +14 -0
- package/dist/core/composite/ButtonGroup/index.d.ts.map +1 -0
- package/dist/core/composite/ButtonGroup/index.js +17 -0
- package/dist/core/composite/ButtonGroup/index.js.map +1 -0
- package/dist/core/composite/CheckboxGroup/index.d.ts +23 -0
- package/dist/core/composite/CheckboxGroup/index.d.ts.map +1 -0
- package/dist/core/composite/CheckboxGroup/index.js +21 -0
- package/dist/core/composite/CheckboxGroup/index.js.map +1 -0
- package/dist/core/composite/DescriptionList/index.d.ts +23 -0
- package/dist/core/composite/DescriptionList/index.d.ts.map +1 -0
- package/dist/core/composite/DescriptionList/index.js +8 -0
- package/dist/core/composite/DescriptionList/index.js.map +1 -0
- package/dist/core/composite/Fieldset/index.d.ts +17 -0
- package/dist/core/composite/Fieldset/index.d.ts.map +1 -0
- package/dist/core/composite/Fieldset/index.js +14 -0
- package/dist/core/composite/Fieldset/index.js.map +1 -0
- package/dist/core/composite/Form/index.d.ts +32 -0
- package/dist/core/composite/Form/index.d.ts.map +1 -0
- package/dist/core/composite/Form/index.js +25 -0
- package/dist/core/composite/Form/index.js.map +1 -0
- package/dist/core/composite/HorizontalScrollRegion/index.d.ts +5 -0
- package/dist/core/composite/HorizontalScrollRegion/index.d.ts.map +1 -1
- package/dist/core/composite/HorizontalScrollRegion/index.js +3 -2
- package/dist/core/composite/HorizontalScrollRegion/index.js.map +1 -1
- package/dist/core/composite/Pagination/index.d.ts +31 -0
- package/dist/core/composite/Pagination/index.d.ts.map +1 -0
- package/dist/core/composite/Pagination/index.js +42 -0
- package/dist/core/composite/Pagination/index.js.map +1 -0
- package/dist/core/composite/RadioGroup/index.d.ts +15 -0
- package/dist/core/composite/RadioGroup/index.d.ts.map +1 -0
- package/dist/core/composite/RadioGroup/index.js +20 -0
- package/dist/core/composite/RadioGroup/index.js.map +1 -0
- package/dist/core/composite/SegmentedControl/index.d.ts +24 -0
- package/dist/core/composite/SegmentedControl/index.d.ts.map +1 -0
- package/dist/core/composite/SegmentedControl/index.js +33 -0
- package/dist/core/composite/SegmentedControl/index.js.map +1 -0
- package/dist/core/composite/StaticStateRow/index.d.ts +6 -1
- package/dist/core/composite/StaticStateRow/index.d.ts.map +1 -1
- package/dist/core/composite/StaticStateRow/index.js +6 -1
- package/dist/core/composite/StaticStateRow/index.js.map +1 -1
- package/dist/core/composite/Stepper/index.d.ts +34 -0
- package/dist/core/composite/Stepper/index.d.ts.map +1 -0
- package/dist/core/composite/Stepper/index.js +27 -0
- package/dist/core/composite/Stepper/index.js.map +1 -0
- package/dist/core/composite/TagGroup/index.d.ts +41 -0
- package/dist/core/composite/TagGroup/index.d.ts.map +1 -0
- package/dist/core/composite/TagGroup/index.js +17 -0
- package/dist/core/composite/TagGroup/index.js.map +1 -0
- package/dist/core/composite/Timeline/index.d.ts +28 -0
- package/dist/core/composite/Timeline/index.d.ts.map +1 -0
- package/dist/core/composite/Timeline/index.js +14 -0
- package/dist/core/composite/Timeline/index.js.map +1 -0
- package/dist/core/composite/VerticalScrollRegion/index.d.ts +31 -1
- package/dist/core/composite/VerticalScrollRegion/index.d.ts.map +1 -1
- package/dist/core/composite/VerticalScrollRegion/index.js +16 -3
- package/dist/core/composite/VerticalScrollRegion/index.js.map +1 -1
- package/dist/core/composition/BottomNav/index.d.ts +33 -0
- package/dist/core/composition/BottomNav/index.d.ts.map +1 -0
- package/dist/core/composition/BottomNav/index.js +22 -0
- package/dist/core/composition/BottomNav/index.js.map +1 -0
- package/dist/core/composition/Footer/index.d.ts +35 -0
- package/dist/core/composition/Footer/index.d.ts.map +1 -0
- package/dist/core/composition/Footer/index.js +19 -0
- package/dist/core/composition/Footer/index.js.map +1 -0
- package/dist/core/composition/NavigationFeatureNav/index.d.ts +3 -0
- package/dist/core/composition/NavigationFeatureNav/index.d.ts.map +1 -1
- package/dist/core/composition/NavigationFeatureNav/index.js +3 -0
- package/dist/core/composition/NavigationFeatureNav/index.js.map +1 -1
- package/dist/core/composition/TopBar/index.d.ts +34 -0
- package/dist/core/composition/TopBar/index.d.ts.map +1 -0
- package/dist/core/composition/TopBar/index.js +15 -0
- package/dist/core/composition/TopBar/index.js.map +1 -0
- package/dist/core/composition/WorkspaceShell/index.d.ts +18 -1
- package/dist/core/composition/WorkspaceShell/index.d.ts.map +1 -1
- package/dist/core/composition/WorkspaceShell/index.js +10 -1
- package/dist/core/composition/WorkspaceShell/index.js.map +1 -1
- package/dist/core/dna.d.ts +26 -8
- package/dist/core/dna.d.ts.map +1 -1
- package/dist/core/dna.js +22 -4
- package/dist/core/dna.js.map +1 -1
- package/dist/core/index.d.ts +60 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/navigationClassNames.d.ts +3 -0
- package/dist/core/navigationClassNames.d.ts.map +1 -0
- package/dist/core/navigationClassNames.js +4 -0
- package/dist/core/navigationClassNames.js.map +1 -0
- package/dist/core/navigationKeys.d.ts +11 -0
- package/dist/core/navigationKeys.d.ts.map +1 -0
- package/dist/core/navigationKeys.js +44 -0
- package/dist/core/navigationKeys.js.map +1 -0
- package/dist/core/overlayScope.d.ts +42 -0
- package/dist/core/overlayScope.d.ts.map +1 -0
- package/dist/core/overlayScope.js +54 -0
- package/dist/core/overlayScope.js.map +1 -0
- package/dist/core/primitive/Avatar/index.d.ts +34 -0
- package/dist/core/primitive/Avatar/index.d.ts.map +1 -0
- package/dist/core/primitive/Avatar/index.js +24 -0
- package/dist/core/primitive/Avatar/index.js.map +1 -0
- package/dist/core/primitive/Badge/index.d.ts +6 -1
- package/dist/core/primitive/Badge/index.d.ts.map +1 -1
- package/dist/core/primitive/Badge/index.js +7 -2
- package/dist/core/primitive/Badge/index.js.map +1 -1
- package/dist/core/primitive/Checkbox/index.d.ts +25 -0
- package/dist/core/primitive/Checkbox/index.d.ts.map +1 -0
- package/dist/core/primitive/Checkbox/index.js +17 -0
- package/dist/core/primitive/Checkbox/index.js.map +1 -0
- package/dist/core/primitive/CloseButton/index.d.ts +17 -0
- package/dist/core/primitive/CloseButton/index.d.ts.map +1 -0
- package/dist/core/primitive/CloseButton/index.js +11 -0
- package/dist/core/primitive/CloseButton/index.js.map +1 -0
- package/dist/core/primitive/DateField/index.d.ts +33 -0
- package/dist/core/primitive/DateField/index.d.ts.map +1 -0
- package/dist/core/primitive/DateField/index.js +33 -0
- package/dist/core/primitive/DateField/index.js.map +1 -0
- package/dist/core/primitive/Field/index.d.ts +127 -0
- package/dist/core/primitive/Field/index.d.ts.map +1 -0
- package/dist/core/primitive/Field/index.js +100 -0
- package/dist/core/primitive/Field/index.js.map +1 -0
- package/dist/core/primitive/FileDropzone/index.d.ts +25 -0
- package/dist/core/primitive/FileDropzone/index.d.ts.map +1 -0
- package/dist/core/primitive/FileDropzone/index.js +35 -0
- package/dist/core/primitive/FileDropzone/index.js.map +1 -0
- package/dist/core/primitive/GrammarRoot/index.d.ts +6 -1
- package/dist/core/primitive/GrammarRoot/index.d.ts.map +1 -1
- package/dist/core/primitive/GrammarRoot/index.js +7 -2
- package/dist/core/primitive/GrammarRoot/index.js.map +1 -1
- package/dist/core/primitive/Icon/index.d.ts +7 -1
- package/dist/core/primitive/Icon/index.d.ts.map +1 -1
- package/dist/core/primitive/Icon/index.js +7 -2
- package/dist/core/primitive/Icon/index.js.map +1 -1
- package/dist/core/primitive/IconButton/index.d.ts +1 -1
- package/dist/core/primitive/IconButton/index.d.ts.map +1 -1
- package/dist/core/primitive/IconButton/index.js +2 -2
- package/dist/core/primitive/IconButton/index.js.map +1 -1
- package/dist/core/primitive/Image/index.d.ts +30 -0
- package/dist/core/primitive/Image/index.d.ts.map +1 -0
- package/dist/core/primitive/Image/index.js +29 -0
- package/dist/core/primitive/Image/index.js.map +1 -0
- package/dist/core/primitive/IncludedMark/index.d.ts +2 -1
- package/dist/core/primitive/IncludedMark/index.d.ts.map +1 -1
- package/dist/core/primitive/IncludedMark/index.js +3 -2
- package/dist/core/primitive/IncludedMark/index.js.map +1 -1
- package/dist/core/primitive/Kbd/index.d.ts +13 -0
- package/dist/core/primitive/Kbd/index.d.ts.map +1 -0
- package/dist/core/primitive/Kbd/index.js +14 -0
- package/dist/core/primitive/Kbd/index.js.map +1 -0
- package/dist/core/primitive/Label/index.d.ts +18 -4
- package/dist/core/primitive/Label/index.d.ts.map +1 -1
- package/dist/core/primitive/Label/index.js +4 -2
- package/dist/core/primitive/Label/index.js.map +1 -1
- package/dist/core/primitive/Link/index.d.ts +30 -0
- package/dist/core/primitive/Link/index.d.ts.map +1 -0
- package/dist/core/primitive/Link/index.js +17 -0
- package/dist/core/primitive/Link/index.js.map +1 -0
- package/dist/core/primitive/Meter/index.d.ts +16 -0
- package/dist/core/primitive/Meter/index.d.ts.map +1 -0
- package/dist/core/primitive/Meter/index.js +20 -0
- package/dist/core/primitive/Meter/index.js.map +1 -0
- package/dist/core/primitive/NumberField/index.d.ts +21 -0
- package/dist/core/primitive/NumberField/index.d.ts.map +1 -0
- package/dist/core/primitive/NumberField/index.js +15 -0
- package/dist/core/primitive/NumberField/index.js.map +1 -0
- package/dist/core/primitive/ProgressCircle/index.d.ts +13 -0
- package/dist/core/primitive/ProgressCircle/index.d.ts.map +1 -0
- package/dist/core/primitive/ProgressCircle/index.js +5 -0
- package/dist/core/primitive/ProgressCircle/index.js.map +1 -0
- package/dist/core/primitive/RankArtwork/index.d.ts +2 -1
- package/dist/core/primitive/RankArtwork/index.d.ts.map +1 -1
- package/dist/core/primitive/RankArtwork/index.js +3 -2
- package/dist/core/primitive/RankArtwork/index.js.map +1 -1
- package/dist/core/primitive/Rating/index.d.ts +26 -0
- package/dist/core/primitive/Rating/index.d.ts.map +1 -0
- package/dist/core/primitive/Rating/index.js +37 -0
- package/dist/core/primitive/Rating/index.js.map +1 -0
- package/dist/core/primitive/SearchField/index.d.ts +22 -0
- package/dist/core/primitive/SearchField/index.d.ts.map +1 -0
- package/dist/core/primitive/SearchField/index.js +15 -0
- package/dist/core/primitive/SearchField/index.js.map +1 -0
- package/dist/core/primitive/SectionHeader/index.d.ts +9 -2
- package/dist/core/primitive/SectionHeader/index.d.ts.map +1 -1
- package/dist/core/primitive/SectionHeader/index.js +8 -2
- package/dist/core/primitive/SectionHeader/index.js.map +1 -1
- package/dist/core/primitive/Skeleton/index.d.ts +21 -0
- package/dist/core/primitive/Skeleton/index.d.ts.map +1 -0
- package/dist/core/primitive/Skeleton/index.js +18 -0
- package/dist/core/primitive/Skeleton/index.js.map +1 -0
- package/dist/core/primitive/Slider/index.d.ts +26 -0
- package/dist/core/primitive/Slider/index.d.ts.map +1 -0
- package/dist/core/primitive/Slider/index.js +37 -0
- package/dist/core/primitive/Slider/index.js.map +1 -0
- package/dist/core/primitive/Spinner/index.d.ts +18 -0
- package/dist/core/primitive/Spinner/index.d.ts.map +1 -0
- package/dist/core/primitive/Spinner/index.js +11 -0
- package/dist/core/primitive/Spinner/index.js.map +1 -0
- package/dist/core/primitive/Switch/index.d.ts +13 -0
- package/dist/core/primitive/Switch/index.d.ts.map +1 -0
- package/dist/core/primitive/Switch/index.js +15 -0
- package/dist/core/primitive/Switch/index.js.map +1 -0
- package/dist/core/primitive/Textarea/index.d.ts +16 -0
- package/dist/core/primitive/Textarea/index.d.ts.map +1 -0
- package/dist/core/primitive/Textarea/index.js +20 -0
- package/dist/core/primitive/Textarea/index.js.map +1 -0
- package/dist/core/primitive/TimeField/index.d.ts +15 -0
- package/dist/core/primitive/TimeField/index.d.ts.map +1 -0
- package/dist/core/primitive/TimeField/index.js +13 -0
- package/dist/core/primitive/TimeField/index.js.map +1 -0
- package/dist/core/styles.css +32 -6
- package/dist/heritage/styles.css +21 -6
- package/dist/offset-pop/components-forms.css +405 -0
- package/dist/offset-pop/components-navigation.css +394 -0
- package/dist/offset-pop/components-overlays.css +253 -0
- package/dist/offset-pop/conformance.d.ts +64 -0
- package/dist/offset-pop/conformance.d.ts.map +1 -0
- package/dist/offset-pop/conformance.js +63 -0
- package/dist/offset-pop/conformance.js.map +1 -0
- package/dist/offset-pop/dna.d.ts +282 -0
- package/dist/offset-pop/dna.d.ts.map +1 -0
- package/dist/offset-pop/dna.js +276 -0
- package/dist/offset-pop/dna.js.map +1 -0
- package/dist/offset-pop/index.d.ts +4 -8
- package/dist/offset-pop/index.d.ts.map +1 -1
- package/dist/offset-pop/index.js +7 -18
- package/dist/offset-pop/index.js.map +1 -1
- package/dist/offset-pop/styles.css +203 -62
- package/package.json +33 -9
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CloseButton as HeroCloseButton } from "@heroui/react";
|
|
3
|
+
/**
|
|
4
|
+
* ATOM - `CloseButton`: the glyph-only dismiss action used by dialogs, drawers, toasts and banners.
|
|
5
|
+
*
|
|
6
|
+
* It is the vendor close button (a real `<button type="button">` with the platform close glyph) with
|
|
7
|
+
* a mandatory name. Its pressable floor and focus ring are SHIPPED by `.starci-core-close-button` in
|
|
8
|
+
* `src/common/components-overlays.css`.
|
|
9
|
+
*/
|
|
10
|
+
export const CloseButton = ({ label, onPress, isDisabled = false, size = "md" }) => (_jsx(HeroCloseButton, { "data-tier": "atom", "data-component": "CloseButton", "data-size": size, "aria-label": label, "data-contract": "A11Y-2 ICON-5 FOCUS-1", isDisabled: isDisabled, className: "starci-core-close-button", ...(isDisabled || onPress === undefined ? {} : { onPress }) }));
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/CloseButton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAY9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,EAAoB,EAAE,EAAE,CAAC,CAClG,KAAC,eAAe,iBACF,MAAM,oBACD,aAAa,eACjB,IAAI,gBACH,KAAK,mBACH,uBAAuB,EACrC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,0BAA0B,KAChC,CAAC,UAAU,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAC9D,CACL,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type DateValue } from "@heroui/react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import { type FieldControlProps } from "../Field/index.js";
|
|
4
|
+
export type DateGranularity = "day" | "hour" | "minute" | "second";
|
|
5
|
+
export type DateFieldProps = FieldControlProps & {
|
|
6
|
+
readonly value?: DateValue | null;
|
|
7
|
+
readonly defaultValue?: DateValue | null;
|
|
8
|
+
readonly onValueChange?: (value: DateValue | null) => void;
|
|
9
|
+
readonly minValue?: DateValue;
|
|
10
|
+
readonly maxValue?: DateValue;
|
|
11
|
+
/** Smallest editable unit. `day` is a date; finer units add a time. */
|
|
12
|
+
readonly granularity?: DateGranularity;
|
|
13
|
+
};
|
|
14
|
+
/** The segmented date input (each part a spinbutton) shared by DateField, TimeField and the pickers. */
|
|
15
|
+
export declare const DateSegments: ({ slot }: {
|
|
16
|
+
readonly slot?: "start" | "end";
|
|
17
|
+
}) => import("react").JSX.Element;
|
|
18
|
+
/**
|
|
19
|
+
* The field box around a standalone date or time input. A plain element with the vendor's group
|
|
20
|
+
* paint, NOT the vendor `Group`: the date input already renders the one labelled `role="group"`,
|
|
21
|
+
* and a second vendor Group would take the same id and name from the field context.
|
|
22
|
+
*/
|
|
23
|
+
export declare const DateFieldBox: ({ children, isInvalid, isDisabled }: {
|
|
24
|
+
readonly children: ReactNode;
|
|
25
|
+
readonly isInvalid: boolean;
|
|
26
|
+
readonly isDisabled: boolean;
|
|
27
|
+
}) => import("react").JSX.Element;
|
|
28
|
+
/**
|
|
29
|
+
* A typed date: locale-ordered segments that each take digits and arrow keys, the vendor's. Values
|
|
30
|
+
* are `@internationalized/date` objects (the vendor's `DateValue`), never ambiguous strings.
|
|
31
|
+
*/
|
|
32
|
+
export declare const DateField: ({ value, defaultValue, onValueChange, minValue, maxValue, granularity, ...field }: DateFieldProps) => import("react").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/DateField/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAElE,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAA;CACzC,CAAA;AAQD,wGAAwG;AACxG,eAAO,MAAM,YAAY,GAAI,UAAU;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,gCAIzE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,qCAAqC;IAC9D,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC/B,gCAUA,CAAA;AAcD;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,mFAQvB,cAAc,gCAsBhB,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { DateField as HeroDateField } from "@heroui/react";
|
|
4
|
+
import { FieldDescription, FieldErrorText, FieldLabel, isFieldInvalid, vendorFieldProps, } from "../Field/index.js";
|
|
5
|
+
// The vendor's own date-group slot classes. `DateField.Group` would stamp them from its context; the
|
|
6
|
+
// standalone box below renders without that Group (see DateFieldBox), so it names them itself.
|
|
7
|
+
const DATE_GROUP_CLASS = "date-input-group date-input-group--primary date-input-group--full-width starci-core-date-group";
|
|
8
|
+
const DATE_INPUT_CLASS = "date-input-group__input starci-core-date-input";
|
|
9
|
+
const DATE_SEGMENT_CLASS = "date-input-group__segment starci-core-date-segment";
|
|
10
|
+
/** The segmented date input (each part a spinbutton) shared by DateField, TimeField and the pickers. */
|
|
11
|
+
export const DateSegments = ({ slot }) => (_jsx(HeroDateField.Input, { className: DATE_INPUT_CLASS, ...(slot === undefined ? {} : { slot }), children: (segment) => _jsx(HeroDateField.Segment, { segment: segment, className: DATE_SEGMENT_CLASS }) }));
|
|
12
|
+
/**
|
|
13
|
+
* The field box around a standalone date or time input. A plain element with the vendor's group
|
|
14
|
+
* paint, NOT the vendor `Group`: the date input already renders the one labelled `role="group"`,
|
|
15
|
+
* and a second vendor Group would take the same id and name from the field context.
|
|
16
|
+
*/
|
|
17
|
+
export const DateFieldBox = ({ children, isInvalid, isDisabled }) => (_jsx("div", { className: DATE_GROUP_CLASS, "data-slot": "date-input-group", "data-grammar-field-control": "true", ...(isInvalid ? { "data-invalid": "true" } : {}), ...(isDisabled ? { "data-disabled": "true" } : {}), children: children }));
|
|
18
|
+
/*
|
|
19
|
+
* Consumer hook: `starci-core-date-field` names this control's root for a consumer or family
|
|
20
|
+
* stylesheet. No shipped sheet paints it: the root is drawn as a whole by `.starci-core-field`, so
|
|
21
|
+
* a rule on the hook adds to the shared anatomy and never has to replace it.
|
|
22
|
+
*/
|
|
23
|
+
/*
|
|
24
|
+
* Consumer hooks: `starci-core-date-segment` names a HeroUI part whose vendor paint Common leaves
|
|
25
|
+
* as it is. No shipped sheet paints it; the Grammar name lets a consumer or family select that part
|
|
26
|
+
* without reaching for vendor class names.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* A typed date: locale-ordered segments that each take digits and arrow keys, the vendor's. Values
|
|
30
|
+
* are `@internationalized/date` objects (the vendor's `DateValue`), never ambiguous strings.
|
|
31
|
+
*/
|
|
32
|
+
export const DateField = ({ value, defaultValue, onValueChange, minValue, maxValue, granularity = "day", ...field }) => (_jsxs(HeroDateField, { "data-tier": "atom", "data-component": "DateField", "data-contract": "A11Y-1 FIELD-1 FIELD-2 FIELD-3", className: "starci-core-field starci-core-date-field", fullWidth: true, ...vendorFieldProps(field), isReadOnly: field.isReadOnly === true, granularity: granularity, ...(value === undefined ? defaultValue === undefined ? {} : { defaultValue } : { value }), ...(onValueChange === undefined ? {} : { onChange: onValueChange }), ...(minValue === undefined ? {} : { minValue }), ...(maxValue === undefined ? {} : { maxValue }), children: [_jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsx(DateFieldBox, { isInvalid: isFieldInvalid(field), isDisabled: field.isDisabled === true, children: _jsx(DateSegments, {}) }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage })] }));
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/DateField/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { PresentationState } from "../../../common/state.js";
|
|
3
|
+
/**
|
|
4
|
+
* The one field contract every Grammar form control shares.
|
|
5
|
+
*
|
|
6
|
+
* A control owns its label, its guidance and its validation copy, so a reader never meets a control
|
|
7
|
+
* whose error is painted somewhere the screen reader cannot find. Every form control in the package
|
|
8
|
+
* takes these props, renders the same label / description / error anatomy, and stamps the same
|
|
9
|
+
* `data-grammar-*` state hooks on its root, so a visual family targets one vocabulary instead of one
|
|
10
|
+
* per vendor part.
|
|
11
|
+
*/
|
|
12
|
+
export type FieldControlProps = {
|
|
13
|
+
/** The visible accessible name. Required: a placeholder is never a name. */
|
|
14
|
+
readonly label: ReactNode;
|
|
15
|
+
/** Keeps the label for assistive technology only; the name stays in the accessibility tree. */
|
|
16
|
+
readonly isLabelHidden?: boolean;
|
|
17
|
+
/** Guidance the control's `aria-describedby` points at. */
|
|
18
|
+
readonly description?: ReactNode;
|
|
19
|
+
/** Validation copy. Supplying it marks the control invalid, the same rule `Input` follows. */
|
|
20
|
+
readonly errorMessage?: ReactNode;
|
|
21
|
+
readonly isInvalid?: boolean;
|
|
22
|
+
readonly isRequired?: boolean;
|
|
23
|
+
readonly isDisabled?: boolean;
|
|
24
|
+
readonly isReadOnly?: boolean;
|
|
25
|
+
/** The form field name submitted with the value. */
|
|
26
|
+
readonly name?: string;
|
|
27
|
+
};
|
|
28
|
+
export type FieldStateInput = {
|
|
29
|
+
readonly isInvalid?: boolean | undefined;
|
|
30
|
+
readonly isDisabled?: boolean | undefined;
|
|
31
|
+
readonly isReadOnly?: boolean | undefined;
|
|
32
|
+
readonly isRequired?: boolean | undefined;
|
|
33
|
+
readonly isPending?: boolean | undefined;
|
|
34
|
+
};
|
|
35
|
+
/** Folds the control's state into the render-neutral presentation vocabulary. */
|
|
36
|
+
export declare const fieldPresentationState: ({ isInvalid, isDisabled, isPending }: FieldStateInput) => PresentationState;
|
|
37
|
+
/** The state hooks every form control root carries. Families read these, never vendor internals. */
|
|
38
|
+
export declare const fieldStateAttributes: (state: FieldStateInput) => {
|
|
39
|
+
readonly "data-grammar-field": "true";
|
|
40
|
+
readonly "data-grammar-field-state": "neutral" | "informative" | "affirmative" | "cautionary" | "negative" | "pending" | "unavailable";
|
|
41
|
+
readonly "data-grammar-invalid": "true" | "false";
|
|
42
|
+
readonly "data-grammar-disabled": "true" | "false";
|
|
43
|
+
readonly "data-grammar-readonly": "true" | "false";
|
|
44
|
+
readonly "data-grammar-required": "true" | "false";
|
|
45
|
+
readonly "data-grammar-pending": "true" | "false";
|
|
46
|
+
};
|
|
47
|
+
/** A control is invalid when it says so or when it carries validation copy. */
|
|
48
|
+
export declare const isFieldInvalid: ({ isInvalid, errorMessage }: {
|
|
49
|
+
readonly isInvalid?: boolean | undefined;
|
|
50
|
+
readonly errorMessage?: ReactNode;
|
|
51
|
+
}) => boolean;
|
|
52
|
+
/** Label wired through the vendor's field context, so the control is named without an id handshake. */
|
|
53
|
+
export declare const FieldLabel: ({ children, isHidden, isRequired }: {
|
|
54
|
+
readonly children: ReactNode;
|
|
55
|
+
readonly isHidden?: boolean | undefined;
|
|
56
|
+
readonly isRequired?: boolean | undefined;
|
|
57
|
+
}) => import("react").JSX.Element;
|
|
58
|
+
/** Description slot; the vendor wires it into the control's `aria-describedby`. */
|
|
59
|
+
export declare const FieldDescription: ({ children }: {
|
|
60
|
+
readonly children?: ReactNode;
|
|
61
|
+
}) => import("react").JSX.Element | null;
|
|
62
|
+
/**
|
|
63
|
+
* Error slot. It shows the supplied copy, or - when none is supplied - the messages the control's
|
|
64
|
+
* own validation produced (a required value, a native constraint, a Form `validationErrors` entry),
|
|
65
|
+
* and is referenced by the control's `aria-describedby` only while the control is invalid.
|
|
66
|
+
*/
|
|
67
|
+
export declare const FieldErrorText: ({ children }: {
|
|
68
|
+
readonly children?: ReactNode;
|
|
69
|
+
}) => import("react").JSX.Element;
|
|
70
|
+
/** The shared anatomy props every vendor field root gets. */
|
|
71
|
+
export declare const vendorFieldProps: (props: FieldControlProps & {
|
|
72
|
+
readonly isPending?: boolean | undefined;
|
|
73
|
+
}) => {
|
|
74
|
+
"data-grammar-field": "true";
|
|
75
|
+
"data-grammar-field-state": "neutral" | "informative" | "affirmative" | "cautionary" | "negative" | "pending" | "unavailable";
|
|
76
|
+
"data-grammar-invalid": "true" | "false";
|
|
77
|
+
"data-grammar-disabled": "true" | "false";
|
|
78
|
+
"data-grammar-readonly": "true" | "false";
|
|
79
|
+
"data-grammar-required": "true" | "false";
|
|
80
|
+
"data-grammar-pending": "true" | "false";
|
|
81
|
+
name?: string;
|
|
82
|
+
isRequired?: boolean;
|
|
83
|
+
isDisabled?: boolean;
|
|
84
|
+
isInvalid?: boolean;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Keeps a control's popover inside the Grammar root it was rendered in.
|
|
88
|
+
*
|
|
89
|
+
* The vendor portals popovers to `document.body`, which is outside `.grammar-common-root`: the
|
|
90
|
+
* family's scoped variables (accent, field paint, radii) and scoped rules would not reach the open
|
|
91
|
+
* list or calendar, so a Core or Offset Pop picker would open onto the vendor's default theme. The
|
|
92
|
+
* anchor finds the nearest root once mounted and the popover portals there instead; with no root
|
|
93
|
+
* (bare usage) nothing changes.
|
|
94
|
+
*/
|
|
95
|
+
export declare const useGrammarPortal: () => {
|
|
96
|
+
anchor: import("react").JSX.Element;
|
|
97
|
+
portalProps: {
|
|
98
|
+
UNSTABLE_portalContainer?: never;
|
|
99
|
+
} | {
|
|
100
|
+
UNSTABLE_portalContainer: Element;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
/** What `Field` hands the control it wraps: the id and ARIA wiring for a native or custom control. */
|
|
104
|
+
export type FieldControlAttributes = {
|
|
105
|
+
readonly id: string;
|
|
106
|
+
readonly name?: string;
|
|
107
|
+
readonly "aria-describedby"?: string;
|
|
108
|
+
readonly "aria-invalid"?: true;
|
|
109
|
+
readonly "aria-required"?: true;
|
|
110
|
+
readonly required?: true;
|
|
111
|
+
readonly disabled?: true;
|
|
112
|
+
readonly readOnly?: true;
|
|
113
|
+
};
|
|
114
|
+
export type FieldProps = FieldControlProps & {
|
|
115
|
+
/** Control id. Generated when omitted. */
|
|
116
|
+
readonly id?: string;
|
|
117
|
+
/** Renders the control with the attributes that bind it to this field's label, guidance and error. */
|
|
118
|
+
readonly children: (control: FieldControlAttributes) => ReactNode;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Label + description + error for ANY control: a native element, a third-party widget, or an app's
|
|
122
|
+
* own input. Grammar's own form controls already render this anatomy; `Field` is the same anatomy
|
|
123
|
+
* for everything else, with the id and `aria-describedby` / `aria-invalid` wiring handed to the
|
|
124
|
+
* control so a custom control is announced exactly like a Grammar one.
|
|
125
|
+
*/
|
|
126
|
+
export declare const Field: ({ id: idProp, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, children, }: FieldProps) => import("react").JSX.Element;
|
|
127
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Field/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Description as HeroDescription, FieldError as HeroFieldError, Label as HeroLabel, } from "@heroui/react";
|
|
4
|
+
import { useCallback, useId, useState } from "react";
|
|
5
|
+
/** Folds the control's state into the render-neutral presentation vocabulary. */
|
|
6
|
+
export const fieldPresentationState = ({ isInvalid, isDisabled, isPending }) => {
|
|
7
|
+
if (isDisabled === true)
|
|
8
|
+
return "unavailable";
|
|
9
|
+
if (isPending === true)
|
|
10
|
+
return "pending";
|
|
11
|
+
if (isInvalid === true)
|
|
12
|
+
return "negative";
|
|
13
|
+
return "neutral";
|
|
14
|
+
};
|
|
15
|
+
const flag = (value) => (value === true ? "true" : "false");
|
|
16
|
+
/** The state hooks every form control root carries. Families read these, never vendor internals. */
|
|
17
|
+
export const fieldStateAttributes = (state) => ({
|
|
18
|
+
"data-grammar-field": "true",
|
|
19
|
+
"data-grammar-field-state": fieldPresentationState(state),
|
|
20
|
+
"data-grammar-invalid": flag(state.isInvalid),
|
|
21
|
+
"data-grammar-disabled": flag(state.isDisabled),
|
|
22
|
+
"data-grammar-readonly": flag(state.isReadOnly),
|
|
23
|
+
"data-grammar-required": flag(state.isRequired),
|
|
24
|
+
"data-grammar-pending": flag(state.isPending),
|
|
25
|
+
});
|
|
26
|
+
/** A control is invalid when it says so or when it carries validation copy. */
|
|
27
|
+
export const isFieldInvalid = ({ isInvalid, errorMessage }) => isInvalid === true || errorMessage != null;
|
|
28
|
+
const labelClassName = (isHidden) => isHidden === true ? "starci-core-field-label starci-core-form-label--screen-reader" : "starci-core-field-label";
|
|
29
|
+
/** Label wired through the vendor's field context, so the control is named without an id handshake. */
|
|
30
|
+
export const FieldLabel = ({ children, isHidden, isRequired }) => (_jsx(HeroLabel, { className: labelClassName(isHidden), "data-grammar-field-label": "true", ...(isRequired === true ? { isRequired: true } : {}), children: children }));
|
|
31
|
+
/** Description slot; the vendor wires it into the control's `aria-describedby`. */
|
|
32
|
+
export const FieldDescription = ({ children }) => (children == null ? null : (_jsx(HeroDescription, { className: "starci-core-field-description", "data-grammar-field-description": "true", children: children })));
|
|
33
|
+
/**
|
|
34
|
+
* Error slot. It shows the supplied copy, or - when none is supplied - the messages the control's
|
|
35
|
+
* own validation produced (a required value, a native constraint, a Form `validationErrors` entry),
|
|
36
|
+
* and is referenced by the control's `aria-describedby` only while the control is invalid.
|
|
37
|
+
*/
|
|
38
|
+
export const FieldErrorText = ({ children }) => (_jsx(HeroFieldError, { className: "starci-core-field-error", "data-grammar-field-error": "true", "data-contract": "FEEDBACK-1", children: (validation) => children ?? validation.validationErrors.join(" ") }));
|
|
39
|
+
/** The shared anatomy props every vendor field root gets. */
|
|
40
|
+
export const vendorFieldProps = (props) => {
|
|
41
|
+
const invalid = isFieldInvalid(props);
|
|
42
|
+
// Only a true state is stated: an explicit `false` would override what a Fieldset (disabled) or a
|
|
43
|
+
// Form (`validationErrors`) hands the control through the vendor's context.
|
|
44
|
+
return {
|
|
45
|
+
...(invalid ? { isInvalid: true } : {}),
|
|
46
|
+
...(props.isDisabled === true ? { isDisabled: true } : {}),
|
|
47
|
+
...(props.isRequired === true ? { isRequired: true } : {}),
|
|
48
|
+
...(props.name === undefined ? {} : { name: props.name }),
|
|
49
|
+
...fieldStateAttributes({
|
|
50
|
+
isInvalid: invalid,
|
|
51
|
+
isDisabled: props.isDisabled,
|
|
52
|
+
isReadOnly: props.isReadOnly,
|
|
53
|
+
isRequired: props.isRequired,
|
|
54
|
+
isPending: props.isPending,
|
|
55
|
+
}),
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Keeps a control's popover inside the Grammar root it was rendered in.
|
|
60
|
+
*
|
|
61
|
+
* The vendor portals popovers to `document.body`, which is outside `.grammar-common-root`: the
|
|
62
|
+
* family's scoped variables (accent, field paint, radii) and scoped rules would not reach the open
|
|
63
|
+
* list or calendar, so a Core or Offset Pop picker would open onto the vendor's default theme. The
|
|
64
|
+
* anchor finds the nearest root once mounted and the popover portals there instead; with no root
|
|
65
|
+
* (bare usage) nothing changes.
|
|
66
|
+
*/
|
|
67
|
+
export const useGrammarPortal = () => {
|
|
68
|
+
const [container, setContainer] = useState(undefined);
|
|
69
|
+
const anchor = useCallback((node) => {
|
|
70
|
+
setContainer(node?.closest(".grammar-common-root") ?? undefined);
|
|
71
|
+
}, []);
|
|
72
|
+
return {
|
|
73
|
+
anchor: _jsx("span", { ref: anchor, hidden: true, "data-grammar-portal-anchor": "true" }),
|
|
74
|
+
portalProps: container === undefined ? {} : { UNSTABLE_portalContainer: container },
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Label + description + error for ANY control: a native element, a third-party widget, or an app's
|
|
79
|
+
* own input. Grammar's own form controls already render this anatomy; `Field` is the same anatomy
|
|
80
|
+
* for everything else, with the id and `aria-describedby` / `aria-invalid` wiring handed to the
|
|
81
|
+
* control so a custom control is announced exactly like a Grammar one.
|
|
82
|
+
*/
|
|
83
|
+
export const Field = ({ id: idProp, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, children, }) => {
|
|
84
|
+
const generated = useId();
|
|
85
|
+
const id = idProp ?? `field${generated.replace(/:/g, "")}`;
|
|
86
|
+
const invalid = isFieldInvalid({ isInvalid, errorMessage });
|
|
87
|
+
const descriptionId = description == null ? undefined : `${id}-description`;
|
|
88
|
+
const errorId = invalid && errorMessage != null ? `${id}-error` : undefined;
|
|
89
|
+
const describedBy = [descriptionId, errorId].filter((part) => part !== undefined).join(" ");
|
|
90
|
+
return (_jsxs("div", { "data-tier": "atom", "data-component": "Field", "data-contract": "A11Y-1 FIELD-1 FIELD-2", className: "starci-core-field", ...fieldStateAttributes({ isInvalid: invalid, isDisabled, isReadOnly, isRequired }), children: [_jsxs("label", { htmlFor: id, className: labelClassName(isLabelHidden), "data-grammar-field-label": "true", "data-required": isRequired === true ? "true" : undefined, children: [label, isRequired === true ? _jsx("span", { "aria-hidden": "true", className: "starci-core-field-required", children: "*" }) : null] }), description == null ? null : (_jsx("span", { id: descriptionId, className: "starci-core-field-description", "data-grammar-field-description": "true", children: description })), _jsx("div", { className: "starci-core-field-control", "data-grammar-field-control": "true", children: children({
|
|
91
|
+
id,
|
|
92
|
+
...(name === undefined ? {} : { name }),
|
|
93
|
+
...(describedBy === "" ? {} : { "aria-describedby": describedBy }),
|
|
94
|
+
...(invalid ? { "aria-invalid": true } : {}),
|
|
95
|
+
...(isRequired === true ? { "aria-required": true, required: true } : {}),
|
|
96
|
+
...(isDisabled === true ? { disabled: true } : {}),
|
|
97
|
+
...(isReadOnly === true ? { readOnly: true } : {}),
|
|
98
|
+
}) }), errorId === undefined ? null : (_jsx("span", { id: errorId, className: "starci-core-field-error", "data-grammar-field-error": "true", "data-contract": "FEEDBACK-1", children: errorMessage }))] }));
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Field/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type FieldControlProps } from "../Field/index.js";
|
|
3
|
+
export type FileDropzoneProps = FieldControlProps & {
|
|
4
|
+
readonly id?: string;
|
|
5
|
+
/** Native `accept` list, e.g. `image/*,.pdf`. A hint to the picker, not a security check. */
|
|
6
|
+
readonly accept?: string;
|
|
7
|
+
readonly multiple?: boolean;
|
|
8
|
+
/** The files now in the input. Upload, size checks and previews are the app's. */
|
|
9
|
+
readonly onFilesChange?: (files: Array<File>) => void;
|
|
10
|
+
/** Copy inside the drop target. The words are the app's. */
|
|
11
|
+
readonly prompt: ReactNode;
|
|
12
|
+
/** Decorative glyph above the prompt. */
|
|
13
|
+
readonly icon?: ReactNode;
|
|
14
|
+
/** Hides the list of chosen file names under the target. */
|
|
15
|
+
readonly hideFileList?: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A native file input stretched over a drop target.
|
|
19
|
+
*
|
|
20
|
+
* The browser owns picking, keyboard activation, the "choose file" announcement and dropping (a
|
|
21
|
+
* file dropped on a file input is a native change), so the files land in the real input and submit
|
|
22
|
+
* with the form. Grammar adds only the drag-over state, the field anatomy, and the chosen names.
|
|
23
|
+
*/
|
|
24
|
+
export declare const FileDropzone: ({ id: idProp, accept, multiple, onFilesChange, prompt, icon, hideFileList, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }: FileDropzoneProps) => import("react").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/FileDropzone/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACvD,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEhG,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG;IAChD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;IACrD,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAClC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,oLAiB1B,iBAAiB,gCA8EnB,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId, useState } from "react";
|
|
4
|
+
import { fieldStateAttributes, isFieldInvalid } from "../Field/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* A native file input stretched over a drop target.
|
|
7
|
+
*
|
|
8
|
+
* The browser owns picking, keyboard activation, the "choose file" announcement and dropping (a
|
|
9
|
+
* file dropped on a file input is a native change), so the files land in the real input and submit
|
|
10
|
+
* with the form. Grammar adds only the drag-over state, the field anatomy, and the chosen names.
|
|
11
|
+
*/
|
|
12
|
+
export const FileDropzone = ({ id: idProp, accept, multiple = false, onFilesChange, prompt, icon, hideFileList = false, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }) => {
|
|
13
|
+
const generated = useId().replace(/:/g, "");
|
|
14
|
+
const id = idProp ?? `file${generated}`;
|
|
15
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
16
|
+
const [files, setFiles] = useState([]);
|
|
17
|
+
const invalid = isFieldInvalid({ isInvalid, errorMessage });
|
|
18
|
+
const blocked = isDisabled === true || isReadOnly === true;
|
|
19
|
+
const descriptionId = description == null ? undefined : `${id}-description`;
|
|
20
|
+
const errorId = invalid && errorMessage != null ? `${id}-error` : undefined;
|
|
21
|
+
const describedBy = [descriptionId, errorId].filter((part) => part !== undefined).join(" ");
|
|
22
|
+
return (_jsxs("div", { "data-tier": "atom", "data-component": "FileDropzone", "data-contract": "A11Y-1 FIELD-1 FIELD-2 FIELD-3", className: "starci-core-field starci-core-file-dropzone", ...fieldStateAttributes({ isInvalid: invalid, isDisabled, isReadOnly, isRequired }), children: [_jsxs("label", { htmlFor: id, className: isLabelHidden === true ? "starci-core-field-label starci-core-form-label--screen-reader" : "starci-core-field-label", "data-grammar-field-label": "true", "data-required": isRequired === true ? "true" : undefined, children: [label, isRequired === true ? _jsx("span", { "aria-hidden": "true", className: "starci-core-field-required", children: "*" }) : null] }), descriptionId === undefined ? null : (_jsx("span", { id: descriptionId, className: "starci-core-field-description", "data-grammar-field-description": "true", children: description })), _jsxs("div", { className: "starci-core-file-dropzone-target", "data-grammar-field-control": "true", "data-grammar-drag": isDragging ? "over" : "idle", "data-contract": "FOCUS-5", onDragEnter: () => { if (!blocked)
|
|
23
|
+
setIsDragging(true); }, onDragOver: (event) => { if (blocked)
|
|
24
|
+
event.preventDefault(); }, onDragLeave: () => setIsDragging(false), onDrop: (event) => {
|
|
25
|
+
setIsDragging(false);
|
|
26
|
+
if (blocked)
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
}, children: [_jsx("input", { id: id, type: "file", className: "starci-core-file-dropzone-input", ...(accept === undefined ? {} : { accept }), ...(name === undefined ? {} : { name }), multiple: multiple, disabled: isDisabled === true, required: isRequired === true, "aria-readonly": isReadOnly === true ? true : undefined, ...(invalid ? { "aria-invalid": true } : {}), ...(describedBy === "" ? {} : { "aria-describedby": describedBy }), onClick: (event) => { if (isReadOnly === true)
|
|
29
|
+
event.preventDefault(); }, onChange: (event) => {
|
|
30
|
+
const next = Array.from(event.currentTarget.files ?? []);
|
|
31
|
+
setFiles(next);
|
|
32
|
+
onFilesChange?.(next);
|
|
33
|
+
} }), _jsxs("span", { className: "starci-core-file-dropzone-prompt", children: [icon == null ? null : _jsx("span", { "aria-hidden": "true", className: "starci-core-file-dropzone-icon", "data-contract": "ICON-6", children: icon }), _jsx("span", { children: prompt })] })] }), hideFileList || files.length === 0 ? null : (_jsx("ul", { className: "starci-core-file-dropzone-files", "data-grammar-file-list": "true", "aria-live": "polite", children: files.map((file, index) => _jsx("li", { children: file.name }, `${file.name}-${index}`)) })), errorId === undefined ? null : (_jsx("span", { id: errorId, className: "starci-core-field-error", "data-grammar-field-error": "true", "data-contract": "FEEDBACK-1", children: errorMessage }))] }));
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/FileDropzone/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,11 @@ export type GrammarRootProps = Omit<ComponentPropsWithoutRef<"div">, "color"> &
|
|
|
5
5
|
/** Visual families install their scoped material contract on this neutral root. */
|
|
6
6
|
readonly "data-grammar-family"?: string;
|
|
7
7
|
};
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Neutral Common boundary. Select a visual family with its `scopeProps`.
|
|
10
|
+
*
|
|
11
|
+
* Contract: COLOR-5 - the root publishes the theme scope (`data-grammar-theme`) every family keys its
|
|
12
|
+
* light, dark and system token blocks on.
|
|
13
|
+
*/
|
|
9
14
|
export declare const GrammarRoot: ({ className, theme, ...props }: GrammarRootProps) => import("react").JSX.Element;
|
|
10
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/GrammarRoot/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5E,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC1C,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/GrammarRoot/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5E,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC1C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,gCAA2C,gBAAgB,gCAQtF,CAAA"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "@heroui/react";
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Neutral Common boundary. Select a visual family with its `scopeProps`.
|
|
5
|
+
*
|
|
6
|
+
* Contract: COLOR-5 - the root publishes the theme scope (`data-grammar-theme`) every family keys its
|
|
7
|
+
* light, dark and system token blocks on.
|
|
8
|
+
*/
|
|
9
|
+
export const GrammarRoot = ({ className, theme = "system", ...props }) => (_jsx("div", { ...props, className: cn("grammar-common-root", className), "data-contract": "COLOR-5", "data-grammar": "common", "data-grammar-theme": theme }));
|
|
5
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/GrammarRoot/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAUlC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/GrammarRoot/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAUlC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAoB,EAAE,EAAE,CAAC,CACxF,iBACQ,KAAK,EACT,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,mBACjC,SAAS,kBACV,QAAQ,wBACD,KAAK,GAC3B,CACL,CAAA"}
|
|
@@ -15,6 +15,7 @@ export type IconSourceProps = {
|
|
|
15
15
|
readonly "data-tier"?: string;
|
|
16
16
|
readonly "data-component"?: string;
|
|
17
17
|
readonly "data-usage"?: string;
|
|
18
|
+
readonly "data-contract"?: string;
|
|
18
19
|
};
|
|
19
20
|
/** Function or class SVG glyph selected by the consuming app's icon registry. */
|
|
20
21
|
export type IconSource = ((props: IconSourceProps) => unknown) | (new (props: IconSourceProps) => unknown);
|
|
@@ -26,6 +27,11 @@ export type IconProps = {
|
|
|
26
27
|
readonly ariaLabel?: string;
|
|
27
28
|
readonly isSkeleton?: boolean;
|
|
28
29
|
};
|
|
29
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Product-neutral icon carrier; semantic glyph names and libraries remain app authority.
|
|
32
|
+
*
|
|
33
|
+
* Contract: ICON-1 (the app resolves the glyph, Common owns its box) and ICON-6 (named once when it
|
|
34
|
+
* carries meaning, `aria-hidden` when it does not).
|
|
35
|
+
*/
|
|
30
36
|
export declare const Icon: ({ source: Source, usage, ariaLabel, isSkeleton }: IconProps) => import("react").JSX.Element;
|
|
31
37
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Icon/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AACtD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Icon/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AACtD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CACpC,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAChB,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,GACrC,CAAC,KAAK,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,CAAA;AAE/C,MAAM,MAAM,SAAS,GAAG;IACpB,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAaD;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,kDAAmE,SAAS,gCAqBhG,CAAA"}
|
|
@@ -9,7 +9,12 @@ const ICON_CLASS_NAME = "starci-core-icon";
|
|
|
9
9
|
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base({
|
|
10
10
|
className: "starci-core-icon-skeleton",
|
|
11
11
|
});
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Product-neutral icon carrier; semantic glyph names and libraries remain app authority.
|
|
14
|
+
*
|
|
15
|
+
* Contract: ICON-1 (the app resolves the glyph, Common owns its box) and ICON-6 (named once when it
|
|
16
|
+
* carries meaning, `aria-hidden` when it does not).
|
|
17
|
+
*/
|
|
13
18
|
export const Icon = ({ source: Source, usage = "chip", ariaLabel, isSkeleton = false }) => {
|
|
14
19
|
if (isSkeleton) {
|
|
15
20
|
return _jsx("span", { "data-tier": "atom", "data-component": "Icon", "data-loading": "true", "aria-hidden": true, className: SKELETON_CLASS_NAME });
|
|
@@ -17,7 +22,7 @@ export const Icon = ({ source: Source, usage = "chip", ariaLabel, isSkeleton = f
|
|
|
17
22
|
// The private cast is the only React-type identity boundary. Consumers see the structural
|
|
18
23
|
// IconSource contract above, while JSX still receives the local React component type.
|
|
19
24
|
const SourceComponent = Source;
|
|
20
|
-
return (_jsx(SourceComponent, { "data-tier": "atom", "data-component": "Icon", "data-usage": usage, focusable: "false", className: ICON_CLASS_NAME, ...(ariaLabel === undefined
|
|
25
|
+
return (_jsx(SourceComponent, { "data-tier": "atom", "data-component": "Icon", "data-usage": usage, "data-contract": "ICON-1 ICON-6", focusable: "false", className: ICON_CLASS_NAME, ...(ariaLabel === undefined
|
|
21
26
|
? { "aria-hidden": true }
|
|
22
27
|
: { "aria-label": ariaLabel, role: "img" }) }));
|
|
23
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Icon/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Icon/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAqChD;;;;GAIG;AACH,MAAM,eAAe,GAAG,kBAAkB,CAAA;AAE1C,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5E,SAAS,EAAE,2BAA2B;CACzC,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,KAAK,EAAa,EAAE,EAAE;IACjG,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,4BAAgB,MAAM,oBAAgB,MAAM,kBAAc,MAAM,uBAAa,SAAS,EAAE,mBAAmB,GAAI,CAAA;IAC1H,CAAC;IAED,0FAA0F;IAC1F,sFAAsF;IACtF,MAAM,eAAe,GAAG,MAAgD,CAAA;IACxE,OAAO,CACH,KAAC,eAAe,iBACF,MAAM,oBACD,MAAM,gBACT,KAAK,mBACH,eAAe,EAC7B,SAAS,EAAC,OAAO,EACjB,SAAS,EAAE,eAAe,KACtB,CAAC,SAAS,KAAK,SAAS;YACxB,CAAC,CAAC,EAAE,aAAa,EAAE,IAAa,EAAE;YAClC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,KAAc,EAAE,CAAC,GAC1D,CACL,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -8,6 +8,6 @@ export type IconButtonProps = {
|
|
|
8
8
|
readonly isSkeleton?: boolean;
|
|
9
9
|
readonly onPress?: () => void;
|
|
10
10
|
};
|
|
11
|
-
/** Circular glyph-only action with a mandatory accessible name. */
|
|
11
|
+
/** Circular glyph-only action with a mandatory accessible name (A11Y-2, ICON-5). */
|
|
12
12
|
export declare const IconButton: ({ source, label, isActive, isDisabled, isSkeleton, onPress, }: IconButtonProps) => import("react").JSX.Element;
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC,CAAA;AAQD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC,CAAA;AAQD,oFAAoF;AACpF,eAAO,MAAM,UAAU,GAAI,+DAOxB,eAAe,gCAiBjB,CAAA"}
|
|
@@ -6,6 +6,6 @@ import { Icon } from "../Icon/index.js";
|
|
|
6
6
|
* resolved action and its resting shimmer alike; only the shimmer itself comes from the vendor.
|
|
7
7
|
*/
|
|
8
8
|
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base();
|
|
9
|
-
/** Circular glyph-only action with a mandatory accessible name. */
|
|
10
|
-
export const IconButton = ({ source, label, isActive = false, isDisabled = false, isSkeleton = false, onPress, }) => (_jsx(HeroButton, { "data-tier": "atom", "data-component": "IconButton", "data-active": isActive ? "true" : "false", "data-loading": isSkeleton ? "true" : "false", type: "button", variant: "tertiary", className: cn("starci-core-icon-button", isSkeleton ? SKELETON_CLASS_NAME : undefined) ?? "starci-core-icon-button", isIconOnly: true, isDisabled: isDisabled || isSkeleton, "aria-label": label, ...(isDisabled || isSkeleton || onPress === undefined ? {} : { onPress }), children: isSkeleton ? null : _jsx(Icon, { source: source, usage: "leading" }) }));
|
|
9
|
+
/** Circular glyph-only action with a mandatory accessible name (A11Y-2, ICON-5). */
|
|
10
|
+
export const IconButton = ({ source, label, isActive = false, isDisabled = false, isSkeleton = false, onPress, }) => (_jsx(HeroButton, { "data-tier": "atom", "data-component": "IconButton", "data-contract": "A11Y-2 ICON-5", "data-active": isActive ? "true" : "false", "data-loading": isSkeleton ? "true" : "false", type: "button", variant: "tertiary", className: cn("starci-core-icon-button", isSkeleton ? SKELETON_CLASS_NAME : undefined) ?? "starci-core-icon-button", isIconOnly: true, isDisabled: isDisabled || isSkeleton, "aria-label": label, ...(isDisabled || isSkeleton || onPress === undefined ? {} : { onPress }), children: isSkeleton ? null : _jsx(Icon, { source: source, usage: "leading" }) }));
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AAYxD;;;GAGG;AACH,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAEjF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AAYxD;;;GAGG;AACH,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAEjF,oFAAoF;AACpF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,MAAM,EACN,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,OAAO,GACO,EAAE,EAAE,CAAC,CACnB,KAAC,UAAU,iBACG,MAAM,oBACD,YAAY,mBACb,eAAe,iBAChB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAC1B,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3C,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,UAAU,EAClB,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,yBAAyB,EACnH,UAAU,QACV,UAAU,EAAE,UAAU,IAAI,UAAU,gBACxB,KAAK,KACb,CAAC,UAAU,IAAI,UAAU,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,YAEzE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,SAAS,GAAG,GACpD,CAChB,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type ImageAspect = "square" | "landscape" | "portrait" | "wide" | "auto";
|
|
3
|
+
export type ImageLoadState = "loading" | "loaded" | "error";
|
|
4
|
+
export type ImageProps = {
|
|
5
|
+
readonly src: string;
|
|
6
|
+
/** Required. Pass "" only for a purely decorative image. */
|
|
7
|
+
readonly alt: string;
|
|
8
|
+
/** square 1:1, landscape 4:3, portrait 3:4, wide 16:9; auto keeps the intrinsic ratio. */
|
|
9
|
+
readonly aspect?: ImageAspect;
|
|
10
|
+
readonly fit?: "cover" | "contain";
|
|
11
|
+
/** Rendered instead of the image when it fails to load. */
|
|
12
|
+
readonly fallback?: ReactNode;
|
|
13
|
+
/** Offscreen images defer by default; above-the-fold art may be eager. */
|
|
14
|
+
readonly loading?: "lazy" | "eager";
|
|
15
|
+
readonly srcSet?: string;
|
|
16
|
+
readonly sizes?: string;
|
|
17
|
+
readonly width?: number;
|
|
18
|
+
readonly height?: number;
|
|
19
|
+
readonly onLoadStateChange?: (state: ImageLoadState) => void;
|
|
20
|
+
readonly className?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* A reserved-ratio image with loading, loaded and error states.
|
|
24
|
+
*
|
|
25
|
+
* The box claims its aspect ratio before the bytes arrive, so lazy images never shift the page.
|
|
26
|
+
* `MediaFrame` frames approved art with a caption; `Image` is the element inside or outside it.
|
|
27
|
+
* Contract: box MEDIA-2 MEDIA-5 (reserved ratio, load states), img MEDIA-4 MOTION-2, fallback MEDIA-4 MEDIA-5.
|
|
28
|
+
*/
|
|
29
|
+
export declare const Image: ({ src, alt, aspect, fit, fallback, loading, srcSet, sizes, width, height, onLoadStateChange, className, }: ImageProps) => import("react").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|