@vadimcomanescu/nadicode-design-system 4.0.0 → 4.0.2
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/.agents/skills/seed/SKILL.md +38 -166
- package/.agents/skills/seed/references/animation.md +2 -2
- package/.agents/skills/seed/references/responsive.md +1 -1
- package/README.md +2 -2
- package/dist/catalog/components.js +4 -4
- package/dist/{chunk-7A2RXKGH.js → chunk-GJ557DGH.js} +1 -1
- package/dist/{chunk-7XLZCXUL.js → chunk-K4U67BVG.js} +1 -1
- package/dist/{chunk-TUJZMJXW.js → chunk-LK2L3C7D.js} +1 -1
- package/dist/{chunk-DSMGCFMJ.js → chunk-POFFOUQW.js} +2 -5
- package/dist/components/blocks/HeroBlock.js +2 -2
- package/dist/components/page-kits/LandingPageKit.js +3 -3
- package/dist/components/page-kits/ServiceSuitePageKit.js +3 -3
- package/dist/components/ui/AvatarUpload.js +1 -1
- package/dist/components/ui/MouseEffect.js +1 -1
- package/eslint-rules/nadicode/config.js +1 -0
- package/eslint-rules/nadicode/index.js +2 -0
- package/eslint-rules/nadicode/rules/__tests__/require-catalog-import.test.js +111 -0
- package/eslint-rules/nadicode/rules/no-has-svg-selector.js +1 -1
- package/eslint-rules/nadicode/rules/require-catalog-import.js +59 -0
- package/package.json +1 -338
- package/scripts/ds-check.mjs +0 -10
- package/scripts/sync-seed-skill.mjs +0 -3
- package/.agents/skills/seed/contract.md +0 -104
- package/.agents/skills/seed/intent-map.md +0 -320
- package/.agents/skills/seed/recipes/agency-home.md +0 -311
- package/.agents/skills/seed/recipes/agents-chat.md +0 -305
- package/.agents/skills/seed/recipes/analytics.md +0 -253
- package/.agents/skills/seed/recipes/auth.md +0 -254
- package/.agents/skills/seed/recipes/blog-content.md +0 -307
- package/.agents/skills/seed/recipes/checkout.md +0 -311
- package/.agents/skills/seed/recipes/company-about.md +0 -276
- package/.agents/skills/seed/recipes/company-contact.md +0 -234
- package/.agents/skills/seed/recipes/crud-form.md +0 -233
- package/.agents/skills/seed/recipes/crud-list-detail.md +0 -230
- package/.agents/skills/seed/recipes/dashboard.md +0 -354
- package/.agents/skills/seed/recipes/digital-workers.md +0 -314
- package/.agents/skills/seed/recipes/error-pages.md +0 -199
- package/.agents/skills/seed/recipes/marketing-landing.md +0 -293
- package/.agents/skills/seed/recipes/marketing-shell.md +0 -156
- package/.agents/skills/seed/recipes/navigation-shell.md +0 -786
- package/.agents/skills/seed/recipes/onboarding.md +0 -258
- package/.agents/skills/seed/recipes/pricing.md +0 -271
- package/.agents/skills/seed/recipes/service-detail.md +0 -302
- package/.agents/skills/seed/recipes/settings.md +0 -252
- package/.agents/skills/seed/references/blocks.md +0 -128
- package/.agents/skills/seed/references/components.md +0 -287
- package/.agents/skills/seed/references/icons.md +0 -169
- package/.agents/skills/seed/references/nextjs.md +0 -49
- package/.agents/skills/seed/references/tokens.md +0 -88
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getFilename, isTestFile, normalizePath } from "../utils.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Matches import sources that resolve to a block or page-kit file.
|
|
5
|
+
* Catches both absolute alias (@/components/blocks/X) and relative (../../blocks/X).
|
|
6
|
+
*/
|
|
7
|
+
const BLOCK_OR_PAGEKIT_RE = /(?:^|\/)(?:blocks|page-kits)\//;
|
|
8
|
+
|
|
9
|
+
/** Files that are allowed to use direct block/page-kit imports. */
|
|
10
|
+
const EXEMPT_PATH_MARKERS = [
|
|
11
|
+
"/src/catalog/components.tsx",
|
|
12
|
+
"/src/components/blocks/",
|
|
13
|
+
"/src/components/page-kits/",
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
function isExemptFile(filename) {
|
|
17
|
+
return EXEMPT_PATH_MARKERS.some((marker) => filename.includes(marker));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const rule = {
|
|
21
|
+
meta: {
|
|
22
|
+
type: "problem",
|
|
23
|
+
docs: {
|
|
24
|
+
description:
|
|
25
|
+
"Require blocks and page-kits to be imported from @/catalog/components via seedComponents (ADR 0009).",
|
|
26
|
+
},
|
|
27
|
+
schema: [],
|
|
28
|
+
},
|
|
29
|
+
create(context) {
|
|
30
|
+
const filename = normalizePath(getFilename(context));
|
|
31
|
+
if (isTestFile(filename)) return {};
|
|
32
|
+
if (isExemptFile(filename)) return {};
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
ImportDeclaration(node) {
|
|
36
|
+
// Skip type-only imports
|
|
37
|
+
if (node.importKind === "type") return;
|
|
38
|
+
|
|
39
|
+
const source = node.source.value;
|
|
40
|
+
if (typeof source !== "string") return;
|
|
41
|
+
|
|
42
|
+
if (!BLOCK_OR_PAGEKIT_RE.test(source)) return;
|
|
43
|
+
|
|
44
|
+
// Extract the component name from the last path segment
|
|
45
|
+
const segments = source.split("/");
|
|
46
|
+
const name = segments[segments.length - 1] || segments[segments.length - 2];
|
|
47
|
+
|
|
48
|
+
context.report({
|
|
49
|
+
node,
|
|
50
|
+
message:
|
|
51
|
+
"Import '{{name}}' from '@/catalog/components' via seedComponents. Direct block/page-kit imports are not allowed (ADR 0009).",
|
|
52
|
+
data: { name },
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default rule;
|