@acms-subir/core 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/cli/common.mjs +35 -0
  3. package/cli/legacy.mjs +317 -0
  4. package/cli/main.mjs +66 -0
  5. package/cli/palette.mjs +4 -0
  6. package/cli/preview.mjs +50 -0
  7. package/cli/remote.mjs +55 -0
  8. package/cli/themes.mjs +127 -0
  9. package/cli.mjs +2 -369
  10. package/deploy/Caddyfile +8 -0
  11. package/deploy/Dockerfile +34 -0
  12. package/deploy/compose.https.yml +21 -0
  13. package/deploy/compose.yml +46 -0
  14. package/docs/live-video.md +91 -0
  15. package/docs/theme-authoring.md +103 -0
  16. package/email-runner.mjs +32 -0
  17. package/integration.mjs +189 -2
  18. package/ops-check.mjs +27 -0
  19. package/package.json +27 -5
  20. package/src/actions/index.ts +578 -49
  21. package/src/components/AiCleaner.tsx +291 -0
  22. package/src/components/AiSettings.tsx +575 -0
  23. package/src/components/CommandPalette.tsx +200 -0
  24. package/src/components/ContentList.astro +246 -0
  25. package/src/components/DesignAccess.tsx +182 -0
  26. package/src/components/DesignManager.tsx +418 -46
  27. package/src/components/EmailSettings.tsx +521 -0
  28. package/src/components/EventPage.astro +178 -0
  29. package/src/components/LegalPage.astro +27 -0
  30. package/src/components/LinksManager.tsx +119 -58
  31. package/src/components/LiveCard.astro +174 -0
  32. package/src/components/LiveManager.tsx +910 -0
  33. package/src/components/NavManager.tsx +42 -43
  34. package/src/components/ThemeScript.astro +50 -0
  35. package/src/components/ThemeSections.astro +58 -0
  36. package/src/components/ThemeSectionsEditor.tsx +513 -0
  37. package/src/components/WidgetRenderer.astro +3 -0
  38. package/src/components/booking/BookingFlow.astro +150 -0
  39. package/src/components/booking/HoursEditor.astro +63 -0
  40. package/src/components/builder/PageBuilder.tsx +10 -2
  41. package/src/components/editor/EventPanel.tsx +401 -0
  42. package/src/components/editor/FormatDock.tsx +81 -0
  43. package/src/components/editor/LivePane.tsx +122 -0
  44. package/src/components/editor/MobileToolbar.tsx +93 -0
  45. package/src/components/editor/PostEditor.tsx +605 -223
  46. package/src/components/editor/PreviewOverlay.tsx +242 -43
  47. package/src/components/editor/extensions/calendar.tsx +51 -7
  48. package/src/components/editor/extensions/events.tsx +153 -0
  49. package/src/components/editor/extensions/slash.tsx +7 -1
  50. package/src/components/site/Pager.astro +24 -0
  51. package/src/components/site/PostCard.astro +64 -0
  52. package/src/components/site/TagLabel.astro +11 -0
  53. package/src/layouts/Admin.astro +289 -49
  54. package/src/layouts/Site.astro +352 -59
  55. package/src/lib/agent-api.ts +13 -0
  56. package/src/lib/agent-discovery.ts +40 -0
  57. package/src/lib/agent.ts +114 -0
  58. package/src/lib/ai-config.ts +58 -0
  59. package/src/lib/ai-schema.ts +22 -0
  60. package/src/lib/ai.ts +90 -0
  61. package/src/lib/api-keys.ts +65 -0
  62. package/src/lib/api.ts +56 -0
  63. package/src/lib/auth.ts +25 -5
  64. package/src/lib/backup/content.ts +36 -0
  65. package/src/lib/backup/unzip.ts +12 -1
  66. package/src/lib/backup/zip.ts +1 -1
  67. package/src/lib/booking/agent.ts +108 -0
  68. package/src/lib/booking/availability.ts +221 -0
  69. package/src/lib/booking/emails.ts +115 -0
  70. package/src/lib/booking/forms.ts +77 -0
  71. package/src/lib/booking/service.ts +277 -0
  72. package/src/lib/booking/view.ts +54 -0
  73. package/src/lib/calendar/agent-schema.ts +48 -0
  74. package/src/lib/calendar/agent.ts +136 -0
  75. package/src/lib/calendar/api.ts +81 -0
  76. package/src/lib/calendar/cards.ts +102 -0
  77. package/src/lib/calendar/config.ts +52 -0
  78. package/src/lib/calendar/data.ts +130 -0
  79. package/src/lib/calendar/events.ts +261 -0
  80. package/src/lib/calendar/feeds.ts +43 -0
  81. package/src/lib/calendar/hooks.ts +38 -0
  82. package/src/lib/calendar/http.ts +30 -0
  83. package/src/lib/calendar/ics-write.ts +120 -0
  84. package/src/lib/calendar/ics.ts +15 -5
  85. package/src/lib/calendar/import.ts +203 -0
  86. package/src/lib/calendar/render.ts +120 -37
  87. package/src/lib/calendar/rrule.ts +149 -0
  88. package/src/lib/calendar/seo.ts +48 -0
  89. package/src/lib/design-service.ts +58 -0
  90. package/src/lib/designDiff.ts +145 -0
  91. package/src/lib/designPreview.ts +110 -12
  92. package/src/lib/documents/cleanup.ts +31 -0
  93. package/src/lib/documents/extract.ts +154 -0
  94. package/src/lib/documents/vendor.d.ts +4 -0
  95. package/src/lib/drafts.ts +60 -6
  96. package/src/lib/dynamicBlocks.ts +40 -8
  97. package/src/lib/email/accounts.ts +55 -0
  98. package/src/lib/email/config.ts +86 -0
  99. package/src/lib/email/migration.ts +24 -0
  100. package/src/lib/email/providers.ts +89 -0
  101. package/src/lib/email/service.ts +78 -0
  102. package/src/lib/email/store.ts +167 -0
  103. package/src/lib/email/templates.ts +18 -0
  104. package/src/lib/email/types.ts +32 -0
  105. package/src/lib/email/webhooks.ts +87 -0
  106. package/src/lib/email.ts +15 -0
  107. package/src/lib/env.ts +1 -1
  108. package/src/lib/legal/index.ts +25 -0
  109. package/src/lib/live/client.ts +88 -0
  110. package/src/lib/live/crypto.ts +28 -0
  111. package/src/lib/live/migration.ts +15 -0
  112. package/src/lib/live/providers.ts +152 -0
  113. package/src/lib/live/service.ts +170 -0
  114. package/src/lib/live/signals.ts +89 -0
  115. package/src/lib/live/store.ts +49 -0
  116. package/src/lib/live/types.ts +52 -0
  117. package/src/lib/live/view.ts +78 -0
  118. package/src/lib/mobile/bookings.ts +73 -0
  119. package/src/lib/mobile/calendar.ts +85 -0
  120. package/src/lib/mobile/content.ts +85 -0
  121. package/src/lib/mobile/http.ts +63 -0
  122. package/src/lib/mobile/route.ts +20 -0
  123. package/src/lib/ops.ts +8 -0
  124. package/src/lib/preview.ts +21 -1
  125. package/src/lib/repo/migrations.ts +221 -0
  126. package/src/lib/repo/sql.ts +907 -68
  127. package/src/lib/repo/types.ts +125 -5
  128. package/src/lib/scheduler.ts +27 -0
  129. package/src/lib/schema.ts +316 -1
  130. package/src/lib/search-i18n.ts +3 -0
  131. package/src/lib/socialIcons.ts +32 -0
  132. package/src/lib/tagColor.ts +11 -0
  133. package/src/lib/theme.ts +59 -40
  134. package/src/lib/themeTokens.ts +183 -0
  135. package/src/lib/umami.ts +108 -0
  136. package/src/lib/webhook-sql.ts +68 -0
  137. package/src/lib/webhooks.ts +147 -0
  138. package/src/lib/widgets.ts +1 -0
  139. package/src/middleware.ts +45 -3
  140. package/src/pages/404.astro +23 -0
  141. package/src/pages/[...slug].astro +14 -5
  142. package/src/pages/account/[action].astro +53 -0
  143. package/src/pages/admin/ai.astro +12 -0
  144. package/src/pages/admin/c/[collection]/[id].astro +4 -1
  145. package/src/pages/admin/c/[collection]/index.astro +127 -92
  146. package/src/pages/admin/calendar/bookings.astro +400 -0
  147. package/src/pages/admin/calendar/calendars.astro +265 -0
  148. package/src/pages/admin/calendar/events/[id].astro +56 -0
  149. package/src/pages/admin/calendar/events/index.astro +408 -0
  150. package/src/pages/admin/calendar/index.ts +4 -0
  151. package/src/pages/admin/calendar/integrations.astro +4 -0
  152. package/src/pages/admin/calendar/resources/[id].astro +180 -0
  153. package/src/pages/admin/calendar/resources/index.astro +106 -0
  154. package/src/pages/admin/calendar/resources/link.astro +196 -0
  155. package/src/pages/admin/design.astro +10 -3
  156. package/src/pages/admin/email.astro +13 -0
  157. package/src/pages/admin/index.astro +232 -85
  158. package/src/pages/admin/integrations.astro +237 -0
  159. package/src/pages/admin/links.astro +3 -3
  160. package/src/pages/admin/live.astro +12 -0
  161. package/src/pages/admin/login.astro +14 -10
  162. package/src/pages/admin/navigation.astro +8 -2
  163. package/src/pages/admin/pages/[id].astro +4 -1
  164. package/src/pages/admin/pages/index.astro +41 -48
  165. package/src/pages/admin/settings.astro +418 -367
  166. package/src/pages/admin/tags.astro +4 -4
  167. package/src/pages/admin/users.astro +38 -28
  168. package/src/pages/api/agent/docs.ts +33 -0
  169. package/src/pages/api/agent/index.ts +21 -0
  170. package/src/pages/api/ai/clean.ts +13 -0
  171. package/src/pages/api/ai/draft.ts +14 -0
  172. package/src/pages/api/ai/settings.ts +53 -0
  173. package/src/pages/api/ai/test.ts +12 -0
  174. package/src/pages/api/backup.ts +8 -21
  175. package/src/pages/api/calendar/availability.ts +35 -0
  176. package/src/pages/api/calendar/bookings/[id].ts +49 -0
  177. package/src/pages/api/calendar/bookings/index.ts +73 -0
  178. package/src/pages/api/calendar/calendars.ts +35 -0
  179. package/src/pages/api/calendar/docs.ts +66 -0
  180. package/src/pages/api/calendar/events/[id].ts +63 -0
  181. package/src/pages/api/calendar/events/index.ts +112 -0
  182. package/src/pages/api/calendar/resources.ts +34 -0
  183. package/src/pages/api/design/capabilities.ts +10 -0
  184. package/src/pages/api/design/index.ts +58 -0
  185. package/src/pages/api/design/keys.ts +24 -0
  186. package/src/pages/api/design/media.ts +32 -0
  187. package/src/pages/api/email/run.ts +11 -0
  188. package/src/pages/api/email/settings.ts +61 -0
  189. package/src/pages/api/email/webhooks/[provider].ts +4 -0
  190. package/src/pages/api/live/oauth/youtube/callback.ts +19 -0
  191. package/src/pages/api/live/settings.ts +45 -0
  192. package/src/pages/api/live/status.ts +7 -0
  193. package/src/pages/api/live/thumb.ts +48 -0
  194. package/src/pages/api/mcp.ts +59 -0
  195. package/src/pages/api/media/upload.ts +2 -2
  196. package/src/pages/api/ops/status.ts +39 -0
  197. package/src/pages/api/restore.ts +27 -37
  198. package/src/pages/api/search.ts +18 -4
  199. package/src/pages/api/v1/availability.ts +7 -0
  200. package/src/pages/api/v1/bookings.ts +17 -0
  201. package/src/pages/api/v1/calendars.ts +7 -0
  202. package/src/pages/api/v1/content/[id].ts +7 -0
  203. package/src/pages/api/v1/content/index.ts +7 -0
  204. package/src/pages/api/v1/events.ts +7 -0
  205. package/src/pages/api/v1/resources.ts +7 -0
  206. package/src/pages/api/webhooks/docs.ts +61 -0
  207. package/src/pages/author/[slug].astro +43 -35
  208. package/src/pages/blog/[slug].astro +137 -66
  209. package/src/pages/blog/index.astro +95 -30
  210. package/src/pages/blog/tag/[slug].astro +45 -40
  211. package/src/pages/book/[resource]/[link].astro +70 -0
  212. package/src/pages/book/[resource]/index.astro +63 -0
  213. package/src/pages/book/[resource].ics.ts +38 -0
  214. package/src/pages/book/index.astro +47 -0
  215. package/src/pages/book/manage/[token].astro +108 -0
  216. package/src/pages/calendar/[slug].ics.ts +27 -0
  217. package/src/pages/calendar/feed.ics.ts +15 -0
  218. package/src/pages/calendar/index.astro +191 -0
  219. package/src/pages/embed/book/[resource]/[link].astro +33 -0
  220. package/src/pages/embed/calendar/[slug].astro +43 -0
  221. package/src/pages/events/[slug].astro +74 -0
  222. package/src/pages/events/[slug].ics.ts +25 -0
  223. package/src/pages/index.astro +12 -3
  224. package/src/pages/legal/privacy.astro +4 -0
  225. package/src/pages/legal/terms.astro +4 -0
  226. package/src/pages/links.astro +29 -3
  227. package/src/pages/llms.txt.ts +4 -0
  228. package/src/pages/preview/[type]/[id].astro +27 -6
  229. package/src/pages/search.astro +40 -20
  230. package/src/pages/sitemap.xml.ts +16 -1
  231. package/src/styles/admin.css +924 -105
  232. package/src/styles/cards.css +92 -74
  233. package/src/styles/editor.css +492 -114
  234. package/src/styles/email-settings.css +117 -0
  235. package/src/styles/live-admin.css +126 -0
  236. package/src/styles/live.css +199 -0
  237. package/src/styles/sections.css +12 -0
  238. package/src/styles/site.css +938 -281
  239. package/src/styles/theme-editor.css +135 -0
  240. package/src/theme-sdk/contract.d.mts +619 -0
  241. package/src/theme-sdk/contract.mjs +81 -0
  242. package/src/theme-sdk/index.ts +15 -0
  243. package/src/theme-sdk/tokens.d.mts +148 -0
  244. package/src/theme-sdk/tokens.mjs +55 -0
  245. package/src/themes/editorial/templates/home.astro +4 -4
  246. package/src/themes/editorial/templates/post-minimal.astro +2 -2
  247. package/src/themes/editorial/theme.css +27 -37
  248. package/src/themes/editorial/theme.json +25 -3
  249. package/src/themes/field/theme.json +27 -9
  250. package/src/themes/ink/theme.json +30 -12
  251. package/src/themes/night/theme.css +4 -7
  252. package/src/themes/night/theme.json +28 -10
  253. package/src/virtual.d.ts +14 -0
  254. package/src/worker.ts +5 -1
