magnaui 0.1.0
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/LICENSE +38 -0
- package/LICENSES/Apache-2.0.txt +202 -0
- package/LICENSES/Libraries.dev-MIT.txt +21 -0
- package/LICENSES/Tiptap-MIT.txt +21 -0
- package/LICENSES/metal-fx-NOTICE.txt +22 -0
- package/LICENSES/three-MIT.txt +21 -0
- package/README.md +73 -0
- package/THIRD_PARTY_NOTICES.md +72 -0
- package/dist/assets/agent-studio.png +0 -0
- package/dist/assets/api-studio.png +0 -0
- package/dist/assets/app-store.png +0 -0
- package/dist/assets/approvals.png +0 -0
- package/dist/assets/assistant.png +0 -0
- package/dist/assets/brain.png +0 -0
- package/dist/assets/browser.png +0 -0
- package/dist/assets/checkbox/check.svg +3 -0
- package/dist/assets/checkbox/indeterminate.svg +3 -0
- package/dist/assets/code.png +0 -0
- package/dist/assets/connect-ai.png +0 -0
- package/dist/assets/connections.png +0 -0
- package/dist/assets/database.png +0 -0
- package/dist/assets/display/06153.svg +5 -0
- package/dist/assets/display/106a6.svg +22 -0
- package/dist/assets/display/16525.svg +5 -0
- package/dist/assets/display/18a45.svg +5 -0
- package/dist/assets/display/1c133.svg +5 -0
- package/dist/assets/display/1c6fa.svg +5 -0
- package/dist/assets/display/1db47.svg +5 -0
- package/dist/assets/display/237a6.svg +5 -0
- package/dist/assets/display/27ca8.svg +5 -0
- package/dist/assets/display/347ef.svg +22 -0
- package/dist/assets/display/35edd.svg +5 -0
- package/dist/assets/display/38def.svg +5 -0
- package/dist/assets/display/3a834.svg +5 -0
- package/dist/assets/display/3e51d.svg +5 -0
- package/dist/assets/display/3f95e.svg +5 -0
- package/dist/assets/display/400d1.svg +5 -0
- package/dist/assets/display/4239a.svg +5 -0
- package/dist/assets/display/4477e.svg +22 -0
- package/dist/assets/display/46574.svg +5 -0
- package/dist/assets/display/469e4.svg +5 -0
- package/dist/assets/display/48559.svg +22 -0
- package/dist/assets/display/4e103.svg +22 -0
- package/dist/assets/display/4ef80.svg +5 -0
- package/dist/assets/display/51b32.svg +22 -0
- package/dist/assets/display/5320a.svg +5 -0
- package/dist/assets/display/56a7a.svg +22 -0
- package/dist/assets/display/56cab.svg +5 -0
- package/dist/assets/display/5fc70.svg +22 -0
- package/dist/assets/display/60ab5.svg +22 -0
- package/dist/assets/display/60c44.svg +5 -0
- package/dist/assets/display/61721.svg +5 -0
- package/dist/assets/display/648b1.svg +5 -0
- package/dist/assets/display/65aad.svg +5 -0
- package/dist/assets/display/665bc.svg +5 -0
- package/dist/assets/display/691ac.svg +22 -0
- package/dist/assets/display/6a48e.svg +5 -0
- package/dist/assets/display/6af80.svg +22 -0
- package/dist/assets/display/6c384.svg +5 -0
- package/dist/assets/display/6c7fb.svg +5 -0
- package/dist/assets/display/6ce08.svg +22 -0
- package/dist/assets/display/76be1.svg +5 -0
- package/dist/assets/display/79287.svg +5 -0
- package/dist/assets/display/7ea85.svg +5 -0
- package/dist/assets/display/7eeaf.svg +5 -0
- package/dist/assets/display/82602.svg +5 -0
- package/dist/assets/display/8a43e.svg +5 -0
- package/dist/assets/display/8bdb8.svg +22 -0
- package/dist/assets/display/8d235.svg +5 -0
- package/dist/assets/display/90498.svg +22 -0
- package/dist/assets/display/908e9.svg +5 -0
- package/dist/assets/display/90942.svg +5 -0
- package/dist/assets/display/943fb.svg +5 -0
- package/dist/assets/display/96ddd.svg +22 -0
- package/dist/assets/display/9e5a0.svg +22 -0
- package/dist/assets/display/9e9ac.svg +5 -0
- package/dist/assets/display/a35a7.svg +22 -0
- package/dist/assets/display/af15f.svg +5 -0
- package/dist/assets/display/b04fe.svg +5 -0
- package/dist/assets/display/b0925.svg +5 -0
- package/dist/assets/display/b464b.svg +5 -0
- package/dist/assets/display/b8efe.svg +5 -0
- package/dist/assets/display/bbddb.svg +5 -0
- package/dist/assets/display/bd61c.svg +5 -0
- package/dist/assets/display/be577.svg +5 -0
- package/dist/assets/display/bf02d.svg +5 -0
- package/dist/assets/display/bf1dc.svg +5 -0
- package/dist/assets/display/c70b6.svg +5 -0
- package/dist/assets/display/c8a01.svg +5 -0
- package/dist/assets/display/cb00b.svg +22 -0
- package/dist/assets/display/cecfd.svg +5 -0
- package/dist/assets/display/d2cc2.svg +5 -0
- package/dist/assets/display/d428d.svg +22 -0
- package/dist/assets/display/d71e2.svg +22 -0
- package/dist/assets/display/d8f1d.svg +22 -0
- package/dist/assets/display/d92e5.svg +5 -0
- package/dist/assets/display/d9698.svg +5 -0
- package/dist/assets/display/e542b.svg +5 -0
- package/dist/assets/display/e59af.svg +5 -0
- package/dist/assets/display/e5a41.svg +5 -0
- package/dist/assets/display/e894a.svg +5 -0
- package/dist/assets/display/ea9e5.svg +5 -0
- package/dist/assets/display/eac01.svg +5 -0
- package/dist/assets/display/ec734.svg +5 -0
- package/dist/assets/display/edb55.svg +5 -0
- package/dist/assets/display/ee164.svg +5 -0
- package/dist/assets/display/f01d5.svg +5 -0
- package/dist/assets/display/f479a.svg +22 -0
- package/dist/assets/display/f8ebb.svg +22 -0
- package/dist/assets/display/fb8ab.svg +5 -0
- package/dist/assets/display/fbdce.svg +5 -0
- package/dist/assets/docs.png +0 -0
- package/dist/assets/editor/align-left.svg +5 -0
- package/dist/assets/editor/arrow-down.svg +5 -0
- package/dist/assets/editor/arrow-up.svg +5 -0
- package/dist/assets/editor/at.svg +5 -0
- package/dist/assets/editor/bold-active.svg +5 -0
- package/dist/assets/editor/bold-strong.svg +5 -0
- package/dist/assets/editor/bold.svg +5 -0
- package/dist/assets/editor/comment.svg +5 -0
- package/dist/assets/editor/divider-more.svg +5 -0
- package/dist/assets/editor/divider.svg +5 -0
- package/dist/assets/editor/duration-check.svg +3 -0
- package/dist/assets/editor/italic.svg +5 -0
- package/dist/assets/editor/link.svg +5 -0
- package/dist/assets/editor/more.svg +5 -0
- package/dist/assets/editor/status-available.svg +5 -0
- package/dist/assets/editor/status-busy.svg +5 -0
- package/dist/assets/editor/status-disabled.svg +5 -0
- package/dist/assets/editor/status-in-meeting.svg +5 -0
- package/dist/assets/editor/status-offline.svg +5 -0
- package/dist/assets/editor/strike.svg +5 -0
- package/dist/assets/editor/time-check.svg +3 -0
- package/dist/assets/editor/underline.svg +5 -0
- package/dist/assets/expenses.png +0 -0
- package/dist/assets/feeds/activity-more.svg +5 -0
- package/dist/assets/feeds/activity-user.svg +5 -0
- package/dist/assets/feeds/attachment.svg +5 -0
- package/dist/assets/feeds/calendar.svg +5 -0
- package/dist/assets/feeds/comment.svg +5 -0
- package/dist/assets/feeds/download-hover.svg +5 -0
- package/dist/assets/feeds/download.svg +5 -0
- package/dist/assets/feeds/filter.svg +5 -0
- package/dist/assets/feeds/header-calendar.svg +5 -0
- package/dist/assets/feeds/notification-attachment.svg +5 -0
- package/dist/assets/feeds/notification-company.svg +17 -0
- package/dist/assets/feeds/notification-filter.svg +5 -0
- package/dist/assets/feeds/notification-more.svg +5 -0
- package/dist/assets/feeds/search.svg +5 -0
- package/dist/assets/feeds/selected-filter-active.svg +5 -0
- package/dist/assets/feeds/selected-filter.svg +5 -0
- package/dist/assets/feeds/settings.svg +5 -0
- package/dist/assets/feeds/sort.svg +5 -0
- package/dist/assets/feeds/status-error.svg +5 -0
- package/dist/assets/feeds/status-pending.svg +5 -0
- package/dist/assets/feeds/status-success.svg +5 -0
- package/dist/assets/feeds/status-warning.svg +5 -0
- package/dist/assets/feeds/upload-avatar-empty56.svg +13 -0
- package/dist/assets/feeds/upload-avatar-empty64.svg +13 -0
- package/dist/assets/feeds/upload-cancel.svg +5 -0
- package/dist/assets/feeds/upload-company-empty.svg +42 -0
- package/dist/assets/feeds/upload-company.svg +17 -0
- package/dist/assets/feeds/upload-delete-error.svg +5 -0
- package/dist/assets/feeds/upload-delete.svg +5 -0
- package/dist/assets/feeds/upload-error.svg +5 -0
- package/dist/assets/feeds/upload-loading.svg +5 -0
- package/dist/assets/feeds/upload-success.svg +5 -0
- package/dist/assets/feeds/vertical-arrow.svg +5 -0
- package/dist/assets/feeds/vertical-calendar-active.svg +5 -0
- package/dist/assets/feeds/vertical-calendar-hover.svg +5 -0
- package/dist/assets/feeds/vertical-calendar.svg +5 -0
- package/dist/assets/file.png +0 -0
- package/dist/assets/folder.png +0 -0
- package/dist/assets/forms/07b3a.png +0 -0
- package/dist/assets/forms/09fe0.svg +5 -0
- package/dist/assets/forms/11a76.svg +5 -0
- package/dist/assets/forms/185ae.svg +5 -0
- package/dist/assets/forms/1f174.svg +5 -0
- package/dist/assets/forms/29541.svg +5 -0
- package/dist/assets/forms/2b6f8.svg +5 -0
- package/dist/assets/forms/36c22.svg +5 -0
- package/dist/assets/forms/4cb9a.svg +5 -0
- package/dist/assets/forms/4ff30.png +0 -0
- package/dist/assets/forms/537d2.svg +5 -0
- package/dist/assets/forms/60456.svg +5 -0
- package/dist/assets/forms/657e1.svg +5 -0
- package/dist/assets/forms/73539.svg +5 -0
- package/dist/assets/forms/76214.svg +5 -0
- package/dist/assets/forms/7bd9a.svg +5 -0
- package/dist/assets/forms/7c034.svg +5 -0
- package/dist/assets/forms/86e36.svg +5 -0
- package/dist/assets/forms/8d97b.svg +5 -0
- package/dist/assets/forms/90a18.svg +5 -0
- package/dist/assets/forms/939c2.png +0 -0
- package/dist/assets/forms/95ae4.svg +5 -0
- package/dist/assets/forms/970af.svg +5 -0
- package/dist/assets/forms/a119e.svg +5 -0
- package/dist/assets/forms/a521c.svg +5 -0
- package/dist/assets/forms/a74b0.svg +5 -0
- package/dist/assets/forms/baff4.svg +5 -0
- package/dist/assets/forms/c64ff.svg +5 -0
- package/dist/assets/forms/ca66f.svg +5 -0
- package/dist/assets/forms/e0344.svg +5 -0
- package/dist/assets/forms/e5b24.png +0 -0
- package/dist/assets/forms/e687f.svg +5 -0
- package/dist/assets/forms/eceaf.svg +5 -0
- package/dist/assets/forms/eed5c.png +0 -0
- package/dist/assets/forms/f26ce.svg +5 -0
- package/dist/assets/forms/f79d5.svg +5 -0
- package/dist/assets/habits.png +0 -0
- package/dist/assets/hackify.png +0 -0
- package/dist/assets/icons/add.svg +5 -0
- package/dist/assets/icons/apps.svg +5 -0
- package/dist/assets/icons/book.svg +5 -0
- package/dist/assets/icons/chat.svg +5 -0
- package/dist/assets/icons/folder.svg +5 -0
- package/dist/assets/icons/mic.svg +5 -0
- package/dist/assets/icons/notifications.svg +5 -0
- package/dist/assets/icons/shield.svg +5 -0
- package/dist/assets/icons/store.svg +5 -0
- package/dist/assets/icons/voice.svg +5 -0
- package/dist/assets/ledger.png +0 -0
- package/dist/assets/logos/glyph-black.svg +3 -0
- package/dist/assets/logos/glyph-color.svg +26 -0
- package/dist/assets/logos/glyph-white.svg +3 -0
- package/dist/assets/logos/horizontal-black.svg +5 -0
- package/dist/assets/logos/horizontal-color-black.svg +28 -0
- package/dist/assets/logos/horizontal-color-white.svg +28 -0
- package/dist/assets/logos/horizontal-white.svg +5 -0
- package/dist/assets/logos/stacked-black.svg +5 -0
- package/dist/assets/logos/stacked-color-black.svg +28 -0
- package/dist/assets/logos/stacked-color-white.svg +28 -0
- package/dist/assets/logos/stacked-white.svg +5 -0
- package/dist/assets/logos/tagline-horizontal-black.svg +6 -0
- package/dist/assets/logos/tagline-horizontal-color-black.svg +29 -0
- package/dist/assets/logos/tagline-horizontal-color-white.svg +29 -0
- package/dist/assets/logos/tagline-horizontal-white.svg +6 -0
- package/dist/assets/logos/tagline-inline-black.svg +7 -0
- package/dist/assets/logos/tagline-inline-color-black.svg +30 -0
- package/dist/assets/logos/tagline-inline-color-white-alt.svg +30 -0
- package/dist/assets/logos/tagline-inline-color-white.svg +30 -0
- package/dist/assets/logos/tagline-inline-white.svg +7 -0
- package/dist/assets/logos/tagline-stacked-black.svg +6 -0
- package/dist/assets/logos/tagline-stacked-color-black.svg +29 -0
- package/dist/assets/logos/tagline-stacked-color-white.svg +29 -0
- package/dist/assets/logos/tagline-stacked-white.svg +6 -0
- package/dist/assets/magna-brief.png +0 -0
- package/dist/assets/magna-ide.png +0 -0
- package/dist/assets/magna-logo-dark.svg +5 -0
- package/dist/assets/magna-logo-stacked.svg +29 -0
- package/dist/assets/magna-logo.svg +3 -0
- package/dist/assets/magna-music.png +0 -0
- package/dist/assets/magna-studio.png +0 -0
- package/dist/assets/magna-voice.png +0 -0
- package/dist/assets/mail.png +0 -0
- package/dist/assets/models.png +0 -0
- package/dist/assets/notes.png +0 -0
- package/dist/assets/notifications.png +0 -0
- package/dist/assets/salis-verify.png +0 -0
- package/dist/assets/salis.png +0 -0
- package/dist/assets/settings.png +0 -0
- package/dist/assets/sheets.png +0 -0
- package/dist/assets/sledes.png +0 -0
- package/dist/assets/spaces.png +0 -0
- package/dist/assets/task-manager.png +0 -0
- package/dist/assets/tasks.png +0 -0
- package/dist/assets/terminal.png +0 -0
- package/dist/assets/today.png +0 -0
- package/dist/assets/trajectory.png +0 -0
- package/dist/assets/vault.png +0 -0
- package/dist/assets/wafir.png +0 -0
- package/dist/assets/what-can-i-do.png +0 -0
- package/dist/assets/workflow.png +0 -0
- package/dist/components/interactions/border-beam.d.ts +5 -0
- package/dist/components/interactions/border-beam.js +15 -0
- package/dist/components/interactions/bot-avatar.d.ts +5 -0
- package/dist/components/interactions/bot-avatar.js +10 -0
- package/dist/components/interactions/image-generation.d.ts +58 -0
- package/dist/components/interactions/image-generation.js +86 -0
- package/dist/components/interactions/index.d.ts +7 -0
- package/dist/components/interactions/index.js +7 -0
- package/dist/components/interactions/liquid.d.ts +8 -0
- package/dist/components/interactions/liquid.js +19 -0
- package/dist/components/interactions/metal-fx.d.ts +6 -0
- package/dist/components/interactions/metal-fx.js +51 -0
- package/dist/components/interactions/preferences.d.ts +5 -0
- package/dist/components/interactions/preferences.js +55 -0
- package/dist/components/interactions/thinking-orb.d.ts +4 -0
- package/dist/components/interactions/thinking-orb.js +9 -0
- package/dist/components/interactions/voice-beam.d.ts +5 -0
- package/dist/components/interactions/voice-beam.js +33 -0
- package/dist/components/magna/app-icon.d.ts +13 -0
- package/dist/components/magna/app-icon.js +15 -0
- package/dist/components/magna/apps.d.ts +202 -0
- package/dist/components/magna/apps.js +243 -0
- package/dist/components/magna/chat-activity.d.ts +12 -0
- package/dist/components/magna/chat-activity.js +29 -0
- package/dist/components/magna/chat-composer.d.ts +31 -0
- package/dist/components/magna/chat-composer.js +122 -0
- package/dist/components/magna/chat-composer.module.css +36 -0
- package/dist/components/magna/desktop-button.d.ts +8 -0
- package/dist/components/magna/desktop-button.js +10 -0
- package/dist/components/magna/desktop-switch.d.ts +4 -0
- package/dist/components/magna/desktop-switch.js +8 -0
- package/dist/components/magna/file-tile.d.ts +9 -0
- package/dist/components/magna/file-tile.js +11 -0
- package/dist/components/magna/index.d.ts +11 -0
- package/dist/components/magna/index.js +11 -0
- package/dist/components/magna/logo-variants.d.ts +243 -0
- package/dist/components/magna/logo-variants.js +268 -0
- package/dist/components/magna/logo.d.ts +11 -0
- package/dist/components/magna/logo.js +42 -0
- package/dist/components/magna/navigation.d.ts +15 -0
- package/dist/components/magna/navigation.js +16 -0
- package/dist/components/magna/project-context.d.ts +11 -0
- package/dist/components/magna/project-context.js +8 -0
- package/dist/components/magna/voice-orb.d.ts +7 -0
- package/dist/components/magna/voice-orb.js +49 -0
- package/dist/components/magna/voice-orb.module.css +146 -0
- package/dist/components/theme-switch.d.ts +1 -0
- package/dist/components/theme-switch.js +14 -0
- package/dist/components/ui/accordion.d.ts +13 -0
- package/dist/components/ui/accordion.js +24 -0
- package/dist/components/ui/activity-feed.d.ts +64 -0
- package/dist/components/ui/activity-feed.js +40 -0
- package/dist/components/ui/alert.d.ts +31 -0
- package/dist/components/ui/alert.js +73 -0
- package/dist/components/ui/avatar-empty-icons.d.ts +3 -0
- package/dist/components/ui/avatar-empty-icons.js +14 -0
- package/dist/components/ui/avatar-group-compact.d.ts +140 -0
- package/dist/components/ui/avatar-group-compact.js +41 -0
- package/dist/components/ui/avatar-group.d.ts +237 -0
- package/dist/components/ui/avatar-group.js +37 -0
- package/dist/components/ui/avatar.d.ts +420 -0
- package/dist/components/ui/avatar.js +107 -0
- package/dist/components/ui/badge.d.ts +29 -0
- package/dist/components/ui/badge.js +67 -0
- package/dist/components/ui/banner.d.ts +26 -0
- package/dist/components/ui/banner.js +41 -0
- package/dist/components/ui/breadcrumb.d.ts +14 -0
- package/dist/components/ui/breadcrumb.js +23 -0
- package/dist/components/ui/button-group.d.ts +23 -0
- package/dist/components/ui/button-group.js +39 -0
- package/dist/components/ui/button.d.ts +22 -0
- package/dist/components/ui/button.js +62 -0
- package/dist/components/ui/chart-legend.d.ts +21 -0
- package/dist/components/ui/chart-legend.js +14 -0
- package/dist/components/ui/checkbox.d.ts +41 -0
- package/dist/components/ui/checkbox.js +42 -0
- package/dist/components/ui/color-picker.d.ts +13 -0
- package/dist/components/ui/color-picker.js +65 -0
- package/dist/components/ui/command-menu.d.ts +55 -0
- package/dist/components/ui/command-menu.js +33 -0
- package/dist/components/ui/compact-button.d.ts +22 -0
- package/dist/components/ui/compact-button.js +39 -0
- package/dist/components/ui/content-card.d.ts +22 -0
- package/dist/components/ui/content-card.js +11 -0
- package/dist/components/ui/content-label.d.ts +22 -0
- package/dist/components/ui/content-label.js +9 -0
- package/dist/components/ui/counter-input.d.ts +26 -0
- package/dist/components/ui/counter-input.js +47 -0
- package/dist/components/ui/datepicker.d.ts +9 -0
- package/dist/components/ui/datepicker.js +48 -0
- package/dist/components/ui/digit-input.d.ts +11 -0
- package/dist/components/ui/digit-input.js +98 -0
- package/dist/components/ui/display-asset.d.ts +3 -0
- package/dist/components/ui/display-asset.js +9 -0
- package/dist/components/ui/display-assets.d.ts +193 -0
- package/dist/components/ui/display-assets.js +195 -0
- package/dist/components/ui/divider.d.ts +13 -0
- package/dist/components/ui/divider.js +22 -0
- package/dist/components/ui/dot-stepper.d.ts +96 -0
- package/dist/components/ui/dot-stepper.js +29 -0
- package/dist/components/ui/drawer.d.ts +12 -0
- package/dist/components/ui/drawer.js +25 -0
- package/dist/components/ui/dropdown.d.ts +29 -0
- package/dist/components/ui/dropdown.js +74 -0
- package/dist/components/ui/fancy-button.d.ts +21 -0
- package/dist/components/ui/fancy-button.js +43 -0
- package/dist/components/ui/file-format-icon.d.ts +19 -0
- package/dist/components/ui/file-format-icon.js +48 -0
- package/dist/components/ui/file-upload-compositions.d.ts +32 -0
- package/dist/components/ui/file-upload-compositions.js +88 -0
- package/dist/components/ui/file-upload.d.ts +11 -0
- package/dist/components/ui/file-upload.js +20 -0
- package/dist/components/ui/filter.d.ts +53 -0
- package/dist/components/ui/filter.js +90 -0
- package/dist/components/ui/form-asset.d.ts +5 -0
- package/dist/components/ui/form-asset.js +10 -0
- package/dist/components/ui/hint.d.ts +22 -0
- package/dist/components/ui/hint.js +33 -0
- package/dist/components/ui/horizontal-stepper.d.ts +16 -0
- package/dist/components/ui/horizontal-stepper.js +28 -0
- package/dist/components/ui/inline-input.d.ts +24 -0
- package/dist/components/ui/inline-input.js +60 -0
- package/dist/components/ui/input.d.ts +205 -0
- package/dist/components/ui/input.js +69 -0
- package/dist/components/ui/kbd.d.ts +5 -0
- package/dist/components/ui/kbd.js +6 -0
- package/dist/components/ui/key-icon.d.ts +14 -0
- package/dist/components/ui/key-icon.js +35 -0
- package/dist/components/ui/label.d.ts +7 -0
- package/dist/components/ui/label.js +15 -0
- package/dist/components/ui/link-button.d.ts +22 -0
- package/dist/components/ui/link-button.js +38 -0
- package/dist/components/ui/magna-recipe.d.ts +83 -0
- package/dist/components/ui/magna-recipe.js +99 -0
- package/dist/components/ui/modal.d.ts +21 -0
- package/dist/components/ui/modal.js +35 -0
- package/dist/components/ui/notification-feed.d.ts +63 -0
- package/dist/components/ui/notification-feed.js +31 -0
- package/dist/components/ui/notification-provider.d.ts +1 -0
- package/dist/components/ui/notification-provider.js +13 -0
- package/dist/components/ui/notification.d.ts +24 -0
- package/dist/components/ui/notification.js +23 -0
- package/dist/components/ui/pagination.d.ts +19 -0
- package/dist/components/ui/pagination.js +38 -0
- package/dist/components/ui/password-strength.d.ts +16 -0
- package/dist/components/ui/password-strength.js +27 -0
- package/dist/components/ui/payment-icon.d.ts +11 -0
- package/dist/components/ui/payment-icon.js +19 -0
- package/dist/components/ui/popover.d.ts +36 -0
- package/dist/components/ui/popover.js +27 -0
- package/dist/components/ui/progress-bar.d.ts +35 -0
- package/dist/components/ui/progress-bar.js +32 -0
- package/dist/components/ui/progress-circle.d.ts +16 -0
- package/dist/components/ui/progress-circle.js +29 -0
- package/dist/components/ui/radio.d.ts +37 -0
- package/dist/components/ui/radio.js +39 -0
- package/dist/components/ui/rating.d.ts +62 -0
- package/dist/components/ui/rating.js +65 -0
- package/dist/components/ui/rich-editor.d.ts +77 -0
- package/dist/components/ui/rich-editor.js +248 -0
- package/dist/components/ui/rich-editor.module.css +58 -0
- package/dist/components/ui/scroll-area.d.ts +14 -0
- package/dist/components/ui/scroll-area.js +34 -0
- package/dist/components/ui/segmented-control.d.ts +8 -0
- package/dist/components/ui/segmented-control.js +30 -0
- package/dist/components/ui/select.d.ts +212 -0
- package/dist/components/ui/select.js +129 -0
- package/dist/components/ui/slider.d.ts +5 -0
- package/dist/components/ui/slider.js +16 -0
- package/dist/components/ui/social-button.d.ts +22 -0
- package/dist/components/ui/social-button.js +47 -0
- package/dist/components/ui/status-badge.d.ts +25 -0
- package/dist/components/ui/status-badge.js +51 -0
- package/dist/components/ui/status-modal.d.ts +26 -0
- package/dist/components/ui/status-modal.js +21 -0
- package/dist/components/ui/svg-rating-icons.d.ts +11 -0
- package/dist/components/ui/svg-rating-icons.js +33 -0
- package/dist/components/ui/switch-compositions.d.ts +46 -0
- package/dist/components/ui/switch-compositions.js +51 -0
- package/dist/components/ui/switch.d.ts +14 -0
- package/dist/components/ui/switch.js +17 -0
- package/dist/components/ui/tab-menu-horizontal.d.ts +11 -0
- package/dist/components/ui/tab-menu-horizontal.js +49 -0
- package/dist/components/ui/tab-menu-vertical.d.ts +9 -0
- package/dist/components/ui/tab-menu-vertical.js +23 -0
- package/dist/components/ui/table.d.ts +23 -0
- package/dist/components/ui/table.js +46 -0
- package/dist/components/ui/tag-input.d.ts +18 -0
- package/dist/components/ui/tag-input.js +57 -0
- package/dist/components/ui/tag.d.ts +28 -0
- package/dist/components/ui/tag.js +67 -0
- package/dist/components/ui/textarea.d.ts +21 -0
- package/dist/components/ui/textarea.js +32 -0
- package/dist/components/ui/time-picker.d.ts +35 -0
- package/dist/components/ui/time-picker.js +46 -0
- package/dist/components/ui/tooltip.d.ts +318 -0
- package/dist/components/ui/tooltip.js +56 -0
- package/dist/components/ui/vertical-stepper.d.ts +16 -0
- package/dist/components/ui/vertical-stepper.js +30 -0
- package/dist/design/figma-styles.d.ts +2 -0
- package/dist/design/figma-styles.js +2106 -0
- package/dist/design/theme.d.ts +18 -0
- package/dist/design/theme.js +185 -0
- package/dist/fonts/DM-Mono-OFL.txt +93 -0
- package/dist/fonts/Inter-OFL.txt +93 -0
- package/dist/fonts/README.md +23 -0
- package/dist/fonts/SHA256SUMS +11 -0
- package/dist/fonts/dm-mono-400-latin-ext.woff2 +0 -0
- package/dist/fonts/dm-mono-400-latin.woff2 +0 -0
- package/dist/fonts/dm-mono-500-latin-ext.woff2 +0 -0
- package/dist/fonts/dm-mono-500-latin.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-ext.woff2 +0 -0
- package/dist/fonts/inter-cyrillic.woff2 +0 -0
- package/dist/fonts/inter-greek-ext.woff2 +0 -0
- package/dist/fonts/inter-greek.woff2 +0 -0
- package/dist/fonts/inter-latin-ext.woff2 +0 -0
- package/dist/fonts/inter-latin.woff2 +0 -0
- package/dist/fonts/inter-vietnamese.woff2 +0 -0
- package/dist/hooks/use-notification.d.ts +36 -0
- package/dist/hooks/use-notification.js +86 -0
- package/dist/hooks/use-tab-observer.d.ts +8 -0
- package/dist/hooks/use-tab-observer.js +72 -0
- package/dist/magna-assets.d.ts +2 -0
- package/dist/magna-assets.js +273 -0
- package/dist/magnaui.d.ts +77 -0
- package/dist/magnaui.js +77 -0
- package/dist/styles.css +2665 -0
- package/dist/utils/cn.d.ts +18 -0
- package/dist/utils/cn.js +14 -0
- package/dist/utils/polymorphic.d.ts +10 -0
- package/dist/utils/polymorphic.js +1 -0
- package/dist/utils/tv.d.ts +18 -0
- package/dist/utils/tv.js +5 -0
- package/dist/vendor/tailwind-variants/LICENSE +21 -0
- package/dist/vendor/tailwind-variants/config.d.ts +38 -0
- package/dist/vendor/tailwind-variants/generated.d.ts +3 -0
- package/dist/vendor/tailwind-variants/index.d.ts +370 -0
- package/docs/implementation-provenance.md +96 -0
- package/package.json +108 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="625.116" height="431.19" viewBox="0 0 625.116 431.19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path id="Vector" d="M61.82 431.11C58.41 431.11 24.11 424.23 17.85 416.57C15.71 414.04 15.69 409.9 17.81 407.12C18.72 405.93 20.69 404.42 26.58 400.4L27.33 399.89L578.32 7.53C583.38 3.95 589.68 1.98001 596.07 1.98001C600.35 1.98001 604.66 2.87 608.53 4.56C618.56 8.93 625.04 18.33 625.04 28.5V337.72C625.04 340.7 625.06 343.61 625.08 346.51V346.6C625.13 354.13 625.17 361.92 624.9 370.71C624.78 374.66 621.35 377.87 617.26 377.87C616.94 377.87 616.62 377.85 616.3 377.81C608.75 376.9 597.28 371.24 586.36 363.03C579.17 357.63 567.1 347.15 567.1 337.72V82.53C501.72 128.56 81.3 424.51 77.18 427.3C71.54 431.11 65.69 431.11 61.82 431.11ZM7.75 376.44C15.41 375.59 27.37 370.02 38.22 362.25C54.3 350.75 57.67 342.56 57.67 337.71V80.45L220.46 196.17C222.36 197.62 231.94 204.44 243.63 204.44C251.78 204.44 258.93 201.22 264.88 194.87C270.6 188.76 273.01 182.19 272.05 175.34C270.43 163.81 259.47 156.21 258.03 155.26L46.57 5.58002C41.53 1.98002 35.23 0 28.83 0C24.59 0 20.32 0.880009 16.48 2.54001C6.47001 6.88001 0 16.24 0 26.4V337.71C0 343.57 0 349.91 0 355.83C0 355.83 0 366.05 0 369.73C0 371.62 0.82 373.43 2.25 374.7C3.54 375.85 5.20999 376.48 6.95999 376.48C7.22999 376.48 7.50001 376.47 7.76001 376.44H7.75ZM565.56 431.13C569.35 430.95 601.74 424.32 608.17 416.99C609.77 415.19 610.49 412.99 610.19 410.77C609.7 407.11 606.8 405.11 605.09 403.93L406.88 263.79C402.03 260.36 395.97 258.47 389.83 258.47C383.69 258.47 377.48 260.41 372.59 263.93C365.76 268.84 361.88 276.23 361.94 284.2C362 292.18 366 299.53 372.92 304.36L548.19 426.65C552.5 429.7 557.55 431.19 563.62 431.19C564.26 431.19 564.91 431.17 565.55 431.14L565.56 431.13Z" fill="black"/>
|
|
3
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type BorderBeamProps as PrimitiveProps } from "border-beam";
|
|
3
|
+
export type BorderBeamProps = PrimitiveProps;
|
|
4
|
+
/** A theme-aware decorative beam around any MagnaUI component. */
|
|
5
|
+
export declare const BorderBeam: React.ForwardRefExoticComponent<PrimitiveProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { BorderBeam as Primitive, } from "border-beam";
|
|
5
|
+
import { useInteractionPreferences } from "./preferences.js";
|
|
6
|
+
/** A theme-aware decorative beam around any MagnaUI component. */
|
|
7
|
+
export const BorderBeam = React.forwardRef(function BorderBeam({ theme = 'auto', active = true, size, colorVariant, staticColors, duration, borderRadius, brightness, saturation, glowSize, hueRange, strength, css, onActivate, onDeactivate, ...props }, ref) {
|
|
8
|
+
const preferences = useInteractionPreferences();
|
|
9
|
+
const [mounted, setMounted] = React.useState(false);
|
|
10
|
+
React.useEffect(() => setMounted(true), []);
|
|
11
|
+
// The upstream style element must mount in the browser: SSR escapes its CSS text.
|
|
12
|
+
if (!mounted)
|
|
13
|
+
return _jsx("div", { ...props, ref: ref });
|
|
14
|
+
return (_jsx(Primitive, { ...props, ref: ref, theme: theme === 'auto' ? preferences.theme : theme, active: active && !preferences.reducedMotion, size: size, colorVariant: colorVariant, staticColors: staticColors, duration: duration, borderRadius: borderRadius, brightness: brightness, saturation: saturation, glowSize: glowSize, hueRange: hueRange, strength: strength, css: css, onActivate: onActivate, onDeactivate: onDeactivate }));
|
|
15
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type BotAvatarProps as PrimitiveProps } from "bot-avatars";
|
|
3
|
+
export type BotAvatarProps = PrimitiveProps;
|
|
4
|
+
/** An animated assistant avatar with MagnaUI theme and reduced-motion defaults. */
|
|
5
|
+
export declare const BotAvatar: React.ForwardRefExoticComponent<PrimitiveProps & React.RefAttributes<HTMLCanvasElement>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { BotAvatar as Primitive, } from "bot-avatars";
|
|
5
|
+
import { useInteractionPreferences } from "./preferences.js";
|
|
6
|
+
/** An animated assistant avatar with MagnaUI theme and reduced-motion defaults. */
|
|
7
|
+
export const BotAvatar = React.forwardRef(function BotAvatar({ theme = 'auto', paused = false, interactive = true, ...props }, ref) {
|
|
8
|
+
const preferences = useInteractionPreferences();
|
|
9
|
+
return (_jsx(Primitive, { ...props, ref: ref, theme: theme === 'auto' ? preferences.theme : theme, paused: paused || preferences.reducedMotion, interactive: interactive && !preferences.reducedMotion }));
|
|
10
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type ImageGenerationPreset = 'pixels-organic' | 'pixels-mechanic' | 'sweep-gradient';
|
|
3
|
+
export type ImageGenerationTheme = 'auto' | 'dark' | 'light';
|
|
4
|
+
export interface ImageGenerationCycleEvent {
|
|
5
|
+
phase: 'idle' | 'reveal' | 'visible' | 'hide';
|
|
6
|
+
src: string | null;
|
|
7
|
+
}
|
|
8
|
+
export interface ImageGenerationHandle {
|
|
9
|
+
/** The wrapper div, including the static fallback when animation is unavailable. */
|
|
10
|
+
element: HTMLDivElement | null;
|
|
11
|
+
/** Reveal an image, then hide automatically or hold until triggerHide is called. */
|
|
12
|
+
triggerReveal: (options?: {
|
|
13
|
+
hold?: 'auto' | 'manual';
|
|
14
|
+
}) => void;
|
|
15
|
+
triggerHide: () => void;
|
|
16
|
+
/** Regenerate the visible image; durationMs defaults to 4000. */
|
|
17
|
+
triggerRegenerate: (options?: {
|
|
18
|
+
durationMs?: number;
|
|
19
|
+
tintFromImage?: boolean;
|
|
20
|
+
autoReveal?: boolean;
|
|
21
|
+
}) => void;
|
|
22
|
+
isImageActive: () => boolean;
|
|
23
|
+
}
|
|
24
|
+
export type ImageGenerationRef = ImageGenerationHandle;
|
|
25
|
+
export interface ImageGenerationProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
26
|
+
/** Content wrapped by the effect. */
|
|
27
|
+
children: React.ReactNode;
|
|
28
|
+
preset?: ImageGenerationPreset;
|
|
29
|
+
theme?: ImageGenerationTheme;
|
|
30
|
+
/** Shader opacity multiplier, from 0 to 1. */
|
|
31
|
+
strength?: number;
|
|
32
|
+
/** Pixel-cell size multiplier. Defaults to 1. */
|
|
33
|
+
pixelScale?: number;
|
|
34
|
+
cardBg?: string;
|
|
35
|
+
/** CSS palette overrides; null or undefined slots retain preset colors. */
|
|
36
|
+
colors?: (string | null | undefined)[];
|
|
37
|
+
images?: string | string[];
|
|
38
|
+
autoReveal?: boolean;
|
|
39
|
+
/** Random delay range in seconds between reveals. */
|
|
40
|
+
revealDelayRange?: [number, number];
|
|
41
|
+
/** Initial delay in seconds, fixed or sampled from a range. */
|
|
42
|
+
revealInitialDelay?: number | [number, number];
|
|
43
|
+
/** Visible duration in milliseconds, fixed or sampled from a range. */
|
|
44
|
+
revealHoldMs?: number | [number, number];
|
|
45
|
+
revealFadeOutMs?: number;
|
|
46
|
+
borderRadius?: number;
|
|
47
|
+
paused?: boolean;
|
|
48
|
+
onCycle?: (event: ImageGenerationCycleEvent) => void;
|
|
49
|
+
excludeSrcs?: () => string[] | Set<string> | null | undefined;
|
|
50
|
+
className?: string;
|
|
51
|
+
style?: React.CSSProperties;
|
|
52
|
+
/** Optional static content when reduced motion is selected or WebGL is unavailable. */
|
|
53
|
+
fallback?: React.ReactNode;
|
|
54
|
+
/** Alt text for the first image shown by the default static fallback. */
|
|
55
|
+
fallbackAlt?: string;
|
|
56
|
+
}
|
|
57
|
+
/** Image reveal with a static, accessible image when animated rendering is unavailable. */
|
|
58
|
+
export declare const ImageGeneration: React.ForwardRefExoticComponent<ImageGenerationProps & React.RefAttributes<ImageGenerationHandle>>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { useInteractionPreferences } from "./preferences.js";
|
|
5
|
+
const ImageGenerationPrimitive = React.lazy(async () => ({
|
|
6
|
+
default: (await import("img-fx")).ImageGeneration,
|
|
7
|
+
}));
|
|
8
|
+
const effectKeys = new Set([
|
|
9
|
+
'preset',
|
|
10
|
+
'theme',
|
|
11
|
+
'strength',
|
|
12
|
+
'pixelScale',
|
|
13
|
+
'cardBg',
|
|
14
|
+
'colors',
|
|
15
|
+
'images',
|
|
16
|
+
'autoReveal',
|
|
17
|
+
'revealDelayRange',
|
|
18
|
+
'revealInitialDelay',
|
|
19
|
+
'revealHoldMs',
|
|
20
|
+
'revealFadeOutMs',
|
|
21
|
+
'borderRadius',
|
|
22
|
+
'paused',
|
|
23
|
+
'onCycle',
|
|
24
|
+
'excludeSrcs',
|
|
25
|
+
]);
|
|
26
|
+
class ImageEffectBoundary extends React.Component {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this.state = { failed: false };
|
|
30
|
+
}
|
|
31
|
+
static getDerivedStateFromError() {
|
|
32
|
+
return { failed: true };
|
|
33
|
+
}
|
|
34
|
+
render() {
|
|
35
|
+
return this.state.failed ? this.props.fallback : this.props.children;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Image reveal with a static, accessible image when animated rendering is unavailable. */
|
|
39
|
+
export const ImageGeneration = React.forwardRef(function ImageGeneration({ children, fallback, fallbackAlt = '', theme = 'auto', className, style, ...props }, ref) {
|
|
40
|
+
const preferences = useInteractionPreferences();
|
|
41
|
+
const [supported, setSupported] = React.useState(false);
|
|
42
|
+
const [failedImage, setFailedImage] = React.useState();
|
|
43
|
+
const effectRef = React.useRef(null);
|
|
44
|
+
const fallbackRef = React.useRef(null);
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
// Three 0.149 supports either context. Release this short-lived probe;
|
|
47
|
+
// the upstream renderer owns and cleans up the context used for drawing.
|
|
48
|
+
try {
|
|
49
|
+
const canvas = document.createElement('canvas');
|
|
50
|
+
const context = canvas.getContext('webgl2') || canvas.getContext('webgl');
|
|
51
|
+
const available = !!context && !!document.createElement('canvas').getContext('2d');
|
|
52
|
+
context?.getExtension('WEBGL_lose_context')?.loseContext();
|
|
53
|
+
setSupported(available);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
setSupported(false);
|
|
57
|
+
}
|
|
58
|
+
}, []);
|
|
59
|
+
React.useImperativeHandle(ref, () => ({
|
|
60
|
+
get element() {
|
|
61
|
+
return effectRef.current?.element ?? fallbackRef.current;
|
|
62
|
+
},
|
|
63
|
+
triggerReveal: (options) => effectRef.current?.triggerReveal(options),
|
|
64
|
+
triggerHide: () => effectRef.current?.triggerHide(),
|
|
65
|
+
triggerRegenerate: (options) => effectRef.current?.triggerRegenerate(options),
|
|
66
|
+
isImageActive: () => effectRef.current?.isImageActive() ?? false,
|
|
67
|
+
}), []);
|
|
68
|
+
const firstImage = typeof props.images === 'string' ? props.images : props.images?.[0];
|
|
69
|
+
const htmlProps = Object.fromEntries(Object.entries(props).filter(([key]) => !effectKeys.has(key)));
|
|
70
|
+
const resolvedTheme = theme === 'auto' ? preferences.theme : theme;
|
|
71
|
+
const staticContent = (_jsx("div", { ...htmlProps, ref: fallbackRef, className: className, "data-image-generation-fallback": '', "data-theme": resolvedTheme, style: {
|
|
72
|
+
position: 'relative',
|
|
73
|
+
display: 'inline-block',
|
|
74
|
+
overflow: 'hidden',
|
|
75
|
+
verticalAlign: 'top',
|
|
76
|
+
background: props.cardBg ?? 'var(--bg-weak-50)',
|
|
77
|
+
borderRadius: props.borderRadius ?? 20,
|
|
78
|
+
...style,
|
|
79
|
+
}, children: fallback ?? (_jsxs(_Fragment, { children: [children, firstImage && failedImage !== firstImage && (
|
|
80
|
+
// Keep a native image: these are caller-owned local or data URLs.
|
|
81
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
82
|
+
_jsx("img", { src: firstImage, alt: fallbackAlt, className: 'pointer-events-none absolute inset-0 size-full object-cover', onError: () => setFailedImage(firstImage) }))] })) }));
|
|
83
|
+
if (!supported || preferences.reducedMotion)
|
|
84
|
+
return staticContent;
|
|
85
|
+
return (_jsx(ImageEffectBoundary, { fallback: staticContent, children: _jsx(React.Suspense, { fallback: staticContent, children: _jsx(ImageGenerationPrimitive, { ...props, ref: effectRef, theme: resolvedTheme, className: className, cardBg: props.cardBg ?? (resolvedTheme === 'dark' ? '#171717' : '#ffffff'), style: style, children: children }) }) }, props.preset));
|
|
86
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type LiquidItemProps, type LiquidProps } from "liquid-gooey";
|
|
3
|
+
export type { BendTuning, CornerRadii, DissolveOptions, EvolveOptions, ImageMeltOptions, LiquidEffect, LiquidItemProps, LiquidProps, MorphTuning, MoveOptions, MoveTuning, SpringConfig, Transition, TransitionPreset, } from "liquid-gooey";
|
|
4
|
+
declare function LiquidItem(props: LiquidItemProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
/** Magna surfaces with the complete liquid-gooey group and Item APIs. */
|
|
6
|
+
export declare const Liquid: React.ForwardRefExoticComponent<LiquidProps & React.RefAttributes<HTMLDivElement>> & {
|
|
7
|
+
Item: typeof LiquidItem;
|
|
8
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Liquid as LiquidPrimitive, } from "liquid-gooey";
|
|
5
|
+
import { useInteractionPreferences } from "./preferences.js";
|
|
6
|
+
const LiquidRoot = React.forwardRef(function Liquid({ fill = 'var(--primary-base)', waviness, ...props }, ref) {
|
|
7
|
+
const { reducedMotion } = useInteractionPreferences();
|
|
8
|
+
return (_jsx(LiquidPrimitive, { ...props, ref: ref, fill: fill, waviness: reducedMotion ? 0 : waviness }));
|
|
9
|
+
});
|
|
10
|
+
function LiquidItem(props) {
|
|
11
|
+
const { reducedMotion } = useInteractionPreferences();
|
|
12
|
+
return reducedMotion ? (_jsx(LiquidPrimitive.Item, { ...props, effect: 'morph', morph: undefined, dissolve: false, observe: props.observe ||
|
|
13
|
+
props.effect === 'move' ||
|
|
14
|
+
props.effect === 'bend' ||
|
|
15
|
+
props.effect === 'melt' ||
|
|
16
|
+
Boolean(props.morph?.shape || props.dissolve), delay: 0, transition: { duration: 0 } })) : (_jsx(LiquidPrimitive.Item, { ...props }));
|
|
17
|
+
}
|
|
18
|
+
/** Magna surfaces with the complete liquid-gooey group and Item APIs. */
|
|
19
|
+
export const Liquid = Object.assign(LiquidRoot, { Item: LiquidItem });
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { MetalFxProps } from "metal-fx";
|
|
3
|
+
export type { MetalFxProps, MetalFxPreset, MetalFxReflectionTarget, MetalFxTheme, MetalFxVariant, } from "metal-fx";
|
|
4
|
+
export type MetalFxRef = HTMLDivElement;
|
|
5
|
+
/** Metal lighting that follows Magna's theme and retains the child's focus styles. */
|
|
6
|
+
export declare const MetalFx: React.ForwardRefExoticComponent<MetalFxProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { useInteractionPreferences } from "./preferences.js";
|
|
5
|
+
const MetalFxPrimitive = React.lazy(async () => ({
|
|
6
|
+
default: (await import("metal-fx")).MetalFx,
|
|
7
|
+
}));
|
|
8
|
+
const effectKeys = new Set([
|
|
9
|
+
'variant',
|
|
10
|
+
'preset',
|
|
11
|
+
'strength',
|
|
12
|
+
'glowGain',
|
|
13
|
+
'borderRadius',
|
|
14
|
+
'reflectionTargets',
|
|
15
|
+
'disableGlow',
|
|
16
|
+
'innerShadow',
|
|
17
|
+
'shaderScale',
|
|
18
|
+
'ringCssPx',
|
|
19
|
+
'scale',
|
|
20
|
+
'mask',
|
|
21
|
+
'glowMode',
|
|
22
|
+
]);
|
|
23
|
+
class MetalEffectBoundary extends React.Component {
|
|
24
|
+
constructor() {
|
|
25
|
+
super(...arguments);
|
|
26
|
+
this.state = { failed: false };
|
|
27
|
+
}
|
|
28
|
+
static getDerivedStateFromError() {
|
|
29
|
+
return { failed: true };
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
|
+
return this.state.failed ? this.props.fallback : this.props.children;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Metal lighting that follows Magna's theme and retains the child's focus styles. */
|
|
36
|
+
export const MetalFx = React.forwardRef(function MetalFx({ children, theme = 'auto', paused = false, normalizeHostStyles = false, className, style, ...props }, ref) {
|
|
37
|
+
const preferences = useInteractionPreferences();
|
|
38
|
+
const [mounted, setMounted] = React.useState(false);
|
|
39
|
+
React.useEffect(() => setMounted(true), []);
|
|
40
|
+
const htmlProps = Object.fromEntries(Object.entries(props).filter(([key]) => !effectKeys.has(key)));
|
|
41
|
+
const staticContent = (_jsx("div", { ...htmlProps, ref: ref, className: className, style: { display: 'inline-flex', ...style }, children: children }));
|
|
42
|
+
// The upstream capability probe caches its answer. Mount it only in the
|
|
43
|
+
// browser, so server rendering cannot cache an unsupported result.
|
|
44
|
+
if (!mounted)
|
|
45
|
+
return staticContent;
|
|
46
|
+
return (_jsx(MetalEffectBoundary, { fallback: staticContent, children: _jsx(React.Suspense, { fallback: staticContent, children: _jsx(MetalFxPrimitive, { ...props, ref: ref, className: className, theme: theme === 'auto' ? preferences.theme : theme, paused: paused || preferences.reducedMotion, normalizeHostStyles: normalizeHostStyles, style: {
|
|
47
|
+
background: 'var(--bg-white-0)',
|
|
48
|
+
color: 'var(--text-strong-950)',
|
|
49
|
+
...style,
|
|
50
|
+
}, children: children }) }) }));
|
|
51
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { useTheme } from "next-themes";
|
|
4
|
+
/** Use Magna's selected theme and respect the operating system's motion setting. */
|
|
5
|
+
export function useInteractionPreferences() {
|
|
6
|
+
const { resolvedTheme } = useTheme();
|
|
7
|
+
const [interactionTheme, setInteractionTheme] = useState('light');
|
|
8
|
+
// Keep animations still during hydration, before the media query is available.
|
|
9
|
+
const [reducedMotion, setReducedMotion] = useState(true);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const query = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
12
|
+
const update = () => setReducedMotion(query.matches);
|
|
13
|
+
update();
|
|
14
|
+
query.addEventListener('change', update);
|
|
15
|
+
return () => query.removeEventListener('change', update);
|
|
16
|
+
}, []);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (resolvedTheme === 'light' || resolvedTheme === 'dark') {
|
|
19
|
+
setInteractionTheme(resolvedTheme);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const root = document.documentElement;
|
|
23
|
+
const query = window.matchMedia('(prefers-color-scheme: dark)');
|
|
24
|
+
const update = () => {
|
|
25
|
+
const declared = root.dataset.theme;
|
|
26
|
+
const colorScheme = root.style.colorScheme;
|
|
27
|
+
setInteractionTheme(declared === 'light' || declared === 'dark'
|
|
28
|
+
? declared
|
|
29
|
+
: root.classList.contains('dark')
|
|
30
|
+
? 'dark'
|
|
31
|
+
: root.classList.contains('light')
|
|
32
|
+
? 'light'
|
|
33
|
+
: colorScheme === 'light' || colorScheme === 'dark'
|
|
34
|
+
? colorScheme
|
|
35
|
+
: query.matches
|
|
36
|
+
? 'dark'
|
|
37
|
+
: 'light');
|
|
38
|
+
};
|
|
39
|
+
update();
|
|
40
|
+
const observer = new MutationObserver(update);
|
|
41
|
+
observer.observe(root, {
|
|
42
|
+
attributes: true,
|
|
43
|
+
attributeFilter: ['class', 'data-theme', 'style'],
|
|
44
|
+
});
|
|
45
|
+
query.addEventListener('change', update);
|
|
46
|
+
return () => {
|
|
47
|
+
observer.disconnect();
|
|
48
|
+
query.removeEventListener('change', update);
|
|
49
|
+
};
|
|
50
|
+
}, [resolvedTheme]);
|
|
51
|
+
return {
|
|
52
|
+
theme: interactionTheme,
|
|
53
|
+
reducedMotion,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ThinkingOrbProps as PrimitiveProps } from "thinking-orbs";
|
|
2
|
+
export type ThinkingOrbProps = PrimitiveProps;
|
|
3
|
+
/** A labeled activity indicator that follows MagnaUI's theme and motion settings. */
|
|
4
|
+
export declare function ThinkingOrb({ theme, paused, ...props }: ThinkingOrbProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ThinkingOrb as Primitive, } from "thinking-orbs";
|
|
4
|
+
import { useInteractionPreferences } from "./preferences.js";
|
|
5
|
+
/** A labeled activity indicator that follows MagnaUI's theme and motion settings. */
|
|
6
|
+
export function ThinkingOrb({ theme = 'auto', paused = false, ...props }) {
|
|
7
|
+
const preferences = useInteractionPreferences();
|
|
8
|
+
return (_jsx(Primitive, { ...props, theme: theme === 'auto' ? preferences.theme : theme, paused: paused || preferences.reducedMotion }));
|
|
9
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VoiceBeamProps } from "voice-glow";
|
|
3
|
+
export type { VoiceBeamColorVariant, VoiceBeamLevel, VoiceBeamProps, VoiceBeamTheme, VoiceBeamType, VoiceGeometry, VoiceThemeColors, VoiceTypeStyle, } from "voice-glow";
|
|
4
|
+
/** A manually driven or stream-driven glow that follows Magna's theme. */
|
|
5
|
+
export declare const VoiceBeam: React.ForwardRefExoticComponent<VoiceBeamProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { VoiceBeam as VoiceBeamPrimitive, } from "voice-glow";
|
|
5
|
+
import { useInteractionPreferences } from "./preferences.js";
|
|
6
|
+
// Keep standard React, data, and ARIA props on the server-rendered content host.
|
|
7
|
+
// Effect configuration belongs to the mounted primitive, never to the DOM.
|
|
8
|
+
const effectPropNames = new Set(`type scale stream level sensitivity threshold attack release idle breatheDuration
|
|
9
|
+
reach spread bands flow processing processingDuration processingLevel processingEase
|
|
10
|
+
processingTravel processingCurve cornerFollow colorVariant colors bandColors theme
|
|
11
|
+
staticColors hueRange hueDuration active paused borderRadius brightness saturation
|
|
12
|
+
glowSize strokeOpacity innerOpacity bloomOpacity bend bandStrength bandWidth
|
|
13
|
+
bandPosition bandCurve bandSpread bandSkew bandOffset bandTail bandTailPosition
|
|
14
|
+
bandTailCurve bandTailOverflow bandAberration distortion distortionDetail glowWidth
|
|
15
|
+
glowHeight lobeSpacing rangeWidth rangeHeight softness coreSize coreLight
|
|
16
|
+
coreLightWidth coreLightHeight strokeScale innerScale innerHeight bloomScale
|
|
17
|
+
bloomHeight strength css onLevel onActivate onDeactivate`
|
|
18
|
+
.trim()
|
|
19
|
+
.split(/\s+/));
|
|
20
|
+
/** A manually driven or stream-driven glow that follows Magna's theme. */
|
|
21
|
+
export const VoiceBeam = React.forwardRef(function VoiceBeam({ theme, paused, staticColors, processing, flow, ...props }, ref) {
|
|
22
|
+
const preferences = useInteractionPreferences();
|
|
23
|
+
const [mounted, setMounted] = React.useState(false);
|
|
24
|
+
React.useEffect(() => setMounted(true), []);
|
|
25
|
+
// The published component renders generated CSS as a style text child and
|
|
26
|
+
// reads browser media/canvas capabilities during render. Mount it only after
|
|
27
|
+
// hydration so its CSS and feature-dependent markup never disagree with SSR.
|
|
28
|
+
if (!mounted) {
|
|
29
|
+
const htmlProps = Object.fromEntries(Object.entries(props).filter(([key]) => !effectPropNames.has(key)));
|
|
30
|
+
return (_jsx("div", { ...htmlProps, ref: ref, children: props.children }));
|
|
31
|
+
}
|
|
32
|
+
return (_jsx(VoiceBeamPrimitive, { ...props, ref: ref, theme: theme === undefined || theme === 'auto' ? preferences.theme : theme, paused: preferences.reducedMotion || paused, staticColors: preferences.reducedMotion || staticColors, processing: preferences.reducedMotion ? false : processing, flow: preferences.reducedMotion ? 0 : flow }));
|
|
33
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type MagnaAppId } from "./apps.js";
|
|
2
|
+
/** Transparent 2x PNG exports of the original Figma icon components. */
|
|
3
|
+
export declare function AppIcon({ app, size, className, decorative, }: {
|
|
4
|
+
app: MagnaAppId;
|
|
5
|
+
size?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
decorative?: boolean;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function AppLauncher({ apps, onLaunch, className, }: {
|
|
10
|
+
apps?: readonly MagnaAppId[];
|
|
11
|
+
onLaunch: (app: MagnaAppId) => void;
|
|
12
|
+
className?: string;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "../../utils/cn.js";
|
|
4
|
+
import { magnaApps } from "./apps.js";
|
|
5
|
+
/** Transparent 2x PNG exports of the original Figma icon components. */
|
|
6
|
+
export function AppIcon({ app, size = 48, className, decorative = false, }) {
|
|
7
|
+
const asset = magnaApps.find((item) => item.id === app);
|
|
8
|
+
return (
|
|
9
|
+
// Keep the exported artwork usable outside Next.js as a source component.
|
|
10
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
11
|
+
_jsx("img", { src: asset.src, alt: decorative ? '' : asset.name, width: size, height: size, className: cn('shrink-0 object-contain', className), style: { width: size, height: size } }));
|
|
12
|
+
}
|
|
13
|
+
export function AppLauncher({ apps = magnaApps.map((a) => a.id), onLaunch, className, }) {
|
|
14
|
+
return (_jsx("div", { className: cn('grid grid-cols-3 gap-5 sm:grid-cols-5 lg:grid-cols-8', className), children: apps.map((id) => (_jsxs("button", { type: 'button', onClick: () => onLaunch(id), className: 'flex min-w-0 flex-col items-center gap-2 rounded-2xl p-2 transition hover:bg-bg-weak-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary-base', children: [_jsx(AppIcon, { app: id, size: 52, decorative: true }), _jsx("span", { className: 'w-full truncate text-center text-label-xs', children: magnaApps.find((a) => a.id === id)?.name })] }, id))) }));
|
|
15
|
+
}
|