@mdwrk/extension-theme-studio 1.0.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 (58) hide show
  1. package/README.md +21 -0
  2. package/dist/components/ThemeStudioView.d.ts +9 -0
  3. package/dist/components/ThemeStudioView.d.ts.map +1 -0
  4. package/dist/components/ThemeStudioView.js +75 -0
  5. package/dist/components/ThemeStudioView.js.map +1 -0
  6. package/dist/constants.d.ts +16 -0
  7. package/dist/constants.d.ts.map +1 -0
  8. package/dist/constants.js +29 -0
  9. package/dist/constants.js.map +1 -0
  10. package/dist/createThemeStudioBundledEntry.d.ts +3 -0
  11. package/dist/createThemeStudioBundledEntry.d.ts.map +1 -0
  12. package/dist/createThemeStudioBundledEntry.js +72 -0
  13. package/dist/createThemeStudioBundledEntry.js.map +1 -0
  14. package/dist/export.d.ts +12 -0
  15. package/dist/export.d.ts.map +1 -0
  16. package/dist/export.js +96 -0
  17. package/dist/export.js.map +1 -0
  18. package/dist/i18n.d.ts +82 -0
  19. package/dist/i18n.d.ts.map +1 -0
  20. package/dist/i18n.js +93 -0
  21. package/dist/i18n.js.map +1 -0
  22. package/dist/index.d.ts +11 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +11 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/locales/en.d.ts +7 -0
  27. package/dist/locales/en.d.ts.map +1 -0
  28. package/dist/locales/en.js +27 -0
  29. package/dist/locales/en.js.map +1 -0
  30. package/dist/locales/es.d.ts +7 -0
  31. package/dist/locales/es.d.ts.map +1 -0
  32. package/dist/locales/es.js +27 -0
  33. package/dist/locales/es.js.map +1 -0
  34. package/dist/manifest.d.ts +4 -0
  35. package/dist/manifest.d.ts.map +1 -0
  36. package/dist/manifest.js +155 -0
  37. package/dist/manifest.js.map +1 -0
  38. package/dist/relationship.d.ts +4 -0
  39. package/dist/relationship.d.ts.map +1 -0
  40. package/dist/relationship.js +18 -0
  41. package/dist/relationship.js.map +1 -0
  42. package/dist/service.d.ts +3 -0
  43. package/dist/service.d.ts.map +1 -0
  44. package/dist/service.js +216 -0
  45. package/dist/service.js.map +1 -0
  46. package/dist/settings.d.ts +4 -0
  47. package/dist/settings.d.ts.map +1 -0
  48. package/dist/settings.js +19 -0
  49. package/dist/settings.js.map +1 -0
  50. package/dist/types.d.ts +79 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +2 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/version.d.ts +2 -0
  55. package/dist/version.d.ts.map +1 -0
  56. package/dist/version.js +2 -0
  57. package/dist/version.js.map +1 -0
  58. package/package.json +93 -0
