@407dev/cms-astro 0.1.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 (212) hide show
  1. package/README.md +69 -0
  2. package/dist/chunk-2TKIQIOE.js +118 -0
  3. package/dist/chunk-2TKIQIOE.js.map +1 -0
  4. package/dist/chunk-53OQ5RXJ.js +912 -0
  5. package/dist/chunk-53OQ5RXJ.js.map +1 -0
  6. package/dist/chunk-56OMNQLH.js +1013 -0
  7. package/dist/chunk-56OMNQLH.js.map +1 -0
  8. package/dist/chunk-5AOOMQ7K.js +1031 -0
  9. package/dist/chunk-5AOOMQ7K.js.map +1 -0
  10. package/dist/chunk-5XRUCFDC.js +743 -0
  11. package/dist/chunk-5XRUCFDC.js.map +1 -0
  12. package/dist/chunk-62ZHCOLZ.js +25 -0
  13. package/dist/chunk-62ZHCOLZ.js.map +1 -0
  14. package/dist/chunk-6AZLRSYA.js +126 -0
  15. package/dist/chunk-6AZLRSYA.js.map +1 -0
  16. package/dist/chunk-6L3ZTCFB.js +14 -0
  17. package/dist/chunk-6L3ZTCFB.js.map +1 -0
  18. package/dist/chunk-6O7ZNNDT.js +697 -0
  19. package/dist/chunk-6O7ZNNDT.js.map +1 -0
  20. package/dist/chunk-6PQIXTMK.js +697 -0
  21. package/dist/chunk-6PQIXTMK.js.map +1 -0
  22. package/dist/chunk-7AW6M7QW.js +1013 -0
  23. package/dist/chunk-7AW6M7QW.js.map +1 -0
  24. package/dist/chunk-7E3XJLKX.js +73 -0
  25. package/dist/chunk-7E3XJLKX.js.map +1 -0
  26. package/dist/chunk-7LM54OTA.js +1031 -0
  27. package/dist/chunk-7LM54OTA.js.map +1 -0
  28. package/dist/chunk-7LMUFCWX.js +126 -0
  29. package/dist/chunk-7LMUFCWX.js.map +1 -0
  30. package/dist/chunk-A3OGL4OX.js +706 -0
  31. package/dist/chunk-A3OGL4OX.js.map +1 -0
  32. package/dist/chunk-AO4UAWOV.js +1030 -0
  33. package/dist/chunk-AO4UAWOV.js.map +1 -0
  34. package/dist/chunk-B4YYLS7Y.js +14 -0
  35. package/dist/chunk-B4YYLS7Y.js.map +1 -0
  36. package/dist/chunk-BDFVGXM2.js +697 -0
  37. package/dist/chunk-BDFVGXM2.js.map +1 -0
  38. package/dist/chunk-CXM7NZVX.js +1031 -0
  39. package/dist/chunk-CXM7NZVX.js.map +1 -0
  40. package/dist/chunk-DMLOBKYE.js +96 -0
  41. package/dist/chunk-DMLOBKYE.js.map +1 -0
  42. package/dist/chunk-DXJSYGS6.js +743 -0
  43. package/dist/chunk-DXJSYGS6.js.map +1 -0
  44. package/dist/chunk-EFUSAQZM.js +72 -0
  45. package/dist/chunk-EFUSAQZM.js.map +1 -0
  46. package/dist/chunk-F7KDGPBN.js +1013 -0
  47. package/dist/chunk-F7KDGPBN.js.map +1 -0
  48. package/dist/chunk-FBSQT45X.js +126 -0
  49. package/dist/chunk-FBSQT45X.js.map +1 -0
  50. package/dist/chunk-FEPDOMVH.js +697 -0
  51. package/dist/chunk-FEPDOMVH.js.map +1 -0
  52. package/dist/chunk-FQDOL2QW.js +25 -0
  53. package/dist/chunk-FQDOL2QW.js.map +1 -0
  54. package/dist/chunk-GB3LGQJM.js +109 -0
  55. package/dist/chunk-GB3LGQJM.js.map +1 -0
  56. package/dist/chunk-HCNP6R3P.js +736 -0
  57. package/dist/chunk-HCNP6R3P.js.map +1 -0
  58. package/dist/chunk-J6WEJDRI.js +743 -0
  59. package/dist/chunk-J6WEJDRI.js.map +1 -0
  60. package/dist/chunk-JHEAPNJ2.js +117 -0
  61. package/dist/chunk-JHEAPNJ2.js.map +1 -0
  62. package/dist/chunk-JOJDJ6GW.js +25 -0
  63. package/dist/chunk-JOJDJ6GW.js.map +1 -0
  64. package/dist/chunk-KTDV6WYB.js +202 -0
  65. package/dist/chunk-KTDV6WYB.js.map +1 -0
  66. package/dist/chunk-KZWJBKPC.js +734 -0
  67. package/dist/chunk-KZWJBKPC.js.map +1 -0
  68. package/dist/chunk-LEAQBGL6.js +109 -0
  69. package/dist/chunk-LEAQBGL6.js.map +1 -0
  70. package/dist/chunk-LGZJL2Q7.js +697 -0
  71. package/dist/chunk-LGZJL2Q7.js.map +1 -0
  72. package/dist/chunk-LQPBU46R.js +109 -0
  73. package/dist/chunk-LQPBU46R.js.map +1 -0
  74. package/dist/chunk-M55NNUTY.js +1013 -0
  75. package/dist/chunk-M55NNUTY.js.map +1 -0
  76. package/dist/chunk-M6NCYCC3.js +1013 -0
  77. package/dist/chunk-M6NCYCC3.js.map +1 -0
  78. package/dist/chunk-MGN7OZAU.js +109 -0
  79. package/dist/chunk-MGN7OZAU.js.map +1 -0
  80. package/dist/chunk-MGYZOX4K.js +1013 -0
  81. package/dist/chunk-MGYZOX4K.js.map +1 -0
  82. package/dist/chunk-MY4IEKJS.js +1031 -0
  83. package/dist/chunk-MY4IEKJS.js.map +1 -0
  84. package/dist/chunk-NCQRGAB4.js +705 -0
  85. package/dist/chunk-NCQRGAB4.js.map +1 -0
  86. package/dist/chunk-NI4NHXI4.js +697 -0
  87. package/dist/chunk-NI4NHXI4.js.map +1 -0
  88. package/dist/chunk-NPI5N7AU.js +14 -0
  89. package/dist/chunk-NPI5N7AU.js.map +1 -0
  90. package/dist/chunk-QN4CPMJF.js +126 -0
  91. package/dist/chunk-QN4CPMJF.js.map +1 -0
  92. package/dist/chunk-QYUVAKMC.js +1013 -0
  93. package/dist/chunk-QYUVAKMC.js.map +1 -0
  94. package/dist/chunk-RAAT6PDT.js +25 -0
  95. package/dist/chunk-RAAT6PDT.js.map +1 -0
  96. package/dist/chunk-RDPO5VPS.js +1013 -0
  97. package/dist/chunk-RDPO5VPS.js.map +1 -0
  98. package/dist/chunk-RQHIW2PF.js +25 -0
  99. package/dist/chunk-RQHIW2PF.js.map +1 -0
  100. package/dist/chunk-RREVHA52.js +722 -0
  101. package/dist/chunk-RREVHA52.js.map +1 -0
  102. package/dist/chunk-S7PT4PZN.js +25 -0
  103. package/dist/chunk-S7PT4PZN.js.map +1 -0
  104. package/dist/chunk-SUXV5M32.js +109 -0
  105. package/dist/chunk-SUXV5M32.js.map +1 -0
  106. package/dist/chunk-SZEORUY6.js +696 -0
  107. package/dist/chunk-SZEORUY6.js.map +1 -0
  108. package/dist/chunk-T7NGGWGY.js +25 -0
  109. package/dist/chunk-T7NGGWGY.js.map +1 -0
  110. package/dist/chunk-UEVWP5VE.js +696 -0
  111. package/dist/chunk-UEVWP5VE.js.map +1 -0
  112. package/dist/chunk-UJNKNP7U.js +748 -0
  113. package/dist/chunk-UJNKNP7U.js.map +1 -0
  114. package/dist/chunk-V4XVFWFI.js +1013 -0
  115. package/dist/chunk-V4XVFWFI.js.map +1 -0
  116. package/dist/chunk-VJU2CIKZ.js +729 -0
  117. package/dist/chunk-VJU2CIKZ.js.map +1 -0
  118. package/dist/chunk-VRQUP5L3.js +202 -0
  119. package/dist/chunk-VRQUP5L3.js.map +1 -0
  120. package/dist/chunk-WBJ5E7CL.js +742 -0
  121. package/dist/chunk-WBJ5E7CL.js.map +1 -0
  122. package/dist/chunk-XJPVYMZM.js +24 -0
  123. package/dist/chunk-XJPVYMZM.js.map +1 -0
  124. package/dist/chunk-Y3Q65C7R.js +14 -0
  125. package/dist/chunk-Y3Q65C7R.js.map +1 -0
  126. package/dist/chunk-YHEGFPTR.js +1030 -0
  127. package/dist/chunk-YHEGFPTR.js.map +1 -0
  128. package/dist/chunk-ZDLBN46C.js +697 -0
  129. package/dist/chunk-ZDLBN46C.js.map +1 -0
  130. package/dist/dev/index.d.ts +122 -0
  131. package/dist/dev/index.js +662 -0
  132. package/dist/dev/index.js.map +1 -0
  133. package/dist/fields/collections.d.ts +18 -0
  134. package/dist/fields/collections.js +37 -0
  135. package/dist/fields/collections.js.map +1 -0
  136. package/dist/index.d.ts +235 -0
  137. package/dist/index.js +956 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/middleware/index.d.ts +8 -0
  140. package/dist/middleware/index.js +13 -0
  141. package/dist/middleware/index.js.map +1 -0
  142. package/dist/preview-BEkLMD6N.d.ts +23 -0
  143. package/dist/preview-D9yewK8x.d.ts +24 -0
  144. package/dist/preview-DJEA4fj7.d.ts +23 -0
  145. package/dist/preview-DeD1Jn7U.d.ts +23 -0
  146. package/dist/toolbar/app.d.ts +28 -0
  147. package/dist/toolbar/app.js +1176 -0
  148. package/dist/toolbar/app.js.map +1 -0
  149. package/dist/types-15jfCQKb.d.ts +141 -0
  150. package/dist/types-BREdL9Gx.d.ts +140 -0
  151. package/dist/types-C6sUZNa2.d.ts +104 -0
  152. package/dist/types-CEYS5Fzc.d.ts +112 -0
  153. package/dist/types-DpeHpobR.d.ts +104 -0
  154. package/dist/types-NaKJe6Pg.d.ts +140 -0
  155. package/package.json +90 -0
  156. package/src/CmsHead.astro +25 -0
  157. package/src/CmsImage.astro +62 -0
  158. package/src/CmsVideo.astro +185 -0
  159. package/src/RichText.astro +32 -0
  160. package/src/client.test.ts +227 -0
  161. package/src/client.ts +164 -0
  162. package/src/dev/config.test.ts +258 -0
  163. package/src/dev/config.ts +319 -0
  164. package/src/dev/index.ts +5 -0
  165. package/src/dev/preview-token.ts +39 -0
  166. package/src/dev/routes.test.ts +354 -0
  167. package/src/dev/routes.ts +245 -0
  168. package/src/dev/token.test.ts +280 -0
  169. package/src/dev/token.ts +201 -0
  170. package/src/dev/verifier.test.ts +63 -0
  171. package/src/dev/verifier.ts +161 -0
  172. package/src/fields/attrs.ts +24 -0
  173. package/src/fields/collection.ts +72 -0
  174. package/src/fields/collections.ts +35 -0
  175. package/src/fields/entryScope.test.ts +62 -0
  176. package/src/fields/entryScope.ts +240 -0
  177. package/src/fields/group.ts +51 -0
  178. package/src/fields/helpers.test.ts +51 -0
  179. package/src/fields/helpers.ts +214 -0
  180. package/src/fields/index.ts +46 -0
  181. package/src/fields/scope.ts +21 -0
  182. package/src/fields/types.ts +119 -0
  183. package/src/head.test.ts +74 -0
  184. package/src/head.ts +123 -0
  185. package/src/image.test.ts +42 -0
  186. package/src/image.ts +64 -0
  187. package/src/index.test.ts +76 -0
  188. package/src/index.ts +13 -0
  189. package/src/integration.ts +218 -0
  190. package/src/jwt.ts +131 -0
  191. package/src/middleware/index.ts +4 -0
  192. package/src/middleware/preview.test.ts +184 -0
  193. package/src/middleware/preview.ts +206 -0
  194. package/src/preview/bridge-script.test.ts +683 -0
  195. package/src/preview/bridge-script.ts +763 -0
  196. package/src/preview/origins.ts +29 -0
  197. package/src/preview.ts +49 -0
  198. package/src/richtext/RichTextNode.astro +130 -0
  199. package/src/richtext/render.ts +248 -0
  200. package/src/richtext.test.ts +139 -0
  201. package/src/runtime/bundle.ts +28 -0
  202. package/src/runtime/store.ts +130 -0
  203. package/src/siteFiles.test.ts +93 -0
  204. package/src/siteFiles.ts +111 -0
  205. package/src/toolbar/app.test.ts +191 -0
  206. package/src/toolbar/app.ts +1091 -0
  207. package/src/toolbar/icon.ts +5 -0
  208. package/src/toolbar/widgets.test.ts +153 -0
  209. package/src/toolbar/widgets.ts +365 -0
  210. package/src/types.test.ts +154 -0
  211. package/src/types.ts +163 -0
  212. package/src/version.ts +3 -0
