@mseep/dembrandt 0.19.5
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/LICENSE +21 -0
- package/README.md +408 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +532 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/browser.d.ts +16 -0
- package/dist/lib/browser.js +27 -0
- package/dist/lib/browser.js.map +1 -0
- package/dist/lib/colors.d.ts +101 -0
- package/dist/lib/colors.js +405 -0
- package/dist/lib/colors.js.map +1 -0
- package/dist/lib/compare.d.ts +31 -0
- package/dist/lib/compare.js +46 -0
- package/dist/lib/compare.js.map +1 -0
- package/dist/lib/discovery.d.ts +31 -0
- package/dist/lib/discovery.js +243 -0
- package/dist/lib/discovery.js.map +1 -0
- package/dist/lib/drift.d.ts +64 -0
- package/dist/lib/drift.js +383 -0
- package/dist/lib/drift.js.map +1 -0
- package/dist/lib/dtcg/validate.d.ts +51 -0
- package/dist/lib/dtcg/validate.js +1403 -0
- package/dist/lib/dtcg/validate.js.map +1 -0
- package/dist/lib/exit-codes.d.ts +29 -0
- package/dist/lib/exit-codes.js +26 -0
- package/dist/lib/exit-codes.js.map +1 -0
- package/dist/lib/extractors/breakpoints.d.ts +5 -0
- package/dist/lib/extractors/breakpoints.js +450 -0
- package/dist/lib/extractors/breakpoints.js.map +1 -0
- package/dist/lib/extractors/colors.d.ts +2 -0
- package/dist/lib/extractors/colors.js +657 -0
- package/dist/lib/extractors/colors.js.map +1 -0
- package/dist/lib/extractors/components.d.ts +4 -0
- package/dist/lib/extractors/components.js +370 -0
- package/dist/lib/extractors/components.js.map +1 -0
- package/dist/lib/extractors/index.d.ts +9 -0
- package/dist/lib/extractors/index.js +1257 -0
- package/dist/lib/extractors/index.js.map +1 -0
- package/dist/lib/extractors/logo.d.ts +2 -0
- package/dist/lib/extractors/logo.js +626 -0
- package/dist/lib/extractors/logo.js.map +1 -0
- package/dist/lib/extractors/spacing.d.ts +4 -0
- package/dist/lib/extractors/spacing.js +163 -0
- package/dist/lib/extractors/spacing.js.map +1 -0
- package/dist/lib/extractors/teach.d.ts +1 -0
- package/dist/lib/extractors/teach.js +66 -0
- package/dist/lib/extractors/teach.js.map +1 -0
- package/dist/lib/extractors/typography.d.ts +1 -0
- package/dist/lib/extractors/typography.js +163 -0
- package/dist/lib/extractors/typography.js.map +1 -0
- package/dist/lib/findings.d.ts +34 -0
- package/dist/lib/findings.js +166 -0
- package/dist/lib/findings.js.map +1 -0
- package/dist/lib/formatters/dtcg.d.ts +10 -0
- package/dist/lib/formatters/dtcg.js +416 -0
- package/dist/lib/formatters/dtcg.js.map +1 -0
- package/dist/lib/formatters/html.d.ts +25 -0
- package/dist/lib/formatters/html.js +479 -0
- package/dist/lib/formatters/html.js.map +1 -0
- package/dist/lib/formatters/markdown.d.ts +5 -0
- package/dist/lib/formatters/markdown.js +568 -0
- package/dist/lib/formatters/markdown.js.map +1 -0
- package/dist/lib/formatters/pdf.d.ts +12 -0
- package/dist/lib/formatters/pdf.js +1121 -0
- package/dist/lib/formatters/pdf.js.map +1 -0
- package/dist/lib/formatters/terminal.d.ts +6 -0
- package/dist/lib/formatters/terminal.js +954 -0
- package/dist/lib/formatters/terminal.js.map +1 -0
- package/dist/lib/formatters/theme.d.ts +35 -0
- package/dist/lib/formatters/theme.js +37 -0
- package/dist/lib/formatters/theme.js.map +1 -0
- package/dist/lib/merger.d.ts +14 -0
- package/dist/lib/merger.js +362 -0
- package/dist/lib/merger.js.map +1 -0
- package/dist/lib/normalize.d.ts +29 -0
- package/dist/lib/normalize.js +59 -0
- package/dist/lib/normalize.js.map +1 -0
- package/dist/lib/robots.d.ts +12 -0
- package/dist/lib/robots.js +110 -0
- package/dist/lib/robots.js.map +1 -0
- package/dist/lib/run-summary.d.ts +40 -0
- package/dist/lib/run-summary.js +64 -0
- package/dist/lib/run-summary.js.map +1 -0
- package/dist/lib/types.d.ts +329 -0
- package/dist/lib/types.js +7 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/version.d.ts +134 -0
- package/dist/lib/version.js +153 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/mcp-server.d.ts +11 -0
- package/dist/mcp-server.js +311 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/package.json +106 -0
- package/dist/test/_vitest-shim.d.ts +13 -0
- package/dist/test/_vitest-shim.js +23 -0
- package/dist/test/_vitest-shim.js.map +1 -0
- package/dist/test/cli.test.d.ts +1 -0
- package/dist/test/cli.test.js +24 -0
- package/dist/test/cli.test.js.map +1 -0
- package/dist/test/colors.test.d.ts +1 -0
- package/dist/test/colors.test.js +64 -0
- package/dist/test/colors.test.js.map +1 -0
- package/dist/test/compare.test.d.ts +1 -0
- package/dist/test/compare.test.js +57 -0
- package/dist/test/compare.test.js.map +1 -0
- package/dist/test/drift.test.d.ts +1 -0
- package/dist/test/drift.test.js +53 -0
- package/dist/test/drift.test.js.map +1 -0
- package/dist/test/dtcg-formatter.test.d.ts +1 -0
- package/dist/test/dtcg-formatter.test.js +48 -0
- package/dist/test/dtcg-formatter.test.js.map +1 -0
- package/dist/test/dtcg-validate.test.d.ts +1 -0
- package/dist/test/dtcg-validate.test.js +2129 -0
- package/dist/test/dtcg-validate.test.js.map +1 -0
- package/dist/test/exit-codes.test.d.ts +1 -0
- package/dist/test/exit-codes.test.js +53 -0
- package/dist/test/exit-codes.test.js.map +1 -0
- package/dist/test/findings.test.d.ts +1 -0
- package/dist/test/findings.test.js +77 -0
- package/dist/test/findings.test.js.map +1 -0
- package/dist/test/html.test.d.ts +1 -0
- package/dist/test/html.test.js +95 -0
- package/dist/test/html.test.js.map +1 -0
- package/dist/test/markdown.test.d.ts +1 -0
- package/dist/test/markdown.test.js +145 -0
- package/dist/test/markdown.test.js.map +1 -0
- package/dist/test/merger.test.d.ts +1 -0
- package/dist/test/merger.test.js +98 -0
- package/dist/test/merger.test.js.map +1 -0
- package/dist/test/normalize.test.d.ts +1 -0
- package/dist/test/normalize.test.js +47 -0
- package/dist/test/normalize.test.js.map +1 -0
- package/dist/test/run-summary.test.d.ts +1 -0
- package/dist/test/run-summary.test.js +45 -0
- package/dist/test/run-summary.test.js.map +1 -0
- package/dist/test/version.test.d.ts +1 -0
- package/dist/test/version.test.js +73 -0
- package/dist/test/version.test.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../lib/dtcg/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI exit-code contract. A pipeline branches on these to tell apart "design
|
|
3
|
+
* drifted" (review the diff) from "extraction broke" (retry / investigate):
|
|
4
|
+
* 0 success / stable 1 drift detected (--compare)
|
|
5
|
+
* 2 extraction failure 67 navigation/connection timeout (retryable, try --slow)
|
|
6
|
+
*
|
|
7
|
+
* Kept in its own module (not index.ts, which runs the CLI on import) so the
|
|
8
|
+
* classifier is importable and unit-testable without spawning a subprocess.
|
|
9
|
+
* Consumers (dembrandt-next/.github/workflows/drift.yml) depend on these values;
|
|
10
|
+
* changing one is a breaking change to the gate.
|
|
11
|
+
*/
|
|
12
|
+
export declare const EXIT: {
|
|
13
|
+
readonly OK: 0;
|
|
14
|
+
readonly DRIFT: 1;
|
|
15
|
+
readonly RUNTIME: 2;
|
|
16
|
+
readonly TIMEOUT: 67;
|
|
17
|
+
};
|
|
18
|
+
/** Stable failure code surfaced to CI alongside the numeric exit. */
|
|
19
|
+
export type ErrorCode = "NAVIGATION_TIMEOUT" | "EXTRACTION_FAILED";
|
|
20
|
+
/**
|
|
21
|
+
* Classify an extraction failure into a stable {code, exit} for CI consumers.
|
|
22
|
+
* Network/DNS/timeout errors map to the retryable TIMEOUT exit; everything else
|
|
23
|
+
* is a generic RUNTIME failure. Reads only `err.message`, so a bare string or a
|
|
24
|
+
* malformed error never throws.
|
|
25
|
+
*/
|
|
26
|
+
export declare function classifyError(err: any): {
|
|
27
|
+
code: ErrorCode;
|
|
28
|
+
exit: number;
|
|
29
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI exit-code contract. A pipeline branches on these to tell apart "design
|
|
3
|
+
* drifted" (review the diff) from "extraction broke" (retry / investigate):
|
|
4
|
+
* 0 success / stable 1 drift detected (--compare)
|
|
5
|
+
* 2 extraction failure 67 navigation/connection timeout (retryable, try --slow)
|
|
6
|
+
*
|
|
7
|
+
* Kept in its own module (not index.ts, which runs the CLI on import) so the
|
|
8
|
+
* classifier is importable and unit-testable without spawning a subprocess.
|
|
9
|
+
* Consumers (dembrandt-next/.github/workflows/drift.yml) depend on these values;
|
|
10
|
+
* changing one is a breaking change to the gate.
|
|
11
|
+
*/
|
|
12
|
+
export const EXIT = { OK: 0, DRIFT: 1, RUNTIME: 2, TIMEOUT: 67 };
|
|
13
|
+
/**
|
|
14
|
+
* Classify an extraction failure into a stable {code, exit} for CI consumers.
|
|
15
|
+
* Network/DNS/timeout errors map to the retryable TIMEOUT exit; everything else
|
|
16
|
+
* is a generic RUNTIME failure. Reads only `err.message`, so a bare string or a
|
|
17
|
+
* malformed error never throws.
|
|
18
|
+
*/
|
|
19
|
+
export function classifyError(err) {
|
|
20
|
+
const m = String(err?.message ?? "");
|
|
21
|
+
if (/Timeout|net::ERR_|ECONNREFUSED|ETIMEDOUT|ENOTFOUND|ERR_NAME_NOT_RESOLVED/i.test(m)) {
|
|
22
|
+
return { code: "NAVIGATION_TIMEOUT", exit: EXIT.TIMEOUT };
|
|
23
|
+
}
|
|
24
|
+
return { code: "EXTRACTION_FAILED", exit: EXIT.RUNTIME };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=exit-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../../lib/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAW,CAAC;AAK1E;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACrC,IAAI,2EAA2E,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function extractBreakpoints(page: any): Promise<any>;
|
|
2
|
+
export declare function detectIconSystem(page: any): Promise<any>;
|
|
3
|
+
export declare function detectFrameworks(page: any): Promise<any>;
|
|
4
|
+
export declare function extractGradients(page: any): Promise<any>;
|
|
5
|
+
export declare function extractMotion(page: any): Promise<any>;
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
export async function extractBreakpoints(page) {
|
|
2
|
+
return await page.evaluate(() => {
|
|
3
|
+
const breakpoints = new Set();
|
|
4
|
+
for (const sheet of document.styleSheets) {
|
|
5
|
+
try {
|
|
6
|
+
for (const rule of (sheet.cssRules || [])) {
|
|
7
|
+
if (rule.media) {
|
|
8
|
+
const match = rule.media.mediaText.match(/(\d+)px/g);
|
|
9
|
+
if (match)
|
|
10
|
+
match.forEach((m) => breakpoints.add(parseInt(m)));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
catch (e) { }
|
|
15
|
+
}
|
|
16
|
+
return Array.from(breakpoints)
|
|
17
|
+
.sort((a, b) => a - b)
|
|
18
|
+
.map((px) => ({ px: px + "px" }));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export async function detectIconSystem(page) {
|
|
22
|
+
return await page.evaluate(() => {
|
|
23
|
+
const systems = [];
|
|
24
|
+
if (document.querySelector('[class*="fa-"]')) {
|
|
25
|
+
systems.push({ name: "Font Awesome", type: "icon-font" });
|
|
26
|
+
}
|
|
27
|
+
if (document.querySelector('[class*="material-icons"]')) {
|
|
28
|
+
systems.push({ name: "Material Icons", type: "icon-font" });
|
|
29
|
+
}
|
|
30
|
+
if (document.querySelector('svg[class*="heroicon"]') || document.querySelector('svg[data-slot="icon"]')) {
|
|
31
|
+
systems.push({ name: "Heroicons", type: "svg" });
|
|
32
|
+
}
|
|
33
|
+
if (document.querySelector('svg[class*="hugeicons"]') || document.querySelector('[class*="hugeicons-"]')) {
|
|
34
|
+
systems.push({ name: "Hugeicons", type: "svg" });
|
|
35
|
+
}
|
|
36
|
+
if (document.querySelector('ion-icon') || document.querySelector('[class*="ionicons"]')) {
|
|
37
|
+
systems.push({ name: "Ionicons", type: "svg" });
|
|
38
|
+
}
|
|
39
|
+
if (document.querySelector('svg[data-feather]') || document.querySelector('i[data-feather]') || document.querySelector('[class*="feather-"]')) {
|
|
40
|
+
systems.push({ name: "Feather Icons", type: "svg" });
|
|
41
|
+
}
|
|
42
|
+
if (document.querySelector('svg[class*="icon"]')) {
|
|
43
|
+
systems.push({ name: "SVG Icons", type: "svg" });
|
|
44
|
+
}
|
|
45
|
+
return systems;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
export async function detectFrameworks(page) {
|
|
49
|
+
return await page.evaluate(() => {
|
|
50
|
+
const frameworks = [];
|
|
51
|
+
const html = document.documentElement.outerHTML;
|
|
52
|
+
const body = document.body;
|
|
53
|
+
function countMatches(selector) {
|
|
54
|
+
try {
|
|
55
|
+
return document.querySelectorAll(selector).length;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function hasResource(pattern) {
|
|
62
|
+
const links = Array.from(document.querySelectorAll('link[href], script[src]'));
|
|
63
|
+
return links.some((el) => pattern.test(el.href || el.src));
|
|
64
|
+
}
|
|
65
|
+
// Tailwind CSS
|
|
66
|
+
const tailwindEvidence = [];
|
|
67
|
+
if (/\b\w+-\[[^\]]+\]/.test(html))
|
|
68
|
+
tailwindEvidence.push('arbitrary values (e.g., top-[117px])');
|
|
69
|
+
if (/(sm|md|lg|xl|2xl|dark|hover|focus|group-hover|peer-):[a-z]/.test(html))
|
|
70
|
+
tailwindEvidence.push('responsive/state modifiers');
|
|
71
|
+
if (hasResource(/tailwindcss|tailwind\.css|cdn\.tailwindcss/))
|
|
72
|
+
tailwindEvidence.push('stylesheet');
|
|
73
|
+
if (tailwindEvidence.length >= 2) {
|
|
74
|
+
frameworks.push({ name: 'Tailwind CSS', confidence: 'high', evidence: tailwindEvidence.join(', ') });
|
|
75
|
+
}
|
|
76
|
+
// Bootstrap
|
|
77
|
+
const bootstrapEvidence = [];
|
|
78
|
+
const hasContainer = countMatches('.container, .container-fluid') > 0;
|
|
79
|
+
const hasRow = countMatches('.row') > 0;
|
|
80
|
+
const hasCol = countMatches('[class*="col-"]') > 0;
|
|
81
|
+
if (hasContainer && hasRow && hasCol)
|
|
82
|
+
bootstrapEvidence.push('grid system (container + row + col)');
|
|
83
|
+
if (/\bbtn-primary\b|\bbtn-secondary\b|\bbtn-success\b/.test(html))
|
|
84
|
+
bootstrapEvidence.push('button variants');
|
|
85
|
+
if (hasResource(/bootstrap\.min\.css|bootstrap\.css|getbootstrap\.com/))
|
|
86
|
+
bootstrapEvidence.push('stylesheet');
|
|
87
|
+
if (bootstrapEvidence.length >= 2) {
|
|
88
|
+
frameworks.push({ name: 'Bootstrap', confidence: 'high', evidence: bootstrapEvidence.join(', ') });
|
|
89
|
+
}
|
|
90
|
+
// Material UI (MUI)
|
|
91
|
+
const muiCount = countMatches('[class*="MuiBox-"], [class*="MuiButton-"], [class*="Mui"]');
|
|
92
|
+
if (muiCount > 3)
|
|
93
|
+
frameworks.push({ name: 'Material UI (MUI)', confidence: 'high', evidence: `${muiCount} MUI components` });
|
|
94
|
+
// Chakra UI
|
|
95
|
+
const chakraCount = countMatches('[class*="chakra-"]');
|
|
96
|
+
if (chakraCount > 3)
|
|
97
|
+
frameworks.push({ name: 'Chakra UI', confidence: 'high', evidence: `${chakraCount} Chakra components` });
|
|
98
|
+
// Ant Design
|
|
99
|
+
const antCount = countMatches('[class^="ant-"], [class*=" ant-"]');
|
|
100
|
+
if (antCount > 3)
|
|
101
|
+
frameworks.push({ name: 'Ant Design', confidence: 'high', evidence: `${antCount} Ant components` });
|
|
102
|
+
// Vuetify
|
|
103
|
+
const vuetifySpecific = countMatches('[class*="v-btn"], [class*="v-card"], [class*="v-app"], [class*="v-toolbar"], [class*="v-navigation"], [class*="v-list"], [class*="v-sheet"]');
|
|
104
|
+
const hasVuetifyTheme = body.classList.contains('theme--light') || body.classList.contains('theme--dark');
|
|
105
|
+
const hasVuetifyApp = countMatches('[class*="v-application"]') > 0;
|
|
106
|
+
if ((vuetifySpecific > 8 && hasVuetifyApp) || (hasVuetifyTheme && vuetifySpecific > 5)) {
|
|
107
|
+
frameworks.push({ name: 'Vuetify', confidence: 'high', evidence: `${vuetifySpecific} Vuetify components` });
|
|
108
|
+
}
|
|
109
|
+
// Shopify Polaris
|
|
110
|
+
const polarisCount = countMatches('[class*="Polaris-"]');
|
|
111
|
+
if (polarisCount > 2)
|
|
112
|
+
frameworks.push({ name: 'Shopify Polaris', confidence: 'high', evidence: `${polarisCount} Polaris components` });
|
|
113
|
+
// Radix UI
|
|
114
|
+
const radixCount = document.querySelectorAll('[data-radix-], [data-state]').length;
|
|
115
|
+
if (radixCount > 5)
|
|
116
|
+
frameworks.push({ name: 'Radix UI', confidence: 'high', evidence: `${radixCount} Radix primitives` });
|
|
117
|
+
// DaisyUI
|
|
118
|
+
if (tailwindEvidence.length >= 2) {
|
|
119
|
+
const daisySpecific = countMatches('.btn-primary.btn, .badge, .drawer, .swap, .mockup-code');
|
|
120
|
+
const hasDaisyTheme = body.hasAttribute('data-theme');
|
|
121
|
+
if (daisySpecific > 3 || hasDaisyTheme) {
|
|
122
|
+
frameworks.push({ name: 'DaisyUI', confidence: 'high', evidence: `Tailwind + ${daisySpecific} DaisyUI components` });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Foundation
|
|
126
|
+
const foundationEvidence = [];
|
|
127
|
+
if (countMatches('.grid-x, .grid-y, .cell') > 0 || countMatches('.button.primary, .button.secondary') > 0)
|
|
128
|
+
foundationEvidence.push('grid/button system');
|
|
129
|
+
if (hasResource(/foundation\.min\.css|foundation\.css|zurb\.com\/foundation/))
|
|
130
|
+
foundationEvidence.push('stylesheet');
|
|
131
|
+
if (foundationEvidence.length >= 1 || countMatches('[data-foundation]') > 0) {
|
|
132
|
+
frameworks.push({ name: 'Foundation', confidence: 'high', evidence: foundationEvidence.join(', ') || 'data attributes' });
|
|
133
|
+
}
|
|
134
|
+
// Bulma
|
|
135
|
+
const bulmaEvidence = [];
|
|
136
|
+
if (countMatches('.columns, .column') > 0 && countMatches('.column') > 2)
|
|
137
|
+
bulmaEvidence.push('columns system');
|
|
138
|
+
if (/\bbutton is-primary\b|\bbutton is-link\b/.test(html))
|
|
139
|
+
bulmaEvidence.push('button modifiers');
|
|
140
|
+
if (hasResource(/bulma\.min\.css|bulma\.css/))
|
|
141
|
+
bulmaEvidence.push('stylesheet');
|
|
142
|
+
if (bulmaEvidence.length >= 2)
|
|
143
|
+
frameworks.push({ name: 'Bulma', confidence: 'high', evidence: bulmaEvidence.join(', ') });
|
|
144
|
+
// Semantic UI
|
|
145
|
+
const semanticCount = countMatches('.ui.button, .ui.menu, .ui.card, .ui.grid');
|
|
146
|
+
if (semanticCount > 3 || hasResource(/semantic\.min\.css|semantic-ui/)) {
|
|
147
|
+
frameworks.push({ name: 'Semantic UI', confidence: 'high', evidence: `${semanticCount} .ui components` });
|
|
148
|
+
}
|
|
149
|
+
// UIkit
|
|
150
|
+
const uikitCount = countMatches('[class*="uk-"], [uk-grid], [uk-navbar]');
|
|
151
|
+
if (uikitCount > 3 || hasResource(/uikit\.min\.css|getuikit\.com/)) {
|
|
152
|
+
frameworks.push({ name: 'UIkit', confidence: 'high', evidence: `${uikitCount} uk- components` });
|
|
153
|
+
}
|
|
154
|
+
// shadcn/ui
|
|
155
|
+
const shadcnClasses = /\bcn\(|\bslot-\w+|\bdata-\[state=/.test(html);
|
|
156
|
+
const hasShadcnComponents = countMatches('[data-slot], [data-state]') > 5;
|
|
157
|
+
if (tailwindEvidence.length >= 2 && radixCount > 3 && (shadcnClasses || hasShadcnComponents)) {
|
|
158
|
+
frameworks.push({ name: 'shadcn/ui', confidence: 'medium', evidence: 'Tailwind + Radix + component patterns' });
|
|
159
|
+
}
|
|
160
|
+
// Headless UI
|
|
161
|
+
const headlessCount = document.querySelectorAll('[aria-controls][aria-expanded], [role="dialog"][data-headlessui]').length;
|
|
162
|
+
if (tailwindEvidence.length >= 2 && headlessCount > 2) {
|
|
163
|
+
frameworks.push({ name: 'Headless UI', confidence: 'high', evidence: `${headlessCount} headless components with Tailwind` });
|
|
164
|
+
}
|
|
165
|
+
// PrimeReact/Vue/NG
|
|
166
|
+
const primeCount = countMatches('[class*="p-"], .p-component, .p-button, .p-datatable');
|
|
167
|
+
if (primeCount > 5)
|
|
168
|
+
frameworks.push({ name: 'PrimeReact/Vue/NG', confidence: 'high', evidence: `${primeCount} Prime components` });
|
|
169
|
+
// Mantine
|
|
170
|
+
const mantineCount = countMatches('[class*="mantine-"], [data-mantine]');
|
|
171
|
+
if (mantineCount > 3)
|
|
172
|
+
frameworks.push({ name: 'Mantine', confidence: 'high', evidence: `${mantineCount} Mantine components` });
|
|
173
|
+
// Carbon Design System
|
|
174
|
+
const carbonCount = countMatches('[class*="cds--"], [class*="bx--"]');
|
|
175
|
+
if (carbonCount > 3)
|
|
176
|
+
frameworks.push({ name: 'Carbon Design System', confidence: 'high', evidence: `${carbonCount} Carbon components` });
|
|
177
|
+
// Fluent UI
|
|
178
|
+
const fluentCount = countMatches('[class*="ms-"], .ms-Button, .ms-TextField');
|
|
179
|
+
if (fluentCount > 5)
|
|
180
|
+
frameworks.push({ name: 'Fluent UI', confidence: 'high', evidence: `${fluentCount} Fluent components` });
|
|
181
|
+
// Quasar
|
|
182
|
+
const quasarCount = countMatches('[class*="q-"]');
|
|
183
|
+
if (quasarCount > 5 || body.classList.contains('q-app')) {
|
|
184
|
+
frameworks.push({ name: 'Quasar', confidence: 'high', evidence: `${quasarCount} q- components` });
|
|
185
|
+
}
|
|
186
|
+
// Element Plus/UI
|
|
187
|
+
const elementCount = countMatches('[class*="el-"]');
|
|
188
|
+
if (elementCount > 5)
|
|
189
|
+
frameworks.push({ name: 'Element Plus/UI', confidence: 'high', evidence: `${elementCount} el- components` });
|
|
190
|
+
return frameworks;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
export async function extractGradients(page) {
|
|
194
|
+
return await page.evaluate(() => {
|
|
195
|
+
const seen = new Map();
|
|
196
|
+
const els = document.querySelectorAll('*');
|
|
197
|
+
let checked = 0;
|
|
198
|
+
for (const el of els) {
|
|
199
|
+
if (checked++ > 2000)
|
|
200
|
+
break;
|
|
201
|
+
if (el.style.backgroundImage === 'none')
|
|
202
|
+
continue;
|
|
203
|
+
if (el.offsetWidth === 0 && el.offsetHeight === 0)
|
|
204
|
+
continue;
|
|
205
|
+
const s = getComputedStyle(el);
|
|
206
|
+
const bg = s.backgroundImage;
|
|
207
|
+
if (!bg || bg === 'none')
|
|
208
|
+
continue;
|
|
209
|
+
const gradients = [];
|
|
210
|
+
let depth = 0, start = 0;
|
|
211
|
+
for (let i = 0; i < bg.length; i++) {
|
|
212
|
+
if (bg[i] === '(')
|
|
213
|
+
depth++;
|
|
214
|
+
else if (bg[i] === ')')
|
|
215
|
+
depth--;
|
|
216
|
+
else if (bg[i] === ',' && depth === 0) {
|
|
217
|
+
gradients.push(bg.slice(start, i).trim());
|
|
218
|
+
start = i + 1;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
gradients.push(bg.slice(start).trim());
|
|
222
|
+
for (const grad of gradients) {
|
|
223
|
+
if (!/^(repeating-)?(linear|radial|conic)-gradient/.test(grad))
|
|
224
|
+
continue;
|
|
225
|
+
const base = grad.replace(/^repeating-/, '');
|
|
226
|
+
const repeating = grad.startsWith('repeating-');
|
|
227
|
+
const type = (base.startsWith('linear') ? 'linear' : base.startsWith('radial') ? 'radial' : 'conic') + (repeating ? '-repeating' : '');
|
|
228
|
+
const key = grad.replace(/\s+/g, ' ');
|
|
229
|
+
if (seen.has(key)) {
|
|
230
|
+
seen.get(key).count++;
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const stopColors = [];
|
|
234
|
+
const stopRe = /#[0-9a-f]{3,8}|rgba?\([^)]+\)|hsla?\([^)]+\)|oklch\([^)]+\)|oklab\([^)]+\)/gi;
|
|
235
|
+
let m;
|
|
236
|
+
while ((m = stopRe.exec(grad)) !== null)
|
|
237
|
+
stopColors.push(m[0]);
|
|
238
|
+
seen.set(key, { gradient: key, type, stopColors, count: 1 });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return Array.from(seen.values())
|
|
242
|
+
.sort((a, b) => b.count - a.count)
|
|
243
|
+
.slice(0, 20);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
export async function extractMotion(page) {
|
|
247
|
+
// Phase 1: static pass — collect durations, easings, animations per semantic context
|
|
248
|
+
const staticMotion = await page.evaluate(() => {
|
|
249
|
+
function getContext(el) {
|
|
250
|
+
const tag = el.tagName.toLowerCase();
|
|
251
|
+
const role = el.getAttribute('role') || '';
|
|
252
|
+
const cls = (typeof el.className === 'string' ? el.className : '').toLowerCase();
|
|
253
|
+
const id = (el.id || '').toLowerCase();
|
|
254
|
+
const hint = cls + ' ' + id + ' ' + role;
|
|
255
|
+
if (tag === 'button' || role === 'button' || hint.includes('btn'))
|
|
256
|
+
return 'button';
|
|
257
|
+
if (tag === 'a' || role === 'link')
|
|
258
|
+
return 'link';
|
|
259
|
+
if (tag === 'nav' || role === 'navigation' || hint.includes('nav') || hint.includes('menu'))
|
|
260
|
+
return 'nav';
|
|
261
|
+
if (hint.includes('modal') || hint.includes('dialog') || hint.includes('overlay') || hint.includes('drawer'))
|
|
262
|
+
return 'modal';
|
|
263
|
+
if (hint.includes('card') || hint.includes('tile') || hint.includes('item'))
|
|
264
|
+
return 'card';
|
|
265
|
+
if (hint.includes('hero') || hint.includes('banner') || hint.includes('header'))
|
|
266
|
+
return 'hero';
|
|
267
|
+
if (hint.includes('tooltip') || hint.includes('popover') || hint.includes('dropdown'))
|
|
268
|
+
return 'overlay';
|
|
269
|
+
if (tag === 'input' || tag === 'textarea' || tag === 'select')
|
|
270
|
+
return 'input';
|
|
271
|
+
if (hint.includes('image') || hint.includes('img') || hint.includes('media') || hint.includes('video'))
|
|
272
|
+
return 'media';
|
|
273
|
+
return 'other';
|
|
274
|
+
}
|
|
275
|
+
function parseDurationMs(val) {
|
|
276
|
+
if (!val || val === '0s')
|
|
277
|
+
return 0;
|
|
278
|
+
return val.endsWith('ms') ? parseFloat(val) : parseFloat(val) * 1000;
|
|
279
|
+
}
|
|
280
|
+
function classifyEasing(val) {
|
|
281
|
+
if (!val)
|
|
282
|
+
return null;
|
|
283
|
+
if (val === 'linear')
|
|
284
|
+
return 'linear';
|
|
285
|
+
if (val === 'ease')
|
|
286
|
+
return 'ease';
|
|
287
|
+
if (val === 'ease-in')
|
|
288
|
+
return 'ease-in';
|
|
289
|
+
if (val === 'ease-out')
|
|
290
|
+
return 'ease-out';
|
|
291
|
+
if (val === 'ease-in-out')
|
|
292
|
+
return 'ease-in-out';
|
|
293
|
+
// detect spring-like: high y1/y2 overshoot
|
|
294
|
+
const m = val.match(/cubic-bezier\(([\d.]+),\s*([\d.-]+),\s*([\d.]+),\s*([\d.-]+)\)/);
|
|
295
|
+
if (m) {
|
|
296
|
+
const y1 = parseFloat(m[2]), y2 = parseFloat(m[4]);
|
|
297
|
+
if (y1 < 0 || y1 > 1 || y2 < 0 || y2 > 1)
|
|
298
|
+
return 'spring';
|
|
299
|
+
const x1 = parseFloat(m[1]);
|
|
300
|
+
if (x1 < 0.2)
|
|
301
|
+
return 'ease-out'; // fast start
|
|
302
|
+
if (x1 > 0.6)
|
|
303
|
+
return 'ease-in'; // slow start
|
|
304
|
+
return 'custom';
|
|
305
|
+
}
|
|
306
|
+
return 'custom';
|
|
307
|
+
}
|
|
308
|
+
// per-context motion profiles
|
|
309
|
+
const contexts = {};
|
|
310
|
+
const globalDurations = new Map();
|
|
311
|
+
const globalEasings = new Map();
|
|
312
|
+
const globalAnimations = new Map();
|
|
313
|
+
const els = document.querySelectorAll('*');
|
|
314
|
+
let checked = 0;
|
|
315
|
+
for (const el of els) {
|
|
316
|
+
if (checked++ > 3000)
|
|
317
|
+
break;
|
|
318
|
+
if (el.offsetWidth === 0 && el.offsetHeight === 0)
|
|
319
|
+
continue;
|
|
320
|
+
const s = getComputedStyle(el);
|
|
321
|
+
const rawDurations = (s.transitionDuration || '').split(',').map(v => v.trim()).filter(v => v && v !== '0s');
|
|
322
|
+
const rawEasings = (s.transitionTimingFunction || '').split(/,(?![^(]*\))/).map(v => v.trim()).filter(Boolean);
|
|
323
|
+
const rawProps = (s.transitionProperty || '').split(',').map(v => v.trim());
|
|
324
|
+
const animName = s.animationName;
|
|
325
|
+
if (rawDurations.length === 0 && (!animName || animName === 'none'))
|
|
326
|
+
continue;
|
|
327
|
+
const ctx = getContext(el);
|
|
328
|
+
// global tallies
|
|
329
|
+
rawDurations.forEach(d => {
|
|
330
|
+
const ms = parseDurationMs(d);
|
|
331
|
+
if (ms <= 0)
|
|
332
|
+
return;
|
|
333
|
+
const e = globalDurations.get(d) || { value: d, ms, count: 0 };
|
|
334
|
+
e.count++;
|
|
335
|
+
globalDurations.set(d, e);
|
|
336
|
+
});
|
|
337
|
+
rawEasings.forEach(e => {
|
|
338
|
+
const entry = globalEasings.get(e) || { value: e, type: classifyEasing(e), count: 0 };
|
|
339
|
+
entry.count++;
|
|
340
|
+
globalEasings.set(e, entry);
|
|
341
|
+
});
|
|
342
|
+
// per-context profile
|
|
343
|
+
if (ctx !== 'other' && rawDurations.length > 0) {
|
|
344
|
+
if (!contexts[ctx])
|
|
345
|
+
contexts[ctx] = { durations: new Map(), easings: new Map(), props: new Map(), count: 0 };
|
|
346
|
+
const cx = contexts[ctx];
|
|
347
|
+
cx.count++;
|
|
348
|
+
rawDurations.forEach(d => { const e = cx.durations.get(d) || { value: d, ms: parseDurationMs(d), count: 0 }; e.count++; cx.durations.set(d, e); });
|
|
349
|
+
rawEasings.forEach(e => { const entry = cx.easings.get(e) || { value: e, type: classifyEasing(e), count: 0 }; entry.count++; cx.easings.set(e, entry); });
|
|
350
|
+
rawProps.forEach(p => { if (p && p !== 'all' && p !== 'none') {
|
|
351
|
+
const e = cx.props.get(p) || { value: p, count: 0 };
|
|
352
|
+
e.count++;
|
|
353
|
+
cx.props.set(p, e);
|
|
354
|
+
} });
|
|
355
|
+
}
|
|
356
|
+
// animations
|
|
357
|
+
if (animName && animName !== 'none') {
|
|
358
|
+
for (const name of animName.split(',').map(v => v.trim())) {
|
|
359
|
+
if (name === 'none')
|
|
360
|
+
continue;
|
|
361
|
+
const e = globalAnimations.get(name) || { name, duration: s.animationDuration?.split(',')[0]?.trim(), easing: s.animationTimingFunction?.split(',')[0]?.trim(), count: 0, contexts: new Set() };
|
|
362
|
+
e.count++;
|
|
363
|
+
e.contexts.add(ctx);
|
|
364
|
+
globalAnimations.set(name, e);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// serialize
|
|
369
|
+
const serializeCtx = (cx) => ({
|
|
370
|
+
count: cx.count,
|
|
371
|
+
durations: Array.from(cx.durations.values()).sort((a, b) => b.count - a.count).slice(0, 3).map((d) => d.value),
|
|
372
|
+
easing: Array.from(cx.easings.values()).sort((a, b) => b.count - a.count)[0]?.value || null,
|
|
373
|
+
easingType: Array.from(cx.easings.values()).sort((a, b) => b.count - a.count)[0]?.type || null,
|
|
374
|
+
props: Array.from(cx.props.values()).sort((a, b) => b.count - a.count).slice(0, 4).map((p) => p.value),
|
|
375
|
+
});
|
|
376
|
+
const ctxOut = {};
|
|
377
|
+
for (const [k, v] of Object.entries(contexts))
|
|
378
|
+
ctxOut[k] = serializeCtx(v);
|
|
379
|
+
return {
|
|
380
|
+
durations: Array.from(globalDurations.values()).sort((a, b) => a.ms - b.ms),
|
|
381
|
+
easings: Array.from(globalEasings.values()).sort((a, b) => b.count - a.count).slice(0, 8),
|
|
382
|
+
animations: Array.from(globalAnimations.values()).sort((a, b) => b.count - a.count).slice(0, 8).map(a => ({ ...a, contexts: Array.from(a.contexts) })),
|
|
383
|
+
contexts: ctxOut,
|
|
384
|
+
};
|
|
385
|
+
});
|
|
386
|
+
// Phase 2: hover interaction deltas on a sample of interactive elements
|
|
387
|
+
const interactiveDeltas = [];
|
|
388
|
+
try {
|
|
389
|
+
const els = await page.$$('button, a, [role="button"]');
|
|
390
|
+
const sampled = els.slice(0, 12);
|
|
391
|
+
for (const el of sampled) {
|
|
392
|
+
try {
|
|
393
|
+
const visible = await el.evaluate(e => {
|
|
394
|
+
const r = e.getBoundingClientRect();
|
|
395
|
+
const s = getComputedStyle(e);
|
|
396
|
+
return r.width > 0 && r.height > 0 && s.display !== 'none' && s.visibility !== 'hidden';
|
|
397
|
+
});
|
|
398
|
+
if (!visible)
|
|
399
|
+
continue;
|
|
400
|
+
const before = await el.evaluate(e => {
|
|
401
|
+
const s = getComputedStyle(e);
|
|
402
|
+
return { transform: s.transform, opacity: s.opacity, bg: s.backgroundColor, color: s.color, tag: e.tagName.toLowerCase(), text: (e.textContent || '').trim().slice(0, 30) };
|
|
403
|
+
});
|
|
404
|
+
await el.hover({ timeout: 800 }).catch(() => { });
|
|
405
|
+
await page.waitForTimeout(120);
|
|
406
|
+
const after = await el.evaluate(e => {
|
|
407
|
+
const s = getComputedStyle(e);
|
|
408
|
+
return { transform: s.transform, opacity: s.opacity, bg: s.backgroundColor, color: s.color };
|
|
409
|
+
}).catch(() => null);
|
|
410
|
+
if (!after)
|
|
411
|
+
continue;
|
|
412
|
+
const delta = {};
|
|
413
|
+
if (after.transform !== before.transform && after.transform !== 'none')
|
|
414
|
+
delta.transform = after.transform;
|
|
415
|
+
if (after.opacity !== before.opacity)
|
|
416
|
+
delta.opacity = { from: before.opacity, to: after.opacity };
|
|
417
|
+
if (after.bg !== before.bg)
|
|
418
|
+
delta.background = { from: before.bg, to: after.bg };
|
|
419
|
+
if (after.color !== before.color)
|
|
420
|
+
delta.color = { from: before.color, to: after.color };
|
|
421
|
+
if (Object.keys(delta).length > 0) {
|
|
422
|
+
// classify pattern
|
|
423
|
+
let pattern = 'color-shift';
|
|
424
|
+
if (delta.transform) {
|
|
425
|
+
const t = delta.transform;
|
|
426
|
+
if (/scale\(([\d.]+)/.test(t)) {
|
|
427
|
+
const s = parseFloat(t.match(/scale\(([\d.]+)/)[1]);
|
|
428
|
+
pattern = s > 1 ? 'scale-up' : 'scale-down';
|
|
429
|
+
}
|
|
430
|
+
else if (/translateY/.test(t))
|
|
431
|
+
pattern = 'slide-y';
|
|
432
|
+
else if (/translateX/.test(t))
|
|
433
|
+
pattern = 'slide-x';
|
|
434
|
+
else
|
|
435
|
+
pattern = 'transform';
|
|
436
|
+
}
|
|
437
|
+
else if (delta.opacity) {
|
|
438
|
+
pattern = parseFloat(delta.opacity.to) > parseFloat(delta.opacity.from) ? 'fade-in' : 'fade-out';
|
|
439
|
+
}
|
|
440
|
+
interactiveDeltas.push({ tag: before.tag, text: before.text, pattern, delta });
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
catch { /* stale element */ }
|
|
444
|
+
}
|
|
445
|
+
await page.mouse.move(0, 0).catch(() => { });
|
|
446
|
+
}
|
|
447
|
+
catch { /* skip */ }
|
|
448
|
+
return { ...staticMotion, interactiveDeltas };
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=breakpoints.js.map
|