designlang 11.0.0 → 11.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "designlang",
3
- "version": "11.0.0",
3
+ "version": "11.0.1",
4
4
  "description": "Extract the complete design language from any website and ship it — clone to a working Next.js starter, guard tokens with a CI drift bot, or browse everything in a local studio. Outputs W3C DTCG tokens, motion tokens, typed anatomy stubs, Tailwind config, and ready-to-paste v0 / Lovable / Cursor / Claude-Artifacts prompts.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,16 +15,16 @@ function typeFamilies(design) {
15
15
 
16
16
  function scaleSnippet(scale = []) {
17
17
  if (!scale.length) return '(not detected)';
18
- return scale.slice(0, 8).map(s => (s.value || s) + (s.label ? ` (${s.label})` : '')).join(', ');
18
+ return scale.slice(0, 8).map(s => String(s.value ?? s) + (s.label ? ` (${s.label})` : '')).join(', ');
19
19
  }
20
20
 
21
21
  function radiiSnippet(borders) {
22
- const r = (borders?.radii || []).slice(0, 6).map(x => (x.value || x).toString());
22
+ const r = (borders?.radii || []).slice(0, 6).map(x => String(x.value ?? x));
23
23
  return r.length ? r.join(', ') : '(none)';
24
24
  }
25
25
 
26
26
  function shadowSnippet(shadows) {
27
- const s = (shadows?.values || []).slice(0, 3).map(x => (x.value || x).toString());
27
+ const s = (shadows?.values || []).slice(0, 3).map(x => String(x.raw ?? x.value ?? x));
28
28
  return s.length ? s.join(' | ') : '(none)';
29
29
  }
30
30
 
@@ -138,8 +138,8 @@ export function formatCursorPrompt(design) {
138
138
  'export const tokens = {',
139
139
  ` colors: [${b.colors.map(c => `'${c}'`).join(', ')}],`,
140
140
  ` fonts: [${b.fonts.map(f => `'${f}'`).join(', ')}],`,
141
- ` radii: [${(design.borders?.radii || []).slice(0, 6).map(r => `'${(r.value || r)}'`).join(', ')}],`,
142
- ` shadows: [${(design.shadows?.values || []).slice(0, 3).map(s => `'${(s.value || s).replace(/'/g, "\\'")}'`).join(', ')}],`,
141
+ ` radii: [${(design.borders?.radii || []).slice(0, 6).map(r => `'${String(r.value ?? r)}'`).join(', ')}],`,
142
+ ` shadows: [${(design.shadows?.values || []).slice(0, 3).map(s => `'${String(s.raw ?? s.value ?? s).replace(/'/g, "\\'")}'`).join(', ')}],`,
143
143
  '};',
144
144
  '```',
145
145
  '',
@@ -1,7 +1,7 @@
1
1
  import { rgbToHex, rgbToHsl } from '../utils.js';
2
2
 
3
3
  function generateColorScale(hex, parsed) {
4
- const { h, s } = rgbToHsl(parsed);
4
+ const { h, s } = parsed.hsl ?? rgbToHsl(parsed.rgb);
5
5
  const scale = {};
6
6
  const levels = [
7
7
  { name: '50', l: 97 }, { name: '100', l: 94 }, { name: '200', l: 86 },
package/src/multipage.js CHANGED
@@ -127,11 +127,11 @@ function typeSet(typography) {
127
127
  }
128
128
 
129
129
  function spaceSet(spacing) {
130
- return new Set(((spacing?.scale) || []).map(s => (s.value || s).toString()));
130
+ return new Set(((spacing?.scale) || []).map(s => String(s.value ?? s)));
131
131
  }
132
132
 
133
133
  function radiusSet(borders) {
134
- return new Set(((borders?.radii) || []).map(r => (r.value || r).toString()));
134
+ return new Set(((borders?.radii) || []).map(r => String(r.value ?? r)));
135
135
  }
136
136
 
137
137
  export function computeCrossPageConsistency(pages) {