@nadicodeai/ui 9.2.0 → 10.0.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/AGENTS.md +1 -0
- package/README.md +5 -5
- package/dist/agent-orb.d.ts +3 -0
- package/dist/agent-orb.d.ts.map +1 -0
- package/dist/agent-orb.js +2 -0
- package/dist/assets/brand/aionlabs.svg +2 -0
- package/dist/assets/brand/airtable.svg +2 -0
- package/dist/assets/brand/apple.svg +2 -0
- package/dist/assets/brand/arcee.svg +2 -0
- package/dist/assets/brand/asana.svg +2 -0
- package/dist/assets/brand/atlassian.svg +2 -0
- package/dist/assets/brand/baidu.svg +2 -0
- package/dist/assets/brand/bytedance.svg +2 -0
- package/dist/assets/brand/claude.svg +2 -0
- package/dist/assets/brand/cohere.svg +2 -0
- package/dist/assets/brand/datadog.svg +2 -0
- package/dist/assets/brand/deepseek.svg +2 -0
- package/dist/assets/brand/discord.svg +2 -0
- package/dist/assets/brand/dolphin.svg +2 -0
- package/dist/assets/brand/dotsstudio.svg +2 -0
- package/dist/assets/brand/figma.svg +2 -0
- package/dist/assets/brand/gemini.svg +2 -0
- package/dist/assets/brand/github.svg +2 -0
- package/dist/assets/brand/gitlab.svg +2 -0
- package/dist/assets/brand/gmail.svg +2 -0
- package/dist/assets/brand/google-calendar.svg +2 -0
- package/dist/assets/brand/google-drive.svg +2 -0
- package/dist/assets/brand/grok.svg +2 -0
- package/dist/assets/brand/huggingface.svg +2 -0
- package/dist/assets/brand/ibm.svg +2 -0
- package/dist/assets/brand/inception.svg +2 -0
- package/dist/assets/brand/inclusionai.svg +2 -0
- package/dist/assets/brand/index.json +778 -0
- package/dist/assets/brand/inference.svg +2 -0
- package/dist/assets/brand/intercom.svg +2 -0
- package/dist/assets/brand/jira.svg +2 -0
- package/dist/assets/brand/kwaipilot.svg +2 -0
- package/dist/assets/brand/linear.svg +2 -0
- package/dist/assets/brand/linux.svg +2 -0
- package/dist/assets/brand/liquid.svg +2 -0
- package/dist/assets/brand/longcat.svg +2 -0
- package/dist/assets/brand/mattermost.svg +2 -0
- package/dist/assets/brand/meta.svg +2 -0
- package/dist/assets/brand/microsoft.svg +2 -0
- package/dist/assets/brand/minimax.svg +2 -0
- package/dist/assets/brand/mistral.svg +2 -0
- package/dist/assets/brand/moonshot.svg +2 -0
- package/dist/assets/brand/morph.svg +2 -0
- package/dist/assets/brand/n8n.svg +2 -0
- package/dist/assets/brand/netlify.svg +2 -0
- package/dist/assets/brand/nexagi.svg +2 -0
- package/dist/assets/brand/notion.svg +2 -0
- package/dist/assets/brand/nousresearch.svg +2 -0
- package/dist/assets/brand/nova.svg +2 -0
- package/dist/assets/brand/nvidia.svg +2 -0
- package/dist/assets/brand/openai.svg +2 -0
- package/dist/assets/brand/openrouter.svg +2 -0
- package/dist/assets/brand/paypal.svg +2 -0
- package/dist/assets/brand/perceptron.svg +2 -0
- package/dist/assets/brand/perplexity.svg +2 -0
- package/dist/assets/brand/poolside.svg +2 -0
- package/dist/assets/brand/postgresql.svg +2 -0
- package/dist/assets/brand/qwen.svg +2 -0
- package/dist/assets/brand/reka.svg +2 -0
- package/dist/assets/brand/relace.svg +2 -0
- package/dist/assets/brand/sakana.svg +2 -0
- package/dist/assets/brand/sentry.svg +2 -0
- package/dist/assets/brand/signal.svg +2 -0
- package/dist/assets/brand/slack.svg +2 -0
- package/dist/assets/brand/spotify.svg +2 -0
- package/dist/assets/brand/square.svg +2 -0
- package/dist/assets/brand/stepfun.svg +2 -0
- package/dist/assets/brand/stripe.svg +2 -0
- package/dist/assets/brand/supabase.svg +2 -0
- package/dist/assets/brand/telegram.svg +2 -0
- package/dist/assets/brand/tencent.svg +2 -0
- package/dist/assets/brand/the-drummer.svg +2 -0
- package/dist/assets/brand/thinkingmachines.svg +2 -0
- package/dist/assets/brand/todoist.svg +2 -0
- package/dist/assets/brand/unbiased.svg +2 -0
- package/dist/assets/brand/unreal-engine.svg +2 -0
- package/dist/assets/brand/upstage.svg +2 -0
- package/dist/assets/brand/vercel.svg +2 -0
- package/dist/assets/brand/webflow.svg +2 -0
- package/dist/assets/brand/whatsapp.svg +2 -0
- package/dist/assets/brand/windows.svg +2 -0
- package/dist/assets/brand/writer.svg +2 -0
- package/dist/assets/brand/xiaomimimo.svg +2 -0
- package/dist/assets/brand/youtube.svg +2 -0
- package/dist/assets/brand/yuanbao.svg +2 -0
- package/dist/assets/brand/zai.svg +2 -0
- package/dist/assets/brand/zapier.svg +2 -0
- package/dist/components/action-band.js +1 -1
- package/dist/components/action-status.d.ts +5 -0
- package/dist/components/action-status.d.ts.map +1 -1
- package/dist/components/action-status.js +6 -2
- package/dist/components/agent-orb-appearance.d.ts +16 -2
- package/dist/components/agent-orb-appearance.d.ts.map +1 -1
- package/dist/components/agent-orb-appearance.js +28 -5
- package/dist/components/agent-orb.d.ts +6 -3
- package/dist/components/agent-orb.d.ts.map +1 -1
- package/dist/components/agent-orb.js +20 -7
- package/dist/components/app-mark-aliases.d.ts +16 -0
- package/dist/components/app-mark-aliases.d.ts.map +1 -0
- package/dist/components/app-mark-aliases.js +84 -0
- package/dist/components/app-mark.d.ts +4 -0
- package/dist/components/app-mark.d.ts.map +1 -1
- package/dist/components/app-mark.js +14 -31
- package/dist/components/automation-section.d.ts.map +1 -1
- package/dist/components/automation-section.js +2 -2
- package/dist/components/badge.js +1 -1
- package/dist/components/brand.d.ts +3 -2
- package/dist/components/brand.d.ts.map +1 -1
- package/dist/components/brand.js +18 -28
- package/dist/components/button.js +1 -1
- package/dist/components/code-editor-mockup.d.ts +1 -1
- package/dist/components/code-editor-mockup.js +1 -1
- package/dist/components/collection-filters.js +2 -2
- package/dist/components/confirm-dialog.d.ts +3 -1
- package/dist/components/confirm-dialog.d.ts.map +1 -1
- package/dist/components/confirm-dialog.js +3 -3
- package/dist/components/drawer.js +5 -5
- package/dist/components/feature-grid.js +2 -2
- package/dist/components/feedback-state.d.ts.map +1 -1
- package/dist/components/feedback-state.js +6 -9
- package/dist/components/footer.js +2 -2
- package/dist/components/hero.js +1 -1
- package/dist/components/house-icons.d.ts.map +1 -1
- package/dist/components/house-icons.js +9 -1
- package/dist/components/input-otp.js +1 -1
- package/dist/components/installer-shell.d.ts.map +1 -1
- package/dist/components/installer-shell.js +5 -6
- package/dist/components/logo-band.js +1 -1
- package/dist/components/navigation-menu.js +2 -2
- package/dist/components/pending-label.d.ts +15 -0
- package/dist/components/pending-label.d.ts.map +1 -0
- package/dist/components/pending-label.js +14 -0
- package/dist/components/proof-slot.js +1 -1
- package/dist/components/section-intro.js +2 -2
- package/dist/components/security-grid.js +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/shift-band.js +1 -1
- package/dist/components/skeleton.d.ts +4 -0
- package/dist/components/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +5 -1
- package/dist/components/sonner.d.ts.map +1 -1
- package/dist/components/sonner.js +5 -2
- package/dist/components/statement.js +2 -2
- package/dist/components/steps.js +2 -2
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/texture-strip.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/waiting-line.d.ts +30 -0
- package/dist/components/waiting-line.d.ts.map +1 -0
- package/dist/components/waiting-line.js +33 -0
- package/dist/eslint/rules/no-invalid-token-utility.js +1 -1
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -8
- package/dist/internal/agent-orb-motion.d.ts +9 -1
- package/dist/internal/agent-orb-motion.d.ts.map +1 -1
- package/dist/internal/agent-orb-motion.js +23 -11
- package/dist/internal/agent-orb.d.ts +14 -1
- package/dist/internal/agent-orb.d.ts.map +1 -1
- package/dist/internal/agent-orb.js +78 -22
- package/dist/internal/assistant-ui/attachment.d.ts.map +1 -1
- package/dist/internal/assistant-ui/attachment.js +3 -2
- package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -1
- package/dist/internal/assistant-ui/reasoning.js +4 -4
- package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -1
- package/dist/internal/assistant-ui/tool-fallback.js +5 -4
- package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -1
- package/dist/internal/assistant-ui/tool-group.js +4 -3
- package/dist/lib/motion.d.ts +18 -4
- package/dist/lib/motion.d.ts.map +1 -1
- package/dist/lib/motion.js +18 -4
- package/dist/styles/globals.css +0 -1
- package/docs/activity.md +99 -117
- package/docs/agent-orb.md +72 -19
- package/docs/component-classification.md +4 -4
- package/docs/consuming-cross-repo.md +8 -10
- package/docs/contract.md +10 -9
- package/docs/icon-assets.md +106 -0
- package/docs/migration/10.0.0.md +144 -0
- package/package.json +8 -7
- package/dist/activity.d.ts +0 -2
- package/dist/activity.d.ts.map +0 -1
- package/dist/activity.js +0 -2
- package/dist/components/activity-orb.d.ts +0 -21
- package/dist/components/activity-orb.d.ts.map +0 -1
- package/dist/components/activity-orb.js +0 -26
- package/dist/components/benefits-bento.d.ts +0 -15
- package/dist/components/benefits-bento.d.ts.map +0 -1
- package/dist/components/benefits-bento.js +0 -6
- package/dist/components/bento.d.ts +0 -39
- package/dist/components/bento.d.ts.map +0 -1
- package/dist/components/bento.js +0 -70
- package/dist/components/glyph-spinner.d.ts +0 -10
- package/dist/components/glyph-spinner.d.ts.map +0 -1
- package/dist/components/glyph-spinner.js +0 -101
- package/dist/components/nav-bar.d.ts +0 -24
- package/dist/components/nav-bar.d.ts.map +0 -1
- package/dist/components/nav-bar.js +0 -35
- package/dist/components/page-frame.d.ts +0 -30
- package/dist/components/page-frame.d.ts.map +0 -1
- package/dist/components/page-frame.js +0 -30
- package/dist/components/spinner.d.ts +0 -3
- package/dist/components/spinner.d.ts.map +0 -1
- package/dist/components/spinner.js +0 -7
- package/dist/components/use-case-bento.d.ts +0 -13
- package/dist/components/use-case-bento.d.ts.map +0 -1
- package/dist/components/use-case-bento.js +0 -8
- package/dist/internal/activity-orb.d.ts +0 -27
- package/dist/internal/activity-orb.d.ts.map +0 -1
- package/dist/internal/activity-orb.js +0 -150
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Todoist. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 256 256" data-brand="todoist"><path fill="#e44332" d="M224.002 0H31.998C14.358.04.061 14.337 0 32v192c0 17.6 14.397 32 31.998 32h192.004c17.6 0 31.998-14.4 31.998-32V32c0-17.6-14.397-32-31.998-32"></path><path fill="#fff" d="M54.133 120.802c4.463-2.606 100.343-58.325 102.535-59.616c2.192-1.275 2.311-5.196-.16-6.615c-2.454-1.41-7.117-4.089-8.846-5.117a8.03 8.03 0 0 0-7.907.096c-1.227.717-83.151 48.299-85.885 49.86c-3.292 1.882-7.333 1.914-10.6 0L0 74.019v21.583c10.52 6.2 36.718 21.599 43.062 25.225c3.786 2.152 7.413 2.105 11.079-.024"></path><path fill="#fff" d="M54.133 161.61c4.463-2.607 100.343-58.326 102.535-59.617c2.192-1.275 2.311-5.196-.16-6.615c-2.454-1.41-7.117-4.089-8.846-5.117a8.03 8.03 0 0 0-7.907.096c-1.227.717-83.151 48.298-85.885 49.86c-3.292 1.882-7.333 1.913-10.6 0L0 114.826v21.583c10.52 6.2 36.718 21.599 43.062 25.225c3.786 2.152 7.413 2.104 11.079-.024"></path><path fill="#fff" d="M54.133 204.967c4.463-2.607 100.343-58.326 102.535-59.617c2.192-1.275 2.311-5.196-.16-6.615c-2.454-1.41-7.117-4.088-8.846-5.117a8.03 8.03 0 0 0-7.907.096c-1.227.717-83.151 48.299-85.885 49.86c-3.292 1.882-7.333 1.914-10.6 0L0 158.183v21.583c10.52 6.2 36.718 21.6 43.062 25.225c3.786 2.152 7.413 2.105 11.079-.023"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Unbiased. Generated by packages/ui/scripts/build-icon-assets.mjs from published model-identity assets (nominative use). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 400 400" data-brand="unbiased"><image href="data:image/png;base64,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" width="400" height="400" preserveAspectRatio="xMidYMid meet"></image></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Unreal Engine. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 256 256" fill="currentColor" data-brand="unreal-engine"><path d="M127.992 0A127.99 127.99 0 0 1 256 127.992c.004 70.693-57.3 128.004-127.992 128.008S.004 198.7 0 128.008C-.004 58.022 56.16 1.152 125.875.018zm47.015 14.463C129.09-4.557 76.234 5.958 41.091 41.104s-45.655 88-26.633 133.919c19.023 45.917 63.832 75.855 113.534 75.851c67.863-.004 122.874-55.019 122.874-122.882c0-49.702-29.94-94.51-75.859-113.529m-58.624 36.071C105.668 56.641 99.64 66.61 99.64 74.977c0 7.513 2.54 10.32 5.198 10.99l.285.064l.143.026l.285.04q.5.057.987.031l.277-.02l.273-.031l.134-.02l.266-.047l.26-.057l.255-.066l.248-.074l.24-.082l.233-.088l.223-.095l.215-.1l.204-.106l.193-.109l.182-.113l.17-.115l.158-.117l.074-.06v77.647a12.6 12.6 0 0 0 1.57 2.739a11.45 11.45 0 0 0 9.395 4.741c2.53 0 5.294-.9 7.9-2.139l.648-.316q.645-.324 1.271-.667l.62-.347l.609-.354l.594-.358l.58-.36l.564-.36l.547-.36l.528-.356l.753-.523l.704-.504l.648-.48l.59-.447l.526-.41l.843-.677l.718-.604V97.819c0-6.397-4.82-14.129-9.647-16.766l.462-.065l.547-.059l.572-.044l.5-.028l.555-.018l.607-.005l.43.005l.452.013l.469.022l.486.032l.502.043l.517.055q.261.031.53.069l.541.082q.138.022.275.047l.557.105c2.434.49 5.111 1.447 7.557 3.233l.28.21a58 58 0 0 1 4.13-4.545c8.03-7.889 15.834-12.951 23.208-16.323l.98-.44a74 74 0 0 1 5.299-2.085l.945-.324q.471-.158.939-.308l.933-.294q.465-.142.927-.279l.92-.265l.459-.127l.91-.246l.906-.233l.898-.222l.891-.21l.885-.2l.877-.19l.871-.182l.863-.172l.857-.164l1.27-.232l-.524.43l-.54.459l-.702.617l-.623.565l-.698.649l-.503.478l-.53.515l-.556.55l-.579.586l-.6.62l-.306.323l-.628.67q-.475.516-.969 1.068l-.661.752q-.5.576-1.01 1.187l-.683.83c-6.163 7.606-12.863 18.875-12.863 31.93l.009 4.9l.062 12.098l.392 44.887c4.434 4.259 9.975 3.12 15.878-.607l.623-.401l.625-.42q.314-.215.627-.438l.63-.455l.631-.47l.634-.487l.634-.5l.636-.516l.638-.528l.638-.541l.639-.553l.64-.564l.639-.574l.64-.584l.96-.892l.96-.91l.957-.925l.637-.623l1.272-1.262l1.39-1.402l1.382-1.411l.344-.353a46 46 0 0 1-.142.658l-.16.697q-.085.359-.18.734l-.2.77l-.109.398l-.232.821l-.254.853l-.277.884c-4.081 12.737-15.166 34.347-41.767 46.917l-12.56-14.129l-21.192 21.32a78.27 78.27 0 0 1-61.9-31.752a30.5 30.5 0 0 0 6.938 1.303l.186.002l.374-.004l.187-.006l.373-.021l.373-.035c2.974-.33 5.736-1.981 5.736-7V111.32a9.466 9.466 0 0 0-11.604-9.552l-.31.078c-3.489.798-6.728 4.407-9.456 8.729l-.476.77q-.234.387-.464.781l-.454.792l-.442.798l-.43.803l-.418.806l-.406.804l-.392.801l-.38.796l-.543 1.177l-.344.77l-.49 1.126l-.457 1.085l-.422 1.035l-.387.975l-.35.908l-.408 1.09l-.338.934l-.457 1.316l-.148.447a77.9 77.9 0 0 1 26.97-59.703c11.693-9.909 23.17-14.634 32.846-16.987l.962-.228l.95-.212l.936-.198l.463-.093l.917-.178l.454-.083l.896-.158l.882-.146z"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Upstage. Generated by packages/ui/scripts/build-icon-assets.mjs from @lobehub/icons-static-svg (MIT). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" data-brand="upstage"><path d="M19.763 0l-.373 1.297h2.594L22.354 0h-2.591zM16.192 2.27l-.376 1.298h5.52l.37-1.298h-5.514zM12.897 4.54l-.376 1.298h8.166l.37-1.298h-8.16zM2.85 6.81l-.377 1.298h17.565l.37-1.297H2.848zM3.884 9.081l-.376 1.297H19.39l.37-1.297H3.882zM4.088 24l.376-1.297H1.866L1.5 24h2.588zM7.662 21.73l.376-1.297H2.515L2.15 21.73h5.513zM10.957 19.459l.376-1.297h-8.17l-.366 1.297h8.16zM21.005 17.189l.376-1.297H3.812l-.366 1.297h17.559zM19.967 14.919l.376-1.297H4.461l-.366 1.297h15.872zM18.786 12.649l.376-1.297H4.26l-.366 1.297h14.893z" fill="url(#brand-icon-upstage-R0-a)"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="brand-icon-upstage-R0-a" x1="11.927" x2="11.927" y2="24"><stop offset="0" stop-color="#AEBCFE"></stop><stop offset="1" stop-color="#805DFA"></stop></linearGradient></defs></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Vercel. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 256 222" fill="currentColor" data-brand="vercel"><path d="m128 0l128 221.705H0z"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Webflow. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 512 129" data-brand="webflow"><path fill="#4353ff" d="M165.325 50.358c0-9.185-8.932-18.94-24.387-18.94c-17.356 0-36.422 12.732-39.336 38.132c-2.977 25.654 12.985 37.056 29.074 37.056s24.514-6.271 33.129-14.632c-7.412-9.312-16.976-5.004-18.813-4.054c-2.027 1.013-4.624 2.407-9.945 2.407c-6.208 0-12.542-2.787-12.542-14.379c39.78-3.927 42.82-16.406 42.82-25.59m-19.7 1.52c-.253 2.85-1.393 7.728-21.536 10.451c4.244-15.075 12.351-16.215 16.089-16.215c3.484 0 5.7 2.723 5.447 5.764m-67.397 2.47s-8.55 26.857-9.248 29.074c-.253-2.28-6.524-50.484-6.524-50.484c-14.569 0-22.36 10.388-26.477 21.347c0 0-10.389 26.92-11.275 29.2c-.064-2.09-1.584-28.883-1.584-28.883c-.887-13.43-13.175-21.6-23.12-21.6l12.035 73.034c15.266-.063 23.5-10.388 27.808-21.347c0 0 9.184-23.753 9.564-24.83c.064 1.013 6.588 46.177 6.588 46.177c15.329 0 23.564-9.692 27.998-20.27l21.473-52.764c-15.14 0-23.12 10.324-27.238 21.346m143.345-23.057c-9.438 0-16.659 5.131-22.74 12.669v-.063L204.281 0c-12.542 0-22.74 10.895-24.704 27.11l-9.502 78.356c7.222 0 14.886-2.09 19.003-7.411c3.674 4.75 9.185 8.551 17.356 8.551c21.157 0 35.662-24.577 35.662-47.634c-.126-21.03-10.325-27.68-20.523-27.68m-1.963 37.69c-2.217 12.858-9.375 21.6-16.28 21.6c-6.967 0-9.944-3.105-9.944-3.105c1.33-11.275 2.153-18.179 4.687-24.133s8.551-15.456 14.822-15.456c6.144 0 8.932 8.171 6.715 21.093M294.924 33h-14.759l.064-.76c1.013-9.628 3.293-14.695 10.831-15.518c5.131-.507 7.411-3.168 7.981-6.081c.444-2.28 1.837-10.199 1.837-10.199c-29.644-.19-38.955 12.606-41.362 32.115l-.064.444h-.317c-4.814 0-10.134 5.447-11.021 12.351l-.317 2.534h9.882l-8.298 68.537l-2.534 12.289c.317 0 .697.063 1.013.063c13.873-.507 22.74-11.465 24.704-27.364l6.461-53.525h4.624c4.56 0 9.882-4.56 10.832-12.162zm76.772-1.266c-17.04 0-33.129 12.542-38.07 32.241c-4.94 19.7 2.534 43.01 27.618 43.01c25.02 0 39.463-24.26 39.463-44.467c0-20.08-13.619-30.784-29.011-30.784m6.904 36.612c-.887 8.931-4.814 22.487-15.582 22.487c-10.832 0-9.312-15.836-8.235-23.374c1.14-8.044 5.638-19.51 15.33-19.51c8.677 0 9.5 10.325 8.487 20.397m106.29-13.999s-8.552 26.857-9.249 29.074c-.253-2.28-6.524-50.484-6.524-50.484c-14.569 0-22.36 10.388-26.477 21.347c0 0-10.389 26.92-11.275 29.2c-.064-2.09-1.584-28.883-1.584-28.883c-.887-13.43-13.175-21.6-23.12-21.6l11.972 73.034c15.265-.063 23.5-10.388 27.807-21.347c0 0 9.185-23.753 9.502-24.83c.063 1.013 6.587 46.177 6.587 46.177c15.33 0 23.564-9.692 27.998-20.27L512 33.002c-15.076 0-23.057 10.324-27.11 21.346M308.86.443l-12.416 100.145l-2.533 12.352c.316 0 .696.064 1.013.064c13.365-.19 22.867-11.909 24.64-26.668l7.158-57.452c2.154-17.546-8.298-28.44-17.862-28.44"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- WhatsApp. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 256 258" data-brand="whatsapp"><defs><linearGradient id="brand-icon-whatsapp-R0-a" x1="50%" x2="50%" y1="100%" y2="0%"><stop offset="0%" stop-color="#1faf38"></stop><stop offset="100%" stop-color="#60d669"></stop></linearGradient><linearGradient id="brand-icon-whatsapp-R0-b" x1="50%" x2="50%" y1="100%" y2="0%"><stop offset="0%" stop-color="#f9f9f9"></stop><stop offset="100%" stop-color="#fff"></stop></linearGradient></defs><path fill="url(#brand-icon-whatsapp-R0-a)" d="M5.463 127.456c-.006 21.677 5.658 42.843 16.428 61.499L4.433 252.697l65.232-17.104a123 123 0 0 0 58.8 14.97h.054c67.815 0 123.018-55.183 123.047-123.01c.013-32.867-12.775-63.773-36.009-87.025c-23.23-23.25-54.125-36.061-87.043-36.076c-67.823 0-123.022 55.18-123.05 123.004"></path><path fill="url(#brand-icon-whatsapp-R0-b)" d="M1.07 127.416c-.007 22.457 5.86 44.38 17.014 63.704L0 257.147l67.571-17.717c18.618 10.151 39.58 15.503 60.91 15.511h.055c70.248 0 127.434-57.168 127.464-127.423c.012-34.048-13.236-66.065-37.3-90.15C194.633 13.286 162.633.014 128.536 0C58.276 0 1.099 57.16 1.071 127.416m40.24 60.376l-2.523-4.005c-10.606-16.864-16.204-36.352-16.196-56.363C22.614 69.029 70.138 21.52 128.576 21.52c28.3.012 54.896 11.044 74.9 31.06c20.003 20.018 31.01 46.628 31.003 74.93c-.026 58.395-47.551 105.91-105.943 105.91h-.042c-19.013-.01-37.66-5.116-53.922-14.765l-3.87-2.295l-40.098 10.513z"></path><path fill="#fff" d="M96.678 74.148c-2.386-5.303-4.897-5.41-7.166-5.503c-1.858-.08-3.982-.074-6.104-.074c-2.124 0-5.575.799-8.492 3.984c-2.92 3.188-11.148 10.892-11.148 26.561s11.413 30.813 13.004 32.94c1.593 2.123 22.033 35.307 54.405 48.073c26.904 10.609 32.379 8.499 38.218 7.967c5.84-.53 18.844-7.702 21.497-15.139c2.655-7.436 2.655-13.81 1.859-15.142c-.796-1.327-2.92-2.124-6.105-3.716s-18.844-9.298-21.763-10.361c-2.92-1.062-5.043-1.592-7.167 1.597c-2.124 3.184-8.223 10.356-10.082 12.48c-1.857 2.129-3.716 2.394-6.9.801c-3.187-1.598-13.444-4.957-25.613-15.806c-9.468-8.442-15.86-18.867-17.718-22.056c-1.858-3.184-.199-4.91 1.398-6.497c1.431-1.427 3.186-3.719 4.78-5.578c1.588-1.86 2.118-3.187 3.18-5.311c1.063-2.126.531-3.986-.264-5.579c-.798-1.593-6.987-17.343-9.819-23.64"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Windows. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 256 256" data-brand="windows"><path fill="#0078d4" d="M0 0h121.329v121.329H0zm134.671 0H256v121.329H134.671zM0 134.671h121.329V256H0zm134.671 0H256V256H134.671z"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Writer. Generated by packages/ui/scripts/build-icon-assets.mjs from published model-identity assets (nominative use). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 192 192" data-brand="writer"><rect width="192" height="192" fill="#fff"></rect><image href="data:image/png;base64,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" width="192" height="192" preserveAspectRatio="xMidYMid meet"></image></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Xiaomi MiMo. Generated by packages/ui/scripts/build-icon-assets.mjs from @lobehub/icons-static-svg (MIT). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" data-brand="xiaomimimo"><path d="M.958 15.936a.459.459 0 01.459.44v2.729a.46.46 0 01-.918 0v-2.729a.459.459 0 01.459-.44zm4.814-2.035a.46.46 0 01.553.45v4.754a.458.458 0 11-.918 0V15.48L3.74 17.202a.462.462 0 01-.655.016.462.462 0 01-.065-.082L.628 14.67a.459.459 0 01.658-.637l2.124 2.187 2.127-2.188a.46.46 0 01.235-.13zm2.068.004a.46.46 0 01.458.445v4.755a.46.46 0 01-.458.458.459.459 0 01-.458-.458V14.35a.459.459 0 01.458-.445zm1.973 2.014a.46.46 0 01.46.457v2.729a.46.46 0 01-.784.324.46.46 0 01-.134-.324v-2.729a.46.46 0 01.458-.458zm.002-2.045a.458.458 0 01.328.157l2.127 2.19 2.125-2.19a.459.459 0 01.784.318v4.756a.46.46 0 01-.455.458.46.46 0 01-.458-.458V15.48l-1.667 1.723a.46.46 0 01-.65.008l-.005-.005c0-.002-.002-.002-.004-.003l-2.455-2.534a.46.46 0 01-.008-.667.461.461 0 01.338-.128zm6.797 1.206a.46.46 0 01.53.651A1.966 1.966 0 0019.81 18.4a.462.462 0 01.623.18.46.46 0 01-.181.624 2.863 2.863 0 01-1.38.353l-.142-.004a2.88 2.88 0 01-2.393-4.263.461.461 0 01.274-.21zm.864-.931a2.884 2.884 0 013.915 3.914.46.46 0 01-.402.24l-.057-.004a.458.458 0 01-.164-.055.46.46 0 01-.182-.622 1.967 1.967 0 00-2.669-2.67.459.459 0 11-.441-.803zM9.59 6.368c1.481 0 1.696 1.202 1.696 1.654v2.648h-.917v-.432c-.26.346-.792.535-1.36.535-.133 0-1.289-.03-1.384-1.136-.082-.932.675-1.61 2.053-1.61h.691c0-.563-.367-.886-.983-.886-.44.013-.864.174-1.2.458l-.36-.664c.484-.379 1.012-.567 1.764-.567zm4.427.1c1.263 0 2.082.97 2.083 2.15 0 1.181-.824 2.154-2.083 2.154-1.26 0-2.084-.972-2.084-2.152 0-1.18.82-2.153 2.084-2.153zm6.801.015c.68 0 1.202.465 1.197 1.548v2.642H21.1V8.29c0-.312-.002-.98-.63-.98s-.628.667-.628.838v2.524h-.89V8.148c0-.17-.001-.838-.63-.838-.628 0-.628.668-.628.98v2.383h-.917v-4.03h.917V7a1.22 1.22 0 01.947-.516c.398 0 .76.193.982.686a1.321 1.321 0 011.195-.686zm-18.093.872l1.457-1.772H5.32L3.311 8.07l2.14 2.602H4.24L2.725 8.796 1.21 10.672H0L2.138 8.07.13 5.583h1.138l1.458 1.772zm4.149 3.317h-.916V6.644h.916v4.028zm16.99 0h-.916V6.644h.916v4.028zM9.925 8.71c-1.055 0-1.359.412-1.326.742.032.329.324.537.757.537a1.013 1.013 0 001.014-.968l.002-.31h-.447zM14.018 7.3c-.663 0-1.184.487-1.184 1.32 0 .832.52 1.32 1.184 1.32.662 0 1.182-.49 1.182-1.32 0-.832-.52-1.32-1.182-1.32zM6.417 5.001a.568.568 0 01.587.582.588.588 0 01-1.175 0A.57.57 0 016.417 5zm16.991 0a.57.57 0 01.592.582.588.588 0 01-1.174 0 .57.57 0 01.357-.542.572.572 0 01.225-.04z"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- YouTube. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 256 180" data-brand="youtube"><path fill="red" d="M250.346 28.075A32.18 32.18 0 0 0 227.69 5.418C207.824 0 127.87 0 127.87 0S47.912.164 28.046 5.582A32.18 32.18 0 0 0 5.39 28.24c-6.009 35.298-8.34 89.084.165 122.97a32.18 32.18 0 0 0 22.656 22.657c19.866 5.418 99.822 5.418 99.822 5.418s79.955 0 99.82-5.418a32.18 32.18 0 0 0 22.657-22.657c6.338-35.348 8.291-89.1-.164-123.134"></path><path fill="#fff" d="m102.421 128.06l66.328-38.418l-66.328-38.418z"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Yuanbao. Generated by packages/ui/scripts/build-icon-assets.mjs from @lobehub/icons-static-svg (MIT). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" data-brand="yuanbao"><path d="M7.063 1.664C5.198 3.338 4.395 6.67 5.782 8.568c1.47 2.014 4.79 1.745 6.953.113 2.434-1.84 6.033-1.793 7.23.953.91 2.207.067 4.927-2.113 6.483-4.302 3.097-10.577 2.52-13.472-1.444-2.86-3.915-1.35-9.696 2.683-13.011v.002z" fill="#fff"></path><path d="M12.007.647C5.384.647.015 5.734.015 12.007s5.369 11.36 11.992 11.36C18.631 23.366 24 18.28 24 12.006 24 5.732 18.631.647 12.007.647zm5.846 15.472C13.55 19.216 7.275 18.64 4.38 14.675 1.521 10.759 3.03 4.979 7.064 1.664 5.199 3.338 4.396 6.67 5.782 8.568c1.47 2.014 4.791 1.745 6.954.112 2.433-1.838 6.032-1.792 7.23.954.91 2.207.067 4.926-2.113 6.483v.002z" fill="#00CC70"></path><path d="M14.801 14.904a.669.669 0 01-.536-.269l-1.02-1.37a.67.67 0 01.006-.806l1.02-1.328a.668.668 0 011.059.815l-.712.925.72.963a.67.67 0 01-.535 1.066l-.002.004zm-3.931-2.001c0 1.797-.356 2.135-1.16 2.135-.806 0-1.162-.338-1.162-2.135 0-1.796.357-2.134 1.161-2.134.805 0 1.162.338 1.162 2.134h-.001z" fill="#1C1C1C"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Z.ai. Generated by packages/ui/scripts/build-icon-assets.mjs from @lobehub/icons-static-svg (MIT). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" data-brand="zai"><path d="M12.105 2L9.927 4.953H.653L2.83 2h9.276zM23.254 19.048L21.078 22h-9.242l2.174-2.952h9.244zM24 2L9.264 22H0L14.736 2H24z"></path></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
<!-- Zapier. Generated by packages/ui/scripts/build-icon-assets.mjs from @iconify-json/logos (CC0-1.0). -->
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 256 256" data-brand="zapier"><path fill="#FF4A00" d="M128.08 0c7.231.013 14.343.624 21.256 1.78V76.3l52.831-52.696a128.425 128.425 0 0 1 16.34 13.789a128.468 128.468 0 0 1 13.84 16.312L179.513 106.4h74.715A127.58 127.58 0 0 1 256 127.587v.173c0 7.226-.613 14.306-1.772 21.2H179.5l52.847 52.682a129.615 129.615 0 0 1-13.824 16.312h-.015a128.254 128.254 0 0 1-16.326 13.789l-52.846-52.696v74.52a130.321 130.321 0 0 1-21.243 1.781h-.186a130.26 130.26 0 0 1-21.23-1.78v-74.52l-52.831 52.695a128.401 128.401 0 0 1-30.18-30.1L76.5 148.96H1.785A126.984 126.984 0 0 1 0 127.72v-.371c.012-1.875.135-4.166.311-6.536l.055-.713c.522-6.671 1.419-13.7 1.419-13.7H76.5L23.666 53.705a126.265 126.265 0 0 1 13.81-16.286l.026-.026a127.746 127.746 0 0 1 16.344-13.789L106.677 76.3V1.78A130.278 130.278 0 0 1 127.933 0h.147Zm-.013 95.76h-.122a76.718 76.718 0 0 0-27.034 4.902a76.662 76.662 0 0 0-4.915 26.952v.12a76.383 76.383 0 0 0 4.927 26.951a76.608 76.608 0 0 0 27.022 4.902h.122c9.51 0 18.617-1.74 27.022-4.902a76.146 76.146 0 0 0 4.915-26.952v-.12c0-9.484-1.747-18.57-4.915-26.951a76.614 76.614 0 0 0-27.022-4.902Z"></path></svg>
|
|
@@ -40,7 +40,7 @@ function ActionBandCopy({ className, ...props }) {
|
|
|
40
40
|
return _jsx("div", { "data-slot": "action-band-copy", className: cn("min-w-0", className), ...props });
|
|
41
41
|
}
|
|
42
42
|
function ActionBandHeading({ className, ...props }) {
|
|
43
|
-
return (_jsx("h2", { "data-slot": "action-band-heading", className: cn("nc-type-
|
|
43
|
+
return (_jsx("h2", { "data-slot": "action-band-heading", className: cn("nc-type-heading-md max-w-[24ch] text-balance text-primary-foreground", className), ...props }));
|
|
44
44
|
}
|
|
45
45
|
function ActionBandVisual({ className, ...props }) {
|
|
46
46
|
return (_jsx("div", { "data-slot": "action-band-visual", className: cn("flex flex-wrap items-center gap-3", className), ...props }));
|
|
@@ -6,6 +6,11 @@ interface ActionStatusProps {
|
|
|
6
6
|
done: string;
|
|
7
7
|
idleIcon?: ReactNode;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* A control's three words on one action: what it does, what it is doing, what
|
|
11
|
+
* it did. Saving keeps the idle icon and the control's place, and changes only
|
|
12
|
+
* the word; the caller marks the control `disabled` and `aria-busy`.
|
|
13
|
+
*/
|
|
9
14
|
declare function ActionStatus({ state, idle, busy, done, idleIcon }: ActionStatusProps): import("react").JSX.Element;
|
|
10
15
|
export { ActionStatus };
|
|
11
16
|
//# sourceMappingURL=action-status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-status.d.ts","sourceRoot":"","sources":["../../src/components/action-status.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"action-status.d.ts","sourceRoot":"","sources":["../../src/components/action-status.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AACD;;;;GAIG;AACH,iBAAS,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAe,EAAE,EAAE,iBAAiB,+BAOpF;AACD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { CheckIcon } from "lucide-react";
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* A control's three words on one action: what it does, what it is doing, what
|
|
5
|
+
* it did. Saving keeps the idle icon and the control's place, and changes only
|
|
6
|
+
* the word; the caller marks the control `disabled` and `aria-busy`.
|
|
7
|
+
*/
|
|
4
8
|
function ActionStatus({ state, idle, busy, done, idleIcon = null }) {
|
|
5
|
-
return (_jsxs(_Fragment, { children: [state === "
|
|
9
|
+
return (_jsxs(_Fragment, { children: [state === "done" ? _jsx(CheckIcon, { "aria-hidden": "true", "data-icon": "inline-start" }) : idleIcon, state === "saving" ? busy : state === "done" ? done : idle] }));
|
|
6
10
|
}
|
|
7
11
|
export { ActionStatus };
|
|
@@ -21,8 +21,13 @@ export declare const agentOrbForms: readonly ["orbit", "ribbon", "lattice", "glo
|
|
|
21
21
|
* the black canvas, so a chosen orb stays visible in either theme; giallo does
|
|
22
22
|
* not (1.6:1 on white) and is not offered. Absence of a colour is the default:
|
|
23
23
|
* the orb inherits the text colour.
|
|
24
|
+
*
|
|
25
|
+
* Rosso is not among them. It is exactly the error red, so a red Agent beside
|
|
26
|
+
* a red "Bloccato" badge read as a broken Agent rather than a chosen colour.
|
|
27
|
+
* Nadia keeps rosso in her own stripes, where it is one of four and says
|
|
28
|
+
* nothing on its own.
|
|
24
29
|
*/
|
|
25
|
-
export declare const agentOrbColors: readonly ["cobalto", "verde", "
|
|
30
|
+
export declare const agentOrbColors: readonly ["cobalto", "verde", "arancio"];
|
|
26
31
|
export type AgentOrbColor = (typeof agentOrbColors)[number];
|
|
27
32
|
/**
|
|
28
33
|
* The hex each colour is stored as. Nadia keeps an Agent's colour as a CSS
|
|
@@ -34,6 +39,14 @@ export type AgentOrbColor = (typeof agentOrbColors)[number];
|
|
|
34
39
|
export declare const agentOrbColorValues: Record<AgentOrbColor, string>;
|
|
35
40
|
/** The design-system token each colour paints with. */
|
|
36
41
|
export declare const agentOrbColorTokens: Record<AgentOrbColor, string>;
|
|
42
|
+
/**
|
|
43
|
+
* The spellings a retired colour was stored as. Exported so a fixture or a test
|
|
44
|
+
* can write "an Agent that chose rosso" without restating the hex, and so the
|
|
45
|
+
* colour-literal exemption stays on this one file.
|
|
46
|
+
*/
|
|
47
|
+
export declare const retiredAgentOrbColorValues: {
|
|
48
|
+
readonly rosso: "#d3302f";
|
|
49
|
+
};
|
|
37
50
|
/** The `shape` value a chosen form is stored as. */
|
|
38
51
|
export declare const shapeForOrb: (form: AgentOrbForm) => string;
|
|
39
52
|
/** The form an Agent wears until a person chooses one. */
|
|
@@ -43,7 +56,8 @@ export declare const defaultAgentOrbShape: string;
|
|
|
43
56
|
* Resolve the stored strings to what `AgentOrb` draws. The root Agent is Nadia
|
|
44
57
|
* and wears her striped ribbon whatever is stored, since her look is fixed. An
|
|
45
58
|
* unknown shape is the default form; an unknown colour is undefined, which
|
|
46
|
-
* leaves the orb the inherited text colour.
|
|
59
|
+
* leaves the orb the inherited text colour. A stored rosso, by either spelling,
|
|
60
|
+
* draws arancio, so no Agent loses its colour when rosso leaves the picker.
|
|
47
61
|
*/
|
|
48
62
|
export declare function resolveAgentOrb(stored: StoredAgentOrbAppearance, { root }?: {
|
|
49
63
|
root?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-orb-appearance.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb-appearance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzE,uGAAuG;AACvG,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,8EAA8E;AAC9E,eAAO,MAAM,aAAa,+EAQkB,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"agent-orb-appearance.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb-appearance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzE,uGAAuG;AACvG,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,8EAA8E;AAC9E,eAAO,MAAM,aAAa,+EAQkB,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,0CAA2C,CAAC;AACvE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAI7D,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAI7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;;CAAgC,CAAC;AAaxE,oDAAoD;AACpD,eAAO,MAAM,WAAW,GAAI,MAAM,YAAY,KAAG,MAAuB,CAAC;AAEzE,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,YAAsB,CAAC;AACzD,eAAO,MAAM,oBAAoB,EAAE,MAAyC,CAAC;AAsB7E;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAChC,EAAE,IAAY,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAA;CAAE,CAG5D"}
|
|
@@ -13,8 +13,13 @@ export const agentOrbForms = [
|
|
|
13
13
|
* the black canvas, so a chosen orb stays visible in either theme; giallo does
|
|
14
14
|
* not (1.6:1 on white) and is not offered. Absence of a colour is the default:
|
|
15
15
|
* the orb inherits the text colour.
|
|
16
|
+
*
|
|
17
|
+
* Rosso is not among them. It is exactly the error red, so a red Agent beside
|
|
18
|
+
* a red "Bloccato" badge read as a broken Agent rather than a chosen colour.
|
|
19
|
+
* Nadia keeps rosso in her own stripes, where it is one of four and says
|
|
20
|
+
* nothing on its own.
|
|
16
21
|
*/
|
|
17
|
-
export const agentOrbColors = ["cobalto", "verde", "
|
|
22
|
+
export const agentOrbColors = ["cobalto", "verde", "arancio"];
|
|
18
23
|
/**
|
|
19
24
|
* The hex each colour is stored as. Nadia keeps an Agent's colour as a CSS
|
|
20
25
|
* value for its own surfaces, so the stored spelling is a value rather than a
|
|
@@ -25,16 +30,30 @@ export const agentOrbColors = ["cobalto", "verde", "rosso", "arancio"];
|
|
|
25
30
|
export const agentOrbColorValues = {
|
|
26
31
|
cobalto: "#1e3cff",
|
|
27
32
|
verde: "#00a85a",
|
|
28
|
-
rosso: "#d3302f",
|
|
29
33
|
arancio: "#ff5a1f",
|
|
30
34
|
};
|
|
31
35
|
/** The design-system token each colour paints with. */
|
|
32
36
|
export const agentOrbColorTokens = {
|
|
33
37
|
cobalto: "var(--nc-identity-cobalto)",
|
|
34
38
|
verde: "var(--nc-identity-verde)",
|
|
35
|
-
rosso: "var(--nc-identity-rosso)",
|
|
36
39
|
arancio: "var(--nc-identity-arancio)",
|
|
37
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* The spellings a retired colour was stored as. Exported so a fixture or a test
|
|
43
|
+
* can write "an Agent that chose rosso" without restating the hex, and so the
|
|
44
|
+
* colour-literal exemption stays on this one file.
|
|
45
|
+
*/
|
|
46
|
+
export const retiredAgentOrbColorValues = { rosso: "#d3302f" };
|
|
47
|
+
/**
|
|
48
|
+
* The retired colour and what it draws now. An Agent whose colour was chosen
|
|
49
|
+
* before rosso left the picker keeps a colour rather than falling back to the
|
|
50
|
+
* inherited ink, and arancio is the nearest hue that is not a status. This is a
|
|
51
|
+
* data mapping, not an offer: `agentOrbColors` is what a picker shows.
|
|
52
|
+
*/
|
|
53
|
+
const retiredColors = new Map([
|
|
54
|
+
["rosso", "arancio"],
|
|
55
|
+
[retiredAgentOrbColorValues.rosso, "arancio"],
|
|
56
|
+
]);
|
|
38
57
|
/** The `shape` value a chosen form is stored as. */
|
|
39
58
|
export const shapeForOrb = (form) => `orb:${form}`;
|
|
40
59
|
/** The form an Agent wears until a person chooses one. */
|
|
@@ -63,7 +82,8 @@ const retiredShapes = new Map([
|
|
|
63
82
|
* Resolve the stored strings to what `AgentOrb` draws. The root Agent is Nadia
|
|
64
83
|
* and wears her striped ribbon whatever is stored, since her look is fixed. An
|
|
65
84
|
* unknown shape is the default form; an unknown colour is undefined, which
|
|
66
|
-
* leaves the orb the inherited text colour.
|
|
85
|
+
* leaves the orb the inherited text colour. A stored rosso, by either spelling,
|
|
86
|
+
* draws arancio, so no Agent loses its colour when rosso leaves the picker.
|
|
67
87
|
*/
|
|
68
88
|
export function resolveAgentOrb(stored, { root = false } = {}) {
|
|
69
89
|
if (root)
|
|
@@ -83,5 +103,8 @@ function colorFor(color) {
|
|
|
83
103
|
if (!color)
|
|
84
104
|
return undefined;
|
|
85
105
|
const stored = color.toLowerCase();
|
|
86
|
-
|
|
106
|
+
// A Map, not an object, for the same reason `formFor` uses one: the stored
|
|
107
|
+
// colour is a string from a machine.
|
|
108
|
+
return (agentOrbColors.find((name) => stored === agentOrbColorValues[name] || stored === name) ??
|
|
109
|
+
retiredColors.get(stored));
|
|
87
110
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CSSProperties } from "react";
|
|
2
|
-
import { type AgentOrbFigure, type AgentOrbSize } from "../internal/agent-orb.js";
|
|
3
|
-
export type { AgentOrbFigure, AgentOrbForm, AgentOrbSize } from "../internal/agent-orb.js";
|
|
2
|
+
import { type AgentOrbFigure, type AgentOrbPresence, type AgentOrbSize } from "../internal/agent-orb.js";
|
|
3
|
+
export type { AgentOrbFigure, AgentOrbForm, AgentOrbPresence, AgentOrbSize, } from "../internal/agent-orb.js";
|
|
4
4
|
import type { AgentOrbState } from "../internal/agent-orb-motion.js";
|
|
5
5
|
export type { AgentOrbState } from "../internal/agent-orb-motion.js";
|
|
6
6
|
export type AgentOrbProps = {
|
|
@@ -8,7 +8,10 @@ export type AgentOrbProps = {
|
|
|
8
8
|
form: AgentOrbFigure;
|
|
9
9
|
/** The pigment of a chosen form; on Nadia, only her third, white stripe takes it. */
|
|
10
10
|
color?: CSSProperties["color"];
|
|
11
|
+
/** The laid-out size, unless `className` sizes the canvas itself. */
|
|
11
12
|
size?: AgentOrbSize;
|
|
13
|
+
/** How loudly this one orb reads on its ground. `over-picture` sits on a photograph. */
|
|
14
|
+
presence?: AgentOrbPresence;
|
|
12
15
|
paused?: boolean;
|
|
13
16
|
state?: AgentOrbState;
|
|
14
17
|
motionKey?: number;
|
|
@@ -20,5 +23,5 @@ export type AgentOrbProps = {
|
|
|
20
23
|
decorative?: false;
|
|
21
24
|
label: string;
|
|
22
25
|
});
|
|
23
|
-
export declare function AgentOrb({ form, color, size, paused, state, motionKey, decorative, label, className, }: AgentOrbProps): import("react").JSX.Element;
|
|
26
|
+
export declare function AgentOrb({ form, color, size, presence, paused, state, motionKey, decorative, label, className, }: AgentOrbProps): import("react").JSX.Element;
|
|
24
27
|
//# sourceMappingURL=agent-orb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,OAAO,CAAC;AAE9D,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,OAAO,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,8EAA8E;IAC9E,IAAI,EAAE,cAAc,CAAC;IACrB,qFAAqF;IACrF,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,qEAAqE;IACrE,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,CAAC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAElF,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,IAAS,EACT,QAAkB,EAClB,MAAc,EACd,KAAc,EACd,SAAa,EACb,UAAkB,EAClB,KAAK,EACL,SAAS,GACV,EAAE,aAAa,+BAqDf"}
|
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useRef } from "react";
|
|
4
|
-
import { mountAgentOrb } from "../internal/agent-orb.js";
|
|
4
|
+
import { mountAgentOrb, } from "../internal/agent-orb.js";
|
|
5
5
|
import { cn } from "../lib/utils.js";
|
|
6
|
-
export function AgentOrb({ form, color, size = 32, paused = false, state = "idle", motionKey = 0, decorative = false, label, className, }) {
|
|
6
|
+
export function AgentOrb({ form, color, size = 32, presence = "plain", paused = false, state = "idle", motionKey = 0, decorative = false, label, className, }) {
|
|
7
7
|
const canvas = useRef(null);
|
|
8
8
|
const renderer = useRef(null);
|
|
9
|
+
// A remount, from a changed form, size or presence, carries the current
|
|
10
|
+
// pause and state rather than resetting the orb to idle and unpaused.
|
|
9
11
|
const pause = useRef(paused);
|
|
12
|
+
const shown = useRef(state);
|
|
10
13
|
useEffect(() => {
|
|
11
14
|
if (!canvas.current)
|
|
12
15
|
return;
|
|
13
|
-
const mounted = mountAgentOrb(canvas.current,
|
|
16
|
+
const mounted = mountAgentOrb(canvas.current, {
|
|
17
|
+
form,
|
|
18
|
+
size,
|
|
19
|
+
paused: pause.current,
|
|
20
|
+
state: shown.current,
|
|
21
|
+
presence,
|
|
22
|
+
});
|
|
14
23
|
renderer.current = mounted;
|
|
15
24
|
return () => {
|
|
16
25
|
mounted.destroy();
|
|
17
26
|
renderer.current = null;
|
|
18
27
|
};
|
|
19
|
-
}, [form, size]);
|
|
28
|
+
}, [form, size, presence]);
|
|
20
29
|
useEffect(() => {
|
|
21
30
|
pause.current = paused;
|
|
22
31
|
renderer.current?.setPaused(paused);
|
|
23
|
-
}, [paused
|
|
32
|
+
}, [paused]);
|
|
24
33
|
useEffect(() => {
|
|
34
|
+
shown.current = state;
|
|
25
35
|
renderer.current?.setState(state);
|
|
26
|
-
}, [state, motionKey
|
|
27
|
-
return (_jsx("canvas", { ref: canvas, "data-slot": "agent-orb", "data-form": form, "data-state": state, role: decorative ? undefined : "img", "aria-hidden": decorative || undefined, "aria-label": decorative ? undefined : label, className: cn("inline-block shrink-0 align-middle", className), width: size, height: size,
|
|
36
|
+
}, [state, motionKey]);
|
|
37
|
+
return (_jsx("canvas", { ref: canvas, "data-slot": "agent-orb", "data-form": form, "data-state": state, role: decorative ? undefined : "img", "aria-hidden": decorative || undefined, "aria-label": decorative ? undefined : label, className: cn("inline-block size-(--nc-agent-orb-size) shrink-0 align-middle", className), width: size, height: size,
|
|
38
|
+
// The size is a class, not an inline rule, so a caller that sizes the
|
|
39
|
+
// orb from its layout overrides it; the engine then paints that box.
|
|
40
|
+
style: { color, "--nc-agent-orb-size": `${size}px` }, children: decorative ? null : label }));
|
|
28
41
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alias to brand slug. Keys are squashed to letters and digits, so a catalog
|
|
3
|
+
* slug (`google-calendar`), a registry id (`google_calendar`) and a display
|
|
4
|
+
* name (`Google Calendar`) all land on the same entry.
|
|
5
|
+
*/
|
|
6
|
+
export declare const APP_MARK_ALIASES: Readonly<Record<string, string>>;
|
|
7
|
+
/** A connector name reduced to the letters and digits the aliases are keyed on. */
|
|
8
|
+
export declare function squashAppName(value: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* The brand slug for a connector, under any spelling it arrives with, or
|
|
11
|
+
* `undefined` when the set has no mark for it. An exact match wins; otherwise
|
|
12
|
+
* the longest known alias the connector's name contains, so `GitHub MCP` is
|
|
13
|
+
* GitHub and never a shorter accidental match.
|
|
14
|
+
*/
|
|
15
|
+
export declare function appMarkSlug(app: string): string | undefined;
|
|
16
|
+
//# sourceMappingURL=app-mark-aliases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-mark-aliases.d.ts","sourceRoot":"","sources":["../../src/components/app-mark-aliases.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6C5D,CAAC;AAEH,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS3D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Which connector spelling resolves to which brand mark, and the rule that
|
|
3
|
+
* matches one. This is product mapping, not artwork: the marks themselves are
|
|
4
|
+
* generated into `components/brand-icons` from the allow-list in
|
|
5
|
+
* `scripts/build-brand-icons.mjs`, and every slug named here is one of them.
|
|
6
|
+
*
|
|
7
|
+
* The table lives apart from `app-mark.tsx` because two consumers read it. The
|
|
8
|
+
* React `AppMark` turns a slug into a component, and
|
|
9
|
+
* `scripts/build-icon-assets.mjs` writes the same aliases into the published
|
|
10
|
+
* `assets/brand/index.json`, so a consumer without React resolves a connector
|
|
11
|
+
* name exactly as `appMarkFor` does.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Alias to brand slug. Keys are squashed to letters and digits, so a catalog
|
|
15
|
+
* slug (`google-calendar`), a registry id (`google_calendar`) and a display
|
|
16
|
+
* name (`Google Calendar`) all land on the same entry.
|
|
17
|
+
*/
|
|
18
|
+
export const APP_MARK_ALIASES = Object.freeze({
|
|
19
|
+
airtable: "airtable",
|
|
20
|
+
anthropic: "claude",
|
|
21
|
+
apple: "apple",
|
|
22
|
+
asana: "asana",
|
|
23
|
+
atlassian: "atlassian",
|
|
24
|
+
claude: "claude",
|
|
25
|
+
datadog: "datadog",
|
|
26
|
+
discord: "discord",
|
|
27
|
+
figma: "figma",
|
|
28
|
+
gemini: "gemini",
|
|
29
|
+
github: "github",
|
|
30
|
+
gitlab: "gitlab",
|
|
31
|
+
gmail: "gmail",
|
|
32
|
+
googlecalendar: "google-calendar",
|
|
33
|
+
googledrive: "google-drive",
|
|
34
|
+
googlegmail: "gmail",
|
|
35
|
+
huggingface: "huggingface",
|
|
36
|
+
intercom: "intercom",
|
|
37
|
+
jira: "jira",
|
|
38
|
+
linear: "linear",
|
|
39
|
+
mattermost: "mattermost",
|
|
40
|
+
n8n: "n8n",
|
|
41
|
+
netlify: "netlify",
|
|
42
|
+
notion: "notion",
|
|
43
|
+
openai: "openai",
|
|
44
|
+
paypal: "paypal",
|
|
45
|
+
postgres: "postgresql",
|
|
46
|
+
postgresql: "postgresql",
|
|
47
|
+
sentry: "sentry",
|
|
48
|
+
signal: "signal",
|
|
49
|
+
slack: "slack",
|
|
50
|
+
spotify: "spotify",
|
|
51
|
+
square: "square",
|
|
52
|
+
stripe: "stripe",
|
|
53
|
+
supabase: "supabase",
|
|
54
|
+
telegram: "telegram",
|
|
55
|
+
todoist: "todoist",
|
|
56
|
+
unrealengine: "unreal-engine",
|
|
57
|
+
vercel: "vercel",
|
|
58
|
+
webflow: "webflow",
|
|
59
|
+
whatsapp: "whatsapp",
|
|
60
|
+
youtube: "youtube",
|
|
61
|
+
yuanbao: "yuanbao",
|
|
62
|
+
zapier: "zapier",
|
|
63
|
+
});
|
|
64
|
+
/** A connector name reduced to the letters and digits the aliases are keyed on. */
|
|
65
|
+
export function squashAppName(value) {
|
|
66
|
+
return value.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The brand slug for a connector, under any spelling it arrives with, or
|
|
70
|
+
* `undefined` when the set has no mark for it. An exact match wins; otherwise
|
|
71
|
+
* the longest known alias the connector's name contains, so `GitHub MCP` is
|
|
72
|
+
* GitHub and never a shorter accidental match.
|
|
73
|
+
*/
|
|
74
|
+
export function appMarkSlug(app) {
|
|
75
|
+
const target = squashAppName(app);
|
|
76
|
+
if (!target)
|
|
77
|
+
return undefined;
|
|
78
|
+
if (Object.hasOwn(APP_MARK_ALIASES, target))
|
|
79
|
+
return APP_MARK_ALIASES[target];
|
|
80
|
+
const alias = Object.keys(APP_MARK_ALIASES)
|
|
81
|
+
.filter((key) => target.includes(key))
|
|
82
|
+
.sort((a, b) => b.length - a.length)[0];
|
|
83
|
+
return alias ? APP_MARK_ALIASES[alias] : undefined;
|
|
84
|
+
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type BrandIconProps } from "./brand-icons.js";
|
|
3
3
|
type BrandMark = React.ComponentType<BrandIconProps>;
|
|
4
|
+
/**
|
|
5
|
+
* The generated mark for a connector, under any spelling it arrives with, or
|
|
6
|
+
* `undefined` when the set has none.
|
|
7
|
+
*/
|
|
4
8
|
declare function appMarkFor(app: string): BrandMark | undefined;
|
|
5
9
|
type AppMarkProps = Omit<React.ComponentProps<"span">, "children"> & {
|
|
6
10
|
/** The connector's slug, id or display name, e.g. `"google-calendar"`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-mark.d.ts","sourceRoot":"","sources":["../../src/components/app-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app-mark.d.ts","sourceRoot":"","sources":["../../src/components/app-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EA0CL,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAElC,KAAK,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAoDrD;;;GAGG;AACH,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAGtD;AAgBD,KAAK,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACnE,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,iBAAS,OAAO,CAAC,EAAE,GAAG,EAAE,IAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,qBAuC9F;AAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAC/B,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { appMarkSlug } from "./app-mark-aliases.js";
|
|
3
4
|
import { AirtableIcon, AppleIcon, AsanaIcon, AtlassianIcon, ClaudeIcon, DatadogIcon, DiscordIcon, FigmaIcon, GeminiIcon, GithubIcon, GitlabIcon, GmailIcon, GoogleCalendarIcon, GoogleDriveIcon, HuggingFaceIcon, IntercomIcon, JiraIcon, LinearIcon, MattermostIcon, N8nIcon, NetlifyIcon, NotionIcon, OpenaiIcon, PaypalIcon, PostgresqlIcon, SentryIcon, SignalIcon, SlackIcon, SpotifyIcon, SquareIcon, StripeIcon, SupabaseIcon, TelegramIcon, TodoistIcon, UnrealEngineIcon, VercelIcon, WebflowIcon, WhatsappIcon, YoutubeIcon, YuanbaoIcon, ZapierIcon, } from "./brand-icons.js";
|
|
4
5
|
/*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* The generated mark each brand slug is drawn by. Which connector spelling
|
|
7
|
+
* reaches which slug is the alias table in `app-mark-aliases.ts`, which the
|
|
8
|
+
* published `assets/brand/index.json` carries too; the artwork itself is
|
|
9
|
+
* generated. Both tables are product mapping over generated marks.
|
|
9
10
|
*/
|
|
10
|
-
const
|
|
11
|
+
const MARKS_BY_SLUG = {
|
|
11
12
|
airtable: AirtableIcon,
|
|
12
|
-
anthropic: ClaudeIcon,
|
|
13
13
|
apple: AppleIcon,
|
|
14
14
|
asana: AsanaIcon,
|
|
15
15
|
atlassian: AtlassianIcon,
|
|
@@ -21,9 +21,8 @@ const APP_MARKS = {
|
|
|
21
21
|
github: GithubIcon,
|
|
22
22
|
gitlab: GitlabIcon,
|
|
23
23
|
gmail: GmailIcon,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
googlegmail: GmailIcon,
|
|
24
|
+
"google-calendar": GoogleCalendarIcon,
|
|
25
|
+
"google-drive": GoogleDriveIcon,
|
|
27
26
|
huggingface: HuggingFaceIcon,
|
|
28
27
|
intercom: IntercomIcon,
|
|
29
28
|
jira: JiraIcon,
|
|
@@ -34,7 +33,6 @@ const APP_MARKS = {
|
|
|
34
33
|
notion: NotionIcon,
|
|
35
34
|
openai: OpenaiIcon,
|
|
36
35
|
paypal: PaypalIcon,
|
|
37
|
-
postgres: PostgresqlIcon,
|
|
38
36
|
postgresql: PostgresqlIcon,
|
|
39
37
|
sentry: SentryIcon,
|
|
40
38
|
signal: SignalIcon,
|
|
@@ -45,7 +43,7 @@ const APP_MARKS = {
|
|
|
45
43
|
supabase: SupabaseIcon,
|
|
46
44
|
telegram: TelegramIcon,
|
|
47
45
|
todoist: TodoistIcon,
|
|
48
|
-
|
|
46
|
+
"unreal-engine": UnrealEngineIcon,
|
|
49
47
|
vercel: VercelIcon,
|
|
50
48
|
webflow: WebflowIcon,
|
|
51
49
|
whatsapp: WhatsappIcon,
|
|
@@ -53,28 +51,13 @@ const APP_MARKS = {
|
|
|
53
51
|
yuanbao: YuanbaoIcon,
|
|
54
52
|
zapier: ZapierIcon,
|
|
55
53
|
};
|
|
56
|
-
function squash(value) {
|
|
57
|
-
return value.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
58
|
-
}
|
|
59
54
|
/**
|
|
60
55
|
* The generated mark for a connector, under any spelling it arrives with, or
|
|
61
|
-
* `undefined` when the set has none.
|
|
62
|
-
* known name the connector's name contains, so `GitHub MCP` is GitHub and never
|
|
63
|
-
* a shorter accidental match.
|
|
56
|
+
* `undefined` when the set has none.
|
|
64
57
|
*/
|
|
65
|
-
function appMarkKey(app) {
|
|
66
|
-
const target = squash(app);
|
|
67
|
-
if (!target)
|
|
68
|
-
return undefined;
|
|
69
|
-
if (Object.hasOwn(APP_MARKS, target))
|
|
70
|
-
return target;
|
|
71
|
-
return Object.keys(APP_MARKS)
|
|
72
|
-
.filter((key) => target.includes(key))
|
|
73
|
-
.sort((a, b) => b.length - a.length)[0];
|
|
74
|
-
}
|
|
75
58
|
function appMarkFor(app) {
|
|
76
|
-
const
|
|
77
|
-
return
|
|
59
|
+
const slug = appMarkSlug(app);
|
|
60
|
+
return slug ? MARKS_BY_SLUG[slug] : undefined;
|
|
78
61
|
}
|
|
79
62
|
function appInitial(app) {
|
|
80
63
|
return (app
|
|
@@ -91,8 +74,8 @@ const APP_MARK_GLYPH_RATIO = 0.62;
|
|
|
91
74
|
* has no mark for it. Never an invented logo and never a fetched favicon.
|
|
92
75
|
*/
|
|
93
76
|
function AppMark({ app, size = APP_MARK_SIZE, label, className, style, ...props }) {
|
|
94
|
-
const
|
|
95
|
-
const Mark =
|
|
77
|
+
const slug = appMarkSlug(app);
|
|
78
|
+
const Mark = slug ? MARKS_BY_SLUG[slug] : undefined;
|
|
96
79
|
const named = Boolean(label?.trim() || props["aria-label"]?.trim() || props["aria-labelledby"]?.trim());
|
|
97
80
|
const labelling = !named
|
|
98
81
|
? { "aria-hidden": true }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-section.d.ts","sourceRoot":"","sources":["../../src/components/automation-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"automation-section.d.ts","sourceRoot":"","sources":["../../src/components/automation-section.tsx"],"names":[],"mappings":"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"}
|