@nadicodeai/ui 12.1.31 → 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.
Files changed (206) hide show
  1. package/README.md +6 -0
  2. package/dist/assets/brand/aionlabs.svg +1 -1
  3. package/dist/assets/brand/airtable.svg +1 -1
  4. package/dist/assets/brand/apple.svg +1 -1
  5. package/dist/assets/brand/arcee.svg +1 -1
  6. package/dist/assets/brand/asana.svg +1 -1
  7. package/dist/assets/brand/atlassian.svg +1 -1
  8. package/dist/assets/brand/baidu.svg +1 -1
  9. package/dist/assets/brand/bytedance.svg +1 -1
  10. package/dist/assets/brand/claude.svg +1 -1
  11. package/dist/assets/brand/cohere.svg +1 -1
  12. package/dist/assets/brand/datadog.svg +1 -1
  13. package/dist/assets/brand/deepseek.svg +1 -1
  14. package/dist/assets/brand/discord.svg +1 -1
  15. package/dist/assets/brand/dolphin.svg +1 -1
  16. package/dist/assets/brand/dotsstudio.svg +1 -1
  17. package/dist/assets/brand/figma.svg +1 -1
  18. package/dist/assets/brand/gemini.svg +1 -1
  19. package/dist/assets/brand/github.svg +1 -1
  20. package/dist/assets/brand/gitlab.svg +1 -1
  21. package/dist/assets/brand/gmail.svg +1 -1
  22. package/dist/assets/brand/google-calendar.svg +1 -1
  23. package/dist/assets/brand/google-drive.svg +1 -1
  24. package/dist/assets/brand/grok.svg +1 -1
  25. package/dist/assets/brand/huggingface.svg +1 -1
  26. package/dist/assets/brand/ibm.svg +1 -1
  27. package/dist/assets/brand/inception.svg +1 -1
  28. package/dist/assets/brand/inference.svg +1 -1
  29. package/dist/assets/brand/intercom.svg +1 -1
  30. package/dist/assets/brand/jira.svg +1 -1
  31. package/dist/assets/brand/kwaipilot.svg +1 -1
  32. package/dist/assets/brand/linear.svg +1 -1
  33. package/dist/assets/brand/linux.svg +1 -1
  34. package/dist/assets/brand/liquid.svg +1 -1
  35. package/dist/assets/brand/longcat.svg +1 -1
  36. package/dist/assets/brand/mattermost.svg +1 -1
  37. package/dist/assets/brand/meta.svg +1 -1
  38. package/dist/assets/brand/microsoft.svg +1 -1
  39. package/dist/assets/brand/minimax.svg +1 -1
  40. package/dist/assets/brand/mistral.svg +1 -1
  41. package/dist/assets/brand/moonshot.svg +1 -1
  42. package/dist/assets/brand/morph.svg +1 -1
  43. package/dist/assets/brand/n8n.svg +1 -1
  44. package/dist/assets/brand/netlify.svg +1 -1
  45. package/dist/assets/brand/nexagi.svg +1 -1
  46. package/dist/assets/brand/notion.svg +1 -1
  47. package/dist/assets/brand/nousresearch.svg +1 -1
  48. package/dist/assets/brand/nova.svg +1 -1
  49. package/dist/assets/brand/nvidia.svg +1 -1
  50. package/dist/assets/brand/openai.svg +1 -1
  51. package/dist/assets/brand/openrouter.svg +1 -1
  52. package/dist/assets/brand/paypal.svg +1 -1
  53. package/dist/assets/brand/perceptron.svg +1 -1
  54. package/dist/assets/brand/perplexity.svg +1 -1
  55. package/dist/assets/brand/poolside.svg +1 -1
  56. package/dist/assets/brand/postgresql.svg +1 -1
  57. package/dist/assets/brand/qwen.svg +1 -1
  58. package/dist/assets/brand/reka.svg +1 -1
  59. package/dist/assets/brand/relace.svg +1 -1
  60. package/dist/assets/brand/sakana.svg +1 -1
  61. package/dist/assets/brand/sentry.svg +1 -1
  62. package/dist/assets/brand/signal.svg +1 -1
  63. package/dist/assets/brand/slack.svg +1 -1
  64. package/dist/assets/brand/spotify.svg +1 -1
  65. package/dist/assets/brand/square.svg +1 -1
  66. package/dist/assets/brand/stepfun.svg +1 -1
  67. package/dist/assets/brand/stripe.svg +1 -1
  68. package/dist/assets/brand/supabase.svg +1 -1
  69. package/dist/assets/brand/telegram.svg +1 -1
  70. package/dist/assets/brand/tencent.svg +1 -1
  71. package/dist/assets/brand/the-drummer.svg +1 -1
  72. package/dist/assets/brand/todoist.svg +1 -1
  73. package/dist/assets/brand/unreal-engine.svg +1 -1
  74. package/dist/assets/brand/upstage.svg +1 -1
  75. package/dist/assets/brand/vercel.svg +1 -1
  76. package/dist/assets/brand/webflow.svg +1 -1
  77. package/dist/assets/brand/whatsapp.svg +1 -1
  78. package/dist/assets/brand/windows.svg +1 -1
  79. package/dist/assets/brand/xiaomimimo.svg +1 -1
  80. package/dist/assets/brand/youtube.svg +1 -1
  81. package/dist/assets/brand/yuanbao.svg +1 -1
  82. package/dist/assets/brand/zai.svg +1 -1
  83. package/dist/assets/brand/zapier.svg +1 -1
  84. package/dist/components/agent-card.d.ts +2 -1
  85. package/dist/components/agent-card.d.ts.map +1 -1
  86. package/dist/components/agent-card.js +2 -1
  87. package/dist/components/app-mark-frame.d.ts +34 -0
  88. package/dist/components/app-mark-frame.d.ts.map +1 -0
  89. package/dist/components/app-mark-frame.js +37 -0
  90. package/dist/components/app-mark-lazy/server.d.ts +4 -0
  91. package/dist/components/app-mark-lazy/server.d.ts.map +1 -0
  92. package/dist/components/app-mark-lazy/server.js +8 -0
  93. package/dist/components/app-mark-lazy.d.ts +16 -0
  94. package/dist/components/app-mark-lazy.d.ts.map +1 -0
  95. package/dist/components/app-mark-lazy.js +84 -0
  96. package/dist/components/app-mark.d.ts +6 -15
  97. package/dist/components/app-mark.d.ts.map +1 -1
  98. package/dist/components/app-mark.js +7 -21
  99. package/dist/components/brand-icons/aionlabs.d.ts.map +1 -1
  100. package/dist/components/brand-icons/aionlabs.js +1 -1
  101. package/dist/components/brand-icons/airtable.js +1 -1
  102. package/dist/components/brand-icons/apple.js +1 -1
  103. package/dist/components/brand-icons/arcee.js +1 -1
  104. package/dist/components/brand-icons/asana.js +1 -1
  105. package/dist/components/brand-icons/atlassian.js +1 -1
  106. package/dist/components/brand-icons/baidu.js +1 -1
  107. package/dist/components/brand-icons/bytedance.js +1 -1
  108. package/dist/components/brand-icons/claude.js +1 -1
  109. package/dist/components/brand-icons/cohere.js +1 -1
  110. package/dist/components/brand-icons/datadog.js +1 -1
  111. package/dist/components/brand-icons/deepseek.js +1 -1
  112. package/dist/components/brand-icons/discord.js +1 -1
  113. package/dist/components/brand-icons/dolphin.js +1 -1
  114. package/dist/components/brand-icons/dotsstudio.js +1 -1
  115. package/dist/components/brand-icons/figma.d.ts.map +1 -1
  116. package/dist/components/brand-icons/figma.js +1 -1
  117. package/dist/components/brand-icons/gemini.js +1 -1
  118. package/dist/components/brand-icons/github.js +1 -1
  119. package/dist/components/brand-icons/gitlab.js +1 -1
  120. package/dist/components/brand-icons/gmail.js +1 -1
  121. package/dist/components/brand-icons/google-calendar.js +1 -1
  122. package/dist/components/brand-icons/google-drive.js +1 -1
  123. package/dist/components/brand-icons/grok.js +1 -1
  124. package/dist/components/brand-icons/huggingface.js +1 -1
  125. package/dist/components/brand-icons/ibm.js +1 -1
  126. package/dist/components/brand-icons/inception.js +1 -1
  127. package/dist/components/brand-icons/inference.js +1 -1
  128. package/dist/components/brand-icons/intercom.js +1 -1
  129. package/dist/components/brand-icons/jira.js +1 -1
  130. package/dist/components/brand-icons/kwaipilot.js +1 -1
  131. package/dist/components/brand-icons/linear.js +1 -1
  132. package/dist/components/brand-icons/linux.js +1 -1
  133. package/dist/components/brand-icons/liquid.js +1 -1
  134. package/dist/components/brand-icons/longcat.js +1 -1
  135. package/dist/components/brand-icons/mattermost.js +1 -1
  136. package/dist/components/brand-icons/meta.js +1 -1
  137. package/dist/components/brand-icons/microsoft.js +1 -1
  138. package/dist/components/brand-icons/minimax.js +1 -1
  139. package/dist/components/brand-icons/mistral.d.ts.map +1 -1
  140. package/dist/components/brand-icons/mistral.js +1 -1
  141. package/dist/components/brand-icons/moonshot.js +1 -1
  142. package/dist/components/brand-icons/morph.js +1 -1
  143. package/dist/components/brand-icons/n8n.js +1 -1
  144. package/dist/components/brand-icons/netlify.js +1 -1
  145. package/dist/components/brand-icons/nexagi.js +1 -1
  146. package/dist/components/brand-icons/notion.js +1 -1
  147. package/dist/components/brand-icons/nousresearch.js +1 -1
  148. package/dist/components/brand-icons/nova.js +1 -1
  149. package/dist/components/brand-icons/nvidia.js +1 -1
  150. package/dist/components/brand-icons/openai.js +1 -1
  151. package/dist/components/brand-icons/openrouter.js +1 -1
  152. package/dist/components/brand-icons/paypal.js +1 -1
  153. package/dist/components/brand-icons/perceptron.js +1 -1
  154. package/dist/components/brand-icons/perplexity.js +1 -1
  155. package/dist/components/brand-icons/poolside.js +1 -1
  156. package/dist/components/brand-icons/postgresql.js +1 -1
  157. package/dist/components/brand-icons/qwen.js +1 -1
  158. package/dist/components/brand-icons/reka.js +1 -1
  159. package/dist/components/brand-icons/relace.js +1 -1
  160. package/dist/components/brand-icons/sakana.js +1 -1
  161. package/dist/components/brand-icons/sentry.js +1 -1
  162. package/dist/components/brand-icons/signal.js +1 -1
  163. package/dist/components/brand-icons/slack.js +1 -1
  164. package/dist/components/brand-icons/spotify.js +1 -1
  165. package/dist/components/brand-icons/square.js +1 -1
  166. package/dist/components/brand-icons/stepfun.js +1 -1
  167. package/dist/components/brand-icons/stripe.js +1 -1
  168. package/dist/components/brand-icons/supabase.js +1 -1
  169. package/dist/components/brand-icons/telegram.js +1 -1
  170. package/dist/components/brand-icons/tencent.js +1 -1
  171. package/dist/components/brand-icons/the-drummer.js +2 -2
  172. package/dist/components/brand-icons/todoist.js +1 -1
  173. package/dist/components/brand-icons/unreal-engine.js +1 -1
  174. package/dist/components/brand-icons/upstage.js +1 -1
  175. package/dist/components/brand-icons/vercel.js +1 -1
  176. package/dist/components/brand-icons/webflow.js +1 -1
  177. package/dist/components/brand-icons/whatsapp.js +1 -1
  178. package/dist/components/brand-icons/windows.js +1 -1
  179. package/dist/components/brand-icons/xiaomimimo.js +1 -1
  180. package/dist/components/brand-icons/youtube.js +1 -1
  181. package/dist/components/brand-icons/yuanbao.js +1 -1
  182. package/dist/components/brand-icons/zai.js +1 -1
  183. package/dist/components/brand-icons/zapier.js +1 -1
  184. package/dist/components/chart-date-range-control.d.ts.map +1 -1
  185. package/dist/components/chart-date-range-control.js +7 -2
  186. package/dist/components/item.d.ts +10 -1
  187. package/dist/components/item.d.ts.map +1 -1
  188. package/dist/components/item.js +13 -3
  189. package/dist/components/model-identity.d.ts +4 -6
  190. package/dist/components/model-identity.d.ts.map +1 -1
  191. package/dist/components/model-identity.js +14 -5
  192. package/dist/components/model-mark.d.ts +1 -1
  193. package/dist/components/model-mark.d.ts.map +1 -1
  194. package/dist/components/model-mark.js +1 -1
  195. package/dist/components/object-workspace.d.ts +2 -1
  196. package/dist/components/object-workspace.d.ts.map +1 -1
  197. package/dist/components/object-workspace.js +1 -1
  198. package/dist/components/table-card.d.ts +14 -2
  199. package/dist/components/table-card.d.ts.map +1 -1
  200. package/dist/components/table-card.js +9 -3
  201. package/dist/index.d.ts +2 -0
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +2 -0
  204. package/dist/internal/agent-orb.d.ts.map +1 -1
  205. package/dist/internal/agent-orb.js +21 -5
  206. 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="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>
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="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>
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 0l128 221.705H0z"></path></svg>
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.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>
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.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>
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.329v121.329H0zm134.671 0H256v121.329H134.671zM0 134.671h121.329V256H0zm134.671 0H256V256H134.671z"></path></svg>
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.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>
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.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>
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.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>
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.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>
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 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>
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>
@@ -6,7 +6,8 @@ type AgentCardProps = Omit<React.ComponentProps<typeof Card>, "children"> & {
6
6
  meta?: ReactNode;
7
7
  name: ReactNode;
8
8
  status?: ReactNode;
9
- visual: ReactNode;
9
+ /** The object's picture: an Agent's orb, an app's mark. A skill, which is text, has none. */
10
+ visual?: ReactNode;
10
11
  };
