@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,22 @@
|
|
|
1
|
+
//#region src/components/context-menu/context-menu.props.d.ts
|
|
2
|
+
/** A spreadable data-attribute prop bag — the shape every `ContextMenu.*.props()` returns. */
|
|
3
|
+
type ContextMenuPartProps = {
|
|
4
|
+
/** The slot value the matching `context-menu.css` rules anchor on. */"data-slot": string; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
|
|
5
|
+
className?: string; /** A data-attribute present (empty string) or absent (`undefined`); never `false`. */
|
|
6
|
+
[attr: `data-${string}`]: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
/** Common shape: every part's `.props()` accepts an optional `className` passthrough. */
|
|
9
|
+
interface ContextMenuPropsArgs {
|
|
10
|
+
/** Forwarded verbatim onto the returned prop bag. */
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Trigger prop bag: just the slot anchor (the area that opens the menu on right-click / long-press). */
|
|
14
|
+
declare function triggerProps({
|
|
15
|
+
className
|
|
16
|
+
}?: ContextMenuPropsArgs): ContextMenuPartProps;
|
|
17
|
+
/** Content prop bag: just the slot anchor (the popup surface paint is owned by the composed Surface). */
|
|
18
|
+
declare function contentProps({
|
|
19
|
+
className
|
|
20
|
+
}?: ContextMenuPropsArgs): ContextMenuPartProps;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { ContextMenuPartProps, contentProps, triggerProps };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CONTEXT_MENU_SLOTS } from "./context-menu.slots.js";
|
|
2
|
+
//#region src/components/context-menu/context-menu.props.ts
|
|
3
|
+
/**
|
|
4
|
+
* The D12 unified variant contract for ContextMenu — a per-part set of `props(...)` builders that each
|
|
5
|
+
* return a **spreadable props object** of the form `{ "data-slot": "noctis-context-menu-<part>",
|
|
6
|
+
* ...dataAttrs }`, derived from the part's inputs.
|
|
7
|
+
*
|
|
8
|
+
* Under the single-`data-slot` anchor model the `data-slot` is the only styling hook needed —
|
|
9
|
+
* `context-menu.css` keys every rule off it — so spreading a part's `props()` onto a *foreign* element
|
|
10
|
+
* styles it as that part:
|
|
11
|
+
*
|
|
12
|
+
* <div {...ContextMenu.Trigger.props()}>Right-click me</div>
|
|
13
|
+
* // → <div data-slot="noctis-context-menu-trigger">
|
|
14
|
+
*
|
|
15
|
+
* The escape hatch carries no className (styling is attribute-driven); an optional `className`
|
|
16
|
+
* passthrough is accepted and forwarded verbatim. The shared row family (items, groups, separators)
|
|
17
|
+
* reuses `Menu`'s `props()` helpers — there is no second copy here.
|
|
18
|
+
*/
|
|
19
|
+
const withClassName = (bag, className) => className === void 0 ? bag : {
|
|
20
|
+
...bag,
|
|
21
|
+
className
|
|
22
|
+
};
|
|
23
|
+
/** Trigger prop bag: just the slot anchor (the area that opens the menu on right-click / long-press). */
|
|
24
|
+
function triggerProps({ className } = {}) {
|
|
25
|
+
return withClassName({ "data-slot": CONTEXT_MENU_SLOTS.trigger }, className);
|
|
26
|
+
}
|
|
27
|
+
/** Content prop bag: just the slot anchor (the popup surface paint is owned by the composed Surface). */
|
|
28
|
+
function contentProps({ className } = {}) {
|
|
29
|
+
return withClassName({ "data-slot": CONTEXT_MENU_SLOTS.content }, className);
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { contentProps, triggerProps };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/components/context-menu/context-menu.slots.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The `data-*` hooks `ContextMenu` stamps on its parts, for host-side styling and tests. Slot values
|
|
4
|
+
* mark each rendered element; the state attributes are emitted by Base UI's ContextMenu — pair a slot
|
|
5
|
+
* with a state to target, say, the trigger only while its menu is open.
|
|
6
|
+
*/
|
|
7
|
+
declare enum ContextMenuDataAttributes {
|
|
8
|
+
/** The trigger area element. */
|
|
9
|
+
trigger = "data-slot",
|
|
10
|
+
/** Present on the trigger while a touch long-press is registering — paints the neutral pressed tint. */
|
|
11
|
+
pressed = "data-pressed",
|
|
12
|
+
/** Present on the trigger while its menu is open — the off-by-default "armed" tint hook. */
|
|
13
|
+
popupOpen = "data-popup-open",
|
|
14
|
+
/** The side of the anchor the content actually rendered on (`bottom`, `inline-end`, …). */
|
|
15
|
+
side = "data-side",
|
|
16
|
+
/** Present on the content for the first frame after mount — the transition's start state. */
|
|
17
|
+
startingStyle = "data-starting-style",
|
|
18
|
+
/** Present on the content while it transitions out before unmounting. */
|
|
19
|
+
endingStyle = "data-ending-style",
|
|
20
|
+
/** Present on the content when the change should not animate (keyboard open, dismissal). */
|
|
21
|
+
instant = "data-instant"
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { ContextMenuDataAttributes };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/components/context-menu/context-menu.slots.ts
|
|
2
|
+
/**
|
|
3
|
+
* The slot vocabulary every `ContextMenu` part stamps as its `data-slot`. The authored source the
|
|
4
|
+
* orchestration file reads from, prefixed `noctis-context-menu-{part}` (the precompiled
|
|
5
|
+
* `context-menu.css` keys its rules off these anchors); SLOTS.md still generates from the token-graph
|
|
6
|
+
* declarations.
|
|
7
|
+
*
|
|
8
|
+
* Only the right-click-specific parts live here — the trigger area and the floating popup
|
|
9
|
+
* (positioner / content / viewport). The row family (items, groups, separators, shortcuts) is
|
|
10
|
+
* `Menu`'s, reused verbatim, so those parts carry their own `noctis-menu-*` slots and `menu.css`
|
|
11
|
+
* styles them. `positioner` is a styling-only anchor (the z-index wrapper) and carries no token mint.
|
|
12
|
+
*/
|
|
13
|
+
const CONTEXT_MENU_SLOTS = {
|
|
14
|
+
trigger: "noctis-context-menu-trigger",
|
|
15
|
+
positioner: "noctis-context-menu-positioner",
|
|
16
|
+
content: "noctis-context-menu-content",
|
|
17
|
+
viewport: "noctis-context-menu-viewport"
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* The `data-*` hooks `ContextMenu` stamps on its parts, for host-side styling and tests. Slot values
|
|
21
|
+
* mark each rendered element; the state attributes are emitted by Base UI's ContextMenu — pair a slot
|
|
22
|
+
* with a state to target, say, the trigger only while its menu is open.
|
|
23
|
+
*/
|
|
24
|
+
let ContextMenuDataAttributes = /* @__PURE__ */ function(ContextMenuDataAttributes) {
|
|
25
|
+
/** The trigger area element. */
|
|
26
|
+
ContextMenuDataAttributes["trigger"] = "data-slot";
|
|
27
|
+
/** Present on the trigger while a touch long-press is registering — paints the neutral pressed tint. */
|
|
28
|
+
ContextMenuDataAttributes["pressed"] = "data-pressed";
|
|
29
|
+
/** Present on the trigger while its menu is open — the off-by-default "armed" tint hook. */
|
|
30
|
+
ContextMenuDataAttributes["popupOpen"] = "data-popup-open";
|
|
31
|
+
/** The side of the anchor the content actually rendered on (`bottom`, `inline-end`, …). */
|
|
32
|
+
ContextMenuDataAttributes["side"] = "data-side";
|
|
33
|
+
/** Present on the content for the first frame after mount — the transition's start state. */
|
|
34
|
+
ContextMenuDataAttributes["startingStyle"] = "data-starting-style";
|
|
35
|
+
/** Present on the content while it transitions out before unmounting. */
|
|
36
|
+
ContextMenuDataAttributes["endingStyle"] = "data-ending-style";
|
|
37
|
+
/** Present on the content when the change should not animate (keyboard open, dismissal). */
|
|
38
|
+
ContextMenuDataAttributes["instant"] = "data-instant";
|
|
39
|
+
return ContextMenuDataAttributes;
|
|
40
|
+
}({});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { CONTEXT_MENU_SLOTS, ContextMenuDataAttributes };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Button } from "../button/button.js";
|
|
2
|
+
import { CopyButtonPartProps, CopyButtonRootPropsArgs, rootProps } from "./copy-button.props.js";
|
|
3
|
+
import { ReactElement } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/copy-button/copy-button.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* A clipboard {@link Button} on steroids. It owns the copy behaviour — a glyph that crossfades from
|
|
8
|
+
* clipboard to a check on success, a `data-copied` hook, and a state-aware `aria-label` from the labels
|
|
9
|
+
* (English defaults, so a consuming app can route them through its own i18n) — and is otherwise a plain
|
|
10
|
+
* Noctis `Button`. It sets no opinionated `variant`/`size`/`iconOnly`, so it drops into any context: a
|
|
11
|
+
* ghost icon in a code block, a `secondary` "Copy link" with a visible label, a primary action.
|
|
12
|
+
* `getText` is resolved at click time so it can read live DOM; everything else forwards to `Button`.
|
|
13
|
+
*
|
|
14
|
+
* Styling is precompiled in `copy-button.css`, keyed off the prefixed `data-slot` anchors
|
|
15
|
+
* (`noctis-code-copy*`) plus the per-glyph `data-glyph`/`data-copied` the crossfade rules read; the
|
|
16
|
+
* control chrome is the wrapped `Button`'s. The icon-only code affordance reads the `code-copy` size
|
|
17
|
+
* internal so it aligns with the code tab strip (the cross-component coupling that used to live in
|
|
18
|
+
* `code-block`), while a non-icon CopyButton stays unsized.
|
|
19
|
+
*
|
|
20
|
+
* @see {@link CopyButton.Props}
|
|
21
|
+
*/
|
|
22
|
+
declare function CopyButtonImpl({
|
|
23
|
+
getText,
|
|
24
|
+
copyLabel,
|
|
25
|
+
copiedLabel,
|
|
26
|
+
children,
|
|
27
|
+
...props
|
|
28
|
+
}: CopyButton.Props): ReactElement;
|
|
29
|
+
/**
|
|
30
|
+
* The clipboard copy affordance. The component value carries the D12 `props()` escape hatch via
|
|
31
|
+
* `Object.assign`: spread `CopyButton.props({ copied })` onto an element a `<CopyButton>` can't render to
|
|
32
|
+
* stamp the `noctis-code-copy` slot + `data-copied` state the precompiled `copy-button.css` keys off (pair
|
|
33
|
+
* with `Button.props(...)` for the control chrome). It returns a spreadable `{ "data-slot":
|
|
34
|
+
* "noctis-code-copy", ...dataAttrs }` bag — the data-attribute-native escape hatch.
|
|
35
|
+
*/
|
|
36
|
+
declare const CopyButton: typeof CopyButtonImpl & {
|
|
37
|
+
props: typeof rootProps;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Per-part prop types. Types-only — it emits no runtime code and merges with the `CopyButton` value
|
|
41
|
+
* above, so `CopyButton` is the component value while `CopyButton.Props` is its prop type and
|
|
42
|
+
* `CopyButton.props` is the escape-hatch helper.
|
|
43
|
+
*/
|
|
44
|
+
declare namespace CopyButton {
|
|
45
|
+
type Props = Omit<Button.Props, "onClick" | "aria-label" | "title"> & {
|
|
46
|
+
/** Resolved at click time so it can read live DOM (the active panel's text). */getText: () => string; /** Accessible label at rest. Defaults to `Copy`; override to translate. */
|
|
47
|
+
copyLabel?: string; /** Accessible label just after copying. Defaults to `Copied`; override to translate. */
|
|
48
|
+
copiedLabel?: string;
|
|
49
|
+
};
|
|
50
|
+
/** Argument to the `CopyButton.props(...)` escape-hatch helper. */
|
|
51
|
+
type PropsArgs = CopyButtonRootPropsArgs;
|
|
52
|
+
/** The spreadable data-attribute prop bag `CopyButton.props()` returns (D12). */
|
|
53
|
+
type PartProps = CopyButtonPartProps;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { CopyButton };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Button } from "../button/button.js";
|
|
3
|
+
import { useCopy } from "../../core/use-copy.js";
|
|
4
|
+
import { COPY_BUTTON_SLOTS } from "./copy-button.slots.js";
|
|
5
|
+
import { glyphBoxProps, glyphProps, rootProps } from "./copy-button.props.js";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/copy-button/copy-button.tsx
|
|
8
|
+
/**
|
|
9
|
+
* A clipboard {@link Button} on steroids. It owns the copy behaviour — a glyph that crossfades from
|
|
10
|
+
* clipboard to a check on success, a `data-copied` hook, and a state-aware `aria-label` from the labels
|
|
11
|
+
* (English defaults, so a consuming app can route them through its own i18n) — and is otherwise a plain
|
|
12
|
+
* Noctis `Button`. It sets no opinionated `variant`/`size`/`iconOnly`, so it drops into any context: a
|
|
13
|
+
* ghost icon in a code block, a `secondary` "Copy link" with a visible label, a primary action.
|
|
14
|
+
* `getText` is resolved at click time so it can read live DOM; everything else forwards to `Button`.
|
|
15
|
+
*
|
|
16
|
+
* Styling is precompiled in `copy-button.css`, keyed off the prefixed `data-slot` anchors
|
|
17
|
+
* (`noctis-code-copy*`) plus the per-glyph `data-glyph`/`data-copied` the crossfade rules read; the
|
|
18
|
+
* control chrome is the wrapped `Button`'s. The icon-only code affordance reads the `code-copy` size
|
|
19
|
+
* internal so it aligns with the code tab strip (the cross-component coupling that used to live in
|
|
20
|
+
* `code-block`), while a non-icon CopyButton stays unsized.
|
|
21
|
+
*
|
|
22
|
+
* @see {@link CopyButton.Props}
|
|
23
|
+
*/
|
|
24
|
+
function CopyButtonImpl({ getText, copyLabel = "Copy", copiedLabel = "Copied", children, ...props }) {
|
|
25
|
+
const { copied, copy } = useCopy(getText);
|
|
26
|
+
const label = copied ? copiedLabel : copyLabel;
|
|
27
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
28
|
+
...props,
|
|
29
|
+
"data-slot": COPY_BUTTON_SLOTS.root,
|
|
30
|
+
"data-copied": copied || void 0,
|
|
31
|
+
onClick: copy,
|
|
32
|
+
"aria-label": label,
|
|
33
|
+
title: label,
|
|
34
|
+
children: [/* @__PURE__ */ jsx(CopyCheckGlyph, { copied }), children]
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Two stacked glyphs in one box that crossfade on `copied` — clipboard at rest, a check after. Each glyph
|
|
39
|
+
* is self-contained: it carries its own `data-glyph` (clipboard|check) **and** `data-copied`, so the
|
|
40
|
+
* crossfade rules in `copy-button.css` key off the glyph's own attributes, never a descendant
|
|
41
|
+
* `[data-copied] …` selector. Sized on the `sm` icon step via the `--_code-copy-glyph-size` internal.
|
|
42
|
+
*/
|
|
43
|
+
function CopyCheckGlyph({ copied }) {
|
|
44
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
45
|
+
...glyphBoxProps(),
|
|
46
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
47
|
+
viewBox: "0 0 24 24",
|
|
48
|
+
fill: "none",
|
|
49
|
+
stroke: "currentColor",
|
|
50
|
+
strokeWidth: "1.7",
|
|
51
|
+
"aria-hidden": true,
|
|
52
|
+
...glyphProps({
|
|
53
|
+
glyph: "clipboard",
|
|
54
|
+
copied
|
|
55
|
+
}),
|
|
56
|
+
children: [/* @__PURE__ */ jsx("rect", {
|
|
57
|
+
x: "9",
|
|
58
|
+
y: "9",
|
|
59
|
+
width: "13",
|
|
60
|
+
height: "13",
|
|
61
|
+
rx: "2"
|
|
62
|
+
}), /* @__PURE__ */ jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })]
|
|
63
|
+
}), /* @__PURE__ */ jsx("svg", {
|
|
64
|
+
viewBox: "0 0 24 24",
|
|
65
|
+
fill: "none",
|
|
66
|
+
stroke: "currentColor",
|
|
67
|
+
strokeWidth: "2",
|
|
68
|
+
strokeLinecap: "round",
|
|
69
|
+
strokeLinejoin: "round",
|
|
70
|
+
"aria-hidden": true,
|
|
71
|
+
...glyphProps({
|
|
72
|
+
glyph: "check",
|
|
73
|
+
copied
|
|
74
|
+
}),
|
|
75
|
+
children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" })
|
|
76
|
+
})]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The clipboard copy affordance. The component value carries the D12 `props()` escape hatch via
|
|
81
|
+
* `Object.assign`: spread `CopyButton.props({ copied })` onto an element a `<CopyButton>` can't render to
|
|
82
|
+
* stamp the `noctis-code-copy` slot + `data-copied` state the precompiled `copy-button.css` keys off (pair
|
|
83
|
+
* with `Button.props(...)` for the control chrome). It returns a spreadable `{ "data-slot":
|
|
84
|
+
* "noctis-code-copy", ...dataAttrs }` bag — the data-attribute-native escape hatch.
|
|
85
|
+
*/
|
|
86
|
+
const CopyButton = Object.assign(CopyButtonImpl, { props: rootProps });
|
|
87
|
+
//#endregion
|
|
88
|
+
export { CopyButton };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/components/copy-button/copy-button.props.d.ts
|
|
2
|
+
/** A spreadable data-attribute prop bag — the shape every `CopyButton.*.props()` returns. */
|
|
3
|
+
type CopyButtonPartProps = {
|
|
4
|
+
/** The slot value the matching `copy-button.css` rules anchor on. */"data-slot": string; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
|
|
5
|
+
className?: string; /** A data-attribute present (string) or absent (`undefined`); never `false`. */
|
|
6
|
+
[attr: `data-${string}`]: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
/** Common shape: every part's `.props()` accepts an optional `className` passthrough. */
|
|
9
|
+
interface BasePropsArgs {
|
|
10
|
+
/** Forwarded verbatim onto the returned prop bag. */
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Argument to the root `props(...)` — the post-copy state the affordance carries. */
|
|
14
|
+
interface CopyButtonRootPropsArgs extends BasePropsArgs {
|
|
15
|
+
/** Present for the brief window after a successful copy, while the glyph shows the check. */
|
|
16
|
+
copied?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Root prop bag: the `noctis-code-copy` slot anchor plus the `data-copied` state. The escape hatch for an
|
|
20
|
+
* element a `<CopyButton>` can't render — pair with `Button.props(...)` for the control chrome.
|
|
21
|
+
*/
|
|
22
|
+
declare function rootProps({
|
|
23
|
+
copied,
|
|
24
|
+
className
|
|
25
|
+
}?: CopyButtonRootPropsArgs): CopyButtonPartProps;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { CopyButtonPartProps, CopyButtonRootPropsArgs, rootProps };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { COPY_BUTTON_SLOTS } from "./copy-button.slots.js";
|
|
2
|
+
//#region src/components/copy-button/copy-button.props.ts
|
|
3
|
+
/**
|
|
4
|
+
* The D12 unified variant contract for CopyButton — a per-part set of `props(...)` builders that each
|
|
5
|
+
* return a **spreadable props object** of the form `{ "data-slot": "noctis-code-copy<part>", ...dataAttrs }`,
|
|
6
|
+
* derived from the part's state inputs.
|
|
7
|
+
*
|
|
8
|
+
* Under the single-`data-slot` anchor model the `data-slot` is the only styling hook needed —
|
|
9
|
+
* `copy-button.css` keys every rule off it (plus the per-glyph `data-glyph`/`data-copied`) — so spreading
|
|
10
|
+
* a part's `props()` onto a *foreign* element styles it as that part:
|
|
11
|
+
*
|
|
12
|
+
* <span {...CopyButton.Glyph.props({ glyph: "check", copied: true })} />
|
|
13
|
+
* // → <span data-slot="noctis-code-copy-glyph" data-glyph="check" data-copied="true">
|
|
14
|
+
*
|
|
15
|
+
* The escape hatch carries no className (styling is attribute-driven); an optional `className`
|
|
16
|
+
* passthrough is accepted and forwarded verbatim. The same slot→attribute mapping is emitted as data from
|
|
17
|
+
* the token graph (`generated/declarations.json`) so non-React / agent consumers can hand-write the markup
|
|
18
|
+
* from the docs.
|
|
19
|
+
*/
|
|
20
|
+
const withClassName = (bag, className) => className === void 0 ? bag : {
|
|
21
|
+
...bag,
|
|
22
|
+
className
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Root prop bag: the `noctis-code-copy` slot anchor plus the `data-copied` state. The escape hatch for an
|
|
26
|
+
* element a `<CopyButton>` can't render — pair with `Button.props(...)` for the control chrome.
|
|
27
|
+
*/
|
|
28
|
+
function rootProps({ copied, className } = {}) {
|
|
29
|
+
return withClassName({
|
|
30
|
+
"data-slot": COPY_BUTTON_SLOTS.root,
|
|
31
|
+
"data-copied": copied ? "true" : void 0
|
|
32
|
+
}, className);
|
|
33
|
+
}
|
|
34
|
+
/** Glyph-box prop bag: just the slot anchor (the stacked-glyph box; size flows from the `--_code-copy-glyph-size` internal). */
|
|
35
|
+
function glyphBoxProps({ className } = {}) {
|
|
36
|
+
return withClassName({ "data-slot": COPY_BUTTON_SLOTS.glyphBox }, className);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Glyph prop bag: the slot anchor plus the per-glyph `data-glyph` and `data-copied`. Both are stamped on
|
|
40
|
+
* the glyph itself so the crossfade rule keys off the glyph's own attributes — never a descendant
|
|
41
|
+
* `[data-copied] …` selector (the over-scoping that bit search-dialog/code-block).
|
|
42
|
+
*/
|
|
43
|
+
function glyphProps({ glyph, copied, className }) {
|
|
44
|
+
return withClassName({
|
|
45
|
+
"data-slot": COPY_BUTTON_SLOTS.glyph,
|
|
46
|
+
"data-glyph": glyph,
|
|
47
|
+
"data-copied": copied ? "true" : void 0
|
|
48
|
+
}, className);
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { glyphBoxProps, glyphProps, rootProps };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/components/copy-button/copy-button.slots.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The data attributes `CopyButton` (and the `Button` it renders) expose for styling and testing. Each
|
|
4
|
+
* member's value is the attribute name and its JSDoc is the description; the docs API reference reads
|
|
5
|
+
* this enum directly, so the documented attributes can't drift from the component.
|
|
6
|
+
*/
|
|
7
|
+
declare enum CopyButtonDataAttributes {
|
|
8
|
+
/** Marks the rendered element as the copy affordance for styling and testing hooks. */
|
|
9
|
+
slot = "data-slot",
|
|
10
|
+
/**
|
|
11
|
+
* Present for the brief window after a successful copy, while the glyph shows the check. Stamped on
|
|
12
|
+
* the root (a test/host hook) **and** on each glyph (self-contained — the crossfade rules key off the
|
|
13
|
+
* glyph's own `data-copied`, never a descendant `[data-copied] …` selector).
|
|
14
|
+
*/
|
|
15
|
+
copied = "data-copied",
|
|
16
|
+
/** Which glyph a `code-copy-glyph` element paints — `clipboard` (at rest) or `check` (after copy). */
|
|
17
|
+
glyph = "data-glyph"
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { CopyButtonDataAttributes };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/components/copy-button/copy-button.slots.ts
|
|
2
|
+
/**
|
|
3
|
+
* The slot vocabulary `CopyButton` stamps as its `data-slot`. The authored source the orchestration
|
|
4
|
+
* file reads from, kebab-cased `{component}-{part}`; SLOTS.md still generates from the token-graph
|
|
5
|
+
* declarations (which carry only the `code-copy` root anatomy — the glyph box/glyphs are precompiled
|
|
6
|
+
* descendants of the root, keyed off their own slot + `data-glyph`/`data-copied`, not graph anatomy).
|
|
7
|
+
*
|
|
8
|
+
* Migrated to the single-`data-slot` anchor: every value is `noctis-`-prefixed (matching the
|
|
9
|
+
* `slotPrefix: "noctis"` on the `code-copy` graph declaration), so the precompiled `copy-button.css`
|
|
10
|
+
* targets `[data-slot="noctis-code-copy*"]`.
|
|
11
|
+
*/
|
|
12
|
+
const COPY_BUTTON_SLOTS = {
|
|
13
|
+
root: "noctis-code-copy",
|
|
14
|
+
glyphBox: "noctis-code-copy-glyph-box",
|
|
15
|
+
glyph: "noctis-code-copy-glyph"
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The data attributes `CopyButton` (and the `Button` it renders) expose for styling and testing. Each
|
|
19
|
+
* member's value is the attribute name and its JSDoc is the description; the docs API reference reads
|
|
20
|
+
* this enum directly, so the documented attributes can't drift from the component.
|
|
21
|
+
*/
|
|
22
|
+
let CopyButtonDataAttributes = /* @__PURE__ */ function(CopyButtonDataAttributes) {
|
|
23
|
+
/** Marks the rendered element as the copy affordance for styling and testing hooks. */
|
|
24
|
+
CopyButtonDataAttributes["slot"] = "data-slot";
|
|
25
|
+
/**
|
|
26
|
+
* Present for the brief window after a successful copy, while the glyph shows the check. Stamped on
|
|
27
|
+
* the root (a test/host hook) **and** on each glyph (self-contained — the crossfade rules key off the
|
|
28
|
+
* glyph's own `data-copied`, never a descendant `[data-copied] …` selector).
|
|
29
|
+
*/
|
|
30
|
+
CopyButtonDataAttributes["copied"] = "data-copied";
|
|
31
|
+
/** Which glyph a `code-copy-glyph` element paints — `clipboard` (at rest) or `check` (after copy). */
|
|
32
|
+
CopyButtonDataAttributes["glyph"] = "data-glyph";
|
|
33
|
+
return CopyButtonDataAttributes;
|
|
34
|
+
}({});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { COPY_BUTTON_SLOTS, CopyButtonDataAttributes };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, use } from "react";
|
|
3
|
+
//#region src/components/dialog/dialog.context.ts
|
|
4
|
+
const DialogContext = createContext(null);
|
|
5
|
+
const DialogProvider = DialogContext.Provider;
|
|
6
|
+
/**
|
|
7
|
+
* Read the enclosing `Dialog.Content`'s shared config, or `null` when the parts are composed directly
|
|
8
|
+
* (a granular `Portal` + `Popup` without `Content`). A part outside a `Content` is valid, so this
|
|
9
|
+
* returns `null` rather than throwing — the reader falls back to its own defaults.
|
|
10
|
+
*/
|
|
11
|
+
function useDialogContext() {
|
|
12
|
+
return use(DialogContext);
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { DialogProvider, useDialogContext };
|