@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,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { colWave3NormFromColReverse, createDotm3x3Component, wave3PathOpacityFromNorm, } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const animationResolver = ({ isActive, col, reducedMotion, phase }) => {
|
|
4
|
+
if (!isActive) {
|
|
5
|
+
return { className: 'dmx-inactive' };
|
|
6
|
+
}
|
|
7
|
+
const path = colWave3NormFromColReverse(col);
|
|
8
|
+
const style = { '--dmx-path': path };
|
|
9
|
+
if (reducedMotion || phase === 'idle') {
|
|
10
|
+
return {
|
|
11
|
+
style: {
|
|
12
|
+
...style,
|
|
13
|
+
opacity: wave3PathOpacityFromNorm(path),
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return { className: 'dmx-path-3', style };
|
|
18
|
+
};
|
|
19
|
+
export const Dotm3x3_13 = createDotm3x3Component('Dotm3x3_13', animationResolver, 1.75);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm3x3Component } 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(2, 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.06 + (1 - ring / 2) * 0.82,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { className: 'dmx-ripple-echo-3', style };
|
|
21
|
+
};
|
|
22
|
+
export const Dotm3x3_15 = createDotm3x3Component('Dotm3x3_15', animationResolver, 1.75);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createGlyphSpin3Component } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
/** Smiley — eyes and mouth in row-major 0/1 form. */
|
|
4
|
+
const SMILEY_GLYPH = [1, 0, 1, 0, 0, 0, 0, 1, 0];
|
|
5
|
+
export const Dotm3x3_16 = createGlyphSpin3Component('Dotm3x3_16', SMILEY_GLYPH);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createGlyphSpin3Component } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
/** L-shaped corner — row-major 0/1 form. */
|
|
4
|
+
const CORNER_GLYPH = [1, 1, 0, 1, 0, 0, 1, 0, 0];
|
|
5
|
+
export const Dotm3x3_20 = createGlyphSpin3Component('Dotm3x3_20', CORNER_GLYPH);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm3x3Component } 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(2, manhattanDistance));
|
|
8
|
+
const style = { '--dmx-center-ripple-ring': ring };
|
|
9
|
+
if (reducedMotion || phase === 'idle') {
|
|
10
|
+
return {
|
|
11
|
+
style: {
|
|
12
|
+
...style,
|
|
13
|
+
opacity: 0.06 + (1 - ring / 2) * 0.82,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return { className: 'dmx-center-ripple-3', style };
|
|
18
|
+
};
|
|
19
|
+
export const Dotm3x3_6 = createDotm3x3Component('Dotm3x3_6', animationResolver, 1.75);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { colWave3NormFromCol, createDotm3x3Component, wave3PathOpacityFromNorm, } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const animationResolver = ({ isActive, col, reducedMotion, phase }) => {
|
|
4
|
+
if (!isActive) {
|
|
5
|
+
return { className: 'dmx-inactive' };
|
|
6
|
+
}
|
|
7
|
+
const path = colWave3NormFromCol(col);
|
|
8
|
+
const style = { '--dmx-path': path };
|
|
9
|
+
if (reducedMotion || phase === 'idle') {
|
|
10
|
+
return {
|
|
11
|
+
style: {
|
|
12
|
+
...style,
|
|
13
|
+
opacity: wave3PathOpacityFromNorm(path),
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return { className: 'dmx-path-3', style };
|
|
18
|
+
};
|
|
19
|
+
export const Dotm3x3_7 = createDotm3x3Component('Dotm3x3_7', animationResolver, 1.75);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm3x3Component, rowWave3NormFromRow, wave3PathOpacityFromNorm, } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const animationResolver = ({ isActive, row, reducedMotion, phase }) => {
|
|
4
|
+
if (!isActive) {
|
|
5
|
+
return { className: 'dmx-inactive' };
|
|
6
|
+
}
|
|
7
|
+
const path = rowWave3NormFromRow(row);
|
|
8
|
+
const style = { '--dmx-path': path };
|
|
9
|
+
if (reducedMotion || phase === 'idle') {
|
|
10
|
+
return {
|
|
11
|
+
style: {
|
|
12
|
+
...style,
|
|
13
|
+
opacity: wave3PathOpacityFromNorm(path),
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return { className: 'dmx-path-3', style };
|
|
18
|
+
};
|
|
19
|
+
export const Dotm3x3_8 = createDotm3x3Component('Dotm3x3_8', animationResolver, 1.75);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm3x3Component, snakePath3NormFromIndex, snakePath3OrderValue, wave3PathOpacityFromNorm, } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const animationResolver = ({ isActive, index, reducedMotion, phase }) => {
|
|
4
|
+
if (!isActive) {
|
|
5
|
+
return { className: 'dmx-inactive' };
|
|
6
|
+
}
|
|
7
|
+
const order = snakePath3OrderValue(index);
|
|
8
|
+
const path = snakePath3NormFromIndex(index);
|
|
9
|
+
const style = {
|
|
10
|
+
'--dmx-snake-order': order,
|
|
11
|
+
'--dmx-path': path,
|
|
12
|
+
};
|
|
13
|
+
if (reducedMotion || phase === 'idle') {
|
|
14
|
+
return {
|
|
15
|
+
style: {
|
|
16
|
+
...style,
|
|
17
|
+
opacity: wave3PathOpacityFromNorm(path),
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return { className: 'dmx-snake-path-3', style };
|
|
22
|
+
};
|
|
23
|
+
export const Dotm3x3_9 = createDotm3x3Component('Dotm3x3_9', animationResolver, 1.75);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } 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(animPhase, reducedMotion) {
|
|
9
|
+
return ({ row, col, phase }) => {
|
|
10
|
+
if (!isWithinCircularMask(row, col)) {
|
|
11
|
+
return { className: 'dmx-inactive' };
|
|
12
|
+
}
|
|
13
|
+
const t = reducedMotion || phase === 'idle' ? 0 : animPhase * STEP_COUNT;
|
|
14
|
+
const diagonalAxis = row + col;
|
|
15
|
+
const phaseOffset = t * HELIX_LOOP_RADIANS + diagonalAxis * 0.82;
|
|
16
|
+
const strandPerpendicular = Math.round(2 * Math.sin(phaseOffset));
|
|
17
|
+
const cellPerpendicular = col - row;
|
|
18
|
+
const distanceFromStrand = Math.abs(cellPerpendicular - strandPerpendicular);
|
|
19
|
+
if (distanceFromStrand === 0) {
|
|
20
|
+
return { style: { opacity: STRAND_OPACITY } };
|
|
21
|
+
}
|
|
22
|
+
if (distanceFromStrand === 1) {
|
|
23
|
+
return { style: { opacity: NEAR_STRAND_OPACITY } };
|
|
24
|
+
}
|
|
25
|
+
return { style: { opacity: BASE_OPACITY } };
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export const DotmCircular1 = createDotm5x5Component('DotmCircular1', makeResolver, { speed: 2.5, lockedPattern: 'full', cycleMsBase: 1700 });
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const STEP_COUNT = 30;
|
|
4
|
+
const BASE_OPACITY = 0.06;
|
|
5
|
+
const LOW_OPACITY = 0.2;
|
|
6
|
+
const MID_OPACITY = 0.48;
|
|
7
|
+
const HIGH_OPACITY = 0.94;
|
|
8
|
+
function moduloDistance(a, b, mod) {
|
|
9
|
+
const raw = Math.abs(a - b);
|
|
10
|
+
return Math.min(raw, mod - raw);
|
|
11
|
+
}
|
|
12
|
+
function makeResolver(animPhase, reducedMotion) {
|
|
13
|
+
return ({ row, col, phase }) => {
|
|
14
|
+
if (!isWithinCircularMask(row, col)) {
|
|
15
|
+
return { className: 'dmx-inactive' };
|
|
16
|
+
}
|
|
17
|
+
const x = col - 2;
|
|
18
|
+
const y = row - 2;
|
|
19
|
+
const ring = Math.round(Math.sqrt(x * x + y * y));
|
|
20
|
+
const tick = reducedMotion || phase === 'idle' ? 0 : Math.floor(animPhase * 10);
|
|
21
|
+
const cellCode = (row * 3 + col * 5 + ring * 2) % 10;
|
|
22
|
+
const d = moduloDistance(cellCode, tick, 10);
|
|
23
|
+
const parityGate = (row + col + tick) % 2 === 0;
|
|
24
|
+
let opacity = BASE_OPACITY;
|
|
25
|
+
if (d === 0) {
|
|
26
|
+
opacity = HIGH_OPACITY;
|
|
27
|
+
}
|
|
28
|
+
else if (d === 1) {
|
|
29
|
+
opacity = MID_OPACITY;
|
|
30
|
+
}
|
|
31
|
+
else if (d === 2 || parityGate) {
|
|
32
|
+
opacity = LOW_OPACITY;
|
|
33
|
+
}
|
|
34
|
+
if (x === 0 && y === 0) {
|
|
35
|
+
return { style: { opacity: Math.max(opacity, MID_OPACITY) } };
|
|
36
|
+
}
|
|
37
|
+
return { style: { opacity } };
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export const DotmCircular10 = createDotm5x5Component('DotmCircular10', makeResolver, { speed: 1.75, lockedPattern: 'full', cycleMsBase: 1600 });
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.07;
|
|
4
|
+
const MID_OPACITY = 0.3;
|
|
5
|
+
const HIGH_OPACITY = 0.95;
|
|
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 ring = Math.sqrt(x * x + y * y);
|
|
14
|
+
const t = reducedMotion || p === 'idle' ? 0 : phase * Math.PI * 2;
|
|
15
|
+
const angle = Math.atan2(y, x);
|
|
16
|
+
const moonCenterX = Math.cos(t) * 0.7;
|
|
17
|
+
const moonCenterY = Math.sin(t) * 0.7;
|
|
18
|
+
const body = Math.hypot(x - moonCenterX, y - moonCenterY);
|
|
19
|
+
const cutCenterX = moonCenterX + Math.cos(t) * 0.82;
|
|
20
|
+
const cutCenterY = moonCenterY + Math.sin(t) * 0.82;
|
|
21
|
+
const cut = Math.hypot(x - cutCenterX, y - cutCenterY);
|
|
22
|
+
const rim = Math.max(0, 1 - Math.abs(body - 1.55) / 0.35);
|
|
23
|
+
const halo = Math.max(0, 1 - Math.acos(Math.cos(angle - t)) / 0.9);
|
|
24
|
+
let opacity = BASE_OPACITY;
|
|
25
|
+
if (body < 1.55 && cut > 1.05) {
|
|
26
|
+
opacity = HIGH_OPACITY;
|
|
27
|
+
}
|
|
28
|
+
else if (rim > 0.5) {
|
|
29
|
+
opacity = MID_OPACITY + rim * 0.22;
|
|
30
|
+
}
|
|
31
|
+
else if (halo > 0.68 && ring > 1.2) {
|
|
32
|
+
opacity = MID_OPACITY;
|
|
33
|
+
}
|
|
34
|
+
return { style: { opacity: Math.min(HIGH_OPACITY, opacity) } };
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export const DotmCircular11 = createDotm5x5Component('DotmCircular11', makeResolver, { speed: 1.65, lockedPattern: 'full', cycleMsBase: 1850 });
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const STEP_COUNT = 36;
|
|
4
|
+
const BASE_OPACITY = 0.06;
|
|
5
|
+
const MID_OPACITY = 0.3;
|
|
6
|
+
const ARC_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 stepBand = Math.floor((step / STEP_COUNT) * 8) % 8;
|
|
17
|
+
const targetAngle = stepBand * (Math.PI / 4);
|
|
18
|
+
const angleDelta = Math.acos(Math.cos(angle - targetAngle));
|
|
19
|
+
const beam = Math.max(0, 1 - angleDelta / 0.42);
|
|
20
|
+
const oppositeBeam = Math.max(0, 1 - Math.acos(Math.cos(angle - (targetAngle + Math.PI))) / 0.62);
|
|
21
|
+
const spokePulse = Math.max(0, 1 - Math.abs(Math.abs(x) - Math.abs(y)) / 0.35);
|
|
22
|
+
const ringTier = ring < 1 ? 0 : ring < 2 ? 1 : 2;
|
|
23
|
+
let opacity = BASE_OPACITY;
|
|
24
|
+
if (beam > 0.78 && ringTier >= 1) {
|
|
25
|
+
opacity = ARC_OPACITY;
|
|
26
|
+
}
|
|
27
|
+
else if (beam > 0.48) {
|
|
28
|
+
opacity = 0.62;
|
|
29
|
+
}
|
|
30
|
+
else if (oppositeBeam > 0.52 && ringTier === 2) {
|
|
31
|
+
opacity = MID_OPACITY;
|
|
32
|
+
}
|
|
33
|
+
else if (spokePulse > 0.9 && ringTier > 0) {
|
|
34
|
+
opacity = MID_OPACITY;
|
|
35
|
+
}
|
|
36
|
+
if (x === 0 && y === 0) {
|
|
37
|
+
return { style: { opacity: Math.max(opacity, 0.26) } };
|
|
38
|
+
}
|
|
39
|
+
return { style: { opacity } };
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export const DotmCircular12 = createDotm5x5Component('DotmCircular12', makeResolver, { speed: 1.7, lockedPattern: 'full', cycleMsBase: 1700, steps: STEP_COUNT });
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const STEP_COUNT = 30;
|
|
4
|
+
const BASE_OPACITY = 0.07;
|
|
5
|
+
const RUNG_OPACITY = 0.95;
|
|
6
|
+
const SIDE_OPACITY = 0.56;
|
|
7
|
+
const GHOST_OPACITY = 0.28;
|
|
8
|
+
function makeResolver(animPhase, reducedMotion) {
|
|
9
|
+
return ({ row, col, phase }) => {
|
|
10
|
+
if (!isWithinCircularMask(row, col)) {
|
|
11
|
+
return { className: 'dmx-inactive' };
|
|
12
|
+
}
|
|
13
|
+
const x = col - 2;
|
|
14
|
+
const y = row - 2;
|
|
15
|
+
const phaseStep = reducedMotion || phase === 'idle' ? 0 : Math.floor(animPhase * 10);
|
|
16
|
+
const activeRow = (phaseStep + 5) % 5;
|
|
17
|
+
const rowDistance = Math.abs(row - activeRow);
|
|
18
|
+
const swing = Math.sin((phaseStep / 10) * Math.PI * 2 + y * 0.9);
|
|
19
|
+
const leftAnchor = Math.round(1 + swing);
|
|
20
|
+
const rightAnchor = 4 - leftAnchor;
|
|
21
|
+
let opacity = BASE_OPACITY;
|
|
22
|
+
if (row === activeRow && col >= leftAnchor && col <= rightAnchor) {
|
|
23
|
+
opacity = RUNG_OPACITY;
|
|
24
|
+
}
|
|
25
|
+
else if ((col === leftAnchor || col === rightAnchor) && rowDistance <= 1) {
|
|
26
|
+
opacity = SIDE_OPACITY;
|
|
27
|
+
}
|
|
28
|
+
else if ((col === leftAnchor || col === rightAnchor) && rowDistance === 2) {
|
|
29
|
+
opacity = GHOST_OPACITY;
|
|
30
|
+
}
|
|
31
|
+
if (x === 0 && y === 0 && rowDistance <= 1) {
|
|
32
|
+
return { style: { opacity: Math.max(opacity, SIDE_OPACITY) } };
|
|
33
|
+
}
|
|
34
|
+
return { style: { opacity } };
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export const DotmCircular14 = createDotm5x5Component('DotmCircular14', makeResolver, { speed: 1.75, lockedPattern: 'full', cycleMsBase: 1650 });
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const STEP_COUNT = 24;
|
|
4
|
+
const BASE_OPACITY = 0.07;
|
|
5
|
+
const MID_OPACITY = 0.34;
|
|
6
|
+
const HIGH_OPACITY = 0.95;
|
|
7
|
+
const BRAILLE_PHASES = [
|
|
8
|
+
new Set(['1,1', '2,1', '3,1', '1,3', '2,3', '3,3']), // rails
|
|
9
|
+
new Set(['1,1', '2,1', '3,1', '2,2', '1,3', '2,3', '3,3']), // center bridge
|
|
10
|
+
new Set(['1,1', '1,2', '1,3', '2,1', '2,3', '3,1', '3,2', '3,3']), // top+bottom bars
|
|
11
|
+
new Set(['1,1', '3,1', '2,2', '1,3', '3,3']), // X-cross
|
|
12
|
+
new Set(['2,1', '1,2', '3,2', '2,3']), // plus motif
|
|
13
|
+
new Set(['1,1', '2,1', '2,2', '2,3', '3,3']), // diagonal sweep
|
|
14
|
+
];
|
|
15
|
+
function makeResolver(animPhase, reducedMotion) {
|
|
16
|
+
return ({ row, col, phase }) => {
|
|
17
|
+
if (!isWithinCircularMask(row, col)) {
|
|
18
|
+
return { className: 'dmx-inactive' };
|
|
19
|
+
}
|
|
20
|
+
const x = col - 2;
|
|
21
|
+
const y = row - 2;
|
|
22
|
+
const ring = Math.sqrt(x * x + y * y);
|
|
23
|
+
const count = BRAILLE_PHASES.length;
|
|
24
|
+
const phaseIndex = reducedMotion || phase === 'idle'
|
|
25
|
+
? 0
|
|
26
|
+
: (() => {
|
|
27
|
+
const t = Number.isFinite(animPhase) ? animPhase : 0;
|
|
28
|
+
const raw = Math.floor(t * count);
|
|
29
|
+
return ((raw % count) + count) % count;
|
|
30
|
+
})();
|
|
31
|
+
const activePattern = BRAILLE_PHASES[phaseIndex];
|
|
32
|
+
const key = `${row},${col}`;
|
|
33
|
+
const inPattern = activePattern.has(key);
|
|
34
|
+
const previousIndex = (phaseIndex + BRAILLE_PHASES.length - 1) % BRAILLE_PHASES.length;
|
|
35
|
+
const inPrevPattern = BRAILLE_PHASES[previousIndex].has(key);
|
|
36
|
+
let opacity = BASE_OPACITY;
|
|
37
|
+
if (inPattern) {
|
|
38
|
+
opacity = HIGH_OPACITY;
|
|
39
|
+
}
|
|
40
|
+
else if (inPrevPattern) {
|
|
41
|
+
opacity = MID_OPACITY;
|
|
42
|
+
}
|
|
43
|
+
else if (ring < 1.1) {
|
|
44
|
+
opacity = 0.2;
|
|
45
|
+
}
|
|
46
|
+
return { style: { opacity } };
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export const DotmCircular15 = createDotm5x5Component('DotmCircular15', makeResolver, { speed: 1.65, lockedPattern: 'full', cycleMsBase: 1680 });
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const BASE_OPACITY = 0.07;
|
|
4
|
+
const MID_OPACITY = 0.34;
|
|
5
|
+
const HIGH_OPACITY = 0.95;
|
|
6
|
+
/** Discrete checker frames per loop (must stay integer for `(row + col + t) % 2`). */
|
|
7
|
+
const CHECKER_STEPS = 4;
|
|
8
|
+
function makeResolver(animPhase, reducedMotion) {
|
|
9
|
+
return ({ row, col, phase: dmxPhase }) => {
|
|
10
|
+
if (!isWithinCircularMask(row, col)) {
|
|
11
|
+
return { className: 'dmx-inactive' };
|
|
12
|
+
}
|
|
13
|
+
const holdStill = reducedMotion || dmxPhase === 'idle';
|
|
14
|
+
const t = holdStill ? 0 : Math.floor(animPhase * CHECKER_STEPS) % CHECKER_STEPS;
|
|
15
|
+
const parity = (row + col + t) % 2;
|
|
16
|
+
const brailleBias = col === 1 || col === 3;
|
|
17
|
+
const centerBias = row === 2 || col === 2;
|
|
18
|
+
let opacity = BASE_OPACITY;
|
|
19
|
+
if (parity === 0 && brailleBias) {
|
|
20
|
+
opacity = HIGH_OPACITY;
|
|
21
|
+
}
|
|
22
|
+
else if (parity === 0 || centerBias) {
|
|
23
|
+
opacity = MID_OPACITY;
|
|
24
|
+
}
|
|
25
|
+
else if (brailleBias) {
|
|
26
|
+
opacity = 0.24;
|
|
27
|
+
}
|
|
28
|
+
return { style: { opacity } };
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export const DotmCircular17 = createDotm5x5Component('DotmCircular17', makeResolver, { speed: 1.55, lockedPattern: 'full', cycleMsBase: 1500 });
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createDotm5x5Component, isWithinCircularMask, rowMajorIndex } from '../../../lib/dotmatrix-core.js';
|
|
3
|
+
const RING_PATH = [
|
|
4
|
+
rowMajorIndex(0, 1),
|
|
5
|
+
rowMajorIndex(0, 2),
|
|
6
|
+
rowMajorIndex(0, 3),
|
|
7
|
+
rowMajorIndex(1, 4),
|
|
8
|
+
rowMajorIndex(2, 4),
|
|
9
|
+
rowMajorIndex(3, 4),
|
|
10
|
+
rowMajorIndex(4, 3),
|
|
11
|
+
rowMajorIndex(4, 2),
|
|
12
|
+
rowMajorIndex(4, 1),
|
|
13
|
+
rowMajorIndex(3, 0),
|
|
14
|
+
rowMajorIndex(2, 0),
|
|
15
|
+
rowMajorIndex(1, 0),
|
|
16
|
+
];
|
|
17
|
+
const LOOP_LEN = RING_PATH.length;
|
|
18
|
+
const BASE_OPACITY = 0.08;
|
|
19
|
+
function makeResolver(_cycle, reducedMotion) {
|
|
20
|
+
return ({ index, row, col, phase }) => {
|
|
21
|
+
if (!isWithinCircularMask(row, col)) {
|
|
22
|
+
return { className: 'dmx-inactive' };
|
|
23
|
+
}
|
|
24
|
+
const onRing = RING_PATH.indexOf(index);
|
|
25
|
+
if (onRing === -1) {
|
|
26
|
+
return { style: { opacity: row === 2 && col === 2 ? 0.18 : BASE_OPACITY } };
|
|
27
|
+
}
|
|
28
|
+
if (reducedMotion || phase === 'idle') {
|
|
29
|
+
return { style: { opacity: 0.28 + (onRing / (LOOP_LEN - 1)) * 0.58 } };
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
className: 'dmx-circular2-ring',
|
|
33
|
+
style: { '--dmx-ring-order': onRing },
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export const DotmCircular2 = createDotm5x5Component('DotmCircular2', makeResolver, { speed: 1.8, lockedPattern: 'full' });
|