11
12
  declare function AgentCard({ action, className, job, meta, name, status, visual, ...props }: AgentCardProps): import("react").JSX.Element;
12
13
  export { AgentCard, type AgentCardProps };
@@ -1 +1 @@
1
- {"version":3,"file":"agent-card.d.ts","sourceRoot":"","sources":["../../src/components/agent-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,IAAI,EAA0C,MAAM,mBAAmB,CAAC;AAGjF,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAMF,iBAAS,SAAS,CAAC,EACjB,MAAM,EACN,SAAS,EACT,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,cAAc,+BA8ChB;AAED,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"agent-card.d.ts","sourceRoot":"","sources":["../../src/components/agent-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,IAAI,EAA0C,MAAM,mBAAmB,CAAC;AAGjF,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAMF,iBAAS,SAAS,CAAC,EACjB,MAAM,EACN,SAAS,EACT,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,cAAc,+BAsDhB;AAED,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,CAAC"}
@@ -8,6 +8,7 @@ function AgentCard({ action, className, job, meta, name, status, visual, ...prop
8
8
  const hasStatus = hasSlotContent(status);
9
9
  const hasMeta = hasSlotContent(meta);
10
10
  const hasAction = hasSlotContent(action);
11
- return (_jsxs(Card, { className: cn("h-full", className), ...props, children: [_jsxs("div", { className: "grid grid-cols-[auto_minmax(0,1fr)] items-start gap-(--card-spacing) px-(--card-spacing)", children: [_jsx("div", { className: "grid size-24 place-items-center overflow-hidden", "data-slot": "agent-card-visual", children: visual }), _jsxs("div", { className: "grid min-w-0 content-start gap-nadicode-xs", children: [_jsx(CardTitle, { className: "leading-tight font-semibold", children: name }), _jsx(CardDescription, { className: "leading-snug", children: job }), hasStatus ? (_jsx("div", { className: "flex flex-wrap items-center gap-nadicode-xxs pt-nadicode-xxs", "data-slot": "agent-card-status", children: status })) : null] })] }), hasMeta || hasAction ? (_jsxs(CardFooter, { className: "mt-auto gap-nadicode-sm border-t py-nadicode-sm", children: [hasMeta ? (_jsx("div", { className: "min-w-0 flex-1 text-xs text-muted-foreground", "data-slot": "agent-card-meta", children: meta })) : null, hasAction ? (_jsx("div", { className: "ml-auto shrink-0", "data-slot": "agent-card-action", children: action })) : null] })) : null] }));
11
+ const hasVisual = hasSlotContent(visual);
12
+ return (_jsxs(Card, { className: cn("h-full", className), ...props, children: [_jsxs("div", { className: cn("grid items-start gap-(--card-spacing) px-(--card-spacing)", hasVisual && "grid-cols-[auto_minmax(0,1fr)]"), children: [hasVisual ? (_jsx("div", { className: "grid size-24 place-items-center overflow-hidden", "data-slot": "agent-card-visual", children: visual })) : null, _jsxs("div", { className: "grid min-w-0 content-start gap-nadicode-xs", children: [_jsx(CardTitle, { className: "leading-tight font-semibold", children: name }), _jsx(CardDescription, { className: "leading-snug", children: job }), hasStatus ? (_jsx("div", { className: "flex flex-wrap items-center gap-nadicode-xxs pt-nadicode-xxs", "data-slot": "agent-card-status", children: status })) : null] })] }), hasMeta || hasAction ? (_jsxs(CardFooter, { className: "mt-auto gap-nadicode-sm border-t py-nadicode-sm", children: [hasMeta ? (_jsx("div", { className: "min-w-0 flex-1 text-xs text-muted-foreground", "data-slot": "agent-card-meta", children: meta })) : null, hasAction ? (_jsx("div", { className: "ml-auto shrink-0", "data-slot": "agent-card-action", children: action })) : null] })) : null] }));
12
13
  }
13
14
  export { AgentCard };
@@ -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,4 @@
1
+ import { type AppMarkProps } from "../app-mark-frame.js";
2
+ declare function LazyAppMark(props: AppMarkProps): import("react").JSX.Element;
3
+ export { LazyAppMark };
4
+ //# sourceMappingURL=server.d.ts.map
@@ -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 28. */
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({ app, size, label, className, style, ...props }: AppMarkProps): React.JSX.Element;
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;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;AAED,sGAAsG;AACtG,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOvC;AAOD,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,UAAU,EAAE,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,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 = 28;
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({ app, size = APP_MARK_SIZE, label, className, style, ...props }) {
78
- const slug = appMarkSlug(app);
79
- const Mark = slug ? MARKS_BY_SLUG[slug] : undefined;
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,+BAqPhF"}
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"}