@hanzo/ui 8.27.91 → 8.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +25 -0
- package/README.md +1 -1
- package/dist/backends/gui/alert-dialog.cjs +24 -6
- package/dist/backends/gui/alert-dialog.d.ts +11 -3
- package/dist/backends/gui/alert-dialog.d.ts.map +1 -1
- package/dist/backends/gui/alert-dialog.js +24 -6
- package/dist/backends/gui/alert-dialog.js.map +1 -1
- package/dist/backends/gui/alert.cjs +32 -1
- package/dist/backends/gui/alert.d.ts +36 -3
- package/dist/backends/gui/alert.d.ts.map +1 -1
- package/dist/backends/gui/alert.js +32 -2
- package/dist/backends/gui/alert.js.map +1 -1
- package/dist/backends/gui/avatar-group.cjs +28 -0
- package/dist/backends/gui/avatar-group.d.ts +33 -0
- package/dist/backends/gui/avatar-group.d.ts.map +1 -0
- package/dist/backends/gui/avatar-group.js +26 -0
- package/dist/backends/gui/avatar-group.js.map +1 -0
- package/dist/backends/gui/avatar.cjs +53 -3
- package/dist/backends/gui/avatar.d.ts +46 -4
- package/dist/backends/gui/avatar.d.ts.map +1 -1
- package/dist/backends/gui/avatar.js +52 -3
- package/dist/backends/gui/avatar.js.map +1 -1
- package/dist/backends/gui/badge.cjs +40 -2
- package/dist/backends/gui/badge.d.ts +7 -2
- package/dist/backends/gui/badge.d.ts.map +1 -1
- package/dist/backends/gui/badge.js +40 -2
- package/dist/backends/gui/badge.js.map +1 -1
- package/dist/backends/gui/banner.cjs +40 -1
- package/dist/backends/gui/banner.d.ts +36 -3
- package/dist/backends/gui/banner.d.ts.map +1 -1
- package/dist/backends/gui/banner.js +42 -4
- package/dist/backends/gui/banner.js.map +1 -1
- package/dist/backends/gui/breadcrumb.cjs +28 -10
- package/dist/backends/gui/breadcrumb.d.ts +20 -11
- package/dist/backends/gui/breadcrumb.d.ts.map +1 -1
- package/dist/backends/gui/breadcrumb.js +28 -10
- package/dist/backends/gui/breadcrumb.js.map +1 -1
- package/dist/backends/gui/button-group.cjs +43 -0
- package/dist/backends/gui/button-group.d.ts +48 -0
- package/dist/backends/gui/button-group.d.ts.map +1 -0
- package/dist/backends/gui/button-group.js +40 -0
- package/dist/backends/gui/button-group.js.map +1 -0
- package/dist/backends/gui/button.cjs +177 -4
- package/dist/backends/gui/button.d.ts +69 -4
- package/dist/backends/gui/button.d.ts.map +1 -1
- package/dist/backends/gui/button.js +179 -6
- package/dist/backends/gui/button.js.map +1 -1
- package/dist/backends/gui/card.cjs +50 -21
- package/dist/backends/gui/card.d.ts +16 -7
- package/dist/backends/gui/card.d.ts.map +1 -1
- package/dist/backends/gui/card.js +50 -21
- package/dist/backends/gui/card.js.map +1 -1
- package/dist/backends/gui/checkbox.cjs +86 -14
- package/dist/backends/gui/checkbox.d.ts +30 -2
- package/dist/backends/gui/checkbox.d.ts.map +1 -1
- package/dist/backends/gui/checkbox.js +87 -15
- package/dist/backends/gui/checkbox.js.map +1 -1
- package/dist/backends/gui/chip.cjs +51 -0
- package/dist/backends/gui/chip.d.ts +47 -0
- package/dist/backends/gui/chip.d.ts.map +1 -0
- package/dist/backends/gui/chip.js +49 -0
- package/dist/backends/gui/chip.js.map +1 -0
- package/dist/backends/gui/choice.cjs +18 -3
- package/dist/backends/gui/choice.d.ts +10 -2
- package/dist/backends/gui/choice.d.ts.map +1 -1
- package/dist/backends/gui/choice.js +19 -4
- package/dist/backends/gui/choice.js.map +1 -1
- package/dist/backends/gui/code-editor.cjs +16 -5
- package/dist/backends/gui/code-editor.d.ts +18 -1
- package/dist/backends/gui/code-editor.d.ts.map +1 -1
- package/dist/backends/gui/code-editor.js +16 -5
- package/dist/backends/gui/code-editor.js.map +1 -1
- package/dist/backends/gui/color-sample.cjs +24 -0
- package/dist/backends/gui/color-sample.d.ts +23 -0
- package/dist/backends/gui/color-sample.d.ts.map +1 -0
- package/dist/backends/gui/color-sample.js +22 -0
- package/dist/backends/gui/color-sample.js.map +1 -0
- package/dist/backends/gui/control.cjs +5 -3
- package/dist/backends/gui/control.d.ts +13 -3
- package/dist/backends/gui/control.d.ts.map +1 -1
- package/dist/backends/gui/control.js +5 -3
- package/dist/backends/gui/control.js.map +1 -1
- package/dist/backends/gui/country-select.cjs +69 -0
- package/dist/backends/gui/country-select.d.ts +30 -0
- package/dist/backends/gui/country-select.d.ts.map +1 -0
- package/dist/backends/gui/country-select.js +67 -0
- package/dist/backends/gui/country-select.js.map +1 -0
- package/dist/backends/gui/currency-picker.cjs +48 -0
- package/dist/backends/gui/currency-picker.d.ts +37 -0
- package/dist/backends/gui/currency-picker.d.ts.map +1 -0
- package/dist/backends/gui/currency-picker.js +46 -0
- package/dist/backends/gui/currency-picker.js.map +1 -0
- package/dist/backends/gui/density.cjs +32 -0
- package/dist/backends/gui/density.d.ts +27 -0
- package/dist/backends/gui/density.d.ts.map +1 -0
- package/dist/backends/gui/density.js +27 -0
- package/dist/backends/gui/density.js.map +1 -0
- package/dist/backends/gui/dialog.cjs +65 -7
- package/dist/backends/gui/dialog.d.ts +68 -3
- package/dist/backends/gui/dialog.d.ts.map +1 -1
- package/dist/backends/gui/dialog.js +63 -7
- package/dist/backends/gui/dialog.js.map +1 -1
- package/dist/backends/gui/dropdown-menu.cjs +361 -31
- package/dist/backends/gui/dropdown-menu.d.ts +151 -15
- package/dist/backends/gui/dropdown-menu.d.ts.map +1 -1
- package/dist/backends/gui/dropdown-menu.js +353 -34
- package/dist/backends/gui/dropdown-menu.js.map +1 -1
- package/dist/backends/gui/feedback.cjs +78 -0
- package/dist/backends/gui/feedback.d.ts +46 -0
- package/dist/backends/gui/feedback.d.ts.map +1 -0
- package/dist/backends/gui/feedback.js +74 -0
- package/dist/backends/gui/feedback.js.map +1 -0
- package/dist/backends/gui/field.cjs +71 -14
- package/dist/backends/gui/field.d.ts +43 -3
- package/dist/backends/gui/field.d.ts.map +1 -1
- package/dist/backends/gui/field.js +69 -14
- package/dist/backends/gui/field.js.map +1 -1
- package/dist/backends/gui/flag.cjs +17 -0
- package/dist/backends/gui/flag.d.ts +9 -0
- package/dist/backends/gui/flag.d.ts.map +1 -0
- package/dist/backends/gui/flag.js +14 -0
- package/dist/backends/gui/flag.js.map +1 -0
- package/dist/backends/gui/grip.cjs +35 -3
- package/dist/backends/gui/grip.d.ts +16 -1
- package/dist/backends/gui/grip.d.ts.map +1 -1
- package/dist/backends/gui/grip.js +35 -3
- package/dist/backends/gui/grip.js.map +1 -1
- package/dist/backends/gui/heading.cjs +27 -0
- package/dist/backends/gui/heading.d.ts +8 -0
- package/dist/backends/gui/heading.d.ts.map +1 -0
- package/dist/backends/gui/heading.js +25 -0
- package/dist/backends/gui/heading.js.map +1 -0
- package/dist/backends/gui/hue.cjs +49 -0
- package/dist/backends/gui/hue.d.ts +18 -0
- package/dist/backends/gui/hue.d.ts.map +1 -0
- package/dist/backends/gui/hue.js +43 -0
- package/dist/backends/gui/hue.js.map +1 -0
- package/dist/backends/gui/icon-picker.cjs +194 -0
- package/dist/backends/gui/icon-picker.d.ts +51 -0
- package/dist/backends/gui/icon-picker.d.ts.map +1 -0
- package/dist/backends/gui/icon-picker.js +155 -0
- package/dist/backends/gui/icon-picker.js.map +1 -0
- package/dist/backends/gui/icon-tile.cjs +36 -0
- package/dist/backends/gui/icon-tile.d.ts +26 -0
- package/dist/backends/gui/icon-tile.d.ts.map +1 -0
- package/dist/backends/gui/icon-tile.js +32 -0
- package/dist/backends/gui/icon-tile.js.map +1 -0
- package/dist/backends/gui/icons.cjs +381 -0
- package/dist/backends/gui/icons.d.ts +53 -0
- package/dist/backends/gui/icons.d.ts.map +1 -0
- package/dist/backends/gui/icons.js +377 -0
- package/dist/backends/gui/icons.js.map +1 -0
- package/dist/backends/gui/image-input.cjs +78 -0
- package/dist/backends/gui/image-input.d.ts +32 -0
- package/dist/backends/gui/image-input.d.ts.map +1 -0
- package/dist/backends/gui/image-input.js +74 -0
- package/dist/backends/gui/image-input.js.map +1 -0
- package/dist/backends/gui/index.cjs +105 -7
- package/dist/backends/gui/index.d.ts +47 -2
- package/dist/backends/gui/index.d.ts.map +1 -1
- package/dist/backends/gui/index.js +37 -1
- package/dist/backends/gui/index.js.map +1 -1
- package/dist/backends/gui/input-group.cjs +49 -0
- package/dist/backends/gui/input-group.d.ts +46 -0
- package/dist/backends/gui/input-group.d.ts.map +1 -0
- package/dist/backends/gui/input-group.js +46 -0
- package/dist/backends/gui/input-group.js.map +1 -0
- package/dist/backends/gui/input.cjs +32 -4
- package/dist/backends/gui/input.d.ts +5 -1
- package/dist/backends/gui/input.d.ts.map +1 -1
- package/dist/backends/gui/input.js +33 -5
- package/dist/backends/gui/input.js.map +1 -1
- package/dist/backends/gui/item.cjs +34 -2
- package/dist/backends/gui/item.d.ts +21 -5
- package/dist/backends/gui/item.d.ts.map +1 -1
- package/dist/backends/gui/item.js +35 -3
- package/dist/backends/gui/item.js.map +1 -1
- package/dist/backends/gui/json-tree.cjs +103 -15
- package/dist/backends/gui/json-tree.d.ts +39 -3
- package/dist/backends/gui/json-tree.d.ts.map +1 -1
- package/dist/backends/gui/json-tree.js +104 -16
- package/dist/backends/gui/json-tree.js.map +1 -1
- package/dist/backends/gui/kbd.cjs +18 -2
- package/dist/backends/gui/kbd.d.ts +5 -2
- package/dist/backends/gui/kbd.d.ts.map +1 -1
- package/dist/backends/gui/kbd.js +18 -2
- package/dist/backends/gui/kbd.js.map +1 -1
- package/dist/backends/gui/label.cjs +14 -3
- package/dist/backends/gui/label.d.ts +12 -3
- package/dist/backends/gui/label.d.ts.map +1 -1
- package/dist/backends/gui/label.js +14 -3
- package/dist/backends/gui/label.js.map +1 -1
- package/dist/backends/gui/layout.cjs +5 -1
- package/dist/backends/gui/layout.d.ts +1 -1
- package/dist/backends/gui/layout.d.ts.map +1 -1
- package/dist/backends/gui/layout.js +5 -1
- package/dist/backends/gui/layout.js.map +1 -1
- package/dist/backends/gui/number-field.cjs +163 -0
- package/dist/backends/gui/number-field.d.ts +34 -0
- package/dist/backends/gui/number-field.d.ts.map +1 -0
- package/dist/backends/gui/number-field.js +160 -0
- package/dist/backends/gui/number-field.js.map +1 -0
- package/dist/backends/gui/overflowing-list.cjs +79 -0
- package/dist/backends/gui/overflowing-list.d.ts +42 -0
- package/dist/backends/gui/overflowing-list.d.ts.map +1 -0
- package/dist/backends/gui/overflowing-list.js +76 -0
- package/dist/backends/gui/overflowing-list.js.map +1 -0
- package/dist/backends/gui/phone-country-picker.cjs +60 -0
- package/dist/backends/gui/phone-country-picker.d.ts +34 -0
- package/dist/backends/gui/phone-country-picker.d.ts.map +1 -0
- package/dist/backends/gui/phone-country-picker.js +57 -0
- package/dist/backends/gui/phone-country-picker.js.map +1 -0
- package/dist/backends/gui/popover.cjs +20 -4
- package/dist/backends/gui/popover.d.ts +12 -1
- package/dist/backends/gui/popover.d.ts.map +1 -1
- package/dist/backends/gui/popover.js +21 -5
- package/dist/backends/gui/popover.js.map +1 -1
- package/dist/backends/gui/progress-ring.cjs +38 -0
- package/dist/backends/gui/progress-ring.d.ts +37 -0
- package/dist/backends/gui/progress-ring.d.ts.map +1 -0
- package/dist/backends/gui/progress-ring.js +36 -0
- package/dist/backends/gui/progress-ring.js.map +1 -0
- package/dist/backends/gui/progress.cjs +31 -7
- package/dist/backends/gui/progress.d.ts +25 -3
- package/dist/backends/gui/progress.d.ts.map +1 -1
- package/dist/backends/gui/progress.js +32 -8
- package/dist/backends/gui/progress.js.map +1 -1
- package/dist/backends/gui/radio-group.cjs +28 -2
- package/dist/backends/gui/radio-group.d.ts +20 -2
- package/dist/backends/gui/radio-group.d.ts.map +1 -1
- package/dist/backends/gui/radio-group.js +28 -2
- package/dist/backends/gui/radio-group.js.map +1 -1
- package/dist/backends/gui/search-list.cjs +62 -0
- package/dist/backends/gui/search-list.d.ts +65 -0
- package/dist/backends/gui/search-list.d.ts.map +1 -0
- package/dist/backends/gui/search-list.js +58 -0
- package/dist/backends/gui/search-list.js.map +1 -0
- package/dist/backends/gui/select.cjs +50 -16
- package/dist/backends/gui/select.d.ts +12 -3
- package/dist/backends/gui/select.d.ts.map +1 -1
- package/dist/backends/gui/select.js +51 -17
- package/dist/backends/gui/select.js.map +1 -1
- package/dist/backends/gui/shortcut.cjs +122 -0
- package/dist/backends/gui/shortcut.d.ts +58 -0
- package/dist/backends/gui/shortcut.d.ts.map +1 -0
- package/dist/backends/gui/shortcut.js +115 -0
- package/dist/backends/gui/shortcut.js.map +1 -0
- package/dist/backends/gui/skeleton.cjs +41 -10
- package/dist/backends/gui/skeleton.d.ts +46 -8
- package/dist/backends/gui/skeleton.d.ts.map +1 -1
- package/dist/backends/gui/skeleton.js +39 -8
- package/dist/backends/gui/skeleton.js.map +1 -1
- package/dist/backends/gui/snippet.cjs +12 -1
- package/dist/backends/gui/snippet.d.ts +4 -2
- package/dist/backends/gui/snippet.d.ts.map +1 -1
- package/dist/backends/gui/snippet.js +12 -1
- package/dist/backends/gui/snippet.js.map +1 -1
- package/dist/backends/gui/spinner.cjs +8 -1
- package/dist/backends/gui/spinner.d.ts +11 -2
- package/dist/backends/gui/spinner.d.ts.map +1 -1
- package/dist/backends/gui/spinner.js +9 -2
- package/dist/backends/gui/spinner.js.map +1 -1
- package/dist/backends/gui/stack-icon.cjs +17 -0
- package/dist/backends/gui/stack-icon.d.ts +15 -0
- package/dist/backends/gui/stack-icon.d.ts.map +1 -0
- package/dist/backends/gui/stack-icon.js +15 -0
- package/dist/backends/gui/stack-icon.js.map +1 -0
- package/dist/backends/gui/status.cjs +38 -1
- package/dist/backends/gui/status.d.ts +16 -2
- package/dist/backends/gui/status.d.ts.map +1 -1
- package/dist/backends/gui/status.js +38 -2
- package/dist/backends/gui/status.js.map +1 -1
- package/dist/backends/gui/stepper.cjs +73 -3
- package/dist/backends/gui/stepper.d.ts +25 -1
- package/dist/backends/gui/stepper.d.ts.map +1 -1
- package/dist/backends/gui/stepper.js +71 -5
- package/dist/backends/gui/stepper.js.map +1 -1
- package/dist/backends/gui/switch.cjs +35 -20
- package/dist/backends/gui/switch.d.ts +12 -2
- package/dist/backends/gui/switch.d.ts.map +1 -1
- package/dist/backends/gui/switch.js +35 -20
- package/dist/backends/gui/switch.js.map +1 -1
- package/dist/backends/gui/tabs.cjs +63 -17
- package/dist/backends/gui/tabs.d.ts +35 -6
- package/dist/backends/gui/tabs.d.ts.map +1 -1
- package/dist/backends/gui/tabs.js +65 -19
- package/dist/backends/gui/tabs.js.map +1 -1
- package/dist/backends/gui/tag.cjs +48 -0
- package/dist/backends/gui/tag.d.ts +53 -0
- package/dist/backends/gui/tag.d.ts.map +1 -0
- package/dist/backends/gui/tag.js +46 -0
- package/dist/backends/gui/tag.js.map +1 -0
- package/dist/backends/gui/tags.cjs +9 -2
- package/dist/backends/gui/tags.d.ts +6 -5
- package/dist/backends/gui/tags.d.ts.map +1 -1
- package/dist/backends/gui/tags.js +9 -2
- package/dist/backends/gui/tags.js.map +1 -1
- package/dist/backends/gui/textarea.cjs +22 -6
- package/dist/backends/gui/textarea.d.ts +10 -1
- package/dist/backends/gui/textarea.d.ts.map +1 -1
- package/dist/backends/gui/textarea.js +22 -6
- package/dist/backends/gui/textarea.js.map +1 -1
- package/dist/backends/gui/toaster.cjs +167 -3
- package/dist/backends/gui/toaster.d.ts +28 -2
- package/dist/backends/gui/toaster.d.ts.map +1 -1
- package/dist/backends/gui/toaster.js +167 -5
- package/dist/backends/gui/toaster.js.map +1 -1
- package/dist/backends/gui/toggle-group.cjs +13 -0
- package/dist/backends/gui/toggle-group.d.ts +7 -1
- package/dist/backends/gui/toggle-group.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.js +13 -0
- package/dist/backends/gui/toggle-group.js.map +1 -1
- package/dist/backends/gui/tooltip.cjs +29 -6
- package/dist/backends/gui/tooltip.d.ts +23 -4
- package/dist/backends/gui/tooltip.d.ts.map +1 -1
- package/dist/backends/gui/tooltip.js +31 -8
- package/dist/backends/gui/tooltip.js.map +1 -1
- package/dist/backends/gui/truncated-text.cjs +102 -0
- package/dist/backends/gui/truncated-text.d.ts +55 -0
- package/dist/backends/gui/truncated-text.d.ts.map +1 -0
- package/dist/backends/gui/truncated-text.js +97 -0
- package/dist/backends/gui/truncated-text.js.map +1 -0
- package/dist/gallery/compound.cjs +60 -0
- package/dist/gallery/compound.d.ts +2 -0
- package/dist/gallery/compound.d.ts.map +1 -0
- package/dist/gallery/compound.js +58 -0
- package/dist/gallery/compound.js.map +1 -0
- package/dist/gallery/display.cjs +47 -0
- package/dist/gallery/display.d.ts +3 -0
- package/dist/gallery/display.d.ts.map +1 -0
- package/dist/gallery/display.js +45 -0
- package/dist/gallery/display.js.map +1 -0
- package/dist/gallery/feedback.cjs +38 -0
- package/dist/gallery/feedback.d.ts +2 -0
- package/dist/gallery/feedback.d.ts.map +1 -0
- package/dist/gallery/feedback.js +36 -0
- package/dist/gallery/feedback.js.map +1 -0
- package/dist/gallery/fields.cjs +53 -0
- package/dist/gallery/fields.d.ts +2 -0
- package/dist/gallery/fields.d.ts.map +1 -0
- package/dist/gallery/fields.js +51 -0
- package/dist/gallery/fields.js.map +1 -0
- package/dist/gallery/frames.cjs +47 -0
- package/dist/gallery/frames.d.ts +2 -0
- package/dist/gallery/frames.d.ts.map +1 -0
- package/dist/gallery/frames.js +45 -0
- package/dist/gallery/frames.js.map +1 -0
- package/dist/gallery/icons.cjs +19 -0
- package/dist/gallery/icons.d.ts +2 -0
- package/dist/gallery/icons.d.ts.map +1 -0
- package/dist/gallery/icons.js +17 -0
- package/dist/gallery/icons.js.map +1 -0
- package/dist/gallery/menus.cjs +64 -0
- package/dist/gallery/menus.d.ts +15 -0
- package/dist/gallery/menus.d.ts.map +1 -0
- package/dist/gallery/menus.js +58 -0
- package/dist/gallery/menus.js.map +1 -0
- package/dist/gallery/records.cjs +34 -0
- package/dist/gallery/records.d.ts +2 -0
- package/dist/gallery/records.d.ts.map +1 -0
- package/dist/gallery/records.js +32 -0
- package/dist/gallery/records.js.map +1 -0
- package/dist/gallery/section.cjs +17 -0
- package/dist/gallery/section.d.ts +10 -0
- package/dist/gallery/section.d.ts.map +1 -0
- package/dist/gallery/section.js +14 -0
- package/dist/gallery/section.js.map +1 -0
- package/dist/gallery.cjs +8 -14
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +1594 -256
- package/dist/gallery.js +3 -9
- package/dist/gallery.js.map +1 -1
- package/dist/gui-config.cjs +33 -4
- package/dist/gui-config.d.ts +11 -3
- package/dist/gui-config.d.ts.map +1 -1
- package/dist/gui-config.js +33 -4
- package/dist/gui-config.js.map +1 -1
- package/dist/index.cjs +73 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +73 -2
- package/dist/index.node.js +10 -1
- package/dist/motion.cjs +25 -1
- package/dist/motion.d.ts +16 -1
- package/dist/motion.d.ts.map +1 -1
- package/dist/motion.js +24 -1
- package/dist/motion.js.map +1 -1
- package/dist/primitives/AvatarGroup.cjs +8 -0
- package/dist/primitives/AvatarGroup.d.ts +2 -0
- package/dist/primitives/AvatarGroup.d.ts.map +1 -0
- package/dist/primitives/AvatarGroup.js +5 -0
- package/dist/primitives/AvatarGroup.js.map +1 -0
- package/dist/primitives/BannerAction.cjs +8 -0
- package/dist/primitives/BannerAction.d.ts +2 -0
- package/dist/primitives/BannerAction.d.ts.map +1 -0
- package/dist/primitives/BannerAction.js +5 -0
- package/dist/primitives/BannerAction.js.map +1 -0
- package/dist/primitives/ButtonGroup.cjs +8 -0
- package/dist/primitives/ButtonGroup.d.ts +2 -0
- package/dist/primitives/ButtonGroup.d.ts.map +1 -0
- package/dist/primitives/ButtonGroup.js +5 -0
- package/dist/primitives/ButtonGroup.js.map +1 -0
- package/dist/primitives/ButtonGroupContext.cjs +8 -0
- package/dist/primitives/ButtonGroupContext.d.ts +2 -0
- package/dist/primitives/ButtonGroupContext.d.ts.map +1 -0
- package/dist/primitives/ButtonGroupContext.js +5 -0
- package/dist/primitives/ButtonGroupContext.js.map +1 -0
- package/dist/primitives/CONCEPTS.cjs +8 -0
- package/dist/primitives/CONCEPTS.d.ts +2 -0
- package/dist/primitives/CONCEPTS.d.ts.map +1 -0
- package/dist/primitives/CONCEPTS.js +5 -0
- package/dist/primitives/CONCEPTS.js.map +1 -0
- package/dist/primitives/CalloutAction.cjs +8 -0
- package/dist/primitives/CalloutAction.d.ts +2 -0
- package/dist/primitives/CalloutAction.d.ts.map +1 -0
- package/dist/primitives/CalloutAction.js +5 -0
- package/dist/primitives/CalloutAction.js.map +1 -0
- package/dist/primitives/Chip.cjs +8 -0
- package/dist/primitives/Chip.d.ts +2 -0
- package/dist/primitives/Chip.d.ts.map +1 -0
- package/dist/primitives/Chip.js +5 -0
- package/dist/primitives/Chip.js.map +1 -0
- package/dist/primitives/ColorSample.cjs +8 -0
- package/dist/primitives/ColorSample.d.ts +2 -0
- package/dist/primitives/ColorSample.d.ts.map +1 -0
- package/dist/primitives/ColorSample.js +5 -0
- package/dist/primitives/ColorSample.js.map +1 -0
- package/dist/primitives/CountrySelect.cjs +8 -0
- package/dist/primitives/CountrySelect.d.ts +2 -0
- package/dist/primitives/CountrySelect.d.ts.map +1 -0
- package/dist/primitives/CountrySelect.js +5 -0
- package/dist/primitives/CountrySelect.js.map +1 -0
- package/dist/primitives/CurrencyPicker.cjs +8 -0
- package/dist/primitives/CurrencyPicker.d.ts +2 -0
- package/dist/primitives/CurrencyPicker.d.ts.map +1 -0
- package/dist/primitives/CurrencyPicker.js +5 -0
- package/dist/primitives/CurrencyPicker.js.map +1 -0
- package/dist/primitives/Density.cjs +8 -0
- package/dist/primitives/Density.d.ts +2 -0
- package/dist/primitives/Density.d.ts.map +1 -0
- package/dist/primitives/Density.js +5 -0
- package/dist/primitives/Density.js.map +1 -0
- package/dist/primitives/DialogBody.cjs +8 -0
- package/dist/primitives/DialogBody.d.ts +2 -0
- package/dist/primitives/DialogBody.d.ts.map +1 -0
- package/dist/primitives/DialogBody.js +5 -0
- package/dist/primitives/DialogBody.js.map +1 -0
- package/dist/primitives/DropdownMenuBack.cjs +8 -0
- package/dist/primitives/DropdownMenuBack.d.ts +2 -0
- package/dist/primitives/DropdownMenuBack.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuBack.js +5 -0
- package/dist/primitives/DropdownMenuBack.js.map +1 -0
- package/dist/primitives/DropdownMenuClose.cjs +8 -0
- package/dist/primitives/DropdownMenuClose.d.ts +2 -0
- package/dist/primitives/DropdownMenuClose.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuClose.js +5 -0
- package/dist/primitives/DropdownMenuClose.js.map +1 -0
- package/dist/primitives/DropdownMenuEmpty.cjs +8 -0
- package/dist/primitives/DropdownMenuEmpty.d.ts +2 -0
- package/dist/primitives/DropdownMenuEmpty.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuEmpty.js +5 -0
- package/dist/primitives/DropdownMenuEmpty.js.map +1 -0
- package/dist/primitives/DropdownMenuHeader.cjs +8 -0
- package/dist/primitives/DropdownMenuHeader.d.ts +2 -0
- package/dist/primitives/DropdownMenuHeader.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuHeader.js +5 -0
- package/dist/primitives/DropdownMenuHeader.js.map +1 -0
- package/dist/primitives/DropdownMenuLoading.cjs +8 -0
- package/dist/primitives/DropdownMenuLoading.d.ts +2 -0
- package/dist/primitives/DropdownMenuLoading.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuLoading.js +5 -0
- package/dist/primitives/DropdownMenuLoading.js.map +1 -0
- package/dist/primitives/DropdownMenuOptionItem.cjs +8 -0
- package/dist/primitives/DropdownMenuOptionItem.d.ts +2 -0
- package/dist/primitives/DropdownMenuOptionItem.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuOptionItem.js +5 -0
- package/dist/primitives/DropdownMenuOptionItem.js.map +1 -0
- package/dist/primitives/DropdownMenuPage.cjs +8 -0
- package/dist/primitives/DropdownMenuPage.d.ts +2 -0
- package/dist/primitives/DropdownMenuPage.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuPage.js +5 -0
- package/dist/primitives/DropdownMenuPage.js.map +1 -0
- package/dist/primitives/DropdownMenuSearch.cjs +8 -0
- package/dist/primitives/DropdownMenuSearch.d.ts +2 -0
- package/dist/primitives/DropdownMenuSearch.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSearch.js +5 -0
- package/dist/primitives/DropdownMenuSearch.js.map +1 -0
- package/dist/primitives/DropdownMenuSection.cjs +8 -0
- package/dist/primitives/DropdownMenuSection.d.ts +2 -0
- package/dist/primitives/DropdownMenuSection.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSection.js +5 -0
- package/dist/primitives/DropdownMenuSection.js.map +1 -0
- package/dist/primitives/DropdownMenuSelectionGroup.cjs +8 -0
- package/dist/primitives/DropdownMenuSelectionGroup.d.ts +2 -0
- package/dist/primitives/DropdownMenuSelectionGroup.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuSelectionGroup.js +5 -0
- package/dist/primitives/DropdownMenuSelectionGroup.js.map +1 -0
- package/dist/primitives/DropdownMenuTitle.cjs +8 -0
- package/dist/primitives/DropdownMenuTitle.d.ts +2 -0
- package/dist/primitives/DropdownMenuTitle.d.ts.map +1 -0
- package/dist/primitives/DropdownMenuTitle.js +5 -0
- package/dist/primitives/DropdownMenuTitle.js.map +1 -0
- package/dist/primitives/FIELD_ICONS.cjs +8 -0
- package/dist/primitives/FIELD_ICONS.d.ts +2 -0
- package/dist/primitives/FIELD_ICONS.d.ts.map +1 -0
- package/dist/primitives/FIELD_ICONS.js +5 -0
- package/dist/primitives/FIELD_ICONS.js.map +1 -0
- package/dist/primitives/Glyph.cjs +8 -0
- package/dist/primitives/Glyph.d.ts +2 -0
- package/dist/primitives/Glyph.d.ts.map +1 -0
- package/dist/primitives/Glyph.js +5 -0
- package/dist/primitives/Glyph.js.map +1 -0
- package/dist/primitives/Heading.cjs +2 -2
- package/dist/primitives/Heading.d.ts +1 -1
- package/dist/primitives/Heading.d.ts.map +1 -1
- package/dist/primitives/Heading.js +1 -1
- package/dist/primitives/Heading.js.map +1 -1
- package/dist/primitives/IconPicker.cjs +8 -0
- package/dist/primitives/IconPicker.d.ts +2 -0
- package/dist/primitives/IconPicker.d.ts.map +1 -0
- package/dist/primitives/IconPicker.js +5 -0
- package/dist/primitives/IconPicker.js.map +1 -0
- package/dist/primitives/IconTile.cjs +8 -0
- package/dist/primitives/IconTile.d.ts +2 -0
- package/dist/primitives/IconTile.d.ts.map +1 -0
- package/dist/primitives/IconTile.js +5 -0
- package/dist/primitives/IconTile.js.map +1 -0
- package/dist/primitives/ImageInput.cjs +8 -0
- package/dist/primitives/ImageInput.d.ts +2 -0
- package/dist/primitives/ImageInput.d.ts.map +1 -0
- package/dist/primitives/ImageInput.js +5 -0
- package/dist/primitives/ImageInput.js.map +1 -0
- package/dist/primitives/InputGroup.cjs +8 -0
- package/dist/primitives/InputGroup.d.ts +2 -0
- package/dist/primitives/InputGroup.d.ts.map +1 -0
- package/dist/primitives/InputGroup.js +5 -0
- package/dist/primitives/InputGroup.js.map +1 -0
- package/dist/primitives/NumberField.cjs +8 -0
- package/dist/primitives/NumberField.d.ts +2 -0
- package/dist/primitives/NumberField.d.ts.map +1 -0
- package/dist/primitives/NumberField.js +5 -0
- package/dist/primitives/NumberField.js.map +1 -0
- package/dist/primitives/OverflowingList.cjs +8 -0
- package/dist/primitives/OverflowingList.d.ts +2 -0
- package/dist/primitives/OverflowingList.d.ts.map +1 -0
- package/dist/primitives/OverflowingList.js +5 -0
- package/dist/primitives/OverflowingList.js.map +1 -0
- package/dist/primitives/PhoneCountryPicker.cjs +8 -0
- package/dist/primitives/PhoneCountryPicker.d.ts +2 -0
- package/dist/primitives/PhoneCountryPicker.d.ts.map +1 -0
- package/dist/primitives/PhoneCountryPicker.js +5 -0
- package/dist/primitives/PhoneCountryPicker.js.map +1 -0
- package/dist/primitives/ProgressRing.cjs +8 -0
- package/dist/primitives/ProgressRing.d.ts +2 -0
- package/dist/primitives/ProgressRing.d.ts.map +1 -0
- package/dist/primitives/ProgressRing.js +5 -0
- package/dist/primitives/ProgressRing.js.map +1 -0
- package/dist/primitives/RadioCircle.cjs +8 -0
- package/dist/primitives/RadioCircle.d.ts +2 -0
- package/dist/primitives/RadioCircle.d.ts.map +1 -0
- package/dist/primitives/RadioCircle.js +5 -0
- package/dist/primitives/RadioCircle.js.map +1 -0
- package/dist/primitives/SKELETON_HEIGHT.cjs +8 -0
- package/dist/primitives/SKELETON_HEIGHT.d.ts +2 -0
- package/dist/primitives/SKELETON_HEIGHT.d.ts.map +1 -0
- package/dist/primitives/SKELETON_HEIGHT.js +5 -0
- package/dist/primitives/SKELETON_HEIGHT.js.map +1 -0
- package/dist/primitives/STATUS_COLOR.cjs +8 -0
- package/dist/primitives/STATUS_COLOR.d.ts +2 -0
- package/dist/primitives/STATUS_COLOR.d.ts.map +1 -0
- package/dist/primitives/STATUS_COLOR.js +5 -0
- package/dist/primitives/STATUS_COLOR.js.map +1 -0
- package/dist/primitives/STATUS_HUE.cjs +8 -0
- package/dist/primitives/STATUS_HUE.d.ts +2 -0
- package/dist/primitives/STATUS_HUE.d.ts.map +1 -0
- package/dist/primitives/STATUS_HUE.js +5 -0
- package/dist/primitives/STATUS_HUE.js.map +1 -0
- package/dist/primitives/STATUS_PAINT.cjs +8 -0
- package/dist/primitives/STATUS_PAINT.d.ts +2 -0
- package/dist/primitives/STATUS_PAINT.d.ts.map +1 -0
- package/dist/primitives/STATUS_PAINT.js +5 -0
- package/dist/primitives/STATUS_PAINT.js.map +1 -0
- package/dist/primitives/Shortcut.cjs +8 -0
- package/dist/primitives/Shortcut.d.ts +2 -0
- package/dist/primitives/Shortcut.d.ts.map +1 -0
- package/dist/primitives/Shortcut.js +5 -0
- package/dist/primitives/Shortcut.js.map +1 -0
- package/dist/primitives/StackIcon.cjs +8 -0
- package/dist/primitives/StackIcon.d.ts +2 -0
- package/dist/primitives/StackIcon.d.ts.map +1 -0
- package/dist/primitives/StackIcon.js +5 -0
- package/dist/primitives/StackIcon.js.map +1 -0
- package/dist/primitives/TABLER.cjs +8 -0
- package/dist/primitives/TABLER.d.ts +2 -0
- package/dist/primitives/TABLER.d.ts.map +1 -0
- package/dist/primitives/TABLER.js +5 -0
- package/dist/primitives/TABLER.js.map +1 -0
- package/dist/primitives/TOAST_DURATION.cjs +8 -0
- package/dist/primitives/TOAST_DURATION.d.ts +2 -0
- package/dist/primitives/TOAST_DURATION.d.ts.map +1 -0
- package/dist/primitives/TOAST_DURATION.js +5 -0
- package/dist/primitives/TOAST_DURATION.js.map +1 -0
- package/dist/primitives/Tag.cjs +8 -0
- package/dist/primitives/Tag.d.ts +2 -0
- package/dist/primitives/Tag.d.ts.map +1 -0
- package/dist/primitives/Tag.js +5 -0
- package/dist/primitives/Tag.js.map +1 -0
- package/dist/primitives/ToastCard.cjs +8 -0
- package/dist/primitives/ToastCard.d.ts +2 -0
- package/dist/primitives/ToastCard.d.ts.map +1 -0
- package/dist/primitives/ToastCard.js +5 -0
- package/dist/primitives/ToastCard.js.map +1 -0
- package/dist/primitives/ToastFace.cjs +8 -0
- package/dist/primitives/ToastFace.d.ts +2 -0
- package/dist/primitives/ToastFace.d.ts.map +1 -0
- package/dist/primitives/ToastFace.js +5 -0
- package/dist/primitives/ToastFace.js.map +1 -0
- package/dist/primitives/TruncatedText.cjs +8 -0
- package/dist/primitives/TruncatedText.d.ts +2 -0
- package/dist/primitives/TruncatedText.d.ts.map +1 -0
- package/dist/primitives/TruncatedText.js +5 -0
- package/dist/primitives/TruncatedText.js.map +1 -0
- package/dist/primitives/TruncatedTextProvider.cjs +8 -0
- package/dist/primitives/TruncatedTextProvider.d.ts +2 -0
- package/dist/primitives/TruncatedTextProvider.d.ts.map +1 -0
- package/dist/primitives/TruncatedTextProvider.js +5 -0
- package/dist/primitives/TruncatedTextProvider.js.map +1 -0
- package/dist/primitives/VisuallyHidden.cjs +8 -0
- package/dist/primitives/VisuallyHidden.d.ts +2 -0
- package/dist/primitives/VisuallyHidden.d.ts.map +1 -0
- package/dist/primitives/VisuallyHidden.js +5 -0
- package/dist/primitives/VisuallyHidden.js.map +1 -0
- package/dist/primitives/fieldSize.cjs +8 -0
- package/dist/primitives/fieldSize.d.ts +2 -0
- package/dist/primitives/fieldSize.d.ts.map +1 -0
- package/dist/primitives/fieldSize.js +5 -0
- package/dist/primitives/fieldSize.js.map +1 -0
- package/dist/primitives/flag.cjs +8 -0
- package/dist/primitives/flag.d.ts +2 -0
- package/dist/primitives/flag.d.ts.map +1 -0
- package/dist/primitives/flag.js +5 -0
- package/dist/primitives/flag.js.map +1 -0
- package/dist/primitives/formatShortcut.cjs +8 -0
- package/dist/primitives/formatShortcut.d.ts +2 -0
- package/dist/primitives/formatShortcut.d.ts.map +1 -0
- package/dist/primitives/formatShortcut.js +5 -0
- package/dist/primitives/formatShortcut.js.map +1 -0
- package/dist/primitives/iconWords.cjs +8 -0
- package/dist/primitives/iconWords.d.ts +2 -0
- package/dist/primitives/iconWords.d.ts.map +1 -0
- package/dist/primitives/iconWords.js +5 -0
- package/dist/primitives/iconWords.js.map +1 -0
- package/dist/primitives/initialOf.cjs +8 -0
- package/dist/primitives/initialOf.d.ts +2 -0
- package/dist/primitives/initialOf.d.ts.map +1 -0
- package/dist/primitives/initialOf.js +5 -0
- package/dist/primitives/initialOf.js.map +1 -0
- package/dist/primitives/loadIcons.cjs +8 -0
- package/dist/primitives/loadIcons.d.ts +2 -0
- package/dist/primitives/loadIcons.d.ts.map +1 -0
- package/dist/primitives/loadIcons.js +5 -0
- package/dist/primitives/loadIcons.js.map +1 -0
- package/dist/primitives/parseNumber.cjs +8 -0
- package/dist/primitives/parseNumber.d.ts +2 -0
- package/dist/primitives/parseNumber.d.ts.map +1 -0
- package/dist/primitives/parseNumber.js +5 -0
- package/dist/primitives/parseNumber.js.map +1 -0
- package/dist/primitives/resolveIcon.cjs +8 -0
- package/dist/primitives/resolveIcon.d.ts +2 -0
- package/dist/primitives/resolveIcon.d.ts.map +1 -0
- package/dist/primitives/resolveIcon.js +5 -0
- package/dist/primitives/resolveIcon.js.map +1 -0
- package/dist/primitives/speakShortcut.cjs +8 -0
- package/dist/primitives/speakShortcut.d.ts +2 -0
- package/dist/primitives/speakShortcut.d.ts.map +1 -0
- package/dist/primitives/speakShortcut.js +5 -0
- package/dist/primitives/speakShortcut.js.map +1 -0
- package/dist/primitives/tileTones.cjs +8 -0
- package/dist/primitives/tileTones.d.ts +2 -0
- package/dist/primitives/tileTones.d.ts.map +1 -0
- package/dist/primitives/tileTones.js +5 -0
- package/dist/primitives/tileTones.js.map +1 -0
- package/dist/primitives/useDensity.cjs +8 -0
- package/dist/primitives/useDensity.d.ts +2 -0
- package/dist/primitives/useDensity.d.ts.map +1 -0
- package/dist/primitives/useDensity.js +5 -0
- package/dist/primitives/useDensity.js.map +1 -0
- package/dist/primitives/useField.cjs +8 -0
- package/dist/primitives/useField.d.ts +2 -0
- package/dist/primitives/useField.d.ts.map +1 -0
- package/dist/primitives/useField.js +5 -0
- package/dist/primitives/useField.js.map +1 -0
- package/dist/primitives/useIcons.cjs +8 -0
- package/dist/primitives/useIcons.d.ts +2 -0
- package/dist/primitives/useIcons.d.ts.map +1 -0
- package/dist/primitives/useIcons.js +5 -0
- package/dist/primitives/useIcons.js.map +1 -0
- package/dist/product/ComboBox.cjs +25 -7
- package/dist/product/ComboBox.d.ts +3 -1
- package/dist/product/ComboBox.d.ts.map +1 -1
- package/dist/product/ComboBox.js +25 -7
- package/dist/product/ComboBox.js.map +1 -1
- package/dist/product/CommandMenu.cjs +137 -0
- package/dist/product/CommandMenu.d.ts +77 -0
- package/dist/product/CommandMenu.d.ts.map +1 -0
- package/dist/product/CommandMenu.js +134 -0
- package/dist/product/CommandMenu.js.map +1 -0
- package/dist/product/DetailPane.cjs +154 -12
- package/dist/product/DetailPane.d.ts +80 -2
- package/dist/product/DetailPane.d.ts.map +1 -1
- package/dist/product/DetailPane.js +153 -16
- package/dist/product/DetailPane.js.map +1 -1
- package/dist/product/Fact.cjs +6 -1
- package/dist/product/Fact.d.ts +16 -1
- package/dist/product/Fact.d.ts.map +1 -1
- package/dist/product/Fact.js +6 -1
- package/dist/product/Fact.js.map +1 -1
- package/dist/product/Field.cjs +14 -2
- package/dist/product/Field.d.ts +16 -1
- package/dist/product/Field.d.ts.map +1 -1
- package/dist/product/Field.js +14 -2
- package/dist/product/Field.js.map +1 -1
- package/dist/product/Filters.cjs +61 -9
- package/dist/product/Filters.d.ts +37 -6
- package/dist/product/Filters.d.ts.map +1 -1
- package/dist/product/Filters.js +62 -10
- package/dist/product/Filters.js.map +1 -1
- package/dist/product/MenuRow.cjs +81 -2
- package/dist/product/MenuRow.d.ts +76 -6
- package/dist/product/MenuRow.d.ts.map +1 -1
- package/dist/product/MenuRow.js +81 -4
- package/dist/product/MenuRow.js.map +1 -1
- package/dist/product/PrimaryButton.cjs +5 -1
- package/dist/product/PrimaryButton.d.ts +8 -0
- package/dist/product/PrimaryButton.d.ts.map +1 -1
- package/dist/product/PrimaryButton.js +5 -1
- package/dist/product/PrimaryButton.js.map +1 -1
- package/dist/product/Skeleton.cjs +7 -6
- package/dist/product/Skeleton.d.ts +3 -20
- package/dist/product/Skeleton.d.ts.map +1 -1
- package/dist/product/Skeleton.js +8 -7
- package/dist/product/Skeleton.js.map +1 -1
- package/dist/product/index.cjs +2 -0
- package/dist/product/index.d.ts +1 -0
- package/dist/product/index.d.ts.map +1 -1
- package/dist/product/index.js +2 -0
- package/dist/product/index.js.map +1 -1
- package/dist/settings/Section.cjs +11 -2
- package/dist/settings/Section.d.ts +8 -1
- package/dist/settings/Section.d.ts.map +1 -1
- package/dist/settings/Section.js +11 -2
- package/dist/settings/Section.js.map +1 -1
- package/dist/styles/motion.css +70 -0
- package/dist/styles.css +1460 -127
- package/dist/theme.css +944 -0
- package/package.json +2 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Flag = Flag;
|
|
5
|
+
exports.PhoneCountryPicker = PhoneCountryPicker;
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
/**
|
|
8
|
+
* PhoneCountryPicker — the calling code at the start of a phone field.
|
|
9
|
+
*
|
|
10
|
+
* <InputGroup>
|
|
11
|
+
* <PhoneCountryPicker countries={list} value={iso} onValueChange={setIso} />
|
|
12
|
+
* <Input value={number} onChangeText={setNumber} inputMode="tel" />
|
|
13
|
+
* </InputGroup>
|
|
14
|
+
*
|
|
15
|
+
* A segment of the field (`Segment`) showing the country's flag and a chevron;
|
|
16
|
+
* the list it opens is found by country name, ISO code and calling code, with
|
|
17
|
+
* or without the "+". The picked country is named in a visually hidden label,
|
|
18
|
+
* since a flag alone says nothing to a screen reader. Parsing and validating the
|
|
19
|
+
* number belong to the field layer, not here. Data-free: the caller passes the
|
|
20
|
+
* countries and their calling codes.
|
|
21
|
+
*
|
|
22
|
+
* Flags are regional-indicator text (`flag`), drawn by the platform. Anatomy
|
|
23
|
+
* after twenty-ui's PhoneCountryPicker (MIT, NOTICE): 8px before the flag and 4
|
|
24
|
+
* after the chevron, a 16×12 flag with 2px corners, a globe when none.
|
|
25
|
+
*/
|
|
26
|
+
const gui_1 = require("@hanzo/gui");
|
|
27
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
28
|
+
const react_1 = require("react");
|
|
29
|
+
const flag_1 = require("./flag.cjs");
|
|
30
|
+
const search_list_1 = require("./search-list.cjs");
|
|
31
|
+
/** The 16×12 flag box, 2px corners; a globe when there is no country. */
|
|
32
|
+
function Flag({ iso, override }) {
|
|
33
|
+
const glyph = override ?? (0, flag_1.flag)(iso);
|
|
34
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.XStack, { width: 16, height: 12, rounded: "$2xs", overflow: "hidden", items: "center", justify: "center", shrink: 0, "aria-hidden": true, children: glyph == null ? ((0, jsx_runtime_1.jsx)(lucide_icons_2_1.Globe, { size: 14, color: "$hint" })) : typeof glyph === 'string' ? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", lineHeight: 12, children: glyph })) : (glyph) }));
|
|
35
|
+
}
|
|
36
|
+
function PhoneCountryPicker({ countries, value, defaultValue = null, onValueChange, closeOnSelect = true, open, defaultOpen, onOpenChange, disabled = false, label: name = 'Country calling code', searchLabel = 'Search countries', emptyLabel = 'No country found', }) {
|
|
37
|
+
const [own, setOwn] = (0, react_1.useState)(defaultValue);
|
|
38
|
+
const iso = value !== undefined ? value : own;
|
|
39
|
+
const [shown, setShown] = (0, search_list_1.useOpen)(open, defaultOpen, onOpenChange);
|
|
40
|
+
const picked = countries.find((c) => c.value === iso);
|
|
41
|
+
const options = countries.map((c) => ({
|
|
42
|
+
value: c.value,
|
|
43
|
+
label: c.label,
|
|
44
|
+
keywords: [c.value, c.callingCode, `+${c.callingCode}`],
|
|
45
|
+
disabled: c.disabled,
|
|
46
|
+
start: ((0, jsx_runtime_1.jsx)(gui_1.XStack, { pr: "$1", children: (0, jsx_runtime_1.jsx)(Flag, { iso: c.value, override: c.flag }) })),
|
|
47
|
+
end: `+${c.callingCode}`,
|
|
48
|
+
}));
|
|
49
|
+
return ((0, jsx_runtime_1.jsx)(search_list_1.SearchList, { open: shown && !disabled, onOpenChange: (next) => setShown(disabled ? false : next), options: options, value: iso, searchLabel: searchLabel, emptyLabel: emptyLabel, width: 280, onPick: (next) => {
|
|
50
|
+
if (value === undefined)
|
|
51
|
+
setOwn(next);
|
|
52
|
+
if (next !== iso)
|
|
53
|
+
onValueChange?.(next);
|
|
54
|
+
if (closeOnSelect)
|
|
55
|
+
setShown(false);
|
|
56
|
+
}, trigger: (0, jsx_runtime_1.jsxs)(search_list_1.Segment, { ...{ 'data-slot': 'phone-country-picker' }, disabled: disabled, open: shown,
|
|
57
|
+
// Named by its hidden text, not an aria-label: the flag says nothing to
|
|
58
|
+
// a screen reader, and the words are the ones a translator sees.
|
|
59
|
+
gap: "$0.5", pl: "$2", pr: "$1", children: [(0, jsx_runtime_1.jsx)(Flag, { iso: picked?.value, override: picked?.flag }), (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronDown, { size: 14, color: "$hint" }), (0, jsx_runtime_1.jsx)(gui_1.VisuallyHidden, { children: picked ? `${name}: ${picked.label} +${picked.callingCode}` : name })] }) }));
|
|
60
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export type PhoneCountry = {
|
|
3
|
+
/** ISO 3166-1 alpha-2, e.g. "FR". */
|
|
4
|
+
value: string;
|
|
5
|
+
/** The country's name in the reader's language. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Without the "+", e.g. "33". */
|
|
8
|
+
callingCode: string;
|
|
9
|
+
/** Overrides the regional-indicator flag. */
|
|
10
|
+
flag?: ReactNode;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type PhoneCountryPickerProps = {
|
|
14
|
+
countries: PhoneCountry[];
|
|
15
|
+
value?: string | null;
|
|
16
|
+
defaultValue?: string | null;
|
|
17
|
+
onValueChange?: (iso: string | null) => void;
|
|
18
|
+
closeOnSelect?: boolean;
|
|
19
|
+
open?: boolean;
|
|
20
|
+
defaultOpen?: boolean;
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
/** The segment's name to assistive technology, before the picked country. */
|
|
24
|
+
label?: string;
|
|
25
|
+
searchLabel?: string;
|
|
26
|
+
emptyLabel?: string;
|
|
27
|
+
};
|
|
28
|
+
/** The 16×12 flag box, 2px corners; a globe when there is no country. */
|
|
29
|
+
export declare function Flag({ iso, override }: {
|
|
30
|
+
iso?: string | null;
|
|
31
|
+
override?: ReactNode;
|
|
32
|
+
}): import("react").JSX.Element;
|
|
33
|
+
export declare function PhoneCountryPicker({ countries, value, defaultValue, onValueChange, closeOnSelect, open, defaultOpen, onOpenChange, disabled, label: name, searchLabel, emptyLabel, }: PhoneCountryPickerProps): import("react").JSX.Element;
|
|
34
|
+
//# sourceMappingURL=phone-country-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-country-picker.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/phone-country-picker.tsx"],"names":[],"mappings":"AAuBA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIhD,MAAM,MAAM,YAAY,GAAG;IACzB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,YAAY,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,yEAAyE;AACzE,wBAAgB,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,+BAepF;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,KAAK,EACL,YAAmB,EACnB,aAAa,EACb,aAAoB,EACpB,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAgB,EAChB,KAAK,EAAE,IAA6B,EACpC,WAAgC,EAChC,UAA+B,GAChC,EAAE,uBAAuB,+BAmDzB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* PhoneCountryPicker — the calling code at the start of a phone field.
|
|
5
|
+
*
|
|
6
|
+
* <InputGroup>
|
|
7
|
+
* <PhoneCountryPicker countries={list} value={iso} onValueChange={setIso} />
|
|
8
|
+
* <Input value={number} onChangeText={setNumber} inputMode="tel" />
|
|
9
|
+
* </InputGroup>
|
|
10
|
+
*
|
|
11
|
+
* A segment of the field (`Segment`) showing the country's flag and a chevron;
|
|
12
|
+
* the list it opens is found by country name, ISO code and calling code, with
|
|
13
|
+
* or without the "+". The picked country is named in a visually hidden label,
|
|
14
|
+
* since a flag alone says nothing to a screen reader. Parsing and validating the
|
|
15
|
+
* number belong to the field layer, not here. Data-free: the caller passes the
|
|
16
|
+
* countries and their calling codes.
|
|
17
|
+
*
|
|
18
|
+
* Flags are regional-indicator text (`flag`), drawn by the platform. Anatomy
|
|
19
|
+
* after twenty-ui's PhoneCountryPicker (MIT, NOTICE): 8px before the flag and 4
|
|
20
|
+
* after the chevron, a 16×12 flag with 2px corners, a globe when none.
|
|
21
|
+
*/
|
|
22
|
+
import { SizableText, VisuallyHidden, XStack } from '@hanzo/gui';
|
|
23
|
+
import { ChevronDown, Globe } from '@hanzogui/lucide-icons-2';
|
|
24
|
+
import { useState } from 'react';
|
|
25
|
+
import { flag } from './flag.js';
|
|
26
|
+
import { SearchList, Segment, useOpen } from './search-list.js';
|
|
27
|
+
/** The 16×12 flag box, 2px corners; a globe when there is no country. */
|
|
28
|
+
export function Flag({ iso, override }) {
|
|
29
|
+
const glyph = override ?? flag(iso);
|
|
30
|
+
return (_jsx(XStack, { width: 16, height: 12, rounded: "$2xs", overflow: "hidden", items: "center", justify: "center", shrink: 0, "aria-hidden": true, children: glyph == null ? (_jsx(Globe, { size: 14, color: "$hint" })) : typeof glyph === 'string' ? (_jsx(SizableText, { size: "$2", lineHeight: 12, children: glyph })) : (glyph) }));
|
|
31
|
+
}
|
|
32
|
+
export function PhoneCountryPicker({ countries, value, defaultValue = null, onValueChange, closeOnSelect = true, open, defaultOpen, onOpenChange, disabled = false, label: name = 'Country calling code', searchLabel = 'Search countries', emptyLabel = 'No country found', }) {
|
|
33
|
+
const [own, setOwn] = useState(defaultValue);
|
|
34
|
+
const iso = value !== undefined ? value : own;
|
|
35
|
+
const [shown, setShown] = useOpen(open, defaultOpen, onOpenChange);
|
|
36
|
+
const picked = countries.find((c) => c.value === iso);
|
|
37
|
+
const options = countries.map((c) => ({
|
|
38
|
+
value: c.value,
|
|
39
|
+
label: c.label,
|
|
40
|
+
keywords: [c.value, c.callingCode, `+${c.callingCode}`],
|
|
41
|
+
disabled: c.disabled,
|
|
42
|
+
start: (_jsx(XStack, { pr: "$1", children: _jsx(Flag, { iso: c.value, override: c.flag }) })),
|
|
43
|
+
end: `+${c.callingCode}`,
|
|
44
|
+
}));
|
|
45
|
+
return (_jsx(SearchList, { open: shown && !disabled, onOpenChange: (next) => setShown(disabled ? false : next), options: options, value: iso, searchLabel: searchLabel, emptyLabel: emptyLabel, width: 280, onPick: (next) => {
|
|
46
|
+
if (value === undefined)
|
|
47
|
+
setOwn(next);
|
|
48
|
+
if (next !== iso)
|
|
49
|
+
onValueChange?.(next);
|
|
50
|
+
if (closeOnSelect)
|
|
51
|
+
setShown(false);
|
|
52
|
+
}, trigger: _jsxs(Segment, { ...{ 'data-slot': 'phone-country-picker' }, disabled: disabled, open: shown,
|
|
53
|
+
// Named by its hidden text, not an aria-label: the flag says nothing to
|
|
54
|
+
// a screen reader, and the words are the ones a translator sees.
|
|
55
|
+
gap: "$0.5", pl: "$2", pr: "$1", children: [_jsx(Flag, { iso: picked?.value, override: picked?.flag }), _jsx(ChevronDown, { size: 14, color: "$hint" }), _jsx(VisuallyHidden, { children: picked ? `${name}: ${picked.label} +${picked.callingCode}` : name })] }) }));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=phone-country-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-country-picker.js","sourceRoot":"","sources":["../../../src/backends/gui/phone-country-picker.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAqB,MAAM,eAAe,CAAA;AA8B/E,yEAAyE;AACzE,MAAM,UAAU,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAiD;IACnF,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;IACnC,OAAO,CACL,KAAC,MAAM,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,EAAC,MAAM,EAAE,CAAC,iCACtG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CACf,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,OAAO,GAAG,CAClC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC9B,KAAC,WAAW,IAAC,IAAI,EAAC,IAAI,EAAC,UAAU,EAAE,EAAE,YAClC,KAAK,GACM,CACf,CAAC,CAAC,CAAC,CACF,KAAK,CACN,GACM,CACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,KAAK,EACL,YAAY,GAAG,IAAI,EACnB,aAAa,EACb,aAAa,GAAG,IAAI,EACpB,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,KAAK,EAAE,IAAI,GAAG,sBAAsB,EACpC,WAAW,GAAG,kBAAkB,EAChC,UAAU,GAAG,kBAAkB,GACP;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAgB,YAAY,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAA;IAErD,MAAM,OAAO,GAAmB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,KAAK,EAAE,CACL,KAAC,MAAM,IAAC,EAAE,EAAC,IAAI,YACb,KAAC,IAAI,IAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAI,GACjC,CACV;QACD,GAAG,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;KACzB,CAAC,CAAC,CAAA;IAEH,OAAO,CACL,KAAC,UAAU,IACT,IAAI,EAAE,KAAK,IAAI,CAAC,QAAQ,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EACzD,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,GAAG,EACV,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,IAAI,KAAK,GAAG;gBAAE,aAAa,EAAE,CAAC,IAAI,CAAC,CAAA;YACvC,IAAI,aAAa;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC,EACD,OAAO,EACL,MAAC,OAAO,OACD,EAAE,WAAW,EAAE,sBAAsB,EAAa,EACvD,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,KAAK;YACX,wEAAwE;YACxE,iEAAiE;YACjE,GAAG,EAAC,MAAM,EACV,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,aAEP,KAAC,IAAI,IAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAI,EACpD,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,OAAO,GAAG,EACvC,KAAC,cAAc,cAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,GAAkB,IAC5F,GAEZ,CACH,CAAA;AACH,CAAC"}
|
|
@@ -14,8 +14,16 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
14
14
|
* gui keeps BOTH placement facts on the popper ROOT — `offset` and `placement`
|
|
15
15
|
* — while the compound API spells them on Content, as `sideOffset` and `align`.
|
|
16
16
|
* One value, one owner: the root holds them, Content publishes into it.
|
|
17
|
+
*
|
|
18
|
+
* `size="sm"` is the record panel (twenty-ui's Popover, MIT, NOTICE): an 8px
|
|
19
|
+
* inset, sized to its content up to the room there is, 8px clear of its anchor.
|
|
20
|
+
* A `<Density value="compact">` makes it the default for a panel that names no
|
|
21
|
+
* size. The default stays the 16px-inset, 288-wide panel every surface has. The
|
|
22
|
+
* fill stays Hanzo's near-opaque panel — not twenty-ui's translucent glass.
|
|
23
|
+
* `arrow` adds a 12×6 pointer in the panel's own fill and edge.
|
|
17
24
|
*/
|
|
18
25
|
const gui_1 = require("@hanzo/gui");
|
|
26
|
+
const density_1 = require("./density.cjs");
|
|
19
27
|
const react_1 = require("react");
|
|
20
28
|
const portal_theme_1 = require("../../product/menu/portal-theme.cjs");
|
|
21
29
|
const place_1 = require("./place.cjs");
|
|
@@ -26,7 +34,9 @@ const Publish = /* @__PURE__ */ (0, react_1.createContext)(null);
|
|
|
26
34
|
/** Whether the panel this one opened from is solid. A list opened inside a solid
|
|
27
35
|
* panel stands on the same ground, so the pair reads as one surface. */
|
|
28
36
|
const Solid = /* @__PURE__ */ (0, react_1.createContext)(false);
|
|
29
|
-
function Popover({ offset
|
|
37
|
+
function Popover({ offset, placement, ...props }) {
|
|
38
|
+
const density = (0, density_1.useDensity)();
|
|
39
|
+
offset ??= density === 'compact' ? 8 : DEFAULT_OFFSET;
|
|
30
40
|
const [placed, setPlaced] = (0, react_1.useState)({});
|
|
31
41
|
const publish = (0, react_1.useCallback)((p) => setPlaced((prev) => ({ ...prev, ...p })), []);
|
|
32
42
|
return ((0, jsx_runtime_1.jsx)(Publish.Provider, { value: publish, children: (0, jsx_runtime_1.jsx)(gui_1.Popover, { offset: placed.offset ?? offset, placement: (0, place_1.place)(placement ?? DEFAULT_SIDE, placed.align), ...props }) }));
|
|
@@ -37,12 +47,18 @@ const PopoverAnchor = gui_1.Popover.Anchor;
|
|
|
37
47
|
exports.PopoverAnchor = PopoverAnchor;
|
|
38
48
|
const PopoverClose = gui_1.Popover.Close;
|
|
39
49
|
exports.PopoverClose = PopoverClose;
|
|
40
|
-
const PopoverContent = ({ sideOffset
|
|
50
|
+
const PopoverContent = ({ sideOffset, align, solid, size, arrow = false, children, ...props }) => {
|
|
41
51
|
const themeName = (0, portal_theme_1.useThemeName)();
|
|
52
|
+
const density = (0, density_1.useDensity)();
|
|
42
53
|
const publish = (0, react_1.useContext)(Publish);
|
|
43
54
|
const inherited = (0, react_1.useContext)(Solid);
|
|
44
55
|
const opaque = solid ?? inherited;
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
const small = (size ?? (density === 'compact' ? 'sm' : 'default')) === 'sm';
|
|
57
|
+
const offset = sideOffset ?? (density === 'compact' ? 8 : DEFAULT_OFFSET);
|
|
58
|
+
(0, react_1.useEffect)(() => publish?.({ offset, align }), [publish, offset, align]);
|
|
59
|
+
const ground = opaque ? 'var(--popover)' : '$panel';
|
|
60
|
+
return ((0, jsx_runtime_1.jsx)(Solid.Provider, { value: opaque, children: (0, jsx_runtime_1.jsx)(portal_theme_1.PortalTheme, { name: themeName, children: (0, jsx_runtime_1.jsx)(density_1.Density, { value: density, children: (0, jsx_runtime_1.jsxs)(gui_1.Popover.Content, { ...(0, slot_1.slot)('popover-content'), ...(opaque ? { 'data-material': 'solid' } : null), ...(small ? { 'data-size': 'sm' } : null), bg: ground, borderWidth: 1, borderColor: "$borderColor", rounded: "$4", ...(small
|
|
61
|
+
? { p: '$2', gap: '$1', maxW: 'var(--hanzogui-popper-available-width, 100vw)' }
|
|
62
|
+
: { p: '$4', width: 288 }), ...props, children: [arrow ? (0, jsx_runtime_1.jsx)(gui_1.Popover.Arrow, { ...(0, slot_1.slot)('popover-arrow'), size: 8.5, bg: ground, borderWidth: 1, borderColor: "$borderColor" }) : null, children] }) }) }) }));
|
|
47
63
|
};
|
|
48
64
|
exports.PopoverContent = PopoverContent;
|
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
* gui keeps BOTH placement facts on the popper ROOT — `offset` and `placement`
|
|
9
9
|
* — while the compound API spells them on Content, as `sideOffset` and `align`.
|
|
10
10
|
* One value, one owner: the root holds them, Content publishes into it.
|
|
11
|
+
*
|
|
12
|
+
* `size="sm"` is the record panel (twenty-ui's Popover, MIT, NOTICE): an 8px
|
|
13
|
+
* inset, sized to its content up to the room there is, 8px clear of its anchor.
|
|
14
|
+
* A `<Density value="compact">` makes it the default for a panel that names no
|
|
15
|
+
* size. The default stays the 16px-inset, 288-wide panel every surface has. The
|
|
16
|
+
* fill stays Hanzo's near-opaque panel — not twenty-ui's translucent glass.
|
|
17
|
+
* `arrow` adds a 12×6 pointer in the panel's own fill and edge.
|
|
11
18
|
*/
|
|
12
19
|
import { Popover as GuiPopover } from '@hanzo/gui';
|
|
13
20
|
import { type ComponentProps } from 'react';
|
|
@@ -30,7 +37,11 @@ export type PopoverContentProps = ComponentProps<typeof GuiPopover.Content> & {
|
|
|
30
37
|
* lit edge, and any popover opened from inside it is solid too.
|
|
31
38
|
*/
|
|
32
39
|
solid?: boolean;
|
|
40
|
+
/** `sm`: an 8px inset, content-sized up to the room there is. Unset, the nearest `<Density>` decides. */
|
|
41
|
+
size?: 'default' | 'sm';
|
|
42
|
+
/** A 12×6 pointer toward the anchor, in the panel's fill (gui's arrow is a turned square: 8.5 across is 12 wide, 6 out). */
|
|
43
|
+
arrow?: boolean;
|
|
33
44
|
};
|
|
34
|
-
declare const PopoverContent: ({ sideOffset, align, solid, ...props }: PopoverContentProps) => import("react").JSX.Element;
|
|
45
|
+
declare const PopoverContent: ({ sideOffset, align, solid, size, arrow, children, ...props }: PopoverContentProps) => import("react").JSX.Element;
|
|
35
46
|
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverClose };
|
|
36
47
|
//# sourceMappingURL=popover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/popover.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/popover.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,OAAO,CAAA;AAEd,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,SAAS,CAAA;AAM3C,YAAY,EAAE,KAAK,EAAE,CAAA;AAWrB,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAElG,iBAAS,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BAc7D;AAED,QAAA,MAAM,cAAc,EAAE,OAAO,UAAU,CAAC,OAA4B,CAAA;AACpE,QAAA,MAAM,aAAa,EAAE,OAAO,UAAU,CAAC,MAA0B,CAAA;AACjE,QAAA,MAAM,YAAY,EAAE,OAAO,UAAU,CAAC,KAAwB,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yGAAyG;IACzG,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,4HAA4H;IAC5H,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,QAAA,MAAM,cAAc,kEAA2E,mBAAmB,gCAkCjH,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
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
4
|
* Popover — floating panel anchored to a trigger.
|
|
5
5
|
*
|
|
@@ -10,8 +10,16 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
10
10
|
* gui keeps BOTH placement facts on the popper ROOT — `offset` and `placement`
|
|
11
11
|
* — while the compound API spells them on Content, as `sideOffset` and `align`.
|
|
12
12
|
* One value, one owner: the root holds them, Content publishes into it.
|
|
13
|
+
*
|
|
14
|
+
* `size="sm"` is the record panel (twenty-ui's Popover, MIT, NOTICE): an 8px
|
|
15
|
+
* inset, sized to its content up to the room there is, 8px clear of its anchor.
|
|
16
|
+
* A `<Density value="compact">` makes it the default for a panel that names no
|
|
17
|
+
* size. The default stays the 16px-inset, 288-wide panel every surface has. The
|
|
18
|
+
* fill stays Hanzo's near-opaque panel — not twenty-ui's translucent glass.
|
|
19
|
+
* `arrow` adds a 12×6 pointer in the panel's own fill and edge.
|
|
13
20
|
*/
|
|
14
21
|
import { Popover as GuiPopover } from '@hanzo/gui';
|
|
22
|
+
import { Density, useDensity } from './density.js';
|
|
15
23
|
import { createContext, useCallback, useContext, useEffect, useState, } from 'react';
|
|
16
24
|
import { PortalTheme, useThemeName } from '../../product/menu/portal-theme.js';
|
|
17
25
|
import { place } from './place.js';
|
|
@@ -22,7 +30,9 @@ const Publish = /* @__PURE__ */ createContext(null);
|
|
|
22
30
|
/** Whether the panel this one opened from is solid. A list opened inside a solid
|
|
23
31
|
* panel stands on the same ground, so the pair reads as one surface. */
|
|
24
32
|
const Solid = /* @__PURE__ */ createContext(false);
|
|
25
|
-
function Popover({ offset
|
|
33
|
+
function Popover({ offset, placement, ...props }) {
|
|
34
|
+
const density = useDensity();
|
|
35
|
+
offset ??= density === 'compact' ? 8 : DEFAULT_OFFSET;
|
|
26
36
|
const [placed, setPlaced] = useState({});
|
|
27
37
|
const publish = useCallback((p) => setPlaced((prev) => ({ ...prev, ...p })), []);
|
|
28
38
|
return (_jsx(Publish.Provider, { value: publish, children: _jsx(GuiPopover, { offset: placed.offset ?? offset, placement: place(placement ?? DEFAULT_SIDE, placed.align), ...props }) }));
|
|
@@ -30,13 +40,19 @@ function Popover({ offset = DEFAULT_OFFSET, placement, ...props }) {
|
|
|
30
40
|
const PopoverTrigger = GuiPopover.Trigger;
|
|
31
41
|
const PopoverAnchor = GuiPopover.Anchor;
|
|
32
42
|
const PopoverClose = GuiPopover.Close;
|
|
33
|
-
const PopoverContent = ({ sideOffset
|
|
43
|
+
const PopoverContent = ({ sideOffset, align, solid, size, arrow = false, children, ...props }) => {
|
|
34
44
|
const themeName = useThemeName();
|
|
45
|
+
const density = useDensity();
|
|
35
46
|
const publish = useContext(Publish);
|
|
36
47
|
const inherited = useContext(Solid);
|
|
37
48
|
const opaque = solid ?? inherited;
|
|
38
|
-
|
|
39
|
-
|
|
49
|
+
const small = (size ?? (density === 'compact' ? 'sm' : 'default')) === 'sm';
|
|
50
|
+
const offset = sideOffset ?? (density === 'compact' ? 8 : DEFAULT_OFFSET);
|
|
51
|
+
useEffect(() => publish?.({ offset, align }), [publish, offset, align]);
|
|
52
|
+
const ground = opaque ? 'var(--popover)' : '$panel';
|
|
53
|
+
return (_jsx(Solid.Provider, { value: opaque, children: _jsx(PortalTheme, { name: themeName, children: _jsx(Density, { value: density, children: _jsxs(GuiPopover.Content, { ...slot('popover-content'), ...(opaque ? { 'data-material': 'solid' } : null), ...(small ? { 'data-size': 'sm' } : null), bg: ground, borderWidth: 1, borderColor: "$borderColor", rounded: "$4", ...(small
|
|
54
|
+
? { p: '$2', gap: '$1', maxW: 'var(--hanzogui-popper-available-width, 100vw)' }
|
|
55
|
+
: { p: '$4', width: 288 }), ...props, children: [arrow ? _jsx(GuiPopover.Arrow, { ...slot('popover-arrow'), size: 8.5, bg: ground, borderWidth: 1, borderColor: "$borderColor" }) : null, children] }) }) }) }));
|
|
40
56
|
};
|
|
41
57
|
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverClose };
|
|
42
58
|
//# sourceMappingURL=popover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/backends/gui/popover.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/backends/gui/popover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ProgressRing = ProgressRing;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* ProgressRing — a small circular progress, for a row that has no room for a
|
|
8
|
+
* bar: the context left in a composer, a sync that is 40% through, a metric.
|
|
9
|
+
*
|
|
10
|
+
* After twenty-ui's ProgressRing (MIT, NOTICE): 14px (`sm`) or 16px (`md`), a
|
|
11
|
+
* 2px stroke starting at 12 o'clock, the track on the strong edge rung and the
|
|
12
|
+
* indicator on the accent (`--primary`, monochrome until an org picks one).
|
|
13
|
+
* The indicator's dash eases over 300ms with round caps (square at 0%, where a
|
|
14
|
+
* round cap would draw a dot). `value={null}` shows a quarter and turns once
|
|
15
|
+
* every 1.5s (`data-motion="orbit"`, still under reduced motion).
|
|
16
|
+
*
|
|
17
|
+
* Children are a label drawn to the LEFT of the ring, 8px from it — a value
|
|
18
|
+
* ("40%") or a name — and also name the progressbar for assistive technology
|
|
19
|
+
* unless `aria-label` says otherwise.
|
|
20
|
+
*
|
|
21
|
+
* A plain <svg>, as Donut and the grid patterns are: the ring is drawn, not
|
|
22
|
+
* laid out, and gui tokens reach it as the custom properties gui emits.
|
|
23
|
+
*/
|
|
24
|
+
const gui_1 = require("@hanzo/gui");
|
|
25
|
+
const react_1 = require("react");
|
|
26
|
+
const slot_1 = require("./slot.cjs");
|
|
27
|
+
const SIZE = { sm: 14, md: 16 };
|
|
28
|
+
const STROKE = 2;
|
|
29
|
+
function ProgressRing({ value, size = 'md', barColor = 'var(--primary)', children, 'aria-label': label, ...props }) {
|
|
30
|
+
const id = (0, react_1.useId)();
|
|
31
|
+
const d = SIZE[size];
|
|
32
|
+
const r = (d - STROKE) / 2;
|
|
33
|
+
const circ = 2 * Math.PI * r;
|
|
34
|
+
const indeterminate = value === null;
|
|
35
|
+
const v = indeterminate ? 25 : Math.max(0, Math.min(100, value));
|
|
36
|
+
const offset = circ * (1 - v / 100);
|
|
37
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('progress-ring'), role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": indeterminate ? undefined : v, "aria-label": label, "aria-labelledby": label || !children ? undefined : `${id}-label`, display: "inline-flex", items: "center", gap: "$2", shrink: 0, ...props, children: [children ? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { id: `${id}-label`, size: "$1", color: "$ink", numberOfLines: 1, textAlign: "right", children: children })) : null, (0, jsx_runtime_1.jsxs)("svg", { width: d, height: d, viewBox: `0 0 ${d} ${d}`, "aria-hidden": true, "data-motion": indeterminate ? 'orbit' : undefined, style: { flexShrink: 0, transform: 'rotate(-90deg)', transformOrigin: 'center' }, children: [(0, jsx_runtime_1.jsx)("circle", { cx: d / 2, cy: d / 2, r: r, fill: "none", stroke: "var(--rim)", strokeWidth: STROKE }), (0, jsx_runtime_1.jsx)("circle", { cx: d / 2, cy: d / 2, r: r, fill: "none", stroke: barColor, strokeWidth: STROKE, strokeDasharray: circ, strokeDashoffset: offset, strokeLinecap: v > 0 ? 'round' : 'butt', style: { transition: 'stroke-dashoffset 300ms ease' } })] })] }));
|
|
38
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProgressRing — a small circular progress, for a row that has no room for a
|
|
3
|
+
* bar: the context left in a composer, a sync that is 40% through, a metric.
|
|
4
|
+
*
|
|
5
|
+
* After twenty-ui's ProgressRing (MIT, NOTICE): 14px (`sm`) or 16px (`md`), a
|
|
6
|
+
* 2px stroke starting at 12 o'clock, the track on the strong edge rung and the
|
|
7
|
+
* indicator on the accent (`--primary`, monochrome until an org picks one).
|
|
8
|
+
* The indicator's dash eases over 300ms with round caps (square at 0%, where a
|
|
9
|
+
* round cap would draw a dot). `value={null}` shows a quarter and turns once
|
|
10
|
+
* every 1.5s (`data-motion="orbit"`, still under reduced motion).
|
|
11
|
+
*
|
|
12
|
+
* Children are a label drawn to the LEFT of the ring, 8px from it — a value
|
|
13
|
+
* ("40%") or a name — and also name the progressbar for assistive technology
|
|
14
|
+
* unless `aria-label` says otherwise.
|
|
15
|
+
*
|
|
16
|
+
* A plain <svg>, as Donut and the grid patterns are: the ring is drawn, not
|
|
17
|
+
* laid out, and gui tokens reach it as the custom properties gui emits.
|
|
18
|
+
*/
|
|
19
|
+
import { XStack } from '@hanzo/gui';
|
|
20
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
21
|
+
declare const SIZE: {
|
|
22
|
+
readonly sm: 14;
|
|
23
|
+
readonly md: 16;
|
|
24
|
+
};
|
|
25
|
+
export type ProgressRingProps = Omit<ComponentProps<typeof XStack>, 'children'> & {
|
|
26
|
+
/** 0–100, or `null` for indeterminate. */
|
|
27
|
+
value: number | null;
|
|
28
|
+
size?: keyof typeof SIZE;
|
|
29
|
+
/** The indicator's colour, any CSS colour or custom property. */
|
|
30
|
+
barColor?: string;
|
|
31
|
+
/** A label drawn left of the ring; names it unless `aria-label` is given. */
|
|
32
|
+
children?: ReactNode;
|
|
33
|
+
'aria-label'?: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function ProgressRing({ value, size, barColor, children, 'aria-label': label, ...props }: ProgressRingProps): import("react").JSX.Element;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=progress-ring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-ring.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/progress-ring.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAe,MAAM,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAS,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGlE,QAAA,MAAM,IAAI;aAAK,EAAE,EAAE,EAAE;aAAE,EAAE,EAAE,EAAE;CAAW,CAAA;AAGxC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAChF,0CAA0C;IAC1C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,OAAO,IAAI,CAAA;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,IAAW,EACX,QAA2B,EAC3B,QAAQ,EACR,YAAY,EAAE,KAAK,EACnB,GAAG,KAAK,EACT,EAAE,iBAAiB,+BAoDnB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* ProgressRing — a small circular progress, for a row that has no room for a
|
|
5
|
+
* bar: the context left in a composer, a sync that is 40% through, a metric.
|
|
6
|
+
*
|
|
7
|
+
* After twenty-ui's ProgressRing (MIT, NOTICE): 14px (`sm`) or 16px (`md`), a
|
|
8
|
+
* 2px stroke starting at 12 o'clock, the track on the strong edge rung and the
|
|
9
|
+
* indicator on the accent (`--primary`, monochrome until an org picks one).
|
|
10
|
+
* The indicator's dash eases over 300ms with round caps (square at 0%, where a
|
|
11
|
+
* round cap would draw a dot). `value={null}` shows a quarter and turns once
|
|
12
|
+
* every 1.5s (`data-motion="orbit"`, still under reduced motion).
|
|
13
|
+
*
|
|
14
|
+
* Children are a label drawn to the LEFT of the ring, 8px from it — a value
|
|
15
|
+
* ("40%") or a name — and also name the progressbar for assistive technology
|
|
16
|
+
* unless `aria-label` says otherwise.
|
|
17
|
+
*
|
|
18
|
+
* A plain <svg>, as Donut and the grid patterns are: the ring is drawn, not
|
|
19
|
+
* laid out, and gui tokens reach it as the custom properties gui emits.
|
|
20
|
+
*/
|
|
21
|
+
import { SizableText, XStack } from '@hanzo/gui';
|
|
22
|
+
import { useId } from 'react';
|
|
23
|
+
import { slot } from './slot.js';
|
|
24
|
+
const SIZE = { sm: 14, md: 16 };
|
|
25
|
+
const STROKE = 2;
|
|
26
|
+
export function ProgressRing({ value, size = 'md', barColor = 'var(--primary)', children, 'aria-label': label, ...props }) {
|
|
27
|
+
const id = useId();
|
|
28
|
+
const d = SIZE[size];
|
|
29
|
+
const r = (d - STROKE) / 2;
|
|
30
|
+
const circ = 2 * Math.PI * r;
|
|
31
|
+
const indeterminate = value === null;
|
|
32
|
+
const v = indeterminate ? 25 : Math.max(0, Math.min(100, value));
|
|
33
|
+
const offset = circ * (1 - v / 100);
|
|
34
|
+
return (_jsxs(XStack, { ...slot('progress-ring'), role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": indeterminate ? undefined : v, "aria-label": label, "aria-labelledby": label || !children ? undefined : `${id}-label`, display: "inline-flex", items: "center", gap: "$2", shrink: 0, ...props, children: [children ? (_jsx(SizableText, { id: `${id}-label`, size: "$1", color: "$ink", numberOfLines: 1, textAlign: "right", children: children })) : null, _jsxs("svg", { width: d, height: d, viewBox: `0 0 ${d} ${d}`, "aria-hidden": true, "data-motion": indeterminate ? 'orbit' : undefined, style: { flexShrink: 0, transform: 'rotate(-90deg)', transformOrigin: 'center' }, children: [_jsx("circle", { cx: d / 2, cy: d / 2, r: r, fill: "none", stroke: "var(--rim)", strokeWidth: STROKE }), _jsx("circle", { cx: d / 2, cy: d / 2, r: r, fill: "none", stroke: barColor, strokeWidth: STROKE, strokeDasharray: circ, strokeDashoffset: offset, strokeLinecap: v > 0 ? 'round' : 'butt', style: { transition: 'stroke-dashoffset 300ms ease' } })] })] }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=progress-ring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-ring.js","sourceRoot":"","sources":["../../../src/backends/gui/progress-ring.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,38 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Progress = void 0;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Progress — a horizontal bar; `value` is 0–100, or `null` for "working, how
|
|
8
|
+
* far unknown".
|
|
9
|
+
*
|
|
10
|
+
* Two shapes. `pill` (the default, unchanged) is a rounded bar on the edge
|
|
11
|
+
* track. `line` is the record kit's (twenty-ui's ProgressBar, MIT — NOTICE): no
|
|
12
|
+
* track unless asked, square ends unless `ends="round"`, the ink as the fill, and a
|
|
13
|
+
* minimum fill of min(12px, 50%) for any value strictly between 0 and 100 — a
|
|
14
|
+
* job 1% done is visibly started, which a 3px sliver is not. Its width eases
|
|
15
|
+
* over 300ms.
|
|
16
|
+
*
|
|
17
|
+
* `value={null}` on either draws the indeterminate sweep: a quarter-width bar
|
|
18
|
+
* crossing the track every 1.5s (`data-motion="sweep"`, stopped under reduced
|
|
19
|
+
* motion). `size` is the thickness, `md` 8 (both shapes' default) or `sm` 6.
|
|
20
|
+
*/
|
|
7
21
|
const gui_1 = require("@hanzo/gui");
|
|
8
22
|
const sx_1 = require("../../sx.cjs");
|
|
9
23
|
const slot_1 = require("./slot.cjs");
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
24
|
+
const HEIGHT = { sm: 6, md: 8 };
|
|
25
|
+
const Progress = ({ value, indicatorClassName, indicatorColor, variant = 'pill', size = 'md', ends = 'square', track = false, ...props }) => {
|
|
26
|
+
const indeterminate = value === null;
|
|
27
|
+
const line = variant === 'line';
|
|
28
|
+
const v = Math.max(0, Math.min(100, value ?? 0));
|
|
29
|
+
const rounded = ends === 'round';
|
|
30
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Progress, { ...(0, slot_1.slot)('progress'), "data-variant": variant, value: indeterminate ? null : v, height: HEIGHT[size], width: "100%", bg: line ? (track ? '$edge' : 'transparent') : '$edge', rounded: line && !rounded ? 0 : '$10', overflow: "hidden", ...props, children: indeterminate ? ((0, jsx_runtime_1.jsx)(gui_1.View, { ...(0, slot_1.slot)('progress-indicator'), "data-motion": "sweep", width: "25%", height: "100%", rounded: line && !rounded ? 0 : '$10', bg: indicatorColor ?? (line ? '$ink' : '$soft'), ...(0, sx_1.sx)(indicatorClassName) })) : line ? ((0, jsx_runtime_1.jsx)(gui_1.View, { ...(0, slot_1.slot)('progress-indicator'), height: "100%", minW: v > 0 && v < 100 ? 'min(12px, 50%)' : 0, rounded: rounded ? '$10' : 0, bg: indicatorColor ?? '$ink',
|
|
31
|
+
// Inline, as Textarea's grown height is: a style prop would mint an
|
|
32
|
+
// atomic class per value, and no sheet can ship a hundred of them.
|
|
33
|
+
style: { width: `${v}%`, transition: 'width 300ms linear' }, ...(0, sx_1.sx)(indicatorClassName) })) : ((0, jsx_runtime_1.jsx)(gui_1.Progress.Indicator, { ...(0, slot_1.slot)('progress-indicator'),
|
|
34
|
+
// Same reason as the slider's fill: `$ink` is the foreground rung, and
|
|
35
|
+
// a type colour stretched across a bar is a lit slab. 6.93:1 over the
|
|
36
|
+
// track against WCAG 1.4.11's 3:1 — legible with room to spare, and no
|
|
37
|
+
// longer competing with the text beside it for attention.
|
|
38
|
+
bg: indicatorColor ?? '$soft', ...(0, sx_1.sx)(indicatorClassName) })) }));
|
|
39
|
+
};
|
|
16
40
|
exports.Progress = Progress;
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Progress — a horizontal bar; `value` is 0–100, or `null` for "working, how
|
|
3
|
+
* far unknown".
|
|
4
|
+
*
|
|
5
|
+
* Two shapes. `pill` (the default, unchanged) is a rounded bar on the edge
|
|
6
|
+
* track. `line` is the record kit's (twenty-ui's ProgressBar, MIT — NOTICE): no
|
|
7
|
+
* track unless asked, square ends unless `ends="round"`, the ink as the fill, and a
|
|
8
|
+
* minimum fill of min(12px, 50%) for any value strictly between 0 and 100 — a
|
|
9
|
+
* job 1% done is visibly started, which a 3px sliver is not. Its width eases
|
|
10
|
+
* over 300ms.
|
|
11
|
+
*
|
|
12
|
+
* `value={null}` on either draws the indeterminate sweep: a quarter-width bar
|
|
13
|
+
* crossing the track every 1.5s (`data-motion="sweep"`, stopped under reduced
|
|
14
|
+
* motion). `size` is the thickness, `md` 8 (both shapes' default) or `sm` 6.
|
|
15
|
+
*/
|
|
2
16
|
import { Progress as GuiProgress } from '@hanzo/gui';
|
|
3
17
|
import type { ComponentProps } from 'react';
|
|
4
|
-
export type ProgressProps = ComponentProps<typeof GuiProgress> & {
|
|
18
|
+
export type ProgressProps = Omit<ComponentProps<typeof GuiProgress>, 'size'> & {
|
|
5
19
|
/**
|
|
6
20
|
* Class for the moving bar, not the track. Callers colour the bar by
|
|
7
21
|
* threshold (green/amber/red), which the track's own className cannot express
|
|
@@ -11,7 +25,15 @@ export type ProgressProps = ComponentProps<typeof GuiProgress> & {
|
|
|
11
25
|
indicatorClassName?: string;
|
|
12
26
|
/** The moving bar's colour, a theme token: a status rung where the value is a state. */
|
|
13
27
|
indicatorColor?: ComponentProps<typeof GuiProgress.Indicator>['bg'];
|
|
28
|
+
/** `pill` (default) or the record kit's `line`. */
|
|
29
|
+
variant?: 'pill' | 'line';
|
|
30
|
+
/** Thickness: `md` 8 (default) or `sm` 6. */
|
|
31
|
+
size?: 'sm' | 'md';
|
|
32
|
+
/** `line` only: `square` ends (default) or `round`. A name of its own, since `rounded` is gui's corner style. */
|
|
33
|
+
ends?: 'square' | 'round';
|
|
34
|
+
/** `line` only: draw the track under the bar. */
|
|
35
|
+
track?: boolean;
|
|
14
36
|
};
|
|
15
|
-
declare const Progress: ({ value, indicatorClassName, indicatorColor, ...props }: ProgressProps) => import("react").JSX.Element;
|
|
37
|
+
declare const Progress: ({ value, indicatorClassName, indicatorColor, variant, size, ends, track, ...props }: ProgressProps) => import("react").JSX.Element;
|
|
16
38
|
export { Progress };
|
|
17
39
|
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAQ,MAAM,YAAY,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAG3C,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG;IAC7E;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,cAAc,CAAC,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAA;IACnE,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,iHAAiH;IACjH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACzB,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAID,QAAA,MAAM,QAAQ,wFASX,aAAa,gCAoDf,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -1,14 +1,38 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Progress — a horizontal bar; `value` is 0–100, or `null` for "working, how
|
|
5
|
+
* far unknown".
|
|
6
|
+
*
|
|
7
|
+
* Two shapes. `pill` (the default, unchanged) is a rounded bar on the edge
|
|
8
|
+
* track. `line` is the record kit's (twenty-ui's ProgressBar, MIT — NOTICE): no
|
|
9
|
+
* track unless asked, square ends unless `ends="round"`, the ink as the fill, and a
|
|
10
|
+
* minimum fill of min(12px, 50%) for any value strictly between 0 and 100 — a
|
|
11
|
+
* job 1% done is visibly started, which a 3px sliver is not. Its width eases
|
|
12
|
+
* over 300ms.
|
|
13
|
+
*
|
|
14
|
+
* `value={null}` on either draws the indeterminate sweep: a quarter-width bar
|
|
15
|
+
* crossing the track every 1.5s (`data-motion="sweep"`, stopped under reduced
|
|
16
|
+
* motion). `size` is the thickness, `md` 8 (both shapes' default) or `sm` 6.
|
|
17
|
+
*/
|
|
18
|
+
import { Progress as GuiProgress, View } from '@hanzo/gui';
|
|
5
19
|
import { sx } from '../../sx.js';
|
|
6
20
|
import { slot } from './slot.js';
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
21
|
+
const HEIGHT = { sm: 6, md: 8 };
|
|
22
|
+
const Progress = ({ value, indicatorClassName, indicatorColor, variant = 'pill', size = 'md', ends = 'square', track = false, ...props }) => {
|
|
23
|
+
const indeterminate = value === null;
|
|
24
|
+
const line = variant === 'line';
|
|
25
|
+
const v = Math.max(0, Math.min(100, value ?? 0));
|
|
26
|
+
const rounded = ends === 'round';
|
|
27
|
+
return (_jsx(GuiProgress, { ...slot('progress'), "data-variant": variant, value: indeterminate ? null : v, height: HEIGHT[size], width: "100%", bg: line ? (track ? '$edge' : 'transparent') : '$edge', rounded: line && !rounded ? 0 : '$10', overflow: "hidden", ...props, children: indeterminate ? (_jsx(View, { ...slot('progress-indicator'), "data-motion": "sweep", width: "25%", height: "100%", rounded: line && !rounded ? 0 : '$10', bg: indicatorColor ?? (line ? '$ink' : '$soft'), ...sx(indicatorClassName) })) : line ? (_jsx(View, { ...slot('progress-indicator'), height: "100%", minW: v > 0 && v < 100 ? 'min(12px, 50%)' : 0, rounded: rounded ? '$10' : 0, bg: indicatorColor ?? '$ink',
|
|
28
|
+
// Inline, as Textarea's grown height is: a style prop would mint an
|
|
29
|
+
// atomic class per value, and no sheet can ship a hundred of them.
|
|
30
|
+
style: { width: `${v}%`, transition: 'width 300ms linear' }, ...sx(indicatorClassName) })) : (_jsx(GuiProgress.Indicator, { ...slot('progress-indicator'),
|
|
31
|
+
// Same reason as the slider's fill: `$ink` is the foreground rung, and
|
|
32
|
+
// a type colour stretched across a bar is a lit slab. 6.93:1 over the
|
|
33
|
+
// track against WCAG 1.4.11's 3:1 — legible with room to spare, and no
|
|
34
|
+
// longer competing with the text beside it for attention.
|
|
35
|
+
bg: indicatorColor ?? '$soft', ...sx(indicatorClassName) })) }));
|
|
36
|
+
};
|
|
13
37
|
export { Progress };
|
|
14
38
|
//# sourceMappingURL=progress.js.map
|