@stridge/noctis 1.0.0-beta.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/README.md +60 -0
- package/dist/_virtual/_rolldown/runtime.js +27 -0
- package/dist/components/accordion/accordion.context.js +15 -0
- package/dist/components/accordion/accordion.d.ts +136 -0
- package/dist/components/accordion/accordion.js +132 -0
- package/dist/components/accordion/accordion.props.d.ts +45 -0
- package/dist/components/accordion/accordion.props.js +53 -0
- package/dist/components/accordion/accordion.slots.d.ts +24 -0
- package/dist/components/accordion/accordion.slots.js +39 -0
- package/dist/components/accordion/accordion.types.d.ts +11 -0
- package/dist/components/accordion/index.d.ts +3 -0
- package/dist/components/alert-dialog/alert-dialog.context.js +16 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +324 -0
- package/dist/components/alert-dialog/alert-dialog.js +279 -0
- package/dist/components/alert-dialog/alert-dialog.props.d.ts +85 -0
- package/dist/components/alert-dialog/alert-dialog.props.js +84 -0
- package/dist/components/alert-dialog/alert-dialog.slots.d.ts +29 -0
- package/dist/components/alert-dialog/alert-dialog.slots.js +52 -0
- package/dist/components/alert-dialog/alert-dialog.types.d.ts +22 -0
- package/dist/components/alert-dialog/index.d.ts +3 -0
- package/dist/components/autocomplete/autocomplete.context.d.ts +5 -0
- package/dist/components/autocomplete/autocomplete.context.js +13 -0
- package/dist/components/autocomplete/autocomplete.d.ts +364 -0
- package/dist/components/autocomplete/autocomplete.js +373 -0
- package/dist/components/autocomplete/autocomplete.props.d.ts +83 -0
- package/dist/components/autocomplete/autocomplete.props.js +63 -0
- package/dist/components/autocomplete/autocomplete.slots.d.ts +32 -0
- package/dist/components/autocomplete/autocomplete.slots.js +61 -0
- package/dist/components/autocomplete/index.d.ts +3 -0
- package/dist/components/avatar/avatar.context.js +21 -0
- package/dist/components/avatar/avatar.d.ts +235 -0
- package/dist/components/avatar/avatar.js +208 -0
- package/dist/components/avatar/avatar.props.d.ts +86 -0
- package/dist/components/avatar/avatar.props.js +78 -0
- package/dist/components/avatar/avatar.slots.d.ts +35 -0
- package/dist/components/avatar/avatar.slots.js +49 -0
- package/dist/components/avatar/avatar.types.d.ts +28 -0
- package/dist/components/avatar/index.d.ts +2 -0
- package/dist/components/button/button.d.ts +91 -0
- package/dist/components/button/button.js +82 -0
- package/dist/components/button/button.props.d.ts +48 -0
- package/dist/components/button/button.props.js +25 -0
- package/dist/components/button/button.slots.d.ts +30 -0
- package/dist/components/button/button.slots.js +40 -0
- package/dist/components/button/button.types.d.ts +12 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button-group/button-group.context.js +15 -0
- package/dist/components/button-group/button-group.d.ts +60 -0
- package/dist/components/button-group/button-group.js +50 -0
- package/dist/components/button-group/button-group.props.d.ts +22 -0
- package/dist/components/button-group/button-group.props.js +33 -0
- package/dist/components/button-group/button-group.slots.d.ts +12 -0
- package/dist/components/button-group/button-group.slots.js +18 -0
- package/dist/components/button-group/index.d.ts +2 -0
- package/dist/components/checkbox/checkbox-group.d.ts +46 -0
- package/dist/components/checkbox/checkbox-group.js +31 -0
- package/dist/components/checkbox/checkbox.context.js +15 -0
- package/dist/components/checkbox/checkbox.d.ts +130 -0
- package/dist/components/checkbox/checkbox.js +117 -0
- package/dist/components/checkbox/checkbox.props.d.ts +84 -0
- package/dist/components/checkbox/checkbox.props.js +49 -0
- package/dist/components/checkbox/checkbox.slots.d.ts +27 -0
- package/dist/components/checkbox/checkbox.slots.js +40 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/code-block/brand-logo.d.ts +37 -0
- package/dist/components/code-block/brand-logo.js +212 -0
- package/dist/components/code-block/code-block.context.js +13 -0
- package/dist/components/code-block/code-block.d.ts +190 -0
- package/dist/components/code-block/code-block.js +267 -0
- package/dist/components/code-block/code-block.props.d.ts +42 -0
- package/dist/components/code-block/code-block.props.js +51 -0
- package/dist/components/code-block/code-block.slots.d.ts +16 -0
- package/dist/components/code-block/code-block.slots.js +31 -0
- package/dist/components/code-block/index.d.ts +3 -0
- package/dist/components/code-block/language-label.js +43 -0
- package/dist/components/collapsible/collapsible.context.js +18 -0
- package/dist/components/collapsible/collapsible.d.ts +167 -0
- package/dist/components/collapsible/collapsible.js +182 -0
- package/dist/components/collapsible/collapsible.props.d.ts +33 -0
- package/dist/components/collapsible/collapsible.props.js +44 -0
- package/dist/components/collapsible/collapsible.slots.d.ts +25 -0
- package/dist/components/collapsible/collapsible.slots.js +40 -0
- package/dist/components/collapsible/collapsible.types.d.ts +23 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/color-picker/area.d.ts +11 -0
- package/dist/components/color-picker/area.js +148 -0
- package/dist/components/color-picker/color-picker.d.ts +110 -0
- package/dist/components/color-picker/color-picker.js +149 -0
- package/dist/components/color-picker/color-picker.props.d.ts +69 -0
- package/dist/components/color-picker/color-picker.props.js +74 -0
- package/dist/components/color-picker/color-picker.slots.js +21 -0
- package/dist/components/color-picker/color.d.ts +18 -0
- package/dist/components/color-picker/color.js +224 -0
- package/dist/components/color-picker/context.d.ts +25 -0
- package/dist/components/color-picker/context.js +23 -0
- package/dist/components/color-picker/eyedropper.d.ts +14 -0
- package/dist/components/color-picker/eyedropper.js +50 -0
- package/dist/components/color-picker/format-tabs.d.ts +11 -0
- package/dist/components/color-picker/format-tabs.js +35 -0
- package/dist/components/color-picker/index.d.ts +3 -0
- package/dist/components/color-picker/inputs.d.ts +16 -0
- package/dist/components/color-picker/inputs.js +61 -0
- package/dist/components/color-picker/sliders.d.ts +17 -0
- package/dist/components/color-picker/sliders.js +94 -0
- package/dist/components/color-picker/store.js +48 -0
- package/dist/components/color-picker/swatch.d.ts +15 -0
- package/dist/components/color-picker/swatch.js +25 -0
- package/dist/components/color-swatch/color-swatch-picker.d.ts +87 -0
- package/dist/components/color-swatch/color-swatch-picker.js +73 -0
- package/dist/components/color-swatch/color-swatch.context.js +8 -0
- package/dist/components/color-swatch/color-swatch.d.ts +55 -0
- package/dist/components/color-swatch/color-swatch.js +48 -0
- package/dist/components/color-swatch/color-swatch.props.d.ts +54 -0
- package/dist/components/color-swatch/color-swatch.props.js +32 -0
- package/dist/components/color-swatch/color-swatch.slots.js +13 -0
- package/dist/components/color-swatch/index.d.ts +2 -0
- package/dist/components/combobox/combobox.context.js +13 -0
- package/dist/components/combobox/combobox.d.ts +328 -0
- package/dist/components/combobox/combobox.js +315 -0
- package/dist/components/combobox/combobox.props.d.ts +85 -0
- package/dist/components/combobox/combobox.props.js +79 -0
- package/dist/components/combobox/combobox.slots.d.ts +28 -0
- package/dist/components/combobox/combobox.slots.js +63 -0
- package/dist/components/combobox/index.d.ts +2 -0
- package/dist/components/context-menu/context-menu.d.ts +254 -0
- package/dist/components/context-menu/context-menu.js +150 -0
- package/dist/components/context-menu/context-menu.props.d.ts +22 -0
- package/dist/components/context-menu/context-menu.props.js +32 -0
- package/dist/components/context-menu/context-menu.slots.d.ts +24 -0
- package/dist/components/context-menu/context-menu.slots.js +42 -0
- package/dist/components/context-menu/index.d.ts +2 -0
- package/dist/components/copy-button/copy-button.d.ts +56 -0
- package/dist/components/copy-button/copy-button.js +88 -0
- package/dist/components/copy-button/copy-button.props.d.ts +27 -0
- package/dist/components/copy-button/copy-button.props.js +51 -0
- package/dist/components/copy-button/copy-button.slots.d.ts +20 -0
- package/dist/components/copy-button/copy-button.slots.js +36 -0
- package/dist/components/copy-button/index.d.ts +2 -0
- package/dist/components/dialog/dialog.context.js +15 -0
- package/dist/components/dialog/dialog.d.ts +299 -0
- package/dist/components/dialog/dialog.js +263 -0
- package/dist/components/dialog/dialog.props.d.ts +71 -0
- package/dist/components/dialog/dialog.props.js +75 -0
- package/dist/components/dialog/dialog.slots.d.ts +26 -0
- package/dist/components/dialog/dialog.slots.js +46 -0
- package/dist/components/dialog/dialog.types.d.ts +16 -0
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/field/field.d.ts +221 -0
- package/dist/components/field/field.js +192 -0
- package/dist/components/field/field.props.d.ts +66 -0
- package/dist/components/field/field.props.js +65 -0
- package/dist/components/field/field.slots.d.ts +35 -0
- package/dist/components/field/field.slots.js +54 -0
- package/dist/components/field/field.types.d.ts +5 -0
- package/dist/components/field/index.d.ts +4 -0
- package/dist/components/inline-code/index.d.ts +1 -0
- package/dist/components/inline-code/inline-code.d.ts +46 -0
- package/dist/components/inline-code/inline-code.js +36 -0
- package/dist/components/inline-code/inline-code.props.d.ts +17 -0
- package/dist/components/inline-code/inline-code.props.js +27 -0
- package/dist/components/inline-code/inline-code.slots.js +8 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/input.context.js +13 -0
- package/dist/components/input/input.d.ts +161 -0
- package/dist/components/input/input.js +117 -0
- package/dist/components/input/input.props.d.ts +51 -0
- package/dist/components/input/input.props.js +50 -0
- package/dist/components/input/input.slots.d.ts +35 -0
- package/dist/components/input/input.slots.js +46 -0
- package/dist/components/input/input.types.d.ts +12 -0
- package/dist/components/kbd/glyphs.js +45 -0
- package/dist/components/kbd/index.d.ts +1 -0
- package/dist/components/kbd/kbd.d.ts +61 -0
- package/dist/components/kbd/kbd.js +233 -0
- package/dist/components/kbd/kbd.props.d.ts +30 -0
- package/dist/components/kbd/kbd.props.js +39 -0
- package/dist/components/kbd/kbd.slots.js +14 -0
- package/dist/components/kbd/use-apple-platform.js +25 -0
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/menu.d.ts +355 -0
- package/dist/components/menu/menu.js +263 -0
- package/dist/components/menu/menu.props.d.ts +92 -0
- package/dist/components/menu/menu.props.js +97 -0
- package/dist/components/menu/menu.slots.d.ts +32 -0
- package/dist/components/menu/menu.slots.js +60 -0
- package/dist/components/menubar/index.d.ts +2 -0
- package/dist/components/menubar/menubar.context.js +13 -0
- package/dist/components/menubar/menubar.d.ts +162 -0
- package/dist/components/menubar/menubar.js +122 -0
- package/dist/components/menubar/menubar.props.d.ts +41 -0
- package/dist/components/menubar/menubar.props.js +45 -0
- package/dist/components/menubar/menubar.slots.d.ts +26 -0
- package/dist/components/menubar/menubar.slots.js +40 -0
- package/dist/components/meter/index.d.ts +2 -0
- package/dist/components/meter/meter.context.d.ts +9 -0
- package/dist/components/meter/meter.context.js +13 -0
- package/dist/components/meter/meter.d.ts +163 -0
- package/dist/components/meter/meter.js +121 -0
- package/dist/components/meter/meter.props.d.ts +50 -0
- package/dist/components/meter/meter.props.js +33 -0
- package/dist/components/meter/meter.slots.d.ts +18 -0
- package/dist/components/meter/meter.slots.js +31 -0
- package/dist/components/navigation-menu/index.d.ts +2 -0
- package/dist/components/navigation-menu/navigation-menu.d.ts +328 -0
- package/dist/components/navigation-menu/navigation-menu.js +274 -0
- package/dist/components/navigation-menu/navigation-menu.props.d.ts +98 -0
- package/dist/components/navigation-menu/navigation-menu.props.js +90 -0
- package/dist/components/navigation-menu/navigation-menu.slots.d.ts +34 -0
- package/dist/components/navigation-menu/navigation-menu.slots.js +60 -0
- package/dist/components/number-field/index.d.ts +2 -0
- package/dist/components/number-field/number-field.context.d.ts +13 -0
- package/dist/components/number-field/number-field.context.js +13 -0
- package/dist/components/number-field/number-field.d.ts +197 -0
- package/dist/components/number-field/number-field.js +187 -0
- package/dist/components/number-field/number-field.props.d.ts +66 -0
- package/dist/components/number-field/number-field.props.js +50 -0
- package/dist/components/number-field/number-field.slots.d.ts +31 -0
- package/dist/components/number-field/number-field.slots.js +48 -0
- package/dist/components/otp-field/index.d.ts +3 -0
- package/dist/components/otp-field/otp-field.context.js +13 -0
- package/dist/components/otp-field/otp-field.d.ts +99 -0
- package/dist/components/otp-field/otp-field.js +76 -0
- package/dist/components/otp-field/otp-field.props.d.ts +48 -0
- package/dist/components/otp-field/otp-field.props.js +43 -0
- package/dist/components/otp-field/otp-field.slots.d.ts +28 -0
- package/dist/components/otp-field/otp-field.slots.js +39 -0
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/popover/popover.d.ts +192 -0
- package/dist/components/popover/popover.js +152 -0
- package/dist/components/popover/popover.props.d.ts +34 -0
- package/dist/components/popover/popover.props.js +44 -0
- package/dist/components/popover/popover.slots.d.ts +22 -0
- package/dist/components/popover/popover.slots.js +42 -0
- package/dist/components/preview-card/index.d.ts +2 -0
- package/dist/components/preview-card/preview-card.d.ts +182 -0
- package/dist/components/preview-card/preview-card.js +146 -0
- package/dist/components/preview-card/preview-card.props.d.ts +37 -0
- package/dist/components/preview-card/preview-card.props.js +48 -0
- package/dist/components/preview-card/preview-card.slots.d.ts +22 -0
- package/dist/components/preview-card/preview-card.slots.js +39 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/progress.context.d.ts +9 -0
- package/dist/components/progress/progress.context.js +13 -0
- package/dist/components/progress/progress.d.ts +139 -0
- package/dist/components/progress/progress.js +92 -0
- package/dist/components/progress/progress.props.d.ts +56 -0
- package/dist/components/progress/progress.props.js +38 -0
- package/dist/components/progress/progress.slots.d.ts +24 -0
- package/dist/components/progress/progress.slots.js +37 -0
- package/dist/components/radio/index.d.ts +2 -0
- package/dist/components/radio/radio.context.js +5 -0
- package/dist/components/radio/radio.d.ts +205 -0
- package/dist/components/radio/radio.js +168 -0
- package/dist/components/radio/radio.props.d.ts +106 -0
- package/dist/components/radio/radio.props.js +65 -0
- package/dist/components/radio/radio.slots.d.ts +29 -0
- package/dist/components/radio/radio.slots.js +44 -0
- package/dist/components/rail/index.d.ts +3 -0
- package/dist/components/rail/rail.context.d.ts +17 -0
- package/dist/components/rail/rail.context.js +23 -0
- package/dist/components/rail/rail.d.ts +232 -0
- package/dist/components/rail/rail.js +254 -0
- package/dist/components/rail/rail.props.d.ts +98 -0
- package/dist/components/rail/rail.props.js +64 -0
- package/dist/components/rail/rail.slots.d.ts +20 -0
- package/dist/components/rail/rail.slots.js +40 -0
- package/dist/components/scroll-area/index.d.ts +2 -0
- package/dist/components/scroll-area/scroll-area.context.js +15 -0
- package/dist/components/scroll-area/scroll-area.d.ts +217 -0
- package/dist/components/scroll-area/scroll-area.js +153 -0
- package/dist/components/scroll-area/scroll-area.props.d.ts +73 -0
- package/dist/components/scroll-area/scroll-area.props.js +64 -0
- package/dist/components/scroll-area/scroll-area.slots.d.ts +40 -0
- package/dist/components/scroll-area/scroll-area.slots.js +54 -0
- package/dist/components/scroll-area/scroll-area.types.d.ts +24 -0
- package/dist/components/search-dialog/index.d.ts +3 -0
- package/dist/components/search-dialog/parts/input.d.ts +24 -0
- package/dist/components/search-dialog/parts/input.js +53 -0
- package/dist/components/search-dialog/parts/messages.d.ts +80 -0
- package/dist/components/search-dialog/parts/messages.js +75 -0
- package/dist/components/search-dialog/parts/results.d.ts +43 -0
- package/dist/components/search-dialog/parts/results.js +63 -0
- package/dist/components/search-dialog/parts/root.d.ts +54 -0
- package/dist/components/search-dialog/parts/root.js +99 -0
- package/dist/components/search-dialog/search-dialog.context.d.ts +15 -0
- package/dist/components/search-dialog/search-dialog.context.js +20 -0
- package/dist/components/search-dialog/search-dialog.d.ts +84 -0
- package/dist/components/search-dialog/search-dialog.js +43 -0
- package/dist/components/search-dialog/search-dialog.props.d.ts +45 -0
- package/dist/components/search-dialog/search-dialog.props.js +49 -0
- package/dist/components/search-dialog/search-dialog.slots.d.ts +16 -0
- package/dist/components/search-dialog/search-dialog.slots.js +32 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/select.context.js +17 -0
- package/dist/components/select/select.d.ts +356 -0
- package/dist/components/select/select.js +314 -0
- package/dist/components/select/select.props.d.ts +110 -0
- package/dist/components/select/select.props.js +103 -0
- package/dist/components/select/select.slots.d.ts +38 -0
- package/dist/components/select/select.slots.js +67 -0
- package/dist/components/separator/index.d.ts +2 -0
- package/dist/components/separator/separator.d.ts +69 -0
- package/dist/components/separator/separator.js +44 -0
- package/dist/components/separator/separator.props.d.ts +30 -0
- package/dist/components/separator/separator.props.js +30 -0
- package/dist/components/separator/separator.slots.d.ts +22 -0
- package/dist/components/separator/separator.slots.js +21 -0
- package/dist/components/separator/separator.types.d.ts +5 -0
- package/dist/components/sheet/index.d.ts +3 -0
- package/dist/components/sheet/sheet-stack.d.ts +106 -0
- package/dist/components/sheet/sheet-stack.js +146 -0
- package/dist/components/sheet/sheet.d.ts +279 -0
- package/dist/components/sheet/sheet.js +264 -0
- package/dist/components/sheet/sheet.props.d.ts +74 -0
- package/dist/components/sheet/sheet.props.js +77 -0
- package/dist/components/sheet/sheet.slots.js +22 -0
- package/dist/components/sheet/sheet.types.d.ts +12 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/slider.context.d.ts +5 -0
- package/dist/components/slider/slider.context.js +29 -0
- package/dist/components/slider/slider.d.ts +230 -0
- package/dist/components/slider/slider.js +274 -0
- package/dist/components/slider/slider.props.d.ts +72 -0
- package/dist/components/slider/slider.props.js +59 -0
- package/dist/components/slider/slider.slots.d.ts +30 -0
- package/dist/components/slider/slider.slots.js +50 -0
- package/dist/components/surface/index.d.ts +1 -0
- package/dist/components/surface/surface.d.ts +84 -0
- package/dist/components/surface/surface.js +48 -0
- package/dist/components/surface/surface.props.d.ts +35 -0
- package/dist/components/surface/surface.props.js +26 -0
- package/dist/components/surface/surface.slots.js +9 -0
- package/dist/components/surface/surface.types.d.ts +14 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/switch.context.js +14 -0
- package/dist/components/switch/switch.d.ts +110 -0
- package/dist/components/switch/switch.js +92 -0
- package/dist/components/switch/switch.props.d.ts +68 -0
- package/dist/components/switch/switch.props.js +41 -0
- package/dist/components/switch/switch.slots.d.ts +23 -0
- package/dist/components/switch/switch.slots.js +35 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/table.d.ts +104 -0
- package/dist/components/table/table.js +92 -0
- package/dist/components/table/table.props.d.ts +38 -0
- package/dist/components/table/table.props.js +49 -0
- package/dist/components/table/table.slots.js +17 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/tabs.context.d.ts +9 -0
- package/dist/components/tabs/tabs.context.js +13 -0
- package/dist/components/tabs/tabs.d.ts +139 -0
- package/dist/components/tabs/tabs.js +118 -0
- package/dist/components/tabs/tabs.props.d.ts +59 -0
- package/dist/components/tabs/tabs.props.js +39 -0
- package/dist/components/tabs/tabs.slots.d.ts +20 -0
- package/dist/components/tabs/tabs.slots.js +33 -0
- package/dist/components/textarea/index.d.ts +3 -0
- package/dist/components/textarea/textarea.context.js +13 -0
- package/dist/components/textarea/textarea.d.ts +142 -0
- package/dist/components/textarea/textarea.js +129 -0
- package/dist/components/textarea/textarea.props.d.ts +44 -0
- package/dist/components/textarea/textarea.props.js +32 -0
- package/dist/components/textarea/textarea.slots.d.ts +23 -0
- package/dist/components/textarea/textarea.slots.js +33 -0
- package/dist/components/textarea/textarea.types.d.ts +5 -0
- package/dist/components/toast/index.d.ts +4 -0
- package/dist/components/toast/toast.d.ts +241 -0
- package/dist/components/toast/toast.js +193 -0
- package/dist/components/toast/toast.manager.d.ts +76 -0
- package/dist/components/toast/toast.manager.js +71 -0
- package/dist/components/toast/toast.props.d.ts +66 -0
- package/dist/components/toast/toast.props.js +74 -0
- package/dist/components/toast/toast.slots.d.ts +30 -0
- package/dist/components/toast/toast.slots.js +49 -0
- package/dist/components/toast/toast.types.d.ts +19 -0
- package/dist/components/toggle/index.d.ts +2 -0
- package/dist/components/toggle/toggle.context.d.ts +11 -0
- package/dist/components/toggle/toggle.context.js +14 -0
- package/dist/components/toggle/toggle.d.ts +136 -0
- package/dist/components/toggle/toggle.js +101 -0
- package/dist/components/toggle/toggle.props.d.ts +51 -0
- package/dist/components/toggle/toggle.props.js +29 -0
- package/dist/components/toggle/toggle.slots.d.ts +26 -0
- package/dist/components/toggle/toggle.slots.js +36 -0
- package/dist/components/toolbar/index.d.ts +3 -0
- package/dist/components/toolbar/toolbar.context.js +23 -0
- package/dist/components/toolbar/toolbar.d.ts +218 -0
- package/dist/components/toolbar/toolbar.js +197 -0
- package/dist/components/toolbar/toolbar.props.d.ts +54 -0
- package/dist/components/toolbar/toolbar.props.js +55 -0
- package/dist/components/toolbar/toolbar.slots.d.ts +24 -0
- package/dist/components/toolbar/toolbar.slots.js +37 -0
- package/dist/components/toolbar/toolbar.types.d.ts +15 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/tooltip.d.ts +170 -0
- package/dist/components/tooltip/tooltip.js +143 -0
- package/dist/components/tooltip/tooltip.props.d.ts +36 -0
- package/dist/components/tooltip/tooltip.props.js +42 -0
- package/dist/components/tooltip/tooltip.slots.d.ts +26 -0
- package/dist/components/tooltip/tooltip.slots.js +42 -0
- package/dist/core/derive-threshold-tone.js +35 -0
- package/dist/core/merge-class-name.d.ts +17 -0
- package/dist/core/merge-class-name.js +16 -0
- package/dist/core/noctis-provider.d.ts +38 -0
- package/dist/core/noctis-provider.js +44 -0
- package/dist/core/primitive/index.d.ts +1 -0
- package/dist/core/primitive/primitive.d.ts +44 -0
- package/dist/core/primitive/primitive.js +27 -0
- package/dist/core/radius-scope/index.d.ts +2 -0
- package/dist/core/radius-scope/radius-scope.d.ts +43 -0
- package/dist/core/radius-scope/radius-scope.js +36 -0
- package/dist/core/radius-scope/radius-scope.styles.d.ts +13 -0
- package/dist/core/radius-scope/radius-scope.styles.js +11 -0
- package/dist/core/render.d.ts +24 -0
- package/dist/core/render.js +12 -0
- package/dist/core/use-copy.d.ts +13 -0
- package/dist/core/use-copy.js +30 -0
- package/dist/core/use-injected-labels.js +55 -0
- package/dist/core/use-reduced-motion.d.ts +9 -0
- package/dist/core/use-reduced-motion.js +26 -0
- package/dist/core/visually-hidden/index.d.ts +1 -0
- package/dist/core/visually-hidden/visually-hidden.d.ts +24 -0
- package/dist/core/visually-hidden/visually-hidden.js +19 -0
- package/dist/i18n/default-messages.d.ts +12 -0
- package/dist/i18n/default-messages.js +10 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.js +2 -0
- package/dist/i18n/messages/index.d.ts +2 -0
- package/dist/i18n/messages/index.js +2 -0
- package/dist/icons/glyphs.d.ts +2 -0
- package/dist/icons/glyphs.js +2 -0
- package/dist/icons/icon.d.ts +40 -0
- package/dist/icons/icon.js +26 -0
- package/dist/icons/icon.styles.d.ts +9 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/index.d.ts +126 -0
- package/dist/index.js +112 -0
- package/dist/primitives/accordion.d.ts +7 -0
- package/dist/primitives/accordion.js +8 -0
- package/dist/primitives/alert-dialog.d.ts +7 -0
- package/dist/primitives/alert-dialog.js +8 -0
- package/dist/primitives/autocomplete/autocomplete.d.ts +58 -0
- package/dist/primitives/autocomplete/autocomplete.js +58 -0
- package/dist/primitives/autocomplete/index.d.ts +1 -0
- package/dist/primitives/autocomplete.d.ts +2 -0
- package/dist/primitives/autocomplete.js +2 -0
- package/dist/primitives/avatar.d.ts +7 -0
- package/dist/primitives/avatar.js +8 -0
- package/dist/primitives/button.d.ts +7 -0
- package/dist/primitives/button.js +8 -0
- package/dist/primitives/checkbox-group.d.ts +7 -0
- package/dist/primitives/checkbox-group.js +8 -0
- package/dist/primitives/checkbox.d.ts +7 -0
- package/dist/primitives/checkbox.js +8 -0
- package/dist/primitives/collapsible.d.ts +7 -0
- package/dist/primitives/collapsible.js +8 -0
- package/dist/primitives/combobox/combobox.d.ts +71 -0
- package/dist/primitives/combobox/combobox.js +66 -0
- package/dist/primitives/combobox/index.d.ts +1 -0
- package/dist/primitives/combobox.d.ts +2 -0
- package/dist/primitives/combobox.js +2 -0
- package/dist/primitives/context-menu.d.ts +7 -0
- package/dist/primitives/context-menu.js +8 -0
- package/dist/primitives/csp-provider.d.ts +1 -0
- package/dist/primitives/csp-provider.js +2 -0
- package/dist/primitives/dialog.d.ts +7 -0
- package/dist/primitives/dialog.js +8 -0
- package/dist/primitives/direction-provider.d.ts +1 -0
- package/dist/primitives/direction-provider.js +8 -0
- package/dist/primitives/drawer.d.ts +1 -0
- package/dist/primitives/drawer.js +2 -0
- package/dist/primitives/field.d.ts +7 -0
- package/dist/primitives/field.js +8 -0
- package/dist/primitives/fieldset.d.ts +7 -0
- package/dist/primitives/fieldset.js +8 -0
- package/dist/primitives/form.d.ts +7 -0
- package/dist/primitives/form.js +8 -0
- package/dist/primitives/index.d.ts +79 -0
- package/dist/primitives/index.js +113 -0
- package/dist/primitives/input.d.ts +7 -0
- package/dist/primitives/input.js +8 -0
- package/dist/primitives/menu.d.ts +7 -0
- package/dist/primitives/menu.js +8 -0
- package/dist/primitives/menubar.d.ts +7 -0
- package/dist/primitives/menubar.js +8 -0
- package/dist/primitives/meter/index.d.ts +1 -0
- package/dist/primitives/meter/meter.d.ts +56 -0
- package/dist/primitives/meter/meter.js +59 -0
- package/dist/primitives/meter.d.ts +2 -0
- package/dist/primitives/meter.js +2 -0
- package/dist/primitives/navigation-menu.d.ts +7 -0
- package/dist/primitives/navigation-menu.js +8 -0
- package/dist/primitives/number-field/context.d.ts +13 -0
- package/dist/primitives/number-field/context.js +36 -0
- package/dist/primitives/number-field/index.d.ts +2 -0
- package/dist/primitives/number-field/number-field.d.ts +90 -0
- package/dist/primitives/number-field/number-field.js +107 -0
- package/dist/primitives/number-field.d.ts +3 -0
- package/dist/primitives/number-field.js +2 -0
- package/dist/primitives/otp-field.d.ts +7 -0
- package/dist/primitives/otp-field.js +8 -0
- package/dist/primitives/popover.d.ts +7 -0
- package/dist/primitives/popover.js +8 -0
- package/dist/primitives/preview-card.d.ts +7 -0
- package/dist/primitives/preview-card.js +8 -0
- package/dist/primitives/progress/index.d.ts +1 -0
- package/dist/primitives/progress/progress.d.ts +56 -0
- package/dist/primitives/progress/progress.js +59 -0
- package/dist/primitives/progress.d.ts +2 -0
- package/dist/primitives/progress.js +2 -0
- package/dist/primitives/radio-group.d.ts +7 -0
- package/dist/primitives/radio-group.js +8 -0
- package/dist/primitives/radio.d.ts +7 -0
- package/dist/primitives/radio.js +8 -0
- package/dist/primitives/scroll-area.d.ts +7 -0
- package/dist/primitives/scroll-area.js +8 -0
- package/dist/primitives/select.d.ts +7 -0
- package/dist/primitives/select.js +8 -0
- package/dist/primitives/separator.d.ts +7 -0
- package/dist/primitives/separator.js +8 -0
- package/dist/primitives/slider/context.d.ts +12 -0
- package/dist/primitives/slider/context.js +18 -0
- package/dist/primitives/slider/index.d.ts +2 -0
- package/dist/primitives/slider/slider.d.ts +83 -0
- package/dist/primitives/slider/slider.js +99 -0
- package/dist/primitives/slider.d.ts +3 -0
- package/dist/primitives/slider.js +2 -0
- package/dist/primitives/switch.d.ts +1 -0
- package/dist/primitives/switch.js +2 -0
- package/dist/primitives/tabs.d.ts +7 -0
- package/dist/primitives/tabs.js +8 -0
- package/dist/primitives/toast/context.d.ts +11 -0
- package/dist/primitives/toast/context.js +18 -0
- package/dist/primitives/toast/index.d.ts +2 -0
- package/dist/primitives/toast/toast.d.ts +122 -0
- package/dist/primitives/toast/toast.js +133 -0
- package/dist/primitives/toast.d.ts +3 -0
- package/dist/primitives/toast.js +2 -0
- package/dist/primitives/toggle-group.d.ts +7 -0
- package/dist/primitives/toggle-group.js +8 -0
- package/dist/primitives/toggle.d.ts +7 -0
- package/dist/primitives/toggle.js +8 -0
- package/dist/primitives/toolbar.d.ts +7 -0
- package/dist/primitives/toolbar.js +8 -0
- package/dist/primitives/tooltip.d.ts +7 -0
- package/dist/primitives/tooltip.js +8 -0
- package/dist/props.d.ts +46 -0
- package/dist/props.js +46 -0
- package/dist/styles.css +11513 -0
- package/dist/tailwind/cn.d.ts +33 -0
- package/dist/tailwind/cn.js +42 -0
- package/dist/tailwind/index.d.ts +3 -0
- package/dist/tailwind/index.js +3 -0
- package/dist/tailwind/tv.d.ts +20 -0
- package/dist/tailwind/tv.js +11 -0
- package/dist/tailwind.css +485 -0
- package/dist/theme/react.d.ts +1 -0
- package/dist/theme/react.js +1 -0
- package/dist/theme.d.ts +1 -0
- package/dist/theme.js +1 -0
- package/dist/tokens/react.d.ts +1 -0
- package/dist/tokens/react.js +1 -0
- package/dist/tokens.d.ts +1 -0
- package/dist/tokens.js +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ToastPlacement, ToastType } from "./toast.types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/toast/toast.props.d.ts
|
|
4
|
+
/** A spreadable data-attribute prop bag — the shape every `Toast.*.props()` returns. */
|
|
5
|
+
type ToastPartProps = {
|
|
6
|
+
/** The slot value the matching `toast.css` rules anchor on. */"data-slot": string; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
|
|
7
|
+
className?: string; /** A data-attribute present (a value or empty string) or absent (`undefined`); never `false`. */
|
|
8
|
+
[attr: `data-${string}`]: string | undefined;
|
|
9
|
+
};
|
|
10
|
+
/** Common shape: every part's `.props()` accepts an optional `className` passthrough. */
|
|
11
|
+
interface BasePropsArgs {
|
|
12
|
+
/** Forwarded verbatim onto the returned prop bag. */
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Argument to `Toast.Root.props(...)` — the status type the root's accent and parts key their look off. */
|
|
16
|
+
interface ToastRootPropsArgs extends BasePropsArgs {
|
|
17
|
+
/** The status type driving the leading status icon's colour. Omit for a neutral toast. */
|
|
18
|
+
type?: ToastType;
|
|
19
|
+
}
|
|
20
|
+
/** Argument to `Toast.Viewport.props(...)` — the docked placement the viewport's insets key off. */
|
|
21
|
+
interface ToastViewportPropsArgs extends BasePropsArgs {
|
|
22
|
+
/** Where the viewport docks on screen. Omit for `bottom-end`. */
|
|
23
|
+
placement?: ToastPlacement;
|
|
24
|
+
}
|
|
25
|
+
/** Argument to a stateless part's `.props(...)` — no inputs of its own; look flows from the root. */
|
|
26
|
+
type ToastStatelessPropsArgs = BasePropsArgs;
|
|
27
|
+
/** Viewport prop bag: slot anchor plus the optional `data-placement` the docked insets read. */
|
|
28
|
+
declare function viewportProps({
|
|
29
|
+
placement,
|
|
30
|
+
className
|
|
31
|
+
}?: ToastViewportPropsArgs): ToastPartProps;
|
|
32
|
+
/** Root prop bag: slot anchor plus the optional `data-type` the accent re-point reads. */
|
|
33
|
+
declare function rootProps({
|
|
34
|
+
type,
|
|
35
|
+
className
|
|
36
|
+
}?: ToastRootPropsArgs): ToastPartProps;
|
|
37
|
+
/** Content prop bag: just the slot anchor. */
|
|
38
|
+
declare function contentProps({
|
|
39
|
+
className
|
|
40
|
+
}?: ToastStatelessPropsArgs): ToastPartProps;
|
|
41
|
+
/** Title prop bag: just the slot anchor. */
|
|
42
|
+
declare function titleProps({
|
|
43
|
+
className
|
|
44
|
+
}?: ToastStatelessPropsArgs): ToastPartProps;
|
|
45
|
+
/** Description prop bag: just the slot anchor. */
|
|
46
|
+
declare function descriptionProps({
|
|
47
|
+
className
|
|
48
|
+
}?: ToastStatelessPropsArgs): ToastPartProps;
|
|
49
|
+
/** Icon prop bag: just the slot anchor (it inherits the toast's status colour). */
|
|
50
|
+
declare function iconProps({
|
|
51
|
+
className
|
|
52
|
+
}?: ToastStatelessPropsArgs): ToastPartProps;
|
|
53
|
+
/** Spinner prop bag: just the slot anchor (the loading-phase spinner; neutral, CSS-driven). */
|
|
54
|
+
declare function spinnerProps({
|
|
55
|
+
className
|
|
56
|
+
}?: ToastStatelessPropsArgs): ToastPartProps;
|
|
57
|
+
/** Action prop bag: just the slot anchor (it composes with a Button through `render`). */
|
|
58
|
+
declare function actionProps({
|
|
59
|
+
className
|
|
60
|
+
}?: ToastStatelessPropsArgs): ToastPartProps;
|
|
61
|
+
/** Close prop bag: just the slot anchor (it composes with a Button through `render`). */
|
|
62
|
+
declare function closeProps({
|
|
63
|
+
className
|
|
64
|
+
}?: ToastStatelessPropsArgs): ToastPartProps;
|
|
65
|
+
//#endregion
|
|
66
|
+
export { ToastPartProps, ToastRootPropsArgs, ToastViewportPropsArgs, actionProps, closeProps, contentProps, descriptionProps, iconProps, rootProps, spinnerProps, titleProps, viewportProps };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { TOAST_SLOTS } from "./toast.slots.js";
|
|
2
|
+
//#region src/components/toast/toast.props.ts
|
|
3
|
+
/**
|
|
4
|
+
* The D12 unified variant contract for Toast — each compound part exposes a `props(...)` builder
|
|
5
|
+
* returning a **spreadable props object** of the form `{ "data-slot": "noctis-toast-<part>", ...attrs }`,
|
|
6
|
+
* derived from the part's inputs. Under the single-`data-slot` anchor model the `data-slot` (plus
|
|
7
|
+
* `data-type` on the root) is the only styling hook needed — `toast.css` keys every rule off it — so
|
|
8
|
+
* spreading a part's `props()` onto a *foreign* element styles it as that part:
|
|
9
|
+
*
|
|
10
|
+
* <li {...Toast.Root.props({ type: "success" })} />
|
|
11
|
+
* // → <li data-slot="noctis-toast" data-type="success">
|
|
12
|
+
*
|
|
13
|
+
* The escape hatch carries no className (styling is attribute-driven); an optional `className`
|
|
14
|
+
* passthrough is accepted and forwarded verbatim. The same input→data-attribute→value mapping is
|
|
15
|
+
* emitted as data from the token graph (`generated/declarations.json` → `variantSchema`) so non-React /
|
|
16
|
+
* agent consumers can hand-write the markup from the docs.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the logical default swipe pair — "toward the docked bottom-end corner" — to the physical pair
|
|
20
|
+
* Base UI understands: `down` plus the inline-end edge, which is `right` in LTR and `left` in RTL. This
|
|
21
|
+
* is the RTL-correctness seam: a `show()` toast docked bottom-end swipes toward its corner in either
|
|
22
|
+
* direction without the consumer hard-coding `right`.
|
|
23
|
+
*/
|
|
24
|
+
function resolveSwipeDirection(direction) {
|
|
25
|
+
return ["down", direction === "rtl" ? "left" : "right"];
|
|
26
|
+
}
|
|
27
|
+
const withClassName = (bag, className) => className === void 0 ? bag : {
|
|
28
|
+
...bag,
|
|
29
|
+
className
|
|
30
|
+
};
|
|
31
|
+
/** Viewport prop bag: slot anchor plus the optional `data-placement` the docked insets read. */
|
|
32
|
+
function viewportProps({ placement, className } = {}) {
|
|
33
|
+
return withClassName({
|
|
34
|
+
"data-slot": TOAST_SLOTS.viewport,
|
|
35
|
+
"data-placement": placement
|
|
36
|
+
}, className);
|
|
37
|
+
}
|
|
38
|
+
/** Root prop bag: slot anchor plus the optional `data-type` the accent re-point reads. */
|
|
39
|
+
function rootProps({ type, className } = {}) {
|
|
40
|
+
return withClassName({
|
|
41
|
+
"data-slot": TOAST_SLOTS.root,
|
|
42
|
+
"data-type": type
|
|
43
|
+
}, className);
|
|
44
|
+
}
|
|
45
|
+
/** Content prop bag: just the slot anchor. */
|
|
46
|
+
function contentProps({ className } = {}) {
|
|
47
|
+
return withClassName({ "data-slot": TOAST_SLOTS.content }, className);
|
|
48
|
+
}
|
|
49
|
+
/** Title prop bag: just the slot anchor. */
|
|
50
|
+
function titleProps({ className } = {}) {
|
|
51
|
+
return withClassName({ "data-slot": TOAST_SLOTS.title }, className);
|
|
52
|
+
}
|
|
53
|
+
/** Description prop bag: just the slot anchor. */
|
|
54
|
+
function descriptionProps({ className } = {}) {
|
|
55
|
+
return withClassName({ "data-slot": TOAST_SLOTS.description }, className);
|
|
56
|
+
}
|
|
57
|
+
/** Icon prop bag: just the slot anchor (it inherits the toast's status colour). */
|
|
58
|
+
function iconProps({ className } = {}) {
|
|
59
|
+
return withClassName({ "data-slot": TOAST_SLOTS.icon }, className);
|
|
60
|
+
}
|
|
61
|
+
/** Spinner prop bag: just the slot anchor (the loading-phase spinner; neutral, CSS-driven). */
|
|
62
|
+
function spinnerProps({ className } = {}) {
|
|
63
|
+
return withClassName({ "data-slot": TOAST_SLOTS.spinner }, className);
|
|
64
|
+
}
|
|
65
|
+
/** Action prop bag: just the slot anchor (it composes with a Button through `render`). */
|
|
66
|
+
function actionProps({ className } = {}) {
|
|
67
|
+
return withClassName({ "data-slot": TOAST_SLOTS.action }, className);
|
|
68
|
+
}
|
|
69
|
+
/** Close prop bag: just the slot anchor (it composes with a Button through `render`). */
|
|
70
|
+
function closeProps({ className } = {}) {
|
|
71
|
+
return withClassName({ "data-slot": TOAST_SLOTS.close }, className);
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { actionProps, closeProps, contentProps, descriptionProps, iconProps, resolveSwipeDirection, rootProps, spinnerProps, titleProps, viewportProps };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/components/toast/toast.slots.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The `data-*` attributes a `Toast` carries, paired with its slots for conditional styling. Base UI
|
|
4
|
+
* stamps the live state on each toast root; each member's value is the attribute name and its JSDoc is
|
|
5
|
+
* the description the docs attributes table renders.
|
|
6
|
+
*/
|
|
7
|
+
declare enum ToastDataAttributes {
|
|
8
|
+
/** The styling/testing hook every rendered part carries. */
|
|
9
|
+
slot = "data-slot",
|
|
10
|
+
/** On the root: the status type (`info` · `success` · `warning` · `danger` · `loading` · `error`) driving the accent. */
|
|
11
|
+
type = "data-type",
|
|
12
|
+
/** On the viewport: the docked placement (`bottom-end` · `bottom-center` · `bottom-start` · `top-*`). */
|
|
13
|
+
placement = "data-placement",
|
|
14
|
+
/** On the viewport (and each root/content while it is): present while the stack is fanned out (hover/focus). */
|
|
15
|
+
expanded = "data-expanded",
|
|
16
|
+
/** On the content: present while the toast sits behind the frontmost one in the collapsed stack. */
|
|
17
|
+
behind = "data-behind",
|
|
18
|
+
/** On the root: present when the toast was pushed past the provider's `limit` (kept mounted but inert). */
|
|
19
|
+
limited = "data-limited",
|
|
20
|
+
/** On the root: present while the toast is being swiped to dismiss. */
|
|
21
|
+
swiping = "data-swiping",
|
|
22
|
+
/** On the root: the physical axis the toast was swiped along (`up` · `down` · `left` · `right`); the default pair is RTL-resolved from the docked corner. */
|
|
23
|
+
swipeDirection = "data-swipe-direction",
|
|
24
|
+
/** On the root: present for the first animation frame after the toast mounts (the enter transition). */
|
|
25
|
+
startingStyle = "data-starting-style",
|
|
26
|
+
/** On the root: present while the toast animates out before it unmounts (the exit transition). */
|
|
27
|
+
endingStyle = "data-ending-style"
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { ToastDataAttributes };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/components/toast/toast.slots.ts
|
|
2
|
+
/**
|
|
3
|
+
* The slot vocabulary every `Toast` part stamps as its `data-slot`. The authored source the
|
|
4
|
+
* orchestration file reads from, kebab-cased `{component}-{part}` and `noctis-`-prefixed; SLOTS.md and
|
|
5
|
+
* the token graph generate the same anatomy. `Toast.Provider` wraps Base UI's `Toast.Provider` without
|
|
6
|
+
* rendering an element of its own, so it stamps no slot and does not appear here, keeping the const
|
|
7
|
+
* parity-true to the rendered DOM.
|
|
8
|
+
*/
|
|
9
|
+
const TOAST_SLOTS = {
|
|
10
|
+
viewport: "noctis-toast-viewport",
|
|
11
|
+
root: "noctis-toast",
|
|
12
|
+
content: "noctis-toast-content",
|
|
13
|
+
title: "noctis-toast-title",
|
|
14
|
+
description: "noctis-toast-description",
|
|
15
|
+
icon: "noctis-toast-icon",
|
|
16
|
+
spinner: "noctis-toast-spinner",
|
|
17
|
+
action: "noctis-toast-action",
|
|
18
|
+
close: "noctis-toast-close"
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The `data-*` attributes a `Toast` carries, paired with its slots for conditional styling. Base UI
|
|
22
|
+
* stamps the live state on each toast root; each member's value is the attribute name and its JSDoc is
|
|
23
|
+
* the description the docs attributes table renders.
|
|
24
|
+
*/
|
|
25
|
+
let ToastDataAttributes = /* @__PURE__ */ function(ToastDataAttributes) {
|
|
26
|
+
/** The styling/testing hook every rendered part carries. */
|
|
27
|
+
ToastDataAttributes["slot"] = "data-slot";
|
|
28
|
+
/** On the root: the status type (`info` · `success` · `warning` · `danger` · `loading` · `error`) driving the accent. */
|
|
29
|
+
ToastDataAttributes["type"] = "data-type";
|
|
30
|
+
/** On the viewport: the docked placement (`bottom-end` · `bottom-center` · `bottom-start` · `top-*`). */
|
|
31
|
+
ToastDataAttributes["placement"] = "data-placement";
|
|
32
|
+
/** On the viewport (and each root/content while it is): present while the stack is fanned out (hover/focus). */
|
|
33
|
+
ToastDataAttributes["expanded"] = "data-expanded";
|
|
34
|
+
/** On the content: present while the toast sits behind the frontmost one in the collapsed stack. */
|
|
35
|
+
ToastDataAttributes["behind"] = "data-behind";
|
|
36
|
+
/** On the root: present when the toast was pushed past the provider's `limit` (kept mounted but inert). */
|
|
37
|
+
ToastDataAttributes["limited"] = "data-limited";
|
|
38
|
+
/** On the root: present while the toast is being swiped to dismiss. */
|
|
39
|
+
ToastDataAttributes["swiping"] = "data-swiping";
|
|
40
|
+
/** On the root: the physical axis the toast was swiped along (`up` · `down` · `left` · `right`); the default pair is RTL-resolved from the docked corner. */
|
|
41
|
+
ToastDataAttributes["swipeDirection"] = "data-swipe-direction";
|
|
42
|
+
/** On the root: present for the first animation frame after the toast mounts (the enter transition). */
|
|
43
|
+
ToastDataAttributes["startingStyle"] = "data-starting-style";
|
|
44
|
+
/** On the root: present while the toast animates out before it unmounts (the exit transition). */
|
|
45
|
+
ToastDataAttributes["endingStyle"] = "data-ending-style";
|
|
46
|
+
return ToastDataAttributes;
|
|
47
|
+
}({});
|
|
48
|
+
//#endregion
|
|
49
|
+
export { TOAST_SLOTS, ToastDataAttributes };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/components/toast/toast.types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The Toast status type — the `type` axis Base UI stamps as `data-type` on each toast root, re-pointing
|
|
4
|
+
* the leading status icon (and the status-typed parts) to the matching status role. Mirrors the
|
|
5
|
+
* status families in `@stridge/noctis-design-tokens` (`info` · `success` · `warning` · `danger`), plus
|
|
6
|
+
* `loading` for the async-pending phase (neutral, no chroma — it carries the spinner). Omit it for a
|
|
7
|
+
* neutral toast (a plain toast is not a signal). Base UI's `promise()` also stamps `success` and a
|
|
8
|
+
* private `error` value as a promise settles; `error` is re-pointed to the `danger` role in the token
|
|
9
|
+
* layer but is not part of the helper-facing union.
|
|
10
|
+
*/
|
|
11
|
+
type ToastType = "info" | "success" | "warning" | "danger" | "loading";
|
|
12
|
+
/**
|
|
13
|
+
* Where the toast viewport docks on screen — a logical placement (`*-start`/`*-end` flip under RTL).
|
|
14
|
+
* `Toast.Viewport` stamps the chosen value as `data-placement`, which drives the viewport's logical
|
|
15
|
+
* insets and the toasts' enter direction (top placements enter from above). Defaults to `bottom-end`.
|
|
16
|
+
*/
|
|
17
|
+
type ToastPlacement = "bottom-end" | "bottom-center" | "bottom-start" | "top-end" | "top-center" | "top-start";
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ToastPlacement, ToastType };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/components/toggle/toggle.context.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Visual emphasis, mirroring Button — all quiet when off, each lighting a different fill when pressed:
|
|
4
|
+
* `ghost` (transparent, fills neutral), `accent` (fills the accent), `primary` (fills the bold primary),
|
|
5
|
+
* or `outline` (a resting border that fills primary when pressed).
|
|
6
|
+
*/
|
|
7
|
+
type ToggleVariant = "ghost" | "accent" | "primary" | "outline";
|
|
8
|
+
/** Control height and type — `xs`, `sm`, `md`, or `lg`; the scale mirrors Button. */
|
|
9
|
+
type ToggleSize = "xs" | "sm" | "md" | "lg";
|
|
10
|
+
//#endregion
|
|
11
|
+
export { ToggleSize, ToggleVariant };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, use } from "react";
|
|
3
|
+
//#region src/components/toggle/toggle.context.ts
|
|
4
|
+
const ToggleGroupContext = createContext(null);
|
|
5
|
+
const ToggleGroupProvider = ToggleGroupContext.Provider;
|
|
6
|
+
/**
|
|
7
|
+
* Read the enclosing `ToggleGroup`'s shared look, or `null` for a standalone `Toggle`. A standalone
|
|
8
|
+
* toggle is valid, so this never throws — the part falls back to its own `variant`/`size` props.
|
|
9
|
+
*/
|
|
10
|
+
function useToggleGroup() {
|
|
11
|
+
return use(ToggleGroupContext);
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { ToggleGroupProvider, useToggleGroup };
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { IconGlyph } from "../../icons/glyphs.js";
|
|
2
|
+
import { toggle_d_exports } from "../../primitives/toggle.js";
|
|
3
|
+
import { toggle_group_d_exports } from "../../primitives/toggle-group.js";
|
|
4
|
+
import { ToggleSize, ToggleVariant } from "./toggle.context.js";
|
|
5
|
+
import { ToggleGroupPropsArgs, TogglePartProps, TogglePropsArgs, groupProps, rootProps } from "./toggle.props.js";
|
|
6
|
+
import { ReactElement, ReactNode } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/components/toggle/toggle.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* A two-state button that is either off or pressed (on), built on Base UI's `Toggle`. Renders a native
|
|
11
|
+
* `<button[aria-pressed]>`, so it is fully keyboard-operable and announces its pressed state to
|
|
12
|
+
* assistive tech. Use it standalone for a single on/off control, or inside a {@link ToggleGroup} to
|
|
13
|
+
* share a look and coordinate selection; an unset `variant`/`size` is inherited from the group.
|
|
14
|
+
*
|
|
15
|
+
* Every variant is quiet when off and fills only when pressed: `ghost` (default) fills the neutral
|
|
16
|
+
* selected role, `accent` the indigo accent, `primary` the bold primary, and `outline` carries a resting
|
|
17
|
+
* border that fills primary when pressed. The variants and the `xs|sm|md|lg` sizes mirror Button, so the
|
|
18
|
+
* two action controls feel identical under the finger — pass a leading/trailing glyph with `startIcon`/
|
|
19
|
+
* `endIcon`, or square it for a single icon with `iconOnly` (give it an `aria-label`). Styling is
|
|
20
|
+
* precompiled in `toggle.css`, keyed off the `data-slot="noctis-toggle"` anchor plus the
|
|
21
|
+
* `data-variant`/`data-size`/`data-pressed` recipe.
|
|
22
|
+
*
|
|
23
|
+
* @see {@link Toggle.Props}
|
|
24
|
+
*/
|
|
25
|
+
declare function ToggleImpl({
|
|
26
|
+
variant: variantProp,
|
|
27
|
+
size: sizeProp,
|
|
28
|
+
iconOnly: iconOnlyProp,
|
|
29
|
+
startIcon,
|
|
30
|
+
endIcon,
|
|
31
|
+
className,
|
|
32
|
+
children,
|
|
33
|
+
...props
|
|
34
|
+
}: Toggle.Props): ReactElement;
|
|
35
|
+
/**
|
|
36
|
+
* Groups a series of toggles, sharing their `variant`/`size`/`iconOnly` and coordinating selection — a
|
|
37
|
+
* simple gap-separated row. Single-select by default (pressing one releases the others); set `multiple`
|
|
38
|
+
* to let several be pressed at once (a formatting toolbar). Becomes a `role="toolbar"` at 3+ toggles (an
|
|
39
|
+
* `aria-label` is then required), and stays `role="group"` below that, per the APG. Works controlled
|
|
40
|
+
* (`value` + `onValueChange`) or uncontrolled (`defaultValue`), and is arrow-key navigable, RTL-aware,
|
|
41
|
+
* and roving-focus managed by Base UI.
|
|
42
|
+
*/
|
|
43
|
+
declare function ToggleGroupImpl({
|
|
44
|
+
variant,
|
|
45
|
+
size,
|
|
46
|
+
iconOnly,
|
|
47
|
+
multiple,
|
|
48
|
+
className,
|
|
49
|
+
children,
|
|
50
|
+
...props
|
|
51
|
+
}: ToggleGroup.Props): ReactElement;
|
|
52
|
+
/**
|
|
53
|
+
* A two-state pressable button. The component value carries the D12 `props()` escape hatch via
|
|
54
|
+
* `Object.assign`: spread `Toggle.props({ variant, size, pressed, disabled })` onto a foreign element to
|
|
55
|
+
* style it as a toggle. It returns a spreadable `{ "data-slot": "noctis-toggle", ...dataAttrs }` bag the
|
|
56
|
+
* precompiled `toggle.css` keys off.
|
|
57
|
+
*/
|
|
58
|
+
declare const Toggle: typeof ToggleImpl & {
|
|
59
|
+
props: typeof rootProps;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* A group of toggles sharing a look and coordinating selection. `ToggleGroup.props({ variant, size })`
|
|
63
|
+
* returns its spreadable prop bag.
|
|
64
|
+
*/
|
|
65
|
+
declare const ToggleGroup: typeof ToggleGroupImpl & {
|
|
66
|
+
props: typeof groupProps;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Per-part prop and variant types. Merges with the `Toggle` function above, so `Toggle` is the component
|
|
70
|
+
* value while `Toggle.Props` is its prop type and `Toggle.props` is the escape-hatch helper.
|
|
71
|
+
*/
|
|
72
|
+
declare namespace Toggle {
|
|
73
|
+
type Props = Omit<toggle_d_exports.Toggle.Props, "className" | "children"> & {
|
|
74
|
+
/**
|
|
75
|
+
* Visual emphasis — `ghost` (fills neutral), `accent` (fills the accent), `primary` (fills the
|
|
76
|
+
* bold primary), or `outline` (resting border, fills primary when pressed). Inherited from an
|
|
77
|
+
* enclosing `ToggleGroup` when unset.
|
|
78
|
+
* @default "ghost"
|
|
79
|
+
*/
|
|
80
|
+
variant?: ToggleVariant;
|
|
81
|
+
/**
|
|
82
|
+
* Size scale — height, padding, and text. Inherited from an enclosing `ToggleGroup` when unset.
|
|
83
|
+
* @default "md"
|
|
84
|
+
*/
|
|
85
|
+
size?: ToggleSize;
|
|
86
|
+
/**
|
|
87
|
+
* Square the toggle for a single icon. Provide an `aria-label` — there is no visible text to name it.
|
|
88
|
+
* Inherited from an enclosing `ToggleGroup` when unset.
|
|
89
|
+
* @default false
|
|
90
|
+
*/
|
|
91
|
+
iconOnly?: boolean; /** Leading glyph, before the label. */
|
|
92
|
+
startIcon?: IconGlyph; /** Trailing glyph, after the label. */
|
|
93
|
+
endIcon?: IconGlyph; /** The toggle's content. */
|
|
94
|
+
children?: ReactNode; /** Merged onto the rendered button's class list. */
|
|
95
|
+
className?: string;
|
|
96
|
+
};
|
|
97
|
+
/** Visual emphasis — `ghost`, `accent`, `primary`, or `outline`. */
|
|
98
|
+
type Variant = ToggleVariant;
|
|
99
|
+
/** Height/padding/text scale. */
|
|
100
|
+
type Size = ToggleSize;
|
|
101
|
+
/** Argument to the `Toggle.props(...)` escape-hatch helper. */
|
|
102
|
+
type PropsArgs = TogglePropsArgs;
|
|
103
|
+
/** The spreadable data-attribute prop bag every `Toggle(.Group)?.props()` returns (D12). */
|
|
104
|
+
type PartProps = TogglePartProps;
|
|
105
|
+
type State = toggle_d_exports.Toggle.State;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Per-part prop types for the group. Merges with the `ToggleGroup` function above.
|
|
109
|
+
*/
|
|
110
|
+
declare namespace ToggleGroup {
|
|
111
|
+
type Props = Omit<toggle_group_d_exports.ToggleGroup.Props, "className" | "children"> & {
|
|
112
|
+
/**
|
|
113
|
+
* Visual emphasis shared with the toggles inside — `ghost`, `accent`, `primary`, or `outline`.
|
|
114
|
+
* @default "ghost"
|
|
115
|
+
*/
|
|
116
|
+
variant?: ToggleVariant;
|
|
117
|
+
/**
|
|
118
|
+
* Size scale shared with the toggles inside.
|
|
119
|
+
* @default "md"
|
|
120
|
+
*/
|
|
121
|
+
size?: ToggleSize;
|
|
122
|
+
/**
|
|
123
|
+
* Square every toggle in the group for a single icon — a toolbar of icon toggles in one prop. A
|
|
124
|
+
* toggle can still set `iconOnly` itself to opt out. Each needs an `aria-label`.
|
|
125
|
+
* @default false
|
|
126
|
+
*/
|
|
127
|
+
iconOnly?: boolean; /** The `Toggle`s in the group. */
|
|
128
|
+
children?: ReactNode; /** Merged onto the rendered group's class list. */
|
|
129
|
+
className?: string;
|
|
130
|
+
};
|
|
131
|
+
/** Argument to the `ToggleGroup.props(...)` escape-hatch helper. */
|
|
132
|
+
type PropsArgs = ToggleGroupPropsArgs;
|
|
133
|
+
type State = toggle_group_d_exports.ToggleGroup.State;
|
|
134
|
+
}
|
|
135
|
+
//#endregion
|
|
136
|
+
export { Toggle, ToggleGroup };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Icon } from "../../icons/icon.js";
|
|
3
|
+
import { toggle_exports } from "../../primitives/toggle.js";
|
|
4
|
+
import { toggle_group_exports } from "../../primitives/toggle-group.js";
|
|
5
|
+
import { ToggleGroupProvider, useToggleGroup } from "./toggle.context.js";
|
|
6
|
+
import { TOGGLE_SLOTS } from "./toggle.slots.js";
|
|
7
|
+
import { groupProps, rootProps } from "./toggle.props.js";
|
|
8
|
+
import { Children } from "react";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
//#region src/components/toggle/toggle.tsx
|
|
11
|
+
/** The icon size that pairs with each toggle size. */
|
|
12
|
+
const GLYPH_SIZE = {
|
|
13
|
+
xs: "sm",
|
|
14
|
+
sm: "sm",
|
|
15
|
+
md: "md",
|
|
16
|
+
lg: "md"
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* A two-state button that is either off or pressed (on), built on Base UI's `Toggle`. Renders a native
|
|
20
|
+
* `<button[aria-pressed]>`, so it is fully keyboard-operable and announces its pressed state to
|
|
21
|
+
* assistive tech. Use it standalone for a single on/off control, or inside a {@link ToggleGroup} to
|
|
22
|
+
* share a look and coordinate selection; an unset `variant`/`size` is inherited from the group.
|
|
23
|
+
*
|
|
24
|
+
* Every variant is quiet when off and fills only when pressed: `ghost` (default) fills the neutral
|
|
25
|
+
* selected role, `accent` the indigo accent, `primary` the bold primary, and `outline` carries a resting
|
|
26
|
+
* border that fills primary when pressed. The variants and the `xs|sm|md|lg` sizes mirror Button, so the
|
|
27
|
+
* two action controls feel identical under the finger — pass a leading/trailing glyph with `startIcon`/
|
|
28
|
+
* `endIcon`, or square it for a single icon with `iconOnly` (give it an `aria-label`). Styling is
|
|
29
|
+
* precompiled in `toggle.css`, keyed off the `data-slot="noctis-toggle"` anchor plus the
|
|
30
|
+
* `data-variant`/`data-size`/`data-pressed` recipe.
|
|
31
|
+
*
|
|
32
|
+
* @see {@link Toggle.Props}
|
|
33
|
+
*/
|
|
34
|
+
function ToggleImpl({ variant: variantProp, size: sizeProp, iconOnly: iconOnlyProp, startIcon, endIcon, className, children, ...props }) {
|
|
35
|
+
const group = useToggleGroup();
|
|
36
|
+
const variant = variantProp ?? group?.variant ?? "ghost";
|
|
37
|
+
const size = sizeProp ?? group?.size ?? "md";
|
|
38
|
+
const iconOnly = iconOnlyProp ?? group?.iconOnly ?? false;
|
|
39
|
+
const glyphSize = GLYPH_SIZE[size];
|
|
40
|
+
return /* @__PURE__ */ jsxs(toggle_exports.Toggle, {
|
|
41
|
+
...props,
|
|
42
|
+
"data-slot": TOGGLE_SLOTS.root,
|
|
43
|
+
"data-variant": variant,
|
|
44
|
+
"data-size": size,
|
|
45
|
+
"data-icon-only": iconOnly ? "true" : void 0,
|
|
46
|
+
className,
|
|
47
|
+
children: [
|
|
48
|
+
startIcon ? /* @__PURE__ */ jsx(Icon, {
|
|
49
|
+
icon: startIcon,
|
|
50
|
+
size: glyphSize
|
|
51
|
+
}) : null,
|
|
52
|
+
children,
|
|
53
|
+
endIcon ? /* @__PURE__ */ jsx(Icon, {
|
|
54
|
+
icon: endIcon,
|
|
55
|
+
size: glyphSize
|
|
56
|
+
}) : null
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Groups a series of toggles, sharing their `variant`/`size`/`iconOnly` and coordinating selection — a
|
|
62
|
+
* simple gap-separated row. Single-select by default (pressing one releases the others); set `multiple`
|
|
63
|
+
* to let several be pressed at once (a formatting toolbar). Becomes a `role="toolbar"` at 3+ toggles (an
|
|
64
|
+
* `aria-label` is then required), and stays `role="group"` below that, per the APG. Works controlled
|
|
65
|
+
* (`value` + `onValueChange`) or uncontrolled (`defaultValue`), and is arrow-key navigable, RTL-aware,
|
|
66
|
+
* and roving-focus managed by Base UI.
|
|
67
|
+
*/
|
|
68
|
+
function ToggleGroupImpl({ variant = "ghost", size = "md", iconOnly = false, multiple, className, children, ...props }) {
|
|
69
|
+
return /* @__PURE__ */ jsx(toggle_group_exports.ToggleGroup, {
|
|
70
|
+
...Children.count(children) >= 3 ? { role: "toolbar" } : {},
|
|
71
|
+
multiple,
|
|
72
|
+
...props,
|
|
73
|
+
"data-slot": TOGGLE_SLOTS.group,
|
|
74
|
+
"data-variant": variant,
|
|
75
|
+
"data-size": size,
|
|
76
|
+
"data-multiple": multiple ? "true" : void 0,
|
|
77
|
+
className,
|
|
78
|
+
children: /* @__PURE__ */ jsx(ToggleGroupProvider, {
|
|
79
|
+
value: {
|
|
80
|
+
variant,
|
|
81
|
+
size,
|
|
82
|
+
iconOnly
|
|
83
|
+
},
|
|
84
|
+
children
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* A two-state pressable button. The component value carries the D12 `props()` escape hatch via
|
|
90
|
+
* `Object.assign`: spread `Toggle.props({ variant, size, pressed, disabled })` onto a foreign element to
|
|
91
|
+
* style it as a toggle. It returns a spreadable `{ "data-slot": "noctis-toggle", ...dataAttrs }` bag the
|
|
92
|
+
* precompiled `toggle.css` keys off.
|
|
93
|
+
*/
|
|
94
|
+
const Toggle = Object.assign(ToggleImpl, { props: rootProps });
|
|
95
|
+
/**
|
|
96
|
+
* A group of toggles sharing a look and coordinating selection. `ToggleGroup.props({ variant, size })`
|
|
97
|
+
* returns its spreadable prop bag.
|
|
98
|
+
*/
|
|
99
|
+
const ToggleGroup = Object.assign(ToggleGroupImpl, { props: groupProps });
|
|
100
|
+
//#endregion
|
|
101
|
+
export { Toggle, ToggleGroup };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ToggleSize, ToggleVariant } from "./toggle.context.js";
|
|
2
|
+
|
|
3
|
+
//#region src/components/toggle/toggle.props.d.ts
|
|
4
|
+
/** A spreadable data-attribute prop bag — the shape every `Toggle.*.props()` returns. */
|
|
5
|
+
type TogglePartProps = {
|
|
6
|
+
/** The slot value the matching `toggle.css` rules anchor on. */"data-slot": string; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
|
|
7
|
+
className?: string; /** A data-attribute present (empty string) or absent (`undefined`); never `false`. */
|
|
8
|
+
[attr: `data-${string}`]: string | undefined;
|
|
9
|
+
};
|
|
10
|
+
/** Common shape: every part's `.props()` accepts an optional `className` passthrough. */
|
|
11
|
+
interface BasePropsArgs {
|
|
12
|
+
/** Forwarded verbatim onto the returned prop bag. */
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Argument to `Toggle.props(...)` — the toggle's look, size, and pressed/disabled state. */
|
|
16
|
+
interface TogglePropsArgs extends BasePropsArgs {
|
|
17
|
+
/** Visual emphasis — `ghost`, `accent`, `primary`, or `outline` (each fills when pressed). @default "ghost" */
|
|
18
|
+
variant?: ToggleVariant;
|
|
19
|
+
/** Control height and type. @default "md" */
|
|
20
|
+
size?: ToggleSize;
|
|
21
|
+
/** Square the toggle for a single icon (drives the square sizing via `data-icon-only`). */
|
|
22
|
+
iconOnly?: boolean;
|
|
23
|
+
/** Whether this toggle is pressed (drives the selected fill via `data-pressed`). */
|
|
24
|
+
pressed?: boolean;
|
|
25
|
+
/** Whether this toggle is disabled (drives the not-allowed affordance via `data-disabled`). */
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Argument to `ToggleGroup.props(...)` — the group container, carrying the shared look it stamps. */
|
|
29
|
+
interface ToggleGroupPropsArgs extends BasePropsArgs {
|
|
30
|
+
/** Visual emphasis the group shares with its toggles. @default "ghost" */
|
|
31
|
+
variant?: ToggleVariant;
|
|
32
|
+
/** Control height the group shares with its toggles. @default "md" */
|
|
33
|
+
size?: ToggleSize;
|
|
34
|
+
}
|
|
35
|
+
/** Toggle prop bag: the slot anchor plus the `data-variant`/`data-size`/`data-icon-only`/`data-pressed`/`data-disabled` state. */
|
|
36
|
+
declare function rootProps({
|
|
37
|
+
variant,
|
|
38
|
+
size,
|
|
39
|
+
iconOnly,
|
|
40
|
+
pressed,
|
|
41
|
+
disabled,
|
|
42
|
+
className
|
|
43
|
+
}?: TogglePropsArgs): TogglePartProps;
|
|
44
|
+
/** Group prop bag: the slot anchor plus the `data-variant`/`data-size` its descendant toggles read. */
|
|
45
|
+
declare function groupProps({
|
|
46
|
+
variant,
|
|
47
|
+
size,
|
|
48
|
+
className
|
|
49
|
+
}?: ToggleGroupPropsArgs): TogglePartProps;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { ToggleGroupPropsArgs, TogglePartProps, TogglePropsArgs, groupProps, rootProps };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TOGGLE_SLOTS } from "./toggle.slots.js";
|
|
2
|
+
//#region src/components/toggle/toggle.props.ts
|
|
3
|
+
/** Stamp a boolean state as a bare data-attribute: present (`""`) when on, absent (`undefined`) when off. */
|
|
4
|
+
const flag = (on) => on ? "" : void 0;
|
|
5
|
+
const withClassName = (bag, className) => className === void 0 ? bag : {
|
|
6
|
+
...bag,
|
|
7
|
+
className
|
|
8
|
+
};
|
|
9
|
+
/** Toggle prop bag: the slot anchor plus the `data-variant`/`data-size`/`data-icon-only`/`data-pressed`/`data-disabled` state. */
|
|
10
|
+
function rootProps({ variant = "ghost", size = "md", iconOnly, pressed, disabled, className } = {}) {
|
|
11
|
+
return withClassName({
|
|
12
|
+
"data-slot": TOGGLE_SLOTS.root,
|
|
13
|
+
"data-variant": variant,
|
|
14
|
+
"data-size": size,
|
|
15
|
+
"data-icon-only": iconOnly ? "true" : void 0,
|
|
16
|
+
"data-pressed": flag(pressed),
|
|
17
|
+
"data-disabled": flag(disabled)
|
|
18
|
+
}, className);
|
|
19
|
+
}
|
|
20
|
+
/** Group prop bag: the slot anchor plus the `data-variant`/`data-size` its descendant toggles read. */
|
|
21
|
+
function groupProps({ variant = "ghost", size = "md", className } = {}) {
|
|
22
|
+
return withClassName({
|
|
23
|
+
"data-slot": TOGGLE_SLOTS.group,
|
|
24
|
+
"data-variant": variant,
|
|
25
|
+
"data-size": size
|
|
26
|
+
}, className);
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { groupProps, rootProps };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/components/toggle/toggle.slots.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The data attributes `Toggle` (and the Base UI toggle/toggle-group it renders) expose for host-side
|
|
4
|
+
* styling and tests. Slot values mark each rendered element; the state attributes are emitted by Base
|
|
5
|
+
* UI — pair a slot with a state to target, say, only the pressed toggle.
|
|
6
|
+
*/
|
|
7
|
+
declare enum ToggleDataAttributes {
|
|
8
|
+
/** The rendered toggle (or group) element. */
|
|
9
|
+
slot = "data-slot",
|
|
10
|
+
/** The visual emphasis — `ghost` (transparent) | `primary` (primary-filled pressed) | `outline` (bordered). */
|
|
11
|
+
variant = "data-variant",
|
|
12
|
+
/** The size scale — `xs` | `sm` | `md` | `lg`; the generated layer keys the per-size internals off it. */
|
|
13
|
+
size = "data-size",
|
|
14
|
+
/** Present on a pressed (on) toggle. */
|
|
15
|
+
pressed = "data-pressed",
|
|
16
|
+
/** Present on a disabled toggle or group. */
|
|
17
|
+
disabled = "data-disabled",
|
|
18
|
+
/** Present on a group drawing the recessed segmented/connected track. */
|
|
19
|
+
attached = "data-attached",
|
|
20
|
+
/** Present on a group that allows several toggles pressed at once. */
|
|
21
|
+
multiple = "data-multiple",
|
|
22
|
+
/** `horizontal` | `vertical` — the group's orientation. */
|
|
23
|
+
orientation = "data-orientation"
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ToggleDataAttributes };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/components/toggle/toggle.slots.ts
|
|
2
|
+
/**
|
|
3
|
+
* The slot vocabulary every `Toggle` part stamps as its `data-slot`. The authored source the
|
|
4
|
+
* orchestration file reads from, kebab-cased `{component}[-{part}]` under the `noctis-` prefix;
|
|
5
|
+
* SLOTS.md still generates from the token-graph declarations.
|
|
6
|
+
*/
|
|
7
|
+
const TOGGLE_SLOTS = {
|
|
8
|
+
root: "noctis-toggle",
|
|
9
|
+
group: "noctis-toggle-group"
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The data attributes `Toggle` (and the Base UI toggle/toggle-group it renders) expose for host-side
|
|
13
|
+
* styling and tests. Slot values mark each rendered element; the state attributes are emitted by Base
|
|
14
|
+
* UI — pair a slot with a state to target, say, only the pressed toggle.
|
|
15
|
+
*/
|
|
16
|
+
let ToggleDataAttributes = /* @__PURE__ */ function(ToggleDataAttributes) {
|
|
17
|
+
/** The rendered toggle (or group) element. */
|
|
18
|
+
ToggleDataAttributes["slot"] = "data-slot";
|
|
19
|
+
/** The visual emphasis — `ghost` (transparent) | `primary` (primary-filled pressed) | `outline` (bordered). */
|
|
20
|
+
ToggleDataAttributes["variant"] = "data-variant";
|
|
21
|
+
/** The size scale — `xs` | `sm` | `md` | `lg`; the generated layer keys the per-size internals off it. */
|
|
22
|
+
ToggleDataAttributes["size"] = "data-size";
|
|
23
|
+
/** Present on a pressed (on) toggle. */
|
|
24
|
+
ToggleDataAttributes["pressed"] = "data-pressed";
|
|
25
|
+
/** Present on a disabled toggle or group. */
|
|
26
|
+
ToggleDataAttributes["disabled"] = "data-disabled";
|
|
27
|
+
/** Present on a group drawing the recessed segmented/connected track. */
|
|
28
|
+
ToggleDataAttributes["attached"] = "data-attached";
|
|
29
|
+
/** Present on a group that allows several toggles pressed at once. */
|
|
30
|
+
ToggleDataAttributes["multiple"] = "data-multiple";
|
|
31
|
+
/** `horizontal` | `vertical` — the group's orientation. */
|
|
32
|
+
ToggleDataAttributes["orientation"] = "data-orientation";
|
|
33
|
+
return ToggleDataAttributes;
|
|
34
|
+
}({});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { TOGGLE_SLOTS, ToggleDataAttributes };
|