@agent-native/core 0.98.0 → 0.98.1

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 (243) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +24 -0
  3. package/corpus/core/package.json +2 -2
  4. package/corpus/core/src/action-change-marker.ts +8 -1
  5. package/corpus/core/src/changelog/parse.ts +8 -3
  6. package/corpus/core/src/client/AgentPanel.tsx +2 -3
  7. package/corpus/core/src/client/AssistantChat.tsx +83 -39
  8. package/corpus/core/src/client/analytics.ts +29 -0
  9. package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +16 -2
  10. package/corpus/core/src/client/chat-model-groups.ts +28 -0
  11. package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +442 -85
  12. package/corpus/core/src/client/composer/TiptapComposer.tsx +46 -29
  13. package/corpus/core/src/client/composer/VoiceButton.tsx +2 -1
  14. package/corpus/core/src/client/composer/index.ts +5 -0
  15. package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +1206 -67
  16. package/corpus/core/src/client/index.ts +5 -0
  17. package/corpus/core/src/client/progress/RunsTray.tsx +13 -1
  18. package/corpus/core/src/client/settings/SecretsSection.tsx +387 -266
  19. package/corpus/core/src/client/settings/SettingsPanel.tsx +117 -38
  20. package/corpus/core/src/client/use-action.ts +12 -0
  21. package/corpus/core/src/client/use-agent-chat-home-handoff.ts +8 -1
  22. package/corpus/core/src/client/use-agent-engine-configured.ts +17 -3
  23. package/corpus/core/src/client/use-db-sync.ts +84 -34
  24. package/corpus/core/src/client/use-pausing-interval.ts +14 -4
  25. package/corpus/core/src/integrations/scope-store.ts +1 -1
  26. package/corpus/core/src/integrations/usage-budget-store.ts +1 -1
  27. package/corpus/core/src/localization/default-messages.ts +44 -1
  28. package/corpus/core/src/mcp-client/workspace-servers.ts +4 -4
  29. package/corpus/core/src/secrets/crypto.ts +28 -8
  30. package/corpus/core/src/server/action-change.ts +5 -1
  31. package/corpus/core/src/server/action-routes.ts +8 -0
  32. package/corpus/core/src/server/poll.ts +1 -0
  33. package/corpus/core/src/server/realtime-voice.ts +299 -13
  34. package/corpus/core/src/styles/agent-native.css +2 -2
  35. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
  36. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
  37. package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
  38. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
  39. package/corpus/core/src/vite/client.ts +9 -1
  40. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +2 -2
  41. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +10 -5
  42. package/corpus/templates/analytics/AGENTS.md +9 -13
  43. package/corpus/templates/analytics/actions/navigate.ts +59 -5
  44. package/corpus/templates/analytics/actions/view-screen.ts +3 -6
  45. package/corpus/templates/analytics/app/components/ProviderCorpusJobNotifier.tsx +20 -3
  46. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +2 -1
  47. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
  48. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +21 -6
  49. package/corpus/templates/analytics/app/global.css +19 -20
  50. package/corpus/templates/analytics/app/lib/provider-corpus-job-sync.ts +26 -0
  51. package/corpus/templates/analytics/app/pages/Settings.tsx +35 -341
  52. package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +38 -7
  53. package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +1 -1
  54. package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +3 -0
  55. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +333 -272
  56. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +72 -17
  57. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +297 -108
  58. package/corpus/templates/analytics/app/root.tsx +28 -8
  59. package/corpus/templates/analytics/changelog/2026-06-24-first-party-signup-and-pageview-panels-now-honor-dashboard-filters.md +2 -1
  60. package/corpus/templates/analytics/changelog/2026-06-25-referrer-dashboard-panels-show-external-domains.md +2 -1
  61. package/corpus/templates/analytics/changelog/2026-07-06-mobile-chat-header-is-more-compact-and-the-menu-button-opens-navigation.md +1 -0
  62. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +1 -0
  63. package/corpus/templates/analytics/changelog/2026-07-08-settings-are-cleaner-searchable-and-alerts-have-their-own-tab.md +1 -0
  64. package/corpus/templates/analytics/changelog/2026-07-08-sidebar-sections-stay-collapsed-until-opened.md +1 -0
  65. package/corpus/templates/analytics/changelog/2026-07-11-analytics-no-longer-repeatedly-restarts-background-requests-.md +6 -0
  66. package/corpus/templates/analytics/changelog/2026-07-11-analytics-only-asks-for-replay-storage-when-you-enable-sessi.md +6 -0
  67. package/corpus/templates/analytics/changelog/2026-07-11-charts-now-show-their-loading-skeleton-while-refreshing.md +6 -0
  68. package/corpus/templates/analytics/changelog/2026-07-11-realtime-voice-now-shows-a-clear-connection-indicator-comple.md +6 -0
  69. package/corpus/templates/analytics/changelog/2026-07-11-replay-event-counts-stay-hidden-until-recordings-finish-load.md +6 -0
  70. package/corpus/templates/analytics/changelog/2026-07-11-replay-storage-key-mismatches-show-actionable-setup-guidance.md +6 -0
  71. package/corpus/templates/analytics/changelog/2026-07-11-replay-timelines-group-continuous-scrolling-and-dev-tools-co.md +6 -0
  72. package/corpus/templates/analytics/changelog/2026-07-11-session-filters-now-stay-compact-in-a-settings-menu-at-mediu.md +6 -0
  73. package/corpus/templates/analytics/changelog/2026-07-11-session-replay-console-errors-now-link-to-matching-issues-or.md +6 -0
  74. package/corpus/templates/analytics/changelog/2026-07-11-session-replays-load-large-recordings-faster-and-surface-fai.md +6 -0
  75. package/corpus/templates/analytics/changelog/2026-07-11-session-replays-preserve-recorded-styles-and-viewport-layout.md +6 -0
  76. package/corpus/templates/analytics/changelog/2026-07-11-session-replays-stay-centered-instead-of-clipping-wide-recor.md +6 -0
  77. package/corpus/templates/analytics/package.json +1 -1
  78. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +1 -303
  79. package/corpus/templates/analytics/server/handlers/session-replay.ts +57 -0
  80. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +1 -1
  81. package/corpus/templates/analytics/server/lib/demo-dashboards.ts +16 -3
  82. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +12 -0
  83. package/corpus/templates/analytics/server/lib/session-replay.ts +208 -2
  84. package/corpus/templates/analytics/server/plugins/onboarding.ts +7 -79
  85. package/corpus/templates/analytics/server/routes/api/session-replay/recordings/[recordingId]/chunks.get.ts +1 -0
  86. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +2 -2
  87. package/corpus/templates/assets/app/global.css +4 -4
  88. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +0 -1
  89. package/corpus/templates/assets/app/routes/library.tsx +0 -1
  90. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +2 -2
  91. package/corpus/templates/brain/app/global.css +5 -5
  92. package/corpus/templates/brain/app/root.tsx +0 -3
  93. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +2 -2
  94. package/corpus/templates/calendar/app/root.tsx +1 -0
  95. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +2 -2
  96. package/corpus/templates/clips/app/hooks/use-auto-title.ts +74 -8
  97. package/corpus/templates/clips/app/hooks/use-library.ts +12 -25
  98. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +20 -22
  99. package/corpus/templates/clips/changelog/2026-07-11-generated-titles-no-longer-cause-continuous-background-refreshes.md +6 -0
  100. package/corpus/templates/clips/changelog/2026-07-11-s3-storage-setup-stays-collapsed-until-you-choose-it-as-the-.md +6 -0
  101. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +2 -2
  102. package/corpus/templates/content/app/hooks/use-comments.ts +0 -1
  103. package/corpus/templates/content/changelog/2026-07-11-comments-now-update-from-live-collaboration-events-without-c.md +6 -0
  104. package/corpus/templates/design/app/components/layout/Header.tsx +1 -1
  105. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +2 -2
  106. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -2
  107. package/corpus/templates/macros/app/root.tsx +0 -3
  108. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +2 -2
  109. package/corpus/templates/mail/app/hooks/use-compose-state.ts +1 -0
  110. package/corpus/templates/mail/app/root.tsx +1 -12
  111. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +2 -2
  112. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +5 -2
  113. package/corpus/templates/plan/app/hooks/use-plans.ts +6 -13
  114. package/corpus/templates/plan/app/pages/PlansPage.tsx +5 -27
  115. package/corpus/templates/plan/changelog/2026-07-11-plan-refreshes-only-when-content-changes.md +6 -0
  116. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +4 -1
  117. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +1 -1
  118. package/corpus/templates/slides/app/components/layout/Header.tsx +1 -1
  119. package/corpus/templates/slides/app/context/DeckContext.tsx +1 -0
  120. package/corpus/templates/slides/app/hooks/use-slide-comments.ts +7 -31
  121. package/corpus/templates/slides/changelog/2026-07-11-comments-now-update-from-live-collaboration-events-without-c.md +6 -0
  122. package/dist/action-change-marker.d.ts +1 -0
  123. package/dist/action-change-marker.d.ts.map +1 -1
  124. package/dist/action-change-marker.js +7 -1
  125. package/dist/action-change-marker.js.map +1 -1
  126. package/dist/changelog/parse.d.ts +4 -2
  127. package/dist/changelog/parse.d.ts.map +1 -1
  128. package/dist/changelog/parse.js +5 -3
  129. package/dist/changelog/parse.js.map +1 -1
  130. package/dist/client/AgentPanel.d.ts.map +1 -1
  131. package/dist/client/AgentPanel.js +2 -3
  132. package/dist/client/AgentPanel.js.map +1 -1
  133. package/dist/client/AssistantChat.d.ts +7 -0
  134. package/dist/client/AssistantChat.d.ts.map +1 -1
  135. package/dist/client/AssistantChat.js +62 -40
  136. package/dist/client/AssistantChat.js.map +1 -1
  137. package/dist/client/analytics.d.ts.map +1 -1
  138. package/dist/client/analytics.js +26 -0
  139. package/dist/client/analytics.js.map +1 -1
  140. package/dist/client/blocks/library/wireframe-kit.d.ts +2 -0
  141. package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
  142. package/dist/client/blocks/library/wireframe-kit.js +9 -2
  143. package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
  144. package/dist/client/chat-model-groups.d.ts.map +1 -1
  145. package/dist/client/chat-model-groups.js +24 -0
  146. package/dist/client/chat-model-groups.js.map +1 -1
  147. package/dist/client/composer/RealtimeVoiceMode.d.ts +40 -4
  148. package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -1
  149. package/dist/client/composer/RealtimeVoiceMode.js +172 -42
  150. package/dist/client/composer/RealtimeVoiceMode.js.map +1 -1
  151. package/dist/client/composer/TiptapComposer.d.ts +4 -0
  152. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  153. package/dist/client/composer/TiptapComposer.js +47 -29
  154. package/dist/client/composer/TiptapComposer.js.map +1 -1
  155. package/dist/client/composer/VoiceButton.d.ts.map +1 -1
  156. package/dist/client/composer/VoiceButton.js +2 -2
  157. package/dist/client/composer/VoiceButton.js.map +1 -1
  158. package/dist/client/composer/index.d.ts +2 -2
  159. package/dist/client/composer/index.d.ts.map +1 -1
  160. package/dist/client/composer/index.js +1 -1
  161. package/dist/client/composer/index.js.map +1 -1
  162. package/dist/client/composer/useRealtimeVoiceMode.d.ts +100 -3
  163. package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  164. package/dist/client/composer/useRealtimeVoiceMode.js +952 -51
  165. package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -1
  166. package/dist/client/index.d.ts +1 -1
  167. package/dist/client/index.d.ts.map +1 -1
  168. package/dist/client/index.js +1 -1
  169. package/dist/client/index.js.map +1 -1
  170. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  171. package/dist/client/progress/RunsTray.js +10 -1
  172. package/dist/client/progress/RunsTray.js.map +1 -1
  173. package/dist/client/settings/SecretsSection.d.ts +2 -3
  174. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  175. package/dist/client/settings/SecretsSection.js +46 -22
  176. package/dist/client/settings/SecretsSection.js.map +1 -1
  177. package/dist/client/settings/SettingsPanel.d.ts +9 -0
  178. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  179. package/dist/client/settings/SettingsPanel.js +46 -12
  180. package/dist/client/settings/SettingsPanel.js.map +1 -1
  181. package/dist/client/use-action.d.ts +2 -0
  182. package/dist/client/use-action.d.ts.map +1 -1
  183. package/dist/client/use-action.js +10 -0
  184. package/dist/client/use-action.js.map +1 -1
  185. package/dist/client/use-agent-chat-home-handoff.d.ts +2 -0
  186. package/dist/client/use-agent-chat-home-handoff.d.ts.map +1 -1
  187. package/dist/client/use-agent-chat-home-handoff.js +7 -1
  188. package/dist/client/use-agent-chat-home-handoff.js.map +1 -1
  189. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  190. package/dist/client/use-agent-engine-configured.js +17 -3
  191. package/dist/client/use-agent-engine-configured.js.map +1 -1
  192. package/dist/client/use-db-sync.d.ts +8 -2
  193. package/dist/client/use-db-sync.d.ts.map +1 -1
  194. package/dist/client/use-db-sync.js +57 -32
  195. package/dist/client/use-db-sync.js.map +1 -1
  196. package/dist/client/use-pausing-interval.d.ts.map +1 -1
  197. package/dist/client/use-pausing-interval.js +16 -4
  198. package/dist/client/use-pausing-interval.js.map +1 -1
  199. package/dist/integrations/scope-store.js +1 -1
  200. package/dist/integrations/scope-store.js.map +1 -1
  201. package/dist/integrations/usage-budget-store.js +1 -1
  202. package/dist/integrations/usage-budget-store.js.map +1 -1
  203. package/dist/localization/default-messages.d.ts +41 -1
  204. package/dist/localization/default-messages.d.ts.map +1 -1
  205. package/dist/localization/default-messages.js +41 -1
  206. package/dist/localization/default-messages.js.map +1 -1
  207. package/dist/mcp-client/workspace-servers.js +4 -4
  208. package/dist/mcp-client/workspace-servers.js.map +1 -1
  209. package/dist/observability/routes.d.ts +5 -5
  210. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  211. package/dist/secrets/crypto.d.ts +7 -6
  212. package/dist/secrets/crypto.d.ts.map +1 -1
  213. package/dist/secrets/crypto.js +30 -11
  214. package/dist/secrets/crypto.js.map +1 -1
  215. package/dist/secrets/routes.d.ts +9 -9
  216. package/dist/server/action-change.d.ts +1 -0
  217. package/dist/server/action-change.d.ts.map +1 -1
  218. package/dist/server/action-change.js +4 -1
  219. package/dist/server/action-change.js.map +1 -1
  220. package/dist/server/action-routes.d.ts.map +1 -1
  221. package/dist/server/action-routes.js +5 -0
  222. package/dist/server/action-routes.js.map +1 -1
  223. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  224. package/dist/server/poll.d.ts.map +1 -1
  225. package/dist/server/poll.js +1 -0
  226. package/dist/server/poll.js.map +1 -1
  227. package/dist/server/realtime-voice.d.ts +7 -0
  228. package/dist/server/realtime-voice.d.ts.map +1 -1
  229. package/dist/server/realtime-voice.js +222 -12
  230. package/dist/server/realtime-voice.js.map +1 -1
  231. package/dist/styles/agent-native.css +2 -2
  232. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
  233. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
  234. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
  235. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
  236. package/dist/vite/client.d.ts.map +1 -1
  237. package/dist/vite/client.js +6 -1
  238. package/dist/vite/client.js.map +1 -1
  239. package/package.json +2 -2
  240. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
  241. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
  242. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
  243. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
