@nadicodeai/ui 12.1.165 → 12.1.166

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 (363) hide show
  1. package/AGENTS.md +8 -9
  2. package/README.md +2 -17
  3. package/dist/components/accordion.d.ts.map +1 -1
  4. package/dist/components/accordion.js +2 -1
  5. package/dist/components/account-menu.d.ts.map +1 -1
  6. package/dist/components/account-menu.js +5 -3
  7. package/dist/components/activity-calendar.d.ts.map +1 -1
  8. package/dist/components/activity-calendar.js +3 -2
  9. package/dist/components/agent-card.js +1 -1
  10. package/dist/components/agent-orb.d.ts.map +1 -1
  11. package/dist/components/agent-orb.js +1 -0
  12. package/dist/components/agent-profile.d.ts.map +1 -1
  13. package/dist/components/agent-profile.js +7 -4
  14. package/dist/components/alert-dialog.d.ts +1 -1
  15. package/dist/components/alert-dialog.d.ts.map +1 -1
  16. package/dist/components/alert-dialog.js +3 -3
  17. package/dist/components/app-mark.js +1 -1
  18. package/dist/components/avatar.js +8 -8
  19. package/dist/components/badge.d.ts +11 -16
  20. package/dist/components/badge.d.ts.map +1 -1
  21. package/dist/components/badge.js +7 -43
  22. package/dist/components/breadcrumb.d.ts.map +1 -1
  23. package/dist/components/breadcrumb.js +3 -2
  24. package/dist/components/button.d.ts +5 -21
  25. package/dist/components/button.d.ts.map +1 -1
  26. package/dist/components/button.js +6 -76
  27. package/dist/components/calendar.d.ts +1 -1
  28. package/dist/components/calendar.d.ts.map +1 -1
  29. package/dist/components/calendar.js +3 -3
  30. package/dist/components/card-row.js +1 -1
  31. package/dist/components/card.d.ts +4 -1
  32. package/dist/components/card.d.ts.map +1 -1
  33. package/dist/components/card.js +3 -2
  34. package/dist/components/catalog-drawer.d.ts.map +1 -1
  35. package/dist/components/catalog-drawer.js +3 -2
  36. package/dist/components/chart-axis.d.ts.map +1 -1
  37. package/dist/components/chart-axis.js +0 -2
  38. package/dist/components/chart-bar-horizontal.d.ts.map +1 -1
  39. package/dist/components/chart-bar-horizontal.js +16 -14
  40. package/dist/components/chart-card.d.ts.map +1 -1
  41. package/dist/components/chart-card.js +0 -1
  42. package/dist/components/chart.d.ts.map +1 -1
  43. package/dist/components/chart.js +18 -32
  44. package/dist/components/checkbox.d.ts +3 -2
  45. package/dist/components/checkbox.d.ts.map +1 -1
  46. package/dist/components/checkbox.js +4 -3
  47. package/dist/components/choicebox.d.ts +5 -5
  48. package/dist/components/choicebox.d.ts.map +1 -1
  49. package/dist/components/choicebox.js +6 -5
  50. package/dist/components/clearable-input.d.ts.map +1 -1
  51. package/dist/components/clearable-input.js +2 -2
  52. package/dist/components/code-block.d.ts.map +1 -1
  53. package/dist/components/code-block.js +4 -2
  54. package/dist/components/collapsible.js +1 -1
  55. package/dist/components/collection-filters.d.ts.map +1 -1
  56. package/dist/components/collection-filters.js +1 -0
  57. package/dist/components/collection-page.js +1 -1
  58. package/dist/components/collection-sort.d.ts.map +1 -1
  59. package/dist/components/collection-sort.js +1 -4
  60. package/dist/components/collection-toolbar.js +1 -1
  61. package/dist/components/combobox.js +4 -4
  62. package/dist/components/command.d.ts.map +1 -1
  63. package/dist/components/command.js +1 -1
  64. package/dist/components/confirm-dialog.js +2 -2
  65. package/dist/components/context-menu.d.ts +1 -1
  66. package/dist/components/context-menu.d.ts.map +1 -1
  67. package/dist/components/copy-button.js +1 -1
  68. package/dist/components/data-table.d.ts +11 -3
  69. package/dist/components/data-table.d.ts.map +1 -1
  70. package/dist/components/data-table.js +12 -4
  71. package/dist/components/dialog.d.ts +1 -1
  72. package/dist/components/dialog.d.ts.map +1 -1
  73. package/dist/components/dialog.js +2 -2
  74. package/dist/components/drawer.d.ts +4 -4
  75. package/dist/components/drawer.d.ts.map +1 -1
  76. package/dist/components/drawer.js +14 -15
  77. package/dist/components/dropdown-menu.d.ts +1 -1
  78. package/dist/components/dropdown-menu.d.ts.map +1 -1
  79. package/dist/components/dropdown-menu.js +9 -5
  80. package/dist/components/empty-art.js +1 -1
  81. package/dist/components/empty-state.js +2 -2
  82. package/dist/components/entry-scene.d.ts.map +1 -1
  83. package/dist/components/entry-scene.js +2 -3
  84. package/dist/components/field.js +3 -3
  85. package/dist/components/file-diff.d.ts.map +1 -1
  86. package/dist/components/file-diff.js +5 -2
  87. package/dist/components/footer.d.ts +1 -1
  88. package/dist/components/footer.d.ts.map +1 -1
  89. package/dist/components/footer.js +3 -3
  90. package/dist/components/form-dialog.d.ts.map +1 -1
  91. package/dist/components/form-dialog.js +2 -1
  92. package/dist/components/form-drawer.d.ts +7 -9
  93. package/dist/components/form-drawer.d.ts.map +1 -1
  94. package/dist/components/form-drawer.js +5 -5
  95. package/dist/components/form.d.ts +26 -0
  96. package/dist/components/form.d.ts.map +1 -0
  97. package/dist/components/form.js +29 -0
  98. package/dist/components/gauge.js +2 -2
  99. package/dist/components/heatmap/calendar-heatmap.d.ts.map +1 -1
  100. package/dist/components/heatmap/calendar-heatmap.js +15 -13
  101. package/dist/components/hive-scene.d.ts.map +1 -1
  102. package/dist/components/hive-scene.js +3 -1
  103. package/dist/components/hover-card.d.ts +1 -1
  104. package/dist/components/hover-card.d.ts.map +1 -1
  105. package/dist/components/hover-card.js +1 -1
  106. package/dist/components/input-group.d.ts +5 -6
  107. package/dist/components/input-group.d.ts.map +1 -1
  108. package/dist/components/input-group.js +8 -11
  109. package/dist/components/input-otp.d.ts.map +1 -1
  110. package/dist/components/input-otp.js +2 -2
  111. package/dist/components/item.d.ts +1 -1
  112. package/dist/components/item.js +2 -2
  113. package/dist/components/kbd.d.ts +6 -9
  114. package/dist/components/kbd.d.ts.map +1 -1
  115. package/dist/components/kbd.js +7 -3
  116. package/dist/components/message-notice.js +1 -1
  117. package/dist/components/middle-truncate.d.ts.map +1 -1
  118. package/dist/components/middle-truncate.js +1 -0
  119. package/dist/components/model-identity.d.ts +4 -4
  120. package/dist/components/model-identity.d.ts.map +1 -1
  121. package/dist/components/model-identity.js +2 -2
  122. package/dist/components/model-mark.d.ts.map +1 -1
  123. package/dist/components/model-mark.js +4 -2
  124. package/dist/components/multi-select.js +2 -2
  125. package/dist/components/native-select.d.ts.map +1 -1
  126. package/dist/components/native-select.js +2 -6
  127. package/dist/components/notice-banner.js +1 -1
  128. package/dist/components/object-page.js +2 -2
  129. package/dist/components/object-workspace.d.ts.map +1 -1
  130. package/dist/components/object-workspace.js +1 -3
  131. package/dist/components/overview-page.d.ts +1 -1
  132. package/dist/components/overview-page.d.ts.map +1 -1
  133. package/dist/components/overview-page.js +2 -1
  134. package/dist/components/page-actions.d.ts.map +1 -1
  135. package/dist/components/page-actions.js +9 -4
  136. package/dist/components/pairing-code.js +1 -1
  137. package/dist/components/pending-label.d.ts.map +1 -1
  138. package/dist/components/pending-label.js +0 -1
  139. package/dist/components/popover.d.ts +1 -1
  140. package/dist/components/popover.d.ts.map +1 -1
  141. package/dist/components/portal-sidebar-frame.d.ts.map +1 -1
  142. package/dist/components/portal-sidebar-frame.js +1 -1
  143. package/dist/components/product-message.d.ts.map +1 -1
  144. package/dist/components/product-message.js +1 -0
  145. package/dist/components/progress-checklist.d.ts.map +1 -1
  146. package/dist/components/progress-checklist.js +2 -2
  147. package/dist/components/progress.d.ts.map +1 -1
  148. package/dist/components/progress.js +5 -4
  149. package/dist/components/radio-group.js +2 -2
  150. package/dist/components/reading-column.js +1 -1
  151. package/dist/components/record-identity.d.ts.map +1 -1
  152. package/dist/components/record-identity.js +2 -5
  153. package/dist/components/record-list.d.ts.map +1 -1
  154. package/dist/components/record-list.js +4 -3
  155. package/dist/components/record-sheet.js +1 -1
  156. package/dist/components/record-time.d.ts.map +1 -1
  157. package/dist/components/record-time.js +2 -1
  158. package/dist/components/resizable.d.ts.map +1 -1
  159. package/dist/components/resizable.js +1 -1
  160. package/dist/components/row-edit-form.d.ts +2 -1
  161. package/dist/components/row-edit-form.d.ts.map +1 -1
  162. package/dist/components/row-edit-form.js +2 -1
  163. package/dist/components/run-timeline.js +1 -1
  164. package/dist/components/scope-switcher.js +1 -1
  165. package/dist/components/segmented-control.js +1 -1
  166. package/dist/components/select.js +1 -1
  167. package/dist/components/settings-facts.js +1 -1
  168. package/dist/components/settings-section.js +1 -1
  169. package/dist/components/sheet.d.ts +1 -1
  170. package/dist/components/sheet.d.ts.map +1 -1
  171. package/dist/components/sheet.js +1 -1
  172. package/dist/components/sidebar.d.ts +2 -2
  173. package/dist/components/sidebar.d.ts.map +1 -1
  174. package/dist/components/sidebar.js +16 -18
  175. package/dist/components/site-menu.d.ts +28 -0
  176. package/dist/components/site-menu.d.ts.map +1 -0
  177. package/dist/components/site-menu.js +23 -0
  178. package/dist/components/slider.d.ts.map +1 -1
  179. package/dist/components/slider.js +2 -1
  180. package/dist/components/snippet.d.ts +2 -0
  181. package/dist/components/snippet.d.ts.map +1 -1
  182. package/dist/components/snippet.js +13 -6
  183. package/dist/components/sonner.d.ts.map +1 -1
  184. package/dist/components/sonner.js +3 -4
  185. package/dist/components/status-badge.d.ts +1 -1
  186. package/dist/components/status-badge.d.ts.map +1 -1
  187. package/dist/components/switch.js +1 -1
  188. package/dist/components/table-card.js +1 -1
  189. package/dist/components/table.js +4 -4
  190. package/dist/components/tabs-nav.d.ts +52 -0
  191. package/dist/components/tabs-nav.d.ts.map +1 -0
  192. package/dist/components/tabs-nav.js +95 -0
  193. package/dist/components/tabs.d.ts +2 -56
  194. package/dist/components/tabs.d.ts.map +1 -1
  195. package/dist/components/tabs.js +2 -91
  196. package/dist/components/text-link.d.ts +1 -2
  197. package/dist/components/text-link.d.ts.map +1 -1
  198. package/dist/components/text-link.js +1 -2
  199. package/dist/components/textarea.d.ts +5 -2
  200. package/dist/components/textarea.d.ts.map +1 -1
  201. package/dist/components/textarea.js +12 -4
  202. package/dist/components/toast.d.ts +2 -0
  203. package/dist/components/toast.d.ts.map +1 -1
  204. package/dist/components/toast.js +4 -0
  205. package/dist/components/toggle-group.d.ts +3 -1
  206. package/dist/components/toggle-group.d.ts.map +1 -1
  207. package/dist/components/toggle-group.js +3 -6
  208. package/dist/components/toggle.js +1 -1
  209. package/dist/components/tooltip.d.ts +12 -12
  210. package/dist/components/tooltip.d.ts.map +1 -1
  211. package/dist/components/tooltip.js +9 -9
  212. package/dist/components/trend-badge.js +2 -2
  213. package/dist/components/update-card.js +1 -1
  214. package/dist/components/usage-meter.d.ts +1 -1
  215. package/dist/components/usage-meter.d.ts.map +1 -1
  216. package/dist/components/usage-meter.js +9 -7
  217. package/dist/components/waiting-line.js +1 -1
  218. package/dist/index.d.ts +3 -7
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +3 -7
  221. package/dist/internal/agent-orb-motion.d.ts +4 -1
  222. package/dist/internal/agent-orb-motion.d.ts.map +1 -1
  223. package/dist/internal/agent-orb-motion.js +9 -7
  224. package/dist/internal/agent-orb.d.ts +4 -1
  225. package/dist/internal/agent-orb.d.ts.map +1 -1
  226. package/dist/internal/agent-orb.js +7 -1
  227. package/dist/internal/assistant-ui/attachment.d.ts.map +1 -1
  228. package/dist/internal/assistant-ui/attachment.js +15 -15
  229. package/dist/internal/assistant-ui/follow-up-suggestions.js +1 -1
  230. package/dist/internal/assistant-ui/markdown-text.js +26 -25
  231. package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -1
  232. package/dist/internal/assistant-ui/reasoning.js +13 -16
  233. package/dist/internal/assistant-ui/thread.d.ts.map +1 -1
  234. package/dist/internal/assistant-ui/thread.js +22 -16
  235. package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -1
  236. package/dist/internal/assistant-ui/tool-fallback.js +29 -21
  237. package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -1
  238. package/dist/internal/assistant-ui/tool-group.js +6 -7
  239. package/dist/internal/assistant-ui/tooltip-icon-button.js +1 -1
  240. package/dist/internal/badge-frame.d.ts +15 -0
  241. package/dist/internal/badge-frame.d.ts.map +1 -0
  242. package/dist/internal/badge-frame.js +44 -0
  243. package/dist/internal/button-classes.d.ts +20 -0
  244. package/dist/internal/button-classes.d.ts.map +1 -0
  245. package/dist/internal/button-classes.js +74 -0
  246. package/dist/internal/catalog-list.d.ts.map +1 -1
  247. package/dist/internal/catalog-list.js +8 -4
  248. package/dist/internal/collection-rail.js +3 -3
  249. package/dist/internal/form-drawer-frame.d.ts +10 -0
  250. package/dist/internal/form-drawer-frame.d.ts.map +1 -0
  251. package/dist/internal/form-drawer-frame.js +9 -0
  252. package/dist/internal/form-submit.d.ts +2 -1
  253. package/dist/internal/form-submit.d.ts.map +1 -1
  254. package/dist/internal/settings-save.d.ts.map +1 -1
  255. package/dist/internal/settings-save.js +4 -2
  256. package/dist/internal/status-mark.d.ts.map +1 -1
  257. package/dist/internal/status-mark.js +4 -1
  258. package/dist/internal/tab-row.d.ts +10 -0
  259. package/dist/internal/tab-row.d.ts.map +1 -0
  260. package/dist/internal/tab-row.js +2 -0
  261. package/dist/internal/table-compact-line.d.ts +1 -1
  262. package/dist/internal/table-compact-line.d.ts.map +1 -1
  263. package/dist/internal/table-compact-line.js +1 -1
  264. package/dist/internal/tooltip-content-frame.d.ts +14 -0
  265. package/dist/internal/tooltip-content-frame.d.ts.map +1 -0
  266. package/dist/internal/tooltip-content-frame.js +11 -0
  267. package/dist/lib/css-variables.d.ts +8 -0
  268. package/dist/lib/css-variables.d.ts.map +1 -0
  269. package/dist/lib/css-variables.js +4 -0
  270. package/dist/lib/merge-tokens.generated.js +1 -1
  271. package/dist/lib/use-copy-to-clipboard.d.ts.map +1 -1
  272. package/dist/lib/use-copy-to-clipboard.js +1 -2
  273. package/dist/showcase/samples.js +1 -1
  274. package/dist/showcase/specimens/choices.d.ts.map +1 -1
  275. package/dist/showcase/specimens/choices.js +3 -2
  276. package/dist/showcase/specimens/compositions.d.ts.map +1 -1
  277. package/dist/showcase/specimens/compositions.js +7 -5
  278. package/dist/showcase/specimens/data.d.ts.map +1 -1
  279. package/dist/showcase/specimens/data.js +1 -1
  280. package/dist/showcase/specimens/feedback.d.ts.map +1 -1
  281. package/dist/showcase/specimens/feedback.js +1 -2
  282. package/dist/showcase/specimens/index.d.ts +2 -0
  283. package/dist/showcase/specimens/index.d.ts.map +1 -1
  284. package/dist/showcase/specimens/inputs.d.ts +1 -0
  285. package/dist/showcase/specimens/inputs.d.ts.map +1 -1
  286. package/dist/showcase/specimens/inputs.js +5 -2
  287. package/dist/showcase/specimens/menus.d.ts +1 -0
  288. package/dist/showcase/specimens/menus.d.ts.map +1 -1
  289. package/dist/showcase/specimens/menus.js +7 -2
  290. package/dist/showcase/specimens/navigation.d.ts.map +1 -1
  291. package/dist/showcase/specimens/navigation.js +6 -5
  292. package/dist/showcase/specimens/status.d.ts.map +1 -1
  293. package/dist/showcase/specimens/status.js +4 -4
  294. package/dist/showcase/usage.generated.d.ts +1 -1
  295. package/dist/showcase/usage.generated.d.ts.map +1 -1
  296. package/dist/showcase/usage.generated.js +38 -16
  297. package/dist/standalone/index.js +1 -1
  298. package/dist/standalone/orb-page.js +10 -8
  299. package/dist/styles/components.css +1 -1
  300. package/package.json +32 -33
  301. package/dist/eslint/index.js +0 -224
  302. package/dist/eslint/rules/badge-is-static-label.js +0 -93
  303. package/dist/eslint/rules/button-icon-slot.js +0 -102
  304. package/dist/eslint/rules/button-link-for-navigation.js +0 -146
  305. package/dist/eslint/rules/button-no-aria-label-with-text.js +0 -75
  306. package/dist/eslint/rules/button-type-roles-only-in-buttons.js +0 -83
  307. package/dist/eslint/rules/choice-control-has-a-name.js +0 -98
  308. package/dist/eslint/rules/choice-group-in-fieldset.js +0 -86
  309. package/dist/eslint/rules/command-shortcut-single-owner.js +0 -118
  310. package/dist/eslint/rules/confirm-dialog-words.js +0 -63
  311. package/dist/eslint/rules/data-table-one-unsized-column.js +0 -96
  312. package/dist/eslint/rules/destructive-action-placement.js +0 -69
  313. package/dist/eslint/rules/disabled-choice-says-why.js +0 -71
  314. package/dist/eslint/rules/disabled-control-appearance.js +0 -75
  315. package/dist/eslint/rules/ellipsis-opens-a-dialog.js +0 -110
  316. package/dist/eslint/rules/empty-state-owner.js +0 -145
  317. package/dist/eslint/rules/input-group-owners.js +0 -155
  318. package/dist/eslint/rules/jsx-class-utility.js +0 -200
  319. package/dist/eslint/rules/kbd-children-no-modifier-text.js +0 -128
  320. package/dist/eslint/rules/literal-text.js +0 -41
  321. package/dist/eslint/rules/menu-owner.js +0 -75
  322. package/dist/eslint/rules/middle-truncate-placement.js +0 -69
  323. package/dist/eslint/rules/no-app-feature-component.js +0 -100
  324. package/dist/eslint/rules/no-bare-button-label.js +0 -55
  325. package/dist/eslint/rules/no-choice-control-wrapper.js +0 -97
  326. package/dist/eslint/rules/no-comment.js +0 -77
  327. package/dist/eslint/rules/no-control-in-read-only-surface.js +0 -106
  328. package/dist/eslint/rules/no-decorative-icon.js +0 -164
  329. package/dist/eslint/rules/no-deprecated-zod-api.js +0 -215
  330. package/dist/eslint/rules/no-global-patch.js +0 -115
  331. package/dist/eslint/rules/no-hand-built-busy.js +0 -104
  332. package/dist/eslint/rules/no-hand-built-theme-picker.js +0 -144
  333. package/dist/eslint/rules/no-hand-built-tile.js +0 -41
  334. package/dist/eslint/rules/no-hand-formatted-date.js +0 -87
  335. package/dist/eslint/rules/no-hand-stacked-avatars.js +0 -67
  336. package/dist/eslint/rules/no-nested-collapse.js +0 -60
  337. package/dist/eslint/rules/no-package-component-redefinition.js +0 -175
  338. package/dist/eslint/rules/no-search-in-form.js +0 -47
  339. package/dist/eslint/rules/no-shadcn-appearance-override.js +0 -305
  340. package/dist/eslint/rules/no-shell-prompt-in-snippet.js +0 -74
  341. package/dist/eslint/rules/no-stock-error-words.js +0 -56
  342. package/dist/eslint/rules/no-subject-derived-expectation.js +0 -183
  343. package/dist/eslint/rules/no-tooltip-around-labelled-field.js +0 -72
  344. package/dist/eslint/rules/no-weight-class-on-strong-in-type-role.js +0 -57
  345. package/dist/eslint/rules/no-write-in-subscription.js +0 -140
  346. package/dist/eslint/rules/one-submenu-level.js +0 -43
  347. package/dist/eslint/rules/one-toast-per-flow.js +0 -91
  348. package/dist/eslint/rules/option-count.js +0 -167
  349. package/dist/eslint/rules/page-command-link-not-render.js +0 -43
  350. package/dist/eslint/rules/page-composition.js +0 -232
  351. package/dist/eslint/rules/progress-needs-name.js +0 -57
  352. package/dist/eslint/rules/rendered-import.js +0 -121
  353. package/dist/eslint/rules/server-action-discipline.js +0 -233
  354. package/dist/eslint/rules/settings-limit-in-footer.js +0 -94
  355. package/dist/eslint/rules/skeleton-in-region.js +0 -80
  356. package/dist/eslint/rules/sortable-heading-uses-sort.js +0 -79
  357. package/dist/eslint/rules/table-cell-inset-owner.js +0 -107
  358. package/dist/eslint/rules/tabs-selection-is-controlled.js +0 -47
  359. package/dist/eslint/rules/test-files-from-one-definition.js +0 -67
  360. package/dist/eslint/rules/tooltip-only-arrow.js +0 -38
  361. package/dist/eslint/rules/tooltip-trigger-accessible-name.js +0 -114
  362. package/dist/eslint/rules/workspace-declares-imports.js +0 -163
  363. package/dist/eslint/strict-design-system.js +0 -250
