@kortix/ui 0.0.0-stage → 0.14.3
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/README.md +155 -2
- package/dist/_vendor/kortix-shared.js +341 -0
- package/dist/chat/agent-picker.d.ts +8 -0
- package/dist/chat/agent-picker.js +18 -0
- package/dist/chat/composer.d.ts +31 -0
- package/dist/chat/composer.js +114 -0
- package/dist/chat/index.d.ts +22 -0
- package/dist/chat/index.js +22 -0
- package/dist/chat/markdown.d.ts +10 -0
- package/dist/chat/markdown.js +36 -0
- package/dist/chat/message-list.d.ts +25 -0
- package/dist/chat/message-list.js +73 -0
- package/dist/chat/message-view.d.ts +17 -0
- package/dist/chat/message-view.js +86 -0
- package/dist/chat/model-picker.d.ts +10 -0
- package/dist/chat/model-picker.js +68 -0
- package/dist/chat/permission-prompt.d.ts +10 -0
- package/dist/chat/permission-prompt.js +40 -0
- package/dist/chat/question-prompt.d.ts +8 -0
- package/dist/chat/question-prompt.js +60 -0
- package/dist/chat/send-failure.d.ts +9 -0
- package/dist/chat/send-failure.js +21 -0
- package/dist/chat/session-thread.d.ts +28 -0
- package/dist/chat/session-thread.js +47 -0
- package/dist/chat/streaming-markdown.d.ts +21 -0
- package/dist/chat/streaming-markdown.js +59 -0
- package/dist/chat/tool-call.d.ts +4 -0
- package/dist/chat/tool-call.js +150 -0
- package/dist/chat/user-message-parts.d.ts +6 -0
- package/dist/chat/user-message-parts.js +11 -0
- package/dist/components/ui/accordion.d.ts +7 -0
- package/dist/components/ui/accordion.js +18 -0
- package/dist/components/ui/alert-dialog.d.ts +19 -0
- package/dist/components/ui/alert-dialog.js +48 -0
- package/dist/components/ui/alert.d.ts +13 -0
- package/dist/components/ui/alert.js +67 -0
- package/dist/components/ui/avatar.d.ts +11 -0
- package/dist/components/ui/avatar.js +23 -0
- package/dist/components/ui/back-pill.d.ts +13 -0
- package/dist/components/ui/back-pill.js +18 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.js +42 -0
- package/dist/components/ui/breadcrumb.d.ts +11 -0
- package/dist/components/ui/breadcrumb.js +28 -0
- package/dist/components/ui/bubble.d.ts +20 -0
- package/dist/components/ui/bubble.js +38 -0
- package/dist/components/ui/button-group.d.ts +9 -0
- package/dist/components/ui/button-group.js +32 -0
- package/dist/components/ui/button.d.ts +13 -0
- package/dist/components/ui/button.js +67 -0
- package/dist/components/ui/calendar.d.ts +4 -0
- package/dist/components/ui/calendar.js +39 -0
- package/dist/components/ui/card.d.ts +96 -0
- package/dist/components/ui/card.js +291 -0
- package/dist/components/ui/chain-of-thought.d.ts +75 -0
- package/dist/components/ui/chain-of-thought.js +66 -0
- package/dist/components/ui/chart.d.ts +65 -0
- package/dist/components/ui/chart.js +118 -0
- package/dist/components/ui/checkbox-group.d.ts +19 -0
- package/dist/components/ui/checkbox-group.js +41 -0
- package/dist/components/ui/checkbox.d.ts +14 -0
- package/dist/components/ui/checkbox.js +27 -0
- package/dist/components/ui/collapsible.d.ts +5 -0
- package/dist/components/ui/collapsible.js +14 -0
- package/dist/components/ui/command.d.ts +58 -0
- package/dist/components/ui/command.js +135 -0
- package/dist/components/ui/confirm-dialog.d.ts +19 -0
- package/dist/components/ui/confirm-dialog.js +30 -0
- package/dist/components/ui/context-menu.d.ts +45 -0
- package/dist/components/ui/context-menu.js +93 -0
- package/dist/components/ui/count-badge.d.ts +26 -0
- package/dist/components/ui/count-badge.js +26 -0
- package/dist/components/ui/data-grid.d.ts +24 -0
- package/dist/components/ui/data-grid.js +107 -0
- package/dist/components/ui/date-range-picker.d.ts +119 -0
- package/dist/components/ui/date-range-picker.js +190 -0
- package/dist/components/ui/definition-list.d.ts +15 -0
- package/dist/components/ui/definition-list.js +26 -0
- package/dist/components/ui/dialog.d.ts +29 -0
- package/dist/components/ui/dialog.js +52 -0
- package/dist/components/ui/disclosure.d.ts +121 -0
- package/dist/components/ui/disclosure.js +138 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-10.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-10.js +29 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-12.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-12.js +19 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-13.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-13.js +19 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-15.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-15.js +22 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-16.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-16.js +5 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-18.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-18.js +5 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-19.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-19.js +5 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-2.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-2.js +3 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-20.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-20.js +5 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-21.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-21.js +5 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-3.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-3.js +3 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-4.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-4.js +3 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-5.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-5.js +3 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-6.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-6.js +19 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-7.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-7.js +19 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-8.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-8.js +19 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-9.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-3x3-9.js +23 -0
- package/dist/components/ui/dot-matrix/dotm-circular-1.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-1.js +28 -0
- package/dist/components/ui/dot-matrix/dotm-circular-10.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-10.js +40 -0
- package/dist/components/ui/dot-matrix/dotm-circular-11.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-11.js +37 -0
- package/dist/components/ui/dot-matrix/dotm-circular-12.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-12.js +42 -0
- package/dist/components/ui/dot-matrix/dotm-circular-14.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-14.js +37 -0
- package/dist/components/ui/dot-matrix/dotm-circular-15.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-15.js +49 -0
- package/dist/components/ui/dot-matrix/dotm-circular-17.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-17.js +31 -0
- package/dist/components/ui/dot-matrix/dotm-circular-2.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-2.js +37 -0
- package/dist/components/ui/dot-matrix/dotm-circular-3.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-3.js +54 -0
- package/dist/components/ui/dot-matrix/dotm-circular-4.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-4.js +35 -0
- package/dist/components/ui/dot-matrix/dotm-circular-5.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-5.js +30 -0
- package/dist/components/ui/dot-matrix/dotm-circular-6.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-6.js +37 -0
- package/dist/components/ui/dot-matrix/dotm-circular-7.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-7.js +25 -0
- package/dist/components/ui/dot-matrix/dotm-circular-8.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-8.js +26 -0
- package/dist/components/ui/dot-matrix/dotm-circular-9.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-circular-9.js +41 -0
- package/dist/components/ui/dot-matrix/dotm-square-1.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-1.js +27 -0
- package/dist/components/ui/dot-matrix/dotm-square-10.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-10.js +27 -0
- package/dist/components/ui/dot-matrix/dotm-square-11.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-11.js +25 -0
- package/dist/components/ui/dot-matrix/dotm-square-12.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-12.js +28 -0
- package/dist/components/ui/dot-matrix/dotm-square-13.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-13.js +45 -0
- package/dist/components/ui/dot-matrix/dotm-square-14.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-14.js +38 -0
- package/dist/components/ui/dot-matrix/dotm-square-15.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-15.js +31 -0
- package/dist/components/ui/dot-matrix/dotm-square-16.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-16.js +33 -0
- package/dist/components/ui/dot-matrix/dotm-square-17.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-17.js +27 -0
- package/dist/components/ui/dot-matrix/dotm-square-18.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-18.js +29 -0
- package/dist/components/ui/dot-matrix/dotm-square-19.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-19.js +74 -0
- package/dist/components/ui/dot-matrix/dotm-square-2.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-2.js +72 -0
- package/dist/components/ui/dot-matrix/dotm-square-20.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-20.js +79 -0
- package/dist/components/ui/dot-matrix/dotm-square-3.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-3.js +23 -0
- package/dist/components/ui/dot-matrix/dotm-square-4.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-4.js +41 -0
- package/dist/components/ui/dot-matrix/dotm-square-5.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-5.js +23 -0
- package/dist/components/ui/dot-matrix/dotm-square-6.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-6.js +20 -0
- package/dist/components/ui/dot-matrix/dotm-square-7.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-7.js +43 -0
- package/dist/components/ui/dot-matrix/dotm-square-8.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-8.js +57 -0
- package/dist/components/ui/dot-matrix/dotm-square-9.d.ts +4 -0
- package/dist/components/ui/dot-matrix/dotm-square-9.js +89 -0
- package/dist/components/ui/dot-matrix/session-dot-matrix.d.ts +46 -0
- package/dist/components/ui/dot-matrix/session-dot-matrix.js +153 -0
- package/dist/components/ui/drawer.d.ts +15 -0
- package/dist/components/ui/drawer.js +35 -0
- package/dist/components/ui/dropdown-menu.d.ts +49 -0
- package/dist/components/ui/dropdown-menu.js +113 -0
- package/dist/components/ui/emoji-picker.d.ts +15 -0
- package/dist/components/ui/emoji-picker.js +137 -0
- package/dist/components/ui/emoji-tint.d.ts +41 -0
- package/dist/components/ui/emoji-tint.js +131 -0
- package/dist/components/ui/empty.d.ts +11 -0
- package/dist/components/ui/empty.js +33 -0
- package/dist/components/ui/entity-avatar.d.ts +84 -0
- package/dist/components/ui/entity-avatar.js +106 -0
- package/dist/components/ui/faded-scroll-area.d.ts +8 -0
- package/dist/components/ui/faded-scroll-area.js +80 -0
- package/dist/components/ui/favicon-avatar.d.ts +32 -0
- package/dist/components/ui/favicon-avatar.js +18 -0
- package/dist/components/ui/field.d.ts +15 -0
- package/dist/components/ui/field.js +48 -0
- package/dist/components/ui/file-tree.d.ts +32 -0
- package/dist/components/ui/file-tree.js +30 -0
- package/dist/components/ui/glyph-face.d.ts +18 -0
- package/dist/components/ui/glyph-face.js +37 -0
- package/dist/components/ui/glyph-paths-source.d.ts +2 -0
- package/dist/components/ui/glyph-paths-source.js +40 -0
- package/dist/components/ui/glyph-paths.generated.d.ts +2 -0
- package/dist/components/ui/glyph-paths.generated.js +207 -0
- package/dist/components/ui/glyph-picker.d.ts +22 -0
- package/dist/components/ui/glyph-picker.js +118 -0
- package/dist/components/ui/glyph-registry.d.ts +36 -0
- package/dist/components/ui/glyph-registry.js +479 -0
- package/dist/components/ui/glyph-tint.d.ts +6 -0
- package/dist/components/ui/glyph-tint.js +93 -0
- package/dist/components/ui/hint.d.ts +14 -0
- package/dist/components/ui/hint.js +12 -0
- package/dist/components/ui/histogram-bars.d.ts +38 -0
- package/dist/components/ui/histogram-bars.js +93 -0
- package/dist/components/ui/hover-card.d.ts +28 -0
- package/dist/components/ui/hover-card.js +35 -0
- package/dist/components/ui/icon-provider.d.ts +23 -0
- package/dist/components/ui/icon-provider.js +30 -0
- package/dist/components/ui/info-banner.d.ts +14 -0
- package/dist/components/ui/info-banner.js +72 -0
- package/dist/components/ui/inline-meta.d.ts +6 -0
- package/dist/components/ui/inline-meta.js +8 -0
- package/dist/components/ui/input-group.d.ts +19 -0
- package/dist/components/ui/input-group.js +73 -0
- package/dist/components/ui/input.d.ts +26 -0
- package/dist/components/ui/input.js +23 -0
- package/dist/components/ui/item.d.ts +23 -0
- package/dist/components/ui/item.js +67 -0
- package/dist/components/ui/kbd.d.ts +3 -0
- package/dist/components/ui/kbd.js +20 -0
- package/dist/components/ui/kortix-asterisk.d.ts +6 -0
- package/dist/components/ui/kortix-asterisk.js +17 -0
- package/dist/components/ui/kortix-icons.d.ts +2 -0
- package/dist/components/ui/kortix-icons.js +17 -0
- package/dist/components/ui/kortix-loader.d.ts +76 -0
- package/dist/components/ui/kortix-loader.js +74 -0
- package/dist/components/ui/kortix-logo.d.ts +30 -0
- package/dist/components/ui/kortix-logo.js +47 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/label.js +9 -0
- package/dist/components/ui/list.d.ts +15 -0
- package/dist/components/ui/list.js +25 -0
- package/dist/components/ui/loading.d.ts +19 -0
- package/dist/components/ui/loading.js +31 -0
- package/dist/components/ui/local-time.d.ts +34 -0
- package/dist/components/ui/local-time.js +60 -0
- package/dist/components/ui/map.d.ts +101 -0
- package/dist/components/ui/map.js +257 -0
- package/dist/components/ui/marker.d.ts +14 -0
- package/dist/components/ui/marker.js +28 -0
- package/dist/components/ui/menu-recipe.d.ts +102 -0
- package/dist/components/ui/menu-recipe.js +129 -0
- package/dist/components/ui/mermaid-render.d.ts +51 -0
- package/dist/components/ui/mermaid-render.js +65 -0
- package/dist/components/ui/mermaid-renderer.d.ts +13 -0
- package/dist/components/ui/mermaid-renderer.js +340 -0
- package/dist/components/ui/message.d.ts +15 -0
- package/dist/components/ui/message.js +26 -0
- package/dist/components/ui/modal.d.ts +104 -0
- package/dist/components/ui/modal.js +180 -0
- package/dist/components/ui/navigation-menu.d.ts +16 -0
- package/dist/components/ui/navigation-menu.js +35 -0
- package/dist/components/ui/page-search-bar.d.ts +11 -0
- package/dist/components/ui/page-search-bar.js +13 -0
- package/dist/components/ui/phone-input.d.ts +7 -0
- package/dist/components/ui/phone-input.js +59 -0
- package/dist/components/ui/pixel-kortix-mark.d.ts +13 -0
- package/dist/components/ui/pixel-kortix-mark.js +40 -0
- package/dist/components/ui/popover.d.ts +10 -0
- package/dist/components/ui/popover.js +38 -0
- package/dist/components/ui/portal.d.ts +5 -0
- package/dist/components/ui/portal.js +15 -0
- package/dist/components/ui/preview-image.d.ts +14 -0
- package/dist/components/ui/preview-image.js +58 -0
- package/dist/components/ui/progress-ring.d.ts +6 -0
- package/dist/components/ui/progress-ring.js +9 -0
- package/dist/components/ui/progress.d.ts +6 -0
- package/dist/components/ui/progress.js +8 -0
- package/dist/components/ui/radio-group.d.ts +12 -0
- package/dist/components/ui/radio-group.js +20 -0
- package/dist/components/ui/resizable.d.ts +24 -0
- package/dist/components/ui/resizable.js +16 -0
- package/dist/components/ui/scroll-area.d.ts +5 -0
- package/dist/components/ui/scroll-area.js +11 -0
- package/dist/components/ui/section-card.d.ts +37 -0
- package/dist/components/ui/section-card.js +14 -0
- package/dist/components/ui/section.d.ts +10 -0
- package/dist/components/ui/section.js +22 -0
- package/dist/components/ui/select.d.ts +25 -0
- package/dist/components/ui/select.js +59 -0
- package/dist/components/ui/separator.d.ts +4 -0
- package/dist/components/ui/separator.js +8 -0
- package/dist/components/ui/shader-safe.d.ts +48 -0
- package/dist/components/ui/shader-safe.js +74 -0
- package/dist/components/ui/sheet.d.ts +32 -0
- package/dist/components/ui/sheet.js +55 -0
- package/dist/components/ui/sidebar-context.d.ts +72 -0
- package/dist/components/ui/sidebar-context.js +36 -0
- package/dist/components/ui/sidebar-menu-primitives.d.ts +38 -0
- package/dist/components/ui/sidebar-menu-primitives.js +97 -0
- package/dist/components/ui/sidebar-panel.d.ts +36 -0
- package/dist/components/ui/sidebar-panel.js +265 -0
- package/dist/components/ui/sidebar-peek.d.ts +27 -0
- package/dist/components/ui/sidebar-peek.js +70 -0
- package/dist/components/ui/sidebar-width.d.ts +48 -0
- package/dist/components/ui/sidebar-width.js +62 -0
- package/dist/components/ui/sidebar.d.ts +18 -0
- package/dist/components/ui/sidebar.js +194 -0
- package/dist/components/ui/skeleton.d.ts +3 -0
- package/dist/components/ui/skeleton.js +6 -0
- package/dist/components/ui/slider-native.d.ts +7 -0
- package/dist/components/ui/slider-native.js +16 -0
- package/dist/components/ui/slider.d.ts +14 -0
- package/dist/components/ui/slider.js +48 -0
- package/dist/components/ui/sliding-tab-indicator.d.ts +61 -0
- package/dist/components/ui/sliding-tab-indicator.js +128 -0
- package/dist/components/ui/split-sheet.d.ts +61 -0
- package/dist/components/ui/split-sheet.js +239 -0
- package/dist/components/ui/spotlight-card.d.ts +8 -0
- package/dist/components/ui/spotlight-card.js +43 -0
- package/dist/components/ui/status-ring.d.ts +38 -0
- package/dist/components/ui/status-ring.js +38 -0
- package/dist/components/ui/status.d.ts +58 -0
- package/dist/components/ui/status.js +76 -0
- package/dist/components/ui/stepper.d.ts +28 -0
- package/dist/components/ui/stepper.js +73 -0
- package/dist/components/ui/switch.d.ts +8 -0
- package/dist/components/ui/switch.js +131 -0
- package/dist/components/ui/system-message.d.ts +23 -0
- package/dist/components/ui/system-message.js +51 -0
- package/dist/components/ui/table.d.ts +10 -0
- package/dist/components/ui/table.js +28 -0
- package/dist/components/ui/tabs.d.ts +73 -0
- package/dist/components/ui/tabs.js +207 -0
- package/dist/components/ui/tag.d.ts +7 -0
- package/dist/components/ui/tag.js +22 -0
- package/dist/components/ui/text-shimmer.d.ts +13 -0
- package/dist/components/ui/text-shimmer.js +91 -0
- package/dist/components/ui/textarea.d.ts +33 -0
- package/dist/components/ui/textarea.js +87 -0
- package/dist/components/ui/toast.d.ts +105 -0
- package/dist/components/ui/toast.js +233 -0
- package/dist/components/ui/toggle.d.ts +12 -0
- package/dist/components/ui/toggle.js +26 -0
- package/dist/components/ui/tooltip.d.ts +9 -0
- package/dist/components/ui/tooltip.js +16 -0
- package/dist/components/ui/trigger-variants.d.ts +14 -0
- package/dist/components/ui/trigger-variants.js +67 -0
- package/dist/components/ui/type-to-confirm-dialog.d.ts +88 -0
- package/dist/components/ui/type-to-confirm-dialog.js +101 -0
- package/dist/components/ui/typed-title-logic.d.ts +22 -0
- package/dist/components/ui/typed-title-logic.js +33 -0
- package/dist/components/ui/typed-title.d.ts +38 -0
- package/dist/components/ui/typed-title.js +66 -0
- package/dist/components/ui/typing-animation.d.ts +36 -0
- package/dist/components/ui/typing-animation.js +141 -0
- package/dist/components/ui/user-avatar.d.ts +47 -0
- package/dist/components/ui/user-avatar.js +46 -0
- package/dist/hooks/use-debounce.d.ts +4 -0
- package/dist/hooks/use-debounce.js +17 -0
- package/dist/hooks/use-is-dark.d.ts +2 -0
- package/dist/hooks/use-is-dark.js +27 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.js +15 -0
- package/dist/hooks/use-proximity-hover.d.ts +52 -0
- package/dist/hooks/use-proximity-hover.js +232 -0
- package/dist/icons/close.d.ts +2 -0
- package/dist/icons/close.js +7 -0
- package/dist/icons/copy.d.ts +3 -0
- package/dist/icons/copy.js +6 -0
- package/dist/icons/sidebar-toggle.d.ts +13 -0
- package/dist/icons/sidebar-toggle.js +13 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +33 -0
- package/dist/lib/dotmatrix-core.d.ts +113 -0
- package/dist/lib/dotmatrix-core.js +920 -0
- package/dist/lib/dotmatrix-hooks.d.ts +28 -0
- package/dist/lib/dotmatrix-hooks.js +151 -0
- package/dist/lib/favicon.d.ts +4 -0
- package/dist/lib/favicon.js +21 -0
- package/dist/lib/font-weight.d.ts +6 -0
- package/dist/lib/font-weight.js +6 -0
- package/dist/lib/icon-config.d.ts +33 -0
- package/dist/lib/icon-config.js +22 -0
- package/dist/lib/icon-context.d.ts +34 -0
- package/dist/lib/icon-context.js +81 -0
- package/dist/lib/portal-root.d.ts +8 -0
- package/dist/lib/portal-root.js +26 -0
- package/dist/lib/settle.d.ts +16 -0
- package/dist/lib/settle.js +29 -0
- package/dist/lib/springs.d.ts +31 -0
- package/dist/lib/springs.js +29 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.js +5 -0
- package/dist/lib/z-stack.d.ts +55 -0
- package/dist/lib/z-stack.js +130 -0
- package/dist/providers/ui-provider.d.ts +141 -0
- package/dist/providers/ui-provider.js +93 -0
- package/dist/styles/dotmatrix-loader.css +1239 -0
- package/dist/styles/fonts.css +46 -0
- package/dist/styles/tailwind.css +10 -0
- package/dist/styles/theme.css +1019 -0
- package/dist/styles/tokens.css +146 -0
- package/dist/styles.css +2 -0
- package/package.json +881 -4
- package/skills/kortix-ui/SKILL.md +150 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Avatar, AvatarFallback, AvatarImage } from './avatar.js';
|
|
4
|
+
import { cn } from '../../lib/utils.js';
|
|
5
|
+
import { AVATAR_INK, avatarFill } from '../../_vendor/kortix-shared.js';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
function initialsFromIdentity(name, email) {
|
|
8
|
+
const source = (name || '').trim();
|
|
9
|
+
if (source) {
|
|
10
|
+
const parts = source.split(/\s+/).filter(Boolean);
|
|
11
|
+
const first = parts[0]?.[0] ?? '';
|
|
12
|
+
const second = parts.length > 1 ? parts[parts.length - 1]?.[0] : '';
|
|
13
|
+
const out = (first + second).toUpperCase();
|
|
14
|
+
if (out)
|
|
15
|
+
return out;
|
|
16
|
+
}
|
|
17
|
+
const local = email.split('@')[0] ?? email;
|
|
18
|
+
const segments = local.split(/[._-]+/).filter(Boolean);
|
|
19
|
+
const first = segments[0]?.[0] ?? local[0] ?? '?';
|
|
20
|
+
const second = segments[1]?.[0] ?? '';
|
|
21
|
+
return (first + second).toUpperCase();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* `text` goes on the fallback itself: the primitive's fallback sets its own
|
|
25
|
+
* `text-sm`, which beat a size class on the root. Two initials at 14px
|
|
26
|
+
* semibold filled the 22px `sm` tile edge to edge and overflowed an 18px one.
|
|
27
|
+
* `xs` and `sm` hold ONE initial, as EntityAvatar does: `text-xs` (13px) is
|
|
28
|
+
* the floor of the type scale, and two letters at 13px still fill an 18px tile.
|
|
29
|
+
*/
|
|
30
|
+
const SIZE_MAP = {
|
|
31
|
+
xs: { box: 'size-5', text: 'text-xs', initials: 1 },
|
|
32
|
+
sm: { box: 'size-6', text: 'text-xs', initials: 1 },
|
|
33
|
+
md: { box: 'size-8', text: 'text-xs', initials: 2 },
|
|
34
|
+
lg: { box: 'size-10', text: 'text-sm', initials: 2 },
|
|
35
|
+
xl: { box: 'size-14', text: 'text-base', initials: 2 },
|
|
36
|
+
};
|
|
37
|
+
export function UserAvatar({ email, name, avatarUrl, size = 'md', variant = 'default', className, ring = false, }) {
|
|
38
|
+
const sizes = SIZE_MAP[size] ?? SIZE_MAP.md;
|
|
39
|
+
const initials = React.useMemo(() => initialsFromIdentity(name ?? undefined, email || '').slice(0, sizes.initials), [name, email, sizes.initials]);
|
|
40
|
+
// Avatar v2: a solid fill keyed on the email, so a rename keeps the colour.
|
|
41
|
+
const fill = avatarFill(email || name || '');
|
|
42
|
+
return (_jsxs(Avatar, { className: cn(sizes.box, 'shrink-0 overflow-hidden rounded-sm p-0 font-medium', ring && 'ring-background ring-2',
|
|
43
|
+
// A photo keeps an edge on a light page: a 1px inset hairline over it.
|
|
44
|
+
avatarUrl &&
|
|
45
|
+
'after:ring-border after:pointer-events-none after:absolute after:inset-0 after:rounded-sm after:ring-1 after:ring-inset', variant === 'primary' && 'bg-primary text-primary-foreground', className), children: [avatarUrl ? _jsx(AvatarImage, { src: avatarUrl, alt: name || email }) : null, _jsx(AvatarFallback, { className: cn('rounded-sm font-medium', sizes.text), style: { backgroundColor: fill, color: AVATAR_INK }, children: initials || '?' })] }));
|
|
46
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
export const useDebounce = (value, delay) => {
|
|
4
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
5
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
setIsLoading(true);
|
|
8
|
+
const handler = setTimeout(() => {
|
|
9
|
+
setDebouncedValue(value);
|
|
10
|
+
setIsLoading(false);
|
|
11
|
+
}, delay);
|
|
12
|
+
return () => {
|
|
13
|
+
clearTimeout(handler);
|
|
14
|
+
};
|
|
15
|
+
}, [value, delay]);
|
|
16
|
+
return { debouncedValue, isLoading };
|
|
17
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useSyncExternalStore } from 'react';
|
|
3
|
+
const DARK_QUERY = '(prefers-color-scheme: dark)';
|
|
4
|
+
function subscribe(onChange) {
|
|
5
|
+
const observer = new MutationObserver(onChange);
|
|
6
|
+
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
|
7
|
+
const media = window.matchMedia?.(DARK_QUERY);
|
|
8
|
+
media?.addEventListener('change', onChange);
|
|
9
|
+
return () => {
|
|
10
|
+
observer.disconnect();
|
|
11
|
+
media?.removeEventListener('change', onChange);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/** `<html class="dark">` wins, then `class="light"`, then the OS preference. */
|
|
15
|
+
function getSnapshot() {
|
|
16
|
+
const classes = document.documentElement.classList;
|
|
17
|
+
if (classes.contains('dark'))
|
|
18
|
+
return true;
|
|
19
|
+
if (classes.contains('light'))
|
|
20
|
+
return false;
|
|
21
|
+
return window.matchMedia?.(DARK_QUERY).matches ?? false;
|
|
22
|
+
}
|
|
23
|
+
const getServerSnapshot = () => false;
|
|
24
|
+
/** True while the page renders the dark theme. Replaces next-themes inside @kortix/ui. */
|
|
25
|
+
export function useIsDark() {
|
|
26
|
+
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
27
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export const MOBILE_BREAKPOINT = 768;
|
|
3
|
+
export function useIsMobile() {
|
|
4
|
+
const [isMobile, setIsMobile] = React.useState(undefined);
|
|
5
|
+
React.useEffect(() => {
|
|
6
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
7
|
+
const onChange = () => {
|
|
8
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
9
|
+
};
|
|
10
|
+
mql.addEventListener('change', onChange);
|
|
11
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
12
|
+
return () => mql.removeEventListener('change', onChange);
|
|
13
|
+
}, []);
|
|
14
|
+
return !!isMobile;
|
|
15
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type Dispatch, type RefObject, type SetStateAction } from 'react';
|
|
2
|
+
export interface ItemRect {
|
|
3
|
+
top: number;
|
|
4
|
+
height: number;
|
|
5
|
+
left: number;
|
|
6
|
+
width: number;
|
|
7
|
+
}
|
|
8
|
+
interface UseProximityHoverOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Which direction to resolve the nearest item along.
|
|
11
|
+
* "y" — vertical lists (default): closest by top/height
|
|
12
|
+
* "x" — horizontal strips: closest by left/width
|
|
13
|
+
* "xy" — 2-D grids: closest card across both rows AND columns,
|
|
14
|
+
* measured by Euclidean distance to each item's center
|
|
15
|
+
*/
|
|
16
|
+
axis?: 'x' | 'y' | 'xy';
|
|
17
|
+
}
|
|
18
|
+
interface UseProximityHoverReturn {
|
|
19
|
+
activeIndex: number | null;
|
|
20
|
+
setActiveIndex: Dispatch<SetStateAction<number | null>>;
|
|
21
|
+
itemRects: ItemRect[];
|
|
22
|
+
/**
|
|
23
|
+
* True once every registered item has been measured and no remeasure is
|
|
24
|
+
* pending, i.e. `itemRects` describes the current item set. Gate absolutely
|
|
25
|
+
* positioned overlays on it: an overlay that mounts against a rect a later
|
|
26
|
+
* pass still corrects animates from the wrong place to the right one, which
|
|
27
|
+
* reads as the highlight sliding in from another row.
|
|
28
|
+
*/
|
|
29
|
+
isMeasured: boolean;
|
|
30
|
+
sessionRef: RefObject<number>;
|
|
31
|
+
handlers: {
|
|
32
|
+
onMouseMove: (e: React.MouseEvent) => void;
|
|
33
|
+
onMouseEnter: () => void;
|
|
34
|
+
onMouseLeave: () => void;
|
|
35
|
+
};
|
|
36
|
+
registerItem: (index: number, element: HTMLElement | null) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Invalidates the published rects and runs the hook's coalesced measurement
|
|
39
|
+
* pass again, holding `isMeasured` false until it settles. Reach for it when
|
|
40
|
+
* something other than item registration invalidates layout — a popup that
|
|
41
|
+
* stays mounted between opens keeps its items registered, so nothing else
|
|
42
|
+
* would notice that its rects were taken while it was hidden.
|
|
43
|
+
*/
|
|
44
|
+
remeasure: () => void;
|
|
45
|
+
measureItems: () => void;
|
|
46
|
+
}
|
|
47
|
+
export declare function pickNearestItem(rects: ItemRect[], axis: 'x' | 'y' | 'xy', pointer: {
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
}, container: HTMLElement, containerRect: DOMRect): number | null;
|
|
51
|
+
export declare function useProximityHover<T extends HTMLElement>(containerRef: RefObject<T | null>, options?: UseProximityHoverOptions): UseProximityHoverReturn;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState, } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* How many frames the coalesced remeasure retries while the registered items
|
|
5
|
+
* still have no layout box. A popup can be in the DOM one frame before it is
|
|
6
|
+
* laid out; retrying beats publishing zeroed rects, and the cap keeps a list
|
|
7
|
+
* that stays hidden for good from spinning frames forever.
|
|
8
|
+
*/
|
|
9
|
+
const measurementAttempts = 3;
|
|
10
|
+
// ── 2-D grid path ──────────────────────────────────────────
|
|
11
|
+
// When items wrap into rows and columns, a single-axis nearest
|
|
12
|
+
// pick can't tell which card the cursor is closest to. Resolve
|
|
13
|
+
// by Euclidean distance to each item's center, and prefer any
|
|
14
|
+
// item the cursor is actually inside (point-in-rect).
|
|
15
|
+
export function pickNearestItem(rects, axis, pointer, container, containerRect) {
|
|
16
|
+
let closestIndex = null;
|
|
17
|
+
let closestDistance = Infinity;
|
|
18
|
+
let containingIndex = null;
|
|
19
|
+
// Convert content-relative rects to viewport coords using live scroll
|
|
20
|
+
const scrollX = container.scrollLeft;
|
|
21
|
+
const scrollY = container.scrollTop;
|
|
22
|
+
const borderX = container.clientLeft;
|
|
23
|
+
const borderY = container.clientTop;
|
|
24
|
+
// Item rects are layout values (offset*); the container's bounding rect
|
|
25
|
+
// reflects any cumulative ancestor transform: scale. Compute the scale
|
|
26
|
+
// factor so we can map layout coords into the same visual viewport
|
|
27
|
+
// space the mouse cursor lives in.
|
|
28
|
+
// Map layout coords into visual/viewport space, accounting for any
|
|
29
|
+
// cumulative ancestor transform: scale (see the single-axis note
|
|
30
|
+
// below). X and Y scale independently.
|
|
31
|
+
const scaleX = container.offsetWidth > 0 ? containerRect.width / container.offsetWidth : 1;
|
|
32
|
+
const scaleY = container.offsetHeight > 0 ? containerRect.height / container.offsetHeight : 1;
|
|
33
|
+
for (let index = 0; index < rects.length; index++) {
|
|
34
|
+
const r = rects[index];
|
|
35
|
+
if (!r)
|
|
36
|
+
continue;
|
|
37
|
+
const left = containerRect.left + (borderX + r.left - scrollX) * scaleX;
|
|
38
|
+
const top = containerRect.top + (borderY + r.top - scrollY) * scaleY;
|
|
39
|
+
const width = r.width * scaleX;
|
|
40
|
+
const height = r.height * scaleY;
|
|
41
|
+
if ((axis === 'y' || (pointer.x >= left && pointer.x <= left + width)) &&
|
|
42
|
+
(axis === 'x' || (pointer.y >= top && pointer.y <= top + height))) {
|
|
43
|
+
containingIndex = index;
|
|
44
|
+
}
|
|
45
|
+
const dx = pointer.x - (left + width / 2);
|
|
46
|
+
const dy = pointer.y - (top + height / 2);
|
|
47
|
+
const distance = axis === 'xy' ? Math.hypot(dx, dy) : Math.abs(axis === 'x' ? dx : dy);
|
|
48
|
+
if (distance < closestDistance) {
|
|
49
|
+
closestDistance = distance;
|
|
50
|
+
closestIndex = index;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return containingIndex ?? closestIndex;
|
|
54
|
+
}
|
|
55
|
+
export function useProximityHover(containerRef, options = {}) {
|
|
56
|
+
const { axis = 'y' } = options;
|
|
57
|
+
const itemsRef = useRef(new Map());
|
|
58
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
59
|
+
const [itemRects, setItemRects] = useState([]);
|
|
60
|
+
const [isMeasured, setIsMeasured] = useState(false);
|
|
61
|
+
const itemRectsRef = useRef([]);
|
|
62
|
+
const sessionRef = useRef(0);
|
|
63
|
+
const rafIdRef = useRef(null);
|
|
64
|
+
const remeasureRafIdRef = useRef(null);
|
|
65
|
+
/**
|
|
66
|
+
* Publishes a rect for every registered item. Returns false when the
|
|
67
|
+
* measurement could not be completed (no container, or an item without a
|
|
68
|
+
* layout box) — nothing is published in that case, so the last complete
|
|
69
|
+
* measurement stands instead of being overwritten with zeroes.
|
|
70
|
+
*/
|
|
71
|
+
const runMeasurement = useCallback(() => {
|
|
72
|
+
const container = containerRef.current;
|
|
73
|
+
if (!container)
|
|
74
|
+
return false;
|
|
75
|
+
const rects = [];
|
|
76
|
+
let everyItemHasLayout = true;
|
|
77
|
+
itemsRef.current.forEach((element, index) => {
|
|
78
|
+
// An element inside a display:none / not-yet-laid-out popup has no
|
|
79
|
+
// offsetParent and reports every offset as 0. Publishing that would pin
|
|
80
|
+
// overlays to the top of the list, so treat the whole pass as
|
|
81
|
+
// incomplete. A boxless element is the only case: `position: fixed`
|
|
82
|
+
// items also have no offsetParent but do have a size.
|
|
83
|
+
const hasLayoutBox = element.offsetParent !== null || element.offsetWidth > 0 || element.offsetHeight > 0;
|
|
84
|
+
if (!hasLayoutBox) {
|
|
85
|
+
everyItemHasLayout = false;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Use offset* instead of getBoundingClientRect so measurements are
|
|
89
|
+
// unaffected by CSS transforms (e.g. scaleY animation on the parent
|
|
90
|
+
// motion.div). offsetTop/offsetLeft are layout values relative to the
|
|
91
|
+
// offsetParent (the scroll container), matching the coordinate space
|
|
92
|
+
// used by `position: absolute` children.
|
|
93
|
+
rects[index] = {
|
|
94
|
+
top: element.offsetTop,
|
|
95
|
+
height: element.offsetHeight,
|
|
96
|
+
left: element.offsetLeft,
|
|
97
|
+
width: element.offsetWidth,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
if (!everyItemHasLayout)
|
|
101
|
+
return false;
|
|
102
|
+
// Skip the state update when nothing moved (a cheap top/left/width/height
|
|
103
|
+
// compare) so redundant remeasures don't churn re-renders.
|
|
104
|
+
const prev = itemRectsRef.current;
|
|
105
|
+
let changed = prev.length !== rects.length;
|
|
106
|
+
for (let i = 0; !changed && i < rects.length; i++) {
|
|
107
|
+
const p = prev[i];
|
|
108
|
+
const r = rects[i];
|
|
109
|
+
if (p === r)
|
|
110
|
+
continue; // both undefined (sparse slot)
|
|
111
|
+
changed =
|
|
112
|
+
!p ||
|
|
113
|
+
!r ||
|
|
114
|
+
p.top !== r.top ||
|
|
115
|
+
p.left !== r.left ||
|
|
116
|
+
p.width !== r.width ||
|
|
117
|
+
p.height !== r.height;
|
|
118
|
+
}
|
|
119
|
+
if (changed) {
|
|
120
|
+
itemRectsRef.current = rects;
|
|
121
|
+
setItemRects(rects);
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}, [containerRef]);
|
|
125
|
+
const measureItems = useCallback(() => {
|
|
126
|
+
runMeasurement();
|
|
127
|
+
}, [runMeasurement]);
|
|
128
|
+
/**
|
|
129
|
+
* The hook's single measurement pass: coalesces every trigger (item
|
|
130
|
+
* registration, container resize) into one remeasure on the next frame and
|
|
131
|
+
* is the only place readiness is reported, so `isMeasured` can never turn
|
|
132
|
+
* true while another pass is still queued.
|
|
133
|
+
*/
|
|
134
|
+
const scheduleMeasurement = useCallback((attemptsLeft) => {
|
|
135
|
+
if (remeasureRafIdRef.current !== null) {
|
|
136
|
+
cancelAnimationFrame(remeasureRafIdRef.current);
|
|
137
|
+
}
|
|
138
|
+
remeasureRafIdRef.current = requestAnimationFrame(() => {
|
|
139
|
+
remeasureRafIdRef.current = null;
|
|
140
|
+
if (runMeasurement()) {
|
|
141
|
+
setIsMeasured(true);
|
|
142
|
+
}
|
|
143
|
+
else if (attemptsLeft > 1) {
|
|
144
|
+
scheduleMeasurement(attemptsLeft - 1);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}, [runMeasurement]);
|
|
148
|
+
const remeasure = useCallback(() => {
|
|
149
|
+
// Readiness drops first: until the pass below settles, the published rects
|
|
150
|
+
// may not describe what is on screen, and an overlay positioned from them
|
|
151
|
+
// would be corrected after mounting — which animates as a slide.
|
|
152
|
+
setIsMeasured(false);
|
|
153
|
+
scheduleMeasurement(measurementAttempts);
|
|
154
|
+
}, [scheduleMeasurement]);
|
|
155
|
+
const registerItem = useCallback((index, element) => {
|
|
156
|
+
if (element) {
|
|
157
|
+
itemsRef.current.set(index, element);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
itemsRef.current.delete(index);
|
|
161
|
+
}
|
|
162
|
+
// Coalesce rapid register/unregister calls (e.g. when an AnimatePresence
|
|
163
|
+
// remounts a list of rows) into a single remeasure on the next frame,
|
|
164
|
+
// so consumers don't have to manually call measureItems after the
|
|
165
|
+
// container's children swap.
|
|
166
|
+
remeasure();
|
|
167
|
+
}, [remeasure]);
|
|
168
|
+
const handleMouseMove = useCallback((e) => {
|
|
169
|
+
const mouseX = e.clientX;
|
|
170
|
+
const mouseY = e.clientY;
|
|
171
|
+
if (rafIdRef.current !== null) {
|
|
172
|
+
cancelAnimationFrame(rafIdRef.current);
|
|
173
|
+
}
|
|
174
|
+
rafIdRef.current = requestAnimationFrame(() => {
|
|
175
|
+
rafIdRef.current = null;
|
|
176
|
+
const container = containerRef.current;
|
|
177
|
+
if (!container)
|
|
178
|
+
return;
|
|
179
|
+
const containerRect = container.getBoundingClientRect();
|
|
180
|
+
setActiveIndex(pickNearestItem(itemRectsRef.current, axis, { x: mouseX, y: mouseY }, container, containerRect));
|
|
181
|
+
});
|
|
182
|
+
}, [axis, containerRef]);
|
|
183
|
+
const handleMouseEnter = useCallback(() => {
|
|
184
|
+
sessionRef.current += 1;
|
|
185
|
+
}, []);
|
|
186
|
+
const handleMouseLeave = useCallback(() => {
|
|
187
|
+
if (rafIdRef.current !== null) {
|
|
188
|
+
cancelAnimationFrame(rafIdRef.current);
|
|
189
|
+
rafIdRef.current = null;
|
|
190
|
+
}
|
|
191
|
+
setActiveIndex(null);
|
|
192
|
+
}, []);
|
|
193
|
+
// Remeasure when the container resizes — a reflow moves items even though
|
|
194
|
+
// the registered set is unchanged, which would otherwise leave itemRects
|
|
195
|
+
// stale. Coalesced through the same rAF as register/unregister. Readiness is
|
|
196
|
+
// deliberately not dropped: the item set is unchanged, so the published rects
|
|
197
|
+
// stay usable, and hiding overlays on every reflow would flicker them.
|
|
198
|
+
useEffect(() => {
|
|
199
|
+
const container = containerRef.current;
|
|
200
|
+
if (!container || typeof ResizeObserver === 'undefined')
|
|
201
|
+
return;
|
|
202
|
+
const ro = new ResizeObserver(() => scheduleMeasurement(measurementAttempts));
|
|
203
|
+
ro.observe(container);
|
|
204
|
+
return () => ro.disconnect();
|
|
205
|
+
}, [containerRef, scheduleMeasurement]);
|
|
206
|
+
// Clean up rAF on unmount
|
|
207
|
+
useEffect(() => {
|
|
208
|
+
return () => {
|
|
209
|
+
if (rafIdRef.current !== null) {
|
|
210
|
+
cancelAnimationFrame(rafIdRef.current);
|
|
211
|
+
}
|
|
212
|
+
if (remeasureRafIdRef.current !== null) {
|
|
213
|
+
cancelAnimationFrame(remeasureRafIdRef.current);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
}, []);
|
|
217
|
+
return {
|
|
218
|
+
activeIndex,
|
|
219
|
+
setActiveIndex,
|
|
220
|
+
itemRects,
|
|
221
|
+
isMeasured,
|
|
222
|
+
sessionRef,
|
|
223
|
+
handlers: {
|
|
224
|
+
onMouseMove: handleMouseMove,
|
|
225
|
+
onMouseEnter: handleMouseEnter,
|
|
226
|
+
onMouseLeave: handleMouseLeave,
|
|
227
|
+
},
|
|
228
|
+
registerItem,
|
|
229
|
+
remeasure,
|
|
230
|
+
measureItems,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from '../lib/utils.js';
|
|
4
|
+
import { XIcon } from '@phosphor-icons/react';
|
|
5
|
+
export const Close = ({ className, ...props }) => {
|
|
6
|
+
return _jsx(XIcon, { className: cn('size-4 stroke-1', className), ...props });
|
|
7
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from '../lib/utils.js';
|
|
4
|
+
export const Copy = ({ className }) => {
|
|
5
|
+
return (_jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", className: cn('size-4', className), children: _jsx("path", { d: "M12.67 10.67C12.67 9.96 12.67 9.46 12.64 9.08C12.61 8.8 12.58 8.61 12.52 8.46L12.47 8.33C12.31 8.03 12.08 7.78 11.79 7.6L11.67 7.53C11.51 7.45 11.3 7.39 10.92 7.36C10.54 7.33 10.04 7.33 9.33 7.33H6.5C5.79 7.33 5.3 7.33 4.91 7.36C4.63 7.39 4.44 7.42 4.3 7.48L4.17 7.53C3.86 7.69 3.61 7.92 3.44 8.21L3.37 8.33C3.28 8.49 3.23 8.7 3.2 9.08C3.17 9.46 3.17 9.96 3.17 10.67V13.5C3.17 14.21 3.17 14.7 3.2 15.09C3.23 15.46 3.28 15.68 3.37 15.83L3.44 15.96C3.61 16.25 3.86 16.48 4.17 16.63L4.3 16.69C4.44 16.74 4.63 16.78 4.91 16.8C5.3 16.83 5.79 16.84 6.5 16.84H9.33C10.04 16.84 10.54 16.83 10.92 16.8C11.3 16.77 11.51 16.72 11.67 16.63L11.79 16.56C12.08 16.39 12.31 16.14 12.47 15.83L12.52 15.7C12.58 15.56 12.61 15.37 12.64 15.09C12.67 14.7 12.67 14.21 12.67 13.5V10.67ZM14 12.67C14.45 12.66 14.8 12.66 15.09 12.64C15.46 12.61 15.68 12.55 15.83 12.47L15.96 12.4C16.25 12.22 16.48 11.97 16.63 11.67L16.69 11.54C16.74 11.39 16.78 11.2 16.8 10.92C16.83 10.54 16.84 10.04 16.84 9.33V6.5C16.84 5.79 16.83 5.3 16.8 4.91C16.78 4.63 16.74 4.44 16.69 4.3L16.63 4.17C16.48 3.86 16.25 3.61 15.96 3.44L15.83 3.37C15.68 3.28 15.46 3.23 15.09 3.2C14.7 3.17 14.21 3.17 13.5 3.17H10.67C9.96 3.17 9.46 3.17 9.08 3.2C8.8 3.22 8.61 3.26 8.46 3.31L8.33 3.37C8.03 3.52 7.78 3.75 7.6 4.04L7.53 4.17C7.45 4.32 7.39 4.54 7.36 4.91C7.34 5.2 7.34 5.55 7.33 6H9.33C10.02 6 10.58 6 11.03 6.04C11.49 6.08 11.89 6.15 12.27 6.35L12.49 6.47C12.98 6.77 13.39 7.21 13.65 7.73L13.72 7.87C13.86 8.21 13.93 8.57 13.96 8.97C14 9.42 14 9.98 14 10.67V12.67ZM18.17 9.33C18.17 10.02 18.17 10.58 18.13 11.03C18.1 11.43 18.03 11.79 17.89 12.13L17.82 12.27C17.55 12.79 17.15 13.23 16.66 13.53L16.44 13.65C16.06 13.85 15.65 13.92 15.2 13.96C14.86 13.99 14.46 13.99 14 14C13.99 14.46 13.99 14.86 13.96 15.2C13.93 15.6 13.86 15.96 13.72 16.29L13.65 16.44C13.39 16.96 12.98 17.39 12.49 17.7L12.27 17.82C11.89 18.01 11.49 18.09 11.03 18.13C10.58 18.17 10.02 18.17 9.33 18.17H6.5C5.81 18.17 5.25 18.17 4.8 18.13C4.4 18.1 4.04 18.03 3.71 17.89L3.56 17.82C3.04 17.55 2.61 17.15 2.3 16.66L2.18 16.44C1.99 16.06 1.91 15.65 1.87 15.2C1.83 14.75 1.83 14.19 1.83 13.5V10.67C1.83 9.98 1.83 9.42 1.87 8.97C1.91 8.51 1.99 8.11 2.18 7.73L2.3 7.51C2.61 7.02 3.04 6.61 3.56 6.35L3.71 6.28C4.04 6.14 4.4 6.07 4.8 6.04C5.14 6.01 5.54 6.01 6 6C6.01 5.54 6.01 5.14 6.04 4.8C6.08 4.35 6.15 3.94 6.35 3.56L6.47 3.34C6.77 2.85 7.21 2.45 7.73 2.18L7.87 2.11C8.21 1.97 8.57 1.9 8.97 1.87C9.42 1.83 9.98 1.83 10.67 1.83H13.5C14.19 1.83 14.75 1.83 15.2 1.87C15.65 1.91 16.06 1.99 16.44 2.18L16.66 2.3C17.15 2.61 17.55 3.04 17.82 3.56L17.89 3.71C18.03 4.04 18.1 4.4 18.13 4.8C18.17 5.25 18.17 5.81 18.17 6.5V9.33Z" }) }));
|
|
6
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type SidebarToggleProps = React.SVGProps<SVGSVGElement> & {
|
|
2
|
+
/** Flip horizontally so the filled column sits on the right (right-side panels). */
|
|
3
|
+
mirrored?: boolean;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* A rounded panel frame split by a divider, drawn as strokes so the weight is
|
|
7
|
+
* one number. 2.25 viewBox units is ~1.5px at the default 16px — the fill
|
|
8
|
+
* outline this replaced was 1.77 units (~1.2px) and read as hairline next to
|
|
9
|
+
* the Phosphor icons around it. The frame spans 21 × 19 of the 24 box (was
|
|
10
|
+
* 20 × 17.7), so the glyph fills its square like its neighbours do.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SidebarToggle: ({ className, mirrored, ...props }: SidebarToggleProps) => import("react").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from '../lib/utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* A rounded panel frame split by a divider, drawn as strokes so the weight is
|
|
6
|
+
* one number. 2.25 viewBox units is ~1.5px at the default 16px — the fill
|
|
7
|
+
* outline this replaced was 1.77 units (~1.2px) and read as hairline next to
|
|
8
|
+
* the Phosphor icons around it. The frame spans 21 × 19 of the 24 box (was
|
|
9
|
+
* 20 × 17.7), so the glyph fills its square like its neighbours do.
|
|
10
|
+
*/
|
|
11
|
+
export const SidebarToggle = ({ className, mirrored, ...props }) => {
|
|
12
|
+
return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.25", "aria-hidden": "true", className: cn('size-4', mirrored && '-scale-x-100', className), ...props, children: [_jsx("rect", { x: "2.625", y: "3.625", width: "18.75", height: "16.75", rx: "4" }), _jsx("path", { d: "M9.25 3.625v16.75" })] }));
|
|
13
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { cn } from './lib/utils.js';
|
|
2
|
+
export { UiProvider, defaultChatStrings, defaultUiStrings, useUiBrand, useUiLink, useUiStrings, type UiBrand, type UiLinkComponent, type UiLinkProps, type ChatStrings, type UiStrings, type UiStringsInput, type UseUiBrand, } from './providers/ui-provider.js';
|
|
3
|
+
export { useIsDark } from './hooks/use-is-dark.js';
|
|
4
|
+
export { Button, buttonVariants, type ButtonProps, } from './components/ui/button.js';
|
|
5
|
+
export { Badge, badgeVariants, } from './components/ui/badge.js';
|
|
6
|
+
export { Card, CardAction, CardButton, CardContent, CardDescription, CardEyebrow, CardFeature, CardFooter, CardGroup, CardHeader, CardImage, CardMedia, CardTitle, type CardButtonProps, type CardButtonSize, type CardButtonVariant, type CardGroupProps, type CardLogo, type CardProps, } from './components/ui/card.js';
|
|
7
|
+
export { Separator, } from './components/ui/separator.js';
|
|
8
|
+
export { Skeleton, } from './components/ui/skeleton.js';
|
|
9
|
+
export { Input, inputFocusClasses, inputInvalidClasses, inputSurfaceClasses, inputTransitionClasses, type InputProps, } from './components/ui/input.js';
|
|
10
|
+
export { useAutosizeTextArea, Textarea, type AutosizeTextAreaRef, type AutosizeTextAreaProps, } from './components/ui/textarea.js';
|
|
11
|
+
export { Label, } from './components/ui/label.js';
|
|
12
|
+
export { Checkbox, type CheckboxProps, type CheckboxVariant, } from './components/ui/checkbox.js';
|
|
13
|
+
export { Switch, type SwitchProps, } from './components/ui/switch.js';
|
|
14
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, type SelectTriggerProps, } from './components/ui/select.js';
|
|
15
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from './components/ui/dialog.js';
|
|
16
|
+
export { Modal, ModalBody, ModalClose, ModalContent, ModalContentInner, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, } from './components/ui/modal.js';
|
|
17
|
+
export { Hint, type HintProps } from './components/ui/hint.js';
|
|
18
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger, } from './components/ui/popover.js';
|
|
19
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from './components/ui/tooltip.js';
|
|
20
|
+
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from './components/ui/dropdown-menu.js';
|
|
21
|
+
export { FilterBar, FilterBarItem, Tabs, TabsContent, TabsList, TabsListCompact, TabsTrigger, TabsTriggerCompact, tabsTriggerHeightVariants, tabsTriggerPaddingVariants, tabsTriggerTextVariants, type TabsListType, type TabsSize, type TabsTriggerSize, type TabsTriggerVariant, type TabsUnderlineSize, } from './components/ui/tabs.js';
|
|
22
|
+
export { Bubble, BubbleContent, BubbleGroup, BubbleReactions, bubbleVariants, } from './components/ui/bubble.js';
|
|
23
|
+
export { Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, } from './components/ui/message.js';
|
|
24
|
+
export { Marker, MarkerContent, MarkerIcon, markerVariants, } from './components/ui/marker.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// @kortix/ui root barrel: light core primitives only (Radix, cva, motion).
|
|
2
|
+
// Heavy or app-shaped modules are reachable only through their own subpath,
|
|
3
|
+
// never from here: charts ('@kortix/ui/chart'), maps ('@kortix/ui/map'), grids
|
|
4
|
+
// ('@kortix/ui/data-grid'), mermaid, emoji data ('@kortix/ui/emoji-picker'),
|
|
5
|
+
// toasts ('@kortix/ui/toast', sonner) and the session UI ('@kortix/ui/chat').
|
|
6
|
+
// Names are explicit (no `export *`): src/skill.test.ts checks that the
|
|
7
|
+
// kortix-ui skill lists every one.
|
|
8
|
+
export { cn } from './lib/utils.js';
|
|
9
|
+
export { UiProvider, defaultChatStrings, defaultUiStrings, useUiBrand, useUiLink, useUiStrings, } from './providers/ui-provider.js';
|
|
10
|
+
export { useIsDark } from './hooks/use-is-dark.js';
|
|
11
|
+
export { Button, buttonVariants, } from './components/ui/button.js';
|
|
12
|
+
export { Badge, badgeVariants, } from './components/ui/badge.js';
|
|
13
|
+
export { Card, CardAction, CardButton, CardContent, CardDescription, CardEyebrow, CardFeature, CardFooter, CardGroup, CardHeader, CardImage, CardMedia, CardTitle, } from './components/ui/card.js';
|
|
14
|
+
export { Separator, } from './components/ui/separator.js';
|
|
15
|
+
export { Skeleton, } from './components/ui/skeleton.js';
|
|
16
|
+
export { Input, inputFocusClasses, inputInvalidClasses, inputSurfaceClasses, inputTransitionClasses, } from './components/ui/input.js';
|
|
17
|
+
export { useAutosizeTextArea, Textarea, } from './components/ui/textarea.js';
|
|
18
|
+
export { Label, } from './components/ui/label.js';
|
|
19
|
+
export { Checkbox, } from './components/ui/checkbox.js';
|
|
20
|
+
export { Switch, } from './components/ui/switch.js';
|
|
21
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from './components/ui/select.js';
|
|
22
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from './components/ui/dialog.js';
|
|
23
|
+
export { Modal, ModalBody, ModalClose, ModalContent, ModalContentInner, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, } from './components/ui/modal.js';
|
|
24
|
+
export { Hint } from './components/ui/hint.js';
|
|
25
|
+
// Dialog and Tooltip are the primitives Modal and Hint build on. Feature code
|
|
26
|
+
// uses Modal and Hint (the kortix-ui skill, section 3); both carry @deprecated.
|
|
27
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger, } from './components/ui/popover.js';
|
|
28
|
+
export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from './components/ui/tooltip.js';
|
|
29
|
+
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from './components/ui/dropdown-menu.js';
|
|
30
|
+
export { FilterBar, FilterBarItem, Tabs, TabsContent, TabsList, TabsListCompact, TabsTrigger, TabsTriggerCompact, tabsTriggerHeightVariants, tabsTriggerPaddingVariants, tabsTriggerTextVariants, } from './components/ui/tabs.js';
|
|
31
|
+
export { Bubble, BubbleContent, BubbleGroup, BubbleReactions, bubbleVariants, } from './components/ui/bubble.js';
|
|
32
|
+
export { Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader, } from './components/ui/message.js';
|
|
33
|
+
export { Marker, MarkerContent, MarkerIcon, markerVariants, } from './components/ui/marker.js';
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
type MatrixPattern = 'diamond' | 'full' | 'outline' | 'rose' | 'cross' | 'rings';
|
|
3
|
+
type DotShape = 'circle' | 'square' | 'diamond' | 'hearts';
|
|
4
|
+
export type DotMatrixPhase = 'idle' | 'collapse' | 'hoverRipple' | 'loadingRipple';
|
|
5
|
+
type DotMatrixColorPreset = 'solid-theme' | 'solid-mint' | 'grad-sunset' | 'grad-ocean' | 'grad-neon' | 'grad-aurora' | 'grad-fire' | 'grad-prism';
|
|
6
|
+
export interface DotMatrixCommonProps {
|
|
7
|
+
size?: number;
|
|
8
|
+
dotSize?: number;
|
|
9
|
+
/** Multiplies `size` and `dotSize` together. `1` is the component's own base. */
|
|
10
|
+
scale?: number;
|
|
11
|
+
color?: string;
|
|
12
|
+
colorPreset?: DotMatrixColorPreset;
|
|
13
|
+
speed?: number;
|
|
14
|
+
ariaLabel?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
pattern?: MatrixPattern;
|
|
17
|
+
muted?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Adds a glow on dots from opacity 0.6 (weakest) through 1 (strongest), after remapping.
|
|
20
|
+
*/
|
|
21
|
+
bloom?: boolean;
|
|
22
|
+
/** Uniform glow on every active dot (0…1); slightly wider falloff than selective `bloom`. */
|
|
23
|
+
halo?: number;
|
|
24
|
+
animated?: boolean;
|
|
25
|
+
hoverAnimated?: boolean;
|
|
26
|
+
dotClassName?: string;
|
|
27
|
+
dotShape?: DotShape;
|
|
28
|
+
opacityBase?: number;
|
|
29
|
+
opacityMid?: number;
|
|
30
|
+
opacityPeak?: number;
|
|
31
|
+
cellPadding?: number;
|
|
32
|
+
boxSize?: number;
|
|
33
|
+
minSize?: number;
|
|
34
|
+
}
|
|
35
|
+
interface DotAnimationContext {
|
|
36
|
+
index: number;
|
|
37
|
+
row: number;
|
|
38
|
+
col: number;
|
|
39
|
+
distanceFromCenter: number;
|
|
40
|
+
angleFromCenter: number;
|
|
41
|
+
radiusNormalized: number;
|
|
42
|
+
manhattanDistance: number;
|
|
43
|
+
phase: DotMatrixPhase;
|
|
44
|
+
isActive: boolean;
|
|
45
|
+
reducedMotion: boolean;
|
|
46
|
+
}
|
|
47
|
+
interface DotAnimationState {
|
|
48
|
+
className?: string;
|
|
49
|
+
style?: CSSProperties;
|
|
50
|
+
}
|
|
51
|
+
export type DotAnimationResolver = (ctx: DotAnimationContext) => DotAnimationState;
|
|
52
|
+
export declare function cx(...values: Array<string | undefined | null | false>): string;
|
|
53
|
+
export declare const MATRIX_SIZE = 5;
|
|
54
|
+
export declare function rowMajorIndex(row: number, col: number): number;
|
|
55
|
+
export declare function distanceFromCenter(index: number): number;
|
|
56
|
+
export declare function rowDistance(index: number): number;
|
|
57
|
+
export declare function manhattanDistance(index: number): number;
|
|
58
|
+
export declare function trBlPathNormFromIndex(index: number): number;
|
|
59
|
+
export declare function spiralInwardNormFromIndex(index: number): number;
|
|
60
|
+
export declare function spiralInwardOrderValue(index: number): number;
|
|
61
|
+
export declare function outerRingClockwiseOrderValue(index: number): number;
|
|
62
|
+
export declare function outerRingClockwiseNormFromIndex(index: number): number;
|
|
63
|
+
export declare function middleRingAntiClockwiseOrderValue(index: number): number;
|
|
64
|
+
export declare function middleRingAntiClockwiseNormFromIndex(index: number): number;
|
|
65
|
+
export declare function diagonalSnakeOrderValue(index: number): number;
|
|
66
|
+
export declare function diagonalSnakeNormFromIndex(index: number): number;
|
|
67
|
+
export declare function isWithinCircularMask(row: number, col: number): boolean;
|
|
68
|
+
interface DotMatrixBaseProps extends DotMatrixCommonProps {
|
|
69
|
+
phase: DotMatrixPhase;
|
|
70
|
+
reducedMotion?: boolean;
|
|
71
|
+
onMouseEnter?: () => void;
|
|
72
|
+
onMouseLeave?: () => void;
|
|
73
|
+
animationResolver?: DotAnimationResolver;
|
|
74
|
+
}
|
|
75
|
+
export declare function DotMatrixBase({ scale: scaleProp, size: sizeProp, dotSize: dotSizeProp, color, colorPreset, speed, ariaLabel, className, pattern, dotShape, muted, bloom, halo, dotClassName, phase, reducedMotion, onMouseEnter, onMouseLeave, animationResolver, opacityBase, opacityMid, opacityPeak, cellPadding, boxSize, minSize, }: DotMatrixBaseProps): import("react").JSX.Element;
|
|
76
|
+
type DiagonalWave3Direction = 'tr-bl' | 'tl-br' | 'br-tl' | 'bl-tr';
|
|
77
|
+
export declare function snakePath3NormFromIndex(index: number): number;
|
|
78
|
+
export declare function snakePath3OrderValue(index: number): number;
|
|
79
|
+
export declare function outerRingClockwise3OrderValue(index: number): number;
|
|
80
|
+
export declare function outerRingClockwise3NormFromIndex(index: number): number;
|
|
81
|
+
export declare function isCenterCell3(row: number, col: number): boolean;
|
|
82
|
+
export declare function rowWave3NormFromRow(row: number): number;
|
|
83
|
+
export declare function colWave3NormFromCol(col: number): number;
|
|
84
|
+
export declare function colWave3NormFromColReverse(col: number): number;
|
|
85
|
+
export declare function wave3PathOpacityFromNorm(norm: number, base?: number, mid?: number, peak?: number): number;
|
|
86
|
+
type DiagonalWave3ComponentProps = DotMatrixCommonProps;
|
|
87
|
+
export declare function createDiagonalWave3Component(displayName: string, direction: DiagonalWave3Direction): {
|
|
88
|
+
({ pattern, animated, hoverAnimated, speed, ...rest }: DiagonalWave3ComponentProps): import("react").JSX.Element;
|
|
89
|
+
displayName: string;
|
|
90
|
+
};
|
|
91
|
+
type Dotm3x3ComponentProps = DotMatrixCommonProps;
|
|
92
|
+
export declare function createDotm3x3Component(displayName: string, animationResolver: DotAnimationResolver, defaultSpeed?: number): {
|
|
93
|
+
({ pattern, dotShape, animated, hoverAnimated, speed, ...rest }: Dotm3x3ComponentProps): import("react").JSX.Element;
|
|
94
|
+
displayName: string;
|
|
95
|
+
};
|
|
96
|
+
export declare function createDotm5x5Component(displayName: string, makeResolver: (cycle: number, reducedMotion: boolean) => DotAnimationResolver, config: {
|
|
97
|
+
speed: number;
|
|
98
|
+
size?: number;
|
|
99
|
+
dotSize?: number;
|
|
100
|
+
cycleMsBase?: number;
|
|
101
|
+
steps?: number;
|
|
102
|
+
idleStep?: number;
|
|
103
|
+
lockedPattern?: MatrixPattern;
|
|
104
|
+
}): {
|
|
105
|
+
({ pattern, animated, hoverAnimated, speed, size, dotSize, ...rest }: DotMatrixCommonProps): import("react").JSX.Element;
|
|
106
|
+
displayName: string;
|
|
107
|
+
};
|
|
108
|
+
type GlyphSpin3ComponentProps = DotMatrixCommonProps;
|
|
109
|
+
export declare function createGlyphSpin3Component(displayName: string, glyph: readonly number[], defaultSpeed?: number): {
|
|
110
|
+
({ speed, pattern, dotShape, animated, hoverAnimated, ...rest }: GlyphSpin3ComponentProps): import("react").JSX.Element;
|
|
111
|
+
displayName: string;
|
|
112
|
+
};
|
|
113
|
+
export {};
|