designlang 7.0.0 → 7.1.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/.vercel/README.txt +11 -0
- package/.vercel/project.json +1 -0
- package/CHANGELOG.md +15 -0
- package/CONTRIBUTING.md +25 -0
- package/README.md +9 -7
- package/bin/design-extract.js +18 -1
- package/chrome-extension/README.md +41 -0
- package/chrome-extension/icons/favicon.svg +7 -0
- package/chrome-extension/icons/icon-128.png +0 -0
- package/chrome-extension/icons/icon-16.png +0 -0
- package/chrome-extension/icons/icon-32.png +0 -0
- package/chrome-extension/icons/icon-48.png +0 -0
- package/chrome-extension/manifest.json +26 -0
- package/chrome-extension/popup.html +167 -0
- package/chrome-extension/popup.js +59 -0
- package/docs/superpowers/specs/2026-04-18-website-redesign-design.md +120 -0
- package/docs/superpowers/specs/2026-04-19-designlang-v7-1-design.md +111 -0
- package/package.json +1 -1
- package/src/config.js +3 -0
- package/src/crawler.js +20 -2
- package/src/utils-cookies.js +73 -0
- package/tests/cookies.test.js +98 -0
- package/website/app/api/extract/route.js +216 -56
- package/website/app/components/A11ySlider.js +369 -0
- package/website/app/components/Comparison.js +286 -0
- package/website/app/components/CssHealth.js +243 -0
- package/website/app/components/HeroExtractor.js +455 -0
- package/website/app/components/Marginalia.js +3 -0
- package/website/app/components/McpSection.js +223 -0
- package/website/app/components/PlatformTabs.js +250 -0
- package/website/app/components/RegionsComponents.js +429 -0
- package/website/app/components/Rule.js +13 -0
- package/website/app/components/Specimens.js +237 -0
- package/website/app/components/StructuredData.js +144 -0
- package/website/app/components/TokenBrowser.js +344 -0
- package/website/app/components/token-browser-sample.js +65 -0
- package/website/app/globals.css +415 -633
- package/website/app/icon.svg +7 -0
- package/website/app/layout.js +113 -6
- package/website/app/opengraph-image.js +170 -0
- package/website/app/page.js +325 -148
- package/website/app/robots.js +15 -0
- package/website/app/seo-config.js +82 -0
- package/website/app/sitemap.js +18 -0
- package/website/lib/cache.js +73 -0
- package/website/lib/rate-limit.js +30 -0
- package/website/lib/rate-limit.test.js +55 -0
- package/website/lib/specimens.json +86 -0
- package/website/lib/token-helpers.js +70 -0
- package/website/lib/url-safety.js +103 -0
- package/website/lib/url-safety.test.js +116 -0
- package/website/lib/zip-files.js +15 -0
- package/website/package-lock.json +85 -0
- package/website/package.json +1 -0
- package/website/public/favicon.svg +7 -0
- package/website/public/logo-specimen.svg +76 -0
- package/website/public/mark.svg +12 -0
- package/website/public/site.webmanifest +13 -0
- package/website/app/favicon.ico +0 -0
- package/website/public/file.svg +0 -1
- package/website/public/globe.svg +0 -1
- package/website/public/next.svg +0 -1
- package/website/public/vercel.svg +0 -1
- package/website/public/window.svg +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" aria-label="designlang">
|
|
2
|
+
<title>designlang</title>
|
|
3
|
+
<rect width="32" height="32" fill="#F3F1EA"/>
|
|
4
|
+
<circle cx="13" cy="20" r="7.5" fill="none" stroke="#0A0908" stroke-width="4.5"/>
|
|
5
|
+
<rect x="19" y="4" width="4.5" height="25" fill="#0A0908"/>
|
|
6
|
+
<rect x="25" y="25" width="4" height="4" fill="#FF4800"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 420" role="img" aria-label="designlang — reads a website the way a developer reads a stylesheet">
|
|
2
|
+
<title>designlang</title>
|
|
3
|
+
<desc>Museum specimen label for designlang. A lowercase d constructed from a ring, a stem, and one extracted orange token, set on warm paper with a palette strip.</desc>
|
|
4
|
+
|
|
5
|
+
<!-- Paper card -->
|
|
6
|
+
<rect width="1200" height="420" fill="#F3F1EA"/>
|
|
7
|
+
<rect x="1" y="1" width="1198" height="418" fill="none" stroke="#0A0908" stroke-width="2"/>
|
|
8
|
+
|
|
9
|
+
<!-- Top caption strip -->
|
|
10
|
+
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="13" fill="#403C34" letter-spacing="1.4">
|
|
11
|
+
<text x="40" y="40">SPECIMEN / 01</text>
|
|
12
|
+
<text x="40" y="58">EXTRACTED 2026</text>
|
|
13
|
+
</g>
|
|
14
|
+
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="13" fill="#403C34" letter-spacing="1.4" text-anchor="end">
|
|
15
|
+
<text x="1160" y="40">v7.0</text>
|
|
16
|
+
<text x="1160" y="58">W3C DTCG</text>
|
|
17
|
+
</g>
|
|
18
|
+
|
|
19
|
+
<!-- Top hairline -->
|
|
20
|
+
<line x1="40" y1="82" x2="1160" y2="82" stroke="#0A0908" stroke-width="1"/>
|
|
21
|
+
|
|
22
|
+
<!-- Mark: lowercase d with extracted token. Fits inside the band 100-300 (200px tall). -->
|
|
23
|
+
<g transform="translate(64, 116)">
|
|
24
|
+
<circle cx="58" cy="120" r="50" fill="none" stroke="#0A0908" stroke-width="24"/>
|
|
25
|
+
<rect x="94" y="20" width="24" height="164" fill="#0A0908"/>
|
|
26
|
+
<rect x="124" y="156" width="28" height="28" fill="#FF4800"/>
|
|
27
|
+
</g>
|
|
28
|
+
|
|
29
|
+
<!-- Wordmark -->
|
|
30
|
+
<text x="260" y="216"
|
|
31
|
+
font-family="'Fraunces', 'Iowan Old Style', Georgia, serif"
|
|
32
|
+
font-size="128" fill="#0A0908" letter-spacing="-3"
|
|
33
|
+
text-rendering="geometricPrecision">designlang<tspan fill="#FF4800">.</tspan></text>
|
|
34
|
+
|
|
35
|
+
<!-- Tagline -->
|
|
36
|
+
<text x="260" y="268"
|
|
37
|
+
font-family="'Instrument Sans', 'Helvetica Neue', sans-serif"
|
|
38
|
+
font-size="18" fill="#403C34" font-style="italic">
|
|
39
|
+
reads a website the way a developer reads a stylesheet.
|
|
40
|
+
</text>
|
|
41
|
+
|
|
42
|
+
<!-- Bottom hairline -->
|
|
43
|
+
<line x1="40" y1="308" x2="1160" y2="308" stroke="#0A0908" stroke-width="1"/>
|
|
44
|
+
|
|
45
|
+
<!-- Palette strip -->
|
|
46
|
+
<g transform="translate(40, 344)">
|
|
47
|
+
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="10" fill="#403C34" letter-spacing="0.7">
|
|
48
|
+
<g>
|
|
49
|
+
<rect width="42" height="42" fill="#0A0908"/>
|
|
50
|
+
<text x="0" y="56">#0A0908</text>
|
|
51
|
+
</g>
|
|
52
|
+
<g transform="translate(58, 0)">
|
|
53
|
+
<rect width="42" height="42" fill="#403C34"/>
|
|
54
|
+
<text x="0" y="56">#403C34</text>
|
|
55
|
+
</g>
|
|
56
|
+
<g transform="translate(116, 0)">
|
|
57
|
+
<rect width="42" height="42" fill="#8B8778"/>
|
|
58
|
+
<text x="0" y="56">#8B8778</text>
|
|
59
|
+
</g>
|
|
60
|
+
<g transform="translate(174, 0)">
|
|
61
|
+
<rect width="42" height="42" fill="#D8D3C5"/>
|
|
62
|
+
<text x="0" y="56">#D8D3C5</text>
|
|
63
|
+
</g>
|
|
64
|
+
<g transform="translate(232, 0)">
|
|
65
|
+
<rect width="42" height="42" fill="#FF4800"/>
|
|
66
|
+
<text x="0" y="56">#FF4800</text>
|
|
67
|
+
</g>
|
|
68
|
+
</g>
|
|
69
|
+
|
|
70
|
+
<!-- Right caption -->
|
|
71
|
+
<g font-family="ui-monospace, 'SF Mono', Menlo, monospace" font-size="12" fill="#403C34" letter-spacing="1" text-anchor="end">
|
|
72
|
+
<text x="1120" y="16">$ npx designlang <url></text>
|
|
73
|
+
<text x="1120" y="34" fill="#8B8778">MIT / Node ≥ 20 / Playwright</text>
|
|
74
|
+
</g>
|
|
75
|
+
</g>
|
|
76
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120" role="img" aria-label="designlang">
|
|
2
|
+
<title>designlang</title>
|
|
3
|
+
<!-- Token grid scaffold, set in a 10×10 specimen field. -->
|
|
4
|
+
<!-- Mark = a lowercase d constructed from two primitives (counter, stem) + one orange token. -->
|
|
5
|
+
<rect width="120" height="120" fill="transparent"/>
|
|
6
|
+
<!-- counter: a ring, ink -->
|
|
7
|
+
<circle cx="50" cy="74" r="30" fill="none" stroke="#0A0908" stroke-width="16"/>
|
|
8
|
+
<!-- stem: a bar right of counter, ink -->
|
|
9
|
+
<rect x="72" y="10" width="16" height="100" fill="#0A0908"/>
|
|
10
|
+
<!-- token: the extracted primary, accent -->
|
|
11
|
+
<rect x="92" y="92" width="18" height="18" fill="#FF4800"/>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "designlang",
|
|
3
|
+
"short_name": "designlang",
|
|
4
|
+
"description": "Extract any website's complete design system as W3C DTCG tokens, Tailwind, Figma variables, shadcn, iOS, Android, Flutter, WordPress, plus an MCP server.",
|
|
5
|
+
"start_url": "/",
|
|
6
|
+
"display": "standalone",
|
|
7
|
+
"background_color": "#F3F1EA",
|
|
8
|
+
"theme_color": "#F3F1EA",
|
|
9
|
+
"icons": [
|
|
10
|
+
{ "src": "/favicon.svg", "sizes": "any", "type": "image/svg+xml" },
|
|
11
|
+
{ "src": "/icon.svg", "sizes": "any", "type": "image/svg+xml" }
|
|
12
|
+
]
|
|
13
|
+
}
|
package/website/app/favicon.ico
DELETED
|
Binary file
|
package/website/public/file.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
|
package/website/public/globe.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
|
package/website/public/next.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|