@nadicodeai/ui 12.1.32 → 12.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/assets/brand/aionlabs.svg +1 -1
- package/dist/assets/brand/airtable.svg +1 -1
- package/dist/assets/brand/apple.svg +1 -1
- package/dist/assets/brand/arcee.svg +1 -1
- package/dist/assets/brand/asana.svg +1 -1
- package/dist/assets/brand/atlassian.svg +1 -1
- package/dist/assets/brand/baidu.svg +1 -1
- package/dist/assets/brand/bytedance.svg +1 -1
- package/dist/assets/brand/claude.svg +1 -1
- package/dist/assets/brand/cohere.svg +1 -1
- package/dist/assets/brand/datadog.svg +1 -1
- package/dist/assets/brand/deepseek.svg +1 -1
- package/dist/assets/brand/discord.svg +1 -1
- package/dist/assets/brand/dolphin.svg +1 -1
- package/dist/assets/brand/dotsstudio.svg +1 -1
- package/dist/assets/brand/figma.svg +1 -1
- package/dist/assets/brand/gemini.svg +1 -1
- package/dist/assets/brand/github.svg +1 -1
- package/dist/assets/brand/gitlab.svg +1 -1
- package/dist/assets/brand/gmail.svg +1 -1
- package/dist/assets/brand/google-calendar.svg +1 -1
- package/dist/assets/brand/google-drive.svg +1 -1
- package/dist/assets/brand/grok.svg +1 -1
- package/dist/assets/brand/huggingface.svg +1 -1
- package/dist/assets/brand/ibm.svg +1 -1
- package/dist/assets/brand/inception.svg +1 -1
- package/dist/assets/brand/inference.svg +1 -1
- package/dist/assets/brand/intercom.svg +1 -1
- package/dist/assets/brand/jira.svg +1 -1
- package/dist/assets/brand/kwaipilot.svg +1 -1
- package/dist/assets/brand/linear.svg +1 -1
- package/dist/assets/brand/linux.svg +1 -1
- package/dist/assets/brand/liquid.svg +1 -1
- package/dist/assets/brand/longcat.svg +1 -1
- package/dist/assets/brand/mattermost.svg +1 -1
- package/dist/assets/brand/meta.svg +1 -1
- package/dist/assets/brand/microsoft.svg +1 -1
- package/dist/assets/brand/minimax.svg +1 -1
- package/dist/assets/brand/mistral.svg +1 -1
- package/dist/assets/brand/moonshot.svg +1 -1
- package/dist/assets/brand/morph.svg +1 -1
- package/dist/assets/brand/n8n.svg +1 -1
- package/dist/assets/brand/netlify.svg +1 -1
- package/dist/assets/brand/nexagi.svg +1 -1
- package/dist/assets/brand/notion.svg +1 -1
- package/dist/assets/brand/nousresearch.svg +1 -1
- package/dist/assets/brand/nova.svg +1 -1
- package/dist/assets/brand/nvidia.svg +1 -1
- package/dist/assets/brand/openai.svg +1 -1
- package/dist/assets/brand/openrouter.svg +1 -1
- package/dist/assets/brand/paypal.svg +1 -1
- package/dist/assets/brand/perceptron.svg +1 -1
- package/dist/assets/brand/perplexity.svg +1 -1
- package/dist/assets/brand/poolside.svg +1 -1
- package/dist/assets/brand/postgresql.svg +1 -1
- package/dist/assets/brand/qwen.svg +1 -1
- package/dist/assets/brand/reka.svg +1 -1
- package/dist/assets/brand/relace.svg +1 -1
- package/dist/assets/brand/sakana.svg +1 -1
- package/dist/assets/brand/sentry.svg +1 -1
- package/dist/assets/brand/signal.svg +1 -1
- package/dist/assets/brand/slack.svg +1 -1
- package/dist/assets/brand/spotify.svg +1 -1
- package/dist/assets/brand/square.svg +1 -1
- package/dist/assets/brand/stepfun.svg +1 -1
- package/dist/assets/brand/stripe.svg +1 -1
- package/dist/assets/brand/supabase.svg +1 -1
- package/dist/assets/brand/telegram.svg +1 -1
- package/dist/assets/brand/tencent.svg +1 -1
- package/dist/assets/brand/the-drummer.svg +1 -1
- package/dist/assets/brand/todoist.svg +1 -1
- package/dist/assets/brand/unreal-engine.svg +1 -1
- package/dist/assets/brand/upstage.svg +1 -1
- package/dist/assets/brand/vercel.svg +1 -1
- package/dist/assets/brand/webflow.svg +1 -1
- package/dist/assets/brand/whatsapp.svg +1 -1
- package/dist/assets/brand/windows.svg +1 -1
- package/dist/assets/brand/xiaomimimo.svg +1 -1
- package/dist/assets/brand/youtube.svg +1 -1
- package/dist/assets/brand/yuanbao.svg +1 -1
- package/dist/assets/brand/zai.svg +1 -1
- package/dist/assets/brand/zapier.svg +1 -1
- package/dist/components/app-mark-frame.d.ts +34 -0
- package/dist/components/app-mark-frame.d.ts.map +1 -0
- package/dist/components/app-mark-frame.js +37 -0
- package/dist/components/app-mark-lazy/server.d.ts +4 -0
- package/dist/components/app-mark-lazy/server.d.ts.map +1 -0
- package/dist/components/app-mark-lazy/server.js +8 -0
- package/dist/components/app-mark-lazy.d.ts +16 -0
- package/dist/components/app-mark-lazy.d.ts.map +1 -0
- package/dist/components/app-mark-lazy.js +84 -0
- package/dist/components/app-mark.d.ts +6 -15
- package/dist/components/app-mark.d.ts.map +1 -1
- package/dist/components/app-mark.js +7 -21
- package/dist/components/brand-icons/aionlabs.d.ts.map +1 -1
- package/dist/components/brand-icons/aionlabs.js +1 -1
- package/dist/components/brand-icons/airtable.js +1 -1
- package/dist/components/brand-icons/apple.js +1 -1
- package/dist/components/brand-icons/arcee.js +1 -1
- package/dist/components/brand-icons/asana.js +1 -1
- package/dist/components/brand-icons/atlassian.js +1 -1
- package/dist/components/brand-icons/baidu.js +1 -1
- package/dist/components/brand-icons/bytedance.js +1 -1
- package/dist/components/brand-icons/claude.js +1 -1
- package/dist/components/brand-icons/cohere.js +1 -1
- package/dist/components/brand-icons/datadog.js +1 -1
- package/dist/components/brand-icons/deepseek.js +1 -1
- package/dist/components/brand-icons/discord.js +1 -1
- package/dist/components/brand-icons/dolphin.js +1 -1
- package/dist/components/brand-icons/dotsstudio.js +1 -1
- package/dist/components/brand-icons/figma.d.ts.map +1 -1
- package/dist/components/brand-icons/figma.js +1 -1
- package/dist/components/brand-icons/gemini.js +1 -1
- package/dist/components/brand-icons/github.js +1 -1
- package/dist/components/brand-icons/gitlab.js +1 -1
- package/dist/components/brand-icons/gmail.js +1 -1
- package/dist/components/brand-icons/google-calendar.js +1 -1
- package/dist/components/brand-icons/google-drive.js +1 -1
- package/dist/components/brand-icons/grok.js +1 -1
- package/dist/components/brand-icons/huggingface.js +1 -1
- package/dist/components/brand-icons/ibm.js +1 -1
- package/dist/components/brand-icons/inception.js +1 -1
- package/dist/components/brand-icons/inference.js +1 -1
- package/dist/components/brand-icons/intercom.js +1 -1
- package/dist/components/brand-icons/jira.js +1 -1
- package/dist/components/brand-icons/kwaipilot.js +1 -1
- package/dist/components/brand-icons/linear.js +1 -1
- package/dist/components/brand-icons/linux.js +1 -1
- package/dist/components/brand-icons/liquid.js +1 -1
- package/dist/components/brand-icons/longcat.js +1 -1
- package/dist/components/brand-icons/mattermost.js +1 -1
- package/dist/components/brand-icons/meta.js +1 -1
- package/dist/components/brand-icons/microsoft.js +1 -1
- package/dist/components/brand-icons/minimax.js +1 -1
- package/dist/components/brand-icons/mistral.d.ts.map +1 -1
- package/dist/components/brand-icons/mistral.js +1 -1
- package/dist/components/brand-icons/moonshot.js +1 -1
- package/dist/components/brand-icons/morph.js +1 -1
- package/dist/components/brand-icons/n8n.js +1 -1
- package/dist/components/brand-icons/netlify.js +1 -1
- package/dist/components/brand-icons/nexagi.js +1 -1
- package/dist/components/brand-icons/notion.js +1 -1
- package/dist/components/brand-icons/nousresearch.js +1 -1
- package/dist/components/brand-icons/nova.js +1 -1
- package/dist/components/brand-icons/nvidia.js +1 -1
- package/dist/components/brand-icons/openai.js +1 -1
- package/dist/components/brand-icons/openrouter.js +1 -1
- package/dist/components/brand-icons/paypal.js +1 -1
- package/dist/components/brand-icons/perceptron.js +1 -1
- package/dist/components/brand-icons/perplexity.js +1 -1
- package/dist/components/brand-icons/poolside.js +1 -1
- package/dist/components/brand-icons/postgresql.js +1 -1
- package/dist/components/brand-icons/qwen.js +1 -1
- package/dist/components/brand-icons/reka.js +1 -1
- package/dist/components/brand-icons/relace.js +1 -1
- package/dist/components/brand-icons/sakana.js +1 -1
- package/dist/components/brand-icons/sentry.js +1 -1
- package/dist/components/brand-icons/signal.js +1 -1
- package/dist/components/brand-icons/slack.js +1 -1
- package/dist/components/brand-icons/spotify.js +1 -1
- package/dist/components/brand-icons/square.js +1 -1
- package/dist/components/brand-icons/stepfun.js +1 -1
- package/dist/components/brand-icons/stripe.js +1 -1
- package/dist/components/brand-icons/supabase.js +1 -1
- package/dist/components/brand-icons/telegram.js +1 -1
- package/dist/components/brand-icons/tencent.js +1 -1
- package/dist/components/brand-icons/the-drummer.js +2 -2
- package/dist/components/brand-icons/todoist.js +1 -1
- package/dist/components/brand-icons/unreal-engine.js +1 -1
- package/dist/components/brand-icons/upstage.js +1 -1
- package/dist/components/brand-icons/vercel.js +1 -1
- package/dist/components/brand-icons/webflow.js +1 -1
- package/dist/components/brand-icons/whatsapp.js +1 -1
- package/dist/components/brand-icons/windows.js +1 -1
- package/dist/components/brand-icons/xiaomimimo.js +1 -1
- package/dist/components/brand-icons/youtube.js +1 -1
- package/dist/components/brand-icons/yuanbao.js +1 -1
- package/dist/components/brand-icons/zai.js +1 -1
- package/dist/components/brand-icons/zapier.js +1 -1
- package/dist/components/chart-date-range-control.d.ts.map +1 -1
- package/dist/components/chart-date-range-control.js +7 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/internal/agent-orb.d.ts.map +1 -1
- package/dist/internal/agent-orb.js +21 -5
- package/package.json +8 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
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="
|
|
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="M128 0a128 128 0 0 1 128 128c0 70.69-57.3 128-128 128S0 198.7 0 128C0 58.03 56.16 1.16 125.88.03zm47 14.46a122.88 122.88 0 1 0-47 236.41c67.86 0 122.87-55.01 122.87-122.88 0-49.7-29.94-94.5-75.86-113.53m-58.63 36.07c-10.71 6.11-16.74 16.08-16.74 24.45 0 7.51 2.54 10.32 5.2 10.99l.28.06.15.03.28.04q.5.05.99.03l.27-.02.28-.03.13-.02.27-.05.26-.06.25-.06.25-.08.24-.08.23-.09.23-.1.21-.1.2-.1.2-.1.18-.12.17-.11.16-.12.07-.06v77.65a13 13 0 0 0 1.57 2.73 11.5 11.5 0 0 0 9.4 4.75c2.53 0 5.3-.9 7.9-2.14l.65-.32q.64-.32 1.27-.67l.62-.34.6-.36.6-.36.58-.36.56-.36.55-.36.53-.35.75-.53.7-.5.65-.48.6-.45.52-.4.84-.68.72-.6V97.81c0-6.4-4.82-14.13-9.65-16.77l.47-.06.54-.06.57-.05.5-.02.56-.02h1.04l.45.01.47.02.48.04.5.04.52.05.53.07.54.09.28.04.56.1c2.43.5 5.1 1.45 7.55 3.24l.28.21a58 58 0 0 1 4.13-4.54c8.03-7.9 15.84-12.96 23.21-16.33l.98-.44a74 74 0 0 1 5.3-2.08l.94-.33.94-.3.94-.3.92-.28.92-.26.46-.13.91-.25.9-.23.9-.22.9-.21.88-.2.88-.2.87-.17.86-.17.86-.17 1.27-.23-.52.43-.54.46-.7.62-.63.56-.7.65-.5.48-.53.51-.56.55-.57.59-.6.62-.31.32-.63.67-.97 1.07-.66.75-1 1.19-.7.83c-6.15 7.6-12.85 18.87-12.85 31.93v4.9l.07 12.1.39 44.88c4.43 4.26 9.97 3.12 15.88-.6l.62-.4.62-.43.63-.43.63-.46.63-.47.64-.49.63-.5.64-.51.63-.53.64-.54.64-.55.64-.57.64-.57.64-.59.96-.89.96-.9.96-.93.63-.63 1.28-1.26 1.39-1.4 1.38-1.41.34-.35-.14.66-.16.7-.18.73-.2.77-.1.4-.24.82-.25.85-.28.88a78.6 78.6 0 0 1-41.77 46.92L148.17 185l-21.19 21.32a78.3 78.3 0 0 1-61.9-31.75 31 31 0 0 0 6.94 1.3h.74l.38-.03.37-.03c2.97-.33 5.74-1.98 5.74-7v-57.5a9.47 9.47 0 0 0-11.6-9.55l-.32.08c-3.49.8-6.73 4.4-9.45 8.73l-.48.77-.46.78-.46.79-.44.8-.43.8-.42.8-.4.8-.4.81-.38.8-.54 1.17-.34.77-.5 1.13-.45 1.08-.42 1.04-.39.97-.35.91-.4 1.1-.34.93-.46 1.31-.15.45a77.9 77.9 0 0 1 26.97-59.7c11.7-9.91 23.17-14.64 32.85-17l.96-.22.95-.21.93-.2.47-.1.91-.17.46-.08.9-.16.88-.15z"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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="
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" data-brand="upstage"><path d="m19.76 0-.37 1.3h2.6l.36-1.3zM16.2 2.27l-.37 1.3h5.52l.37-1.3zm-3.3 2.27-.37 1.3h8.17l.37-1.3zM2.86 6.81l-.38 1.3h17.57l.37-1.3zm1.03 2.27-.37 1.3H19.4l.37-1.3zM4.08 24l.38-1.3h-2.6L1.5 24zm3.58-2.27.38-1.3H2.52l-.37 1.3zm3.3-2.27.37-1.3H3.16l-.36 1.3zM21 17.19l.38-1.3H3.81l-.36 1.3zm-1.03-2.27.37-1.3H4.46l-.36 1.3zm-1.18-2.27.37-1.3H4.26l-.37 1.3z" 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>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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
|
|
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 0 128 221.7H0z"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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.
|
|
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.33 50.36c0-9.19-8.94-18.94-24.4-18.94-17.35 0-36.41 12.73-39.33 38.13-2.98 25.65 12.99 37.06 29.08 37.06s24.51-6.28 33.12-14.64c-7.4-9.3-16.97-5-18.8-4.05-2.04 1.01-4.63 2.4-9.95 2.4-6.21 0-12.55-2.78-12.55-14.37 39.78-3.93 42.83-16.4 42.83-25.6m-19.7 1.53c-.26 2.85-1.4 7.73-21.54 10.45 4.24-15.08 12.35-16.22 16.09-16.22 3.48 0 5.7 2.73 5.44 5.77m-67.4 2.47-9.24 29.07c-.25-2.28-6.52-50.48-6.52-50.48-14.57 0-22.36 10.39-26.48 21.34L24.7 83.48c-.06-2.09-1.58-28.88-1.58-28.88C22.23 41.17 9.94 33 0 33l12.03 73.04c15.27-.07 23.5-10.4 27.81-21.35 0 0 9.19-23.75 9.57-24.83.06 1.01 6.58 46.18 6.58 46.18 15.33 0 23.57-9.7 28-20.27L105.47 33c-15.14 0-23.12 10.33-27.24 21.35m143.34-23.06c-9.44 0-16.66 5.13-22.74 12.67v-.06L204.28 0c-12.54 0-22.74 10.9-24.7 27.11l-9.5 78.36c7.22 0 14.88-2.1 19-7.42 3.67 4.75 9.18 8.56 17.35 8.56 21.16 0 35.67-24.58 35.67-47.64-.13-21.03-10.33-27.68-20.53-27.68M219.61 69c-2.22 12.85-9.38 21.6-16.28 21.6-6.97 0-9.94-3.11-9.94-3.11 1.33-11.28 2.15-18.18 4.68-24.14s8.55-15.45 14.83-15.45c6.14 0 8.93 8.17 6.71 21.1m75.31-36h-14.76l.07-.76c1.01-9.63 3.3-14.7 10.83-15.52 5.13-.5 7.41-3.17 7.98-6.08.44-2.28 1.84-10.2 1.84-10.2-29.65-.19-38.96 12.6-41.36 32.12l-.07.44h-.32c-4.8 0-10.13 5.45-11.02 12.35l-.31 2.54h9.88l-8.3 68.53-2.53 12.3c.31 0 .7.05 1.01.05 13.87-.5 22.74-11.46 24.7-27.36l6.46-53.52h4.63c4.56 0 9.88-4.56 10.83-12.17zm76.78-1.27c-17.04 0-33.13 12.55-38.07 32.25s2.53 43 27.61 43c25.02 0 39.47-24.26 39.47-44.46 0-20.08-13.62-30.79-29.01-30.79m6.9 36.62c-.89 8.93-4.81 22.48-15.58 22.48-10.83 0-9.31-15.83-8.24-23.37 1.14-8.04 5.64-19.51 15.33-19.51 8.68 0 9.5 10.32 8.49 20.4m106.29-14-9.25 29.07c-.25-2.28-6.52-50.48-6.52-50.48-14.57 0-22.36 10.39-26.48 21.34l-11.27 29.2c-.07-2.09-1.59-28.88-1.59-28.88-.89-13.43-13.17-21.6-23.12-21.6l11.97 73.04c15.27-.07 23.5-10.4 27.81-21.35 0 0 9.19-23.75 9.5-24.83.07 1.01 6.59 46.18 6.59 46.18 15.33 0 23.56-9.7 28-20.27L512 33c-15.08 0-23.06 10.33-27.11 21.35M308.86.45l-12.42 100.14-2.53 12.35c.32 0 .7.06 1.01.06 13.37-.19 22.87-11.9 24.64-26.66l7.16-57.46c2.16-17.54-8.3-28.44-17.86-28.44"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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.
|
|
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.46 127.46a123 123 0 0 0 16.43 61.5L4.43 252.7l65.24-17.1a123 123 0 0 0 58.8 14.96h.05c67.81 0 123.02-55.18 123.05-123a122.3 122.3 0 0 0-36.01-87.03A122.3 122.3 0 0 0 128.5 4.45c-67.8 0-123 55.18-123.04 123"></path><path fill="url(#brand-icon-whatsapp-R0-b)" d="M1.07 127.42a127 127 0 0 0 17.01 63.7L0 257.15l67.57-17.72a127.4 127.4 0 0 0 60.91 15.51h.06c70.24 0 127.43-57.17 127.46-127.42a126.7 126.7 0 0 0-37.3-90.15A126.7 126.7 0 0 0 128.54 0C58.28 0 1.1 57.16 1.07 127.42m40.24 60.37-2.52-4a105.6 105.6 0 0 1-16.2-56.37c.02-58.4 47.55-105.9 105.99-105.9 28.3.01 54.9 11.04 74.9 31.06a105.3 105.3 0 0 1 31 74.93c-.03 58.4-47.55 105.91-105.94 105.91h-.05a106 106 0 0 1-53.92-14.76l-3.87-2.3-40.1 10.51z"></path><path fill="#fff" d="M96.68 74.15c-2.39-5.3-4.9-5.41-7.17-5.5-1.86-.09-3.98-.08-6.1-.08-2.13 0-5.58.8-8.5 3.99C72 75.74 63.78 83.45 63.78 99.12s11.41 30.8 13 32.94c1.6 2.12 22.04 35.3 54.4 48.07 26.91 10.6 32.39 8.5 38.23 7.97s18.84-7.7 21.5-15.14c2.65-7.44 2.65-13.81 1.85-15.15-.8-1.32-2.92-2.12-6.1-3.71s-18.85-9.3-21.77-10.36-5.04-1.6-7.16 1.6c-2.13 3.18-8.23 10.35-10.09 12.48-1.85 2.12-3.71 2.39-6.9.8-3.18-1.6-13.44-4.96-25.6-15.81-9.48-8.44-15.87-18.87-17.73-22.06-1.85-3.18-.2-4.9 1.4-6.5 1.43-1.42 3.19-3.71 4.78-5.57s2.12-3.19 3.18-5.31c1.06-2.13.53-3.99-.26-5.58-.8-1.6-6.99-17.34-9.82-23.64"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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.
|
|
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.33v121.33H0zm134.67 0H256v121.33H134.67zM0 134.67h121.33V256H0zm134.67 0H256V256H134.67z"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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.
|
|
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.96 15.94a.46.46 0 0 1 .46.44v2.73a.46.46 0 0 1-.92 0v-2.73a.46.46 0 0 1 .46-.44m4.81-2.04a.46.46 0 0 1 .56.45v4.75a.46.46 0 1 1-.92 0v-3.62L3.74 17.2a.46.46 0 0 1-.65.02l-.07-.08-2.4-2.47a.46.46 0 0 1 .67-.64l2.12 2.19 2.13-2.19zm2.07 0a.46.46 0 0 1 .46.45v4.76a.46.46 0 0 1-.46.45.46.46 0 0 1-.46-.45v-4.76a.46.46 0 0 1 .46-.44m1.97 2.02a.46.46 0 0 1 .46.46v2.72a.46.46 0 0 1-.78.33.5.5 0 0 1-.13-.33v-2.72a.46.46 0 0 1 .45-.46m0-2.05a.5.5 0 0 1 .33.16l2.13 2.2 2.13-2.2a.46.46 0 0 1 .78.32v4.76a.46.46 0 0 1-.46.45.46.46 0 0 1-.45-.45v-3.63L12.6 17.2a.46.46 0 0 1-.65.01h-.01l-2.45-2.54a.46.46 0 0 1-.01-.67.5.5 0 0 1 .33-.13m6.8 1.21a.46.46 0 0 1 .53.65 1.97 1.97 0 0 0 2.67 2.67.46.46 0 0 1 .62.18.46.46 0 0 1-.18.62 3 3 0 0 1-1.38.36h-.14a2.88 2.88 0 0 1-2.4-4.27.5.5 0 0 1 .28-.21m.87-.93a2.88 2.88 0 0 1 3.91 3.91.5.5 0 0 1-.4.24h-.06l-.16-.06a.46.46 0 0 1-.18-.62 1.97 1.97 0 0 0-2.67-2.67.46.46 0 1 1-.44-.8M9.59 6.37c1.48 0 1.7 1.2 1.7 1.65v2.65h-.92v-.43c-.26.34-.8.53-1.36.53-.13 0-1.29-.03-1.38-1.13-.09-.94.67-1.61 2.05-1.61h.69c0-.57-.37-.89-.98-.89-.44.01-.87.18-1.2.46l-.36-.66a2.7 2.7 0 0 1 1.76-.57m4.43.1c1.26 0 2.08.97 2.08 2.15s-.82 2.15-2.08 2.15-2.09-.97-2.09-2.15.82-2.15 2.09-2.15m6.8.01c.68 0 1.2.47 1.2 1.55v2.64h-.92V8.3c0-.31 0-.98-.63-.98s-.63.67-.63.84v2.52h-.89V8.15c0-.17 0-.84-.63-.84s-.63.67-.63.98v2.38h-.91V6.64h.91V7a1.2 1.2 0 0 1 .95-.52c.4 0 .76.2.98.69a1.3 1.3 0 0 1 1.2-.69m-18.1.87 1.46-1.77h1.14l-2 2.49 2.13 2.6H4.24L2.73 8.8 1.2 10.67H0l2.14-2.6L.13 5.58h1.14zm4.15 3.32h-.91V6.64h.91zm17 0h-.92V6.64h.91zM9.92 8.71c-1.06 0-1.36.41-1.33.74s.32.54.76.54a1 1 0 0 0 1.01-.97v-.3zm4.09-1.41c-.66 0-1.19.49-1.19 1.32s.52 1.32 1.19 1.32 1.18-.49 1.18-1.32-.52-1.32-1.18-1.32M6.42 5a.57.57 0 0 1 .58.58.59.59 0 0 1-1.17 0A.57.57 0 0 1 6.42 5M23.4 5a.57.57 0 0 1 .59.58.59.59 0 0 1-1.17 0 .6.6 0 0 1 .35-.54z"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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.
|
|
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.35 28.08a32.2 32.2 0 0 0-22.66-22.66C207.82 0 127.87 0 127.87 0S47.91.16 28.05 5.58A32.2 32.2 0 0 0 5.39 28.24c-6 35.3-8.34 89.08.17 122.97a32.2 32.2 0 0 0 22.65 22.66c19.87 5.42 99.82 5.42 99.82 5.42s79.96 0 99.82-5.42a32.2 32.2 0 0 0 22.66-22.66c6.34-35.35 8.3-89.1-.16-123.13"></path><path fill="#fff" d="m102.42 128.06 66.33-38.42-66.33-38.42z"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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.
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" data-brand="yuanbao"><path d="M7.06 1.66C5.2 3.34 4.4 6.67 5.78 8.56c1.47 2.02 4.8 1.75 6.96.12 2.43-1.84 6.03-1.8 7.23.95.9 2.21.06 4.93-2.12 6.49-4.3 3.1-10.57 2.52-13.47-1.45-2.86-3.91-1.35-9.7 2.68-13" fill="#fff"></path><path d="M12 .65C5.39.65.03 5.73.03 12S5.38 23.37 12 23.37 24 18.28 24 12 18.63.65 12 .65m5.85 15.47c-4.3 3.1-10.57 2.52-13.47-1.45-2.86-3.91-1.35-9.7 2.68-13-1.86 1.67-2.66 5-1.28 6.9 1.47 2.01 4.8 1.74 6.96.11 2.43-1.84 6.03-1.8 7.23.95.9 2.21.06 4.93-2.12 6.49" fill="#00CC70"></path><path d="M14.8 14.9a.7.7 0 0 1-.54-.27l-1.01-1.37a.7.7 0 0 1 0-.8l1.02-1.33a.67.67 0 0 1 1.06.82l-.71.92.72.96a.67.67 0 0 1-.54 1.07m-3.93-2c0 1.8-.36 2.14-1.16 2.14s-1.16-.34-1.16-2.14.36-2.13 1.16-2.13 1.16.34 1.16 2.13" fill="#1C1C1C"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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.
|
|
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.1 2 9.94 4.95H.65L2.83 2zm11.15 17.05L21.08 22h-9.24L14 19.05zM24 2 9.26 22H0L14.74 2z"></path></svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
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
|
|
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 0q10.86.03 21.26 1.78V76.3l52.83-52.7a128 128 0 0 1 16.34 13.8 129 129 0 0 1 13.84 16.3l-52.84 52.7h74.72a128 128 0 0 1 1.77 21.19v.17q-.02 10.85-1.77 21.2H179.5l52.85 52.68a130 130 0 0 1-13.83 16.31h-.01a128 128 0 0 1-16.33 13.8l-52.84-52.7v74.52a130 130 0 0 1-21.25 1.78h-.18a130 130 0 0 1-21.23-1.78v-74.52l-52.83 52.7a128 128 0 0 1-30.18-30.1l52.83-52.69H1.79A127 127 0 0 1 0 127.72v-.37c.01-1.88.14-4.17.31-6.54l.06-.71c.52-6.67 1.42-13.7 1.42-13.7H76.5L23.67 53.7a126 126 0 0 1 13.8-16.28l.03-.03A128 128 0 0 1 53.85 23.6l52.83 52.7V1.78A130 130 0 0 1 127.93 0zm-.01 95.76h-.12a77 77 0 0 0-27.04 4.9A77 77 0 0 0 96 127.61v.12a76 76 0 0 0 4.92 26.96 77 77 0 0 0 27.03 4.9h.12a77 77 0 0 0 27.02-4.9 76 76 0 0 0 4.91-26.96v-.12c0-9.48-1.74-18.57-4.91-26.95a77 77 0 0 0-27.02-4.9"></path></svg>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/** The letter an app outside the set is drawn with: its first letter or digit, or a question mark. */
|
|
3
|
+
declare function appInitial(app: string): string;
|
|
4
|
+
declare const APP_MARK_SIZE = 24;
|
|
5
|
+
type AppMarkProps = Omit<React.ComponentProps<"span">, "children"> & {
|
|
6
|
+
/** The connector's slug, id or display name, e.g. `"google-calendar"`. */
|
|
7
|
+
app: string;
|
|
8
|
+
/** The tile's box in CSS pixels; the glyph scales with it. Defaults to 24, the row size. */
|
|
9
|
+
size?: number;
|
|
10
|
+
/**
|
|
11
|
+
* The mark's accessible name. Beside the app's name it needs none, and a
|
|
12
|
+
* bare mark stays decorative until one arrives.
|
|
13
|
+
*/
|
|
14
|
+
label?: string;
|
|
15
|
+
};
|
|
16
|
+
/** The app's initial, drawn in the tile where the set has no mark for it. */
|
|
17
|
+
declare function AppMarkMonogram({ app, size }: {
|
|
18
|
+
app: string;
|
|
19
|
+
size: number;
|
|
20
|
+
}): React.JSX.Element;
|
|
21
|
+
/**
|
|
22
|
+
* The tile every app mark is drawn in, whichever way its glyph arrives: `glyph`
|
|
23
|
+
* draws the brand at the size it is given, and without one the tile carries the
|
|
24
|
+
* app's initial.
|
|
25
|
+
*/
|
|
26
|
+
declare function AppMarkFrame({ app, size, label, className, style, glyph, ...props }: AppMarkProps & {
|
|
27
|
+
glyph: ((glyphSize: number) => React.ReactNode) | undefined;
|
|
28
|
+
}): React.JSX.Element;
|
|
29
|
+
declare function SuspendedGlyphFrame({ drawGlyph, ...props }: AppMarkProps & {
|
|
30
|
+
drawGlyph: ((glyphSize: number) => React.ReactNode) | undefined;
|
|
31
|
+
}): React.JSX.Element;
|
|
32
|
+
export { APP_MARK_SIZE, AppMarkFrame, AppMarkMonogram, SuspendedGlyphFrame, appInitial };
|
|
33
|
+
export type { AppMarkProps };
|
|
34
|
+
//# sourceMappingURL=app-mark-frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-mark-frame.d.ts","sourceRoot":"","sources":["../../src/components/app-mark-frame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,sGAAsG;AACtG,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOvC;AAED,QAAA,MAAM,aAAa,KAAK,CAAC;AAKzB,KAAK,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACnE,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,4FAA4F;IAC5F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,6EAA6E;AAC7E,iBAAS,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,qBAWpE;AAED;;;;GAIG;AACH,iBAAS,YAAY,CAAC,EACpB,GAAG,EACH,IAAoB,EACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,KAAK,EACL,GAAG,KAAK,EACT,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CAAE,qBA8BhF;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,GAAG;IAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CAAE,qBAWpF;AAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AACzF,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
/** The letter an app outside the set is drawn with: its first letter or digit, or a question mark. */
|
|
5
|
+
function appInitial(app) {
|
|
6
|
+
return (app
|
|
7
|
+
.trim()
|
|
8
|
+
.match(/[a-z0-9]/i)?.[0]
|
|
9
|
+
?.toUpperCase() ?? "?");
|
|
10
|
+
}
|
|
11
|
+
const APP_MARK_SIZE = 24;
|
|
12
|
+
/** The glyph's share of the tile, the same ratio as `ModelMark`. */
|
|
13
|
+
const APP_MARK_GLYPH_RATIO = 0.62;
|
|
14
|
+
/** The app's initial, drawn in the tile where the set has no mark for it. */
|
|
15
|
+
function AppMarkMonogram({ app, size }) {
|
|
16
|
+
return (_jsx("span", { "aria-hidden": "true", className: "font-semibold leading-none text-muted-foreground", "data-slot": "app-mark-monogram", style: { fontSize: Math.max(8, Math.round(size * 0.4)) }, children: appInitial(app) }));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The tile every app mark is drawn in, whichever way its glyph arrives: `glyph`
|
|
20
|
+
* draws the brand at the size it is given, and without one the tile carries the
|
|
21
|
+
* app's initial.
|
|
22
|
+
*/
|
|
23
|
+
function AppMarkFrame({ app, size = APP_MARK_SIZE, label, className, style, glyph, ...props }) {
|
|
24
|
+
const named = Boolean(label?.trim() || props["aria-label"]?.trim() || props["aria-labelledby"]?.trim());
|
|
25
|
+
const labelling = !named
|
|
26
|
+
? { "aria-hidden": true }
|
|
27
|
+
: label?.trim()
|
|
28
|
+
? { role: "img", "aria-label": label }
|
|
29
|
+
: {};
|
|
30
|
+
return (_jsx("span", { "data-slot": "app-mark", "data-app": app, "data-mark": glyph ? "brand" : "monogram", className: cn("inline-flex shrink-0 items-center justify-center rounded-md border border-border bg-background text-foreground", className), style: { width: size, height: size, ...style }, ...props, ...labelling, children: glyph ? (glyph(Math.round(size * APP_MARK_GLYPH_RATIO))) : (_jsx(AppMarkMonogram, { app: app, size: size })) }));
|
|
31
|
+
}
|
|
32
|
+
function SuspendedGlyphFrame({ drawGlyph, ...props }) {
|
|
33
|
+
return (_jsx(AppMarkFrame, { ...props, glyph: drawGlyph
|
|
34
|
+
? (glyphSize) => _jsx(React.Suspense, { fallback: null, children: drawGlyph(glyphSize) })
|
|
35
|
+
: undefined }));
|
|
36
|
+
}
|
|
37
|
+
export { APP_MARK_SIZE, AppMarkFrame, AppMarkMonogram, SuspendedGlyphFrame, appInitial };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/components/app-mark-lazy/server.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3E,iBAAS,WAAW,CAAC,KAAK,EAAE,YAAY,+BAQvC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { appMarkFor } from "../app-mark.js";
|
|
3
|
+
import { SuspendedGlyphFrame } from "../app-mark-frame.js";
|
|
4
|
+
function LazyAppMark(props) {
|
|
5
|
+
const Mark = appMarkFor(props.app);
|
|
6
|
+
return (_jsx(SuspendedGlyphFrame, { ...props, drawGlyph: Mark ? (glyphSize) => _jsx(Mark, { size: glyphSize }) : undefined }));
|
|
7
|
+
}
|
|
8
|
+
export { LazyAppMark };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type AppMarkProps } from "./app-mark-frame.js";
|
|
3
|
+
/**
|
|
4
|
+
* `AppMark` for a client component: the same tile, with the glyph fetched on
|
|
5
|
+
* first use and shared by every later mark of that brand.
|
|
6
|
+
*
|
|
7
|
+
* The glyph sits in its own Suspense boundary. Outside the browser the
|
|
8
|
+
* package's export conditions resolve this entry to `app-mark-lazy/server.tsx`,
|
|
9
|
+
* which draws the glyph at once inside the same boundary, so the server's HTML
|
|
10
|
+
* carries the mark and hydration keeps it on screen while its chunk loads. A
|
|
11
|
+
* mark first drawn in the browser shows the empty tile until its chunk
|
|
12
|
+
* arrives; the tile keeps its size, so nothing moves.
|
|
13
|
+
*/
|
|
14
|
+
declare function LazyAppMark(props: AppMarkProps): React.JSX.Element;
|
|
15
|
+
export { LazyAppMark };
|
|
16
|
+
//# sourceMappingURL=app-mark-lazy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-mark-lazy.d.ts","sourceRoot":"","sources":["../../src/components/app-mark-lazy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AA0F1B;;;;;;;;;;GAUG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,YAAY,qBAgBvC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { appMarkSlug } from "./app-mark-aliases.js";
|
|
4
|
+
import { APP_MARK_SIZE, AppMarkMonogram, SuspendedGlyphFrame, } from "./app-mark-frame.js";
|
|
5
|
+
const GLYPH_LOADERS = {
|
|
6
|
+
airtable: () => import("./brand-icons/airtable").then((module) => module.AirtableIcon),
|
|
7
|
+
apple: () => import("./brand-icons/apple").then((module) => module.AppleIcon),
|
|
8
|
+
asana: () => import("./brand-icons/asana").then((module) => module.AsanaIcon),
|
|
9
|
+
atlassian: () => import("./brand-icons/atlassian").then((module) => module.AtlassianIcon),
|
|
10
|
+
claude: () => import("./brand-icons/claude").then((module) => module.ClaudeIcon),
|
|
11
|
+
datadog: () => import("./brand-icons/datadog").then((module) => module.DatadogIcon),
|
|
12
|
+
discord: () => import("./brand-icons/discord").then((module) => module.DiscordIcon),
|
|
13
|
+
figma: () => import("./brand-icons/figma").then((module) => module.FigmaIcon),
|
|
14
|
+
gemini: () => import("./brand-icons/gemini").then((module) => module.GeminiIcon),
|
|
15
|
+
github: () => import("./brand-icons/github").then((module) => module.GithubIcon),
|
|
16
|
+
gitlab: () => import("./brand-icons/gitlab").then((module) => module.GitlabIcon),
|
|
17
|
+
gmail: () => import("./brand-icons/gmail").then((module) => module.GmailIcon),
|
|
18
|
+
"google-calendar": () => import("./brand-icons/google-calendar").then((module) => module.GoogleCalendarIcon),
|
|
19
|
+
"google-drive": () => import("./brand-icons/google-drive").then((module) => module.GoogleDriveIcon),
|
|
20
|
+
huggingface: () => import("./brand-icons/huggingface").then((module) => module.HuggingFaceIcon),
|
|
21
|
+
intercom: () => import("./brand-icons/intercom").then((module) => module.IntercomIcon),
|
|
22
|
+
jira: () => import("./brand-icons/jira").then((module) => module.JiraIcon),
|
|
23
|
+
linear: () => import("./brand-icons/linear").then((module) => module.LinearIcon),
|
|
24
|
+
mattermost: () => import("./brand-icons/mattermost").then((module) => module.MattermostIcon),
|
|
25
|
+
n8n: () => import("./brand-icons/n8n").then((module) => module.N8nIcon),
|
|
26
|
+
netlify: () => import("./brand-icons/netlify").then((module) => module.NetlifyIcon),
|
|
27
|
+
notion: () => import("./brand-icons/notion").then((module) => module.NotionIcon),
|
|
28
|
+
openai: () => import("./brand-icons/openai").then((module) => module.OpenaiIcon),
|
|
29
|
+
paypal: () => import("./brand-icons/paypal").then((module) => module.PaypalIcon),
|
|
30
|
+
postgresql: () => import("./brand-icons/postgresql").then((module) => module.PostgresqlIcon),
|
|
31
|
+
sentry: () => import("./brand-icons/sentry").then((module) => module.SentryIcon),
|
|
32
|
+
signal: () => import("./brand-icons/signal").then((module) => module.SignalIcon),
|
|
33
|
+
slack: () => import("./brand-icons/slack").then((module) => module.SlackIcon),
|
|
34
|
+
spotify: () => import("./brand-icons/spotify").then((module) => module.SpotifyIcon),
|
|
35
|
+
square: () => import("./brand-icons/square").then((module) => module.SquareIcon),
|
|
36
|
+
stripe: () => import("./brand-icons/stripe").then((module) => module.StripeIcon),
|
|
37
|
+
supabase: () => import("./brand-icons/supabase").then((module) => module.SupabaseIcon),
|
|
38
|
+
telegram: () => import("./brand-icons/telegram").then((module) => module.TelegramIcon),
|
|
39
|
+
todoist: () => import("./brand-icons/todoist").then((module) => module.TodoistIcon),
|
|
40
|
+
"unreal-engine": () => import("./brand-icons/unreal-engine").then((module) => module.UnrealEngineIcon),
|
|
41
|
+
vercel: () => import("./brand-icons/vercel").then((module) => module.VercelIcon),
|
|
42
|
+
webflow: () => import("./brand-icons/webflow").then((module) => module.WebflowIcon),
|
|
43
|
+
whatsapp: () => import("./brand-icons/whatsapp").then((module) => module.WhatsappIcon),
|
|
44
|
+
youtube: () => import("./brand-icons/youtube").then((module) => module.YoutubeIcon),
|
|
45
|
+
yuanbao: () => import("./brand-icons/yuanbao").then((module) => module.YuanbaoIcon),
|
|
46
|
+
zapier: () => import("./brand-icons/zapier").then((module) => module.ZapierIcon),
|
|
47
|
+
};
|
|
48
|
+
// `use` remembers a promise it has seen settle, so a mark drawn after its chunk
|
|
49
|
+
// arrived renders at once.
|
|
50
|
+
const loads = new Map();
|
|
51
|
+
function loadGlyph(slug, loader) {
|
|
52
|
+
let load = loads.get(slug);
|
|
53
|
+
if (!load) {
|
|
54
|
+
load = loader()
|
|
55
|
+
.then((Mark) => (glyphSize) => _jsx(Mark, { size: glyphSize }))
|
|
56
|
+
.catch(() => null);
|
|
57
|
+
loads.set(slug, load);
|
|
58
|
+
}
|
|
59
|
+
return load;
|
|
60
|
+
}
|
|
61
|
+
function Glyph({ app, slug, loader, glyphSize, tileSize, }) {
|
|
62
|
+
const drawMark = React.use(loadGlyph(slug, loader));
|
|
63
|
+
return drawMark ? drawMark(glyphSize) : _jsx(AppMarkMonogram, { app: app, size: tileSize });
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* `AppMark` for a client component: the same tile, with the glyph fetched on
|
|
67
|
+
* first use and shared by every later mark of that brand.
|
|
68
|
+
*
|
|
69
|
+
* The glyph sits in its own Suspense boundary. Outside the browser the
|
|
70
|
+
* package's export conditions resolve this entry to `app-mark-lazy/server.tsx`,
|
|
71
|
+
* which draws the glyph at once inside the same boundary, so the server's HTML
|
|
72
|
+
* carries the mark and hydration keeps it on screen while its chunk loads. A
|
|
73
|
+
* mark first drawn in the browser shows the empty tile until its chunk
|
|
74
|
+
* arrives; the tile keeps its size, so nothing moves.
|
|
75
|
+
*/
|
|
76
|
+
function LazyAppMark(props) {
|
|
77
|
+
const { app, size = APP_MARK_SIZE } = props;
|
|
78
|
+
const slug = appMarkSlug(app);
|
|
79
|
+
const loader = slug && Object.hasOwn(GLYPH_LOADERS, slug) ? GLYPH_LOADERS[slug] : undefined;
|
|
80
|
+
return (_jsx(SuspendedGlyphFrame, { ...props, drawGlyph: slug && loader
|
|
81
|
+
? (glyphSize) => (_jsx(Glyph, { app: app, glyphSize: glyphSize, loader: loader, slug: slug, tileSize: size }))
|
|
82
|
+
: undefined }));
|
|
83
|
+
}
|
|
84
|
+
export { LazyAppMark };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import * as React from "react";
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import { appInitial, type AppMarkProps } from "./app-mark-frame.js";
|
|
2
3
|
import { type BrandIconProps } from "./brand-icons.js";
|
|
3
4
|
type BrandMark = React.ComponentType<BrandIconProps>;
|
|
4
5
|
/**
|
|
@@ -6,25 +7,15 @@ type BrandMark = React.ComponentType<BrandIconProps>;
|
|
|
6
7
|
* `undefined` when the set has none.
|
|
7
8
|
*/
|
|
8
9
|
declare function appMarkFor(app: string): BrandMark | undefined;
|
|
9
|
-
/** The letter an app outside the set is drawn with: its first letter or digit, or a question mark. */
|
|
10
|
-
declare function appInitial(app: string): string;
|
|
11
|
-
type AppMarkProps = Omit<React.ComponentProps<"span">, "children"> & {
|
|
12
|
-
/** The connector's slug, id or display name, e.g. `"google-calendar"`. */
|
|
13
|
-
app: string;
|
|
14
|
-
/** The tile's box in CSS pixels; the glyph scales with it. Defaults to 24, the row size. */
|
|
15
|
-
size?: number;
|
|
16
|
-
/**
|
|
17
|
-
* The mark's accessible name. Beside the app's name it needs none, and a
|
|
18
|
-
* bare mark stays decorative until one arrives.
|
|
19
|
-
*/
|
|
20
|
-
label?: string;
|
|
21
|
-
};
|
|
22
10
|
/**
|
|
23
11
|
* An app an Agent connects to, in the same tile as a model's maker: the
|
|
24
12
|
* generated mark in its official colours, or the app's initial when the set
|
|
25
13
|
* has no mark for it. Never an invented logo and never a fetched favicon.
|
|
14
|
+
*
|
|
15
|
+
* Every mark in the set comes with this module. A client component that can
|
|
16
|
+
* show any of them takes `LazyAppMark`, which fetches only the ones it draws.
|
|
26
17
|
*/
|
|
27
|
-
declare function AppMark(
|
|
18
|
+
declare function AppMark(props: AppMarkProps): React.JSX.Element;
|
|
28
19
|
export { AppMark, appInitial, appMarkFor };
|
|
29
20
|
export type { AppMarkProps };
|
|
30
21
|
//# sourceMappingURL=app-mark.d.ts.map
|
|
@@ -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,KAAK,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAgB,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EA0CL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB,KAAK,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAoDrD;;;GAGG;AACH,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAGtD;AAED;;;;;;;GAOG;AACH,iBAAS,OAAO,CAAC,KAAK,EAAE,YAAY,qBAGnC;AAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
3
2
|
import { appMarkSlug } from "./app-mark-aliases.js";
|
|
3
|
+
import { AppMarkFrame, appInitial } from "./app-mark-frame.js";
|
|
4
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";
|
|
5
5
|
/*
|
|
6
6
|
* The generated mark each brand slug is drawn by. Which connector spelling
|
|
@@ -59,30 +59,16 @@ function appMarkFor(app) {
|
|
|
59
59
|
const slug = appMarkSlug(app);
|
|
60
60
|
return slug ? MARKS_BY_SLUG[slug] : undefined;
|
|
61
61
|
}
|
|
62
|
-
/** The letter an app outside the set is drawn with: its first letter or digit, or a question mark. */
|
|
63
|
-
function appInitial(app) {
|
|
64
|
-
return (app
|
|
65
|
-
.trim()
|
|
66
|
-
.match(/[a-z0-9]/i)?.[0]
|
|
67
|
-
?.toUpperCase() ?? "?");
|
|
68
|
-
}
|
|
69
|
-
const APP_MARK_SIZE = 24;
|
|
70
|
-
/** The glyph's share of the tile, the same ratio as `ModelMark`. */
|
|
71
|
-
const APP_MARK_GLYPH_RATIO = 0.62;
|
|
72
62
|
/**
|
|
73
63
|
* An app an Agent connects to, in the same tile as a model's maker: the
|
|
74
64
|
* generated mark in its official colours, or the app's initial when the set
|
|
75
65
|
* has no mark for it. Never an invented logo and never a fetched favicon.
|
|
66
|
+
*
|
|
67
|
+
* Every mark in the set comes with this module. A client component that can
|
|
68
|
+
* show any of them takes `LazyAppMark`, which fetches only the ones it draws.
|
|
76
69
|
*/
|
|
77
|
-
function AppMark(
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
const named = Boolean(label?.trim() || props["aria-label"]?.trim() || props["aria-labelledby"]?.trim());
|
|
81
|
-
const labelling = !named
|
|
82
|
-
? { "aria-hidden": true }
|
|
83
|
-
: label?.trim()
|
|
84
|
-
? { role: "img", "aria-label": label }
|
|
85
|
-
: {};
|
|
86
|
-
return (_jsx("span", { "data-slot": "app-mark", "data-app": app, "data-mark": Mark ? "brand" : "monogram", className: cn("inline-flex shrink-0 items-center justify-center rounded-md border border-border bg-background text-foreground", className), style: { width: size, height: size, ...style }, ...props, ...labelling, children: Mark ? (_jsx(Mark, { size: Math.round(size * APP_MARK_GLYPH_RATIO) })) : (_jsx("span", { "aria-hidden": "true", className: "font-semibold leading-none text-muted-foreground", "data-slot": "app-mark-monogram", style: { fontSize: Math.max(8, Math.round(size * 0.4)) }, children: appInitial(app) })) }));
|
|
70
|
+
function AppMark(props) {
|
|
71
|
+
const Mark = appMarkFor(props.app);
|
|
72
|
+
return _jsx(AppMarkFrame, { ...props, glyph: Mark ? (size) => _jsx(Mark, { size: size }) : undefined });
|
|
87
73
|
}
|
|
88
74
|
export { AppMark, appInitial, appMarkFor };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aionlabs.d.ts","sourceRoot":"","sources":["../../../src/components/brand-icons/aionlabs.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAExF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAsB,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+
|
|
1
|
+
{"version":3,"file":"aionlabs.d.ts","sourceRoot":"","sources":["../../../src/components/brand-icons/aionlabs.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAExF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAsB,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BA0NhF"}
|