dowel-ui 0.32.0 → 0.34.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.
Files changed (39) hide show
  1. package/README.md +5 -4
  2. package/dist/eslint/index.d.ts +2 -0
  3. package/dist/eslint/index.d.ts.map +1 -1
  4. package/dist/eslint/index.js +24 -4
  5. package/dist/eslint/index.js.map +1 -1
  6. package/dist/eslint/no-arbitrary-scale.d.ts +20 -0
  7. package/dist/eslint/no-arbitrary-scale.d.ts.map +1 -0
  8. package/dist/eslint/no-arbitrary-scale.js +261 -0
  9. package/dist/eslint/no-arbitrary-scale.js.map +1 -0
  10. package/dist/eslint/no-raw-button.d.ts +3 -0
  11. package/dist/eslint/no-raw-button.d.ts.map +1 -0
  12. package/dist/eslint/no-raw-button.js +51 -0
  13. package/dist/eslint/no-raw-button.js.map +1 -0
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/palettes/atlas.json +1 -1
  19. package/dist/palettes/austeris.json +1 -1
  20. package/dist/palettes/dowel.json +1 -1
  21. package/dist/palettes/efema.json +1 -1
  22. package/dist/palettes/furca.json +1 -1
  23. package/dist/palettes/hilvan.json +1 -1
  24. package/dist/palettes/kasl-server.json +1 -1
  25. package/dist/palettes/kasl.json +1 -1
  26. package/dist/palettes/kilna.json +1 -1
  27. package/dist/palettes/lyrid.json +1 -1
  28. package/dist/palettes/lyrn.json +1 -1
  29. package/dist/palettes/midda.json +1 -1
  30. package/dist/palettes/nitid.json +1 -1
  31. package/dist/palettes/nooma.json +1 -1
  32. package/dist/palettes/rhapsod.json +1 -1
  33. package/dist/palettes/rigger.json +1 -1
  34. package/dist/palettes/scheda.json +1 -1
  35. package/dist/palettes/sefy.json +1 -1
  36. package/dist/palettes/turnout.json +1 -1
  37. package/dist/registry.json +246 -127
  38. package/dist/theme.css +29 -0
  39. package/package.json +2 -2
package/README.md CHANGED
@@ -60,10 +60,11 @@ npx shadcn@latest add https://lacodda.github.io/dowel/r/button.json
60
60
  npx shadcn@latest add https://lacodda.github.io/dowel/r/app.json # or a whole set
