@hanzo/ui 8.27.9 → 8.27.11
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/dist/backends/gui/3d-card.cjs +100 -0
- package/dist/backends/gui/3d-card.d.ts +59 -0
- package/dist/backends/gui/3d-card.d.ts.map +1 -0
- package/dist/backends/gui/3d-card.js +92 -0
- package/dist/backends/gui/3d-card.js.map +1 -0
- package/dist/backends/gui/3d-marquee.cjs +225 -0
- package/dist/backends/gui/3d-marquee.d.ts +114 -0
- package/dist/backends/gui/3d-marquee.d.ts.map +1 -0
- package/dist/backends/gui/3d-marquee.js +190 -0
- package/dist/backends/gui/3d-marquee.js.map +1 -0
- package/dist/backends/gui/3d-pin.cjs +51 -0
- package/dist/backends/gui/3d-pin.d.ts +14 -0
- package/dist/backends/gui/3d-pin.d.ts.map +1 -0
- package/dist/backends/gui/3d-pin.js +49 -0
- package/dist/backends/gui/3d-pin.js.map +1 -0
- package/dist/backends/gui/advanced-chart.cjs +61 -0
- package/dist/backends/gui/advanced-chart.d.ts +38 -0
- package/dist/backends/gui/advanced-chart.d.ts.map +1 -0
- package/dist/backends/gui/advanced-chart.js +59 -0
- package/dist/backends/gui/advanced-chart.js.map +1 -0
- package/dist/backends/gui/alert.cjs +106 -0
- package/dist/backends/gui/alert.d.ts +39 -0
- package/dist/backends/gui/alert.d.ts.map +1 -0
- package/dist/backends/gui/alert.js +102 -0
- package/dist/backends/gui/alert.js.map +1 -0
- package/dist/backends/gui/android.cjs +52 -0
- package/dist/backends/gui/android.d.ts +16 -0
- package/dist/backends/gui/android.d.ts.map +1 -0
- package/dist/backends/gui/android.js +50 -0
- package/dist/backends/gui/android.js.map +1 -0
- package/dist/backends/gui/animated-beam.cjs +97 -0
- package/dist/backends/gui/animated-beam.d.ts +57 -0
- package/dist/backends/gui/animated-beam.d.ts.map +1 -0
- package/dist/backends/gui/animated-beam.js +62 -0
- package/dist/backends/gui/animated-beam.js.map +1 -0
- package/dist/backends/gui/animated-cursor.cjs +183 -0
- package/dist/backends/gui/animated-cursor.d.ts +42 -0
- package/dist/backends/gui/animated-cursor.d.ts.map +1 -0
- package/dist/backends/gui/animated-cursor.js +181 -0
- package/dist/backends/gui/animated-cursor.js.map +1 -0
- package/dist/backends/gui/animated-testimonials.cjs +109 -0
- package/dist/backends/gui/animated-testimonials.d.ts +23 -0
- package/dist/backends/gui/animated-testimonials.d.ts.map +1 -0
- package/dist/backends/gui/animated-testimonials.js +74 -0
- package/dist/backends/gui/animated-testimonials.js.map +1 -0
- package/dist/backends/gui/animated-tooltip.cjs +100 -0
- package/dist/backends/gui/animated-tooltip.d.ts +15 -0
- package/dist/backends/gui/animated-tooltip.d.ts.map +1 -0
- package/dist/backends/gui/animated-tooltip.js +65 -0
- package/dist/backends/gui/animated-tooltip.js.map +1 -0
- package/dist/backends/gui/announcement.cjs +54 -0
- package/dist/backends/gui/announcement.d.ts +26 -0
- package/dist/backends/gui/announcement.d.ts.map +1 -0
- package/dist/backends/gui/announcement.js +52 -0
- package/dist/backends/gui/announcement.js.map +1 -0
- package/dist/backends/gui/apple-cards-carousel.cjs +198 -0
- package/dist/backends/gui/apple-cards-carousel.d.ts +45 -0
- package/dist/backends/gui/apple-cards-carousel.d.ts.map +1 -0
- package/dist/backends/gui/apple-cards-carousel.js +162 -0
- package/dist/backends/gui/apple-cards-carousel.js.map +1 -0
- package/dist/backends/gui/apple-hello-effect.cjs +38 -0
- package/dist/backends/gui/apple-hello-effect.d.ts +9 -0
- package/dist/backends/gui/apple-hello-effect.d.ts.map +1 -0
- package/dist/backends/gui/apple-hello-effect.js +36 -0
- package/dist/backends/gui/apple-hello-effect.js.map +1 -0
- package/dist/backends/gui/banner.cjs +108 -0
- package/dist/backends/gui/banner.d.ts +33 -0
- package/dist/backends/gui/banner.d.ts.map +1 -0
- package/dist/backends/gui/banner.js +106 -0
- package/dist/backends/gui/banner.js.map +1 -0
- package/dist/backends/gui/calendar.cjs +152 -0
- package/dist/backends/gui/calendar.d.ts +41 -0
- package/dist/backends/gui/calendar.d.ts.map +1 -0
- package/dist/backends/gui/calendar.js +151 -0
- package/dist/backends/gui/calendar.js.map +1 -0
- package/dist/backends/gui/choicebox.cjs +50 -0
- package/dist/backends/gui/choicebox.d.ts +33 -0
- package/dist/backends/gui/choicebox.d.ts.map +1 -0
- package/dist/backends/gui/choicebox.js +49 -0
- package/dist/backends/gui/choicebox.js.map +1 -0
- package/dist/backends/gui/code-block.cjs +120 -0
- package/dist/backends/gui/code-block.d.ts +22 -0
- package/dist/backends/gui/code-block.d.ts.map +1 -0
- package/dist/backends/gui/code-block.js +118 -0
- package/dist/backends/gui/code-block.js.map +1 -0
- package/dist/backends/gui/code-editor.cjs +195 -0
- package/dist/backends/gui/code-editor.d.ts +43 -0
- package/dist/backends/gui/code-editor.d.ts.map +1 -0
- package/dist/backends/gui/code-editor.js +160 -0
- package/dist/backends/gui/code-editor.js.map +1 -0
- package/dist/backends/gui/code-tabs.cjs +21 -0
- package/dist/backends/gui/code-tabs.d.ts +22 -0
- package/dist/backends/gui/code-tabs.d.ts.map +1 -0
- package/dist/backends/gui/code-tabs.js +19 -0
- package/dist/backends/gui/code-tabs.js.map +1 -0
- package/dist/backends/gui/color-picker.cjs +141 -0
- package/dist/backends/gui/color-picker.d.ts +25 -0
- package/dist/backends/gui/color-picker.d.ts.map +1 -0
- package/dist/backends/gui/color-picker.js +139 -0
- package/dist/backends/gui/color-picker.js.map +1 -0
- package/dist/backends/gui/combobox.cjs +42 -0
- package/dist/backends/gui/combobox.d.ts +39 -0
- package/dist/backends/gui/combobox.d.ts.map +1 -0
- package/dist/backends/gui/combobox.js +40 -0
- package/dist/backends/gui/combobox.js.map +1 -0
- package/dist/backends/gui/company-profile.cjs +43 -0
- package/dist/backends/gui/company-profile.d.ts +33 -0
- package/dist/backends/gui/company-profile.d.ts.map +1 -0
- package/dist/backends/gui/company-profile.js +41 -0
- package/dist/backends/gui/company-profile.js.map +1 -0
- package/dist/backends/gui/comparison.cjs +39 -0
- package/dist/backends/gui/comparison.d.ts +15 -0
- package/dist/backends/gui/comparison.d.ts.map +1 -0
- package/dist/backends/gui/comparison.js +37 -0
- package/dist/backends/gui/comparison.js.map +1 -0
- package/dist/backends/gui/credit-card.cjs +80 -0
- package/dist/backends/gui/credit-card.d.ts +21 -0
- package/dist/backends/gui/credit-card.d.ts.map +1 -0
- package/dist/backends/gui/credit-card.js +78 -0
- package/dist/backends/gui/credit-card.js.map +1 -0
- package/dist/backends/gui/crypto-market.cjs +128 -0
- package/dist/backends/gui/crypto-market.d.ts +52 -0
- package/dist/backends/gui/crypto-market.d.ts.map +1 -0
- package/dist/backends/gui/crypto-market.js +126 -0
- package/dist/backends/gui/crypto-market.js.map +1 -0
- package/dist/backends/gui/crypto-screener.cjs +45 -0
- package/dist/backends/gui/crypto-screener.d.ts +38 -0
- package/dist/backends/gui/crypto-screener.d.ts.map +1 -0
- package/dist/backends/gui/crypto-screener.js +43 -0
- package/dist/backends/gui/crypto-screener.js.map +1 -0
- package/dist/backends/gui/cursor.cjs +37 -0
- package/dist/backends/gui/cursor.d.ts +17 -0
- package/dist/backends/gui/cursor.d.ts.map +1 -0
- package/dist/backends/gui/cursor.js +35 -0
- package/dist/backends/gui/cursor.js.map +1 -0
- package/dist/backends/gui/data-table.cjs +171 -0
- package/dist/backends/gui/data-table.d.ts +91 -0
- package/dist/backends/gui/data-table.d.ts.map +1 -0
- package/dist/backends/gui/data-table.js +169 -0
- package/dist/backends/gui/data-table.js.map +1 -0
- package/dist/backends/gui/date-picker.cjs +66 -0
- package/dist/backends/gui/date-picker.d.ts +29 -0
- package/dist/backends/gui/date-picker.d.ts.map +1 -0
- package/dist/backends/gui/date-picker.js +64 -0
- package/dist/backends/gui/date-picker.js.map +1 -0
- package/dist/backends/gui/desktop-spotlight.cjs +46 -0
- package/dist/backends/gui/desktop-spotlight.d.ts +34 -0
- package/dist/backends/gui/desktop-spotlight.d.ts.map +1 -0
- package/dist/backends/gui/desktop-spotlight.js +44 -0
- package/dist/backends/gui/desktop-spotlight.js.map +1 -0
- package/dist/backends/gui/desktop-window.cjs +180 -0
- package/dist/backends/gui/desktop-window.d.ts +51 -0
- package/dist/backends/gui/desktop-window.d.ts.map +1 -0
- package/dist/backends/gui/desktop-window.js +177 -0
- package/dist/backends/gui/desktop-window.js.map +1 -0
- package/dist/backends/gui/desktop.cjs +238 -0
- package/dist/backends/gui/desktop.d.ts +109 -0
- package/dist/backends/gui/desktop.d.ts.map +1 -0
- package/dist/backends/gui/desktop.js +199 -0
- package/dist/backends/gui/desktop.js.map +1 -0
- package/dist/backends/gui/dialog-stack.cjs +26 -0
- package/dist/backends/gui/dialog-stack.d.ts +23 -0
- package/dist/backends/gui/dialog-stack.d.ts.map +1 -0
- package/dist/backends/gui/dialog-stack.js +24 -0
- package/dist/backends/gui/dialog-stack.js.map +1 -0
- package/dist/backends/gui/dock.cjs +99 -0
- package/dist/backends/gui/dock.d.ts +41 -0
- package/dist/backends/gui/dock.d.ts.map +1 -0
- package/dist/backends/gui/dock.js +96 -0
- package/dist/backends/gui/dock.js.map +1 -0
- package/dist/backends/gui/dropzone.cjs +142 -0
- package/dist/backends/gui/dropzone.d.ts +12 -0
- package/dist/backends/gui/dropzone.d.ts.map +1 -0
- package/dist/backends/gui/dropzone.js +140 -0
- package/dist/backends/gui/dropzone.js.map +1 -0
- package/dist/backends/gui/editor.cjs +84 -0
- package/dist/backends/gui/editor.d.ts +23 -0
- package/dist/backends/gui/editor.d.ts.map +1 -0
- package/dist/backends/gui/editor.js +49 -0
- package/dist/backends/gui/editor.js.map +1 -0
- package/dist/backends/gui/empty.cjs +71 -0
- package/dist/backends/gui/empty.d.ts +43 -0
- package/dist/backends/gui/empty.d.ts.map +1 -0
- package/dist/backends/gui/empty.js +63 -0
- package/dist/backends/gui/empty.js.map +1 -0
- package/dist/backends/gui/field.cjs +132 -0
- package/dist/backends/gui/field.d.ts +74 -0
- package/dist/backends/gui/field.d.ts.map +1 -0
- package/dist/backends/gui/field.js +121 -0
- package/dist/backends/gui/field.js.map +1 -0
- package/dist/backends/gui/financials.cjs +45 -0
- package/dist/backends/gui/financials.d.ts +36 -0
- package/dist/backends/gui/financials.d.ts.map +1 -0
- package/dist/backends/gui/financials.js +43 -0
- package/dist/backends/gui/financials.js.map +1 -0
- package/dist/backends/gui/forex-market.cjs +21 -0
- package/dist/backends/gui/forex-market.d.ts +17 -0
- package/dist/backends/gui/forex-market.d.ts.map +1 -0
- package/dist/backends/gui/forex-market.js +19 -0
- package/dist/backends/gui/forex-market.js.map +1 -0
- package/dist/backends/gui/forex-screener.cjs +57 -0
- package/dist/backends/gui/forex-screener.d.ts +45 -0
- package/dist/backends/gui/forex-screener.d.ts.map +1 -0
- package/dist/backends/gui/forex-screener.js +55 -0
- package/dist/backends/gui/forex-screener.js.map +1 -0
- package/dist/backends/gui/gantt.cjs +48 -0
- package/dist/backends/gui/gantt.d.ts +18 -0
- package/dist/backends/gui/gantt.d.ts.map +1 -0
- package/dist/backends/gui/gantt.js +46 -0
- package/dist/backends/gui/gantt.js.map +1 -0
- package/dist/backends/gui/glimpse.cjs +88 -0
- package/dist/backends/gui/glimpse.d.ts +57 -0
- package/dist/backends/gui/glimpse.d.ts.map +1 -0
- package/dist/backends/gui/glimpse.js +81 -0
- package/dist/backends/gui/glimpse.js.map +1 -0
- package/dist/backends/gui/grid-pattern.cjs +119 -0
- package/dist/backends/gui/grid-pattern.d.ts +96 -0
- package/dist/backends/gui/grid-pattern.d.ts.map +1 -0
- package/dist/backends/gui/grid-pattern.js +84 -0
- package/dist/backends/gui/grid-pattern.js.map +1 -0
- package/dist/backends/gui/image-crop.cjs +35 -0
- package/dist/backends/gui/image-crop.d.ts +20 -0
- package/dist/backends/gui/image-crop.d.ts.map +1 -0
- package/dist/backends/gui/image-crop.js +33 -0
- package/dist/backends/gui/image-crop.js.map +1 -0
- package/dist/backends/gui/image-zoom.cjs +58 -0
- package/dist/backends/gui/image-zoom.d.ts +16 -0
- package/dist/backends/gui/image-zoom.d.ts.map +1 -0
- package/dist/backends/gui/image-zoom.js +56 -0
- package/dist/backends/gui/image-zoom.js.map +1 -0
- package/dist/backends/gui/index.cjs +266 -1
- package/dist/backends/gui/index.d.ts +90 -0
- package/dist/backends/gui/index.d.ts.map +1 -1
- package/dist/backends/gui/index.js +90 -0
- package/dist/backends/gui/index.js.map +1 -1
- package/dist/backends/gui/interactive-grid-pattern.cjs +61 -0
- package/dist/backends/gui/interactive-grid-pattern.d.ts +28 -0
- package/dist/backends/gui/interactive-grid-pattern.d.ts.map +1 -0
- package/dist/backends/gui/interactive-grid-pattern.js +26 -0
- package/dist/backends/gui/interactive-grid-pattern.js.map +1 -0
- package/dist/backends/gui/iphone-15-pro.cjs +83 -0
- package/dist/backends/gui/iphone-15-pro.d.ts +16 -0
- package/dist/backends/gui/iphone-15-pro.d.ts.map +1 -0
- package/dist/backends/gui/iphone-15-pro.js +81 -0
- package/dist/backends/gui/iphone-15-pro.js.map +1 -0
- package/dist/backends/gui/item.cjs +154 -0
- package/dist/backends/gui/item.d.ts +72 -0
- package/dist/backends/gui/item.d.ts.map +1 -0
- package/dist/backends/gui/item.js +143 -0
- package/dist/backends/gui/item.js.map +1 -0
- package/dist/backends/gui/kanban.cjs +247 -0
- package/dist/backends/gui/kanban.d.ts +37 -0
- package/dist/backends/gui/kanban.d.ts.map +1 -0
- package/dist/backends/gui/kanban.js +212 -0
- package/dist/backends/gui/kanban.js.map +1 -0
- package/dist/backends/gui/kbd.cjs +45 -0
- package/dist/backends/gui/kbd.d.ts +8 -0
- package/dist/backends/gui/kbd.d.ts.map +1 -0
- package/dist/backends/gui/kbd.js +42 -0
- package/dist/backends/gui/kbd.js.map +1 -0
- package/dist/backends/gui/limelight-nav.cjs +201 -0
- package/dist/backends/gui/limelight-nav.d.ts +20 -0
- package/dist/backends/gui/limelight-nav.d.ts.map +1 -0
- package/dist/backends/gui/limelight-nav.js +166 -0
- package/dist/backends/gui/limelight-nav.js.map +1 -0
- package/dist/backends/gui/list.cjs +26 -0
- package/dist/backends/gui/list.d.ts +15 -0
- package/dist/backends/gui/list.d.ts.map +1 -0
- package/dist/backends/gui/list.js +23 -0
- package/dist/backends/gui/list.js.map +1 -0
- package/dist/backends/gui/macos-dock.cjs +84 -0
- package/dist/backends/gui/macos-dock.d.ts +30 -0
- package/dist/backends/gui/macos-dock.d.ts.map +1 -0
- package/dist/backends/gui/macos-dock.js +82 -0
- package/dist/backends/gui/macos-dock.js.map +1 -0
- package/dist/backends/gui/magnetic.cjs +40 -0
- package/dist/backends/gui/magnetic.d.ts +12 -0
- package/dist/backends/gui/magnetic.d.ts.map +1 -0
- package/dist/backends/gui/magnetic.js +38 -0
- package/dist/backends/gui/magnetic.js.map +1 -0
- package/dist/backends/gui/marquee.cjs +110 -0
- package/dist/backends/gui/marquee.d.ts +44 -0
- package/dist/backends/gui/marquee.d.ts.map +1 -0
- package/dist/backends/gui/marquee.js +75 -0
- package/dist/backends/gui/marquee.js.map +1 -0
- package/dist/backends/gui/menu-dock.cjs +64 -0
- package/dist/backends/gui/menu-dock.d.ts +21 -0
- package/dist/backends/gui/menu-dock.d.ts.map +1 -0
- package/dist/backends/gui/menu-dock.js +62 -0
- package/dist/backends/gui/menu-dock.js.map +1 -0
- package/dist/backends/gui/menubar.cjs +227 -0
- package/dist/backends/gui/menubar.d.ts +106 -0
- package/dist/backends/gui/menubar.d.ts.map +1 -0
- package/dist/backends/gui/menubar.js +177 -0
- package/dist/backends/gui/menubar.js.map +1 -0
- package/dist/backends/gui/message-dock.cjs +111 -0
- package/dist/backends/gui/message-dock.d.ts +22 -0
- package/dist/backends/gui/message-dock.d.ts.map +1 -0
- package/dist/backends/gui/message-dock.js +110 -0
- package/dist/backends/gui/message-dock.js.map +1 -0
- package/dist/backends/gui/mini-calendar.cjs +25 -0
- package/dist/backends/gui/mini-calendar.d.ts +22 -0
- package/dist/backends/gui/mini-calendar.d.ts.map +1 -0
- package/dist/backends/gui/mini-calendar.js +24 -0
- package/dist/backends/gui/mini-calendar.js.map +1 -0
- package/dist/backends/gui/minimal-tiptap.cjs +56 -0
- package/dist/backends/gui/minimal-tiptap.d.ts +20 -0
- package/dist/backends/gui/minimal-tiptap.d.ts.map +1 -0
- package/dist/backends/gui/minimal-tiptap.js +21 -0
- package/dist/backends/gui/minimal-tiptap.js.map +1 -0
- package/dist/backends/gui/motion-highlight.cjs +83 -0
- package/dist/backends/gui/motion-highlight.d.ts +27 -0
- package/dist/backends/gui/motion-highlight.d.ts.map +1 -0
- package/dist/backends/gui/motion-highlight.js +48 -0
- package/dist/backends/gui/motion-highlight.js.map +1 -0
- package/dist/backends/gui/navigation-bar.cjs +47 -0
- package/dist/backends/gui/navigation-bar.d.ts +48 -0
- package/dist/backends/gui/navigation-bar.d.ts.map +1 -0
- package/dist/backends/gui/navigation-bar.js +45 -0
- package/dist/backends/gui/navigation-bar.js.map +1 -0
- package/dist/backends/gui/news-timeline.cjs +47 -0
- package/dist/backends/gui/news-timeline.d.ts +39 -0
- package/dist/backends/gui/news-timeline.d.ts.map +1 -0
- package/dist/backends/gui/news-timeline.js +45 -0
- package/dist/backends/gui/news-timeline.js.map +1 -0
- package/dist/backends/gui/order-entry.cjs +53 -0
- package/dist/backends/gui/order-entry.d.ts +21 -0
- package/dist/backends/gui/order-entry.d.ts.map +1 -0
- package/dist/backends/gui/order-entry.js +52 -0
- package/dist/backends/gui/order-entry.js.map +1 -0
- package/dist/backends/gui/orders-history.cjs +102 -0
- package/dist/backends/gui/orders-history.d.ts +24 -0
- package/dist/backends/gui/orders-history.d.ts.map +1 -0
- package/dist/backends/gui/orders-history.js +67 -0
- package/dist/backends/gui/orders-history.js.map +1 -0
- package/dist/backends/gui/pagination.cjs +51 -0
- package/dist/backends/gui/pagination.d.ts +52 -0
- package/dist/backends/gui/pagination.d.ts.map +1 -0
- package/dist/backends/gui/pagination.js +42 -0
- package/dist/backends/gui/pagination.js.map +1 -0
- package/dist/backends/gui/particles-background.cjs +135 -0
- package/dist/backends/gui/particles-background.d.ts +24 -0
- package/dist/backends/gui/particles-background.d.ts.map +1 -0
- package/dist/backends/gui/particles-background.js +133 -0
- package/dist/backends/gui/particles-background.js.map +1 -0
- package/dist/backends/gui/particles.cjs +145 -0
- package/dist/backends/gui/particles.d.ts +25 -0
- package/dist/backends/gui/particles.d.ts.map +1 -0
- package/dist/backends/gui/particles.js +143 -0
- package/dist/backends/gui/particles.js.map +1 -0
- package/dist/backends/gui/pill.cjs +82 -0
- package/dist/backends/gui/pill.d.ts +12 -0
- package/dist/backends/gui/pill.d.ts.map +1 -0
- package/dist/backends/gui/pill.js +78 -0
- package/dist/backends/gui/pill.js.map +1 -0
- package/dist/backends/gui/pin-list.cjs +82 -0
- package/dist/backends/gui/pin-list.d.ts +42 -0
- package/dist/backends/gui/pin-list.d.ts.map +1 -0
- package/dist/backends/gui/pin-list.js +80 -0
- package/dist/backends/gui/pin-list.js.map +1 -0
- package/dist/backends/gui/pixel-image.cjs +63 -0
- package/dist/backends/gui/pixel-image.d.ts +21 -0
- package/dist/backends/gui/pixel-image.d.ts.map +1 -0
- package/dist/backends/gui/pixel-image.js +61 -0
- package/dist/backends/gui/pixel-image.js.map +1 -0
- package/dist/backends/gui/positions-list.cjs +60 -0
- package/dist/backends/gui/positions-list.d.ts +14 -0
- package/dist/backends/gui/positions-list.d.ts.map +1 -0
- package/dist/backends/gui/positions-list.js +58 -0
- package/dist/backends/gui/positions-list.js.map +1 -0
- package/dist/backends/gui/qr-code.cjs +438 -0
- package/dist/backends/gui/qr-code.d.ts +42 -0
- package/dist/backends/gui/qr-code.d.ts.map +1 -0
- package/dist/backends/gui/qr-code.js +402 -0
- package/dist/backends/gui/qr-code.js.map +1 -0
- package/dist/backends/gui/relative-time.cjs +167 -0
- package/dist/backends/gui/relative-time.d.ts +10 -0
- package/dist/backends/gui/relative-time.d.ts.map +1 -0
- package/dist/backends/gui/relative-time.js +132 -0
- package/dist/backends/gui/relative-time.js.map +1 -0
- package/dist/backends/gui/safari.cjs +65 -0
- package/dist/backends/gui/safari.d.ts +23 -0
- package/dist/backends/gui/safari.d.ts.map +1 -0
- package/dist/backends/gui/safari.js +63 -0
- package/dist/backends/gui/safari.js.map +1 -0
- package/dist/backends/gui/snippet.cjs +144 -0
- package/dist/backends/gui/snippet.d.ts +38 -0
- package/dist/backends/gui/snippet.d.ts.map +1 -0
- package/dist/backends/gui/snippet.js +141 -0
- package/dist/backends/gui/snippet.js.map +1 -0
- package/dist/backends/gui/stars-scrolling-wheel.cjs +106 -0
- package/dist/backends/gui/stars-scrolling-wheel.d.ts +24 -0
- package/dist/backends/gui/stars-scrolling-wheel.d.ts.map +1 -0
- package/dist/backends/gui/stars-scrolling-wheel.js +104 -0
- package/dist/backends/gui/stars-scrolling-wheel.js.map +1 -0
- package/dist/backends/gui/status.cjs +79 -0
- package/dist/backends/gui/status.d.ts +15 -0
- package/dist/backends/gui/status.d.ts.map +1 -0
- package/dist/backends/gui/status.js +77 -0
- package/dist/backends/gui/status.js.map +1 -0
- package/dist/backends/gui/stock-market.cjs +21 -0
- package/dist/backends/gui/stock-market.d.ts +17 -0
- package/dist/backends/gui/stock-market.d.ts.map +1 -0
- package/dist/backends/gui/stock-market.js +19 -0
- package/dist/backends/gui/stock-market.js.map +1 -0
- package/dist/backends/gui/stock-screener.cjs +55 -0
- package/dist/backends/gui/stock-screener.d.ts +41 -0
- package/dist/backends/gui/stock-screener.d.ts.map +1 -0
- package/dist/backends/gui/stock-screener.js +53 -0
- package/dist/backends/gui/stock-screener.js.map +1 -0
- package/dist/backends/gui/symbol-info.cjs +46 -0
- package/dist/backends/gui/symbol-info.d.ts +36 -0
- package/dist/backends/gui/symbol-info.d.ts.map +1 -0
- package/dist/backends/gui/symbol-info.js +44 -0
- package/dist/backends/gui/symbol-info.js.map +1 -0
- package/dist/backends/gui/table.cjs +104 -0
- package/dist/backends/gui/table.d.ts +57 -0
- package/dist/backends/gui/table.d.ts.map +1 -0
- package/dist/backends/gui/table.js +95 -0
- package/dist/backends/gui/table.js.map +1 -0
- package/dist/backends/gui/tags.cjs +22 -0
- package/dist/backends/gui/tags.d.ts +22 -0
- package/dist/backends/gui/tags.d.ts.map +1 -0
- package/dist/backends/gui/tags.js +20 -0
- package/dist/backends/gui/tags.js.map +1 -0
- package/dist/backends/gui/technical-analysis.cjs +58 -0
- package/dist/backends/gui/technical-analysis.d.ts +41 -0
- package/dist/backends/gui/technical-analysis.d.ts.map +1 -0
- package/dist/backends/gui/technical-analysis.js +56 -0
- package/dist/backends/gui/technical-analysis.js.map +1 -0
- package/dist/backends/gui/terminal.cjs +266 -0
- package/dist/backends/gui/terminal.d.ts +38 -0
- package/dist/backends/gui/terminal.d.ts.map +1 -0
- package/dist/backends/gui/terminal.js +231 -0
- package/dist/backends/gui/terminal.js.map +1 -0
- package/dist/backends/gui/ticker.cjs +79 -0
- package/dist/backends/gui/ticker.d.ts +19 -0
- package/dist/backends/gui/ticker.d.ts.map +1 -0
- package/dist/backends/gui/ticker.js +44 -0
- package/dist/backends/gui/ticker.js.map +1 -0
- package/dist/backends/gui/timeline.cjs +154 -0
- package/dist/backends/gui/timeline.d.ts +42 -0
- package/dist/backends/gui/timeline.d.ts.map +1 -0
- package/dist/backends/gui/timeline.js +118 -0
- package/dist/backends/gui/timeline.js.map +1 -0
- package/dist/backends/gui/toggle.cjs +96 -0
- package/dist/backends/gui/toggle.d.ts +29 -0
- package/dist/backends/gui/toggle.d.ts.map +1 -0
- package/dist/backends/gui/toggle.js +95 -0
- package/dist/backends/gui/toggle.js.map +1 -0
- package/dist/backends/gui/video-player.cjs +383 -0
- package/dist/backends/gui/video-player.d.ts +54 -0
- package/dist/backends/gui/video-player.d.ts.map +1 -0
- package/dist/backends/gui/video-player.js +348 -0
- package/dist/backends/gui/video-player.js.map +1 -0
- package/dist/chat/Composer.cjs +10 -10
- package/dist/chat/Composer.d.ts +16 -17
- package/dist/chat/Composer.d.ts.map +1 -1
- package/dist/chat/Composer.js +11 -11
- package/dist/chat/Composer.js.map +1 -1
- package/dist/gallery.cjs +180 -1
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +391 -3
- package/dist/gallery.js +181 -2
- package/dist/gallery.js.map +1 -1
- package/dist/index.cjs +179 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +179 -1
- package/dist/index.node.js +3 -0
- package/dist/styles.css +356 -0
- package/package.json +1 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.Marquee = void 0;
|
|
38
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
+
/**
|
|
40
|
+
* Marquee — an endless horizontal or vertical ticker.
|
|
41
|
+
*
|
|
42
|
+
* `children` is laid out `repeat` times as a group, the group is rendered
|
|
43
|
+
* twice back to back, and one keyframe slides the pair by exactly half its own
|
|
44
|
+
* length, so the second copy lands where the first began and the seam never
|
|
45
|
+
* shows. A reader hears one copy: every other is `aria-hidden`. Duration comes
|
|
46
|
+
* from the rendered track's length over `speed` (px/s), so a long set of items
|
|
47
|
+
* moves at the same pace as a short one.
|
|
48
|
+
*
|
|
49
|
+
* The keyframes ride along as a hoisted `<style>`: React keys it by `href`, so
|
|
50
|
+
* any number of marquees on a page emit it once.
|
|
51
|
+
*/
|
|
52
|
+
const gui_1 = require("@hanzo/gui");
|
|
53
|
+
const React = __importStar(require("react"));
|
|
54
|
+
const sx_1 = require("../../sx.cjs");
|
|
55
|
+
const ink_1 = require("./ink.cjs");
|
|
56
|
+
const slot_1 = require("./slot.cjs");
|
|
57
|
+
const Frame = (0, gui_1.styled)(gui_1.XStack, {
|
|
58
|
+
name: 'Marquee',
|
|
59
|
+
position: 'relative',
|
|
60
|
+
overflow: 'hidden',
|
|
61
|
+
width: '100%',
|
|
62
|
+
});
|
|
63
|
+
const KEYFRAMES = `
|
|
64
|
+
@keyframes marquee-x { to { transform: translateX(-50%) } }
|
|
65
|
+
@keyframes marquee-y { to { transform: translateY(-50%) } }
|
|
66
|
+
[data-slot="marquee"][data-pause-hover]:hover [data-slot="marquee-track"] { animation-play-state: paused }
|
|
67
|
+
@media (prefers-reduced-motion: reduce) {
|
|
68
|
+
[data-slot="marquee-track"] { animation: none !important }
|
|
69
|
+
}
|
|
70
|
+
`;
|
|
71
|
+
const UNMEASURED = { stage: 0, track: 0 };
|
|
72
|
+
/** The DOM box behind a ref, if there is one; a native view has none. */
|
|
73
|
+
const box = (el) => typeof HTMLElement !== 'undefined' && el instanceof HTMLElement ? el : null;
|
|
74
|
+
exports.Marquee = React.forwardRef(({ children, repeat = 2, reverse = false, pauseOnHover = false, vertical = false, speed = 50, gap = 0, className, style, ...props }, ref) => {
|
|
75
|
+
const Axis = vertical ? gui_1.YStack : gui_1.XStack;
|
|
76
|
+
const stageRef = React.useRef(null);
|
|
77
|
+
const trackRef = React.useRef(null);
|
|
78
|
+
const [span, setSpan] = React.useState(UNMEASURED);
|
|
79
|
+
React.useEffect(() => {
|
|
80
|
+
const along = (el) => {
|
|
81
|
+
const b = box(el);
|
|
82
|
+
return b ? (vertical ? b.offsetHeight : b.offsetWidth) : 0;
|
|
83
|
+
};
|
|
84
|
+
const measure = () => {
|
|
85
|
+
const next = { stage: along(stageRef.current), track: along(trackRef.current) };
|
|
86
|
+
setSpan((s) => (s.stage === next.stage && s.track === next.track ? s : next));
|
|
87
|
+
};
|
|
88
|
+
measure();
|
|
89
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
90
|
+
window.addEventListener('resize', measure);
|
|
91
|
+
return () => window.removeEventListener('resize', measure);
|
|
92
|
+
}
|
|
93
|
+
const observer = new ResizeObserver(measure);
|
|
94
|
+
const b = box(trackRef.current);
|
|
95
|
+
if (b)
|
|
96
|
+
observer.observe(b);
|
|
97
|
+
return () => observer.disconnect();
|
|
98
|
+
}, [vertical, children, repeat, gap]);
|
|
99
|
+
const duration = span.track > 0 ? span.track / 2 / speed : 20;
|
|
100
|
+
const group = (hidden) => ((0, jsx_runtime_1.jsx)(Axis, { ...(0, slot_1.slot)('marquee-group'), shrink: 0, items: "center", gap: gap, ...(vertical ? { pb: gap } : { pr: gap }), children: Array.from({ length: repeat }, (_, i) => ((0, jsx_runtime_1.jsx)(Axis, { "aria-hidden": hidden || undefined, ...(0, slot_1.slot)('marquee-item'), shrink: 0, children: (0, ink_1.ink)(children) }, i))) }));
|
|
101
|
+
return ((0, jsx_runtime_1.jsxs)(Frame, { ref: ref, ...(0, slot_1.slot)('marquee'), "data-pause-hover": pauseOnHover || undefined, style: style, ...(0, sx_1.sx)(className), ...props, children: [(0, jsx_runtime_1.jsx)("style", { href: "marquee", precedence: "default", children: KEYFRAMES }), (0, jsx_runtime_1.jsx)(Axis, { ref: stageRef, ...(0, slot_1.slot)('marquee-stage'), width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(Axis, { ref: trackRef, ...(0, slot_1.slot)('marquee-track'), shrink: 0, style: {
|
|
102
|
+
willChange: 'transform',
|
|
103
|
+
animationName: `marquee-${vertical ? 'y' : 'x'}`,
|
|
104
|
+
animationDuration: `${duration}s`,
|
|
105
|
+
animationTimingFunction: 'linear',
|
|
106
|
+
animationIterationCount: 'infinite',
|
|
107
|
+
animationDirection: reverse ? 'reverse' : 'normal',
|
|
108
|
+
}, children: [group(false), group(true)] }) })] }));
|
|
109
|
+
});
|
|
110
|
+
exports.Marquee.displayName = 'Marquee';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marquee — an endless horizontal or vertical ticker.
|
|
3
|
+
*
|
|
4
|
+
* `children` is laid out `repeat` times as a group, the group is rendered
|
|
5
|
+
* twice back to back, and one keyframe slides the pair by exactly half its own
|
|
6
|
+
* length, so the second copy lands where the first began and the seam never
|
|
7
|
+
* shows. A reader hears one copy: every other is `aria-hidden`. Duration comes
|
|
8
|
+
* from the rendered track's length over `speed` (px/s), so a long set of items
|
|
9
|
+
* moves at the same pace as a short one.
|
|
10
|
+
*
|
|
11
|
+
* The keyframes ride along as a hoisted `<style>`: React keys it by `href`, so
|
|
12
|
+
* any number of marquees on a page emit it once.
|
|
13
|
+
*/
|
|
14
|
+
import { type GuiElement } from '@hanzo/gui';
|
|
15
|
+
import * as React from 'react';
|
|
16
|
+
export type MarqueeProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children' | 'style'> & {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
/** How many times `children` is laid out per loop. */
|
|
19
|
+
repeat?: number;
|
|
20
|
+
/** Run the track backwards. */
|
|
21
|
+
reverse?: boolean;
|
|
22
|
+
pauseOnHover?: boolean;
|
|
23
|
+
vertical?: boolean;
|
|
24
|
+
/** Track travel, px/s. */
|
|
25
|
+
speed?: number;
|
|
26
|
+
/** Space between copies, px — across the loop's seam too. */
|
|
27
|
+
gap?: number;
|
|
28
|
+
style?: React.CSSProperties;
|
|
29
|
+
};
|
|
30
|
+
export declare const Marquee: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "children" | "style"> & {
|
|
31
|
+
children: React.ReactNode;
|
|
32
|
+
/** How many times `children` is laid out per loop. */
|
|
33
|
+
repeat?: number;
|
|
34
|
+
/** Run the track backwards. */
|
|
35
|
+
reverse?: boolean;
|
|
36
|
+
pauseOnHover?: boolean;
|
|
37
|
+
vertical?: boolean;
|
|
38
|
+
/** Track travel, px/s. */
|
|
39
|
+
speed?: number;
|
|
40
|
+
/** Space between copies, px — across the loop's seam too. */
|
|
41
|
+
gap?: number;
|
|
42
|
+
style?: React.CSSProperties;
|
|
43
|
+
} & React.RefAttributes<GuiElement>>;
|
|
44
|
+
//# sourceMappingURL=marquee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marquee.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/marquee.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IAC7F,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B,CAAA;AASD,eAAO,MAAM,OAAO;cArBR,KAAK,CAAC,SAAS;IACzB,sDAAsD;aAC7C,MAAM;IACf,+BAA+B;cACrB,OAAO;mBACF,OAAO;eACX,OAAO;IAClB,0BAA0B;YAClB,MAAM;IACd,6DAA6D;UACvD,MAAM;YACJ,KAAK,CAAC,aAAa;oCAuG5B,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Marquee — an endless horizontal or vertical ticker.
|
|
5
|
+
*
|
|
6
|
+
* `children` is laid out `repeat` times as a group, the group is rendered
|
|
7
|
+
* twice back to back, and one keyframe slides the pair by exactly half its own
|
|
8
|
+
* length, so the second copy lands where the first began and the seam never
|
|
9
|
+
* shows. A reader hears one copy: every other is `aria-hidden`. Duration comes
|
|
10
|
+
* from the rendered track's length over `speed` (px/s), so a long set of items
|
|
11
|
+
* moves at the same pace as a short one.
|
|
12
|
+
*
|
|
13
|
+
* The keyframes ride along as a hoisted `<style>`: React keys it by `href`, so
|
|
14
|
+
* any number of marquees on a page emit it once.
|
|
15
|
+
*/
|
|
16
|
+
import { XStack, YStack, styled } from '@hanzo/gui';
|
|
17
|
+
import * as React from 'react';
|
|
18
|
+
import { sx } from '../../sx.js';
|
|
19
|
+
import { ink } from './ink.js';
|
|
20
|
+
import { slot } from './slot.js';
|
|
21
|
+
const Frame = styled(XStack, {
|
|
22
|
+
name: 'Marquee',
|
|
23
|
+
position: 'relative',
|
|
24
|
+
overflow: 'hidden',
|
|
25
|
+
width: '100%',
|
|
26
|
+
});
|
|
27
|
+
const KEYFRAMES = `
|
|
28
|
+
@keyframes marquee-x { to { transform: translateX(-50%) } }
|
|
29
|
+
@keyframes marquee-y { to { transform: translateY(-50%) } }
|
|
30
|
+
[data-slot="marquee"][data-pause-hover]:hover [data-slot="marquee-track"] { animation-play-state: paused }
|
|
31
|
+
@media (prefers-reduced-motion: reduce) {
|
|
32
|
+
[data-slot="marquee-track"] { animation: none !important }
|
|
33
|
+
}
|
|
34
|
+
`;
|
|
35
|
+
const UNMEASURED = { stage: 0, track: 0 };
|
|
36
|
+
/** The DOM box behind a ref, if there is one; a native view has none. */
|
|
37
|
+
const box = (el) => typeof HTMLElement !== 'undefined' && el instanceof HTMLElement ? el : null;
|
|
38
|
+
export const Marquee = React.forwardRef(({ children, repeat = 2, reverse = false, pauseOnHover = false, vertical = false, speed = 50, gap = 0, className, style, ...props }, ref) => {
|
|
39
|
+
const Axis = vertical ? YStack : XStack;
|
|
40
|
+
const stageRef = React.useRef(null);
|
|
41
|
+
const trackRef = React.useRef(null);
|
|
42
|
+
const [span, setSpan] = React.useState(UNMEASURED);
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
const along = (el) => {
|
|
45
|
+
const b = box(el);
|
|
46
|
+
return b ? (vertical ? b.offsetHeight : b.offsetWidth) : 0;
|
|
47
|
+
};
|
|
48
|
+
const measure = () => {
|
|
49
|
+
const next = { stage: along(stageRef.current), track: along(trackRef.current) };
|
|
50
|
+
setSpan((s) => (s.stage === next.stage && s.track === next.track ? s : next));
|
|
51
|
+
};
|
|
52
|
+
measure();
|
|
53
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
54
|
+
window.addEventListener('resize', measure);
|
|
55
|
+
return () => window.removeEventListener('resize', measure);
|
|
56
|
+
}
|
|
57
|
+
const observer = new ResizeObserver(measure);
|
|
58
|
+
const b = box(trackRef.current);
|
|
59
|
+
if (b)
|
|
60
|
+
observer.observe(b);
|
|
61
|
+
return () => observer.disconnect();
|
|
62
|
+
}, [vertical, children, repeat, gap]);
|
|
63
|
+
const duration = span.track > 0 ? span.track / 2 / speed : 20;
|
|
64
|
+
const group = (hidden) => (_jsx(Axis, { ...slot('marquee-group'), shrink: 0, items: "center", gap: gap, ...(vertical ? { pb: gap } : { pr: gap }), children: Array.from({ length: repeat }, (_, i) => (_jsx(Axis, { "aria-hidden": hidden || undefined, ...slot('marquee-item'), shrink: 0, children: ink(children) }, i))) }));
|
|
65
|
+
return (_jsxs(Frame, { ref: ref, ...slot('marquee'), "data-pause-hover": pauseOnHover || undefined, style: style, ...sx(className), ...props, children: [_jsx("style", { href: "marquee", precedence: "default", children: KEYFRAMES }), _jsx(Axis, { ref: stageRef, ...slot('marquee-stage'), width: "100%", height: "100%", children: _jsxs(Axis, { ref: trackRef, ...slot('marquee-track'), shrink: 0, style: {
|
|
66
|
+
willChange: 'transform',
|
|
67
|
+
animationName: `marquee-${vertical ? 'y' : 'x'}`,
|
|
68
|
+
animationDuration: `${duration}s`,
|
|
69
|
+
animationTimingFunction: 'linear',
|
|
70
|
+
animationIterationCount: 'infinite',
|
|
71
|
+
animationDirection: reverse ? 'reverse' : 'normal',
|
|
72
|
+
}, children: [group(false), group(true)] }) })] }));
|
|
73
|
+
});
|
|
74
|
+
Marquee.displayName = 'Marquee';
|
|
75
|
+
//# sourceMappingURL=marquee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marquee.js","sourceRoot":"","sources":["../../../src/backends/gui/marquee.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.MenuDock = MenuDock;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* MenuDock — a pill of icon buttons, laid out as a row or a column, each one
|
|
8
|
+
* showing its label as a tooltip on hover and a filled treatment when active.
|
|
9
|
+
*
|
|
10
|
+
* Unlike `Dock`, there is no pointer-distance magnification: an item is either
|
|
11
|
+
* `active` or not, and the whole thing is one `items` array rather than a set
|
|
12
|
+
* of composed children — the shape a navigation rail or a bottom tab bar wants.
|
|
13
|
+
*/
|
|
14
|
+
const gui_1 = require("@hanzo/gui");
|
|
15
|
+
const react_1 = require("react");
|
|
16
|
+
const sx_1 = require("../../sx.cjs");
|
|
17
|
+
const ink_1 = require("./ink.cjs");
|
|
18
|
+
const slot_1 = require("./slot.cjs");
|
|
19
|
+
const gesture_1 = require("./gesture.cjs");
|
|
20
|
+
const ITEM_SIZE = 44;
|
|
21
|
+
const Frame = (0, gui_1.styled)(gui_1.XStack, {
|
|
22
|
+
name: 'MenuDock',
|
|
23
|
+
gap: '$2',
|
|
24
|
+
p: '$2',
|
|
25
|
+
rounded: '$10',
|
|
26
|
+
borderWidth: 1,
|
|
27
|
+
borderColor: '$borderColor',
|
|
28
|
+
bg: '$panel',
|
|
29
|
+
shadowColor: '$dim',
|
|
30
|
+
shadowRadius: 24,
|
|
31
|
+
shadowOpacity: 0.25,
|
|
32
|
+
variants: {
|
|
33
|
+
orientation: {
|
|
34
|
+
horizontal: { flexDirection: 'row' },
|
|
35
|
+
vertical: { flexDirection: 'column' },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
defaultVariants: { orientation: 'horizontal' },
|
|
39
|
+
});
|
|
40
|
+
const ItemFrame = (0, gui_1.styled)(gui_1.XStack, {
|
|
41
|
+
name: 'MenuDockItem',
|
|
42
|
+
items: 'center',
|
|
43
|
+
justify: 'center',
|
|
44
|
+
width: ITEM_SIZE,
|
|
45
|
+
height: ITEM_SIZE,
|
|
46
|
+
rounded: '$10',
|
|
47
|
+
bg: 'transparent',
|
|
48
|
+
cursor: 'pointer',
|
|
49
|
+
hoverStyle: { bg: '$hover' },
|
|
50
|
+
variants: {
|
|
51
|
+
active: {
|
|
52
|
+
true: { bg: '$ink', hoverStyle: { bg: '$ink' } },
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
function MenuDockButton({ item, orientation, }) {
|
|
57
|
+
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
58
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('menu-dock-item-wrap'), position: "relative", items: "center", children: [hovered ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('menu-dock-tooltip'), position: "absolute", ...(orientation === 'vertical'
|
|
59
|
+
? { l: '100%', ml: '$2', t: '50%', style: { transform: 'translateY(-50%)' } }
|
|
60
|
+
: { b: '100%', mb: '$2', self: 'center' }), px: "$2", py: "$1", rounded: "$3", bg: "$ink", style: { ...(orientation === 'vertical' ? { transform: 'translateY(-50%)' } : {}), whiteSpace: 'nowrap' }, children: (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", color: "$sunken", children: item.label }) })) : null, (0, jsx_runtime_1.jsxs)(ItemFrame, { ...(0, slot_1.slot)('menu-dock-item'), "data-active": item.active ? 'true' : 'false', render: "button", ...{ type: 'button' }, active: item.active, onClick: item.onClick, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), ...(0, slot_1.tip)(item.label), ...(0, gesture_1.touch)(ITEM_SIZE, 44), children: [(0, ink_1.ink)(item.icon), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { ...(0, slot_1.slot)('menu-dock-item-label'), size: "$1", style: { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)' }, children: item.label })] })] }));
|
|
61
|
+
}
|
|
62
|
+
function MenuDock({ className, items, orientation = 'horizontal', ...props }) {
|
|
63
|
+
return ((0, jsx_runtime_1.jsx)(Frame, { ...(0, slot_1.slot)('menu-dock'), "data-orientation": orientation, orientation: orientation, ...(0, sx_1.sx)(className), ...props, children: items.map((item, index) => ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: (0, jsx_runtime_1.jsx)(MenuDockButton, { item: item, orientation: orientation }) }, index))) }));
|
|
64
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
2
|
+
export type MenuDockOrientation = 'horizontal' | 'vertical';
|
|
3
|
+
export type MenuDockItem = {
|
|
4
|
+
icon: ReactNode;
|
|
5
|
+
label: string;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
active?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const Frame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, import("@hanzogui/web").GuiElement, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
|
|
10
|
+
elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
|
|
11
|
+
fullscreen?: boolean | undefined;
|
|
12
|
+
orientation?: "horizontal" | "vertical" | undefined;
|
|
13
|
+
}, import("@hanzogui/web").StaticConfigPublic>;
|
|
14
|
+
export type MenuDockProps = Omit<ComponentProps<typeof Frame>, 'orientation' | 'className' | 'items'> & {
|
|
15
|
+
className?: string;
|
|
16
|
+
items: MenuDockItem[];
|
|
17
|
+
orientation?: MenuDockOrientation;
|
|
18
|
+
};
|
|
19
|
+
export declare function MenuDock({ className, items, orientation, ...props }: MenuDockProps): import("react").JSX.Element;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=menu-dock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-dock.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/menu-dock.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAA;AAM/E,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,UAAU,CAAA;AAE3D,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAID,QAAA,MAAM,KAAK;;;;8CAoBT,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAClC,CAAA;AAqED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAA0B,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAgBjG"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* MenuDock — a pill of icon buttons, laid out as a row or a column, each one
|
|
5
|
+
* showing its label as a tooltip on hover and a filled treatment when active.
|
|
6
|
+
*
|
|
7
|
+
* Unlike `Dock`, there is no pointer-distance magnification: an item is either
|
|
8
|
+
* `active` or not, and the whole thing is one `items` array rather than a set
|
|
9
|
+
* of composed children — the shape a navigation rail or a bottom tab bar wants.
|
|
10
|
+
*/
|
|
11
|
+
import { SizableText, XStack, YStack, styled } from '@hanzo/gui';
|
|
12
|
+
import { Fragment, useState } from 'react';
|
|
13
|
+
import { sx } from '../../sx.js';
|
|
14
|
+
import { ink } from './ink.js';
|
|
15
|
+
import { slot, tip } from './slot.js';
|
|
16
|
+
import { touch } from './gesture.js';
|
|
17
|
+
const ITEM_SIZE = 44;
|
|
18
|
+
const Frame = styled(XStack, {
|
|
19
|
+
name: 'MenuDock',
|
|
20
|
+
gap: '$2',
|
|
21
|
+
p: '$2',
|
|
22
|
+
rounded: '$10',
|
|
23
|
+
borderWidth: 1,
|
|
24
|
+
borderColor: '$borderColor',
|
|
25
|
+
bg: '$panel',
|
|
26
|
+
shadowColor: '$dim',
|
|
27
|
+
shadowRadius: 24,
|
|
28
|
+
shadowOpacity: 0.25,
|
|
29
|
+
variants: {
|
|
30
|
+
orientation: {
|
|
31
|
+
horizontal: { flexDirection: 'row' },
|
|
32
|
+
vertical: { flexDirection: 'column' },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
defaultVariants: { orientation: 'horizontal' },
|
|
36
|
+
});
|
|
37
|
+
const ItemFrame = styled(XStack, {
|
|
38
|
+
name: 'MenuDockItem',
|
|
39
|
+
items: 'center',
|
|
40
|
+
justify: 'center',
|
|
41
|
+
width: ITEM_SIZE,
|
|
42
|
+
height: ITEM_SIZE,
|
|
43
|
+
rounded: '$10',
|
|
44
|
+
bg: 'transparent',
|
|
45
|
+
cursor: 'pointer',
|
|
46
|
+
hoverStyle: { bg: '$hover' },
|
|
47
|
+
variants: {
|
|
48
|
+
active: {
|
|
49
|
+
true: { bg: '$ink', hoverStyle: { bg: '$ink' } },
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
function MenuDockButton({ item, orientation, }) {
|
|
54
|
+
const [hovered, setHovered] = useState(false);
|
|
55
|
+
return (_jsxs(YStack, { ...slot('menu-dock-item-wrap'), position: "relative", items: "center", children: [hovered ? (_jsx(XStack, { ...slot('menu-dock-tooltip'), position: "absolute", ...(orientation === 'vertical'
|
|
56
|
+
? { l: '100%', ml: '$2', t: '50%', style: { transform: 'translateY(-50%)' } }
|
|
57
|
+
: { b: '100%', mb: '$2', self: 'center' }), px: "$2", py: "$1", rounded: "$3", bg: "$ink", style: { ...(orientation === 'vertical' ? { transform: 'translateY(-50%)' } : {}), whiteSpace: 'nowrap' }, children: _jsx(SizableText, { size: "$1", color: "$sunken", children: item.label }) })) : null, _jsxs(ItemFrame, { ...slot('menu-dock-item'), "data-active": item.active ? 'true' : 'false', render: "button", ...{ type: 'button' }, active: item.active, onClick: item.onClick, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), ...tip(item.label), ...touch(ITEM_SIZE, 44), children: [ink(item.icon), _jsx(SizableText, { ...slot('menu-dock-item-label'), size: "$1", style: { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)' }, children: item.label })] })] }));
|
|
58
|
+
}
|
|
59
|
+
export function MenuDock({ className, items, orientation = 'horizontal', ...props }) {
|
|
60
|
+
return (_jsx(Frame, { ...slot('menu-dock'), "data-orientation": orientation, orientation: orientation, ...sx(className), ...props, children: items.map((item, index) => (_jsx(Fragment, { children: _jsx(MenuDockButton, { item: item, orientation: orientation }) }, index))) }));
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=menu-dock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-dock.js","sourceRoot":"","sources":["../../../src/backends/gui/menu-dock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.MenubarRadioGroup = exports.MenubarSubTrigger = exports.MenubarSubContent = exports.MenubarSub = exports.MenubarPortal = exports.MenubarGroup = exports.MenubarSeparator = exports.MenubarLabel = exports.MenubarRadioItem = exports.MenubarCheckboxItem = exports.MenubarItem = exports.MenubarContent = exports.MenubarTrigger = void 0;
|
|
38
|
+
exports.Menubar = Menubar;
|
|
39
|
+
exports.MenubarMenu = MenubarMenu;
|
|
40
|
+
exports.MenubarShortcut = MenubarShortcut;
|
|
41
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
42
|
+
/**
|
|
43
|
+
* Menubar — a persistent row of pull-down menus, the kind a desktop app keeps
|
|
44
|
+
* across the top of its window (File, Edit, View, ...).
|
|
45
|
+
*
|
|
46
|
+
* Each `MenubarMenu` is its own `@hanzo/gui` `Menu`, so a single trigger click
|
|
47
|
+
* opens a real menu with the full compound surface (items, checkbox items, a
|
|
48
|
+
* radio group, separators, a label, a submenu) and every a11y/dismiss/typeahead
|
|
49
|
+
* behaviour that `Menu` already has. What THIS file adds on top, because a row
|
|
50
|
+
* of independent menus is not yet a menubar, is the coordination between them:
|
|
51
|
+
* one open menu at a time, hovering a sibling trigger while a menu is open
|
|
52
|
+
* switches to it instead of requiring a second click, and the arrow keys rove
|
|
53
|
+
* focus across the triggers (Home/End jump to the first/last). That state lives
|
|
54
|
+
* in one root context, read by `MenubarTrigger` and `MenubarMenu` — neither
|
|
55
|
+
* hand-rolls it a second time.
|
|
56
|
+
*
|
|
57
|
+
* The rows, checkbox rows, radio rows, label, separator and submenu below are
|
|
58
|
+
* the same 32px-row, 8px-gutter, 44px-tap design as `dropdown-menu.tsx` and
|
|
59
|
+
* `context-menu.tsx` — one menu design, not three. `MenubarContent` mounts its
|
|
60
|
+
* own `Menu.Portal` and re-applies the trigger's resolved theme inside it via
|
|
61
|
+
* `PortalTheme` (gui portals re-root the subtree, so React theme context does
|
|
62
|
+
* not otherwise flow there).
|
|
63
|
+
*
|
|
64
|
+
* Cross-platform: gui style props only — no Tailwind class strings, no Radix,
|
|
65
|
+
* no DOM APIs beyond the `data-slot` markers every gui backend component uses
|
|
66
|
+
* to publish its parts for CSS and tests.
|
|
67
|
+
*/
|
|
68
|
+
const React = __importStar(require("react"));
|
|
69
|
+
const gui_1 = require("@hanzo/gui");
|
|
70
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
71
|
+
const gesture_1 = require("./gesture.cjs");
|
|
72
|
+
const ink_1 = require("./ink.cjs");
|
|
73
|
+
const slot_1 = require("./slot.cjs");
|
|
74
|
+
const portal_theme_1 = require("../../product/menu/portal-theme.cjs");
|
|
75
|
+
// ── Geometry — the one menu design, restated (module-private in the siblings) ──
|
|
76
|
+
const ROW_H = 32;
|
|
77
|
+
const TAP_MIN = 44;
|
|
78
|
+
const ROW_PX = 8;
|
|
79
|
+
const MIN_W = 192;
|
|
80
|
+
const INSET_PL = 32;
|
|
81
|
+
const INDICATOR_SLOT = 14;
|
|
82
|
+
const ICON = 16;
|
|
83
|
+
const BAR_H = 40;
|
|
84
|
+
const panel = {
|
|
85
|
+
bg: '$panel',
|
|
86
|
+
borderColor: '$borderColor',
|
|
87
|
+
borderWidth: 1,
|
|
88
|
+
rounded: '$4',
|
|
89
|
+
p: 4,
|
|
90
|
+
minW: MIN_W,
|
|
91
|
+
overflow: 'hidden',
|
|
92
|
+
shadowColor: 'rgba(0,0,0,0.45)',
|
|
93
|
+
shadowRadius: 20,
|
|
94
|
+
shadowOffset: { width: 0, height: 10 },
|
|
95
|
+
};
|
|
96
|
+
const row = {
|
|
97
|
+
items: 'center',
|
|
98
|
+
gap: ROW_PX,
|
|
99
|
+
px: ROW_PX,
|
|
100
|
+
minH: ROW_H,
|
|
101
|
+
rounded: '$3',
|
|
102
|
+
select: 'none',
|
|
103
|
+
cursor: 'pointer',
|
|
104
|
+
...(0, gesture_1.touch)(ROW_H, TAP_MIN, 'y'),
|
|
105
|
+
hoverStyle: { bg: '$raised' },
|
|
106
|
+
focusStyle: { bg: '$raised' },
|
|
107
|
+
pressStyle: { bg: '$rim' },
|
|
108
|
+
};
|
|
109
|
+
/** Row text style — free-form children go through `ink()` so a bare string renders on native. */
|
|
110
|
+
const label = { size: '$2', color: '$ink' };
|
|
111
|
+
/** Trigger text style — same type scale, medium weight to read as a menu title. */
|
|
112
|
+
const triggerLabel = { size: '$2', color: '$ink', fontWeight: '500' };
|
|
113
|
+
/** Left indicator well shared by checkbox + radio rows. */
|
|
114
|
+
const Indicator = ({ children }) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { position: "absolute", l: ROW_PX, width: INDICATOR_SLOT, height: INDICATOR_SLOT, items: "center", justify: "center", pointerEvents: "none", children: (0, jsx_runtime_1.jsx)(gui_1.Menu.ItemIndicator, { children: children }) }));
|
|
115
|
+
const MenubarContext = /* @__PURE__ */ React.createContext(null);
|
|
116
|
+
/** Which menu a `MenubarMenu` is, read by its `MenubarTrigger`. */
|
|
117
|
+
const MenubarMenuIdContext = /* @__PURE__ */ React.createContext(null);
|
|
118
|
+
// gui puts popper geometry (`offset`, `placement`) on the `Menu` ROOT, while the
|
|
119
|
+
// compound API puts `sideOffset`/`align` on `Content` — one value, one owner:
|
|
120
|
+
// the root holds it, Content publishes into it via these two contexts, freshly
|
|
121
|
+
// scoped per `MenubarMenu` instance. Same split as `dropdown-menu.tsx`.
|
|
122
|
+
const OffsetContext = /* @__PURE__ */ React.createContext(null);
|
|
123
|
+
const PlacementContext = /* @__PURE__ */ React.createContext(null);
|
|
124
|
+
const DEFAULT_OFFSET = 8;
|
|
125
|
+
function Menubar({ value, defaultValue, onValueChange, children, ...props }) {
|
|
126
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultValue);
|
|
127
|
+
const active = value !== undefined ? value : uncontrolled;
|
|
128
|
+
const setValue = React.useCallback((next) => {
|
|
129
|
+
if (value === undefined)
|
|
130
|
+
setUncontrolled(next);
|
|
131
|
+
onValueChange?.(next);
|
|
132
|
+
}, [value, onValueChange]);
|
|
133
|
+
/** Arrow/Home/End rove the triggers; a live menu follows focus onto the next one. */
|
|
134
|
+
const onKeyDown = (event) => {
|
|
135
|
+
if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key))
|
|
136
|
+
return;
|
|
137
|
+
const root = event.currentTarget;
|
|
138
|
+
const triggers = [...root.querySelectorAll('[data-slot="menubar-trigger"]')];
|
|
139
|
+
const at = triggers.indexOf(document.activeElement);
|
|
140
|
+
if (at === -1)
|
|
141
|
+
return;
|
|
142
|
+
event.preventDefault();
|
|
143
|
+
const next = event.key === 'Home'
|
|
144
|
+
? 0
|
|
145
|
+
: event.key === 'End'
|
|
146
|
+
? triggers.length - 1
|
|
147
|
+
: event.key === 'ArrowRight'
|
|
148
|
+
? (at + 1) % triggers.length
|
|
149
|
+
: (at - 1 + triggers.length) % triggers.length;
|
|
150
|
+
triggers[next]?.focus();
|
|
151
|
+
if (active !== undefined)
|
|
152
|
+
setValue(triggers[next]?.dataset.menubarValue);
|
|
153
|
+
};
|
|
154
|
+
return ((0, jsx_runtime_1.jsx)(MenubarContext.Provider, { value: { value: active, setValue }, children: (0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('menubar'), role: "menubar", items: "center", gap: 4, p: 4, minH: BAR_H, rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$background", onKeyDown: onKeyDown, ...props, children: children }) }));
|
|
155
|
+
}
|
|
156
|
+
function MenubarMenu({ value, children, ...props }) {
|
|
157
|
+
const root = React.useContext(MenubarContext);
|
|
158
|
+
const auto = React.useId();
|
|
159
|
+
const id = value ?? auto;
|
|
160
|
+
const [offset, setOffset] = React.useState(DEFAULT_OFFSET);
|
|
161
|
+
const [placement, setPlacement] = React.useState(undefined);
|
|
162
|
+
return ((0, jsx_runtime_1.jsx)(MenubarMenuIdContext.Provider, { value: id, children: (0, jsx_runtime_1.jsx)(OffsetContext.Provider, { value: setOffset, children: (0, jsx_runtime_1.jsx)(PlacementContext.Provider, { value: setPlacement, children: (0, jsx_runtime_1.jsx)(gui_1.Menu, { open: root ? root.value === id : undefined, onOpenChange: (open) => root?.setValue(open ? id : undefined), offset: offset, ...(placement ? { placement } : null), ...props, children: children }) }) }) }));
|
|
163
|
+
}
|
|
164
|
+
const MenubarTrigger = /* @__PURE__ */ React.forwardRef(function MenubarTrigger({ children, onMouseEnter, ...props }, ref) {
|
|
165
|
+
const root = React.useContext(MenubarContext);
|
|
166
|
+
const id = React.useContext(MenubarMenuIdContext);
|
|
167
|
+
const open = root != null && id != null && root.value === id;
|
|
168
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Trigger, { ref: ref, ...(0, slot_1.slot)('menubar-trigger'), "data-menubar-value": id ?? undefined, "data-state": open ? 'open' : 'closed', tabIndex: 0, items: "center", select: "none", cursor: "pointer", px: 12, minH: ROW_H, rounded: "$3", bg: open ? '$raised' : 'transparent', hoverStyle: { bg: '$raised' }, focusStyle: { bg: '$raised' }, ...(0, gesture_1.touch)(ROW_H, TAP_MIN, 'y'), onMouseEnter: (event) => {
|
|
169
|
+
if (root?.value !== undefined && id != null)
|
|
170
|
+
root.setValue(id);
|
|
171
|
+
onMouseEnter?.(event);
|
|
172
|
+
}, ...props, children: (0, ink_1.ink)(children, undefined, triggerLabel) }));
|
|
173
|
+
});
|
|
174
|
+
exports.MenubarTrigger = MenubarTrigger;
|
|
175
|
+
/** `align`, as the suffix of the floating-ui placement string the root's `Menu` reads. */
|
|
176
|
+
const placementFor = (align) => align && align !== 'center' ? `bottom-${align}` : 'bottom';
|
|
177
|
+
const MenubarContent = /* @__PURE__ */ React.forwardRef(function MenubarContent({ sideOffset = DEFAULT_OFFSET, align = 'start', children, ...props }, ref) {
|
|
178
|
+
const themeName = (0, portal_theme_1.useThemeName)();
|
|
179
|
+
const setOffset = React.useContext(OffsetContext);
|
|
180
|
+
const setPlacement = React.useContext(PlacementContext);
|
|
181
|
+
React.useEffect(() => setOffset?.(sideOffset), [setOffset, sideOffset]);
|
|
182
|
+
React.useEffect(() => setPlacement?.(placementFor(align)), [setPlacement, align]);
|
|
183
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Portal, { children: (0, jsx_runtime_1.jsx)(portal_theme_1.PortalTheme, { name: themeName, children: (0, jsx_runtime_1.jsx)(gui_1.Menu.Content, { ref: ref, ...(0, slot_1.slot)('menubar-content'), ...panel, ...props, children: children }) }) }));
|
|
184
|
+
});
|
|
185
|
+
exports.MenubarContent = MenubarContent;
|
|
186
|
+
const MenubarSubContent = /* @__PURE__ */ React.forwardRef(function MenubarSubContent(props, ref) {
|
|
187
|
+
return (0, jsx_runtime_1.jsx)(gui_1.Menu.SubContent, { ref: ref, ...(0, slot_1.slot)('menubar-sub-content'), ...panel, ...props });
|
|
188
|
+
});
|
|
189
|
+
exports.MenubarSubContent = MenubarSubContent;
|
|
190
|
+
const MenubarItem = /* @__PURE__ */ React.forwardRef(function MenubarItem({ inset, variant = 'default', disabled, children, ...props }, ref) {
|
|
191
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Item, { ref: ref, ...(0, slot_1.slot)('menubar-item'), "data-inset": inset, "data-variant": variant, disabled: disabled, ...row, pl: inset ? INSET_PL : ROW_PX, theme: variant === 'destructive' ? 'red' : undefined, opacity: disabled ? 0.5 : 1, cursor: disabled ? 'default' : 'pointer', ...props, children: (0, ink_1.ink)(children, undefined, label) }));
|
|
192
|
+
});
|
|
193
|
+
exports.MenubarItem = MenubarItem;
|
|
194
|
+
const MenubarCheckboxItem = /* @__PURE__ */ React.forwardRef(function MenubarCheckboxItem({ children, checked, ...props }, ref) {
|
|
195
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.Menu.CheckboxItem, { ref: ref, ...(0, slot_1.slot)('menubar-checkbox-item'), checked: checked, ...row, pl: INSET_PL, ...props, children: [(0, jsx_runtime_1.jsx)(Indicator, { children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: ICON }) }), (0, ink_1.ink)(children, undefined, label)] }));
|
|
196
|
+
});
|
|
197
|
+
exports.MenubarCheckboxItem = MenubarCheckboxItem;
|
|
198
|
+
const MenubarRadioItem = /* @__PURE__ */ React.forwardRef(function MenubarRadioItem({ children, value, ...props }, ref) {
|
|
199
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.Menu.RadioItem, { ref: ref, ...(0, slot_1.slot)('menubar-radio-item'), value: value, ...row, pl: INSET_PL, ...props, children: [(0, jsx_runtime_1.jsx)(Indicator, { children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Circle, { size: 8, fill: "currentColor" }) }), (0, ink_1.ink)(children, undefined, label)] }));
|
|
200
|
+
});
|
|
201
|
+
exports.MenubarRadioItem = MenubarRadioItem;
|
|
202
|
+
const MenubarSubTrigger = /* @__PURE__ */ React.forwardRef(function MenubarSubTrigger({ inset, children, ...props }, ref) {
|
|
203
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.Menu.SubTrigger, { ref: ref, ...(0, slot_1.slot)('menubar-sub-trigger'), "data-inset": inset, ...row, pl: inset ? INSET_PL : ROW_PX, ...props, children: [(0, ink_1.ink)(children, undefined, label), (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronRight, { size: ICON, ml: "auto", opacity: 0.6 })] }));
|
|
204
|
+
});
|
|
205
|
+
exports.MenubarSubTrigger = MenubarSubTrigger;
|
|
206
|
+
// ── Static rows ─────────────────────────────────────────────────────────────────
|
|
207
|
+
const MenubarLabel = /* @__PURE__ */ React.forwardRef(function MenubarLabel({ inset, ...props }, ref) {
|
|
208
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Label, { ref: ref, ...(0, slot_1.slot)('menubar-label'), "data-inset": inset, px: ROW_PX, py: 4, pl: inset ? INSET_PL : ROW_PX, fontSize: "$2", fontWeight: "500", color: "$ink", select: "none", ...props }));
|
|
209
|
+
});
|
|
210
|
+
exports.MenubarLabel = MenubarLabel;
|
|
211
|
+
const MenubarSeparator = /* @__PURE__ */ React.forwardRef(function MenubarSeparator(props, ref) {
|
|
212
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Separator, { ref: ref, ...(0, slot_1.slot)('menubar-separator'), height: 1, bg: "$borderColor", mx: 4, my: 4, ...props }));
|
|
213
|
+
});
|
|
214
|
+
exports.MenubarSeparator = MenubarSeparator;
|
|
215
|
+
/** Right-aligned shortcut hint. gui `Text`, not a raw `<span>`, so it renders on native. */
|
|
216
|
+
function MenubarShortcut(props) {
|
|
217
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.Text, { ...(0, slot_1.slot)('menubar-shortcut'), ml: "auto", fontSize: "$1", letterSpacing: 1, color: "$quiet", ...props }));
|
|
218
|
+
}
|
|
219
|
+
// ── Passthroughs — the gui part already IS the part ─────────────────────────────
|
|
220
|
+
const MenubarGroup = gui_1.Menu.Group;
|
|
221
|
+
exports.MenubarGroup = MenubarGroup;
|
|
222
|
+
const MenubarPortal = gui_1.Menu.Portal;
|
|
223
|
+
exports.MenubarPortal = MenubarPortal;
|
|
224
|
+
const MenubarSub = gui_1.Menu.Sub;
|
|
225
|
+
exports.MenubarSub = MenubarSub;
|
|
226
|
+
const MenubarRadioGroup = gui_1.Menu.RadioGroup;
|
|
227
|
+
exports.MenubarRadioGroup = MenubarRadioGroup;
|