design-brain-memory 0.9.2 → 0.9.4
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.
- package/README.md +273 -0
- package/dist/agentBrowser.js +1 -1
- package/dist/agentBrowser.js.map +1 -1
- package/dist/aggregate.d.ts +9 -0
- package/dist/aggregate.js +53 -0
- package/dist/aggregate.js.map +1 -0
- package/dist/batch.d.ts +16 -0
- package/dist/batch.js +44 -0
- package/dist/batch.js.map +1 -0
- package/dist/cli.js +250 -216
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +60 -1
- package/dist/commands.js +323 -10
- package/dist/commands.js.map +1 -1
- package/dist/compare.d.ts +33 -0
- package/dist/compare.js +83 -0
- package/dist/compare.js.map +1 -0
- package/dist/componentGraph.d.ts +22 -0
- package/dist/componentGraph.js +106 -0
- package/dist/componentGraph.js.map +1 -0
- package/dist/contextLayer.d.ts +12 -0
- package/dist/contextLayer.js +263 -0
- package/dist/contextLayer.js.map +1 -0
- package/dist/cssInJs.d.ts +9 -0
- package/dist/cssInJs.js +124 -0
- package/dist/cssInJs.js.map +1 -0
- package/dist/extractFromUrl.d.ts +8 -0
- package/dist/extractFromUrl.js +104 -355
- package/dist/extractFromUrl.js.map +1 -1
- package/dist/graphView.d.ts +21 -0
- package/dist/graphView.js +492 -0
- package/dist/graphView.js.map +1 -0
- package/dist/index.d.ts +26 -11
- package/dist/index.js +17 -10
- package/dist/index.js.map +1 -1
- package/dist/knowledge.d.ts +20 -0
- package/dist/knowledge.js +208 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/liveView.d.ts +15 -0
- package/dist/liveView.js +475 -0
- package/dist/liveView.js.map +1 -0
- package/dist/llm.js +1 -9
- package/dist/llm.js.map +1 -1
- package/dist/moodboard.d.ts +3 -0
- package/dist/moodboard.js +152 -0
- package/dist/moodboard.js.map +1 -0
- package/dist/persona.d.ts +2 -2
- package/dist/persona.js +82 -210
- package/dist/persona.js.map +1 -1
- package/dist/query.js +1 -6
- package/dist/query.js.map +1 -1
- package/dist/render.d.ts +2 -10
- package/dist/render.js +80 -175
- package/dist/render.js.map +1 -1
- package/dist/reviewChecklist.d.ts +17 -0
- package/dist/reviewChecklist.js +126 -0
- package/dist/reviewChecklist.js.map +1 -0
- package/dist/scan.d.ts +19 -7
- package/dist/scan.js +132 -374
- package/dist/scan.js.map +1 -1
- package/dist/scorecard.d.ts +53 -0
- package/dist/scorecard.js +325 -0
- package/dist/scorecard.js.map +1 -0
- package/dist/skillPrompt.d.ts +1 -3
- package/dist/skillPrompt.js +22 -148
- package/dist/skillPrompt.js.map +1 -1
- package/dist/store.d.ts +2 -2
- package/dist/store.js +7 -9
- package/dist/store.js.map +1 -1
- package/dist/styleDictionary.d.ts +16 -0
- package/dist/styleDictionary.js +89 -0
- package/dist/styleDictionary.js.map +1 -0
- package/dist/svg.d.ts +5 -0
- package/dist/svg.js +162 -0
- package/dist/svg.js.map +1 -0
- package/dist/systemDiff.d.ts +28 -0
- package/dist/systemDiff.js +107 -0
- package/dist/systemDiff.js.map +1 -0
- package/dist/tailwind.d.ts +2 -0
- package/dist/tailwind.js +122 -0
- package/dist/tailwind.js.map +1 -0
- package/dist/taste.d.ts +3 -2
- package/dist/taste.js +349 -536
- package/dist/taste.js.map +1 -1
- package/dist/tasteRenderer.d.ts +2 -3
- package/dist/tasteRenderer.js +123 -119
- package/dist/tasteRenderer.js.map +1 -1
- package/dist/tokenNaming.d.ts +5 -0
- package/dist/tokenNaming.js +229 -0
- package/dist/tokenNaming.js.map +1 -0
- package/dist/tokens.d.ts +17 -0
- package/dist/tokens.js +44 -0
- package/dist/tokens.js.map +1 -0
- package/dist/trends.d.ts +12 -0
- package/dist/trends.js +178 -0
- package/dist/trends.js.map +1 -0
- package/dist/types.d.ts +47 -101
- package/dist/wiki.d.ts +10 -0
- package/dist/wiki.js +346 -0
- package/dist/wiki.js.map +1 -0
- package/dist/writingStyle.d.ts +38 -0
- package/dist/writingStyle.js +224 -0
- package/dist/writingStyle.js.map +1 -0
- package/package.json +5 -4
- package/dist/classify.d.ts +0 -21
- package/dist/classify.js +0 -205
- package/dist/classify.js.map +0 -1
- package/dist/scanRenderer.d.ts +0 -2
- package/dist/scanRenderer.js +0 -155
- package/dist/scanRenderer.js.map +0 -1
- package/dist/tasteDiff.d.ts +0 -19
- package/dist/tasteDiff.js +0 -340
- package/dist/tasteDiff.js.map +0 -1
- package/dist/tasteGenerate.d.ts +0 -12
- package/dist/tasteGenerate.js +0 -140
- package/dist/tasteGenerate.js.map +0 -1
- package/dist/tasteRefine.d.ts +0 -13
- package/dist/tasteRefine.js +0 -351
- package/dist/tasteRefine.js.map +0 -1
- package/dist/theatrical.d.ts +0 -5
- package/dist/theatrical.js +0 -258
- package/dist/theatrical.js.map +0 -1
- package/skills/SKILL.md +0 -36
- package/skills/design-brain/SKILL.md +0 -77
package/dist/compare.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export function compareInspirations(a, b) {
|
|
2
|
+
// Colors
|
|
3
|
+
const colorsA = new Map(a.analysis.colors.map((c) => [c.hex.toUpperCase(), c]));
|
|
4
|
+
const colorsB = new Map(b.analysis.colors.map((c) => [c.hex.toUpperCase(), c]));
|
|
5
|
+
const addedColors = [...colorsB.values()].filter((c) => !colorsA.has(c.hex.toUpperCase()));
|
|
6
|
+
const removedColors = [...colorsA.values()].filter((c) => !colorsB.has(c.hex.toUpperCase()));
|
|
7
|
+
const sharedColors = [...colorsA.entries()]
|
|
8
|
+
.filter(([hex]) => colorsB.has(hex))
|
|
9
|
+
.map(([hex, ca]) => ({ hex, countA: ca.count, countB: colorsB.get(hex).count }));
|
|
10
|
+
// Typography
|
|
11
|
+
const typoKey = (t) => `${t.fontFamily}|${t.fontSize}|${t.fontWeight}`;
|
|
12
|
+
const typoA = new Map(a.analysis.typography.map((t) => [typoKey(t), t]));
|
|
13
|
+
const typoB = new Map(b.analysis.typography.map((t) => [typoKey(t), t]));
|
|
14
|
+
const addedTypo = [...typoB.values()].filter((t) => !typoA.has(typoKey(t)));
|
|
15
|
+
const removedTypo = [...typoA.values()].filter((t) => !typoB.has(typoKey(t)));
|
|
16
|
+
const sharedTypo = [...typoA.values()].filter((t) => typoB.has(typoKey(t)));
|
|
17
|
+
// Components
|
|
18
|
+
const kindsA = new Set(a.analysis.components.map((c) => c.kind));
|
|
19
|
+
const kindsB = new Set(b.analysis.components.map((c) => c.kind));
|
|
20
|
+
const addedKinds = [...kindsB].filter((k) => !kindsA.has(k));
|
|
21
|
+
const removedKinds = [...kindsA].filter((k) => !kindsB.has(k));
|
|
22
|
+
const sharedKinds = [...kindsA].filter((k) => kindsB.has(k));
|
|
23
|
+
// Motion
|
|
24
|
+
const motionKeyFn = (m) => `${m.selector}|${m.transition}|${m.animation}`;
|
|
25
|
+
const motionA = new Set(a.analysis.motion.map(motionKeyFn));
|
|
26
|
+
const motionB = new Set(b.analysis.motion.map(motionKeyFn));
|
|
27
|
+
const addedMotion = [...motionB].filter((k) => !motionA.has(k)).length;
|
|
28
|
+
const removedMotion = [...motionA].filter((k) => !motionB.has(k)).length;
|
|
29
|
+
const sharedMotion = [...motionA].filter((k) => motionB.has(k)).length;
|
|
30
|
+
return {
|
|
31
|
+
nameA: a.name, nameB: b.name,
|
|
32
|
+
idA: a.id, idB: b.id,
|
|
33
|
+
colors: { added: addedColors, removed: removedColors, shared: sharedColors },
|
|
34
|
+
typography: { added: addedTypo, removed: removedTypo, shared: sharedTypo },
|
|
35
|
+
components: { addedKinds, removedKinds, sharedKinds },
|
|
36
|
+
motion: { addedCount: addedMotion, removedCount: removedMotion, sharedCount: sharedMotion },
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function renderComparison(report) {
|
|
40
|
+
const lines = [];
|
|
41
|
+
lines.push(`# Compare: ${report.nameA} vs ${report.nameB}\n`);
|
|
42
|
+
// Colors
|
|
43
|
+
lines.push('## Colors\n');
|
|
44
|
+
lines.push('| Status | Hex | Detail |');
|
|
45
|
+
lines.push('| --- | --- | --- |');
|
|
46
|
+
for (const c of report.colors.added)
|
|
47
|
+
lines.push(`| + Added | ${c.hex} | count: ${c.count} |`);
|
|
48
|
+
for (const c of report.colors.removed)
|
|
49
|
+
lines.push(`| - Removed | ${c.hex} | count: ${c.count} |`);
|
|
50
|
+
for (const c of report.colors.shared)
|
|
51
|
+
lines.push(`| = Shared | ${c.hex} | ${c.countA} → ${c.countB} |`);
|
|
52
|
+
lines.push('');
|
|
53
|
+
// Typography
|
|
54
|
+
lines.push('## Typography\n');
|
|
55
|
+
lines.push('| Status | Font | Size | Weight |');
|
|
56
|
+
lines.push('| --- | --- | --- | --- |');
|
|
57
|
+
for (const t of report.typography.added)
|
|
58
|
+
lines.push(`| + Added | ${t.fontFamily} | ${t.fontSize} | ${t.fontWeight} |`);
|
|
59
|
+
for (const t of report.typography.removed)
|
|
60
|
+
lines.push(`| - Removed | ${t.fontFamily} | ${t.fontSize} | ${t.fontWeight} |`);
|
|
61
|
+
for (const t of report.typography.shared)
|
|
62
|
+
lines.push(`| = Shared | ${t.fontFamily} | ${t.fontSize} | ${t.fontWeight} |`);
|
|
63
|
+
lines.push('');
|
|
64
|
+
// Components
|
|
65
|
+
lines.push('## Components\n');
|
|
66
|
+
if (report.components.addedKinds.length > 0)
|
|
67
|
+
lines.push(`Added: ${report.components.addedKinds.join(', ')}`);
|
|
68
|
+
if (report.components.removedKinds.length > 0)
|
|
69
|
+
lines.push(`Removed: ${report.components.removedKinds.join(', ')}`);
|
|
70
|
+
lines.push(`Shared: ${report.components.sharedKinds.length} kinds`);
|
|
71
|
+
lines.push('');
|
|
72
|
+
// Motion
|
|
73
|
+
lines.push('## Motion\n');
|
|
74
|
+
lines.push(`Added: ${report.motion.addedCount} | Removed: ${report.motion.removedCount} | Shared: ${report.motion.sharedCount}`);
|
|
75
|
+
lines.push('');
|
|
76
|
+
// Summary
|
|
77
|
+
const ca = report.colors.added.length, cr = report.colors.removed.length, cs = report.colors.shared.length;
|
|
78
|
+
const ta = report.typography.added.length, tr = report.typography.removed.length, ts = report.typography.shared.length;
|
|
79
|
+
lines.push('## Summary\n');
|
|
80
|
+
lines.push(`Colors: +${ca} -${cr} =${cs} | Typography: +${ta} -${tr} =${ts} | Components: +${report.components.addedKinds.length} -${report.components.removedKinds.length} =${report.components.sharedKinds.length}`);
|
|
81
|
+
return lines.join('\n');
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../src/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { InspirationRecord } from './types.js';
|
|
2
|
+
export interface ComponentEdge {
|
|
3
|
+
parent: string;
|
|
4
|
+
child: string;
|
|
5
|
+
count: number;
|
|
6
|
+
sourceSelectors: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface CoOccurrence {
|
|
9
|
+
kindA: string;
|
|
10
|
+
kindB: string;
|
|
11
|
+
count: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ComponentGraph {
|
|
14
|
+
nodes: Array<{
|
|
15
|
+
kind: string;
|
|
16
|
+
count: number;
|
|
17
|
+
}>;
|
|
18
|
+
edges: ComponentEdge[];
|
|
19
|
+
coOccurrences: CoOccurrence[];
|
|
20
|
+
}
|
|
21
|
+
export declare function buildComponentGraph(inspirations: InspirationRecord[]): ComponentGraph;
|
|
22
|
+
export declare function renderComponentGraphMd(graph: ComponentGraph): string;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
function findKindForSelector(selectorPart, components) {
|
|
2
|
+
const kinds = [];
|
|
3
|
+
for (const comp of components) {
|
|
4
|
+
const parts = comp.selector.trim().split(/\s+/);
|
|
5
|
+
if (parts.includes(selectorPart)) {
|
|
6
|
+
kinds.push(comp.kind);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return [...new Set(kinds)];
|
|
10
|
+
}
|
|
11
|
+
function extractNesting(components) {
|
|
12
|
+
const parentChild = new Map();
|
|
13
|
+
for (const comp of components) {
|
|
14
|
+
const parts = comp.selector.trim().split(/\s+/).filter(Boolean);
|
|
15
|
+
if (parts.length < 2)
|
|
16
|
+
continue;
|
|
17
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
18
|
+
const parentKinds = findKindForSelector(parts[i], components);
|
|
19
|
+
const childKinds = findKindForSelector(parts[i + 1], components);
|
|
20
|
+
for (const parentKind of parentKinds) {
|
|
21
|
+
for (const childKind of childKinds) {
|
|
22
|
+
if (parentKind === childKind)
|
|
23
|
+
continue;
|
|
24
|
+
const children = parentChild.get(parentKind) ?? new Set();
|
|
25
|
+
children.add(childKind);
|
|
26
|
+
parentChild.set(parentKind, children);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return parentChild;
|
|
32
|
+
}
|
|
33
|
+
export function buildComponentGraph(inspirations) {
|
|
34
|
+
const kindCounts = new Map();
|
|
35
|
+
const edgeMap = new Map();
|
|
36
|
+
const coOccMap = new Map();
|
|
37
|
+
for (const inspo of inspirations) {
|
|
38
|
+
const components = inspo.analysis.components;
|
|
39
|
+
const kindsInCapture = new Set();
|
|
40
|
+
for (const comp of components) {
|
|
41
|
+
kindCounts.set(comp.kind, (kindCounts.get(comp.kind) ?? 0) + 1);
|
|
42
|
+
kindsInCapture.add(comp.kind);
|
|
43
|
+
}
|
|
44
|
+
const nesting = extractNesting(components);
|
|
45
|
+
for (const [parent, children] of nesting) {
|
|
46
|
+
for (const child of children) {
|
|
47
|
+
const key = `${parent}→${child}`;
|
|
48
|
+
const existing = edgeMap.get(key) ?? { parent, child, count: 0, selectors: new Set() };
|
|
49
|
+
existing.count += 1;
|
|
50
|
+
existing.selectors.add(inspo.id);
|
|
51
|
+
edgeMap.set(key, existing);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const kindList = [...kindsInCapture].sort();
|
|
55
|
+
for (let i = 0; i < kindList.length; i++) {
|
|
56
|
+
for (let j = i + 1; j < kindList.length; j++) {
|
|
57
|
+
const key = `${kindList[i]}|${kindList[j]}`;
|
|
58
|
+
coOccMap.set(key, (coOccMap.get(key) ?? 0) + 1);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const nodes = [...kindCounts.entries()]
|
|
63
|
+
.map(([kind, count]) => ({ kind, count }))
|
|
64
|
+
.sort((a, b) => b.count - a.count);
|
|
65
|
+
const edges = [...edgeMap.values()]
|
|
66
|
+
.map((e) => ({ parent: e.parent, child: e.child, count: e.count, sourceSelectors: [...e.selectors] }))
|
|
67
|
+
.sort((a, b) => b.count - a.count);
|
|
68
|
+
const coOccurrences = [...coOccMap.entries()]
|
|
69
|
+
.map(([key, count]) => {
|
|
70
|
+
const [kindA, kindB] = key.split('|');
|
|
71
|
+
return { kindA, kindB, count };
|
|
72
|
+
})
|
|
73
|
+
.sort((a, b) => b.count - a.count);
|
|
74
|
+
return { nodes, edges, coOccurrences };
|
|
75
|
+
}
|
|
76
|
+
export function renderComponentGraphMd(graph) {
|
|
77
|
+
const lines = [];
|
|
78
|
+
lines.push('# Component Relationship Graph\n');
|
|
79
|
+
lines.push('## Component Kinds\n');
|
|
80
|
+
lines.push('| Kind | Occurrences |');
|
|
81
|
+
lines.push('| --- | --- |');
|
|
82
|
+
for (const node of graph.nodes) {
|
|
83
|
+
lines.push(`| ${node.kind} | ${node.count} |`);
|
|
84
|
+
}
|
|
85
|
+
lines.push('');
|
|
86
|
+
if (graph.edges.length > 0) {
|
|
87
|
+
lines.push('## Parent-Child Relationships\n');
|
|
88
|
+
lines.push('| Parent | Child | Captures |');
|
|
89
|
+
lines.push('| --- | --- | --- |');
|
|
90
|
+
for (const edge of graph.edges) {
|
|
91
|
+
lines.push(`| ${edge.parent} | ${edge.child} | ${edge.count} |`);
|
|
92
|
+
}
|
|
93
|
+
lines.push('');
|
|
94
|
+
}
|
|
95
|
+
if (graph.coOccurrences.length > 0) {
|
|
96
|
+
lines.push('## Co-Occurrences\n');
|
|
97
|
+
lines.push('| Component A | Component B | Captures |');
|
|
98
|
+
lines.push('| --- | --- | --- |');
|
|
99
|
+
for (const co of graph.coOccurrences.slice(0, 30)) {
|
|
100
|
+
lines.push(`| ${co.kindA} | ${co.kindB} | ${co.count} |`);
|
|
101
|
+
}
|
|
102
|
+
lines.push('');
|
|
103
|
+
}
|
|
104
|
+
return lines.join('\n');
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=componentGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentGraph.js","sourceRoot":"","sources":["../src/componentGraph.ts"],"names":[],"mappings":"AAqBA,SAAS,mBAAmB,CAAC,YAAoB,EAAE,UAA4B;IAC7E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,cAAc,CAAC,UAA4B;IAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAEjE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,UAAU,KAAK,SAAS;wBAAE,SAAS;oBACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;oBAC1D,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACxB,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAiC;IACnE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoF,CAAC;IAC5G,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;gBAC/F,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;gBACpB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACrG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,aAAa,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAE/C,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProjectRecord } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a compact, grep-friendly context document for a project.
|
|
4
|
+
* This is the file you drop into .claude/ or .cursorrules so your
|
|
5
|
+
* AI assistant knows your design system cold.
|
|
6
|
+
*/
|
|
7
|
+
export declare function generateDesignContext(project: ProjectRecord): string;
|
|
8
|
+
/**
|
|
9
|
+
* Generates a cross-project context document — a unified design brain
|
|
10
|
+
* covering all projects for shared understanding.
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateUnifiedContext(projects: ProjectRecord[]): string;
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { aggregateColors, aggregateTypography, aggregateComponents, aggregateMotion, } from './aggregate.js';
|
|
2
|
+
import { nameColor, nameTypographySize, nameMotionDuration } from './tokenNaming.js';
|
|
3
|
+
import { aggregateWritingStyles } from './writingStyle.js';
|
|
4
|
+
/**
|
|
5
|
+
* Generates a compact, grep-friendly context document for a project.
|
|
6
|
+
* This is the file you drop into .claude/ or .cursorrules so your
|
|
7
|
+
* AI assistant knows your design system cold.
|
|
8
|
+
*/
|
|
9
|
+
export function generateDesignContext(project) {
|
|
10
|
+
const inspos = project.inspirations;
|
|
11
|
+
const lines = [];
|
|
12
|
+
lines.push(`# Design Context — ${project.name}`);
|
|
13
|
+
lines.push('');
|
|
14
|
+
lines.push(`> Auto-generated design brain context. Drop this into your AI tool's context.`);
|
|
15
|
+
lines.push(`> Search with \`rg "keyword"\` to find any token instantly.`);
|
|
16
|
+
lines.push('');
|
|
17
|
+
if (project.description) {
|
|
18
|
+
lines.push(`**Project:** ${project.description}`);
|
|
19
|
+
lines.push('');
|
|
20
|
+
}
|
|
21
|
+
// ── Color Palette ──────────────────────────────────────────────────
|
|
22
|
+
const colors = aggregateColors(inspos);
|
|
23
|
+
if (colors.length > 0) {
|
|
24
|
+
lines.push('## Color Palette');
|
|
25
|
+
lines.push('');
|
|
26
|
+
lines.push('Use these exact values. Do not invent colors.');
|
|
27
|
+
lines.push('');
|
|
28
|
+
for (const c of colors.slice(0, 20)) {
|
|
29
|
+
const name = nameColor(c.hex);
|
|
30
|
+
lines.push(`- \`${c.hex}\` — ${name} (used ${c.count}x)`);
|
|
31
|
+
}
|
|
32
|
+
lines.push('');
|
|
33
|
+
// CSS variable mapping if available
|
|
34
|
+
const allVars = new Map();
|
|
35
|
+
for (const inspo of inspos) {
|
|
36
|
+
for (const [key, value] of Object.entries(inspo.analysis.cssVariables)) {
|
|
37
|
+
if (value.startsWith('#') || value.startsWith('rgb')) {
|
|
38
|
+
allVars.set(key, value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (allVars.size > 0) {
|
|
43
|
+
lines.push('### CSS Variables (colors)');
|
|
44
|
+
lines.push('');
|
|
45
|
+
for (const [key, value] of [...allVars.entries()].slice(0, 30)) {
|
|
46
|
+
lines.push(`- \`${key}: ${value}\``);
|
|
47
|
+
}
|
|
48
|
+
lines.push('');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// ── Typography Scale ───────────────────────────────────────────────
|
|
52
|
+
const typo = aggregateTypography(inspos);
|
|
53
|
+
if (typo.length > 0) {
|
|
54
|
+
lines.push('## Typography');
|
|
55
|
+
lines.push('');
|
|
56
|
+
// Deduplicate font families
|
|
57
|
+
const families = new Map();
|
|
58
|
+
for (const t of typo) {
|
|
59
|
+
const family = t.fontFamily.split(',')[0].trim().replace(/['"]/g, '');
|
|
60
|
+
families.set(family, (families.get(family) ?? 0) + t.count);
|
|
61
|
+
}
|
|
62
|
+
const sortedFamilies = [...families.entries()].sort((a, b) => b[1] - a[1]);
|
|
63
|
+
lines.push(`**Font families:** ${sortedFamilies.map(([f]) => f).join(', ')}`);
|
|
64
|
+
lines.push('');
|
|
65
|
+
// Size scale
|
|
66
|
+
const sizeMap = new Map();
|
|
67
|
+
for (const t of typo) {
|
|
68
|
+
if (!sizeMap.has(t.fontSize)) {
|
|
69
|
+
sizeMap.set(t.fontSize, {
|
|
70
|
+
scale: nameTypographySize(t.fontSize),
|
|
71
|
+
weight: t.fontWeight,
|
|
72
|
+
count: t.count,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
lines.push('**Type scale:**');
|
|
77
|
+
lines.push('');
|
|
78
|
+
for (const [size, info] of [...sizeMap.entries()].slice(0, 12)) {
|
|
79
|
+
lines.push(`- \`${size}\` → ${info.scale} (weight: ${info.weight})`);
|
|
80
|
+
}
|
|
81
|
+
lines.push('');
|
|
82
|
+
}
|
|
83
|
+
// ── Component Inventory ────────────────────────────────────────────
|
|
84
|
+
const components = aggregateComponents(inspos);
|
|
85
|
+
if (components.length > 0) {
|
|
86
|
+
lines.push('## Components');
|
|
87
|
+
lines.push('');
|
|
88
|
+
lines.push('These are the UI components found across captures.');
|
|
89
|
+
lines.push('');
|
|
90
|
+
const byKind = new Map();
|
|
91
|
+
for (const comp of components) {
|
|
92
|
+
const list = byKind.get(comp.kind) ?? [];
|
|
93
|
+
list.push({ selector: comp.selector, tag: comp.tag, text: comp.text });
|
|
94
|
+
byKind.set(comp.kind, list);
|
|
95
|
+
}
|
|
96
|
+
for (const [kind, items] of [...byKind.entries()].slice(0, 15)) {
|
|
97
|
+
const uniqueSelectors = [...new Set(items.map((i) => i.selector))].slice(0, 5);
|
|
98
|
+
const sampleTexts = items.map((i) => i.text).filter((t) => t.length > 0).slice(0, 3);
|
|
99
|
+
lines.push(`### ${kind}`);
|
|
100
|
+
lines.push('');
|
|
101
|
+
lines.push(`- **Selectors:** ${uniqueSelectors.map((s) => `\`${s}\``).join(', ')}`);
|
|
102
|
+
if (sampleTexts.length > 0) {
|
|
103
|
+
lines.push(`- **Examples:** ${sampleTexts.map((t) => `"${t.slice(0, 50)}"`).join(', ')}`);
|
|
104
|
+
}
|
|
105
|
+
lines.push('');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// ── Writing Style ──────────────────────────────────────────────────
|
|
109
|
+
const writingAgg = aggregateWritingStyles(inspos);
|
|
110
|
+
const hasTones = Object.keys(writingAgg.tones).length > 0;
|
|
111
|
+
const hasCtas = writingAgg.topCtas.length > 0;
|
|
112
|
+
const hasHeadingStyles = Object.keys(writingAgg.headingStyles).length > 0;
|
|
113
|
+
if (hasTones || hasCtas || hasHeadingStyles) {
|
|
114
|
+
lines.push('## Writing Style');
|
|
115
|
+
lines.push('');
|
|
116
|
+
lines.push('Follow these patterns when writing UI copy.');
|
|
117
|
+
lines.push('');
|
|
118
|
+
if (hasTones) {
|
|
119
|
+
const toneEntries = Object.entries(writingAgg.tones).sort((a, b) => b[1] - a[1]);
|
|
120
|
+
lines.push(`**Tone:** ${toneEntries.map(([t]) => t).join(', ')}`);
|
|
121
|
+
lines.push('');
|
|
122
|
+
}
|
|
123
|
+
if (hasHeadingStyles) {
|
|
124
|
+
const headingEntries = Object.entries(writingAgg.headingStyles).sort((a, b) => b[1] - a[1]);
|
|
125
|
+
lines.push(`**Heading patterns:** ${headingEntries.map(([s, c]) => `${s} (${c})`).join(', ')}`);
|
|
126
|
+
lines.push('');
|
|
127
|
+
}
|
|
128
|
+
if (hasCtas) {
|
|
129
|
+
lines.push('**CTA patterns:**');
|
|
130
|
+
lines.push('');
|
|
131
|
+
for (const cta of writingAgg.topCtas.slice(0, 8)) {
|
|
132
|
+
lines.push(`- "${cta.text}" (verb: ${cta.verb})`);
|
|
133
|
+
}
|
|
134
|
+
lines.push('');
|
|
135
|
+
}
|
|
136
|
+
if (writingAgg.avgSentenceLength > 0) {
|
|
137
|
+
lines.push(`**Target sentence length:** ~${writingAgg.avgSentenceLength} words`);
|
|
138
|
+
lines.push('');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// ── Motion & Transitions ───────────────────────────────────────────
|
|
142
|
+
const motion = aggregateMotion(inspos);
|
|
143
|
+
if (motion.length > 0) {
|
|
144
|
+
lines.push('## Motion');
|
|
145
|
+
lines.push('');
|
|
146
|
+
const durations = new Map();
|
|
147
|
+
for (const m of motion) {
|
|
148
|
+
const dur = m.transition || '';
|
|
149
|
+
if (dur) {
|
|
150
|
+
const bucket = nameMotionDuration(dur);
|
|
151
|
+
durations.set(bucket, (durations.get(bucket) ?? 0) + m.count);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (durations.size > 0) {
|
|
155
|
+
lines.push('**Transition speed:**');
|
|
156
|
+
lines.push('');
|
|
157
|
+
for (const [bucket, count] of [...durations.entries()].sort(([, a], [, b]) => b - a)) {
|
|
158
|
+
lines.push(`- ${bucket} (${count}x)`);
|
|
159
|
+
}
|
|
160
|
+
lines.push('');
|
|
161
|
+
}
|
|
162
|
+
// Raw transitions for grep
|
|
163
|
+
const seen = new Set();
|
|
164
|
+
for (const m of motion.slice(0, 10)) {
|
|
165
|
+
const key = m.transition || m.animation || '';
|
|
166
|
+
if (key && !seen.has(key)) {
|
|
167
|
+
seen.add(key);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (seen.size > 0) {
|
|
171
|
+
lines.push('**Transition values:**');
|
|
172
|
+
lines.push('');
|
|
173
|
+
for (const t of seen) {
|
|
174
|
+
lines.push(`- \`${t}\``);
|
|
175
|
+
}
|
|
176
|
+
lines.push('');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// ── All CSS Variables ──────────────────────────────────────────────
|
|
180
|
+
const allCssVars = new Map();
|
|
181
|
+
for (const inspo of inspos) {
|
|
182
|
+
for (const [key, value] of Object.entries(inspo.analysis.cssVariables)) {
|
|
183
|
+
if (!allCssVars.has(key))
|
|
184
|
+
allCssVars.set(key, value);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Filter out color vars already shown above
|
|
188
|
+
const nonColorVars = [...allCssVars.entries()].filter(([, v]) => !v.startsWith('#') && !v.startsWith('rgb'));
|
|
189
|
+
if (nonColorVars.length > 0) {
|
|
190
|
+
lines.push('## CSS Variables');
|
|
191
|
+
lines.push('');
|
|
192
|
+
for (const [key, value] of nonColorVars.slice(0, 30)) {
|
|
193
|
+
lines.push(`- \`${key}: ${value}\``);
|
|
194
|
+
}
|
|
195
|
+
lines.push('');
|
|
196
|
+
}
|
|
197
|
+
// ── Source Captures ────────────────────────────────────────────────
|
|
198
|
+
if (inspos.length > 0) {
|
|
199
|
+
lines.push('## Sources');
|
|
200
|
+
lines.push('');
|
|
201
|
+
for (const inspo of inspos) {
|
|
202
|
+
const source = inspo.url || inspo.originalImagePath || 'screenshot';
|
|
203
|
+
lines.push(`- ${inspo.name} — ${source} (${inspo.capturedAt.slice(0, 10)})`);
|
|
204
|
+
}
|
|
205
|
+
lines.push('');
|
|
206
|
+
}
|
|
207
|
+
lines.push('---');
|
|
208
|
+
lines.push(`*Generated by design-brain-memory on ${new Date().toISOString().slice(0, 10)}*`);
|
|
209
|
+
lines.push('');
|
|
210
|
+
return lines.join('\n');
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Generates a cross-project context document — a unified design brain
|
|
214
|
+
* covering all projects for shared understanding.
|
|
215
|
+
*/
|
|
216
|
+
export function generateUnifiedContext(projects) {
|
|
217
|
+
const lines = [];
|
|
218
|
+
lines.push('# Design Brain — Unified Context');
|
|
219
|
+
lines.push('');
|
|
220
|
+
lines.push(`> ${projects.length} projects. Search with \`rg "keyword"\` to find anything.`);
|
|
221
|
+
lines.push('');
|
|
222
|
+
for (const project of projects) {
|
|
223
|
+
const inspos = project.inspirations;
|
|
224
|
+
if (inspos.length === 0)
|
|
225
|
+
continue;
|
|
226
|
+
lines.push(`## ${project.name}`);
|
|
227
|
+
lines.push('');
|
|
228
|
+
// Colors — compact
|
|
229
|
+
const colors = aggregateColors(inspos);
|
|
230
|
+
if (colors.length > 0) {
|
|
231
|
+
const colorList = colors.slice(0, 10).map((c) => `${c.hex} (${nameColor(c.hex)})`).join(', ');
|
|
232
|
+
lines.push(`**Colors:** ${colorList}`);
|
|
233
|
+
lines.push('');
|
|
234
|
+
}
|
|
235
|
+
// Typography — compact
|
|
236
|
+
const typo = aggregateTypography(inspos);
|
|
237
|
+
if (typo.length > 0) {
|
|
238
|
+
const families = [...new Set(typo.map((t) => t.fontFamily.split(',')[0].trim().replace(/['"]/g, '')))];
|
|
239
|
+
lines.push(`**Fonts:** ${families.slice(0, 5).join(', ')}`);
|
|
240
|
+
lines.push('');
|
|
241
|
+
}
|
|
242
|
+
// Components — compact
|
|
243
|
+
const components = aggregateComponents(inspos);
|
|
244
|
+
if (components.length > 0) {
|
|
245
|
+
const kinds = [...new Set(components.map((c) => c.kind))];
|
|
246
|
+
lines.push(`**Components:** ${kinds.slice(0, 10).join(', ')}`);
|
|
247
|
+
lines.push('');
|
|
248
|
+
}
|
|
249
|
+
// Writing tone — compact
|
|
250
|
+
const writingAgg = aggregateWritingStyles(inspos);
|
|
251
|
+
const tones = Object.keys(writingAgg.tones);
|
|
252
|
+
if (tones.length > 0) {
|
|
253
|
+
lines.push(`**Tone:** ${tones.join(', ')}`);
|
|
254
|
+
lines.push('');
|
|
255
|
+
}
|
|
256
|
+
lines.push('---');
|
|
257
|
+
lines.push('');
|
|
258
|
+
}
|
|
259
|
+
lines.push(`*Generated by design-brain-memory on ${new Date().toISOString().slice(0, 10)}*`);
|
|
260
|
+
lines.push('');
|
|
261
|
+
return lines.join('\n');
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=contextLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextLayer.js","sourceRoot":"","sources":["../src/contextLayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProjectRecord } from './types.js';
|
|
2
|
+
export interface CssInJsTheme {
|
|
3
|
+
colors: Record<string, string>;
|
|
4
|
+
fonts: Record<string, string>;
|
|
5
|
+
fontSizes: Record<string, string>;
|
|
6
|
+
transitions: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare function generateCssInJsTheme(project: ProjectRecord): CssInJsTheme;
|
|
9
|
+
export declare function renderCssInJsTheme(theme: CssInJsTheme): string;
|