package/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # @407dev/cms-astro
2
+
3
+ ## Purpose
4
+
5
+ - Astro SDK & integration providing declarative field helpers (`f.text`, `f.img`, `f.richText`, `f.scope`, `f.entryScope`, `f.group`, `f.entries`), ProseMirror `<RichText>` rendering, build-time bundle hydration, preview bridge protocol injection, token-gated draft preview overlays, and an in-browser dev toolbar app for live editing during local development with zero drift.
6
+
7
+ ## Surface
8
+
9
+ - Declarative field helpers & scopes: [src/fields/index.ts](src/fields/index.ts) (`f`, `f.text`, `f.img`, `f.video`, `f.richText`, `f.number`, `f.toggle`, `f.select`, `f.videoList`, `f.geoArea`, `f.addressList`, `f.scope`, `f.entryScope`, `f.group`, `defineCollection`, `collectionPaths`)
10
+ - Collection factories (`@407dev/cms-astro/collections`): [src/fields/collections.ts](src/fields/collections.ts) (`defineEmailCampaignCollection`, `defineSmsCampaignCollection`)
11
+ - Dynamic dual-callable helper generator derived from `@407dev/field-types`: [src/fields/helpers.ts](src/fields/helpers.ts)
12
+ - Scope & key prefixing: [src/fields/scope.ts](src/fields/scope.ts)
13
+ - Entry scoping: [src/fields/entryScope.ts](src/fields/entryScope.ts) (`f.entryScope`)
14
+ - Group definition & accessor binding: [src/fields/group.ts](src/fields/group.ts)
15
+ - Collection handle & routing: [src/fields/collection.ts](src/fields/collection.ts)
16
+ - ProseMirror RichText renderer: [src/RichText.astro](src/RichText.astro) & [src/richtext/render.ts](src/richtext/render.ts)
17
+ - Preview bridge script generator: [src/preview/bridge-script.ts](src/preview/bridge-script.ts)
18
+ - Dev toolbar app & UI: [src/toolbar/app.ts](src/toolbar/app.ts) & [src/toolbar/widgets.ts](src/toolbar/widgets.ts)
19
+ - Dev config & credential gate: [src/dev/config.ts](src/dev/config.ts) & [src/dev/token.ts](src/dev/token.ts)
20
+ - Dev API routes middleware: [src/dev/routes.ts](src/dev/routes.ts)
21
+ - Dev AST verifier service: [src/dev/verifier.ts](src/dev/verifier.ts)
22
+ - Runtime bundle store & AsyncLocalStorage overlay: [src/runtime/store.ts](src/runtime/store.ts) (`getActiveBundle`, `runWithDraftBundle`, `setBuildBundle`)
23
+ - Client factory & bundle fetcher: [src/client.ts](src/client.ts) (`createCmsClient`, `initCmsClient`, `getClient`)
24
+ - Image transforms & srcset: [src/image.ts](src/image.ts)
25
+ - Head & SEO tag builder: [src/head.ts](src/head.ts)
26
+ - Static site file generators: [src/siteFiles.ts](src/siteFiles.ts) (`renderRedirectsFile`, `renderRobotsTxt`, `renderSitemapXml`)
27
+ - Preview middleware & draft bundle retrieval: [src/middleware/preview.ts](src/middleware/preview.ts) & [src/preview.ts](src/preview.ts)
28
+ - Astro integration definition: [src/integration.ts](src/integration.ts) (`cmsAstro`, `cms`)
29
+ - Package entrypoint: [src/index.ts](src/index.ts)
30
+
31
+ ## Patterns
32
+
33
+ - **Usage is the Schema**: Reading `f.text('home.hero.heading')` or `<f.text k="home.hero.heading" />` simultaneously marks the DOM editable region and defines the manifest entry for static extraction.
34
+ - **Dual-Callable Helpers**: Helpers work synchronously as functions (`f.text('key', { defaultValue: '...' })`) returning typed primitives or as Astro JSX components (`<f.text k="key" />`) emitting DOM marker attributes (`data-cms-field`, `data-cms-entry-field`).
35
+ - **Entry Scoping**: `f.entryScope('blog', entry.slug)` creates bound helpers that emit `data-cms-entry-field` for visual click-to-edit inside collection templates.
36
+ - **Group Multiplication**: `f.group` defines reusable multi-field shapes instantiated at different prefixes (`Hero('home.hero')`, `Hero('about.hero')`), passing bound helpers to prop-drilled components.
37
+ - **Preview Bridge Injection**: In preview requests (`/_preview/*?preview_token=...`) and Astro dev mode, the bridge IIFE is injected before `</body>` to handle handshake, capabilities (`capabilities: ['comments']`), click capturing, comment mode click suppression, anchor chain derivation, live `anchor-rects` streaming, outlines, and DOM patching.
38
+ - **Dev-Server Middleware API**: In dev mode (`command === 'dev'`), Vite middleware mounts `/_cms/dev/*` for status, bundle, and draft field writes without polluting production bundles.
39
+ - **Single Bundle Fetch**: Published bundle is fetched once per build and hydrated across all static pages synchronously via store singleton and `.cms/bundle.json`.
40
+ - **Zero-Config Integration**: `cmsAstro()` accepts no arguments, automatically falling back to environment variables `CMS_SITE_ID` and `CMS_CONTENT_URL` populated by `cms link` (preview secrets are never stored on site hosts; preview tokens are verified directly by content-worker).
41
+ - **AsyncLocalStorage Draft Overlay**: `runWithDraftBundle` overlays draft field values and entries inside SSR preview requests without mutating the global store.
42
+
43
+ ## Integrations
44
+
45
+ - Consumes `@407dev/blocks` ([packages/blocks](../blocks)) for deterministic schema hashing and schema parsing.
46
+ - Consumes `@407dev/field-types` ([packages/field-types](../field-types)) for field registry, validation, and link whitelisting.
47
+ - Consumes `@407dev/config` ([packages/config](../config)) for dev tokens and path normalization.
48
+ - Optionally consumes `@407dev/cli` ([packages/cli](../cli)) in dev mode for real-time template AST extraction diagnostics.
49
+ - Consumed by consumer Astro applications (e.g. `examples/demo-site` ([examples/demo-site](../../examples/demo-site))).
50
+
51
+ ## Constraints
52
+
53
+ - Published to public npm with ESM output and `.d.ts` declaration maps via `tsup`.
54
+ - Any export change or signature alteration requires a changeset (`pnpm changeset`).
55
+ - Zero direct database queries — communicates exclusively via edge content and draft HTTP endpoints.
56
+ - Separate preview build topology: preview deployment sets `CMS_PREVIEW_BUILD=1` -> `output: 'server'` + Cloudflare adapter, whereas production builds default to `output: 'static'`. A site may still carry the Cloudflare adapter in a static production build to run other on-demand routes (e.g. `@407dev/site-services`'s injected `/_api/[...path]`) via per-route `prerender: false` — the adapter alone does not make the whole site server-rendered.
57
+ - Dev routes and toolbar code are strictly excluded from production build outputs (`astro build`).
58
+
59
+ ## Gotchas
60
+
61
+ - `CMS_DEV_TOKEN` is never exposed to the client or injected into `vite.define`; it is used exclusively by dev-server middleware for write-plane authorization.
62
+ - In Astro preview middleware, `context.rewrite(targetPath)` must be returned directly to render the rewritten route; discarding its return value results in rendering nonexistent `/_preview/*` routes.
63
+ - When rendering group fields in prop-drilled components, use bound accessors (`content.heading`) and spread `{...content.attrs()}` — do not call `f.text('literal')` internally inside shared components.
64
+ - Invalid or expired preview tokens return `404 Not Found` (never exposing error details or unauthenticated drafts).
65
+ - Preview responses must always be served with `Cache-Control: no-store` and `X-Robots-Tag: noindex`.
66
+ - When mutating the DOM during in-place toolbar saves, MutationObservers are paused to avoid triggering re-entrant rescan loops.
67
+ - Preview bridge and dev status editor origins are configured via `CMS_EDITOR_ORIGINS` (comma-separated) or explicit `editorOrigins` integration options; defaults to allowing both `https://web.localhost` and `http://localhost:5173`.
68
+ - The injected preview bridge automatically suppresses the Astro dev toolbar (`astro-dev-toolbar { display: none !important; }`) when loaded inside an `<iframe>` (editor preview).
69
+ - Comment mode cursor and click interception takes precedence over visual edit mode and link navigation whenever `data-cms-comment-mode` is set on `document.documentElement`.
@@ -0,0 +1,118 @@
1
+ // ../design-tokens/src/tokens.ts
2
+ var darkTokens = {
3
+ // Surfaces
4
+ background: "#0a0a0a",
5
+ // neutral-950
6
+ card: "#171717",
7
+ // neutral-900
8
+ cardForeground: "#f5f5f5",
9
+ // neutral-100
10
+ popover: "#171717",
11
+ popoverForeground: "#f5f5f5",
12
+ muted: "#262626",
13
+ // neutral-800
14
+ mutedForeground: "#a3a3a3",
15
+ // neutral-400
16
+ mutedStrong: "#404040",
17
+ // neutral-700
18
+ sunken: "#0a0a0a",
19
+ // neutral-950
20
+ secondary: "#262626",
21
+ secondaryForeground: "#f5f5f5",
22
+ accent: "#262626",
23
+ accentForeground: "#f5f5f5",
24
+ // Text
25
+ foreground: "#f5f5f5",
26
+ // neutral-100
27
+ foregroundSecondary: "#d4d4d4",
28
+ // neutral-300
29
+ foregroundSubtle: "#737373",
30
+ // neutral-500
31
+ // Borders
32
+ border: "#262626",
33
+ // neutral-800
34
+ borderStrong: "#404040",
35
+ // neutral-700
36
+ input: "#404040",
37
+ // neutral-700
38
+ outlineHalo: "#262626",
39
+ ring: "#6366f1",
40
+ // indigo-500
41
+ // Brand: Primary
42
+ primary: "#6366f1",
43
+ // indigo-500
44
+ primaryForeground: "#ffffff",
45
+ primaryText: "#a5b4fc",
46
+ // indigo-300
47
+ primaryMuted: "#1e1b4b",
48
+ // indigo-950
49
+ primaryBorder: "#3730a3",
50
+ // indigo-800
51
+ // Status: Success
52
+ success: "#34d399",
53
+ // emerald-400
54
+ successForeground: "#022c22",
55
+ successText: "#6ee7b7",
56
+ // emerald-300
57
+ successMuted: "#022c22",
58
+ // emerald-950
59
+ successBorder: "#065f46",
60
+ // emerald-800
61
+ // Status: Warning
62
+ warning: "#fbbf24",
63
+ // amber-400
64
+ warningForeground: "#451a03",
65
+ warningText: "#fcd34d",
66
+ // amber-300
67
+ warningMuted: "#451a03",
68
+ // amber-950
69
+ warningBorder: "#92400e",
70
+ // amber-800
71
+ // Status: Destructive
72
+ destructive: "#ef4444",
73
+ // red-500
74
+ destructiveForeground: "#ffffff",
75
+ destructiveText: "#fca5a5",
76
+ // red-300
77
+ destructiveMuted: "#450a0a",
78
+ // red-950
79
+ destructiveBorder: "#991b1b",
80
+ // red-800
81
+ // Status: Info
82
+ info: "#60a5fa",
83
+ // blue-400
84
+ infoForeground: "#ffffff",
85
+ infoText: "#93c5fd",
86
+ // blue-300
87
+ infoMuted: "#172554",
88
+ // blue-950
89
+ infoBorder: "#1e40af",
90
+ // blue-800
91
+ // Sidebar
92
+ sidebar: "#171717",
93
+ sidebarForeground: "#f5f5f5",
94
+ sidebarPrimary: "#6366f1",
95
+ sidebarPrimaryForeground: "#ffffff",
96
+ sidebarAccent: "#262626",
97
+ sidebarAccentForeground: "#f5f5f5",
98
+ sidebarBorder: "#262626",
99
+ sidebarRing: "#6366f1",
100
+ // Charts
101
+ chart1: "#6366f1",
102
+ // Brand Indigo
103
+ chart2: "#34d399",
104
+ // Emerald
105
+ chart3: "#fbbf24",
106
+ // Amber
107
+ chart4: "#a78bfa",
108
+ // Violet
109
+ chart5: "#38bdf8"
110
+ // Sky
111
+ };
112
+ var chromeTokens = {
113
+ ...darkTokens
114
+ };
115
+
116
+ export { chromeTokens };
117
+ //# sourceMappingURL=chunk-2TKIQIOE.js.map
118
+ //# sourceMappingURL=chunk-2TKIQIOE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../design-tokens/src/tokens.ts"],"names":[],"mappings":";AA+IO,IAAM,UAAA,GAA+B;AAAA;AAAA,EAE1C,UAAA,EAAY,SAAA;AAAA;AAAA,EACZ,IAAA,EAAM,SAAA;AAAA;AAAA,EACN,cAAA,EAAgB,SAAA;AAAA;AAAA,EAChB,OAAA,EAAS,SAAA;AAAA,EACT,iBAAA,EAAmB,SAAA;AAAA,EACnB,KAAA,EAAO,SAAA;AAAA;AAAA,EACP,eAAA,EAAiB,SAAA;AAAA;AAAA,EACjB,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,SAAA,EAAW,SAAA;AAAA,EACX,mBAAA,EAAqB,SAAA;AAAA,EACrB,MAAA,EAAQ,SAAA;AAAA,EACR,gBAAA,EAAkB,SAAA;AAAA;AAAA,EAGlB,UAAA,EAAY,SAAA;AAAA;AAAA,EACZ,mBAAA,EAAqB,SAAA;AAAA;AAAA,EACrB,gBAAA,EAAkB,SAAA;AAAA;AAAA;AAAA,EAGlB,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,YAAA,EAAc,SAAA;AAAA;AAAA,EACd,KAAA,EAAO,SAAA;AAAA;AAAA,EACP,WAAA,EAAa,SAAA;AAAA,EACb,IAAA,EAAM,SAAA;AAAA;AAAA;AAAA,EAGN,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,iBAAA,EAAmB,SAAA;AAAA,EACnB,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA;AAAA;AAAA,EAGf,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,iBAAA,EAAmB,SAAA;AAAA,EACnB,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA;AAAA;AAAA,EAGf,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,iBAAA,EAAmB,SAAA;AAAA,EACnB,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA;AAAA;AAAA,EAGf,WAAA,EAAa,SAAA;AAAA;AAAA,EACb,qBAAA,EAAuB,SAAA;AAAA,EACvB,eAAA,EAAiB,SAAA;AAAA;AAAA,EACjB,gBAAA,EAAkB,SAAA;AAAA;AAAA,EAClB,iBAAA,EAAmB,SAAA;AAAA;AAAA;AAAA,EAGnB,IAAA,EAAM,SAAA;AAAA;AAAA,EACN,cAAA,EAAgB,SAAA;AAAA,EAChB,QAAA,EAAU,SAAA;AAAA;AAAA,EACV,SAAA,EAAW,SAAA;AAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA;AAAA;AAAA,EAGZ,OAAA,EAAS,SAAA;AAAA,EACT,iBAAA,EAAmB,SAAA;AAAA,EACnB,cAAA,EAAgB,SAAA;AAAA,EAChB,wBAAA,EAA0B,SAAA;AAAA,EAC1B,aAAA,EAAe,SAAA;AAAA,EACf,uBAAA,EAAyB,SAAA;AAAA,EACzB,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EAAa,SAAA;AAAA;AAAA,EAGb,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,MAAA,EAAQ;AAAA;AACV,CAAA;AAMO,IAAM,YAAA,GAAiC;AAAA,EAC5C,GAAG;AACL","file":"chunk-2TKIQIOE.js","sourcesContent":["export interface ThemeColorTokens {\n background: string;\n card: string;\n cardForeground: string;\n popover: string;\n popoverForeground: string;\n muted: string;\n mutedForeground: string;\n mutedStrong: string;\n sunken: string;\n secondary: string;\n secondaryForeground: string;\n accent: string;\n accentForeground: string;\n foreground: string;\n foregroundSecondary: string;\n foregroundSubtle: string;\n border: string;\n borderStrong: string;\n input: string;\n outlineHalo: string;\n ring: string;\n primary: string;\n primaryForeground: string;\n primaryText: string;\n primaryMuted: string;\n primaryBorder: string;\n success: string;\n successForeground: string;\n successText: string;\n successMuted: string;\n successBorder: string;\n warning: string;\n warningForeground: string;\n warningText: string;\n warningMuted: string;\n warningBorder: string;\n destructive: string;\n destructiveForeground: string;\n destructiveText: string;\n destructiveMuted: string;\n destructiveBorder: string;\n info: string;\n infoForeground: string;\n infoText: string;\n infoMuted: string;\n infoBorder: string;\n sidebar: string;\n sidebarForeground: string;\n sidebarPrimary: string;\n sidebarPrimaryForeground: string;\n sidebarAccent: string;\n sidebarAccentForeground: string;\n sidebarBorder: string;\n sidebarRing: string;\n chart1: string;\n chart2: string;\n chart3: string;\n chart4: string;\n chart5: string;\n}\n\nexport const lightTokens: ThemeColorTokens = {\n // Surfaces\n background: '#f6f6f6',\n card: '#ffffff',\n cardForeground: '#171717',\n popover: '#ffffff',\n popoverForeground: '#171717',\n muted: '#f0f0f0',\n mutedForeground: '#6b6b6b',\n mutedStrong: '#e4e4e4',\n sunken: '#f0f0f0',\n secondary: '#f0f0f0',\n secondaryForeground: '#171717',\n accent: '#f0f0f0',\n accentForeground: '#171717',\n\n // Text\n foreground: '#171717',\n foregroundSecondary: '#4a4a4a',\n foregroundSubtle: '#8a8a8a',\n\n // Borders\n border: '#e4e4e4',\n borderStrong: '#bfbfbf',\n input: '#bfbfbf',\n outlineHalo: '#f0f0f0',\n ring: '#0091ff',\n\n // Brand: Primary\n primary: '#0091ff',\n primaryForeground: '#ffffff',\n primaryText: '#006ec2',\n primaryMuted: '#ebf6ff',\n primaryBorder: '#b3e0ff',\n\n // Status: Success\n success: '#059669',\n successForeground: '#ffffff',\n successText: '#047857',\n successMuted: '#ecfdf5',\n successBorder: '#a7f3d0',\n\n // Status: Warning\n warning: '#d97706',\n warningForeground: '#ffffff',\n warningText: '#b45309',\n warningMuted: '#fffbeb',\n warningBorder: '#fde68a',\n\n // Status: Destructive\n destructive: '#dc2626',\n destructiveForeground: '#ffffff',\n destructiveText: '#b91c1c',\n destructiveMuted: '#fef2f2',\n destructiveBorder: '#fecaca',\n\n // Status: Info\n info: '#2563eb',\n infoForeground: '#ffffff',\n infoText: '#1d4ed8',\n infoMuted: '#eff6ff',\n infoBorder: '#bfdbfe',\n\n // Sidebar\n sidebar: '#ffffff',\n sidebarForeground: '#171717',\n sidebarPrimary: '#0091ff',\n sidebarPrimaryForeground: '#ffffff',\n sidebarAccent: '#f0f0f0',\n sidebarAccentForeground: '#171717',\n sidebarBorder: '#e4e4e4',\n sidebarRing: '#0091ff',\n\n // Charts\n chart1: '#0091ff',\n chart2: '#10b981',\n chart3: '#f59e0b',\n chart4: '#8b5cf6',\n chart5: '#f43f5e',\n};\n\nexport const darkTokens: ThemeColorTokens = {\n // Surfaces\n background: '#0a0a0a', // neutral-950\n card: '#171717', // neutral-900\n cardForeground: '#f5f5f5', // neutral-100\n popover: '#171717',\n popoverForeground: '#f5f5f5',\n muted: '#262626', // neutral-800\n mutedForeground: '#a3a3a3', // neutral-400\n mutedStrong: '#404040', // neutral-700\n sunken: '#0a0a0a', // neutral-950\n secondary: '#262626',\n secondaryForeground: '#f5f5f5',\n accent: '#262626',\n accentForeground: '#f5f5f5',\n\n // Text\n foreground: '#f5f5f5', // neutral-100\n foregroundSecondary: '#d4d4d4', // neutral-300\n foregroundSubtle: '#737373', // neutral-500\n\n // Borders\n border: '#262626', // neutral-800\n borderStrong: '#404040', // neutral-700\n input: '#404040', // neutral-700\n outlineHalo: '#262626',\n ring: '#6366f1', // indigo-500\n\n // Brand: Primary\n primary: '#6366f1', // indigo-500\n primaryForeground: '#ffffff',\n primaryText: '#a5b4fc', // indigo-300\n primaryMuted: '#1e1b4b', // indigo-950\n primaryBorder: '#3730a3', // indigo-800\n\n // Status: Success\n success: '#34d399', // emerald-400\n successForeground: '#022c22',\n successText: '#6ee7b7', // emerald-300\n successMuted: '#022c22', // emerald-950\n successBorder: '#065f46', // emerald-800\n\n // Status: Warning\n warning: '#fbbf24', // amber-400\n warningForeground: '#451a03',\n warningText: '#fcd34d', // amber-300\n warningMuted: '#451a03', // amber-950\n warningBorder: '#92400e', // amber-800\n\n // Status: Destructive\n destructive: '#ef4444', // red-500\n destructiveForeground: '#ffffff',\n destructiveText: '#fca5a5', // red-300\n destructiveMuted: '#450a0a', // red-950\n destructiveBorder: '#991b1b', // red-800\n\n // Status: Info\n info: '#60a5fa', // blue-400\n infoForeground: '#ffffff',\n infoText: '#93c5fd', // blue-300\n infoMuted: '#172554', // blue-950\n infoBorder: '#1e40af', // blue-800\n\n // Sidebar\n sidebar: '#171717',\n sidebarForeground: '#f5f5f5',\n sidebarPrimary: '#6366f1',\n sidebarPrimaryForeground: '#ffffff',\n sidebarAccent: '#262626',\n sidebarAccentForeground: '#f5f5f5',\n sidebarBorder: '#262626',\n sidebarRing: '#6366f1',\n\n // Charts\n chart1: '#6366f1', // Brand Indigo\n chart2: '#34d399', // Emerald\n chart3: '#fbbf24', // Amber\n chart4: '#a78bfa', // Violet\n chart5: '#38bdf8', // Sky\n};\n\n/**\n * Chrome tokens match dark tokens for tool surfaces (site editor shell & preview canvas)\n * so that editor chrome stays dark regardless of active page theme.\n */\nexport const chromeTokens: ThemeColorTokens = {\n ...darkTokens,\n};\n\nexport const tokens = {\n light: lightTokens,\n dark: darkTokens,\n chrome: chromeTokens,\n} as const;\n\nexport const typography = {\n text3xs: { fontSize: '0.625rem', lineHeight: '0.875rem' }, // 10px / 14px\n text2xs: { fontSize: '0.6875rem', lineHeight: '1rem' }, // 11px / 16px\n textXs: { fontSize: '0.75rem', lineHeight: '1rem' }, // 12px / 16px\n textSm: { fontSize: '0.875rem', lineHeight: '1.25rem' }, // 14px / 20px\n} as const;\n\nexport const radii = {\n radius: '0.625rem',\n sm: 'calc(0.625rem * 0.6)',\n md: 'calc(0.625rem * 0.8)',\n lg: '0.625rem',\n xl: 'calc(0.625rem * 1.4)',\n '2xl': 'calc(0.625rem * 1.8)',\n '3xl': 'calc(0.625rem * 2.2)',\n '4xl': 'calc(0.625rem * 2.6)',\n} as const;\n"]}