@bgord/design 0.28.0 → 0.29.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 (137) hide show
  1. package/dist/main.css +2018 -2005
  2. package/dist/main.min.css +1 -1
  3. package/dist/main.min.css.br +0 -0
  4. package/dist/main.min.css.gz +0 -0
  5. package/dist/normalize.css +20 -25
  6. package/dist/normalize.min.css +1 -1
  7. package/dist/normalize.min.css.br +0 -0
  8. package/dist/normalize.min.css.gz +0 -0
  9. package/package.json +28 -49
  10. package/src/generate-css.ts +25 -168
  11. package/src/generator.ts +4 -69
  12. package/src/{axis-placements-generator.ts → generators/axis-placements-generator.ts} +13 -19
  13. package/src/generators/backdrops-generator.ts +18 -0
  14. package/src/{backgrounds-generator.ts → generators/backgrounds-generator.ts} +8 -8
  15. package/src/{border-colors-generator.ts → generators/border-colors-generator.ts} +11 -11
  16. package/src/generators/border-radiuses-generator.ts +17 -0
  17. package/src/{border-widths-generator.ts → generators/border-widths-generator.ts} +11 -15
  18. package/src/generators/cursors-generator.ts +28 -0
  19. package/src/{displays-generator.ts → generators/displays-generator.ts} +10 -16
  20. package/src/generators/flex-directions-generator.ts +27 -0
  21. package/src/generators/flex-grows-generator.ts +28 -0
  22. package/src/generators/flex-shrinks-generator.ts +28 -0
  23. package/src/generators/flex-wraps-generator.ts +28 -0
  24. package/src/{font-colors-generator.ts → generators/font-colors-generator.ts} +8 -8
  25. package/src/generators/font-size-generator.ts +28 -0
  26. package/src/generators/font-weight-generator.ts +18 -0
  27. package/src/generators/gap-generator.ts +28 -0
  28. package/src/generators/heights-generator.ts +28 -0
  29. package/src/generators/index.ts +34 -0
  30. package/src/generators/letter-spacings-generator.ts +18 -0
  31. package/src/generators/line-height-generator.ts +18 -0
  32. package/src/{margins-generator.ts → generators/margins-generator.ts} +20 -26
  33. package/src/generators/max-heights-generator.ts +28 -0
  34. package/src/generators/max-widths-generator.ts +28 -0
  35. package/src/generators/object-fits-generator.ts +28 -0
  36. package/src/generators/object-positions-generator.ts +28 -0
  37. package/src/generators/overflows-generator.ts +18 -0
  38. package/src/{paddings-generator.ts → generators/paddings-generator.ts} +20 -26
  39. package/src/generators/pointer-events-generator.ts +28 -0
  40. package/src/{positioners-generator.ts → generators/positioners-generator.ts} +7 -13
  41. package/src/generators/positions-generator.ts +28 -0
  42. package/src/generators/rotates-generator.ts +28 -0
  43. package/src/generators/shadows-generator.ts +18 -0
  44. package/src/{transforms-generator.ts → generators/transforms-generator.ts} +10 -14
  45. package/src/generators/widths-generator.ts +28 -0
  46. package/src/generators/z-index-generator.ts +18 -0
  47. package/src/index.ts +3 -0
  48. package/src/normalize.css +18 -19
  49. package/src/rules/button-empty-content.css +5 -0
  50. package/src/rules/button-icon-title.css +1 -1
  51. package/src/rules/focusable-hidden-element.css +5 -0
  52. package/src/rules/image-alt.css +1 -1
  53. package/src/rules/input-missing-id.css +4 -0
  54. package/src/rules/input-missing-name.css +4 -0
  55. package/src/rules/invalid-list-element.css +1 -1
  56. package/src/rules/link-empty-href.css +5 -0
  57. package/src/rules/target-blank-referer.css +3 -3
  58. package/src/rules/title-truncate.css +6 -6
  59. package/src/tokens.ts +245 -275
  60. package/src/ui/button.css +15 -11
  61. package/src/ui/checkbox.css +1 -1
  62. package/src/ui/input.css +6 -2
  63. package/src/ui/label.css +2 -2
  64. package/src/ui/link.css +1 -1
  65. package/src/ui/range.css +6 -10
  66. package/src/ui/select.css +1 -1
  67. package/src/ui/textarea.css +6 -2
  68. package/dist/axis-placements-generator.d.ts +0 -7
  69. package/dist/backdrops-generator.d.ts +0 -6
  70. package/dist/backgrounds-generator.d.ts +0 -6
  71. package/dist/border-colors-generator.d.ts +0 -9
  72. package/dist/border-radiuses-generator.d.ts +0 -6
  73. package/dist/border-widths-generator.d.ts +0 -6
  74. package/dist/cursors-generator.d.ts +0 -7
  75. package/dist/design.cjs.development.js +0 -2663
  76. package/dist/design.cjs.development.js.map +0 -1
  77. package/dist/design.cjs.production.min.js +0 -2
  78. package/dist/design.cjs.production.min.js.map +0 -1
  79. package/dist/design.esm.js +0 -2659
  80. package/dist/design.esm.js.map +0 -1
  81. package/dist/displays-generator.d.ts +0 -7
  82. package/dist/file.d.ts +0 -10
  83. package/dist/flex-directions-generator.d.ts +0 -7
  84. package/dist/flex-grows-generator.d.ts +0 -7
  85. package/dist/flex-shrinks-generator.d.ts +0 -7
  86. package/dist/flex-wraps-generator.d.ts +0 -7
  87. package/dist/font-colors-generator.d.ts +0 -6
  88. package/dist/font-size-generator.d.ts +0 -7
  89. package/dist/font-weight-generator.d.ts +0 -6
  90. package/dist/gap-generator.d.ts +0 -7
  91. package/dist/generate-css.d.ts +0 -1
  92. package/dist/generator.d.ts +0 -43
  93. package/dist/heights-generator.d.ts +0 -7
  94. package/dist/index.d.ts +0 -1
  95. package/dist/index.js +0 -8
  96. package/dist/letter-spacings-generator.d.ts +0 -6
  97. package/dist/line-height-generator.d.ts +0 -6
  98. package/dist/margins-generator.d.ts +0 -7
  99. package/dist/max-heights-generator.d.ts +0 -7
  100. package/dist/max-widths-generator.d.ts +0 -7
  101. package/dist/object-fits-generator.d.ts +0 -7
  102. package/dist/object-positions-generator.d.ts +0 -7
  103. package/dist/overflows-generator.d.ts +0 -6
  104. package/dist/paddings-generator.d.ts +0 -7
  105. package/dist/pointer-events-generator.d.ts +0 -7
  106. package/dist/positioners-generator.d.ts +0 -7
  107. package/dist/positions-generator.d.ts +0 -7
  108. package/dist/rotates-generator.d.ts +0 -7
  109. package/dist/tokens.d.ts +0 -67
  110. package/dist/transforms-generator.d.ts +0 -6
  111. package/dist/widths-generator.d.ts +0 -7
  112. package/dist/z-index-generator.d.ts +0 -6
  113. package/src/backdrops-generator.ts +0 -22
  114. package/src/border-radiuses-generator.ts +0 -20
  115. package/src/cursors-generator.ts +0 -34
  116. package/src/file.ts +0 -24
  117. package/src/flex-directions-generator.ts +0 -33
  118. package/src/flex-grows-generator.ts +0 -34
  119. package/src/flex-shrinks-generator.ts +0 -34
  120. package/src/flex-wraps-generator.ts +0 -35
  121. package/src/font-size-generator.ts +0 -34
  122. package/src/font-weight-generator.ts +0 -22
  123. package/src/gap-generator.ts +0 -34
  124. package/src/heights-generator.ts +0 -34
  125. package/src/index.tsx +0 -3
  126. package/src/letter-spacings-generator.ts +0 -22
  127. package/src/line-height-generator.ts +0 -22
  128. package/src/max-heights-generator.ts +0 -34
  129. package/src/max-widths-generator.ts +0 -34
  130. package/src/object-fits-generator.ts +0 -35
  131. package/src/object-positions-generator.ts +0 -35
  132. package/src/overflows-generator.ts +0 -22
  133. package/src/pointer-events-generator.ts +0 -34
  134. package/src/positions-generator.ts +0 -35
  135. package/src/rotates-generator.ts +0 -35
  136. package/src/widths-generator.ts +0 -34
  137. package/src/z-index-generator.ts +0 -21