@@ -0,0 +1,216 @@
1
+ import { buildThemeStudioExports, sanitizePackageName, sanitizeThemeIdentifier } from "./export.js";
2
+ import { themeStudioLabels } from "./i18n.js";
3
+ import { buildThemeStudioClassRelationships } from "./relationship.js";
4
+ import { readThemeStudioSettings } from "./settings.js";
5
+ const createSnapshot = () => ({
6
+ busy: false,
7
+ tokenDefinitions: [],
8
+ classDefinitions: [],
9
+ rendererBridge: [],
10
+ editorBridge: [],
11
+ currentTokens: null,
12
+ draftTokens: {},
13
+ relationships: [],
14
+ metadata: {
15
+ themeId: "custom-theme",
16
+ themeName: "Custom Theme",
17
+ packageName: "@mdwrk/theme-custom-theme",
18
+ author: "Markdown Workspace",
19
+ description: "Portable Markdown Workspace theme generated by Theme Studio.",
20
+ },
21
+ lastExports: null,
22
+ infoMessage: null,
23
+ lastError: null,
24
+ });
25
+ function mergeTokens(current, draft) {
26
+ return Object.freeze({ ...(current ?? {}), ...draft });
27
+ }
28
+ export function createThemeStudioService(deps) {
29
+ let snapshot = createSnapshot();
30
+ const listeners = new Set();
31
+ const emit = () => {
32
+ for (const listener of Array.from(listeners)) {
33
+ listener();
34
+ }
35
+ };
36
+ const setSnapshot = (patch) => {
37
+ snapshot = { ...snapshot, ...patch };
38
+ emit();
39
+ };
40
+ const format = (label) => deps.formatLabel(label);
41
+ const publishDiagnostic = async (severity, code, label, detail) => {
42
+ await deps.context.host.diagnostics.publish(deps.context.extensionId, {
43
+ severity,
44
+ code,
45
+ message: format(label),
46
+ detail,
47
+ });
48
+ };
49
+ const deriveMetadata = async (settings) => {
50
+ const exportedTheme = await deps.context.host.theme.exportTheme();
51
+ const themeId = sanitizeThemeIdentifier(exportedTheme.metadata.id || snapshot.metadata.themeId);
52
+ const themeName = exportedTheme.metadata.name || snapshot.metadata.themeName;
53
+ const packageName = sanitizePackageName(`${settings.packageNamePrefix}${themeId}`);
54
+ return {
55
+ themeId,
56
+ themeName,
57
+ packageName,
58
+ author: exportedTheme.metadata.author || settings.defaultAuthor || snapshot.metadata.author,
59
+ description: exportedTheme.metadata.description || snapshot.metadata.description,
60
+ };
61
+ };
62
+ const loadStructures = async () => {
63
+ const [tokenDefinitions, classDefinitions, rendererBridge, editorBridge, currentTokens, settings] = await Promise.all([
64
+ deps.context.host.theme.getTokens(),
65
+ deps.context.host.theme.getClassNames(),
66
+ deps.context.host.theme.getThemeBridge("renderer"),
67
+ deps.context.host.theme.getThemeBridge("editor"),
68
+ deps.context.host.theme.getTokenMap(),
69
+ readThemeStudioSettings(deps.context.config),
70
+ ]);
71
+ const metadata = await deriveMetadata(settings);
72
+ setSnapshot({
73
+ tokenDefinitions,
74
+ classDefinitions,
75
+ rendererBridge,
76
+ editorBridge,
77
+ currentTokens,
78
+ relationships: buildThemeStudioClassRelationships(classDefinitions, rendererBridge, editorBridge),
79
+ metadata,
80
+ infoMessage: format(themeStudioLabels.statusReady),
81
+ lastError: null,
82
+ });
83
+ return settings;
84
+ };
85
+ return {
86
+ getSnapshot() {
87
+ return snapshot;
88
+ },
89
+ subscribe(listener) {
90
+ listeners.add(listener);
91
+ return () => listeners.delete(listener);
92
+ },
93
+ async refresh() {
94
+ setSnapshot({ busy: true, infoMessage: format(themeStudioLabels.statusBusy), lastError: null });
95
+ try {
96
+ await loadStructures();
97
+ }
98
+ catch (error) {
99
+ const message = error instanceof Error ? error.message : String(error);
100
+ setSnapshot({ lastError: message, infoMessage: null });
101
+ await publishDiagnostic("error", "EXT_THEME_STUDIO_REFRESH_FAILED", themeStudioLabels.diagnosticsFailed, message);
102
+ throw error;
103
+ }
104
+ finally {
105
+ setSnapshot({ busy: false });
106
+ }
107
+ },
108
+ async readSettings() {
109
+ return await readThemeStudioSettings(deps.context.config);
110
+ },
111
+ async setDraftToken(token, value) {
112
+ const settings = await readThemeStudioSettings(deps.context.config);
113
+ const nextDraft = { ...snapshot.draftTokens, [token]: value };
114
+ setSnapshot({ draftTokens: nextDraft, lastError: null });
115
+ if (settings.autoPreviewOnEdit) {
116
+ await deps.context.host.theme.previewTheme(nextDraft);
117
+ const currentTokens = await deps.context.host.theme.getTokenMap();
118
+ setSnapshot({ currentTokens, infoMessage: format(themeStudioLabels.statusBusy) });
119
+ }
120
+ },
121
+ async setDraftTokens(tokens) {
122
+ const settings = await readThemeStudioSettings(deps.context.config);
123
+ const nextDraft = { ...snapshot.draftTokens, ...tokens };
124
+ setSnapshot({ draftTokens: nextDraft, lastError: null });
125
+ if (settings.autoPreviewOnEdit) {
126
+ await deps.context.host.theme.previewTheme(nextDraft);
127
+ const currentTokens = await deps.context.host.theme.getTokenMap();
128
+ setSnapshot({ currentTokens, infoMessage: format(themeStudioLabels.statusBusy) });
129
+ }
130
+ },
131
+ async preview() {
132
+ setSnapshot({ busy: true, infoMessage: format(themeStudioLabels.statusBusy), lastError: null });
133
+ try {
134
+ await deps.context.host.theme.previewTheme(snapshot.draftTokens);
135
+ const currentTokens = await deps.context.host.theme.getTokenMap();
136
+ setSnapshot({ currentTokens, busy: false, infoMessage: format(themeStudioLabels.statusReady) });
137
+ await publishDiagnostic("info", "EXT_THEME_STUDIO_PREVIEWED", themeStudioLabels.diagnosticsPreviewed);
138
+ }
139
+ catch (error) {
140
+ const message = error instanceof Error ? error.message : String(error);
141
+ setSnapshot({ busy: false, lastError: message, infoMessage: null });
142
+ await publishDiagnostic("error", "EXT_THEME_STUDIO_PREVIEW_FAILED", themeStudioLabels.diagnosticsFailed, message);
143
+ throw error;
144
+ }
145
+ },
146
+ async apply() {
147
+ setSnapshot({ busy: true, infoMessage: format(themeStudioLabels.statusBusy), lastError: null });
148
+ try {
149
+ await deps.context.host.theme.previewTheme(snapshot.draftTokens);
150
+ await deps.context.host.theme.applyDraft();
151
+ const currentTokens = await deps.context.host.theme.getTokenMap();
152
+ setSnapshot({
153
+ busy: false,
154
+ currentTokens,
155
+ draftTokens: {},
156
+ infoMessage: format(themeStudioLabels.statusApplied),
157
+ lastError: null,
158
+ });
159
+ await publishDiagnostic("info", "EXT_THEME_STUDIO_APPLIED", themeStudioLabels.diagnosticsApplied);
160
+ await deps.context.host.notifications.info(themeStudioLabels.notificationApplied);
161
+ }
162
+ catch (error) {
163
+ const message = error instanceof Error ? error.message : String(error);
164
+ setSnapshot({ busy: false, lastError: message, infoMessage: null });
165
+ await publishDiagnostic("error", "EXT_THEME_STUDIO_APPLY_FAILED", themeStudioLabels.diagnosticsFailed, message);
166
+ throw error;
167
+ }
168
+ },
169
+ async revert() {
170
+ setSnapshot({ busy: true, infoMessage: format(themeStudioLabels.statusBusy), lastError: null });
171
+ try {
172
+ await deps.context.host.theme.discardDraft();
173
+ const currentTokens = await deps.context.host.theme.getTokenMap();
174
+ setSnapshot({
175
+ busy: false,
176
+ currentTokens,
177
+ draftTokens: {},
178
+ infoMessage: format(themeStudioLabels.statusReverted),
179
+ lastError: null,
180
+ });
181
+ await publishDiagnostic("info", "EXT_THEME_STUDIO_REVERTED", themeStudioLabels.diagnosticsReverted);
182
+ await deps.context.host.notifications.info(themeStudioLabels.notificationReverted);
183
+ }
184
+ catch (error) {
185
+ const message = error instanceof Error ? error.message : String(error);
186
+ setSnapshot({ busy: false, lastError: message, infoMessage: null });
187
+ await publishDiagnostic("error", "EXT_THEME_STUDIO_REVERT_FAILED", themeStudioLabels.diagnosticsFailed, message);
188
+ throw error;
189
+ }
190
+ },
191
+ async updateMetadata(patch) {
192
+ const metadata = {
193
+ ...snapshot.metadata,
194
+ ...patch,
195
+ };
196
+ const nextMetadata = {
197
+ themeId: sanitizeThemeIdentifier(metadata.themeId),
198
+ themeName: metadata.themeName.trim() || "Custom Theme",
199
+ packageName: sanitizePackageName(metadata.packageName),
200
+ author: metadata.author.trim(),
201
+ description: metadata.description.trim(),
202
+ };
203
+ setSnapshot({ metadata: nextMetadata });
204
+ },
205
+ async generateExports(_target) {
206
+ const settings = await readThemeStudioSettings(deps.context.config);
207
+ const effectiveTokens = mergeTokens(snapshot.currentTokens, snapshot.draftTokens);
208
+ const exports = buildThemeStudioExports(snapshot.metadata, effectiveTokens, settings);
209
+ setSnapshot({ lastExports: exports, infoMessage: format(themeStudioLabels.statusExported), lastError: null });
210
+ await publishDiagnostic("info", "EXT_THEME_STUDIO_EXPORTED", themeStudioLabels.diagnosticsExported);
211
+ await deps.context.host.notifications.info(themeStudioLabels.notificationExported);
212
+ return exports;
213
+ },
214
+ };
215
+ }
216
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ExtensionConfigurationStore } from "@mdwrk/extension-host";
2
+ import type { ThemeStudioReadSettingsOptions, ThemeStudioResolvedSettings } from "./types.js";
3
+ export declare function readThemeStudioSettings(options: ThemeStudioReadSettingsOptions | ExtensionConfigurationStore): Promise<ThemeStudioResolvedSettings>;
4
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AASzE,OAAO,KAAK,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9F,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GAAG,2BAA2B,GACpE,OAAO,CAAC,2BAA2B,CAAC,CAuBtC"}
@@ -0,0 +1,19 @@
1
+ import { THEME_STUDIO_DEFAULT_SETTINGS, THEME_STUDIO_SETTING_AUTO_PREVIEW, THEME_STUDIO_SETTING_COMPACT_CSS, THEME_STUDIO_SETTING_DEFAULT_AUTHOR, THEME_STUDIO_SETTING_DEFAULT_EXPORT_TARGET, THEME_STUDIO_SETTING_PACKAGE_NAME_PREFIX, } from "./constants.js";
2
+ export async function readThemeStudioSettings(options) {
3
+ const config = "config" in options ? options.config : options;
4
+ const [autoPreviewOnEdit, defaultExportTarget, compactCss, packageNamePrefix, defaultAuthor,] = await Promise.all([
5
+ config.get(THEME_STUDIO_SETTING_AUTO_PREVIEW),
6
+ config.get(THEME_STUDIO_SETTING_DEFAULT_EXPORT_TARGET),
7
+ config.get(THEME_STUDIO_SETTING_COMPACT_CSS),
8
+ config.get(THEME_STUDIO_SETTING_PACKAGE_NAME_PREFIX),
9
+ config.get(THEME_STUDIO_SETTING_DEFAULT_AUTHOR),
10
+ ]);
11
+ return {
12
+ autoPreviewOnEdit: autoPreviewOnEdit ?? THEME_STUDIO_DEFAULT_SETTINGS.autoPreviewOnEdit,
13
+ defaultExportTarget: defaultExportTarget ?? THEME_STUDIO_DEFAULT_SETTINGS.defaultExportTarget,
14
+ compactCss: compactCss ?? THEME_STUDIO_DEFAULT_SETTINGS.compactCss,
15
+ packageNamePrefix: packageNamePrefix?.trim() || THEME_STUDIO_DEFAULT_SETTINGS.packageNamePrefix,
16
+ defaultAuthor: defaultAuthor?.trim() || THEME_STUDIO_DEFAULT_SETTINGS.defaultAuthor,
17
+ };
18
+ }
19
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,mCAAmC,EACnC,0CAA0C,EAC1C,wCAAwC,GACzC,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAqE;IAErE,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,MAAM,CACJ,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACd,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpB,MAAM,CAAC,GAAG,CAAU,iCAAiC,CAAC;QACtD,MAAM,CAAC,GAAG,CAAqD,0CAA0C,CAAC;QAC1G,MAAM,CAAC,GAAG,CAAU,gCAAgC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAS,wCAAwC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAS,mCAAmC,CAAC;KACxD,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB,EAAE,iBAAiB,IAAI,6BAA6B,CAAC,iBAAiB;QACvF,mBAAmB,EAAE,mBAAmB,IAAI,6BAA6B,CAAC,mBAAmB;QAC7F,UAAU,EAAE,UAAU,IAAI,6BAA6B,CAAC,UAAU;QAClE,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,6BAA6B,CAAC,iBAAiB;QAC/F,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,6BAA6B,CAAC,aAAa;KACpF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { I18nLabel } from "@mdwrk/extension-manifest";
2
+ import type { ExtensionConfigurationStore, ExtensionContext } from "@mdwrk/extension-host";
3
+ import type { MarkdownWorkspaceThemeClassName, MarkdownWorkspaceThemeTokenMap, MarkdownWorkspaceThemeTokenName, ThemeBridgeTarget, ThemeBridgeVariableDefinition, ThemeClassDefinition, ThemePreset, ThemeTokenDefinition } from "@mdwrk/theme-contract";
4
+ export type ThemeStudioExportTarget = "host" | ThemeBridgeTarget;
5
+ export interface ThemeStudioResolvedSettings {
6
+ readonly autoPreviewOnEdit: boolean;
7
+ readonly defaultExportTarget: ThemeStudioExportTarget;
8
+ readonly compactCss: boolean;
9
+ readonly packageNamePrefix: string;
10
+ readonly defaultAuthor: string;
11
+ }
12
+ export interface ThemeStudioMetadata {
13
+ readonly themeId: string;
14
+ readonly themeName: string;
15
+ readonly packageName: string;
16
+ readonly author: string;
17
+ readonly description: string;
18
+ }
19
+ export interface ThemeStudioClassRelationship {
20
+ readonly className: MarkdownWorkspaceThemeClassName;
21
+ readonly selector: `.${string}`;
22
+ readonly scope: ThemeClassDefinition["scope"];
23
+ readonly stability: ThemeClassDefinition["stability"];
24
+ readonly bridgeTarget: ThemeBridgeTarget | "host";
25
+ readonly sourceTokens: readonly MarkdownWorkspaceThemeTokenName[];
26
+ }
27
+ export interface ThemeStudioPackageArtifactFile {
28
+ readonly path: string;
29
+ readonly content: string;
30
+ readonly mimeType: string;
31
+ }
32
+ export interface ThemeStudioPackageArtifact {
33
+ readonly packageName: string;
34
+ readonly files: readonly ThemeStudioPackageArtifactFile[];
35
+ }
36
+ export interface ThemeStudioExportArtifacts {
37
+ readonly preset: ThemePreset;
38
+ readonly json: string;
39
+ readonly hostCss: string;
40
+ readonly rendererCss: string;
41
+ readonly editorCss: string;
42
+ readonly packageArtifact: ThemeStudioPackageArtifact;
43
+ }
44
+ export interface ThemeStudioServiceSnapshot {
45
+ readonly busy: boolean;
46
+ readonly tokenDefinitions: readonly ThemeTokenDefinition[];
47
+ readonly classDefinitions: readonly ThemeClassDefinition[];
48
+ readonly rendererBridge: readonly ThemeBridgeVariableDefinition[];
49
+ readonly editorBridge: readonly ThemeBridgeVariableDefinition[];
50
+ readonly currentTokens: MarkdownWorkspaceThemeTokenMap | null;
51
+ readonly draftTokens: Partial<Record<MarkdownWorkspaceThemeTokenName, string>>;
52
+ readonly relationships: readonly ThemeStudioClassRelationship[];
53
+ readonly metadata: ThemeStudioMetadata;
54
+ readonly lastExports: ThemeStudioExportArtifacts | null;
55
+ readonly infoMessage: string | null;
56
+ readonly lastError: string | null;
57
+ }
58
+ export interface ThemeStudioService {
59
+ getSnapshot(): ThemeStudioServiceSnapshot;
60
+ subscribe(listener: () => void): () => void;
61
+ refresh(): Promise<void>;
62
+ readSettings(): Promise<ThemeStudioResolvedSettings>;
63
+ setDraftToken(token: MarkdownWorkspaceThemeTokenName, value: string): Promise<void>;
64
+ setDraftTokens(tokens: Partial<Record<MarkdownWorkspaceThemeTokenName, string>>): Promise<void>;
65
+ preview(): Promise<void>;
66
+ apply(): Promise<void>;
67
+ revert(): Promise<void>;
68
+ updateMetadata(patch: Partial<ThemeStudioMetadata>): Promise<void>;
69
+ generateExports(target?: ThemeStudioExportTarget): Promise<ThemeStudioExportArtifacts>;
70
+ }
71
+ export interface ThemeStudioReadSettingsOptions {
72
+ readonly config: ExtensionConfigurationStore;
73
+ }
74
+ export interface ThemeStudioServiceDependencies {
75
+ readonly context: ExtensionContext;
76
+ readonly formatLabel: (label: I18nLabel | string) => string;
77
+ readonly now?: () => number;
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const THEME_STUDIO_VERSION = "1.0.1";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const THEME_STUDIO_VERSION = "1.0.1";
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,93 @@
1
+ {
2
+ "name": "@mdwrk/extension-theme-studio",
3
+ "version": "1.0.1",
4
+ "type": "module",
5
+ "license": "Apache-2.0",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "engines": {
10
+ "node": ">=20 <23"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "README.md"
15
+ ],
16
+ "sideEffects": false,
17
+ "keywords": [
18
+ "markdown-workspace",
19
+ "extension",
20
+ "theme",
21
+ "studio",
22
+ "tokens"
23
+ ],
24
+ "description": "First-party theme authoring extension for Markdown Workspace with token inspection, live renderer/editor previews, apply/revert flow, and export helpers.",
25
+ "dependencies": {
26
+ "@mdwrk/extension-host": "^1.0.1",
27
+ "@mdwrk/extension-manifest": "^1.0.0",
28
+ "@mdwrk/extension-runtime": "^1.0.1",
29
+ "@mdwrk/theme-contract": "^1.0.0",
30
+ "@mdwrk/ui-tokens": "^1.0.1",
31
+ "@mdwrk/markdown-renderer-react": "^1.0.1",
32
+ "@mdwrk/markdown-editor-react": "^1.0.2",
33
+ "lucide-react": "^0.475.0"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^19.0.0",
37
+ "react-dom": "^19.0.0"
38
+ },
39
+ "scripts": {
40
+ "build:deps": "npm run build -w @mdwrk/extension-manifest && npm run build -w @mdwrk/extension-host && npm run build -w @mdwrk/theme-contract && npm run build -w @mdwrk/ui-tokens && npm run build -w @mdwrk/markdown-renderer-react && npm run build -w @mdwrk/markdown-editor-react && npm run build -w @mdwrk/extension-runtime",
41
+ "build": "npm run build:deps && tsc -p tsconfig.json",
42
+ "typecheck": "npm run build:deps && tsc --noEmit -p tsconfig.json",
43
+ "lint": "npm run typecheck",
44
+ "test": "npm run build && node ./tests/run-smoke.mjs",
45
+ "prepack": "npm run build"
46
+ },
47
+ "exports": {
48
+ ".": {
49
+ "types": "./dist/index.d.ts",
50
+ "import": "./dist/index.js"
51
+ },
52
+ "./version": {
53
+ "types": "./dist/version.d.ts",
54
+ "import": "./dist/version.js"
55
+ },
56
+ "./constants": {
57
+ "types": "./dist/constants.d.ts",
58
+ "import": "./dist/constants.js"
59
+ },
60
+ "./manifest": {
61
+ "types": "./dist/manifest.d.ts",
62
+ "import": "./dist/manifest.js"
63
+ },
64
+ "./settings": {
65
+ "types": "./dist/settings.d.ts",
66
+ "import": "./dist/settings.js"
67
+ },
68
+ "./service": {
69
+ "types": "./dist/service.d.ts",
70
+ "import": "./dist/service.js"
71
+ },
72
+ "./types": {
73
+ "types": "./dist/types.d.ts",
74
+ "import": "./dist/types.js"
75
+ },
76
+ "./exports": {
77
+ "types": "./dist/export.d.ts",
78
+ "import": "./dist/export.js"
79
+ },
80
+ "./relationships": {
81
+ "types": "./dist/relationship.d.ts",
82
+ "import": "./dist/relationship.js"
83
+ },
84
+ "./bundled": {
85
+ "types": "./dist/createThemeStudioBundledEntry.d.ts",
86
+ "import": "./dist/createThemeStudioBundledEntry.js"
87
+ }
88
+ },
89
+ "main": "./dist/index.js",
90
+ "types": "./dist/index.d.ts",
91
+ "author": "Jacob Stewart <jacob@swarmauri.com>",
92
+ "homepage": "https://mdwrk.com"
93
+ }