@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
|
@@ -7,10 +7,26 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
7
7
|
* and a row is the one box model that also exists on native.
|
|
8
8
|
*/
|
|
9
9
|
import { SizableText, XStack, YStack, styled, withStaticProperties } from '@hanzo/gui';
|
|
10
|
+
import { createContext, useContext } from 'react';
|
|
11
|
+
import { useDensity } from './density.js';
|
|
10
12
|
import { AspectRatio } from './aspect-ratio.js';
|
|
11
13
|
import { ink } from './ink.js';
|
|
12
14
|
import { slot } from './slot.js';
|
|
13
15
|
const PAD = 24;
|
|
16
|
+
/**
|
|
17
|
+
* The compact card (twenty-ui's Card, MIT, NOTICE): the settings and record
|
|
18
|
+
* frame. No inset of its own and an 8px corner; a Header and a Footer band at
|
|
19
|
+
* 8×16 in 12px medium on the ground, a Content well at 16 on the panel rung,
|
|
20
|
+
* hairlines between them (`divider` on Content, on by default for the Footer).
|
|
21
|
+
* Asked for with `density="compact"` or given by a compact `<Density>`. The
|
|
22
|
+
* regular card stays the 24px-padded panel.
|
|
23
|
+
*/
|
|
24
|
+
const Compact = /* @__PURE__ */ createContext(false);
|
|
25
|
+
const COMPACT = {
|
|
26
|
+
frame: { py: 0, gap: 0, rounded: '$3', overflow: 'hidden', bg: 'transparent' },
|
|
27
|
+
band: { px: 16, py: 8, bg: '$background' },
|
|
28
|
+
content: { p: 16, bg: '$panel' },
|
|
29
|
+
};
|
|
14
30
|
const CardFrame = styled(YStack, {
|
|
15
31
|
name: 'Card',
|
|
16
32
|
bg: '$background',
|
|
@@ -38,30 +54,43 @@ const DescriptionFrame = styled(SizableText, { name: 'CardDescription', size: '$
|
|
|
38
54
|
const ActionFrame = styled(XStack, { name: 'CardAction', self: 'flex-end', shrink: 0 });
|
|
39
55
|
const ContentFrame = styled(YStack, { name: 'CardContent', px: PAD });
|
|
40
56
|
const FooterFrame = styled(XStack, { name: 'CardFooter', px: PAD, items: 'center' });
|
|
41
|
-
const Card = ({ interactive, onPress, ...p }) =>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
e
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
const Card = ({ interactive, onPress, density, children, ...p }) => {
|
|
58
|
+
const near = useDensity();
|
|
59
|
+
const compact = (density ?? near) === 'compact';
|
|
60
|
+
return (_jsx(CardFrame, { ...slot('card'), ...(compact ? { 'data-density': 'compact', ...COMPACT.frame } : null), ...(interactive
|
|
61
|
+
? {
|
|
62
|
+
role: 'button',
|
|
63
|
+
tabIndex: 0,
|
|
64
|
+
cursor: 'pointer',
|
|
65
|
+
hoverStyle: compact ? { bg: '$hover' } : { borderColor: '$dim' },
|
|
66
|
+
focusStyle: { borderColor: '$dim', outlineWidth: 2, outlineStyle: 'solid', outlineColor: '$dim' },
|
|
67
|
+
// A div with role="button" is not a button: the browser gives it no
|
|
68
|
+
// keyboard activation, so it has to be spelled out or the card is
|
|
69
|
+
// mouse-only. Space must also preventDefault or the page scrolls.
|
|
70
|
+
onKeyDown: (e) => {
|
|
71
|
+
if (e.key !== 'Enter' && e.key !== ' ')
|
|
72
|
+
return;
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
onPress?.(e);
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
: null), onPress: onPress, ...p, children: _jsx(Compact.Provider, { value: compact, children: children }) }));
|
|
78
|
+
};
|
|
79
|
+
const CardHeader = ({ children, ...p }) => {
|
|
80
|
+
const compact = useContext(Compact);
|
|
81
|
+
return (_jsx(HeaderFrame, { ...slot('card-header'), ...(compact ? { ...COMPACT.band, gap: '$1', borderBottomWidth: 1, borderColor: '$borderColor' } : null), ...p, children: compact ? ink(children, SizableText, { size: '$1', fontWeight: '500', color: '$aside' }) : children }));
|
|
82
|
+
};
|
|
60
83
|
const CardTitle = (p) => _jsx(TitleFrame, { ...slot('card-title'), ...p });
|
|
61
84
|
const CardDescription = (p) => _jsx(DescriptionFrame, { ...slot('card-description'), ...p });
|
|
62
85
|
const CardAction = (p) => _jsx(ActionFrame, { ...slot('card-action'), ...p });
|
|
63
|
-
const CardContent = ({ children, ...p }) =>
|
|
64
|
-
const
|
|
86
|
+
const CardContent = ({ children, divider = false, ...p }) => {
|
|
87
|
+
const compact = useContext(Compact);
|
|
88
|
+
return (_jsx(ContentFrame, { ...slot('card-content'), ...(compact ? { ...COMPACT.content, ...(divider ? { borderBottomWidth: 1, borderColor: '$borderColor' } : null) } : null), ...p, children: ink(children) }));
|
|
89
|
+
};
|
|
90
|
+
const CardFooter = ({ children, divider = true, ...p }) => {
|
|
91
|
+
const compact = useContext(Compact);
|
|
92
|
+
return (_jsx(FooterFrame, { ...slot('card-footer'), ...(compact ? { ...COMPACT.band, ...(divider ? { borderTopWidth: 1, borderColor: '$borderColor' } : null) } : null), ...p, children: compact ? ink(children, SizableText, { size: '$1', color: '$aside' }) : ink(children) }));
|
|
93
|
+
};
|
|
65
94
|
const CardMedia = ({ ratio = 16 / 10, ...p }) => (_jsx(AspectRatio, { ...slot('card-media'), ratio: ratio, mt: -PAD, ...p }));
|
|
66
95
|
/**
|
|
67
96
|
* The dot-namespace. `Card.Media`, `Card.Body`, `Card.Title`, `Card.Meta` are
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../src/backends/gui/card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../src/backends/gui/card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,28 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
6
6
|
/**
|
|
7
7
|
* Checkbox — 16px box, `touch()` to the 44px floor on web and native alike.
|
|
8
8
|
* @hanzogui/checkbox owns the checked/indeterminate state and a11y.
|
|
9
|
+
*
|
|
10
|
+
* Two looks, one control.
|
|
11
|
+
*
|
|
12
|
+
* `plain` is the box every Hanzo surface has drawn: a 16px well with a control
|
|
13
|
+
* edge and an `$ink` tick, never filled. It is what a Checkbox renders when it
|
|
14
|
+
* names nothing else, so no existing caller moves.
|
|
15
|
+
*
|
|
16
|
+
* The record look is twenty-ui's (MIT, NOTICE), asked for by naming any of
|
|
17
|
+
* `variant` (solid | outline | soft), `size` (sm 12px | md 18px box), `shape`
|
|
18
|
+
* (square | round), `color` (accent | success | warning) or `hoverable`, or by a
|
|
19
|
+
* `<Density value="compact">` around it. The box FILLS when checked — the
|
|
20
|
+
* monochrome accent (`--primary`, which an org's accent restates) under its own
|
|
21
|
+
* foreground for the glyph — and `hoverable` (on by default there) widens the
|
|
22
|
+
* hit area by 5px (sm) or 6px (md) round the box with a hover halo, so a row's
|
|
23
|
+
* select column is a 24px target drawn as a 14px box.
|
|
9
24
|
*/
|
|
10
25
|
const gui_1 = require("@hanzo/gui");
|
|
11
26
|
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
12
27
|
const react_1 = require("react");
|
|
13
28
|
const slot_1 = require("./slot.cjs");
|
|
14
29
|
const gesture_1 = require("./gesture.cjs");
|
|
30
|
+
const density_1 = require("./density.cjs");
|
|
15
31
|
const BOX = 16;
|
|
16
32
|
/**
|
|
17
33
|
* The mark: a tick when checked, a dash when indeterminate. `$ink` on the
|
|
@@ -22,18 +38,74 @@ const Mark = () => {
|
|
|
22
38
|
const Icon = (0, react_1.useContext)(gui_1.CheckboxContext).checked === 'indeterminate' ? lucide_icons_2_1.Minus : lucide_icons_2_1.Check;
|
|
23
39
|
return (0, jsx_runtime_1.jsx)(Icon, { size: BOX - 3, color: "$ink", strokeWidth: 3 });
|
|
24
40
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
/** The record box per size: the box, its edge, the glyph drawn over it, and the halo's reach. */
|
|
42
|
+
const DIM = {
|
|
43
|
+
sm: { box: 12, edge: 1, glyph: 14, pad: 5 },
|
|
44
|
+
md: { box: 18, edge: 1.5, glyph: 20, pad: 6 },
|
|
45
|
+
};
|
|
46
|
+
/** The unchecked edge per variant (twenty-ui: inverted, secondary-inverted, medium). */
|
|
47
|
+
const EDGE = {
|
|
48
|
+
solid: '$ink',
|
|
49
|
+
outline: '$hint',
|
|
50
|
+
soft: '$borderColor',
|
|
51
|
+
};
|
|
52
|
+
/** Per colour: the checked fill, the glyph on it, and the halo a checked box takes under the pointer. */
|
|
53
|
+
const TONE = {
|
|
54
|
+
accent: { fill: 'var(--primary)', glyph: 'var(--primary-foreground)', tint: '$raised' },
|
|
55
|
+
success: { fill: '$good', glyph: '$background', tint: 'var(--state-success-bg)' },
|
|
56
|
+
warning: { fill: 'var(--state-warning)', glyph: '$background', tint: 'var(--state-warning-bg)' },
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* The visible box, inside the button. It reads the checked state from the
|
|
60
|
+
* control's context, so the fill follows a controlled AND an uncontrolled
|
|
61
|
+
* checkbox.
|
|
62
|
+
*/
|
|
63
|
+
const RecordBox = ({ look }) => {
|
|
64
|
+
const checked = (0, react_1.useContext)(gui_1.CheckboxContext).checked;
|
|
65
|
+
const on = checked === true || checked === 'indeterminate';
|
|
66
|
+
const Icon = checked === 'indeterminate' ? lucide_icons_2_1.Minus : lucide_icons_2_1.Check;
|
|
67
|
+
const { dim, tone } = look;
|
|
68
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('checkbox-box'), position: "relative", width: dim.box + 2 * dim.edge, height: dim.box + 2 * dim.edge, rounded: look.round ? '$10' : '$xs', borderWidth: dim.edge, borderColor: on ? tone.fill : look.disabled ? '$rim' : EDGE[look.variant], bg: on ? tone.fill : 'transparent', opacity: look.disabled && on ? 0.5 : 1, items: "center", justify: "center", pointerEvents: "none", children: on ? (0, jsx_runtime_1.jsx)(Icon, { size: dim.glyph, color: tone.glyph, strokeWidth: 2.5 }) : null }));
|
|
69
|
+
};
|
|
70
|
+
const Checkbox = ({ variant, size, shape, color, hoverable, ...props }) => {
|
|
71
|
+
const compact = (0, density_1.useDensity)() === 'compact';
|
|
72
|
+
const named = size !== undefined || shape !== undefined || color !== undefined || hoverable !== undefined;
|
|
73
|
+
const resolved = variant ?? (compact || named ? 'solid' : 'plain');
|
|
74
|
+
if (resolved !== 'plain') {
|
|
75
|
+
const dim = DIM[size ?? 'sm'];
|
|
76
|
+
const halo = hoverable ?? true;
|
|
77
|
+
const outer = dim.box + 2 * dim.edge;
|
|
78
|
+
const frame = halo ? outer + 2 * dim.pad : outer;
|
|
79
|
+
// The halo is the BUTTON's own hover, not a layer inside it: Chromium hit-
|
|
80
|
+
// tests a <button> as one target, so a child never matched :hover and a
|
|
81
|
+
// halo drawn as one never showed (measured). A checked box takes its
|
|
82
|
+
// colour's tint, read from the controlled value where there is one.
|
|
83
|
+
const lit = props.checked === true || props.checked === 'indeterminate';
|
|
84
|
+
const look = {
|
|
85
|
+
dim,
|
|
86
|
+
variant: resolved,
|
|
87
|
+
tone: TONE[color ?? 'accent'],
|
|
88
|
+
round: shape === 'round',
|
|
89
|
+
hoverable: halo,
|
|
90
|
+
disabled: !!props.disabled,
|
|
91
|
+
};
|
|
92
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Checkbox, { ...(0, slot_1.slot)('checkbox'), "data-variant": resolved, "data-size": size ?? 'sm', width: frame, height: frame, flexShrink: 0, padding: 0, position: "relative", items: "center", justify: "center", borderWidth: 0, rounded: shape === 'round' ? '$10' : halo ? '$3' : '$xs', backgroundColor: "transparent", ...(halo && !props.disabled ? { hoverStyle: { bg: lit ? look.tone.tint : '$hover' } } : null),
|
|
93
|
+
// The fill is the box's, drawn from context; the button stays a well.
|
|
94
|
+
activeStyle: { bg: 'transparent' }, cursor: props.disabled ? 'not-allowed' : 'pointer', ...(0, gesture_1.touch)(frame), ...props, children: (0, jsx_runtime_1.jsx)(RecordBox, { look: look }) }));
|
|
95
|
+
}
|
|
96
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Checkbox, { ...(0, slot_1.slot)('checkbox'), width: BOX, height: BOX, flexShrink: 0,
|
|
97
|
+
// The frame is a <button>, which the user agent pads 1px 6px: on a 16px
|
|
98
|
+
// border box that leaves a 2px-wide content box and squeezes the 13px mark
|
|
99
|
+
// to 2px. Zero padding gives the mark the whole 14px inside the border.
|
|
100
|
+
padding: 0, borderRadius: "$2", borderWidth: 1,
|
|
101
|
+
// A CONTROL boundary, not a surface hairline. `$borderColor` is 10% white —
|
|
102
|
+
// right for a card edge sitting on its own fill, and 1.26:1 against the
|
|
103
|
+
// ground, where WCAG 1.4.11 asks 3:1 for the visible boundary of a control.
|
|
104
|
+
// An unchecked box was therefore not quiet, it was absent. `$bound` is
|
|
105
|
+
// 3.45:1. The two jobs shared one token and only one of them was satisfied.
|
|
106
|
+
borderColor: "$bound", backgroundColor: "transparent",
|
|
107
|
+
// gui fills a checked box with `$backgroundActive` unless `activeStyle` is
|
|
108
|
+
// given; the well stays transparent so the `$ink` mark keeps its contrast.
|
|
109
|
+
activeStyle: { bg: 'transparent' }, ...(0, gesture_1.touch)(BOX), ...props, children: (0, jsx_runtime_1.jsx)(gui_1.Checkbox.Indicator, { ...(0, slot_1.slot)('checkbox-indicator'), alignItems: "center", justifyContent: "center", children: (0, jsx_runtime_1.jsx)(Mark, {}) }) }));
|
|
110
|
+
};
|
|
39
111
|
exports.Checkbox = Checkbox;
|
|
@@ -1,10 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Checkbox — 16px box, `touch()` to the 44px floor on web and native alike.
|
|
3
3
|
* @hanzogui/checkbox owns the checked/indeterminate state and a11y.
|
|
4
|
+
*
|
|
5
|
+
* Two looks, one control.
|
|
6
|
+
*
|
|
7
|
+
* `plain` is the box every Hanzo surface has drawn: a 16px well with a control
|
|
8
|
+
* edge and an `$ink` tick, never filled. It is what a Checkbox renders when it
|
|
9
|
+
* names nothing else, so no existing caller moves.
|
|
10
|
+
*
|
|
11
|
+
* The record look is twenty-ui's (MIT, NOTICE), asked for by naming any of
|
|
12
|
+
* `variant` (solid | outline | soft), `size` (sm 12px | md 18px box), `shape`
|
|
13
|
+
* (square | round), `color` (accent | success | warning) or `hoverable`, or by a
|
|
14
|
+
* `<Density value="compact">` around it. The box FILLS when checked — the
|
|
15
|
+
* monochrome accent (`--primary`, which an org's accent restates) under its own
|
|
16
|
+
* foreground for the glyph — and `hoverable` (on by default there) widens the
|
|
17
|
+
* hit area by 5px (sm) or 6px (md) round the box with a hover halo, so a row's
|
|
18
|
+
* select column is a 24px target drawn as a 14px box.
|
|
4
19
|
*/
|
|
5
20
|
import { Checkbox as GuiCheckbox } from '@hanzo/gui';
|
|
6
21
|
import { type ComponentProps } from 'react';
|
|
7
|
-
export type
|
|
8
|
-
|
|
22
|
+
export type CheckboxVariant = 'plain' | 'solid' | 'outline' | 'soft';
|
|
23
|
+
export type CheckboxSize = 'sm' | 'md';
|
|
24
|
+
export type CheckboxShape = 'square' | 'round';
|
|
25
|
+
export type CheckboxColor = 'accent' | 'success' | 'warning';
|
|
26
|
+
export type CheckboxProps = Omit<ComponentProps<typeof GuiCheckbox>, 'size' | 'color'> & {
|
|
27
|
+
/** `plain` (the default outside a compact density) or the record looks. */
|
|
28
|
+
variant?: CheckboxVariant;
|
|
29
|
+
/** The record box: `sm` 12px (the default there) or `md` 18px, plus its edge. */
|
|
30
|
+
size?: CheckboxSize;
|
|
31
|
+
shape?: CheckboxShape;
|
|
32
|
+
color?: CheckboxColor;
|
|
33
|
+
/** The halo round the box that widens the hit area. On by default in the record look. */
|
|
34
|
+
hoverable?: boolean;
|
|
35
|
+
};
|
|
36
|
+
declare const Checkbox: ({ variant, size, shape, color, hoverable, ...props }: CheckboxProps) => import("react").JSX.Element;
|
|
9
37
|
export { Checkbox };
|
|
10
38
|
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/checkbox.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/checkbox.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,QAAQ,IAAI,WAAW,EAA2B,MAAM,YAAY,CAAA;AAE7E,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAOvD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AACpE,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;AACtC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAA;AAC9C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAE5D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IACvF,2EAA2E;IAC3E,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,iFAAiF;IACjF,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,yFAAyF;IACzF,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAuED,QAAA,MAAM,QAAQ,yDAA0D,aAAa,gCAgFpF,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -3,12 +3,28 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
/**
|
|
4
4
|
* Checkbox — 16px box, `touch()` to the 44px floor on web and native alike.
|
|
5
5
|
* @hanzogui/checkbox owns the checked/indeterminate state and a11y.
|
|
6
|
+
*
|
|
7
|
+
* Two looks, one control.
|
|
8
|
+
*
|
|
9
|
+
* `plain` is the box every Hanzo surface has drawn: a 16px well with a control
|
|
10
|
+
* edge and an `$ink` tick, never filled. It is what a Checkbox renders when it
|
|
11
|
+
* names nothing else, so no existing caller moves.
|
|
12
|
+
*
|
|
13
|
+
* The record look is twenty-ui's (MIT, NOTICE), asked for by naming any of
|
|
14
|
+
* `variant` (solid | outline | soft), `size` (sm 12px | md 18px box), `shape`
|
|
15
|
+
* (square | round), `color` (accent | success | warning) or `hoverable`, or by a
|
|
16
|
+
* `<Density value="compact">` around it. The box FILLS when checked — the
|
|
17
|
+
* monochrome accent (`--primary`, which an org's accent restates) under its own
|
|
18
|
+
* foreground for the glyph — and `hoverable` (on by default there) widens the
|
|
19
|
+
* hit area by 5px (sm) or 6px (md) round the box with a hover halo, so a row's
|
|
20
|
+
* select column is a 24px target drawn as a 14px box.
|
|
6
21
|
*/
|
|
7
|
-
import { Checkbox as GuiCheckbox, CheckboxContext } from '@hanzo/gui';
|
|
22
|
+
import { Checkbox as GuiCheckbox, CheckboxContext, XStack } from '@hanzo/gui';
|
|
8
23
|
import { Check, Minus } from '@hanzogui/lucide-icons-2';
|
|
9
24
|
import { useContext } from 'react';
|
|
10
25
|
import { slot } from './slot.js';
|
|
11
26
|
import { touch } from './gesture.js';
|
|
27
|
+
import { useDensity } from './density.js';
|
|
12
28
|
const BOX = 16;
|
|
13
29
|
/**
|
|
14
30
|
* The mark: a tick when checked, a dash when indeterminate. `$ink` on the
|
|
@@ -19,19 +35,75 @@ const Mark = () => {
|
|
|
19
35
|
const Icon = useContext(CheckboxContext).checked === 'indeterminate' ? Minus : Check;
|
|
20
36
|
return _jsx(Icon, { size: BOX - 3, color: "$ink", strokeWidth: 3 });
|
|
21
37
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
/** The record box per size: the box, its edge, the glyph drawn over it, and the halo's reach. */
|
|
39
|
+
const DIM = {
|
|
40
|
+
sm: { box: 12, edge: 1, glyph: 14, pad: 5 },
|
|
41
|
+
md: { box: 18, edge: 1.5, glyph: 20, pad: 6 },
|
|
42
|
+
};
|
|
43
|
+
/** The unchecked edge per variant (twenty-ui: inverted, secondary-inverted, medium). */
|
|
44
|
+
const EDGE = {
|
|
45
|
+
solid: '$ink',
|
|
46
|
+
outline: '$hint',
|
|
47
|
+
soft: '$borderColor',
|
|
48
|
+
};
|
|
49
|
+
/** Per colour: the checked fill, the glyph on it, and the halo a checked box takes under the pointer. */
|
|
50
|
+
const TONE = {
|
|
51
|
+
accent: { fill: 'var(--primary)', glyph: 'var(--primary-foreground)', tint: '$raised' },
|
|
52
|
+
success: { fill: '$good', glyph: '$background', tint: 'var(--state-success-bg)' },
|
|
53
|
+
warning: { fill: 'var(--state-warning)', glyph: '$background', tint: 'var(--state-warning-bg)' },
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* The visible box, inside the button. It reads the checked state from the
|
|
57
|
+
* control's context, so the fill follows a controlled AND an uncontrolled
|
|
58
|
+
* checkbox.
|
|
59
|
+
*/
|
|
60
|
+
const RecordBox = ({ look }) => {
|
|
61
|
+
const checked = useContext(CheckboxContext).checked;
|
|
62
|
+
const on = checked === true || checked === 'indeterminate';
|
|
63
|
+
const Icon = checked === 'indeterminate' ? Minus : Check;
|
|
64
|
+
const { dim, tone } = look;
|
|
65
|
+
return (_jsx(XStack, { ...slot('checkbox-box'), position: "relative", width: dim.box + 2 * dim.edge, height: dim.box + 2 * dim.edge, rounded: look.round ? '$10' : '$xs', borderWidth: dim.edge, borderColor: on ? tone.fill : look.disabled ? '$rim' : EDGE[look.variant], bg: on ? tone.fill : 'transparent', opacity: look.disabled && on ? 0.5 : 1, items: "center", justify: "center", pointerEvents: "none", children: on ? _jsx(Icon, { size: dim.glyph, color: tone.glyph, strokeWidth: 2.5 }) : null }));
|
|
66
|
+
};
|
|
67
|
+
const Checkbox = ({ variant, size, shape, color, hoverable, ...props }) => {
|
|
68
|
+
const compact = useDensity() === 'compact';
|
|
69
|
+
const named = size !== undefined || shape !== undefined || color !== undefined || hoverable !== undefined;
|
|
70
|
+
const resolved = variant ?? (compact || named ? 'solid' : 'plain');
|
|
71
|
+
if (resolved !== 'plain') {
|
|
72
|
+
const dim = DIM[size ?? 'sm'];
|
|
73
|
+
const halo = hoverable ?? true;
|
|
74
|
+
const outer = dim.box + 2 * dim.edge;
|
|
75
|
+
const frame = halo ? outer + 2 * dim.pad : outer;
|
|
76
|
+
// The halo is the BUTTON's own hover, not a layer inside it: Chromium hit-
|
|
77
|
+
// tests a <button> as one target, so a child never matched :hover and a
|
|
78
|
+
// halo drawn as one never showed (measured). A checked box takes its
|
|
79
|
+
// colour's tint, read from the controlled value where there is one.
|
|
80
|
+
const lit = props.checked === true || props.checked === 'indeterminate';
|
|
81
|
+
const look = {
|
|
82
|
+
dim,
|
|
83
|
+
variant: resolved,
|
|
84
|
+
tone: TONE[color ?? 'accent'],
|
|
85
|
+
round: shape === 'round',
|
|
86
|
+
hoverable: halo,
|
|
87
|
+
disabled: !!props.disabled,
|
|
88
|
+
};
|
|
89
|
+
return (_jsx(GuiCheckbox, { ...slot('checkbox'), "data-variant": resolved, "data-size": size ?? 'sm', width: frame, height: frame, flexShrink: 0, padding: 0, position: "relative", items: "center", justify: "center", borderWidth: 0, rounded: shape === 'round' ? '$10' : halo ? '$3' : '$xs', backgroundColor: "transparent", ...(halo && !props.disabled ? { hoverStyle: { bg: lit ? look.tone.tint : '$hover' } } : null),
|
|
90
|
+
// The fill is the box's, drawn from context; the button stays a well.
|
|
91
|
+
activeStyle: { bg: 'transparent' }, cursor: props.disabled ? 'not-allowed' : 'pointer', ...touch(frame), ...props, children: _jsx(RecordBox, { look: look }) }));
|
|
92
|
+
}
|
|
93
|
+
return (_jsx(GuiCheckbox, { ...slot('checkbox'), width: BOX, height: BOX, flexShrink: 0,
|
|
94
|
+
// The frame is a <button>, which the user agent pads 1px 6px: on a 16px
|
|
95
|
+
// border box that leaves a 2px-wide content box and squeezes the 13px mark
|
|
96
|
+
// to 2px. Zero padding gives the mark the whole 14px inside the border.
|
|
97
|
+
padding: 0, borderRadius: "$2", borderWidth: 1,
|
|
98
|
+
// A CONTROL boundary, not a surface hairline. `$borderColor` is 10% white —
|
|
99
|
+
// right for a card edge sitting on its own fill, and 1.26:1 against the
|
|
100
|
+
// ground, where WCAG 1.4.11 asks 3:1 for the visible boundary of a control.
|
|
101
|
+
// An unchecked box was therefore not quiet, it was absent. `$bound` is
|
|
102
|
+
// 3.45:1. The two jobs shared one token and only one of them was satisfied.
|
|
103
|
+
borderColor: "$bound", backgroundColor: "transparent",
|
|
104
|
+
// gui fills a checked box with `$backgroundActive` unless `activeStyle` is
|
|
105
|
+
// given; the well stays transparent so the `$ink` mark keeps its contrast.
|
|
106
|
+
activeStyle: { bg: 'transparent' }, ...touch(BOX), ...props, children: _jsx(GuiCheckbox.Indicator, { ...slot('checkbox-indicator'), alignItems: "center", justifyContent: "center", children: _jsx(Mark, {}) }) }));
|
|
107
|
+
};
|
|
36
108
|
export { Checkbox };
|
|
37
109
|
//# sourceMappingURL=checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/backends/gui/checkbox.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/backends/gui/checkbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Chip = Chip;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* Chip — a compact inline label with something before and after it: a record
|
|
8
|
+
* (avatar + name), an actor, an email or a phone, a "Not shared" lock.
|
|
9
|
+
*
|
|
10
|
+
* A chip is chrome, not data — it carries no hue of its own (that is `Tag`'s
|
|
11
|
+
* job) — so its grounds are the surface ladder: ghost takes its parent's, soft
|
|
12
|
+
* and solid lift one and two rungs, and a pressable chip lifts one more under
|
|
13
|
+
* the pointer and once again while pressed. The label truncates with an
|
|
14
|
+
* overflow hint, and the press area meets the 44px floor through `touch()`,
|
|
15
|
+
* never through padding, so the chip keeps its 20px.
|
|
16
|
+
*
|
|
17
|
+
* Re-expressed from twenty-ui's Chip (MIT, see NOTICE): sm 20 / md 24 tall, a
|
|
18
|
+
* 4px gutter and gap, square (4px) or round, an end element behind an optional
|
|
19
|
+
* hairline divider, a max width that shrinks the label and not the padding.
|
|
20
|
+
*/
|
|
21
|
+
const gui_1 = require("@hanzo/gui");
|
|
22
|
+
const truncated_text_1 = require("./truncated-text.cjs");
|
|
23
|
+
const ink_1 = require("./ink.cjs");
|
|
24
|
+
const press_1 = require("./press.cjs");
|
|
25
|
+
const gesture_1 = require("./gesture.cjs");
|
|
26
|
+
const slot_1 = require("./slot.cjs");
|
|
27
|
+
const HEIGHT = { sm: 20, md: 24 };
|
|
28
|
+
/** Rest, hover and pressed grounds per variant: each step one rung up the ladder. */
|
|
29
|
+
const GROUND = {
|
|
30
|
+
ghost: { rest: 'transparent', hover: '$hover', down: '$raised' },
|
|
31
|
+
soft: { rest: '$hover', hover: '$raised', down: '$rim' },
|
|
32
|
+
solid: { rest: '$raised', hover: '$rim', down: '$bound' },
|
|
33
|
+
};
|
|
34
|
+
function Chip({ label, size = 'sm', variant = 'ghost', color = 'primary', shape = 'square', weight = 'regular', startElement, endElement, endElementDivider = false, truncate = true, tooltipContent, onPress, href, clickable, disabled = false, children, ...props }) {
|
|
35
|
+
const ground = GROUND[variant];
|
|
36
|
+
const pressable = !disabled && (clickable ?? (onPress != null || href != null));
|
|
37
|
+
const text = {
|
|
38
|
+
size: '$2',
|
|
39
|
+
fontWeight: weight === 'medium' ? '500' : undefined,
|
|
40
|
+
color: disabled ? '$hush' : color === 'secondary' ? '$aside' : '$ink',
|
|
41
|
+
};
|
|
42
|
+
const body = label ?? children;
|
|
43
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('chip'), "data-size": size, "data-variant": variant, ...(href != null && !disabled ? { render: 'a', href } : onPress != null ? (0, press_1.press)(disabled ? undefined : onPress) : null), ...(disabled ? { 'aria-disabled': true } : null), display: "inline-flex", self: "flex-start", items: "center", gap: "$1", height: HEIGHT[size], px: "$1", maxW: "100%", minW: 0, rounded: shape === 'round' ? '$10' : '$xs', bg: ground.rest, select: "none", cursor: disabled ? 'not-allowed' : pressable ? 'pointer' : undefined, ...(pressable
|
|
44
|
+
? {
|
|
45
|
+
hoverStyle: { bg: ground.hover },
|
|
46
|
+
pressStyle: { bg: ground.down },
|
|
47
|
+
focusVisibleStyle: press_1.RING,
|
|
48
|
+
...(0, gesture_1.touch)(HEIGHT[size], 44, 'y'),
|
|
49
|
+
}
|
|
50
|
+
: null), ...props, children: [startElement ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('chip-start'), shrink: 0, items: "center", children: startElement })) : null, typeof body === 'string' || typeof body === 'number' ? (truncate ? ((0, jsx_runtime_1.jsx)(truncated_text_1.TruncatedText, { text: String(body), tooltipContent: tooltipContent, ...text })) : ((0, ink_1.ink)(body, undefined, text))) : (body), endElement ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('chip-end'), shrink: 0, items: "center", self: "stretch", ...(endElementDivider ? { borderLeftWidth: 1, borderColor: '$borderColor', pl: '$1' } : null), children: endElement })) : null] }));
|
|
51
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chip — a compact inline label with something before and after it: a record
|
|
3
|
+
* (avatar + name), an actor, an email or a phone, a "Not shared" lock.
|
|
4
|
+
*
|
|
5
|
+
* A chip is chrome, not data — it carries no hue of its own (that is `Tag`'s
|
|
6
|
+
* job) — so its grounds are the surface ladder: ghost takes its parent's, soft
|
|
7
|
+
* and solid lift one and two rungs, and a pressable chip lifts one more under
|
|
8
|
+
* the pointer and once again while pressed. The label truncates with an
|
|
9
|
+
* overflow hint, and the press area meets the 44px floor through `touch()`,
|
|
10
|
+
* never through padding, so the chip keeps its 20px.
|
|
11
|
+
*
|
|
12
|
+
* Re-expressed from twenty-ui's Chip (MIT, see NOTICE): sm 20 / md 24 tall, a
|
|
13
|
+
* 4px gutter and gap, square (4px) or round, an end element behind an optional
|
|
14
|
+
* hairline divider, a max width that shrinks the label and not the padding.
|
|
15
|
+
*/
|
|
16
|
+
import { XStack } from '@hanzo/gui';
|
|
17
|
+
import type { ComponentProps, ReactNode } from 'react';
|
|
18
|
+
export type ChipSize = 'sm' | 'md';
|
|
19
|
+
export type ChipVariant = 'ghost' | 'soft' | 'solid';
|
|
20
|
+
export type ChipProps = Omit<ComponentProps<typeof XStack>, 'children' | 'color'> & {
|
|
21
|
+
label?: ReactNode;
|
|
22
|
+
size?: ChipSize;
|
|
23
|
+
variant?: ChipVariant;
|
|
24
|
+
color?: 'primary' | 'secondary';
|
|
25
|
+
shape?: 'square' | 'round';
|
|
26
|
+
weight?: 'regular' | 'medium';
|
|
27
|
+
/** Before the label: an avatar, an icon. Never shrinks. */
|
|
28
|
+
startElement?: ReactNode;
|
|
29
|
+
/** After the label: a remove button, a count. */
|
|
30
|
+
endElement?: ReactNode;
|
|
31
|
+
/** A hairline between the label and the end element. */
|
|
32
|
+
endElementDivider?: boolean;
|
|
33
|
+
/** One line with an ellipsis and an overflow hint. Default true. */
|
|
34
|
+
truncate?: boolean;
|
|
35
|
+
/** The hint, when it should say more than the label. */
|
|
36
|
+
tooltipContent?: ReactNode;
|
|
37
|
+
/** Makes the chip a button; it lifts under the pointer. */
|
|
38
|
+
onPress?: () => void;
|
|
39
|
+
/** Makes the chip a link — a record chip opens its record. */
|
|
40
|
+
href?: string;
|
|
41
|
+
/** Pressable without `onPress`/`href` — when the host handles the press. */
|
|
42
|
+
clickable?: boolean;
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
children?: ReactNode;
|
|
45
|
+
};
|
|
46
|
+
export declare function Chip({ label, size, variant, color, shape, weight, startElement, endElement, endElementDivider, truncate, tooltipContent, onPress, href, clickable, disabled, children, ...props }: ChipProps): import("react").JSX.Element;
|
|
47
|
+
//# sourceMappingURL=chip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/chip.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAA;AAClC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAWpD,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IAClF,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;IAC/B,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC1B,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC7B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,iDAAiD;IACjD,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,IAAW,EACX,OAAiB,EACjB,KAAiB,EACjB,KAAgB,EAChB,MAAkB,EAClB,YAAY,EACZ,UAAU,EACV,iBAAyB,EACzB,QAAe,EACf,cAAc,EACd,OAAO,EACP,IAAI,EACJ,SAAS,EACT,QAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,SAAS,+BAkEX"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Chip — a compact inline label with something before and after it: a record
|
|
5
|
+
* (avatar + name), an actor, an email or a phone, a "Not shared" lock.
|
|
6
|
+
*
|
|
7
|
+
* A chip is chrome, not data — it carries no hue of its own (that is `Tag`'s
|
|
8
|
+
* job) — so its grounds are the surface ladder: ghost takes its parent's, soft
|
|
9
|
+
* and solid lift one and two rungs, and a pressable chip lifts one more under
|
|
10
|
+
* the pointer and once again while pressed. The label truncates with an
|
|
11
|
+
* overflow hint, and the press area meets the 44px floor through `touch()`,
|
|
12
|
+
* never through padding, so the chip keeps its 20px.
|
|
13
|
+
*
|
|
14
|
+
* Re-expressed from twenty-ui's Chip (MIT, see NOTICE): sm 20 / md 24 tall, a
|
|
15
|
+
* 4px gutter and gap, square (4px) or round, an end element behind an optional
|
|
16
|
+
* hairline divider, a max width that shrinks the label and not the padding.
|
|
17
|
+
*/
|
|
18
|
+
import { XStack } from '@hanzo/gui';
|
|
19
|
+
import { TruncatedText } from './truncated-text.js';
|
|
20
|
+
import { ink } from './ink.js';
|
|
21
|
+
import { press, RING } from './press.js';
|
|
22
|
+
import { touch } from './gesture.js';
|
|
23
|
+
import { slot } from './slot.js';
|
|
24
|
+
const HEIGHT = { sm: 20, md: 24 };
|
|
25
|
+
/** Rest, hover and pressed grounds per variant: each step one rung up the ladder. */
|
|
26
|
+
const GROUND = {
|
|
27
|
+
ghost: { rest: 'transparent', hover: '$hover', down: '$raised' },
|
|
28
|
+
soft: { rest: '$hover', hover: '$raised', down: '$rim' },
|
|
29
|
+
solid: { rest: '$raised', hover: '$rim', down: '$bound' },
|
|
30
|
+
};
|
|
31
|
+
export function Chip({ label, size = 'sm', variant = 'ghost', color = 'primary', shape = 'square', weight = 'regular', startElement, endElement, endElementDivider = false, truncate = true, tooltipContent, onPress, href, clickable, disabled = false, children, ...props }) {
|
|
32
|
+
const ground = GROUND[variant];
|
|
33
|
+
const pressable = !disabled && (clickable ?? (onPress != null || href != null));
|
|
34
|
+
const text = {
|
|
35
|
+
size: '$2',
|
|
36
|
+
fontWeight: weight === 'medium' ? '500' : undefined,
|
|
37
|
+
color: disabled ? '$hush' : color === 'secondary' ? '$aside' : '$ink',
|
|
38
|
+
};
|
|
39
|
+
const body = label ?? children;
|
|
40
|
+
return (_jsxs(XStack, { ...slot('chip'), "data-size": size, "data-variant": variant, ...(href != null && !disabled ? { render: 'a', href } : onPress != null ? press(disabled ? undefined : onPress) : null), ...(disabled ? { 'aria-disabled': true } : null), display: "inline-flex", self: "flex-start", items: "center", gap: "$1", height: HEIGHT[size], px: "$1", maxW: "100%", minW: 0, rounded: shape === 'round' ? '$10' : '$xs', bg: ground.rest, select: "none", cursor: disabled ? 'not-allowed' : pressable ? 'pointer' : undefined, ...(pressable
|
|
41
|
+
? {
|
|
42
|
+
hoverStyle: { bg: ground.hover },
|
|
43
|
+
pressStyle: { bg: ground.down },
|
|
44
|
+
focusVisibleStyle: RING,
|
|
45
|
+
...touch(HEIGHT[size], 44, 'y'),
|
|
46
|
+
}
|
|
47
|
+
: null), ...props, children: [startElement ? (_jsx(XStack, { ...slot('chip-start'), shrink: 0, items: "center", children: startElement })) : null, typeof body === 'string' || typeof body === 'number' ? (truncate ? (_jsx(TruncatedText, { text: String(body), tooltipContent: tooltipContent, ...text })) : (ink(body, undefined, text))) : (body), endElement ? (_jsx(XStack, { ...slot('chip-end'), shrink: 0, items: "center", self: "stretch", ...(endElementDivider ? { borderLeftWidth: 1, borderColor: '$borderColor', pl: '$1' } : null), children: endElement })) : null] }));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=chip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip.js","sourceRoot":"","sources":["../../../src/backends/gui/chip.tsx"],"names":[],"mappings":"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"}
|