@hanzo/ui 8.27.91 → 8.29.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/NOTICE +25 -0
- package/README.md +1 -1
- package/dist/backends/gui/alert-dialog.cjs +24 -6
- package/dist/backends/gui/alert-dialog.d.ts +11 -3
- package/dist/backends/gui/alert-dialog.d.ts.map +1 -1
- package/dist/backends/gui/alert-dialog.js +24 -6
- package/dist/backends/gui/alert-dialog.js.map +1 -1
- package/dist/backends/gui/alert.cjs +32 -1
- package/dist/backends/gui/alert.d.ts +36 -3
- package/dist/backends/gui/alert.d.ts.map +1 -1
- package/dist/backends/gui/alert.js +32 -2
- package/dist/backends/gui/alert.js.map +1 -1
- package/dist/backends/gui/avatar-group.cjs +28 -0
- package/dist/backends/gui/avatar-group.d.ts +33 -0
- package/dist/backends/gui/avatar-group.d.ts.map +1 -0
- package/dist/backends/gui/avatar-group.js +26 -0
- package/dist/backends/gui/avatar-group.js.map +1 -0
- package/dist/backends/gui/avatar.cjs +53 -3
- package/dist/backends/gui/avatar.d.ts +46 -4
- package/dist/backends/gui/avatar.d.ts.map +1 -1
- package/dist/backends/gui/avatar.js +52 -3
- package/dist/backends/gui/avatar.js.map +1 -1
- package/dist/backends/gui/badge.cjs +40 -2
- package/dist/backends/gui/badge.d.ts +7 -2
- package/dist/backends/gui/badge.d.ts.map +1 -1
- package/dist/backends/gui/badge.js +40 -2
- package/dist/backends/gui/badge.js.map +1 -1
- package/dist/backends/gui/banner.cjs +40 -1
- package/dist/backends/gui/banner.d.ts +36 -3
- package/dist/backends/gui/banner.d.ts.map +1 -1
- package/dist/backends/gui/banner.js +42 -4
- package/dist/backends/gui/banner.js.map +1 -1
- package/dist/backends/gui/breadcrumb.cjs +28 -10
- package/dist/backends/gui/breadcrumb.d.ts +20 -11
- package/dist/backends/gui/breadcrumb.d.ts.map +1 -1
- package/dist/backends/gui/breadcrumb.js +28 -10
- package/dist/backends/gui/breadcrumb.js.map +1 -1
- package/dist/backends/gui/button-group.cjs +43 -0
- package/dist/backends/gui/button-group.d.ts +48 -0
- package/dist/backends/gui/button-group.d.ts.map +1 -0
- package/dist/backends/gui/button-group.js +40 -0
- package/dist/backends/gui/button-group.js.map +1 -0
- package/dist/backends/gui/button.cjs +177 -4
- package/dist/backends/gui/button.d.ts +69 -4
- package/dist/backends/gui/button.d.ts.map +1 -1
- package/dist/backends/gui/button.js +179 -6
- package/dist/backends/gui/button.js.map +1 -1
- package/dist/backends/gui/card.cjs +50 -21
- package/dist/backends/gui/card.d.ts +16 -7
- package/dist/backends/gui/card.d.ts.map +1 -1
- package/dist/backends/gui/card.js +50 -21
- package/dist/backends/gui/card.js.map +1 -1
- package/dist/backends/gui/checkbox.cjs +86 -14
- package/dist/backends/gui/checkbox.d.ts +30 -2
- package/dist/backends/gui/checkbox.d.ts.map +1 -1
- package/dist/backends/gui/checkbox.js +87 -15
- package/dist/backends/gui/checkbox.js.map +1 -1
- package/dist/backends/gui/chip.cjs +51 -0
- package/dist/backends/gui/chip.d.ts +47 -0
- package/dist/backends/gui/chip.d.ts.map +1 -0
- package/dist/backends/gui/chip.js +49 -0
- package/dist/backends/gui/chip.js.map +1 -0
- package/dist/backends/gui/choice.cjs +18 -3
- package/dist/backends/gui/choice.d.ts +10 -2
- package/dist/backends/gui/choice.d.ts.map +1 -1
- package/dist/backends/gui/choice.js +19 -4
- package/dist/backends/gui/choice.js.map +1 -1
- package/dist/backends/gui/code-editor.cjs +16 -5
- package/dist/backends/gui/code-editor.d.ts +18 -1
- package/dist/backends/gui/code-editor.d.ts.map +1 -1
- package/dist/backends/gui/code-editor.js +16 -5
- package/dist/backends/gui/code-editor.js.map +1 -1
- package/dist/backends/gui/color-sample.cjs +24 -0
- package/dist/backends/gui/color-sample.d.ts +23 -0
- package/dist/backends/gui/color-sample.d.ts.map +1 -0
- package/dist/backends/gui/color-sample.js +22 -0
- package/dist/backends/gui/color-sample.js.map +1 -0
- package/dist/backends/gui/control.cjs +5 -3
- package/dist/backends/gui/control.d.ts +13 -3
- package/dist/backends/gui/control.d.ts.map +1 -1
- package/dist/backends/gui/control.js +5 -3
- package/dist/backends/gui/control.js.map +1 -1
- package/dist/backends/gui/country-select.cjs +69 -0
- package/dist/backends/gui/country-select.d.ts +30 -0
- package/dist/backends/gui/country-select.d.ts.map +1 -0
- package/dist/backends/gui/country-select.js +67 -0
- package/dist/backends/gui/country-select.js.map +1 -0
- package/dist/backends/gui/currency-picker.cjs +48 -0
- package/dist/backends/gui/currency-picker.d.ts +37 -0
- package/dist/backends/gui/currency-picker.d.ts.map +1 -0
- package/dist/backends/gui/currency-picker.js +46 -0
- package/dist/backends/gui/currency-picker.js.map +1 -0
- package/dist/backends/gui/density.cjs +32 -0
- package/dist/backends/gui/density.d.ts +27 -0
- package/dist/backends/gui/density.d.ts.map +1 -0
- package/dist/backends/gui/density.js +27 -0
- package/dist/backends/gui/density.js.map +1 -0
- package/dist/backends/gui/dialog.cjs +65 -7
- package/dist/backends/gui/dialog.d.ts +68 -3
- package/dist/backends/gui/dialog.d.ts.map +1 -1
- package/dist/backends/gui/dialog.js +63 -7
- package/dist/backends/gui/dialog.js.map +1 -1
- package/dist/backends/gui/dropdown-menu.cjs +361 -31
- package/dist/backends/gui/dropdown-menu.d.ts +151 -15
- package/dist/backends/gui/dropdown-menu.d.ts.map +1 -1
- package/dist/backends/gui/dropdown-menu.js +353 -34
- package/dist/backends/gui/dropdown-menu.js.map +1 -1
- package/dist/backends/gui/feedback.cjs +78 -0
- package/dist/backends/gui/feedback.d.ts +46 -0
- package/dist/backends/gui/feedback.d.ts.map +1 -0
- package/dist/backends/gui/feedback.js +74 -0
- package/dist/backends/gui/feedback.js.map +1 -0
- package/dist/backends/gui/field.cjs +71 -14
- package/dist/backends/gui/field.d.ts +43 -3
- package/dist/backends/gui/field.d.ts.map +1 -1
- package/dist/backends/gui/field.js +69 -14
- package/dist/backends/gui/field.js.map +1 -1
- package/dist/backends/gui/flag.cjs +17 -0
- package/dist/backends/gui/flag.d.ts +9 -0
- package/dist/backends/gui/flag.d.ts.map +1 -0
- package/dist/backends/gui/flag.js +14 -0
- package/dist/backends/gui/flag.js.map +1 -0
- package/dist/backends/gui/grip.cjs +35 -3
- package/dist/backends/gui/grip.d.ts +16 -1
- package/dist/backends/gui/grip.d.ts.map +1 -1
- package/dist/backends/gui/grip.js +35 -3
- package/dist/backends/gui/grip.js.map +1 -1
- package/dist/backends/gui/heading.cjs +27 -0
- package/dist/backends/gui/heading.d.ts +8 -0
- package/dist/backends/gui/heading.d.ts.map +1 -0
- package/dist/backends/gui/heading.js +25 -0
- package/dist/backends/gui/heading.js.map +1 -0
- package/dist/backends/gui/hue.cjs +49 -0
- package/dist/backends/gui/hue.d.ts +18 -0
- package/dist/backends/gui/hue.d.ts.map +1 -0
- package/dist/backends/gui/hue.js +43 -0
- package/dist/backends/gui/hue.js.map +1 -0
- package/dist/backends/gui/icon-picker.cjs +194 -0
- package/dist/backends/gui/icon-picker.d.ts +51 -0
- package/dist/backends/gui/icon-picker.d.ts.map +1 -0
- package/dist/backends/gui/icon-picker.js +155 -0
- package/dist/backends/gui/icon-picker.js.map +1 -0
- package/dist/backends/gui/icon-tile.cjs +36 -0
- package/dist/backends/gui/icon-tile.d.ts +26 -0
- package/dist/backends/gui/icon-tile.d.ts.map +1 -0
- package/dist/backends/gui/icon-tile.js +32 -0
- package/dist/backends/gui/icon-tile.js.map +1 -0
- package/dist/backends/gui/icons.cjs +381 -0
- package/dist/backends/gui/icons.d.ts +53 -0
- package/dist/backends/gui/icons.d.ts.map +1 -0
- package/dist/backends/gui/icons.js +377 -0
- package/dist/backends/gui/icons.js.map +1 -0
- package/dist/backends/gui/image-input.cjs +78 -0
- package/dist/backends/gui/image-input.d.ts +32 -0
- package/dist/backends/gui/image-input.d.ts.map +1 -0
- package/dist/backends/gui/image-input.js +74 -0
- package/dist/backends/gui/image-input.js.map +1 -0
- package/dist/backends/gui/index.cjs +105 -7
- package/dist/backends/gui/index.d.ts +47 -2
- package/dist/backends/gui/index.d.ts.map +1 -1
- package/dist/backends/gui/index.js +37 -1
- package/dist/backends/gui/index.js.map +1 -1
- package/dist/backends/gui/input-group.cjs +49 -0
- package/dist/backends/gui/input-group.d.ts +46 -0
- package/dist/backends/gui/input-group.d.ts.map +1 -0
- package/dist/backends/gui/input-group.js +46 -0
- package/dist/backends/gui/input-group.js.map +1 -0
- package/dist/backends/gui/input.cjs +32 -4
- package/dist/backends/gui/input.d.ts +5 -1
- package/dist/backends/gui/input.d.ts.map +1 -1
- package/dist/backends/gui/input.js +33 -5
- package/dist/backends/gui/input.js.map +1 -1
- package/dist/backends/gui/item.cjs +34 -2
- package/dist/backends/gui/item.d.ts +21 -5
- package/dist/backends/gui/item.d.ts.map +1 -1
- package/dist/backends/gui/item.js +35 -3
- package/dist/backends/gui/item.js.map +1 -1
- package/dist/backends/gui/json-tree.cjs +103 -15
- package/dist/backends/gui/json-tree.d.ts +39 -3
- package/dist/backends/gui/json-tree.d.ts.map +1 -1
- package/dist/backends/gui/json-tree.js +104 -16
- package/dist/backends/gui/json-tree.js.map +1 -1
- package/dist/backends/gui/kbd.cjs +18 -2
- package/dist/backends/gui/kbd.d.ts +5 -2
- package/dist/backends/gui/kbd.d.ts.map +1 -1
- package/dist/backends/gui/kbd.js +18 -2
- package/dist/backends/gui/kbd.js.map +1 -1
- package/dist/backends/gui/label.cjs +14 -3
- package/dist/backends/gui/label.d.ts +12 -3
- package/dist/backends/gui/label.d.ts.map +1 -1
- package/dist/backends/gui/label.js +14 -3
- package/dist/backends/gui/label.js.map +1 -1
- package/dist/backends/gui/layout.cjs +5 -1
- package/dist/backends/gui/layout.d.ts +1 -1
- package/dist/backends/gui/layout.d.ts.map +1 -1
- package/dist/backends/gui/layout.js +5 -1
- package/dist/backends/gui/layout.js.map +1 -1
- package/dist/backends/gui/number-field.cjs +163 -0
- package/dist/backends/gui/number-field.d.ts +34 -0
- package/dist/backends/gui/number-field.d.ts.map +1 -0
- package/dist/backends/gui/number-field.js +160 -0
- package/dist/backends/gui/number-field.js.map +1 -0
- package/dist/backends/gui/overflowing-list.cjs +79 -0
- package/dist/backends/gui/overflowing-list.d.ts +42 -0
- package/dist/backends/gui/overflowing-list.d.ts.map +1 -0
- package/dist/backends/gui/overflowing-list.js +76 -0
- package/dist/backends/gui/overflowing-list.js.map +1 -0
- package/dist/backends/gui/phone-country-picker.cjs +60 -0
- package/dist/backends/gui/phone-country-picker.d.ts +34 -0
- package/dist/backends/gui/phone-country-picker.d.ts.map +1 -0
- package/dist/backends/gui/phone-country-picker.js +57 -0
- package/dist/backends/gui/phone-country-picker.js.map +1 -0
- package/dist/backends/gui/popover.cjs +20 -4
- package/dist/backends/gui/popover.d.ts +12 -1
- package/dist/backends/gui/popover.d.ts.map +1 -1
- package/dist/backends/gui/popover.js +21 -5
- package/dist/backends/gui/popover.js.map +1 -1
- package/dist/backends/gui/progress-ring.cjs +38 -0
- package/dist/backends/gui/progress-ring.d.ts +37 -0
- package/dist/backends/gui/progress-ring.d.ts.map +1 -0
- package/dist/backends/gui/progress-ring.js +36 -0
- package/dist/backends/gui/progress-ring.js.map +1 -0
- package/dist/backends/gui/progress.cjs +31 -7
- package/dist/backends/gui/progress.d.ts +25 -3
- package/dist/backends/gui/progress.d.ts.map +1 -1
- package/dist/backends/gui/progress.js +32 -8
- package/dist/backends/gui/progress.js.map +1 -1
- package/dist/backends/gui/radio-group.cjs +28 -2
- package/dist/backends/gui/radio-group.d.ts +20 -2
- package/dist/backends/gui/radio-group.d.ts.map +1 -1
- package/dist/backends/gui/radio-group.js +28 -2
- package/dist/backends/gui/radio-group.js.map +1 -1
- package/dist/backends/gui/search-list.cjs +62 -0
- package/dist/backends/gui/search-list.d.ts +65 -0
- package/dist/backends/gui/search-list.d.ts.map +1 -0
- package/dist/backends/gui/search-list.js +58 -0
- package/dist/backends/gui/search-list.js.map +1 -0
- package/dist/backends/gui/select.cjs +50 -16
- package/dist/backends/gui/select.d.ts +12 -3
- package/dist/backends/gui/select.d.ts.map +1 -1
- package/dist/backends/gui/select.js +51 -17
- package/dist/backends/gui/select.js.map +1 -1
- package/dist/backends/gui/shortcut.cjs +122 -0
- package/dist/backends/gui/shortcut.d.ts +58 -0
- package/dist/backends/gui/shortcut.d.ts.map +1 -0
- package/dist/backends/gui/shortcut.js +115 -0
- package/dist/backends/gui/shortcut.js.map +1 -0
- package/dist/backends/gui/skeleton.cjs +41 -10
- package/dist/backends/gui/skeleton.d.ts +46 -8
- package/dist/backends/gui/skeleton.d.ts.map +1 -1
- package/dist/backends/gui/skeleton.js +39 -8
- package/dist/backends/gui/skeleton.js.map +1 -1
- package/dist/backends/gui/snippet.cjs +12 -1
- package/dist/backends/gui/snippet.d.ts +4 -2
- package/dist/backends/gui/snippet.d.ts.map +1 -1
- package/dist/backends/gui/snippet.js +12 -1
- package/dist/backends/gui/snippet.js.map +1 -1
- package/dist/backends/gui/spinner.cjs +8 -1
- package/dist/backends/gui/spinner.d.ts +11 -2
- package/dist/backends/gui/spinner.d.ts.map +1 -1
- package/dist/backends/gui/spinner.js +9 -2
- package/dist/backends/gui/spinner.js.map +1 -1
- package/dist/backends/gui/stack-icon.cjs +17 -0
- package/dist/backends/gui/stack-icon.d.ts +15 -0
- package/dist/backends/gui/stack-icon.d.ts.map +1 -0
- package/dist/backends/gui/stack-icon.js +15 -0
- package/dist/backends/gui/stack-icon.js.map +1 -0
- package/dist/backends/gui/status.cjs +38 -1
- package/dist/backends/gui/status.d.ts +16 -2
- package/dist/backends/gui/status.d.ts.map +1 -1
- package/dist/backends/gui/status.js +38 -2
- package/dist/backends/gui/status.js.map +1 -1
- package/dist/backends/gui/stepper.cjs +73 -3
- package/dist/backends/gui/stepper.d.ts +25 -1
- package/dist/backends/gui/stepper.d.ts.map +1 -1
- package/dist/backends/gui/stepper.js +71 -5
- package/dist/backends/gui/stepper.js.map +1 -1
- package/dist/backends/gui/switch.cjs +35 -20
- package/dist/backends/gui/switch.d.ts +12 -2
- package/dist/backends/gui/switch.d.ts.map +1 -1
- package/dist/backends/gui/switch.js +35 -20
- package/dist/backends/gui/switch.js.map +1 -1
- package/dist/backends/gui/tabs.cjs +63 -17
- package/dist/backends/gui/tabs.d.ts +35 -6
- package/dist/backends/gui/tabs.d.ts.map +1 -1
- package/dist/backends/gui/tabs.js +65 -19
- package/dist/backends/gui/tabs.js.map +1 -1
- package/dist/backends/gui/tag.cjs +48 -0
- package/dist/backends/gui/tag.d.ts +53 -0
- package/dist/backends/gui/tag.d.ts.map +1 -0
- package/dist/backends/gui/tag.js +46 -0
- package/dist/backends/gui/tag.js.map +1 -0
- package/dist/backends/gui/tags.cjs +9 -2
- package/dist/backends/gui/tags.d.ts +6 -5
- package/dist/backends/gui/tags.d.ts.map +1 -1
- package/dist/backends/gui/tags.js +9 -2
- package/dist/backends/gui/tags.js.map +1 -1
- package/dist/backends/gui/textarea.cjs +22 -6
- package/dist/backends/gui/textarea.d.ts +10 -1
- package/dist/backends/gui/textarea.d.ts.map +1 -1
- package/dist/backends/gui/textarea.js +22 -6
- package/dist/backends/gui/textarea.js.map +1 -1
- package/dist/backends/gui/toaster.cjs +167 -3
- package/dist/backends/gui/toaster.d.ts +28 -2
- package/dist/backends/gui/toaster.d.ts.map +1 -1
- package/dist/backends/gui/toaster.js +167 -5
- package/dist/backends/gui/toaster.js.map +1 -1
- package/dist/backends/gui/toggle-group.cjs +13 -0
- package/dist/backends/gui/toggle-group.d.ts +7 -1
- package/dist/backends/gui/toggle-group.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.js +13 -0
- package/dist/backends/gui/toggle-group.js.map +1 -1
- package/dist/backends/gui/tooltip.cjs +29 -6
- package/dist/backends/gui/tooltip.d.ts +23 -4
- package/dist/backends/gui/tooltip.d.ts.map +1 -1
- package/dist/backends/gui/tooltip.js +31 -8
- package/dist/backends/gui/tooltip.js.map +1 -1
- package/dist/backends/gui/truncated-text.cjs +102 -0
- package/dist/backends/gui/truncated-text.d.ts +55 -0
- package/dist/backends/gui/truncated-text.d.ts.map +1 -0
- package/dist/backends/gui/truncated-text.js +97 -0
- package/dist/backends/gui/truncated-text.js.map +1 -0
- package/dist/gallery/compound.cjs +60 -0
- package/dist/gallery/compound.d.ts +2 -0
- package/dist/gallery/compound.d.ts.map +1 -0
- package/dist/gallery/compound.js +58 -0
- package/dist/gallery/compound.js.map +1 -0
- package/dist/gallery/display.cjs +47 -0
- package/dist/gallery/display.d.ts +3 -0
- package/dist/gallery/display.d.ts.map +1 -0
- package/dist/gallery/display.js +45 -0
- package/dist/gallery/display.js.map +1 -0
- package/dist/gallery/feedback.cjs +38 -0
- package/dist/gallery/feedback.d.ts +2 -0
- package/dist/gallery/feedback.d.ts.map +1 -0
- package/dist/gallery/feedback.js +36 -0
- package/dist/gallery/feedback.js.map +1 -0
- package/dist/gallery/fields.cjs +53 -0
- package/dist/gallery/fields.d.ts +2 -0
- package/dist/gallery/fields.d.ts.map +1 -0
- package/dist/gallery/fields.js +51 -0
- package/dist/gallery/fields.js.map +1 -0
- package/dist/gallery/frames.cjs +47 -0
- package/dist/gallery/frames.d.ts +2 -0
- package/dist/gallery/frames.d.ts.map +1 -0
- package/dist/gallery/frames.js +45 -0
- package/dist/gallery/frames.js.map +1 -0
- package/dist/gallery/icons.cjs +19 -0
- package/dist/gallery/icons.d.ts +2 -0
- package/dist/gallery/icons.d.ts.map +1 -0
- package/dist/gallery/icons.js +17 -0
- package/dist/gallery/icons.js.map +1 -0
- package/dist/gallery/menus.cjs +64 -0
- package/dist/gallery/menus.d.ts +15 -0
- package/dist/gallery/menus.d.ts.map +1 -0
- package/dist/gallery/menus.js +58 -0
- package/dist/gallery/menus.js.map +1 -0
- package/dist/gallery/records.cjs +34 -0
- package/dist/gallery/records.d.ts +2 -0
- package/dist/gallery/records.d.ts.map +1 -0
- package/dist/gallery/records.js +32 -0
- package/dist/gallery/records.js.map +1 -0
- package/dist/gallery/section.cjs +17 -0
- package/dist/gallery/section.d.ts +10 -0
- package/dist/gallery/section.d.ts.map +1 -0
- package/dist/gallery/section.js +14 -0
- package/dist/gallery/section.js.map +1 -0
- package/dist/gallery.cjs +8 -14
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +1594 -256
- package/dist/gallery.js +3 -9
- package/dist/gallery.js.map +1 -1
- package/dist/gui-config.cjs +33 -4
- package/dist/gui-config.d.ts +11 -3
- package/dist/gui-config.d.ts.map +1 -1
- package/dist/gui-config.js +33 -4
- package/dist/gui-config.js.map +1 -1
- package/dist/index.cjs +73 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +73 -2
- package/dist/index.node.js +10 -1
- package/dist/motion.cjs +25 -1
- package/dist/motion.d.ts +16 -1
- package/dist/motion.d.ts.map +1 -1
- package/dist/motion.js +24 -1
- package/dist/motion.js.map +1 -1
- package/dist/primitives/AvatarGroup.cjs +8 -0
- package/dist/primitives/AvatarGroup.d.ts +2 -0
- package/dist/primitives/AvatarGroup.d.ts.map +1 -0
- package/dist/primitives/AvatarGroup.js +5 -0
- package/dist/primitives/AvatarGroup.js.map +1 -0
- package/dist/primitives/BannerAction.cjs +8 -0
- package/dist/primitives/BannerAction.d.ts +2 -0
- package/dist/primitives/BannerAction.d.ts.map +1 -0
- package/dist/primitives/BannerAction.js +5 -0
- package/dist/primitives/BannerAction.js.map +1 -0
- package/dist/primitives/ButtonGroup.cjs +8 -0
- package/dist/primitives/ButtonGroup.d.ts +2 -0
- package/dist/primitives/ButtonGroup.d.ts.map +1 -0
- package/dist/primitives/ButtonGroup.js +5 -0
- package/dist/primitives/ButtonGroup.js.map +1 -0
- package/dist/primitives/ButtonGroupContext.cjs +8 -0
- package/dist/primitives/ButtonGroupContext.d.ts +2 -0
- package/dist/primitives/ButtonGroupContext.d.ts.map +1 -0
- package/dist/primitives/ButtonGroupContext.js +5 -0
- package/dist/primitives/ButtonGroupContext.js.map +1 -0
- package/dist/primitives/CONCEPTS.cjs +8 -0
- package/dist/primitives/CONCEPTS.d.ts +2 -0
- package/dist/primitives/CONCEPTS.d.ts.map +1 -0
- package/dist/primitives/CONCEPTS.js +5 -0
- package/dist/primitives/CONCEPTS.js.map +1 -0
- package/dist/primitives/CalloutAction.cjs +8 -0
- package/dist/primitives/CalloutAction.d.ts +2 -0
- package/dist/primitives/CalloutAction.d.ts.map +1 -0
- package/dist/primitives/CalloutAction.js +5 -0
- package/dist/primitives/CalloutAction.js.map +1 -0
- package/dist/primitives/Chip.cjs +8 -0
- package/dist/primitives/Chip.d.ts +2 -0
- package/dist/primitives/Chip.d.ts.map +1 -0
- package/dist/primitives/Chip.js +5 -0
- package/dist/primitives/Chip.js.map +1 -0
- package/dist/primitives/ColorSample.cjs +8 -0
- package/dist/primitives/ColorSample.d.ts +2 -0
- package/dist/primitives/ColorSample.d.ts.map +1 -0
- package/dist/primitives/ColorSample.js +5 -0
- package/dist/primitives/ColorSample.js.map +1 -0
- package/dist/primitives/CountrySelect.cjs +8 -0
- package/dist/primitives/CountrySelect.d.ts +2 -0
- package/dist/primitives/CountrySelect.d.ts.map +1 -0
- package/dist/primitives/CountrySelect.js +5 -0
- package/dist/primitives/CountrySelect.js.map +1 -0
- package/dist/primitives/CurrencyPicker.cjs +8 -0
- package/dist/primitives/CurrencyPicker.d.ts +2 -0
- package/dist/primitives/CurrencyPicker.d.ts.map +1 -0
- package/dist/primitives/CurrencyPicker.js +5 -0
- package/dist/primitives/CurrencyPicker.js.map +1 -0
- package/dist/primitives/Density.cjs +8 -0
- package/dist/primitives/Density.d.ts +2 -0
- package/dist/primitives/Density.d.ts.map +1 -0
- package/dist/primitives/Density.js +5 -0
- package/dist/primitives/Density.js.map +1 -0
- package/dist/primitives/DialogBody.cjs +8 -0
- package/dist/primitives/DialogBody.d.ts +2 -0
- package/dist/primitives/DialogBody.d.ts.map +1 -0
- package/dist/primitives/DialogBody.js +5 -0
- package/dist/primitives/DialogBody.js.map +1 -0
- package/dist/primitives/DropdownMenuBack.cjs +8 -0
- package/dist/primitives/DropdownMenuBack.d.ts +2 -0
- package/dist/primitives/DropdownMenuBack.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuBack.js +5 -0
- package/dist/primitives/DropdownMenuBack.js.map +1 -0
- package/dist/primitives/DropdownMenuClose.cjs +8 -0
- package/dist/primitives/DropdownMenuClose.d.ts +2 -0
- package/dist/primitives/DropdownMenuClose.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuClose.js +5 -0
- package/dist/primitives/DropdownMenuClose.js.map +1 -0
- package/dist/primitives/DropdownMenuEmpty.cjs +8 -0
- package/dist/primitives/DropdownMenuEmpty.d.ts +2 -0
- package/dist/primitives/DropdownMenuEmpty.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuEmpty.js +5 -0
- package/dist/primitives/DropdownMenuEmpty.js.map +1 -0
- package/dist/primitives/DropdownMenuHeader.cjs +8 -0
- package/dist/primitives/DropdownMenuHeader.d.ts +2 -0
- package/dist/primitives/DropdownMenuHeader.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuHeader.js +5 -0
- package/dist/primitives/DropdownMenuHeader.js.map +1 -0
- package/dist/primitives/DropdownMenuLoading.cjs +8 -0
- package/dist/primitives/DropdownMenuLoading.d.ts +2 -0
- package/dist/primitives/DropdownMenuLoading.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuLoading.js +5 -0
- package/dist/primitives/DropdownMenuLoading.js.map +1 -0
- package/dist/primitives/DropdownMenuOptionItem.cjs +8 -0
- package/dist/primitives/DropdownMenuOptionItem.d.ts +2 -0
- package/dist/primitives/DropdownMenuOptionItem.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuOptionItem.js +5 -0
- package/dist/primitives/DropdownMenuOptionItem.js.map +1 -0
- package/dist/primitives/DropdownMenuPage.cjs +8 -0
- package/dist/primitives/DropdownMenuPage.d.ts +2 -0
- package/dist/primitives/DropdownMenuPage.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuPage.js +5 -0
- package/dist/primitives/DropdownMenuPage.js.map +1 -0
- package/dist/primitives/DropdownMenuSearch.cjs +8 -0
- package/dist/primitives/DropdownMenuSearch.d.ts +2 -0
- package/dist/primitives/DropdownMenuSearch.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSearch.js +5 -0
- package/dist/primitives/DropdownMenuSearch.js.map +1 -0
- package/dist/primitives/DropdownMenuSection.cjs +8 -0
- package/dist/primitives/DropdownMenuSection.d.ts +2 -0
- package/dist/primitives/DropdownMenuSection.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSection.js +5 -0
- package/dist/primitives/DropdownMenuSection.js.map +1 -0
- package/dist/primitives/DropdownMenuSelectionGroup.cjs +8 -0
- package/dist/primitives/DropdownMenuSelectionGroup.d.ts +2 -0
- package/dist/primitives/DropdownMenuSelectionGroup.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSelectionGroup.js +5 -0
- package/dist/primitives/DropdownMenuSelectionGroup.js.map +1 -0
- package/dist/primitives/DropdownMenuTitle.cjs +8 -0
- package/dist/primitives/DropdownMenuTitle.d.ts +2 -0
- package/dist/primitives/DropdownMenuTitle.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuTitle.js +5 -0
- package/dist/primitives/DropdownMenuTitle.js.map +1 -0
- package/dist/primitives/FIELD_ICONS.cjs +8 -0
- package/dist/primitives/FIELD_ICONS.d.ts +2 -0
- package/dist/primitives/FIELD_ICONS.d.ts.map +1 -0
- package/dist/primitives/FIELD_ICONS.js +5 -0
- package/dist/primitives/FIELD_ICONS.js.map +1 -0
- package/dist/primitives/Glyph.cjs +8 -0
- package/dist/primitives/Glyph.d.ts +2 -0
- package/dist/primitives/Glyph.d.ts.map +1 -0
- package/dist/primitives/Glyph.js +5 -0
- package/dist/primitives/Glyph.js.map +1 -0
- package/dist/primitives/Heading.cjs +2 -2
- package/dist/primitives/Heading.d.ts +1 -1
- package/dist/primitives/Heading.d.ts.map +1 -1
- package/dist/primitives/Heading.js +1 -1
- package/dist/primitives/Heading.js.map +1 -1
- package/dist/primitives/IconPicker.cjs +8 -0
- package/dist/primitives/IconPicker.d.ts +2 -0
- package/dist/primitives/IconPicker.d.ts.map +1 -0
- package/dist/primitives/IconPicker.js +5 -0
- package/dist/primitives/IconPicker.js.map +1 -0
- package/dist/primitives/IconTile.cjs +8 -0
- package/dist/primitives/IconTile.d.ts +2 -0
- package/dist/primitives/IconTile.d.ts.map +1 -0
- package/dist/primitives/IconTile.js +5 -0
- package/dist/primitives/IconTile.js.map +1 -0
- package/dist/primitives/ImageInput.cjs +8 -0
- package/dist/primitives/ImageInput.d.ts +2 -0
- package/dist/primitives/ImageInput.d.ts.map +1 -0
- package/dist/primitives/ImageInput.js +5 -0
- package/dist/primitives/ImageInput.js.map +1 -0
- package/dist/primitives/InputGroup.cjs +8 -0
- package/dist/primitives/InputGroup.d.ts +2 -0
- package/dist/primitives/InputGroup.d.ts.map +1 -0
- package/dist/primitives/InputGroup.js +5 -0
- package/dist/primitives/InputGroup.js.map +1 -0
- package/dist/primitives/NumberField.cjs +8 -0
- package/dist/primitives/NumberField.d.ts +2 -0
- package/dist/primitives/NumberField.d.ts.map +1 -0
- package/dist/primitives/NumberField.js +5 -0
- package/dist/primitives/NumberField.js.map +1 -0
- package/dist/primitives/OverflowingList.cjs +8 -0
- package/dist/primitives/OverflowingList.d.ts +2 -0
- package/dist/primitives/OverflowingList.d.ts.map +1 -0
- package/dist/primitives/OverflowingList.js +5 -0
- package/dist/primitives/OverflowingList.js.map +1 -0
- package/dist/primitives/PhoneCountryPicker.cjs +8 -0
- package/dist/primitives/PhoneCountryPicker.d.ts +2 -0
- package/dist/primitives/PhoneCountryPicker.d.ts.map +1 -0
- package/dist/primitives/PhoneCountryPicker.js +5 -0
- package/dist/primitives/PhoneCountryPicker.js.map +1 -0
- package/dist/primitives/ProgressRing.cjs +8 -0
- package/dist/primitives/ProgressRing.d.ts +2 -0
- package/dist/primitives/ProgressRing.d.ts.map +1 -0
- package/dist/primitives/ProgressRing.js +5 -0
- package/dist/primitives/ProgressRing.js.map +1 -0
- package/dist/primitives/RadioCircle.cjs +8 -0
- package/dist/primitives/RadioCircle.d.ts +2 -0
- package/dist/primitives/RadioCircle.d.ts.map +1 -0
- package/dist/primitives/RadioCircle.js +5 -0
- package/dist/primitives/RadioCircle.js.map +1 -0
- package/dist/primitives/SKELETON_HEIGHT.cjs +8 -0
- package/dist/primitives/SKELETON_HEIGHT.d.ts +2 -0
- package/dist/primitives/SKELETON_HEIGHT.d.ts.map +1 -0
- package/dist/primitives/SKELETON_HEIGHT.js +5 -0
- package/dist/primitives/SKELETON_HEIGHT.js.map +1 -0
- package/dist/primitives/STATUS_COLOR.cjs +8 -0
- package/dist/primitives/STATUS_COLOR.d.ts +2 -0
- package/dist/primitives/STATUS_COLOR.d.ts.map +1 -0
- package/dist/primitives/STATUS_COLOR.js +5 -0
- package/dist/primitives/STATUS_COLOR.js.map +1 -0
- package/dist/primitives/STATUS_HUE.cjs +8 -0
- package/dist/primitives/STATUS_HUE.d.ts +2 -0
- package/dist/primitives/STATUS_HUE.d.ts.map +1 -0
- package/dist/primitives/STATUS_HUE.js +5 -0
- package/dist/primitives/STATUS_HUE.js.map +1 -0
- package/dist/primitives/STATUS_PAINT.cjs +8 -0
- package/dist/primitives/STATUS_PAINT.d.ts +2 -0
- package/dist/primitives/STATUS_PAINT.d.ts.map +1 -0
- package/dist/primitives/STATUS_PAINT.js +5 -0
- package/dist/primitives/STATUS_PAINT.js.map +1 -0
- package/dist/primitives/Shortcut.cjs +8 -0
- package/dist/primitives/Shortcut.d.ts +2 -0
- package/dist/primitives/Shortcut.d.ts.map +1 -0
- package/dist/primitives/Shortcut.js +5 -0
- package/dist/primitives/Shortcut.js.map +1 -0
- package/dist/primitives/StackIcon.cjs +8 -0
- package/dist/primitives/StackIcon.d.ts +2 -0
- package/dist/primitives/StackIcon.d.ts.map +1 -0
- package/dist/primitives/StackIcon.js +5 -0
- package/dist/primitives/StackIcon.js.map +1 -0
- package/dist/primitives/TABLER.cjs +8 -0
- package/dist/primitives/TABLER.d.ts +2 -0
- package/dist/primitives/TABLER.d.ts.map +1 -0
- package/dist/primitives/TABLER.js +5 -0
- package/dist/primitives/TABLER.js.map +1 -0
- package/dist/primitives/TOAST_DURATION.cjs +8 -0
- package/dist/primitives/TOAST_DURATION.d.ts +2 -0
- package/dist/primitives/TOAST_DURATION.d.ts.map +1 -0
- package/dist/primitives/TOAST_DURATION.js +5 -0
- package/dist/primitives/TOAST_DURATION.js.map +1 -0
- package/dist/primitives/Tag.cjs +8 -0
- package/dist/primitives/Tag.d.ts +2 -0
- package/dist/primitives/Tag.d.ts.map +1 -0
- package/dist/primitives/Tag.js +5 -0
- package/dist/primitives/Tag.js.map +1 -0
- package/dist/primitives/ToastCard.cjs +8 -0
- package/dist/primitives/ToastCard.d.ts +2 -0
- package/dist/primitives/ToastCard.d.ts.map +1 -0
- package/dist/primitives/ToastCard.js +5 -0
- package/dist/primitives/ToastCard.js.map +1 -0
- package/dist/primitives/ToastFace.cjs +8 -0
- package/dist/primitives/ToastFace.d.ts +2 -0
- package/dist/primitives/ToastFace.d.ts.map +1 -0
- package/dist/primitives/ToastFace.js +5 -0
- package/dist/primitives/ToastFace.js.map +1 -0
- package/dist/primitives/TruncatedText.cjs +8 -0
- package/dist/primitives/TruncatedText.d.ts +2 -0
- package/dist/primitives/TruncatedText.d.ts.map +1 -0
- package/dist/primitives/TruncatedText.js +5 -0
- package/dist/primitives/TruncatedText.js.map +1 -0
- package/dist/primitives/TruncatedTextProvider.cjs +8 -0
- package/dist/primitives/TruncatedTextProvider.d.ts +2 -0
- package/dist/primitives/TruncatedTextProvider.d.ts.map +1 -0
- package/dist/primitives/TruncatedTextProvider.js +5 -0
- package/dist/primitives/TruncatedTextProvider.js.map +1 -0
- package/dist/primitives/VisuallyHidden.cjs +8 -0
- package/dist/primitives/VisuallyHidden.d.ts +2 -0
- package/dist/primitives/VisuallyHidden.d.ts.map +1 -0
- package/dist/primitives/VisuallyHidden.js +5 -0
- package/dist/primitives/VisuallyHidden.js.map +1 -0
- package/dist/primitives/fieldSize.cjs +8 -0
- package/dist/primitives/fieldSize.d.ts +2 -0
- package/dist/primitives/fieldSize.d.ts.map +1 -0
- package/dist/primitives/fieldSize.js +5 -0
- package/dist/primitives/fieldSize.js.map +1 -0
- package/dist/primitives/flag.cjs +8 -0
- package/dist/primitives/flag.d.ts +2 -0
- package/dist/primitives/flag.d.ts.map +1 -0
- package/dist/primitives/flag.js +5 -0
- package/dist/primitives/flag.js.map +1 -0
- package/dist/primitives/formatShortcut.cjs +8 -0
- package/dist/primitives/formatShortcut.d.ts +2 -0
- package/dist/primitives/formatShortcut.d.ts.map +1 -0
- package/dist/primitives/formatShortcut.js +5 -0
- package/dist/primitives/formatShortcut.js.map +1 -0
- package/dist/primitives/iconWords.cjs +8 -0
- package/dist/primitives/iconWords.d.ts +2 -0
- package/dist/primitives/iconWords.d.ts.map +1 -0
- package/dist/primitives/iconWords.js +5 -0
- package/dist/primitives/iconWords.js.map +1 -0
- package/dist/primitives/initialOf.cjs +8 -0
- package/dist/primitives/initialOf.d.ts +2 -0
- package/dist/primitives/initialOf.d.ts.map +1 -0
- package/dist/primitives/initialOf.js +5 -0
- package/dist/primitives/initialOf.js.map +1 -0
- package/dist/primitives/loadIcons.cjs +8 -0
- package/dist/primitives/loadIcons.d.ts +2 -0
- package/dist/primitives/loadIcons.d.ts.map +1 -0
- package/dist/primitives/loadIcons.js +5 -0
- package/dist/primitives/loadIcons.js.map +1 -0
- package/dist/primitives/parseNumber.cjs +8 -0
- package/dist/primitives/parseNumber.d.ts +2 -0
- package/dist/primitives/parseNumber.d.ts.map +1 -0
- package/dist/primitives/parseNumber.js +5 -0
- package/dist/primitives/parseNumber.js.map +1 -0
- package/dist/primitives/resolveIcon.cjs +8 -0
- package/dist/primitives/resolveIcon.d.ts +2 -0
- package/dist/primitives/resolveIcon.d.ts.map +1 -0
- package/dist/primitives/resolveIcon.js +5 -0
- package/dist/primitives/resolveIcon.js.map +1 -0
- package/dist/primitives/speakShortcut.cjs +8 -0
- package/dist/primitives/speakShortcut.d.ts +2 -0
- package/dist/primitives/speakShortcut.d.ts.map +1 -0
- package/dist/primitives/speakShortcut.js +5 -0
- package/dist/primitives/speakShortcut.js.map +1 -0
- package/dist/primitives/tileTones.cjs +8 -0
- package/dist/primitives/tileTones.d.ts +2 -0
- package/dist/primitives/tileTones.d.ts.map +1 -0
- package/dist/primitives/tileTones.js +5 -0
- package/dist/primitives/tileTones.js.map +1 -0
- package/dist/primitives/useDensity.cjs +8 -0
- package/dist/primitives/useDensity.d.ts +2 -0
- package/dist/primitives/useDensity.d.ts.map +1 -0
- package/dist/primitives/useDensity.js +5 -0
- package/dist/primitives/useDensity.js.map +1 -0
- package/dist/primitives/useField.cjs +8 -0
- package/dist/primitives/useField.d.ts +2 -0
- package/dist/primitives/useField.d.ts.map +1 -0
- package/dist/primitives/useField.js +5 -0
- package/dist/primitives/useField.js.map +1 -0
- package/dist/primitives/useIcons.cjs +8 -0
- package/dist/primitives/useIcons.d.ts +2 -0
- package/dist/primitives/useIcons.d.ts.map +1 -0
- package/dist/primitives/useIcons.js +5 -0
- package/dist/primitives/useIcons.js.map +1 -0
- package/dist/product/ComboBox.cjs +25 -7
- package/dist/product/ComboBox.d.ts +3 -1
- package/dist/product/ComboBox.d.ts.map +1 -1
- package/dist/product/ComboBox.js +25 -7
- package/dist/product/ComboBox.js.map +1 -1
- package/dist/product/CommandMenu.cjs +137 -0
- package/dist/product/CommandMenu.d.ts +77 -0
- package/dist/product/CommandMenu.d.ts.map +1 -0
- package/dist/product/CommandMenu.js +134 -0
- package/dist/product/CommandMenu.js.map +1 -0
- package/dist/product/DetailPane.cjs +154 -12
- package/dist/product/DetailPane.d.ts +80 -2
- package/dist/product/DetailPane.d.ts.map +1 -1
- package/dist/product/DetailPane.js +153 -16
- package/dist/product/DetailPane.js.map +1 -1
- package/dist/product/Fact.cjs +6 -1
- package/dist/product/Fact.d.ts +16 -1
- package/dist/product/Fact.d.ts.map +1 -1
- package/dist/product/Fact.js +6 -1
- package/dist/product/Fact.js.map +1 -1
- package/dist/product/Field.cjs +14 -2
- package/dist/product/Field.d.ts +16 -1
- package/dist/product/Field.d.ts.map +1 -1
- package/dist/product/Field.js +14 -2
- package/dist/product/Field.js.map +1 -1
- package/dist/product/Filters.cjs +61 -9
- package/dist/product/Filters.d.ts +37 -6
- package/dist/product/Filters.d.ts.map +1 -1
- package/dist/product/Filters.js +62 -10
- package/dist/product/Filters.js.map +1 -1
- package/dist/product/MenuRow.cjs +81 -2
- package/dist/product/MenuRow.d.ts +76 -6
- package/dist/product/MenuRow.d.ts.map +1 -1
- package/dist/product/MenuRow.js +81 -4
- package/dist/product/MenuRow.js.map +1 -1
- package/dist/product/PrimaryButton.cjs +5 -1
- package/dist/product/PrimaryButton.d.ts +8 -0
- package/dist/product/PrimaryButton.d.ts.map +1 -1
- package/dist/product/PrimaryButton.js +5 -1
- package/dist/product/PrimaryButton.js.map +1 -1
- package/dist/product/Skeleton.cjs +7 -6
- package/dist/product/Skeleton.d.ts +3 -20
- package/dist/product/Skeleton.d.ts.map +1 -1
- package/dist/product/Skeleton.js +8 -7
- package/dist/product/Skeleton.js.map +1 -1
- package/dist/product/index.cjs +2 -0
- package/dist/product/index.d.ts +1 -0
- package/dist/product/index.d.ts.map +1 -1
- package/dist/product/index.js +2 -0
- package/dist/product/index.js.map +1 -1
- package/dist/settings/Section.cjs +11 -2
- package/dist/settings/Section.d.ts +8 -1
- package/dist/settings/Section.d.ts.map +1 -1
- package/dist/settings/Section.js +11 -2
- package/dist/settings/Section.js.map +1 -1
- package/dist/styles/motion.css +70 -0
- package/dist/styles.css +1460 -127
- package/dist/theme.css +944 -0
- package/package.json +2 -1
|
@@ -3,13 +3,31 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.BreadcrumbEllipsis = exports.BreadcrumbSeparator = exports.BreadcrumbPage = exports.BreadcrumbLink = exports.BreadcrumbItem = exports.BreadcrumbList = exports.Breadcrumb = void 0;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Breadcrumb — where you are, in a trail.
|
|
8
|
+
*
|
|
9
|
+
* A real `<nav>` around a real `<ol>`: the trail is ORDERED, and a screen
|
|
10
|
+
* reader announces "list, 4 items" and reads the position. Built out of divs it
|
|
11
|
+
* announces nothing, which is most of the point of a breadcrumb gone.
|
|
12
|
+
*
|
|
13
|
+
* The separators are `aria-hidden` and outside the items, because a slash is
|
|
14
|
+
* punctuation, not a step — a reader that voices them says "home slash shop
|
|
15
|
+
* slash bag" instead of counting.
|
|
16
|
+
*
|
|
17
|
+
* Drawn on gui props, after twenty-ui's Breadcrumb (MIT, NOTICE): a 32px trail
|
|
18
|
+
* in 13px quiet ink, steps 4px apart around a "/" held in an 8px slot, the page
|
|
19
|
+
* you are on in full ink and the one step that may shrink, with an ellipsis.
|
|
20
|
+
* It used to compose utility class strings (`gap-1.5 text-sm text-muted-foreground`),
|
|
21
|
+
* which this package's own house rule forbids.
|
|
22
|
+
*/
|
|
23
|
+
const gui_1 = require("@hanzo/gui");
|
|
24
|
+
const ink_1 = require("./ink.cjs");
|
|
25
|
+
const slot_1 = require("./slot.cjs");
|
|
26
|
+
const Breadcrumb = (props) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('breadcrumb'), render: "nav", "aria-label": "Breadcrumb", minH: 32, items: "center", overflow: "hidden", minW: 0, ...props }));
|
|
9
27
|
exports.Breadcrumb = Breadcrumb;
|
|
10
|
-
const BreadcrumbList = ({
|
|
28
|
+
const BreadcrumbList = ({ children, ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('breadcrumb-list'), render: "ol", items: "center", gap: "$1", m: 0, p: 0, minW: 0, style: { listStyle: 'none' }, ...props, children: children }));
|
|
11
29
|
exports.BreadcrumbList = BreadcrumbList;
|
|
12
|
-
const BreadcrumbItem = ({
|
|
30
|
+
const BreadcrumbItem = ({ children, ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('breadcrumb-item'), render: "li", items: "center", gap: "$1", shrink: 0, minW: 0, ...props, children: (0, ink_1.ink)(children, gui_1.Text, { fontSize: '$2', color: '$hint' }) }));
|
|
13
31
|
exports.BreadcrumbItem = BreadcrumbItem;
|
|
14
32
|
/**
|
|
15
33
|
* A step in the trail.
|
|
@@ -18,13 +36,13 @@ exports.BreadcrumbItem = BreadcrumbItem;
|
|
|
18
36
|
* to is not a link, and an anchor without a target is one a keyboard stops on
|
|
19
37
|
* for nothing.
|
|
20
38
|
*/
|
|
21
|
-
const BreadcrumbLink = ({
|
|
39
|
+
const BreadcrumbLink = ({ href, children, ...props }) => href ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { ...(0, slot_1.slot)('breadcrumb-link'), render: "a", ...{ href }, fontSize: "$2", color: "$hint", textDecorationLine: "none", hoverStyle: { color: '$ink' }, ...props, children: children })) : ((0, jsx_runtime_1.jsx)(gui_1.Text, { ...(0, slot_1.slot)('breadcrumb-link'), fontSize: "$2", color: "$hint", ...props, children: children }));
|
|
22
40
|
exports.BreadcrumbLink = BreadcrumbLink;
|
|
23
|
-
/** The step you are ON — not a link, and it says so. */
|
|
24
|
-
const BreadcrumbPage = ({
|
|
41
|
+
/** The step you are ON — not a link, and it says so. The one step that shrinks. */
|
|
42
|
+
const BreadcrumbPage = ({ children, ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.Text, { ...(0, slot_1.slot)('breadcrumb-page'), role: "link", "aria-disabled": true, "aria-current": "page", fontSize: "$2", color: "$ink", numberOfLines: 1, shrink: 1, minW: 0, ...props, children: children }));
|
|
25
43
|
exports.BreadcrumbPage = BreadcrumbPage;
|
|
26
|
-
const BreadcrumbSeparator = ({ children,
|
|
44
|
+
const BreadcrumbSeparator = ({ children, ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('breadcrumb-separator'), render: "li", role: "presentation", "aria-hidden": true, width: 8, justify: "center", shrink: 0, ...props, children: (0, ink_1.ink)(children ?? '/', gui_1.Text, { fontSize: '$2', color: '$hint' }) }));
|
|
27
45
|
exports.BreadcrumbSeparator = BreadcrumbSeparator;
|
|
28
46
|
/** A trail too long to show whole. `…` is one character and reads as "more". */
|
|
29
|
-
const BreadcrumbEllipsis = (
|
|
47
|
+
const BreadcrumbEllipsis = (props) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('breadcrumb-ellipsis'), role: "presentation", "aria-hidden": true, items: "center", justify: "center", ...props, children: (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$hint", children: "\u2026" }) }));
|
|
30
48
|
exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
|
|
@@ -8,12 +8,20 @@
|
|
|
8
8
|
* The separators are `aria-hidden` and outside the items, because a slash is
|
|
9
9
|
* punctuation, not a step — a reader that voices them says "home slash shop
|
|
10
10
|
* slash bag" instead of counting.
|
|
11
|
+
*
|
|
12
|
+
* Drawn on gui props, after twenty-ui's Breadcrumb (MIT, NOTICE): a 32px trail
|
|
13
|
+
* in 13px quiet ink, steps 4px apart around a "/" held in an 8px slot, the page
|
|
14
|
+
* you are on in full ink and the one step that may shrink, with an ellipsis.
|
|
15
|
+
* It used to compose utility class strings (`gap-1.5 text-sm text-muted-foreground`),
|
|
16
|
+
* which this package's own house rule forbids.
|
|
11
17
|
*/
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export declare const
|
|
18
|
+
import { Text, XStack } from '@hanzo/gui';
|
|
19
|
+
import type { ComponentProps } from 'react';
|
|
20
|
+
type Row = ComponentProps<typeof XStack>;
|
|
21
|
+
type Words = ComponentProps<typeof Text>;
|
|
22
|
+
export declare const Breadcrumb: (props: Row) => import("react").JSX.Element;
|
|
23
|
+
export declare const BreadcrumbList: ({ children, ...props }: Row) => import("react").JSX.Element;
|
|
24
|
+
export declare const BreadcrumbItem: ({ children, ...props }: Row) => import("react").JSX.Element;
|
|
17
25
|
/**
|
|
18
26
|
* A step in the trail.
|
|
19
27
|
*
|
|
@@ -21,12 +29,13 @@ export declare const BreadcrumbItem: ({ className, ...props }: React.ComponentPr
|
|
|
21
29
|
* to is not a link, and an anchor without a target is one a keyboard stops on
|
|
22
30
|
* for nothing.
|
|
23
31
|
*/
|
|
24
|
-
export declare const BreadcrumbLink: ({
|
|
32
|
+
export declare const BreadcrumbLink: ({ href, children, ...props }: Words & {
|
|
25
33
|
href?: string;
|
|
26
|
-
}) =>
|
|
27
|
-
/** The step you are ON — not a link, and it says so. */
|
|
28
|
-
export declare const BreadcrumbPage: ({
|
|
29
|
-
export declare const BreadcrumbSeparator: ({ children,
|
|
34
|
+
}) => import("react").JSX.Element;
|
|
35
|
+
/** The step you are ON — not a link, and it says so. The one step that shrinks. */
|
|
36
|
+
export declare const BreadcrumbPage: ({ children, ...props }: Words) => import("react").JSX.Element;
|
|
37
|
+
export declare const BreadcrumbSeparator: ({ children, ...props }: Row) => import("react").JSX.Element;
|
|
30
38
|
/** A trail too long to show whole. `…` is one character and reads as "more". */
|
|
31
|
-
export declare const BreadcrumbEllipsis: (
|
|
39
|
+
export declare const BreadcrumbEllipsis: (props: Row) => import("react").JSX.Element;
|
|
40
|
+
export {};
|
|
32
41
|
//# sourceMappingURL=breadcrumb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/breadcrumb.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/breadcrumb.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAK3C,KAAK,GAAG,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAA;AACxC,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,CAAA;AAExC,eAAO,MAAM,UAAU,UAAW,GAAG,gCAEpC,CAAA;AAED,eAAO,MAAM,cAAc,2BAA4B,GAAG,gCAIzD,CAAA;AAED,eAAO,MAAM,cAAc,2BAA4B,GAAG,gCAIzD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,iCAAkC,KAAK,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,gCAkBnF,CAAA;AAEH,mFAAmF;AACnF,eAAO,MAAM,cAAc,2BAA4B,KAAK,gCAe3D,CAAA;AAED,eAAO,MAAM,mBAAmB,2BAA4B,GAAG,gCAI9D,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,UAAW,GAAG,gCAM5C,CAAA"}
|
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Breadcrumb — where you are, in a trail.
|
|
5
|
+
*
|
|
6
|
+
* A real `<nav>` around a real `<ol>`: the trail is ORDERED, and a screen
|
|
7
|
+
* reader announces "list, 4 items" and reads the position. Built out of divs it
|
|
8
|
+
* announces nothing, which is most of the point of a breadcrumb gone.
|
|
9
|
+
*
|
|
10
|
+
* The separators are `aria-hidden` and outside the items, because a slash is
|
|
11
|
+
* punctuation, not a step — a reader that voices them says "home slash shop
|
|
12
|
+
* slash bag" instead of counting.
|
|
13
|
+
*
|
|
14
|
+
* Drawn on gui props, after twenty-ui's Breadcrumb (MIT, NOTICE): a 32px trail
|
|
15
|
+
* in 13px quiet ink, steps 4px apart around a "/" held in an 8px slot, the page
|
|
16
|
+
* you are on in full ink and the one step that may shrink, with an ellipsis.
|
|
17
|
+
* It used to compose utility class strings (`gap-1.5 text-sm text-muted-foreground`),
|
|
18
|
+
* which this package's own house rule forbids.
|
|
19
|
+
*/
|
|
20
|
+
import { Text, XStack } from '@hanzo/gui';
|
|
21
|
+
import { ink } from './ink.js';
|
|
22
|
+
import { slot } from './slot.js';
|
|
23
|
+
export const Breadcrumb = (props) => (_jsx(XStack, { ...slot('breadcrumb'), render: "nav", "aria-label": "Breadcrumb", minH: 32, items: "center", overflow: "hidden", minW: 0, ...props }));
|
|
24
|
+
export const BreadcrumbList = ({ children, ...props }) => (_jsx(XStack, { ...slot('breadcrumb-list'), render: "ol", items: "center", gap: "$1", m: 0, p: 0, minW: 0, style: { listStyle: 'none' }, ...props, children: children }));
|
|
25
|
+
export const BreadcrumbItem = ({ children, ...props }) => (_jsx(XStack, { ...slot('breadcrumb-item'), render: "li", items: "center", gap: "$1", shrink: 0, minW: 0, ...props, children: ink(children, Text, { fontSize: '$2', color: '$hint' }) }));
|
|
8
26
|
/**
|
|
9
27
|
* A step in the trail.
|
|
10
28
|
*
|
|
@@ -12,10 +30,10 @@ export const BreadcrumbItem = ({ className, ...props }) => (_jsx(Box, { tag: "li
|
|
|
12
30
|
* to is not a link, and an anchor without a target is one a keyboard stops on
|
|
13
31
|
* for nothing.
|
|
14
32
|
*/
|
|
15
|
-
export const BreadcrumbLink = ({
|
|
16
|
-
/** The step you are ON — not a link, and it says so. */
|
|
17
|
-
export const BreadcrumbPage = ({
|
|
18
|
-
export const BreadcrumbSeparator = ({ children,
|
|
33
|
+
export const BreadcrumbLink = ({ href, children, ...props }) => href ? (_jsx(Text, { ...slot('breadcrumb-link'), render: "a", ...{ href }, fontSize: "$2", color: "$hint", textDecorationLine: "none", hoverStyle: { color: '$ink' }, ...props, children: children })) : (_jsx(Text, { ...slot('breadcrumb-link'), fontSize: "$2", color: "$hint", ...props, children: children }));
|
|
34
|
+
/** The step you are ON — not a link, and it says so. The one step that shrinks. */
|
|
35
|
+
export const BreadcrumbPage = ({ children, ...props }) => (_jsx(Text, { ...slot('breadcrumb-page'), role: "link", "aria-disabled": true, "aria-current": "page", fontSize: "$2", color: "$ink", numberOfLines: 1, shrink: 1, minW: 0, ...props, children: children }));
|
|
36
|
+
export const BreadcrumbSeparator = ({ children, ...props }) => (_jsx(XStack, { ...slot('breadcrumb-separator'), render: "li", role: "presentation", "aria-hidden": true, width: 8, justify: "center", shrink: 0, ...props, children: ink(children ?? '/', Text, { fontSize: '$2', color: '$hint' }) }));
|
|
19
37
|
/** A trail too long to show whole. `…` is one character and reads as "more". */
|
|
20
|
-
export const BreadcrumbEllipsis = (
|
|
38
|
+
export const BreadcrumbEllipsis = (props) => (_jsx(XStack, { ...slot('breadcrumb-ellipsis'), role: "presentation", "aria-hidden": true, items: "center", justify: "center", ...props, children: _jsx(Text, { fontSize: "$2", color: "$hint", children: "\u2026" }) }));
|
|
21
39
|
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../../src/backends/gui/breadcrumb.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../../src/backends/gui/breadcrumb.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAK7B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,CACxC,KAAC,MAAM,OAAK,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAC,KAAK,gBAAY,YAAY,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,EAAC,IAAI,EAAE,CAAC,KAAM,KAAK,GAAI,CACvI,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC7D,KAAC,MAAM,OAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAM,KAAK,YAClI,QAAQ,GACF,CACV,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAC7D,KAAC,MAAM,OAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAM,KAAK,YACnG,GAAG,CAAC,QAAQ,EAAE,IAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAC1D,CACV,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA6B,EAAE,EAAE,CACxF,IAAI,CAAC,CAAC,CAAC,CACL,KAAC,IAAI,OACC,IAAI,CAAC,iBAAiB,CAAC,EAC3B,MAAM,EAAC,GAAG,KACL,EAAE,IAAI,EAAa,EACxB,QAAQ,EAAC,IAAI,EACb,KAAK,EAAC,OAAO,EACb,kBAAkB,EAAC,MAAM,EACzB,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KACzB,KAAK,YAER,QAAQ,GACJ,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,OAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,OAAO,KAAK,KAAK,YACrE,QAAQ,GACJ,CACR,CAAA;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAS,EAAE,EAAE,CAAC,CAC/D,KAAC,IAAI,OACC,IAAI,CAAC,iBAAiB,CAAC,EAC3B,IAAI,EAAC,MAAM,yCAEE,MAAM,EACnB,QAAQ,EAAC,IAAI,EACb,KAAK,EAAC,MAAM,EACZ,aAAa,EAAE,CAAC,EAChB,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,KACH,KAAK,YAER,QAAQ,GACJ,CACR,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CAClE,KAAC,MAAM,OAAK,IAAI,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,cAAc,uBAAa,KAAK,EAAE,CAAC,EAAE,OAAO,EAAC,QAAQ,EAAC,MAAM,EAAE,CAAC,KAAM,KAAK,YAClI,GAAG,CAAC,QAAQ,IAAI,GAAG,EAAE,IAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GACjE,CACV,CAAA;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,CAChD,KAAC,MAAM,OAAK,IAAI,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAC,cAAc,uBAAa,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,KAAK,KAAK,YAChH,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,OAAO,uBAE1B,GACA,CACV,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ButtonGroupContext = void 0;
|
|
5
|
+
exports.ButtonGroup = ButtonGroup;
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
/**
|
|
8
|
+
* ButtonGroup — buttons joined into one control: "Update view" with its chevron
|
|
9
|
+
* menu, a cell's hover actions, a diagram's zoom pair.
|
|
10
|
+
*
|
|
11
|
+
* Two independent choices, as twenty-ui's ButtonGroup has them (MIT, NOTICE):
|
|
12
|
+
*
|
|
13
|
+
* attached (default) the buttons share their edges — each after the first
|
|
14
|
+
* steps 1px back over its neighbour's border, the inner
|
|
15
|
+
* corners go square, and a focused button rises above
|
|
16
|
+
* the neighbours so its whole ring shows.
|
|
17
|
+
* framed the buttons sit inside a bordered frame: a `$rim` edge,
|
|
18
|
+
* a 4px corner and 2px of padding on the panel ground, the
|
|
19
|
+
* buttons' own corners cut to 1px so the two radii stay
|
|
20
|
+
* concentric (4 − 2 − 1).
|
|
21
|
+
*
|
|
22
|
+
* Attached rides gui's own `XGroup`, which already squares the corners between
|
|
23
|
+
* items by placement (`XGroup.Item` zeroes the connecting radii of every child it
|
|
24
|
+
* wraps); this file adds the 1px overlap and the focus lift gui does not draw.
|
|
25
|
+
* Unattached is a plain row with a 2px gap.
|
|
26
|
+
*
|
|
27
|
+
* `size`, `variant` and `tone` set here reach every Button inside through
|
|
28
|
+
* context, and a Button that names its own keeps it.
|
|
29
|
+
*/
|
|
30
|
+
const gui_1 = require("@hanzo/gui");
|
|
31
|
+
const react_1 = require("react");
|
|
32
|
+
const slot_1 = require("./slot.cjs");
|
|
33
|
+
exports.ButtonGroupContext = (0, react_1.createContext)(null);
|
|
34
|
+
/** The frame: a $rim edge, 4px corner, 2px padding, on the panel ground. */
|
|
35
|
+
const FRAME = { borderWidth: 1, borderColor: '$rim', rounded: '$xs', p: '$0.5', bg: '$panel' };
|
|
36
|
+
function ButtonGroup({ attached = true, framed = false, size, variant, tone, children, ...props }) {
|
|
37
|
+
const items = react_1.Children.toArray(children).filter(react_1.isValidElement);
|
|
38
|
+
const ctx = { size, variant, tone, framed };
|
|
39
|
+
const frame = framed ? FRAME : null;
|
|
40
|
+
if (!attached)
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(exports.ButtonGroupContext.Provider, { value: ctx, children: (0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('button-group'), role: "group", display: "inline-flex", self: "flex-start", items: "center", gap: "$0.5", ...frame, ...props, children: items }) }));
|
|
42
|
+
return ((0, jsx_runtime_1.jsx)(exports.ButtonGroupContext.Provider, { value: ctx, children: (0, jsx_runtime_1.jsx)(gui_1.XGroup, { ...(0, slot_1.slot)('button-group'), "data-attached": "", role: "group", unstyled: true, display: "inline-flex", self: "flex-start", items: "center", ...frame, ...props, children: items.map((child, i) => ((0, jsx_runtime_1.jsx)(gui_1.XGroup.Item, { ...(i > 0 ? { ml: -1 } : null), focusStyle: { zIndex: 1 }, children: child }, child.key ?? i))) }) }));
|
|
43
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ButtonGroup — buttons joined into one control: "Update view" with its chevron
|
|
3
|
+
* menu, a cell's hover actions, a diagram's zoom pair.
|
|
4
|
+
*
|
|
5
|
+
* Two independent choices, as twenty-ui's ButtonGroup has them (MIT, NOTICE):
|
|
6
|
+
*
|
|
7
|
+
* attached (default) the buttons share their edges — each after the first
|
|
8
|
+
* steps 1px back over its neighbour's border, the inner
|
|
9
|
+
* corners go square, and a focused button rises above
|
|
10
|
+
* the neighbours so its whole ring shows.
|
|
11
|
+
* framed the buttons sit inside a bordered frame: a `$rim` edge,
|
|
12
|
+
* a 4px corner and 2px of padding on the panel ground, the
|
|
13
|
+
* buttons' own corners cut to 1px so the two radii stay
|
|
14
|
+
* concentric (4 − 2 − 1).
|
|
15
|
+
*
|
|
16
|
+
* Attached rides gui's own `XGroup`, which already squares the corners between
|
|
17
|
+
* items by placement (`XGroup.Item` zeroes the connecting radii of every child it
|
|
18
|
+
* wraps); this file adds the 1px overlap and the focus lift gui does not draw.
|
|
19
|
+
* Unattached is a plain row with a 2px gap.
|
|
20
|
+
*
|
|
21
|
+
* `size`, `variant` and `tone` set here reach every Button inside through
|
|
22
|
+
* context, and a Button that names its own keeps it.
|
|
23
|
+
*/
|
|
24
|
+
import { XStack } from '@hanzo/gui';
|
|
25
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
26
|
+
import type { ButtonSize, ButtonTone, ButtonVariant } from './button.js';
|
|
27
|
+
/** What a Button inside a group takes when it names none of its own. */
|
|
28
|
+
export type ButtonGroupDefaults = {
|
|
29
|
+
size?: ButtonSize;
|
|
30
|
+
variant?: ButtonVariant;
|
|
31
|
+
tone?: ButtonTone;
|
|
32
|
+
framed?: boolean;
|
|
33
|
+
};
|
|
34
|
+
export declare const ButtonGroupContext: import("react").Context<ButtonGroupDefaults | null>;
|
|
35
|
+
export type ButtonGroupProps = Omit<ComponentProps<typeof XStack>, 'children'> & {
|
|
36
|
+
/** The buttons share their edges (default) or stand 2px apart. */
|
|
37
|
+
attached?: boolean;
|
|
38
|
+
/** The buttons sit inside a bordered frame. */
|
|
39
|
+
framed?: boolean;
|
|
40
|
+
size?: ButtonSize;
|
|
41
|
+
variant?: ButtonVariant;
|
|
42
|
+
tone?: ButtonTone;
|
|
43
|
+
/** Names the group for assistive technology, which reads it as one control. */
|
|
44
|
+
'aria-label'?: string;
|
|
45
|
+
children?: ReactNode;
|
|
46
|
+
};
|
|
47
|
+
export declare function ButtonGroup({ attached, framed, size, variant, tone, children, ...props }: ButtonGroupProps): import("react").JSX.Element;
|
|
48
|
+
//# sourceMappingURL=button-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/button-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAU,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAA2C,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACpG,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGrE,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAErH,eAAO,MAAM,kBAAkB,qDAAkE,CAAA;AAEjG,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/E,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAKD,wBAAgB,WAAW,CAAC,EAC1B,QAAe,EACf,MAAc,EACd,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAsClB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* ButtonGroup — buttons joined into one control: "Update view" with its chevron
|
|
5
|
+
* menu, a cell's hover actions, a diagram's zoom pair.
|
|
6
|
+
*
|
|
7
|
+
* Two independent choices, as twenty-ui's ButtonGroup has them (MIT, NOTICE):
|
|
8
|
+
*
|
|
9
|
+
* attached (default) the buttons share their edges — each after the first
|
|
10
|
+
* steps 1px back over its neighbour's border, the inner
|
|
11
|
+
* corners go square, and a focused button rises above
|
|
12
|
+
* the neighbours so its whole ring shows.
|
|
13
|
+
* framed the buttons sit inside a bordered frame: a `$rim` edge,
|
|
14
|
+
* a 4px corner and 2px of padding on the panel ground, the
|
|
15
|
+
* buttons' own corners cut to 1px so the two radii stay
|
|
16
|
+
* concentric (4 − 2 − 1).
|
|
17
|
+
*
|
|
18
|
+
* Attached rides gui's own `XGroup`, which already squares the corners between
|
|
19
|
+
* items by placement (`XGroup.Item` zeroes the connecting radii of every child it
|
|
20
|
+
* wraps); this file adds the 1px overlap and the focus lift gui does not draw.
|
|
21
|
+
* Unattached is a plain row with a 2px gap.
|
|
22
|
+
*
|
|
23
|
+
* `size`, `variant` and `tone` set here reach every Button inside through
|
|
24
|
+
* context, and a Button that names its own keeps it.
|
|
25
|
+
*/
|
|
26
|
+
import { XGroup, XStack } from '@hanzo/gui';
|
|
27
|
+
import { Children, createContext, isValidElement } from 'react';
|
|
28
|
+
import { slot } from './slot.js';
|
|
29
|
+
export const ButtonGroupContext = /* @__PURE__ */ createContext(null);
|
|
30
|
+
/** The frame: a $rim edge, 4px corner, 2px padding, on the panel ground. */
|
|
31
|
+
const FRAME = { borderWidth: 1, borderColor: '$rim', rounded: '$xs', p: '$0.5', bg: '$panel' };
|
|
32
|
+
export function ButtonGroup({ attached = true, framed = false, size, variant, tone, children, ...props }) {
|
|
33
|
+
const items = Children.toArray(children).filter(isValidElement);
|
|
34
|
+
const ctx = { size, variant, tone, framed };
|
|
35
|
+
const frame = framed ? FRAME : null;
|
|
36
|
+
if (!attached)
|
|
37
|
+
return (_jsx(ButtonGroupContext.Provider, { value: ctx, children: _jsx(XStack, { ...slot('button-group'), role: "group", display: "inline-flex", self: "flex-start", items: "center", gap: "$0.5", ...frame, ...props, children: items }) }));
|
|
38
|
+
return (_jsx(ButtonGroupContext.Provider, { value: ctx, children: _jsx(XGroup, { ...slot('button-group'), "data-attached": "", role: "group", unstyled: true, display: "inline-flex", self: "flex-start", items: "center", ...frame, ...props, children: items.map((child, i) => (_jsx(XGroup.Item, { ...(i > 0 ? { ml: -1 } : null), focusStyle: { zIndex: 1 }, children: child }, child.key ?? i))) }) }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=button-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-group.js","sourceRoot":"","sources":["../../../src/backends/gui/button-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAuC,MAAM,OAAO,CAAA;AAEpG,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAK7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC,aAAa,CAA6B,IAAI,CAAC,CAAA;AAejG,4EAA4E;AAC5E,MAAM,KAAK,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAW,CAAA;AAEvG,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,KAAK,EACd,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACS;IACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IAEnC,IAAI,CAAC,QAAQ;QACX,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,YACrC,KAAC,MAAM,OAAK,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,MAAM,KAAK,KAAK,KAAM,KAAK,YAClI,KAAK,GACC,GACmB,CAC/B,CAAA;IAEH,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,YACrC,KAAC,MAAM,OACD,IAAI,CAAC,cAAc,CAAC,mBACV,EAAE,EAChB,IAAI,EAAC,OAAO,EACZ,QAAQ,QACR,OAAO,EAAC,aAAa,EACrB,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,QAAQ,KACV,KAAK,KACJ,KAAgB,YAEpB,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAIvB,KAAC,MAAM,CAAC,IAAI,OAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YACzF,KAAK,IADU,KAAK,CAAC,GAAG,IAAI,CAAC,CAElB,CACf,CAAC,GACK,GACmB,CAC/B,CAAA;AACH,CAAC"}
|
|
@@ -31,34 +31,65 @@ const react_1 = require("react");
|
|
|
31
31
|
const sx_1 = require("../../sx.cjs");
|
|
32
32
|
const ink_1 = require("./ink.cjs");
|
|
33
33
|
const gesture_1 = require("./gesture.cjs");
|
|
34
|
+
const density_1 = require("./density.cjs");
|
|
35
|
+
const button_group_1 = require("./button-group.cjs");
|
|
36
|
+
const tooltip_1 = require("./tooltip.cjs");
|
|
37
|
+
const shortcut_1 = require("./shortcut.cjs");
|
|
34
38
|
/** The floor every size takes under a coarse pointer: a thumb, not a cursor. */
|
|
35
39
|
const TOUCH = 44;
|
|
40
|
+
/**
|
|
41
|
+
* `xs` (24), `icon-xs` (24) and `icon-2xs` (20) are the record density: the
|
|
42
|
+
* quiet buttons a table cell, a chip, a kanban header and a menu row hold
|
|
43
|
+
* (twenty-ui's sm and xs, MIT). They sit beside 13px text, carry a 14px icon and
|
|
44
|
+
* keep the 44px press area under a coarse pointer like every other size.
|
|
45
|
+
*/
|
|
36
46
|
const HEIGHT = {
|
|
37
47
|
default: 36,
|
|
38
48
|
sm: 32,
|
|
49
|
+
xs: 24,
|
|
39
50
|
lg: 40,
|
|
40
51
|
icon: 36,
|
|
41
52
|
'icon-sm': 32,
|
|
53
|
+
'icon-xs': 24,
|
|
54
|
+
'icon-2xs': 20,
|
|
42
55
|
'icon-lg': 40,
|
|
43
56
|
};
|
|
44
57
|
/** Type scale per size — applied to the Text host, which is what renders it. */
|
|
45
58
|
const TYPE = {
|
|
46
59
|
default: '$3',
|
|
47
60
|
sm: '$2',
|
|
61
|
+
xs: '$2',
|
|
48
62
|
lg: '$3',
|
|
49
63
|
icon: '$3',
|
|
50
64
|
'icon-sm': '$2',
|
|
65
|
+
'icon-xs': '$2',
|
|
66
|
+
'icon-2xs': '$1',
|
|
51
67
|
'icon-lg': '$3',
|
|
52
68
|
};
|
|
69
|
+
/** The icon each size draws a `startIcon`/`endIcon` at, when the icon names no size of its own. */
|
|
70
|
+
const GLYPH = {
|
|
71
|
+
default: 16,
|
|
72
|
+
sm: 14,
|
|
73
|
+
xs: 14,
|
|
74
|
+
lg: 16,
|
|
75
|
+
icon: 16,
|
|
76
|
+
'icon-sm': 16,
|
|
77
|
+
'icon-xs': 14,
|
|
78
|
+
'icon-2xs': 14,
|
|
79
|
+
'icon-lg': 20,
|
|
80
|
+
};
|
|
53
81
|
/** The spinner's CEILING, paired 1:1 with TYPE above. A ceiling rather than a
|
|
54
82
|
* size for the reason the height ladder gives: a pin clips, a bound does not.
|
|
55
83
|
* A spinner stands in for the label, so it may not outgrow the label's line. */
|
|
56
84
|
const SPIN = {
|
|
57
85
|
default: 16,
|
|
58
86
|
sm: 14,
|
|
87
|
+
xs: 12,
|
|
59
88
|
lg: 16,
|
|
60
89
|
icon: 16,
|
|
61
90
|
'icon-sm': 14,
|
|
91
|
+
'icon-xs': 12,
|
|
92
|
+
'icon-2xs': 12,
|
|
62
93
|
'icon-lg': 16,
|
|
63
94
|
};
|
|
64
95
|
const Frame = (0, gui_1.styled)(gui_1.Button.Frame, {
|
|
@@ -156,25 +187,162 @@ const Frame = (0, gui_1.styled)(gui_1.Button.Frame, {
|
|
|
156
187
|
// TOUCH, the target a thumb lands on; a mouse keeps the designed sizes.
|
|
157
188
|
default: { height: 'auto', minHeight: HEIGHT.default, px: '$4', $touchable: { minHeight: TOUCH } },
|
|
158
189
|
sm: { height: 'auto', minHeight: HEIGHT.sm, px: '$3', gap: '$1.5', $touchable: { minHeight: TOUCH } },
|
|
190
|
+
xs: { height: 'auto', minHeight: HEIGHT.xs, px: '$2', gap: '$1', $touchable: { minHeight: TOUCH } },
|
|
159
191
|
lg: { height: 'auto', minHeight: HEIGHT.lg, px: '$6', $touchable: { minHeight: TOUCH } },
|
|
160
192
|
icon: { height: 'auto', minHeight: HEIGHT.icon, width: 'auto', minWidth: HEIGHT.icon, px: 0, $touchable: { minHeight: TOUCH, minWidth: TOUCH } },
|
|
161
193
|
'icon-sm': { height: 'auto', minHeight: HEIGHT['icon-sm'], width: 'auto', minWidth: HEIGHT['icon-sm'], px: 0, $touchable: { minHeight: TOUCH, minWidth: TOUCH } },
|
|
194
|
+
'icon-xs': { height: 'auto', minHeight: HEIGHT['icon-xs'], width: 'auto', minWidth: HEIGHT['icon-xs'], px: 0, $touchable: { minHeight: TOUCH, minWidth: TOUCH } },
|
|
195
|
+
'icon-2xs': { height: 'auto', minHeight: HEIGHT['icon-2xs'], width: 'auto', minWidth: HEIGHT['icon-2xs'], px: 0, rounded: '$xs', $touchable: { minHeight: TOUCH, minWidth: TOUCH } },
|
|
162
196
|
'icon-lg': { height: 'auto', minHeight: HEIGHT['icon-lg'], width: 'auto', minWidth: HEIGHT['icon-lg'], px: 0, $touchable: { minHeight: TOUCH, minWidth: TOUCH } },
|
|
163
197
|
},
|
|
198
|
+
// The record density's gutter: 8 beside the label and 4 between an icon and
|
|
199
|
+
// it, on the 32px box `compact` gives a size-less Button. After `size`, so
|
|
200
|
+
// it wins over the 12 `sm` states; passed only when the density chose the
|
|
201
|
+
// size, so a named size — an icon size, whose gutter is its width, above all
|
|
202
|
+
// — keeps its own.
|
|
203
|
+
compact: {
|
|
204
|
+
true: { px: '$2', gap: '$1' },
|
|
205
|
+
},
|
|
206
|
+
// After `variant`, so a tone restates the variant's colours rather than
|
|
207
|
+
// racing them. A function of the variant because the axis means a different
|
|
208
|
+
// pair per shape: the edge and the ink of an outline, the tint of a soft
|
|
209
|
+
// button, the fill of a solid one. `neutral` is the variant as it is.
|
|
210
|
+
tone: (tone, { props }) => {
|
|
211
|
+
const t = TONES[tone];
|
|
212
|
+
if (!t)
|
|
213
|
+
return {};
|
|
214
|
+
switch (props.variant) {
|
|
215
|
+
case 'primary':
|
|
216
|
+
return { bg: t.fill, color: t.fillInk, borderColor: 'transparent', hoverStyle: { bg: t.fillHover, borderColor: 'transparent' } };
|
|
217
|
+
case 'secondary':
|
|
218
|
+
return { bg: t.soft, color: t.ink, hoverStyle: { bg: t.softHover, opacity: 1 } };
|
|
219
|
+
case 'ghost':
|
|
220
|
+
return { color: t.ink, hoverStyle: { bg: t.tint } };
|
|
221
|
+
case 'default':
|
|
222
|
+
case 'outline':
|
|
223
|
+
case undefined:
|
|
224
|
+
return { color: t.ink, borderColor: t.edge, hoverStyle: { bg: t.tint, borderColor: t.edge } };
|
|
225
|
+
default:
|
|
226
|
+
return { color: t.ink };
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
// Lifted off the page: the ladder's first rung (the `elevation-1` class the
|
|
230
|
+
// component adds — lit edge and small drop, owned by glass.css) and, on an
|
|
231
|
+
// outline, the page's ground with the stronger edge, so it reads as raised
|
|
232
|
+
// rather than as a hole (twenty-ui's `elevated`). Never `--shadow-sm`: that
|
|
233
|
+
// size ramp is common property and glass.test holds the ladder off it.
|
|
234
|
+
elevated: (on, { props }) => on
|
|
235
|
+
? {
|
|
236
|
+
// The page's ground, through `--surface-page`. Neither `$background`
|
|
237
|
+
// nor `var(--background)` will do: gui redeclares `--background` on
|
|
238
|
+
// its Button sub-theme, so inside a button both read gui's button grey
|
|
239
|
+
// (rgb(36,36,36) measured). `--surface-page` is declared on :root as
|
|
240
|
+
// `var(--background)` and inherits RESOLVED, so it is the page's.
|
|
241
|
+
...(props.variant === 'default' || props.variant === 'outline' || props.variant === undefined
|
|
242
|
+
? { bg: 'var(--surface-page)', borderColor: '$rim' }
|
|
243
|
+
: null),
|
|
244
|
+
}
|
|
245
|
+
: {},
|
|
246
|
+
fullWidth: {
|
|
247
|
+
true: { width: '100%', self: 'stretch' },
|
|
248
|
+
},
|
|
249
|
+
round: {
|
|
250
|
+
true: { rounded: '$10' },
|
|
251
|
+
},
|
|
164
252
|
disabled: {
|
|
165
253
|
true: { opacity: 0.5, pointerEvents: 'none', cursor: 'default' },
|
|
166
254
|
},
|
|
167
255
|
},
|
|
168
256
|
defaultVariants: { variant: 'default', size: 'default' },
|
|
169
257
|
});
|
|
258
|
+
/** Each tone's pairs: ink and edge for an outline, tint under the pointer, the
|
|
259
|
+
* soft fill and its hover, the solid fill, its ink and its hover. */
|
|
260
|
+
const TONES = {
|
|
261
|
+
accent: {
|
|
262
|
+
ink: 'var(--primary)',
|
|
263
|
+
edge: 'var(--primary)',
|
|
264
|
+
tint: '$hover',
|
|
265
|
+
soft: '$hover',
|
|
266
|
+
softHover: '$raised',
|
|
267
|
+
fill: 'var(--primary)',
|
|
268
|
+
fillInk: 'var(--primary-foreground)',
|
|
269
|
+
fillHover: 'var(--primary-hover)',
|
|
270
|
+
},
|
|
271
|
+
danger: {
|
|
272
|
+
ink: '$bad',
|
|
273
|
+
edge: '$red7',
|
|
274
|
+
tint: 'var(--state-error-bg)',
|
|
275
|
+
soft: 'var(--state-error-bg)',
|
|
276
|
+
softHover: '$red4',
|
|
277
|
+
fill: 'var(--destructive)',
|
|
278
|
+
fillInk: 'var(--destructive-foreground)',
|
|
279
|
+
fillHover: 'var(--destructive-hover)',
|
|
280
|
+
},
|
|
281
|
+
success: {
|
|
282
|
+
ink: '$good',
|
|
283
|
+
edge: '$green7',
|
|
284
|
+
tint: 'var(--state-success-bg)',
|
|
285
|
+
soft: 'var(--state-success-bg)',
|
|
286
|
+
softHover: '$green4',
|
|
287
|
+
fill: '$green9',
|
|
288
|
+
fillInk: '#ffffff',
|
|
289
|
+
fillHover: '$green10',
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
/** The ink a tone gives its icons, which read colour from a prop and not from the label's text context. */
|
|
293
|
+
const toneInk = (tone, variant) => {
|
|
294
|
+
if (tone === 'neutral')
|
|
295
|
+
return undefined;
|
|
296
|
+
return variant === 'primary' ? TONES[tone].fillInk : TONES[tone].ink;
|
|
297
|
+
};
|
|
170
298
|
/**
|
|
171
299
|
* A stable class handle for hosts that hook buttons from CSS. Styling lives in
|
|
172
300
|
* the tokens; this only names the variant and size.
|
|
173
301
|
*/
|
|
174
302
|
const style_1 = require("../../style.cjs");
|
|
175
303
|
Object.defineProperty(exports, "buttonVariants", { enumerable: true, get: function () { return style_1.buttonVariants; } });
|
|
176
|
-
|
|
177
|
-
|
|
304
|
+
/**
|
|
305
|
+
* A Lucide-style icon element, given the size it is drawn at and the label's
|
|
306
|
+
* colour, each only where it names none of its own. A gui icon reads its colour
|
|
307
|
+
* from a prop, not from the text context the label's colour rides on, so a
|
|
308
|
+
* subtle button's icon would otherwise stay at full ink beside a quiet label.
|
|
309
|
+
*/
|
|
310
|
+
const glyph = (icon, size, color) => {
|
|
311
|
+
if (!(0, react_1.isValidElement)(icon))
|
|
312
|
+
return icon;
|
|
313
|
+
const own = icon.props;
|
|
314
|
+
const next = { ...(own.size == null ? { size } : null), ...(color && own.color == null ? { color } : null) };
|
|
315
|
+
return Object.keys(next).length ? (0, react_1.cloneElement)(icon, next) : icon;
|
|
316
|
+
};
|
|
317
|
+
/** The two record sizes whose child IS the icon, so the button draws it at its glyph. */
|
|
318
|
+
const SMALL_ICON = new Set(['icon-xs', 'icon-2xs']);
|
|
319
|
+
/** How long a pointer rests on a button before its tooltip shows (twenty-ui's 1000ms). */
|
|
320
|
+
const TOOLTIP_DELAY = 1000;
|
|
321
|
+
function Button({ tooltip, ...props }) {
|
|
322
|
+
if (tooltip == null || tooltip === false)
|
|
323
|
+
return (0, jsx_runtime_1.jsx)(Pressable, { ...props });
|
|
324
|
+
const label = typeof tooltip === 'string' && props['aria-label'] == null ? { 'aria-label': tooltip } : null;
|
|
325
|
+
return ((0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip, { delay: TOOLTIP_DELAY, placement: "bottom", children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipTrigger, { asChild: true, children: (0, jsx_runtime_1.jsx)(Pressable, { ...props, ...(props.disabled ? { focusableWhenDisabled: true } : null), ...label }) }), (0, jsx_runtime_1.jsx)(tooltip_1.TooltipContent, { children: tooltip })] }));
|
|
326
|
+
}
|
|
327
|
+
function Pressable({ className, variant: own, size, asChild = false, isLoading = false, disabled, startIcon, endIcon, shortcut, shortcutJoinLabel, emphasis = 'standard', tone: ownTone, loadingPosition = 'start', fullWidth, elevated, shape, focusableWhenDisabled, children, ...props }) {
|
|
328
|
+
const density = (0, density_1.useDensity)();
|
|
329
|
+
const group = (0, react_1.useContext)(button_group_1.ButtonGroupContext);
|
|
330
|
+
const variant = own ?? group?.variant ?? 'default';
|
|
331
|
+
const tone = ownTone ?? group?.tone ?? 'neutral';
|
|
332
|
+
const resolved = size ?? group?.size ?? (density === 'compact' ? 'sm' : 'default');
|
|
333
|
+
// Only the box the density chose takes its gutter: a named size is a decision.
|
|
334
|
+
const compact = density === 'compact' && size == null && group?.size == null;
|
|
335
|
+
const quiet = emphasis === 'subtle' ? { color: '$hint' } : null;
|
|
336
|
+
const tint = emphasis === 'subtle' ? '$hint' : toneInk(tone, variant);
|
|
337
|
+
// The record density's label weight: medium, as twenty-ui sets every button.
|
|
338
|
+
const weight = density === 'compact' ? { fontWeight: '500' } : null;
|
|
339
|
+
// Disabled but focusable: the frame's `disabled` would take pointer events and
|
|
340
|
+
// focus away, so the state is said in ARIA and the press is refused here.
|
|
341
|
+
const inert = !!disabled && !!focusableWhenDisabled;
|
|
342
|
+
const center = isLoading && loadingPosition === 'center';
|
|
343
|
+
// aria-hidden: the label stays the name and `disabled` says it is busy; an
|
|
344
|
+
// unnamed progressbar beside it is what axe reports.
|
|
345
|
+
const spinner = (0, jsx_runtime_1.jsx)(gui_1.Spinner, { "aria-hidden": true, size: "small", maxW: SPIN[resolved], maxH: SPIN[resolved] });
|
|
178
346
|
// gui's own `asChild` cannot merge into the child here: the Button frame bakes
|
|
179
347
|
// a `render: <button>`, so asChild WRAPS the child in a button and drops every
|
|
180
348
|
// compiled style (measured: `<button class="is_View "><a>…</a></button>`).
|
|
@@ -188,7 +356,12 @@ function Button({ className, variant = 'default', size = 'default', asChild = fa
|
|
|
188
356
|
// default, as `render` below records) so it cannot say otherwise. A caller's
|
|
189
357
|
// `role` still lands, from the spread after it.
|
|
190
358
|
const link = host != null && host.props.href != null;
|
|
191
|
-
return ((0, jsx_runtime_1.jsxs)(Frame, { "data-slot": "button", "data-variant": variant
|
|
359
|
+
return ((0, jsx_runtime_1.jsxs)(Frame, { "data-slot": "button", "data-variant": variant, "data-size": resolved, ...(tone !== 'neutral' ? { 'data-tone': tone } : null), variant: variant, size: resolved, ...(compact ? { compact: true } : null), ...(tone !== 'neutral' ? { tone } : null), ...(elevated ? { elevated: true } : null), ...(fullWidth ? { fullWidth: true } : null), ...(shape === 'round' ? { round: true } : null), ...(group?.framed ? { rounded: 1 } : null), ...(center ? { position: 'relative' } : null), ...(host
|
|
192
360
|
? { render: (0, react_1.createElement)(host.type, { ...host.props, children: undefined }) }
|
|
193
|
-
: null), ...(link ? { role: undefined } : null), disabled: disabled || isLoading, ...(0, gesture_1.touch)(HEIGHT[resolved], 44, 'y'), ...(0, sx_1.sx)((0, style_1.buttonVariants)({ variant, size, className })), ...props, children: [isLoading && (0, jsx_runtime_1.jsx)(gui_1.
|
|
361
|
+
: null), ...(link ? { role: undefined } : null), disabled: inert ? false : disabled || isLoading, ...(inert ? { 'aria-disabled': true, opacity: 0.5, cursor: 'not-allowed' } : null), ...(0, gesture_1.touch)(HEIGHT[resolved], 44, 'y'), ...(0, sx_1.sx)((0, style_1.buttonVariants)({ variant, size, className: elevated ? [className, 'elevation-1'].filter(Boolean).join(' ') : className })), ...props, ...(inert ? { onPress: undefined, onClick: (e) => e?.preventDefault?.() } : null), children: [isLoading && loadingPosition === 'start' ? spinner : null, center ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { position: "absolute", t: 0, b: 0, l: 0, r: 0, items: "center", justify: "center", pointerEvents: "none", children: spinner })) : null, startIcon ? glyph(startIcon, GLYPH[resolved], tint) : null, (0, ink_1.ink)(SMALL_ICON.has(resolved) ? glyph(body, GLYPH[resolved], tint) : body, gui_1.Button.Text, {
|
|
362
|
+
fontSize: TYPE[resolved],
|
|
363
|
+
...weight,
|
|
364
|
+
...quiet,
|
|
365
|
+
...(center ? { opacity: 0 } : null),
|
|
366
|
+
}), shortcut && shortcut.length ? ((0, jsx_runtime_1.jsx)(shortcut_1.Shortcut, { keys: shortcut, variant: "button", sequenceJoinLabel: shortcutJoinLabel, ...(center ? { opacity: 0 } : null) })) : null, endIcon ? glyph(endIcon, GLYPH[resolved], tint) : null, isLoading && loadingPosition === 'end' ? spinner : null] }));
|
|
194
367
|
}
|