61
61
  ```
62
62
 
63
- A hundred and six primitives so far - controls and forms, overlays on
63
+ A hundred and twelve primitives so far - controls and forms, overlays on
64
64
  [Base UI](https://base-ui.com), menus, the command palette, tables and long
65
- lists, charts, loading and empty screens, markdown, code and diffs, a screen's
66
- frame and how it divides, a desktop window's own chrome, and the line's marks.
65
+ lists, charts, a month of days, loading and empty screens, markdown, code and
66
+ diffs, a screen's frame and how it divides, a desktop window's own chrome, and
67
+ the line's marks.
67
68
  Each is written in the vocabulary - no raw colours, no `dark:` utilities, no
68
69
  date in the browser's language - and runs its own gate: axe, the keyboard, a
69
70
  dependency budget and a picture in both themes.
@@ -152,7 +153,7 @@ where it measured 3.49:1. Derived, it is white there, at 6.01:1.
152
153
 
153
154
  ## Status
154
155
 
155
- The theme, the scales, an accent per product, and a hundred and six primitives are
156
+ The theme, the scales, an accent per product, and a hundred and twelve primitives are
156
157
  in daily use across two products of the line. Every component installs from a
157
158
  versioned registry and passes its own gate - axe, the keyboard, a dependency
158
159
  budget, a scale that refuses a length nobody argued for, a floor under every
@@ -11,4 +11,6 @@ export default dowel;
11
11
  export { noRawColor, findRawColor } from './no-raw-color.js';
12
12
  export { noImplicitLocale } from './no-implicit-locale.js';
13
13
  export { noNativeSelect } from './no-native-select.js';
14
+ export { noArbitraryScale, findArbitraryScale, TYPE_STEPS, RADIUS_STEPS } from './no-arbitrary-scale.js';
15
+ export { noRawButton } from './no-raw-button.js';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiD5C;;+EAE+E;AAC/E,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG;IAAE,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;KAAE,CAAA;CAEtE,CAAA;AAEF,eAAe,KAAK,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAmE5C;;+EAE+E;AAC/E,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG;IAAE,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;KAAE,CAAA;CAEtE,CAAA;AAEF,eAAe,KAAK,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACxG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1,14 +1,17 @@
1
+ import { noArbitraryScale } from './no-arbitrary-scale.js';
1
2
  import { noImplicitLocale } from './no-implicit-locale.js';
2
3
  import { noNativeSelect } from './no-native-select.js';
4
+ import { noRawButton } from './no-raw-button.js';
3
5
  import { noRawColor } from './no-raw-color.js';
4
6
  /*
5
7
  * The dowel ESLint plugin.
6
8
  *
7
- * Three rules, and each enforces a convention the system rests on: a
9
+ * Five rules, and each enforces a convention the system rests on: a
8
10
  * component names colours from the vocabulary and never writes one down, no
9
11
  * screen uses a native `<select>`, which the browser draws in its own chrome,
10
- * and no date or number is formatted in the browser's language rather than
11
- * the application's.
12
+ * no date or number is formatted in the browser's language rather than the
13
+ * application's, sizes come from the scale rather than from the eye, and a
14
+ * screen presses Buttons rather than `<button>`s.
12
15
  *
13
16
  * It ships from the package rather than the registry because it is not a
14
17
  * component - it is not copied into a product and edited there, it is a check
@@ -27,10 +30,16 @@ const plugin = {
27
30
  'no-raw-color': noRawColor,
28
31
  'no-native-select': noNativeSelect,
29
32
  'no-implicit-locale': noImplicitLocale,
33
+ 'no-arbitrary-scale': noArbitraryScale,
34
+ 'no-raw-button': noRawButton,
30
35
  },
31
36
  };
32
37
  /** The rules, applied where components live. Scoped to TypeScript sources:
33
- * the theme is CSS and the build tools are Node, and neither is a component. */
38
+ * the theme is CSS and the build tools are Node, and neither is a component.
39
+ *
40
+ * `no-raw-button` is kept out of `ui/`, the directory a product keeps its
41
+ * primitives in (shadcn's `components/ui`): a primitive is where the one
42
+ * `<button>` a screen should not write gets written, once. */
34
43
  const recommended = [
35
44
  {
36
45
  files: ['**/*.{ts,tsx}'],
@@ -39,6 +48,15 @@ const recommended = [
39
48
  'dowel/no-raw-color': 'error',
40
49
  'dowel/no-native-select': 'error',
41
50
  'dowel/no-implicit-locale': 'error',
51
+ 'dowel/no-arbitrary-scale': 'error',
52
+ },
53
+ },
54
+ {
55
+ files: ['**/*.tsx'],
56
+ ignores: ['**/ui/**'],
57
+ plugins: { dowel: plugin },
58
+ rules: {
59
+ 'dowel/no-raw-button': 'error',
42
60
  },
43
61
  },
44
62
  ];
@@ -52,4 +70,6 @@ export default dowel;
52
70
  export { noRawColor, findRawColor } from './no-raw-color.js';
53
71
  export { noImplicitLocale } from './no-implicit-locale.js';
54
72
  export { noNativeSelect } from './no-native-select.js';
73
+ export { noArbitraryScale, findArbitraryScale, TYPE_STEPS, RADIUS_STEPS } from './no-arbitrary-scale.js';
74
+ export { noRawButton } from './no-raw-button.js';
55
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACvB,KAAK,EAAE;QACL,cAAc,EAAE,UAAU;QAC1B,kBAAkB,EAAE,cAAc;QAClC,oBAAoB,EAAE,gBAAgB;KACvC;CACsB,CAAA;AAEzB;gFACgF;AAChF,MAAM,WAAW,GAAoB;IACnC;QACE,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1B,KAAK,EAAE;YACL,oBAAoB,EAAE,OAAO;YAC7B,wBAAwB,EAAE,OAAO;YACjC,0BAA0B,EAAE,OAAO;SACpC;KACF;CACF,CAAA;AAED;;+EAE+E;AAC/E,MAAM,KAAK,GAAkE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IACjG,OAAO,EAAE,EAAE,WAAW,EAAE;CACzB,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACvB,KAAK,EAAE;QACL,cAAc,EAAE,UAAU;QAC1B,kBAAkB,EAAE,cAAc;QAClC,oBAAoB,EAAE,gBAAgB;QACtC,oBAAoB,EAAE,gBAAgB;QACtC,eAAe,EAAE,WAAW;KAC7B;CACsB,CAAA;AAEzB;;;;;8DAK8D;AAC9D,MAAM,WAAW,GAAoB;IACnC;QACE,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1B,KAAK,EAAE;YACL,oBAAoB,EAAE,OAAO;YAC7B,wBAAwB,EAAE,OAAO;YACjC,0BAA0B,EAAE,OAAO;YACnC,0BAA0B,EAAE,OAAO;SACpC;KACF;IACD;QACE,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,OAAO,EAAE,CAAC,UAAU,CAAC;QACrB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1B,KAAK,EAAE;YACL,qBAAqB,EAAE,OAAO;SAC/B;KACF;CACF,CAAA;AAED;;+EAE+E;AAC/E,MAAM,KAAK,GAAkE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IACjG,OAAO,EAAE,EAAE,WAAW,EAAE;CACzB,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACxG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,20 @@
1
+ import type { Rule } from 'eslint';
2
+ /** The type scale, in pixels, by the step that names it. Mirrors the theme;
3
+ * `scale.test.ts` holds the two to each other. */
4
+ export declare const TYPE_STEPS: Record<number, string>;
5
+ /** The radii, in pixels, by the step that names them. */
6
+ export declare const RADIUS_STEPS: Record<number, string>;
7
+ export interface ScaleFinding {
8
+ /** Where the class starts in the string. */
9
+ index: number;
10
+ /** The class as written, `hover:` and all. */
11
+ text: string;
12
+ message: string;
13
+ /** The class to write instead, when there is exactly one. */
14
+ fix?: string;
15
+ }
16
+ /** What is off the scale in this string. Exported for the gate that holds the
17
+ * set itself to the same rule, and for the test: the matching is the rule. */
18
+ export declare function findArbitraryScale(text: string): ScaleFinding[];
19
+ export declare const noArbitraryScale: Rule.RuleModule;
20
+ //# sourceMappingURL=no-arbitrary-scale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-arbitrary-scale.d.ts","sourceRoot":"","sources":["../../src/eslint/no-arbitrary-scale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAgGlC;kDACkD;AAClD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7C,CAAA;AAED,yDAAyD;AACzD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO/C,CAAA;AAQD,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AA4CD;8EAC8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAkE/D;AAED,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,UA6CnC,CAAA"}
@@ -0,0 +1,261 @@
1
+ /*
2
+ * `no-arbitrary-scale` - sizes come from the scale, or they are argued for.
3
+ *
4
+ * The colour vocabulary holds because a raw colour does not compile. Size has
5
+ * no such wall: `text-[13px]` compiles perfectly, looks deliberate, and is how
6
+ * a product drifts into nine sizes inside four pixels. kilna had 160 of them
7
+ * in its screens, and half were literally a step of the scale written the
8
+ * long way - `text-[12px]` for `text-sm` - which no reader of the code could
9
+ * tell from the other half, the ones that really were off the scale.
10
+ *
11
+ * So the rule reads every class string, finds the fixed lengths chosen by eye,
12
+ * and says which step they are:
13
+ *
14
+ * - **the same length as a named step** is fixed automatically - `text-[12px]`
15
+ * becomes `text-sm`, `rounded-[9px]` becomes `rounded-md`, `h-[22px]`
16
+ * becomes `h-5.5` - because nothing is decided by writing it the long way;
17
+ * - **a length off the scale** is reported with the steps either side of it,
18
+ * and the fix is a decision: take a step, or disable the line with the
19
+ * reason no step can carry it.
20
+ *
21
+ * What it leaves alone is anything computed or proportional - `calc()`,
22
+ * `min()`, `var()`, percentages, viewport units, `ch` and `fr` - because those
23
+ * are relationships, not measurements: `w-[min(22rem,100%)]` says "as wide as
24
+ * it wants but never off the screen", which no step can say.
25
+ */
26
+ /** Utilities that measure on the spacing scale: a step is a quarter of a rem,
27
+ * so 4px is `1` and 22px is `5.5`. */
28
+ const SPACING = [
29
+ 'size',
30
+ 'w',
31
+ 'h',
32
+ 'min-w',
33
+ 'min-h',
34
+ 'max-w',
35
+ 'max-h',
36
+ 'p',
37
+ 'px',
38
+ 'py',
39
+ 'pt',
40
+ 'pb',
41
+ 'pl',
42
+ 'pr',
43
+ 'ps',
44
+ 'pe',
45
+ 'm',
46
+ 'mx',
47
+ 'my',
48
+ 'mt',
49
+ 'mb',
50
+ 'ml',
51
+ 'mr',
52
+ 'ms',
53
+ 'me',
54
+ 'gap',
55
+ 'gap-x',
56
+ 'gap-y',
57
+ 'space-x',
58
+ 'space-y',
59
+ 'top',
60
+ 'bottom',
61
+ 'left',
62
+ 'right',
63
+ 'inset',
64
+ 'inset-x',
65
+ 'inset-y',
66
+ 'start',
67
+ 'end',
68
+ 'translate-x',
69
+ 'translate-y',
70
+ 'basis',
71
+ 'leading',
72
+ 'scroll-m',
73
+ 'scroll-p',
74
+ ];
75
+ const RADIUS = [
76
+ 'rounded',
77
+ 'rounded-t',
78
+ 'rounded-b',
79
+ 'rounded-l',
80
+ 'rounded-r',
81
+ 'rounded-s',
82
+ 'rounded-e',
83
+ 'rounded-tl',
84
+ 'rounded-tr',
85
+ 'rounded-bl',
86
+ 'rounded-br',
87
+ 'rounded-ss',
88
+ 'rounded-se',
89
+ 'rounded-es',
90
+ 'rounded-ee',
91
+ ];
92
+ /** The type scale, in pixels, by the step that names it. Mirrors the theme;
93
+ * `scale.test.ts` holds the two to each other. */
94
+ export const TYPE_STEPS = {
95
+ 10: '2xs',
96
+ 11: 'xs',
97
+ 12: 'sm',
98
+ 14: 'base',
99
+ 16: 'lg',
100
+ 18: 'xl',
101
+ 21: '2xl',
102
+ };
103
+ /** The radii, in pixels, by the step that names them. */
104
+ export const RADIUS_STEPS = {
105
+ 4: 'xs',
106
+ 6: 'sm',
107
+ 9: 'md',
108
+ 12: 'lg',
109
+ 16: 'xl',
110
+ 20: '2xl',
111
+ };
112
+ /** The tracking steps, in em. */
113
+ const TRACKING_STEPS = {
114
+ '0.085': 'caption',
115
+ '-0.01': 'tight',
116
+ };
117
+ const escape = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
118
+ /*
119
+ * One class: optional variants (`hover:`, `data-[open]:`, `[&_svg]:`), an
120
+ * optional minus, a utility, and a bracketed value. The utility names are
121
+ * tried longest first, so `min-w` is not read as `w` and `rounded-tl` is not
122
+ * read as `rounded`.
123
+ */
124
+ const UTILITIES = [...SPACING, ...RADIUS, 'text', 'tracking'].sort((a, b) => b.length - a.length);
125
+ const VARIANT = String.raw `(?:[\w-]+(?:\[[^\]]*\])?|\[[^\]]*\]):`;
126
+ const CLASS = new RegExp(String.raw `(?<=^|[\s"'\x60])((?:${VARIANT})*)(-?)(${UTILITIES.map(escape).join('|')})-\[([^\]\s]+)\](?=$|[\s"'\x60])`, 'g');
127
+ /** A plain length in pixels, or `undefined` for anything else. */
128
+ function pixels(value) {
129
+ const match = /^(-?\d*\.?\d+)(px|rem)$/.exec(value);
130
+ if (!match)
131
+ return undefined;
132
+ const amount = Number(match[1]);
133
+ return match[2] === 'rem' ? amount * 16 : amount;
134
+ }
135
+ /** The two named steps either side of a length, for the message. */
136
+ function neighbours(px, steps, prefix) {
137
+ const sizes = Object.keys(steps).map(Number).sort((a, b) => a - b);
138
+ const below = [...sizes].reverse().find((size) => size < px);
139
+ const above = sizes.find((size) => size > px);
140
+ return [below, above]
141
+ .filter((size) => size !== undefined)
142
+ .map((size) => `\`${prefix}-${steps[size]}\` (${size}px)`)
143
+ .join(' or ');
144
+ }
145
+ /** The spacing step for a length: exact at half a step (2px) or finer as a
146
+ * named step; `hair` for the one named in-between. */
147
+ function spacingStep(px) {
148
+ if (Math.abs(px) === 3)
149
+ return 'hair';
150
+ if (px % 2 !== 0)
151
+ return undefined;
152
+ return String(Math.abs(px) / 4);
153
+ }
154
+ /** What is off the scale in this string. Exported for the gate that holds the
155
+ * set itself to the same rule, and for the test: the matching is the rule. */
156
+ export function findArbitraryScale(text) {
157
+ const findings = [];
158
+ for (const match of text.matchAll(CLASS)) {
159
+ const [whole, variants = '', minus, utility, value] = match;
160
+ const at = match.index ?? 0;
161
+ if (utility === 'tracking') {
162
+ if (/var\(|calc\(/.test(value))
163
+ continue;
164
+ const step = TRACKING_STEPS[value.replace(/em$/, '')];
165
+ findings.push({
166
+ index: at,
167
+ text: whole,
168
+ message: step
169
+ ? `\`${whole}\` is \`tracking-${step}\` written the long way.`
170
+ : `\`${whole}\` is tracking chosen by eye. The scale has \`tracking-caption\` for uppercase captions and \`tracking-tight\` for large type; use one, or say on this line why neither fits.`,
171
+ fix: step ? `${variants}tracking-${step}` : undefined,
172
+ });
173
+ continue;
174
+ }
175
+ const px = pixels(value);
176
+ // Computed, relative or proportional: a relationship, not a length.
177
+ if (px === undefined)
178
+ continue;
179
+ if (utility === 'text') {
180
+ const step = TYPE_STEPS[px];
181
+ findings.push({
182
+ index: at,
183
+ text: whole,
184
+ message: step
185
+ ? `\`${whole}\` is \`text-${step}\` written the long way.`
186
+ : `\`${whole}\` is off the type scale. The nearest steps are ${neighbours(px, TYPE_STEPS, 'text')}; take one, or say on this line why neither can carry it.`,
187
+ fix: step ? `${variants}text-${step}` : undefined,
188
+ });
189
+ continue;
190
+ }
191
+ if (RADIUS.includes(utility)) {
192
+ const step = RADIUS_STEPS[px];
193
+ findings.push({
194
+ index: at,
195
+ text: whole,
196
+ message: step
197
+ ? `\`${whole}\` is \`${utility}-${step}\` written the long way.`
198
+ : `\`${whole}\` is off the radius scale. The nearest steps are ${neighbours(px, RADIUS_STEPS, utility)}; take one, or say on this line why neither fits.`,
199
+ fix: step ? `${variants}${utility}-${step}` : undefined,
200
+ });
201
+ continue;
202
+ }
203
+ const step = spacingStep(px);
204
+ // `-mt-[2px]` and `mt-[-2px]` are both a pull of two pixels; both minus
205
+ // signs together are a push. The step is written with one sign, outside.
206
+ const sign = (minus === '-') !== px < 0 ? '-' : '';
207
+ findings.push({
208
+ index: at,
209
+ text: whole,
210
+ message: step
211
+ ? `\`${whole}\` is \`${sign}${utility}-${step}\` written the long way.`
212
+ : `\`${whole}\` is a length chosen by eye, between two steps of the scale. Take a step, or say on this line why none can carry it.`,
213
+ fix: step ? `${variants}${sign}${utility}-${step}` : undefined,
214
+ });
215
+ }
216
+ return findings;
217
+ }
218
+ export const noArbitraryScale = {
219
+ meta: {
220
+ type: 'suggestion',
221
+ fixable: 'code',
222
+ docs: {
223
+ description: 'Forbid fixed lengths chosen by eye in class names; sizes come from the type, radius and spacing scales.',
224
+ url: 'https://lacodda.github.io/dowel/guides/linting/',
225
+ },
226
+ schema: [],
227
+ },
228
+ create(context) {
229
+ const source = context.sourceCode;
230
+ return {
231
+ Literal(node) {
232
+ if (typeof node.value !== 'string')
233
+ return;
234
+ const raw = source.getText(node);
235
+ // A fix is written into the source, so it is offered only where the
236
+ // source is the value between two quotes - an escape inside the
237
+ // literal would shift every offset after it.
238
+ const fixable = raw.slice(1, -1) === node.value;
239
+ const start = node.range[0] + 1;
240
+ for (const finding of findArbitraryScale(node.value)) {
241
+ context.report({
242
+ node,
243
+ message: finding.message,
244
+ fix: fixable && finding.fix !== undefined
245
+ ? (fixer) => fixer.replaceTextRange([start + finding.index, start + finding.index + finding.text.length], finding.fix)
246
+ : null,
247
+ });
248
+ }
249
+ },
250
+ TemplateElement(node) {
251
+ // Reported, not fixed: a template element's range includes the
252
+ // delimiters around it, which differ by position in the template.
253
+ const text = node.value.cooked ?? node.value.raw;
254
+ for (const finding of findArbitraryScale(text)) {
255
+ context.report({ node: node, message: finding.message });
256
+ }
257
+ },
258
+ };
259
+ },
260
+ };
261
+ //# sourceMappingURL=no-arbitrary-scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-arbitrary-scale.js","sourceRoot":"","sources":["../../src/eslint/no-arbitrary-scale.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ export declare const noRawButton: Rule.RuleModule;
3
+ //# sourceMappingURL=no-raw-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-raw-button.d.ts","sourceRoot":"","sources":["../../src/eslint/no-raw-button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AA6BlC,eAAO,MAAM,WAAW,EAAE,IAAI,CAAC,UAwB9B,CAAA"}
@@ -0,0 +1,51 @@
1
+ /*
2
+ * `no-raw-button` - a screen presses Buttons, not `<button>`s.
3
+ *
4
+ * A raw `<button className="…">` looks like the cheap way to a small control,
5
+ * and it quietly drops everything Button knows: `type="button"`, so it does
6
+ * not submit the form it sits in; the focus ring; the disabled look, and a
7
+ * disabled reason a pointer and a keyboard can reach; the size of an icon
8
+ * inside it; the control row that makes it the height of the field beside it
9
+ * and follows `data-density`. kilna had 95 of them in 42 files, and each one
10
+ * got some of that right and a different some wrong - three sizes of chip,
11
+ * five recipes for the same toggle, a trash row whose reason was dead.
12
+ *
13
+ * The set has a primitive for each shape those buttons were: Button in six
14
+ * variants for an action (`icon` for a glyph, `link` for one that reads as a
15
+ * link), RowButton for a row of a list, Chip with `pressed` for a switch,
16
+ * SegmentedControl for one of a few. Where a primitive wants a trigger it
17
+ * takes `render={<Button />}`.
18
+ *
19
+ * The primitives themselves are made of `<button>`s, so the recommended
20
+ * config leaves the directory a product keeps them in - `ui/` - alone.
21
+ */
22
+ const MESSAGE = 'A raw `<button>` forgets what Button knows: `type="button"`, the focus ring, the disabled look and its ' +
23
+ 'reason, the icon size and the control height. Use Button (variants ghost, icon, link, ...), RowButton for a ' +
24
+ 'row of a list, Chip with `pressed` for a switch, or `render={<Button />}` where a primitive takes a trigger.';
25
+ export const noRawButton = {
26
+ meta: {
27
+ type: 'suggestion',
28
+ docs: {
29
+ description: 'Forbid the native `<button>` element outside the primitives; screens use Button and its kin.',
30
+ url: 'https://lacodda.github.io/dowel/guides/linting/',
31
+ },
32
+ schema: [],
33
+ messages: { raw: MESSAGE },
34
+ },
35
+ create(context) {
36
+ return {
37
+ // `JSXOpeningElement` is not in ESLint's own AST types - the JSX nodes
38
+ // come from the TypeScript parser - so the visitor is declared by name
39
+ // and the node is read structurally, as in `no-native-select`.
40
+ JSXOpeningElement(node) {
41
+ const name = node.name;
42
+ // Lower case is the HTML element; `<Button>` is the component and
43
+ // `<Base.Button>` is somebody's namespace.
44
+ if (name?.type !== 'JSXIdentifier' || name.name !== 'button')
45
+ return;
46
+ context.report({ node, messageId: 'raw' });
47
+ },
48
+ };
49
+ },
50
+ };
51
+ //# sourceMappingURL=no-raw-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-raw-button.js","sourceRoot":"","sources":["../../src/eslint/no-raw-button.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,OAAO,GACX,yGAAyG;IACzG,8GAA8G;IAC9G,8GAA8G,CAAA;AAEhH,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,8FAA8F;YAC3G,GAAG,EAAE,iDAAiD;SACvD;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;KAC3B;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,uEAAuE;YACvE,uEAAuE;YACvE,+DAA+D;YAC/D,iBAAiB,CAAC,IAAe;gBAC/B,MAAM,IAAI,GAAI,IAA+D,CAAC,IAAI,CAAA;gBAClF,kEAAkE;gBAClE,2CAA2C;gBAC3C,IAAI,IAAI,EAAE,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAM;gBACpE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;YAC5C,CAAC;SACmB,CAAA;IACxB,CAAC;CACF,CAAA"}
package/dist/index.d.ts CHANGED
@@ -74,7 +74,7 @@ export declare const sizeTokens: readonly ["size-target", "spacing-hair", "row-c
74
74
  * token compiles to nothing and the button loses its width with no error
75
75
  * anywhere. Every measurement here is one axis.
76
76
  */
77
- export declare const chromeTokens: readonly ["spacing-titlebar", "spacing-rail", "spacing-window-button", "spacing-resize-edge", "spacing-resize-corner"];
77
+ export declare const chromeTokens: readonly ["spacing-titlebar", "spacing-rail", "spacing-rail-compact", "spacing-window-button", "spacing-resize-edge", "spacing-resize-corner"];
78
78
  /** Stacking order. Not a Tailwind namespace either: a component reads these
79
79
  * as `z-index: var(--z-modal)`. The names are a promise about what covers
80
80
  * what, and the values only mean anything relative to each other. */
@@ -83,7 +83,7 @@ export declare const layerTokens: readonly ["z-popup", "z-sticky", "z-menu", "z-
83
83
  * vocabulary - a docs page, an inspector, the JSON export, the test that keeps
84
84
  * this file honest against the stylesheet - reads this, so a new category
85
85
  * cannot be added and quietly missed by half of them. */
86
- export declare const allTokens: readonly ["bg", "raise", "soft", "softer", "line", "line-2", "text", "dim", "faint", "accent", "accent-2", "accent-soft", "on-accent", "on-good", "on-warn", "on-bad", "on-info", "good", "good-soft", "warn", "warn-soft", "bad", "bad-soft", "info", "info-soft", "series-1", "series-2", "series-3", "series-4", "series-5", "series-6", "series-7", "series-8", "scale-100", "scale-200", "scale-300", "scale-400", "scale-500", "scale-600", "scale-700", "chart-grid", "chart-axis", "heat-1", "heat-2", "heat-3", "heat-4", "heat-5", "syntax-keyword", "syntax-string", "syntax-number", "syntax-comment", "syntax-name", "syntax-type", "syntax-punctuation", "syntax-meta", "accent-base", "neutral-base", "neutral-tint", "neutral-tint-strong", "ground", "ink", "shadow-lift", "shadow-raise", "shadow-float", "radius-xs", "radius-sm", "radius-md", "radius-lg", "radius-xl", "radius-2xl", "radius-inner", "font-sans", "font-mono", "text-2xs", "text-xs", "text-sm", "text-base", "text-lg", "text-xl", "text-2xl", "font-weight-normal", "font-weight-medium", "font-weight-semibold", "tracking-caption", "tracking-tight", "icon-stroke", "duration-quick", "duration-base", "duration-slow", "ease-out", "ease-in-out", "size-target", "spacing-hair", "row-control", "row-control-sm", "row-control-lg", "row-cell", "spacing-titlebar", "spacing-rail", "spacing-window-button", "spacing-resize-edge", "spacing-resize-corner", "z-popup", "z-sticky", "z-menu", "z-floating", "z-overlay", "z-modal", "z-palette", "z-toast"];
86
+ export declare const allTokens: readonly ["bg", "raise", "soft", "softer", "line", "line-2", "text", "dim", "faint", "accent", "accent-2", "accent-soft", "on-accent", "on-good", "on-warn", "on-bad", "on-info", "good", "good-soft", "warn", "warn-soft", "bad", "bad-soft", "info", "info-soft", "series-1", "series-2", "series-3", "series-4", "series-5", "series-6", "series-7", "series-8", "scale-100", "scale-200", "scale-300", "scale-400", "scale-500", "scale-600", "scale-700", "chart-grid", "chart-axis", "heat-1", "heat-2", "heat-3", "heat-4", "heat-5", "syntax-keyword", "syntax-string", "syntax-number", "syntax-comment", "syntax-name", "syntax-type", "syntax-punctuation", "syntax-meta", "accent-base", "neutral-base", "neutral-tint", "neutral-tint-strong", "ground", "ink", "shadow-lift", "shadow-raise", "shadow-float", "radius-xs", "radius-sm", "radius-md", "radius-lg", "radius-xl", "radius-2xl", "radius-inner", "font-sans", "font-mono", "text-2xs", "text-xs", "text-sm", "text-base", "text-lg", "text-xl", "text-2xl", "font-weight-normal", "font-weight-medium", "font-weight-semibold", "tracking-caption", "tracking-tight", "icon-stroke", "duration-quick", "duration-base", "duration-slow", "ease-out", "ease-in-out", "size-target", "spacing-hair", "row-control", "row-control-sm", "row-control-lg", "row-cell", "spacing-titlebar", "spacing-rail", "spacing-rail-compact", "spacing-window-button", "spacing-resize-edge", "spacing-resize-corner", "z-popup", "z-sticky", "z-menu", "z-floating", "z-overlay", "z-modal", "z-palette", "z-toast"];
87
87
  export type ColorToken = (typeof colorTokens)[number];
88
88
  export type ThemeParameter = (typeof themeParameters)[number];
89
89
  export type ElevationToken = (typeof elevationTokens)[number];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -189,6 +189,7 @@ export const sizeTokens = [
189
189
  export const chromeTokens = [
190
190
  'spacing-titlebar',
191
191
  'spacing-rail',
192
+ 'spacing-rail-compact',
192
193
  'spacing-window-button',
193
194
  'spacing-resize-edge',
194
195
  'spacing-resize-corner',
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "atlas",
8
8
  "code": "at",
9
9
  "accent": "#8A7DF5"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "austeris",
8
8
  "code": "au",
9
9
  "accent": "#C25BD9"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "dowel",
8
8
  "code": "dw",
9
9
  "accent": "#E8862D"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "efema",
8
8
  "code": "ef",
9
9
  "accent": "#5470E8"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "furca",
8
8
  "code": "fr",
9
9
  "accent": "#D9704A"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "hilvan",
8
8
  "code": "hv",
9
9
  "accent": "#D64550"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "kasl-server",
8
8
  "code": "ks",
9
9
  "accent": "#D9A82E"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "kasl",
8
8
  "code": "ka",
9
9
  "accent": "#A9C23F"
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.lacodda.dowel": {
5
5
  "package": "dowel-ui",
6
- "version": "0.32.0",
6
+ "version": "0.34.0",
7
7
  "product": "kilna",
8
8
  "code": "ki",
9
9
  "accent": "#D9569E"