@gallop.software/canon 2.16.1 → 2.18.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/eslint/configs/recommended.d.ts +0 -1
- package/dist/eslint/configs/recommended.js +1 -3
- package/dist/eslint/index.d.ts +0 -8
- package/dist/eslint/index.js +1 -7
- package/package.json +1 -1
- package/patterns/008-tailwind-only.md +1 -1
- package/schema.json +0 -10
- package/dist/eslint/rules/no-inline-styles.d.ts +0 -5
- package/dist/eslint/rules/no-inline-styles.js +0 -40
|
@@ -9,7 +9,6 @@ declare const recommendedRules: {
|
|
|
9
9
|
readonly 'gallop/prefer-typography-components': "warn";
|
|
10
10
|
readonly 'gallop/prefer-layout-components': "warn";
|
|
11
11
|
readonly 'gallop/background-image-rounded': "warn";
|
|
12
|
-
readonly 'gallop/no-inline-styles': "warn";
|
|
13
12
|
readonly 'gallop/no-arbitrary-colors': "warn";
|
|
14
13
|
readonly 'gallop/no-cross-zone-imports': "warn";
|
|
15
14
|
readonly 'gallop/no-data-imports': "warn";
|
|
@@ -15,8 +15,6 @@ const recommendedRules = {
|
|
|
15
15
|
'gallop/prefer-layout-components': 'warn',
|
|
16
16
|
// Background images must have rounded="rounded-none"
|
|
17
17
|
'gallop/background-image-rounded': 'warn',
|
|
18
|
-
// No inline styles, use Tailwind exclusively
|
|
19
|
-
'gallop/no-inline-styles': 'warn',
|
|
20
18
|
// Use defined color tokens, not arbitrary colors
|
|
21
19
|
'gallop/no-arbitrary-colors': 'warn',
|
|
22
20
|
// Enforce import boundaries between Canon zones
|
|
@@ -25,4 +23,4 @@ const recommendedRules = {
|
|
|
25
23
|
'gallop/no-data-imports': 'warn',
|
|
26
24
|
};
|
|
27
25
|
export default recommendedRules;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb21tZW5kZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXNsaW50L2NvbmZpZ3MvcmVjb21tZW5kZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixxQ0FBcUM7SUFDckMseUJBQXlCLEVBQUUsTUFBTTtJQUVqQyx1Q0FBdUM7SUFDdkMsZ0NBQWdDLEVBQUUsTUFBTTtJQUV4Qyw0REFBNEQ7SUFDNUQsK0JBQStCLEVBQUUsTUFBTTtJQUV2Qyx1REFBdUQ7SUFDdkQscUNBQXFDLEVBQUUsTUFBTTtJQUU3Qyx3REFBd0Q7SUFDeEQsaUNBQWlDLEVBQUUsTUFBTTtJQUV6QyxxREFBcUQ7SUFDckQsaUNBQWlDLEVBQUUsTUFBTTtJQUV6QyxpREFBaUQ7SUFDakQsNEJBQTRCLEVBQUUsTUFBTTtJQUVwQyxnREFBZ0Q7SUFDaEQsOEJBQThCLEVBQUUsTUFBTTtJQUV0QyxzREFBc0Q7SUFDdEQsd0JBQXdCLEVBQUUsTUFBTTtDQUN4QixDQUFBO0FBRVYsZUFBZSxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVjb21tZW5kZWQgY29uZmlndXJhdGlvbiBmb3IgRVNMaW50IGZsYXQgY29uZmlnXG4gKiBBIHNlbnNpYmxlIGRlZmF1bHQgZm9yIGFueSBHYWxsb3AtYmFzZWQgdGVtcGxhdGVcbiAqL1xuY29uc3QgcmVjb21tZW5kZWRSdWxlcyA9IHtcbiAgLy8gQmxvY2tzIHNob3VsZCBiZSBzZXJ2ZXIgY29tcG9uZW50c1xuICAnZ2FsbG9wL25vLWNsaWVudC1ibG9ja3MnOiAnd2FybicsXG5cbiAgLy8gU2VjdGlvbiBhbHJlYWR5IHByb3ZpZGVzIGNvbnRhaW5tZW50XG4gICdnYWxsb3Avbm8tY29udGFpbmVyLWluLXNlY3Rpb24nOiAnd2FybicsXG5cbiAgLy8gVXNlIGNvbXBvbmVudCBwcm9wcyBpbnN0ZWFkIG9mIGNsYXNzTmFtZSBmb3Igc3R5bGUgdmFsdWVzXG4gICdnYWxsb3AvcHJlZmVyLWNvbXBvbmVudC1wcm9wcyc6ICd3YXJuJyxcblxuICAvLyBVc2UgVHlwb2dyYXBoeSBjb21wb25lbnRzIGluc3RlYWQgb2YgcmF3IHAvc3BhbiB0YWdzXG4gICdnYWxsb3AvcHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cyc6ICd3YXJuJyxcblxuICAvLyBVc2UgR3JpZC9Db2x1bW5zIGluc3RlYWQgb2YgcmF3IGRpdiB3aXRoIGdyaWQgY2xhc3Nlc1xuICAnZ2FsbG9wL3ByZWZlci1sYXlvdXQtY29tcG9uZW50cyc6ICd3YXJuJyxcblxuICAvLyBCYWNrZ3JvdW5kIGltYWdlcyBtdXN0IGhhdmUgcm91bmRlZD1cInJvdW5kZWQtbm9uZVwiXG4gICdnYWxsb3AvYmFja2dyb3VuZC1pbWFnZS1yb3VuZGVkJzogJ3dhcm4nLFxuXG4gIC8vIFVzZSBkZWZpbmVkIGNvbG9yIHRva2Vucywgbm90IGFyYml0cmFyeSBjb2xvcnNcbiAgJ2dhbGxvcC9uby1hcmJpdHJhcnktY29sb3JzJzogJ3dhcm4nLFxuXG4gIC8vIEVuZm9yY2UgaW1wb3J0IGJvdW5kYXJpZXMgYmV0d2VlbiBDYW5vbiB6b25lc1xuICAnZ2FsbG9wL25vLWNyb3NzLXpvbmUtaW1wb3J0cyc6ICd3YXJuJyxcblxuICAvLyBQcmV2ZW50IHJ1bnRpbWUgY29kZSBmcm9tIGltcG9ydGluZyBfZGF0YS8gZGlyZWN0bHlcbiAgJ2dhbGxvcC9uby1kYXRhLWltcG9ydHMnOiAnd2FybicsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHJlY29tbWVuZGVkUnVsZXNcbiJdfQ==
|
package/dist/eslint/index.d.ts
CHANGED
|
@@ -19,18 +19,12 @@ declare const plugin: {
|
|
|
19
19
|
'prefer-typography-components': import("eslint").Rule.RuleModule;
|
|
20
20
|
'prefer-layout-components': import("eslint").Rule.RuleModule;
|
|
21
21
|
'background-image-rounded': import("eslint").Rule.RuleModule;
|
|
22
|
-
'no-inline-styles': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noInlineStyles", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
23
|
-
name: string;
|
|
24
|
-
};
|
|
25
22
|
'no-arbitrary-colors': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noArbitraryColors", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
26
23
|
name: string;
|
|
27
24
|
};
|
|
28
25
|
'no-cross-zone-imports': import("@typescript-eslint/utils/ts-eslint").RuleModule<"blocksImportBlocks" | "componentsImportBlocks" | "runtimeImportScripts", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
29
26
|
name: string;
|
|
30
27
|
};
|
|
31
|
-
'no-data-imports': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noDataImports", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
32
|
-
name: string;
|
|
33
|
-
};
|
|
34
28
|
'no-native-intersection-observer': import("eslint").Rule.RuleModule;
|
|
35
29
|
'no-component-in-blocks': import("eslint").Rule.RuleModule;
|
|
36
30
|
'prefer-list-components': import("eslint").Rule.RuleModule;
|
|
@@ -48,10 +42,8 @@ declare const plugin: {
|
|
|
48
42
|
readonly 'gallop/prefer-typography-components': "warn";
|
|
49
43
|
readonly 'gallop/prefer-layout-components': "warn";
|
|
50
44
|
readonly 'gallop/background-image-rounded': "warn";
|
|
51
|
-
readonly 'gallop/no-inline-styles': "warn";
|
|
52
45
|
readonly 'gallop/no-arbitrary-colors': "warn";
|
|
53
46
|
readonly 'gallop/no-cross-zone-imports': "warn";
|
|
54
|
-
readonly 'gallop/no-data-imports': "warn";
|
|
55
47
|
readonly 'gallop/no-native-intersection-observer': "warn";
|
|
56
48
|
readonly 'gallop/no-component-in-blocks': "warn";
|
|
57
49
|
readonly 'gallop/prefer-list-components': "warn";
|
package/dist/eslint/index.js
CHANGED
|
@@ -4,10 +4,8 @@ import preferComponentProps from './rules/prefer-component-props.js';
|
|
|
4
4
|
import preferTypographyComponents from './rules/prefer-typography-components.js';
|
|
5
5
|
import preferLayoutComponents from './rules/prefer-layout-components.js';
|
|
6
6
|
import backgroundImageRounded from './rules/background-image-rounded.js';
|
|
7
|
-
import noInlineStyles from './rules/no-inline-styles.js';
|
|
8
7
|
import noArbitraryColors from './rules/no-arbitrary-colors.js';
|
|
9
8
|
import noCrossZoneImports from './rules/no-cross-zone-imports.js';
|
|
10
|
-
import noDataImports from './rules/no-data-imports.js';
|
|
11
9
|
import noNativeIntersectionObserver from './rules/no-native-intersection-observer.js';
|
|
12
10
|
import noComponentInBlocks from './rules/no-component-in-blocks.js';
|
|
13
11
|
import preferListComponents from './rules/prefer-list-components.js';
|
|
@@ -24,10 +22,8 @@ const recommended = {
|
|
|
24
22
|
'gallop/prefer-typography-components': 'warn',
|
|
25
23
|
'gallop/prefer-layout-components': 'warn',
|
|
26
24
|
'gallop/background-image-rounded': 'warn',
|
|
27
|
-
'gallop/no-inline-styles': 'warn',
|
|
28
25
|
'gallop/no-arbitrary-colors': 'warn',
|
|
29
26
|
'gallop/no-cross-zone-imports': 'warn',
|
|
30
|
-
'gallop/no-data-imports': 'warn',
|
|
31
27
|
'gallop/no-native-intersection-observer': 'warn',
|
|
32
28
|
'gallop/no-component-in-blocks': 'warn',
|
|
33
29
|
'gallop/prefer-list-components': 'warn',
|
|
@@ -46,10 +42,8 @@ const plugin = {
|
|
|
46
42
|
'prefer-typography-components': preferTypographyComponents,
|
|
47
43
|
'prefer-layout-components': preferLayoutComponents,
|
|
48
44
|
'background-image-rounded': backgroundImageRounded,
|
|
49
|
-
'no-inline-styles': noInlineStyles,
|
|
50
45
|
'no-arbitrary-colors': noArbitraryColors,
|
|
51
46
|
'no-cross-zone-imports': noCrossZoneImports,
|
|
52
|
-
'no-data-imports': noDataImports,
|
|
53
47
|
'no-native-intersection-observer': noNativeIntersectionObserver,
|
|
54
48
|
'no-component-in-blocks': noComponentInBlocks,
|
|
55
49
|
'prefer-list-components': preferListComponents,
|
|
@@ -62,4 +56,4 @@ const plugin = {
|
|
|
62
56
|
recommended,
|
|
63
57
|
};
|
|
64
58
|
export default plugin;
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXNsaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFBO0FBQ3hELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFDckUsT0FBTyxvQkFBb0IsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLDBCQUEwQixNQUFNLHlDQUF5QyxDQUFBO0FBQ2hGLE9BQU8sc0JBQXNCLE1BQU0scUNBQXFDLENBQUE7QUFDeEUsT0FBTyxzQkFBc0IsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN4RSxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFBO0FBQzlELE9BQU8sa0JBQWtCLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTyw0QkFBNEIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNyRixPQUFPLG1CQUFtQixNQUFNLG1DQUFtQyxDQUFBO0FBQ25FLE9BQU8sb0JBQW9CLE1BQU0sbUNBQW1DLENBQUE7QUFDcEUsT0FBTyxZQUFZLE1BQU0sMkJBQTJCLENBQUE7QUFDcEQsT0FBTyxxQkFBcUIsTUFBTSxvQ0FBb0MsQ0FBQTtBQUV0RTs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLHlCQUF5QixFQUFFLE1BQU07SUFDakMsZ0NBQWdDLEVBQUUsTUFBTTtJQUN4QyxnQ0FBZ0MsRUFBRSxNQUFNO0lBQ3hDLCtCQUErQixFQUFFLE1BQU07SUFDdkMscUNBQXFDLEVBQUUsTUFBTTtJQUM3QyxpQ0FBaUMsRUFBRSxNQUFNO0lBQ3pDLGlDQUFpQyxFQUFFLE1BQU07SUFDekMsNEJBQTRCLEVBQUUsTUFBTTtJQUNwQyw4QkFBOEIsRUFBRSxNQUFNO0lBQ3RDLHdDQUF3QyxFQUFFLE1BQU07SUFDaEQsK0JBQStCLEVBQUUsTUFBTTtJQUN2QywrQkFBK0IsRUFBRSxNQUFNO0lBQ3ZDLHVCQUF1QixFQUFFLE1BQU07Q0FDdkIsQ0FBQTtBQUVWLE1BQU0sTUFBTSxHQUFHO0lBQ2IsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixPQUFPLEVBQUUsUUFBUTtLQUNsQjtJQUNELEtBQUssRUFBRTtRQUNMLGtCQUFrQixFQUFFLGNBQWM7UUFDbEMseUJBQXlCLEVBQUUscUJBQXFCO1FBQ2hELHlCQUF5QixFQUFFLG9CQUFvQjtRQUMvQyx3QkFBd0IsRUFBRSxvQkFBb0I7UUFDOUMsOEJBQThCLEVBQUUsMEJBQTBCO1FBQzFELDBCQUEwQixFQUFFLHNCQUFzQjtRQUNsRCwwQkFBMEIsRUFBRSxzQkFBc0I7UUFDbEQscUJBQXFCLEVBQUUsaUJBQWlCO1FBQ3hDLHVCQUF1QixFQUFFLGtCQUFrQjtRQUMzQyxpQ0FBaUMsRUFBRSw0QkFBNEI7UUFDL0Qsd0JBQXdCLEVBQUUsbUJBQW1CO1FBQzdDLHdCQUF3QixFQUFFLG9CQUFvQjtRQUM5QyxnQkFBZ0IsRUFBRSxZQUFZO0tBQy9CO0lBQ0Q7OztPQUdHO0lBQ0gsV0FBVztDQUNaLENBQUE7QUFFRCxlQUFlLE1BQU0sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub0NsaWVudEJsb2NrcyBmcm9tICcuL3J1bGVzL25vLWNsaWVudC1ibG9ja3MuanMnXG5pbXBvcnQgbm9Db250YWluZXJJblNlY3Rpb24gZnJvbSAnLi9ydWxlcy9uby1jb250YWluZXItaW4tc2VjdGlvbi5qcydcbmltcG9ydCBwcmVmZXJDb21wb25lbnRQcm9wcyBmcm9tICcuL3J1bGVzL3ByZWZlci1jb21wb25lbnQtcHJvcHMuanMnXG5pbXBvcnQgcHJlZmVyVHlwb2dyYXBoeUNvbXBvbmVudHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzLmpzJ1xuaW1wb3J0IHByZWZlckxheW91dENvbXBvbmVudHMgZnJvbSAnLi9ydWxlcy9wcmVmZXItbGF5b3V0LWNvbXBvbmVudHMuanMnXG5pbXBvcnQgYmFja2dyb3VuZEltYWdlUm91bmRlZCBmcm9tICcuL3J1bGVzL2JhY2tncm91bmQtaW1hZ2Utcm91bmRlZC5qcydcbmltcG9ydCBub0FyYml0cmFyeUNvbG9ycyBmcm9tICcuL3J1bGVzL25vLWFyYml0cmFyeS1jb2xvcnMuanMnXG5pbXBvcnQgbm9Dcm9zc1pvbmVJbXBvcnRzIGZyb20gJy4vcnVsZXMvbm8tY3Jvc3Mtem9uZS1pbXBvcnRzLmpzJ1xuaW1wb3J0IG5vTmF0aXZlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgZnJvbSAnLi9ydWxlcy9uby1uYXRpdmUtaW50ZXJzZWN0aW9uLW9ic2VydmVyLmpzJ1xuaW1wb3J0IG5vQ29tcG9uZW50SW5CbG9ja3MgZnJvbSAnLi9ydWxlcy9uby1jb21wb25lbnQtaW4tYmxvY2tzLmpzJ1xuaW1wb3J0IHByZWZlckxpc3RDb21wb25lbnRzIGZyb20gJy4vcnVsZXMvcHJlZmVyLWxpc3QtY29tcG9uZW50cy5qcydcbmltcG9ydCBub05hdGl2ZURhdGUgZnJvbSAnLi9ydWxlcy9uby1uYXRpdmUtZGF0ZS5qcydcbmltcG9ydCBibG9ja05hbWluZ0NvbnZlbnRpb24gZnJvbSAnLi9ydWxlcy9ibG9jay1uYW1pbmctY29udmVudGlvbi5qcydcblxuLyoqXG4gKiBBbGwgQ2Fub24gRVNMaW50IHJ1bGVzIHdpdGggcmVjb21tZW5kZWQgc2V2ZXJpdHkgbGV2ZWxzXG4gKi9cbmNvbnN0IHJlY29tbWVuZGVkID0ge1xuICAnZ2FsbG9wL25vLWNsaWVudC1ibG9ja3MnOiAnd2FybicsXG4gICdnYWxsb3AvYmxvY2stbmFtaW5nLWNvbnZlbnRpb24nOiAnd2FybicsXG4gICdnYWxsb3Avbm8tY29udGFpbmVyLWluLXNlY3Rpb24nOiAnd2FybicsXG4gICdnYWxsb3AvcHJlZmVyLWNvbXBvbmVudC1wcm9wcyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9wcmVmZXItdHlwb2dyYXBoeS1jb21wb25lbnRzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3ByZWZlci1sYXlvdXQtY29tcG9uZW50cyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9iYWNrZ3JvdW5kLWltYWdlLXJvdW5kZWQnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tYXJiaXRyYXJ5LWNvbG9ycyc6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1jcm9zcy16b25lLWltcG9ydHMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlcic6ICd3YXJuJyxcbiAgJ2dhbGxvcC9uby1jb21wb25lbnQtaW4tYmxvY2tzJzogJ3dhcm4nLFxuICAnZ2FsbG9wL3ByZWZlci1saXN0LWNvbXBvbmVudHMnOiAnd2FybicsXG4gICdnYWxsb3Avbm8tbmF0aXZlLWRhdGUnOiAnd2FybicsXG59IGFzIGNvbnN0XG5cbmNvbnN0IHBsdWdpbiA9IHtcbiAgbWV0YToge1xuICAgIG5hbWU6ICdlc2xpbnQtcGx1Z2luLWdhbGxvcCcsXG4gICAgdmVyc2lvbjogJzIuMTIuMCcsXG4gIH0sXG4gIHJ1bGVzOiB7XG4gICAgJ25vLWNsaWVudC1ibG9ja3MnOiBub0NsaWVudEJsb2NrcyxcbiAgICAnYmxvY2stbmFtaW5nLWNvbnZlbnRpb24nOiBibG9ja05hbWluZ0NvbnZlbnRpb24sXG4gICAgJ25vLWNvbnRhaW5lci1pbi1zZWN0aW9uJzogbm9Db250YWluZXJJblNlY3Rpb24sXG4gICAgJ3ByZWZlci1jb21wb25lbnQtcHJvcHMnOiBwcmVmZXJDb21wb25lbnRQcm9wcyxcbiAgICAncHJlZmVyLXR5cG9ncmFwaHktY29tcG9uZW50cyc6IHByZWZlclR5cG9ncmFwaHlDb21wb25lbnRzLFxuICAgICdwcmVmZXItbGF5b3V0LWNvbXBvbmVudHMnOiBwcmVmZXJMYXlvdXRDb21wb25lbnRzLFxuICAgICdiYWNrZ3JvdW5kLWltYWdlLXJvdW5kZWQnOiBiYWNrZ3JvdW5kSW1hZ2VSb3VuZGVkLFxuICAgICduby1hcmJpdHJhcnktY29sb3JzJzogbm9BcmJpdHJhcnlDb2xvcnMsXG4gICAgJ25vLWNyb3NzLXpvbmUtaW1wb3J0cyc6IG5vQ3Jvc3Nab25lSW1wb3J0cyxcbiAgICAnbm8tbmF0aXZlLWludGVyc2VjdGlvbi1vYnNlcnZlcic6IG5vTmF0aXZlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsXG4gICAgJ25vLWNvbXBvbmVudC1pbi1ibG9ja3MnOiBub0NvbXBvbmVudEluQmxvY2tzLFxuICAgICdwcmVmZXItbGlzdC1jb21wb25lbnRzJzogcHJlZmVyTGlzdENvbXBvbmVudHMsXG4gICAgJ25vLW5hdGl2ZS1kYXRlJzogbm9OYXRpdmVEYXRlLFxuICB9LFxuICAvKipcbiAgICogUmVjb21tZW5kZWQgcnVsZSBjb25maWd1cmF0aW9ucyAtIHNwcmVhZCBpbnRvIHlvdXIgRVNMaW50IGNvbmZpZ1xuICAgKiBAZXhhbXBsZSBydWxlczogeyAuLi5nYWxsb3AucmVjb21tZW5kZWQgfVxuICAgKi9cbiAgcmVjb21tZW5kZWQsXG59XG5cbmV4cG9ydCBkZWZhdWx0IHBsdWdpblxuIl19
|
package/package.json
CHANGED
|
@@ -89,7 +89,7 @@ import { clsx } from 'clsx'
|
|
|
89
89
|
## Enforcement
|
|
90
90
|
|
|
91
91
|
- **Method:** Code review / Documentation
|
|
92
|
-
- **
|
|
92
|
+
- **Note:** Inline styles are allowed for dynamic values (positioning, transforms, CSS variables)
|
|
93
93
|
|
|
94
94
|
## References
|
|
95
95
|
|
package/schema.json
CHANGED
|
@@ -251,16 +251,6 @@
|
|
|
251
251
|
"rule": "gallop/no-cross-zone-imports",
|
|
252
252
|
"summary": "Enforce import boundaries between Canon zones"
|
|
253
253
|
},
|
|
254
|
-
{
|
|
255
|
-
"id": "022",
|
|
256
|
-
"title": "No Data Direct Imports",
|
|
257
|
-
"file": "patterns/022-no-data-imports.md",
|
|
258
|
-
"category": "structure",
|
|
259
|
-
"status": "stable",
|
|
260
|
-
"enforcement": "eslint",
|
|
261
|
-
"rule": "gallop/no-data-imports",
|
|
262
|
-
"summary": "Prevent runtime code from importing _data/ directly"
|
|
263
|
-
},
|
|
264
254
|
{
|
|
265
255
|
"id": "023",
|
|
266
256
|
"title": "File Placement Authority",
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
-
import { getCanonUrl, getCanonPattern } from '../utils/canon.js';
|
|
3
|
-
const RULE_NAME = 'no-inline-styles';
|
|
4
|
-
const pattern = getCanonPattern(RULE_NAME);
|
|
5
|
-
const createRule = ESLintUtils.RuleCreator(() => getCanonUrl(RULE_NAME));
|
|
6
|
-
export default createRule({
|
|
7
|
-
name: RULE_NAME,
|
|
8
|
-
meta: {
|
|
9
|
-
type: 'suggestion',
|
|
10
|
-
docs: {
|
|
11
|
-
description: pattern?.summary || 'No inline styles in blocks, use Tailwind exclusively',
|
|
12
|
-
},
|
|
13
|
-
messages: {
|
|
14
|
-
noInlineStyles: `[Canon ${pattern?.id || '008'}] Avoid inline style attribute in blocks. Use Tailwind CSS classes instead. See: ${pattern?.title || 'Tailwind Only'} pattern.`,
|
|
15
|
-
},
|
|
16
|
-
schema: [],
|
|
17
|
-
},
|
|
18
|
-
defaultOptions: [],
|
|
19
|
-
create(context) {
|
|
20
|
-
const filename = context.filename || context.getFilename();
|
|
21
|
-
// Only enforce in blocks - components can use inline styles for dynamic values
|
|
22
|
-
const isBlock = filename.includes('/blocks/') || filename.includes('\\blocks\\');
|
|
23
|
-
if (!isBlock) {
|
|
24
|
-
return {};
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
JSXAttribute(node) {
|
|
28
|
-
// Check if attribute is "style"
|
|
29
|
-
if (node.name.type === 'JSXIdentifier' &&
|
|
30
|
-
node.name.name === 'style') {
|
|
31
|
-
context.report({
|
|
32
|
-
node,
|
|
33
|
-
messageId: 'noInlineStyles',
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5saW5lLXN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lc2xpbnQvcnVsZXMvbm8taW5saW5lLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVoRSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQTtBQUNwQyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFMUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUl4RSxlQUFlLFVBQVUsQ0FBaUI7SUFDeEMsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsWUFBWTtRQUNsQixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxzREFBc0Q7U0FDeEY7UUFDRCxRQUFRLEVBQUU7WUFDUixjQUFjLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLEtBQUssb0ZBQW9GLE9BQU8sRUFBRSxLQUFLLElBQUksZUFBZSxXQUFXO1NBQy9LO1FBQ0QsTUFBTSxFQUFFLEVBQUU7S0FDWDtJQUNELGNBQWMsRUFBRSxFQUFFO0lBQ2xCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFMUQsK0VBQStFO1FBQy9FLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUVoRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7UUFFRCxPQUFPO1lBQ0wsWUFBWSxDQUFDLElBQUk7Z0JBQ2YsZ0NBQWdDO2dCQUNoQyxJQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWU7b0JBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFDMUIsQ0FBQztvQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNiLElBQUk7d0JBQ0osU0FBUyxFQUFFLGdCQUFnQjtxQkFDNUIsQ0FBQyxDQUFBO2dCQUNKLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFU0xpbnRVdGlscyB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscydcbmltcG9ydCB7IGdldENhbm9uVXJsLCBnZXRDYW5vblBhdHRlcm4gfSBmcm9tICcuLi91dGlscy9jYW5vbi5qcydcblxuY29uc3QgUlVMRV9OQU1FID0gJ25vLWlubGluZS1zdHlsZXMnXG5jb25zdCBwYXR0ZXJuID0gZ2V0Q2Fub25QYXR0ZXJuKFJVTEVfTkFNRSlcblxuY29uc3QgY3JlYXRlUnVsZSA9IEVTTGludFV0aWxzLlJ1bGVDcmVhdG9yKCgpID0+IGdldENhbm9uVXJsKFJVTEVfTkFNRSkpXG5cbnR5cGUgTWVzc2FnZUlkcyA9ICdub0lubGluZVN0eWxlcydcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlUnVsZTxbXSwgTWVzc2FnZUlkcz4oe1xuICBuYW1lOiBSVUxFX05BTUUsXG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246IHBhdHRlcm4/LnN1bW1hcnkgfHwgJ05vIGlubGluZSBzdHlsZXMgaW4gYmxvY2tzLCB1c2UgVGFpbHdpbmQgZXhjbHVzaXZlbHknLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIG5vSW5saW5lU3R5bGVzOiBgW0Nhbm9uICR7cGF0dGVybj8uaWQgfHwgJzAwOCd9XSBBdm9pZCBpbmxpbmUgc3R5bGUgYXR0cmlidXRlIGluIGJsb2Nrcy4gVXNlIFRhaWx3aW5kIENTUyBjbGFzc2VzIGluc3RlYWQuIFNlZTogJHtwYXR0ZXJuPy50aXRsZSB8fCAnVGFpbHdpbmQgT25seSd9IHBhdHRlcm4uYCxcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gIH0sXG4gIGRlZmF1bHRPcHRpb25zOiBbXSxcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZmlsZW5hbWUgfHwgY29udGV4dC5nZXRGaWxlbmFtZSgpXG4gICAgXG4gICAgLy8gT25seSBlbmZvcmNlIGluIGJsb2NrcyAtIGNvbXBvbmVudHMgY2FuIHVzZSBpbmxpbmUgc3R5bGVzIGZvciBkeW5hbWljIHZhbHVlc1xuICAgIGNvbnN0IGlzQmxvY2sgPSBmaWxlbmFtZS5pbmNsdWRlcygnL2Jsb2Nrcy8nKSB8fCBmaWxlbmFtZS5pbmNsdWRlcygnXFxcXGJsb2Nrc1xcXFwnKVxuICAgIFxuICAgIGlmICghaXNCbG9jaykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIEpTWEF0dHJpYnV0ZShub2RlKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGF0dHJpYnV0ZSBpcyBcInN0eWxlXCJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG5vZGUubmFtZS50eXBlID09PSAnSlNYSWRlbnRpZmllcicgJiZcbiAgICAgICAgICBub2RlLm5hbWUubmFtZSA9PT0gJ3N0eWxlJ1xuICAgICAgICApIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZUlkOiAnbm9JbmxpbmVTdHlsZXMnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufSlcbiJdfQ==
|