@hanzo/ui 8.27.90 → 8.28.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-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/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 +93 -7
- package/dist/backends/gui/index.d.ts +45 -2
- package/dist/backends/gui/index.d.ts.map +1 -1
- package/dist/backends/gui/index.js +35 -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/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 +33 -0
- package/dist/gallery/records.d.ts +2 -0
- package/dist/gallery/records.d.ts.map +1 -0
- package/dist/gallery/records.js +31 -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 +1613 -265
- package/dist/gallery.js +3 -9
- package/dist/gallery.js.map +1 -1
- package/dist/gui-config.cjs +37 -7
- package/dist/gui-config.d.ts +11 -3
- package/dist/gui-config.d.ts.map +1 -1
- package/dist/gui-config.js +37 -7
- package/dist/gui-config.js.map +1 -1
- package/dist/index.cjs +61 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +61 -2
- package/dist/index.node.js +7 -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/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/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/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/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/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/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/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/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 +1479 -136
- package/dist/theme.css +963 -9
- package/package.json +2 -1
|
@@ -1,15 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Avatar —
|
|
2
|
+
* Avatar — an image with an initial or an icon behind it.
|
|
3
3
|
*
|
|
4
4
|
* @hanzogui/avatar owns the load/error state machine and the fallback delay, so
|
|
5
5
|
* this only names the three parts and dresses them in tokens.
|
|
6
|
+
*
|
|
7
|
+
* Two looks, one component. With no `size`, it is the account avatar every
|
|
8
|
+
* Hanzo surface already draws: a 32px circle, its fallback on the edge rung.
|
|
9
|
+
* With a `size` it is a RECORD avatar (re-expressed from twenty-ui's Avatar,
|
|
10
|
+
* MIT, see NOTICE): xs 12 · sm 14 · md 16 · lg 24 · xl 40, square by default
|
|
11
|
+
* (2px), rounded (4px) or a circle, and its initial drawn in the record's own
|
|
12
|
+
* hue — twenty-ui's string hash over `colorSeed` (a record id, so a rename keeps
|
|
13
|
+
* the colour) or `name`, the hue's step 12 on step 4 (soft) or on step 5 inside
|
|
14
|
+
* a step 6 edge (outline). Given `src` or `name` directly it draws its own
|
|
15
|
+
* image and fallback; given children it is the compound it always was.
|
|
6
16
|
*/
|
|
7
17
|
import { Avatar as GuiAvatar } from '@hanzo/gui';
|
|
8
|
-
import type
|
|
9
|
-
export type
|
|
18
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
19
|
+
export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
20
|
+
export type AvatarShape = 'square' | 'rounded' | 'circle';
|
|
21
|
+
type GuiSize = ComponentProps<typeof GuiAvatar>['size'];
|
|
22
|
+
export type AvatarProps = Omit<ComponentProps<typeof GuiAvatar>, 'size'> & {
|
|
23
|
+
/**
|
|
24
|
+
* A record size (xs…xl), or — as before the record sizes — any box gui's
|
|
25
|
+
* Avatar takes (`size={64}`), which keeps the circular account look. Unset,
|
|
26
|
+
* the 32px account avatar.
|
|
27
|
+
*/
|
|
28
|
+
size?: AvatarSize | GuiSize;
|
|
29
|
+
/** Square (default for a record size), rounded, or circle (the default with no size). */
|
|
30
|
+
shape?: AvatarShape;
|
|
31
|
+
/** The image. With `name`, the avatar draws its own image and fallback. */
|
|
32
|
+
src?: string | null;
|
|
33
|
+
/** Whose avatar: its first character is the initial, and it seeds the colour. */
|
|
34
|
+
name?: string | null;
|
|
35
|
+
/** What the colour is derived from, when it should outlive the name (a record id). */
|
|
36
|
+
colorSeed?: string;
|
|
37
|
+
/** An icon in place of the initial; the avatar then takes its parent's ground. */
|
|
38
|
+
icon?: ReactNode;
|
|
39
|
+
/** `outline` draws the hue's edge around a lighter fill. */
|
|
40
|
+
variant?: 'soft' | 'outline';
|
|
41
|
+
/** A ground-coloured halo that separates stacked avatars. */
|
|
42
|
+
ring?: boolean;
|
|
43
|
+
/** Breathe while something about it is pending. */
|
|
44
|
+
pulsing?: boolean;
|
|
45
|
+
/** Makes the avatar a button; it gains a halo under the pointer. */
|
|
46
|
+
onPress?: () => void;
|
|
47
|
+
/** The image's accessible description. */
|
|
48
|
+
alt?: string;
|
|
49
|
+
};
|
|
10
50
|
export type AvatarImageProps = ComponentProps<typeof GuiAvatar.Image>;
|
|
11
51
|
export type AvatarFallbackProps = ComponentProps<typeof GuiAvatar.Fallback>;
|
|
12
|
-
|
|
52
|
+
/** The first character of the trimmed name, uppercased; `-` with none. */
|
|
53
|
+
export declare const initialOf: (name?: string | null) => string;
|
|
54
|
+
declare const Avatar: ({ size, shape, src, name, colorSeed, icon, variant, ring, pulsing, onPress, alt, children, style, ...props }: AvatarProps) => import("react").JSX.Element;
|
|
13
55
|
declare const AvatarImage: (props: AvatarImageProps) => import("react").JSX.Element;
|
|
14
56
|
/** Bare text needs a Text host to render on native; elements pass through. */
|
|
15
57
|
declare const AvatarFallback: ({ children, ...props }: AvatarFallbackProps) => import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/avatar.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/avatar.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,MAAM,IAAI,SAAS,EAAe,MAAM,YAAY,CAAA;AAE7D,OAAO,EAAgC,KAAK,cAAc,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAO5G,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AACzD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAiBzD,KAAK,OAAO,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG;IACzE;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IAC3B,yFAAyF;IACzF,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;AACrE,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAA;AAE3E,0EAA0E;AAC1E,eAAO,MAAM,SAAS,UAAW,MAAM,GAAG,IAAI,KAAG,MAGhD,CAAA;AAED,QAAA,MAAM,MAAM,iHAeT,WAAW,gCA0Db,CAAA;AAED,QAAA,MAAM,WAAW,UAAW,gBAAgB,gCAE3C,CAAA;AAED,8EAA8E;AAC9E,QAAA,MAAM,cAAc,2BAA4B,mBAAmB,gCAgBlE,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -1,14 +1,63 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
/**
|
|
4
|
-
* Avatar —
|
|
4
|
+
* Avatar — an image with an initial or an icon behind it.
|
|
5
5
|
*
|
|
6
6
|
* @hanzogui/avatar owns the load/error state machine and the fallback delay, so
|
|
7
7
|
* this only names the three parts and dresses them in tokens.
|
|
8
|
+
*
|
|
9
|
+
* Two looks, one component. With no `size`, it is the account avatar every
|
|
10
|
+
* Hanzo surface already draws: a 32px circle, its fallback on the edge rung.
|
|
11
|
+
* With a `size` it is a RECORD avatar (re-expressed from twenty-ui's Avatar,
|
|
12
|
+
* MIT, see NOTICE): xs 12 · sm 14 · md 16 · lg 24 · xl 40, square by default
|
|
13
|
+
* (2px), rounded (4px) or a circle, and its initial drawn in the record's own
|
|
14
|
+
* hue — twenty-ui's string hash over `colorSeed` (a record id, so a rename keeps
|
|
15
|
+
* the colour) or `name`, the hue's step 12 on step 4 (soft) or on step 5 inside
|
|
16
|
+
* a step 6 edge (outline). Given `src` or `name` directly it draws its own
|
|
17
|
+
* image and fallback; given children it is the compound it always was.
|
|
8
18
|
*/
|
|
9
19
|
import { Avatar as GuiAvatar, SizableText } from '@hanzo/gui';
|
|
20
|
+
import { hueOf } from '@hanzo/tokens/data';
|
|
21
|
+
import { cloneElement, isValidElement } from 'react';
|
|
22
|
+
import { useTone } from './hue.js';
|
|
23
|
+
import { press, RING } from './press.js';
|
|
10
24
|
const SIZE = 32;
|
|
11
|
-
|
|
25
|
+
/**
|
|
26
|
+
* The record sizes: box, and the initial's rung. xs and sm sit on Hanzo's text
|
|
27
|
+
* floor, 12px (design's --text-floor): twenty-ui draws 8 and 10px initials there,
|
|
28
|
+
* which Hanzo does not render. The box clips, so the glyph never spills.
|
|
29
|
+
*/
|
|
30
|
+
const RECORD = {
|
|
31
|
+
xs: { box: 12, font: '$1' },
|
|
32
|
+
sm: { box: 14, font: '$1' },
|
|
33
|
+
md: { box: 16, font: '$1' },
|
|
34
|
+
lg: { box: 24, font: '$2' },
|
|
35
|
+
xl: { box: 40, font: '$4' },
|
|
36
|
+
};
|
|
37
|
+
const RADIUS = { square: '$2xs', rounded: '$xs', circle: '$10' };
|
|
38
|
+
/** The first character of the trimmed name, uppercased; `-` with none. */
|
|
39
|
+
export const initialOf = (name) => {
|
|
40
|
+
const first = [...(name ?? '').trim()][0];
|
|
41
|
+
return first ? first.toLocaleUpperCase() : '-';
|
|
42
|
+
};
|
|
43
|
+
const Avatar = ({ size, shape, src, name, colorSeed, icon, variant = 'soft', ring = false, pulsing = false, onPress, alt, children, style, ...props }) => {
|
|
44
|
+
const record = typeof size === 'string' && size in RECORD ? RECORD[size] : null;
|
|
45
|
+
// A box gui's Avatar takes directly: the account look at that size.
|
|
46
|
+
const box = record?.box ?? (size != null && !record ? size : SIZE);
|
|
47
|
+
const corner = RADIUS[shape ?? (record ? 'square' : 'circle')];
|
|
48
|
+
const seed = colorSeed ?? name ?? '';
|
|
49
|
+
const { style: hueStyle, tone } = useTone(hueOf(seed), [4, 5, 6, 12]);
|
|
50
|
+
const own = children == null && (src != null || name != null || icon != null);
|
|
51
|
+
const trimmed = (name ?? '').trim();
|
|
52
|
+
const fallback = own ? (_jsx(AvatarFallback, { bg: icon ? 'transparent' : trimmed ? tone(variant === 'outline' ? 5 : 4) : '$hover', ...(variant === 'outline' && trimmed && !icon ? { borderWidth: 1, borderColor: tone(6) } : null), rounded: corner, children: icon ? (isValidElement(icon) && icon.props.size == null
|
|
53
|
+
? cloneElement(icon, { size: box })
|
|
54
|
+
: icon) : (_jsx(SizableText, { fontSize: (record?.font ?? '$2'), lineHeight: box, fontWeight: "500", color: trimmed ? tone(12) : '$hint', select: "none", children: initialOf(name) })) })) : null;
|
|
55
|
+
return (_jsxs(GuiAvatar, { "data-slot": "avatar", ...(record ? { 'data-size': size } : null), ...(onPress ? press(onPress) : null), circular: corner === '$10', size: box, ...(record || shape ? { rounded: corner } : null), shrink: 0, overflow: "hidden", ...(onPress ? { cursor: 'pointer', hoverStyle: { outlineColor: '$hover', outlineWidth: 4, outlineStyle: 'solid' }, focusVisibleStyle: RING } : null), ...(pulsing ? { 'data-motion': 'pulse' } : null), style: {
|
|
56
|
+
...(own && trimmed ? hueStyle : null),
|
|
57
|
+
...(ring ? { boxShadow: '0 0 0 1px var(--border), 0 0 0 3px var(--background)' } : null),
|
|
58
|
+
...style,
|
|
59
|
+
}, ...props, children: [own && src ? _jsx(AvatarImage, { src: src, ...(alt ? { alt } : null) }) : null, fallback, children] }));
|
|
60
|
+
};
|
|
12
61
|
const AvatarImage = (props) => (_jsx(GuiAvatar.Image, { "data-slot": "avatar-image", width: "100%", height: "100%", ...props }));
|
|
13
62
|
/** Bare text needs a Text host to render on native; elements pass through. */
|
|
14
63
|
const AvatarFallback = ({ children, ...props }) => (_jsx(GuiAvatar.Fallback, { "data-slot": "avatar-fallback", bg: "$edge", items: "center", justify: "center", ...props, children: typeof children === 'string' || typeof children === 'number' ? (_jsx(SizableText, { size: "$2", color: "$quiet", children: children })) : (children) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/backends/gui/avatar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/backends/gui/avatar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,12 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
14
14
|
* Surface and ink are two concerns, so they are two styled parts sharing one
|
|
15
15
|
* `variant` through a styled context — the frame owns background/border, the
|
|
16
16
|
* text owns color/weight/case. Nothing reads `variant` twice by hand.
|
|
17
|
+
*
|
|
18
|
+
* `size` xs 14 · sm 16 · md 18 and `shape="circle"` are the record counts — a
|
|
19
|
+
* navigation item's unread count, a filter's rule count — on the pill, with the
|
|
20
|
+
* `muted`, `accent` and `inherit` colours (re-expressed from twenty-ui's Badge,
|
|
21
|
+
* MIT, see NOTICE). With no `size` a badge is the 24px label it always was,
|
|
22
|
+
* named `lg`.
|
|
17
23
|
*/
|
|
18
24
|
const gui_1 = require("@hanzo/gui");
|
|
19
25
|
const sx_1 = require("../../sx.cjs");
|
|
@@ -54,10 +60,31 @@ const BadgeFrame = (0, gui_1.styled)(gui_1.XStack, {
|
|
|
54
60
|
link: { bg: 'transparent' },
|
|
55
61
|
inputAdornment: { bg: '$hover', px: '$2' },
|
|
56
62
|
tags: { bg: '$hover', borderColor: '$borderColor', rounded: '$3' },
|
|
63
|
+
muted: { bg: '$hover' },
|
|
64
|
+
accent: { bg: 'var(--primary)' },
|
|
65
|
+
// Its fill is 16% of whatever ink it sits in (inline, below): a count that
|
|
66
|
+
// takes its row's colour.
|
|
67
|
+
inherit: { bg: 'transparent' },
|
|
68
|
+
},
|
|
69
|
+
// After `variant`, so a record size's pill wins over a variant's radius.
|
|
70
|
+
size: {
|
|
71
|
+
xs: { minH: 14, height: 14, px: '$1', py: 0, gap: '$1', rounded: '$10' },
|
|
72
|
+
sm: { minH: 16, height: 16, px: '$2', py: 0, gap: '$1', rounded: '$10' },
|
|
73
|
+
md: { minH: 18, height: 18, px: '$1.5', py: 0, gap: '$0.5', rounded: '$10' },
|
|
74
|
+
lg: {},
|
|
75
|
+
},
|
|
76
|
+
circle: {
|
|
77
|
+
true: { px: 0, justify: 'center' },
|
|
57
78
|
},
|
|
58
79
|
},
|
|
59
80
|
defaultVariants: { variant: 'default' },
|
|
60
81
|
});
|
|
82
|
+
/** The record sizes' type, all on the 12px rung — Hanzo's text floor (twenty-ui's xs is 8px). */
|
|
83
|
+
const TYPE = {
|
|
84
|
+
xs: { size: '$1', lineHeight: 14, fontWeight: '600' },
|
|
85
|
+
sm: { size: '$1', lineHeight: 16, fontWeight: '500' },
|
|
86
|
+
md: { size: '$1', lineHeight: 18, fontWeight: '500' },
|
|
87
|
+
};
|
|
61
88
|
const BadgeText = (0, gui_1.styled)(gui_1.SizableText, {
|
|
62
89
|
name: 'BadgeText',
|
|
63
90
|
context: BadgeContext,
|
|
@@ -73,6 +100,9 @@ const BadgeText = (0, gui_1.styled)(gui_1.SizableText, {
|
|
|
73
100
|
link: { color: '$ink', textDecorationLine: 'underline' },
|
|
74
101
|
inputAdornment: { color: '$ink', fontWeight: '500' },
|
|
75
102
|
tags: { color: '$quiet', fontWeight: '400', textTransform: 'capitalize' },
|
|
103
|
+
muted: { color: '$hint', fontWeight: '500' },
|
|
104
|
+
accent: { color: 'var(--primary-foreground)', fontWeight: '500' },
|
|
105
|
+
inherit: {},
|
|
76
106
|
},
|
|
77
107
|
},
|
|
78
108
|
});
|
|
@@ -82,6 +112,14 @@ const BadgeText = (0, gui_1.styled)(gui_1.SizableText, {
|
|
|
82
112
|
*/
|
|
83
113
|
const style_1 = require("../../style.cjs");
|
|
84
114
|
Object.defineProperty(exports, "badgeVariants", { enumerable: true, get: function () { return style_1.badgeVariants; } });
|
|
85
|
-
function Badge({ className, variant = 'default', asChild = false, children, ...props }) {
|
|
86
|
-
|
|
115
|
+
function Badge({ className, variant = 'default', size, shape = 'pill', asChild = false, children, ...props }) {
|
|
116
|
+
const record = size && size !== 'lg' ? size : null;
|
|
117
|
+
const box = record ? { xs: 14, sm: 16, md: 18 }[record] : HEIGHT;
|
|
118
|
+
const inherit = variant === 'inherit';
|
|
119
|
+
return ((0, jsx_runtime_1.jsx)(BadgeFrame, { "data-slot": "badge", "data-variant": variant, ...(size ? { 'data-size': size } : null), variant: variant ?? 'default', ...(size ? { size } : null), ...(shape === 'circle' ? { circle: true, width: box, minW: box } : null), asChild: asChild, render: asChild ? undefined : 'span', ...(0, gesture_1.touch)(box, MIN_TOUCH, 'y'), ...(0, sx_1.sx)([(0, style_1.badgeVariants)({ variant }), className].filter(Boolean).join(' ')), ...(inherit ? { style: { backgroundColor: 'color-mix(in srgb, currentColor 16%, transparent)' } } : null), ...props, children: asChild
|
|
120
|
+
? children
|
|
121
|
+
: (0, ink_1.ink)(children, BadgeText, {
|
|
122
|
+
...(record ? TYPE[record] : null),
|
|
123
|
+
...(inherit ? { style: { color: 'inherit', fontWeight: 'inherit', fontVariantNumeric: 'tabular-nums' } } : null),
|
|
124
|
+
}) }));
|
|
87
125
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export type BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link' | 'inputAdornment' | 'tags';
|
|
2
|
+
export type BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link' | 'inputAdornment' | 'tags' | 'muted' | 'accent' | 'inherit';
|
|
3
|
+
export type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
3
4
|
/**
|
|
4
5
|
* A stable class handle for hosts that hook badges from CSS. Styling lives in
|
|
5
6
|
* the tokens; this only names the variant.
|
|
@@ -13,7 +14,11 @@ export { badgeVariants };
|
|
|
13
14
|
*/
|
|
14
15
|
export type BadgeProps = React.ComponentProps<'span'> & {
|
|
15
16
|
variant?: BadgeVariant | null;
|
|
17
|
+
/** A record count's size (14 / 16 / 18). Unset, the 24px label (`lg`). */
|
|
18
|
+
size?: BadgeSize | null;
|
|
19
|
+
/** Width equals height, for a single digit. */
|
|
20
|
+
shape?: 'pill' | 'circle';
|
|
16
21
|
asChild?: boolean;
|
|
17
22
|
};
|
|
18
|
-
export declare function Badge({ className, variant, asChild, children, ...props }: BadgeProps): React.JSX.Element;
|
|
23
|
+
export declare function Badge({ className, variant, size, shape, asChild, children, ...props }: BadgeProps): React.JSX.Element;
|
|
19
24
|
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/badge.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/badge.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,WAAW,GACX,aAAa,GACb,SAAS,GACT,OAAO,GACP,MAAM,GACN,gBAAgB,GAChB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,CAAA;AAEb,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AA2FjD;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,CAAA;AAExB;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IACtD,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,0EAA0E;IAC1E,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,OAAmB,EACnB,IAAI,EACJ,KAAc,EACd,OAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,UAAU,qBA2BZ"}
|
|
@@ -10,6 +10,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
10
10
|
* Surface and ink are two concerns, so they are two styled parts sharing one
|
|
11
11
|
* `variant` through a styled context — the frame owns background/border, the
|
|
12
12
|
* text owns color/weight/case. Nothing reads `variant` twice by hand.
|
|
13
|
+
*
|
|
14
|
+
* `size` xs 14 · sm 16 · md 18 and `shape="circle"` are the record counts — a
|
|
15
|
+
* navigation item's unread count, a filter's rule count — on the pill, with the
|
|
16
|
+
* `muted`, `accent` and `inherit` colours (re-expressed from twenty-ui's Badge,
|
|
17
|
+
* MIT, see NOTICE). With no `size` a badge is the 24px label it always was,
|
|
18
|
+
* named `lg`.
|
|
13
19
|
*/
|
|
14
20
|
import { SizableText, XStack, createStyledContext, styled } from '@hanzo/gui';
|
|
15
21
|
import { sx } from '../../sx.js';
|
|
@@ -50,10 +56,31 @@ const BadgeFrame = styled(XStack, {
|
|
|
50
56
|
link: { bg: 'transparent' },
|
|
51
57
|
inputAdornment: { bg: '$hover', px: '$2' },
|
|
52
58
|
tags: { bg: '$hover', borderColor: '$borderColor', rounded: '$3' },
|
|
59
|
+
muted: { bg: '$hover' },
|
|
60
|
+
accent: { bg: 'var(--primary)' },
|
|
61
|
+
// Its fill is 16% of whatever ink it sits in (inline, below): a count that
|
|
62
|
+
// takes its row's colour.
|
|
63
|
+
inherit: { bg: 'transparent' },
|
|
64
|
+
},
|
|
65
|
+
// After `variant`, so a record size's pill wins over a variant's radius.
|
|
66
|
+
size: {
|
|
67
|
+
xs: { minH: 14, height: 14, px: '$1', py: 0, gap: '$1', rounded: '$10' },
|
|
68
|
+
sm: { minH: 16, height: 16, px: '$2', py: 0, gap: '$1', rounded: '$10' },
|
|
69
|
+
md: { minH: 18, height: 18, px: '$1.5', py: 0, gap: '$0.5', rounded: '$10' },
|
|
70
|
+
lg: {},
|
|
71
|
+
},
|
|
72
|
+
circle: {
|
|
73
|
+
true: { px: 0, justify: 'center' },
|
|
53
74
|
},
|
|
54
75
|
},
|
|
55
76
|
defaultVariants: { variant: 'default' },
|
|
56
77
|
});
|
|
78
|
+
/** The record sizes' type, all on the 12px rung — Hanzo's text floor (twenty-ui's xs is 8px). */
|
|
79
|
+
const TYPE = {
|
|
80
|
+
xs: { size: '$1', lineHeight: 14, fontWeight: '600' },
|
|
81
|
+
sm: { size: '$1', lineHeight: 16, fontWeight: '500' },
|
|
82
|
+
md: { size: '$1', lineHeight: 18, fontWeight: '500' },
|
|
83
|
+
};
|
|
57
84
|
const BadgeText = styled(SizableText, {
|
|
58
85
|
name: 'BadgeText',
|
|
59
86
|
context: BadgeContext,
|
|
@@ -69,6 +96,9 @@ const BadgeText = styled(SizableText, {
|
|
|
69
96
|
link: { color: '$ink', textDecorationLine: 'underline' },
|
|
70
97
|
inputAdornment: { color: '$ink', fontWeight: '500' },
|
|
71
98
|
tags: { color: '$quiet', fontWeight: '400', textTransform: 'capitalize' },
|
|
99
|
+
muted: { color: '$hint', fontWeight: '500' },
|
|
100
|
+
accent: { color: 'var(--primary-foreground)', fontWeight: '500' },
|
|
101
|
+
inherit: {},
|
|
72
102
|
},
|
|
73
103
|
},
|
|
74
104
|
});
|
|
@@ -78,7 +108,15 @@ const BadgeText = styled(SizableText, {
|
|
|
78
108
|
*/
|
|
79
109
|
import { badgeVariants } from '../../style.js';
|
|
80
110
|
export { badgeVariants };
|
|
81
|
-
export function Badge({ className, variant = 'default', asChild = false, children, ...props }) {
|
|
82
|
-
|
|
111
|
+
export function Badge({ className, variant = 'default', size, shape = 'pill', asChild = false, children, ...props }) {
|
|
112
|
+
const record = size && size !== 'lg' ? size : null;
|
|
113
|
+
const box = record ? { xs: 14, sm: 16, md: 18 }[record] : HEIGHT;
|
|
114
|
+
const inherit = variant === 'inherit';
|
|
115
|
+
return (_jsx(BadgeFrame, { "data-slot": "badge", "data-variant": variant, ...(size ? { 'data-size': size } : null), variant: variant ?? 'default', ...(size ? { size } : null), ...(shape === 'circle' ? { circle: true, width: box, minW: box } : null), asChild: asChild, render: asChild ? undefined : 'span', ...touch(box, MIN_TOUCH, 'y'), ...sx([badgeVariants({ variant }), className].filter(Boolean).join(' ')), ...(inherit ? { style: { backgroundColor: 'color-mix(in srgb, currentColor 16%, transparent)' } } : null), ...props, children: asChild
|
|
116
|
+
? children
|
|
117
|
+
: ink(children, BadgeText, {
|
|
118
|
+
...(record ? TYPE[record] : null),
|
|
119
|
+
...(inherit ? { style: { color: 'inherit', fontWeight: 'inherit', fontVariantNumeric: 'tabular-nums' } } : null),
|
|
120
|
+
}) }));
|
|
83
121
|
}
|
|
84
122
|
//# sourceMappingURL=badge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/backends/gui/badge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/backends/gui/badge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAiBjC,iFAAiF;AACjF,MAAM,SAAS,GAAG,EAAE,CAAA;AACpB,MAAM,MAAM,GAAG,EAAE,CAAA;AAEjB,MAAM,YAAY,GAAG,eAAe,CAAC,mBAAmB,CAA4B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;AAE3G,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAChC,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,YAAY;IACrB,0EAA0E;IAC1E,6EAA6E;IAC7E,+EAA+E;IAC/E,6EAA6E;IAC7E,qEAAqE;IACrE,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,QAAQ;IAElB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACvB,SAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;YAC1B,WAAW,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE;YAC3D,KAAK,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;YAC1D,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;YAC3B,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE;YAC1C,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YAClE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;YACvB,MAAM,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE;YAChC,2EAA2E;YAC3E,0BAA0B;YAC1B,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;SAC/B;QACD,yEAAyE;QACzE,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;YACxE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;YACxE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5E,EAAE,EAAE,EAAE;SACP;QACD,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE;SACnC;KACO;IAEV,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;CACxC,CAAC,CAAA;AAEF,iGAAiG;AACjG,MAAM,IAAI,GAA8D;IACtE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;IACrD,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;IACrD,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;CACtD,CAAA;AAED,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE;IACpC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,KAAK;IAEjB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC7B,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAC5B,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YACjC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACxB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE;YACxD,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;YACpD,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE;YACzE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;YAC5C,MAAM,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,KAAK,EAAE;YACjE,OAAO,EAAE,EAAE;SACZ;KACO;CACX,CAAC,CAAA;AAEF;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,CAAA;AAgBxB,MAAM,UAAU,KAAK,CAAC,EACpB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,EACJ,KAAK,GAAG,MAAM,EACd,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,GAAG,KAAK,EACG;IACX,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAChE,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,CAAA;IACrC,OAAO,CACL,KAAC,UAAU,iBACC,OAAO,kBACH,OAAO,KACjB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACzC,OAAO,EAAE,OAAO,IAAI,SAAS,KACzB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KACxB,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACzE,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,KAChC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,KAC1B,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KACrE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,mDAAmD,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KACrG,KAAiD,YAErD,OAAO;YACN,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE;gBACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACjH,CAAC,GACK,CACd,CAAA;AACH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';"use strict";
|
|
2
2
|
'use client';
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.BannerAction = BannerAction;
|
|
4
5
|
exports.Banner = Banner;
|
|
5
6
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
7
|
/**
|
|
@@ -21,6 +22,17 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
21
22
|
* Message and icon paint from the hue's text rungs — step 12 for the message,
|
|
22
23
|
* step 11 for the icon — because step 9 is a fill: on the light theme it reads
|
|
23
24
|
* at 1.2:1 for yellow and about 3:1 for blue and green over the step-2 ground.
|
|
25
|
+
*
|
|
26
|
+
* ── The record kit's banner (twenty-ui's Banner and InlineBanner, MIT — NOTICE)
|
|
27
|
+
* Naming a `status`, a `color`, an `emphasis`, a `layout` or an `action` draws
|
|
28
|
+
* the other shape: content centred with a 12px gap, a 40px floor, 8px padding,
|
|
29
|
+
* 13px medium on a 1.5 line, the colour from the one status map (feedback.ts) —
|
|
30
|
+
* `solid` on the colour's fill, `soft` (the default for `inline` and `compact`)
|
|
31
|
+
* on its tint in its ink — and `action` a small outline button that takes its
|
|
32
|
+
* edge from the banner's ink. `layout="inline"` sits inside content (8px
|
|
33
|
+
* corners, 16 below unless `embedded`, the info icon unless one is given) and
|
|
34
|
+
* `layout="compact"` is sized to its content up to 512, ends apart. With none
|
|
35
|
+
* of those props a Banner renders exactly as it always has.
|
|
24
36
|
*/
|
|
25
37
|
const react_1 = require("react");
|
|
26
38
|
const gui_1 = require("@hanzo/gui");
|
|
@@ -28,6 +40,7 @@ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
|
28
40
|
const slot_1 = require("./slot.cjs");
|
|
29
41
|
const gesture_1 = require("./gesture.cjs");
|
|
30
42
|
const button_1 = require("./button.cjs");
|
|
43
|
+
const feedback_1 = require("./feedback.cjs");
|
|
31
44
|
const ICON = 16;
|
|
32
45
|
const ICON_GUTTER = 28;
|
|
33
46
|
const CLOSE = 24;
|
|
@@ -95,7 +108,33 @@ const IconSlot = (0, gui_1.styled)(gui_1.SizableText, {
|
|
|
95
108
|
},
|
|
96
109
|
},
|
|
97
110
|
});
|
|
98
|
-
|
|
111
|
+
/** The paint a record-shape banner was drawn with, for its action. */
|
|
112
|
+
const PaintContext = /* @__PURE__ */ (0, react_1.createContext)(null);
|
|
113
|
+
/**
|
|
114
|
+
* A banner's own action: a small outline button whose edge is the banner's ink
|
|
115
|
+
* at 25% and whose hover fills at 10%, so it reads on a solid fill and on a tint
|
|
116
|
+
* alike.
|
|
117
|
+
*/
|
|
118
|
+
function BannerAction({ children, ...props }) {
|
|
119
|
+
const ctx = (0, react_1.useContext)(PaintContext);
|
|
120
|
+
const ink = ctx ? (ctx.solid ? ctx.paint.on : ctx.paint.ink) : '$ink';
|
|
121
|
+
const mix = (n) => `color-mix(in srgb, ${ink.startsWith('$') ? `var(--${ink.slice(1)})` : ink} ${n}%, transparent)`;
|
|
122
|
+
return ((0, jsx_runtime_1.jsx)(button_1.Button, { ...(0, slot_1.slot)('banner-action'), variant: "outline", size: "xs", bg: "transparent", borderColor: mix(25), hoverStyle: { bg: mix(10) }, pressStyle: { bg: mix(20) }, color: ink, ...props, children: children }));
|
|
123
|
+
}
|
|
124
|
+
function RecordBanner({ status, color, emphasis, layout = 'strip', embedded = false, action, icon, onClose, children, ...props }) {
|
|
125
|
+
const solid = (emphasis ?? (layout === 'strip' ? 'solid' : 'soft')) === 'solid';
|
|
126
|
+
const hue = (0, feedback_1.colorOf)(status ?? 'info', color);
|
|
127
|
+
const paint = feedback_1.STATUS_PAINT[hue];
|
|
128
|
+
const ink = solid ? paint.on : hue === 'gray' ? '$ink' : paint.ink;
|
|
129
|
+
const lead = icon ?? (layout === 'inline' ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Info, { size: 16, color: ink }) : null);
|
|
130
|
+
const compact = layout === 'compact';
|
|
131
|
+
const inline = layout === 'inline';
|
|
132
|
+
return ((0, jsx_runtime_1.jsx)(PaintContext.Provider, { value: { paint, solid }, children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { role: "alert", ...(0, slot_1.slot)('banner'), "data-variant": solid ? 'solid' : 'soft', "data-layout": layout, "data-color": hue, width: compact ? 'auto' : '100%', maxW: compact ? 512 : undefined, minH: compact ? undefined : 40, p: "$2", gap: compact ? '$2' : '$3', items: "center", justify: compact ? 'space-between' : inline ? 'flex-start' : 'center', bg: (solid ? paint.fill : paint.tint), rounded: inline || compact ? '$3' : 0, mb: inline && !embedded ? '$4' : 0, ...props, children: [lead ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('banner-icon'), shrink: 0, width: 16, height: 16, items: "center", justify: "center", children: lead })) : null, (0, jsx_runtime_1.jsx)(gui_1.SizableText, { ...(0, slot_1.slot)('banner-message'), render: "div", size: "$2", lineHeight: 20, fontWeight: "500", color: ink, flex: compact || inline ? 1 : undefined, minW: 0, children: children }), action, onClose ? ((0, jsx_runtime_1.jsx)(button_1.Button, { ...(0, slot_1.slot)('banner-close'), variant: "ghost", size: "icon-xs", color: ink, "aria-label": "Close", onPress: onClose, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { color: ink }) })) : null] }) }));
|
|
133
|
+
}
|
|
134
|
+
function Banner({ variant = 'default', onClose, children, status, color, emphasis, layout, embedded, action, icon: lead, ...props }) {
|
|
135
|
+
const record = [status, color, emphasis, layout, action, lead].some((v) => v !== undefined);
|
|
136
|
+
if (record)
|
|
137
|
+
return ((0, jsx_runtime_1.jsx)(RecordBanner, { status: status, color: color, emphasis: emphasis, layout: layout, embedded: embedded, action: action, icon: lead, onClose: onClose, ...props, children: children }));
|
|
99
138
|
const resolved = variant ?? 'default';
|
|
100
139
|
const items = react_1.Children.toArray(children);
|
|
101
140
|
const head = items[0];
|
|
@@ -16,18 +16,51 @@
|
|
|
16
16
|
* Message and icon paint from the hue's text rungs — step 12 for the message,
|
|
17
17
|
* step 11 for the icon — because step 9 is a fill: on the light theme it reads
|
|
18
18
|
* at 1.2:1 for yellow and about 3:1 for blue and green over the step-2 ground.
|
|
19
|
+
*
|
|
20
|
+
* ── The record kit's banner (twenty-ui's Banner and InlineBanner, MIT — NOTICE)
|
|
21
|
+
* Naming a `status`, a `color`, an `emphasis`, a `layout` or an `action` draws
|
|
22
|
+
* the other shape: content centred with a 12px gap, a 40px floor, 8px padding,
|
|
23
|
+
* 13px medium on a 1.5 line, the colour from the one status map (feedback.ts) —
|
|
24
|
+
* `solid` on the colour's fill, `soft` (the default for `inline` and `compact`)
|
|
25
|
+
* on its tint in its ink — and `action` a small outline button that takes its
|
|
26
|
+
* edge from the banner's ink. `layout="inline"` sits inside content (8px
|
|
27
|
+
* corners, 16 below unless `embedded`, the info icon unless one is given) and
|
|
28
|
+
* `layout="compact"` is sized to its content up to 512, ends apart. With none
|
|
29
|
+
* of those props a Banner renders exactly as it always has.
|
|
19
30
|
*/
|
|
20
|
-
import { type ComponentProps } from 'react';
|
|
31
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
32
|
+
import { type ButtonProps } from './button.js';
|
|
33
|
+
import { type FeedbackColor, type FeedbackStatus } from './feedback.js';
|
|
21
34
|
export type BannerVariant = 'default' | 'info' | 'success' | 'warning' | 'error';
|
|
22
35
|
declare const BannerFrame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, any, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
|
|
23
36
|
elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
|
|
24
37
|
fullscreen?: boolean | undefined;
|
|
25
38
|
variant?: "default" | "error" | "info" | "success" | "warning" | undefined;
|
|
26
39
|
}, import("@hanzogui/web").StaticConfigPublic>;
|
|
27
|
-
export type BannerProps = Omit<ComponentProps<typeof BannerFrame>, 'variant'> & {
|
|
40
|
+
export type BannerProps = Omit<ComponentProps<typeof BannerFrame>, 'variant' | 'color'> & {
|
|
28
41
|
variant?: BannerVariant | null;
|
|
29
42
|
onClose?: () => void;
|
|
43
|
+
/** What the banner reports; picks its colour through the status map. */
|
|
44
|
+
status?: FeedbackStatus;
|
|
45
|
+
/** The colour, when it is not the status's. */
|
|
46
|
+
color?: FeedbackColor;
|
|
47
|
+
/** `solid` (the full-width default) or `soft`. */
|
|
48
|
+
emphasis?: 'solid' | 'soft';
|
|
49
|
+
/** `strip` (full width, the default), `inline` (inside content) or `compact` (sized to content). */
|
|
50
|
+
layout?: 'strip' | 'inline' | 'compact';
|
|
51
|
+
/** `inline`: drop the 16px below, for a banner that is the last thing in its box. */
|
|
52
|
+
embedded?: boolean;
|
|
53
|
+
/** A trailing control — usually `<BannerAction>`. */
|
|
54
|
+
action?: ReactNode;
|
|
55
|
+
/** The leading icon, for the record shape (inline defaults to Info). */
|
|
56
|
+
icon?: ReactNode;
|
|
30
57
|
};
|
|
31
|
-
|
|
58
|
+
/**
|
|
59
|
+
* A banner's own action: a small outline button whose edge is the banner's ink
|
|
60
|
+
* at 25% and whose hover fills at 10%, so it reads on a solid fill and on a tint
|
|
61
|
+
* alike.
|
|
62
|
+
*/
|
|
63
|
+
export declare function BannerAction({ children, ...props }: Omit<ButtonProps, 'variant' | 'size'>): import("react").JSX.Element;
|
|
64
|
+
export declare function Banner({ variant, onClose, children, status, color, emphasis, layout, embedded, action, icon: lead, ...props }: BannerProps): import("react").JSX.Element;
|
|
32
65
|
export {};
|
|
33
66
|
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/banner.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/banner.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAuD,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKhH,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAyB,KAAK,aAAa,EAAsB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAE/G,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAUhF,QAAA,MAAM,WAAW;;;;8CAsBf,CAAA;AA8CF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IACxF,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC3B,oGAAoG;IACpG,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;IACvC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAKD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC,+BAmBzF;AA4ED,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,EACN,IAAI,EAAE,IAAI,EACV,GAAG,KAAK,EACT,EAAE,WAAW,+BA2Db"}
|
|
@@ -18,13 +18,25 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
18
18
|
* Message and icon paint from the hue's text rungs — step 12 for the message,
|
|
19
19
|
* step 11 for the icon — because step 9 is a fill: on the light theme it reads
|
|
20
20
|
* at 1.2:1 for yellow and about 3:1 for blue and green over the step-2 ground.
|
|
21
|
+
*
|
|
22
|
+
* ── The record kit's banner (twenty-ui's Banner and InlineBanner, MIT — NOTICE)
|
|
23
|
+
* Naming a `status`, a `color`, an `emphasis`, a `layout` or an `action` draws
|
|
24
|
+
* the other shape: content centred with a 12px gap, a 40px floor, 8px padding,
|
|
25
|
+
* 13px medium on a 1.5 line, the colour from the one status map (feedback.ts) —
|
|
26
|
+
* `solid` on the colour's fill, `soft` (the default for `inline` and `compact`)
|
|
27
|
+
* on its tint in its ink — and `action` a small outline button that takes its
|
|
28
|
+
* edge from the banner's ink. `layout="inline"` sits inside content (8px
|
|
29
|
+
* corners, 16 below unless `embedded`, the info icon unless one is given) and
|
|
30
|
+
* `layout="compact"` is sized to its content up to 512, ends apart. With none
|
|
31
|
+
* of those props a Banner renders exactly as it always has.
|
|
21
32
|
*/
|
|
22
|
-
import { Children, isValidElement } from 'react';
|
|
23
|
-
import { SizableText, YStack, createStyledContext, styled } from '@hanzo/gui';
|
|
24
|
-
import { X } from '@hanzogui/lucide-icons-2';
|
|
33
|
+
import { Children, createContext, isValidElement, useContext } from 'react';
|
|
34
|
+
import { SizableText, XStack, YStack, createStyledContext, styled } from '@hanzo/gui';
|
|
35
|
+
import { Info, X } from '@hanzogui/lucide-icons-2';
|
|
25
36
|
import { slot } from './slot.js';
|
|
26
37
|
import { touch } from './gesture.js';
|
|
27
38
|
import { Button } from './button.js';
|
|
39
|
+
import { colorOf, STATUS_PAINT } from './feedback.js';
|
|
28
40
|
const ICON = 16;
|
|
29
41
|
const ICON_GUTTER = 28;
|
|
30
42
|
const CLOSE = 24;
|
|
@@ -92,7 +104,33 @@ const IconSlot = styled(SizableText, {
|
|
|
92
104
|
},
|
|
93
105
|
},
|
|
94
106
|
});
|
|
95
|
-
|
|
107
|
+
/** The paint a record-shape banner was drawn with, for its action. */
|
|
108
|
+
const PaintContext = /* @__PURE__ */ createContext(null);
|
|
109
|
+
/**
|
|
110
|
+
* A banner's own action: a small outline button whose edge is the banner's ink
|
|
111
|
+
* at 25% and whose hover fills at 10%, so it reads on a solid fill and on a tint
|
|
112
|
+
* alike.
|
|
113
|
+
*/
|
|
114
|
+
export function BannerAction({ children, ...props }) {
|
|
115
|
+
const ctx = useContext(PaintContext);
|
|
116
|
+
const ink = ctx ? (ctx.solid ? ctx.paint.on : ctx.paint.ink) : '$ink';
|
|
117
|
+
const mix = (n) => `color-mix(in srgb, ${ink.startsWith('$') ? `var(--${ink.slice(1)})` : ink} ${n}%, transparent)`;
|
|
118
|
+
return (_jsx(Button, { ...slot('banner-action'), variant: "outline", size: "xs", bg: "transparent", borderColor: mix(25), hoverStyle: { bg: mix(10) }, pressStyle: { bg: mix(20) }, color: ink, ...props, children: children }));
|
|
119
|
+
}
|
|
120
|
+
function RecordBanner({ status, color, emphasis, layout = 'strip', embedded = false, action, icon, onClose, children, ...props }) {
|
|
121
|
+
const solid = (emphasis ?? (layout === 'strip' ? 'solid' : 'soft')) === 'solid';
|
|
122
|
+
const hue = colorOf(status ?? 'info', color);
|
|
123
|
+
const paint = STATUS_PAINT[hue];
|
|
124
|
+
const ink = solid ? paint.on : hue === 'gray' ? '$ink' : paint.ink;
|
|
125
|
+
const lead = icon ?? (layout === 'inline' ? _jsx(Info, { size: 16, color: ink }) : null);
|
|
126
|
+
const compact = layout === 'compact';
|
|
127
|
+
const inline = layout === 'inline';
|
|
128
|
+
return (_jsx(PaintContext.Provider, { value: { paint, solid }, children: _jsxs(XStack, { role: "alert", ...slot('banner'), "data-variant": solid ? 'solid' : 'soft', "data-layout": layout, "data-color": hue, width: compact ? 'auto' : '100%', maxW: compact ? 512 : undefined, minH: compact ? undefined : 40, p: "$2", gap: compact ? '$2' : '$3', items: "center", justify: compact ? 'space-between' : inline ? 'flex-start' : 'center', bg: (solid ? paint.fill : paint.tint), rounded: inline || compact ? '$3' : 0, mb: inline && !embedded ? '$4' : 0, ...props, children: [lead ? (_jsx(XStack, { ...slot('banner-icon'), shrink: 0, width: 16, height: 16, items: "center", justify: "center", children: lead })) : null, _jsx(SizableText, { ...slot('banner-message'), render: "div", size: "$2", lineHeight: 20, fontWeight: "500", color: ink, flex: compact || inline ? 1 : undefined, minW: 0, children: children }), action, onClose ? (_jsx(Button, { ...slot('banner-close'), variant: "ghost", size: "icon-xs", color: ink, "aria-label": "Close", onPress: onClose, children: _jsx(X, { color: ink }) })) : null] }) }));
|
|
129
|
+
}
|
|
130
|
+
export function Banner({ variant = 'default', onClose, children, status, color, emphasis, layout, embedded, action, icon: lead, ...props }) {
|
|
131
|
+
const record = [status, color, emphasis, layout, action, lead].some((v) => v !== undefined);
|
|
132
|
+
if (record)
|
|
133
|
+
return (_jsx(RecordBanner, { status: status, color: color, emphasis: emphasis, layout: layout, embedded: embedded, action: action, icon: lead, onClose: onClose, ...props, children: children }));
|
|
96
134
|
const resolved = variant ?? 'default';
|
|
97
135
|
const items = Children.toArray(children);
|
|
98
136
|
const head = items[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/backends/gui/banner.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/backends/gui/banner.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAuC,MAAM,OAAO,CAAA;AAChH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACrF,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,YAAY,EAA+D,MAAM,YAAY,CAAA;AAI/G,MAAM,IAAI,GAAG,EAAE,CAAA;AACf,MAAM,WAAW,GAAG,EAAE,CAAA;AACtB,MAAM,KAAK,GAAG,EAAE,CAAA;AAEhB,MAAM,aAAa,GAAG,eAAe,CAAC,mBAAmB,CAA6B;IACpF,OAAO,EAAE,SAAS;CACnB,CAAC,CAAA;AAEF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,MAAM;IACb,iBAAiB,EAAE,CAAC;IACpB,WAAW,EAAE,cAAc;IAC3B,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IAER,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;YAC7C,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;YAClD,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE;YACpD,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;SAC7C;KACO;IAEV,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;CACxC,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE;IACrC,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,MAAM;IAEb,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;YAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;YAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;SAC3B;KACO;CACX,CAAC,CAAA;AAEF,0EAA0E;AAC1E,kBAAkB;AAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE;IACnC,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,UAAU;IACpB,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,MAAM;IAEb,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;YAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;YAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;SAC3B;KACO;CACX,CAAC,CAAA;AAqBF,sEAAsE;AACtE,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAkD,IAAI,CAAC,CAAA;AAEzG;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAyC;IACxF,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;IACpC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACrE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,sBAAsB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAA;IAC3H,OAAO,CACL,KAAC,MAAM,OACD,IAAI,CAAC,eAAe,CAAC,EACzB,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,EAAE,EAAC,aAAa,EAChB,WAAW,EAAE,GAAG,CAAC,EAAE,CAAU,EAC7B,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAU,EAAE,EACpC,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAU,EAAE,EACpC,KAAK,EAAE,GAAG,KACN,KAAK,YAER,QAAQ,GACF,CACV,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,OAAO,EAChB,QAAQ,GAAG,KAAK,EAChB,MAAM,EACN,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACqB;IAC7B,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAA;IAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;IAClE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAY,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC3F,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,KAAK,QAAQ,CAAA;IAClC,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAC5C,MAAC,MAAM,IACL,IAAI,EAAC,OAAO,KACR,IAAI,CAAC,QAAQ,CAAC,kBACJ,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,iBACzB,MAAM,gBACP,GAAG,EACf,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAChC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC/B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAC9B,CAAC,EAAC,IAAI,EACN,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAC1B,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EACrE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAU,EAC9C,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACrC,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAC9B,KAAK,aAER,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,MAAM,OAAK,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,YAC/F,IAAI,GACE,CACV,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,WAAW,OACN,IAAI,CAAC,gBAAgB,CAAC,EAC1B,MAAM,EAAC,KAAK,EACZ,IAAI,EAAC,IAAI,EACT,UAAU,EAAE,EAAE,EACd,UAAU,EAAC,KAAK,EAChB,KAAK,EAAE,GAAY,EACnB,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACvC,IAAI,EAAE,CAAC,YAEN,QAAQ,GACG,EACb,MAAM,EACN,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,MAAM,OACD,IAAI,CAAC,cAAc,CAAC,EACxB,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,GAAG,gBACC,OAAO,EAClB,OAAO,EAAE,OAAO,YAEhB,KAAC,CAAC,IAAC,KAAK,EAAE,GAAY,GAAI,GACnB,CACV,CAAC,CAAC,CAAC,IAAI,IACD,GACa,CACzB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,OAAO,GAAG,SAAS,EACnB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,EACN,IAAI,EAAE,IAAI,EACV,GAAG,KAAK,EACI;IACZ,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;IAC3F,IAAI,MAAM;QACR,OAAO,CACL,KAAC,YAAY,IACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,KACZ,KAAK,YAER,QAAQ,GACI,CAChB,CAAA;IACH,MAAM,QAAQ,GAAG,OAAO,IAAI,SAAS,CAAA;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAE1C,OAAO,CACL,MAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,KAAM,IAAI,CAAC,QAAQ,CAAC,kBAAgB,QAAQ,KAAM,KAAK,aAC/F,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,QAAQ,OAAK,IAAI,CAAC,aAAa,CAAC,YAC9B,IAAI,GACI,CACZ,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,UAAU,OACL,IAAI,CAAC,gBAAgB,CAAC,EAC1B,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAC1B,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,YAE3B,IAAI,GACM,EACZ,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,MAAM,OACD,IAAI,CAAC,cAAc,CAAC,EACxB,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,KACP,KAAK,CAAC,KAAK,CAAC;gBAChB,oEAAoE;gBACpE,2DAA2D;gBAC3D,QAAQ,EAAC,UAAU,EACnB,CAAC,EAAC,IAAI,EACN,CAAC,EAAC,IAAI,gBACK,OAAO,EAClB,OAAO,EAAE,OAAO,YAEhB,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,GAAI,GACR,CACV,CAAC,CAAC,CAAC,IAAI,IACI,CACf,CAAA;AACH,CAAC"}
|