@kortix/ui 0.0.0-bootstrap.0 → 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 +153 -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 +874 -4
- package/skills/kortix-ui/SKILL.md +150 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask, rowMajorIndex } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const STEP_COUNT = 24;
|
|
4
|
+
const BASE_OPACITY = 0.08;
|
|
5
|
+
const RING_BASE_OPACITY = 0.2;
|
|
6
|
+
const CORE_OPACITY = 0.16;
|
|
7
|
+
const COMET_TAIL = [1, 0.78, 0.56, 0.36, 0.22];
|
|
8
|
+
const SECONDARY_COMET_SCALE = 0.72;
|
|
9
|
+
const CIRCULAR_RING_PATH = [
|
|
10
|
+
rowMajorIndex(0, 1),
|
|
11
|
+
rowMajorIndex(0, 2),
|
|
12
|
+
rowMajorIndex(0, 3),
|
|
13
|
+
rowMajorIndex(1, 4),
|
|
14
|
+
rowMajorIndex(2, 4),
|
|
15
|
+
rowMajorIndex(3, 4),
|
|
16
|
+
rowMajorIndex(4, 3),
|
|
17
|
+
rowMajorIndex(4, 2),
|
|
18
|
+
rowMajorIndex(4, 1),
|
|
19
|
+
rowMajorIndex(3, 0),
|
|
20
|
+
rowMajorIndex(2, 0),
|
|
21
|
+
rowMajorIndex(1, 0),
|
|
22
|
+
];
|
|
23
|
+
const LOOP_LEN = CIRCULAR_RING_PATH.length;
|
|
24
|
+
function makeResolver(headStep, reducedMotion) {
|
|
25
|
+
return ({ index, row, col, phase }) => {
|
|
26
|
+
if (!isWithinCircularMask(row, col)) {
|
|
27
|
+
return { className: 'dmx-inactive' };
|
|
28
|
+
}
|
|
29
|
+
const pathOrder = CIRCULAR_RING_PATH.indexOf(index);
|
|
30
|
+
const isCore = row === 2 && col === 2;
|
|
31
|
+
if (pathOrder === -1) {
|
|
32
|
+
return { style: { opacity: isCore ? CORE_OPACITY : BASE_OPACITY } };
|
|
33
|
+
}
|
|
34
|
+
if (reducedMotion || phase === 'idle') {
|
|
35
|
+
return { style: { opacity: RING_BASE_OPACITY + (pathOrder / (LOOP_LEN - 1)) * 0.56 } };
|
|
36
|
+
}
|
|
37
|
+
const leadA = Math.floor((headStep / STEP_COUNT) * LOOP_LEN) % LOOP_LEN;
|
|
38
|
+
const leadB = (leadA + Math.floor(LOOP_LEN / 2)) % LOOP_LEN;
|
|
39
|
+
let opacity = BASE_OPACITY;
|
|
40
|
+
for (let i = 0; i < COMET_TAIL.length; i += 1) {
|
|
41
|
+
const weight = COMET_TAIL[i] ?? 0;
|
|
42
|
+
const tailA = (leadA - i + LOOP_LEN) % LOOP_LEN;
|
|
43
|
+
const tailB = (leadB - i + LOOP_LEN) % LOOP_LEN;
|
|
44
|
+
if (pathOrder === tailA) {
|
|
45
|
+
opacity = Math.max(opacity, weight);
|
|
46
|
+
}
|
|
47
|
+
if (pathOrder === tailB) {
|
|
48
|
+
opacity = Math.max(opacity, weight * SECONDARY_COMET_SCALE);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return { style: { opacity: Math.min(1, opacity) } };
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export const DotmCircular3 = createDotm5x5Component('DotmCircular3', makeResolver, { speed: 1.6, lockedPattern: 'full', cycleMsBase: 1650, steps: STEP_COUNT, idleStep: 6 });
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const SWEEP_OPACITY = 0.96;
|
|
5
|
+
const NEAR_SWEEP_OPACITY = 0.36;
|
|
6
|
+
const RING_OPACITY = 0.22;
|
|
7
|
+
function makeResolver(phase, reducedMotion) {
|
|
8
|
+
return ({ row, col, phase: p }) => {
|
|
9
|
+
if (!isWithinCircularMask(row, col)) {
|
|
10
|
+
return { className: 'dmx-inactive' };
|
|
11
|
+
}
|
|
12
|
+
const centerRow = row - 2;
|
|
13
|
+
const centerCol = col - 2;
|
|
14
|
+
const radius = Math.hypot(centerRow, centerCol);
|
|
15
|
+
const theta = (reducedMotion || p === 'idle' ? 0 : phase) * Math.PI * 2;
|
|
16
|
+
const sweepX = Math.cos(theta);
|
|
17
|
+
const sweepY = Math.sin(theta);
|
|
18
|
+
const projection = centerCol * sweepX + centerRow * sweepY;
|
|
19
|
+
const perpendicular = Math.abs(centerCol * sweepY - centerRow * sweepX);
|
|
20
|
+
if (radius < 0.5) {
|
|
21
|
+
return { style: { opacity: 0.62 } };
|
|
22
|
+
}
|
|
23
|
+
if (projection > 0.3 && perpendicular < 0.55) {
|
|
24
|
+
return { style: { opacity: SWEEP_OPACITY } };
|
|
25
|
+
}
|
|
26
|
+
if (projection > 0 && perpendicular < 1.15) {
|
|
27
|
+
return { style: { opacity: NEAR_SWEEP_OPACITY } };
|
|
28
|
+
}
|
|
29
|
+
if (radius > 1.6 && radius < 2.3) {
|
|
30
|
+
return { style: { opacity: RING_OPACITY } };
|
|
31
|
+
}
|
|
32
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export const DotmCircular4 = createDotm5x5Component('DotmCircular4', makeResolver, { speed: 1.55, lockedPattern: 'full', cycleMsBase: 1800 });
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const BLADE_OPACITY = 0.94;
|
|
5
|
+
const HALO_OPACITY = 0.34;
|
|
6
|
+
function makeResolver(phase, reducedMotion) {
|
|
7
|
+
return ({ row, col, phase: p }) => {
|
|
8
|
+
if (!isWithinCircularMask(row, col)) {
|
|
9
|
+
return { className: 'dmx-inactive' };
|
|
10
|
+
}
|
|
11
|
+
const x = col - 2;
|
|
12
|
+
const y = row - 2;
|
|
13
|
+
const radius = Math.hypot(x, y);
|
|
14
|
+
const angle = Math.atan2(y, x);
|
|
15
|
+
const theta = (reducedMotion || p === 'idle' ? 0 : phase) * Math.PI * 2;
|
|
16
|
+
const pinwheel = Math.cos(angle * 4 - theta * 2.2);
|
|
17
|
+
const radialGate = Math.sin(radius * 2.1 - theta * 1.25);
|
|
18
|
+
if (radius < 0.6) {
|
|
19
|
+
return { style: { opacity: 0.66 } };
|
|
20
|
+
}
|
|
21
|
+
if (pinwheel > 0.48 && radialGate > -0.25) {
|
|
22
|
+
return { style: { opacity: BLADE_OPACITY } };
|
|
23
|
+
}
|
|
24
|
+
if (pinwheel > 0.1) {
|
|
25
|
+
return { style: { opacity: HALO_OPACITY } };
|
|
26
|
+
}
|
|
27
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const DotmCircular5 = createDotm5x5Component('DotmCircular5', makeResolver, { speed: 1.7, lockedPattern: 'full', cycleMsBase: 1650 });
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const ORBIT_OPACITY = 0.96;
|
|
5
|
+
const NEAR_ORBIT_OPACITY = 0.34;
|
|
6
|
+
function makeResolver(phase, reducedMotion) {
|
|
7
|
+
return ({ row, col, phase: p }) => {
|
|
8
|
+
if (!isWithinCircularMask(row, col)) {
|
|
9
|
+
return { className: 'dmx-inactive' };
|
|
10
|
+
}
|
|
11
|
+
const x = col - 2;
|
|
12
|
+
const y = row - 2;
|
|
13
|
+
const t = reducedMotion || p === 'idle' ? 0 : phase * Math.PI * 2;
|
|
14
|
+
const angle = Math.atan2(y, x);
|
|
15
|
+
const ring = Math.sqrt(x * x + y * y);
|
|
16
|
+
const angularPhase = ((angle - t * 0.95 + Math.PI * 4) % (Math.PI * 2)) / ((Math.PI * 2) / 3);
|
|
17
|
+
const sectorPos = angularPhase - Math.floor(angularPhase);
|
|
18
|
+
const sectorPulse = Math.max(0, 1 - Math.abs(sectorPos - 0.5) * 2);
|
|
19
|
+
const ringPhase = 0.5 + 0.5 * Math.cos(ring * 3.2 + t * 1.7);
|
|
20
|
+
const score = 0.74 * sectorPulse + 0.26 * ringPhase;
|
|
21
|
+
let opacity = BASE_OPACITY;
|
|
22
|
+
if (score > 0.84) {
|
|
23
|
+
opacity = ORBIT_OPACITY;
|
|
24
|
+
}
|
|
25
|
+
else if (score > 0.63) {
|
|
26
|
+
opacity = 0.62;
|
|
27
|
+
}
|
|
28
|
+
else if (score > 0.44) {
|
|
29
|
+
opacity = NEAR_ORBIT_OPACITY;
|
|
30
|
+
}
|
|
31
|
+
if (x === 0 && y === 0) {
|
|
32
|
+
return { style: { opacity: Math.max(opacity, NEAR_ORBIT_OPACITY) } };
|
|
33
|
+
}
|
|
34
|
+
return { style: { opacity } };
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export const DotmCircular6 = createDotm5x5Component('DotmCircular6', makeResolver, { speed: 1.6, lockedPattern: 'full', cycleMsBase: 1700 });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const GATE_OPACITY = 0.92;
|
|
5
|
+
function makeResolver(phase, reducedMotion) {
|
|
6
|
+
return ({ row, col, phase: p }) => {
|
|
7
|
+
if (!isWithinCircularMask(row, col)) {
|
|
8
|
+
return { className: 'dmx-inactive' };
|
|
9
|
+
}
|
|
10
|
+
const x = col - 2;
|
|
11
|
+
const y = row - 2;
|
|
12
|
+
const t = reducedMotion || p === 'idle' ? 0 : phase * Math.PI * 2;
|
|
13
|
+
const ring = Math.sqrt(x * x + y * y);
|
|
14
|
+
const angle = Math.atan2(y, x);
|
|
15
|
+
const petalWave = 0.5 + 0.5 * Math.cos(5 * angle - t * 1.7);
|
|
16
|
+
const ringWave = 0.5 + 0.5 * Math.cos(ring * 3.3 - t * 1.2);
|
|
17
|
+
const chordWave = 0.5 + 0.5 * Math.cos((x + y) * 1.6 + t * 1.35);
|
|
18
|
+
// Sharpen contrast so lit cells form clear, visible groups.
|
|
19
|
+
const petalGate = Math.pow(petalWave, 2.2);
|
|
20
|
+
const blend = 0.68 * petalGate + 0.22 * ringWave + 0.1 * chordWave;
|
|
21
|
+
const opacity = BASE_OPACITY + (GATE_OPACITY - BASE_OPACITY) * blend;
|
|
22
|
+
return { style: { opacity } };
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export const DotmCircular7 = createDotm5x5Component('DotmCircular7', makeResolver, { speed: 1.8, lockedPattern: 'full', cycleMsBase: 1600 });
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const PULSE_CORE = 0.95;
|
|
5
|
+
const PULSE_RING = 0.44;
|
|
6
|
+
function makeResolver(phase, reducedMotion) {
|
|
7
|
+
return ({ row, col, phase: p }) => {
|
|
8
|
+
if (!isWithinCircularMask(row, col)) {
|
|
9
|
+
return { className: 'dmx-inactive' };
|
|
10
|
+
}
|
|
11
|
+
const x = col - 2;
|
|
12
|
+
const y = row - 2;
|
|
13
|
+
const radius = Math.hypot(x, y);
|
|
14
|
+
const beat = reducedMotion || p === 'idle' ? 0 : Math.sin(phase * Math.PI * 2);
|
|
15
|
+
const spike = reducedMotion || p === 'idle' ? 0 : Math.sin(phase * Math.PI * 4);
|
|
16
|
+
const pulse = Math.max(0, beat) + Math.max(0, spike) * 0.55;
|
|
17
|
+
if (radius < 0.55) {
|
|
18
|
+
return { style: { opacity: Math.min(1, 0.35 + pulse * PULSE_CORE) } };
|
|
19
|
+
}
|
|
20
|
+
if (radius < 1.65) {
|
|
21
|
+
return { style: { opacity: 0.16 + pulse * PULSE_RING } };
|
|
22
|
+
}
|
|
23
|
+
return { style: { opacity: BASE_OPACITY + pulse * 0.08 } };
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export const DotmCircular8 = createDotm5x5Component('DotmCircular8', makeResolver, { speed: 1.95, lockedPattern: 'full', cycleMsBase: 1400 });
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const STEP_COUNT = 36;
|
|
4
|
+
const BASE_OPACITY = 0.07;
|
|
5
|
+
const MID_OPACITY = 0.28;
|
|
6
|
+
const STAR_OPACITY = 0.96;
|
|
7
|
+
function makeResolver(step, reducedMotion) {
|
|
8
|
+
return ({ row, col, phase }) => {
|
|
9
|
+
if (!isWithinCircularMask(row, col)) {
|
|
10
|
+
return { className: 'dmx-inactive' };
|
|
11
|
+
}
|
|
12
|
+
const x = col - 2;
|
|
13
|
+
const y = row - 2;
|
|
14
|
+
const ring = Math.sqrt(x * x + y * y);
|
|
15
|
+
const angle = Math.atan2(y, x);
|
|
16
|
+
const cardinalCenters = [0, Math.PI / 2, Math.PI, -Math.PI / 2];
|
|
17
|
+
const beaconIndex = Math.floor((step / STEP_COUNT) * cardinalCenters.length) % cardinalCenters.length;
|
|
18
|
+
const activeCenter = cardinalCenters[beaconIndex];
|
|
19
|
+
const oppositeCenter = cardinalCenters[(beaconIndex + 2) % cardinalCenters.length];
|
|
20
|
+
const distanceToActive = Math.acos(Math.cos(angle - activeCenter));
|
|
21
|
+
const distanceToOpposite = Math.acos(Math.cos(angle - oppositeCenter));
|
|
22
|
+
const activeBeam = Math.max(0, 1 - distanceToActive / 0.5);
|
|
23
|
+
const oppositeBeam = Math.max(0, 1 - distanceToOpposite / 0.65);
|
|
24
|
+
const ringTier = Math.round(ring);
|
|
25
|
+
let opacity = BASE_OPACITY;
|
|
26
|
+
if (activeBeam > 0.8 && ringTier >= 2) {
|
|
27
|
+
opacity = STAR_OPACITY;
|
|
28
|
+
}
|
|
29
|
+
else if (activeBeam > 0.45 && ringTier >= 1) {
|
|
30
|
+
opacity = 0.62;
|
|
31
|
+
}
|
|
32
|
+
else if (oppositeBeam > 0.5 && ringTier >= 1) {
|
|
33
|
+
opacity = MID_OPACITY;
|
|
34
|
+
}
|
|
35
|
+
if (x === 0 && y === 0) {
|
|
36
|
+
return { style: { opacity: Math.max(opacity, 0.24) } };
|
|
37
|
+
}
|
|
38
|
+
return { style: { opacity } };
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export const DotmCircular9 = createDotm5x5Component('DotmCircular9', makeResolver, { speed: 5.55, lockedPattern: 'full', cycleMsBase: 1900, steps: STEP_COUNT });
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, trBlPathNormFromIndex } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const animationResolver = ({ isActive, index, row, col, reducedMotion, phase, }) => {
|
|
4
|
+
if (!isActive) {
|
|
5
|
+
return { className: 'dmx-inactive' };
|
|
6
|
+
}
|
|
7
|
+
const path = trBlPathNormFromIndex(index);
|
|
8
|
+
const slice = row + (4 - col);
|
|
9
|
+
const parity = slice % 2;
|
|
10
|
+
const style = {
|
|
11
|
+
'--dmx-path': path,
|
|
12
|
+
'--dmx-diagonal-parity': parity,
|
|
13
|
+
};
|
|
14
|
+
if (reducedMotion || phase === 'idle') {
|
|
15
|
+
return {
|
|
16
|
+
style: {
|
|
17
|
+
...style,
|
|
18
|
+
opacity: parity === 0 ? 0.88 : 0.14,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return { className: 'dmx-diagonal-alt-sweep', style };
|
|
23
|
+
};
|
|
24
|
+
function makeResolver() {
|
|
25
|
+
return animationResolver;
|
|
26
|
+
}
|
|
27
|
+
export const DotmSquare1 = createDotm5x5Component('DotmSquare1', makeResolver, { speed: 1.1 });
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, MATRIX_SIZE } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const ROWS = MATRIX_SIZE;
|
|
4
|
+
const BASE_OPACITY = 0.08;
|
|
5
|
+
const PEAK_OPACITY = 1;
|
|
6
|
+
const DECAY = 0.72;
|
|
7
|
+
const COL_WARP = 0.07;
|
|
8
|
+
function makeResolver(cycle, reducedMotion) {
|
|
9
|
+
return ({ isActive, row, col, phase }) => {
|
|
10
|
+
if (!isActive) {
|
|
11
|
+
return { className: 'dmx-inactive' };
|
|
12
|
+
}
|
|
13
|
+
if (reducedMotion || phase === 'idle') {
|
|
14
|
+
const falloff = (ROWS - 1 - row) / Math.max(1, ROWS - 1);
|
|
15
|
+
return { style: { opacity: BASE_OPACITY + falloff * 0.38 } };
|
|
16
|
+
}
|
|
17
|
+
const colGain = 1 + COL_WARP * Math.sin(col * 1.72 + cycle * 0.61);
|
|
18
|
+
if (row > cycle) {
|
|
19
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
20
|
+
}
|
|
21
|
+
const age = cycle - row;
|
|
22
|
+
const trail = Math.exp(-age * DECAY);
|
|
23
|
+
const opacity = BASE_OPACITY + (PEAK_OPACITY - BASE_OPACITY) * trail * colGain;
|
|
24
|
+
return { style: { opacity: Math.min(PEAK_OPACITY, opacity) } };
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export const DotmSquare10 = createDotm5x5Component('DotmSquare10', makeResolver, { speed: 2.5, cycleMsBase: 1500, steps: ROWS });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const animationResolver = ({ isActive, manhattanDistance, reducedMotion, phase, }) => {
|
|
4
|
+
if (!isActive) {
|
|
5
|
+
return { className: 'dmx-inactive' };
|
|
6
|
+
}
|
|
7
|
+
const ring = Math.max(0, Math.min(4, manhattanDistance));
|
|
8
|
+
const style = {
|
|
9
|
+
'--dmx-ripple-ring': ring,
|
|
10
|
+
'--dmx-ripple-parity': ring % 2,
|
|
11
|
+
};
|
|
12
|
+
if (reducedMotion || phase === 'idle') {
|
|
13
|
+
return {
|
|
14
|
+
style: {
|
|
15
|
+
...style,
|
|
16
|
+
opacity: 0.2 + (1 - ring / 4) * 0.72,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { className: 'dmx-ripple-echo', style };
|
|
21
|
+
};
|
|
22
|
+
function makeResolver() {
|
|
23
|
+
return animationResolver;
|
|
24
|
+
}
|
|
25
|
+
export const DotmSquare11 = createDotm5x5Component('DotmSquare11', makeResolver, { speed: 1.25 });
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
// User-defined origin is cell (2,2) in a 1-based 5x5 grid => (row=1,col=1) in zero-based coords.
|
|
4
|
+
const ORIGIN_ROW = 1;
|
|
5
|
+
const ORIGIN_COL = 1;
|
|
6
|
+
const MAX_MANHATTAN = 6;
|
|
7
|
+
const animationResolver = ({ isActive, row, col, reducedMotion, phase }) => {
|
|
8
|
+
if (!isActive) {
|
|
9
|
+
return { className: 'dmx-inactive' };
|
|
10
|
+
}
|
|
11
|
+
const ring = Math.max(0, Math.min(MAX_MANHATTAN, Math.abs(row - ORIGIN_ROW) + Math.abs(col - ORIGIN_COL)));
|
|
12
|
+
const style = {
|
|
13
|
+
'--dmx-center-ripple-ring': ring,
|
|
14
|
+
};
|
|
15
|
+
if (reducedMotion || phase === 'idle') {
|
|
16
|
+
return {
|
|
17
|
+
style: {
|
|
18
|
+
...style,
|
|
19
|
+
opacity: 0.2 + (1 - ring / MAX_MANHATTAN) * 0.75,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return { className: 'dmx-center-origin-ripple', style };
|
|
24
|
+
};
|
|
25
|
+
function makeResolver() {
|
|
26
|
+
return animationResolver;
|
|
27
|
+
}
|
|
28
|
+
export const DotmSquare12 = createDotm5x5Component('DotmSquare12', makeResolver, { speed: 1.35 });
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, rowMajorIndex } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const ON_OPACITY = 0.56;
|
|
5
|
+
const PEAK_OPACITY = 1;
|
|
6
|
+
const FRAME_MASKS = [
|
|
7
|
+
// N
|
|
8
|
+
'..x..' + '..x..' + '..o..' + '.....' + '.....',
|
|
9
|
+
// NE
|
|
10
|
+
'....x' + '...x.' + '..o..' + '.....' + '.....',
|
|
11
|
+
// E
|
|
12
|
+
'.....' + '.....' + '..oxx' + '.....' + '.....',
|
|
13
|
+
// SE
|
|
14
|
+
'.....' + '.....' + '..o..' + '...x.' + '....x',
|
|
15
|
+
// S
|
|
16
|
+
'.....' + '.....' + '..o..' + '..x..' + '..x..',
|
|
17
|
+
// SW
|
|
18
|
+
'.....' + '.....' + '..o..' + '.x...' + 'x....',
|
|
19
|
+
// W
|
|
20
|
+
'.....' + '.....' + 'xxo..' + '.....' + '.....',
|
|
21
|
+
// NW
|
|
22
|
+
'x....' + '.x...' + '..o..' + '.....' + '.....',
|
|
23
|
+
];
|
|
24
|
+
const FRAME_SEQUENCE = [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7];
|
|
25
|
+
function maskCell(mask, row, col) {
|
|
26
|
+
return mask[rowMajorIndex(row, col)] ?? '.';
|
|
27
|
+
}
|
|
28
|
+
function makeResolver(cycle, reducedMotion) {
|
|
29
|
+
const frameIndex = FRAME_SEQUENCE[cycle] ?? 0;
|
|
30
|
+
const mask = FRAME_MASKS[frameIndex] ?? FRAME_MASKS[0];
|
|
31
|
+
return ({ isActive, row, col }) => {
|
|
32
|
+
if (!isActive) {
|
|
33
|
+
return { className: 'dmx-inactive' };
|
|
34
|
+
}
|
|
35
|
+
const cell = maskCell(mask, row, col);
|
|
36
|
+
if (cell === 'x') {
|
|
37
|
+
return { style: { opacity: PEAK_OPACITY } };
|
|
38
|
+
}
|
|
39
|
+
if (cell === 'o') {
|
|
40
|
+
return { style: { opacity: ON_OPACITY } };
|
|
41
|
+
}
|
|
42
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export const DotmSquare13 = createDotm5x5Component('DotmSquare13', makeResolver, { speed: 1.85, cycleMsBase: 1550, steps: FRAME_SEQUENCE.length });
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, rowMajorIndex } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const MID_OPACITY = 0.52;
|
|
5
|
+
const PEAK_OPACITY = 1;
|
|
6
|
+
const SMOOTH_TRANSITION = 'opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)';
|
|
7
|
+
const FRAME_MASKS = [
|
|
8
|
+
// Diagonal star
|
|
9
|
+
'x...x' + '.x.x.' + '..o..' + '.x.x.' + 'x...x',
|
|
10
|
+
// Diamond bloom
|
|
11
|
+
'..x..' + '.oxo.' + 'xooox' + '.oxo.' + '..x..',
|
|
12
|
+
// Petal ring
|
|
13
|
+
'.x.x.' + 'x.o.x' + '..o..' + 'x.o.x' + '.x.x.',
|
|
14
|
+
// Crossed lattice
|
|
15
|
+
'x.x.x' + '.o.o.' + 'x.o.x' + '.o.o.' + 'x.x.x',
|
|
16
|
+
];
|
|
17
|
+
const FRAME_SEQUENCE = [0, 1, 2, 3, 2, 1];
|
|
18
|
+
function maskCell(mask, row, col) {
|
|
19
|
+
return mask[rowMajorIndex(row, col)] ?? '.';
|
|
20
|
+
}
|
|
21
|
+
function makeResolver(cycle, reducedMotion) {
|
|
22
|
+
const frameIndex = FRAME_SEQUENCE[cycle] ?? 0;
|
|
23
|
+
const mask = FRAME_MASKS[frameIndex] ?? FRAME_MASKS[0];
|
|
24
|
+
return ({ isActive, row, col }) => {
|
|
25
|
+
if (!isActive) {
|
|
26
|
+
return { className: 'dmx-inactive' };
|
|
27
|
+
}
|
|
28
|
+
const cell = maskCell(mask, row, col);
|
|
29
|
+
if (cell === 'x') {
|
|
30
|
+
return { style: { opacity: PEAK_OPACITY, transition: SMOOTH_TRANSITION } };
|
|
31
|
+
}
|
|
32
|
+
if (cell === 'o') {
|
|
33
|
+
return { style: { opacity: MID_OPACITY, transition: SMOOTH_TRANSITION } };
|
|
34
|
+
}
|
|
35
|
+
return { style: { opacity: BASE_OPACITY, transition: SMOOTH_TRANSITION } };
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export const DotmSquare14 = createDotm5x5Component('DotmSquare14', makeResolver, { speed: 1.25, size: 14, dotSize: 2, cycleMsBase: 1700, steps: FRAME_SEQUENCE.length });
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const STRAND_OPACITY = 1;
|
|
5
|
+
const BRIDGE_OPACITY = 0.58;
|
|
6
|
+
const NEAR_STRAND_OPACITY = 0.24;
|
|
7
|
+
/** Integer full sin periods per matrix cycle so phase 0 ≡ phase 1 (no wrap glitch). */
|
|
8
|
+
const STRAND_LOOPS = 2;
|
|
9
|
+
function makeResolver(cycle, reducedMotion) {
|
|
10
|
+
return ({ isActive, row, col, phase }) => {
|
|
11
|
+
if (!isActive) {
|
|
12
|
+
return { className: 'dmx-inactive' };
|
|
13
|
+
}
|
|
14
|
+
const u = reducedMotion || phase === 'idle' ? 0 : cycle;
|
|
15
|
+
const rowPhase = u * STRAND_LOOPS * 2 * Math.PI + row * 1.24;
|
|
16
|
+
const left = Math.round(1 + Math.sin(rowPhase));
|
|
17
|
+
const right = 4 - left;
|
|
18
|
+
const bridgeOn = Math.cos(rowPhase * 2) > 0.82;
|
|
19
|
+
if (col === left || col === right) {
|
|
20
|
+
return { style: { opacity: STRAND_OPACITY } };
|
|
21
|
+
}
|
|
22
|
+
if (bridgeOn && col > left && col < right) {
|
|
23
|
+
return { style: { opacity: BRIDGE_OPACITY } };
|
|
24
|
+
}
|
|
25
|
+
if (Math.abs(col - left) === 1 || Math.abs(col - right) === 1) {
|
|
26
|
+
return { style: { opacity: NEAR_STRAND_OPACITY } };
|
|
27
|
+
}
|
|
28
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export const DotmSquare15 = createDotm5x5Component('DotmSquare15', makeResolver, { speed: 1.25, cycleMsBase: 1600 });
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const STRAND_OPACITY = 1;
|
|
5
|
+
const BRIDGE_OPACITY = 0.58;
|
|
6
|
+
const NEAR_STRAND_OPACITY = 0.24;
|
|
7
|
+
const STEP_COUNT = 20;
|
|
8
|
+
const HELIX_LOOP_RADIANS = (Math.PI * 2) / (STEP_COUNT - 1);
|
|
9
|
+
function makeResolver(cycle, reducedMotion) {
|
|
10
|
+
return ({ isActive, row, col, phase }) => {
|
|
11
|
+
if (!isActive) {
|
|
12
|
+
return { className: 'dmx-inactive' };
|
|
13
|
+
}
|
|
14
|
+
const t = reducedMotion || phase === 'idle' ? 0 : cycle * STEP_COUNT;
|
|
15
|
+
// Make first and last discrete frames identical to avoid loop jank.
|
|
16
|
+
const rowPhase = t * HELIX_LOOP_RADIANS + row * 1.24;
|
|
17
|
+
// Tighter center-band helix (3-column footprint).
|
|
18
|
+
const left = Math.round(1.5 + 0.5 * Math.sin(rowPhase));
|
|
19
|
+
const right = 4 - left;
|
|
20
|
+
const bridgeOn = Math.cos(rowPhase * 2) > 0.82;
|
|
21
|
+
if (col === left || col === right) {
|
|
22
|
+
return { style: { opacity: STRAND_OPACITY } };
|
|
23
|
+
}
|
|
24
|
+
if (bridgeOn && col > left && col < right) {
|
|
25
|
+
return { style: { opacity: BRIDGE_OPACITY } };
|
|
26
|
+
}
|
|
27
|
+
if (Math.abs(col - left) === 1 || Math.abs(col - right) === 1) {
|
|
28
|
+
return { style: { opacity: NEAR_STRAND_OPACITY } };
|
|
29
|
+
}
|
|
30
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export const DotmSquare16 = createDotm5x5Component('DotmSquare16', makeResolver, { speed: 2.5, cycleMsBase: 1400 });
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.08;
|
|
4
|
+
const STRAND_OPACITY = 1;
|
|
5
|
+
const NEAR_STRAND_OPACITY = 0.24;
|
|
6
|
+
const STEP_COUNT = 20;
|
|
7
|
+
const HELIX_LOOP_RADIANS = (Math.PI * 2) / (STEP_COUNT - 1);
|
|
8
|
+
function makeResolver(cycle, reducedMotion) {
|
|
9
|
+
return ({ isActive, row, col, phase }) => {
|
|
10
|
+
if (!isActive) {
|
|
11
|
+
return { className: 'dmx-inactive' };
|
|
12
|
+
}
|
|
13
|
+
const t = reducedMotion || phase === 'idle' ? 0 : cycle * STEP_COUNT;
|
|
14
|
+
// Make first and last discrete frames identical to avoid loop jank.
|
|
15
|
+
const rowPhase = t * HELIX_LOOP_RADIANS + row * 1.24;
|
|
16
|
+
// One helix strand only, sweeping across full 5-column width.
|
|
17
|
+
const strandCol = Math.round(2 + 2 * Math.sin(rowPhase));
|
|
18
|
+
if (col === strandCol) {
|
|
19
|
+
return { style: { opacity: STRAND_OPACITY } };
|
|
20
|
+
}
|
|
21
|
+
if (Math.abs(col - strandCol) === 1) {
|
|
22
|
+
return { style: { opacity: NEAR_STRAND_OPACITY } };
|
|
23
|
+
}
|
|
24
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export const DotmSquare17 = createDotm5x5Component('DotmSquare17', makeResolver, { speed: 2.5, cycleMsBase: 1600 });
|