@@ -1 +1 @@
1
- {"version":3,"file":"wireframe-kit.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/wireframe-kit.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport rough from \"roughjs\";\n\nimport type {\n WireframeElName,\n WireframeNode,\n WireframeTone,\n} from \"./wireframe.config.js\";\n\n/**\n * Shared wireframe \"kit\" — hand-drawn low-fi primitives, the el → component node\n * registry, the rough.js sketch overlay, and the viewer-level sketchy/clean\n * style preference. Ported verbatim (geometry-wise) from the plan template's\n * `app/components/plan/wireframe/kit/*` so any app can render wireframe blocks.\n *\n * DECOUPLING: the only behavioral change from the plan copy is theme detection —\n * core blocks read `document.documentElement.classList.contains(\"dark\")` (the\n * MermaidBlock precedent) instead of importing `next-themes`. Everything else\n * (the `.plan-wf` / `.wf-*` / `[data-rough]` class contract the rough overlay\n * measures, the `--wf-*` / `--ink` / `--paper` token names every primitive\n * reads) is preserved exactly, so the kit looks identical in plan and renders\n * correctly in any app once the matching tokens exist in `core/styles/blocks.css`.\n */\n\n/* ========================================================================== */\n/* Viewer-level wireframe style preference (localStorage) */\n/* ========================================================================== */\n\nexport type WireframeStyle = \"sketchy\" | \"clean\";\n\nconst STYLE_STORAGE_KEY = \"plan-wireframe-style\";\nconst styleListeners = new Set<() => void>();\n\nfunction readStoredStyle(): WireframeStyle {\n if (typeof localStorage === \"undefined\") return \"sketchy\";\n try {\n return localStorage.getItem(STYLE_STORAGE_KEY) === \"clean\"\n ? \"clean\"\n : \"sketchy\";\n } catch {\n return \"sketchy\";\n }\n}\n\nlet currentStyle: WireframeStyle = readStoredStyle();\n\nexport function setWireframeStyle(style: WireframeStyle): void {\n if (style === currentStyle) return;\n currentStyle = style;\n try {\n localStorage.setItem(STYLE_STORAGE_KEY, style);\n } catch {\n // ignore (private mode / disabled storage)\n }\n for (const listener of styleListeners) listener();\n}\n\nexport function toggleWireframeStyle(): void {\n setWireframeStyle(currentStyle === \"sketchy\" ? \"clean\" : \"sketchy\");\n}\n\nfunction subscribeStyle(callback: () => void): () => void {\n styleListeners.add(callback);\n const onStorage = (event: StorageEvent) => {\n if (event.key === STYLE_STORAGE_KEY) {\n currentStyle = readStoredStyle();\n callback();\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"storage\", onStorage);\n }\n return () => {\n styleListeners.delete(callback);\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"storage\", onStorage);\n }\n };\n}\n\nexport function useWireframeStyle(): WireframeStyle {\n return useSyncExternalStore(\n subscribeStyle,\n () => currentStyle,\n () => \"sketchy\",\n );\n}\n\n/** Read the live dark-mode flag from the document root (next-themes-free). */\nexport function useIsDark(): boolean {\n const [isDark, setIsDark] = useState(false);\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const root = document.documentElement;\n const read = () => setIsDark(root.classList.contains(\"dark\"));\n read();\n const observer = new MutationObserver(read);\n observer.observe(root, { attributes: true, attributeFilter: [\"class\"] });\n return () => observer.disconnect();\n }, []);\n return isDark;\n}\n\n/* ========================================================================== */\n/* Primitives (ported from kit/primitives.tsx) */\n/* ========================================================================== */\n\n/**\n * Frame-level config threaded to every Screen so skeleton / theme / sketch-vs-\n * clean reach the kit no matter which path renders the root Screen.\n */\nexport const KitConfigContext = createContext<{\n skeleton?: boolean;\n flushFrame?: boolean;\n sketch?: number;\n theme?: \"light\" | \"dark\";\n style?: \"sketchy\" | \"clean\";\n}>({});\n\nconst V = {\n ink: \"var(--ink)\",\n soft: \"var(--ink-soft)\",\n line: \"var(--line)\",\n paper: \"var(--paper)\",\n card: \"var(--card)\",\n accent: \"var(--accent)\",\n accentSoft: \"var(--accent-soft)\",\n warn: \"var(--warn)\",\n warnSoft: \"var(--warn-soft)\",\n ok: \"var(--ok)\",\n okSoft: \"var(--ok-soft)\",\n stroke: \"var(--stroke)\",\n radius: \"var(--radius)\",\n gap: \"var(--gap)\",\n pad: \"var(--pad)\",\n fs: \"var(--fs)\",\n hand: \"var(--font-hand)\",\n script: \"var(--font-script)\",\n} as const;\n\ntype ToneColors = { fg: string; bg: string; bd: string };\n\nfunction toneColors(tone: WireframeTone = \"default\"): ToneColors {\n switch (tone) {\n case \"accent\":\n return { fg: V.accent, bg: V.accentSoft, bd: V.accent };\n case \"warn\":\n return { fg: V.warn, bg: V.warnSoft, bd: V.warn };\n case \"ok\":\n return { fg: V.ok, bg: V.okSoft, bd: V.ok };\n case \"muted\":\n return { fg: V.soft, bg: \"transparent\", bd: V.soft };\n default:\n return { fg: V.ink, bg: \"transparent\", bd: V.ink };\n }\n}\n\nfunction toneInk(tone?: WireframeTone): string {\n return toneColors(tone).fg;\n}\n\nfunction fontWeight(weight?: \"normal\" | \"medium\" | \"bold\"): number {\n if (weight === \"bold\") return 700;\n if (weight === \"medium\") return 600;\n return 400;\n}\n\nexport function Screen({\n children,\n pad = 0,\n sketch,\n density,\n theme,\n skeleton = false,\n style = {},\n}: {\n children?: ReactNode;\n pad?: number | string;\n sketch?: number;\n density?: \"compact\" | \"regular\" | \"roomy\";\n theme?: \"light\" | \"dark\";\n skeleton?: boolean;\n style?: CSSProperties;\n}) {\n const cfg = useContext(KitConfigContext);\n const isSkeleton = skeleton || Boolean(cfg.skeleton);\n const wfStyle = cfg.style ?? \"sketchy\";\n const wfTheme = theme ?? cfg.theme ?? \"light\";\n const effectivePad = cfg.flushFrame ? 0 : pad;\n void sketch;\n return (\n <div\n className=\"plan-wf\"\n data-density={density ?? \"regular\"}\n data-theme={wfTheme}\n data-skeleton={isSkeleton ? \"true\" : undefined}\n data-style={wfStyle}\n style={{\n position: \"relative\",\n width: \"100%\",\n // `minHeight` (not a fixed `height: 100%`) so the screen fills an\n // auto-height artboard's floor yet grows with its content instead of\n // clipping. The frame shell (`ArtboardFrame`) owns the height policy; a\n // caller can still override via `style.height` for a fixed canvas.\n minHeight: \"100%\",\n background: \"transparent\",\n color: V.ink,\n fontFamily: V.hand,\n fontSize: V.fs,\n lineHeight: 1.25,\n display: \"flex\",\n flexDirection: \"column\",\n padding: effectivePad,\n boxSizing: \"border-box\",\n overflow: \"hidden\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Hand({\n children,\n size,\n weight = 400,\n color = V.ink,\n script = false,\n style = {},\n}: {\n children?: ReactNode;\n size?: number | string;\n weight?: number;\n color?: string;\n script?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <span\n style={{\n fontFamily: script ? V.script : V.hand,\n fontSize: size ?? V.fs,\n fontWeight: weight,\n color,\n minWidth: 0,\n overflowWrap: \"break-word\",\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n\nexport function Bar({\n w = 80,\n h,\n color = V.line,\n r = 4,\n style = {},\n}: {\n w?: number | string;\n h?: number | string;\n color?: string;\n r?: number | string;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n width: w,\n height: h ?? \"calc(var(--fs) * 0.72)\",\n background: color,\n borderRadius: r,\n flex: \"0 0 auto\",\n ...style,\n }}\n />\n );\n}\n\nexport function Lines({\n n = 2,\n gap = 6,\n widths,\n color = V.line,\n style = {},\n}: {\n n?: number;\n gap?: number;\n widths?: Array<number | string>;\n color?: string;\n style?: CSSProperties;\n}) {\n const ws =\n widths ??\n Array.from({ length: n }, (_, i) => (i === n - 1 ? \"55%\" : \"100%\"));\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap, ...style }}>\n {ws.map((w, i) => (\n <Bar key={i} w={typeof w === \"number\" ? `${w}%` : w} color={color} />\n ))}\n </div>\n );\n}\n\nexport function Box({\n children,\n pad = V.pad,\n fill = V.card,\n dashed = false,\n style = {},\n}: {\n children?: ReactNode;\n pad?: number | string;\n fill?: string;\n dashed?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n border: `${V.stroke} ${dashed ? \"dashed\" : \"solid\"} ${V.ink}`,\n borderRadius: V.radius,\n background: fill,\n padding: pad,\n boxSizing: \"border-box\",\n minWidth: 0,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Check({\n done = false,\n shape = \"square\",\n size = 18,\n}: {\n done?: boolean;\n shape?: \"square\" | \"circle\";\n size?: number;\n}) {\n const r = shape === \"circle\" ? \"50%\" : \"calc(var(--radius) * 0.5)\";\n return (\n <div\n data-rough={shape === \"circle\" ? \"ellipse\" : \"rect\"}\n style={{\n [\"--rough-stroke\" as string]: done ? V.accent : V.ink,\n width: size,\n height: size,\n flex: \"0 0 auto\",\n borderRadius: r,\n border: `${V.stroke} solid ${done ? V.accent : V.ink}`,\n background: done ? V.accent : \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {done && (\n <svg\n width={size * 0.6}\n height={size * 0.6}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"#fff\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M2 6.5l2.5 2.5L10 3\" />\n </svg>\n )}\n </div>\n );\n}\n\nexport function Pill({\n children,\n tone = \"default\",\n style = {},\n}: {\n children?: ReactNode;\n tone?: WireframeTone;\n style?: CSSProperties;\n}) {\n const c = toneColors(tone);\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n border: `${V.stroke} solid ${c.bd}`,\n background: c.bg,\n color: c.fg,\n borderRadius: 999,\n padding: \"2px 9px\",\n fontSize: \"calc(var(--fs) * 0.82)\",\n fontFamily: V.hand,\n maxWidth: \"100%\",\n minWidth: 0,\n whiteSpace: \"normal\",\n overflowWrap: \"anywhere\",\n lineHeight: 1.3,\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n\nexport function Prio({ level = 2, label }: { level?: number; label?: string }) {\n const fill = level === 1 ? V.warn : level === 2 ? V.soft : \"transparent\";\n const bd = level === 3 ? V.soft : \"transparent\";\n return (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 5 }}>\n <span\n style={{\n width: 9,\n height: 9,\n borderRadius: \"50%\",\n background: fill,\n border: `${V.stroke} solid ${bd}`,\n flex: \"0 0 auto\",\n }}\n />\n {label && (\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {label}\n </Hand>\n )}\n </span>\n );\n}\n\nexport function Btn({\n children,\n solid = false,\n full = false,\n size = \"md\",\n tone = \"default\",\n style = {},\n}: {\n children?: ReactNode;\n solid?: boolean;\n full?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n tone?: WireframeTone;\n style?: CSSProperties;\n}) {\n const pad =\n size === \"sm\" ? \"4px 10px\" : size === \"lg\" ? \"10px 18px\" : \"7px 14px\";\n const c = toneColors(tone === \"default\" ? \"accent\" : tone);\n return (\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: solid ? c.bd : V.ink,\n display: full ? \"flex\" : \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 6,\n border: `${V.stroke} solid ${solid ? c.bd : V.ink}`,\n background: solid ? c.bd : \"transparent\",\n color: solid ? \"#fff\" : V.ink,\n borderRadius: V.radius,\n padding: pad,\n fontFamily: V.hand,\n fontSize: V.fs,\n fontWeight: 700,\n width: full ? \"100%\" : \"auto\",\n maxWidth: \"100%\",\n minWidth: 0,\n boxSizing: \"border-box\",\n whiteSpace: \"normal\",\n overflowWrap: \"anywhere\",\n textAlign: \"center\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Chip({\n children,\n active = false,\n style = {},\n}: {\n children?: ReactNode;\n active?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n border: `${V.stroke} solid ${active ? V.accent : V.ink}`,\n background: active ? V.accentSoft : \"transparent\",\n color: active ? V.accent : V.ink,\n borderRadius: 999,\n padding: \"4px 12px\",\n fontSize: \"calc(var(--fs) * 0.88)\",\n fontFamily: V.hand,\n fontWeight: active ? 700 : 400,\n maxWidth: \"100%\",\n minWidth: 0,\n whiteSpace: \"normal\",\n overflowWrap: \"anywhere\",\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n\nexport function Field({\n label,\n value,\n placeholder,\n h,\n area = false,\n right,\n style = {},\n}: {\n label?: string;\n value?: string;\n placeholder?: number | string;\n h?: number | string;\n area?: boolean;\n right?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 5, ...style }}>\n {label && (\n <Hand size=\"calc(var(--fs) * 0.86)\" color={V.soft} weight={700}>\n {label}\n </Hand>\n )}\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n border: `${V.stroke} solid ${V.ink}`,\n borderRadius: V.radius,\n background: V.card,\n padding: \"calc(var(--pad) * 0.8)\",\n minHeight: h ?? (area ? 64 : \"auto\"),\n display: \"flex\",\n alignItems: area ? \"flex-start\" : \"center\",\n justifyContent: \"space-between\",\n minWidth: 0,\n gap: 8,\n }}\n >\n {value ? (\n <Hand style={{ minWidth: 0, overflowWrap: \"anywhere\" }}>{value}</Hand>\n ) : area ? (\n <Lines n={2} widths={[\"85%\", \"60%\"]} />\n ) : (\n <Bar w={placeholder ?? 110} />\n )}\n {right}\n </div>\n </div>\n );\n}\n\nexport function StatusBar() {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"9px 18px 2px\",\n flex: \"0 0 auto\",\n }}\n >\n <Hand size=\"calc(var(--fs) * 0.82)\" weight={700}>\n 9:41\n </Hand>\n <div style={{ display: \"flex\", gap: 5, alignItems: \"center\" }}>\n <Bar w={16} h={8} color={V.soft} r={2} />\n <Bar w={12} h={8} color={V.soft} r={2} />\n <Bar w={20} h={9} color={V.soft} r={2} />\n </div>\n </div>\n );\n}\n\nexport function Fab({ icon = \"+\" }: { icon?: string }) {\n return (\n <div\n data-rough=\"ellipse\"\n style={{\n [\"--rough-stroke\" as string]: V.accent,\n position: \"absolute\",\n right: 18,\n bottom: 22,\n width: 52,\n height: 52,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${V.accent}`,\n background: V.accent,\n color: \"#fff\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: V.hand,\n fontSize: 28,\n fontWeight: 700,\n lineHeight: 1,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.16)\",\n zIndex: 4,\n }}\n >\n {icon}\n </div>\n );\n}\n\nexport function BrowserBar({\n title = \"todo\",\n children,\n}: {\n title?: string;\n children?: ReactNode;\n}) {\n return (\n <div\n data-rough=\"line:bottom\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"9px 14px\",\n borderBottom: `${V.stroke} solid ${V.ink}`,\n flex: \"0 0 auto\",\n background: V.card,\n }}\n >\n <div style={{ display: \"flex\", gap: 6 }}>\n {[0, 1, 2].map((i) => (\n <span\n key={i}\n data-rough=\"ellipse\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n width: 11,\n height: 11,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${V.ink}`,\n }}\n />\n ))}\n </div>\n <div\n style={{\n flex: 1,\n border: `${V.stroke} solid ${V.soft}`,\n borderRadius: 999,\n padding: \"3px 12px\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n }}\n >\n <Bar w={12} h={10} color={V.soft} r={3} />\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {title}.app\n </Hand>\n </div>\n {children}\n </div>\n );\n}\n\nexport function SectionLabel({\n children,\n right,\n tone = \"muted\",\n}: {\n children?: ReactNode;\n right?: ReactNode;\n tone?: WireframeTone;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"baseline\",\n justifyContent: \"space-between\",\n minWidth: 0,\n gap: 8,\n }}\n >\n <Hand\n size=\"calc(var(--fs) * 0.9)\"\n weight={700}\n color={toneInk(tone)}\n style={{\n letterSpacing: 0.3,\n minWidth: 0,\n overflowWrap: \"anywhere\",\n }}\n >\n {children}\n </Hand>\n {right}\n </div>\n );\n}\n\nexport function Avatar({ size = 26 }: { size?: number }) {\n return (\n <div\n data-rough=\"ellipse\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n width: size,\n height: size,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${V.ink}`,\n background: V.accentSoft,\n flex: \"0 0 auto\",\n }}\n />\n );\n}\n\nexport function IconSquare({\n size = 18,\n active = false,\n}: {\n size?: number;\n active?: boolean;\n}) {\n return (\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: active ? V.accent : V.soft,\n width: size,\n height: size,\n flex: \"0 0 auto\",\n borderRadius: \"calc(var(--radius) * 0.5)\",\n border: `${V.stroke} solid ${active ? V.accent : V.soft}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"55%\",\n height: \"55%\",\n borderRadius: 2,\n background: active ? V.accent : V.line,\n }}\n />\n </div>\n );\n}\n\nexport function NavItem({\n label,\n count,\n active = false,\n dot = false,\n tone = \"accent\",\n}: {\n label?: string;\n count?: number;\n active?: boolean;\n dot?: boolean;\n tone?: WireframeTone;\n}) {\n const dotColor = toneInk(tone);\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 9,\n padding: \"5px 8px\",\n borderRadius: V.radius,\n background: active ? V.accentSoft : \"transparent\",\n minWidth: 0,\n }}\n >\n {dot ? (\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${dotColor}`,\n background: dotColor,\n flex: \"0 0 auto\",\n }}\n />\n ) : (\n <IconSquare size={15} active={active} />\n )}\n <Hand\n color={active ? V.accent : V.ink}\n weight={active ? 700 : 400}\n style={{ flex: 1, minWidth: 0 }}\n >\n {label}\n </Hand>\n {count != null && (\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {count}\n </Hand>\n )}\n </div>\n );\n}\n\nexport function Sidebar({\n children,\n width = 196,\n style = {},\n}: {\n children?: ReactNode;\n width?: number;\n style?: CSSProperties;\n}) {\n return (\n <div\n data-rough=\"line:right\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n width,\n flex: \"0 0 auto\",\n borderRight: `${V.stroke} solid ${V.ink}`,\n background: V.card,\n padding: V.pad,\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n minHeight: 0,\n minWidth: 0,\n alignSelf: \"stretch\",\n overflow: \"hidden\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Main({\n children,\n style = {},\n}: {\n children?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n padding: \"18px 24px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n overflow: \"hidden\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Row({\n children,\n full = false,\n style = {},\n}: {\n children?: ReactNode;\n full?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"stretch\",\n gap: V.gap,\n minWidth: 0,\n minHeight: 0,\n maxWidth: \"100%\",\n flex: full ? 1 : undefined,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Col({\n children,\n full = false,\n style = {},\n}: {\n children?: ReactNode;\n full?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n minWidth: 0,\n minHeight: 0,\n flex: full ? 1 : undefined,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function TaskRow({\n title,\n note,\n due,\n dueTone = \"default\",\n prio,\n done = false,\n}: {\n title?: string;\n note?: string;\n due?: string;\n dueTone?: WireframeTone;\n prio?: number;\n done?: boolean;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: V.gap,\n padding: \"calc(var(--pad) * 0.55) 0\",\n minWidth: 0,\n }}\n >\n <div style={{ marginTop: 1 }}>\n <Check done={done} />\n </div>\n <div\n style={{\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n }}\n >\n <Hand\n color={done ? V.soft : V.ink}\n style={done ? { textDecoration: \"line-through\" } : undefined}\n >\n {title}\n </Hand>\n {note && (\n <Hand size=\"calc(var(--fs) * 0.85)\" color={V.soft}>\n {note}\n </Hand>\n )}\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-end\",\n gap: 8,\n flex: \"0 0 auto\",\n }}\n >\n {due && <Pill tone={dueTone}>{due}</Pill>}\n {prio ? <Prio level={prio} /> : null}\n </div>\n </div>\n );\n}\n\nexport function Card({\n children,\n style = {},\n}: {\n children?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <Box\n pad=\"calc(var(--pad) * 0.9)\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n background: V.card,\n minWidth: 0,\n maxWidth: \"100%\",\n ...style,\n }}\n >\n {children}\n </Box>\n );\n}\n\nexport function Column({\n title,\n count,\n tone = \"muted\",\n width = 232,\n children,\n}: {\n title?: string;\n count?: number;\n tone?: WireframeTone;\n width?: number;\n children?: ReactNode;\n}) {\n return (\n <div\n style={{\n width,\n flex: \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{\n width: 9,\n height: 9,\n borderRadius: \"50%\",\n background: toneInk(tone),\n flex: \"0 0 auto\",\n }}\n />\n <Hand weight={700} style={{ whiteSpace: \"nowrap\" }}>\n {title}\n </Hand>\n {count != null && (\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {count}\n </Hand>\n )}\n <div style={{ flex: 1 }} />\n <Hand color={V.soft} weight={700}>\n +\n </Hand>\n </div>\n {children}\n </div>\n );\n}\n\nexport function Toolbar({\n children,\n style = {},\n}: {\n children?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <div\n data-rough=\"line:bottom\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: V.gap,\n padding: \"12px 22px\",\n borderBottom: `${V.stroke} solid ${V.ink}`,\n background: V.card,\n flex: \"0 0 auto\",\n minWidth: 0,\n flexWrap: \"wrap\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Tabs({\n items = [],\n}: {\n items?: Array<{ label: string; active?: boolean }>;\n}) {\n return (\n <div style={{ display: \"flex\", gap: 7, flexWrap: \"wrap\" }}>\n {items.map((item, i) => (\n <Chip key={i} active={item.active}>\n {item.label}\n </Chip>\n ))}\n </div>\n );\n}\n\nexport function KV({ rows = [] }: { rows?: Array<{ k: string; v: string }> }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {rows.map((row, i) => (\n <div\n key={i}\n style={{\n display: \"flex\",\n alignItems: \"baseline\",\n justifyContent: \"space-between\",\n gap: 12,\n }}\n >\n <Hand size=\"calc(var(--fs) * 0.88)\" color={V.soft}>\n {row.k}\n </Hand>\n <Hand\n style={{ textAlign: \"right\", minWidth: 0, wordBreak: \"break-word\" }}\n >\n {row.v}\n </Hand>\n </div>\n ))}\n </div>\n );\n}\n\nexport function SearchBar({\n placeholder = \"Search\",\n}: {\n placeholder?: string;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n border: `${V.stroke} solid ${V.soft}`,\n borderRadius: 999,\n padding: \"5px 11px\",\n background: V.card,\n }}\n >\n <Bar w={11} h={11} color={V.soft} r={3} />\n <Hand size=\"calc(var(--fs) * 0.85)\" color={V.soft}>\n {placeholder}\n </Hand>\n </div>\n );\n}\n\nexport function Divider({ style = {} }: { style?: CSSProperties }) {\n return (\n <div\n style={{\n height: V.stroke,\n background: V.line,\n flex: \"0 0 auto\",\n margin: \"3px 0\",\n ...style,\n }}\n />\n );\n}\n\nexport function Title({\n text,\n script = false,\n size = \"calc(var(--fs) * 2)\",\n color = V.ink,\n}: {\n text?: string;\n script?: boolean;\n size?: number | string;\n color?: string;\n}) {\n return (\n <Hand script={script} size={size} weight={700} color={color}>\n {text}\n </Hand>\n );\n}\n\nexport function Text({\n value,\n color,\n weight,\n script = false,\n}: {\n value?: string;\n color?: WireframeTone;\n weight?: \"normal\" | \"medium\" | \"bold\";\n script?: boolean;\n}) {\n return (\n <Hand color={toneInk(color)} weight={fontWeight(weight)} script={script}>\n {value}\n </Hand>\n );\n}\n\n/* ========================================================================== */\n/* Node registry (ported from kit/registry.tsx) */\n/* ========================================================================== */\n\ntype NodeRenderer = (node: WireframeNode, children: ReactNode) => ReactNode;\n\nconst REGISTRY: Record<WireframeElName, NodeRenderer> = {\n // --- Frame / structure -------------------------------------------------\n screen: (n) => {\n const kids = n.children ?? [];\n const lead = kids[0]?.el;\n if (lead === \"browserBar\") {\n return (\n <Screen pad={0}>\n {renderNode(kids[0], kids[0].id ?? \"browserbar\")}\n {renderScreenBodyNodes(kids.slice(1))}\n </Screen>\n );\n }\n if (lead === \"statusBar\") {\n return (\n <Screen pad={0}>\n {renderNode(kids[0], kids[0].id ?? \"statusbar\")}\n <div\n style={{\n flex: 1,\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--gap)\",\n padding: \"calc(var(--pad) * 1.1)\",\n }}\n >\n {renderScreenBodyNodes(kids.slice(1))}\n </div>\n </Screen>\n );\n }\n return (\n <Screen pad=\"calc(var(--pad) * 1.35)\">\n {renderScreenBodyNodes(kids)}\n </Screen>\n );\n },\n browserBar: (n, children) => (\n <BrowserBar title={n.title ?? n.text}>{children}</BrowserBar>\n ),\n statusBar: () => <StatusBar />,\n toolbar: (_n, children) => <Toolbar>{children}</Toolbar>,\n row: (n, children) => <Row full={n.full}>{children}</Row>,\n col: (n, children) => <Col full={n.full}>{children}</Col>,\n sidebar: (_n, children) => <Sidebar>{children}</Sidebar>,\n main: (_n, children) => <Main>{children}</Main>,\n box: (n, children) => <Box dashed={n.dashed}>{children}</Box>,\n card: (_n, children) => <Card>{children}</Card>,\n column: (n, children) => (\n <Column title={n.title ?? n.text} count={n.count} tone={n.tone}>\n {children}\n </Column>\n ),\n divider: () => <Divider />,\n\n // --- Text --------------------------------------------------------------\n title: (n) => <Title text={n.text} script={n.script} />,\n text: (n) => (\n <Text\n value={n.value ?? n.text}\n color={n.color}\n weight={n.weight}\n script={n.script}\n />\n ),\n lines: (n) => <Lines n={n.n} widths={n.widths} />,\n section: (n) => (\n <SectionLabel tone={n.tone}>{n.label ?? n.text}</SectionLabel>\n ),\n\n // --- List / task -------------------------------------------------------\n navItem: (n) => (\n <NavItem\n label={n.label ?? n.text}\n count={n.count}\n active={n.active}\n dot={n.dot}\n tone={n.tone}\n />\n ),\n taskRow: (n) => (\n <TaskRow\n title={n.title ?? n.text}\n note={n.note}\n due={n.due}\n dueTone={n.dueTone}\n prio={n.prio}\n done={n.done}\n />\n ),\n\n // --- Controls ----------------------------------------------------------\n chips: (n) => <Tabs items={n.items ?? []} />,\n chip: (n) => <Chip active={n.active}>{n.label ?? n.text}</Chip>,\n pill: (n) => <Pill tone={n.tone}>{n.label ?? n.text}</Pill>,\n check: (n) => <Check done={n.done} shape={n.shape} />,\n field: (n) => (\n <Field\n label={n.label}\n value={n.value}\n placeholder={n.placeholder}\n area={n.area}\n />\n ),\n btn: (n) => (\n <Btn solid={n.solid} full={n.full} tone={n.tone}>\n {n.label ?? n.text}\n </Btn>\n ),\n fab: (n) => <Fab icon={n.icon} />,\n searchBar: (n) => <SearchBar placeholder={n.placeholder} />,\n\n // --- Atoms -------------------------------------------------------------\n avatar: () => <Avatar />,\n iconSquare: (n) => <IconSquare active={n.active} />,\n kv: (n) => <KV rows={n.rows ?? []} />,\n};\n\nfunction renderScreenBodyNode(\n node: WireframeNode,\n key?: string | number,\n): ReactNode {\n const shouldFill =\n node.full !== false &&\n (node.el === \"row\" || node.el === \"col\" || node.el === \"main\");\n return renderNode(shouldFill ? { ...node, full: true } : node, key);\n}\n\nfunction renderScreenBodyNodes(nodes: WireframeNode[]): ReactNode {\n return nodes.map((node, i) =>\n renderScreenBodyNode(node, node.id ?? `screen-body-${i}`),\n );\n}\n\n/** Render a single kit-tree node (and its children, recursively). */\nexport function renderNode(\n node: WireframeNode,\n key?: string | number,\n): ReactNode {\n const renderer = REGISTRY[node.el];\n const children = node.children?.length ? renderNodes(node.children) : null;\n if (!renderer) {\n return children ? <div key={key}>{children}</div> : null;\n }\n const rendered = renderer(node, children);\n return <KeyedNode key={key ?? node.id}>{rendered}</KeyedNode>;\n}\n\n/** Render an array of nodes. */\nexport function renderNodes(nodes: WireframeNode[]): ReactNode {\n return nodes.map((node, i) => renderNode(node, node.id ?? i));\n}\n\n/** Lightweight keyed wrapper that does not introduce extra DOM. */\nfunction KeyedNode({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n\n/** Whether an `el` name has a registered renderer. */\nexport function hasRenderer(el: string): el is WireframeElName {\n return el in REGISTRY;\n}\n\nexport { REGISTRY as NODE_REGISTRY, V as WFV, toneColors, toneInk, fontWeight };\n\n/* ========================================================================== */\n/* Rough overlay (ported from kit/rough.tsx) */\n/* ========================================================================== */\n\nconst gen = rough.generator();\n\ntype RoughPath = { d: string; stroke: string; strokeWidth: number };\n\n/** The default selector used for HTML mockups: standard wireframe primitives plus explicit opt-ins. */\nexport const HTML_ROUGH_SELECTOR =\n \"[data-rough],button,input,textarea,select,hr,.wf-btn,.wf-card,.wf-box,.wf-pill,.wf-chip,.wf-icon-fallback,[style*='border:'],[style*='border-top:'],[style*='border-right:'],[style*='border-bottom:'],[style*='border-left:']\";\n\n/** Stable per-element seed so a frame doesn't re-wobble on every measure. */\nfunction seedFrom(...parts: Array<string | number>): number {\n const value = parts.join(\":\");\n let hash = 2166136261;\n for (let i = 0; i < value.length; i++) {\n hash ^= value.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return ((hash >>> 0) % 2147483646) + 1;\n}\n\n/** Map the 0–100 sketch slider to a rough.js roughness (calm + legible). */\nexport function sketchRoughness(sketch: number): number {\n const s = Math.max(0, Math.min(100, Number.isFinite(sketch) ? sketch : 0));\n return Number((0.32 + (s / 100) * 1.15).toFixed(2));\n}\n\nfunction sketchBowing(sketch: number): number {\n const s = Math.max(0, Math.min(100, Number.isFinite(sketch) ? sketch : 0));\n return Number((0.4 + (s / 100) * 0.5).toFixed(2));\n}\n\nfunction readVar(el: Element, name: string): string {\n return getComputedStyle(el).getPropertyValue(name).trim();\n}\n\n/** Normalize a CSS color (hex or rgb[a]) to \"r,g,b\" for equality comparison. */\nfunction toRgbKey(color: string): string | null {\n const c = color.trim();\n const hex = c.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);\n if (hex) {\n const h = hex[1];\n const full =\n h.length === 3\n ? h\n .split(\"\")\n .map((d) => d + d)\n .join(\"\")\n : h;\n const n = parseInt(full, 16);\n return `${(n >> 16) & 255},${(n >> 8) & 255},${n & 255}`;\n }\n const rgb = c.match(/rgba?\\(([^)]+)\\)/i);\n if (rgb) {\n const [r, g, b] = rgb[1].split(\",\").map((v) => parseInt(v.trim(), 10));\n return `${r},${g},${b}`;\n }\n return null;\n}\n\n/** True when two CSS colors resolve to the same RGB (hex vs rgb tolerant). */\nfunction sameColor(a: string, b: string): boolean {\n const ka = toRgbKey(a);\n const kb = toRgbKey(b);\n return ka !== null && ka === kb;\n}\n\n/** A rounded-rect SVG path (so the frame stroke follows the artboard radius). */\nfunction roundedRectPath(\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n): string {\n const rad = Math.max(0, Math.min(r, w / 2, h / 2));\n return [\n `M${x + rad},${y}`,\n `H${x + w - rad}`,\n `A${rad},${rad} 0 0 1 ${x + w},${y + rad}`,\n `V${y + h - rad}`,\n `A${rad},${rad} 0 0 1 ${x + w - rad},${y + h}`,\n `H${x + rad}`,\n `A${rad},${rad} 0 0 1 ${x},${y + h - rad}`,\n `V${y + rad}`,\n `A${rad},${rad} 0 0 1 ${x + rad},${y}`,\n \"Z\",\n ].join(\" \");\n}\n\nfunction elementStroke(node: Element, fallback: string): string {\n const explicit = readVar(node, \"--rough-stroke\");\n if (explicit) return explicit;\n const cs = getComputedStyle(node);\n for (const side of [\n \"borderTopColor\",\n \"borderLeftColor\",\n \"borderBottomColor\",\n \"borderRightColor\",\n ] as const) {\n const width = parseFloat(\n cs.getPropertyValue(side.replace(\"Color\", \"Width\")),\n );\n const color = cs[side];\n if (width > 0 && color && color !== \"rgba(0, 0, 0, 0)\") return color;\n }\n return fallback;\n}\n\nfunction visibleBorderSides(\n node: Element,\n): Array<\"top\" | \"right\" | \"bottom\" | \"left\"> {\n const cs = getComputedStyle(node);\n const sides: Array<\"top\" | \"right\" | \"bottom\" | \"left\"> = [];\n for (const [side, widthProp, colorProp] of [\n [\"top\", \"borderTopWidth\", \"borderTopColor\"],\n [\"right\", \"borderRightWidth\", \"borderRightColor\"],\n [\"bottom\", \"borderBottomWidth\", \"borderBottomColor\"],\n [\"left\", \"borderLeftWidth\", \"borderLeftColor\"],\n ] as const) {\n const width = parseFloat(cs[widthProp]);\n const color = cs[colorProp];\n if (\n width > 0 &&\n color &&\n color !== \"rgba(0, 0, 0, 0)\" &&\n color !== \"transparent\"\n ) {\n sides.push(side);\n }\n }\n return sides;\n}\n\nfunction inferRoughKind(node: HTMLElement): string {\n const explicit = node.getAttribute(\"data-rough\");\n if (explicit) return explicit;\n if (node.tagName === \"HR\") return \"line:middle\";\n const sides = visibleBorderSides(node);\n if (sides.length !== 1) return \"rect\";\n switch (sides[0]) {\n case \"top\":\n return \"line:top\";\n case \"right\":\n return \"line:right\";\n case \"bottom\":\n return \"line:bottom\";\n case \"left\":\n return \"line:left\";\n }\n return \"rect\";\n}\n\nfunction build(\n scope: HTMLElement,\n opts: {\n roughness: number;\n bowing: number;\n frameRadius: number;\n drawFrame: boolean;\n selector: string;\n },\n): { paths: RoughPath[]; w: number; h: number } {\n const base = scope.getBoundingClientRect();\n const layoutW = scope.offsetWidth;\n const layoutH = scope.offsetHeight;\n if (!layoutW || !layoutH) return { paths: [], w: 0, h: 0 };\n const zoom = base.width / layoutW || 1;\n\n const themed =\n (scope.matches(\".plan-wf, .plan-html-frame, .plan-diagram-frame\")\n ? scope\n : scope.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n )) ?? scope;\n const ink =\n readVar(themed, \"--ink\") || readVar(themed, \"--wf-ink\") || \"#34322e\";\n const sketch = readVar(themed, \"--wf-sketch\") || ink;\n const line = readVar(themed, \"--wf-line\") || readVar(themed, \"--line\") || \"\";\n\n const paths: RoughPath[] = [];\n let index = 0;\n const push = (drawable: unknown, stroke: string, sw: number) => {\n for (const p of gen.toPaths(\n drawable as Parameters<typeof gen.toPaths>[0],\n )) {\n paths.push({\n d: p.d,\n stroke: p.stroke && p.stroke !== \"none\" ? p.stroke : stroke,\n strokeWidth: p.strokeWidth || sw,\n });\n }\n };\n const makeOpts = (stroke: string, sw: number, seed: number) => ({\n seed,\n roughness: opts.roughness,\n bowing: opts.bowing,\n stroke,\n strokeWidth: sw,\n preserveVertices: true,\n });\n\n if (opts.drawFrame) {\n const sw = 2;\n push(\n gen.path(\n roundedRectPath(2, 2, layoutW - 4, layoutH - 4, opts.frameRadius),\n {\n ...makeOpts(sketch, sw, seedFrom(\"frame\", layoutW, layoutH)),\n roughness: opts.roughness + 0.35,\n bowing: opts.bowing + 0.18,\n },\n ),\n sketch,\n sw,\n );\n }\n\n scope.querySelectorAll<HTMLElement>(opts.selector).forEach((node) => {\n if (node.getAttribute(\"data-rough\") === \"none\") return;\n if (readVar(node, \"--rough-skip\") === \"1\") return;\n const r = node.getBoundingClientRect();\n const x = (r.left - base.left) / zoom;\n const y = (r.top - base.top) / zoom;\n const w = r.width / zoom;\n const h = r.height / zoom;\n if (w < 2 || h < 2) return;\n const kind = inferRoughKind(node);\n const rawStroke = elementStroke(node, sketch);\n const stroke =\n sameColor(rawStroke, ink) || (line !== \"\" && sameColor(rawStroke, line))\n ? sketch\n : rawStroke;\n const sw = Number(readVar(node, \"--rough-w\")) || 1.4;\n const seed = seedFrom(\n kind,\n Math.round(x),\n Math.round(y),\n Math.round(w),\n Math.round(h),\n index++,\n );\n const o = makeOpts(stroke, sw, seed);\n let drawable: unknown;\n if (kind === \"ellipse\") {\n drawable = gen.ellipse(x + w / 2, y + h / 2, w, h, o);\n } else if (kind === \"line:left\") {\n drawable = gen.line(x, y, x, y + h, o);\n } else if (kind === \"line:right\") {\n drawable = gen.line(x + w, y, x + w, y + h, o);\n } else if (kind === \"line:bottom\") {\n drawable = gen.line(x, y + h, x + w, y + h, o);\n } else if (kind === \"line:top\") {\n drawable = gen.line(x, y, x + w, y, o);\n } else if (kind === \"line:middle\") {\n drawable = gen.line(x, y + h / 2, x + w, y + h / 2, o);\n } else {\n const cr = parseFloat(getComputedStyle(node).borderTopLeftRadius) || 0;\n const radius = Math.min(cr / zoom, w / 2, h / 2);\n drawable =\n radius > 1\n ? gen.path(roundedRectPath(x + 1, y + 1, w - 2, h - 2, radius), o)\n : gen.rectangle(x + 1, y + 1, w - 2, h - 2, o);\n }\n push(drawable, stroke, sw);\n });\n\n return { paths, w: layoutW, h: layoutH };\n}\n\n/**\n * Renders the rough overlay for a frame. `scopeRef` points at the frame root.\n * When `enabled` is false (skeleton / clean register) it renders nothing and the\n * crisp CSS borders stay visible.\n */\nexport function RoughOverlay({\n scopeRef,\n sketch = 52,\n enabled = true,\n drawFrame = true,\n frameRadius = 14,\n selector = \"[data-rough]\",\n}: {\n scopeRef: RefObject<HTMLElement | null>;\n sketch?: number;\n enabled?: boolean;\n drawFrame?: boolean;\n frameRadius?: number;\n selector?: string;\n}) {\n const [state, setState] = useState<{\n paths: RoughPath[];\n w: number;\n h: number;\n }>({ paths: [], w: 0, h: 0 });\n const rafRef = useRef(0);\n\n useEffect(() => {\n const el = scopeRef.current;\n if (!el || !enabled) {\n el?.removeAttribute(\"data-rough-ready\");\n el?.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n )?.removeAttribute(\"data-rough-ready\");\n setState({ paths: [], w: 0, h: 0 });\n return;\n }\n const roughness = sketchRoughness(sketch);\n const bowing = sketchBowing(sketch);\n const measure = () => {\n clearTimeout(rafRef.current);\n rafRef.current = window.setTimeout(() => {\n const next = build(el, {\n roughness,\n bowing,\n frameRadius,\n drawFrame,\n selector,\n });\n if (next.w && next.h) {\n el.setAttribute(\"data-rough-ready\", \"true\");\n (\n el.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n ) ?? el\n ).setAttribute(\"data-rough-ready\", \"true\");\n setState(next);\n }\n }, 0);\n };\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n el.querySelectorAll(selector).forEach((node) => ro.observe(node));\n const mo = new MutationObserver((mutations) => {\n if (mutations.every(isRoughOverlayMutation)) return;\n measure();\n });\n mo.observe(el, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n el.addEventListener(\"plan-prototype-runtime:rendered\", measure);\n let cancelled = false;\n if (typeof document !== \"undefined\" && \"fonts\" in document) {\n void document.fonts.ready.then(() => {\n if (!cancelled) measure();\n });\n }\n return () => {\n cancelled = true;\n ro.disconnect();\n mo.disconnect();\n el.removeEventListener(\"plan-prototype-runtime:rendered\", measure);\n clearTimeout(rafRef.current);\n el.removeAttribute(\"data-rough-ready\");\n el.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n )?.removeAttribute(\"data-rough-ready\");\n };\n }, [scopeRef, sketch, enabled, drawFrame, frameRadius, selector]);\n\n if (!enabled || !state.paths.length) return null;\n return (\n <svg\n aria-hidden\n className=\"plan-rough-overlay\"\n width=\"100%\"\n height=\"100%\"\n viewBox={`0 0 ${state.w} ${state.h}`}\n preserveAspectRatio=\"none\"\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n zIndex: 3,\n }}\n >\n {state.paths.map((p, i) => (\n <path\n key={i}\n d={p.d}\n fill=\"none\"\n stroke={p.stroke}\n strokeWidth={p.strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </svg>\n );\n}\n\nfunction isRoughOverlayMutation(mutation: MutationRecord) {\n if (nodeIsRoughOverlay(mutation.target)) return true;\n\n const changedNodes = [\n ...Array.from(mutation.addedNodes),\n ...Array.from(mutation.removedNodes),\n ];\n return changedNodes.length > 0 && changedNodes.every(nodeIsRoughOverlay);\n}\n\nfunction nodeIsRoughOverlay(node: Node) {\n const element = node instanceof Element ? node : node.parentElement;\n return Boolean(\n element?.classList.contains(\"plan-rough-overlay\") ||\n element?.closest(\".plan-rough-overlay\"),\n );\n}\n"]}
1
+ {"version":3,"file":"wireframe-kit.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/wireframe-kit.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,EACR,oBAAoB,GAIrB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,SAAS,CAAC;AA6B5B,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AACjD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAc,CAAC;AAE7C,SAAS,eAAe;IACtB,IAAI,OAAO,YAAY,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,OAAO;YACxD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,IAAI,YAAY,GAAmB,eAAe,EAAE,CAAC;AAErD,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO;IACnC,YAAY,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,cAAc;QAAE,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,iBAAiB,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,cAAc,CAAC,QAAoB;IAC1C,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;QACxC,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACpC,YAAY,GAAG,eAAe,EAAE,CAAC;YACjC,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IACF,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,EAAE;QACV,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,oBAAoB,CACzB,cAAc,EACd,GAAG,EAAE,CAAC,YAAY,EAClB,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,IAAI,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAM1C,EAAE,CAAC,CAAC;AAEP,MAAM,CAAC,GAAG;IACR,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE,eAAe;IACvB,UAAU,EAAE,oBAAoB;IAChC,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,kBAAkB;IAC5B,EAAE,EAAE,WAAW;IACf,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,eAAe;IACvB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,oBAAoB;CACpB,CAAC;AAIX,SAAS,UAAU,CAAC,IAAI,GAAkB,SAAS;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1D,KAAK,MAAM;YACT,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,IAAI;YACP,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9C,KAAK,OAAO;YACV,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD;YACE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAoB;IACnC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,MAAqC;IACvD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IAClC,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,GAAG,GAAG,CAAC,EACP,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,EAAE,GASX;IACC,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC;IAC9C,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9C,KAAK,MAAM,CAAC;IACZ,OAAO,CACL,cACE,SAAS,EAAC,SAAS,kBACL,OAAO,IAAI,SAAS,gBACtB,OAAO,mBACJ,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,gBAClC,OAAO,EACnB,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,MAAM;YACb,kEAAkE;YAClE,qEAAqE;YACrE,wEAAwE;YACxE,mEAAmE;YACnE,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,aAAa;YACzB,KAAK,EAAE,CAAC,CAAC,GAAG;YACZ,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,QAAQ,EAAE,CAAC,CAAC,EAAE;YACd,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,QAAQ;YAClB,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,MAAM,GAAG,GAAG,EACZ,KAAK,GAAG,CAAC,CAAC,GAAG,EACb,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,EAAE,GAQX;IACC,OAAO,CACL,eACE,KAAK,EAAE;YACL,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACtC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE;YACtB,UAAU,EAAE,MAAM;YAClB,KAAK;YACL,QAAQ,EAAE,CAAC;YACX,YAAY,EAAE,YAAY;YAC1B,GAAG,KAAK;SACT,YAEA,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,CAAC,GAAG,EAAE,EACN,CAAC,EACD,KAAK,GAAG,CAAC,CAAC,IAAI,EACd,CAAC,GAAG,CAAC,EACL,KAAK,GAAG,EAAE,GAOX;IACC,OAAO,CACL,cACE,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC,IAAI,wBAAwB;YACrC,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,CAAC;YACf,IAAI,EAAE,UAAU;YAChB,GAAG,KAAK;SACT,GACD,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EACpB,CAAC,GAAG,CAAC,EACL,GAAG,GAAG,CAAC,EACP,MAAM,EACN,KAAK,GAAG,CAAC,CAAC,IAAI,EACd,KAAK,GAAG,EAAE,GAOX;IACC,MAAM,EAAE,GACN,MAAM;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,YACpE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAChB,KAAC,GAAG,IAAS,CAAC,EAAE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAvD,CAAC,CAA0D,CACtE,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,GAAG,GAAG,CAAC,CAAC,GAAG,EACX,IAAI,GAAG,CAAC,CAAC,IAAI,EACb,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,EAAE,GAOX;IACC,OAAO,CACL,4BACa,MAAM,EACjB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,GAAG;YACnC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE;YAC7D,YAAY,EAAE,CAAC,CAAC,MAAM;YACtB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,CAAC;YACX,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EACpB,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,QAAQ,EAChB,IAAI,GAAG,EAAE,GAKV;IACC,MAAM,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACnE,OAAO,CACL,4BACc,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EACnD,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YACrD,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,UAAU;YAChB,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;YACtD,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;YAC3C,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;SACzB,YAEA,IAAI,IAAI,CACP,cACE,KAAK,EAAE,IAAI,GAAG,GAAG,EACjB,MAAM,EAAE,IAAI,GAAG,GAAG,EAClB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,MAAM,EACb,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,YAEtB,eAAM,CAAC,EAAC,qBAAqB,GAAG,GAC5B,CACP,GACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,GAAG,SAAS,EAChB,KAAK,GAAG,EAAE,GAKX;IACC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,EAAE,EAAE;YACnC,UAAU,EAAE,CAAC,CAAC,EAAE;YAChB,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,wBAAwB;YAClC,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,QAAQ;YACpB,YAAY,EAAE,UAAU;YACxB,UAAU,EAAE,GAAG;YACf,GAAG,KAAK;SACT,YAEA,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAsC;IAC3E,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;IACzE,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;IAChD,OAAO,CACL,gBAAM,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aACnE,eACE,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;oBACT,YAAY,EAAE,KAAK;oBACnB,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,EAAE,EAAE;oBACjC,IAAI,EAAE,UAAU;iBACjB,GACD,EACD,KAAK,IAAI,CACR,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAC9C,KAAK,GACD,CACR,IACI,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,KAAK,GAAG,KAAK,EACb,IAAI,GAAG,KAAK,EACZ,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,SAAS,EAChB,KAAK,GAAG,EAAE,GAQX;IACC,MAAM,GAAG,GACP,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;IACxE,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,CACL,4BACa,MAAM,EACjB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YAClD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;YACtC,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;YACnD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;YACxC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YAC7B,YAAY,EAAE,CAAC,CAAC,MAAM;YACtB,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,QAAQ,EAAE,CAAC,CAAC,EAAE;YACd,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAC7B,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,QAAQ;YACpB,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,QAAQ;YACnB,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,EAAE,GAKX;IACC,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;YACxD,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;YACjD,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YAChC,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,wBAAwB;YAClC,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAC9B,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,QAAQ;YACpB,YAAY,EAAE,UAAU;YACxB,GAAG,KAAK;SACT,YAEA,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,EACL,KAAK,EACL,WAAW,EACX,CAAC,EACD,IAAI,GAAG,KAAK,EACZ,KAAK,EACL,KAAK,GAAG,EAAE,GASX;IACC,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,aACvE,KAAK,IAAI,CACR,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAC3D,KAAK,GACD,CACR,EACD,6BACa,MAAM,EACjB,KAAK,EAAE;oBACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,GAAG;oBACnC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,EAAE;oBACpC,YAAY,EAAE,CAAC,CAAC,MAAM;oBACtB,UAAU,EAAE,CAAC,CAAC,IAAI;oBAClB,OAAO,EAAE,wBAAwB;oBACjC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;oBACpC,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;oBAC1C,cAAc,EAAE,eAAe;oBAC/B,QAAQ,EAAE,CAAC;oBACX,GAAG,EAAE,CAAC;iBACP,aAEA,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,YAAG,KAAK,GAAQ,CACvE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACT,KAAC,KAAK,IAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAI,CACxC,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,CAAC,EAAE,WAAW,IAAI,GAAG,GAAI,CAC/B,EACA,KAAK,IACF,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,eAAe;YAC/B,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,UAAU;SACjB,aAED,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,MAAM,EAAE,GAAG,qBAExC,EACP,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC3D,KAAC,GAAG,IAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAI,EACzC,KAAC,GAAG,IAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAI,EACzC,KAAC,GAAG,IAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAI,IACrC,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,EAAqB;IACnD,OAAO,CACL,4BACa,SAAS,EACpB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,MAAM;YACtC,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,MAAM,EAAE;YACvC,UAAU,EAAE,CAAC,CAAC,MAAM;YACpB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,6BAA6B;YACxC,MAAM,EAAE,CAAC;SACV,YAEA,IAAI,GACD,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,GAAG,MAAM,EACd,QAAQ,GAIT;IACC,OAAO,CACL,6BACa,aAAa,EACxB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,GAAG;YACnC,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,UAAU;YACnB,YAAY,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,EAAE;YAC1C,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,CAAC,CAAC,IAAI;SACnB,aAED,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,YACpC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,6BAEa,SAAS,EACpB,KAAK,EAAE;wBACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,GAAG;wBACnC,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,EAAE;wBACV,YAAY,EAAE,KAAK;wBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,EAAE;qBACrC,IARI,CAAC,CASN,CACH,CAAC,GACE,EACN,eACE,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,IAAI,EAAE;oBACrC,YAAY,EAAE,GAAG;oBACjB,OAAO,EAAE,UAAU;oBACnB,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,CAAC;iBACP,aAED,KAAC,GAAG,IAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAI,EAC1C,MAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,aAC9C,KAAK,YACD,IACH,EACL,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,KAAK,EACL,IAAI,GAAG,OAAO,GAKf;IACC,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,UAAU;YACtB,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,CAAC;SACP,aAED,KAAC,IAAI,IACH,IAAI,EAAC,uBAAuB,EAC5B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EACpB,KAAK,EAAE;oBACL,aAAa,EAAE,GAAG;oBAClB,QAAQ,EAAE,CAAC;oBACX,YAAY,EAAE,UAAU;iBACzB,YAEA,QAAQ,GACJ,EACN,KAAK,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,EAAqB;IACrD,OAAO,CACL,4BACa,SAAS,EACpB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,GAAG;YACnC,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,EAAE;YACpC,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,IAAI,EAAE,UAAU;SACjB,GACD,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,GAAG,EAAE,EACT,MAAM,GAAG,KAAK,GAIf;IACC,OAAO,CACL,4BACa,MAAM,EACjB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,UAAU;YAChB,YAAY,EAAE,2BAA2B;YACzC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACzD,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;SACzB,YAED,cACE,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;aACvC,GACD,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,KAAK,EACL,KAAK,EACL,MAAM,GAAG,KAAK,EACd,GAAG,GAAG,KAAK,EACX,IAAI,GAAG,QAAQ,GAOhB;IACC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,SAAS;YAClB,YAAY,EAAE,CAAC,CAAC,MAAM;YACtB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;YACjD,QAAQ,EAAE,CAAC;SACZ,aAEA,GAAG,CAAC,CAAC,CAAC,CACL,eACE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,YAAY,EAAE,KAAK;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,QAAQ,EAAE;oBACvC,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,UAAU;iBACjB,GACD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAI,CACzC,EACD,KAAC,IAAI,IACH,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAChC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,YAE9B,KAAK,GACD,EACN,KAAK,IAAI,IAAI,IAAI,CAChB,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAC9C,KAAK,GACD,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,GAAG,GAAG,EACX,KAAK,GAAG,EAAE,GAKX;IACC,OAAO,CACL,4BACa,YAAY,EACvB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,GAAG;YACnC,KAAK;YACL,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,EAAE;YACzC,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,OAAO,EAAE,CAAC,CAAC,GAAG;YACd,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,QAAQ;YAClB,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,KAAK,GAAG,EAAE,GAIX;IACC,OAAO,CACL,cACE,KAAK,EAAE;YACL,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,QAAQ,EAAE,QAAQ;YAClB,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,EAAE,GAKX;IACC,OAAO,CACL,cACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,SAAS;YACrB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1B,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,EAAE,GAKX;IACC,OAAO,CACL,cACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1B,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,GAAG,EACH,OAAO,GAAG,SAAS,EACnB,IAAI,EACJ,IAAI,GAAG,KAAK,GAQb;IACC,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,YAAY;YACxB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,CAAC;SACZ,aAED,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAC1B,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,GAAI,GACjB,EACN,eACE,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC;oBACP,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,MAAM;oBACf,aAAa,EAAE,QAAQ;oBACvB,GAAG,EAAE,CAAC;iBACP,aAED,KAAC,IAAI,IACH,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAC5B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,YAE3D,KAAK,GACD,EACN,IAAI,IAAI,CACP,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAC9C,IAAI,GACA,CACR,IACG,EACN,eACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,QAAQ,EAAE,MAAM;oBAChB,cAAc,EAAE,UAAU;oBAC1B,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,UAAU;iBACjB,aAEA,GAAG,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,OAAO,YAAG,GAAG,GAAQ,EACxC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,IAChC,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,QAAQ,EACR,KAAK,GAAG,EAAE,GAIX;IACC,OAAO,CACL,KAAC,GAAG,IACF,GAAG,EAAC,wBAAwB,EAC5B,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,CAAC;YACN,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,MAAM;YAChB,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,KAAK,EACL,KAAK,EACL,IAAI,GAAG,OAAO,EACd,KAAK,GAAG,GAAG,EACX,QAAQ,GAOT;IACC,OAAO,CACL,eACE,KAAK,EAAE;YACL,KAAK;YACL,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,CAAC,CAAC,GAAG;SACX,aAED,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC3D,eACE,KAAK,EAAE;4BACL,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,KAAK;4BACnB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC;4BACzB,IAAI,EAAE,UAAU;yBACjB,GACD,EACF,KAAC,IAAI,IAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAC/C,KAAK,GACD,EACN,KAAK,IAAI,IAAI,IAAI,CAChB,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAC9C,KAAK,GACD,CACR,EACD,cAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAEzB,IACH,EACL,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,GAAG,EAAE,GAIX;IACC,OAAO,CACL,4BACa,aAAa,EACxB,KAAK,EAAE;YACL,CAAC,gBAA0B,CAAC,EAAE,CAAC,CAAC,GAAG;YACnC,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,eAAe;YAC/B,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,GAAG,EAAE;YAC1C,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,MAAM;YAChB,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,KAAK,GAAG,EAAE,GAGX;IACC,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YACtD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,KAAC,IAAI,IAAS,MAAM,EAAE,IAAI,CAAC,MAAM,YAC9B,IAAI,CAAC,KAAK,IADF,CAAC,CAEL,CACR,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,EAA8C;IAC1E,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAC7D,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,eAEE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,UAAU;gBACtB,cAAc,EAAE,eAAe;gBAC/B,GAAG,EAAE,EAAE;aACR,aAED,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAC9C,GAAG,CAAC,CAAC,GACD,EACP,KAAC,IAAI,IACH,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,YAElE,GAAG,CAAC,CAAC,GACD,KAfF,CAAC,CAgBF,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,WAAW,GAAG,QAAQ,GAGvB;IACC,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,IAAI,EAAE;YACrC,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,CAAC,CAAC,IAAI;SACnB,aAED,KAAC,GAAG,IAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAI,EAC1C,KAAC,IAAI,IAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAE,CAAC,CAAC,IAAI,YAC9C,WAAW,GACP,IACH,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG,EAAE,EAA6B;IAC/D,OAAO,CACL,cACE,KAAK,EAAE;YACL,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,OAAO;YACf,GAAG,KAAK;SACT,GACD,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EACpB,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,IAAI,GAAG,qBAAqB,EAC5B,KAAK,GAAG,CAAC,CAAC,GAAG,GAMd;IACC,OAAO,CACL,KAAC,IAAI,IAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,YACxD,IAAI,GACA,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,GAAG,KAAK,GAMf;IACC,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,YACpE,KAAK,GACD,CACR,CAAC;AACJ,CAAC;AAQD,MAAM,QAAQ,GAA0C;IACtD,0EAA0E;IAC1E,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO,CACL,MAAC,MAAM,IAAC,GAAG,EAAE,CAAC,aACX,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,EAC/C,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAC9B,CACV,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,OAAO,CACL,MAAC,MAAM,IAAC,GAAG,EAAE,CAAC,aACX,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAC/C,cACE,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC;4BACP,SAAS,EAAE,CAAC;4BACZ,OAAO,EAAE,MAAM;4BACf,aAAa,EAAE,QAAQ;4BACvB,GAAG,EAAE,YAAY;4BACjB,OAAO,EAAE,wBAAwB;yBAClC,YAEA,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACjC,IACC,CACV,CAAC;QACJ,CAAC;QACD,OAAO,CACL,KAAC,MAAM,IAAC,GAAG,EAAC,yBAAyB,YAClC,qBAAqB,CAAC,IAAI,CAAC,GACrB,CACV,CAAC;IACJ,CAAC;IACD,UAAU,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC3B,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,YAAG,QAAQ,GAAc,CAC9D;IACD,SAAS,EAAE,GAAG,EAAE,CAAC,KAAC,SAAS,KAAG;IAC9B,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAC,OAAO,cAAE,QAAQ,GAAW;IACxD,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAC,GAAG,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,YAAG,QAAQ,GAAO;IACzD,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAC,GAAG,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,YAAG,QAAQ,GAAO;IACzD,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAC,OAAO,cAAE,QAAQ,GAAW;IACxD,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAC,IAAI,cAAE,QAAQ,GAAQ;IAC/C,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,CAAC,MAAM,YAAG,QAAQ,GAAO;IAC7D,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAC,IAAI,cAAE,QAAQ,GAAQ;IAC/C,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CACvB,KAAC,MAAM,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,YAC3D,QAAQ,GACF,CACV;IACD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAC,OAAO,KAAG;IAE1B,0EAA0E;IAC1E,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,KAAK,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAI;IACvD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACX,KAAC,IAAI,IACH,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EACxB,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,MAAM,EAAE,CAAC,CAAC,MAAM,GAChB,CACH;IACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,KAAK,IAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAI;IACjD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACd,KAAC,YAAY,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,YAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAgB,CAC/D;IAED,0EAA0E;IAC1E,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACd,KAAC,OAAO,IACN,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EACxB,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,IAAI,EAAE,CAAC,CAAC,IAAI,GACZ,CACH;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACd,KAAC,OAAO,IACN,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EACxB,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,IAAI,EAAE,CAAC,CAAC,IAAI,GACZ,CACH;IAED,0EAA0E;IAC1E,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,GAAI;IAC5C,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,IAAI,IAAC,MAAM,EAAE,CAAC,CAAC,MAAM,YAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAQ;IAC/D,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,YAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAQ;IAC3D,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,KAAK,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAI;IACrD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACZ,KAAC,KAAK,IACJ,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,KAAK,EAAE,CAAC,CAAC,KAAK,EACd,WAAW,EAAE,CAAC,CAAC,WAAW,EAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,GACZ,CACH;IACD,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACV,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,YAC5C,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GACd,CACP;IACD,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,GAAG,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAI;IACjC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,SAAS,IAAC,WAAW,EAAE,CAAC,CAAC,WAAW,GAAI;IAE3D,0EAA0E;IAC1E,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,MAAM,KAAG;IACxB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,UAAU,IAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAI;IACnD,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,EAAE,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,GAAI;CACtC,CAAC;AAEF,SAAS,oBAAoB,CAC3B,IAAmB,EACnB,GAAqB;IAErB,MAAM,UAAU,GACd,IAAI,CAAC,IAAI,KAAK,KAAK;QACnB,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAsB;IACnD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC3B,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,eAAe,CAAC,EAAE,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU,CACxB,IAAmB,EACnB,GAAqB;IAErB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC,CAAC,CAAC,wBAAgB,QAAQ,IAAd,GAAG,CAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,OAAO,KAAC,SAAS,cAAuB,QAAQ,IAAzB,GAAG,IAAI,IAAI,CAAC,EAAE,CAAwB,CAAC;AAChE,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,mEAAmE;AACnE,SAAS,SAAS,CAAC,EAAE,QAAQ,EAA2B;IACtD,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,EAAE,IAAI,QAAQ,CAAC;AACxB,CAAC;AAED,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,CAAC,IAAI,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAEhF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;AAI9B,uGAAuG;AACvG,MAAM,CAAC,MAAM,mBAAmB,GAC9B,gOAAgO,CAAC;AAEnO,6EAA6E;AAC7E,SAAS,QAAQ,CAAC,GAAG,KAA6B;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,OAAO,CAAC,EAAW,EAAE,IAAY;IACxC,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,gFAAgF;AAChF,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GACR,CAAC,CAAC,MAAM,KAAK,CAAC;YACZ,CAAC,CAAC,CAAC;iBACE,KAAK,CAAC,EAAE,CAAC;iBACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;iBACjB,IAAI,CAAC,EAAE,CAAC;YACb,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACzC,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC;AAED,iFAAiF;AACjF,SAAS,eAAe,CACtB,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS;IAET,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO;QACL,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;QACjB,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;QAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;QACjB,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;QAC9C,IAAI,CAAC,GAAG,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;QAC1C,IAAI,CAAC,GAAG,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE;QACtC,GAAG;KACJ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,MAAc,EACd,KAAa;IAEb,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvB,KAAK,GAAG,KAAK,GAAG,CAAC;QACjB,MAAM,GAAG,KAAK,GAAG,CAAC,CACnB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa,EAAE,QAAgB;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACjD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI;QACjB,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;KACV,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,UAAU,CACtB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CACpD,CAAC;QACF,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,kBAAkB;YAAE,OAAO,KAAK,CAAC;IACvE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAa;IAEb,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAA+C,EAAE,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI;QACzC,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;QAC3C,CAAC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;QACjD,CAAC,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;QACpD,CAAC,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5B,IACE,KAAK,GAAG,CAAC;YACT,KAAK;YACL,KAAK,KAAK,kBAAkB;YAC5B,KAAK,KAAK,aAAa,EACvB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAiB;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC;IAChD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,UAAU,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,KAAK,CACZ,KAAkB,EAClB,IAMC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;IACnC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GACV,CAAC,KAAK,CAAC,OAAO,CAAC,iDAAiD,CAAC;QAC/D,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,KAAK,CAAC,aAAa,CACjB,iDAAiD,CAClD,CAAC,IAAI,KAAK,CAAC;IAClB,MAAM,GAAG,GACP,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE7E,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,CAAC,QAAiB,EAAE,MAAc,EAAE,EAAU,EAAE,EAAE;QAC7D,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CACzB,QAA6C,CAC9C,EAAE,CAAC;YACF,KAAK,CAAC,IAAI,CAAC;gBACT,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC3D,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAU,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM;QACN,WAAW,EAAE,EAAE;QACf,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,IAAI,CACF,GAAG,CAAC,IAAI,CACN,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EACjE;YACE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5D,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI;SAC3B,CACF,EACD,MAAM,EACN,EAAE,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAc,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,MAAM;YAAE,OAAO;QACvD,IAAI,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,GAAG;YAAE,OAAO;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,MAAM,GACV,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACtE,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CACnB,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb,KAAK,EAAE,CACR,CAAC;QACF,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,QAAiB,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,QAAQ;gBACN,MAAM,GAAG,CAAC;oBACR,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;oBAClE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,MAAM,GAAG,EAAE,EACX,OAAO,GAAG,IAAI,EACd,SAAS,GAAG,IAAI,EAChB,WAAW,GAAG,EAAE,EAChB,QAAQ,GAAG,cAAc,GAQ1B;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAI/B,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,EAAE,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;YACxC,EAAE,EAAE,aAAa,CACf,iDAAiD,CAClD,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;YACvC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE;oBACrB,SAAS;oBACT,MAAM;oBACN,WAAW;oBACX,SAAS;oBACT,QAAQ;iBACT,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;oBACrB,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;oBAC5C,CACE,EAAE,CAAC,aAAa,CACd,iDAAiD,CAClD,IAAI,EAAE,CACR,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC,CAAC;QACF,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;QACvC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACf,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5C,IAAI,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC;gBAAE,OAAO;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE;YACb,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,EAAE,CAAC,gBAAgB,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC3D,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,SAAS;oBAAE,OAAO,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;YACjB,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,EAAE,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;YACnE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YACvC,EAAE,CAAC,aAAa,CACd,iDAAiD,CAClD,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAElE,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,CACL,mCAEE,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,EACpC,mBAAmB,EAAC,MAAM,EAC1B,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAM;YACrB,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,CAAC;SACV,YAEA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,eAEE,CAAC,EAAE,CAAC,CAAC,CAAC,EACN,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,WAAW,EAAE,CAAC,CAAC,WAAW,EAC1B,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,IANjB,CAAC,CAON,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAwB;IACtD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAErD,MAAM,YAAY,GAAG;QACnB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAClC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;KACrC,CAAC;IACF,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAU;IACpC,MAAM,OAAO,GAAG,IAAI,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IACpE,OAAO,OAAO,CACZ,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACjD,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,CACxC,CAAC;AACJ,CAAC","sourcesContent":["import {\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport rough from \"roughjs\";\n\nimport type {\n WireframeElName,\n WireframeNode,\n WireframeTone,\n} from \"./wireframe.config.js\";\n\n/**\n * Shared wireframe \"kit\" — hand-drawn low-fi primitives, the el → component node\n * registry, the rough.js sketch overlay, and the viewer-level sketchy/clean\n * style preference. Ported verbatim (geometry-wise) from the plan template's\n * `app/components/plan/wireframe/kit/*` so any app can render wireframe blocks.\n *\n * DECOUPLING: the only behavioral change from the plan copy is theme detection —\n * core blocks read `document.documentElement.classList.contains(\"dark\")` (the\n * MermaidBlock precedent) instead of importing `next-themes`. Everything else\n * (the `.plan-wf` / `.wf-*` / `[data-rough]` class contract the rough overlay\n * measures, the `--wf-*` / `--ink` / `--paper` token names every primitive\n * reads) is preserved exactly, so the kit looks identical in plan and renders\n * correctly in any app once the matching tokens exist in `core/styles/blocks.css`.\n */\n\n/* ========================================================================== */\n/* Viewer-level wireframe style preference (localStorage) */\n/* ========================================================================== */\n\nexport type WireframeStyle = \"sketchy\" | \"clean\";\n\nconst STYLE_STORAGE_KEY = \"plan-wireframe-style\";\nconst styleListeners = new Set<() => void>();\n\nfunction readStoredStyle(): WireframeStyle {\n if (typeof localStorage === \"undefined\") return \"sketchy\";\n try {\n return localStorage.getItem(STYLE_STORAGE_KEY) === \"clean\"\n ? \"clean\"\n : \"sketchy\";\n } catch {\n return \"sketchy\";\n }\n}\n\nlet currentStyle: WireframeStyle = readStoredStyle();\n\nexport function setWireframeStyle(style: WireframeStyle): void {\n if (style === currentStyle) return;\n currentStyle = style;\n try {\n localStorage.setItem(STYLE_STORAGE_KEY, style);\n } catch {\n // ignore (private mode / disabled storage)\n }\n for (const listener of styleListeners) listener();\n}\n\nexport function toggleWireframeStyle(): void {\n setWireframeStyle(currentStyle === \"sketchy\" ? \"clean\" : \"sketchy\");\n}\n\nfunction subscribeStyle(callback: () => void): () => void {\n styleListeners.add(callback);\n const onStorage = (event: StorageEvent) => {\n if (event.key === STYLE_STORAGE_KEY) {\n currentStyle = readStoredStyle();\n callback();\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"storage\", onStorage);\n }\n return () => {\n styleListeners.delete(callback);\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"storage\", onStorage);\n }\n };\n}\n\nexport function useWireframeStyle(): WireframeStyle {\n return useSyncExternalStore(\n subscribeStyle,\n () => currentStyle,\n () => \"sketchy\",\n );\n}\n\n/** Read the live dark-mode flag from the document root (next-themes-free). */\nexport function useIsDark(): boolean {\n const [isDark, setIsDark] = useState(false);\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const root = document.documentElement;\n const read = () => setIsDark(root.classList.contains(\"dark\"));\n read();\n const observer = new MutationObserver(read);\n observer.observe(root, { attributes: true, attributeFilter: [\"class\"] });\n return () => observer.disconnect();\n }, []);\n return isDark;\n}\n\n/* ========================================================================== */\n/* Primitives (ported from kit/primitives.tsx) */\n/* ========================================================================== */\n\n/**\n * Frame-level config threaded to every Screen so skeleton / theme / sketch-vs-\n * clean reach the kit no matter which path renders the root Screen.\n */\nexport const KitConfigContext = createContext<{\n skeleton?: boolean;\n flushFrame?: boolean;\n sketch?: number;\n theme?: \"light\" | \"dark\";\n style?: \"sketchy\" | \"clean\";\n}>({});\n\nconst V = {\n ink: \"var(--ink)\",\n soft: \"var(--ink-soft)\",\n line: \"var(--line)\",\n paper: \"var(--paper)\",\n card: \"var(--card)\",\n accent: \"var(--accent)\",\n accentSoft: \"var(--accent-soft)\",\n warn: \"var(--warn)\",\n warnSoft: \"var(--warn-soft)\",\n ok: \"var(--ok)\",\n okSoft: \"var(--ok-soft)\",\n stroke: \"var(--stroke)\",\n radius: \"var(--radius)\",\n gap: \"var(--gap)\",\n pad: \"var(--pad)\",\n fs: \"var(--fs)\",\n hand: \"var(--font-hand)\",\n script: \"var(--font-script)\",\n} as const;\n\ntype ToneColors = { fg: string; bg: string; bd: string };\n\nfunction toneColors(tone: WireframeTone = \"default\"): ToneColors {\n switch (tone) {\n case \"accent\":\n return { fg: V.accent, bg: V.accentSoft, bd: V.accent };\n case \"warn\":\n return { fg: V.warn, bg: V.warnSoft, bd: V.warn };\n case \"ok\":\n return { fg: V.ok, bg: V.okSoft, bd: V.ok };\n case \"muted\":\n return { fg: V.soft, bg: \"transparent\", bd: V.soft };\n default:\n return { fg: V.ink, bg: \"transparent\", bd: V.ink };\n }\n}\n\nfunction toneInk(tone?: WireframeTone): string {\n return toneColors(tone).fg;\n}\n\nfunction fontWeight(weight?: \"normal\" | \"medium\" | \"bold\"): number {\n if (weight === \"bold\") return 700;\n if (weight === \"medium\") return 600;\n return 400;\n}\n\nexport function Screen({\n children,\n pad = 0,\n sketch,\n density,\n theme,\n skeleton = false,\n style = {},\n}: {\n children?: ReactNode;\n pad?: number | string;\n sketch?: number;\n density?: \"compact\" | \"regular\" | \"roomy\";\n theme?: \"light\" | \"dark\";\n skeleton?: boolean;\n style?: CSSProperties;\n}) {\n const cfg = useContext(KitConfigContext);\n const isSkeleton = skeleton || Boolean(cfg.skeleton);\n const wfStyle = cfg.style ?? \"sketchy\";\n const wfTheme = theme ?? cfg.theme ?? \"light\";\n const effectivePad = cfg.flushFrame ? 0 : pad;\n void sketch;\n return (\n <div\n className=\"plan-wf\"\n data-density={density ?? \"regular\"}\n data-theme={wfTheme}\n data-skeleton={isSkeleton ? \"true\" : undefined}\n data-style={wfStyle}\n style={{\n position: \"relative\",\n width: \"100%\",\n // `minHeight` (not a fixed `height: 100%`) so the screen fills an\n // auto-height artboard's floor yet grows with its content instead of\n // clipping. The frame shell (`ArtboardFrame`) owns the height policy; a\n // caller can still override via `style.height` for a fixed canvas.\n minHeight: \"100%\",\n background: \"transparent\",\n color: V.ink,\n fontFamily: V.hand,\n fontSize: V.fs,\n lineHeight: 1.25,\n display: \"flex\",\n flexDirection: \"column\",\n padding: effectivePad,\n boxSizing: \"border-box\",\n overflow: \"hidden\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Hand({\n children,\n size,\n weight = 400,\n color = V.ink,\n script = false,\n style = {},\n}: {\n children?: ReactNode;\n size?: number | string;\n weight?: number;\n color?: string;\n script?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <span\n style={{\n fontFamily: script ? V.script : V.hand,\n fontSize: size ?? V.fs,\n fontWeight: weight,\n color,\n minWidth: 0,\n overflowWrap: \"break-word\",\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n\nexport function Bar({\n w = 80,\n h,\n color = V.line,\n r = 4,\n style = {},\n}: {\n w?: number | string;\n h?: number | string;\n color?: string;\n r?: number | string;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n width: w,\n height: h ?? \"calc(var(--fs) * 0.72)\",\n background: color,\n borderRadius: r,\n flex: \"0 0 auto\",\n ...style,\n }}\n />\n );\n}\n\nexport function Lines({\n n = 2,\n gap = 6,\n widths,\n color = V.line,\n style = {},\n}: {\n n?: number;\n gap?: number;\n widths?: Array<number | string>;\n color?: string;\n style?: CSSProperties;\n}) {\n const ws =\n widths ??\n Array.from({ length: n }, (_, i) => (i === n - 1 ? \"55%\" : \"100%\"));\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap, ...style }}>\n {ws.map((w, i) => (\n <Bar key={i} w={typeof w === \"number\" ? `${w}%` : w} color={color} />\n ))}\n </div>\n );\n}\n\nexport function Box({\n children,\n pad = V.pad,\n fill = V.card,\n dashed = false,\n style = {},\n}: {\n children?: ReactNode;\n pad?: number | string;\n fill?: string;\n dashed?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n border: `${V.stroke} ${dashed ? \"dashed\" : \"solid\"} ${V.ink}`,\n borderRadius: V.radius,\n background: fill,\n padding: pad,\n boxSizing: \"border-box\",\n minWidth: 0,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Check({\n done = false,\n shape = \"square\",\n size = 18,\n}: {\n done?: boolean;\n shape?: \"square\" | \"circle\";\n size?: number;\n}) {\n const r = shape === \"circle\" ? \"50%\" : \"calc(var(--radius) * 0.5)\";\n return (\n <div\n data-rough={shape === \"circle\" ? \"ellipse\" : \"rect\"}\n style={{\n [\"--rough-stroke\" as string]: done ? V.accent : V.ink,\n width: size,\n height: size,\n flex: \"0 0 auto\",\n borderRadius: r,\n border: `${V.stroke} solid ${done ? V.accent : V.ink}`,\n background: done ? V.accent : \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {done && (\n <svg\n width={size * 0.6}\n height={size * 0.6}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"#fff\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M2 6.5l2.5 2.5L10 3\" />\n </svg>\n )}\n </div>\n );\n}\n\nexport function Pill({\n children,\n tone = \"default\",\n style = {},\n}: {\n children?: ReactNode;\n tone?: WireframeTone;\n style?: CSSProperties;\n}) {\n const c = toneColors(tone);\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 4,\n border: `${V.stroke} solid ${c.bd}`,\n background: c.bg,\n color: c.fg,\n borderRadius: 999,\n padding: \"2px 9px\",\n fontSize: \"calc(var(--fs) * 0.82)\",\n fontFamily: V.hand,\n maxWidth: \"100%\",\n minWidth: 0,\n whiteSpace: \"normal\",\n overflowWrap: \"anywhere\",\n lineHeight: 1.3,\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n\nexport function Prio({ level = 2, label }: { level?: number; label?: string }) {\n const fill = level === 1 ? V.warn : level === 2 ? V.soft : \"transparent\";\n const bd = level === 3 ? V.soft : \"transparent\";\n return (\n <span style={{ display: \"inline-flex\", alignItems: \"center\", gap: 5 }}>\n <span\n style={{\n width: 9,\n height: 9,\n borderRadius: \"50%\",\n background: fill,\n border: `${V.stroke} solid ${bd}`,\n flex: \"0 0 auto\",\n }}\n />\n {label && (\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {label}\n </Hand>\n )}\n </span>\n );\n}\n\nexport function Btn({\n children,\n solid = false,\n full = false,\n size = \"md\",\n tone = \"default\",\n style = {},\n}: {\n children?: ReactNode;\n solid?: boolean;\n full?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n tone?: WireframeTone;\n style?: CSSProperties;\n}) {\n const pad =\n size === \"sm\" ? \"4px 10px\" : size === \"lg\" ? \"10px 18px\" : \"7px 14px\";\n const c = toneColors(tone === \"default\" ? \"accent\" : tone);\n return (\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: solid ? c.bd : V.ink,\n display: full ? \"flex\" : \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 6,\n border: `${V.stroke} solid ${solid ? c.bd : V.ink}`,\n background: solid ? c.bd : \"transparent\",\n color: solid ? \"#fff\" : V.ink,\n borderRadius: V.radius,\n padding: pad,\n fontFamily: V.hand,\n fontSize: V.fs,\n fontWeight: 700,\n width: full ? \"100%\" : \"auto\",\n maxWidth: \"100%\",\n minWidth: 0,\n boxSizing: \"border-box\",\n whiteSpace: \"normal\",\n overflowWrap: \"anywhere\",\n textAlign: \"center\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Chip({\n children,\n active = false,\n style = {},\n}: {\n children?: ReactNode;\n active?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n border: `${V.stroke} solid ${active ? V.accent : V.ink}`,\n background: active ? V.accentSoft : \"transparent\",\n color: active ? V.accent : V.ink,\n borderRadius: 999,\n padding: \"4px 12px\",\n fontSize: \"calc(var(--fs) * 0.88)\",\n fontFamily: V.hand,\n fontWeight: active ? 700 : 400,\n maxWidth: \"100%\",\n minWidth: 0,\n whiteSpace: \"normal\",\n overflowWrap: \"anywhere\",\n ...style,\n }}\n >\n {children}\n </span>\n );\n}\n\nexport function Field({\n label,\n value,\n placeholder,\n h,\n area = false,\n right,\n style = {},\n}: {\n label?: string;\n value?: string;\n placeholder?: number | string;\n h?: number | string;\n area?: boolean;\n right?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 5, ...style }}>\n {label && (\n <Hand size=\"calc(var(--fs) * 0.86)\" color={V.soft} weight={700}>\n {label}\n </Hand>\n )}\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n border: `${V.stroke} solid ${V.ink}`,\n borderRadius: V.radius,\n background: V.card,\n padding: \"calc(var(--pad) * 0.8)\",\n minHeight: h ?? (area ? 64 : \"auto\"),\n display: \"flex\",\n alignItems: area ? \"flex-start\" : \"center\",\n justifyContent: \"space-between\",\n minWidth: 0,\n gap: 8,\n }}\n >\n {value ? (\n <Hand style={{ minWidth: 0, overflowWrap: \"anywhere\" }}>{value}</Hand>\n ) : area ? (\n <Lines n={2} widths={[\"85%\", \"60%\"]} />\n ) : (\n <Bar w={placeholder ?? 110} />\n )}\n {right}\n </div>\n </div>\n );\n}\n\nexport function StatusBar() {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"9px 18px 2px\",\n flex: \"0 0 auto\",\n }}\n >\n <Hand size=\"calc(var(--fs) * 0.82)\" weight={700}>\n 9:41\n </Hand>\n <div style={{ display: \"flex\", gap: 5, alignItems: \"center\" }}>\n <Bar w={16} h={8} color={V.soft} r={2} />\n <Bar w={12} h={8} color={V.soft} r={2} />\n <Bar w={20} h={9} color={V.soft} r={2} />\n </div>\n </div>\n );\n}\n\nexport function Fab({ icon = \"+\" }: { icon?: string }) {\n return (\n <div\n data-rough=\"ellipse\"\n style={{\n [\"--rough-stroke\" as string]: V.accent,\n position: \"absolute\",\n right: 18,\n bottom: 22,\n width: 52,\n height: 52,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${V.accent}`,\n background: V.accent,\n color: \"#fff\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: V.hand,\n fontSize: 28,\n fontWeight: 700,\n lineHeight: 1,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.16)\",\n zIndex: 4,\n }}\n >\n {icon}\n </div>\n );\n}\n\nexport function BrowserBar({\n title = \"todo\",\n children,\n}: {\n title?: string;\n children?: ReactNode;\n}) {\n return (\n <div\n data-rough=\"line:bottom\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n padding: \"9px 14px\",\n borderBottom: `${V.stroke} solid ${V.ink}`,\n flex: \"0 0 auto\",\n background: V.card,\n }}\n >\n <div style={{ display: \"flex\", gap: 6 }}>\n {[0, 1, 2].map((i) => (\n <span\n key={i}\n data-rough=\"ellipse\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n width: 11,\n height: 11,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${V.ink}`,\n }}\n />\n ))}\n </div>\n <div\n style={{\n flex: 1,\n border: `${V.stroke} solid ${V.soft}`,\n borderRadius: 999,\n padding: \"3px 12px\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n }}\n >\n <Bar w={12} h={10} color={V.soft} r={3} />\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {title}.app\n </Hand>\n </div>\n {children}\n </div>\n );\n}\n\nexport function SectionLabel({\n children,\n right,\n tone = \"muted\",\n}: {\n children?: ReactNode;\n right?: ReactNode;\n tone?: WireframeTone;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"baseline\",\n justifyContent: \"space-between\",\n minWidth: 0,\n gap: 8,\n }}\n >\n <Hand\n size=\"calc(var(--fs) * 0.9)\"\n weight={700}\n color={toneInk(tone)}\n style={{\n letterSpacing: 0.3,\n minWidth: 0,\n overflowWrap: \"anywhere\",\n }}\n >\n {children}\n </Hand>\n {right}\n </div>\n );\n}\n\nexport function Avatar({ size = 26 }: { size?: number }) {\n return (\n <div\n data-rough=\"ellipse\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n width: size,\n height: size,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${V.ink}`,\n background: V.accentSoft,\n flex: \"0 0 auto\",\n }}\n />\n );\n}\n\nexport function IconSquare({\n size = 18,\n active = false,\n}: {\n size?: number;\n active?: boolean;\n}) {\n return (\n <div\n data-rough=\"rect\"\n style={{\n [\"--rough-stroke\" as string]: active ? V.accent : V.soft,\n width: size,\n height: size,\n flex: \"0 0 auto\",\n borderRadius: \"calc(var(--radius) * 0.5)\",\n border: `${V.stroke} solid ${active ? V.accent : V.soft}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"55%\",\n height: \"55%\",\n borderRadius: 2,\n background: active ? V.accent : V.line,\n }}\n />\n </div>\n );\n}\n\nexport function NavItem({\n label,\n count,\n active = false,\n dot = false,\n tone = \"accent\",\n}: {\n label?: string;\n count?: number;\n active?: boolean;\n dot?: boolean;\n tone?: WireframeTone;\n}) {\n const dotColor = toneInk(tone);\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 9,\n padding: \"5px 8px\",\n borderRadius: V.radius,\n background: active ? V.accentSoft : \"transparent\",\n minWidth: 0,\n }}\n >\n {dot ? (\n <span\n style={{\n width: 10,\n height: 10,\n borderRadius: \"50%\",\n border: `${V.stroke} solid ${dotColor}`,\n background: dotColor,\n flex: \"0 0 auto\",\n }}\n />\n ) : (\n <IconSquare size={15} active={active} />\n )}\n <Hand\n color={active ? V.accent : V.ink}\n weight={active ? 700 : 400}\n style={{ flex: 1, minWidth: 0 }}\n >\n {label}\n </Hand>\n {count != null && (\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {count}\n </Hand>\n )}\n </div>\n );\n}\n\nexport function Sidebar({\n children,\n width = 196,\n style = {},\n}: {\n children?: ReactNode;\n width?: number;\n style?: CSSProperties;\n}) {\n return (\n <div\n data-rough=\"line:right\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n width,\n flex: \"0 0 auto\",\n borderRight: `${V.stroke} solid ${V.ink}`,\n background: V.card,\n padding: V.pad,\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n minHeight: 0,\n minWidth: 0,\n alignSelf: \"stretch\",\n overflow: \"hidden\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Main({\n children,\n style = {},\n}: {\n children?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n padding: \"18px 24px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n overflow: \"hidden\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Row({\n children,\n full = false,\n style = {},\n}: {\n children?: ReactNode;\n full?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"stretch\",\n gap: V.gap,\n minWidth: 0,\n minHeight: 0,\n maxWidth: \"100%\",\n flex: full ? 1 : undefined,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Col({\n children,\n full = false,\n style = {},\n}: {\n children?: ReactNode;\n full?: boolean;\n style?: CSSProperties;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n minWidth: 0,\n minHeight: 0,\n flex: full ? 1 : undefined,\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function TaskRow({\n title,\n note,\n due,\n dueTone = \"default\",\n prio,\n done = false,\n}: {\n title?: string;\n note?: string;\n due?: string;\n dueTone?: WireframeTone;\n prio?: number;\n done?: boolean;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: V.gap,\n padding: \"calc(var(--pad) * 0.55) 0\",\n minWidth: 0,\n }}\n >\n <div style={{ marginTop: 1 }}>\n <Check done={done} />\n </div>\n <div\n style={{\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 4,\n }}\n >\n <Hand\n color={done ? V.soft : V.ink}\n style={done ? { textDecoration: \"line-through\" } : undefined}\n >\n {title}\n </Hand>\n {note && (\n <Hand size=\"calc(var(--fs) * 0.85)\" color={V.soft}>\n {note}\n </Hand>\n )}\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-end\",\n gap: 8,\n flex: \"0 0 auto\",\n }}\n >\n {due && <Pill tone={dueTone}>{due}</Pill>}\n {prio ? <Prio level={prio} /> : null}\n </div>\n </div>\n );\n}\n\nexport function Card({\n children,\n style = {},\n}: {\n children?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <Box\n pad=\"calc(var(--pad) * 0.9)\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n background: V.card,\n minWidth: 0,\n maxWidth: \"100%\",\n ...style,\n }}\n >\n {children}\n </Box>\n );\n}\n\nexport function Column({\n title,\n count,\n tone = \"muted\",\n width = 232,\n children,\n}: {\n title?: string;\n count?: number;\n tone?: WireframeTone;\n width?: number;\n children?: ReactNode;\n}) {\n return (\n <div\n style={{\n width,\n flex: \"0 0 auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: V.gap,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span\n style={{\n width: 9,\n height: 9,\n borderRadius: \"50%\",\n background: toneInk(tone),\n flex: \"0 0 auto\",\n }}\n />\n <Hand weight={700} style={{ whiteSpace: \"nowrap\" }}>\n {title}\n </Hand>\n {count != null && (\n <Hand size=\"calc(var(--fs) * 0.82)\" color={V.soft}>\n {count}\n </Hand>\n )}\n <div style={{ flex: 1 }} />\n <Hand color={V.soft} weight={700}>\n +\n </Hand>\n </div>\n {children}\n </div>\n );\n}\n\nexport function Toolbar({\n children,\n style = {},\n}: {\n children?: ReactNode;\n style?: CSSProperties;\n}) {\n return (\n <div\n data-rough=\"line:bottom\"\n style={{\n [\"--rough-stroke\" as string]: V.ink,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: V.gap,\n padding: \"12px 22px\",\n borderBottom: `${V.stroke} solid ${V.ink}`,\n background: V.card,\n flex: \"0 0 auto\",\n minWidth: 0,\n flexWrap: \"wrap\",\n ...style,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport function Tabs({\n items = [],\n}: {\n items?: Array<{ label: string; active?: boolean }>;\n}) {\n return (\n <div style={{ display: \"flex\", gap: 7, flexWrap: \"wrap\" }}>\n {items.map((item, i) => (\n <Chip key={i} active={item.active}>\n {item.label}\n </Chip>\n ))}\n </div>\n );\n}\n\nexport function KV({ rows = [] }: { rows?: Array<{ k: string; v: string }> }) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 6 }}>\n {rows.map((row, i) => (\n <div\n key={i}\n style={{\n display: \"flex\",\n alignItems: \"baseline\",\n justifyContent: \"space-between\",\n gap: 12,\n }}\n >\n <Hand size=\"calc(var(--fs) * 0.88)\" color={V.soft}>\n {row.k}\n </Hand>\n <Hand\n style={{ textAlign: \"right\", minWidth: 0, wordBreak: \"break-word\" }}\n >\n {row.v}\n </Hand>\n </div>\n ))}\n </div>\n );\n}\n\nexport function SearchBar({\n placeholder = \"Search\",\n}: {\n placeholder?: string;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n border: `${V.stroke} solid ${V.soft}`,\n borderRadius: 999,\n padding: \"5px 11px\",\n background: V.card,\n }}\n >\n <Bar w={11} h={11} color={V.soft} r={3} />\n <Hand size=\"calc(var(--fs) * 0.85)\" color={V.soft}>\n {placeholder}\n </Hand>\n </div>\n );\n}\n\nexport function Divider({ style = {} }: { style?: CSSProperties }) {\n return (\n <div\n style={{\n height: V.stroke,\n background: V.line,\n flex: \"0 0 auto\",\n margin: \"3px 0\",\n ...style,\n }}\n />\n );\n}\n\nexport function Title({\n text,\n script = false,\n size = \"calc(var(--fs) * 2)\",\n color = V.ink,\n}: {\n text?: string;\n script?: boolean;\n size?: number | string;\n color?: string;\n}) {\n return (\n <Hand script={script} size={size} weight={700} color={color}>\n {text}\n </Hand>\n );\n}\n\nexport function Text({\n value,\n color,\n weight,\n script = false,\n}: {\n value?: string;\n color?: WireframeTone;\n weight?: \"normal\" | \"medium\" | \"bold\";\n script?: boolean;\n}) {\n return (\n <Hand color={toneInk(color)} weight={fontWeight(weight)} script={script}>\n {value}\n </Hand>\n );\n}\n\n/* ========================================================================== */\n/* Node registry (ported from kit/registry.tsx) */\n/* ========================================================================== */\n\ntype NodeRenderer = (node: WireframeNode, children: ReactNode) => ReactNode;\n\nconst REGISTRY: Record<WireframeElName, NodeRenderer> = {\n // --- Frame / structure -------------------------------------------------\n screen: (n) => {\n const kids = n.children ?? [];\n const lead = kids[0]?.el;\n if (lead === \"browserBar\") {\n return (\n <Screen pad={0}>\n {renderNode(kids[0], kids[0].id ?? \"browserbar\")}\n {renderScreenBodyNodes(kids.slice(1))}\n </Screen>\n );\n }\n if (lead === \"statusBar\") {\n return (\n <Screen pad={0}>\n {renderNode(kids[0], kids[0].id ?? \"statusbar\")}\n <div\n style={{\n flex: 1,\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--gap)\",\n padding: \"calc(var(--pad) * 1.1)\",\n }}\n >\n {renderScreenBodyNodes(kids.slice(1))}\n </div>\n </Screen>\n );\n }\n return (\n <Screen pad=\"calc(var(--pad) * 1.35)\">\n {renderScreenBodyNodes(kids)}\n </Screen>\n );\n },\n browserBar: (n, children) => (\n <BrowserBar title={n.title ?? n.text}>{children}</BrowserBar>\n ),\n statusBar: () => <StatusBar />,\n toolbar: (_n, children) => <Toolbar>{children}</Toolbar>,\n row: (n, children) => <Row full={n.full}>{children}</Row>,\n col: (n, children) => <Col full={n.full}>{children}</Col>,\n sidebar: (_n, children) => <Sidebar>{children}</Sidebar>,\n main: (_n, children) => <Main>{children}</Main>,\n box: (n, children) => <Box dashed={n.dashed}>{children}</Box>,\n card: (_n, children) => <Card>{children}</Card>,\n column: (n, children) => (\n <Column title={n.title ?? n.text} count={n.count} tone={n.tone}>\n {children}\n </Column>\n ),\n divider: () => <Divider />,\n\n // --- Text --------------------------------------------------------------\n title: (n) => <Title text={n.text} script={n.script} />,\n text: (n) => (\n <Text\n value={n.value ?? n.text}\n color={n.color}\n weight={n.weight}\n script={n.script}\n />\n ),\n lines: (n) => <Lines n={n.n} widths={n.widths} />,\n section: (n) => (\n <SectionLabel tone={n.tone}>{n.label ?? n.text}</SectionLabel>\n ),\n\n // --- List / task -------------------------------------------------------\n navItem: (n) => (\n <NavItem\n label={n.label ?? n.text}\n count={n.count}\n active={n.active}\n dot={n.dot}\n tone={n.tone}\n />\n ),\n taskRow: (n) => (\n <TaskRow\n title={n.title ?? n.text}\n note={n.note}\n due={n.due}\n dueTone={n.dueTone}\n prio={n.prio}\n done={n.done}\n />\n ),\n\n // --- Controls ----------------------------------------------------------\n chips: (n) => <Tabs items={n.items ?? []} />,\n chip: (n) => <Chip active={n.active}>{n.label ?? n.text}</Chip>,\n pill: (n) => <Pill tone={n.tone}>{n.label ?? n.text}</Pill>,\n check: (n) => <Check done={n.done} shape={n.shape} />,\n field: (n) => (\n <Field\n label={n.label}\n value={n.value}\n placeholder={n.placeholder}\n area={n.area}\n />\n ),\n btn: (n) => (\n <Btn solid={n.solid} full={n.full} tone={n.tone}>\n {n.label ?? n.text}\n </Btn>\n ),\n fab: (n) => <Fab icon={n.icon} />,\n searchBar: (n) => <SearchBar placeholder={n.placeholder} />,\n\n // --- Atoms -------------------------------------------------------------\n avatar: () => <Avatar />,\n iconSquare: (n) => <IconSquare active={n.active} />,\n kv: (n) => <KV rows={n.rows ?? []} />,\n};\n\nfunction renderScreenBodyNode(\n node: WireframeNode,\n key?: string | number,\n): ReactNode {\n const shouldFill =\n node.full !== false &&\n (node.el === \"row\" || node.el === \"col\" || node.el === \"main\");\n return renderNode(shouldFill ? { ...node, full: true } : node, key);\n}\n\nfunction renderScreenBodyNodes(nodes: WireframeNode[]): ReactNode {\n return nodes.map((node, i) =>\n renderScreenBodyNode(node, node.id ?? `screen-body-${i}`),\n );\n}\n\n/** Render a single kit-tree node (and its children, recursively). */\nexport function renderNode(\n node: WireframeNode,\n key?: string | number,\n): ReactNode {\n const renderer = REGISTRY[node.el];\n const children = node.children?.length ? renderNodes(node.children) : null;\n if (!renderer) {\n return children ? <div key={key}>{children}</div> : null;\n }\n const rendered = renderer(node, children);\n return <KeyedNode key={key ?? node.id}>{rendered}</KeyedNode>;\n}\n\n/** Render an array of nodes. */\nexport function renderNodes(nodes: WireframeNode[]): ReactNode {\n return nodes.map((node, i) => renderNode(node, node.id ?? i));\n}\n\n/** Lightweight keyed wrapper that does not introduce extra DOM. */\nfunction KeyedNode({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n\n/** Whether an `el` name has a registered renderer. */\nexport function hasRenderer(el: string): el is WireframeElName {\n return el in REGISTRY;\n}\n\nexport { REGISTRY as NODE_REGISTRY, V as WFV, toneColors, toneInk, fontWeight };\n\n/* ========================================================================== */\n/* Rough overlay (ported from kit/rough.tsx) */\n/* ========================================================================== */\n\nconst gen = rough.generator();\n\ntype RoughPath = { d: string; stroke: string; strokeWidth: number };\n\n/** The default selector used for HTML mockups: standard wireframe primitives plus explicit opt-ins. */\nexport const HTML_ROUGH_SELECTOR =\n \"[data-rough],button,input,textarea,select,hr,.wf-btn,.wf-card,.wf-box,.wf-pill,.wf-chip,.wf-icon-fallback,[style*='border:'],[style*='border-top:'],[style*='border-right:'],[style*='border-bottom:'],[style*='border-left:']\";\n\n/** Stable per-element seed so a frame doesn't re-wobble on every measure. */\nfunction seedFrom(...parts: Array<string | number>): number {\n const value = parts.join(\":\");\n let hash = 2166136261;\n for (let i = 0; i < value.length; i++) {\n hash ^= value.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return ((hash >>> 0) % 2147483646) + 1;\n}\n\n/** Map the 0–100 sketch slider to a rough.js roughness (calm + legible). */\nexport function sketchRoughness(sketch: number): number {\n const s = Math.max(0, Math.min(100, Number.isFinite(sketch) ? sketch : 0));\n return Number((0.32 + (s / 100) * 1.15).toFixed(2));\n}\n\nfunction sketchBowing(sketch: number): number {\n const s = Math.max(0, Math.min(100, Number.isFinite(sketch) ? sketch : 0));\n return Number((0.4 + (s / 100) * 0.5).toFixed(2));\n}\n\nfunction readVar(el: Element, name: string): string {\n return getComputedStyle(el).getPropertyValue(name).trim();\n}\n\n/** Normalize a CSS color (hex or rgb[a]) to \"r,g,b\" for equality comparison. */\nfunction toRgbKey(color: string): string | null {\n const c = color.trim();\n const hex = c.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);\n if (hex) {\n const h = hex[1];\n const full =\n h.length === 3\n ? h\n .split(\"\")\n .map((d) => d + d)\n .join(\"\")\n : h;\n const n = parseInt(full, 16);\n return `${(n >> 16) & 255},${(n >> 8) & 255},${n & 255}`;\n }\n const rgb = c.match(/rgba?\\(([^)]+)\\)/i);\n if (rgb) {\n const [r, g, b] = rgb[1].split(\",\").map((v) => parseInt(v.trim(), 10));\n return `${r},${g},${b}`;\n }\n return null;\n}\n\n/** True when two CSS colors resolve to the same RGB (hex vs rgb tolerant). */\nfunction sameColor(a: string, b: string): boolean {\n const ka = toRgbKey(a);\n const kb = toRgbKey(b);\n return ka !== null && ka === kb;\n}\n\n/** A rounded-rect SVG path (so the frame stroke follows the artboard radius). */\nfunction roundedRectPath(\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n): string {\n const rad = Math.max(0, Math.min(r, w / 2, h / 2));\n return [\n `M${x + rad},${y}`,\n `H${x + w - rad}`,\n `A${rad},${rad} 0 0 1 ${x + w},${y + rad}`,\n `V${y + h - rad}`,\n `A${rad},${rad} 0 0 1 ${x + w - rad},${y + h}`,\n `H${x + rad}`,\n `A${rad},${rad} 0 0 1 ${x},${y + h - rad}`,\n `V${y + rad}`,\n `A${rad},${rad} 0 0 1 ${x + rad},${y}`,\n \"Z\",\n ].join(\" \");\n}\n\n/** Rough.js cannot safely render paths whose inset consumes the whole box. */\nexport function hasDrawableRoughBounds(\n width: number,\n height: number,\n inset: number,\n): boolean {\n return (\n Number.isFinite(width) &&\n Number.isFinite(height) &&\n width > inset * 2 &&\n height > inset * 2\n );\n}\n\nfunction elementStroke(node: Element, fallback: string): string {\n const explicit = readVar(node, \"--rough-stroke\");\n if (explicit) return explicit;\n const cs = getComputedStyle(node);\n for (const side of [\n \"borderTopColor\",\n \"borderLeftColor\",\n \"borderBottomColor\",\n \"borderRightColor\",\n ] as const) {\n const width = parseFloat(\n cs.getPropertyValue(side.replace(\"Color\", \"Width\")),\n );\n const color = cs[side];\n if (width > 0 && color && color !== \"rgba(0, 0, 0, 0)\") return color;\n }\n return fallback;\n}\n\nfunction visibleBorderSides(\n node: Element,\n): Array<\"top\" | \"right\" | \"bottom\" | \"left\"> {\n const cs = getComputedStyle(node);\n const sides: Array<\"top\" | \"right\" | \"bottom\" | \"left\"> = [];\n for (const [side, widthProp, colorProp] of [\n [\"top\", \"borderTopWidth\", \"borderTopColor\"],\n [\"right\", \"borderRightWidth\", \"borderRightColor\"],\n [\"bottom\", \"borderBottomWidth\", \"borderBottomColor\"],\n [\"left\", \"borderLeftWidth\", \"borderLeftColor\"],\n ] as const) {\n const width = parseFloat(cs[widthProp]);\n const color = cs[colorProp];\n if (\n width > 0 &&\n color &&\n color !== \"rgba(0, 0, 0, 0)\" &&\n color !== \"transparent\"\n ) {\n sides.push(side);\n }\n }\n return sides;\n}\n\nfunction inferRoughKind(node: HTMLElement): string {\n const explicit = node.getAttribute(\"data-rough\");\n if (explicit) return explicit;\n if (node.tagName === \"HR\") return \"line:middle\";\n const sides = visibleBorderSides(node);\n if (sides.length !== 1) return \"rect\";\n switch (sides[0]) {\n case \"top\":\n return \"line:top\";\n case \"right\":\n return \"line:right\";\n case \"bottom\":\n return \"line:bottom\";\n case \"left\":\n return \"line:left\";\n }\n return \"rect\";\n}\n\nfunction build(\n scope: HTMLElement,\n opts: {\n roughness: number;\n bowing: number;\n frameRadius: number;\n drawFrame: boolean;\n selector: string;\n },\n): { paths: RoughPath[]; w: number; h: number } {\n const base = scope.getBoundingClientRect();\n const layoutW = scope.offsetWidth;\n const layoutH = scope.offsetHeight;\n if (!layoutW || !layoutH) return { paths: [], w: 0, h: 0 };\n const zoom = base.width / layoutW || 1;\n\n const themed =\n (scope.matches(\".plan-wf, .plan-html-frame, .plan-diagram-frame\")\n ? scope\n : scope.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n )) ?? scope;\n const ink =\n readVar(themed, \"--ink\") || readVar(themed, \"--wf-ink\") || \"#34322e\";\n const sketch = readVar(themed, \"--wf-sketch\") || ink;\n const line = readVar(themed, \"--wf-line\") || readVar(themed, \"--line\") || \"\";\n\n const paths: RoughPath[] = [];\n let index = 0;\n const push = (drawable: unknown, stroke: string, sw: number) => {\n for (const p of gen.toPaths(\n drawable as Parameters<typeof gen.toPaths>[0],\n )) {\n paths.push({\n d: p.d,\n stroke: p.stroke && p.stroke !== \"none\" ? p.stroke : stroke,\n strokeWidth: p.strokeWidth || sw,\n });\n }\n };\n const makeOpts = (stroke: string, sw: number, seed: number) => ({\n seed,\n roughness: opts.roughness,\n bowing: opts.bowing,\n stroke,\n strokeWidth: sw,\n preserveVertices: true,\n });\n\n if (opts.drawFrame && hasDrawableRoughBounds(layoutW, layoutH, 2)) {\n const sw = 2;\n push(\n gen.path(\n roundedRectPath(2, 2, layoutW - 4, layoutH - 4, opts.frameRadius),\n {\n ...makeOpts(sketch, sw, seedFrom(\"frame\", layoutW, layoutH)),\n roughness: opts.roughness + 0.35,\n bowing: opts.bowing + 0.18,\n },\n ),\n sketch,\n sw,\n );\n }\n\n scope.querySelectorAll<HTMLElement>(opts.selector).forEach((node) => {\n if (node.getAttribute(\"data-rough\") === \"none\") return;\n if (readVar(node, \"--rough-skip\") === \"1\") return;\n const r = node.getBoundingClientRect();\n const x = (r.left - base.left) / zoom;\n const y = (r.top - base.top) / zoom;\n const w = r.width / zoom;\n const h = r.height / zoom;\n if (!hasDrawableRoughBounds(w, h, 1)) return;\n const kind = inferRoughKind(node);\n const rawStroke = elementStroke(node, sketch);\n const stroke =\n sameColor(rawStroke, ink) || (line !== \"\" && sameColor(rawStroke, line))\n ? sketch\n : rawStroke;\n const sw = Number(readVar(node, \"--rough-w\")) || 1.4;\n const seed = seedFrom(\n kind,\n Math.round(x),\n Math.round(y),\n Math.round(w),\n Math.round(h),\n index++,\n );\n const o = makeOpts(stroke, sw, seed);\n let drawable: unknown;\n if (kind === \"ellipse\") {\n drawable = gen.ellipse(x + w / 2, y + h / 2, w, h, o);\n } else if (kind === \"line:left\") {\n drawable = gen.line(x, y, x, y + h, o);\n } else if (kind === \"line:right\") {\n drawable = gen.line(x + w, y, x + w, y + h, o);\n } else if (kind === \"line:bottom\") {\n drawable = gen.line(x, y + h, x + w, y + h, o);\n } else if (kind === \"line:top\") {\n drawable = gen.line(x, y, x + w, y, o);\n } else if (kind === \"line:middle\") {\n drawable = gen.line(x, y + h / 2, x + w, y + h / 2, o);\n } else {\n const cr = parseFloat(getComputedStyle(node).borderTopLeftRadius) || 0;\n const radius = Math.min(cr / zoom, w / 2, h / 2);\n drawable =\n radius > 1\n ? gen.path(roundedRectPath(x + 1, y + 1, w - 2, h - 2, radius), o)\n : gen.rectangle(x + 1, y + 1, w - 2, h - 2, o);\n }\n push(drawable, stroke, sw);\n });\n\n return { paths, w: layoutW, h: layoutH };\n}\n\n/**\n * Renders the rough overlay for a frame. `scopeRef` points at the frame root.\n * When `enabled` is false (skeleton / clean register) it renders nothing and the\n * crisp CSS borders stay visible.\n */\nexport function RoughOverlay({\n scopeRef,\n sketch = 52,\n enabled = true,\n drawFrame = true,\n frameRadius = 14,\n selector = \"[data-rough]\",\n}: {\n scopeRef: RefObject<HTMLElement | null>;\n sketch?: number;\n enabled?: boolean;\n drawFrame?: boolean;\n frameRadius?: number;\n selector?: string;\n}) {\n const [state, setState] = useState<{\n paths: RoughPath[];\n w: number;\n h: number;\n }>({ paths: [], w: 0, h: 0 });\n const rafRef = useRef(0);\n\n useEffect(() => {\n const el = scopeRef.current;\n if (!el || !enabled) {\n el?.removeAttribute(\"data-rough-ready\");\n el?.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n )?.removeAttribute(\"data-rough-ready\");\n setState({ paths: [], w: 0, h: 0 });\n return;\n }\n const roughness = sketchRoughness(sketch);\n const bowing = sketchBowing(sketch);\n const measure = () => {\n clearTimeout(rafRef.current);\n rafRef.current = window.setTimeout(() => {\n const next = build(el, {\n roughness,\n bowing,\n frameRadius,\n drawFrame,\n selector,\n });\n if (next.w && next.h) {\n el.setAttribute(\"data-rough-ready\", \"true\");\n (\n el.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n ) ?? el\n ).setAttribute(\"data-rough-ready\", \"true\");\n setState(next);\n }\n }, 0);\n };\n measure();\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n el.querySelectorAll(selector).forEach((node) => ro.observe(node));\n const mo = new MutationObserver((mutations) => {\n if (mutations.every(isRoughOverlayMutation)) return;\n measure();\n });\n mo.observe(el, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n el.addEventListener(\"plan-prototype-runtime:rendered\", measure);\n let cancelled = false;\n if (typeof document !== \"undefined\" && \"fonts\" in document) {\n void document.fonts.ready.then(() => {\n if (!cancelled) measure();\n });\n }\n return () => {\n cancelled = true;\n ro.disconnect();\n mo.disconnect();\n el.removeEventListener(\"plan-prototype-runtime:rendered\", measure);\n clearTimeout(rafRef.current);\n el.removeAttribute(\"data-rough-ready\");\n el.querySelector(\n \".plan-wf, .plan-html-frame, .plan-diagram-frame\",\n )?.removeAttribute(\"data-rough-ready\");\n };\n }, [scopeRef, sketch, enabled, drawFrame, frameRadius, selector]);\n\n if (!enabled || !state.paths.length) return null;\n return (\n <svg\n aria-hidden\n className=\"plan-rough-overlay\"\n width=\"100%\"\n height=\"100%\"\n viewBox={`0 0 ${state.w} ${state.h}`}\n preserveAspectRatio=\"none\"\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n zIndex: 3,\n }}\n >\n {state.paths.map((p, i) => (\n <path\n key={i}\n d={p.d}\n fill=\"none\"\n stroke={p.stroke}\n strokeWidth={p.strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </svg>\n );\n}\n\nfunction isRoughOverlayMutation(mutation: MutationRecord) {\n if (nodeIsRoughOverlay(mutation.target)) return true;\n\n const changedNodes = [\n ...Array.from(mutation.addedNodes),\n ...Array.from(mutation.removedNodes),\n ];\n return changedNodes.length > 0 && changedNodes.every(nodeIsRoughOverlay);\n}\n\nfunction nodeIsRoughOverlay(node: Node) {\n const element = node instanceof Element ? node : node.parentElement;\n return Boolean(\n element?.classList.contains(\"plan-rough-overlay\") ||\n element?.closest(\".plan-rough-overlay\"),\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-model-groups.d.ts","sourceRoot":"","sources":["../../src/client/chat-model-groups.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAiFD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,cAAc,EACd,gBAAwB,EACxB,iBAAiB,EACjB,YAAY,GACb,EAAE,2BAA2B,GAAG,gBAAgB,EAAE,CAkClD"}
1
+ {"version":3,"file":"chat-model-groups.d.ts","sourceRoot":"","sources":["../../src/client/chat-model-groups.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4GD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,cAAc,EACd,gBAAwB,EACxB,iBAAiB,EACjB,YAAY,GACb,EAAE,2BAA2B,GAAG,gBAAgB,EAAE,CAmClD"}
@@ -1,3 +1,8 @@
1
+ const HIDDEN_CHAT_MODEL_ENGINES = new Set([
2
+ "ai-sdk:groq",
3
+ "ai-sdk:mistral",
4
+ "ai-sdk:cohere",
5
+ ]);
1
6
  function addCurrentModel(models, engineName, currentEngineName, currentModel) {
2
7
  const next = [...models];
3
8
  if (engineName === currentEngineName && currentModel && next.length === 0) {
@@ -56,6 +61,13 @@ function groupBuilderModels(models) {
56
61
  ];
57
62
  }
58
63
  function shouldShowDirectEngine(engine, currentEngineName) {
64
+ // Keep a persisted selection usable after an engine is hidden from the
65
+ // picker; users can choose a supported replacement instead of landing on a
66
+ // model that no longer has a rendered group.
67
+ if (HIDDEN_CHAT_MODEL_ENGINES.has(engine.name) &&
68
+ engine.name !== currentEngineName) {
69
+ return false;
70
+ }
59
71
  if (engine.name === currentEngineName)
60
72
  return true;
61
73
  if (engine.name === "builder")
@@ -66,6 +78,17 @@ function shouldShowDirectEngine(engine, currentEngineName) {
66
78
  return false;
67
79
  return true;
68
80
  }
81
+ function putOpenRouterLast(a, b) {
82
+ const aIsOpenRouter = a.name === "ai-sdk:openrouter";
83
+ const bIsOpenRouter = b.name === "ai-sdk:openrouter";
84
+ if (aIsOpenRouter === bIsOpenRouter)
85
+ return 0;
86
+ if (aIsOpenRouter)
87
+ return 1;
88
+ if (bIsOpenRouter)
89
+ return -1;
90
+ return 0;
91
+ }
69
92
  export function buildChatModelGroups({ engines, configuredKeys, builderConnected = false, currentEngineName, currentModel, }) {
70
93
  const configured = new Set(configuredKeys ?? []);
71
94
  if (builderConnected) {
@@ -76,6 +99,7 @@ export function buildChatModelGroups({ engines, configuredKeys, builderConnected
76
99
  return engines
77
100
  .filter((engine) => engine.packageInstalled !== false)
78
101
  .filter((engine) => shouldShowDirectEngine(engine, currentEngineName))
102
+ .sort(putOpenRouterLast)
79
103
  .map((engine) => {
80
104
  const requiredEnvVars = engine.requiredEnvVars ?? [];
81
105
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"chat-model-groups.js","sourceRoot":"","sources":["../../src/client/chat-model-groups.ts"],"names":[],"mappings":"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","sourcesContent":["export interface EngineModelGroup {\n engine: string;\n label: string;\n models: string[];\n configured: boolean;\n}\n\nexport interface ChatModelEngineEntry {\n name: string;\n label: string;\n supportedModels?: readonly string[];\n requiredEnvVars?: readonly string[];\n packageInstalled?: boolean;\n}\n\nexport interface BuildChatModelGroupsOptions {\n engines: readonly ChatModelEngineEntry[];\n configuredKeys?: Iterable<string>;\n builderConnected?: boolean;\n currentEngineName?: string;\n currentModel?: string;\n}\n\nfunction addCurrentModel(\n models: readonly string[],\n engineName: string,\n currentEngineName?: string,\n currentModel?: string,\n): string[] {\n const next = [...models];\n if (engineName === currentEngineName && currentModel && next.length === 0) {\n next.unshift(currentModel);\n }\n return next;\n}\n\nfunction groupBuilderModels(models: readonly string[]): EngineModelGroup[] {\n const claude = models.filter((model) => model.startsWith(\"claude-\"));\n const openai = models.filter((model) => model.startsWith(\"gpt-\"));\n const gemini = models.filter((model) => model.startsWith(\"gemini-\"));\n const other = models.filter(\n (model) =>\n !model.startsWith(\"claude-\") &&\n !model.startsWith(\"gpt-\") &&\n !model.startsWith(\"gemini-\"),\n );\n\n return [\n ...(claude.length\n ? [\n {\n engine: \"builder\",\n label: \"Claude\",\n models: claude,\n configured: true,\n },\n ]\n : []),\n ...(openai.length\n ? [\n {\n engine: \"builder\",\n label: \"OpenAI\",\n models: openai,\n configured: true,\n },\n ]\n : []),\n ...(gemini.length\n ? [\n {\n engine: \"builder\",\n label: \"Gemini\",\n models: gemini,\n configured: true,\n },\n ]\n : []),\n ...(other.length\n ? [\n {\n engine: \"builder\",\n label: \"More\",\n models: other,\n configured: true,\n },\n ]\n : []),\n ];\n}\n\nfunction shouldShowDirectEngine(\n engine: ChatModelEngineEntry,\n currentEngineName?: string,\n): boolean {\n if (engine.name === currentEngineName) return true;\n if (engine.name === \"builder\") return false;\n if (engine.name === \"ai-sdk:anthropic\") return false;\n if (engine.requiredEnvVars?.length === 0) return false;\n return true;\n}\n\nexport function buildChatModelGroups({\n engines,\n configuredKeys,\n builderConnected = false,\n currentEngineName,\n currentModel,\n}: BuildChatModelGroupsOptions): EngineModelGroup[] {\n const configured = new Set(configuredKeys ?? []);\n\n if (builderConnected) {\n const builderEngine = engines.find((engine) => engine.name === \"builder\");\n const builderModels = addCurrentModel(\n builderEngine?.supportedModels ?? [],\n \"builder\",\n currentEngineName,\n currentModel,\n );\n return groupBuilderModels(builderModels);\n }\n\n return engines\n .filter((engine) => engine.packageInstalled !== false)\n .filter((engine) => shouldShowDirectEngine(engine, currentEngineName))\n .map((engine) => {\n const requiredEnvVars = engine.requiredEnvVars ?? [];\n return {\n engine: engine.name,\n label: engine.label,\n models: addCurrentModel(\n engine.supportedModels ?? [],\n engine.name,\n currentEngineName,\n currentModel,\n ),\n configured:\n requiredEnvVars.length === 0 ||\n requiredEnvVars.some((key) => configured.has(key)),\n };\n })\n .filter((group) => group.models.length > 0);\n}\n"]}
1
+ {"version":3,"file":"chat-model-groups.js","sourceRoot":"","sources":["../../src/client/chat-model-groups.ts"],"names":[],"mappings":"AAuBA,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,aAAa;IACb,gBAAgB;IAChB,eAAe;CAChB,CAAC,CAAC;AAEH,SAAS,eAAe,CACtB,MAAyB,EACzB,UAAkB,EAClB,iBAA0B,EAC1B,YAAqB;IAErB,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACzB,IAAI,UAAU,KAAK,iBAAiB,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAyB;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CACzB,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5B,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;QACzB,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAC/B,CAAC;IAEF,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC;gBACE;oBACE,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;iBACjB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC;gBACE;oBACE,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;iBACjB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC;gBACE;oBACE,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,IAAI;iBACjB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM;YACd,CAAC,CAAC;gBACE;oBACE,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,IAAI;iBACjB;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAA4B,EAC5B,iBAA0B;IAE1B,uEAAuE;IACvE,2EAA2E;IAC3E,6CAA6C;IAC7C,IACE,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1C,MAAM,CAAC,IAAI,KAAK,iBAAiB,EACjC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,MAAM,CAAC,eAAe,EAAE,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,CAAuB,EACvB,CAAuB;IAEvB,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC;IACrD,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC;IACrD,IAAI,aAAa,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,aAAa;QAAE,OAAO,CAAC,CAAC;IAC5B,IAAI,aAAa;QAAE,OAAO,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EACnC,OAAO,EACP,cAAc,EACd,gBAAgB,GAAG,KAAK,EACxB,iBAAiB,EACjB,YAAY,GACgB;IAC5B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAEjD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,eAAe,CACnC,aAAa,EAAE,eAAe,IAAI,EAAE,EACpC,SAAS,EACT,iBAAiB,EACjB,YAAY,CACb,CAAC;QACF,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,KAAK,KAAK,CAAC;SACrD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;SACrE,IAAI,CAAC,iBAAiB,CAAC;SACvB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,eAAe,CACrB,MAAM,CAAC,eAAe,IAAI,EAAE,EAC5B,MAAM,CAAC,IAAI,EACX,iBAAiB,EACjB,YAAY,CACb;YACD,UAAU,EACR,eAAe,CAAC,MAAM,KAAK,CAAC;gBAC5B,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACrD,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC","sourcesContent":["export interface EngineModelGroup {\n engine: string;\n label: string;\n models: string[];\n configured: boolean;\n}\n\nexport interface ChatModelEngineEntry {\n name: string;\n label: string;\n supportedModels?: readonly string[];\n requiredEnvVars?: readonly string[];\n packageInstalled?: boolean;\n}\n\nexport interface BuildChatModelGroupsOptions {\n engines: readonly ChatModelEngineEntry[];\n configuredKeys?: Iterable<string>;\n builderConnected?: boolean;\n currentEngineName?: string;\n currentModel?: string;\n}\n\nconst HIDDEN_CHAT_MODEL_ENGINES = new Set([\n \"ai-sdk:groq\",\n \"ai-sdk:mistral\",\n \"ai-sdk:cohere\",\n]);\n\nfunction addCurrentModel(\n models: readonly string[],\n engineName: string,\n currentEngineName?: string,\n currentModel?: string,\n): string[] {\n const next = [...models];\n if (engineName === currentEngineName && currentModel && next.length === 0) {\n next.unshift(currentModel);\n }\n return next;\n}\n\nfunction groupBuilderModels(models: readonly string[]): EngineModelGroup[] {\n const claude = models.filter((model) => model.startsWith(\"claude-\"));\n const openai = models.filter((model) => model.startsWith(\"gpt-\"));\n const gemini = models.filter((model) => model.startsWith(\"gemini-\"));\n const other = models.filter(\n (model) =>\n !model.startsWith(\"claude-\") &&\n !model.startsWith(\"gpt-\") &&\n !model.startsWith(\"gemini-\"),\n );\n\n return [\n ...(claude.length\n ? [\n {\n engine: \"builder\",\n label: \"Claude\",\n models: claude,\n configured: true,\n },\n ]\n : []),\n ...(openai.length\n ? [\n {\n engine: \"builder\",\n label: \"OpenAI\",\n models: openai,\n configured: true,\n },\n ]\n : []),\n ...(gemini.length\n ? [\n {\n engine: \"builder\",\n label: \"Gemini\",\n models: gemini,\n configured: true,\n },\n ]\n : []),\n ...(other.length\n ? [\n {\n engine: \"builder\",\n label: \"More\",\n models: other,\n configured: true,\n },\n ]\n : []),\n ];\n}\n\nfunction shouldShowDirectEngine(\n engine: ChatModelEngineEntry,\n currentEngineName?: string,\n): boolean {\n // Keep a persisted selection usable after an engine is hidden from the\n // picker; users can choose a supported replacement instead of landing on a\n // model that no longer has a rendered group.\n if (\n HIDDEN_CHAT_MODEL_ENGINES.has(engine.name) &&\n engine.name !== currentEngineName\n ) {\n return false;\n }\n if (engine.name === currentEngineName) return true;\n if (engine.name === \"builder\") return false;\n if (engine.name === \"ai-sdk:anthropic\") return false;\n if (engine.requiredEnvVars?.length === 0) return false;\n return true;\n}\n\nfunction putOpenRouterLast(\n a: ChatModelEngineEntry,\n b: ChatModelEngineEntry,\n): number {\n const aIsOpenRouter = a.name === \"ai-sdk:openrouter\";\n const bIsOpenRouter = b.name === \"ai-sdk:openrouter\";\n if (aIsOpenRouter === bIsOpenRouter) return 0;\n if (aIsOpenRouter) return 1;\n if (bIsOpenRouter) return -1;\n return 0;\n}\n\nexport function buildChatModelGroups({\n engines,\n configuredKeys,\n builderConnected = false,\n currentEngineName,\n currentModel,\n}: BuildChatModelGroupsOptions): EngineModelGroup[] {\n const configured = new Set(configuredKeys ?? []);\n\n if (builderConnected) {\n const builderEngine = engines.find((engine) => engine.name === \"builder\");\n const builderModels = addCurrentModel(\n builderEngine?.supportedModels ?? [],\n \"builder\",\n currentEngineName,\n currentModel,\n );\n return groupBuilderModels(builderModels);\n }\n\n return engines\n .filter((engine) => engine.packageInstalled !== false)\n .filter((engine) => shouldShowDirectEngine(engine, currentEngineName))\n .sort(putOpenRouterLast)\n .map((engine) => {\n const requiredEnvVars = engine.requiredEnvVars ?? [];\n return {\n engine: engine.name,\n label: engine.label,\n models: addCurrentModel(\n engine.supportedModels ?? [],\n engine.name,\n currentEngineName,\n currentModel,\n ),\n configured:\n requiredEnvVars.length === 0 ||\n requiredEnvVars.some((key) => configured.has(key)),\n };\n })\n .filter((group) => group.models.length > 0);\n}\n"]}