design-brain-memory 0.8.2 → 0.9.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.
- package/dist/agentBrowser.d.ts +1 -0
- package/dist/agentBrowser.js +1 -0
- package/dist/agentBrowser.js.map +1 -1
- package/dist/classify.d.ts +21 -0
- package/dist/classify.js +205 -0
- package/dist/classify.js.map +1 -0
- package/dist/cli.js +216 -219
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +1 -60
- package/dist/commands.js +10 -322
- package/dist/commands.js.map +1 -1
- package/dist/extractFromUrl.d.ts +0 -7
- package/dist/extractFromUrl.js +353 -82
- package/dist/extractFromUrl.js.map +1 -1
- package/dist/index.d.ts +12 -24
- package/dist/index.js +11 -16
- package/dist/index.js.map +1 -1
- package/dist/llm.d.ts +6 -0
- package/dist/llm.js +12 -1
- package/dist/llm.js.map +1 -1
- package/dist/persona.d.ts +2 -0
- package/dist/persona.js +234 -0
- package/dist/persona.js.map +1 -0
- package/dist/query.js +6 -1
- package/dist/query.js.map +1 -1
- package/dist/render.d.ts +10 -2
- package/dist/render.js +175 -80
- package/dist/render.js.map +1 -1
- package/dist/scan.d.ts +10 -0
- package/dist/scan.js +393 -0
- package/dist/scan.js.map +1 -0
- package/dist/scanRenderer.d.ts +2 -0
- package/dist/scanRenderer.js +155 -0
- package/dist/scanRenderer.js.map +1 -0
- package/dist/skillPrompt.d.ts +3 -1
- package/dist/skillPrompt.js +148 -22
- package/dist/skillPrompt.js.map +1 -1
- package/dist/store.d.ts +5 -1
- package/dist/store.js +19 -0
- package/dist/store.js.map +1 -1
- package/dist/taste.d.ts +9 -0
- package/dist/taste.js +598 -0
- package/dist/taste.js.map +1 -0
- package/dist/tasteDiff.d.ts +19 -0
- package/dist/tasteDiff.js +340 -0
- package/dist/tasteDiff.js.map +1 -0
- package/dist/tasteGenerate.d.ts +12 -0
- package/dist/tasteGenerate.js +140 -0
- package/dist/tasteGenerate.js.map +1 -0
- package/dist/tasteRefine.d.ts +13 -0
- package/dist/tasteRefine.js +351 -0
- package/dist/tasteRefine.js.map +1 -0
- package/dist/tasteRenderer.d.ts +4 -0
- package/dist/tasteRenderer.js +133 -0
- package/dist/tasteRenderer.js.map +1 -0
- package/dist/theatrical.d.ts +5 -0
- package/dist/theatrical.js +258 -0
- package/dist/theatrical.js.map +1 -0
- package/dist/types.d.ts +196 -27
- package/package.json +4 -3
- package/skills/SKILL.md +36 -0
- package/skills/design-brain/SKILL.md +77 -0
- package/README.md +0 -242
- package/dist/aggregate.d.ts +0 -9
- package/dist/aggregate.js +0 -53
- package/dist/aggregate.js.map +0 -1
- package/dist/batch.d.ts +0 -16
- package/dist/batch.js +0 -44
- package/dist/batch.js.map +0 -1
- package/dist/compare.d.ts +0 -33
- package/dist/compare.js +0 -83
- package/dist/compare.js.map +0 -1
- package/dist/componentGraph.d.ts +0 -22
- package/dist/componentGraph.js +0 -106
- package/dist/componentGraph.js.map +0 -1
- package/dist/contextLayer.d.ts +0 -12
- package/dist/contextLayer.js +0 -263
- package/dist/contextLayer.js.map +0 -1
- package/dist/cssInJs.d.ts +0 -9
- package/dist/cssInJs.js +0 -124
- package/dist/cssInJs.js.map +0 -1
- package/dist/graphView.d.ts +0 -21
- package/dist/graphView.js +0 -492
- package/dist/graphView.js.map +0 -1
- package/dist/knowledge.d.ts +0 -20
- package/dist/knowledge.js +0 -208
- package/dist/knowledge.js.map +0 -1
- package/dist/liveView.d.ts +0 -15
- package/dist/liveView.js +0 -476
- package/dist/liveView.js.map +0 -1
- package/dist/moodboard.d.ts +0 -3
- package/dist/moodboard.js +0 -139
- package/dist/moodboard.js.map +0 -1
- package/dist/reviewChecklist.d.ts +0 -17
- package/dist/reviewChecklist.js +0 -126
- package/dist/reviewChecklist.js.map +0 -1
- package/dist/scorecard.d.ts +0 -48
- package/dist/scorecard.js +0 -201
- package/dist/scorecard.js.map +0 -1
- package/dist/styleDictionary.d.ts +0 -16
- package/dist/styleDictionary.js +0 -89
- package/dist/styleDictionary.js.map +0 -1
- package/dist/svg.d.ts +0 -5
- package/dist/svg.js +0 -162
- package/dist/svg.js.map +0 -1
- package/dist/systemDiff.d.ts +0 -28
- package/dist/systemDiff.js +0 -107
- package/dist/systemDiff.js.map +0 -1
- package/dist/tailwind.d.ts +0 -2
- package/dist/tailwind.js +0 -122
- package/dist/tailwind.js.map +0 -1
- package/dist/tokenNaming.d.ts +0 -5
- package/dist/tokenNaming.js +0 -229
- package/dist/tokenNaming.js.map +0 -1
- package/dist/tokens.d.ts +0 -17
- package/dist/tokens.js +0 -44
- package/dist/tokens.js.map +0 -1
- package/dist/trends.d.ts +0 -12
- package/dist/trends.js +0 -178
- package/dist/trends.js.map +0 -1
- package/dist/wiki.d.ts +0 -10
- package/dist/wiki.js +0 -346
- package/dist/wiki.js.map +0 -1
- package/dist/writingStyle.d.ts +0 -38
- package/dist/writingStyle.js +0 -224
- package/dist/writingStyle.js.map +0 -1
package/dist/contextLayer.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
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;
|
package/dist/contextLayer.js
DELETED
|
@@ -1,263 +0,0 @@
|
|
|
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
|
package/dist/contextLayer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contextLayer.js","sourceRoot":"","sources":["../src/contextLayer.ts"],"names":[],"mappings":"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"}
|
package/dist/cssInJs.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
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;
|
package/dist/cssInJs.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { aggregateColors, aggregateTypography, aggregateMotion, } from './aggregate.js';
|
|
2
|
-
import { nameColor, nameTypographySize, nameMotionDuration } from './tokenNaming.js';
|
|
3
|
-
const COLOR_KEY_PATTERNS = /color|bg|border|text|fill|stroke|accent|brand|surface/i;
|
|
4
|
-
const COLOR_VALUE_RE = /^#[0-9a-f]{3,8}$/i;
|
|
5
|
-
function deriveColorKey(varName) {
|
|
6
|
-
let key = varName.replace(/^--/, '');
|
|
7
|
-
key = key
|
|
8
|
-
.replace(/^hds-canary-color-/, '')
|
|
9
|
-
.replace(/^hds-color-/, '')
|
|
10
|
-
.replace(/^hds-canary-/, '')
|
|
11
|
-
.replace(/^hds-/, '')
|
|
12
|
-
.replace(/^brand-/, '')
|
|
13
|
-
.replace(/^theme-/, '');
|
|
14
|
-
key = key.replace(/-+/g, '-').replace(/^-|-$/g, '');
|
|
15
|
-
return key || varName.replace(/^--/, '');
|
|
16
|
-
}
|
|
17
|
-
function sanitizeFontKey(family) {
|
|
18
|
-
const first = family.split(',')[0].trim().replace(/['"]/g, '');
|
|
19
|
-
return first.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
|
|
20
|
-
}
|
|
21
|
-
export function generateCssInJsTheme(project) {
|
|
22
|
-
const colors = {};
|
|
23
|
-
const fonts = {};
|
|
24
|
-
const fontSizes = {};
|
|
25
|
-
const transitions = {};
|
|
26
|
-
// Colors from CSS variables first
|
|
27
|
-
for (const inspo of project.inspirations) {
|
|
28
|
-
for (const [varName, value] of Object.entries(inspo.analysis.cssVariables)) {
|
|
29
|
-
if (!COLOR_KEY_PATTERNS.test(varName))
|
|
30
|
-
continue;
|
|
31
|
-
if (!COLOR_VALUE_RE.test(value.trim()))
|
|
32
|
-
continue;
|
|
33
|
-
const key = deriveColorKey(varName);
|
|
34
|
-
if (!colors[key]) {
|
|
35
|
-
colors[key] = value.trim();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Remaining colors with CSS named color heuristic
|
|
40
|
-
const usedNames = new Map();
|
|
41
|
-
for (const color of aggregateColors(project.inspirations)) {
|
|
42
|
-
const upper = color.hex.toUpperCase();
|
|
43
|
-
const alreadyCovered = Object.values(colors).some((v) => v.toUpperCase() === upper);
|
|
44
|
-
if (alreadyCovered)
|
|
45
|
-
continue;
|
|
46
|
-
const baseName = nameColor(color.hex);
|
|
47
|
-
const count = usedNames.get(baseName) ?? 0;
|
|
48
|
-
usedNames.set(baseName, count + 1);
|
|
49
|
-
const key = count === 0 ? baseName : `${baseName}-${count + 1}`;
|
|
50
|
-
colors[key] = color.hex;
|
|
51
|
-
}
|
|
52
|
-
// Fonts
|
|
53
|
-
const seenFamilies = new Set();
|
|
54
|
-
for (const typo of aggregateTypography(project.inspirations)) {
|
|
55
|
-
const key = sanitizeFontKey(typo.fontFamily);
|
|
56
|
-
if (key && !seenFamilies.has(key)) {
|
|
57
|
-
seenFamilies.add(key);
|
|
58
|
-
fonts[key] = typo.fontFamily.split(',')[0].trim().replace(/['"]/g, '');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// Font sizes with semantic names
|
|
62
|
-
const seenSizes = new Set();
|
|
63
|
-
const sizeEntries = [];
|
|
64
|
-
for (const typo of aggregateTypography(project.inspirations)) {
|
|
65
|
-
const match = typo.fontSize.match(/^(\d+(?:\.\d+)?)\s*px$/i);
|
|
66
|
-
if (match && !seenSizes.has(match[1])) {
|
|
67
|
-
seenSizes.add(match[1]);
|
|
68
|
-
sizeEntries.push({ px: parseFloat(match[1]), value: typo.fontSize });
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
sizeEntries.sort((a, b) => a.px - b.px);
|
|
72
|
-
const usedSizeNames = new Map();
|
|
73
|
-
for (const entry of sizeEntries) {
|
|
74
|
-
const baseName = nameTypographySize(entry.value);
|
|
75
|
-
const count = usedSizeNames.get(baseName) ?? 0;
|
|
76
|
-
usedSizeNames.set(baseName, count + 1);
|
|
77
|
-
const key = count === 0 ? baseName : `${baseName}-${count + 1}`;
|
|
78
|
-
fontSizes[key] = entry.value;
|
|
79
|
-
}
|
|
80
|
-
// Transitions
|
|
81
|
-
const seenDurations = new Set();
|
|
82
|
-
for (const motion of aggregateMotion(project.inspirations)) {
|
|
83
|
-
for (const t of motion.transitions ?? []) {
|
|
84
|
-
if (t.duration && t.duration !== '0s' && !seenDurations.has(t.duration)) {
|
|
85
|
-
seenDurations.add(t.duration);
|
|
86
|
-
const name = nameMotionDuration(t.duration);
|
|
87
|
-
const easing = t.timingFunction || 'ease';
|
|
88
|
-
transitions[name] = `${t.duration} ${easing}`;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return { colors, fonts, fontSizes, transitions };
|
|
93
|
-
}
|
|
94
|
-
export function renderCssInJsTheme(theme) {
|
|
95
|
-
const lines = [
|
|
96
|
-
'export const theme = {',
|
|
97
|
-
' colors: {',
|
|
98
|
-
];
|
|
99
|
-
for (const [key, value] of Object.entries(theme.colors)) {
|
|
100
|
-
lines.push(` '${key}': '${value}',`);
|
|
101
|
-
}
|
|
102
|
-
lines.push(' },');
|
|
103
|
-
lines.push(' fonts: {');
|
|
104
|
-
for (const [key, value] of Object.entries(theme.fonts)) {
|
|
105
|
-
lines.push(` ${key}: '${value}',`);
|
|
106
|
-
}
|
|
107
|
-
lines.push(' },');
|
|
108
|
-
lines.push(' fontSizes: {');
|
|
109
|
-
for (const [key, value] of Object.entries(theme.fontSizes)) {
|
|
110
|
-
lines.push(` ${key}: '${value}',`);
|
|
111
|
-
}
|
|
112
|
-
lines.push(' },');
|
|
113
|
-
lines.push(' transitions: {');
|
|
114
|
-
for (const [key, value] of Object.entries(theme.transitions)) {
|
|
115
|
-
lines.push(` ${key}: '${value}',`);
|
|
116
|
-
}
|
|
117
|
-
lines.push(' },');
|
|
118
|
-
lines.push('} as const;');
|
|
119
|
-
lines.push('');
|
|
120
|
-
lines.push('export type Theme = typeof theme;');
|
|
121
|
-
lines.push('');
|
|
122
|
-
return lines.join('\n');
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=cssInJs.js.map
|
package/dist/cssInJs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cssInJs.js","sourceRoot":"","sources":["../src/cssInJs.ts"],"names":[],"mappings":"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"}
|
package/dist/graphView.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { DesignBrainDatabase } from './types.js';
|
|
2
|
-
export interface GraphNode {
|
|
3
|
-
id: string;
|
|
4
|
-
label: string;
|
|
5
|
-
type: 'project' | 'color' | 'font' | 'component' | 'inspiration';
|
|
6
|
-
color: string;
|
|
7
|
-
size: number;
|
|
8
|
-
meta: Record<string, string>;
|
|
9
|
-
}
|
|
10
|
-
export interface GraphEdge {
|
|
11
|
-
source: string;
|
|
12
|
-
target: string;
|
|
13
|
-
type: 'has_color' | 'has_font' | 'has_component' | 'has_inspiration' | 'shared_token';
|
|
14
|
-
weight: number;
|
|
15
|
-
}
|
|
16
|
-
export interface KnowledgeGraph {
|
|
17
|
-
nodes: GraphNode[];
|
|
18
|
-
edges: GraphEdge[];
|
|
19
|
-
}
|
|
20
|
-
export declare function buildKnowledgeGraph(db: DesignBrainDatabase): KnowledgeGraph;
|
|
21
|
-
export declare function generateGraphHtml(graph: KnowledgeGraph): string;
|