@hanzo/ui 8.27.91 → 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 +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 +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 +1460 -127
- package/dist/theme.css +944 -0
- package/package.json +2 -1
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/backends/gui/progress.tsx"],"names":[],"mappings":"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"}
|
|
@@ -30,16 +30,43 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
30
30
|
* `orientation` for those two and never forwards it, so the frame's own
|
|
31
31
|
* `orientation` variant never runs and the group stays a COLUMN while
|
|
32
32
|
* announcing itself a row. The direction is restored here, from the same prop.
|
|
33
|
+
*
|
|
34
|
+
* Two looks. With no `size`, an item is the 16px ring and `$ink` dot it has
|
|
35
|
+
* always been. Naming `size` (sm 16 | md 18), or a `<Density value="compact">`
|
|
36
|
+
* around it, draws twenty-ui's radio (MIT, NOTICE): a quiet ring at rest that
|
|
37
|
+
* FILLS when checked — the monochrome accent (`--primary`, which an org's accent
|
|
38
|
+
* restates) round a dot in its foreground — a 4px hover halo, and the 32%
|
|
39
|
+
* register of a disabled option.
|
|
33
40
|
*/
|
|
34
41
|
const gui_1 = require("@hanzo/gui");
|
|
35
42
|
const slot_1 = require("./slot.cjs");
|
|
36
43
|
const gesture_1 = require("./gesture.cjs");
|
|
44
|
+
const density_1 = require("./density.cjs");
|
|
37
45
|
/** 16px control, 8px dot — the Checkbox's box, made round. */
|
|
38
46
|
const BOX = 16;
|
|
39
47
|
const DOT = 8;
|
|
48
|
+
/** The record radio per size: the ring with its edge, and the dot inside a checked one. */
|
|
49
|
+
const RECORD = { sm: { ring: 16, dot: 6 }, md: { ring: 18, dot: 8 } };
|
|
40
50
|
const RadioGroup = ({ orientation = 'vertical', ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.RadioGroup, { ...(0, slot_1.slot)('radio-group'), orientation: orientation, flexDirection: orientation === 'horizontal' ? 'row' : 'column', gap: "$2", ...props }));
|
|
41
51
|
exports.RadioGroup = RadioGroup;
|
|
42
|
-
const RadioGroupItem = ({
|
|
52
|
+
const RadioGroupItem = ({ size, ...props }) => {
|
|
53
|
+
const compact = (0, density_1.useDensity)() === 'compact';
|
|
54
|
+
const record = size ?? (compact ? 'sm' : undefined);
|
|
55
|
+
return record ? (0, jsx_runtime_1.jsx)(RecordItem, { size: record, ...props }) : (0, jsx_runtime_1.jsx)(PlainItem, { ...props });
|
|
56
|
+
};
|
|
57
|
+
exports.RadioGroupItem = RadioGroupItem;
|
|
58
|
+
/**
|
|
59
|
+
* The record radio. The fill is the INDICATOR, laid over the ring edge to
|
|
60
|
+
* edge: it mounts only while checked, so presence is the state here too, and
|
|
61
|
+
* no part of the item has to know which state it is in to be drawn.
|
|
62
|
+
*/
|
|
63
|
+
const RecordItem = ({ size, disabled, children, ...props }) => {
|
|
64
|
+
const dim = RECORD[size];
|
|
65
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.RadioGroup.Item, { ...(0, slot_1.slot)('radio-group-item'), "data-size": size, width: dim.ring, height: dim.ring, flexShrink: 0, padding: 0, borderRadius: 1000, borderWidth: 1, borderColor: "$aside", backgroundColor: "transparent", scale: 0.95, disabled: disabled, opacity: disabled ? 0.32 : 1, cursor: disabled ? 'not-allowed' : 'pointer', ...(disabled ? null : { hoverStyle: { bg: '$hover', boxShadow: '0 0 0 4px var(--hover)' } }), ...(0, gesture_1.touch)(dim.ring), ...props, children: [(0, jsx_runtime_1.jsx)(gui_1.RadioGroup.Indicator, { ...(0, slot_1.slot)('radio-group-indicator'), position: "absolute", t: -1, l: -1, width: dim.ring, height: dim.ring, borderRadius: 1000, backgroundColor: "var(--primary)", items: "center", justify: "center",
|
|
66
|
+
// 1.05 at the item's 0.95, as twenty-ui grows a checked radio.
|
|
67
|
+
scale: 1.1, children: (0, jsx_runtime_1.jsx)(gui_1.XStack, { width: dim.dot, height: dim.dot, rounded: 1000, bg: "var(--primary-foreground)" }) }), children] }));
|
|
68
|
+
};
|
|
69
|
+
const PlainItem = ({ disabled, children, ...props }) => ((0, jsx_runtime_1.jsxs)(gui_1.RadioGroup.Item, { ...(0, slot_1.slot)('radio-group-item'), width: BOX, height: BOX, flexShrink: 0, borderRadius: 1000, borderWidth: 1,
|
|
43
70
|
// A CONTROL boundary, not a surface hairline. `$borderColor` is 10% white —
|
|
44
71
|
// right for a card edge sitting on its own fill, and 1.26:1 against the
|
|
45
72
|
// ground, where WCAG 1.4.11 asks 3:1 for the visible boundary of a control.
|
|
@@ -50,4 +77,3 @@ const RadioGroupItem = ({ disabled, children, ...props }) => ((0, jsx_runtime_1.
|
|
|
50
77
|
// pointer events without dimming: a dead control that looks live invites a
|
|
51
78
|
// click that does nothing. Same treatment as Switch.
|
|
52
79
|
disabled: disabled, opacity: disabled ? 0.5 : 1, cursor: disabled ? 'not-allowed' : 'pointer', ...(0, gesture_1.touch)(BOX), ...props, children: [(0, jsx_runtime_1.jsx)(gui_1.RadioGroup.Indicator, { ...(0, slot_1.slot)('radio-group-indicator'), width: DOT, height: DOT, borderRadius: 1000, backgroundColor: "$ink" }), children] }));
|
|
53
|
-
exports.RadioGroupItem = RadioGroupItem;
|
|
@@ -25,12 +25,30 @@
|
|
|
25
25
|
* `orientation` for those two and never forwards it, so the frame's own
|
|
26
26
|
* `orientation` variant never runs and the group stays a COLUMN while
|
|
27
27
|
* announcing itself a row. The direction is restored here, from the same prop.
|
|
28
|
+
*
|
|
29
|
+
* Two looks. With no `size`, an item is the 16px ring and `$ink` dot it has
|
|
30
|
+
* always been. Naming `size` (sm 16 | md 18), or a `<Density value="compact">`
|
|
31
|
+
* around it, draws twenty-ui's radio (MIT, NOTICE): a quiet ring at rest that
|
|
32
|
+
* FILLS when checked — the monochrome accent (`--primary`, which an org's accent
|
|
33
|
+
* restates) round a dot in its foreground — a 4px hover halo, and the 32%
|
|
34
|
+
* register of a disabled option.
|
|
28
35
|
*/
|
|
29
36
|
import { RadioGroup as GuiRadioGroup } from '@hanzo/gui';
|
|
30
37
|
import type { ComponentProps } from 'react';
|
|
38
|
+
export type RadioSize = 'sm' | 'md';
|
|
31
39
|
export type RadioGroupProps = ComponentProps<typeof GuiRadioGroup>;
|
|
32
|
-
|
|
40
|
+
type GuiItemProps = ComponentProps<typeof GuiRadioGroup.Item>;
|
|
41
|
+
/**
|
|
42
|
+
* gui's item props with its `size` (a gui size token) replaced by the record
|
|
43
|
+
* size. `Omit` over gui's props loses `value` from the union it is built from,
|
|
44
|
+
* so `value` is restated — it is the one prop an item cannot do without.
|
|
45
|
+
*/
|
|
46
|
+
export type RadioGroupItemProps = Omit<GuiItemProps, 'size' | 'value'> & {
|
|
47
|
+
value: string;
|
|
48
|
+
/** The record radio: `sm` a 16px ring (the default under compact) or `md` 18px. */
|
|
49
|
+
size?: RadioSize;
|
|
50
|
+
};
|
|
33
51
|
declare const RadioGroup: ({ orientation, ...props }: RadioGroupProps) => import("react").JSX.Element;
|
|
34
|
-
declare const RadioGroupItem: ({
|
|
52
|
+
declare const RadioGroupItem: ({ size, ...props }: RadioGroupItemProps) => import("react").JSX.Element;
|
|
35
53
|
export { RadioGroup, RadioGroupItem };
|
|
36
54
|
//# sourceMappingURL=radio-group.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/radio-group.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/radio-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,UAAU,IAAI,aAAa,EAAU,MAAM,YAAY,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAS3C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAEnC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,aAAa,CAAC,CAAA;AAClE,KAAK,YAAY,GAAG,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAE7D;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IACvE,KAAK,EAAE,MAAM,CAAA;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAKD,QAAA,MAAM,UAAU,8BAA4C,eAAe,gCAQ1E,CAAA;AAED,QAAA,MAAM,cAAc,uBAAwB,mBAAmB,gCAI9D,CAAA;AAyFD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -27,15 +27,41 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
27
27
|
* `orientation` for those two and never forwards it, so the frame's own
|
|
28
28
|
* `orientation` variant never runs and the group stays a COLUMN while
|
|
29
29
|
* announcing itself a row. The direction is restored here, from the same prop.
|
|
30
|
+
*
|
|
31
|
+
* Two looks. With no `size`, an item is the 16px ring and `$ink` dot it has
|
|
32
|
+
* always been. Naming `size` (sm 16 | md 18), or a `<Density value="compact">`
|
|
33
|
+
* around it, draws twenty-ui's radio (MIT, NOTICE): a quiet ring at rest that
|
|
34
|
+
* FILLS when checked — the monochrome accent (`--primary`, which an org's accent
|
|
35
|
+
* restates) round a dot in its foreground — a 4px hover halo, and the 32%
|
|
36
|
+
* register of a disabled option.
|
|
30
37
|
*/
|
|
31
|
-
import { RadioGroup as GuiRadioGroup } from '@hanzo/gui';
|
|
38
|
+
import { RadioGroup as GuiRadioGroup, XStack } from '@hanzo/gui';
|
|
32
39
|
import { slot } from './slot.js';
|
|
33
40
|
import { touch } from './gesture.js';
|
|
41
|
+
import { useDensity } from './density.js';
|
|
34
42
|
/** 16px control, 8px dot — the Checkbox's box, made round. */
|
|
35
43
|
const BOX = 16;
|
|
36
44
|
const DOT = 8;
|
|
45
|
+
/** The record radio per size: the ring with its edge, and the dot inside a checked one. */
|
|
46
|
+
const RECORD = { sm: { ring: 16, dot: 6 }, md: { ring: 18, dot: 8 } };
|
|
37
47
|
const RadioGroup = ({ orientation = 'vertical', ...props }) => (_jsx(GuiRadioGroup, { ...slot('radio-group'), orientation: orientation, flexDirection: orientation === 'horizontal' ? 'row' : 'column', gap: "$2", ...props }));
|
|
38
|
-
const RadioGroupItem = ({
|
|
48
|
+
const RadioGroupItem = ({ size, ...props }) => {
|
|
49
|
+
const compact = useDensity() === 'compact';
|
|
50
|
+
const record = size ?? (compact ? 'sm' : undefined);
|
|
51
|
+
return record ? _jsx(RecordItem, { size: record, ...props }) : _jsx(PlainItem, { ...props });
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* The record radio. The fill is the INDICATOR, laid over the ring edge to
|
|
55
|
+
* edge: it mounts only while checked, so presence is the state here too, and
|
|
56
|
+
* no part of the item has to know which state it is in to be drawn.
|
|
57
|
+
*/
|
|
58
|
+
const RecordItem = ({ size, disabled, children, ...props }) => {
|
|
59
|
+
const dim = RECORD[size];
|
|
60
|
+
return (_jsxs(GuiRadioGroup.Item, { ...slot('radio-group-item'), "data-size": size, width: dim.ring, height: dim.ring, flexShrink: 0, padding: 0, borderRadius: 1000, borderWidth: 1, borderColor: "$aside", backgroundColor: "transparent", scale: 0.95, disabled: disabled, opacity: disabled ? 0.32 : 1, cursor: disabled ? 'not-allowed' : 'pointer', ...(disabled ? null : { hoverStyle: { bg: '$hover', boxShadow: '0 0 0 4px var(--hover)' } }), ...touch(dim.ring), ...props, children: [_jsx(GuiRadioGroup.Indicator, { ...slot('radio-group-indicator'), position: "absolute", t: -1, l: -1, width: dim.ring, height: dim.ring, borderRadius: 1000, backgroundColor: "var(--primary)", items: "center", justify: "center",
|
|
61
|
+
// 1.05 at the item's 0.95, as twenty-ui grows a checked radio.
|
|
62
|
+
scale: 1.1, children: _jsx(XStack, { width: dim.dot, height: dim.dot, rounded: 1000, bg: "var(--primary-foreground)" }) }), children] }));
|
|
63
|
+
};
|
|
64
|
+
const PlainItem = ({ disabled, children, ...props }) => (_jsxs(GuiRadioGroup.Item, { ...slot('radio-group-item'), width: BOX, height: BOX, flexShrink: 0, borderRadius: 1000, borderWidth: 1,
|
|
39
65
|
// A CONTROL boundary, not a surface hairline. `$borderColor` is 10% white —
|
|
40
66
|
// right for a card edge sitting on its own fill, and 1.26:1 against the
|
|
41
67
|
// ground, where WCAG 1.4.11 asks 3:1 for the visible boundary of a control.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../../src/backends/gui/radio-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../../src/backends/gui/radio-group.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Segment = exports.useOpen = void 0;
|
|
5
|
+
exports.SearchList = SearchList;
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
/**
|
|
8
|
+
* SearchList — the searchable list the record kit's pickers open: a currency, a
|
|
9
|
+
* calling code, a country.
|
|
10
|
+
*
|
|
11
|
+
* Composition, as `Combobox` is: `Popover` owns the open state and the panel,
|
|
12
|
+
* `Command` owns the search and the cursor — typed text filters the rows, the
|
|
13
|
+
* arrows move, Enter picks, Escape closes. A row is matched on its label and on
|
|
14
|
+
* its keywords, so "usd", "dollar" and "$" all find the US dollar.
|
|
15
|
+
*
|
|
16
|
+
* The panel is portalled, and a portal does not carry React context across, so
|
|
17
|
+
* the density the trigger sits in is read here and given again inside, as
|
|
18
|
+
* `PortalTheme` does for the theme. Rows are the record row: 32px, 4px corners.
|
|
19
|
+
* After twenty-ui's searchable picker dropdown (MIT, NOTICE).
|
|
20
|
+
*/
|
|
21
|
+
const gui_1 = require("@hanzo/gui");
|
|
22
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
23
|
+
const react_1 = require("react");
|
|
24
|
+
const command_1 = require("./command.cjs");
|
|
25
|
+
const control_1 = require("./control.cjs");
|
|
26
|
+
const density_1 = require("./density.cjs");
|
|
27
|
+
const gesture_1 = require("./gesture.cjs");
|
|
28
|
+
const input_group_1 = require("./input-group.cjs");
|
|
29
|
+
const popover_1 = require("./popover.cjs");
|
|
30
|
+
const press_1 = require("./press.cjs");
|
|
31
|
+
const slot_1 = require("./slot.cjs");
|
|
32
|
+
/** Open state, controlled or not: `open` wins when given, `onOpenChange` hears every change. */
|
|
33
|
+
const useOpen = (open, defaultOpen = false, onOpenChange) => {
|
|
34
|
+
const [own, setOwn] = (0, react_1.useState)(defaultOpen);
|
|
35
|
+
const shown = open ?? own;
|
|
36
|
+
const set = (next) => {
|
|
37
|
+
if (open === undefined)
|
|
38
|
+
setOwn(next);
|
|
39
|
+
onOpenChange?.(next);
|
|
40
|
+
};
|
|
41
|
+
return [shown, set];
|
|
42
|
+
};
|
|
43
|
+
exports.useOpen = useOpen;
|
|
44
|
+
/**
|
|
45
|
+
* The start segment of an `InputGroup`: a picker trigger that is part of the
|
|
46
|
+
* field rather than a box beside it. Transparent, as tall as the group's inside,
|
|
47
|
+
* flush with its start edge (it takes back the group's gutter), with a hairline
|
|
48
|
+
* divider on its end side and the group's start corners. A real `<button>`, so
|
|
49
|
+
* Enter and Space open it with no key handling of ours; its focus ring is drawn
|
|
50
|
+
* inside, where the group's edge would otherwise cover it.
|
|
51
|
+
*/
|
|
52
|
+
exports.Segment = (0, react_1.forwardRef)(function Segment({ disabled, open, label, children, ...props }, ref) {
|
|
53
|
+
const group = (0, react_1.useContext)(input_group_1.GroupContext);
|
|
54
|
+
const density = (0, density_1.useDensity)();
|
|
55
|
+
const box = control_1.BOX[group?.size ?? (0, density_1.fieldSize)(undefined, density)];
|
|
56
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ref: ref, ...(0, slot_1.slot)('field-segment'), render: "button", ...{ type: 'button', disabled, 'aria-expanded': !!open, ...(label ? { 'aria-label': label } : null) }, height: box.h - 2, ml: group ? -box.gutter : 0, shrink: 0, items: "center", gap: "$1", px: "$2", bg: "transparent", borderWidth: 0, borderRightWidth: 1, borderColor: "$borderColor", borderTopLeftRadius: "$3", borderBottomLeftRadius: "$3", cursor: disabled ? 'not-allowed' : 'pointer', opacity: disabled ? 0.5 : 1, hoverStyle: disabled ? undefined : { bg: '$hover' }, focusVisibleStyle: { ...press_1.RING, outlineOffset: -2 }, ...props, children: children }));
|
|
57
|
+
});
|
|
58
|
+
const ROW = 32;
|
|
59
|
+
function SearchList({ trigger, open, onOpenChange, options, value, onPick, searchLabel = 'Search', emptyLabel = 'No results', width = 240, }) {
|
|
60
|
+
const density = (0, density_1.useDensity)();
|
|
61
|
+
return ((0, jsx_runtime_1.jsxs)(popover_1.Popover, { open: open, onOpenChange: onOpenChange, placement: "bottom-start", children: [(0, jsx_runtime_1.jsx)(popover_1.PopoverTrigger, { asChild: true, children: trigger }), (0, jsx_runtime_1.jsx)(popover_1.PopoverContent, { "data-slot": "search-list", p: 0, width: width, sideOffset: 8, overflow: "hidden", children: (0, jsx_runtime_1.jsx)(density_1.Density, { value: density, children: (0, jsx_runtime_1.jsxs)(command_1.Command, { value: value ?? undefined, children: [(0, jsx_runtime_1.jsx)(command_1.CommandInput, { placeholder: searchLabel, "aria-label": searchLabel, autoFocus: true }), (0, jsx_runtime_1.jsxs)(command_1.CommandList, { p: "$1", children: [(0, jsx_runtime_1.jsx)(command_1.CommandEmpty, { children: emptyLabel }), options.map((o) => ((0, jsx_runtime_1.jsxs)(command_1.CommandItem, { value: o.value, keywords: [o.label, ...(o.keywords ?? [])], disabled: o.disabled, minH: ROW, px: "$1", rounded: "$xs", ...(0, gesture_1.touch)(ROW, 44, 'y'), onSelect: (picked) => onPick(picked), ...{ 'aria-selected': o.value === value }, children: [o.start ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { shrink: 0, items: "center", children: o.start })) : null, (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$ink", flex: 1, minW: 0, numberOfLines: 1, children: o.label }), o.end != null ? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$hint", shrink: 0, children: o.end })) : null, (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: 16, opacity: o.value === value ? 1 : 0, shrink: 0 })] }, o.value)))] })] }) }) })] }));
|
|
62
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearchList — the searchable list the record kit's pickers open: a currency, a
|
|
3
|
+
* calling code, a country.
|
|
4
|
+
*
|
|
5
|
+
* Composition, as `Combobox` is: `Popover` owns the open state and the panel,
|
|
6
|
+
* `Command` owns the search and the cursor — typed text filters the rows, the
|
|
7
|
+
* arrows move, Enter picks, Escape closes. A row is matched on its label and on
|
|
8
|
+
* its keywords, so "usd", "dollar" and "$" all find the US dollar.
|
|
9
|
+
*
|
|
10
|
+
* The panel is portalled, and a portal does not carry React context across, so
|
|
11
|
+
* the density the trigger sits in is read here and given again inside, as
|
|
12
|
+
* `PortalTheme` does for the theme. Rows are the record row: 32px, 4px corners.
|
|
13
|
+
* After twenty-ui's searchable picker dropdown (MIT, NOTICE).
|
|
14
|
+
*/
|
|
15
|
+
import { XStack } from '@hanzo/gui';
|
|
16
|
+
import { type ComponentProps, type ReactElement, type ReactNode } from 'react';
|
|
17
|
+
/** Open state, controlled or not: `open` wins when given, `onOpenChange` hears every change. */
|
|
18
|
+
export declare const useOpen: (open?: boolean, defaultOpen?: boolean, onOpenChange?: (open: boolean) => void) => readonly [boolean, (next: boolean) => void];
|
|
19
|
+
export type SegmentProps = Omit<ComponentProps<typeof XStack>, 'children'> & {
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/** Whether the list it opens is open. */
|
|
22
|
+
open?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Its name to assistive technology: what it picks and what is picked. Omit it
|
|
25
|
+
* when the segment's own (visually hidden) text names it.
|
|
26
|
+
*/
|
|
27
|
+
label?: string;
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The start segment of an `InputGroup`: a picker trigger that is part of the
|
|
32
|
+
* field rather than a box beside it. Transparent, as tall as the group's inside,
|
|
33
|
+
* flush with its start edge (it takes back the group's gutter), with a hairline
|
|
34
|
+
* divider on its end side and the group's start corners. A real `<button>`, so
|
|
35
|
+
* Enter and Space open it with no key handling of ours; its focus ring is drawn
|
|
36
|
+
* inside, where the group's edge would otherwise cover it.
|
|
37
|
+
*/
|
|
38
|
+
export declare const Segment: import("react").ForwardRefExoticComponent<Omit<SegmentProps, "ref"> & import("react").RefAttributes<any>>;
|
|
39
|
+
export type SearchOption = {
|
|
40
|
+
value: string;
|
|
41
|
+
label: string;
|
|
42
|
+
/** More text the search matches: a code, a symbol, a calling code. */
|
|
43
|
+
keywords?: string[];
|
|
44
|
+
disabled?: boolean;
|
|
45
|
+
/** Before the label: a flag, an icon. */
|
|
46
|
+
start?: ReactNode;
|
|
47
|
+
/** After the label, dimmed: a code, a calling code. */
|
|
48
|
+
end?: ReactNode;
|
|
49
|
+
};
|
|
50
|
+
export type SearchListProps = {
|
|
51
|
+
/** The element that opens the list. It receives the press and the ref. */
|
|
52
|
+
trigger: ReactElement;
|
|
53
|
+
open: boolean;
|
|
54
|
+
onOpenChange: (open: boolean) => void;
|
|
55
|
+
options: SearchOption[];
|
|
56
|
+
/** The chosen value, marked with a check and highlighted on open. */
|
|
57
|
+
value?: string | null;
|
|
58
|
+
onPick: (value: string) => void;
|
|
59
|
+
searchLabel?: string;
|
|
60
|
+
emptyLabel?: string;
|
|
61
|
+
/** The panel's width; 240 by default. */
|
|
62
|
+
width?: number;
|
|
63
|
+
};
|
|
64
|
+
export declare function SearchList({ trigger, open, onOpenChange, options, value, onPick, searchLabel, emptyLabel, width, }: SearchListProps): import("react").JSX.Element;
|
|
65
|
+
//# sourceMappingURL=search-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-list.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/search-list.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAe,MAAM,EAAmB,MAAM,YAAY,CAAA;AAEjE,OAAO,EAAoC,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAUhH,gGAAgG;AAChG,eAAO,MAAM,OAAO,UAAW,OAAO,wCAAsC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,+BAG9E,OAAO,UAK3B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,2GAoClB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,uDAAuD;IACvD,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,0EAA0E;IAC1E,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAID,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,KAAK,EACL,MAAM,EACN,WAAsB,EACtB,UAAyB,EACzB,KAAW,GACZ,EAAE,eAAe,+BA8CjB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* SearchList — the searchable list the record kit's pickers open: a currency, a
|
|
5
|
+
* calling code, a country.
|
|
6
|
+
*
|
|
7
|
+
* Composition, as `Combobox` is: `Popover` owns the open state and the panel,
|
|
8
|
+
* `Command` owns the search and the cursor — typed text filters the rows, the
|
|
9
|
+
* arrows move, Enter picks, Escape closes. A row is matched on its label and on
|
|
10
|
+
* its keywords, so "usd", "dollar" and "$" all find the US dollar.
|
|
11
|
+
*
|
|
12
|
+
* The panel is portalled, and a portal does not carry React context across, so
|
|
13
|
+
* the density the trigger sits in is read here and given again inside, as
|
|
14
|
+
* `PortalTheme` does for the theme. Rows are the record row: 32px, 4px corners.
|
|
15
|
+
* After twenty-ui's searchable picker dropdown (MIT, NOTICE).
|
|
16
|
+
*/
|
|
17
|
+
import { SizableText, XStack } from '@hanzo/gui';
|
|
18
|
+
import { Check } from '@hanzogui/lucide-icons-2';
|
|
19
|
+
import { forwardRef, useContext, useState } from 'react';
|
|
20
|
+
import { Command, CommandEmpty, CommandInput, CommandItem, CommandList } from './command.js';
|
|
21
|
+
import { BOX } from './control.js';
|
|
22
|
+
import { Density, fieldSize, useDensity } from './density.js';
|
|
23
|
+
import { touch } from './gesture.js';
|
|
24
|
+
import { GroupContext } from './input-group.js';
|
|
25
|
+
import { Popover, PopoverContent, PopoverTrigger } from './popover.js';
|
|
26
|
+
import { RING } from './press.js';
|
|
27
|
+
import { slot } from './slot.js';
|
|
28
|
+
/** Open state, controlled or not: `open` wins when given, `onOpenChange` hears every change. */
|
|
29
|
+
export const useOpen = (open, defaultOpen = false, onOpenChange) => {
|
|
30
|
+
const [own, setOwn] = useState(defaultOpen);
|
|
31
|
+
const shown = open ?? own;
|
|
32
|
+
const set = (next) => {
|
|
33
|
+
if (open === undefined)
|
|
34
|
+
setOwn(next);
|
|
35
|
+
onOpenChange?.(next);
|
|
36
|
+
};
|
|
37
|
+
return [shown, set];
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The start segment of an `InputGroup`: a picker trigger that is part of the
|
|
41
|
+
* field rather than a box beside it. Transparent, as tall as the group's inside,
|
|
42
|
+
* flush with its start edge (it takes back the group's gutter), with a hairline
|
|
43
|
+
* divider on its end side and the group's start corners. A real `<button>`, so
|
|
44
|
+
* Enter and Space open it with no key handling of ours; its focus ring is drawn
|
|
45
|
+
* inside, where the group's edge would otherwise cover it.
|
|
46
|
+
*/
|
|
47
|
+
export const Segment = /* @__PURE__ */ forwardRef(function Segment({ disabled, open, label, children, ...props }, ref) {
|
|
48
|
+
const group = useContext(GroupContext);
|
|
49
|
+
const density = useDensity();
|
|
50
|
+
const box = BOX[group?.size ?? fieldSize(undefined, density)];
|
|
51
|
+
return (_jsx(XStack, { ref: ref, ...slot('field-segment'), render: "button", ...{ type: 'button', disabled, 'aria-expanded': !!open, ...(label ? { 'aria-label': label } : null) }, height: box.h - 2, ml: group ? -box.gutter : 0, shrink: 0, items: "center", gap: "$1", px: "$2", bg: "transparent", borderWidth: 0, borderRightWidth: 1, borderColor: "$borderColor", borderTopLeftRadius: "$3", borderBottomLeftRadius: "$3", cursor: disabled ? 'not-allowed' : 'pointer', opacity: disabled ? 0.5 : 1, hoverStyle: disabled ? undefined : { bg: '$hover' }, focusVisibleStyle: { ...RING, outlineOffset: -2 }, ...props, children: children }));
|
|
52
|
+
});
|
|
53
|
+
const ROW = 32;
|
|
54
|
+
export function SearchList({ trigger, open, onOpenChange, options, value, onPick, searchLabel = 'Search', emptyLabel = 'No results', width = 240, }) {
|
|
55
|
+
const density = useDensity();
|
|
56
|
+
return (_jsxs(Popover, { open: open, onOpenChange: onOpenChange, placement: "bottom-start", children: [_jsx(PopoverTrigger, { asChild: true, children: trigger }), _jsx(PopoverContent, { "data-slot": "search-list", p: 0, width: width, sideOffset: 8, overflow: "hidden", children: _jsx(Density, { value: density, children: _jsxs(Command, { value: value ?? undefined, children: [_jsx(CommandInput, { placeholder: searchLabel, "aria-label": searchLabel, autoFocus: true }), _jsxs(CommandList, { p: "$1", children: [_jsx(CommandEmpty, { children: emptyLabel }), options.map((o) => (_jsxs(CommandItem, { value: o.value, keywords: [o.label, ...(o.keywords ?? [])], disabled: o.disabled, minH: ROW, px: "$1", rounded: "$xs", ...touch(ROW, 44, 'y'), onSelect: (picked) => onPick(picked), ...{ 'aria-selected': o.value === value }, children: [o.start ? (_jsx(XStack, { shrink: 0, items: "center", children: o.start })) : null, _jsx(SizableText, { size: "$2", color: "$ink", flex: 1, minW: 0, numberOfLines: 1, children: o.label }), o.end != null ? (_jsx(SizableText, { size: "$2", color: "$hint", shrink: 0, children: o.end })) : null, _jsx(Check, { size: 16, opacity: o.value === value ? 1 : 0, shrink: 0 })] }, o.value)))] })] }) }) })] }));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=search-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-list.js","sourceRoot":"","sources":["../../../src/backends/gui/search-list.tsx"],"names":[],"mappings":"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"}
|