@@ -0,0 +1,619 @@
1
+ /** @param {Partial<import("zod").infer<typeof ThemeManifest>>} [manifest] */
2
+ export function sectionDefinitions(manifest?: Partial<import("zod").infer<typeof ThemeManifest>>): {
3
+ [x: string]: {
4
+ name: string;
5
+ version: number;
6
+ variants: string[];
7
+ fields: Record<string, {
8
+ label: string;
9
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
10
+ options?: string[] | undefined;
11
+ default?: string | number | undefined;
12
+ }>;
13
+ component?: string | undefined;
14
+ };
15
+ };
16
+ /** @param {import("zod").infer<typeof SectionLayout>} layout
17
+ * @param {Record<string, import("zod").infer<typeof SectionDefinition>>} definitions */
18
+ export function sectionIssues(layout: import("zod").infer<typeof SectionLayout>, definitions: Record<string, import("zod").infer<typeof SectionDefinition>>): {
19
+ id: string;
20
+ message: string;
21
+ }[];
22
+ export { ThemeTokens } from "./tokens.mjs";
23
+ export const THEME_API_VERSION: 1;
24
+ export const Slug: z.ZodString;
25
+ export const Field: z.ZodObject<{
26
+ label: z.ZodString;
27
+ type: z.ZodEnum<["text", "textarea", "image", "url", "select", "number"]>;
28
+ default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
29
+ options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
30
+ }, "strict", z.ZodTypeAny, {
31
+ label: string;
32
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
33
+ options?: string[] | undefined;
34
+ default?: string | number | undefined;
35
+ }, {
36
+ label: string;
37
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
38
+ options?: string[] | undefined;
39
+ default?: string | number | undefined;
40
+ }>;
41
+ export const SectionDefinition: z.ZodObject<{
42
+ name: z.ZodString;
43
+ version: z.ZodDefault<z.ZodNumber>;
44
+ component: z.ZodOptional<z.ZodString>;
45
+ variants: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
46
+ fields: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
47
+ label: z.ZodString;
48
+ type: z.ZodEnum<["text", "textarea", "image", "url", "select", "number"]>;
49
+ default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
50
+ options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
51
+ }, "strict", z.ZodTypeAny, {
52
+ label: string;
53
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
54
+ options?: string[] | undefined;
55
+ default?: string | number | undefined;
56
+ }, {
57
+ label: string;
58
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
59
+ options?: string[] | undefined;
60
+ default?: string | number | undefined;
61
+ }>>>;
62
+ }, "strict", z.ZodTypeAny, {
63
+ name: string;
64
+ version: number;
65
+ variants: string[];
66
+ fields: Record<string, {
67
+ label: string;
68
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
69
+ options?: string[] | undefined;
70
+ default?: string | number | undefined;
71
+ }>;
72
+ component?: string | undefined;
73
+ }, {
74
+ name: string;
75
+ version?: number | undefined;
76
+ component?: string | undefined;
77
+ variants?: string[] | undefined;
78
+ fields?: Record<string, {
79
+ label: string;
80
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
81
+ options?: string[] | undefined;
82
+ default?: string | number | undefined;
83
+ }> | undefined;
84
+ }>;
85
+ /** @type {Record<string, import("zod").infer<typeof SectionDefinition>>} */
86
+ export const BUILTIN_SECTIONS: Record<string, import("zod").infer<typeof SectionDefinition>>;
87
+ export const SectionInstance: z.ZodObject<{
88
+ id: z.ZodString;
89
+ type: z.ZodString;
90
+ version: z.ZodDefault<z.ZodNumber>;
91
+ variant: z.ZodDefault<z.ZodString>;
92
+ hidden: z.ZodDefault<z.ZodBoolean>;
93
+ data: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
94
+ }, "strict", z.ZodTypeAny, {
95
+ type: string;
96
+ version: number;
97
+ id: string;
98
+ variant: string;
99
+ hidden: boolean;
100
+ data: Record<string, string | number>;
101
+ }, {
102
+ type: string;
103
+ id: string;
104
+ version?: number | undefined;
105
+ variant?: string | undefined;
106
+ hidden?: boolean | undefined;
107
+ data?: Record<string, string | number> | undefined;
108
+ }>;
109
+ export const SectionLayout: z.ZodEffects<z.ZodObject<{
110
+ mode: z.ZodDefault<z.ZodEnum<["content", "sections"]>>;
111
+ sections: z.ZodArray<z.ZodObject<{
112
+ id: z.ZodString;
113
+ type: z.ZodString;
114
+ version: z.ZodDefault<z.ZodNumber>;
115
+ variant: z.ZodDefault<z.ZodString>;
116
+ hidden: z.ZodDefault<z.ZodBoolean>;
117
+ data: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
118
+ }, "strict", z.ZodTypeAny, {
119
+ type: string;
120
+ version: number;
121
+ id: string;
122
+ variant: string;
123
+ hidden: boolean;
124
+ data: Record<string, string | number>;
125
+ }, {
126
+ type: string;
127
+ id: string;
128
+ version?: number | undefined;
129
+ variant?: string | undefined;
130
+ hidden?: boolean | undefined;
131
+ data?: Record<string, string | number> | undefined;
132
+ }>, "many">;
133
+ }, "strict", z.ZodTypeAny, {
134
+ sections: {
135
+ type: string;
136
+ version: number;
137
+ id: string;
138
+ variant: string;
139
+ hidden: boolean;
140
+ data: Record<string, string | number>;
141
+ }[];
142
+ mode: "content" | "sections";
143
+ }, {
144
+ sections: {
145
+ type: string;
146
+ id: string;
147
+ version?: number | undefined;
148
+ variant?: string | undefined;
149
+ hidden?: boolean | undefined;
150
+ data?: Record<string, string | number> | undefined;
151
+ }[];
152
+ mode?: "content" | "sections" | undefined;
153
+ }>, {
154
+ sections: {
155
+ type: string;
156
+ version: number;
157
+ id: string;
158
+ variant: string;
159
+ hidden: boolean;
160
+ data: Record<string, string | number>;
161
+ }[];
162
+ mode: "content" | "sections";
163
+ }, {
164
+ sections: {
165
+ type: string;
166
+ id: string;
167
+ version?: number | undefined;
168
+ variant?: string | undefined;
169
+ hidden?: boolean | undefined;
170
+ data?: Record<string, string | number> | undefined;
171
+ }[];
172
+ mode?: "content" | "sections" | undefined;
173
+ }>;
174
+ export const SectionPages: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
175
+ mode: z.ZodDefault<z.ZodEnum<["content", "sections"]>>;
176
+ sections: z.ZodArray<z.ZodObject<{
177
+ id: z.ZodString;
178
+ type: z.ZodString;
179
+ version: z.ZodDefault<z.ZodNumber>;
180
+ variant: z.ZodDefault<z.ZodString>;
181
+ hidden: z.ZodDefault<z.ZodBoolean>;
182
+ data: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
183
+ }, "strict", z.ZodTypeAny, {
184
+ type: string;
185
+ version: number;
186
+ id: string;
187
+ variant: string;
188
+ hidden: boolean;
189
+ data: Record<string, string | number>;
190
+ }, {
191
+ type: string;
192
+ id: string;
193
+ version?: number | undefined;
194
+ variant?: string | undefined;
195
+ hidden?: boolean | undefined;
196
+ data?: Record<string, string | number> | undefined;
197
+ }>, "many">;
198
+ }, "strict", z.ZodTypeAny, {
199
+ sections: {
200
+ type: string;
201
+ version: number;
202
+ id: string;
203
+ variant: string;
204
+ hidden: boolean;
205
+ data: Record<string, string | number>;
206
+ }[];
207
+ mode: "content" | "sections";
208
+ }, {
209
+ sections: {
210
+ type: string;
211
+ id: string;
212
+ version?: number | undefined;
213
+ variant?: string | undefined;
214
+ hidden?: boolean | undefined;
215
+ data?: Record<string, string | number> | undefined;
216
+ }[];
217
+ mode?: "content" | "sections" | undefined;
218
+ }>, {
219
+ sections: {
220
+ type: string;
221
+ version: number;
222
+ id: string;
223
+ variant: string;
224
+ hidden: boolean;
225
+ data: Record<string, string | number>;
226
+ }[];
227
+ mode: "content" | "sections";
228
+ }, {
229
+ sections: {
230
+ type: string;
231
+ id: string;
232
+ version?: number | undefined;
233
+ variant?: string | undefined;
234
+ hidden?: boolean | undefined;
235
+ data?: Record<string, string | number> | undefined;
236
+ }[];
237
+ mode?: "content" | "sections" | undefined;
238
+ }>>;
239
+ export const PostOptions: z.ZodObject<{
240
+ cover: z.ZodDefault<z.ZodEnum<["normal", "full", "overlay", "hidden"]>>;
241
+ showDate: z.ZodDefault<z.ZodBoolean>;
242
+ showReadingTime: z.ZodDefault<z.ZodBoolean>;
243
+ byline: z.ZodDefault<z.ZodBoolean>;
244
+ authorCard: z.ZodDefault<z.ZodBoolean>;
245
+ share: z.ZodDefault<z.ZodBoolean>;
246
+ related: z.ZodDefault<z.ZodBoolean>;
247
+ progress: z.ZodDefault<z.ZodBoolean>;
248
+ toc: z.ZodDefault<z.ZodBoolean>;
249
+ }, "strip", z.ZodTypeAny, {
250
+ cover: "hidden" | "normal" | "full" | "overlay";
251
+ showDate: boolean;
252
+ showReadingTime: boolean;
253
+ byline: boolean;
254
+ authorCard: boolean;
255
+ share: boolean;
256
+ related: boolean;
257
+ progress: boolean;
258
+ toc: boolean;
259
+ }, {
260
+ cover?: "hidden" | "normal" | "full" | "overlay" | undefined;
261
+ showDate?: boolean | undefined;
262
+ showReadingTime?: boolean | undefined;
263
+ byline?: boolean | undefined;
264
+ authorCard?: boolean | undefined;
265
+ share?: boolean | undefined;
266
+ related?: boolean | undefined;
267
+ progress?: boolean | undefined;
268
+ toc?: boolean | undefined;
269
+ }>;
270
+ export const ThemeManifest: z.ZodObject<{
271
+ name: z.ZodString;
272
+ description: z.ZodDefault<z.ZodString>;
273
+ slug: z.ZodOptional<z.ZodString>;
274
+ version: z.ZodDefault<z.ZodString>;
275
+ apiVersion: z.ZodDefault<z.ZodLiteral<1>>;
276
+ core: z.ZodDefault<z.ZodString>;
277
+ author: z.ZodOptional<z.ZodString>;
278
+ license: z.ZodOptional<z.ZodString>;
279
+ tokens: z.ZodDefault<z.ZodObject<{
280
+ bg: z.ZodDefault<z.ZodString>;
281
+ ink: z.ZodDefault<z.ZodString>;
282
+ muted: z.ZodDefault<z.ZodString>;
283
+ line: z.ZodDefault<z.ZodString>;
284
+ accent: z.ZodDefault<z.ZodString>;
285
+ panel: z.ZodDefault<z.ZodString>;
286
+ soft: z.ZodDefault<z.ZodString>;
287
+ accentInk: z.ZodDefault<z.ZodString>;
288
+ button: z.ZodDefault<z.ZodEnum<["ink", "accent"]>>;
289
+ dark: z.ZodDefault<z.ZodObject<{
290
+ bg: z.ZodOptional<z.ZodString>;
291
+ ink: z.ZodOptional<z.ZodString>;
292
+ muted: z.ZodOptional<z.ZodString>;
293
+ line: z.ZodOptional<z.ZodString>;
294
+ accent: z.ZodOptional<z.ZodString>;
295
+ panel: z.ZodOptional<z.ZodString>;
296
+ soft: z.ZodOptional<z.ZodString>;
297
+ }, "strip", z.ZodTypeAny, {
298
+ panel?: string | undefined;
299
+ bg?: string | undefined;
300
+ ink?: string | undefined;
301
+ muted?: string | undefined;
302
+ line?: string | undefined;
303
+ accent?: string | undefined;
304
+ soft?: string | undefined;
305
+ }, {
306
+ panel?: string | undefined;
307
+ bg?: string | undefined;
308
+ ink?: string | undefined;
309
+ muted?: string | undefined;
310
+ line?: string | undefined;
311
+ accent?: string | undefined;
312
+ soft?: string | undefined;
313
+ }>>;
314
+ scheme: z.ZodDefault<z.ZodEnum<["light", "dark", "auto"]>>;
315
+ radius: z.ZodDefault<z.ZodEnum<["sharp", "soft", "round", "smooth"]>>;
316
+ elevation: z.ZodDefault<z.ZodEnum<["flat", "soft", "lifted"]>>;
317
+ density: z.ZodDefault<z.ZodEnum<["compact", "cozy", "airy"]>>;
318
+ headingFont: z.ZodDefault<z.ZodString>;
319
+ bodyFont: z.ZodDefault<z.ZodString>;
320
+ monoFont: z.ZodDefault<z.ZodString>;
321
+ googleFonts: z.ZodDefault<z.ZodString>;
322
+ displayWeight: z.ZodDefault<z.ZodNumber>;
323
+ displayTracking: z.ZodDefault<z.ZodString>;
324
+ baseSize: z.ZodDefault<z.ZodNumber>;
325
+ width: z.ZodDefault<z.ZodNumber>;
326
+ wideWidth: z.ZodDefault<z.ZodNumber>;
327
+ header: z.ZodDefault<z.ZodEnum<["floating", "bar", "minimal", "centered"]>>;
328
+ footer: z.ZodDefault<z.ZodEnum<["columns", "simple"]>>;
329
+ blogLayout: z.ZodDefault<z.ZodEnum<["auto", "cards", "list"]>>;
330
+ }, "strip", z.ZodTypeAny, {
331
+ panel: string;
332
+ bg: string;
333
+ ink: string;
334
+ muted: string;
335
+ line: string;
336
+ accent: string;
337
+ soft: string;
338
+ accentInk: string;
339
+ button: "ink" | "accent";
340
+ dark: {
341
+ panel?: string | undefined;
342
+ bg?: string | undefined;
343
+ ink?: string | undefined;
344
+ muted?: string | undefined;
345
+ line?: string | undefined;
346
+ accent?: string | undefined;
347
+ soft?: string | undefined;
348
+ };
349
+ scheme: "dark" | "light" | "auto";
350
+ radius: "soft" | "sharp" | "round" | "smooth";
351
+ elevation: "flat" | "soft" | "lifted";
352
+ density: "compact" | "cozy" | "airy";
353
+ headingFont: string;
354
+ bodyFont: string;
355
+ monoFont: string;
356
+ googleFonts: string;
357
+ displayWeight: number;
358
+ displayTracking: string;
359
+ baseSize: number;
360
+ width: number;
361
+ wideWidth: number;
362
+ header: "centered" | "floating" | "bar" | "minimal";
363
+ footer: "columns" | "simple";
364
+ blogLayout: "list" | "auto" | "cards";
365
+ }, {
366
+ panel?: string | undefined;
367
+ bg?: string | undefined;
368
+ ink?: string | undefined;
369
+ muted?: string | undefined;
370
+ line?: string | undefined;
371
+ accent?: string | undefined;
372
+ soft?: string | undefined;
373
+ accentInk?: string | undefined;
374
+ button?: "ink" | "accent" | undefined;
375
+ dark?: {
376
+ panel?: string | undefined;
377
+ bg?: string | undefined;
378
+ ink?: string | undefined;
379
+ muted?: string | undefined;
380
+ line?: string | undefined;
381
+ accent?: string | undefined;
382
+ soft?: string | undefined;
383
+ } | undefined;
384
+ scheme?: "dark" | "light" | "auto" | undefined;
385
+ radius?: "soft" | "sharp" | "round" | "smooth" | undefined;
386
+ elevation?: "flat" | "soft" | "lifted" | undefined;
387
+ density?: "compact" | "cozy" | "airy" | undefined;
388
+ headingFont?: string | undefined;
389
+ bodyFont?: string | undefined;
390
+ monoFont?: string | undefined;
391
+ googleFonts?: string | undefined;
392
+ displayWeight?: number | undefined;
393
+ displayTracking?: string | undefined;
394
+ baseSize?: number | undefined;
395
+ width?: number | undefined;
396
+ wideWidth?: number | undefined;
397
+ header?: "centered" | "floating" | "bar" | "minimal" | undefined;
398
+ footer?: "columns" | "simple" | undefined;
399
+ blogLayout?: "list" | "auto" | "cards" | undefined;
400
+ }>>;
401
+ post: z.ZodDefault<z.ZodObject<{
402
+ cover: z.ZodDefault<z.ZodEnum<["normal", "full", "overlay", "hidden"]>>;
403
+ showDate: z.ZodDefault<z.ZodBoolean>;
404
+ showReadingTime: z.ZodDefault<z.ZodBoolean>;
405
+ byline: z.ZodDefault<z.ZodBoolean>;
406
+ authorCard: z.ZodDefault<z.ZodBoolean>;
407
+ share: z.ZodDefault<z.ZodBoolean>;
408
+ related: z.ZodDefault<z.ZodBoolean>;
409
+ progress: z.ZodDefault<z.ZodBoolean>;
410
+ toc: z.ZodDefault<z.ZodBoolean>;
411
+ }, "strip", z.ZodTypeAny, {
412
+ cover: "hidden" | "normal" | "full" | "overlay";
413
+ showDate: boolean;
414
+ showReadingTime: boolean;
415
+ byline: boolean;
416
+ authorCard: boolean;
417
+ share: boolean;
418
+ related: boolean;
419
+ progress: boolean;
420
+ toc: boolean;
421
+ }, {
422
+ cover?: "hidden" | "normal" | "full" | "overlay" | undefined;
423
+ showDate?: boolean | undefined;
424
+ showReadingTime?: boolean | undefined;
425
+ byline?: boolean | undefined;
426
+ authorCard?: boolean | undefined;
427
+ share?: boolean | undefined;
428
+ related?: boolean | undefined;
429
+ progress?: boolean | undefined;
430
+ toc?: boolean | undefined;
431
+ }>>;
432
+ templates: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
433
+ sections: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
434
+ name: z.ZodString;
435
+ version: z.ZodDefault<z.ZodNumber>;
436
+ component: z.ZodOptional<z.ZodString>;
437
+ variants: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
438
+ fields: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
439
+ label: z.ZodString;
440
+ type: z.ZodEnum<["text", "textarea", "image", "url", "select", "number"]>;
441
+ default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
442
+ options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
443
+ }, "strict", z.ZodTypeAny, {
444
+ label: string;
445
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
446
+ options?: string[] | undefined;
447
+ default?: string | number | undefined;
448
+ }, {
449
+ label: string;
450
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
451
+ options?: string[] | undefined;
452
+ default?: string | number | undefined;
453
+ }>>>;
454
+ }, "strict", z.ZodTypeAny, {
455
+ name: string;
456
+ version: number;
457
+ variants: string[];
458
+ fields: Record<string, {
459
+ label: string;
460
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
461
+ options?: string[] | undefined;
462
+ default?: string | number | undefined;
463
+ }>;
464
+ component?: string | undefined;
465
+ }, {
466
+ name: string;
467
+ version?: number | undefined;
468
+ component?: string | undefined;
469
+ variants?: string[] | undefined;
470
+ fields?: Record<string, {
471
+ label: string;
472
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
473
+ options?: string[] | undefined;
474
+ default?: string | number | undefined;
475
+ }> | undefined;
476
+ }>>>;
477
+ assets: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
478
+ }, "strict", z.ZodTypeAny, {
479
+ name: string;
480
+ version: string;
481
+ sections: Record<string, {
482
+ name: string;
483
+ version: number;
484
+ variants: string[];
485
+ fields: Record<string, {
486
+ label: string;
487
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
488
+ options?: string[] | undefined;
489
+ default?: string | number | undefined;
490
+ }>;
491
+ component?: string | undefined;
492
+ }>;
493
+ description: string;
494
+ apiVersion: 1;
495
+ core: string;
496
+ tokens: {
497
+ panel: string;
498
+ bg: string;
499
+ ink: string;
500
+ muted: string;
501
+ line: string;
502
+ accent: string;
503
+ soft: string;
504
+ accentInk: string;
505
+ button: "ink" | "accent";
506
+ dark: {
507
+ panel?: string | undefined;
508
+ bg?: string | undefined;
509
+ ink?: string | undefined;
510
+ muted?: string | undefined;
511
+ line?: string | undefined;
512
+ accent?: string | undefined;
513
+ soft?: string | undefined;
514
+ };
515
+ scheme: "dark" | "light" | "auto";
516
+ radius: "soft" | "sharp" | "round" | "smooth";
517
+ elevation: "flat" | "soft" | "lifted";
518
+ density: "compact" | "cozy" | "airy";
519
+ headingFont: string;
520
+ bodyFont: string;
521
+ monoFont: string;
522
+ googleFonts: string;
523
+ displayWeight: number;
524
+ displayTracking: string;
525
+ baseSize: number;
526
+ width: number;
527
+ wideWidth: number;
528
+ header: "centered" | "floating" | "bar" | "minimal";
529
+ footer: "columns" | "simple";
530
+ blogLayout: "list" | "auto" | "cards";
531
+ };
532
+ post: {
533
+ cover: "hidden" | "normal" | "full" | "overlay";
534
+ showDate: boolean;
535
+ showReadingTime: boolean;
536
+ byline: boolean;
537
+ authorCard: boolean;
538
+ share: boolean;
539
+ related: boolean;
540
+ progress: boolean;
541
+ toc: boolean;
542
+ };
543
+ templates: string[];
544
+ assets: string[];
545
+ slug?: string | undefined;
546
+ author?: string | undefined;
547
+ license?: string | undefined;
548
+ }, {
549
+ name: string;
550
+ version?: string | undefined;
551
+ sections?: Record<string, {
552
+ name: string;
553
+ version?: number | undefined;
554
+ component?: string | undefined;
555
+ variants?: string[] | undefined;
556
+ fields?: Record<string, {
557
+ label: string;
558
+ type: "number" | "text" | "textarea" | "image" | "url" | "select";
559
+ options?: string[] | undefined;
560
+ default?: string | number | undefined;
561
+ }> | undefined;
562
+ }> | undefined;
563
+ description?: string | undefined;
564
+ slug?: string | undefined;
565
+ apiVersion?: 1 | undefined;
566
+ core?: string | undefined;
567
+ author?: string | undefined;
568
+ license?: string | undefined;
569
+ tokens?: {
570
+ panel?: string | undefined;
571
+ bg?: string | undefined;
572
+ ink?: string | undefined;
573
+ muted?: string | undefined;
574
+ line?: string | undefined;
575
+ accent?: string | undefined;
576
+ soft?: string | undefined;
577
+ accentInk?: string | undefined;
578
+ button?: "ink" | "accent" | undefined;
579
+ dark?: {
580
+ panel?: string | undefined;
581
+ bg?: string | undefined;
582
+ ink?: string | undefined;
583
+ muted?: string | undefined;
584
+ line?: string | undefined;
585
+ accent?: string | undefined;
586
+ soft?: string | undefined;
587
+ } | undefined;
588
+ scheme?: "dark" | "light" | "auto" | undefined;
589
+ radius?: "soft" | "sharp" | "round" | "smooth" | undefined;
590
+ elevation?: "flat" | "soft" | "lifted" | undefined;
591
+ density?: "compact" | "cozy" | "airy" | undefined;
592
+ headingFont?: string | undefined;
593
+ bodyFont?: string | undefined;
594
+ monoFont?: string | undefined;
595
+ googleFonts?: string | undefined;
596
+ displayWeight?: number | undefined;
597
+ displayTracking?: string | undefined;
598
+ baseSize?: number | undefined;
599
+ width?: number | undefined;
600
+ wideWidth?: number | undefined;
601
+ header?: "centered" | "floating" | "bar" | "minimal" | undefined;
602
+ footer?: "columns" | "simple" | undefined;
603
+ blogLayout?: "list" | "auto" | "cards" | undefined;
604
+ } | undefined;
605
+ post?: {
606
+ cover?: "hidden" | "normal" | "full" | "overlay" | undefined;
607
+ showDate?: boolean | undefined;
608
+ showReadingTime?: boolean | undefined;
609
+ byline?: boolean | undefined;
610
+ authorCard?: boolean | undefined;
611
+ share?: boolean | undefined;
612
+ related?: boolean | undefined;
613
+ progress?: boolean | undefined;
614
+ toc?: boolean | undefined;
615
+ } | undefined;
616
+ templates?: string[] | undefined;
617
+ assets?: string[] | undefined;
618
+ }>;
619
+ import { z } from 'zod';