@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,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* MiniCalendar — a single compact month, framed, for picking one day.
|
|
5
|
+
*
|
|
6
|
+
* A thin shell around `Calendar` (`mode="single"`, one month, no outside days):
|
|
7
|
+
* the month arithmetic, the day grid, and the keyboard already live there, so
|
|
8
|
+
* this only fixes the shape a small inline picker needs — a 256px bordered
|
|
9
|
+
* frame — and narrows the props to the one date a caller actually gets back.
|
|
10
|
+
* `month`/`onMonthChange` pass straight through for a caller that pages the
|
|
11
|
+
* view without changing the pick.
|
|
12
|
+
*/
|
|
13
|
+
import { YStack } from '@hanzo/gui';
|
|
14
|
+
import { sx } from '../../sx.js';
|
|
15
|
+
import { Calendar } from './calendar.js';
|
|
16
|
+
import { slot } from './slot.js';
|
|
17
|
+
function MiniCalendar({ className, selected, onSelect, month, onMonthChange, ...props }) {
|
|
18
|
+
return (_jsx(YStack, { ...slot('mini-calendar'), width: 256, borderWidth: 1, borderColor: "$borderColor", rounded: "$4", ...sx(className), ...props, children: _jsx(Calendar, { mode: "single", showOutsideDays: false, selected: selected,
|
|
19
|
+
// A pick always hands back a day; re-pressing the selected day is a
|
|
20
|
+
// no-op rather than the full Calendar's clear-on-repeat.
|
|
21
|
+
onSelect: (date) => date && onSelect?.(date), month: month, onMonthChange: onMonthChange }) }));
|
|
22
|
+
}
|
|
23
|
+
export { MiniCalendar };
|
|
24
|
+
//# sourceMappingURL=mini-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mini-calendar.js","sourceRoot":"","sources":["../../../src/backends/gui/mini-calendar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAoB,MAAM,YAAY,CAAA;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAW7B,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK,EAAqB;IACxG,OAAO,CACL,KAAC,MAAM,OACD,IAAI,CAAC,eAAe,CAAC,EACzB,KAAK,EAAE,GAAG,EACV,WAAW,EAAE,CAAC,EACd,WAAW,EAAC,cAAc,EAC1B,OAAO,EAAC,IAAI,KACR,EAAE,CAAC,SAAS,CAAC,KACb,KAAK,YAET,KAAC,QAAQ,IACP,IAAI,EAAC,QAAQ,EACb,eAAe,EAAE,KAAK,EACtB,QAAQ,EAAE,QAAQ;YAClB,oEAAoE;YACpE,yDAAyD;YACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,IAAI,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,GAC5B,GACK,CACV,CAAA;AACH,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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.MinimalTiptap = void 0;
|
|
38
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
+
/**
|
|
40
|
+
* MinimalTiptap — a multiline text field for prose content.
|
|
41
|
+
*
|
|
42
|
+
* The field composes the existing `Textarea`, which already carries the
|
|
43
|
+
* growing height, the token border and radius, and the invalid-state edge —
|
|
44
|
+
* a second field re-declaring that box would be the same control drifting in
|
|
45
|
+
* two files. What this layer adds is the API a prose field is written
|
|
46
|
+
* against: a string `value` and an `onChange(value)` callback, rather than
|
|
47
|
+
* gui's own `onChangeText`, and a 200px floor so a block of prose opens tall
|
|
48
|
+
* rather than at the three-row default a short caption uses.
|
|
49
|
+
*/
|
|
50
|
+
const React = __importStar(require("react"));
|
|
51
|
+
const textarea_1 = require("./textarea.cjs");
|
|
52
|
+
const MIN_HEIGHT = 200;
|
|
53
|
+
const MinimalTiptap = /* @__PURE__ */ React.forwardRef(function MinimalTiptap({ value, onChange, minH, ...props }, ref) {
|
|
54
|
+
return ((0, jsx_runtime_1.jsx)(textarea_1.Textarea, { ref: ref, "data-slot": "minimal-tiptap", value: value, onChangeText: onChange, minH: minH ?? MIN_HEIGHT, ...props }));
|
|
55
|
+
});
|
|
56
|
+
exports.MinimalTiptap = MinimalTiptap;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MinimalTiptap — a multiline text field for prose content.
|
|
3
|
+
*
|
|
4
|
+
* The field composes the existing `Textarea`, which already carries the
|
|
5
|
+
* growing height, the token border and radius, and the invalid-state edge —
|
|
6
|
+
* a second field re-declaring that box would be the same control drifting in
|
|
7
|
+
* two files. What this layer adds is the API a prose field is written
|
|
8
|
+
* against: a string `value` and an `onChange(value)` callback, rather than
|
|
9
|
+
* gui's own `onChangeText`, and a 200px floor so a block of prose opens tall
|
|
10
|
+
* rather than at the three-row default a short caption uses.
|
|
11
|
+
*/
|
|
12
|
+
import * as React from 'react';
|
|
13
|
+
import { Textarea } from './textarea.js';
|
|
14
|
+
export type MinimalTiptapProps = Omit<React.ComponentProps<typeof Textarea>, 'onChange' | 'onChangeText' | 'value'> & {
|
|
15
|
+
value?: string;
|
|
16
|
+
onChange?: (value: string) => void;
|
|
17
|
+
};
|
|
18
|
+
declare const MinimalTiptap: React.ForwardRefExoticComponent<Omit<MinimalTiptapProps, "ref"> & React.RefAttributes<HTMLTextAreaElement>>;
|
|
19
|
+
export { MinimalTiptap };
|
|
20
|
+
//# sourceMappingURL=minimal-tiptap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimal-tiptap.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/minimal-tiptap.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EACrC,UAAU,GAAG,cAAc,GAAG,OAAO,CACtC,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC,CAAA;AAID,QAAA,MAAM,aAAa,6GAalB,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* MinimalTiptap — a multiline text field for prose content.
|
|
5
|
+
*
|
|
6
|
+
* The field composes the existing `Textarea`, which already carries the
|
|
7
|
+
* growing height, the token border and radius, and the invalid-state edge —
|
|
8
|
+
* a second field re-declaring that box would be the same control drifting in
|
|
9
|
+
* two files. What this layer adds is the API a prose field is written
|
|
10
|
+
* against: a string `value` and an `onChange(value)` callback, rather than
|
|
11
|
+
* gui's own `onChangeText`, and a 200px floor so a block of prose opens tall
|
|
12
|
+
* rather than at the three-row default a short caption uses.
|
|
13
|
+
*/
|
|
14
|
+
import * as React from 'react';
|
|
15
|
+
import { Textarea } from './textarea.js';
|
|
16
|
+
const MIN_HEIGHT = 200;
|
|
17
|
+
const MinimalTiptap = /* @__PURE__ */ React.forwardRef(function MinimalTiptap({ value, onChange, minH, ...props }, ref) {
|
|
18
|
+
return (_jsx(Textarea, { ref: ref, "data-slot": "minimal-tiptap", value: value, onChangeText: onChange, minH: minH ?? MIN_HEIGHT, ...props }));
|
|
19
|
+
});
|
|
20
|
+
export { MinimalTiptap };
|
|
21
|
+
//# sourceMappingURL=minimal-tiptap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimal-tiptap.js","sourceRoot":"","sources":["../../../src/backends/gui/minimal-tiptap.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;GAUG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAUrC,MAAM,UAAU,GAAG,GAAG,CAAA;AAEtB,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CACpD,SAAS,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAC7D,OAAO,CACL,KAAC,QAAQ,IACP,GAAG,EAAE,GAAG,eACE,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,QAAQ,EACtB,IAAI,EAAE,IAAI,IAAI,UAAU,KACpB,KAAK,GACT,CACH,CAAA;AACH,CAAC,CACF,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
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.MotionHighlight = void 0;
|
|
38
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
+
/**
|
|
40
|
+
* MotionHighlight — a soft radial glow that follows the pointer across its
|
|
41
|
+
* children, the way a flashlight passed behind glass would.
|
|
42
|
+
*
|
|
43
|
+
* The frame owns pointer tracking, a single `YStack` positions the glow at
|
|
44
|
+
* the last-seen coordinate with a CSS transform, and children stack above it
|
|
45
|
+
* at a higher `z`. Fired only on web, where a pointer position exists at
|
|
46
|
+
* all — native has no hover concept, so there the glow never mounts and
|
|
47
|
+
* children render plainly.
|
|
48
|
+
*/
|
|
49
|
+
const gui_1 = require("@hanzo/gui");
|
|
50
|
+
const React = __importStar(require("react"));
|
|
51
|
+
const slot_1 = require("./slot.cjs");
|
|
52
|
+
const Glow = ({ x, y, size, color }) => ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('motion-highlight-glow'), style: {
|
|
53
|
+
position: 'absolute',
|
|
54
|
+
left: 0,
|
|
55
|
+
top: 0,
|
|
56
|
+
width: size,
|
|
57
|
+
height: size,
|
|
58
|
+
borderRadius: '9999px',
|
|
59
|
+
background: color,
|
|
60
|
+
filter: 'blur(24px)',
|
|
61
|
+
transform: `translate(${x - size / 2}px, ${y - size / 2}px)`,
|
|
62
|
+
pointerEvents: 'none',
|
|
63
|
+
zIndex: 0,
|
|
64
|
+
} }));
|
|
65
|
+
exports.MotionHighlight = React.forwardRef(({ children, size = 128, color = 'rgba(120,120,255,0.15)', style, onMouseMove, onMouseEnter, onMouseLeave, ...props }, ref) => {
|
|
66
|
+
const [pos, setPos] = React.useState({ x: 0, y: 0 });
|
|
67
|
+
const [hovered, setHovered] = React.useState(false);
|
|
68
|
+
const handleMove = (e) => {
|
|
69
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
70
|
+
setPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });
|
|
71
|
+
onMouseMove?.(e);
|
|
72
|
+
};
|
|
73
|
+
const handleEnter = (e) => {
|
|
74
|
+
setHovered(true);
|
|
75
|
+
onMouseEnter?.(e);
|
|
76
|
+
};
|
|
77
|
+
const handleLeave = (e) => {
|
|
78
|
+
setHovered(false);
|
|
79
|
+
onMouseLeave?.(e);
|
|
80
|
+
};
|
|
81
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ref: ref, ...(0, slot_1.slot)('motion-highlight'), position: "relative", overflow: "hidden", onMouseMove: gui_1.isWeb ? handleMove : undefined, onMouseEnter: gui_1.isWeb ? handleEnter : undefined, onMouseLeave: gui_1.isWeb ? handleLeave : undefined, style: style, ...props, children: [gui_1.isWeb && hovered && (0, jsx_runtime_1.jsx)(Glow, { x: pos.x, y: pos.y, size: size, color: color }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('motion-highlight-content'), style: { position: 'relative', zIndex: 1 }, children: children })] }));
|
|
82
|
+
});
|
|
83
|
+
exports.MotionHighlight.displayName = 'MotionHighlight';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MotionHighlight — a soft radial glow that follows the pointer across its
|
|
3
|
+
* children, the way a flashlight passed behind glass would.
|
|
4
|
+
*
|
|
5
|
+
* The frame owns pointer tracking, a single `YStack` positions the glow at
|
|
6
|
+
* the last-seen coordinate with a CSS transform, and children stack above it
|
|
7
|
+
* at a higher `z`. Fired only on web, where a pointer position exists at
|
|
8
|
+
* all — native has no hover concept, so there the glow never mounts and
|
|
9
|
+
* children render plainly.
|
|
10
|
+
*/
|
|
11
|
+
import { type GuiElement } from '@hanzo/gui';
|
|
12
|
+
import * as React from 'react';
|
|
13
|
+
export type MotionHighlightProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
/** Diameter of the glow, in px. */
|
|
16
|
+
size?: number;
|
|
17
|
+
/** Glow color; any CSS color, including a token's resolved value. */
|
|
18
|
+
color?: string;
|
|
19
|
+
};
|
|
20
|
+
export declare const MotionHighlight: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
/** Diameter of the glow, in px. */
|
|
23
|
+
size?: number;
|
|
24
|
+
/** Glow color; any CSS color, including a token's resolved value. */
|
|
25
|
+
color?: string;
|
|
26
|
+
} & React.RefAttributes<GuiElement>>;
|
|
27
|
+
//# sourceMappingURL=motion-highlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-highlight.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/motion-highlight.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IACxE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAqBD,eAAO,MAAM,eAAe;cA1BhB,KAAK,CAAC,SAAS;IACzB,mCAAmC;WAC5B,MAAM;IACb,qEAAqE;YAC7D,MAAM;oCA4Df,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* MotionHighlight — a soft radial glow that follows the pointer across its
|
|
5
|
+
* children, the way a flashlight passed behind glass would.
|
|
6
|
+
*
|
|
7
|
+
* The frame owns pointer tracking, a single `YStack` positions the glow at
|
|
8
|
+
* the last-seen coordinate with a CSS transform, and children stack above it
|
|
9
|
+
* at a higher `z`. Fired only on web, where a pointer position exists at
|
|
10
|
+
* all — native has no hover concept, so there the glow never mounts and
|
|
11
|
+
* children render plainly.
|
|
12
|
+
*/
|
|
13
|
+
import { YStack, isWeb } from '@hanzo/gui';
|
|
14
|
+
import * as React from 'react';
|
|
15
|
+
import { slot } from './slot.js';
|
|
16
|
+
const Glow = ({ x, y, size, color }) => (_jsx(YStack, { ...slot('motion-highlight-glow'), style: {
|
|
17
|
+
position: 'absolute',
|
|
18
|
+
left: 0,
|
|
19
|
+
top: 0,
|
|
20
|
+
width: size,
|
|
21
|
+
height: size,
|
|
22
|
+
borderRadius: '9999px',
|
|
23
|
+
background: color,
|
|
24
|
+
filter: 'blur(24px)',
|
|
25
|
+
transform: `translate(${x - size / 2}px, ${y - size / 2}px)`,
|
|
26
|
+
pointerEvents: 'none',
|
|
27
|
+
zIndex: 0,
|
|
28
|
+
} }));
|
|
29
|
+
export const MotionHighlight = React.forwardRef(({ children, size = 128, color = 'rgba(120,120,255,0.15)', style, onMouseMove, onMouseEnter, onMouseLeave, ...props }, ref) => {
|
|
30
|
+
const [pos, setPos] = React.useState({ x: 0, y: 0 });
|
|
31
|
+
const [hovered, setHovered] = React.useState(false);
|
|
32
|
+
const handleMove = (e) => {
|
|
33
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
34
|
+
setPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });
|
|
35
|
+
onMouseMove?.(e);
|
|
36
|
+
};
|
|
37
|
+
const handleEnter = (e) => {
|
|
38
|
+
setHovered(true);
|
|
39
|
+
onMouseEnter?.(e);
|
|
40
|
+
};
|
|
41
|
+
const handleLeave = (e) => {
|
|
42
|
+
setHovered(false);
|
|
43
|
+
onMouseLeave?.(e);
|
|
44
|
+
};
|
|
45
|
+
return (_jsxs(YStack, { ref: ref, ...slot('motion-highlight'), position: "relative", overflow: "hidden", onMouseMove: isWeb ? handleMove : undefined, onMouseEnter: isWeb ? handleEnter : undefined, onMouseLeave: isWeb ? handleLeave : undefined, style: style, ...props, children: [isWeb && hovered && _jsx(Glow, { x: pos.x, y: pos.y, size: size, color: color }), _jsx(YStack, { ...slot('motion-highlight-content'), style: { position: 'relative', zIndex: 1 }, children: children })] }));
|
|
46
|
+
});
|
|
47
|
+
MotionHighlight.displayName = 'MotionHighlight';
|
|
48
|
+
//# sourceMappingURL=motion-highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-highlight.js","sourceRoot":"","sources":["../../../src/backends/gui/motion-highlight.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.NavigationBar = NavigationBar;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* NavigationBar — the top bar of a page, in the shapes real products use.
|
|
8
|
+
*
|
|
9
|
+
* One frame (`<nav>`, a hairline bottom border, a fixed row height) and one
|
|
10
|
+
* `variant` that picks what fills it: a logo with links, links either side of
|
|
11
|
+
* a centred logo, a breadcrumb trail, a row of icon links, a dashboard title
|
|
12
|
+
* with search/alerts/avatar, a storefront with categories and a cart count, a
|
|
13
|
+
* document header with a stack of collaborator avatars, a call header with
|
|
14
|
+
* phone/video/message actions, or a switcher button that opens a menu of
|
|
15
|
+
* options. Every variant is the same frame wearing different content, so a
|
|
16
|
+
* caller changing `variant` keeps the same height, border and props shape.
|
|
17
|
+
*/
|
|
18
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
19
|
+
const gui_1 = require("@hanzo/gui");
|
|
20
|
+
const avatar_1 = require("./avatar.cjs");
|
|
21
|
+
const badge_1 = require("./badge.cjs");
|
|
22
|
+
const button_1 = require("./button.cjs");
|
|
23
|
+
const dropdown_menu_1 = require("./dropdown-menu.cjs");
|
|
24
|
+
const ink_1 = require("./ink.cjs");
|
|
25
|
+
const HEIGHT = 64;
|
|
26
|
+
const BREADCRUMB_HEIGHT = 48;
|
|
27
|
+
/** Retag helpers — the ONE way this file swaps the host element under a gui primitive. */
|
|
28
|
+
const Nav = (0, gui_1.styled)(gui_1.XStack, { name: 'NavigationBar', render: 'nav' });
|
|
29
|
+
const List = (0, gui_1.styled)(gui_1.XStack, { name: 'NavigationBarBreadcrumbList', render: 'ol' });
|
|
30
|
+
const ListItem = (0, gui_1.styled)(gui_1.XStack, { name: 'NavigationBarBreadcrumbItem', render: 'li' });
|
|
31
|
+
const Anchor = (0, gui_1.styled)(gui_1.SizableText, { name: 'NavigationBarLink', render: 'a' });
|
|
32
|
+
const IconAnchor = (0, gui_1.styled)(gui_1.YStack, { name: 'NavigationBarIconLink', render: 'a' });
|
|
33
|
+
const Link = ({ item }) => item.href ? ((0, jsx_runtime_1.jsx)(Anchor, { ...{ href: item.href }, size: "$3", fontWeight: "500", color: "$ink", hoverStyle: { color: '$accentColor' }, children: item.label })) : ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$3", fontWeight: "500", color: "$quiet", "aria-current": "page", children: item.label }));
|
|
34
|
+
const Links = ({ items }) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { gap: "$5", items: "center", children: items.map((item) => ((0, jsx_runtime_1.jsx)(Link, { item: item }, item.href ?? item.label))) }));
|
|
35
|
+
const IconButton = ({ children, ...props }) => ((0, jsx_runtime_1.jsx)(button_1.Button, { variant: "ghost", size: "icon", ...props, children: children }));
|
|
36
|
+
const Avatars = ({ people, max = 3 }) => ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", children: [people.slice(0, max).map((p, i) => ((0, jsx_runtime_1.jsxs)(avatar_1.Avatar, { ml: i > 0 ? -8 : 0, borderWidth: 2, borderColor: "$background", children: [(0, jsx_runtime_1.jsx)(avatar_1.AvatarImage, { src: p.avatar }), (0, jsx_runtime_1.jsx)(avatar_1.AvatarFallback, { children: p.name.slice(0, 1) })] }, p.name + i))), people.length > max ? ((0, jsx_runtime_1.jsx)(avatar_1.Avatar, { ml: -8, borderWidth: 2, borderColor: "$background", children: (0, jsx_runtime_1.jsxs)(avatar_1.AvatarFallback, { children: ["+", people.length - max] }) })) : null] }));
|
|
37
|
+
function NavigationBar({ variant = 'simple', logo, items = [], leftItems = [], rightItems = [], title, user, collaborators = [], cartCount = 0, contactName, options = [], value, onValueChange, onSearch, onNotifications, onCall, onVideo, onMessage, children, }) {
|
|
38
|
+
const height = variant === 'breadcrumb' ? BREADCRUMB_HEIGHT : HEIGHT;
|
|
39
|
+
return ((0, jsx_runtime_1.jsx)(Nav, { "data-slot": "navigation-bar", "data-variant": variant, borderBottomWidth: 1, borderColor: "$borderColor", minH: height, px: "$5", items: "center", justify: "space-between", gap: "$4", children: variant === 'breadcrumb' ? ((0, jsx_runtime_1.jsx)(List, { items: "center", gap: "$2", flex: 1, children: items.map((item, i) => ((0, jsx_runtime_1.jsxs)(ListItem, { items: "center", gap: "$2", children: [i > 0 ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronRight, { size: 14, opacity: 0.6 }) : null, (0, jsx_runtime_1.jsx)(Link, { item: item })] }, item.href ?? item.label))) })) : variant === 'icon' ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1, items: "center", justify: "center", gap: "$6", children: items.map((item) => ((0, jsx_runtime_1.jsxs)(IconAnchor, { ...{ href: item.href, title: item.label }, items: "center", gap: "$1", children: [item.icon, (0, ink_1.ink)(item.label, gui_1.SizableText, { size: '$1' })] }, item.href ?? item.label))) })) : variant === 'centered' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Links, { items: leftItems }), (0, ink_1.ink)(logo, gui_1.SizableText, { fontWeight: '700' }), (0, jsx_runtime_1.jsx)(Links, { items: rightItems })] })) : variant === 'dashboard' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, ink_1.ink)(title, gui_1.SizableText, { size: '$5', fontWeight: '600' }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$3", children: [(0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Search", onPress: onSearch, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Search, { size: 18 }) }), (0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Notifications", onPress: onNotifications, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Bell, { size: 18 }) }), user ? ((0, jsx_runtime_1.jsxs)(avatar_1.Avatar, { children: [(0, jsx_runtime_1.jsx)(avatar_1.AvatarImage, { src: user.avatar }), (0, jsx_runtime_1.jsx)(avatar_1.AvatarFallback, { children: user.name.slice(0, 1) })] })) : null] })] })) : variant === 'ecommerce' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, ink_1.ink)(logo, gui_1.SizableText, { fontWeight: '700' }), (0, jsx_runtime_1.jsx)(Links, { items: items }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", children: [(0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Search", onPress: onSearch, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Search, { size: 18 }) }), (0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Account", children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.User, { size: 18 }) }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { position: "relative", children: [(0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Cart", children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ShoppingCart, { size: 18 }) }), cartCount > 0 ? ((0, jsx_runtime_1.jsx)(badge_1.Badge, { "data-slot": "navigation-bar-cart-count", variant: "default", style: { position: 'absolute', top: -4, right: -4 }, children: cartCount })) : null] })] })] })) : variant === 'collaboration' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, ink_1.ink)(title, gui_1.SizableText, { size: '$4', fontWeight: '600' }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$3", children: [(0, jsx_runtime_1.jsx)(lucide_icons_2_1.Users, { size: 18, opacity: 0.6 }), (0, jsx_runtime_1.jsx)(Avatars, { people: collaborators })] })] })) : variant === 'communication' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, ink_1.ink)(contactName, gui_1.SizableText, { size: '$4', fontWeight: '600' }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$1", children: [(0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Call", onPress: onCall, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Phone, { size: 18 }) }), (0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Video call", onPress: onVideo, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Video, { size: 18 }) }), (0, jsx_runtime_1.jsx)(IconButton, { "aria-label": "Message", onPress: onMessage, children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.MessageSquare, { size: 18 }) })] })] })) : variant === 'switcher' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenu, { trigger: (0, jsx_runtime_1.jsxs)(button_1.Button, { variant: "outline", "data-slot": "navigation-bar-switcher-trigger", children: [options.find((o) => o.id === value)?.icon, options.find((o) => o.id === value)?.label ?? 'Select', (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronDown, { size: 14 })] }), items: options.map((o) => ({
|
|
40
|
+
key: o.id,
|
|
41
|
+
label: o.label,
|
|
42
|
+
description: o.description,
|
|
43
|
+
icon: o.icon,
|
|
44
|
+
selected: o.id === value,
|
|
45
|
+
onSelect: () => onValueChange?.(o.id),
|
|
46
|
+
})) }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { items: "center", gap: "$2", children: children })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, ink_1.ink)(logo, gui_1.SizableText, { fontWeight: '700' }), (0, jsx_runtime_1.jsx)(Links, { items: items })] })) }));
|
|
47
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type NavigationBarLink = {
|
|
3
|
+
label: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
export type NavigationBarPerson = {
|
|
8
|
+
name: string;
|
|
9
|
+
avatar?: string;
|
|
10
|
+
};
|
|
11
|
+
export type NavigationBarOption = {
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
icon?: ReactNode;
|
|
16
|
+
};
|
|
17
|
+
export type NavigationBarVariant = 'simple' | 'centered' | 'breadcrumb' | 'icon' | 'dashboard' | 'ecommerce' | 'collaboration' | 'communication' | 'switcher';
|
|
18
|
+
export type NavigationBarProps = {
|
|
19
|
+
variant?: NavigationBarVariant;
|
|
20
|
+
logo?: ReactNode;
|
|
21
|
+
/** Links for `simple`, `icon`, `ecommerce` (as categories) and `breadcrumb` (as the trail). */
|
|
22
|
+
items?: NavigationBarLink[];
|
|
23
|
+
/** `centered` only — links either side of the logo. */
|
|
24
|
+
leftItems?: NavigationBarLink[];
|
|
25
|
+
rightItems?: NavigationBarLink[];
|
|
26
|
+
/** `dashboard` / `collaboration`. */
|
|
27
|
+
title?: string;
|
|
28
|
+
/** `dashboard`. */
|
|
29
|
+
user?: NavigationBarPerson;
|
|
30
|
+
/** `collaboration`. */
|
|
31
|
+
collaborators?: NavigationBarPerson[];
|
|
32
|
+
/** `ecommerce`. */
|
|
33
|
+
cartCount?: number;
|
|
34
|
+
/** `communication`. */
|
|
35
|
+
contactName?: string;
|
|
36
|
+
/** `switcher`. */
|
|
37
|
+
options?: NavigationBarOption[];
|
|
38
|
+
value?: string;
|
|
39
|
+
onValueChange?: (id: string) => void;
|
|
40
|
+
onSearch?: () => void;
|
|
41
|
+
onNotifications?: () => void;
|
|
42
|
+
onCall?: () => void;
|
|
43
|
+
onVideo?: () => void;
|
|
44
|
+
onMessage?: () => void;
|
|
45
|
+
children?: ReactNode;
|
|
46
|
+
};
|
|
47
|
+
export declare function NavigationBar({ variant, logo, items, leftItems, rightItems, title, user, collaborators, cartCount, contactName, options, value, onValueChange, onSearch, onNotifications, onCall, onVideo, onMessage, children, }: NavigationBarProps): import("react").JSX.Element;
|
|
48
|
+
//# sourceMappingURL=navigation-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-bar.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/navigation-bar.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,MAAM,GACN,WAAW,GACX,WAAW,GACX,eAAe,GACf,eAAe,GACf,UAAU,CAAA;AAkEd,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,+FAA+F;IAC/F,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC3B,uDAAuD;IACvD,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,uBAAuB;IACvB,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACrC,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB;IAClB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAkB,EAClB,IAAI,EACJ,KAAU,EACV,SAAc,EACd,UAAe,EACf,KAAK,EACL,IAAI,EACJ,aAAkB,EAClB,SAAa,EACb,WAAW,EACX,OAAY,EACZ,KAAK,EACL,aAAa,EACb,QAAQ,EACR,eAAe,EACf,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE,kBAAkB,+BA+IpB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* NavigationBar — the top bar of a page, in the shapes real products use.
|
|
5
|
+
*
|
|
6
|
+
* One frame (`<nav>`, a hairline bottom border, a fixed row height) and one
|
|
7
|
+
* `variant` that picks what fills it: a logo with links, links either side of
|
|
8
|
+
* a centred logo, a breadcrumb trail, a row of icon links, a dashboard title
|
|
9
|
+
* with search/alerts/avatar, a storefront with categories and a cart count, a
|
|
10
|
+
* document header with a stack of collaborator avatars, a call header with
|
|
11
|
+
* phone/video/message actions, or a switcher button that opens a menu of
|
|
12
|
+
* options. Every variant is the same frame wearing different content, so a
|
|
13
|
+
* caller changing `variant` keeps the same height, border and props shape.
|
|
14
|
+
*/
|
|
15
|
+
import { ChevronRight, ChevronDown, Search, Bell, ShoppingCart, User, Users, Phone, Video, MessageSquare } from '@hanzogui/lucide-icons-2';
|
|
16
|
+
import { SizableText, XStack, YStack, styled } from '@hanzo/gui';
|
|
17
|
+
import { Avatar, AvatarFallback, AvatarImage } from './avatar.js';
|
|
18
|
+
import { Badge } from './badge.js';
|
|
19
|
+
import { Button } from './button.js';
|
|
20
|
+
import { DropdownMenu } from './dropdown-menu.js';
|
|
21
|
+
import { ink } from './ink.js';
|
|
22
|
+
const HEIGHT = 64;
|
|
23
|
+
const BREADCRUMB_HEIGHT = 48;
|
|
24
|
+
/** Retag helpers — the ONE way this file swaps the host element under a gui primitive. */
|
|
25
|
+
const Nav = styled(XStack, { name: 'NavigationBar', render: 'nav' });
|
|
26
|
+
const List = styled(XStack, { name: 'NavigationBarBreadcrumbList', render: 'ol' });
|
|
27
|
+
const ListItem = styled(XStack, { name: 'NavigationBarBreadcrumbItem', render: 'li' });
|
|
28
|
+
const Anchor = styled(SizableText, { name: 'NavigationBarLink', render: 'a' });
|
|
29
|
+
const IconAnchor = styled(YStack, { name: 'NavigationBarIconLink', render: 'a' });
|
|
30
|
+
const Link = ({ item }) => item.href ? (_jsx(Anchor, { ...{ href: item.href }, size: "$3", fontWeight: "500", color: "$ink", hoverStyle: { color: '$accentColor' }, children: item.label })) : (_jsx(SizableText, { size: "$3", fontWeight: "500", color: "$quiet", "aria-current": "page", children: item.label }));
|
|
31
|
+
const Links = ({ items }) => (_jsx(XStack, { gap: "$5", items: "center", children: items.map((item) => (_jsx(Link, { item: item }, item.href ?? item.label))) }));
|
|
32
|
+
const IconButton = ({ children, ...props }) => (_jsx(Button, { variant: "ghost", size: "icon", ...props, children: children }));
|
|
33
|
+
const Avatars = ({ people, max = 3 }) => (_jsxs(XStack, { items: "center", children: [people.slice(0, max).map((p, i) => (_jsxs(Avatar, { ml: i > 0 ? -8 : 0, borderWidth: 2, borderColor: "$background", children: [_jsx(AvatarImage, { src: p.avatar }), _jsx(AvatarFallback, { children: p.name.slice(0, 1) })] }, p.name + i))), people.length > max ? (_jsx(Avatar, { ml: -8, borderWidth: 2, borderColor: "$background", children: _jsxs(AvatarFallback, { children: ["+", people.length - max] }) })) : null] }));
|
|
34
|
+
export function NavigationBar({ variant = 'simple', logo, items = [], leftItems = [], rightItems = [], title, user, collaborators = [], cartCount = 0, contactName, options = [], value, onValueChange, onSearch, onNotifications, onCall, onVideo, onMessage, children, }) {
|
|
35
|
+
const height = variant === 'breadcrumb' ? BREADCRUMB_HEIGHT : HEIGHT;
|
|
36
|
+
return (_jsx(Nav, { "data-slot": "navigation-bar", "data-variant": variant, borderBottomWidth: 1, borderColor: "$borderColor", minH: height, px: "$5", items: "center", justify: "space-between", gap: "$4", children: variant === 'breadcrumb' ? (_jsx(List, { items: "center", gap: "$2", flex: 1, children: items.map((item, i) => (_jsxs(ListItem, { items: "center", gap: "$2", children: [i > 0 ? _jsx(ChevronRight, { size: 14, opacity: 0.6 }) : null, _jsx(Link, { item: item })] }, item.href ?? item.label))) })) : variant === 'icon' ? (_jsx(XStack, { flex: 1, items: "center", justify: "center", gap: "$6", children: items.map((item) => (_jsxs(IconAnchor, { ...{ href: item.href, title: item.label }, items: "center", gap: "$1", children: [item.icon, ink(item.label, SizableText, { size: '$1' })] }, item.href ?? item.label))) })) : variant === 'centered' ? (_jsxs(_Fragment, { children: [_jsx(Links, { items: leftItems }), ink(logo, SizableText, { fontWeight: '700' }), _jsx(Links, { items: rightItems })] })) : variant === 'dashboard' ? (_jsxs(_Fragment, { children: [ink(title, SizableText, { size: '$5', fontWeight: '600' }), _jsxs(XStack, { items: "center", gap: "$3", children: [_jsx(IconButton, { "aria-label": "Search", onPress: onSearch, children: _jsx(Search, { size: 18 }) }), _jsx(IconButton, { "aria-label": "Notifications", onPress: onNotifications, children: _jsx(Bell, { size: 18 }) }), user ? (_jsxs(Avatar, { children: [_jsx(AvatarImage, { src: user.avatar }), _jsx(AvatarFallback, { children: user.name.slice(0, 1) })] })) : null] })] })) : variant === 'ecommerce' ? (_jsxs(_Fragment, { children: [ink(logo, SizableText, { fontWeight: '700' }), _jsx(Links, { items: items }), _jsxs(XStack, { items: "center", gap: "$1", children: [_jsx(IconButton, { "aria-label": "Search", onPress: onSearch, children: _jsx(Search, { size: 18 }) }), _jsx(IconButton, { "aria-label": "Account", children: _jsx(User, { size: 18 }) }), _jsxs(XStack, { position: "relative", children: [_jsx(IconButton, { "aria-label": "Cart", children: _jsx(ShoppingCart, { size: 18 }) }), cartCount > 0 ? (_jsx(Badge, { "data-slot": "navigation-bar-cart-count", variant: "default", style: { position: 'absolute', top: -4, right: -4 }, children: cartCount })) : null] })] })] })) : variant === 'collaboration' ? (_jsxs(_Fragment, { children: [ink(title, SizableText, { size: '$4', fontWeight: '600' }), _jsxs(XStack, { items: "center", gap: "$3", children: [_jsx(Users, { size: 18, opacity: 0.6 }), _jsx(Avatars, { people: collaborators })] })] })) : variant === 'communication' ? (_jsxs(_Fragment, { children: [ink(contactName, SizableText, { size: '$4', fontWeight: '600' }), _jsxs(XStack, { items: "center", gap: "$1", children: [_jsx(IconButton, { "aria-label": "Call", onPress: onCall, children: _jsx(Phone, { size: 18 }) }), _jsx(IconButton, { "aria-label": "Video call", onPress: onVideo, children: _jsx(Video, { size: 18 }) }), _jsx(IconButton, { "aria-label": "Message", onPress: onMessage, children: _jsx(MessageSquare, { size: 18 }) })] })] })) : variant === 'switcher' ? (_jsxs(_Fragment, { children: [_jsx(DropdownMenu, { trigger: _jsxs(Button, { variant: "outline", "data-slot": "navigation-bar-switcher-trigger", children: [options.find((o) => o.id === value)?.icon, options.find((o) => o.id === value)?.label ?? 'Select', _jsx(ChevronDown, { size: 14 })] }), items: options.map((o) => ({
|
|
37
|
+
key: o.id,
|
|
38
|
+
label: o.label,
|
|
39
|
+
description: o.description,
|
|
40
|
+
icon: o.icon,
|
|
41
|
+
selected: o.id === value,
|
|
42
|
+
onSelect: () => onValueChange?.(o.id),
|
|
43
|
+
})) }), _jsx(XStack, { items: "center", gap: "$2", children: children })] })) : (_jsxs(_Fragment, { children: [ink(logo, SizableText, { fontWeight: '700' }), _jsx(Links, { items: items })] })) }));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=navigation-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-bar.js","sourceRoot":"","sources":["../../../src/backends/gui/navigation-bar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.NewsTimeline = void 0;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* NewsTimeline — a TradingView news feed, in a gui frame.
|
|
8
|
+
*
|
|
9
|
+
* The headlines are TradingView's, drawn inside TradingView's own document, so
|
|
10
|
+
* the feed is an `<iframe>` and nothing here draws a pixel of it. What this
|
|
11
|
+
* owns is the frame around it and the settings the feed opens with — which
|
|
12
|
+
* mode it filters by, which market or symbol that mode reads, the theme —
|
|
13
|
+
* written into the iframe's address the way TradingView's own embed script
|
|
14
|
+
* writes them: `/embed-widget/timeline/?locale=…#<settings as JSON>`. Nothing
|
|
15
|
+
* is fetched or injected at mount, so the markup is the same on the server and
|
|
16
|
+
* in the browser, and the frame has its height before the feed arrives.
|
|
17
|
+
*
|
|
18
|
+
* `feedMode` picks what narrows the headlines: `all_symbols` takes none of
|
|
19
|
+
* `market`/`symbol`, `market` reads `market`, and `symbol` reads `symbol`.
|
|
20
|
+
*
|
|
21
|
+
* The iframe is keyed on that address. A browser treats a `src` that differs
|
|
22
|
+
* only in its fragment as a same-document navigation and does not reload, so
|
|
23
|
+
* without the key a changed prop would leave the old feed on screen.
|
|
24
|
+
*/
|
|
25
|
+
const gui_1 = require("@hanzo/gui");
|
|
26
|
+
const slot_1 = require("./slot.cjs");
|
|
27
|
+
const EMBED = 'https://www.tradingview-widget.com/embed-widget/timeline/?locale=';
|
|
28
|
+
/** The settings TradingView reads, with the documented defaults filled in. */
|
|
29
|
+
const settings = ({ feedMode = 'all_symbols', market = 'crypto', symbol, width = '100%', height = 400, colorTheme = 'dark', isTransparent = false, }) => ({
|
|
30
|
+
displayMode: 'regular',
|
|
31
|
+
feedMode,
|
|
32
|
+
...(feedMode === 'market' ? { market } : {}),
|
|
33
|
+
...(feedMode === 'symbol' ? { symbol: symbol ?? '' } : {}),
|
|
34
|
+
colorTheme,
|
|
35
|
+
isTransparent,
|
|
36
|
+
width,
|
|
37
|
+
height,
|
|
38
|
+
});
|
|
39
|
+
const NewsTimeline = ({ feedMode, market, symbol, width, height, colorTheme, locale = 'en', isTransparent, ...props }) => {
|
|
40
|
+
const s = settings({ feedMode, market, symbol, width, height, colorTheme, isTransparent });
|
|
41
|
+
const src = `${EMBED}${locale}#${encodeURIComponent(JSON.stringify(s))}`;
|
|
42
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('news-timeline'), "data-feed-mode": s.feedMode, "data-color-theme": s.colorTheme,
|
|
43
|
+
// The documented size is TradingView's — a number or a percent string —
|
|
44
|
+
// and gui declares a narrower one; on web both reach CSS as written.
|
|
45
|
+
width: s.width, height: s.height, overflow: "hidden", position: "relative", bg: "$panel", ...props, children: gui_1.isWeb && ((0, jsx_runtime_1.jsx)("iframe", { src: src, title: "News timeline", loading: "lazy", scrolling: "no", style: { display: 'block', width: '100%', height: '100%', border: 0 } }, src)) }));
|
|
46
|
+
};
|
|
47
|
+
exports.NewsTimeline = NewsTimeline;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NewsTimeline — a TradingView news feed, in a gui frame.
|
|
3
|
+
*
|
|
4
|
+
* The headlines are TradingView's, drawn inside TradingView's own document, so
|
|
5
|
+
* the feed is an `<iframe>` and nothing here draws a pixel of it. What this
|
|
6
|
+
* owns is the frame around it and the settings the feed opens with — which
|
|
7
|
+
* mode it filters by, which market or symbol that mode reads, the theme —
|
|
8
|
+
* written into the iframe's address the way TradingView's own embed script
|
|
9
|
+
* writes them: `/embed-widget/timeline/?locale=…#<settings as JSON>`. Nothing
|
|
10
|
+
* is fetched or injected at mount, so the markup is the same on the server and
|
|
11
|
+
* in the browser, and the frame has its height before the feed arrives.
|
|
12
|
+
*
|
|
13
|
+
* `feedMode` picks what narrows the headlines: `all_symbols` takes none of
|
|
14
|
+
* `market`/`symbol`, `market` reads `market`, and `symbol` reads `symbol`.
|
|
15
|
+
*
|
|
16
|
+
* The iframe is keyed on that address. A browser treats a `src` that differs
|
|
17
|
+
* only in its fragment as a same-document navigation and does not reload, so
|
|
18
|
+
* without the key a changed prop would leave the old feed on screen.
|
|
19
|
+
*/
|
|
20
|
+
import { type YStackProps } from '@hanzo/gui';
|
|
21
|
+
export type NewsTimelineFeedMode = 'all_symbols' | 'market' | 'symbol';
|
|
22
|
+
export type NewsTimelineTheme = 'light' | 'dark';
|
|
23
|
+
export interface NewsTimelineProps extends Omit<YStackProps, 'width' | 'height' | 'colorTheme'> {
|
|
24
|
+
/** News feed filter mode. */
|
|
25
|
+
feedMode?: NewsTimelineFeedMode;
|
|
26
|
+
/** Market to display news for, read when `feedMode` is `market`. */
|
|
27
|
+
market?: string;
|
|
28
|
+
/** Specific symbol for news, read when `feedMode` is `symbol`. */
|
|
29
|
+
symbol?: string;
|
|
30
|
+
width?: string | number;
|
|
31
|
+
height?: string | number;
|
|
32
|
+
/** The feed's own palette; independent of the surrounding gui theme. */
|
|
33
|
+
colorTheme?: NewsTimelineTheme;
|
|
34
|
+
locale?: string;
|
|
35
|
+
isTransparent?: boolean;
|
|
36
|
+
}
|
|
37
|
+
declare const NewsTimeline: ({ feedMode, market, symbol, width, height, colorTheme, locale, isTransparent, ...props }: NewsTimelineProps) => import("react").JSX.Element;
|
|
38
|
+
export { NewsTimeline };
|
|
39
|
+
//# sourceMappingURL=news-timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"news-timeline.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/news-timeline.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAG5D,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEtE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAA;AAEhD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC7F,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,wEAAwE;IACxE,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAwBD,QAAA,MAAM,YAAY,6FAUf,iBAAiB,gCA6BnB,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
|