@@ -1,3 +1,3 @@
1
- export const agentOrbScript = "\"use strict\";(()=>{function et(t,o,e){return t+(o-t)*e}function Ot(t){return t-Math.floor(t)}function ot(t,o){let e=Math.floor(t),s=Math.floor(o),n=t-e,r=o-s;n=n*n*(3-2*n),r=r*r*(3-2*r);let a=W(e,s),l=W(e+1,s),d=W(e,s+1),u=W(e+1,s+1);return a+(l-a)*n+(d-a)*r+(a-l-d+u)*n*r}function W(t,o){let e=Math.sin(t*12.9898+o*78.233)*43758.5453;return e-Math.floor(e)}function st(t,o){let e=Math.PI*(3-Math.sqrt(5)),s=1-2*(t+.5)/o,n=Math.sqrt(1-s*s),r=t*e;return[n*Math.cos(r),s,n*Math.sin(r)]}function Yt(t,o){return Math.atan2(Math.sin(t-o),Math.cos(t-o))}function q(t,o,e,s,n){let r=Math.sin(o),a=Math.cos(o),l=Math.sin(t),d=Math.cos(t);return(u,p,m)=>{let c=u*d+m*l,h=-u*l+m*d,M=p*a-h*r,x=p*r+h*a;return[e+c*n,s-M*n,x]}}function Pt(t,o,e,s){if(!s){let r=Math.round((e?1-t:t)*255);return`rgba(${r},${r},${r},${o})`}let n=r=>Math.round(e?r*(1-t):r+(255-r)*t);return`rgba(${n(s.r)},${n(s.g)},${n(s.b)},${o})`}function Et(t,o,e,s=.3,n){for(let r of o){let a=r.a??1,l=Math.min(1,Math.max(0,r.white));t.fillStyle=Pt(l,a,e,n),t.beginPath(),t.arc(r.x,r.y,r.r,0,Math.PI*2),t.fill()}}function kt(t,o,e,s){for(let n of o){let r=n.a??1,a=Math.min(1,Math.max(0,n.white));t.strokeStyle=Pt(a,r,e,s),t.lineWidth=n.w,t.beginPath(),t.moveTo(n.x1,n.y1),t.lineTo(n.x2,n.y2),t.stroke()}}function j(t,o,e=.3){let s=[];for(let n of t)(n.a??1)<.02||(n.r=Math.max(e,n.r),s.push(n));return s.sort((n,r)=>n.z-r.z),{dots:s,lines:o.filter(n=>(n.a??1)>=.02)}}function Tt(t,o,e,s){o.lines.length&&kt(t,o.lines,e,s),Et(t,o.dots,e,.3,s)}function K(t,o){return(t/300)**o}var Zt=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],Jt=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],Qt=[\"iconD\"],Xt=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function te(t,o){let e={...t},s=new Set,n=Math.sqrt(o);for(let[r,a]of Zt){let l=e[r],d=e[a];l!=null&&d!=null&&!s.has(r)&&!s.has(a)&&(e[r]=Math.max(2,Math.round(l*n)),e[a]=Math.max(2,Math.round(d*n)),s.add(r),s.add(a))}for(let r of Jt){let a=e[r];a!=null&&a!==0&&!s.has(r)&&(e[r]=Math.max(1,Math.round(a*o)))}for(let r of Qt){let a=e[r];a!=null&&(e[r]=Math.max(.02,a*o))}return e}function ee(t,o){let e={...t};for(let s of Xt){let n=e[s];n!=null&&(e[s]=n*o)}return e.rSizeMul=(e.rSizeMul??1)*o,e}var oe={globe:{latRings:17,lonDensity:44,rBase:.6,rDepth:1.7,rBoost:1,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},orbits:{orbitN:12,ghostN:40,ghostR:.9,ghostA:.5,particles:3,partR:1.2,partRDepth:1.6,rsPow:.6,rMin:.3},rubik:{latRings:15,lonDensity:40,moveCount:14,rBase:.6,rDepth:1.7,rActive:.3,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},wave:{rings:15,lonDensity:40,rBase:.6,rDepth:1.7,rsPow:.6,rMin:.3},web:{nodeN:30,thr:.72,signals:5,nodeR:1.4,nodeRDepth:1.8,lineW:.8,rsPow:.6,rMin:.3},braid:{strandN:52,turns:3,ghostN:150,rBase:1.2,rDepth:1.8,rsPow:.6,rMin:.3},ribbon:{lanes:5,segs:88,ghostN:150,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},ring:{lanes:5,segs:88,ghostN:0,faceOn:1,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},morph:{rDot:.021,iconD:1,rMin:.25}},ne=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.76,a=q(o*.4,.3,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.ghostN??150;for(let c=0;c<u;c++){let h=st(c,u),[M,x,i]=a(h[0]*r,h[1]*r,h[2]*r),S=(i/r+1)/2;d.push({x:M,y:x,z:i,r:.8*l,white:.78,a:.1+.22*S})}let p=e.strandN??52,m=e.turns??3;for(let c=0;c<3;c++){let h=c/3*2*Math.PI;for(let M=0;M<p;M++){let x=(Ot(M/p+o*.045)*2-1)*.96,i=Math.sqrt(Math.max(0,1-x*x)),S=Math.min(1,(1-Math.abs(x))/.1),y=x*Math.PI*m+h,b=1+.075*Math.sin(x*Math.PI*m*2+h*2+o*.8),A=i*r*b,[v,D,g]=a(Math.cos(y)*A,x*r*b,Math.sin(y)*A),f=(g/r+1)/2;d.push({x:v,y:D,z:g,r:((e.rBase??1.2)+(e.rDepth??1.8)*f)*l,white:.55-.45*f,a:S*(.45+.55*f)})}}return j(d,[],e.rMin)};function re(t,o,e,s){let n=2*o*e+s,r=t%n,a=new Array(o).fill(0),l=-1;if(r<2*o*e){let d=Math.floor(r/e),u=(r-d*e)/e,m=1-(1-Math.min(1,u/.7))**3;if(d<o){for(let c=0;c<d;c++)a[c]=1;a[d]=m,l=d}else{let c=2*o-1-d;for(let h=0;h<c;h++)a[h]=1;a[c]=1-m,l=c}}return{amount:a,active:l}}function se(t,o,e){let[s,n,r]=t,a=!1;for(let l=0;l<o.length;l++){if(e.amount[l]<=0)continue;let d=o[l],u=d.axis===0?s:d.axis===1?n:r;if(u<d.lo||u>=d.hi)continue;l===e.active&&(a=!0);let p=d.ang*e.amount[l],m=Math.cos(p),c=Math.sin(p);if(d.axis===0){let h=n*m-r*c;r=n*c+r*m,n=h}else if(d.axis===1){let h=s*m+r*c;r=-s*c+r*m,s=h}else{let h=s*m-n*c;n=s*c+n*m,s=h}}return[s,n,r,a]}function ae(t){let o=[];for(let e=0;e<t;e++){let s=Math.min(2,Math.floor(W(e,2.3)*3)),n=-1+.5*Math.min(3,Math.floor(W(e,5.9)*4)),r=W(e,7.7)<.5?1:-1;o.push({axis:s,lo:n,hi:n+.5,ang:r*Math.PI/2})}return o}var ie=(t,o,e)=>{let n=t/2,r=t/2,a=t/2*.82,l=.4+.06*Math.sin(o*.35),d=q(o*.5,l,n,r,a),u=o*(.5+(1.7-.5)*(e.scanMul??1)),p=K(t,e.rsPow??.6),m=e.dimBase??1,c=[],h=e.latRings??17,M=e.lonDensity??44;for(let x=0;x<=h;x++){let i=-Math.PI/2+x/h*Math.PI,S=Math.cos(i),y=Math.sin(i),b=Math.max(1,Math.round(Math.abs(S)*M));for(let A=0;A<b;A++){let v=A/b*2*Math.PI,[D,g,f]=d(S*Math.cos(v),y,S*Math.sin(v)),w=(f+1)/2,O=Yt(v+o*.5,u),E=Math.exp(-(O*O)/.18)*Math.max(0,f);c.push({x:D,y:g,z:f,r:((e.rBase??.6)+(e.rDepth??1.7)*w+(e.rBoost??1)*E)*p,white:(e.inkFar??.62)-(e.inkSpan??.54)*w,a:m+(1-m)*Math.min(1,E)})}}return j(c,[],e.rMin)},ce=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.55,.35+.1*Math.sin(o*.9),s,n,r),l=K(t,e.rsPow??.6),d=e.moveCount??14,u=ae(d),p=re(o,d,.42,1.2),m=[],c=e.latRings??15,h=e.lonDensity??40;for(let M=0;M<=c;M++){let x=-Math.PI/2+M/c*Math.PI,i=Math.cos(x),S=Math.sin(x),y=Math.max(1,Math.round(Math.abs(i)*h));for(let b=0;b<y;b++){let A=b/y*2*Math.PI,[v,D,g,f]=se([i*Math.cos(A),S,i*Math.sin(A)],u,p),[w,O,E]=a(v,D,g),k=(E+1)/2;m.push({x:w,y:O,z:E,r:((e.rBase??.6)+(e.rDepth??1.7)*k+(f?e.rActive??.3:0))*l,white:(e.inkFar??.62)-(e.inkSpan??.54)*k-(f?.14:0)})}}return j(m,[],e.rMin)},le=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.874,a=q(o*.18,.38,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.rings??15,p=e.lonDensity??40;for(let m=0;m<=u;m++){let c=-Math.PI/2+m/u*Math.PI,h=Math.cos(c),M=Math.sin(c),x=.62*Math.sin(o*2.1-m*.52)+.38*Math.sin(o*1.27+m*.83),i=r*(.88+.105*x),S=Math.max(1,Math.round(Math.abs(h)*p));for(let y=0;y<S;y++){let b=y/S*2*Math.PI,[A,v,D]=a(h*Math.cos(b)*i,M*i,h*Math.sin(b)*i),g=(D/r+1)/2,f=Math.max(0,x);d.push({x:A,y:v,z:D,r:((e.rBase??.6)+(e.rDepth??1.7)*g)*(1+.4*f)*l,white:.66-.56*g-.1*f})}}return j(d,[],e.rMin)};function pe(t){return t*t*(3-2*t)}function Rt(t){let o=t.length,e=[],s=0;for(let n=0;n<o;n++){let r=t[n],a=t[(n+1)%o],l=Math.hypot(a[0]-r[0],a[1]-r[1]);e.push(l),s+=l}return n=>{let r=n*s,a=0;for(;r>e[a]&&a<o-1;)r-=e[a],a++;let l=t[a],d=t[(a+1)%o],u=e[a]?Math.min(1,r/e[a]):0;return[l[0]+(d[0]-l[0])*u,l[1]+(d[1]-l[1])*u]}}var fe=t=>{let o=-Math.PI/2+t*2*Math.PI;return[Math.cos(o)*.24,Math.sin(o)*.24]},ue=Rt([[0,-.26],[.24,.16],[-.24,.16]]),me=Rt([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),nt=[fe,ue,me];function de(t){return Math.max(6,Math.round(34*t))}var rt=1.4,Ct=.9,Z=rt+Ct,he=(t,o,e)=>{let s=nt.length,n=o%(Z*s),r=e.shape!=null&&e.shape>=0&&e.shape<s?Math.floor(e.shape):-1,a=r>=0?r:Math.floor(n/Z),l=r>=0?o%Z:n-a*Z,d=r>=0?0:l>rt?pe((l-rt)/Ct):0,u=e.spread??1,p=nt[a],m=r>=0?p:nt[(a+1)%s],c=160,h=[];for(let g=0;g<c;g++){let f=g/c,w=p(f),O=m(f);h.push([(w[0]+(O[0]-w[0])*d)*u,(w[1]+(O[1]-w[1])*d)*u])}let M=[],x=0;for(let g=0;g<c;g++){let f=h[g],w=h[(g+1)%c],O=Math.hypot(w[0]-f[0],w[1]-f[1]);M.push(O),x+=O}let i=de(e.iconD??1),S=(e.rDot??.021)*1.35*u,y=1+.02*Math.sin(l*3.1),b=[],A=t/2,v=0,D=0;for(let g=0;g<i;g++){let f=g/i*x;for(;D+M[v]<f&&v<c-1;)D+=M[v],v++;let w=h[v],O=h[(v+1)%c],E=M[v]?Math.min(1,(f-D)/M[v]):0,k=(w[0]+(O[0]-w[0])*E)*y,T=(w[1]+(O[1]-w[1])*E)*y;b.push({x:A+k*t,y:A+T*t,z:0,r:Math.max(.35,S*t),white:.1})}return j(b,[],e.rMin)},ge=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.12,.3,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.orbitN??12,p=e.ghostN??40,m=e.particles??3;for(let c=0;c<u;c++){let h=W(c,1.7),M=W(c,5.2),x=W(c,8.9),i=r*(.45+.52*h),S=h*2*Math.PI,y=Math.acos(2*M-1),b=Math.sin(y)*Math.cos(S),A=Math.cos(y),v=Math.sin(y)*Math.sin(S),D=-A,g=b,f=0,w=Math.max(1e-6,Math.sqrt(D*D+g*g));D/=w,g/=w;let O=A*f-v*g,E=v*D-b*f,k=b*g-A*D,T=(.25+.55*x)*(x>.5?1:-1);for(let C=0;C<p;C++){let R=C/p*2*Math.PI,[I,B,L]=a((D*Math.cos(R)+O*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(f*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:(e.ghostR??.9)*l,white:.72,a:(e.ghostA??.5)*(.4+.6*N)})}for(let C=0;C<m;C++){let R=o*T+C/m*2*Math.PI+M*6,[I,B,L]=a((D*Math.cos(R)+O*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(f*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:((e.partR??1.2)+(e.partRDepth??1.6)*N)*l,white:.3-.22*N})}}return j(d,[],e.rMin)},At=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.78,a=e.spin??1,l=.3,d=q(o*.1*a,l,s,n,1),u=K(t,e.rsPow??.6),p=[],m=e.ghostN??150;for(let k=0;k<m;k++){let T=st(k,m),[C,R,I]=d(T[0]*r,T[1]*r,T[2]*r),B=(I/r+1)/2;p.push({x:C,y:R,z:I,r:.8*u,white:.78,a:.1+.22*B})}let c=o*.24*a,h=e.faceOn?-l:.55+.3*Math.sin(o*.18)*a,M=Math.cos(c),x=0,i=Math.sin(c),S=-i*Math.sin(h),y=Math.cos(h),b=M*Math.sin(h),A=x*b-i*y,v=i*S-M*b,D=M*y-x*S,g=.23*(e.wobMul??1),f=e.faceOn?r/(1+.85*g):r,w=e.lanes??5,O=e.segs??88,E=Math.max(1,Math.round(w*(e.bandMul??1)));for(let k=0;k<E;k++){let T=(k-(E-1)/2)*.075,C=Math.abs(k-(E-1)/2)/Math.max(1,(E-1)/2);for(let R=0;R<O;R++){let I=R/O*2*Math.PI,B=(.16*Math.sin(I*3-o*1.7+k*.22)+.07*Math.sin(I*5+o*1.1))*(e.wobMul??1),L=e.faceOn?1+B:1,N=e.faceOn?T:T+B,_=M*Math.cos(I)+S*Math.sin(I)+A*N,P=x*Math.cos(I)+y*Math.sin(I)+v*N,V=i*Math.cos(I)+b*Math.sin(I)+D*N,F=Math.sqrt(_*_+P*P+V*V),G=f*L,[$t,Ut,wt]=d(_/F*G,P/F*G,V/F*G),tt=(wt/r+1)/2;p.push({x:$t,y:Ut,z:wt,r:((e.rBase??1.1)+(e.rDepth??1.7)*tt)*(1-.25*C)*u,white:.52-.44*tt+.18*C,a:.4+.6*tt})}}return j(p,[],e.rMin)},Me=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.8*(e.spread??1),a=q(o*.12,.32,s,n,r),l=K(t,e.rsPow??.6),d=e.nodeN??30,u=e.thr??.72,p=e.nodeR??1.4,m=e.nodeRDepth??1.8,c=[];for(let i=0;i<d;i++){let S=st(i,d),y=S[0]+.3*(ot(i*.31+9,o*.24)-.5)*2,b=S[1]+.3*(ot(i*.53+27,o*.21)-.5)*2,A=S[2]+.3*(ot(i*.77+55,o*.27)-.5)*2,v=Math.sqrt(y*y+b*b+A*A);c.push([y/v,b/v,A/v])}let h=[],M=[];for(let i=0;i<d;i++)for(let S=i+1;S<d;S++){let y=c[i][0]-c[S][0],b=c[i][1]-c[S][1],A=c[i][2]-c[S][2],v=Math.sqrt(y*y+b*b+A*A);if(v>=u)continue;let[D,g,f]=a(c[i][0],c[i][1],c[i][2]),[w,O,E]=a(c[S][0],c[S][1],c[S][2]),k=((f+E)/2+1)/2;h.push({x1:D,y1:g,x2:w,y2:O,white:.42,a:(1-v/u)*(.3+.55*k),w:Math.max(.6,(e.lineW??.8)*l)})}for(let i=0;i<d;i++){let[S,y,b]=a(c[i][0],c[i][1],c[i][2]),A=(b+1)/2,v=1+.25*Math.sin(o*1.4+i*2.7);M.push({x:S,y,z:b,r:(p+m*A)*v*l,white:.55-.45*A})}let x=e.signals??5;for(let i=0;i<x;i++){let S=Math.floor(o*.55+i*7.31),y=Math.floor(W(S,i*3.1+1.7)*d),b=Math.floor(W(S,i*5.7+4.2)*d);if(y===b)continue;let A=Ot(o*.55+i*7.31),v=et(c[y][0],c[b][0],A),D=et(c[y][1],c[b][1],A),g=et(c[y][2],c[b][2],A),f=Math.max(1e-6,Math.sqrt(v*v+D*D+g*g)),[w,O,E]=a(v/f,D/f,g/f),k=(E+1)/2;M.push({x:w,y:O,z:E,r:(p*1.5+m*k)*l,white:.05,a:.5+.5*k})}return j(M,h,e.rMin)},U={orbits:ge,globe:ie,rubik:ce,wave:le,web:Me,braid:ne,ribbon:At,ring:At,morph:he},be=Object.fromEntries(Object.entries(U).map(([t,o])=>[t,(e,s,n,r,a)=>Tt(e,o(s,n,a),r)])),Vt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},xe={orbits:{64:{speed:1.885,count:1,size:1},32:{speed:2.9072,count:.4251,size:1.6849},20:{speed:3.9,count:.238,size:2.4}},globe:{64:{speed:2.015,count:.42,size:1.15,extra:{scanMul:4.08,dimBase:.45}},32:{speed:2.3803,count:.1839,size:1.4769,extra:{scanMul:4.2301,dimBase:.45}},20:{speed:2.665,count:.105,size:1.75,extra:{scanMul:4.335,dimBase:.45}}},rubik:{64:{speed:1.82,count:.35,size:1.05},32:{speed:1.8964,count:.1537,size:1.4951},20:{speed:1.95,count:.088,size:1.9}},wave:{64:{speed:4.388,count:.341,size:1},32:{speed:4.1512,count:.169,size:1.3232},20:{speed:3.998,count:.105,size:1.6}},web:{64:{speed:3.315,count:1.35,size:.95},32:{speed:5.0104,count:.4942,size:1.2571},20:{speed:6.63,count:.25,size:1.52}},braid:{64:{speed:1.625,count:.5,size:1},32:{speed:2.2234,count:.2056,size:1.2011},20:{speed:2.75,count:.1125,size:1.36}},ribbon:{64:{speed:2.34,count:.25,size:.85,extra:{spin:0,bandMul:3.9,wobMul:1}},32:{speed:2.7776,count:.0969,size:.9766,extra:{spin:0,bandMul:4.49,wobMul:1}},20:{speed:3.12,count:.051,size:1.073,extra:{spin:0,bandMul:4.94,wobMul:1}}},ring:{64:{speed:3.24,count:.25,size:.956,extra:{spin:0,bandMul:3.627,wobMul:.368}},32:{speed:3.5517,count:.0678,size:1.31,extra:{spin:0,bandMul:3.8265,wobMul:.4751}},20:{speed:3.78,count:.028,size:1.622,extra:{spin:0,bandMul:3.968,wobMul:.565}}},morph:{64:{speed:2.405,count:.702,size:.395,extra:{spread:1.45}},32:{speed:2.2057,count:.5937,size:.6916,extra:{spread:1.45}},20:{speed:2.08,count:.53,size:1.011,extra:{spread:1.45}}}},Dt=new Map;function at(t,o){let e=`${t}-${o}`,s=Dt.get(e);if(s)return s;let n=Vt[t],r=xe[n][o],a={...oe[n]};r.count!==1&&(a=te(a,r.count)),r.size!==1&&(a=ee(a,r.size)),r.extra&&(a={...a,...r.extra});let l={mode:n,speed:r.speed,opts:a};return Dt.set(e,l),l}var it=(t,o,e)=>e>o?o:e<t?t:e;var ct=()=>{};var H=t=>t*1e3,$=t=>t/1e3;var It=(t,o,e=10)=>{let s=\"\",n=Math.max(Math.round(o/e),2);for(let r=0;r<n;r++)s+=Math.round(t(r/(n-1))*1e4)/1e4+\", \";return`linear(${s.substring(0,s.length-2)})`};function J(t,o=50,e=2e4,s){let n=0,r=t.next(n);for(s?.push(r.value);!r.done&&n<e;)n+=o,r=t.next(n),s?.push(r.value);return n>=e?1/0:n}function Ft(t,o=100,e){let{keyframes:s,velocity:n}=t,r=s&&s[s.length-1]-s[0],a=e({...t,velocity:n&&r?n*o/r:n,keyframes:[0,o]}),l=Math.min(J(a),2e4);return{type:\"keyframes\",ease:d=>a.next(l*d).value/o,duration:$(l)}}var z={stiffness:100,damping:10,mass:1,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05},zt=t=>t<0?1/Math.max(1+t,z.minDamping):Math.max(1-t,z.minDamping);function Nt(t,o){if(!(t>1))return 1;let e=Math.sqrt(t*t-1),s=t-e,n=t+e,r=2*e*Math.exp(-o)*(1+o);return Bt(a=>n*Math.exp(-s*a)-s*Math.exp(-n*a)-r,a=>Math.exp(-n*a)-Math.exp(-s*a),o)/o}function ut(t,o){return t*Math.sqrt(1-o*o)}var ye=12;function Bt(t,o,e){let s=e;for(let n=1;n<ye;n++)s=s-t(s)/o(s);return s}var pt=.001;function ve({duration:t=z.duration,bounce:o=z.bounce}){let e,s;ct(t<=H(z.maxDuration),\"Spring duration must be 10 seconds or less\",\"spring-duration-limit\");let n=zt(o);t=it(z.minDuration,z.maxDuration,$(t)),n<1?(e=u=>{let p=u*n,m=p*t,c=ut(u,n),h=Math.exp(-m);return pt-p/c*h},s=u=>{let m=u*n*t,c=n*n*u*u*t,h=Math.exp(-m),M=ut(u*u,n);return(-e(u)+pt>0?-1:1)*-c*h/M}):(e=u=>{let p=Math.exp(-u*t),m=u*t+1;return-pt+p*m},s=u=>{let p=Math.exp(-u*t),m=-u*(t*t);return p*m});let r=5/t,a=Bt(e,s,r),l=a*Nt(n,a*t),d=l*l;return{stiffness:d,damping:n*2*Math.sqrt(d),duration:H(t)}}var mt=(t,o)=>(o?t>=0:t>0)&&t<1/0;function ft(t,o){if(mt(t,o))return t}function Se(t){let o=ft(t.stiffness),e=ft(t.damping,!0),s=ft(t.mass),n={...t,stiffness:o??z.stiffness,damping:e??z.damping,mass:s??z.mass,isResolvedFromDuration:!1,isTimeDefined:(o??e??s)===void 0&&(t.duration!==void 0||t.bounce!==void 0)};if(n.isTimeDefined){if(t.visualDuration){let r=zt(t.bounce||0),a=2*Math.PI/(t.visualDuration*1.2)*Nt(r,2*Math.PI/1.2);n.stiffness=a*a,n.damping=2*r*Math.sqrt(n.stiffness)}else Object.assign(n,ve(n)),n.isResolvedFromDuration=!0;(!mt(n.stiffness)||!mt(n.damping,!0))&&(n.stiffness=z.stiffness,n.damping=z.damping)}return n}function Y(t=z.visualDuration,o=z.bounce){let e=typeof t!=\"object\"?{visualDuration:t,keyframes:[0,1],bounce:o}:t,s=e.keyframes[0],n=e.keyframes[e.keyframes.length-1],r={done:!1,value:s},{stiffness:a,damping:l,mass:d,duration:u,isResolvedFromDuration:p,isTimeDefined:m}=Se({...e}),c=g=>m?0:-$(g),h=l/(2*Math.sqrt(a*d)),M=$(Math.sqrt(a/d)),x=h*M,i={target:n,delta:n-s,velocity:c(e.velocity||0)||0,restSpeed:0,restDelta:0},S=()=>{let g=Math.abs(i.delta)<5;i.restSpeed=e.restSpeed||(g?z.restSpeed.granular:z.restSpeed.default),i.restDelta=e.restDelta||(g?z.restDelta.granular:z.restDelta.default)};S();let y,b,A;if(h<1){let g=ut(M,h),f={A:0,sinC:0,cosC:0,t:-1,env:0,sin:0,cos:0};A=()=>{f.A=(i.velocity+x*i.delta)/g,f.sinC=x*f.A+i.delta*g,f.cosC=x*i.delta-f.A*g};let w=O=>{O!==f.t&&(f.t=O,f.env=Math.exp(-x*O),f.sin=Math.sin(g*O),f.cos=Math.cos(g*O))};y=O=>(w(O),i.target-f.env*(f.A*f.sin+i.delta*f.cos)),b=O=>(w(O),f.env*(f.sinC*f.sin+f.cosC*f.cos))}else if(h===1){y=f=>i.target-Math.exp(-M*f)*(i.delta+(i.velocity+M*i.delta)*f);let g={C:0};A=()=>{g.C=i.velocity+M*i.delta},b=f=>Math.exp(-M*f)*(M*g.C*f-i.velocity)}else{let g=M*Math.sqrt(h*h-1),f=x-g,w=x+g,O=m?1/0:300/g,E=(T,C)=>Math.exp(C>O?-T*O-x*(C-O):-T*C),k={S:0,F:0};A=()=>{let T=(i.velocity+x*i.delta)/g;k.S=(i.delta+T)/2,k.F=(i.delta-T)/2},y=T=>i.target-k.S*E(f,T)-k.F*E(w,T),b=T=>f*k.S*E(f,T)+w*k.F*E(w,T)}A();let v=p&&u||null,D={calculatedDuration:v,retarget:(g,f)=>{i.target=g[g.length-1],i.delta=i.target-g[0],i.velocity=c(f),e.restSpeed&&e.restDelta||S(),D.calculatedDuration=v,r.done=!1,A()},velocity:g=>H(b(g)),next:g=>{let f=y(g);if(p)r.done=g>=u;else{let w=H(b(g));r.done=Math.abs(w)<=i.restSpeed&&Math.abs(i.target-f)<=i.restDelta}return r.value=r.done?i.target:f,r},toString:()=>{let g=Math.min(J(D),2e4),f=It(w=>D.next(g*w).value,g,30);return g+\"ms \"+f},toTransition:()=>{}};return D}Y.applyToOptions=t=>{let o=Ft(t,100,Y);return t.ease=o.ease,t.duration=H(o.duration),t.type=\"keyframes\",t};var we={ribbon:{speed:.55},nadia:{speed:.55},sofia:{speed:.9},lattice:{speed:.28},orbit:{speed:.7},globe:{speed:.35},network:{speed:.55},braid:{speed:.65},morph:{speed:.9}};function ht(t){return we[t].speed}function Lt(t,o,e=0,s=Mt){return{idle:.864,working:1,thinking:.55,waiting:0,blocked:0,done:e>=s.doneDuration?.72:.65}[t]*ht(o)}var gt={resting:15,busy:30},Ae=1.6;function Gt(t,o){return t!==\"thinking\"&&t!==\"working\"?1:1-.55*((1-Math.cos(o*Math.PI*2/Ae))/2)}function X(t){let o=(l,d)=>{let u=t?.getPropertyValue(`--nc-duration-${l}`).trim()??\"\";return u?Number.parseFloat(u)*(u.endsWith(\"ms\")?.001:1):d},e=o(\"wait\",1.6),s=o(\"confirm\",.18),n=o(\"transition\",.24),r=l=>Math.round(e*l*1e3)/1e3,a=Y({keyframes:[0,1],duration:n*2e3,bounce:.1});return{wait:e,confirm:s,transition:n,doneDuration:r(3),blockedDuration:r(1.25),gestureAge:l=>l*n*2/e,settle:(l,d=0)=>l<d?0:a.next((l-d)*1e3).value}}var Mt=X(),Q=t=>Math.min(1,Math.max(0,t)),dt=t=>{let o=Q(t);return o*o*(3-2*o)};function Wt(t,o,e=Mt,s=!1){let n=.82,r=.82,a=0,l=0,d=0;if(t===\"idle\"){let u=Math.sin((s?.6:o)*Math.PI*2/(e.wait*4));n+=u*.01,r+=u*.01,a=-u*.004}else if(!s&&t===\"waiting\"){let u=e.gestureAge(o),p=Math.sin(o*Math.PI*2/(e.wait*3)),m=Math.sin(Q(u/e.confirm)*Math.PI),c=e.settle(u,e.confirm*.55),h=1-m*.018+p*.006;n*=h,r*=h,a=-c*.018,d=-c*4.5*Math.PI/180}else if(!s&&t===\"blocked\"){let u=e.gestureAge(o),p=e.confirm*.85,m=dt(u/p)*(1-e.settle(u,p));n*=1-m*.018,r*=1+m*.012,l=-m*.034,a=m*.014,d=-m*4*Math.PI/180}else if(!s&&t===\"done\"){let u=o*1.3/(e.wait*2.25);if(u<.18){let p=Math.sin(Math.PI*u/.18);n+=.03*p,r-=.04*p,a=.012*p}else if(u<1.3){let p=(u-.18)/1.12;a=-.07*Math.sin(Math.PI*p),n+=.025*Math.sin(Math.PI*p),r+=.035*Math.sin(Math.PI*p),d=Math.sin(p*Math.PI*2)*.07}}return{sx:n,sy:r,x:l,y:a,rotation:d}}function De(t,o,e,s,n,r,a){let l=a.gestureAge(s),d=n?1:dt((l-a.confirm*.35)/a.confirm),u=n?1:a.settle(l,a.confirm*.35),p=Math.max(7,Math.min(36,e*.26));if(t.save(),t.fillStyle=r,t.strokeStyle=r,t.globalAlpha=d*.95,t.translate(e/2,e/2),o===\"waiting\"){let m=n?0:a.settle(l,a.confirm*.55),c=n?0:Math.sin(s*Math.PI*2/(a.wait*3));t.translate(0,(1-u)*-.12*p),t.rotate(-m*2*Math.PI/180);let h=.94+u*.06;t.scale(h,h),t.scale(p/24,p/24);for(let[M,x]of[14,5].entries()){let i=n?1:a.settle(l,a.confirm*(M===0?.65:.2)),S=M===0?1:-1;t.save(),t.globalAlpha=d*.95*Q(i)*(n?1:.96+c*.04),t.translate(x-9.5+S*(1-i)*1.45*5,(1-i)*-.24*18),t.rotate(S*(1-i)*14*Math.PI/180),t.scale(1,1+(1-i)*.12),t.beginPath(),t.roundRect(-2.5,-9,5,18,1),t.fill(),t.restore()}}else{t.translate(0,(1-u)*-.1*p),t.rotate((1-u)*-12*Math.PI/180);let m=1+(1-u)*.18;t.scale(m,m),t.scale(p/24,p/24),t.lineWidth=Math.max(1.6,24/p),t.lineCap=\"round\",t.beginPath(),t.arc(0,0,10,0,Math.PI*2),t.stroke();let c=n?1:dt((l-a.confirm*.8)/a.confirm);if(t.beginPath(),t.moveTo(-7.071,-7.071),t.lineTo(-7.071+14.141*c,-7.071+14.142*c),t.stroke(),!n&&e>=40){let h=Q((l-a.confirm*.85)/a.transition);t.globalAlpha*=Math.sin(h*Math.PI)*.65,t.lineWidth=1.4*24/p;for(let M of[-1,1]){t.beginPath();let x=M*(14.52+h*5.472),i=M*(10.34+h*1.68);t.moveTo(x-1.612,i-1.612),t.lineTo(x+1.612,i+1.612),t.stroke()}}}t.restore()}function bt(t,o,e,s,n,r,a,l=1,d=Mt,u=r[0]??\"currentColor\"){if(o===\"waiting\"||o===\"blocked\"){a===\"front\"&&De(t,o,e,s,n,u,d);return}if(!(o!==\"working\"&&o!==\"thinking\"&&o!==\"done\")){if(s*=o===\"done\"?3.1/d.doneDuration:o===\"working\"?7.2/(d.wait*2):3.6/(d.wait*1.5),t.save(),o===\"thinking\"){if(a===\"front\")for(let p=0;p<3;p++){let m=n?.5:(1+Math.cos(s*Math.PI*2/3.6-p*Math.PI*2/3))/2,c=r[p%r.length];c!==void 0&&(t.fillStyle=c),t.globalAlpha=(.65+m*.35)*l,t.beginPath(),t.arc(e*(.5+(p-1)*.09),e*.08,Math.max(1,e*(.022+m*.005)),0,Math.PI*2),t.fill()}}else if(o===\"working\"||!n&&s<3.1){let p=o===\"done\"?3:1;for(let m=0;m<p;m++){let c=o===\"done\"?(s-m*.38)/2.2:0;if(c<0||c>1)continue;let h=o===\"done\"?Math.sin(c*Math.PI):1,M=(n?.8:s*Math.PI*2/7.2)+m*2.1,x=Math.PI*1.4,i=-.38+m*.4,S=e*(.44+c*.03),y=e*(.19+c*.11),b=v=>{let D=Math.cos(v)*S,g=Math.sin(v)*y;return[e/2+D*Math.cos(i)-g*Math.sin(i),e/2+D*Math.sin(i)+g*Math.cos(i)]},A=t.createLinearGradient(e*.1,e*.7,e*.9,e*.3);r.forEach((v,D)=>A.addColorStop(D/Math.max(1,r.length-1),v)),t.strokeStyle=A,t.lineCap=\"butt\";for(let v=0;v<100;v++){let D=v/100,g=M-x+x*D,f=Math.sin(g)>=0;if(f!==(a===\"front\"))continue;let w=Math.sin(Math.PI*(.04+D*.92));t.globalAlpha=h*(f?.92:.55)*(.25+w*.75)*l,t.lineWidth=Math.max(.65,e*.027*w),t.beginPath(),t.moveTo(...b(g)),t.lineTo(...b(g+x/100)),t.stroke()}}}t.restore()}}var Oe={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Pe={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},_t=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],qt=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],vt={waiting:\"--nc-warning-deep\",blocked:\"--nc-error\"},jt=new Map,St=[\"--nc-identity-cobalto\",\"--nc-identity-verde\",\"--nc-identity-giallo\",\"--nc-identity-arancio\",\"--nc-identity-rosso\"],Ee={nadia:_t,sofia:St},ke=[...qt,...[..._t,...St].filter(t=>t!==null),...Object.values(vt),\"--nc-duration-wait\",\"--nc-duration-confirm\",\"--nc-duration-transition\"];function Te(t,o){let e=1-2*(t+.5)/o,s=Math.sqrt(1-e*e),n=t*Math.PI*(3-Math.sqrt(5));return[s*Math.cos(n),e,s*Math.sin(n)]}function Re(t,o,e){let s=t/2,n=t/2*.78,r=e.spin??1,a=q(o*.1*r,.3,s,s,1),l=K(t,e.rsPow??.6),d=[],u=e.ghostN??150;for(let w=0;w<u;w++){let[O,E,k]=Te(w,u),[T,C,R]=a(O*n,E*n,k*n);d.push({x:T,y:C,z:R,r:.8*l,white:.78,a:.1+.22*((R/n+1)/2)})}let p=o*.24*r,m=e.faceOn?-.3:.55+.3*Math.sin(o*.18)*r,[c,h,M]=[Math.cos(p),0,Math.sin(p)],[x,i,S]=[-M*Math.sin(m),Math.cos(m),c*Math.sin(m)],[y,b,A]=[h*S-M*i,M*x-c*S,c*i-h*x],v=e.wobMul??1,D=e.faceOn?n/(1+.85*.23*v):n,g=e.segs??88,f=Math.max(1,Math.round((e.lanes??5)*(e.bandMul??1)));for(let w=0;w<f;w++){let O=(w-(f-1)/2)*.075,E=Math.abs(w-(f-1)/2)/Math.max(1,(f-1)/2);for(let k=0;k<g;k++){let T=k/g*2*Math.PI,C=(.16*Math.sin(T*3-o*1.7+w*.22)+.07*Math.sin(T*5+o*1.1))*v,R=e.faceOn?1+C:1,I=e.faceOn?O:O+C,B=c*Math.cos(T)+x*Math.sin(T)+y*I,L=h*Math.cos(T)+i*Math.sin(T)+b*I,N=M*Math.cos(T)+S*Math.sin(T)+A*I,_=Math.sqrt(B*B+L*L+N*N),[P,V,F]=a(B/_*D*R,L/_*D*R,N/_*D*R),G=(F/n+1)/2;d.push({x:P,y:V,z:F,r:((e.rBase??1.1)+(e.rDepth??1.7)*G)*(1-.25*E)*l,white:.08+.1*E,a:.55+.45*G,stripe:Math.min(3,Math.floor(w/f*4))})}}return j(d,[],e.rMin)}function Ce(t,o){let e=t.dots;for(let[s,n]of e.entries())n.stripe=Math.floor(s/e.length*o);return t}function Ve(t){return t===\"nadia\"?\"ribbon\":t===\"sofia\"?\"morph\":t}function Ie(t){return t<=32?20:t<=48?32:64}function Kt(t,o,e,s){return e===\"ambient\"||t===\"done\"&&o>=s.doneDuration?\"idle\":t}function Fe(t,o){let{form:e,size:s,seconds:n,color:r,state:a,age:l,reduced:d,breath:u,celebrationColors:p,stripeColors:m}=o,c=Pe[o.presence],h=at(Oe[Ve(e)],Ie(s)),M=e===\"nadia\"?Re(s,n,h.opts):e===\"sofia\"?Ce(U[h.mode](s,n,h.opts),St.length):U[h.mode](s,n,h.opts);t.clearRect(0,0,s,s);let x=a===\"done\"&&l>=o.timing.doneDuration,i=Kt(a,l,o.motion,o.timing),S=o.motion===\"ambient\"?0:x?l-o.timing.doneDuration:l,y=Wt(i,S,o.timing,d),b=x?l-o.timing.doneDuration:l,A=i===\"waiting\"||i===\"blocked\"?o.statusColors[i]:r,v=(f,w)=>{let O=(f-s/2)*y.sx,E=(w-s/2)*y.sy;return[s/2+O*Math.cos(y.rotation)-E*Math.sin(y.rotation)+y.x*s,s/2+O*Math.sin(y.rotation)+E*Math.cos(y.rotation)+y.y*s]},D=u;o.motion===\"status\"&&bt(t,i,s,b,d,p,\"back\",u,o.timing,A),t.fillStyle=r,t.strokeStyle=r;for(let f of M.lines)t.globalAlpha=Math.min(1,Math.max(0,(1-f.white)*(f.a??1)*D*c.alpha)),t.lineWidth=f.w*c.radius,t.beginPath(),t.moveTo(...v(f.x1,f.y1)),t.lineTo(...v(f.x2,f.y2)),t.stroke();let g=M.dots;for(let f of g)t.fillStyle=f.stripe===void 0?r:m[f.stripe]??r,t.globalAlpha=Math.min(1,Math.max(0,(1-f.white)*(f.a??1)*D*c.alpha)),t.beginPath(),t.arc(...v(f.x,f.y),f.r*c.radius,0,Math.PI*2),t.fill();t.globalAlpha=1,o.motion===\"status\"&&bt(t,i,s,b,d,p,\"front\",u,o.timing,A)}function ze(t){let o=new Map,e=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function s(p){let m=h=>{for(let M=h;M;M=M.parentElement)if(p.has(M))return!0;return!1},c=[...o].flatMap(([h,M])=>m(h)?[M.readChange()]:[]);for(let h of c)h?.()}function n(){for(let p of o.values())p.play()}let r=typeof IntersectionObserver>\"u\"?void 0:new IntersectionObserver(p=>{for(let m of p)o.get(m.target)?.setVisible(m.isIntersecting)}),a=new MutationObserver(p=>{s(new Set(p.map(m=>m.target)))});a.observe(document.documentElement,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"],subtree:!0});let l=new ResizeObserver(p=>{let m=p.map(c=>o.get(c.target)?.readResize());for(let c of m)c?.()});function d(p){p.propertyName===\"color\"&&p.target instanceof Node&&s(new Set([p.target]))}function u(){s(new Set([document.documentElement]))}return document.addEventListener(\"transitionend\",d,!0),e.addEventListener(\"change\",n),document.addEventListener(\"visibilitychange\",n),window.addEventListener(\"resize\",u),{motion:e,watch(p,m){o.set(p,m),r?.observe(p),l.observe(p)},unwatch(p,m){if(o.get(p)===m){if(o.delete(p),o.size>0){r?.unobserve(p),l.unobserve(p);return}r?.disconnect(),a.disconnect(),l.disconnect(),document.removeEventListener(\"transitionend\",d,!0),e.removeEventListener(\"change\",n),document.removeEventListener(\"visibilitychange\",n),window.removeEventListener(\"resize\",u),t()}}}}var xt;function Ne(){let t=new Set,o=0;function e(s){o=0;for(let n of[...t])n(s)||t.delete(n);t.size>0&&o===0&&(o=requestAnimationFrame(e))}return{run(s){t.add(s),o===0&&(o=requestAnimationFrame(e))},stop(s){t.delete(s),!(t.size>0||o===0)&&(cancelAnimationFrame(o),o=0)}}}var yt=Ne(),Be=4;function Le(){return xt??=ze(()=>{xt=void 0}),xt}var Ge=.1;function Ht(t,o){let{form:e,presence:s=\"plain\"}=o,n=t.getContext(\"2d\");if(!n)return{destroy(){},setPaused(P){},setState(P){}};let r=Le(),{motion:a}=r,l=o.paused??!1,d=!0,u=!1,p=.6,m=0,c=0,h=o.state??\"idle\",M=o.motion??\"status\",x=null,i=0,S=1,y=o.size,b=getComputedStyle(t).color,A=[b],v=[b],D=\"\",g=X(),f={waiting:b,blocked:b};function w(){let P=t.getBoundingClientRect(),V=Math.min(P.width,P.height);return V>0?V:o.size}function O(){!n||u||!t.isConnected||(n.setTransform(S,0,0,S,0,0),Fe(n,{form:e,size:y,seconds:p,color:b,state:h,age:m,reduced:a.matches,breath:a.matches?Gt(h,c):1,presence:s,motion:M,celebrationColors:A,stripeColors:v,statusColors:f,timing:g}))}function E(){return u||!t.isConnected||!d||document.hidden||l?!1:a.matches?M===\"status\"&&(h===\"thinking\"||h===\"working\"):M===\"ambient\"?!0:!(h===\"blocked\"&&m>=g.blockedDuration)}function k(P){if(!E())return!1;if(x!==null){let F=Math.min((P-x)/1e3,Ge);a.matches?c+=F:(p+=F*(M===\"ambient\"?ht(e):Lt(h,e,m,g)),M===\"status\"&&(m+=F))}x=P;let V=Kt(h,m,M,g)===\"idle\"?gt.resting:gt.busy;return(P-i>=1e3/V-Be||!E())&&(O(),i=P),E()}function T(){x=null,O(),E()?yt.run(k):yt.stop(k)}function C(P){let V=jt.get(P);if(V)return V;let F=document.createElement(\"span\");F.hidden=!0,F.style.color=P,(t.parentElement??document.body).append(F);let G=getComputedStyle(F).color;return F.remove(),G?(jt.set(P,G),G):b}function R(){let P=getComputedStyle(t),V=new Map(ke.map(G=>[G,P.getPropertyValue(G).trim()]));return{key:[window.devicePixelRatio||1,P.color,...V.values()].join(\"|\"),color:P.color,tokens:V,timing:X(P)}}function I(P){if(u||!t.isConnected)return;y=P;let V=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));t.width=V,t.height=V,S=V/y,T()}function B(P,V){D=P.key,b=P.color,g=P.timing,f={waiting:C(P.tokens.get(vt.waiting)||b),blocked:C(P.tokens.get(vt.blocked)||b)},A=qt.map(F=>C(`color-mix(in oklch, ${P.tokens.get(F)||b} 75%, white)`)),v=(Ee[e]??[]).map(F=>F&&P.tokens.get(F)||b),I(V)}function L(){if(u||!t.isConnected)return;let P=w();return Math.abs(P-y)>=.5?()=>I(P):void 0}function N(){if(u||!t.isConnected)return;let P=R();if(P.key===D)return L();let V=w();return()=>B(P,V)}let _={readChange:N,readResize:L,setVisible(P){d=P,T()},play:T};return r.watch(t,_),N()?.(),{setState(P){h=P,m=0,c=0,T()},setPaused(P){l=P,T()},destroy(){u=!0,yt.stop(k),r.unwatch(t,_)}}}for(let t of document.querySelectorAll(\"canvas[data-agent-orb]\"))Ht(t,{form:t.dataset.agentOrb,size:Number(t.dataset.size),state:t.dataset.state??\"idle\"});})();\n";
1
+ export const agentOrbScript = "\"use strict\";(()=>{function et(t,o,e){return t+(o-t)*e}function Dt(t){return t-Math.floor(t)}function ot(t,o){let e=Math.floor(t),s=Math.floor(o),n=t-e,r=o-s;n=n*n*(3-2*n),r=r*r*(3-2*r);let a=W(e,s),p=W(e+1,s),d=W(e,s+1),m=W(e+1,s+1);return a+(p-a)*n+(d-a)*r+(a-p-d+m)*n*r}function W(t,o){let e=Math.sin(t*12.9898+o*78.233)*43758.5453;return e-Math.floor(e)}function st(t,o){let e=Math.PI*(3-Math.sqrt(5)),s=1-2*(t+.5)/o,n=Math.sqrt(1-s*s),r=t*e;return[n*Math.cos(r),s,n*Math.sin(r)]}function Xt(t,o){return Math.atan2(Math.sin(t-o),Math.cos(t-o))}function q(t,o,e,s,n){let r=Math.sin(o),a=Math.cos(o),p=Math.sin(t),d=Math.cos(t);return(m,f,h)=>{let c=m*d+h*p,u=-m*p+h*d,M=f*a-u*r,x=f*r+u*a;return[e+c*n,s-M*n,x]}}function Pt(t,o,e,s){if(!s){let r=Math.round((e?1-t:t)*255);return`rgba(${r},${r},${r},${o})`}let n=r=>Math.round(e?r*(1-t):r+(255-r)*t);return`rgba(${n(s.r)},${n(s.g)},${n(s.b)},${o})`}function Et(t,o,e,s=.3,n){for(let r of o){let a=r.a??1,p=Math.min(1,Math.max(0,r.white));t.fillStyle=Pt(p,a,e,n),t.beginPath(),t.arc(r.x,r.y,r.r,0,Math.PI*2),t.fill()}}function kt(t,o,e,s){for(let n of o){let r=n.a??1,a=Math.min(1,Math.max(0,n.white));t.strokeStyle=Pt(a,r,e,s),t.lineWidth=n.w,t.beginPath(),t.moveTo(n.x1,n.y1),t.lineTo(n.x2,n.y2),t.stroke()}}function j(t,o,e=.3){let s=[];for(let n of t)(n.a??1)<.02||(n.r=Math.max(e,n.r),s.push(n));return s.sort((n,r)=>n.z-r.z),{dots:s,lines:o.filter(n=>(n.a??1)>=.02)}}function Tt(t,o,e,s){o.lines.length&&kt(t,o.lines,e,s),Et(t,o.dots,e,.3,s)}function K(t,o){return(t/300)**o}var te=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],ee=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],oe=[\"iconD\"],ne=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function re(t,o){let e={...t},s=new Set,n=Math.sqrt(o);for(let[r,a]of te){let p=e[r],d=e[a];p!=null&&d!=null&&!s.has(r)&&!s.has(a)&&(e[r]=Math.max(2,Math.round(p*n)),e[a]=Math.max(2,Math.round(d*n)),s.add(r),s.add(a))}for(let r of ee){let a=e[r];a!=null&&a!==0&&!s.has(r)&&(e[r]=Math.max(1,Math.round(a*o)))}for(let r of oe){let a=e[r];a!=null&&(e[r]=Math.max(.02,a*o))}return e}function se(t,o){let e={...t};for(let s of ne){let n=e[s];n!=null&&(e[s]=n*o)}return e.rSizeMul=(e.rSizeMul??1)*o,e}var ae={globe:{latRings:17,lonDensity:44,rBase:.6,rDepth:1.7,rBoost:1,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},orbits:{orbitN:12,ghostN:40,ghostR:.9,ghostA:.5,particles:3,partR:1.2,partRDepth:1.6,rsPow:.6,rMin:.3},rubik:{latRings:15,lonDensity:40,moveCount:14,rBase:.6,rDepth:1.7,rActive:.3,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},wave:{rings:15,lonDensity:40,rBase:.6,rDepth:1.7,rsPow:.6,rMin:.3},web:{nodeN:30,thr:.72,signals:5,nodeR:1.4,nodeRDepth:1.8,lineW:.8,rsPow:.6,rMin:.3},braid:{strandN:52,turns:3,ghostN:150,rBase:1.2,rDepth:1.8,rsPow:.6,rMin:.3},ribbon:{lanes:5,segs:88,ghostN:150,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},ring:{lanes:5,segs:88,ghostN:0,faceOn:1,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},morph:{rDot:.021,iconD:1,rMin:.25}},ie=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.76,a=q(o*.4,.3,s,n,1),p=K(t,e.rsPow??.6),d=[],m=e.ghostN??150;for(let c=0;c<m;c++){let u=st(c,m),[M,x,i]=a(u[0]*r,u[1]*r,u[2]*r),y=(i/r+1)/2;d.push({x:M,y:x,z:i,r:.8*p,white:.78,a:.1+.22*y})}let f=e.strandN??52,h=e.turns??3;for(let c=0;c<3;c++){let u=c/3*2*Math.PI;for(let M=0;M<f;M++){let x=(Dt(M/f+o*.045)*2-1)*.96,i=Math.sqrt(Math.max(0,1-x*x)),y=Math.min(1,(1-Math.abs(x))/.1),v=x*Math.PI*h+u,b=1+.075*Math.sin(x*Math.PI*h*2+u*2+o*.8),O=i*r*b,[w,A,g]=a(Math.cos(v)*O,x*r*b,Math.sin(v)*O),l=(g/r+1)/2;d.push({x:w,y:A,z:g,r:((e.rBase??1.2)+(e.rDepth??1.8)*l)*p,white:.55-.45*l,a:y*(.45+.55*l)})}}return j(d,[],e.rMin)};function ce(t,o,e,s){let n=2*o*e+s,r=t%n,a=new Array(o).fill(0),p=-1;if(r<2*o*e){let d=Math.floor(r/e),m=(r-d*e)/e,h=1-(1-Math.min(1,m/.7))**3;if(d<o){for(let c=0;c<d;c++)a[c]=1;a[d]=h,p=d}else{let c=2*o-1-d;for(let u=0;u<c;u++)a[u]=1;a[c]=1-h,p=c}}return{amount:a,active:p}}function le(t,o,e){let[s,n,r]=t,a=!1;for(let p=0;p<o.length;p++){if(e.amount[p]<=0)continue;let d=o[p],m=d.axis===0?s:d.axis===1?n:r;if(m<d.lo||m>=d.hi)continue;p===e.active&&(a=!0);let f=d.ang*e.amount[p],h=Math.cos(f),c=Math.sin(f);if(d.axis===0){let u=n*h-r*c;r=n*c+r*h,n=u}else if(d.axis===1){let u=s*h+r*c;r=-s*c+r*h,s=u}else{let u=s*h-n*c;n=s*c+n*h,s=u}}return[s,n,r,a]}function pe(t){let o=[];for(let e=0;e<t;e++){let s=Math.min(2,Math.floor(W(e,2.3)*3)),n=-1+.5*Math.min(3,Math.floor(W(e,5.9)*4)),r=W(e,7.7)<.5?1:-1;o.push({axis:s,lo:n,hi:n+.5,ang:r*Math.PI/2})}return o}var fe=(t,o,e)=>{let n=t/2,r=t/2,a=t/2*.82,p=.4+.06*Math.sin(o*.35),d=q(o*.5,p,n,r,a),m=o*(.5+(1.7-.5)*(e.scanMul??1)),f=K(t,e.rsPow??.6),h=e.dimBase??1,c=[],u=e.latRings??17,M=e.lonDensity??44;for(let x=0;x<=u;x++){let i=-Math.PI/2+x/u*Math.PI,y=Math.cos(i),v=Math.sin(i),b=Math.max(1,Math.round(Math.abs(y)*M));for(let O=0;O<b;O++){let w=O/b*2*Math.PI,[A,g,l]=d(y*Math.cos(w),v,y*Math.sin(w)),S=(l+1)/2,D=Xt(w+o*.5,m),E=Math.exp(-(D*D)/.18)*Math.max(0,l);c.push({x:A,y:g,z:l,r:((e.rBase??.6)+(e.rDepth??1.7)*S+(e.rBoost??1)*E)*f,white:(e.inkFar??.62)-(e.inkSpan??.54)*S,a:h+(1-h)*Math.min(1,E)})}}return j(c,[],e.rMin)},ue=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.55,.35+.1*Math.sin(o*.9),s,n,r),p=K(t,e.rsPow??.6),d=e.moveCount??14,m=pe(d),f=ce(o,d,.42,1.2),h=[],c=e.latRings??15,u=e.lonDensity??40;for(let M=0;M<=c;M++){let x=-Math.PI/2+M/c*Math.PI,i=Math.cos(x),y=Math.sin(x),v=Math.max(1,Math.round(Math.abs(i)*u));for(let b=0;b<v;b++){let O=b/v*2*Math.PI,[w,A,g,l]=le([i*Math.cos(O),y,i*Math.sin(O)],m,f),[S,D,E]=a(w,A,g),k=(E+1)/2;h.push({x:S,y:D,z:E,r:((e.rBase??.6)+(e.rDepth??1.7)*k+(l?e.rActive??.3:0))*p,white:(e.inkFar??.62)-(e.inkSpan??.54)*k-(l?.14:0)})}}return j(h,[],e.rMin)},me=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.874,a=q(o*.18,.38,s,n,1),p=K(t,e.rsPow??.6),d=[],m=e.rings??15,f=e.lonDensity??40;for(let h=0;h<=m;h++){let c=-Math.PI/2+h/m*Math.PI,u=Math.cos(c),M=Math.sin(c),x=.62*Math.sin(o*2.1-h*.52)+.38*Math.sin(o*1.27+h*.83),i=r*(.88+.105*x),y=Math.max(1,Math.round(Math.abs(u)*f));for(let v=0;v<y;v++){let b=v/y*2*Math.PI,[O,w,A]=a(u*Math.cos(b)*i,M*i,u*Math.sin(b)*i),g=(A/r+1)/2,l=Math.max(0,x);d.push({x:O,y:w,z:A,r:((e.rBase??.6)+(e.rDepth??1.7)*g)*(1+.4*l)*p,white:.66-.56*g-.1*l})}}return j(d,[],e.rMin)};function de(t){return t*t*(3-2*t)}function Rt(t){let o=t.length,e=[],s=0;for(let n=0;n<o;n++){let r=t[n],a=t[(n+1)%o],p=Math.hypot(a[0]-r[0],a[1]-r[1]);e.push(p),s+=p}return n=>{let r=n*s,a=0;for(;r>e[a]&&a<o-1;)r-=e[a],a++;let p=t[a],d=t[(a+1)%o],m=e[a]?Math.min(1,r/e[a]):0;return[p[0]+(d[0]-p[0])*m,p[1]+(d[1]-p[1])*m]}}var he=t=>{let o=-Math.PI/2+t*2*Math.PI;return[Math.cos(o)*.24,Math.sin(o)*.24]},ge=Rt([[0,-.26],[.24,.16],[-.24,.16]]),Me=Rt([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),nt=[he,ge,Me];function be(t){return Math.max(6,Math.round(34*t))}var rt=1.4,Ct=.9,Z=rt+Ct,xe=(t,o,e)=>{let s=nt.length,n=o%(Z*s),r=e.shape!=null&&e.shape>=0&&e.shape<s?Math.floor(e.shape):-1,a=r>=0?r:Math.floor(n/Z),p=r>=0?o%Z:n-a*Z,d=r>=0?0:p>rt?de((p-rt)/Ct):0,m=e.spread??1,f=nt[a],h=r>=0?f:nt[(a+1)%s],c=160,u=[];for(let g=0;g<c;g++){let l=g/c,S=f(l),D=h(l);u.push([(S[0]+(D[0]-S[0])*d)*m,(S[1]+(D[1]-S[1])*d)*m])}let M=[],x=0;for(let g=0;g<c;g++){let l=u[g],S=u[(g+1)%c],D=Math.hypot(S[0]-l[0],S[1]-l[1]);M.push(D),x+=D}let i=be(e.iconD??1),y=(e.rDot??.021)*1.35*m,v=1+.02*Math.sin(p*3.1),b=[],O=t/2,w=0,A=0;for(let g=0;g<i;g++){let l=g/i*x;for(;A+M[w]<l&&w<c-1;)A+=M[w],w++;let S=u[w],D=u[(w+1)%c],E=M[w]?Math.min(1,(l-A)/M[w]):0,k=(S[0]+(D[0]-S[0])*E)*v,T=(S[1]+(D[1]-S[1])*E)*v;b.push({x:O+k*t,y:O+T*t,z:0,r:Math.max(.35,y*t),white:.1})}return j(b,[],e.rMin)},ye=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.12,.3,s,n,1),p=K(t,e.rsPow??.6),d=[],m=e.orbitN??12,f=e.ghostN??40,h=e.particles??3;for(let c=0;c<m;c++){let u=W(c,1.7),M=W(c,5.2),x=W(c,8.9),i=r*(.45+.52*u),y=u*2*Math.PI,v=Math.acos(2*M-1),b=Math.sin(v)*Math.cos(y),O=Math.cos(v),w=Math.sin(v)*Math.sin(y),A=-O,g=b,l=0,S=Math.max(1e-6,Math.sqrt(A*A+g*g));A/=S,g/=S;let D=O*l-w*g,E=w*A-b*l,k=b*g-O*A,T=(.25+.55*x)*(x>.5?1:-1);for(let C=0;C<f;C++){let R=C/f*2*Math.PI,[I,B,L]=a((A*Math.cos(R)+D*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(l*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:(e.ghostR??.9)*p,white:.72,a:(e.ghostA??.5)*(.4+.6*N)})}for(let C=0;C<h;C++){let R=o*T+C/h*2*Math.PI+M*6,[I,B,L]=a((A*Math.cos(R)+D*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(l*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:((e.partR??1.2)+(e.partRDepth??1.6)*N)*p,white:.3-.22*N})}}return j(d,[],e.rMin)},At=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.78,a=e.spin??1,p=.3,d=q(o*.1*a,p,s,n,1),m=K(t,e.rsPow??.6),f=[],h=e.ghostN??150;for(let k=0;k<h;k++){let T=st(k,h),[C,R,I]=d(T[0]*r,T[1]*r,T[2]*r),B=(I/r+1)/2;f.push({x:C,y:R,z:I,r:.8*m,white:.78,a:.1+.22*B})}let c=o*.24*a,u=e.faceOn?-p:.55+.3*Math.sin(o*.18)*a,M=Math.cos(c),x=0,i=Math.sin(c),y=-i*Math.sin(u),v=Math.cos(u),b=M*Math.sin(u),O=x*b-i*v,w=i*y-M*b,A=M*v-x*y,g=.23*(e.wobMul??1),l=e.faceOn?r/(1+.85*g):r,S=e.lanes??5,D=e.segs??88,E=Math.max(1,Math.round(S*(e.bandMul??1)));for(let k=0;k<E;k++){let T=(k-(E-1)/2)*.075,C=Math.abs(k-(E-1)/2)/Math.max(1,(E-1)/2);for(let R=0;R<D;R++){let I=R/D*2*Math.PI,B=(.16*Math.sin(I*3-o*1.7+k*.22)+.07*Math.sin(I*5+o*1.1))*(e.wobMul??1),L=e.faceOn?1+B:1,N=e.faceOn?T:T+B,_=M*Math.cos(I)+y*Math.sin(I)+O*N,P=x*Math.cos(I)+v*Math.sin(I)+w*N,V=i*Math.cos(I)+b*Math.sin(I)+A*N,F=Math.sqrt(_*_+P*P+V*V),G=l*L,[Jt,Qt,wt]=d(_/F*G,P/F*G,V/F*G),tt=(wt/r+1)/2;f.push({x:Jt,y:Qt,z:wt,r:((e.rBase??1.1)+(e.rDepth??1.7)*tt)*(1-.25*C)*m,white:.52-.44*tt+.18*C,a:.4+.6*tt})}}return j(f,[],e.rMin)},ve=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.8*(e.spread??1),a=q(o*.12,.32,s,n,r),p=K(t,e.rsPow??.6),d=e.nodeN??30,m=e.thr??.72,f=e.nodeR??1.4,h=e.nodeRDepth??1.8,c=[];for(let i=0;i<d;i++){let y=st(i,d),v=y[0]+.3*(ot(i*.31+9,o*.24)-.5)*2,b=y[1]+.3*(ot(i*.53+27,o*.21)-.5)*2,O=y[2]+.3*(ot(i*.77+55,o*.27)-.5)*2,w=Math.sqrt(v*v+b*b+O*O);c.push([v/w,b/w,O/w])}let u=[],M=[];for(let i=0;i<d;i++)for(let y=i+1;y<d;y++){let v=c[i][0]-c[y][0],b=c[i][1]-c[y][1],O=c[i][2]-c[y][2],w=Math.sqrt(v*v+b*b+O*O);if(w>=m)continue;let[A,g,l]=a(c[i][0],c[i][1],c[i][2]),[S,D,E]=a(c[y][0],c[y][1],c[y][2]),k=((l+E)/2+1)/2;u.push({x1:A,y1:g,x2:S,y2:D,white:.42,a:(1-w/m)*(.3+.55*k),w:Math.max(.6,(e.lineW??.8)*p)})}for(let i=0;i<d;i++){let[y,v,b]=a(c[i][0],c[i][1],c[i][2]),O=(b+1)/2,w=1+.25*Math.sin(o*1.4+i*2.7);M.push({x:y,y:v,z:b,r:(f+h*O)*w*p,white:.55-.45*O})}let x=e.signals??5;for(let i=0;i<x;i++){let y=Math.floor(o*.55+i*7.31),v=Math.floor(W(y,i*3.1+1.7)*d),b=Math.floor(W(y,i*5.7+4.2)*d);if(v===b)continue;let O=Dt(o*.55+i*7.31),w=et(c[v][0],c[b][0],O),A=et(c[v][1],c[b][1],O),g=et(c[v][2],c[b][2],O),l=Math.max(1e-6,Math.sqrt(w*w+A*A+g*g)),[S,D,E]=a(w/l,A/l,g/l),k=(E+1)/2;M.push({x:S,y:D,z:E,r:(f*1.5+h*k)*p,white:.05,a:.5+.5*k})}return j(M,u,e.rMin)},U={orbits:ye,globe:fe,rubik:ue,wave:me,web:ve,braid:ie,ribbon:At,ring:At,morph:xe},Se=Object.fromEntries(Object.entries(U).map(([t,o])=>[t,(e,s,n,r,a)=>Tt(e,o(s,n,a),r)])),Vt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},we={orbits:{64:{speed:1.885,count:1,size:1},32:{speed:2.9072,count:.4251,size:1.6849},20:{speed:3.9,count:.238,size:2.4}},globe:{64:{speed:2.015,count:.42,size:1.15,extra:{scanMul:4.08,dimBase:.45}},32:{speed:2.3803,count:.1839,size:1.4769,extra:{scanMul:4.2301,dimBase:.45}},20:{speed:2.665,count:.105,size:1.75,extra:{scanMul:4.335,dimBase:.45}}},rubik:{64:{speed:1.82,count:.35,size:1.05},32:{speed:1.8964,count:.1537,size:1.4951},20:{speed:1.95,count:.088,size:1.9}},wave:{64:{speed:4.388,count:.341,size:1},32:{speed:4.1512,count:.169,size:1.3232},20:{speed:3.998,count:.105,size:1.6}},web:{64:{speed:3.315,count:1.35,size:.95},32:{speed:5.0104,count:.4942,size:1.2571},20:{speed:6.63,count:.25,size:1.52}},braid:{64:{speed:1.625,count:.5,size:1},32:{speed:2.2234,count:.2056,size:1.2011},20:{speed:2.75,count:.1125,size:1.36}},ribbon:{64:{speed:2.34,count:.25,size:.85,extra:{spin:0,bandMul:3.9,wobMul:1}},32:{speed:2.7776,count:.0969,size:.9766,extra:{spin:0,bandMul:4.49,wobMul:1}},20:{speed:3.12,count:.051,size:1.073,extra:{spin:0,bandMul:4.94,wobMul:1}}},ring:{64:{speed:3.24,count:.25,size:.956,extra:{spin:0,bandMul:3.627,wobMul:.368}},32:{speed:3.5517,count:.0678,size:1.31,extra:{spin:0,bandMul:3.8265,wobMul:.4751}},20:{speed:3.78,count:.028,size:1.622,extra:{spin:0,bandMul:3.968,wobMul:.565}}},morph:{64:{speed:2.405,count:.702,size:.395,extra:{spread:1.45}},32:{speed:2.2057,count:.5937,size:.6916,extra:{spread:1.45}},20:{speed:2.08,count:.53,size:1.011,extra:{spread:1.45}}}},Ot=new Map;function at(t,o){let e=`${t}-${o}`,s=Ot.get(e);if(s)return s;let n=Vt[t],r=we[n][o],a={...ae[n]};r.count!==1&&(a=re(a,r.count)),r.size!==1&&(a=se(a,r.size)),r.extra&&(a={...a,...r.extra});let p={mode:n,speed:r.speed,opts:a};return Ot.set(e,p),p}var it=(t,o,e)=>e>o?o:e<t?t:e;var ct=()=>{};var H=t=>t*1e3,$=t=>t/1e3;var It=(t,o,e=10)=>{let s=\"\",n=Math.max(Math.round(o/e),2);for(let r=0;r<n;r++)s+=Math.round(t(r/(n-1))*1e4)/1e4+\", \";return`linear(${s.substring(0,s.length-2)})`};function J(t,o=50,e=2e4,s){let n=0,r=t.next(n);for(s?.push(r.value);!r.done&&n<e;)n+=o,r=t.next(n),s?.push(r.value);return n>=e?1/0:n}function Ft(t,o=100,e){let{keyframes:s,velocity:n}=t,r=s&&s[s.length-1]-s[0],a=e({...t,velocity:n&&r?n*o/r:n,keyframes:[0,o]}),p=Math.min(J(a),2e4);return{type:\"keyframes\",ease:d=>a.next(p*d).value/o,duration:$(p)}}var z={stiffness:100,damping:10,mass:1,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05},zt=t=>t<0?1/Math.max(1+t,z.minDamping):Math.max(1-t,z.minDamping);function Nt(t,o){if(!(t>1))return 1;let e=Math.sqrt(t*t-1),s=t-e,n=t+e,r=2*e*Math.exp(-o)*(1+o);return Bt(a=>n*Math.exp(-s*a)-s*Math.exp(-n*a)-r,a=>Math.exp(-n*a)-Math.exp(-s*a),o)/o}function ut(t,o){return t*Math.sqrt(1-o*o)}var Ae=12;function Bt(t,o,e){let s=e;for(let n=1;n<Ae;n++)s=s-t(s)/o(s);return s}var pt=.001;function Oe({duration:t=z.duration,bounce:o=z.bounce}){let e,s;ct(t<=H(z.maxDuration),\"Spring duration must be 10 seconds or less\",\"spring-duration-limit\");let n=zt(o);t=it(z.minDuration,z.maxDuration,$(t)),n<1?(e=m=>{let f=m*n,h=f*t,c=ut(m,n),u=Math.exp(-h);return pt-f/c*u},s=m=>{let h=m*n*t,c=n*n*m*m*t,u=Math.exp(-h),M=ut(m*m,n);return(-e(m)+pt>0?-1:1)*-c*u/M}):(e=m=>{let f=Math.exp(-m*t),h=m*t+1;return-pt+f*h},s=m=>{let f=Math.exp(-m*t),h=-m*(t*t);return f*h});let r=5/t,a=Bt(e,s,r),p=a*Nt(n,a*t),d=p*p;return{stiffness:d,damping:n*2*Math.sqrt(d),duration:H(t)}}var mt=(t,o)=>(o?t>=0:t>0)&&t<1/0;function ft(t,o){if(mt(t,o))return t}function De(t){let o=ft(t.stiffness),e=ft(t.damping,!0),s=ft(t.mass),n={...t,stiffness:o??z.stiffness,damping:e??z.damping,mass:s??z.mass,isResolvedFromDuration:!1,isTimeDefined:(o??e??s)===void 0&&(t.duration!==void 0||t.bounce!==void 0)};if(n.isTimeDefined){if(t.visualDuration){let r=zt(t.bounce||0),a=2*Math.PI/(t.visualDuration*1.2)*Nt(r,2*Math.PI/1.2);n.stiffness=a*a,n.damping=2*r*Math.sqrt(n.stiffness)}else Object.assign(n,Oe(n)),n.isResolvedFromDuration=!0;(!mt(n.stiffness)||!mt(n.damping,!0))&&(n.stiffness=z.stiffness,n.damping=z.damping)}return n}function Y(t=z.visualDuration,o=z.bounce){let e=typeof t!=\"object\"?{visualDuration:t,keyframes:[0,1],bounce:o}:t,s=e.keyframes[0],n=e.keyframes[e.keyframes.length-1],r={done:!1,value:s},{stiffness:a,damping:p,mass:d,duration:m,isResolvedFromDuration:f,isTimeDefined:h}=De({...e}),c=g=>h?0:-$(g),u=p/(2*Math.sqrt(a*d)),M=$(Math.sqrt(a/d)),x=u*M,i={target:n,delta:n-s,velocity:c(e.velocity||0)||0,restSpeed:0,restDelta:0},y=()=>{let g=Math.abs(i.delta)<5;i.restSpeed=e.restSpeed||(g?z.restSpeed.granular:z.restSpeed.default),i.restDelta=e.restDelta||(g?z.restDelta.granular:z.restDelta.default)};y();let v,b,O;if(u<1){let g=ut(M,u),l={A:0,sinC:0,cosC:0,t:-1,env:0,sin:0,cos:0};O=()=>{l.A=(i.velocity+x*i.delta)/g,l.sinC=x*l.A+i.delta*g,l.cosC=x*i.delta-l.A*g};let S=D=>{D!==l.t&&(l.t=D,l.env=Math.exp(-x*D),l.sin=Math.sin(g*D),l.cos=Math.cos(g*D))};v=D=>(S(D),i.target-l.env*(l.A*l.sin+i.delta*l.cos)),b=D=>(S(D),l.env*(l.sinC*l.sin+l.cosC*l.cos))}else if(u===1){v=l=>i.target-Math.exp(-M*l)*(i.delta+(i.velocity+M*i.delta)*l);let g={C:0};O=()=>{g.C=i.velocity+M*i.delta},b=l=>Math.exp(-M*l)*(M*g.C*l-i.velocity)}else{let g=M*Math.sqrt(u*u-1),l=x-g,S=x+g,D=h?1/0:300/g,E=(T,C)=>Math.exp(C>D?-T*D-x*(C-D):-T*C),k={S:0,F:0};O=()=>{let T=(i.velocity+x*i.delta)/g;k.S=(i.delta+T)/2,k.F=(i.delta-T)/2},v=T=>i.target-k.S*E(l,T)-k.F*E(S,T),b=T=>l*k.S*E(l,T)+S*k.F*E(S,T)}O();let w=f&&m||null,A={calculatedDuration:w,retarget:(g,l)=>{i.target=g[g.length-1],i.delta=i.target-g[0],i.velocity=c(l),e.restSpeed&&e.restDelta||y(),A.calculatedDuration=w,r.done=!1,O()},velocity:g=>H(b(g)),next:g=>{let l=v(g);if(f)r.done=g>=m;else{let S=H(b(g));r.done=Math.abs(S)<=i.restSpeed&&Math.abs(i.target-l)<=i.restDelta}return r.value=r.done?i.target:l,r},toString:()=>{let g=Math.min(J(A),2e4),l=It(S=>A.next(g*S).value,g,30);return g+\"ms \"+l},toTransition:()=>{}};return A}Y.applyToOptions=t=>{let o=Ft(t,100,Y);return t.ease=o.ease,t.duration=H(o.duration),t.type=\"keyframes\",t};var Pe=[\"idle\",\"working\",\"waiting\",\"blocked\",\"thinking\",\"done\"],Lt=t=>Pe.some(o=>o===t),Ee={ribbon:{speed:.55},nadia:{speed:.55},sofia:{speed:.9},lattice:{speed:.28},orbit:{speed:.7},globe:{speed:.35},network:{speed:.55},braid:{speed:.65},morph:{speed:.9}};function ht(t){return Ee[t].speed}function Gt(t,o,e=0,s=Mt){return{idle:.864,working:1,thinking:.55,waiting:0,blocked:0,done:e>=s.doneDuration?.72:.65}[t]*ht(o)}var gt={resting:15,busy:30},ke=1.6;function Wt(t,o){return t!==\"thinking\"&&t!==\"working\"?1:1-.55*((1-Math.cos(o*Math.PI*2/ke))/2)}function X(t){let o=(p,d)=>{let m=t?.getPropertyValue(`--nc-duration-${p}`).trim()??\"\";return m?Number.parseFloat(m)*(m.endsWith(\"ms\")?.001:1):d},e=o(\"wait\",1.6),s=o(\"confirm\",.18),n=o(\"transition\",.24),r=p=>Math.round(e*p*1e3)/1e3,a=Y({keyframes:[0,1],duration:n*2e3,bounce:.1});return{wait:e,confirm:s,transition:n,doneDuration:r(3),blockedDuration:r(1.25),gestureAge:p=>p*n*2/e,settle:(p,d=0)=>p<d?0:a.next((p-d)*1e3).value}}var Mt=X(),Q=t=>Math.min(1,Math.max(0,t)),dt=t=>{let o=Q(t);return o*o*(3-2*o)};function jt(t,o,e=Mt,s=!1){let n=.82,r=.82,a=0,p=0,d=0;if(t===\"idle\"){let m=Math.sin((s?.6:o)*Math.PI*2/(e.wait*4));n+=m*.01,r+=m*.01,a=-m*.004}else if(!s&&t===\"waiting\"){let m=e.gestureAge(o),f=Math.sin(o*Math.PI*2/(e.wait*3)),h=Math.sin(Q(m/e.confirm)*Math.PI),c=e.settle(m,e.confirm*.55),u=1-h*.018+f*.006;n*=u,r*=u,a=-c*.018,d=-c*4.5*Math.PI/180}else if(!s&&t===\"blocked\"){let m=e.gestureAge(o),f=e.confirm*.85,h=dt(m/f)*(1-e.settle(m,f));n*=1-h*.018,r*=1+h*.012,p=-h*.034,a=h*.014,d=-h*4*Math.PI/180}else if(!s&&t===\"done\"){let m=o*1.3/(e.wait*2.25);if(m<.18){let f=Math.sin(Math.PI*m/.18);n+=.03*f,r-=.04*f,a=.012*f}else if(m<1.3){let f=(m-.18)/1.12;a=-.07*Math.sin(Math.PI*f),n+=.025*Math.sin(Math.PI*f),r+=.035*Math.sin(Math.PI*f),d=Math.sin(f*Math.PI*2)*.07}}return{sx:n,sy:r,x:p,y:a,rotation:d}}function Te(t,o,e,s,n,r,a){let p=a.gestureAge(s),d=n?1:dt((p-a.confirm*.35)/a.confirm),m=n?1:a.settle(p,a.confirm*.35),f=Math.max(7,Math.min(36,e*.26));if(t.save(),t.fillStyle=r,t.strokeStyle=r,t.globalAlpha=d*.95,t.translate(e/2,e/2),o===\"waiting\"){let h=n?0:a.settle(p,a.confirm*.55),c=n?0:Math.sin(s*Math.PI*2/(a.wait*3));t.translate(0,(1-m)*-.12*f),t.rotate(-h*2*Math.PI/180);let u=.94+m*.06;t.scale(u,u),t.scale(f/24,f/24);for(let[M,x]of[14,5].entries()){let i=n?1:a.settle(p,a.confirm*(M===0?.65:.2)),y=M===0?1:-1;t.save(),t.globalAlpha=d*.95*Q(i)*(n?1:.96+c*.04),t.translate(x-9.5+y*(1-i)*1.45*5,(1-i)*-.24*18),t.rotate(y*(1-i)*14*Math.PI/180),t.scale(1,1+(1-i)*.12),t.beginPath(),t.roundRect(-2.5,-9,5,18,1),t.fill(),t.restore()}}else{t.translate(0,(1-m)*-.1*f),t.rotate((1-m)*-12*Math.PI/180);let h=1+(1-m)*.18;t.scale(h,h),t.scale(f/24,f/24),t.lineWidth=Math.max(1.6,24/f),t.lineCap=\"round\",t.beginPath(),t.arc(0,0,10,0,Math.PI*2),t.stroke();let c=n?1:dt((p-a.confirm*.8)/a.confirm);if(t.beginPath(),t.moveTo(-7.071,-7.071),t.lineTo(-7.071+14.141*c,-7.071+14.142*c),t.stroke(),!n&&e>=40){let u=Q((p-a.confirm*.85)/a.transition);t.globalAlpha*=Math.sin(u*Math.PI)*.65,t.lineWidth=1.4*24/f;for(let M of[-1,1]){t.beginPath();let x=M*(14.52+u*5.472),i=M*(10.34+u*1.68);t.moveTo(x-1.612,i-1.612),t.lineTo(x+1.612,i+1.612),t.stroke()}}}t.restore()}function bt(t,o,e,s,n,r,a,p=1,d=Mt,m=r[0]??\"currentColor\"){if(o===\"waiting\"||o===\"blocked\"){a===\"front\"&&Te(t,o,e,s,n,m,d);return}if(o!==\"working\"&&o!==\"thinking\"&&o!==\"done\")return;let f=s*(o===\"done\"?3.1/d.doneDuration:o===\"working\"?7.2/(d.wait*2):3.6/(d.wait*1.5));if(t.save(),o===\"thinking\"){if(a===\"front\")for(let h=0;h<3;h++){let c=n?.5:(1+Math.cos(f*Math.PI*2/3.6-h*Math.PI*2/3))/2,u=r[h%r.length];u!==void 0&&(t.fillStyle=u),t.globalAlpha=(.65+c*.35)*p,t.beginPath(),t.arc(e*(.5+(h-1)*.09),e*.08,Math.max(1,e*(.022+c*.005)),0,Math.PI*2),t.fill()}}else if(o===\"working\"||!n&&f<3.1){let h=o===\"done\"?3:1;for(let c=0;c<h;c++){let u=o===\"done\"?(f-c*.38)/2.2:0;if(u<0||u>1)continue;let M=o===\"done\"?Math.sin(u*Math.PI):1,x=(n?.8:f*Math.PI*2/7.2)+c*2.1,i=Math.PI*1.4,y=-.38+c*.4,v=e*(.44+u*.03),b=e*(.19+u*.11),O=A=>{let g=Math.cos(A)*v,l=Math.sin(A)*b;return[e/2+g*Math.cos(y)-l*Math.sin(y),e/2+g*Math.sin(y)+l*Math.cos(y)]},w=t.createLinearGradient(e*.1,e*.7,e*.9,e*.3);r.forEach((A,g)=>w.addColorStop(g/Math.max(1,r.length-1),A)),t.strokeStyle=w,t.lineCap=\"butt\";for(let A=0;A<100;A++){let g=A/100,l=x-i+i*g,S=Math.sin(l)>=0;if(S!==(a===\"front\"))continue;let D=Math.sin(Math.PI*(.04+g*.92));t.globalAlpha=M*(S?.92:.55)*(.25+D*.75)*p,t.lineWidth=Math.max(.65,e*.027*D),t.beginPath(),t.moveTo(...O(l)),t.lineTo(...O(l+i/100)),t.stroke()}}}t.restore()}var qt={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Kt=t=>Object.hasOwn(qt,t)||t===\"nadia\"||t===\"sofia\",Re=[20,24,32,40,64,96,160],Ht=t=>Re.some(o=>o===t),Ce={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},$t=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],Ut=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],vt={waiting:\"--nc-warning-deep\",blocked:\"--nc-error\"},_t=new Map,St=[\"--nc-identity-cobalto\",\"--nc-identity-verde\",\"--nc-identity-giallo\",\"--nc-identity-arancio\",\"--nc-identity-rosso\"],Ve={nadia:$t,sofia:St},Ie=[...Ut,...[...$t,...St].filter(t=>t!==null),...Object.values(vt),\"--nc-duration-wait\",\"--nc-duration-confirm\",\"--nc-duration-transition\"];function Fe(t,o){let e=1-2*(t+.5)/o,s=Math.sqrt(1-e*e),n=t*Math.PI*(3-Math.sqrt(5));return[s*Math.cos(n),e,s*Math.sin(n)]}function ze(t,o,e){let s=t/2,n=t/2*.78,r=e.spin??1,a=q(o*.1*r,.3,s,s,1),p=K(t,e.rsPow??.6),d=[],m=e.ghostN??150;for(let S=0;S<m;S++){let[D,E,k]=Fe(S,m),[T,C,R]=a(D*n,E*n,k*n);d.push({x:T,y:C,z:R,r:.8*p,white:.78,a:.1+.22*((R/n+1)/2)})}let f=o*.24*r,h=e.faceOn?-.3:.55+.3*Math.sin(o*.18)*r,[c,u,M]=[Math.cos(f),0,Math.sin(f)],[x,i,y]=[-M*Math.sin(h),Math.cos(h),c*Math.sin(h)],[v,b,O]=[u*y-M*i,M*x-c*y,c*i-u*x],w=e.wobMul??1,A=e.faceOn?n/(1+.85*.23*w):n,g=e.segs??88,l=Math.max(1,Math.round((e.lanes??5)*(e.bandMul??1)));for(let S=0;S<l;S++){let D=(S-(l-1)/2)*.075,E=Math.abs(S-(l-1)/2)/Math.max(1,(l-1)/2);for(let k=0;k<g;k++){let T=k/g*2*Math.PI,C=(.16*Math.sin(T*3-o*1.7+S*.22)+.07*Math.sin(T*5+o*1.1))*w,R=e.faceOn?1+C:1,I=e.faceOn?D:D+C,B=c*Math.cos(T)+x*Math.sin(T)+v*I,L=u*Math.cos(T)+i*Math.sin(T)+b*I,N=M*Math.cos(T)+y*Math.sin(T)+O*I,_=Math.sqrt(B*B+L*L+N*N),[P,V,F]=a(B/_*A*R,L/_*A*R,N/_*A*R),G=(F/n+1)/2;d.push({x:P,y:V,z:F,r:((e.rBase??1.1)+(e.rDepth??1.7)*G)*(1-.25*E)*p,white:.08+.1*E,a:.55+.45*G,stripe:Math.min(3,Math.floor(S/l*4))})}}return j(d,[],e.rMin)}function Ne(t,o){let e=t.dots;for(let[s,n]of e.entries())n.stripe=Math.floor(s/e.length*o);return t}function Be(t){return t===\"nadia\"?\"ribbon\":t===\"sofia\"?\"morph\":t}function Le(t){return t<=32?20:t<=48?32:64}function Yt(t,o,e,s){return e===\"ambient\"||t===\"done\"&&o>=s.doneDuration?\"idle\":t}function Ge(t,o){let{form:e,size:s,seconds:n,color:r,state:a,age:p,reduced:d,breath:m,celebrationColors:f,stripeColors:h}=o,c=Ce[o.presence],u=at(qt[Be(e)],Le(s)),M=e===\"nadia\"?ze(s,n,u.opts):e===\"sofia\"?Ne(U[u.mode](s,n,u.opts),St.length):U[u.mode](s,n,u.opts);t.clearRect(0,0,s,s);let x=a===\"done\"&&p>=o.timing.doneDuration,i=Yt(a,p,o.motion,o.timing),y=o.motion===\"ambient\"?0:x?p-o.timing.doneDuration:p,v=jt(i,y,o.timing,d),b=x?p-o.timing.doneDuration:p,O=i===\"waiting\"||i===\"blocked\"?o.statusColors[i]:r,w=(l,S)=>{let D=(l-s/2)*v.sx,E=(S-s/2)*v.sy;return[s/2+D*Math.cos(v.rotation)-E*Math.sin(v.rotation)+v.x*s,s/2+D*Math.sin(v.rotation)+E*Math.cos(v.rotation)+v.y*s]},A=m;o.motion===\"status\"&&bt(t,i,s,b,d,f,\"back\",m,o.timing,O),t.fillStyle=r,t.strokeStyle=r;for(let l of M.lines)t.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*A*c.alpha)),t.lineWidth=l.w*c.radius,t.beginPath(),t.moveTo(...w(l.x1,l.y1)),t.lineTo(...w(l.x2,l.y2)),t.stroke();let g=M.dots;for(let l of g)t.fillStyle=l.stripe===void 0?r:h[l.stripe]??r,t.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*A*c.alpha)),t.beginPath(),t.arc(...w(l.x,l.y),l.r*c.radius,0,Math.PI*2),t.fill();t.globalAlpha=1,o.motion===\"status\"&&bt(t,i,s,b,d,f,\"front\",m,o.timing,O)}function We(t){let o=new Map,e=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function s(f){let h=u=>{for(let M=u;M;M=M.parentElement)if(f.has(M))return!0;return!1},c=[...o].flatMap(([u,M])=>h(u)?[M.readChange()]:[]);for(let u of c)u?.()}function n(){for(let f of o.values())f.play()}let r=typeof IntersectionObserver>\"u\"?void 0:new IntersectionObserver(f=>{for(let h of f)o.get(h.target)?.setVisible(h.isIntersecting)}),a=new MutationObserver(f=>{s(new Set(f.map(h=>h.target)))});a.observe(document.documentElement,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"],subtree:!0});let p=new ResizeObserver(f=>{let h=f.map(c=>o.get(c.target)?.readResize());for(let c of h)c?.()});function d(f){f.propertyName===\"color\"&&f.target instanceof Node&&s(new Set([f.target]))}function m(){s(new Set([document.documentElement]))}return document.addEventListener(\"transitionend\",d,!0),e.addEventListener(\"change\",n),document.addEventListener(\"visibilitychange\",n),window.addEventListener(\"resize\",m),{motion:e,watch(f,h){o.set(f,h),r?.observe(f),p.observe(f)},unwatch(f,h){if(o.get(f)===h){if(o.delete(f),o.size>0){r?.unobserve(f),p.unobserve(f);return}r?.disconnect(),a.disconnect(),p.disconnect(),document.removeEventListener(\"transitionend\",d,!0),e.removeEventListener(\"change\",n),document.removeEventListener(\"visibilitychange\",n),window.removeEventListener(\"resize\",m),t()}}}}var xt;function je(){let t=new Set,o=0;function e(s){o=0;for(let n of[...t])n(s)||t.delete(n);t.size>0&&o===0&&(o=requestAnimationFrame(e))}return{run(s){t.add(s),o===0&&(o=requestAnimationFrame(e))},stop(s){t.delete(s),!(t.size>0||o===0)&&(cancelAnimationFrame(o),o=0)}}}var yt=je(),_e=4;function qe(){return xt??=We(()=>{xt=void 0}),xt}var Ke=.1;function Zt(t,o){let{form:e,presence:s=\"plain\"}=o,n=t.getContext(\"2d\");if(!n)return{destroy(){},setPaused(P){},setState(P){}};let r=qe(),{motion:a}=r,p=o.paused??!1,d=!0,m=!1,f=.6,h=0,c=0,u=o.state??\"idle\",M=o.motion??\"status\",x=null,i=0,y=1,v=o.size,b=getComputedStyle(t).color,O=[b],w=[b],A=\"\",g=X(),l={waiting:b,blocked:b};function S(){let P=t.getBoundingClientRect(),V=Math.min(P.width,P.height);return V>0?V:o.size}function D(){!n||m||!t.isConnected||(n.setTransform(y,0,0,y,0,0),Ge(n,{form:e,size:v,seconds:f,color:b,state:u,age:h,reduced:a.matches,breath:a.matches?Wt(u,c):1,presence:s,motion:M,celebrationColors:O,stripeColors:w,statusColors:l,timing:g}))}function E(){return m||!t.isConnected||!d||document.hidden||p?!1:a.matches?M===\"status\"&&(u===\"thinking\"||u===\"working\"):M===\"ambient\"?!0:!(u===\"blocked\"&&h>=g.blockedDuration)}function k(P){if(!E())return!1;if(x!==null){let F=Math.min((P-x)/1e3,Ke);a.matches?c+=F:(f+=F*(M===\"ambient\"?ht(e):Gt(u,e,h,g)),M===\"status\"&&(h+=F))}x=P;let V=Yt(u,h,M,g)===\"idle\"?gt.resting:gt.busy;return(P-i>=1e3/V-_e||!E())&&(D(),i=P),E()}function T(){x=null,D(),E()?yt.run(k):yt.stop(k)}function C(P){let V=_t.get(P);if(V)return V;let F=document.createElement(\"span\");F.hidden=!0,F.style.color=P,(t.parentElement??document.body).append(F);let G=getComputedStyle(F).color;return F.remove(),G?(_t.set(P,G),G):b}function R(){let P=getComputedStyle(t),V=new Map(Ie.map(G=>[G,P.getPropertyValue(G).trim()]));return{key:[window.devicePixelRatio||1,P.color,...V.values()].join(\"|\"),color:P.color,tokens:V,timing:X(P)}}function I(P){if(m||!t.isConnected)return;v=P;let V=Math.max(1,Math.round(v*Math.min(window.devicePixelRatio||1,2)));t.width=V,t.height=V,y=V/v,T()}function B(P,V){A=P.key,b=P.color,g=P.timing,l={waiting:C(P.tokens.get(vt.waiting)||b),blocked:C(P.tokens.get(vt.blocked)||b)},O=Ut.map(F=>C(`color-mix(in oklch, ${P.tokens.get(F)||b} 75%, white)`)),w=(Ve[e]??[]).map(F=>(F?P.tokens.get(F):void 0)||b),I(V)}function L(){if(m||!t.isConnected)return;let P=S();return Math.abs(P-v)>=.5?()=>I(P):void 0}function N(){if(m||!t.isConnected)return;let P=R();if(P.key===A)return L();let V=S();return()=>B(P,V)}let _={readChange:N,readResize:L,setVisible(P){d=P,T()},play:T};return r.watch(t,_),N()?.(),{setState(P){u=P,h=0,c=0,T()},setPaused(P){p=P,T()},destroy(){m=!0,yt.stop(k),r.unwatch(t,_)}}}for(let t of document.querySelectorAll(\"canvas[data-agent-orb]\")){let o=t.dataset.agentOrb??\"\",e=Number(t.dataset.size),s=t.dataset.state??\"idle\";Kt(o)&&Ht(e)&&Lt(s)&&Zt(t,{form:o,size:e,state:s})}})();\n";
2
2
  export const designTokensCss = "@layer tokens, theme;\n\n\n\n\n\n\n\n\n\n@layer tokens {\n :root {\n --nc-action: oklch(0.5005 0.2804 266.17);\n --nc-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-action-hover: oklch(0.4602 0.2797 266.14);\n --nc-action-active: oklch(0.4202 0.2522 266.14);\n --nc-ink: oklch(0.1776 0.0000 0.00);\n --nc-body: oklch(0.5103 0.0000 0.00);\n --nc-muted: oklch(0.5278 0.0000 0.00);\n --nc-canvas: oklch(1.0000 0.0000 0.00);\n --nc-canvas-soft: oklch(0.9851 0.0000 0.00);\n --nc-canvas-soft-2: oklch(0.9702 0.0000 0.00);\n --nc-material-workspace: oklch(0.9851 0.0000 0.00);\n --nc-material-solid: oklch(1.0000 0.0000 0.00);\n --nc-material-resting: oklch(1.0000 0.0000 0.00);\n --nc-material-raised: oklch(1.0000 0.0000 0.00);\n --nc-material-floating: oklch(1.0000 0.0000 0.00);\n --nc-material-modal: oklch(1.0000 0.0000 0.00);\n --nc-line: oklch(0.9219 0.0000 0.00);\n --nc-input: oklch(0.5624 0.0000 0.00);\n --nc-focus-ring: oklch(0.1776 0.0000 0.00);\n --nc-scrim: oklch(0.9612 0.0000 0.00);\n --nc-link: oklch(0.5005 0.2804 266.17);\n --nc-link-deep: oklch(0.4202 0.2522 266.14);\n --nc-link-bg-soft: oklch(0.9656 0.0171 248.01);\n --nc-info: oklch(0.5005 0.2804 266.17);\n --nc-info-soft: oklch(0.9457 0.0259 276.40);\n --nc-info-deep: oklch(0.3197 0.1758 266.79);\n --nc-success: oklch(0.6415 0.1644 153.23);\n --nc-success-soft: oklch(0.9170 0.0519 161.77);\n --nc-success-deep: oklch(0.3852 0.0953 154.99);\n --nc-error: oklch(0.5688 0.1995 26.59);\n --nc-error-soft: oklch(0.9522 0.0207 17.52);\n --nc-error-deep: oklch(0.4235 0.1525 27.08);\n --nc-warning: oklch(0.8466 0.1678 84.63);\n --nc-warning-soft: oklch(0.9649 0.0461 90.87);\n --nc-warning-deep: oklch(0.4834 0.0995 82.44);\n --nc-navigation-selection-bg: oklch(0.9461 0.0000 0.00);\n --nc-navigation-selection-fg: oklch(0.1776 0.0000 0.00);\n --nc-navigation-selection-hover: oklch(0.9219 0.0000 0.00);\n --nc-state-ready: oklch(0.5278 0.0000 0.00);\n --nc-state-running: oklch(0.5005 0.2804 266.17);\n --nc-state-review: oklch(0.8466 0.1678 84.63);\n --nc-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-identity-verde: oklch(0.6415 0.1644 153.23);\n --nc-identity-rosso: oklch(0.5688 0.1995 26.59);\n --nc-identity-arancio: oklch(0.6824 0.2108 37.70);\n --nc-identity-giallo: oklch(0.8466 0.1678 84.63);\n --nc-identity-cobalto: oklch(0.5005 0.2804 266.17);\n --nc-identity-azzurro: oklch(0.5618 0.2019 258.24);\n --nc-identity-ink: oklch(0.0000 0.0000 0.00);\n --nc-identity-white: oklch(1.0000 0.0000 0.00);\n --nc-logo-dot: oklch(0.5005 0.2804 266.17);\n --nc-logo-guide: oklch(0.6830 0.0000 0.00);\n --nc-chart-1: oklch(0.5005 0.2804 266.17);\n --nc-chart-2: oklch(0.6398 0.2044 356.46);\n --nc-chart-3: oklch(0.5015 0.1883 294.99);\n --nc-chart-4: oklch(0.6824 0.2108 37.70);\n --nc-chart-5: oklch(0.6161 0.1062 208.85);\n --nc-chart-6: oklch(0.5688 0.1995 26.59);\n --nc-chart-7: oklch(0.7691 0.1577 84.69);\n --nc-chart-8: oklch(0.6415 0.1644 153.23);\n --nc-chart-9: oklch(0.7191 0.1452 266.33);\n --nc-chart-10: oklch(0.8309 0.1048 356.57);\n --nc-cobalto-100: oklch(0.9754 0.0115 264.51);\n --nc-cobalto-200: oklch(0.9543 0.0215 265.76);\n --nc-cobalto-300: oklch(0.9297 0.0334 265.23);\n --nc-cobalto-400: oklch(0.8944 0.0509 267.00);\n --nc-cobalto-500: oklch(0.8308 0.0837 265.90);\n --nc-cobalto-600: oklch(0.7191 0.1452 266.33);\n --nc-cobalto-700: oklch(0.5005 0.2804 266.17);\n --nc-cobalto-800: oklch(0.4602 0.2797 266.14);\n --nc-cobalto-900: oklch(0.4202 0.2522 266.14);\n --nc-cobalto-1000: oklch(0.2811 0.1684 266.17);\n --nc-rosso-100: oklch(0.9752 0.0122 29.87);\n --nc-rosso-200: oklch(0.9552 0.0222 27.81);\n --nc-rosso-300: oklch(0.9290 0.0360 26.28);\n --nc-rosso-400: oklch(0.8944 0.0552 26.52);\n --nc-rosso-500: oklch(0.8304 0.0942 26.48);\n --nc-rosso-600: oklch(0.7201 0.1742 26.79);\n --nc-rosso-700: oklch(0.5688 0.1995 26.59);\n --nc-rosso-800: oklch(0.5297 0.1996 26.67);\n --nc-rosso-900: oklch(0.4882 0.1797 26.59);\n --nc-rosso-1000: oklch(0.2805 0.1143 26.81);\n --nc-arancio-100: oklch(0.9749 0.0125 35.73);\n --nc-arancio-200: oklch(0.9544 0.0233 37.38);\n --nc-arancio-300: oklch(0.9298 0.0366 36.77);\n --nc-arancio-400: oklch(0.8945 0.0567 37.21);\n --nc-arancio-500: oklch(0.8292 0.0974 37.12);\n --nc-arancio-600: oklch(0.7428 0.1602 37.76);\n --nc-arancio-700: oklch(0.6824 0.2108 37.70);\n --nc-arancio-800: oklch(0.6419 0.2102 37.75);\n --nc-arancio-900: oklch(0.4993 0.1647 37.64);\n --nc-arancio-1000: oklch(0.2801 0.0916 38.02);\n --nc-giallo-100: oklch(0.9860 0.0154 86.42);\n --nc-giallo-200: oklch(0.9699 0.0272 83.54);\n --nc-giallo-300: oklch(0.9555 0.0420 85.96);\n --nc-giallo-400: oklch(0.9298 0.0673 84.45);\n --nc-giallo-500: oklch(0.9004 0.1074 84.93);\n --nc-giallo-600: oklch(0.8696 0.1403 84.42);\n --nc-giallo-700: oklch(0.8466 0.1678 84.63);\n --nc-giallo-800: oklch(0.7691 0.1577 84.69);\n --nc-giallo-900: oklch(0.5305 0.1090 83.33);\n --nc-giallo-1000: oklch(0.3186 0.0654 84.14);\n --nc-verde-100: oklch(0.9747 0.0157 154.48);\n --nc-verde-200: oklch(0.9560 0.0265 152.38);\n --nc-verde-300: oklch(0.9290 0.0407 153.11);\n --nc-verde-400: oklch(0.8955 0.0664 152.93);\n --nc-verde-500: oklch(0.8310 0.1403 153.27);\n --nc-verde-600: oklch(0.7191 0.1645 153.16);\n --nc-verde-700: oklch(0.6415 0.1644 153.23);\n --nc-verde-800: oklch(0.6017 0.1542 153.23);\n --nc-verde-900: oklch(0.4992 0.1279 153.23);\n --nc-verde-1000: oklch(0.2815 0.0723 153.13);\n --nc-acqua-100: oklch(0.9752 0.0109 211.04);\n --nc-acqua-200: oklch(0.9559 0.0171 205.84);\n --nc-acqua-300: oklch(0.9297 0.0259 208.75);\n --nc-acqua-400: oklch(0.8954 0.0424 207.56);\n --nc-acqua-500: oklch(0.8304 0.0902 209.06);\n --nc-acqua-600: oklch(0.7205 0.1064 208.54);\n --nc-acqua-700: oklch(0.6161 0.1062 208.85);\n --nc-acqua-800: oklch(0.5765 0.0992 208.28);\n --nc-acqua-900: oklch(0.4990 0.0860 208.78);\n --nc-acqua-1000: oklch(0.2797 0.0484 210.29);\n --nc-viola-100: oklch(0.9745 0.0134 295.33);\n --nc-viola-200: oklch(0.9545 0.0243 296.12);\n --nc-viola-300: oklch(0.9290 0.0381 295.47);\n --nc-viola-400: oklch(0.8954 0.0563 294.18);\n --nc-viola-500: oklch(0.8289 0.0954 295.03);\n --nc-viola-600: oklch(0.7204 0.1631 294.91);\n --nc-viola-700: oklch(0.5015 0.1883 294.99);\n --nc-viola-800: oklch(0.4620 0.1886 294.84);\n --nc-viola-900: oklch(0.4227 0.1694 295.05);\n --nc-viola-1000: oklch(0.2796 0.1131 295.14);\n --nc-rosa-100: oklch(0.9746 0.0139 355.00);\n --nc-rosa-200: oklch(0.9555 0.0241 358.28);\n --nc-rosa-300: oklch(0.9307 0.0386 357.63);\n --nc-rosa-400: oklch(0.8944 0.0614 356.49);\n --nc-rosa-500: oklch(0.8309 0.1048 356.57);\n --nc-rosa-600: oklch(0.7193 0.1969 356.59);\n --nc-rosa-700: oklch(0.6398 0.2044 356.46);\n --nc-rosa-800: oklch(0.6001 0.2050 356.50);\n --nc-rosa-900: oklch(0.5009 0.1842 356.43);\n --nc-rosa-1000: oklch(0.2808 0.1147 356.80);\n --nc-dark-canvas: oklch(0.0000 0.0000 0.00);\n --nc-dark-canvas-soft: oklch(0.1776 0.0000 0.00);\n --nc-dark-canvas-soft-2: oklch(0.2178 0.0000 0.00);\n --nc-dark-material-workspace: oklch(0.0000 0.0000 0.00);\n --nc-dark-material-solid: oklch(0.0000 0.0000 0.00);\n --nc-dark-material-resting: oklch(0.1448 0.0000 0.00);\n --nc-dark-material-raised: oklch(0.1684 0.0000 0.00);\n --nc-dark-material-floating: oklch(0.1684 0.0000 0.00);\n --nc-dark-material-modal: oklch(0.1684 0.0000 0.00);\n --nc-card-graphite: oklch(0.1957 0.0000 0.00);\n --nc-dark-ink: oklch(0.9461 0.0000 0.00);\n --nc-dark-body: oklch(0.7090 0.0000 0.00);\n --nc-dark-muted: oklch(0.6993 0.0000 0.00);\n --nc-dark-line: oklch(0.2686 0.0000 0.00);\n --nc-dark-input: oklch(0.5590 0.0000 0.00);\n --nc-dark-on-primary: oklch(0.1448 0.0000 0.00);\n --nc-dark-action: oklch(0.5005 0.2804 266.17);\n --nc-dark-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-dark-action-hover: oklch(0.4602 0.2797 266.14);\n --nc-dark-action-active: oklch(0.4202 0.2522 266.14);\n --nc-dark-link: oklch(0.7993 0.1005 266.67);\n --nc-dark-link-deep: oklch(0.8944 0.0509 267.00);\n --nc-dark-link-bg-soft: oklch(0.2518 0.0572 257.41);\n --nc-dark-focus-ring: oklch(0.9461 0.0000 0.00);\n --nc-dark-scrim: oklch(0.0000 0.0000 0.00);\n --nc-dark-error: oklch(0.7955 0.0980 21.02);\n --nc-dark-error-soft: oklch(0.2296 0.0728 26.06);\n --nc-dark-error-deep: oklch(0.8856 0.0534 19.64);\n --nc-dark-warning: oklch(0.8939 0.1387 90.47);\n --nc-dark-warning-soft: oklch(0.3135 0.0643 85.04);\n --nc-dark-warning-deep: oklch(0.9320 0.0896 90.86);\n --nc-dark-info: oklch(0.7067 0.1528 272.08);\n --nc-dark-info-soft: oklch(0.2118 0.1033 268.28);\n --nc-dark-info-deep: oklch(0.8222 0.0888 274.44);\n --nc-dark-success: oklch(0.7019 0.1753 153.20);\n --nc-dark-success-soft: oklch(0.2893 0.0697 156.32);\n --nc-dark-success-deep: oklch(0.8524 0.0996 159.83);\n --nc-dark-state-ready: oklch(0.5624 0.0000 0.00);\n --nc-dark-state-running: oklch(0.5005 0.2804 266.17);\n --nc-dark-state-review: oklch(0.8466 0.1678 84.63);\n --nc-dark-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-dark-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-dark-logo-dot: oklch(0.5923 0.2215 269.61);\n --nc-dark-navigation-selection-bg: oklch(0.2393 0.0000 0.00);\n --nc-dark-navigation-selection-fg: oklch(0.9461 0.0000 0.00);\n --nc-dark-navigation-selection-hover: oklch(0.2686 0.0000 0.00);\n --nc-dark-chart-1: oklch(0.6007 0.2160 266.02);\n --nc-dark-chart-2: oklch(0.6611 0.1941 356.61);\n --nc-dark-chart-3: oklch(0.6004 0.1789 294.79);\n --nc-dark-chart-4: oklch(0.6612 0.2003 37.74);\n --nc-dark-chart-5: oklch(0.6568 0.1009 208.69);\n --nc-dark-chart-6: oklch(0.6084 0.1887 26.65);\n --nc-dark-chart-7: oklch(0.8466 0.1678 84.63);\n --nc-dark-chart-8: oklch(0.6608 0.1568 153.03);\n --nc-dark-chart-9: oklch(0.7993 0.1005 266.67);\n --nc-dark-chart-10: oklch(0.8005 0.1279 356.32);\n --nc-dark-cobalto-100: oklch(0.1915 0.0982 266.32);\n --nc-dark-cobalto-200: oklch(0.2197 0.1184 266.25);\n --nc-dark-cobalto-300: oklch(0.2604 0.1398 265.97);\n --nc-dark-cobalto-400: oklch(0.2997 0.1624 266.24);\n --nc-dark-cobalto-500: oklch(0.3702 0.1966 266.08);\n --nc-dark-cobalto-600: oklch(0.6007 0.2160 266.02);\n --nc-dark-cobalto-700: oklch(0.5005 0.2804 266.17);\n --nc-dark-cobalto-800: oklch(0.4602 0.2797 266.14);\n --nc-dark-cobalto-900: oklch(0.7993 0.1005 266.67);\n --nc-dark-cobalto-1000: oklch(0.9604 0.0186 265.98);\n --nc-dark-rosso-100: oklch(0.1907 0.0689 26.80);\n --nc-dark-rosso-200: oklch(0.2215 0.0837 26.41);\n --nc-dark-rosso-300: oklch(0.2596 0.0994 26.37);\n --nc-dark-rosso-400: oklch(0.3014 0.1159 26.97);\n --nc-dark-rosso-500: oklch(0.3705 0.1397 26.54);\n --nc-dark-rosso-600: oklch(0.6084 0.1887 26.65);\n --nc-dark-rosso-700: oklch(0.5688 0.1995 26.59);\n --nc-dark-rosso-800: oklch(0.5297 0.1996 26.67);\n --nc-dark-rosso-900: oklch(0.7992 0.1149 26.43);\n --nc-dark-rosso-1000: oklch(0.9598 0.0198 25.17);\n --nc-dark-arancio-100: oklch(0.1909 0.0632 37.47);\n --nc-dark-arancio-200: oklch(0.2201 0.0732 37.26);\n --nc-dark-arancio-300: oklch(0.2598 0.0852 37.90);\n --nc-dark-arancio-400: oklch(0.2988 0.0989 37.50);\n --nc-dark-arancio-500: oklch(0.3706 0.1219 37.77);\n --nc-dark-arancio-600: oklch(0.6612 0.2003 37.74);\n --nc-dark-arancio-700: oklch(0.6824 0.2108 37.70);\n --nc-dark-arancio-800: oklch(0.6419 0.2102 37.75);\n --nc-dark-arancio-900: oklch(0.7993 0.1180 37.52);\n --nc-dark-arancio-1000: oklch(0.9590 0.0208 36.03);\n --nc-dark-giallo-100: oklch(0.1903 0.0391 84.07);\n --nc-dark-giallo-200: oklch(0.2185 0.0449 83.81);\n --nc-dark-giallo-300: oklch(0.2592 0.0532 83.54);\n --nc-dark-giallo-400: oklch(0.3008 0.0616 85.18);\n --nc-dark-giallo-500: oklch(0.3705 0.0759 85.25);\n --nc-dark-giallo-600: oklch(0.6598 0.1353 84.83);\n --nc-dark-giallo-700: oklch(0.8466 0.1678 84.63);\n --nc-dark-giallo-800: oklch(0.8064 0.1654 84.43);\n --nc-dark-giallo-900: oklch(0.8007 0.1595 84.74);\n --nc-dark-giallo-1000: oklch(0.9604 0.0256 84.59);\n --nc-dark-verde-100: oklch(0.1910 0.0488 153.39);\n --nc-dark-verde-200: oklch(0.2208 0.0571 152.80);\n --nc-dark-verde-300: oklch(0.2606 0.0664 153.49);\n --nc-dark-verde-400: oklch(0.2987 0.0765 153.24);\n --nc-dark-verde-500: oklch(0.3685 0.0944 153.24);\n --nc-dark-verde-600: oklch(0.6608 0.1568 153.03);\n --nc-dark-verde-700: oklch(0.6415 0.1644 153.23);\n --nc-dark-verde-800: oklch(0.6017 0.1542 153.23);\n --nc-dark-verde-900: oklch(0.7994 0.1555 153.29);\n --nc-dark-verde-1000: oklch(0.9600 0.0248 152.88);\n --nc-dark-acqua-100: oklch(0.1914 0.0330 209.05);\n --nc-dark-acqua-200: oklch(0.2192 0.0379 209.81);\n --nc-dark-acqua-300: oklch(0.2610 0.0450 209.30);\n --nc-dark-acqua-400: oklch(0.3011 0.0519 208.95);\n --nc-dark-acqua-500: oklch(0.3711 0.0639 208.82);\n --nc-dark-acqua-600: oklch(0.6568 0.1009 208.69);\n --nc-dark-acqua-700: oklch(0.6161 0.1062 208.85);\n --nc-dark-acqua-800: oklch(0.5765 0.0992 208.28);\n --nc-dark-acqua-900: oklch(0.8004 0.1007 208.37);\n --nc-dark-acqua-1000: oklch(0.9596 0.0161 206.44);\n --nc-dark-viola-100: oklch(0.1897 0.0654 295.79);\n --nc-dark-viola-200: oklch(0.2192 0.0805 294.49);\n --nc-dark-viola-300: oklch(0.2605 0.0949 295.18);\n --nc-dark-viola-400: oklch(0.2990 0.1087 294.76);\n --nc-dark-viola-500: oklch(0.3702 0.1310 295.14);\n --nc-dark-viola-600: oklch(0.6004 0.1789 294.79);\n --nc-dark-viola-700: oklch(0.5015 0.1883 294.99);\n --nc-dark-viola-800: oklch(0.4620 0.1886 294.84);\n --nc-dark-viola-900: oklch(0.8000 0.1131 295.20);\n --nc-dark-viola-1000: oklch(0.9591 0.0215 294.60);\n --nc-dark-rosa-100: oklch(0.1902 0.0716 355.67);\n --nc-dark-rosa-200: oklch(0.2198 0.0850 357.06);\n --nc-dark-rosa-300: oklch(0.2591 0.1026 356.37);\n --nc-dark-rosa-400: oklch(0.3000 0.1188 356.62);\n --nc-dark-rosa-500: oklch(0.3695 0.1426 356.71);\n --nc-dark-rosa-600: oklch(0.6611 0.1941 356.61);\n --nc-dark-rosa-700: oklch(0.6398 0.2044 356.46);\n --nc-dark-rosa-800: oklch(0.6001 0.2050 356.50);\n --nc-dark-rosa-900: oklch(0.8005 0.1279 356.32);\n --nc-dark-rosa-1000: oklch(0.9599 0.0220 356.32);\n --nc-category-teal-soft: oklch(0.9585 0.0244 187.32);\n --nc-category-teal-deep: oklch(0.4600 0.0788 185.34);\n --nc-dark-category-teal-soft: oklch(0.2627 0.0410 187.13);\n --nc-dark-category-teal-deep: oklch(0.8398 0.1008 186.70);\n --nc-category-purple-soft: oklch(0.9464 0.0327 307.17);\n --nc-category-purple-deep: oklch(0.4541 0.1958 308.26);\n --nc-dark-category-purple-soft: oklch(0.2479 0.0790 306.78);\n --nc-dark-category-purple-deep: oklch(0.7911 0.1271 310.92);\n --nc-category-pink-soft: oklch(0.9476 0.0263 347.12);\n --nc-category-pink-deep: oklch(0.4863 0.1711 355.09);\n --nc-dark-category-pink-soft: oklch(0.2550 0.0598 353.51);\n --nc-dark-category-pink-deep: oklch(0.8108 0.1129 347.21);\n --nc-xxs: 4px;\n --nc-xs: 8px;\n --nc-sm: 12px;\n --nc-md: 16px;\n --nc-lg: 24px;\n --nc-xl: 32px;\n --nc-2xl: 40px;\n --nc-3xl: 48px;\n --nc-4xl: 64px;\n --nc-5xl: 96px;\n --nc-6xl: 128px;\n --nc-guide: 1px;\n --nc-icon-stroke: 1.5px;\n --nc-icon-stroke-sm: 1.25px;\n --nc-focus-outline-width: 2px;\n --nc-focus-outline-offset: 2px;\n --nc-control-height: 36px;\n --nc-control-height-sm: 32px;\n --nc-control-height-lg: 40px;\n --nc-control-height-xs: 24px;\n --nc-control-padding-inline: 12px;\n --nc-button-padding-inline-sm: 6px;\n --nc-button-padding-inline: 10px;\n --nc-button-padding-inline-lg: 14px;\n --nc-card-padding: 20px;\n --nc-touch-target: 44px;\n --nc-rounded-none: 0px;\n --nc-rounded-xs: 2px;\n --nc-rounded-xs-plus: 4px;\n --nc-rounded-sm: 6px;\n --nc-rounded-md: 8px;\n --nc-rounded-lg: 12px;\n --nc-rounded-xl: 16px;\n --nc-rounded-2xl: 20px;\n --nc-rounded-3xl: 24px;\n --nc-rounded-full: 9999px;\n --nc-type-display-xl-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-xl-font-size: 72px;\n --nc-type-display-xl-font-weight: 600;\n --nc-type-display-xl-line-height: 72px;\n --nc-type-display-xl-letter-spacing: -4.32px;\n --nc-type-display-wide-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-wide-font-size: 64px;\n --nc-type-display-wide-font-weight: 600;\n --nc-type-display-wide-line-height: 64px;\n --nc-type-display-wide-letter-spacing: -3.84px;\n --nc-type-display-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-lg-font-size: 56px;\n --nc-type-display-lg-font-weight: 600;\n --nc-type-display-lg-line-height: 56px;\n --nc-type-display-lg-letter-spacing: -3.36px;\n --nc-type-display-section-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-section-font-size: 48px;\n --nc-type-display-section-font-weight: 600;\n --nc-type-display-section-line-height: 56px;\n --nc-type-display-section-letter-spacing: -2.88px;\n --nc-type-display-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-md-font-size: 40px;\n --nc-type-display-md-font-weight: 600;\n --nc-type-display-md-line-height: 48px;\n --nc-type-display-md-letter-spacing: -2.4px;\n --nc-type-heading-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-lg-font-size: 32px;\n --nc-type-heading-lg-font-weight: 600;\n --nc-type-heading-lg-line-height: 40px;\n --nc-type-heading-lg-letter-spacing: -1.28px;\n --nc-type-heading-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-md-font-size: 24px;\n --nc-type-heading-md-font-weight: 600;\n --nc-type-heading-md-line-height: 32px;\n --nc-type-heading-md-letter-spacing: -0.96px;\n --nc-type-heading-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-sm-font-size: 20px;\n --nc-type-heading-sm-font-weight: 600;\n --nc-type-heading-sm-line-height: 26px;\n --nc-type-heading-sm-letter-spacing: -0.4px;\n --nc-type-heading-xs-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-xs-font-size: 16px;\n --nc-type-heading-xs-font-weight: 600;\n --nc-type-heading-xs-line-height: 24px;\n --nc-type-heading-xs-letter-spacing: -0.32px;\n --nc-type-heading-compact-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-compact-font-size: 14px;\n --nc-type-heading-compact-font-weight: 600;\n --nc-type-heading-compact-line-height: 20px;\n --nc-type-heading-compact-letter-spacing: -0.28px;\n --nc-type-button-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-lg-font-size: 16px;\n --nc-type-button-lg-font-weight: 500;\n --nc-type-button-lg-line-height: 24px;\n --nc-type-button-lg-letter-spacing: 0px;\n --nc-type-button-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-font-size: 14px;\n --nc-type-button-font-weight: 500;\n --nc-type-button-line-height: 21px;\n --nc-type-button-letter-spacing: 0px;\n --nc-type-button-xs-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-xs-font-size: 12px;\n --nc-type-button-xs-font-weight: 500;\n --nc-type-button-xs-line-height: 16px;\n --nc-type-button-xs-letter-spacing: 0px;\n --nc-type-label-display-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-display-font-size: 20px;\n --nc-type-label-display-font-weight: 400;\n --nc-type-label-display-line-height: 32px;\n --nc-type-label-display-letter-spacing: 0px;\n --nc-type-label-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-lg-font-size: 18px;\n --nc-type-label-lg-font-weight: 400;\n --nc-type-label-lg-line-height: 20px;\n --nc-type-label-lg-letter-spacing: 0px;\n --nc-type-label-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-md-font-size: 16px;\n --nc-type-label-md-font-weight: 400;\n --nc-type-label-md-line-height: 20px;\n --nc-type-label-md-letter-spacing: 0px;\n --nc-type-label-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-font-size: 14px;\n --nc-type-label-font-weight: 400;\n --nc-type-label-line-height: 20px;\n --nc-type-label-letter-spacing: 0px;\n --nc-type-label-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-sm-font-size: 13px;\n --nc-type-label-sm-font-weight: 400;\n --nc-type-label-sm-line-height: 16px;\n --nc-type-label-sm-letter-spacing: 0px;\n --nc-type-caption-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-caption-font-size: 12px;\n --nc-type-caption-font-weight: 400;\n --nc-type-caption-line-height: 16px;\n --nc-type-caption-letter-spacing: 0px;\n --nc-type-label-mono-lg-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-lg-font-size: 14px;\n --nc-type-label-mono-lg-font-weight: 400;\n --nc-type-label-mono-lg-line-height: 20px;\n --nc-type-label-mono-lg-letter-spacing: 0px;\n --nc-type-label-mono-md-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-md-font-size: 13px;\n --nc-type-label-mono-md-font-weight: 400;\n --nc-type-label-mono-md-line-height: 20px;\n --nc-type-label-mono-md-letter-spacing: 0px;\n --nc-type-label-mono-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-font-size: 12px;\n --nc-type-label-mono-font-weight: 400;\n --nc-type-label-mono-line-height: 16px;\n --nc-type-label-mono-letter-spacing: 0px;\n --nc-type-body-display-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-display-font-size: 24px;\n --nc-type-body-display-font-weight: 400;\n --nc-type-body-display-line-height: 36px;\n --nc-type-body-display-letter-spacing: 0px;\n --nc-type-body-lead-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-lead-font-size: 20px;\n --nc-type-body-lead-font-weight: 400;\n --nc-type-body-lead-line-height: 36px;\n --nc-type-body-lead-letter-spacing: 0px;\n --nc-type-body-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-lg-font-size: 18px;\n --nc-type-body-lg-font-weight: 400;\n --nc-type-body-lg-line-height: 28px;\n --nc-type-body-lg-letter-spacing: 0px;\n --nc-type-body-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-md-font-size: 16px;\n --nc-type-body-md-font-weight: 400;\n --nc-type-body-md-line-height: 24px;\n --nc-type-body-md-letter-spacing: 0px;\n --nc-type-body-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-sm-font-size: 14px;\n --nc-type-body-sm-font-weight: 400;\n --nc-type-body-sm-line-height: 20px;\n --nc-type-body-sm-letter-spacing: 0px;\n --nc-type-body-compact-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-compact-font-size: 13px;\n --nc-type-body-compact-font-weight: 400;\n --nc-type-body-compact-line-height: 18px;\n --nc-type-body-compact-letter-spacing: 0px;\n --nc-type-code-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-code-font-size: 13px;\n --nc-type-code-font-weight: 400;\n --nc-type-code-line-height: 18px;\n --nc-type-code-letter-spacing: 0px;\n --nc-material-scrim-opacity: 80%;\n --nc-material-dark-scrim-opacity: 60%;\n --nc-material-glass-opacity: 55%;\n --nc-material-glass-saturation: 180%;\n --nc-material-glass-blur: 20px;\n --nc-elevation-resting: 0px 0px 0px 1px rgb(0% 0% 0% / 0.08), 0px 2px 2px 0px rgb(0% 0% 0% / 0.04);\n --nc-elevation-raised:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 2px 2px 0px rgb(0% 0% 0% / 0.04),\n 0px 8px 16px -4px rgb(0% 0% 0% / 0.08);\n --nc-elevation-floating:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 1px 1px 0px rgb(0% 0% 0% / 0.02),\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.06),\n 0px 16px 32px -8px rgb(0% 0% 0% / 0.1);\n --nc-elevation-modal:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 8px 24px -12px rgb(0% 0% 0% / 0.12),\n 0px 32px 72px -12px rgb(0% 0% 0% / 0.12);\n --nc-elevation-glass:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.75),\n inset 0px 0px 0px 1px rgb(100% 100% 100% / 0.35),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.06),\n 0px 16px 32px -8px rgb(0% 0% 0% / 0.08);\n --nc-duration-control: 100ms;\n --nc-duration-close: 140ms;\n --nc-duration-confirm: 180ms;\n --nc-duration-open: 220ms;\n --nc-duration-msg-in: 240ms;\n --nc-duration-transition: 240ms;\n --nc-duration-arrive: 300ms;\n --nc-duration-drawer-swipe: 400ms;\n --nc-duration-drawer: 450ms;\n --nc-duration-wait: 1.6s;\n --nc-ease-emphasized: cubic-bezier(0.3, 0.7, 0.2, 1);\n --nc-ease-out-strong: cubic-bezier(0.23, 1, 0.32, 1);\n --nc-ease-in-out-strong: cubic-bezier(0.77, 0, 0.175, 1);\n --nc-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);\n --nc-content-max: 1200px;\n --nc-gutter-mobile: 20px;\n --nc-gutter-tablet: 40px;\n --nc-gutter-desktop: 64px;\n --nc-section-step-mobile: 64px;\n --nc-section-step-desktop: 96px;\n }\n}\n\n\n@layer theme {\n .dark {\n --nc-canvas: var(--nc-dark-canvas);\n --nc-canvas-soft: var(--nc-dark-canvas-soft);\n --nc-canvas-soft-2: var(--nc-dark-canvas-soft-2);\n --nc-material-workspace: var(--nc-dark-material-workspace);\n --nc-material-solid: var(--nc-dark-material-solid);\n --nc-material-resting: var(--nc-dark-material-resting);\n --nc-material-raised: var(--nc-dark-material-raised);\n --nc-material-floating: var(--nc-dark-material-floating);\n --nc-material-modal: var(--nc-dark-material-modal);\n --nc-ink: var(--nc-dark-ink);\n --nc-body: var(--nc-dark-body);\n --nc-muted: var(--nc-dark-muted);\n --nc-line: var(--nc-dark-line);\n --nc-input: var(--nc-dark-input);\n --nc-action: var(--nc-dark-action);\n --nc-action-foreground: var(--nc-dark-action-foreground);\n --nc-action-hover: var(--nc-dark-action-hover);\n --nc-action-active: var(--nc-dark-action-active);\n --nc-link: var(--nc-dark-link);\n --nc-link-deep: var(--nc-dark-link-deep);\n --nc-link-bg-soft: var(--nc-dark-link-bg-soft);\n --nc-focus-ring: var(--nc-dark-focus-ring);\n --nc-scrim: var(--nc-dark-scrim);\n --nc-error: var(--nc-dark-error);\n --nc-error-soft: var(--nc-dark-error-soft);\n --nc-error-deep: var(--nc-dark-error-deep);\n --nc-warning: var(--nc-dark-warning);\n --nc-warning-soft: var(--nc-dark-warning-soft);\n --nc-warning-deep: var(--nc-dark-warning-deep);\n --nc-info: var(--nc-dark-info);\n --nc-info-soft: var(--nc-dark-info-soft);\n --nc-info-deep: var(--nc-dark-info-deep);\n --nc-success: var(--nc-dark-success);\n --nc-success-soft: var(--nc-dark-success-soft);\n --nc-success-deep: var(--nc-dark-success-deep);\n --nc-state-ready: var(--nc-dark-state-ready);\n --nc-state-running: var(--nc-dark-state-running);\n --nc-state-review: var(--nc-dark-state-review);\n --nc-state-blocked: var(--nc-dark-state-blocked);\n --nc-state-complete: var(--nc-dark-state-complete);\n --nc-logo-dot: var(--nc-dark-logo-dot);\n --nc-navigation-selection-bg: var(--nc-dark-navigation-selection-bg);\n --nc-navigation-selection-fg: var(--nc-dark-navigation-selection-fg);\n --nc-navigation-selection-hover: var(--nc-dark-navigation-selection-hover);\n --nc-chart-1: var(--nc-dark-chart-1);\n --nc-chart-2: var(--nc-dark-chart-2);\n --nc-chart-3: var(--nc-dark-chart-3);\n --nc-chart-4: var(--nc-dark-chart-4);\n --nc-chart-5: var(--nc-dark-chart-5);\n --nc-chart-6: var(--nc-dark-chart-6);\n --nc-chart-7: var(--nc-dark-chart-7);\n --nc-chart-8: var(--nc-dark-chart-8);\n --nc-chart-9: var(--nc-dark-chart-9);\n --nc-chart-10: var(--nc-dark-chart-10);\n --nc-cobalto-100: var(--nc-dark-cobalto-100);\n --nc-cobalto-200: var(--nc-dark-cobalto-200);\n --nc-cobalto-300: var(--nc-dark-cobalto-300);\n --nc-cobalto-400: var(--nc-dark-cobalto-400);\n --nc-cobalto-500: var(--nc-dark-cobalto-500);\n --nc-cobalto-600: var(--nc-dark-cobalto-600);\n --nc-cobalto-700: var(--nc-dark-cobalto-700);\n --nc-cobalto-800: var(--nc-dark-cobalto-800);\n --nc-cobalto-900: var(--nc-dark-cobalto-900);\n --nc-cobalto-1000: var(--nc-dark-cobalto-1000);\n --nc-rosso-100: var(--nc-dark-rosso-100);\n --nc-rosso-200: var(--nc-dark-rosso-200);\n --nc-rosso-300: var(--nc-dark-rosso-300);\n --nc-rosso-400: var(--nc-dark-rosso-400);\n --nc-rosso-500: var(--nc-dark-rosso-500);\n --nc-rosso-600: var(--nc-dark-rosso-600);\n --nc-rosso-700: var(--nc-dark-rosso-700);\n --nc-rosso-800: var(--nc-dark-rosso-800);\n --nc-rosso-900: var(--nc-dark-rosso-900);\n --nc-rosso-1000: var(--nc-dark-rosso-1000);\n --nc-arancio-100: var(--nc-dark-arancio-100);\n --nc-arancio-200: var(--nc-dark-arancio-200);\n --nc-arancio-300: var(--nc-dark-arancio-300);\n --nc-arancio-400: var(--nc-dark-arancio-400);\n --nc-arancio-500: var(--nc-dark-arancio-500);\n --nc-arancio-600: var(--nc-dark-arancio-600);\n --nc-arancio-700: var(--nc-dark-arancio-700);\n --nc-arancio-800: var(--nc-dark-arancio-800);\n --nc-arancio-900: var(--nc-dark-arancio-900);\n --nc-arancio-1000: var(--nc-dark-arancio-1000);\n --nc-giallo-100: var(--nc-dark-giallo-100);\n --nc-giallo-200: var(--nc-dark-giallo-200);\n --nc-giallo-300: var(--nc-dark-giallo-300);\n --nc-giallo-400: var(--nc-dark-giallo-400);\n --nc-giallo-500: var(--nc-dark-giallo-500);\n --nc-giallo-600: var(--nc-dark-giallo-600);\n --nc-giallo-700: var(--nc-dark-giallo-700);\n --nc-giallo-800: var(--nc-dark-giallo-800);\n --nc-giallo-900: var(--nc-dark-giallo-900);\n --nc-giallo-1000: var(--nc-dark-giallo-1000);\n --nc-verde-100: var(--nc-dark-verde-100);\n --nc-verde-200: var(--nc-dark-verde-200);\n --nc-verde-300: var(--nc-dark-verde-300);\n --nc-verde-400: var(--nc-dark-verde-400);\n --nc-verde-500: var(--nc-dark-verde-500);\n --nc-verde-600: var(--nc-dark-verde-600);\n --nc-verde-700: var(--nc-dark-verde-700);\n --nc-verde-800: var(--nc-dark-verde-800);\n --nc-verde-900: var(--nc-dark-verde-900);\n --nc-verde-1000: var(--nc-dark-verde-1000);\n --nc-acqua-100: var(--nc-dark-acqua-100);\n --nc-acqua-200: var(--nc-dark-acqua-200);\n --nc-acqua-300: var(--nc-dark-acqua-300);\n --nc-acqua-400: var(--nc-dark-acqua-400);\n --nc-acqua-500: var(--nc-dark-acqua-500);\n --nc-acqua-600: var(--nc-dark-acqua-600);\n --nc-acqua-700: var(--nc-dark-acqua-700);\n --nc-acqua-800: var(--nc-dark-acqua-800);\n --nc-acqua-900: var(--nc-dark-acqua-900);\n --nc-acqua-1000: var(--nc-dark-acqua-1000);\n --nc-viola-100: var(--nc-dark-viola-100);\n --nc-viola-200: var(--nc-dark-viola-200);\n --nc-viola-300: var(--nc-dark-viola-300);\n --nc-viola-400: var(--nc-dark-viola-400);\n --nc-viola-500: var(--nc-dark-viola-500);\n --nc-viola-600: var(--nc-dark-viola-600);\n --nc-viola-700: var(--nc-dark-viola-700);\n --nc-viola-800: var(--nc-dark-viola-800);\n --nc-viola-900: var(--nc-dark-viola-900);\n --nc-viola-1000: var(--nc-dark-viola-1000);\n --nc-rosa-100: var(--nc-dark-rosa-100);\n --nc-rosa-200: var(--nc-dark-rosa-200);\n --nc-rosa-300: var(--nc-dark-rosa-300);\n --nc-rosa-400: var(--nc-dark-rosa-400);\n --nc-rosa-500: var(--nc-dark-rosa-500);\n --nc-rosa-600: var(--nc-dark-rosa-600);\n --nc-rosa-700: var(--nc-dark-rosa-700);\n --nc-rosa-800: var(--nc-dark-rosa-800);\n --nc-rosa-900: var(--nc-dark-rosa-900);\n --nc-rosa-1000: var(--nc-dark-rosa-1000);\n --nc-category-teal-soft: var(--nc-dark-category-teal-soft);\n --nc-category-teal-deep: var(--nc-dark-category-teal-deep);\n --nc-category-purple-soft: var(--nc-dark-category-purple-soft);\n --nc-category-purple-deep: var(--nc-dark-category-purple-deep);\n --nc-category-pink-soft: var(--nc-dark-category-pink-soft);\n --nc-category-pink-deep: var(--nc-dark-category-pink-deep);\n --nc-material-scrim-opacity: var(--nc-material-dark-scrim-opacity);\n --nc-elevation-resting:\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.145),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 1px 2px 0px rgb(0% 0% 0% / 0.5);\n --nc-elevation-raised:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.06),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.16),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 12px 24px -8px rgb(0% 0% 0% / 0.8);\n --nc-elevation-floating:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.08),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.16),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 24px 48px -12px rgb(0% 0% 0% / 0.9);\n --nc-elevation-modal:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.1),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.18),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 48px 96px -24px rgb(0% 0% 0%);\n --nc-elevation-glass:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.1),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.14),\n 0px 16px 32px -12px rgb(0% 0% 0% / 0.8);\n }\n}";
3
3
  export const brandWordmarkSvg = "<svg data-slot=\"brand-wordmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 858 150\" width=\"137\" height=\"24\" class=\"block h-6 w-auto\" role=\"img\" aria-label=\"nadicode\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"18\"><path d=\"M9 150V100A41 41 0 0 1 91 100V150\"></path><circle cx=\"172\" cy=\"100\" r=\"41\"></circle><path d=\"M213 50V150\"></path><circle cx=\"294\" cy=\"100\" r=\"41\"></circle><path d=\"M335 0V150\"></path><path d=\"M375 50V150\"></path><path d=\"M484.99 71.01A41 41 0 1 0 484.99 128.99\"></path><circle cx=\"564\" cy=\"100\" r=\"41\"></circle><circle cx=\"686\" cy=\"100\" r=\"41\"></circle><path d=\"M727 0V150\"></path><path d=\"M767 100H849A41 41 0 1 0 839.41 126.35\"></path></g><circle cx=\"375\" cy=\"21\" r=\"14\" fill=\"var(--nc-logo-dot)\"></circle></svg>";
@@ -1,12 +1,14 @@
1
- import { mountAgentOrb } from "../internal/agent-orb.js";
1
+ import { isAgentOrbFigure, isAgentOrbSize, mountAgentOrb } from "../internal/agent-orb.js";
2
+ import { isAgentOrbState } from "../internal/agent-orb-motion.js";
2
3
  // Mounts every `<canvas data-agent-orb="<figure>">` on a page React never
3
4
  // loads on, such as a document a route handler answers with. A canvas names
4
- // its figure, `data-size` and, for an orb at work, `data-state`.
5
+ // its figure, `data-size` and, for an orb at work, `data-state`; one that
6
+ // names a figure, size or state outside its type stays unpainted.
5
7
  for (const canvas of document.querySelectorAll("canvas[data-agent-orb]")) {
6
- // SAFETY: the one page that loads this script, the Portal's connection-decision route, renders data-agent-orb="nadia", data-size="96" and data-state="working", each a member of its type.
7
- mountAgentOrb(canvas, {
8
- form: canvas.dataset.agentOrb,
9
- size: Number(canvas.dataset.size),
10
- state: (canvas.dataset.state ?? "idle"),
11
- });
8
+ const form = canvas.dataset.agentOrb ?? "";
9
+ const size = Number(canvas.dataset.size);
10
+ const state = canvas.dataset.state ?? "idle";
11
+ if (isAgentOrbFigure(form) && isAgentOrbSize(size) && isAgentOrbState(state)) {
12
+ mountAgentOrb(canvas, { form, size, state });
13
+ }
12
14
  }
@@ -71,7 +71,7 @@
71
71
  * from the generated --nc-elevation-* token, which carries the rung's own
72
72
  * edge in the current mode (design-system DESIGN.md "core.elevation"). An elevated surface therefore draws no second edge:
73
73
  * never pair one of these with border-*, ring-*, or another box-shadow
74
- * (`repo/no-elevated-edge` enforces it). Declared as utilities so
74
+ * (`nadicodeai/no-elevated-edge` enforces it). Declared as utilities so
75
75
  * variant prefixes can gate them.
76
76
  */
77
77
  @utility nc-elevation-resting {
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@nadicodeai/ui",
3
- "version": "12.1.165",
3
+ "version": "12.1.166",
4
4
  "type": "module",
5
+ "imports": {
6
+ "#jsx": "./src/jsx/index.ts",
7
+ "#jsx/*": "./src/jsx/*.ts"
8
+ },
5
9
  "publishConfig": {
6
10
  "access": "public"
7
11
  },
@@ -9,13 +13,8 @@
9
13
  "**/*.css"
10
14
  ],
11
15
  "exports": {
12
- ".": {
13
- "types": "./dist/index.d.ts",
14
- "import": "./dist/index.js"
15
- },
16
16
  "./globals.css": "./dist/styles/globals.css",
17
17
  "./components.css": "./dist/styles/components.css",
18
- "./eslint": "./dist/eslint/index.js",
19
18
  "./agents": {
20
19
  "types": "./dist/agents.d.ts",
21
20
  "import": "./dist/agents.js"
@@ -44,6 +43,13 @@
44
43
  "types": "./dist/lib/format-token-count.d.ts",
45
44
  "import": "./dist/lib/format-token-count.js"
46
45
  },
46
+ "./components/chart": null,
47
+ "./components/context-menu": null,
48
+ "./components/dropdown-menu": null,
49
+ "./components/hover-card": null,
50
+ "./components/input-group": null,
51
+ "./components/middle-truncate": null,
52
+ "./components/pending-label": null,
47
53
  "./components/*": {
48
54
  "types": "./dist/components/*.d.ts",
49
55
  "import": "./dist/components/*.js"
@@ -60,31 +66,13 @@
60
66
  "README.md",
61
67
  "AGENTS.md"
62
68
  ],
63
- "scripts": {
64
- "dev": "node scripts/dev-build.mjs --watch",
65
- "build": "node scripts/build.mjs",
66
- "build:dev": "node scripts/dev-build.mjs",
67
- "generate:merge-tokens": "node scripts/generate-merge-tokens.mjs",
68
- "generate:usage": "node scripts/generate-usage.mjs",
69
- "prepack": "npm run build",
70
- "lint": "npm run lint:oxlint && node scripts/generate-merge-tokens.mjs --check && node scripts/generate-usage.mjs --check && node ../../tools/workspace/heavy-slots.mjs -- eslint --max-warnings=0",
71
- "lint:oxlint": "node ../../tools/workspace/heavy-slots.mjs -- oxlint",
72
- "typecheck": "node ../../tools/workspace/heavy-slots.mjs -- node ../../node_modules/typescript-native/bin/tsc --checkers 2 --noEmit",
73
- "check": "npm run lint && npm run typecheck",
74
- "check:static": "npm run check",
75
- "pretest": "npm run build",
76
- "test": "node ../../tools/workspace/heavy-slots.mjs --skip-if-filtered -- vitest run",
77
- "test:visual": "node ../../tools/workspace/heavy-slots.mjs -- playwright test --config playwright.visual.config.ts",
78
- "check:export-targets": "node ../../tools/release/check-export-targets.mjs",
79
- "test:distribution": "node ../../tools/release/package-smoke-test.mjs"
80
- },
81
69
  "dependencies": {
82
70
  "@assistant-ui/react": "0.15.29",
83
71
  "@assistant-ui/react-markdown": "0.14.23",
84
72
  "@base-ui/react": "^1.9.0",
85
73
  "@iconify-icons/logos": "^2.0.3",
86
74
  "@iconify/react": "^6.0.2",
87
- "@nadicodeai/design-system": "12.1.165",
75
+ "@nadicodeai/design-system": "12.1.166",
88
76
  "@tanstack/react-table": "^9.3.1",
89
77
  "@vgpu/wgsl": "0.6.0",
90
78
  "class-variance-authority": "^0.7.1",
@@ -116,11 +104,8 @@
116
104
  "devDependencies": {
117
105
  "@arethetypeswrong/cli": "^0.18.5",
118
106
  "@lobehub/icons-static-svg": "^1.95.1",
119
- "@nadicodeai/eslint-config": "*",
120
- "@nadicodeai/eslint-plugin": "*",
121
- "@nadicodeai/oxlint-config": "*",
122
- "@nadicodeai/static-design-server": "*",
123
- "@nadicodeai/test-support": "*",
107
+ "@nadicodeai/static-design-server": "0.0.0",
108
+ "@nadicodeai/test-support": "0.0.0",
124
109
  "@playwright/test": "^1.64.1",
125
110
  "@stryker-mutator/core": "10.0.0",
126
111
  "@stryker-mutator/vitest-runner": "10.0.0",
@@ -131,9 +116,7 @@
131
116
  "@types/react-dom": "19.3.0",
132
117
  "axe-core": "^4.14.0",
133
118
  "esbuild": "^0.28.2",
134
- "eslint": "^9.39.4",
135
119
  "jsdom": "^30.1.3",
136
- "oxlint": "1.88.0",
137
120
  "postcss": "^8.5.30",
138
121
  "proper-lockfile": "^4.1.2",
139
122
  "publint": "^0.3.25",
@@ -144,5 +127,21 @@
144
127
  "typescript": "^6",
145
128
  "typescript-native": "npm:typescript@7.0.2",
146
129
  "vitest": "^5.0.5"
130
+ },
131
+ "scripts": {
132
+ "build": "node scripts/build.mjs",
133
+ "build:dev": "node scripts/dev-build.mjs",
134
+ "check:merge-tokens": "node scripts/generate-merge-tokens.mjs --check",
135
+ "check:package": "publint --strict",
136
+ "check:usage": "node scripts/generate-usage.mjs --check",
137
+ "dev": "node scripts/dev-build.mjs --watch",
138
+ "generate:merge-tokens": "node scripts/generate-merge-tokens.mjs",
139
+ "generate:usage": "node scripts/generate-usage.mjs",
140
+ "lint": "oxlint -c ../../oxlint.config.ts",
141
+ "lint:types": "oxlint -c ../../oxlint.types.config.ts",
142
+ "test": "vitest run",
143
+ "test:distribution": "node ../../tools/release/package-smoke-test.mjs",
144
+ "test:visual": "playwright test --config playwright.visual.config.ts",
145
+ "typecheck": "node node_modules/typescript-native/bin/tsc --checkers 2 --noEmit"
147
146
  }
148
- }
147
+ }
@@ -1,224 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { readdirSync, readFileSync } from "node:fs";
3
-
4
- import { builtinRules } from "eslint/use-at-your-own-risk";
5
-
6
- import { badgeIsStaticLabel } from "./rules/badge-is-static-label.js";
7
- import { buttonIconSlot } from "./rules/button-icon-slot.js";
8
- import { buttonLinkForNavigation } from "./rules/button-link-for-navigation.js";
9
- import { buttonNoAriaLabelWithText } from "./rules/button-no-aria-label-with-text.js";
10
- import { buttonTypeRolesOnlyInButtons } from "./rules/button-type-roles-only-in-buttons.js";
11
- import { choiceControlHasAName } from "./rules/choice-control-has-a-name.js";
12
- import { choiceGroupInFieldset } from "./rules/choice-group-in-fieldset.js";
13
- import { commandShortcutSingleOwner } from "./rules/command-shortcut-single-owner.js";
14
- import { confirmDialogWords } from "./rules/confirm-dialog-words.js";
15
- import { dataTableOneUnsizedColumn } from "./rules/data-table-one-unsized-column.js";
16
- import { destructiveActionPlacement } from "./rules/destructive-action-placement.js";
17
- import { disabledChoiceSaysWhy } from "./rules/disabled-choice-says-why.js";
18
- import { disabledControlAppearance } from "./rules/disabled-control-appearance.js";
19
- import { settingsLimitInFooter } from "./rules/settings-limit-in-footer.js";
20
- import { ellipsisOpensADialog } from "./rules/ellipsis-opens-a-dialog.js";
21
- import { emptyStateOwner } from "./rules/empty-state-owner.js";
22
- import { inputGroupOwners } from "./rules/input-group-owners.js";
23
- import { kbdChildrenNoModifierText } from "./rules/kbd-children-no-modifier-text.js";
24
- import { menuOwner } from "./rules/menu-owner.js";
25
- import { middleTruncatePlacement } from "./rules/middle-truncate-placement.js";
26
- import { noAppFeatureComponent } from "./rules/no-app-feature-component.js";
27
- import { noBareButtonLabel } from "./rules/no-bare-button-label.js";
28
- import { noChoiceControlWrapper } from "./rules/no-choice-control-wrapper.js";
29
- import { noComment } from "./rules/no-comment.js";
30
- import { noControlInReadOnlySurface } from "./rules/no-control-in-read-only-surface.js";
31
- import { noDecorativeIcon } from "./rules/no-decorative-icon.js";
32
- import { noDeprecatedZodApi } from "./rules/no-deprecated-zod-api.js";
33
- import { noGlobalPatch } from "./rules/no-global-patch.js";
34
- import { noHandBuiltBusy } from "./rules/no-hand-built-busy.js";
35
- import { noHandBuiltThemePicker } from "./rules/no-hand-built-theme-picker.js";
36
- import { noHandBuiltTile } from "./rules/no-hand-built-tile.js";
37
- import { noHandFormattedDate } from "./rules/no-hand-formatted-date.js";
38
- import { noHandStackedAvatars } from "./rules/no-hand-stacked-avatars.js";
39
- import { noNestedCollapse } from "./rules/no-nested-collapse.js";
40
- import { noPackageComponentRedefinition } from "./rules/no-package-component-redefinition.js";
41
- import { noSearchInForm } from "./rules/no-search-in-form.js";
42
- import { noShadcnAppearanceOverride } from "./rules/no-shadcn-appearance-override.js";
43
- import { noShellPromptInSnippet } from "./rules/no-shell-prompt-in-snippet.js";
44
- import { noStockErrorWords } from "./rules/no-stock-error-words.js";
45
- import { noSubjectDerivedExpectation } from "./rules/no-subject-derived-expectation.js";
46
- import { noTooltipAroundLabelledField } from "./rules/no-tooltip-around-labelled-field.js";
47
- import { noWeightClassOnStrongInTypeRole } from "./rules/no-weight-class-on-strong-in-type-role.js";
48
- import { noWriteInSubscription } from "./rules/no-write-in-subscription.js";
49
- import { oneSubmenuLevel } from "./rules/one-submenu-level.js";
50
- import { oneToastPerFlow } from "./rules/one-toast-per-flow.js";
51
- import { optionCount } from "./rules/option-count.js";
52
- import { pageCommandLinkNotRender } from "./rules/page-command-link-not-render.js";
53
- import { pageComposition } from "./rules/page-composition.js";
54
- import { progressNeedsName } from "./rules/progress-needs-name.js";
55
- import { serverActionDiscipline } from "./rules/server-action-discipline.js";
56
- import { skeletonInRegion } from "./rules/skeleton-in-region.js";
57
- import { sortableHeadingUsesSort } from "./rules/sortable-heading-uses-sort.js";
58
- import { tableCellInsetOwner } from "./rules/table-cell-inset-owner.js";
59
- import { tabsSelectionIsControlled } from "./rules/tabs-selection-is-controlled.js";
60
- import { testFilesFromOneDefinition } from "./rules/test-files-from-one-definition.js";
61
- import { tooltipOnlyArrow } from "./rules/tooltip-only-arrow.js";
62
- import { tooltipTriggerAccessibleName } from "./rules/tooltip-trigger-accessible-name.js";
63
- import { workspaceDeclaresImports } from "./rules/workspace-declares-imports.js";
64
- import { strictDesignSystemSelectors } from "./strict-design-system.js";
65
-
66
- /**
67
- * The plugin carries no version of its own.
68
- * The published copy of this file sits at `<ui>/dist/eslint/index.js` and the
69
- * source sits at `tools/lint/eslint/index.js`, which puts the
70
- * manifest at one of two places relative to here; the `name` field says which
71
- * candidate is the right one, so an unrelated manifest cannot answer by accident.
72
- */
73
- const PUBLISHING_PACKAGE = "@nadicodeai/ui";
74
- const MANIFEST_CANDIDATES = ["../../package.json", "../../../packages/ui/package.json"];
75
-
76
- const version = readPublishedVersion();
77
-
78
- function readPublishedVersion() {
79
- for (const candidate of MANIFEST_CANDIDATES) {
80
- let manifest;
81
- try {
82
- manifest = JSON.parse(readFileSync(new URL(candidate, import.meta.url), "utf8"));
83
- } catch {
84
- continue;
85
- }
86
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- parses package.json at its boundary; this package has no schema library.
87
- if (manifest?.name === PUBLISHING_PACKAGE && typeof manifest.version === "string") {
88
- return manifest.version;
89
- }
90
- }
91
- throw new Error(
92
- `@nadicodeai/eslint-plugin: no ${PUBLISHING_PACKAGE} manifest at ${MANIFEST_CANDIDATES.join(" or ")}, so the plugin cannot report the version it ships under.`,
93
- );
94
- }
95
-
96
- /**
97
- * A digest of the plugin's own source. ESLint keys its lint cache on the resolved
98
- * config, and a plugin enters that key only by name and version, which move on a
99
- * release rather than on a rule edit. Configs carry this digest in `settings`, so
100
- * a changed rule invalidates every cached result that ran under the old one.
101
- */
102
- export const rulesDigest = digestOf([
103
- "index.js",
104
- "strict-design-system.js",
105
- ...readdirSync(new URL("./rules/", import.meta.url))
106
- .filter((name) => name.endsWith(".js") && !name.endsWith(".test.js"))
107
- .sort()
108
- .map((name) => `rules/${name}`),
109
- ]);
110
-
111
- function digestOf(paths) {
112
- const hash = createHash("sha256");
113
- for (const path of paths) {
114
- hash
115
- .update(path)
116
- .update("\0")
117
- .update(readFileSync(new URL(`./${path}`, import.meta.url)));
118
- }
119
- return hash.digest("hex").slice(0, 16);
120
- }
121
-
122
- /*
123
- * The strict design-system checks that a selector expresses are core
124
- * `no-restricted-syntax`, registered here once per check under the check's own
125
- * name, with the check's selectors as the rule's default options. A config that
126
- * turns on one `nadicodeai/<check>` alone therefore runs that check, and
127
- * `flat/strict` is self-contained for a consumer of `@nadicodeai/ui/eslint`.
128
- */
129
- const restrictedSyntax = builtinRules.get("no-restricted-syntax");
130
- const strictSelectorRules = Object.fromEntries(
131
- Object.entries(strictDesignSystemSelectors).map(([name, entries]) => [
132
- name,
133
- { ...restrictedSyntax, meta: { ...restrictedSyntax.meta, defaultOptions: entries } },
134
- ]),
135
- );
136
-
137
- export const strictDesignSystemRules = {
138
- ...Object.fromEntries(
139
- Object.keys(strictDesignSystemSelectors).map((name) => [`nadicodeai/${name}`, "error"]),
140
- ),
141
- "nadicodeai/no-shadcn-appearance-override": "error",
142
- };
143
-
144
- /** @type {import('eslint').ESLint.Plugin} */
145
- const plugin = {
146
- meta: {
147
- name: "@nadicodeai/eslint-plugin",
148
- version,
149
- },
150
- configs: {},
151
- rules: {
152
- ...strictSelectorRules,
153
- "badge-is-static-label": badgeIsStaticLabel,
154
- "button-icon-slot": buttonIconSlot,
155
- "button-link-for-navigation": buttonLinkForNavigation,
156
- "button-no-aria-label-with-text": buttonNoAriaLabelWithText,
157
- "button-type-roles-only-in-buttons": buttonTypeRolesOnlyInButtons,
158
- "choice-control-has-a-name": choiceControlHasAName,
159
- "choice-group-in-fieldset": choiceGroupInFieldset,
160
- "command-shortcut-single-owner": commandShortcutSingleOwner,
161
- "confirm-dialog-words": confirmDialogWords,
162
- "data-table-one-unsized-column": dataTableOneUnsizedColumn,
163
- "destructive-action-placement": destructiveActionPlacement,
164
- "disabled-choice-says-why": disabledChoiceSaysWhy,
165
- "disabled-control-appearance": disabledControlAppearance,
166
- "settings-limit-in-footer": settingsLimitInFooter,
167
- "ellipsis-opens-a-dialog": ellipsisOpensADialog,
168
- "empty-state-owner": emptyStateOwner,
169
- "input-group-owners": inputGroupOwners,
170
- "kbd-children-no-modifier-text": kbdChildrenNoModifierText,
171
- "menu-owner": menuOwner,
172
- "middle-truncate-placement": middleTruncatePlacement,
173
- "no-app-feature-component": noAppFeatureComponent,
174
- "no-bare-button-label": noBareButtonLabel,
175
- "no-choice-control-wrapper": noChoiceControlWrapper,
176
- "no-comment": noComment,
177
- "no-control-in-read-only-surface": noControlInReadOnlySurface,
178
- "no-decorative-icon": noDecorativeIcon,
179
- "no-deprecated-zod-api": noDeprecatedZodApi,
180
- "no-global-patch": noGlobalPatch,
181
- "no-hand-built-busy": noHandBuiltBusy,
182
- "no-hand-built-theme-picker": noHandBuiltThemePicker,
183
- "no-hand-built-tile": noHandBuiltTile,
184
- "no-hand-formatted-date": noHandFormattedDate,
185
- "no-hand-stacked-avatars": noHandStackedAvatars,
186
- "no-nested-collapse": noNestedCollapse,
187
- "no-package-component-redefinition": noPackageComponentRedefinition,
188
- "no-search-in-form": noSearchInForm,
189
- "no-shadcn-appearance-override": noShadcnAppearanceOverride,
190
- "no-shell-prompt-in-snippet": noShellPromptInSnippet,
191
- "no-stock-error-words": noStockErrorWords,
192
- "no-subject-derived-expectation": noSubjectDerivedExpectation,
193
- "no-tooltip-around-labelled-field": noTooltipAroundLabelledField,
194
- "no-weight-class-on-strong-in-type-role": noWeightClassOnStrongInTypeRole,
195
- "no-write-in-subscription": noWriteInSubscription,
196
- "one-submenu-level": oneSubmenuLevel,
197
- "one-toast-per-flow": oneToastPerFlow,
198
- "option-count": optionCount,
199
- "page-command-link-not-render": pageCommandLinkNotRender,
200
- "page-composition": pageComposition,
201
- "progress-needs-name": progressNeedsName,
202
- "server-action-discipline": serverActionDiscipline,
203
- "skeleton-in-region": skeletonInRegion,
204
- "sortable-heading-uses-sort": sortableHeadingUsesSort,
205
- "table-cell-inset-owner": tableCellInsetOwner,
206
- "tabs-selection-is-controlled": tabsSelectionIsControlled,
207
- "test-files-from-one-definition": testFilesFromOneDefinition,
208
- "tooltip-only-arrow": tooltipOnlyArrow,
209
- "tooltip-trigger-accessible-name": tooltipTriggerAccessibleName,
210
- "workspace-declares-imports": workspaceDeclaresImports,
211
- },
212
- };
213
-
214
- export const strictDesignSystemConfig = [
215
- {
216
- name: "nadicodeai/design-system-strict",
217
- plugins: { nadicodeai: plugin },
218
- rules: strictDesignSystemRules,
219
- },
220
- ];
221
-
222
- plugin.configs["flat/strict"] = strictDesignSystemConfig;
223
-
224
- export default plugin;