@@ -1,20 +1,14 @@
1
- import { AbstractGenerator, GeneratorConfigType } from './generator';
1
+ import { AbstractGenerator, GeneratorConfigType } from "../generator";
2
2
 
3
3
  export class PositionersGenerator extends AbstractGenerator {
4
- spacing: GeneratorConfigType['spacing'];
5
- breakpoints: GeneratorConfigType['breakpoints'];
6
-
7
- constructor(config: GeneratorConfigType) {
8
- super('Positioners');
9
-
10
- this.spacing = config.spacing;
11
- this.breakpoints = config.breakpoints;
4
+ constructor(private readonly config: GeneratorConfigType) {
5
+ super("Positioners");
12
6
  }
13
7
 
14
8
  generateCss(): string {
15
- let output = '';
9
+ let output = "";
16
10
 
17
- for (const [key, value] of Object.entries(this.spacing)) {
11
+ for (const [key, value] of Object.entries(this.config.Spacing)) {
18
12
  output += `*[data-top='${key}'] {\n top: ${value};\n}\n`;
19
13
  output += `*[data-right='${key}'] {\n right: ${value};\n}\n`;
20
14
  output += `*[data-bottom='${key}'] {\n bottom: ${value};\n}\n`;
@@ -22,10 +16,10 @@ export class PositionersGenerator extends AbstractGenerator {
22
16
  output += `*[data-inset='${key}'] {\n inset: ${value};\n}\n`;
23
17
  }
24
18
 
25
- for (const [name, value] of Object.entries(this.breakpoints)) {
19
+ for (const [name, value] of Object.entries(this.config.Breakpoints)) {
26
20
  output += `@media (max-width: ${value}px) {\n`;
27
21
 
28
- for (const [key, value] of Object.entries(this.spacing)) {
22
+ for (const [key, value] of Object.entries(this.config.Spacing)) {
29
23
  output += `*[data-${name}-top='${key}'] {\n top: ${value};\n}\n`;
30
24
  output += `*[data-${name}-right='${key}'] {\n right: ${value};\n}\n`;
31
25
  output += `*[data-${name}-bottom='${key}'] {\n bottom: ${value};\n}\n`;
@@ -0,0 +1,28 @@
1
+ import { AbstractGenerator, GeneratorConfigType } from "../generator";
2
+
3
+ export class PositionsGenerator extends AbstractGenerator {
4
+ constructor(private readonly config: GeneratorConfigType) {
5
+ super("Positions");
6
+ }
7
+
8
+ generateCss(): string {
9
+ let output = "";
10
+
11
+ // Regular display: data-position="*"
12
+ for (const [key, value] of Object.entries(this.config.Positions)) {
13
+ output += `*[data-position='${key}'] {\n position: ${value};\n}\n`;
14
+ }
15
+
16
+ for (const [name, value] of Object.entries(this.config.Breakpoints)) {
17
+ output += `@media (max-width: ${value}px) {\n`;
18
+
19
+ for (const [key, value] of Object.entries(this.config.Positions)) {
20
+ output += ` *[data-${name}-position='${key}'] {\n position: ${value};\n }\n`;
21
+ }
22
+
23
+ output += "}\n";
24
+ }
25
+
26
+ return output;
27
+ }
28
+ }
@@ -0,0 +1,28 @@
1
+ import { AbstractGenerator, GeneratorConfigType } from "../generator";
2
+
3
+ export class RotatesGenerator extends AbstractGenerator {
4
+ constructor(private readonly config: GeneratorConfigType) {
5
+ super("Rotates");
6
+ }
7
+
8
+ generateCss(): string {
9
+ let output = "";
10
+
11
+ // Regular display: data-rotate="*"
12
+ for (const [key, value] of Object.entries(this.config.Rotates)) {
13
+ output += `*[data-rotate='${key}'] {\n transform: rotate(${value}deg);\n}\n`;
14
+ }
15
+
16
+ for (const [name, value] of Object.entries(this.config.Breakpoints)) {
17
+ output += `@media (max-width: ${value}px) {\n`;
18
+
19
+ for (const [key, value] of Object.entries(this.config.Rotates)) {
20
+ output += ` *[data-${name}-rotate='${key}'] {\n transform: rotate(${value}deg);\n }\n`;
21
+ }
22
+
23
+ output += "}\n";
24
+ }
25
+
26
+ return output;
27
+ }
28
+ }
@@ -0,0 +1,18 @@
1
+ import { AbstractGenerator, GeneratorConfigType } from "../generator";
2
+
3
+ export class ShadowsGenerator extends AbstractGenerator {
4
+ constructor(private readonly config: GeneratorConfigType) {
5
+ super("Shadows");
6
+ }
7
+
8
+ generateCss(): string {
9
+ let output = "";
10
+
11
+ // Regular display: data-shadow="*"
12
+ for (const [key, value] of Object.entries(this.config.Shadows)) {
13
+ output += `*[data-shadow='${key}'] {\n box-shadow: ${value};\n}\n`;
14
+ }
15
+
16
+ return output;
17
+ }
18
+ }
@@ -1,40 +1,36 @@
1
- import { AbstractGenerator, GeneratorConfigType } from './generator';
1
+ import { AbstractGenerator, GeneratorConfigType } from "../generator";
2
2
 
3
3
  export class TransformsGenerator extends AbstractGenerator {
4
- transforms: GeneratorConfigType['transforms'];
5
-
6
- constructor(config: GeneratorConfigType) {
7
- super('Transforms');
8
-
9
- this.transforms = config.transforms;
4
+ constructor(private readonly config: GeneratorConfigType) {
5
+ super("Transforms");
10
6
  }
11
7
 
12
8
  generateCss(): string {
13
- let output = '';
9
+ let output = "";
14
10
 
15
11
  // Regular display: data-transform~="*"
16
- for (const [key, value] of Object.entries(this.transforms)) {
17
- if (key === 'truncate') {
12
+ for (const [key, value] of Object.entries(this.config.Transforms)) {
13
+ if (key === "truncate") {
18
14
  output += `*[data-transform~='${key}'] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n`;
19
15
  continue;
20
16
  }
21
17
 
22
- if (key === 'line-clamp') {
18
+ if (key === "line-clamp") {
23
19
  output += `*[data-transform~='${key}'] {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--lines, 2); overflow: hidden;\n}\n`;
24
20
  continue;
25
21
  }
26
22
 
27
- if (key === 'center') {
23
+ if (key === "center") {
28
24
  output += `*[data-transform~='${key}'] {\n text-align: center;\n}\n`;
29
25
  continue;
30
26
  }
31
27
 
32
- if (key === 'upper-first') {
28
+ if (key === "upper-first") {
33
29
  output += `*[data-transform~='upper-first']:first-letter {\n text-transform: uppercase;\n}\n`;
34
30
  continue;
35
31
  }
36
32
 
37
- if (key === 'nowrap') {
33
+ if (key === "nowrap") {
38
34
  output += `*[data-transform~='nowrap'] {\n white-space: nowrap;\n}\n`;
39
35
  continue;
40
36
  }
@@ -0,0 +1,28 @@
1
+ import { AbstractGenerator, GeneratorConfigType } from "../generator";
2
+
3
+ export class WidthsGenerator extends AbstractGenerator {
4
+ constructor(private readonly config: GeneratorConfigType) {
5
+ super("Widths");
6
+ }
7
+
8
+ generateCss(): string {
9
+ let output = "";
10
+
11
+ // Regular display: data-width="*"
12
+ for (const [key, value] of Object.entries(this.config.Widths)) {
13
+ output += `*[data-width='${key}'] {\n width: ${value};\n}\n`;
14
+ }
15
+
16
+ for (const [name, value] of Object.entries(this.config.Breakpoints)) {
17
+ output += `@media (max-width: ${value}px) {\n`;
18
+
19
+ for (const [key, value] of Object.entries(this.config.Widths)) {
20
+ output += ` *[data-${name}-width='${key}'] {\n width: ${value};\n }\n`;
21
+ }
22
+
23
+ output += "}\n";
24
+ }
25
+
26
+ return output;
27
+ }
28
+ }
@@ -0,0 +1,18 @@
1
+ import { AbstractGenerator, GeneratorConfigType } from "../generator";
2
+
3
+ export class ZIndexGenerator extends AbstractGenerator {
4
+ constructor(private readonly config: GeneratorConfigType) {
5
+ super("Z indexes");
6
+ }
7
+
8
+ generateCss(): string {
9
+ let output = "";
10
+
11
+ // Regular display: data-z="*"
12
+ for (const [key, value] of Object.entries(this.config.ZIndexes)) {
13
+ output += `*[data-z='${key}'] {\n z-index: ${value};\n}\n`;
14
+ }
15
+
16
+ return output;
17
+ }
18
+ }
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { main } from "./generate-css";
2
+
3
+ main();
package/src/normalize.css CHANGED
@@ -117,7 +117,6 @@ a {
117
117
  abbr[title] {
118
118
  border-bottom: none; /* 1 */
119
119
  text-decoration: underline; /* 2 */
120
- text-decoration: underline dotted; /* 2 */
121
120
  }
122
121
 
123
122
  /**
@@ -228,9 +227,9 @@ select {
228
227
  */
229
228
 
230
229
  button,
231
- [type='button'],
232
- [type='reset'],
233
- [type='submit'] {
230
+ [type="button"],
231
+ [type="reset"],
232
+ [type="submit"] {
234
233
  -webkit-appearance: button;
235
234
  }
236
235
 
@@ -239,9 +238,9 @@ button,
239
238
  */
240
239
 
241
240
  button::-moz-focus-inner,
242
- [type='button']::-moz-focus-inner,
243
- [type='reset']::-moz-focus-inner,
244
- [type='submit']::-moz-focus-inner {
241
+ [type="button"]::-moz-focus-inner,
242
+ [type="reset"]::-moz-focus-inner,
243
+ [type="submit"]::-moz-focus-inner {
245
244
  border-style: none;
246
245
  padding: 0;
247
246
  }
@@ -249,14 +248,14 @@ button::-moz-focus-inner,
249
248
  /**
250
249
  * Remove step arrows from the numeric input
251
250
  */
252
- input[type='number']::-webkit-outer-spin-button,
253
- input[type='number']::-webkit-inner-spin-button {
251
+ input[type="number"]::-webkit-outer-spin-button,
252
+ input[type="number"]::-webkit-inner-spin-button {
254
253
  appearance: none;
255
254
  margin: 0;
256
255
  }
257
256
 
258
257
  /* Firefox */
259
- input[type='number'] {
258
+ input[type="number"] {
260
259
  appearance: textfield;
261
260
  }
262
261
 
@@ -265,9 +264,9 @@ input[type='number'] {
265
264
  */
266
265
 
267
266
  button:-moz-focusring,
268
- [type='button']:-moz-focusring,
269
- [type='reset']:-moz-focusring,
270
- [type='submit']:-moz-focusring {
267
+ [type="button"]:-moz-focusring,
268
+ [type="reset"]:-moz-focusring,
269
+ [type="submit"]:-moz-focusring {
271
270
  outline: 1px dotted ButtonText;
272
271
  }
273
272
 
@@ -316,8 +315,8 @@ textarea {
316
315
  * 2. Remove the padding in IE 10.
317
316
  */
318
317
 
319
- [type='checkbox'],
320
- [type='radio'] {
318
+ [type="checkbox"],
319
+ [type="radio"] {
321
320
  box-sizing: border-box; /* 1 */
322
321
  padding: 0; /* 2 */
323
322
  }
@@ -326,8 +325,8 @@ textarea {
326
325
  * Correct the cursor style of increment and decrement buttons in Chrome.
327
326
  */
328
327
 
329
- [type='number']::-webkit-inner-spin-button,
330
- [type='number']::-webkit-outer-spin-button {
328
+ [type="number"]::-webkit-inner-spin-button,
329
+ [type="number"]::-webkit-outer-spin-button {
331
330
  height: auto;
332
331
  }
333
332
 
@@ -336,7 +335,7 @@ textarea {
336
335
  * 2. Correct the outline style in Safari.
337
336
  */
338
337
 
339
- [type='search'] {
338
+ [type="search"] {
340
339
  -webkit-appearance: textfield; /* 1 */
341
340
  outline-offset: -2px; /* 2 */
342
341
  }
@@ -345,7 +344,7 @@ textarea {
345
344
  * Remove the inner padding in Chrome and Safari on macOS.
346
345
  */
347
346
 
348
- [type='search']::-webkit-search-decoration {
347
+ [type="search"]::-webkit-search-decoration {
349
348
  -webkit-appearance: none;
350
349
  }
351
350
 
@@ -0,0 +1,5 @@
1
+ /* cspell:disable */
2
+ button:empty:not([aria-label]):not([aria-labelledby]) {
3
+ border: 2px solid red !important;
4
+ content: "Rule #9 violation (button-empty-content)";
5
+ }
@@ -1,4 +1,4 @@
1
1
  button:not([title]) > svg {
2
2
  border: 2px solid red !important;
3
- content: 'Rule #4 violation (button-icon-title)';
3
+ content: "Rule #4 violation (button-icon-title)";
4
4
  }
@@ -0,0 +1,5 @@
1
+ /* cspell:disable */
2
+ [hidden][tabindex]:not([tabindex="-1"]) {
3
+ border: 2px solid red !important;
4
+ content: "Rule #8 violation (focusable-hidden-element)";
5
+ }
@@ -1,4 +1,4 @@
1
1
  img:not([alt]) {
2
2
  border: 2px solid red;
3
- content: 'Rule #3 violation (image-alt)';
3
+ content: "Rule #3 violation (image-alt)";
4
4
  }
@@ -0,0 +1,4 @@
1
+ input:not([id]) {
2
+ border: 2px solid red !important;
3
+ content: "Rule #7 violation (input-missing-id)";
4
+ }
@@ -0,0 +1,4 @@
1
+ input:not([name]) {
2
+ border: 2px solid red !important;
3
+ content: "Rule #10 violation (input-missing-name)";
4
+ }
@@ -6,5 +6,5 @@ ul > *:not(li):after {
6
6
  background: red;
7
7
  position: absolute;
8
8
  inset: 0;
9
- content: 'Rule #5 violation (invalid-list-element)';
9
+ content: "Rule #5 violation (invalid-list-element)";
10
10
  }
@@ -0,0 +1,5 @@
1
+ a:not([href]),
2
+ a[href=""] {
3
+ border: 2px solid red !important;
4
+ content: "Rule #6 violation (link-empty-href)";
5
+ }
@@ -1,10 +1,10 @@
1
- [target='_blank']:not([rel]) {
1
+ [target="_blank"]:not([rel]) {
2
2
  position: relative;
3
3
  }
4
4
 
5
- [target='_blank']:not([rel]):after {
5
+ [target="_blank"]:not([rel]):after {
6
6
  background: red;
7
7
  position: absolute;
8
8
  inset: 0;
9
- content: 'Rule #2 violation (target-blank-referer)';
9
+ content: "Rule #2 violation (target-blank-referer)";
10
10
  }
@@ -1,19 +1,19 @@
1
- [data-transform='truncate']:not([title]) {
1
+ [data-transform="truncate"]:not([title]) {
2
2
  position: relative;
3
3
  }
4
- [data-transform='truncate']:not([title]):after {
4
+ [data-transform="truncate"]:not([title]):after {
5
5
  background: red;
6
6
  position: absolute;
7
7
  inset: 0;
8
- content: 'Rule #1 violation (title-truncate)';
8
+ content: "Rule #1 violation (title-truncate)";
9
9
  }
10
10
 
11
- [data-transform='line-clamp']:not([title]) {
11
+ [data-transform="line-clamp"]:not([title]) {
12
12
  position: relative;
13
13
  }
14
- [data-transform='line-clamp']:not([title]):after {
14
+ [data-transform="line-clamp"]:not([title]):after {
15
15
  background: red;
16
16
  position: absolute;
17
17
  inset: 0;
18
- content: 'Rule #1 violation (title-truncate)';
18
+ content: "Rule #1 violation (title-truncate)";
19
19
  }