nudge-ui 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +66 -0
  2. package/bin/nudge-ui.mjs +7 -0
  3. package/dist/LICENSE +21 -0
  4. package/dist/client.mjs +261 -0
  5. package/dist/compiler/ast.d.ts +18 -0
  6. package/dist/compiler/ast.js +75 -0
  7. package/dist/compiler/componentContractTypes.d.ts +19 -0
  8. package/dist/compiler/componentContractTypes.js +1 -0
  9. package/dist/compiler/componentContracts.d.ts +2 -0
  10. package/dist/compiler/componentContracts.js +260 -0
  11. package/dist/compiler/componentInstrumentation.d.ts +32 -0
  12. package/dist/compiler/componentInstrumentation.js +140 -0
  13. package/dist/compiler/componentPolicyResolution.d.ts +71 -0
  14. package/dist/compiler/componentPolicyResolution.js +388 -0
  15. package/dist/compiler/index.d.ts +9 -0
  16. package/dist/compiler/index.js +9 -0
  17. package/dist/compiler/packageComponentContracts.d.ts +32 -0
  18. package/dist/compiler/packageComponentContracts.js +308 -0
  19. package/dist/compiler/reactComponentProtocols.d.ts +145 -0
  20. package/dist/compiler/reactComponentProtocols.js +47 -0
  21. package/dist/compiler/reactIdentity.d.ts +15 -0
  22. package/dist/compiler/reactIdentity.js +339 -0
  23. package/dist/compiler/sourcePaths.d.ts +12 -0
  24. package/dist/compiler/sourcePaths.js +27 -0
  25. package/dist/css/dialects/index.d.ts +62 -0
  26. package/dist/css/dialects/index.js +103 -0
  27. package/dist/css/dialects/tailwind.d.ts +46 -0
  28. package/dist/css/dialects/tailwind.js +119 -0
  29. package/dist/css/dialects/vanillaExtract.d.ts +20 -0
  30. package/dist/css/dialects/vanillaExtract.js +32 -0
  31. package/dist/css/index.d.ts +10 -0
  32. package/dist/css/index.js +10 -0
  33. package/dist/css/model/index.d.ts +190 -0
  34. package/dist/css/model/index.js +10 -0
  35. package/dist/css/token-inventory/index.d.ts +26 -0
  36. package/dist/css/token-inventory/index.js +24 -0
  37. package/dist/css/token-inventory/inventory.d.ts +8 -0
  38. package/dist/css/token-inventory/inventory.js +421 -0
  39. package/dist/css/token-inventory/parseStylesheet.d.ts +16 -0
  40. package/dist/css/token-inventory/parseStylesheet.js +155 -0
  41. package/dist/css/token-inventory/policy.d.ts +47 -0
  42. package/dist/css/token-inventory/policy.js +50 -0
  43. package/dist/css/token-inventory/types.d.ts +97 -0
  44. package/dist/css/token-inventory/types.js +1 -0
  45. package/dist/css/value-semantics/borderSemantics.d.ts +28 -0
  46. package/dist/css/value-semantics/borderSemantics.js +91 -0
  47. package/dist/css/value-semantics/boxSemantics.d.ts +37 -0
  48. package/dist/css/value-semantics/boxSemantics.js +71 -0
  49. package/dist/css/value-semantics/colorSemantics.d.ts +99 -0
  50. package/dist/css/value-semantics/colorSemantics.js +526 -0
  51. package/dist/css/value-semantics/cssSyntax.d.ts +19 -0
  52. package/dist/css/value-semantics/cssSyntax.js +111 -0
  53. package/dist/css/value-semantics/fontSemantics.d.ts +35 -0
  54. package/dist/css/value-semantics/fontSemantics.js +131 -0
  55. package/dist/css/value-semantics/index.d.ts +20 -0
  56. package/dist/css/value-semantics/index.js +15 -0
  57. package/dist/css/value-semantics/propertyPolicy.d.ts +118 -0
  58. package/dist/css/value-semantics/propertyPolicy.js +356 -0
  59. package/dist/css/value-semantics/stringMaps.d.ts +2 -0
  60. package/dist/css/value-semantics/stringMaps.js +1 -0
  61. package/dist/css/value-semantics/structuredValues.d.ts +64 -0
  62. package/dist/css/value-semantics/structuredValues.js +250 -0
  63. package/dist/css/value-semantics/tokenInterpretation.d.ts +90 -0
  64. package/dist/css/value-semantics/tokenInterpretation.js +193 -0
  65. package/dist/css/virtual-design-tokens.d.ts +17 -0
  66. package/dist/hosts/astro/astroRuntimeConfig.d.ts +12 -0
  67. package/dist/hosts/astro/astroRuntimeConfig.js +26 -0
  68. package/dist/hosts/astro/clientAsset.d.ts +12 -0
  69. package/dist/hosts/astro/clientAsset.js +51 -0
  70. package/dist/hosts/astro/clientTransport.d.ts +3 -0
  71. package/dist/hosts/astro/clientTransport.js +57 -0
  72. package/dist/hosts/astro/index.d.ts +3 -0
  73. package/dist/hosts/astro/index.js +2 -0
  74. package/dist/hosts/astro/integration.d.ts +35 -0
  75. package/dist/hosts/astro/integration.js +96 -0
  76. package/dist/hosts/astro/middleware.d.ts +13 -0
  77. package/dist/hosts/astro/middleware.js +22 -0
  78. package/dist/hosts/astro/projectContext.d.ts +11 -0
  79. package/dist/hosts/astro/projectContext.js +34 -0
  80. package/dist/hosts/astro/responseInstrumentation.d.ts +41 -0
  81. package/dist/hosts/astro/responseInstrumentation.js +80 -0
  82. package/dist/hosts/next/index.d.ts +4 -0
  83. package/dist/hosts/next/index.js +7 -0
  84. package/dist/hosts/next/loader.d.ts +66 -0
  85. package/dist/hosts/next/loader.js +346 -0
  86. package/dist/hosts/next/loaders/identity-loader.cjs +228257 -0
  87. package/dist/hosts/next/loaders/loader-plugin.cjs +228257 -0
  88. package/dist/hosts/next/manifest.d.ts +38 -0
  89. package/dist/hosts/next/manifest.js +30 -0
  90. package/dist/hosts/next/mount.d.ts +12 -0
  91. package/dist/hosts/next/mount.js +23 -0
  92. package/dist/hosts/next/repositoryScope.d.ts +20 -0
  93. package/dist/hosts/next/repositoryScope.js +33 -0
  94. package/dist/hosts/next/sidecar.d.ts +27 -0
  95. package/dist/hosts/next/sidecar.js +526 -0
  96. package/dist/hosts/next/wrapper.d.ts +67 -0
  97. package/dist/hosts/next/wrapper.js +310 -0
  98. package/dist/hosts/static/cli.d.ts +12 -0
  99. package/dist/hosts/static/cli.js +77 -0
  100. package/dist/hosts/static/html/bootstrap.d.ts +27 -0
  101. package/dist/hosts/static/html/bootstrap.js +93 -0
  102. package/dist/hosts/static/index.d.ts +4 -0
  103. package/dist/hosts/static/index.js +4 -0
  104. package/dist/hosts/static/manifest.d.ts +18 -0
  105. package/dist/hosts/static/manifest.js +51 -0
  106. package/dist/hosts/static/server.d.ts +72 -0
  107. package/dist/hosts/static/server.js +554 -0
  108. package/dist/hosts/vite/index.d.ts +20 -0
  109. package/dist/hosts/vite/index.js +48 -0
  110. package/dist/hosts/vite/react.d.ts +67 -0
  111. package/dist/hosts/vite/react.js +231 -0
  112. package/dist/hosts/vite/tokens/activeStylesheets.d.ts +28 -0
  113. package/dist/hosts/vite/tokens/activeStylesheets.js +70 -0
  114. package/dist/hosts/vite/tokens/fileMap.d.ts +2 -0
  115. package/dist/hosts/vite/tokens/fileMap.js +1 -0
  116. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +46 -0
  117. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +104 -0
  118. package/dist/hosts/vite/virtual/design-tokens.d.ts +9 -0
  119. package/dist/hosts/vite/virtual/design-tokens.js +7 -0
  120. package/dist/hosts/vite/virtual-design-tokens.d.ts +1 -0
  121. package/dist/hosts/vite/vite.d.ts +62 -0
  122. package/dist/hosts/vite/vite.js +854 -0
  123. package/dist/html/dom.d.ts +13 -0
  124. package/dist/html/dom.js +46 -0
  125. package/dist/html/identity.d.ts +40 -0
  126. package/dist/html/identity.js +196 -0
  127. package/dist/html/insertions.d.ts +26 -0
  128. package/dist/html/insertions.js +59 -0
  129. package/dist/inspector/agent/McpConnectionDialog.d.ts +26 -0
  130. package/dist/inspector/agent/McpConnectionDialog.js +135 -0
  131. package/dist/inspector/agent/client.d.ts +98 -0
  132. package/dist/inspector/agent/client.js +728 -0
  133. package/dist/inspector/agent/connectionStatus.d.ts +13 -0
  134. package/dist/inspector/agent/connectionStatus.js +35 -0
  135. package/dist/inspector/agent/httpTransport.d.ts +21 -0
  136. package/dist/inspector/agent/httpTransport.js +347 -0
  137. package/dist/inspector/agent/protocol.d.ts +95 -0
  138. package/dist/inspector/agent/protocol.js +9 -0
  139. package/dist/inspector/agent/verification.d.ts +39 -0
  140. package/dist/inspector/agent/verification.js +207 -0
  141. package/dist/inspector/canvas/CanvasCard.d.ts +10 -0
  142. package/dist/inspector/canvas/CanvasCard.js +275 -0
  143. package/dist/inspector/canvas/CanvasElementOverlay.d.ts +2 -0
  144. package/dist/inspector/canvas/CanvasElementOverlay.js +301 -0
  145. package/dist/inspector/canvas/CanvasWorkspace.d.ts +2 -0
  146. package/dist/inspector/canvas/CanvasWorkspace.js +301 -0
  147. package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +6 -0
  148. package/dist/inspector/canvas/LockedWorkspaceNotice.js +17 -0
  149. package/dist/inspector/canvas/StaleChangeIndicator.d.ts +7 -0
  150. package/dist/inspector/canvas/StaleChangeIndicator.js +43 -0
  151. package/dist/inspector/canvas/agentPresentation.d.ts +87 -0
  152. package/dist/inspector/canvas/agentPresentation.js +421 -0
  153. package/dist/inspector/canvas/canvasGestures.d.ts +12 -0
  154. package/dist/inspector/canvas/canvasGestures.js +21 -0
  155. package/dist/inspector/canvas/canvasStore.d.ts +108 -0
  156. package/dist/inspector/canvas/canvasStore.js +448 -0
  157. package/dist/inspector/canvas/frameProtocol.d.ts +231 -0
  158. package/dist/inspector/canvas/frameProtocol.js +165 -0
  159. package/dist/inspector/canvas/linkEligibility.d.ts +8 -0
  160. package/dist/inspector/canvas/linkEligibility.js +68 -0
  161. package/dist/inspector/canvas/measurementProjection.d.ts +8 -0
  162. package/dist/inspector/canvas/measurementProjection.js +16 -0
  163. package/dist/inspector/canvas/normalizeUrl.d.ts +7 -0
  164. package/dist/inspector/canvas/normalizeUrl.js +27 -0
  165. package/dist/inspector/canvas/projection.d.ts +41 -0
  166. package/dist/inspector/canvas/projection.js +232 -0
  167. package/dist/inspector/canvas/rendererBootstrap.d.ts +4 -0
  168. package/dist/inspector/canvas/rendererBootstrap.js +410 -0
  169. package/dist/inspector/canvas/rendererCidIndex.d.ts +11 -0
  170. package/dist/inspector/canvas/rendererCidIndex.js +21 -0
  171. package/dist/inspector/canvas/rendererElementSelector.d.ts +2 -0
  172. package/dist/inspector/canvas/rendererElementSelector.js +378 -0
  173. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +2 -0
  174. package/dist/inspector/canvas/rendererSelectionProxy.js +61 -0
  175. package/dist/inspector/canvas/rendererStylesheet.d.ts +16 -0
  176. package/dist/inspector/canvas/rendererStylesheet.js +221 -0
  177. package/dist/inspector/canvas/resizeHandleScale.d.ts +13 -0
  178. package/dist/inspector/canvas/resizeHandleScale.js +20 -0
  179. package/dist/inspector/canvas/roleDetection.d.ts +5 -0
  180. package/dist/inspector/canvas/roleDetection.js +21 -0
  181. package/dist/inspector/canvas/sessionStore.d.ts +71 -0
  182. package/dist/inspector/canvas/sessionStore.js +453 -0
  183. package/dist/inspector/canvas/staleChangeDetector.d.ts +11 -0
  184. package/dist/inspector/canvas/staleChangeDetector.js +217 -0
  185. package/dist/inspector/canvas/toolbarScale.d.ts +7 -0
  186. package/dist/inspector/canvas/toolbarScale.js +11 -0
  187. package/dist/inspector/canvas/workspaceLease.d.ts +26 -0
  188. package/dist/inspector/canvas/workspaceLease.js +214 -0
  189. package/dist/inspector/changes/changesLog.d.ts +46 -0
  190. package/dist/inspector/changes/changesLog.js +209 -0
  191. package/dist/inspector/changes/codecs.d.ts +98 -0
  192. package/dist/inspector/changes/codecs.js +389 -0
  193. package/dist/inspector/changes/editModel.d.ts +74 -0
  194. package/dist/inspector/changes/editModel.js +120 -0
  195. package/dist/inspector/changes/managedStyleProjection.d.ts +6 -0
  196. package/dist/inspector/changes/managedStyleProjection.js +109 -0
  197. package/dist/inspector/changes/model.d.ts +13 -0
  198. package/dist/inspector/changes/model.js +163 -0
  199. package/dist/inspector/changes/presentation.d.ts +14 -0
  200. package/dist/inspector/changes/presentation.js +81 -0
  201. package/dist/inspector/changes/previewDiagnostics.d.ts +39 -0
  202. package/dist/inspector/changes/previewDiagnostics.js +172 -0
  203. package/dist/inspector/changes/structuralTypes.d.ts +35 -0
  204. package/dist/inspector/changes/structuralTypes.js +1 -0
  205. package/dist/inspector/changes/types.d.ts +76 -0
  206. package/dist/inspector/changes/types.js +16 -0
  207. package/dist/inspector/changes/workspaceChanges.d.ts +43 -0
  208. package/dist/inspector/changes/workspaceChanges.js +239 -0
  209. package/dist/inspector/clientManifest.d.ts +24 -0
  210. package/dist/inspector/clientManifest.js +69 -0
  211. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +5 -0
  212. package/dist/inspector/componentSemantics/ComponentPropsSection.js +44 -0
  213. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +11 -0
  214. package/dist/inspector/componentSemantics/adapterRegistry.js +75 -0
  215. package/dist/inspector/componentSemantics/boundaries.d.ts +2 -0
  216. package/dist/inspector/componentSemantics/boundaries.js +10 -0
  217. package/dist/inspector/componentSemantics/changeAction.d.ts +3 -0
  218. package/dist/inspector/componentSemantics/changeAction.js +6 -0
  219. package/dist/inspector/componentSemantics/changeModel.d.ts +8 -0
  220. package/dist/inspector/componentSemantics/changeModel.js +60 -0
  221. package/dist/inspector/componentSemantics/index.d.ts +4 -0
  222. package/dist/inspector/componentSemantics/index.js +2 -0
  223. package/dist/inspector/componentSemantics/reactRuntime.d.ts +10 -0
  224. package/dist/inspector/componentSemantics/reactRuntime.js +186 -0
  225. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +25 -0
  226. package/dist/inspector/componentSemantics/runtimeBridge.js +161 -0
  227. package/dist/inspector/componentSemantics/runtimeTypes.d.ts +2 -0
  228. package/dist/inspector/componentSemantics/runtimeTypes.js +1 -0
  229. package/dist/inspector/componentSemantics/textBinding.d.ts +69 -0
  230. package/dist/inspector/componentSemantics/textBinding.js +514 -0
  231. package/dist/inspector/componentSemantics/types.d.ts +96 -0
  232. package/dist/inspector/componentSemantics/types.js +5 -0
  233. package/dist/inspector/conformance/borderCases.d.ts +7 -0
  234. package/dist/inspector/conformance/borderCases.js +428 -0
  235. package/dist/inspector/conformance/colorCases.d.ts +8 -0
  236. package/dist/inspector/conformance/colorCases.js +470 -0
  237. package/dist/inspector/conformance/fixture.d.ts +68 -0
  238. package/dist/inspector/conformance/fixture.js +153 -0
  239. package/dist/inspector/conformance/projection.d.ts +2 -0
  240. package/dist/inspector/conformance/projection.js +3 -0
  241. package/dist/inspector/conformance/spacingCases.d.ts +6 -0
  242. package/dist/inspector/conformance/spacingCases.js +417 -0
  243. package/dist/inspector/conformance/typographyCases.d.ts +7 -0
  244. package/dist/inspector/conformance/typographyCases.js +174 -0
  245. package/dist/inspector/editScope.d.ts +4 -0
  246. package/dist/inspector/editScope.js +5 -0
  247. package/dist/inspector/index.d.ts +20 -0
  248. package/dist/inspector/index.js +236 -0
  249. package/dist/inspector/inline-text/inlineTextEditor.d.ts +74 -0
  250. package/dist/inspector/inline-text/inlineTextEditor.js +1207 -0
  251. package/dist/inspector/inline-text/inlineTextLifecycle.d.ts +2 -0
  252. package/dist/inspector/inline-text/inlineTextLifecycle.js +17 -0
  253. package/dist/inspector/inline-text/textChangeBoundary.d.ts +6 -0
  254. package/dist/inspector/inline-text/textChangeBoundary.js +1 -0
  255. package/dist/inspector/inspection/bridge.d.ts +72 -0
  256. package/dist/inspector/inspection/bridge.js +134 -0
  257. package/dist/inspector/inspection/browserCssInspection.d.ts +74 -0
  258. package/dist/inspector/inspection/browserCssInspection.js +317 -0
  259. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +12 -0
  260. package/dist/inspector/inspection/browserCssInspectionRegistry.js +66 -0
  261. package/dist/inspector/inspection/selectionProperty.d.ts +32 -0
  262. package/dist/inspector/inspection/selectionProperty.js +33 -0
  263. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +20 -0
  264. package/dist/inspector/inspection/useBrowserCssInspection.js +159 -0
  265. package/dist/inspector/overlay/DropGuideOverlay.d.ts +17 -0
  266. package/dist/inspector/overlay/DropGuideOverlay.js +17 -0
  267. package/dist/inspector/overlay/InspectorOverlay.d.ts +5 -0
  268. package/dist/inspector/overlay/InspectorOverlay.js +328 -0
  269. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +19 -0
  270. package/dist/inspector/overlay/MeasurementGuideOverlay.js +40 -0
  271. package/dist/inspector/overlay/clickPolicy.d.ts +7 -0
  272. package/dist/inspector/overlay/clickPolicy.js +13 -0
  273. package/dist/inspector/overlay/dropGuide.d.ts +22 -0
  274. package/dist/inspector/overlay/dropGuide.js +48 -0
  275. package/dist/inspector/overlay/elementSelector.d.ts +1 -0
  276. package/dist/inspector/overlay/elementSelector.js +100 -0
  277. package/dist/inspector/overlay/frameThrottle.d.ts +10 -0
  278. package/dist/inspector/overlay/frameThrottle.js +38 -0
  279. package/dist/inspector/overlay/interactionStyles.d.ts +3 -0
  280. package/dist/inspector/overlay/interactionStyles.js +70 -0
  281. package/dist/inspector/overlay/measurementGeometry.d.ts +25 -0
  282. package/dist/inspector/overlay/measurementGeometry.js +104 -0
  283. package/dist/inspector/overlay/overlayGeometry.d.ts +40 -0
  284. package/dist/inspector/overlay/overlayGeometry.js +59 -0
  285. package/dist/inspector/overlay/selectedGeometry.d.ts +7 -0
  286. package/dist/inspector/overlay/selectedGeometry.js +51 -0
  287. package/dist/inspector/overlay/structuralGestures.d.ts +28 -0
  288. package/dist/inspector/overlay/structuralGestures.js +180 -0
  289. package/dist/inspector/projection/cssEscapes.d.ts +3 -0
  290. package/dist/inspector/projection/cssEscapes.js +20 -0
  291. package/dist/inspector/projection/managedStylesheet.d.ts +33 -0
  292. package/dist/inspector/projection/managedStylesheet.js +240 -0
  293. package/dist/inspector/projection/renderedInstance.d.ts +56 -0
  294. package/dist/inspector/projection/renderedInstance.js +306 -0
  295. package/dist/inspector/projection/structuralProjection.d.ts +93 -0
  296. package/dist/inspector/projection/structuralProjection.js +560 -0
  297. package/dist/inspector/projection/structuralProjectionBoundary.d.ts +5 -0
  298. package/dist/inspector/projection/structuralProjectionBoundary.js +65 -0
  299. package/dist/inspector/projection/textProjection.d.ts +53 -0
  300. package/dist/inspector/projection/textProjection.js +705 -0
  301. package/dist/inspector/projection/workspaceProjection.d.ts +43 -0
  302. package/dist/inspector/projection/workspaceProjection.js +58 -0
  303. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +15 -0
  304. package/dist/inspector/prompt/PromptSettingsDialog.js +17 -0
  305. package/dist/inspector/prompt/clipboardHandoff.d.ts +34 -0
  306. package/dist/inspector/prompt/clipboardHandoff.js +212 -0
  307. package/dist/inspector/prompt/copyToClipboard.d.ts +1 -0
  308. package/dist/inspector/prompt/copyToClipboard.js +34 -0
  309. package/dist/inspector/prompt/detectFramework.d.ts +6 -0
  310. package/dist/inspector/prompt/detectFramework.js +4 -0
  311. package/dist/inspector/prompt/generatePrompt.d.ts +7 -0
  312. package/dist/inspector/prompt/generatePrompt.js +391 -0
  313. package/dist/inspector/prompt/promptSettings.d.ts +8 -0
  314. package/dist/inspector/prompt/promptSettings.js +28 -0
  315. package/dist/inspector/runtime/devFlag.d.ts +28 -0
  316. package/dist/inspector/runtime/devFlag.js +50 -0
  317. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +19 -0
  318. package/dist/inspector/runtime/documentStylesheetOrder.js +89 -0
  319. package/dist/inspector/runtime/domRealm.d.ts +4 -0
  320. package/dist/inspector/runtime/domRealm.js +11 -0
  321. package/dist/inspector/runtime/runtimeConfig.d.ts +119 -0
  322. package/dist/inspector/runtime/runtimeConfig.js +276 -0
  323. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +32 -0
  324. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +149 -0
  325. package/dist/inspector/runtime/useRuntimeConfig.d.ts +10 -0
  326. package/dist/inspector/runtime/useRuntimeConfig.js +13 -0
  327. package/dist/inspector/selection/editScope.d.ts +32 -0
  328. package/dist/inspector/selection/editScope.js +140 -0
  329. package/dist/inspector/selection/editTarget.d.ts +8 -0
  330. package/dist/inspector/selection/editTarget.js +11 -0
  331. package/dist/inspector/selection/hierarchy.d.ts +7 -0
  332. package/dist/inspector/selection/hierarchy.js +42 -0
  333. package/dist/inspector/selection/resolveSelection.d.ts +10 -0
  334. package/dist/inspector/selection/resolveSelection.js +60 -0
  335. package/dist/inspector/selection/selectionStore.d.ts +41 -0
  336. package/dist/inspector/selection/selectionStore.js +262 -0
  337. package/dist/inspector/selection/selectionTarget.d.ts +5 -0
  338. package/dist/inspector/selection/selectionTarget.js +50 -0
  339. package/dist/inspector/selection/sourceSite.d.ts +2 -0
  340. package/dist/inspector/selection/sourceSite.js +12 -0
  341. package/dist/inspector/selection/styleSelection.d.ts +22 -0
  342. package/dist/inspector/selection/styleSelection.js +104 -0
  343. package/dist/inspector/session/index.d.ts +3 -0
  344. package/dist/inspector/session/index.js +2 -0
  345. package/dist/inspector/session/lifecycle.d.ts +22 -0
  346. package/dist/inspector/session/lifecycle.js +63 -0
  347. package/dist/inspector/session/sessionContext.d.ts +21 -0
  348. package/dist/inspector/session/sessionContext.js +28 -0
  349. package/dist/inspector/session/sessionFactory.d.ts +29 -0
  350. package/dist/inspector/session/sessionFactory.js +73 -0
  351. package/dist/inspector/settings/SettingsDialog.d.ts +12 -0
  352. package/dist/inspector/settings/SettingsDialog.js +46 -0
  353. package/dist/inspector/shell/AppShell.d.ts +2 -0
  354. package/dist/inspector/shell/AppShell.js +9 -0
  355. package/dist/inspector/shell/ChangesLog.d.ts +6 -0
  356. package/dist/inspector/shell/ChangesLog.js +92 -0
  357. package/dist/inspector/shell/CopyPromptButton.d.ts +9 -0
  358. package/dist/inspector/shell/CopyPromptButton.js +159 -0
  359. package/dist/inspector/shell/DomNavigation.d.ts +8 -0
  360. package/dist/inspector/shell/DomNavigation.js +30 -0
  361. package/dist/inspector/shell/EmptyState.d.ts +2 -0
  362. package/dist/inspector/shell/EmptyState.js +15 -0
  363. package/dist/inspector/shell/InspectorShell.d.ts +11 -0
  364. package/dist/inspector/shell/InspectorShell.js +268 -0
  365. package/dist/inspector/shell/openStore.d.ts +6 -0
  366. package/dist/inspector/shell/openStore.js +29 -0
  367. package/dist/inspector/shell/panelLayout.d.ts +2 -0
  368. package/dist/inspector/shell/panelLayout.js +29 -0
  369. package/dist/inspector/shell/shortcuts.d.ts +3 -0
  370. package/dist/inspector/shell/shortcuts.js +25 -0
  371. package/dist/inspector/shell/stateValue.d.ts +3 -0
  372. package/dist/inspector/shell/stateValue.js +34 -0
  373. package/dist/inspector/shell/styleState.d.ts +7 -0
  374. package/dist/inspector/shell/styleState.js +13 -0
  375. package/dist/inspector/spacing/projection.d.ts +43 -0
  376. package/dist/inspector/spacing/projection.js +136 -0
  377. package/dist/inspector/styleEditors/AppearanceSection.d.ts +13 -0
  378. package/dist/inspector/styleEditors/AppearanceSection.js +6 -0
  379. package/dist/inspector/styleEditors/AspectRatioField.d.ts +17 -0
  380. package/dist/inspector/styleEditors/AspectRatioField.js +10 -0
  381. package/dist/inspector/styleEditors/BorderEditor.d.ts +13 -0
  382. package/dist/inspector/styleEditors/BorderEditor.js +295 -0
  383. package/dist/inspector/styleEditors/BorderRadiusEditor.d.ts +14 -0
  384. package/dist/inspector/styleEditors/BorderRadiusEditor.js +108 -0
  385. package/dist/inspector/styleEditors/BoxShadowEditor.d.ts +13 -0
  386. package/dist/inspector/styleEditors/BoxShadowEditor.js +13 -0
  387. package/dist/inspector/styleEditors/ColorPicker.d.ts +15 -0
  388. package/dist/inspector/styleEditors/ColorPicker.js +73 -0
  389. package/dist/inspector/styleEditors/GapField.d.ts +17 -0
  390. package/dist/inspector/styleEditors/GapField.js +12 -0
  391. package/dist/inspector/styleEditors/GridChildSection.d.ts +14 -0
  392. package/dist/inspector/styleEditors/GridChildSection.js +91 -0
  393. package/dist/inspector/styleEditors/GridPicker.d.ts +13 -0
  394. package/dist/inspector/styleEditors/GridPicker.js +179 -0
  395. package/dist/inspector/styleEditors/GridSection.d.ts +17 -0
  396. package/dist/inspector/styleEditors/GridSection.js +27 -0
  397. package/dist/inspector/styleEditors/GridValueField.d.ts +17 -0
  398. package/dist/inspector/styleEditors/GridValueField.js +70 -0
  399. package/dist/inspector/styleEditors/InsetSection.d.ts +15 -0
  400. package/dist/inspector/styleEditors/InsetSection.js +15 -0
  401. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +6 -0
  402. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +6 -0
  403. package/dist/inspector/styleEditors/LayoutComboField.d.ts +18 -0
  404. package/dist/inspector/styleEditors/LayoutComboField.js +138 -0
  405. package/dist/inspector/styleEditors/LayoutDropdown.d.ts +14 -0
  406. package/dist/inspector/styleEditors/LayoutDropdown.js +34 -0
  407. package/dist/inspector/styleEditors/LayoutSection.d.ts +13 -0
  408. package/dist/inspector/styleEditors/LayoutSection.js +342 -0
  409. package/dist/inspector/styleEditors/OpacityEditor.d.ts +13 -0
  410. package/dist/inspector/styleEditors/OpacityEditor.js +34 -0
  411. package/dist/inspector/styleEditors/PositionInsets.d.ts +15 -0
  412. package/dist/inspector/styleEditors/PositionInsets.js +12 -0
  413. package/dist/inspector/styleEditors/SpacingBox.d.ts +29 -0
  414. package/dist/inspector/styleEditors/SpacingBox.js +189 -0
  415. package/dist/inspector/styleEditors/Typography.d.ts +13 -0
  416. package/dist/inspector/styleEditors/Typography.js +137 -0
  417. package/dist/inspector/styleEditors/completeCssValue.d.ts +8 -0
  418. package/dist/inspector/styleEditors/completeCssValue.js +34 -0
  419. package/dist/inspector/styleEditors/gridChildModel.d.ts +74 -0
  420. package/dist/inspector/styleEditors/gridChildModel.js +138 -0
  421. package/dist/inspector/styleEditors/layoutValue.d.ts +24 -0
  422. package/dist/inspector/styleEditors/layoutValue.js +103 -0
  423. package/dist/inspector/styleEditors/nudgeValue.d.ts +8 -0
  424. package/dist/inspector/styleEditors/nudgeValue.js +71 -0
  425. package/dist/inspector/styleEditors/rowLookup.d.ts +11 -0
  426. package/dist/inspector/styleEditors/rowLookup.js +13 -0
  427. package/dist/inspector/styleEditors/stringRecord.d.ts +4 -0
  428. package/dist/inspector/styleEditors/stringRecord.js +1 -0
  429. package/dist/inspector/styleEditors/valuePolicy.d.ts +20 -0
  430. package/dist/inspector/styleEditors/valuePolicy.js +82 -0
  431. package/dist/inspector/testing.d.ts +10 -0
  432. package/dist/inspector/testing.js +9 -0
  433. package/dist/inspector/tokens/TokenChip.d.ts +24 -0
  434. package/dist/inspector/tokens/TokenChip.js +23 -0
  435. package/dist/inspector/tokens/TokenDropdown.d.ts +13 -0
  436. package/dist/inspector/tokens/TokenDropdown.js +59 -0
  437. package/dist/inspector/tokens/TokenField.d.ts +68 -0
  438. package/dist/inspector/tokens/TokenField.js +485 -0
  439. package/dist/inspector/tokens/TokenLabel.d.ts +7 -0
  440. package/dist/inspector/tokens/TokenLabel.js +23 -0
  441. package/dist/inspector/tokens/TokensPanel.d.ts +5 -0
  442. package/dist/inspector/tokens/TokensPanel.js +47 -0
  443. package/dist/inspector/tokens/catalog.d.ts +51 -0
  444. package/dist/inspector/tokens/catalog.js +184 -0
  445. package/dist/inspector/tokens/editActions.d.ts +35 -0
  446. package/dist/inspector/tokens/editActions.js +164 -0
  447. package/dist/inspector/tokens/resolution/cascade.d.ts +14 -0
  448. package/dist/inspector/tokens/resolution/cascade.js +31 -0
  449. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +43 -0
  450. package/dist/inspector/tokens/resolution/cssomCollector.js +528 -0
  451. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +12 -0
  452. package/dist/inspector/tokens/resolution/selectorSemantics.js +106 -0
  453. package/dist/inspector/tokens/resolution.d.ts +56 -0
  454. package/dist/inspector/tokens/resolution.js +1401 -0
  455. package/dist/inspector/tokens/tokenEdits.d.ts +3 -0
  456. package/dist/inspector/tokens/tokenEdits.js +22 -0
  457. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +6 -0
  458. package/dist/inspector/tokens/valueSemanticsAdapter.js +68 -0
  459. package/dist/inspector/ui/AtRuleContext.d.ts +18 -0
  460. package/dist/inspector/ui/AtRuleContext.js +54 -0
  461. package/dist/inspector/ui/Button.d.ts +9 -0
  462. package/dist/inspector/ui/Button.js +4 -0
  463. package/dist/inspector/ui/ColorSwatch.d.ts +7 -0
  464. package/dist/inspector/ui/ColorSwatch.js +6 -0
  465. package/dist/inspector/ui/ControlSurface.d.ts +14 -0
  466. package/dist/inspector/ui/ControlSurface.js +10 -0
  467. package/dist/inspector/ui/FieldRow.d.ts +14 -0
  468. package/dist/inspector/ui/FieldRow.js +15 -0
  469. package/dist/inspector/ui/IconButton.d.ts +14 -0
  470. package/dist/inspector/ui/IconButton.js +5 -0
  471. package/dist/inspector/ui/InspectorPopover.d.ts +17 -0
  472. package/dist/inspector/ui/InspectorPopover.js +13 -0
  473. package/dist/inspector/ui/PopoverListbox.d.ts +37 -0
  474. package/dist/inspector/ui/PopoverListbox.js +21 -0
  475. package/dist/inspector/ui/SegmentedControl.d.ts +24 -0
  476. package/dist/inspector/ui/SegmentedControl.js +16 -0
  477. package/dist/inspector/ui/Select.d.ts +25 -0
  478. package/dist/inspector/ui/Select.js +56 -0
  479. package/dist/inspector/ui/SideValuesField.d.ts +44 -0
  480. package/dist/inspector/ui/SideValuesField.js +76 -0
  481. package/dist/inspector/ui/StatusCallout.d.ts +9 -0
  482. package/dist/inspector/ui/StatusCallout.js +4 -0
  483. package/dist/inspector/ui/TextInput.d.ts +12 -0
  484. package/dist/inspector/ui/TextInput.js +5 -0
  485. package/dist/inspector/ui/ToggleButton.d.ts +11 -0
  486. package/dist/inspector/ui/ToggleButton.js +6 -0
  487. package/dist/inspector/ui/assets/grid.svg +14 -0
  488. package/dist/inspector/ui/css.d.ts +9 -0
  489. package/dist/inspector/ui/labels.d.ts +1 -0
  490. package/dist/inspector/ui/labels.js +7 -0
  491. package/dist/inspector/ui/styles.d.ts +1 -0
  492. package/dist/inspector/ui/styles.js +68 -0
  493. package/dist/inspector/virtual-modules.d.ts +7 -0
  494. package/dist/inspector/vite-env.d.ts +10 -0
  495. package/dist/internal/agent-protocol.d.ts +232 -0
  496. package/dist/internal/agent-protocol.js +237 -0
  497. package/dist/nudge-ui.mjs +15722 -0
  498. package/dist/project/files.d.ts +19 -0
  499. package/dist/project/files.js +226 -0
  500. package/dist/project/identity.d.ts +6 -0
  501. package/dist/project/identity.js +19 -0
  502. package/dist/project/pathPolicy.d.ts +8 -0
  503. package/dist/project/pathPolicy.js +12 -0
  504. package/dist/project/tokens.d.ts +36 -0
  505. package/dist/project/tokens.js +223 -0
  506. package/dist/transport/index.d.ts +8 -0
  507. package/dist/transport/index.js +8 -0
  508. package/dist/transport/routes.d.ts +13 -0
  509. package/dist/transport/routes.js +16 -0
  510. package/package.json +137 -0
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { IconBorderSides, IconPlus } from "@tabler/icons-react";
4
+ import { IconButton } from "./IconButton.js";
5
+ import { ToggleButton } from "./ToggleButton.js";
6
+ import { formatInspectorLabel } from "./labels.js";
7
+ import { ControlSurface } from "./ControlSurface.js";
8
+ export const SIDE_NAMES = ["top", "right", "bottom", "left"];
9
+ const SIDE_DISPLAY_ORDER = ["left", "top", "right", "bottom"];
10
+ const SIDE_AXIS_DISPLAY_ORDER = ["horizontal", "vertical"];
11
+ /**
12
+ * A compact side editor. Callers provide grouped horizontal/vertical controls
13
+ * that expand into the four physical sides (or omit `pairedControls` to show
14
+ * the four sides directly). The field owns presentation and expand state
15
+ * while callers own the actual CSS/token controls rendered in each slot.
16
+ */
17
+ export function SideValuesField({ label, sides, pairedControls, defaultExpanded = false, showLabel = true, empty = false, onAdd, emptyAction, resetKey, "data-test": dataTest, "data-property": dataProperty, }) {
18
+ const [uncontrolledExpanded, setUncontrolledExpanded] = useState(defaultExpanded);
19
+ const previousResetKey = useRef(resetKey);
20
+ const isResetting = previousResetKey.current !== resetKey;
21
+ const isExpanded = isResetting ? defaultExpanded : uncontrolledExpanded;
22
+ const hasPairedControls = Boolean(pairedControls && pairedControls.length > 0);
23
+ const orderedPairedControls = SIDE_AXIS_DISPLAY_ORDER
24
+ .map((axis) => pairedControls?.find((pair) => pair.axis === axis))
25
+ .filter((pair) => pair !== undefined);
26
+ const labelText = typeof label === "string" ? formatInspectorLabel(label) : String(label);
27
+ const displayLabel = showLabel ? (typeof label === "string" ? labelText : label) : null;
28
+ useEffect(() => {
29
+ // `defaultExpanded` describes the newly selected element, not the current
30
+ // edit; reseed when the selection (resetKey) changes.
31
+ setUncontrolledExpanded(defaultExpanded);
32
+ previousResetKey.current = resetKey;
33
+ }, [resetKey]);
34
+ function toggleExpanded() {
35
+ setUncontrolledExpanded(!isExpanded);
36
+ }
37
+ return (_jsx("div", { className: "side-values", "data-test": dataTest, "data-property": dataProperty, "data-empty": empty ? "true" : undefined, ...(hasPairedControls
38
+ ? { "data-expanded": isExpanded ? "true" : "false" }
39
+ : {}), children: empty ? (_jsxs("div", { className: "side-values__header", children: [_jsx("span", { className: "side-values__label", children: displayLabel }), emptyAction ?? (_jsx(IconButton, { variant: "quiet", size: "default", "data-test": "add-value", label: `Add ${labelText}`, title: `Add ${labelText}`, onClick: onAdd, children: _jsx(IconPlus, { size: 16, "aria-hidden": "true" }) }))] })) : hasPairedControls ? (_jsxs(_Fragment, { children: [showLabel ? (_jsx("div", { className: "side-values__header", children: _jsx("span", { className: "side-values__label", children: displayLabel }) })) : null, _jsxs("div", { className: "side-values__value-row", children: [isExpanded ? (_jsx(SideControls, { label: label, sides: sides })) : (_jsx("div", { className: "side-values__pairs", role: "group", "aria-label": `${labelText} Grouped Sides`, children: orderedPairedControls.map(({ axis, control, icon }) => (_jsxs(ControlSurface, { className: "side-values__side", "data-test": `pair-value-${axis}`, "data-axis": axis, "aria-label": `${labelText} ${axis === "horizontal" ? "Left And Right" : "Top And Bottom"}`, title: `${labelText} ${axis === "horizontal" ? "Left And Right" : "Top And Bottom"}`, children: [icon ?? _jsx(AxisIndicator, { axis: axis }), _jsx("div", { className: "side-values__control", children: control })] }, axis))) })), _jsx(ToggleButton, { variant: "quiet", size: "default", "data-test": "individual-sides", label: isExpanded ? `Collapse ${labelText} Sides` : `Expand ${labelText} Sides`, title: isExpanded ? "Collapse To Grouped Sides" : "Expand To Individual Sides", pressed: isExpanded, onPressedChange: toggleExpanded, children: _jsx(IconBorderSides, { size: 16, "aria-hidden": "true" }) })] })] })) : (_jsxs(_Fragment, { children: [showLabel ? (_jsx("div", { className: "side-values__header", children: _jsx("span", { className: "side-values__label", children: displayLabel }) })) : null, _jsx(SideControls, { label: label, sides: sides })] })) }));
40
+ }
41
+ export function SideControls({ label, sides, layout = "sides", }) {
42
+ const displayOrder = layout === "corners" ? SIDE_NAMES : SIDE_DISPLAY_ORDER;
43
+ const orderedSides = displayOrder
44
+ .map((side) => sides.find((slot) => slot.side === side))
45
+ .filter((slot) => slot !== undefined);
46
+ const labelText = typeof label === "string" ? formatInspectorLabel(label) : String(label);
47
+ const itemGroupLabel = layout === "corners" ? "Individual Corners" : "Individual Sides";
48
+ return (_jsx("div", { className: "side-values__grid", "data-layout": layout, role: "group", "aria-label": `${labelText} ${itemGroupLabel}`, children: orderedSides.map(({ side, control, icon, sideLabel }) => (_jsxs(ControlSurface, { className: "side-values__side", "data-test": `side-value-${side}`, "data-side": side, "aria-label": `${labelText} ${sideLabel ?? formatInspectorLabel(side)}`, children: [icon ?? _jsx(SideIndicator, { side: side }), _jsx("div", { className: "side-values__control", children: control })] }, side))) }));
49
+ }
50
+ function AxisIndicator({ axis }) {
51
+ const emphasis = axis === "horizontal"
52
+ ? _jsxs(_Fragment, { children: [_jsx("path", { d: "M5 4v8" }), _jsx("path", { d: "M11 4v8" })] })
53
+ : _jsxs(_Fragment, { children: [_jsx("path", { d: "M4 5h8" }), _jsx("path", { d: "M4 11h8" })] });
54
+ return (_jsxs("svg", { className: "side-values__icon", viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("rect", { x: "3.5", y: "3.5", width: "9", height: "9", rx: "1" }), _jsx("g", { className: "side-values__icon-emphasis", children: emphasis })] }));
55
+ }
56
+ function SideIndicator({ side }) {
57
+ const emphasis = {
58
+ top: "M4 4h8",
59
+ right: "M12 4v8",
60
+ bottom: "M4 12h8",
61
+ left: "M4 4v8",
62
+ }[side];
63
+ return (_jsxs("svg", { className: "side-values__icon", viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("rect", { x: "3.5", y: "3.5", width: "9", height: "9", rx: "1" }), _jsx("path", { d: emphasis, className: "side-values__icon-emphasis" })] }));
64
+ }
65
+ export function MarginSideIndicator({ side }) {
66
+ if (side === "left") {
67
+ return (_jsxs("svg", { className: "side-values__icon side-values__side-icon", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "7", y: "5", width: "14", height: "14", rx: "2", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)" }), _jsx("line", { x1: "3", y1: "5", x2: "3", y2: "19", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)", strokeLinecap: "round" })] }));
68
+ }
69
+ if (side === "right") {
70
+ return (_jsxs("svg", { className: "side-values__icon side-values__side-icon", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "5", width: "14", height: "14", rx: "2", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)" }), _jsx("line", { x1: "21", y1: "5", x2: "21", y2: "19", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)", strokeLinecap: "round" })] }));
71
+ }
72
+ if (side === "top") {
73
+ return (_jsxs("svg", { className: "side-values__icon side-values__side-icon", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "19", y: "7", width: "14", height: "14", rx: "2", transform: "rotate(90 19 7)", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)" }), _jsx("line", { x1: "19", y1: "3", x2: "5", y2: "3", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)", strokeLinecap: "round" })] }));
74
+ }
75
+ return (_jsxs("svg", { className: "side-values__icon side-values__side-icon", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "19", y: "3", width: "14", height: "14", rx: "2", transform: "rotate(90 19 3)", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)" }), _jsx("line", { x1: "19", y1: "21", x2: "5", y2: "21", stroke: "currentColor", strokeWidth: "var(--icon-stroke-width)", strokeLinecap: "round" })] }));
76
+ }
@@ -0,0 +1,9 @@
1
+ import type { ReactNode, ReactElement } from "react";
2
+ export interface StatusCalloutProps {
3
+ children?: ReactNode;
4
+ tone?: "neutral" | "accent" | "warning" | "danger";
5
+ className?: string;
6
+ "data-test"?: string;
7
+ "data-lost"?: string;
8
+ }
9
+ export declare function StatusCallout({ children, tone, className, "data-test": dataTest, "data-lost": dataLost }: StatusCalloutProps): ReactElement;
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function StatusCallout({ children, tone = "neutral", className, "data-test": dataTest, "data-lost": dataLost }) {
3
+ return (_jsx("div", { className: `status-callout status-callout--${tone}${className ? ` ${className}` : ""}`, "data-test": dataTest, "data-lost": dataLost, children: children }));
4
+ }
@@ -0,0 +1,12 @@
1
+ import type { InputHTMLAttributes } from "react";
2
+ import type { ControlAppearance } from "./ControlSurface.js";
3
+ export type TextInputProps = InputHTMLAttributes<HTMLInputElement> & {
4
+ compact?: boolean;
5
+ appearance?: ControlAppearance;
6
+ "data-test"?: string;
7
+ };
8
+ export declare const TextInput: import("react").ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & {
9
+ compact?: boolean;
10
+ appearance?: ControlAppearance;
11
+ "data-test"?: string;
12
+ } & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ export const TextInput = forwardRef(function TextInput({ compact, appearance = "default", className, ...props }, ref) {
4
+ return (_jsx("input", { ...props, ref: ref, className: `text-input${compact ? " text-input--compact" : ""}${appearance === "embedded" ? " text-input--embedded" : ""}${className ? ` ${className}` : ""}` }));
5
+ });
@@ -0,0 +1,11 @@
1
+ import { Toggle } from "@base-ui/react/toggle";
2
+ import type { ButtonVariant, ButtonSize } from "./Button.js";
3
+ interface ToggleButtonProps extends Omit<Toggle.Props<string>, "className"> {
4
+ label: string;
5
+ variant?: ButtonVariant;
6
+ size?: ButtonSize;
7
+ "data-test"?: string;
8
+ className?: string;
9
+ }
10
+ export declare const ToggleButton: import("react").ForwardRefExoticComponent<Omit<ToggleButtonProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
11
+ export {};
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { Toggle } from "@base-ui/react/toggle";
4
+ export const ToggleButton = forwardRef(function ToggleButton({ label, variant = "secondary", size = "default", className, ...props }, ref) {
5
+ return (_jsx(Toggle, { ref: ref, ...props, "aria-label": label, className: `toggle-button toggle-button--${variant} toggle-button--${size}${className ? ` ${className}` : ""}` }));
6
+ });
@@ -0,0 +1,14 @@
1
+ <svg width="182" height="72" viewBox="0 0 182 72" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="11.5" y="11.5" width="47" height="47" stroke="black" stroke-opacity="0.15"/>
3
+ <rect x="67.5" y="11.5" width="47" height="47" stroke="#0096FF"/>
4
+ <rect x="123.5" y="11.5" width="47" height="47" stroke="black" stroke-opacity="0.15"/>
5
+ <mask id="path-4-inside-1_4219_25901" fill="white">
6
+ <path d="M3 11H180V59H3V11Z"/>
7
+ </mask>
8
+ <path d="M3 59V59.5H4.00568V59V58.5H3V59ZM6.01705 59V59.5H8.02841V59V58.5H6.01705V59ZM10.0398 59V59.5H12.0511V59V58.5H10.0398V59ZM14.0625 59V59.5H16.0739V59V58.5H14.0625V59ZM18.0852 59V59.5H20.0966V59V58.5H18.0852V59ZM22.108 59V59.5H24.1193V59V58.5H22.108V59ZM26.1307 59V59.5H28.142V59V58.5H26.1307V59ZM30.1534 59V59.5H32.1648V59V58.5H30.1534V59ZM34.1761 59V59.5H36.1875V59V58.5H34.1761V59ZM38.1989 59V59.5H40.2102V59V58.5H38.1989V59ZM42.2216 59V59.5H44.233V59V58.5H42.2216V59ZM46.2443 59V59.5H48.2557V59V58.5H46.2443V59ZM50.2671 59V59.5H52.2784V59V58.5H50.2671V59ZM54.2898 59V59.5H56.3011V59V58.5H54.2898V59ZM58.3125 59V59.5H60.3239V59V58.5H58.3125V59ZM62.3352 59V59.5H64.3466V59V58.5H62.3352V59ZM66.358 59V59.5H68.3693V59V58.5H66.358V59ZM70.3807 59V59.5H72.392V59V58.5H70.3807V59ZM74.4034 59V59.5H76.4148V59V58.5H74.4034V59ZM78.4261 59V59.5H80.4375V59V58.5H78.4261V59ZM82.4488 59V59.5H84.4602V59V58.5H82.4488V59ZM86.4716 59V59.5H88.4829V59V58.5H86.4716V59ZM90.4943 59V59.5H92.5056V59V58.5H90.4943V59ZM94.517 59V59.5H96.5284V59V58.5H94.517V59ZM98.5397 59V59.5H100.551V59V58.5H98.5397V59ZM102.562 59V59.5H104.574V59V58.5H102.562V59ZM106.585 59V59.5H108.597V59V58.5H106.585V59ZM110.608 59V59.5H112.619V59V58.5H110.608V59ZM114.631 59V59.5H116.642V59V58.5H114.631V59ZM118.653 59V59.5H120.665V59V58.5H118.653V59ZM122.676 59V59.5H124.687V59V58.5H122.676V59ZM126.699 59V59.5H128.71V59V58.5H126.699V59ZM130.721 59V59.5H132.733V59V58.5H130.721V59ZM134.744 59V59.5H136.756V59V58.5H134.744V59ZM138.767 59V59.5H140.778V59V58.5H138.767V59ZM142.79 59V59.5H144.801V59V58.5H142.79V59ZM146.812 59V59.5H148.824V59V58.5H146.812V59ZM150.835 59V59.5H152.847V59V58.5H150.835V59ZM154.858 59V59.5H156.869V59V58.5H154.858V59ZM158.881 59V59.5H160.892V59V58.5H158.881V59ZM162.903 59V59.5H164.915V59V58.5H162.903V59ZM166.926 59V59.5H168.937V59V58.5H166.926V59ZM170.949 59V59.5H172.96V59V58.5H170.949V59ZM174.972 59V59.5H176.983V59V58.5H174.972V59ZM178.994 59V59.5H180V59V58.5H178.994V59ZM180 11V10.5H178.994V11V11.5H180V11ZM176.983 11V10.5H174.972V11V11.5H176.983V11ZM172.96 11V10.5H170.949V11V11.5H172.96V11ZM168.938 11V10.5H166.926V11V11.5H168.938V11ZM164.915 11V10.5H162.903V11V11.5H164.915V11ZM160.892 11V10.5H158.881V11V11.5H160.892V11ZM156.869 11V10.5H154.858V11V11.5H156.869V11ZM152.847 11V10.5H150.835V11V11.5H152.847V11ZM148.824 11V10.5H146.812V11V11.5H148.824V11ZM144.801 11V10.5H142.79V11V11.5H144.801V11ZM140.778 11V10.5H138.767V11V11.5H140.778V11ZM136.756 11V10.5H134.744V11V11.5H136.756V11ZM132.733 11V10.5H130.722V11V11.5H132.733V11ZM128.71 11V10.5H126.699V11V11.5H128.71V11ZM124.687 11V10.5H122.676V11V11.5H124.687V11ZM120.665 11V10.5H118.653V11V11.5H120.665V11ZM116.642 11V10.5H114.631V11V11.5H116.642V11ZM112.619 11V10.5H110.608V11V11.5H112.619V11ZM108.597 11V10.5H106.585V11V11.5H108.597V11ZM104.574 11V10.5H102.563V11V11.5H104.574V11ZM100.551 11V10.5H98.5398V11V11.5H100.551V11ZM96.5284 11V10.5H94.5171V11V11.5H96.5284V11ZM92.5057 11V10.5H90.4944V11V11.5H92.5057V11ZM88.483 11V10.5H86.4716V11V11.5H88.483V11ZM84.4603 11V10.5H82.4489V11V11.5H84.4603V11ZM80.4376 11V10.5H78.4262V11V11.5H80.4376V11ZM76.4148 11V10.5H74.4035V11V11.5H76.4148V11ZM72.3921 11V10.5H70.3808V11V11.5H72.3921V11ZM68.3694 11V10.5H66.358V11V11.5H68.3694V11ZM64.3467 11V10.5H62.3353V11V11.5H64.3467V11ZM60.324 11V10.5H58.3126V11V11.5H60.324V11ZM56.3012 11V10.5H54.2899V11V11.5H56.3012V11ZM52.2785 11V10.5H50.2671V11V11.5H52.2785V11ZM48.2558 11V10.5H46.2444V11V11.5H48.2558V11ZM44.2331 11V10.5H42.2217V11V11.5H44.2331V11ZM40.2103 11V10.5H38.1989V11V11.5H40.2103V11ZM36.1876 11V10.5H34.1762V11V11.5H36.1876V11ZM32.1648 11V10.5H30.1535V11V11.5H32.1648V11ZM28.1421 11V10.5H26.1307V11V11.5H28.1421V11ZM24.1194 11V10.5H22.108V11V11.5H24.1194V11ZM20.0966 11V10.5H18.0853V11V11.5H20.0966V11ZM16.0739 11V10.5H14.0625V11V11.5H16.0739V11ZM12.0512 11V10.5H10.0398V11V11.5H12.0512V11ZM8.02843 11V10.5H6.01706V11V11.5H8.02843V11ZM4.00569 11V10.5H3V11V11.5H4.00569V11ZM3 59V60H4.00568V59V58H3V59ZM6.01705 59V60H8.02841V59V58H6.01705V59ZM10.0398 59V60H12.0511V59V58H10.0398V59ZM14.0625 59V60H16.0739V59V58H14.0625V59ZM18.0852 59V60H20.0966V59V58H18.0852V59ZM22.108 59V60H24.1193V59V58H22.108V59ZM26.1307 59V60H28.142V59V58H26.1307V59ZM30.1534 59V60H32.1648V59V58H30.1534V59ZM34.1761 59V60H36.1875V59V58H34.1761V59ZM38.1989 59V60H40.2102V59V58H38.1989V59ZM42.2216 59V60H44.233V59V58H42.2216V59ZM46.2443 59V60H48.2557V59V58H46.2443V59ZM50.2671 59V60H52.2784V59V58H50.2671V59ZM54.2898 59V60H56.3011V59V58H54.2898V59ZM58.3125 59V60H60.3239V59V58H58.3125V59ZM62.3352 59V60H64.3466V59V58H62.3352V59ZM66.358 59V60H68.3693V59V58H66.358V59ZM70.3807 59V60H72.392V59V58H70.3807V59ZM74.4034 59V60H76.4148V59V58H74.4034V59ZM78.4261 59V60H80.4375V59V58H78.4261V59ZM82.4488 59V60H84.4602V59V58H82.4488V59ZM86.4716 59V60H88.4829V59V58H86.4716V59ZM90.4943 59V60H92.5056V59V58H90.4943V59ZM94.517 59V60H96.5284V59V58H94.517V59ZM98.5397 59V60H100.551V59V58H98.5397V59ZM102.562 59V60H104.574V59V58H102.562V59ZM106.585 59V60H108.597V59V58H106.585V59ZM110.608 59V60H112.619V59V58H110.608V59ZM114.631 59V60H116.642V59V58H114.631V59ZM118.653 59V60H120.665V59V58H118.653V59ZM122.676 59V60H124.687V59V58H122.676V59ZM126.699 59V60H128.71V59V58H126.699V59ZM130.721 59V60H132.733V59V58H130.721V59ZM134.744 59V60H136.756V59V58H134.744V59ZM138.767 59V60H140.778V59V58H138.767V59ZM142.79 59V60H144.801V59V58H142.79V59ZM146.812 59V60H148.824V59V58H146.812V59ZM150.835 59V60H152.847V59V58H150.835V59ZM154.858 59V60H156.869V59V58H154.858V59ZM158.881 59V60H160.892V59V58H158.881V59ZM162.903 59V60H164.915V59V58H162.903V59ZM166.926 59V60H168.937V59V58H166.926V59ZM170.949 59V60H172.96V59V58H170.949V59ZM174.972 59V60H176.983V59V58H174.972V59ZM178.994 59V60H180V59V58H178.994V59ZM180 11V10H178.994V11V12H180V11ZM176.983 11V10H174.972V11V12H176.983V11ZM172.96 11V10H170.949V11V12H172.96V11ZM168.938 11V10H166.926V11V12H168.938V11ZM164.915 11V10H162.903V11V12H164.915V11ZM160.892 11V10H158.881V11V12H160.892V11ZM156.869 11V10H154.858V11V12H156.869V11ZM152.847 11V10H150.835V11V12H152.847V11ZM148.824 11V10H146.812V11V12H148.824V11ZM144.801 11V10H142.79V11V12H144.801V11ZM140.778 11V10H138.767V11V12H140.778V11ZM136.756 11V10H134.744V11V12H136.756V11ZM132.733 11V10H130.722V11V12H132.733V11ZM128.71 11V10H126.699V11V12H128.71V11ZM124.687 11V10H122.676V11V12H124.687V11ZM120.665 11V10H118.653V11V12H120.665V11ZM116.642 11V10H114.631V11V12H116.642V11ZM112.619 11V10H110.608V11V12H112.619V11ZM108.597 11V10H106.585V11V12H108.597V11ZM104.574 11V10H102.563V11V12H104.574V11ZM100.551 11V10H98.5398V11V12H100.551V11ZM96.5284 11V10H94.5171V11V12H96.5284V11ZM92.5057 11V10H90.4944V11V12H92.5057V11ZM88.483 11V10H86.4716V11V12H88.483V11ZM84.4603 11V10H82.4489V11V12H84.4603V11ZM80.4376 11V10H78.4262V11V12H80.4376V11ZM76.4148 11V10H74.4035V11V12H76.4148V11ZM72.3921 11V10H70.3808V11V12H72.3921V11ZM68.3694 11V10H66.358V11V12H68.3694V11ZM64.3467 11V10H62.3353V11V12H64.3467V11ZM60.324 11V10H58.3126V11V12H60.324V11ZM56.3012 11V10H54.2899V11V12H56.3012V11ZM52.2785 11V10H50.2671V11V12H52.2785V11ZM48.2558 11V10H46.2444V11V12H48.2558V11ZM44.2331 11V10H42.2217V11V12H44.2331V11ZM40.2103 11V10H38.1989V11V12H40.2103V11ZM36.1876 11V10H34.1762V11V12H36.1876V11ZM32.1648 11V10H30.1535V11V12H32.1648V11ZM28.1421 11V10H26.1307V11V12H28.1421V11ZM24.1194 11V10H22.108V11V12H24.1194V11ZM20.0966 11V10H18.0853V11V12H20.0966V11ZM16.0739 11V10H14.0625V11V12H16.0739V11ZM12.0512 11V10H10.0398V11V12H12.0512V11ZM8.02843 11V10H6.01706V11V12H8.02843V11ZM4.00569 11V10H3V11V12H4.00569V11Z" fill="#0096FF" mask="url(#path-4-inside-1_4219_25901)"/>
9
+ <mask id="path-6-inside-2_4219_25901" fill="white">
10
+ <path d="M67 68L67 2L115 2L115 68L67 68Z"/>
11
+ </mask>
12
+ <path d="M115 68L115.5 68L115.5 67.0294L115 67.0294L114.5 67.0294L114.5 68L115 68ZM115 65.0882L115.5 65.0882L115.5 63.1471L115 63.1471L114.5 63.1471L114.5 65.0882L115 65.0882ZM115 61.2059L115.5 61.2059L115.5 59.2647L115 59.2647L114.5 59.2647L114.5 61.2059L115 61.2059ZM115 57.3235L115.5 57.3235L115.5 55.3824L115 55.3824L114.5 55.3824L114.5 57.3235L115 57.3235ZM115 53.4412L115.5 53.4412L115.5 51.5L115 51.5L114.5 51.5L114.5 53.4412L115 53.4412ZM115 49.5588L115.5 49.5588L115.5 47.6176L115 47.6176L114.5 47.6176L114.5 49.5588L115 49.5588ZM115 45.6765L115.5 45.6765L115.5 43.7353L115 43.7353L114.5 43.7353L114.5 45.6765L115 45.6765ZM115 41.7941L115.5 41.7941L115.5 39.8529L115 39.8529L114.5 39.8529L114.5 41.7941L115 41.7941ZM115 37.9118L115.5 37.9118L115.5 35.9706L115 35.9706L114.5 35.9706L114.5 37.9118L115 37.9118ZM115 34.0294L115.5 34.0294L115.5 32.0882L115 32.0882L114.5 32.0882L114.5 34.0294L115 34.0294ZM115 30.147L115.5 30.147L115.5 28.2059L115 28.2059L114.5 28.2059L114.5 30.147L115 30.147ZM115 26.2647L115.5 26.2647L115.5 24.3235L115 24.3235L114.5 24.3235L114.5 26.2647L115 26.2647ZM115 22.3823L115.5 22.3823L115.5 20.4412L115 20.4412L114.5 20.4412L114.5 22.3823L115 22.3823ZM115 18.5L115.5 18.5L115.5 16.5588L115 16.5588L114.5 16.5588L114.5 18.5L115 18.5ZM115 14.6176L115.5 14.6176L115.5 12.6765L115 12.6765L114.5 12.6765L114.5 14.6176L115 14.6176ZM115 10.7353L115.5 10.7353L115.5 8.7941L115 8.7941L114.5 8.7941L114.5 10.7353L115 10.7353ZM115 6.85292L115.5 6.85292L115.5 4.91174L115 4.91174L114.5 4.91174L114.5 6.85292L115 6.85292ZM115 2.97056L115.5 2.97056L115.5 2L115 2L114.5 2L114.5 2.97056L115 2.97056ZM67 2L66.5 2L66.5 2.97059L67 2.97059L67.5 2.97059L67.5 2L67 2ZM67 4.91177L66.5 4.91177L66.5 6.85294L67 6.85294L67.5 6.85294L67.5 4.91177L67 4.91177ZM67 8.79412L66.5 8.79412L66.5 10.7353L67 10.7353L67.5 10.7353L67.5 8.79412L67 8.79412ZM67 12.6765L66.5 12.6765L66.5 14.6176L67 14.6176L67.5 14.6176L67.5 12.6765L67 12.6765ZM67 16.5588L66.5 16.5588L66.5 18.5L67 18.5L67.5 18.5L67.5 16.5588L67 16.5588ZM67 20.4412L66.5 20.4412L66.5 22.3824L67 22.3824L67.5 22.3824L67.5 20.4412L67 20.4412ZM67 24.3235L66.5 24.3235L66.5 26.2647L67 26.2647L67.5 26.2647L67.5 24.3235L67 24.3235ZM67 28.2059L66.5 28.2059L66.5 30.1471L67 30.1471L67.5 30.1471L67.5 28.2059L67 28.2059ZM67 32.0882L66.5 32.0882L66.5 34.0294L67 34.0294L67.5 34.0294L67.5 32.0882L67 32.0882ZM67 35.9706L66.5 35.9706L66.5 37.9118L67 37.9118L67.5 37.9118L67.5 35.9706L67 35.9706ZM67 39.8529L66.5 39.8529L66.5 41.7941L67 41.7941L67.5 41.7941L67.5 39.8529L67 39.8529ZM67 43.7353L66.5 43.7353L66.5 45.6765L67 45.6765L67.5 45.6765L67.5 43.7353L67 43.7353ZM67 47.6177L66.5 47.6177L66.5 49.5588L67 49.5588L67.5 49.5588L67.5 47.6177L67 47.6177ZM67 51.5L66.5 51.5L66.5 53.4412L67 53.4412L67.5 53.4412L67.5 51.5L67 51.5ZM67 55.3824L66.5 55.3824L66.5 57.3235L67 57.3235L67.5 57.3235L67.5 55.3824L67 55.3824ZM67 59.2647L66.5 59.2647L66.5 61.2059L67 61.2059L67.5 61.2059L67.5 59.2647L67 59.2647ZM67 63.1471L66.5 63.1471L66.5 65.0883L67 65.0883L67.5 65.0883L67.5 63.1471L67 63.1471ZM67 67.0294L66.5 67.0294L66.5 68L67 68L67.5 68L67.5 67.0294L67 67.0294ZM115 68L116 68L116 67.0294L115 67.0294L114 67.0294L114 68L115 68ZM115 65.0882L116 65.0882L116 63.1471L115 63.1471L114 63.1471L114 65.0882L115 65.0882ZM115 61.2059L116 61.2059L116 59.2647L115 59.2647L114 59.2647L114 61.2059L115 61.2059ZM115 57.3235L116 57.3235L116 55.3824L115 55.3824L114 55.3824L114 57.3235L115 57.3235ZM115 53.4412L116 53.4412L116 51.5L115 51.5L114 51.5L114 53.4412L115 53.4412ZM115 49.5588L116 49.5588L116 47.6176L115 47.6176L114 47.6176L114 49.5588L115 49.5588ZM115 45.6765L116 45.6765L116 43.7353L115 43.7353L114 43.7353L114 45.6765L115 45.6765ZM115 41.7941L116 41.7941L116 39.8529L115 39.8529L114 39.8529L114 41.7941L115 41.7941ZM115 37.9118L116 37.9118L116 35.9706L115 35.9706L114 35.9706L114 37.9118L115 37.9118ZM115 34.0294L116 34.0294L116 32.0882L115 32.0882L114 32.0882L114 34.0294L115 34.0294ZM115 30.147L116 30.147L116 28.2059L115 28.2059L114 28.2059L114 30.147L115 30.147ZM115 26.2647L116 26.2647L116 24.3235L115 24.3235L114 24.3235L114 26.2647L115 26.2647ZM115 22.3823L116 22.3823L116 20.4412L115 20.4412L114 20.4412L114 22.3823L115 22.3823ZM115 18.5L116 18.5L116 16.5588L115 16.5588L114 16.5588L114 18.5L115 18.5ZM115 14.6176L116 14.6176L116 12.6765L115 12.6765L114 12.6765L114 14.6176L115 14.6176ZM115 10.7353L116 10.7353L116 8.7941L115 8.7941L114 8.7941L114 10.7353L115 10.7353ZM115 6.85292L116 6.85292L116 4.91174L115 4.91174L114 4.91174L114 6.85292L115 6.85292ZM115 2.97056L116 2.97056L116 2L115 2L114 2L114 2.97056L115 2.97056ZM67 2L66 2L66 2.97059L67 2.97059L68 2.97059L68 2L67 2ZM67 4.91177L66 4.91177L66 6.85294L67 6.85294L68 6.85294L68 4.91177L67 4.91177ZM67 8.79412L66 8.79412L66 10.7353L67 10.7353L68 10.7353L68 8.79412L67 8.79412ZM67 12.6765L66 12.6765L66 14.6176L67 14.6176L68 14.6176L68 12.6765L67 12.6765ZM67 16.5588L66 16.5588L66 18.5L67 18.5L68 18.5L68 16.5588L67 16.5588ZM67 20.4412L66 20.4412L66 22.3824L67 22.3824L68 22.3824L68 20.4412L67 20.4412ZM67 24.3235L66 24.3235L66 26.2647L67 26.2647L68 26.2647L68 24.3235L67 24.3235ZM67 28.2059L66 28.2059L66 30.1471L67 30.1471L68 30.1471L68 28.2059L67 28.2059ZM67 32.0882L66 32.0882L66 34.0294L67 34.0294L68 34.0294L68 32.0882L67 32.0882ZM67 35.9706L66 35.9706L66 37.9118L67 37.9118L68 37.9118L68 35.9706L67 35.9706ZM67 39.8529L66 39.8529L66 41.7941L67 41.7941L68 41.7941L68 39.8529L67 39.8529ZM67 43.7353L66 43.7353L66 45.6765L67 45.6765L68 45.6765L68 43.7353L67 43.7353ZM67 47.6177L66 47.6177L66 49.5588L67 49.5588L68 49.5588L68 47.6177L67 47.6177ZM67 51.5L66 51.5L66 53.4412L67 53.4412L68 53.4412L68 51.5L67 51.5ZM67 55.3824L66 55.3824L66 57.3235L67 57.3235L68 57.3235L68 55.3824L67 55.3824ZM67 59.2647L66 59.2647L66 61.2059L67 61.2059L68 61.2059L68 59.2647L67 59.2647ZM67 63.1471L66 63.1471L66 65.0883L67 65.0883L68 65.0883L68 63.1471L67 63.1471ZM67 67.0294L66 67.0294L66 68L67 68L68 68L68 67.0294L67 67.0294Z" fill="#0096FF" mask="url(#path-6-inside-2_4219_25901)"/>
13
+ <path d="M99.8275 63.5419L94.2119 49L109.294 55.1409L101.79 56.0727L99.8275 63.5419Z" fill="black" stroke="white"/>
14
+ </svg>
@@ -0,0 +1,9 @@
1
+ declare module "*.css?inline" {
2
+ const css: string;
3
+ export default css;
4
+ }
5
+
6
+ declare module "*.svg" {
7
+ const source: string;
8
+ export default source;
9
+ }
@@ -0,0 +1 @@
1
+ export declare function formatInspectorLabel(value: string): string;
@@ -0,0 +1,7 @@
1
+ export function formatInspectorLabel(value) {
2
+ return value
3
+ .replace(/[-_]+/g, " ")
4
+ .replace(/\s+/g, " ")
5
+ .trim()
6
+ .replace(/\b[a-z]/g, (letter) => letter.toUpperCase());
7
+ }
@@ -0,0 +1 @@
1
+ export declare const UI_STYLES: string;
@@ -0,0 +1,68 @@
1
+ const fieldRowStyles = ".field-row {\n display: grid;\n grid-template-columns: var(--label-column) minmax(0, 1fr);\n gap: var(--space-8);\n align-items: center;\n min-height: var(--control-height-large);\n}\n\n.field-row--has-action {\n grid-template-columns: var(--label-column) minmax(0, 1fr) auto;\n}\n\n.field-row__label {\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n line-height: 1.25;\n}\n\n.field-row__label--hidden {\n position: absolute;\n width: var(--space-0);\n height: var(--space-0);\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n.field-row__control {\n position: relative;\n display: block;\n min-width: 0;\n}\n\n.field-row__action {\n display: inline-flex;\n min-width: 0;\n align-items: center;\n justify-content: flex-end;\n}\n\n.field-row__control[data-has-at-rule=\"true\"] {\n /* Keep the badge out of the control's horizontal layout. */\n isolation: isolate;\n}\n\n.field-row--stacked {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--space-8);\n min-height: 0;\n}\n\n.field-row--stacked .field-row__control {\n width: 100%;\n}\n\n.field-row__hint {\n display: block;\n margin-top: var(--space-4);\n color: var(--text-muted-subtle);\n font-size: var(--font-size-base);\n line-height: 1.3;\n}\n";
2
+ const atRuleContextStyles = ".at-rule-indicator {\n position: absolute;\n z-index: 2;\n top: -4px;\n left: -4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 4px;\n border: 0;\n border-radius: var(--radius-pill);\n background: var(--surface-raised-2x);\n color: var(--content-primary, var(--text-primary));\n box-shadow: var(--shadow-outline);\n font: inherit;\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n white-space: nowrap;\n cursor: help;\n}\n\n.at-rule-indicator::before {\n position: absolute;\n inset: -4px;\n content: \"\";\n}\n\n.at-rule-indicator:hover {\n color: var(--content-primary, var(--text-primary));\n background: var(--surface-raised-2x);\n}\n\n.at-rule-indicator__symbol {\n display: block;\n}\n\n.at-rule-indicator:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 2px var(--accent);\n}\n\n.at-rule-tooltip-positioner {\n /* The portal is a sibling of the panel in the inspector shadow root. */\n z-index: 3;\n pointer-events: auto;\n}\n\n.at-rule-tooltip {\n width: max-content;\n max-width: min(320px, calc(100vw - 24px));\n padding: var(--space-4);\n border: 1px solid color-mix(in srgb, var(--border-strong) 70%, transparent);\n border-radius: var(--radius-8);\n background: var(--surface-raised);\n box-shadow: 0 8px 22px rgb(0 0 0 / 18%);\n color: var(--text-primary);\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n line-height: 1.35;\n}\n\n.at-rule-tooltip__rules {\n display: grid;\n gap: 2px;\n}\n\n.at-rule-tooltip__rule {\n min-width: 0;\n padding: 5px 6px;\n border-radius: var(--radius-4);\n}\n\n.at-rule-tooltip__rule--active {\n background: var(--accent-surface);\n}\n\n.at-rule-tooltip code {\n display: block;\n min-width: 0;\n overflow-wrap: anywhere;\n color: var(--text-primary);\n font: inherit;\n}\n";
3
+ const foundationStyles = ":host {\n all: initial;\n --surface-panel: #F5F5F4;\n --surface-control: var(--surface-well);\n --surface-control-hover: var(--surface-well-2x);\n --surface-raised: #FAFAFA;\n --surface-raised-2x: #fff ;\n --surface-raised-hover: #F5F5F4;\n --surface-well: hsla(0, 0%, 0%, 0.05);\n --surface-well-2x: hsla(0, 0%, 0%, 0.10);\n\n --border-subtle: hsla(0, 0%, 0%, 0.1);\n --border-medium: hsla(0, 0%, 0%, 0.2);\n --border-strong: #d8d8d8;\n\n --text-primary: #242424;\n --text-secondary: #6f6f6f;\n --text-muted: #777777;\n --text-muted-subtle: #a1a1a1;\n\n --accent: #0096ff;\n --accent-surface: rgba(0, 176, 255, 0.15);\n --warning: #d97706;\n --warning-text: #9a5b00;\n --warning-surface: #fff6e5;\n --danger: #df4b4b;\n --danger-text: #bd3636;\n --danger-surface: #fff0f0;\n\n --space-0: 0;\n --space-4: 4px;\n --space-8: 8px;\n --space-12: 12px;\n --space-16: 16px;\n --space-20: 20px;\n --space-24: 24px;\n --space-32: 32px;\n --space-40: 40px;\n --space-48: 48px;\n\n /* Radius */\n --radius-0: 0;\n --radius-4: 4px;\n --radius-8: 8px;\n --radius-12: 12px;\n --radius-16: 16px;\n --radius-20: 20px;\n --radius-24: 24px;\n --radius-pill: 999px;\n\n --radius-control: var(--radius-8);\n --shadow-outline: 0 0 0 1px rgba(0, 0, 0, 0.05);\n --shadow-popup: 0 0 0 1px rgba(0, 0, 0, 0.05), 0 4px 16px rgba(0, 0, 0, 0.10);\n --shadow-control: inset 0 -2px 0 rgba(0, 0, 0, 0.03), 0 0 0 0.5px rgba(0, 0, 0, 0.25);\n --z-index: 2147483647;\n\n --font-family: \"Inter Variable\", Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n --font-size-base: 12px;\n --font-size-small: 10px;\n --font-weight-base: 400;\n --font-weight-label: 600;\n\n /* Control semantic sizes */\n --control-height-small: 24px;\n --control-height-large: 32px;\n --label-column: 104px;\n\n --icon-size-small: 16px;\n --icon-size-large: 20px;\n --icon-stroke-width: 1.5px;\n\n position: fixed;\n inset: 0;\n z-index: var(--z-index);\n pointer-events: none;\n font-family: var(--font-family);\n background: transparent;\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nbutton,\ninput,\nselect {\n font-family: inherit;\n}\n";
4
+ const controlSurfaceStyles = "/*\n * A single visual boundary for a field. Standalone text inputs and selects\n * share these defaults; composed fields use ControlSurface and make their\n * content embedded so only this element paints control chrome.\n */\n.control-surface,\n.text-input,\n.select {\n --control-surface-height: var(--control-height-large);\n --control-surface-padding: 2px 8px;\n --control-surface-gap: 6px;\n box-sizing: border-box;\n min-width: 0;\n height: var(--control-surface-height);\n padding: var(--control-surface-padding);\n border: 0;\n border-radius: var(--radius-control);\n outline: 0;\n background: var(--surface-control);\n color: var(--text-primary);\n font: inherit;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n transition: background-color 120ms ease, box-shadow 120ms ease;\n}\n\n.control-surface {\n position: relative;\n display: flex;\n width: 100%;\n align-items: center;\n gap: var(--control-surface-gap);\n}\n\n.control-surface:has(.token-field--color) {\n --control-surface-padding: 2px 8px 2px 2px;\n}\n\n.control-surface--compact,\n.text-input--compact,\n.select--compact {\n --control-surface-height: var(--control-height-small);\n --control-surface-padding: 0 6px;\n}\n\n.control-surface:hover:not(:focus-within),\n.text-input:hover:not(:focus),\n.select:hover:not(:disabled) {\n background: var(--surface-control-hover);\n}\n\n.control-surface:focus-within,\n.text-input:focus-visible,\n.select:focus-visible,\n.select[data-popup-open] {\n box-shadow: inset 0 0 0 2px var(--accent);\n}\n\n.control-surface--embedded,\n.text-input--embedded,\n.select--embedded {\n padding: 0;\n background: transparent;\n border-radius: 0;\n box-shadow: none;\n}\n\n.control-surface--embedded:hover:not(:focus-within),\n.text-input--embedded:hover:not(:focus),\n.select--embedded:hover:not(:disabled),\n.control-surface--embedded:focus-within,\n.text-input--embedded:focus-visible,\n.select--embedded:focus-visible,\n.select--embedded[data-popup-open] {\n background: transparent;\n box-shadow: none;\n}\n";
5
+ const textInputStyles = ".text-input {\n width: 100%;\n}\n\n.text-input::placeholder {\n color: var(--text-muted);\n opacity: 1;\n}\n";
6
+ const selectStyles = ".select {\n display: inline-flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n text-align: left;\n cursor: pointer;\n}\n\n.select:disabled {\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n\n.select__value,\n.select [data-slot=\"select-value\"] {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.select__icon {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n color: var(--text-muted);\n transition: transform 120ms ease;\n}\n\n.select[data-popup-open] .select__icon {\n color: var(--text-primary);\n transform: rotate(180deg);\n}\n\n.select__positioner {\n z-index: var(--z-index);\n min-width: var(--anchor-width);\n pointer-events: auto;\n}\n\n.select__popup {\n box-sizing: border-box;\n width: min(420px, max(var(--anchor-width, 0px), 260px));\n min-width: 0;\n max-width: calc(100vw - 24px);\n max-height: min(320px, calc(100dvh - 24px), var(--available-height, 100dvh));\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior: contain;\n pointer-events: auto;\n background: var(--surface-raised);\n color: var(--text-primary);\n border-radius: var(--radius-8);\n box-shadow: var(--shadow-popup);\n transform-origin: var(--transform-origin);\n}\n\n.select__popup--searchable {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.select__search-input {\n box-sizing: border-box;\n flex: 0 0 auto;\n width: calc(100% - (var(--space-4) * 2));\n min-height: 32px;\n margin: var(--space-4);\n padding: var(--space-8);\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-8);\n background: var(--surface-control);\n color: var(--text-primary);\n outline: 0;\n font: inherit;\n}\n\n.select__search-input::placeholder {\n color: var(--text-muted);\n opacity: 1;\n}\n\n.select__search-input:focus {\n border-color: var(--border-strong);\n box-shadow: 0 0 0 2px var(--accent);\n}\n\n.select__empty {\n padding: 12px 14px;\n color: var(--text-muted);\n font-size: var(--font-size-base);\n}\n\n.select__empty:empty {\n padding: 0;\n}\n\n.select__list {\n min-width: 0;\n padding: var(--space-4);\n outline: 0;\n}\n\n.select__list--searchable {\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.select__group + .select__group {\n margin-top: 4px;\n padding-top: 4px;\n border-top: 1px solid var(--border-subtle);\n}\n\n.select__group-label {\n padding: 5px 8px 4px;\n color: var(--text-muted);\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.select__item {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n min-height: 34px;\n padding: 6px 9px;\n border-radius: var(--radius-4);\n color: var(--text-primary);\n outline: 0;\n font-size: var(--font-size-base);\n cursor: pointer;\n}\n\n.select__item[data-highlighted] {\n background: var(--surface-control);\n}\n\n.select__item[data-disabled] {\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n\n.select__item-indicator {\n display: inline-flex;\n width: 16px;\n flex: 0 0 16px;\n align-items: center;\n justify-content: center;\n}\n\n.select__item-text {\n min-width: 0;\n flex: 1 1 0;\n overflow: hidden;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n";
7
+ const buttonStyles = ".button {\n appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-4);\n background: var(--surface-control);\n border: 0;\n color: var(--text-primary);\n cursor: pointer;\n font: inherit;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n min-height: var(--control-height-large);\n padding: 0 12px;\n border-radius: var(--radius-control);\n vertical-align: middle;\n transition: background-color 120ms ease, color 120ms ease, box-shadow 120ms ease;\n}\n\n.button--compact {\n min-height: var(--control-height-small);\n padding: 0 10px;\n font-size: var(--font-size-base);\n}\n\n.button--primary {\n background: var(--surface-raised-2x);\n color: var(--text-primary);\n box-shadow: var(--shadow-control);\n}\n\n.button--secondary {\n background: var(--surface-control);\n}\n\n.button--quiet {\n background: transparent;\n color: var(--text-primary);\n}\n\n.button--danger {\n background: var(--danger-surface);\n color: var(--danger-text);\n}\n\n.button--disabled {\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n\n.button:hover:not(:disabled) {\n background: var(--surface-control-hover);\n}\n\n.button--quiet:hover:not(:disabled) {\n background: var(--surface-well);\n}\n\n.button--primary:hover:not(:disabled) {\n background: var(--surface-raised-hover);\n color: var(--text-primary);\n box-shadow: var(--shadow-control);\n}\n\n.button[data-active=\"true\"] {\n background: var(--accent-surface);\n color: var(--accent);\n}\n\n.button[data-active=\"true\"]:hover:not(:disabled) {\n background: var(--accent-surface);\n color: var(--accent);\n}\n\n.button:focus-visible {\n outline: 0;\n box-shadow: inset 0 0 0 2px var(--accent);\n}\n\n.button:disabled {\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n";
8
+ const segmentedControlStyles = ".segmented-control {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: 2px;\n min-width: 0;\n min-height: var(--control-height-large);\n padding: 2px;\n box-sizing: border-box;\n overflow: hidden;\n border-radius: var(--radius-control);\n background: var(--surface-well);\n}\n\n/* button is the base; stretch fills the padded track (grows with text). */\n.button.segmented-control__button {\n min-width: 0;\n min-height: 0;\n height: auto;\n padding: 0 var(--space-8);\n border: 0;\n border-radius: 6px; /*Custom to fit inside control surface*/\n background: transparent;\n color: var(--text-muted);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n box-shadow: none;\n}\n\n.button.segmented-control__button--selected,\n.button.segmented-control__button--selected:hover:not(:disabled) {\n background: var(--surface-raised-2x);\n color: var(--text-primary);\n box-shadow: var(--shadow-control);\n}\n\n.button.segmented-control__button:not(.segmented-control__button--selected):hover:not(:disabled) {\n background: transparent;\n color: var(--text-primary);\n}\n\n.segmented-control__button svg {\n flex-shrink: 0;\n}\n\n.segmented-control__label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n";
9
+ const iconButtonStyles = ".icon-button {\n appearance: none;\n background: var(--surface-control);\n border: 0;\n color: var(--text-primary);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--control-height-large);\n height: var(--control-height-large);\n padding: 0;\n border-radius: var(--radius-control);\n font: inherit;\n font-size: var(--font-size-base);\n font-weight: 650;\n transition: background-color 120ms ease, color 120ms ease, box-shadow 120ms ease;\n}\n\n.icon-button svg {\n stroke-width: var(--icon-stroke-width);\n}\n\n.icon-button--primary {\n background: var(--surface-raised-2x);\n color: var(--text-primary);\n box-shadow: var(--shadow-control);\n}\n\n.icon-button--secondary {\n background: var(--surface-control);\n}\n\n.icon-button--quiet {\n background: transparent;\n color: var(--text-primary);\n}\n\n.icon-button--danger {\n background: var(--danger-surface);\n color: var(--danger-text);\n}\n\n.icon-button--disabled {\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n\n.icon-button:hover:not(:disabled) {\n background: var(--surface-well);\n}\n\n.icon-button--primary:hover:not(:disabled) {\n background: var(--surface-raised-hover);\n color: var(--text-primary);\n box-shadow: var(--shadow-control);\n}\n\n.icon-button[data-active=\"true\"] {\n background: var(--accent-surface);\n color: var(--accent);\n}\n\n.icon-button:focus-visible {\n outline: 0;\n box-shadow: inset 0 0 0 2px var(--accent);\n}\n\n.icon-button:disabled {\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n\n.icon-button--compact {\n width: var(--control-height-small);\n height: var(--control-height-small);\n}\n";
10
+ const toggleButtonStyles = ".toggle-button {\n appearance: none;\n background: var(--surface-control);\n border: 0;\n color: var(--text-primary);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--control-height-large);\n height: var(--control-height-large);\n padding: 0;\n border-radius: var(--radius-control);\n font: inherit;\n font-size: var(--font-size-base);\n font-weight: 650;\n transition: background-color 120ms ease, color 120ms ease, box-shadow 120ms ease;\n}\n\n.toggle-button svg {\n stroke-width: var(--icon-stroke-width);\n}\n\n.toggle-button--primary {\n background: var(--accent);\n color: #ffffff;\n}\n\n.toggle-button--secondary {\n background: var(--surface-control);\n}\n\n.toggle-button--quiet {\n background: transparent;\n color: var(--text-primary);\n}\n\n.toggle-button--danger {\n background: var(--danger-surface);\n color: var(--danger-text);\n}\n\n.toggle-button--disabled {\n background: var(--surface-control);\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n\n.toggle-button:hover:not(:disabled) {\n background: var(--surface-well);\n}\n\n.toggle-button--primary:hover:not(:disabled) {\n background: var(--accent);\n}\n\n.toggle-button[data-pressed] {\n background: var(--accent-surface);\n color: var(--accent);\n}\n\n.toggle-button[data-pressed]:hover:not(:disabled) {\n background: var(--accent-surface);\n color: var(--accent);\n}\n\n.toggle-button:focus-visible {\n outline: 0;\n box-shadow: inset 0 0 0 2px var(--accent);\n}\n\n.toggle-button:disabled {\n background: var(--surface-control);\n color: var(--text-muted-subtle);\n cursor: not-allowed;\n}\n\n.toggle-button--compact {\n width: 26px;\n height: 26px;\n}\n";
11
+ const statusCalloutStyles = ".status-callout {\n padding: 12px 14px;\n background: var(--surface-control);\n border: 0;\n border-radius: 12px;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n line-height: 1.4;\n}\n\n.status-callout--warning {\n background: var(--warning-surface);\n color: var(--warning-text);\n}\n\n.status-callout--accent {\n background: var(--accent-surface);\n color: var(--accent);\n}\n\n.status-callout--danger {\n background: var(--danger-surface);\n color: var(--danger-text);\n}\n";
12
+ const colorSwatchStyles = ".color-swatch {\n display: inline-block;\n flex-shrink: 0;\n width: var(--icon-size-small);\n height: var(--icon-size-small);\n background: var(--swatch-color);\n border-radius: calc(var(--radius-control) - 4px);\n border: 1px solid #fff;\n box-shadow: 0 0 0 1px var(--border-medium);\n}\n";
13
+ const popoverListboxStyles = ".popover-listbox {\n position: relative;\n width: 100%;\n}\n\n.popover-listbox__positioner {\n z-index: 20;\n pointer-events: auto;\n}\n\n.popover-listbox__popup {\n box-sizing: border-box;\n width: min(420px, max(var(--anchor-width, 0px), 260px));\n min-width: 0;\n max-width: calc(100vw - 24px);\n max-height: min(320px, calc(100dvh - 24px), var(--available-height, 100dvh));\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior: contain;\n pointer-events: auto;\n background: var(--surface-raised-2x);\n border-radius: var(--radius-8);\n box-shadow: var(--shadow-popup);\n}\n\n.popover-listbox__popup--searchable {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.popover-listbox__search-input {\n box-sizing: border-box;\n flex: 0 0 auto;\n width: 100%;\n min-height: 32px;\n padding: var(--space-12) var(--space-16);\n border: none;\n border-bottom: 1px solid var(--border-subtle);\n background: transparent;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n outline: 0;\n}\n\n.popover-listbox__search-input::placeholder {\n color: var(--text-muted);\n opacity: 1;\n}\n\n.popover-listbox__search-input:focus {\n border-color: var(--border-strong);\n}\n\n.popover-listbox__empty {\n padding: var(--space-12) var(--space-16);\n color: var(--text-muted);\n font-size: var(--font-size-base);\n}\n\n.popover-listbox__empty:empty {\n padding: 0;\n}\n\n.popover-listbox__list {\n min-width: 0;\n padding: var(--space-4);\n}\n\n.popover-listbox__list--searchable {\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.popover-listbox__item {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n min-height: 34px;\n padding: 6px 9px;\n border-radius: var(--radius-4);\n color: var(--text-primary);\n cursor: pointer;\n font-size: var(--font-size-base);\n}\n\n.popover-listbox__item[data-highlighted] {\n background: var(--surface-control);\n}\n\n.popover-listbox__leading {\n display: inline-flex;\n flex-shrink: 0;\n}\n\n.popover-listbox__label {\n min-width: 0;\n flex: 1 1 auto;\n overflow: hidden;\n color: var(--text-primary);\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.popover-listbox__trailing {\n min-width: 0;\n max-width: 45%;\n flex: 0 1 auto;\n overflow: hidden;\n color: var(--text-muted);\n font-size: var(--font-size-base);\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n";
14
+ const inspectorPopoverStyles = ".inspector-popover__positioner {\n z-index: 30;\n pointer-events: auto;\n}\n\n.inspector-popover__popup {\n box-sizing: border-box;\n width: min(280px, calc(100vw - 24px));\n max-height: min(420px, calc(100dvh - 24px));\n overflow-x: hidden;\n overflow-y: auto;\n padding: var(--space-4);\n background: var(--surface-raised-2x);\n border-radius: var(--radius-8);\n box-shadow: var(--shadow-popup);\n pointer-events: auto;\n}\n";
15
+ const sideValuesFieldStyles = ".side-values {\n display: flex;\n min-width: 0;\n flex-direction: column;\n gap: 6px;\n}\n\n.side-values__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.side-values__label {\n min-width: 0;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n line-height: 1.25;\n}\n\n.side-values__linked {\n min-width: 0;\n}\n\n.side-values__value-row {\n display: grid;\n min-width: 0;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 6px;\n}\n\n.side-values[data-expanded=\"true\"] .side-values__value-row {\n align-items: start;\n}\n\n.side-values__linked-row {\n grid-template-columns: auto minmax(0, 1fr) auto;\n}\n\n.side-values__linked-row--no-label {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n\n.side-values__linked-row .side-values__label {\n white-space: nowrap;\n}\n\n.side-values__pairs {\n display: grid;\n min-width: 0;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 6px;\n}\n\n.side-values__grid {\n display: grid;\n min-width: 0;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n grid-template-areas:\n \"left top\"\n \"right bottom\";\n gap: 6px;\n}\n\n.side-values__grid [data-side=\"left\"] {\n grid-area: left;\n}\n\n.side-values__grid [data-side=\"right\"] {\n grid-area: right;\n}\n\n.side-values__grid [data-side=\"top\"] {\n grid-area: top;\n}\n\n.side-values__grid [data-side=\"bottom\"] {\n grid-area: bottom;\n}\n\n.side-values__grid[data-layout=\"corners\"] {\n grid-template-areas:\n \"top-left top-right\"\n \"bottom-left bottom-right\";\n}\n\n.side-values__grid[data-layout=\"corners\"] [data-side=\"top\"] {\n grid-area: top-left;\n}\n\n.side-values__grid[data-layout=\"corners\"] [data-side=\"right\"] {\n grid-area: top-right;\n}\n\n.side-values__grid[data-layout=\"corners\"] [data-side=\"bottom\"] {\n grid-area: bottom-right;\n}\n\n.side-values__grid[data-layout=\"corners\"] [data-side=\"left\"] {\n grid-area: bottom-left;\n}\n\n.side-values__side {\n color: var(--text-muted);\n}\n\n.side-values__icon {\n width: var(--icon-size-small);\n height: var(--icon-size-small);\n flex: 0 0 var(--icon-size-small);\n fill: none;\n stroke: currentColor;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: var(--icon-stroke-width);\n}\n\n.side-values__axis-icon {\n color: var(--text-secondary);\n}\n\n.side-values__side-icon {\n color: var(--text-secondary);\n}\n\n.side-values__icon-emphasis,\n.side-values__icon-emphasis path {\n stroke-width: var(--icon-stroke-width);\n}\n\n.side-values__control {\n display: flex;\n align-self: stretch;\n min-width: 0;\n flex: 1 1 auto;\n}\n";
16
+ const inspectorShellStyles = ":host { --panel-width: min(320px, 100vw); }\n\n.panel {\n position: fixed;\n inset: 0 0 0 auto;\n z-index: 2;\n width: var(--panel-width);\n height: 100dvh;\n overflow: auto;\n background: var(--surface-panel);\n color: var(--text-primary);\n border: 0;\n border-left: 1px solid var(--border-subtle);\n border-radius: var(--radius-0);\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n line-height: 1.35;\n display: flex;\n flex-direction: column;\n pointer-events: auto;\n scrollbar-color: var(--border-strong) transparent;\n scrollbar-width: thin;\n}\n\n.panel[data-open=\"false\"] {\n display: none;\n}\n\n.panel__restore {\n position: fixed;\n top: max(12px, env(safe-area-inset-top));\n right: max(12px, env(safe-area-inset-right));\n z-index: calc(var(--z-index) + 1);\n display: flex;\n align-items: center;\n justify-content: center;\n width: calc(var(--control-height-large) + (var(--space-4) * 2));\n height: calc(var(--control-height-large) + (var(--space-4) * 2));\n padding: var(--space-4);\n border-radius: var(--radius-12);\n background: var(--surface-raised-2x);\n box-shadow: var(--shadow-popup);\n pointer-events: auto;\n animation: panel-restore-in 160ms ease-out;\n}\n\n.panel__restore-button.icon-button {\n width: 100%;\n height: 100%;\n}\n\n@keyframes panel-restore-in {\n from { opacity: 0; transform: translateX(8px); }\n to { opacity: 1; transform: translateX(0); }\n}\n\n.scope__warning {\n color: var(--warning-text);\n font-weight: 500;\n}\n\n.panel__tabs {\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n padding: var(--space-12) var(--space-24);\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.panel__header-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-8);\n width: 100%;\n}\n\n.panel__header-actions,\n.panel__copy-row {\n display: flex;\n align-items: center;\n}\n\n.panel__header-actions {\n min-width: 0;\n gap: var(--space-4);\n}\n\n.panel__copy-row {\n gap: var(--space-8);\n}\n\n.panel__header-divider {\n width: 1px;\n height: var(--control-height-large);\n margin: 0 var(--space-4);\n background: var(--border-subtle);\n}\n\n.panel__canvas-button {\n white-space: nowrap;\n}\n\n.panel__copy-row {\n width: 100%;\n}\n\n.copy-prompt__stack {\n width: 100%;\n min-width: 0;\n}\n\n.copy-prompt__main.button {\n width: 100%;\n}\n\n.copy-prompt__hint {\n margin: var(--space-8) 0 0;\n color: var(--text-secondary);\n font-size: var(--font-size-small);\n line-height: 1.4;\n}\n\n.copy-prompt__hint code {\n font-family: var(--font-mono);\n}\n\n.copy-prompt__agent-status {\n margin-top: var(--space-8);\n}\n\n.copy-prompt__agent-status-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-8);\n}\n\n.copy-prompt__agent-status-content > span {\n min-width: 0;\n}\n\n.copy-prompt__agent-status-content .button--quiet {\n flex: 0 0 auto;\n color: inherit;\n}\n\n.copy-prompt__agent-status--listening {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-4);\n margin-top: var(--space-8);\n color: var(--text-secondary);\n font-size: 14px;\n line-height: 1.4;\n text-align: center;\n}\n\n.panel__body {\n min-height: auto;\n padding: 0 20px 28px;\n background: var(--surface-panel);\n color: var(--text-secondary);\n overflow: visible;\n flex: 0 0 auto;\n}\n\n.panel__body:has(.empty-state) {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-height: 0;\n}\n\n.panel::-webkit-scrollbar {\n width: 6px;\n}\n\n.panel::-webkit-scrollbar-thumb {\n background: var(--border-strong);\n border-radius: var(--radius-pill);\n}\n\n.selection {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px 0 16px;\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.selection--without-scope-callout {\n border-bottom: 0;\n}\n\n.selection__summary {\n display: grid;\n gap: 2px;\n}\n\n.selection__count {\n color: var(--text-primary);\n font-weight: 600;\n}\n\n.style-state {\n grid-template-columns: var(--label-column) minmax(0, 1fr);\n column-gap: 6px;\n}\n\n.scope {\n margin-top: 6px;\n}\n\n.scope__action {\n margin-top: 0;\n}\n\n.scope__unlinked,\n.scope__linked {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-8);\n}\n\n.style-editors {\n margin-top: 0;\n background: var(--surface-panel);\n border-top: 0;\n padding-top: 0;\n}\n\n.component-props__source {\n color: var(--text-muted-subtle);\n font-size: 10px;\n font-weight: 650;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n}\n\n.component-props .field-row__label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.inline-text-editor {\n display: grid;\n gap: 8px;\n padding: 10px 12px;\n border: 1px solid var(--border-strong);\n border-radius: 8px;\n background: var(--surface-raised);\n}\n\n.inline-text-editor__binding {\n font-family: var(--font-mono);\n color: var(--text-primary);\n}\n\n.inline-text-editor__chooser {\n display: grid;\n gap: 4px;\n}\n\n.inline-text-editor__chooser-label {\n color: var(--text-muted-subtle);\n font-size: 10px;\n font-weight: 650;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.inline-text-editor__chooser-options {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.inline-text-editor__actions {\n display: flex;\n justify-content: flex-end;\n gap: 6px;\n}\n\n.style-editors__title {\n color: var(--text-muted);\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.empty-state + .changes {\n margin-top: auto;\n}\n\n.changes__empty {\n color: var(--text-muted-subtle);\n}\n\n.editor {\n margin: 0;\n padding: var(--space-8) 0;\n background: var(--surface-panel);\n border: 0;\n border-bottom: 1px solid var(--border-subtle);\n border-radius: 0;\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n}\n\n.editor__title {\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-label);\n letter-spacing: -0.02em;\n min-height: var(--control-height-large);\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-transform: none;\n}\n\n.editor__title-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.editor__title-row .editor__title {\n margin-bottom: 0;\n}\n";
17
+ const emptyStateStyles = ".empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--space-40) var(--space-0) var(--space-24);\n min-height: 70dvh;\n text-align: center;\n color: var(--text-secondary);\n}\n\n.empty-state__icon { display: block; width: min(100%, 182px); height: auto; margin-bottom: var(--space-16); }\n.empty-state__title { margin: 0; color: var(--text-primary); font-size: var(--font-size-base); font-weight: var(--font-weight-base); }\n.empty-state__shortcuts { width: 100%; margin-top: var(--space-32); padding-top: var(--space-20); text-align: left; }\n.empty-state__shortcut-list { display: grid; gap: var(--space-8); margin: var(--space-0); padding: var(--space-0); list-style: none; }\n.empty-state__shortcut { display: flex; align-items: center; justify-content: space-between; gap: var(--space-8); min-height: var(--control-height-small); color: var(--text-secondary); }\n.empty-state__shortcut-keys { display: inline-flex; align-items: center; gap: var(--space-4); color: var(--text-muted); }\n.empty-state__shortcut-keys kbd { display: inline-flex; align-items: center; justify-content: center; min-width: var(--control-height-small); height: var(--control-height-small); padding: var(--space-0) var(--space-8); border-radius: var(--radius-4); background: var(--surface-raised-2x); color: var(--text-primary); font-family: var(--font-family); font-size: var(--font-size-small); box-shadow: var(--shadow-control); }\n.empty-state__shortcut-keys > span { color: var(--text-muted-subtle); font-size: var(--font-size-small); }\n";
18
+ const styleEditorStyles = "/* Shared chrome for style-editor sections. */\n.layout,\n.spacing,\n.typography,\n.border,\n.property,\n.color {\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n background: var(--surface-panel);\n}\n\n.appearance {\n gap: var(--space-12);\n}\n\n.appearance__fields {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;\n gap: var(--space-12);\n}\n\n.appearance__field {\n display: flex;\n min-width: 0;\n flex-direction: column;\n gap: var(--space-8);\n}\n\n.appearance__field-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-8);\n}\n\n.appearance__field-label {\n min-width: 0;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n line-height: 1.25;\n}\n\n.border-radius-editor__main {\n display: flex;\n min-width: 0;\n flex-direction: column;\n gap: var(--space-8);\n}\n\n.border-radius-editor--embedded {\n display: contents;\n}\n\n.border-radius-editor--embedded > .border-radius-editor__main {\n grid-column: 2;\n}\n\n.border-radius-editor--embedded > .border-radius-editor__toggle {\n grid-column: 3;\n align-self: end;\n}\n\n.border-radius__grouped-row {\n display: grid;\n min-width: 0;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: stretch;\n gap: var(--space-8);\n}\n\n.border-radius__grouped-row > .control-surface {\n min-width: 0;\n}\n\n.border-radius-editor__individuals {\n grid-column: 1 / span 2;\n min-width: 0;\n}\n\n.opacity-editor__effective {\n flex: 0 0 auto;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n}\n";
19
+ const borderEditorStyles = ".border__linked-row {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.border__linked-control {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.border__linked-control--color {\n flex: 3 1 0;\n}\n\n.border__linked-control--width {\n flex: 1 1 0;\n}\n\n.border__linked-row > .popover-listbox,\n.border__linked-row > .toggle-button {\n flex: 0 0 auto;\n}\n\n.border__linked-row > .popover-listbox {\n width: auto;\n}\n\n.border__expanded {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.border__expanded-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 26px;\n}\n\n.border__side-rows {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.border__side-row {\n display: grid;\n min-width: 0;\n grid-template-columns: auto minmax(0, 3fr) minmax(0, 1fr) auto;\n align-items: center;\n gap: 6px;\n}\n\n.border__side-row > .side-values__side-icon {\n justify-self: center;\n}\n\n.border__side-control {\n min-width: 0;\n}\n\n.border__side-row > .popover-listbox {\n flex: 0 0 auto;\n}\n";
20
+ const typographyStyles = ".typography {\n gap: var(--space-8);\n}\n\n.typography__field {\n min-width: 0;\n}\n\n.typography__field-icon {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n color: var(--text-muted);\n}\n\n.typography__field > .select {\n flex: 1 1 auto;\n}\n\n.typography__metrics {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: var(--space-8);\n}\n\n.typography__field .token-field__leading svg {\n width: var(--icon-size-small);\n height: var(--icon-size-small);\n}\n\n.typography__field--font-family .token-field__leading svg {\n width: var(--icon-size-small);\n height: var(--icon-size-small);\n}\n\n.typography__alignment {\n display: grid;\n grid-template-columns: 1.1fr 1fr;\n gap: var(--space-8);\n}\n\n.typography__alignment-field {\n position: relative;\n min-width: 0;\n}\n";
21
+ const layoutSectionStyles = ".layout__group {\n margin-top: 4px;\n padding-top: 10px;\n border-top: 1px solid var(--border-subtle);\n background: var(--surface-panel);\n}\n\n.layout__basic {\n display: flex;\n flex-direction: column;\n gap: var(--space-12);\n}\n\n.layout__tool-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) var(--control-height-large);\n gap: var(--space-8);\n align-items: end;\n}\n\n.layout__tool-row .field-row {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--space-4);\n min-width: 0;\n min-height: 0;\n}\n\n\n.layout__tool-row .field-row__control {\n min-width: 0;\n width: 100%;\n}\n\n.layout__size {\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n}\n\n.layout__size-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr)) auto;\n grid-template-areas:\n \"width height toggle\"\n \"min-width min-height .\"\n \"max-width max-height .\"\n \"aspect-ratio . .\";\n gap: 6px;\n align-items: end;\n}\n\n.layout__size[data-expanded=\"false\"] .layout__size-grid {\n grid-template-areas: \"width height toggle\";\n}\n\n.layout__size-cell {\n min-width: 0;\n}\n\n.layout__size-cell--width { grid-area: width; }\n.layout__size-cell--height { grid-area: height; }\n.layout__size-cell--toggle { grid-area: toggle; }\n.layout__size-cell--min-width { grid-area: min-width; }\n.layout__size-cell--min-height { grid-area: min-height; }\n.layout__size-cell--max-width { grid-area: max-width; }\n.layout__size-cell--max-height { grid-area: max-height; }\n.layout__size-cell--aspect-ratio { grid-area: aspect-ratio; }\n\n.layout__size-grid .field-row {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--space-4);\n min-width: 0;\n min-height: 0;\n}\n\n\n.layout__size-grid .field-row__control,\n.layout__size-grid .token-field {\n min-width: 0;\n width: 100%;\n}\n\n.layout__size-grid .layout-combo,\n.layout__aspect-ratio-control {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n gap: 4px;\n align-items: center;\n}\n\n.layout__size-grid .layout-combo__custom {\n min-width: 0;\n}\n\n.layout__aspect-ratio-control .text-input {\n min-width: 0;\n}\n\n\n.layout__grid {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.layout__grid-primary {\n display: grid;\n grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);\n gap: 10px;\n align-items: start;\n}\n\n.layout__grid-picker-column,\n.layout__grid-gap {\n min-width: 0;\n}\n\n.layout__grid-heading {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 6px;\n}\n\n.layout__grid-gap-fields {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.layout__grid-fields {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.layout__grid-fields .field-row,\n.layout__grid-child .field-row {\n min-width: 0;\n}\n\n.layout__grid-child {\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n}\n\n.layout__grid-child-fields {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n grid-template-areas:\n \"column row\"\n \"vertical horizontal\";\n gap: 6px;\n}\n\n.layout__grid-child-fields .field-row,\n.layout__grid-child-fields .control-surface,\n.layout__grid-child-fields .segmented-control {\n min-width: 0;\n}\n\n.layout__grid-child-placement--column { grid-area: column; }\n.layout__grid-child-placement--row { grid-area: row; }\n.layout__grid-child-alignment--h { grid-area: horizontal; }\n.layout__grid-child-alignment--v { grid-area: vertical; }\n\n.layout__grid-child-placement .control-surface,\n.layout__grid-child-alignment-control {\n width: 100%;\n}\n\n.layout__grid-child-placement-icon {\n flex: 0 0 var(--icon-size-small);\n color: var(--text-secondary);\n}\n\n.layout__grid-child-align-icon--horizontal {\n transform: rotate(90deg);\n}\n\n.layout__grid-alignment {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 6px;\n}\n\n.layout__grid-advanced {\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-width: 0;\n}\n\n\n.layout__grid-value {\n min-width: 0;\n}\n\n.layout__flex-toolbar {\n display: block;\n}\n\n.layout__direction-tools {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto auto;\n gap: 4px;\n min-width: 0;\n}\n\n.layout__alignment-grid {\n position: relative;\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(3, minmax(0, 1fr));\n gap: 2px;\n padding: 5px;\n overflow: hidden;\n background: var(--surface-control);\n border-radius: var(--radius-control);\n isolation: isolate;\n}\n\n.layout__alignment-button {\n position: relative;\n z-index: 1;\n width: 100%;\n min-height: 8px;\n border-radius: 5px;\n}\n\n.layout__alignment-button span {\n width: 3px;\n height: 3px;\n background: var(--text-muted-subtle);\n border-radius: 50%;\n}\n\n.layout__alignment-button[data-active=\"true\"] span {\n width: 14px;\n height: 2px;\n background: var(--accent);\n border-radius: var(--radius-pill);\n box-shadow: 0 -4px 0 var(--accent), 0 4px 0 var(--accent);\n}\n\n.layout__distribution-preview {\n position: absolute;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: space-between;\n pointer-events: none;\n}\n\n.layout__distribution-preview span {\n width: 14px;\n height: 2px;\n border-radius: var(--radius-pill);\n background: var(--accent);\n}\n\n/* Match the centers of the 32px controls in the padded 3x3 grid. */\n.layout__alignment-grid[data-direction=\"row\"] .layout__distribution-preview {\n top: calc((100% - 14px) / 3 + 22px);\n right: calc((100% - 14px) / 6 - 2px);\n left: calc((100% - 14px) / 6 - 2px);\n}\n\n.layout__alignment-grid[data-direction=\"row\"][data-align=\"flex-start\"] .layout__distribution-preview {\n top: 20px;\n}\n\n.layout__alignment-grid[data-direction=\"row\"][data-align=\"flex-end\"] .layout__distribution-preview {\n top: auto;\n bottom: calc((100% - 14px) / 3 - 12px);\n}\n\n.layout__alignment-grid[data-direction=\"row\"][data-justify=\"space-around\"] .layout__distribution-preview {\n right: 20px;\n left: 20px;\n}\n\n.layout__alignment-grid[data-direction=\"column\"] .layout__distribution-preview {\n top: 20px;\n bottom: calc((100% - 14px) / 3 - 12px);\n left: calc(50% - 7px);\n flex-direction: column;\n}\n\n.layout__alignment-grid[data-direction=\"column\"][data-align=\"flex-start\"] .layout__distribution-preview {\n left: calc((100% - 14px) / 6 - 2px);\n}\n\n.layout__alignment-grid[data-direction=\"column\"][data-align=\"flex-end\"] .layout__distribution-preview {\n right: calc((100% - 14px) / 6 - 2px);\n left: auto;\n}\n\n.layout__alignment-grid[data-direction=\"column\"][data-justify=\"space-around\"] .layout__distribution-preview {\n top: 20px;\n bottom: 20px;\n}\n\n.layout__alignment-grid[data-justify=\"space-around\"] .layout__distribution-preview {\n justify-content: space-around;\n}\n\n.layout__alignment-grid[data-justify=\"space-evenly\"] .layout__distribution-preview {\n justify-content: space-evenly;\n}\n\n.layout__flex-lower {\n display: grid;\n grid-template-columns: minmax(0, 120px) minmax(0, 1fr);\n gap: 12px;\n align-items: start;\n margin-top: 8px;\n}\n\n.layout__flex-lower .layout__alignment-grid {\n width: min(100%, 120px);\n aspect-ratio: 1;\n grid-template-rows: repeat(3, minmax(0, 1fr));\n justify-self: start;\n}\n\n.layout__flex-lower .layout__alignment-button {\n min-height: 0;\n}\n\n.layout__gap-column {\n min-width: 0;\n}\n\n.layout__gap-fields {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.layout__spacing-primary {\n display: grid;\n grid-template-columns: minmax(0, 1fr) var(--control-height-large);\n gap: 5px;\n align-items: center;\n min-width: 0;\n}\n\n.layout__spacing-primary .layout-combo {\n min-width: 0;\n}\n\n.layout__spacing-primary .layout-combo,\n.layout__spacing-primary .text-input {\n width: 100%;\n}\n\n.layout__distribution-control {\n width: var(--control-height-large);\n}\n\n.layout__spacing-field {\n color: var(--text-muted);\n}\n\n.layout__spacing-icon {\n display: inline-flex;\n flex: 0 0 var(--icon-size-small);\n width: var(--icon-size-small);\n height: var(--icon-size-small);\n color: var(--text-secondary);\n}\n\n.layout__spacing-field .layout-combo {\n flex: 1 1 auto;\n min-width: 0;\n width: 100%;\n}\n\n.layout__flex-child-fields {\n display: grid;\n grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.8fr) minmax(0, 1fr) auto;\n gap: 5px;\n align-items: start;\n}\n\n.layout__flex-child-fields > .icon-button {\n align-self: end;\n justify-self: end;\n}\n\n.layout__flex-child-fields > .field-row {\n min-width: 0;\n}\n\n.layout__flex-child-fields .field-row,\n.layout__flex-child-field {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 4px;\n min-width: 0;\n min-height: 0;\n}\n\n.layout__flex-child-fields .field-row__label {\n color: var(--text-secondary);\n}\n\n.layout__flex-child-fields .field-row__control,\n.layout__flex-child-fields .layout-combo {\n width: 100%;\n min-width: 0;\n}\n\n.layout__flex-child-settings {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.layout__flex-child-settings-title {\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n}\n\n.layout__flex-child-settings .field-row {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 4px;\n min-height: 0;\n}\n\n.layout__flex-child-settings .field-row__label {\n color: var(--text-secondary);\n}\n\n.layout__flex-child-settings .field-row__control,\n.layout__flex-child-settings .layout-combo {\n width: 100%;\n min-width: 0;\n}\n";
22
+ const gridPickerStyles = ".grid-picker {\n position: relative;\n min-width: 0;\n}\n\n.grid-picker__trigger {\n display: block;\n width: 100%;\n padding: 4px;\n appearance: none;\n border: none;\n border-radius: 9px;\n background: var(--surface-control);\n color: var(--text-primary);\n cursor: pointer;\n}\n\n.grid-picker__trigger:hover {\n border-color: var(--accent);\n background: var(--surface-control-hover);\n}\n\n.grid-picker__trigger:focus-visible {\n outline: 0;\n box-shadow: inset 0 0 0 2px var(--accent);\n}\n\n.grid-picker__preview {\n position: relative;\n display: grid;\n grid-template-columns: repeat(var(--grid-picker-columns), minmax(0, 1fr));\n grid-template-rows: repeat(var(--grid-picker-rows), minmax(0, 1fr));\n gap: 3px;\n min-height: 88px;\n padding: 1px;\n}\n\n.grid-picker__preview-cell {\n min-width: 0;\n min-height: 0;\n border: 1px solid var(--border-subtle);\n border-radius: 4px;\n background: var(--surface-raised);\n}\n\n.grid-picker__preview-label {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-label);\n letter-spacing: -0.04em;\n pointer-events: none;\n}\n\n.grid-picker__popover {\n position: fixed;\n z-index: 3;\n top: 0;\n left: 0;\n transform: translateX(-50%);\n visibility: hidden;\n width: 360px;\n padding: var(--space-4);\n border-radius: var(--radius-8);\n background: var(--surface-raised-2x);\n box-shadow: var(--shadow-popup);\n}\n\n.grid-picker__cell-grid {\n display: grid;\n grid-template-columns: repeat(var(--grid-picker-columns), minmax(24px, 1fr));\n grid-template-rows: repeat(var(--grid-picker-rows), minmax(24px, 1fr));\n gap: 4px;\n}\n\n.grid-picker__cell {\n min-width: 24px;\n min-height: 24px;\n padding: 0;\n appearance: none;\n border: 0;\n border-radius: var(--radius-4);\n background: var(--surface-control);\n cursor: pointer;\n transition: background-color 100ms ease, box-shadow 100ms ease;\n}\n\n.grid-picker__cell:hover,\n.grid-picker__cell:focus-visible,\n.grid-picker__cell--active {\n background: var(--accent-surface);\n box-shadow: inset 0 0 0 1px var(--accent);\n}\n\n.grid-picker__cell:focus-visible {\n outline: 0;\n}\n\n.grid-picker__popover-value {\n margin-top: 9px;\n color: var(--text-primary);\n font-size: 13px;\n font-weight: 700;\n text-align: center;\n}\n";
23
+ const layoutComboFieldStyles = ".layout-combo {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.layout-combo__custom {\n display: flex;\n}\n\n.layout-combo > .token-field {\n width: 100%;\n}\n\n.layout-combo--blocked > .select:disabled,\n.layout-combo--blocked > .text-input:disabled,\n.layout-combo--blocked .layout-combo__custom > .text-input:disabled {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.layout-combo--blocked > .token-field {\n opacity: 0.55;\n cursor: not-allowed;\n}\n\n.layout-combo-blocked {\n position: absolute;\n z-index: 1;\n top: calc(var(--control-height-large) / 2);\n right: 8px;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n background: var(--warning, #b45309);\n color: #fff;\n font-size: 11px;\n font-weight: 700;\n line-height: 1;\n cursor: help;\n}\n\n.layout-combo-blocked:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 2px var(--accent);\n}\n\n.layout-combo-blocked__symbol {\n display: block;\n line-height: 1;\n}\n";
24
+ const tokenChipStyles = ".token-chip {\n position: relative;\n display: flex;\n flex: 1;\n min-width: 0;\n background: var(--surface-raised-2x);\n margin-right: -6px;\n align-self: stretch;\n padding-left: var(--space-8);\n border-radius: calc(var(--radius-control) - 2px);\n}\n\n.token-chip:has(.token-color-control) {\n padding-left: 0;\n}\n\n.token-chip > .popover-listbox,\n.token-chip__trigger,\n.token-chip__picker {\n flex: 1;\n height: 100%;\n min-width: 0;\n}\n\n.token-chip--small {\n flex: 0 1 auto;\n}\n\n.token-chip--small > .popover-listbox {\n width: auto;\n flex: 0 1 auto;\n}\n\n.token-chip__trigger {\n display: block;\n width: 100%;\n min-width: 0;\n padding: 0;\n border: 0;\n border-radius: var(--radius-control);\n outline: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n}\n\n.token-chip__trigger:focus-visible {\n box-shadow: var(--token-chip-focus-ring, inset 0 0 0 2px var(--accent));\n}\n\n.token-chip--small .token-chip__trigger {\n width: auto;\n}\n\n.token-chip__picker {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n min-width: 0;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n}\n\n.token-chip--small .token-chip__picker {\n display: inline-flex;\n width: auto;\n gap: 3px;\n}\n\n.token-chip__label {\n min-width: 0;\n flex: 1;\n text-align: left;\n}\n\n/* Keep the content inside the existing label box. */\n.token-label {\n display: block;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.token-label__content {\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: inherit;\n}\n\n.token-chip__picker svg {\n flex-shrink: 0;\n}\n\n.token-chip__action {\n position: absolute;\n z-index: 2;\n top: 50%;\n right: 2px;\n display: inline-flex;\n align-items: center;\n background: var(--surface-raised-2x);\n transform: translateY(-50%);\n opacity: 0;\n}\n\n.token-chip:hover > .token-chip__action,\n.token-chip:focus-within > .token-chip__action {\n opacity: 1;\n}\n\n.token-chip--small > .token-chip__action {\n position: relative;\n top: auto;\n right: auto;\n flex: 0 0 auto;\n margin-left: 2px;\n transform: none;\n}\n";
25
+ const tokenFieldStyles = ".token-field {\n display: flex;\n flex: 1 1 auto;\n align-self: stretch;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n\n.token-field__leading,\n.token-field__trailing {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n color: var(--text-muted);\n}\n\n.token-field__leading {\n justify-content: center;\n}\n\n.token-field__trailing {\n justify-content: flex-end;\n}\n\n.token-field > .popover-listbox,\n.token-field > .select {\n flex: 1;\n min-width: 0;\n}\n\n.token-opacity-input {\n align-self: stretch;\n flex: 0 0 44px;\n width: 44px;\n min-width: 0;\n padding: 0 2px 0 8px;\n border: 0;\n outline: 0;\n background: transparent;\n color: var(--text-muted);\n font: inherit;\n text-align: right;\n}\n\n.token-opacity-input:focus {\n color: var(--text-primary);\n}\n\n.token-color-control {\n position: relative;\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n\n.token-field--color .token-color-control {\n align-self: stretch;\n /* Keep the 28px color slot while centering the 16px swatch in it. */\n padding: 4px 6px;\n}\n\n.token-field--color {\n --token-chip-focus-ring: none;\n}\n\n.token-color-control[data-resolved=\"false\"] .color-swatch {\n background: repeating-conic-gradient(#d8d8d8 0 25%, #ffffff 0 50%) 50% / 8px 8px;\n}\n\n.token-color-control__input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n opacity: 0;\n cursor: pointer;\n}\n\n.token-color-control__input:disabled {\n cursor: not-allowed;\n}\n";
26
+ const tokenDropdownStyles = ".token-dropdown,\n.token-promote {\n display: block;\n min-width: 0;\n}\n";
27
+ const tokensPanelStyles = ".tokens-panel {\n padding: 14px 0 0;\n}\n\n.tokens-panel__tools {\n display: block;\n padding-bottom: 14px;\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.token-group {\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.token-group__heading {\n display: flex;\n justify-content: space-between;\n padding: 14px 0 8px;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-label);\n}\n\n.token-row {\n padding: 10px 0 12px;\n border-top: 1px solid var(--border-subtle);\n}\n\n.token-group__heading + .token-row {\n border-top: 0;\n}\n\n.token-row__inline {\n display: grid;\n grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);\n gap: 8px;\n align-items: center;\n}\n\n.token-row__name {\n min-width: 0;\n color: var(--text-primary);\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n}\n\n.token-variants {\n margin-top: 8px;\n}\n\n.token-variants summary {\n color: var(--text-primary);\n cursor: pointer;\n font-size: 14px;\n font-weight: var(--font-weight-label);\n user-select: none;\n}\n\n.token-variants__list {\n margin-top: 7px;\n padding-left: 10px;\n border-left: 1px solid var(--border-subtle);\n}\n\n.token-variant {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 2px 8px;\n padding: 5px 0;\n color: var(--text-muted);\n font-size: 10px;\n}\n\n.token-variant__context {\n color: var(--text-secondary);\n}\n\n.token-variant > span:last-child {\n grid-column: 1 / -1;\n color: var(--text-muted-subtle);\n}\n\n.tokens-panel__empty {\n padding: 24px 0;\n color: var(--text-muted);\n text-align: center;\n}\n";
28
+ const changesLogStyles = ".changes {\n margin-top: 0;\n border-top: 0;\n padding-top: 24px;\n}\n\n.changes__title {\n display: flex;\n align-items: center;\n gap: 7px;\n width: 100%;\n padding: 10px 0;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: 700;\n cursor: pointer;\n list-style: none;\n}\n\n.changes__title::-webkit-details-marker {\n display: none;\n}\n\n.changes__title-label {\n flex: 1;\n}\n\n.changes__count {\n min-width: 20px;\n padding: 2px 6px;\n border-radius: var(--radius-pill);\n background: var(--surface-control);\n color: var(--text-muted);\n font-size: 11px;\n font-weight: 650;\n line-height: 1.2;\n text-align: center;\n}\n\n.changes__toggle-icon {\n color: var(--text-muted);\n transition: transform 120ms ease;\n}\n\n.changes[open] .changes__toggle-icon {\n transform: rotate(180deg);\n}\n\n.changes__content {\n padding-bottom: 4px;\n}\n\n.changes__session-action {\n display: flex;\n justify-content: flex-end;\n padding: 8px 0 20px;\n}\n\n.changes__session-action .button {\n width: 100%;\n}\n\n.changes__group {\n margin-bottom: 12px;\n padding: 12px;\n background: var(--surface-control);\n border: 0;\n border-radius: 12px;\n}\n\n.changes__group-title {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-bottom: 8px;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: 650;\n}\n\n.changes__group-file {\n color: var(--text-muted);\n font-weight: 400;\n word-break: break-all;\n}\n\n.changes__row {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n padding: 4px 0;\n font-size: var(--font-size-base);\n}\n\n.changes__row + .changes__row {\n margin-top: 8px;\n padding-top: 12px;\n border-top: 1px solid var(--border-subtle);\n}\n\n.changes__prop,\n.changes__before,\n.changes__after {\n word-break: break-all;\n}\n\n.changes__prop {\n color: var(--text-primary);\n}\n\n.changes__before,\n.changes__arrow {\n color: var(--text-muted);\n}\n\n.changes__value {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n width: 100%;\n line-height: 1.4;\n}\n\n.changes__after {\n color: var(--accent);\n}\n\n.changes__conflict {\n color: var(--warning-text);\n font-size: var(--font-size-base);\n}\n\n.changes__source-site,\n.changes__scope,\n.changes__diagnostic {\n color: var(--text-muted);\n font-size: var(--font-size-base);\n}\n\n.changes__diagnostic[data-status=\"overridden\"] {\n color: var(--warning-text);\n}\n\n.changes__diagnostic[data-status=\"applied\"] {\n color: var(--accent);\n}\n\n.changes__revert {\n margin-top: 2px;\n}\n\n.panel__copy[data-copied=\"true\"] {\n background: #2eaf67;\n color: #ffffff;\n}\n";
29
+ const inspectorOverlayStyles = ".hover-outline,\n.selected-outline {\n position: fixed;\n pointer-events: none;\n outline-offset: -2px;\n}\n\n.measurement-overlay {\n position: fixed;\n inset: 0;\n z-index: 0;\n overflow: visible;\n pointer-events: none;\n}\n\n.alignment-guide {\n stroke: rgb(59 130 246 / 46%);\n stroke-dasharray: 3 4;\n stroke-width: 1;\n vector-effect: non-scaling-stroke;\n}\n\n.measurement-ruler {\n stroke: #ef4444;\n stroke-width: 1;\n vector-effect: non-scaling-stroke;\n}\n\n.measurement-projection {\n stroke: #ef4444;\n stroke-dasharray: 4 4;\n stroke-width: 1;\n vector-effect: non-scaling-stroke;\n}\n\n.measurement-label {\n fill: #fff;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 12px;\n font-weight: 600;\n}\n\n.measurement-label-chip {\n fill: #ef4444;\n}\n\n.dom-drop-line {\n z-index: 4;\n height: 3px;\n margin-top: -1px;\n border-radius: 999px;\n background: #3b82f6;\n box-shadow: 0 0 0 1px rgb(255 255 255 / 80%);\n}\n\n.dom-drop-target {\n z-index: 3;\n box-sizing: border-box;\n border: 1px solid rgb(59 130 246 / 72%);\n border-radius: 4px;\n background: rgb(59 130 246 / 5%);\n}\n\n.hover-outline {\n outline: 2px solid var(--accent);\n}\n\n.selected-outline {\n outline: 2px solid var(--accent);\n}\n\n.hover-margin-fill {\n background: rgb(59 130 246 / 14%);\n}\n\n.hover-margin {\n border-color: rgb(59 130 246 / 52%);\n border-style: dotted;\n border-width: 0;\n opacity: 0.72;\n}\n\n.hover-margin[data-axis=\"horizontal\"] {\n border-top-width: 1px;\n}\n\n.hover-margin[data-axis=\"vertical\"] {\n border-left-width: 1px;\n}\n";
30
+ const domNavigationStyles = ".dom-navigation {\n display: grid;\n gap: var(--space-8);\n padding: var(--space-12) 0;\n border-bottom: 1px solid var(--border-subtle);\n}\n\n.dom-navigation__header,\n.dom-navigation__group {\n display: grid;\n gap: var(--space-4);\n}\n\n.dom-navigation__header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--space-8);\n}\n\n.dom-navigation__title,\n.dom-navigation__label {\n color: var(--text-muted-subtle);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-label);\n}\n\n.dom-navigation__items {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-4);\n}\n\n.dom-navigation__item {\n min-width: 0;\n justify-content: flex-start;\n}\n\n.dom-navigation__value {\n overflow: hidden;\n color: var(--text-primary);\n font-weight: var(--font-weight-base);\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n";
31
+ const promptSettingsStyles = ".prompt-settings__backdrop {\n position: fixed;\n inset: 0;\n z-index: 40;\n background: rgb(0 0 0 / 20%);\n pointer-events: auto;\n}\n\n.prompt-settings__popup {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: 41;\n width: min(440px, calc(100vw - 32px));\n max-height: calc(100dvh - 32px);\n overflow-y: auto;\n padding: var(--space-20);\n transform: translate(-50%, -50%);\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-16);\n outline: 0;\n background: var(--surface-raised-2x);\n box-shadow: var(--shadow-popup);\n color: var(--text-primary);\n pointer-events: auto;\n}\n\n.prompt-settings__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-12);\n}\n\n.prompt-settings__title {\n margin: 0;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-label);\n}\n\n.prompt-settings__close.icon-button {\n width: var(--control-height-small);\n height: var(--control-height-small);\n margin: calc(var(--space-4) * -1);\n}\n\n.prompt-settings__description {\n margin: var(--space-8) 0 0;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n line-height: 1.45;\n}\n\n.prompt-settings__field {\n display: grid;\n margin-top: var(--space-20);\n}\n\n.prompt-settings__textarea {\n width: 100%;\n min-height: 136px;\n padding: var(--space-8) var(--space-12);\n resize: vertical;\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-control);\n outline: 0;\n background: var(--surface-control);\n color: var(--text-primary);\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n line-height: 1.5;\n}\n\n.prompt-settings__textarea:hover:not(:focus),\n.prompt-settings__textarea:focus-visible {\n background: var(--surface-control-hover);\n}\n\n.prompt-settings__textarea:focus-visible {\n border-color: var(--accent);\n outline: 2px solid var(--accent);\n outline-offset: -2px;\n}\n\n.prompt-settings__actions {\n display: flex;\n justify-content: flex-end;\n margin-top: var(--space-20);\n}\n";
32
+ const mcpConnectionStyles = ".mcp-connection__backdrop {\n position: fixed;\n inset: 0;\n z-index: 40;\n background: rgb(0 0 0 / 20%);\n pointer-events: auto;\n}\n\n.mcp-connection__popup {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: 41;\n display: grid;\n gap: var(--space-16);\n width: min(560px, calc(100vw - 32px));\n max-height: calc(100dvh - 32px);\n overflow-y: auto;\n padding: var(--space-20);\n transform: translate(-50%, -50%);\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-16);\n outline: 0;\n background: var(--surface-raised-2x);\n box-shadow: var(--shadow-popup);\n color: var(--text-primary);\n pointer-events: auto;\n}\n\n.mcp-connection__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--space-12);\n}\n\n.mcp-connection__title {\n margin: 0;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-label);\n}\n\n.mcp-connection__description,\n.mcp-connection__copy,\n.mcp-connection__error {\n margin: var(--space-8) 0 0;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n line-height: 1.45;\n}\n\n.mcp-connection__close.icon-button {\n width: var(--control-height-small);\n height: var(--control-height-small);\n margin: calc(var(--space-4) * -1);\n}\n\n.mcp-connection__status {\n display: grid;\n gap: var(--space-4);\n}\n\n.mcp-connection__status-label {\n color: inherit;\n font-weight: var(--font-weight-label);\n}\n\n.mcp-connection__status-detail {\n overflow-wrap: anywhere;\n}\n\n.mcp-connection__diagnostics {\n display: grid;\n gap: var(--space-8);\n margin: 0;\n padding: var(--space-12);\n border-radius: var(--radius-control);\n background: var(--surface-control);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n}\n\n.mcp-connection__diagnostic {\n display: grid;\n grid-template-columns: 92px minmax(0, 1fr);\n gap: var(--space-12);\n align-items: baseline;\n}\n\n.mcp-connection__diagnostic dt {\n color: var(--text-muted-subtle);\n}\n\n.mcp-connection__diagnostic dd {\n min-width: 0;\n margin: 0;\n overflow-wrap: anywhere;\n color: var(--text-primary);\n}\n\n.mcp-connection__diagnostic code,\n.mcp-connection__copy code {\n font-family: var(--font-mono);\n}\n\n.mcp-connection__timeline {\n display: grid;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.mcp-connection__timeline-step {\n position: relative;\n display: grid;\n grid-template-columns: var(--control-height-small) minmax(0, 1fr);\n gap: var(--space-12);\n padding-bottom: var(--space-32);\n}\n\n.mcp-connection__timeline-step:last-child {\n padding-bottom: 0;\n}\n\n.mcp-connection__timeline-step:not(:last-child)::before {\n position: absolute;\n top: var(--control-height-small);\n bottom: 0;\n left: calc(var(--control-height-small) / 2 - 0.5px);\n width: 1px;\n background: var(--border-subtle);\n content: \"\";\n}\n\n.mcp-connection__timeline-marker {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--control-height-small);\n height: var(--control-height-small);\n border: 1px solid var(--border-medium);\n border-radius: var(--radius-pill);\n background: var(--surface-raised-2x);\n color: var(--text-secondary);\n font-size: var(--font-size-small);\n font-weight: var(--font-weight-label);\n}\n\n.mcp-connection__timeline-step--complete .mcp-connection__timeline-marker {\n border-color: var(--accent);\n background: var(--accent);\n color: var(--surface-raised-2x);\n}\n\n.mcp-connection__timeline-content {\n display: grid;\n min-width: 0;\n gap: var(--space-8);\n}\n\n.mcp-connection__section-title {\n margin: 0;\n display: flex;\n min-height: var(--control-height-small);\n align-items: center;\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-label);\n}\n\n.mcp-connection__timeline-content .mcp-connection__copy {\n margin-top: 0;\n}\n\n.mcp-connection__command {\n max-width: 100%;\n margin: 0;\n padding: var(--space-12);\n overflow-x: auto;\n border-radius: var(--radius-control);\n background: var(--surface-control);\n color: var(--text-primary);\n font-family: var(--font-mono);\n font-size: var(--font-size-base);\n line-height: 1.5;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n\n.mcp-connection__command-actions {\n display: flex;\n justify-content: flex-start;\n}\n\n.mcp-connection__error {\n margin-top: 0;\n color: var(--danger-text);\n font-size: var(--font-size-small);\n}\n\n.mcp-connection__actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n gap: var(--space-8);\n padding-top: var(--space-4);\n}\n\n.mcp-connection__docs {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-4);\n margin-top: 64px;\n color: var(--text-secondary);\n font-size: var(--font-size-small);\n text-decoration: none;\n}\n\n.mcp-connection__docs:hover,\n.mcp-connection__docs:focus-visible {\n color: var(--text-primary);\n text-decoration: underline;\n}\n\n.mcp-connection__docs:focus-visible {\n outline: 2px solid var(--accent);\n outline-offset: 2px;\n}\n";
33
+ const settingsStyles = ".settings__backdrop {\n position: fixed;\n inset: 0;\n z-index: 40;\n background: rgb(0 0 0 / 20%);\n pointer-events: auto;\n}\n\n.settings__popup {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: 41;\n display: flex;\n flex-direction: column;\n width: min(760px, calc(100vw - 32px));\n height: 70dvh;\n max-height: calc(100dvh - 32px);\n overflow: hidden;\n transform: translate(-50%, -50%);\n border-radius: var(--radius-16);\n outline: 0;\n background: var(--surface-raised-2x);\n box-shadow: var(--shadow-popup);\n color: var(--text-primary);\n pointer-events: auto;\n}\n\n.settings__section-description {\n margin: var(--space-4) 0 0;\n color: var(--text-secondary);\n font-size: 14px;\n font-weight: var(--font-weight-base);\n line-height: 1.45;\n}\n\n.settings__close.icon-button {\n position: absolute;\n top: var(--space-12);\n right: var(--space-12);\n z-index: 1;\n width: var(--control-height-small);\n height: var(--control-height-small);\n margin: 0;\n}\n\n.settings__visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n}\n\n.settings__body {\n display: grid;\n grid-template-columns: 184px minmax(0, 1fr);\n min-height: 0;\n flex: 1 1 auto;\n}\n\n.settings__nav {\n min-width: 0;\n padding: var(--space-16) var(--space-8);\n border-right: 1px solid var(--border-subtle);\n background: var(--surface-panel);\n}\n\n.settings__nav-label {\n display: block;\n padding: 0 var(--space-8) var(--space-8);\n color: var(--text-muted-subtle);\n font-size: var(--font-size-small);\n font-weight: var(--font-weight-label);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.settings__nav-items {\n display: grid;\n gap: var(--space-4);\n}\n\n.settings__nav-item {\n appearance: none;\n display: flex;\n align-items: center;\n gap: var(--space-8);\n width: 100%;\n min-height: var(--control-height-large);\n padding: var(--space-8);\n border: 0;\n border-radius: var(--radius-control);\n background: transparent;\n color: var(--text-secondary);\n cursor: pointer;\n font: inherit;\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-base);\n line-height: 1.35;\n text-align: left;\n}\n\n.settings__nav-item:hover,\n.settings__nav-item:focus-visible {\n background: var(--surface-well);\n color: var(--text-primary);\n}\n\n.settings__nav-item:focus-visible {\n outline: 0;\n box-shadow: inset 0 0 0 2px var(--accent);\n}\n\n.settings__nav-item--active {\n background: var(--surface-well);\n color: var(--text-primary);\n font-weight: var(--font-weight-label);\n}\n\n.settings__nav-item > svg {\n flex: 0 0 auto;\n}\n\n.settings__nav-item-label {\n min-width: 0;\n}\n\n.settings__content {\n min-width: 0;\n overflow-y: auto;\n padding: var(--space-20);\n}\n\n.settings__section {\n min-width: 0;\n}\n\n.settings__section-title {\n margin: 0;\n color: var(--text-primary);\n font-size: 14px;\n font-weight: var(--font-weight-label);\n}\n\n.settings__section > .prompt-settings__field,\n.settings__section > .tokens-panel,\n.settings__section > [data-test=\"mcp-connection-dialog\"] {\n margin-top: var(--space-20);\n}\n\n.settings__section > [data-test=\"mcp-connection-dialog\"] {\n min-width: 0;\n display: grid;\n gap: var(--space-16);\n}\n\n@media (max-width: 560px) {\n .settings__body {\n display: block;\n overflow-y: auto;\n }\n\n .settings__nav {\n overflow-x: auto;\n padding: var(--space-8);\n border-right: 0;\n border-bottom: 1px solid var(--border-subtle);\n }\n\n .settings__nav-label {\n display: none;\n }\n\n .settings__nav-items {\n display: flex;\n min-width: max-content;\n }\n\n .settings__nav-item {\n width: auto;\n }\n\n .settings__content {\n overflow: visible;\n }\n}\n";
34
+ export const UI_STYLES = [
35
+ foundationStyles,
36
+ controlSurfaceStyles,
37
+ atRuleContextStyles,
38
+ fieldRowStyles,
39
+ textInputStyles,
40
+ selectStyles,
41
+ buttonStyles,
42
+ toggleButtonStyles,
43
+ segmentedControlStyles,
44
+ iconButtonStyles,
45
+ statusCalloutStyles,
46
+ colorSwatchStyles,
47
+ popoverListboxStyles,
48
+ inspectorPopoverStyles,
49
+ sideValuesFieldStyles,
50
+ inspectorShellStyles,
51
+ emptyStateStyles,
52
+ styleEditorStyles,
53
+ borderEditorStyles,
54
+ typographyStyles,
55
+ layoutSectionStyles,
56
+ gridPickerStyles,
57
+ layoutComboFieldStyles,
58
+ tokenChipStyles,
59
+ tokenFieldStyles,
60
+ tokenDropdownStyles,
61
+ tokensPanelStyles,
62
+ changesLogStyles,
63
+ inspectorOverlayStyles,
64
+ domNavigationStyles,
65
+ promptSettingsStyles,
66
+ mcpConnectionStyles,
67
+ settingsStyles,
68
+ ].join("\n");
@@ -0,0 +1,7 @@
1
+ /// <reference path="../css/virtual-design-tokens.d.ts" />
2
+
3
+ declare module "virtual:nudge-ui-components" {
4
+ import type { ComponentContract } from "./componentSemantics/types.js";
5
+ export const componentContracts: ComponentContract[];
6
+ export default componentContracts;
7
+ }
@@ -0,0 +1,10 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ /** The inspector runs under Vite in development but does not depend on Vite at runtime. */
4
+ interface ImportMetaEnv {
5
+ readonly DEV: boolean;
6
+ }
7
+
8
+ interface ImportMeta {
9
+ readonly env: ImportMetaEnv;
10
+ }