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,35 @@
1
+ /**
2
+ * Supported `font` shorthand decomposition (plan slice 3.5).
3
+ *
4
+ * One browser-safe Module decomposes the unambiguous typography longhands
5
+ * affected by a `font` shorthand — family, size, style, weight, and
6
+ * line-height. Omitted optional components are represented by their shorthand
7
+ * reset value. System-font shorthands, percentage-sized variants, and complex
8
+ * family/function forms stay raw so the author's meaning is never guessed.
9
+ */
10
+ export declare const FONT_SYSTEM_KEYWORDS: Set<string>;
11
+ export declare const FONT_SIZE_KEYWORDS: Set<string>;
12
+ export declare const FONT_WEIGHT_KEYWORDS: Set<string>;
13
+ export declare const FONT_STYLE_KEYWORDS: Set<string>;
14
+ export interface FontShorthandParts {
15
+ "font-family": string;
16
+ "font-size": string;
17
+ "font-style": string;
18
+ "font-weight": string;
19
+ "line-height": string;
20
+ }
21
+ /**
22
+ * Splits a font shorthand without losing quoted family names or functions.
23
+ * The slash is a token only at top level, which lets us distinguish the
24
+ * optional `font-size / line-height` portion from a slash in a URL/function.
25
+ */
26
+ export declare function splitFontShorthand(value: string): string[];
27
+ export declare function isFontSize(value: string): boolean;
28
+ /**
29
+ * Returns the supported typography longhands affected by an unambiguous
30
+ * `font` shorthand. Omitted optional components are projected as `normal`
31
+ * because a font shorthand resets them; dropping those reset rows would let
32
+ * earlier declarations survive the cascade incorrectly. System-font
33
+ * shorthands and percentage-sized variants remain raw.
34
+ */
35
+ export declare function parseFontShorthand(value: string): FontShorthandParts | null;
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Supported `font` shorthand decomposition (plan slice 3.5).
3
+ *
4
+ * One browser-safe Module decomposes the unambiguous typography longhands
5
+ * affected by a `font` shorthand — family, size, style, weight, and
6
+ * line-height. Omitted optional components are represented by their shorthand
7
+ * reset value. System-font shorthands, percentage-sized variants, and complex
8
+ * family/function forms stay raw so the author's meaning is never guessed.
9
+ */
10
+ export const FONT_SYSTEM_KEYWORDS = new Set([
11
+ "caption", "icon", "menu", "message-box", "small-caption", "status-bar",
12
+ ]);
13
+ export const FONT_SIZE_KEYWORDS = new Set([
14
+ "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large",
15
+ "larger", "smaller",
16
+ ]);
17
+ export const FONT_WEIGHT_KEYWORDS = new Set(["normal", "bold", "bolder", "lighter"]);
18
+ export const FONT_STYLE_KEYWORDS = new Set(["normal", "italic", "oblique"]);
19
+ /**
20
+ * Splits a font shorthand without losing quoted family names or functions.
21
+ * The slash is a token only at top level, which lets us distinguish the
22
+ * optional `font-size / line-height` portion from a slash in a URL/function.
23
+ */
24
+ export function splitFontShorthand(value) {
25
+ const parts = [];
26
+ let start = -1;
27
+ let depth = 0;
28
+ let quote = null;
29
+ for (let index = 0; index < value.length; index++) {
30
+ const char = value[index];
31
+ if (quote) {
32
+ if (char === "\\")
33
+ index++;
34
+ else if (char === quote)
35
+ quote = null;
36
+ continue;
37
+ }
38
+ if (char === "'" || char === '"') {
39
+ quote = char;
40
+ if (start < 0)
41
+ start = index;
42
+ continue;
43
+ }
44
+ if (char === "(") {
45
+ depth++;
46
+ if (start < 0)
47
+ start = index;
48
+ continue;
49
+ }
50
+ if (char === ")") {
51
+ depth = Math.max(0, depth - 1);
52
+ continue;
53
+ }
54
+ if (depth === 0 && (char === "/" || /\s/.test(char))) {
55
+ if (start >= 0) {
56
+ parts.push(value.slice(start, index));
57
+ start = -1;
58
+ }
59
+ if (char === "/")
60
+ parts.push(char);
61
+ continue;
62
+ }
63
+ if (start < 0)
64
+ start = index;
65
+ }
66
+ if (start >= 0)
67
+ parts.push(value.slice(start));
68
+ return parts;
69
+ }
70
+ export function isFontSize(value) {
71
+ const lower = value.toLowerCase();
72
+ return FONT_SIZE_KEYWORDS.has(lower)
73
+ || /^(?:[+-]?(?:\d*\.)?\d+(?:[a-z]+|%)|(?:var|calc|min|max|clamp|env)\()/i.test(value);
74
+ }
75
+ /**
76
+ * Returns the supported typography longhands affected by an unambiguous
77
+ * `font` shorthand. Omitted optional components are projected as `normal`
78
+ * because a font shorthand resets them; dropping those reset rows would let
79
+ * earlier declarations survive the cascade incorrectly. System-font
80
+ * shorthands and percentage-sized variants remain raw.
81
+ */
82
+ export function parseFontShorthand(value) {
83
+ const source = value.trim();
84
+ if (!source || FONT_SYSTEM_KEYWORDS.has(source.toLowerCase()))
85
+ return null;
86
+ const parts = splitFontShorthand(source);
87
+ const sizeIndex = parts.findIndex(isFontSize);
88
+ if (sizeIndex < 0)
89
+ return null;
90
+ const fontSize = parts[sizeIndex];
91
+ // Percentages may be a preceding font-stretch component or the required
92
+ // size. Keep this uncommon form raw rather than choose arbitrarily.
93
+ if (/^[+-]?(?:\d*\.)?\d+%$/.test(fontSize) && sizeIndex > 0)
94
+ return null;
95
+ let cursor = sizeIndex + 1;
96
+ let lineHeight;
97
+ if (parts[cursor] === "/") {
98
+ lineHeight = parts[cursor + 1];
99
+ if (!lineHeight)
100
+ return null;
101
+ cursor += 2;
102
+ }
103
+ const family = parts.slice(cursor).join(" ").trim();
104
+ if (!family)
105
+ return null;
106
+ let weight;
107
+ let style;
108
+ for (const part of parts.slice(0, sizeIndex)) {
109
+ const lower = part.toLowerCase();
110
+ if (!style && FONT_STYLE_KEYWORDS.has(lower)) {
111
+ style = part;
112
+ continue;
113
+ }
114
+ if (!weight && (FONT_WEIGHT_KEYWORDS.has(lower) || /^(?:[1-9]\d{0,2}|1000)$/.test(part))) {
115
+ weight = part;
116
+ continue;
117
+ }
118
+ // Variant, stretch, angle-bearing oblique, duplicate, and unknown prefix
119
+ // components are valid in wider font grammar but outside this supported
120
+ // projection. Keep the whole shorthand conservative instead of dropping
121
+ // their meaning.
122
+ return null;
123
+ }
124
+ return {
125
+ "font-family": family,
126
+ "font-size": fontSize,
127
+ "font-style": style ?? "normal",
128
+ "font-weight": weight ?? "normal",
129
+ "line-height": lineHeight ?? "normal",
130
+ };
131
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Browser-safe value-semantics seam for `nudge-ui/css`.
3
+ *
4
+ * The Interface has three conceptual operations: interpret one authored value,
5
+ * select compatible tokens, and apply a meaning-preserving edit. Token, color,
6
+ * property-family, and structured parsers remain internal Implementation seams.
7
+ * Framework-specific attribution arrives as explicit Adapter facts in the
8
+ * interpretation context.
9
+ *
10
+ * Browser-safe contract: this module imports only the shared model and must
11
+ * never pull React, Vite, PostCSS, Node, or filesystem code into a bundle.
12
+ */
13
+ export { interpretValue } from "./structuredValues.js";
14
+ export type { StructuredField as InterpretedValueField, StructuredValuesContext as ValueSemanticsContext } from "./structuredValues.js";
15
+ export type { Directionality } from "./boxSemantics.js";
16
+ export type { AliasAttribution, AliasInnerResult, TokenInterpretationContext, } from "./tokenInterpretation.js";
17
+ export { selectTokens, TOKEN_GROUP_LABELS, TOKEN_GROUP_ORDER, } from "./propertyPolicy.js";
18
+ export type { CssValueGrammar, TokenCandidate, TokenGroup, TokenSelection, TokenSelectionRequest, TokenSemanticSlot, } from "./propertyPolicy.js";
19
+ export { applyValueEdit, normalizeOpacityPercent } from "./colorSemantics.js";
20
+ export type { ColorEditResult, ValueEditRequest } from "./colorSemantics.js";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Browser-safe value-semantics seam for `nudge-ui/css`.
3
+ *
4
+ * The Interface has three conceptual operations: interpret one authored value,
5
+ * select compatible tokens, and apply a meaning-preserving edit. Token, color,
6
+ * property-family, and structured parsers remain internal Implementation seams.
7
+ * Framework-specific attribution arrives as explicit Adapter facts in the
8
+ * interpretation context.
9
+ *
10
+ * Browser-safe contract: this module imports only the shared model and must
11
+ * never pull React, Vite, PostCSS, Node, or filesystem code into a bundle.
12
+ */
13
+ export { interpretValue } from "./structuredValues.js";
14
+ export { selectTokens, TOKEN_GROUP_LABELS, TOKEN_GROUP_ORDER, } from "./propertyPolicy.js";
15
+ export { applyValueEdit, normalizeOpacityPercent } from "./colorSemantics.js";
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Property/value policy (plan slice 3.3).
3
+ *
4
+ * One implementation owns capability classification, property→semantic-slot
5
+ * knowledge, token presentation grouping, and compatible-token candidate
6
+ * selection for value semantics. Eligibility always uses the resolved concrete
7
+ * value plus browser grammar; a token name is a presentation preference and
8
+ * never grants eligibility.
9
+ *
10
+ * Browser-safe contract: this module imports only the shared model and must
11
+ * never pull React, Vite, PostCSS, Node, or filesystem code into a bundle.
12
+ */
13
+ import type { ColorValueFacts, EditCapability, TokenEntry } from "../model/index.js";
14
+ declare global {
15
+ interface Window {
16
+ CSS?: {
17
+ supports(conditionText: string): boolean;
18
+ supports(property: string, value: string): boolean;
19
+ };
20
+ }
21
+ }
22
+ /** Semantic slot vocabulary for a CSS property. */
23
+ export type TokenSemanticSlot = "color" | "length" | "radius" | "font-family" | "font-size" | "font-weight" | "line-height" | "letter-spacing" | "shadow" | "opacity";
24
+ /** Presentation category for token pickers and catalog rows. */
25
+ export type TokenGroup = "color" | "spacing" | "radius" | "typography" | "shadow" | "generic";
26
+ export declare const TOKEN_GROUP_LABELS: {
27
+ color: string;
28
+ spacing: string;
29
+ radius: string;
30
+ typography: string;
31
+ shadow: string;
32
+ generic: string;
33
+ };
34
+ export declare const TOKEN_GROUP_ORDER: TokenGroup[];
35
+ /** Browser grammar is injectable so the policy stays unit-testable. */
36
+ export interface CssValueGrammar {
37
+ supports(property: string, value: string): boolean;
38
+ }
39
+ export interface TokenPresentation {
40
+ group: TokenGroup;
41
+ label: string;
42
+ }
43
+ export interface TokenCandidate {
44
+ entry: TokenEntry;
45
+ resolvedValue: string;
46
+ color?: ColorValueFacts;
47
+ presentation: TokenPresentation;
48
+ group: TokenGroup;
49
+ isCurrent: boolean;
50
+ }
51
+ export interface TokenCompatibilityRequest {
52
+ /** The selected host element, used to resolve custom properties in its cascade. */
53
+ element?: HTMLElement;
54
+ /** The outer CSS property being edited. */
55
+ property: string;
56
+ /** A scalar slot inside a composite property, such as the color in a shadow. */
57
+ slot?: TokenSemanticSlot;
58
+ entries: readonly TokenEntry[];
59
+ currentToken?: string | null;
60
+ grammar?: CssValueGrammar;
61
+ }
62
+ export interface TokenSelectionRequest {
63
+ /** Omit for presentation-only inventory grouping without eligibility filtering. */
64
+ property?: string;
65
+ slot?: TokenSemanticSlot;
66
+ entries: readonly TokenEntry[];
67
+ currentToken?: string | null;
68
+ element?: HTMLElement;
69
+ grammar?: CssValueGrammar;
70
+ }
71
+ export interface TokenSelection {
72
+ candidates: TokenCandidate[];
73
+ preferredGroup: TokenGroup;
74
+ }
75
+ /**
76
+ * Property knowledge lives here rather than in every picker. It supplies a
77
+ * presentation preference and validation slot; it never filters a candidate
78
+ * merely because of that candidate's name.
79
+ */
80
+ export declare function semanticSlotForProperty(property: string): TokenSemanticSlot | null;
81
+ export declare function groupForProperty(property: string, slot?: TokenSemanticSlot): TokenGroup;
82
+ /**
83
+ * Edit-capability classification for a property and its authored value.
84
+ * Preserves the resolver's original precedence exactly: raw functions first,
85
+ * then spacing families, border structure, colors, atomic var(), composites,
86
+ * then literal atomic values.
87
+ */
88
+ export declare function classifyEditCapability(property: string, value: string): EditCapability;
89
+ /**
90
+ * Name-prefix presentation hint. This is a display preference only: it never
91
+ * makes an invalid value eligible for a slot. `value` is a secondary hint used
92
+ * for concrete values with an unfamiliar name.
93
+ */
94
+ export declare function classifyToken(name: string, value?: string): TokenGroup;
95
+ /**
96
+ * Host-realm grammar factory. Uses the element's window CSS when available,
97
+ * then `globalThis.CSS`, and falls back to a conservative non-browser matcher.
98
+ */
99
+ export declare function browserCssGrammar(element?: HTMLElement): CssValueGrammar;
100
+ /**
101
+ * Presentation may use a name to make familiar token sets easier to scan, but
102
+ * a name never grants eligibility. Unfamiliar concrete colors still group as
103
+ * Color via the same CSS grammar used by the candidate selector.
104
+ */
105
+ export declare function presentationForToken(entry: TokenEntry, grammar?: CssValueGrammar): TokenPresentation;
106
+ /**
107
+ * The single candidate-selection seam for every token-editing control and the
108
+ * inspection bridge. Concrete values are checked in the selected element's
109
+ * cascade, then the browser grammar decides eligibility. Presentation labels
110
+ * only rank results.
111
+ */
112
+ export declare function getCompatibleTokenCandidates(request: TokenCompatibilityRequest): TokenCandidate[];
113
+ /**
114
+ * The public token-selection operation. With a property it returns only
115
+ * browser-compatible candidates; without one it returns presentation metadata
116
+ * for inventory rows without inventing eligibility.
117
+ */
118
+ export declare function selectTokens(request: TokenSelectionRequest): TokenSelection;
@@ -0,0 +1,356 @@
1
+ import { interpretColorValue } from "./colorSemantics.js";
2
+ export const TOKEN_GROUP_LABELS = {
3
+ color: "Color",
4
+ spacing: "Spacing",
5
+ radius: "Radius",
6
+ typography: "Typography",
7
+ shadow: "Shadow",
8
+ generic: "Other",
9
+ };
10
+ export const TOKEN_GROUP_ORDER = [
11
+ "color",
12
+ "spacing",
13
+ "radius",
14
+ "typography",
15
+ "shadow",
16
+ "generic",
17
+ ];
18
+ const COLOR_PROPERTIES = new Set([
19
+ "color",
20
+ "background",
21
+ "background-color",
22
+ "border-color",
23
+ "border-top-color",
24
+ "border-right-color",
25
+ "border-bottom-color",
26
+ "border-left-color",
27
+ "outline-color",
28
+ "fill",
29
+ "stroke",
30
+ "caret-color",
31
+ "column-rule-color",
32
+ "text-decoration-color",
33
+ "text-emphasis-color",
34
+ ]);
35
+ const LENGTH_PROPERTIES = new Set([
36
+ "padding",
37
+ "margin",
38
+ "gap",
39
+ "row-gap",
40
+ "column-gap",
41
+ "border-spacing",
42
+ "width",
43
+ "height",
44
+ "min-width",
45
+ "max-width",
46
+ "min-height",
47
+ "max-height",
48
+ "top",
49
+ "right",
50
+ "bottom",
51
+ "left",
52
+ "inset",
53
+ "inset-block",
54
+ "inset-inline",
55
+ ]);
56
+ const SLOT_PROPERTIES = {
57
+ color: "color",
58
+ length: "margin",
59
+ radius: "border-radius",
60
+ "font-family": "font-family",
61
+ "font-size": "font-size",
62
+ "font-weight": "font-weight",
63
+ "line-height": "line-height",
64
+ "letter-spacing": "letter-spacing",
65
+ shadow: "box-shadow",
66
+ opacity: "opacity",
67
+ };
68
+ function normaliseProperty(property) {
69
+ return property.trim().toLowerCase();
70
+ }
71
+ /**
72
+ * Property knowledge lives here rather than in every picker. It supplies a
73
+ * presentation preference and validation slot; it never filters a candidate
74
+ * merely because of that candidate's name.
75
+ */
76
+ export function semanticSlotForProperty(property) {
77
+ const normalized = normaliseProperty(property);
78
+ if (COLOR_PROPERTIES.has(normalized) || /(^|-)color$/.test(normalized))
79
+ return "color";
80
+ if (normalized === "box-shadow")
81
+ return "shadow";
82
+ if (normalized === "opacity")
83
+ return "opacity";
84
+ if (normalized === "border-radius" || normalized.endsWith("-radius"))
85
+ return "radius";
86
+ if (normalized === "font-family")
87
+ return "font-family";
88
+ if (normalized === "font-size")
89
+ return "font-size";
90
+ if (normalized === "font-weight")
91
+ return "font-weight";
92
+ if (normalized === "line-height")
93
+ return "line-height";
94
+ if (normalized === "letter-spacing")
95
+ return "letter-spacing";
96
+ if (LENGTH_PROPERTIES.has(normalized)
97
+ || /^(?:padding|margin|inset)-(?:top|right|bottom|left|inline|block|inline-start|inline-end|block-start|block-end|horizontal|vertical)$/.test(normalized)
98
+ || (normalized.startsWith("border-") && normalized.endsWith("-width")))
99
+ return "length";
100
+ return null;
101
+ }
102
+ export function groupForProperty(property, slot) {
103
+ const semanticSlot = slot ?? semanticSlotForProperty(property);
104
+ if (semanticSlot === "color")
105
+ return "color";
106
+ if (semanticSlot === "length")
107
+ return "spacing";
108
+ if (semanticSlot === "radius")
109
+ return "radius";
110
+ if (semanticSlot === "shadow")
111
+ return "shadow";
112
+ if (semanticSlot?.startsWith("font") || semanticSlot === "line-height" || semanticSlot === "letter-spacing") {
113
+ return "typography";
114
+ }
115
+ return "generic";
116
+ }
117
+ /**
118
+ * Edit-capability classification for a property and its authored value.
119
+ * Preserves the resolver's original precedence exactly: raw functions first,
120
+ * then spacing families, border structure, colors, atomic var(), composites,
121
+ * then literal atomic values.
122
+ */
123
+ export function classifyEditCapability(property, value) {
124
+ const p = property.toLowerCase();
125
+ const v = value.trim().toLowerCase();
126
+ // Functions whose authored expression cannot be represented faithfully by
127
+ // a numeric side control remain raw even when the property itself is a
128
+ // spacing property. The computed value is still available as a preview.
129
+ if (/\b(?:min|max|clamp|env|anchor-size)\s*\(/.test(v))
130
+ return "raw";
131
+ if (["margin", "padding", "inset", "inset-block", "inset-inline"].includes(p)
132
+ || p.startsWith("margin-") || p.startsWith("padding-") || p.startsWith("inset-"))
133
+ return "box-sides";
134
+ if (p === "border" || p.endsWith("-border") || p === "border-color" || p.endsWith("-border-color"))
135
+ return "structured";
136
+ if (p === "color" || /(^|-)color$/.test(p) || p === "background-color" || p === "fill" || p === "stroke")
137
+ return "color";
138
+ if (/^var\(\s*--[\w-]+(?:\s*,[\s\S]*)?\s*\)$/.test(v))
139
+ return "atomic";
140
+ if (p === "font" || /(gradient|shadow|transform|transition|animation|grid|background)/.test(p)
141
+ || (v.includes(",") && !/^var\(\s*--[\w-]+(?:\s*,[\s\S]*)?\s*\)$/.test(v)))
142
+ return "composite";
143
+ if (/\b(min|max|clamp|color-mix)\s*\(/.test(v))
144
+ return "raw";
145
+ if (/^[+-]?(?:\d*\.)?\d+(?:[a-z%]+)?$/i.test(v)
146
+ || /^(?:#|rgb\(|rgba\(|hsl\(|hsla\(|oklch\(|oklab\(|transparent|currentcolor)/.test(v))
147
+ return "atomic";
148
+ return "raw";
149
+ }
150
+ /**
151
+ * Name-prefix presentation hint. This is a display preference only: it never
152
+ * makes an invalid value eligible for a slot. `value` is a secondary hint used
153
+ * for concrete values with an unfamiliar name.
154
+ */
155
+ export function classifyToken(name, value = "") {
156
+ if (name.startsWith("--color-"))
157
+ return "color";
158
+ if (name.startsWith("--space-"))
159
+ return "spacing";
160
+ if (name.startsWith("--radius-"))
161
+ return "radius";
162
+ if (name.startsWith("--font-") || name.startsWith("--text-") || name.startsWith("--type-")
163
+ || name.startsWith("--leading-") || name.startsWith("--tracking-"))
164
+ return "typography";
165
+ const humanPath = name.toLowerCase();
166
+ if (/(^|\.)(color|colors|surface|background|foreground)(\.|$)/.test(humanPath) || /^(?:#|rgb\(|hsl\(|oklch\(|oklab\(|transparent)/i.test(value.trim()))
167
+ return "color";
168
+ if (/(^|\.)(space|spacing|size|gap)(\.|$)/.test(humanPath))
169
+ return "spacing";
170
+ if (/(^|\.)(font|typography|lineheight|letterspacing)(\.|$)/.test(humanPath))
171
+ return "typography";
172
+ return "generic";
173
+ }
174
+ function tokenVariableName(entry) {
175
+ return entry.cssName ?? entry.name;
176
+ }
177
+ function hasUnresolvedVariable(value) {
178
+ return /\bvar\s*\(/i.test(value);
179
+ }
180
+ function resolveValueInElement(entry, element) {
181
+ const variableName = tokenVariableName(entry);
182
+ if (element && variableName.startsWith("--")) {
183
+ const view = element.ownerDocument.defaultView;
184
+ if (view && typeof view.getComputedStyle === "function") {
185
+ const computed = view.getComputedStyle(element).getPropertyValue(variableName).trim();
186
+ if (computed)
187
+ return computed;
188
+ }
189
+ }
190
+ return entry.value.trim();
191
+ }
192
+ function browserCss(element) {
193
+ const elementCss = element?.ownerDocument.defaultView?.CSS;
194
+ if (elementCss)
195
+ return elementCss;
196
+ return globalThis.CSS;
197
+ }
198
+ function isLength(value) {
199
+ return /^(?:0|[+-]?(?:\d+\.?\d*|\.\d+)(?:%|[a-z]+)|(?:calc|min|max|clamp)\()/i.test(value.trim());
200
+ }
201
+ function isColor(value) {
202
+ return /^(?:#(?:[\da-f]{3,8})|(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color|color-mix)\(|transparent|currentcolor)$/i.test(value.trim());
203
+ }
204
+ function isOpacity(value) {
205
+ return /^[+-]?(?:\d+\.?\d*|\.\d+)(?:%)?$/.test(value.trim());
206
+ }
207
+ /**
208
+ * Modern browsers provide CSS.supports. The small fallback keeps non-browser
209
+ * unit environments conservative and never treats a var() expression as a
210
+ * resolved value.
211
+ */
212
+ function fallbackSupports(property, value) {
213
+ const normalized = normaliseProperty(property);
214
+ if (COLOR_PROPERTIES.has(normalized) || /(^|-)color$/.test(normalized))
215
+ return isColor(value);
216
+ if (normalized === "border-radius")
217
+ return isLength(value);
218
+ if (normalized === "opacity")
219
+ return isOpacity(value);
220
+ if (normalized === "box-shadow")
221
+ return /(?:\d(?:px|rem|em)|\bnone\b)/i.test(value);
222
+ if (normalized === "font-size" || normalized === "line-height" || normalized === "letter-spacing")
223
+ return isLength(value);
224
+ if (normalized === "font-weight")
225
+ return /^(?:normal|bold|[1-9]00)$/i.test(value.trim());
226
+ if (normalized === "font-family")
227
+ return Boolean(value.trim()) && !isColor(value) && !isLength(value);
228
+ if (LENGTH_PROPERTIES.has(normalized) || normalized.startsWith("padding-") || normalized.startsWith("margin-"))
229
+ return isLength(value);
230
+ return false;
231
+ }
232
+ /**
233
+ * Host-realm grammar factory. Uses the element's window CSS when available,
234
+ * then `globalThis.CSS`, and falls back to a conservative non-browser matcher.
235
+ */
236
+ export function browserCssGrammar(element) {
237
+ const css = browserCss(element);
238
+ return {
239
+ supports(property, value) {
240
+ if (hasUnresolvedVariable(value) || !value.trim())
241
+ return false;
242
+ if (typeof css?.supports === "function")
243
+ return css.supports(property, value);
244
+ return fallbackSupports(property, value);
245
+ },
246
+ };
247
+ }
248
+ function nameHint(name) {
249
+ const normalized = name.toLowerCase();
250
+ if (/(?:^|[._-])(?:color|surface|background|foreground|content)(?:[._-]|$)/.test(normalized))
251
+ return "color";
252
+ if (/(?:^|[._-])(?:radius|rounded)(?:[._-]|$)/.test(normalized))
253
+ return "radius";
254
+ if (/(?:^|[._-])(?:font|text|type|typography|leading|tracking|line-height|letter-spacing)(?:[._-]|$)/.test(normalized))
255
+ return "typography";
256
+ if (/(?:^|[._-])shadow(?:[._-]|$)/.test(normalized))
257
+ return "shadow";
258
+ if (/(?:^|[._-])(?:space|spacing|gap|size)(?:[._-]|$)/.test(normalized))
259
+ return "spacing";
260
+ return null;
261
+ }
262
+ /**
263
+ * Presentation may use a name to make familiar token sets easier to scan, but
264
+ * a name never grants eligibility. Unfamiliar concrete colors still group as
265
+ * Color via the same CSS grammar used by the candidate selector.
266
+ */
267
+ export function presentationForToken(entry, grammar = browserCssGrammar()) {
268
+ const value = entry.value.trim();
269
+ const group = !hasUnresolvedVariable(value) && grammar.supports("color", value)
270
+ ? "color"
271
+ : nameHint(entry.name)
272
+ ?? (!hasUnresolvedVariable(value) && grammar.supports("box-shadow", value) ? "shadow" : null)
273
+ ?? (!hasUnresolvedVariable(value) && grammar.supports("margin", value) ? "spacing" : "generic");
274
+ return { group, label: TOKEN_GROUP_LABELS[group] };
275
+ }
276
+ function isCurrentToken(entry, currentToken) {
277
+ return Boolean(currentToken) && (entry.name === currentToken || entry.cssName === currentToken);
278
+ }
279
+ function validationProperty(property, slot) {
280
+ return slot ? SLOT_PROPERTIES[slot] : property;
281
+ }
282
+ function compareCandidates(preferred) {
283
+ return (left, right) => {
284
+ if (left.isCurrent !== right.isCurrent)
285
+ return left.isCurrent ? -1 : 1;
286
+ const leftPreferred = left.group === preferred;
287
+ const rightPreferred = right.group === preferred;
288
+ if (leftPreferred !== rightPreferred)
289
+ return leftPreferred ? -1 : 1;
290
+ return left.entry.name.localeCompare(right.entry.name);
291
+ };
292
+ }
293
+ /**
294
+ * The single candidate-selection seam for every token-editing control and the
295
+ * inspection bridge. Concrete values are checked in the selected element's
296
+ * cascade, then the browser grammar decides eligibility. Presentation labels
297
+ * only rank results.
298
+ */
299
+ export function getCompatibleTokenCandidates(request) {
300
+ const grammar = request.grammar ?? browserCssGrammar(request.element);
301
+ const slot = request.slot ?? semanticSlotForProperty(request.property) ?? undefined;
302
+ const property = validationProperty(request.property, slot);
303
+ const preferredGroup = groupForProperty(request.property, slot);
304
+ return request.entries
305
+ .map((entry) => {
306
+ const resolvedValue = resolveValueInElement(entry, request.element);
307
+ const presentation = presentationForToken({ ...entry, value: resolvedValue }, grammar);
308
+ return {
309
+ entry,
310
+ resolvedValue,
311
+ presentation,
312
+ group: presentation.group,
313
+ isCurrent: isCurrentToken(entry, request.currentToken),
314
+ };
315
+ })
316
+ .filter((candidate) => candidate.isCurrent || (!hasUnresolvedVariable(candidate.resolvedValue)
317
+ && grammar.supports(property, candidate.resolvedValue)))
318
+ .sort(compareCandidates(preferredGroup));
319
+ }
320
+ /**
321
+ * The public token-selection operation. With a property it returns only
322
+ * browser-compatible candidates; without one it returns presentation metadata
323
+ * for inventory rows without inventing eligibility.
324
+ */
325
+ export function selectTokens(request) {
326
+ if (request.property) {
327
+ const slot = request.slot ?? semanticSlotForProperty(request.property) ?? undefined;
328
+ return {
329
+ candidates: getCompatibleTokenCandidates({
330
+ property: request.property,
331
+ entries: request.entries,
332
+ ...(request.element ? { element: request.element } : {}),
333
+ ...(slot ? { slot } : {}),
334
+ ...(request.currentToken !== undefined ? { currentToken: request.currentToken } : {}),
335
+ ...(request.grammar ? { grammar: request.grammar } : {}),
336
+ }),
337
+ preferredGroup: groupForProperty(request.property, slot),
338
+ };
339
+ }
340
+ const grammar = request.grammar ?? browserCssGrammar(request.element);
341
+ return {
342
+ candidates: request.entries.map((entry) => {
343
+ const resolvedValue = resolveValueInElement(entry, request.element);
344
+ const presentation = presentationForToken({ ...entry, value: resolvedValue }, grammar);
345
+ return {
346
+ entry,
347
+ resolvedValue,
348
+ color: interpretColorValue(resolvedValue, { tokenTable: {} }).facts,
349
+ presentation,
350
+ group: presentation.group,
351
+ isCurrent: isCurrentToken(entry, request.currentToken),
352
+ };
353
+ }),
354
+ preferredGroup: "generic",
355
+ };
356
+ }
@@ -0,0 +1,2 @@
1
+ /** A read-only string-array map used for physical side and corner expansion. */
2
+ export type StringArrayMap = Record<string, readonly string[]>;
@@ -0,0 +1 @@
1
+ export {};