@graupl/graupl 1.0.0-alpha.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 (81) hide show
  1. package/.browserslistrc +3 -0
  2. package/.czrc +3 -0
  3. package/.editorconfig +13 -0
  4. package/.github/CODE_OF_CONDUCT.md +73 -0
  5. package/.github/COMMIT_CONVENTION.md +17 -0
  6. package/.github/CONTRIBUTING.md +86 -0
  7. package/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
  8. package/.github/ISSUE_TEMPLATE/documentation.md +20 -0
  9. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  10. package/.github/SECURITY.md +26 -0
  11. package/.github/dependabot.yml +17 -0
  12. package/.github/pull_request_template.md +5 -0
  13. package/.github/workflows/codeql-analysis.yml +71 -0
  14. package/.github/workflows/docs.yml +59 -0
  15. package/.github/workflows/test.yml +27 -0
  16. package/.husky/commit-msg +4 -0
  17. package/.husky/pre-commit +5 -0
  18. package/.prettierignore +12 -0
  19. package/.stylelintignore +0 -0
  20. package/.versionrc.cjs +61 -0
  21. package/CHANGELOG.md +43 -0
  22. package/README.md +3 -0
  23. package/commitlint.config.js +5 -0
  24. package/dist/base/link/link.css +26 -0
  25. package/dist/base/link/link.css.map +1 -0
  26. package/dist/component/button/button.css +55 -0
  27. package/dist/component/button/button.css.map +1 -0
  28. package/dist/graupl.css +171 -0
  29. package/dist/graupl.css.map +1 -0
  30. package/dist/layout/columns/columns.css +26 -0
  31. package/dist/layout/columns/columns.css.map +1 -0
  32. package/dist/layout/container/container.css +38 -0
  33. package/dist/layout/container/container.css.map +1 -0
  34. package/dist/state/focus/focus.css +10 -0
  35. package/dist/state/focus/focus.css.map +1 -0
  36. package/dist/theme/theme.css +26 -0
  37. package/dist/theme/theme.css.map +1 -0
  38. package/docs/.vitepress/config.js +11 -0
  39. package/docs/.vitepress/theme/custom.scss +35 -0
  40. package/docs/.vitepress/theme/index.js +4 -0
  41. package/docs/index.md +7 -0
  42. package/eslint.config.js +73 -0
  43. package/index.html +29 -0
  44. package/lint-staged.config.js +6 -0
  45. package/package.json +61 -0
  46. package/postcss.config.cjs +12 -0
  47. package/prettier.config.js +16 -0
  48. package/scss/_defaults.scss +40 -0
  49. package/scss/_variables.scss +63 -0
  50. package/scss/base/_index.scss +3 -0
  51. package/scss/base/link/_defaults.scss +9 -0
  52. package/scss/base/link/_index.scss +33 -0
  53. package/scss/base/link/_variables.scss +31 -0
  54. package/scss/base/link/link.scss +3 -0
  55. package/scss/component/_index.scss +3 -0
  56. package/scss/component/button/_defaults.scss +10 -0
  57. package/scss/component/button/_index.scss +67 -0
  58. package/scss/component/button/_variables.scss +102 -0
  59. package/scss/component/button/button.scss +3 -0
  60. package/scss/graupl.scss +9 -0
  61. package/scss/layout/_index.scss +4 -0
  62. package/scss/layout/columns/_defaults.scss +13 -0
  63. package/scss/layout/columns/_index.scss +30 -0
  64. package/scss/layout/columns/_variables.scss +20 -0
  65. package/scss/layout/columns/columns.scss +3 -0
  66. package/scss/layout/container/_defaults.scss +10 -0
  67. package/scss/layout/container/_index.scss +50 -0
  68. package/scss/layout/container/_variables.scss +26 -0
  69. package/scss/layout/container/container.scss +3 -0
  70. package/scss/mixins/_layer.scss +14 -0
  71. package/scss/mixins/_media-queries.scss +15 -0
  72. package/scss/state/_index.scss +3 -0
  73. package/scss/state/focus/_defaults.scss +10 -0
  74. package/scss/state/focus/_index.scss +13 -0
  75. package/scss/state/focus/_variables.scss +36 -0
  76. package/scss/state/focus/focus.scss +3 -0
  77. package/scss/theme/_defaults.scss +45 -0
  78. package/scss/theme/_index.scss +35 -0
  79. package/scss/theme/_variables.scss +177 -0
  80. package/scss/theme/theme.scss +3 -0
  81. package/stylelint.config.js +14 -0
@@ -0,0 +1,55 @@
1
+ @layer graupl.component{
2
+ .button{
3
+ display:flex;
4
+ align-items:center;
5
+ justify-content:center;
6
+ min-width:var(--graupl-button-min-width, 44px);
7
+ min-height:var(--graupl-button-min-height, 44px);
8
+ padding:var(--graupl-button-padding, var(--graupl-button-padding-y, calc(var(--graupl-gap, 1rem) / 2)) var(--graupl-button-padding-x, var(--graupl-gap, 1rem)));
9
+ transition:var(--graupl-button-transition, background var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease), color var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease), border-color var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease), transform var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease));
10
+ border-width:var(--graupl-button-border-width, var(--graupl-border-width, 2px));
11
+ border-style:var(--graupl-botton-border-style, var(--graupl-border-style, solid));
12
+ border-radius:var(--graupl-button-border-radius, var(--graupl-border-radius, 0.125rem));
13
+ font-size:var(--graupl-button-font-size, var(--graupl-font-size-default, 1rem));
14
+ cursor:pointer;
15
+ }
16
+ .button:hover{
17
+ transform:var(--graupl-button-hover-transform, none);
18
+ }
19
+ .button:active{
20
+ transform:var(--graupl-button-active-transform, scale(0.95));
21
+ }
22
+ }
23
+ @layer graupl.theme{
24
+ .button{
25
+ border-color:var(--graupl-button-border-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
26
+ background:var(--graupl-button-background, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)))));
27
+ color:var(--graupl-button-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
28
+ }
29
+ .button:hover{
30
+ border-color:var(--graupl-button-hover-border-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
31
+ background:var(--graupl-button-hover-background, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
32
+ color:var(--graupl-button-hover-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)))));
33
+ }
34
+ .button:active{
35
+ border-color:var(--graupl-button-active-border-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
36
+ background:var(--graupl-button-active-background, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
37
+ color:var(--graupl-button-active-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)))));
38
+ }
39
+ .button.primary{
40
+ --graupl-button-hover-background:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
41
+ --graupl-button-active-background:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
42
+ --graupl-button-border-color:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
43
+ --graupl-button-hover-border-color:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
44
+ --graupl-button-active-border-color:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
45
+ }
46
+ .button.secondary{
47
+ --graupl-button-hover-background:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
48
+ --graupl-button-active-background:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
49
+ --graupl-button-border-color:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
50
+ --graupl-button-hover-border-color:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
51
+ --graupl-button-active-border-color:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
52
+ }
53
+ }
54
+
55
+ /*# sourceMappingURL=button.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../scss/mixins/_layer.scss","../../../scss/component/button/_index.scss","../../../scss/component/button/_variables.scss","button.css"],"names":[],"mappings":"AASI;ECDF;IACE,YAAA;IACA,kBAAA;IACA,sBAAA;IACA,8CCJe;IDKf,gDCDgB;IDEhB,+JCOa;IDNb,0cCcgB;IDbhB,+EC4DkB;ID3DlB,iFC+DkB;ID9DlB,uFCkEmB;IDjEnB,+ECMe;IDLf,cAAA;EELF;EFOE;IACE,oDCemB;ECpBvB;EFQE;IACE,4DCeoB;ECrBxB;AACF;AHbI;ECwBF;IACE,kKCwDkB;IDvDlB,gKCagB;IDZhB,oJC0BW;EClCb;EFUE;IACE,wKCuDsB;IDtDtB,oKCYoB;IDXpB,4JCyBe;ECjCnB;EFWE;IACE,yKCqDuB;IDpDvB,qKCUqB;IDTrB,6JCuBgB;EChCpB;EFYE;IACE,wJAAA;IACA,yJAAA;IACA,oJAAA;IACA,0JAAA;IACA,2JAAA;EEVJ;EFaE;IACE,8JAAA;IACA,+JAAA;IACA,0JAAA;IACA,gKAAA;IACA,iKAAA;EEXJ;AACF","file":"button.css"}
@@ -0,0 +1,171 @@
1
+ @layer graupl.base{
2
+ a{
3
+ -webkit-text-decoration:var(--graupl-link-text-decoration, underline);
4
+ text-decoration:var(--graupl-link-text-decoration, underline);
5
+ text-decoration-thickness:var(--graupl-link-text-decoration-thickness, var(--graupl-border-width, 2px));
6
+ }
7
+ }
8
+ @layer graupl.theme{
9
+ a{
10
+ color:var(--graupl-link-color, var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%)))));
11
+ }
12
+ a:hover{
13
+ color:var(--graupl-link-hover-color, var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%)))));
14
+ }
15
+ a:active{
16
+ color:var(--graupl-link-active-color, var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%)))));
17
+ }
18
+ a:visited{
19
+ color:var(--graupl-link-visited-color, var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%)))));
20
+ }
21
+ a:visited:hover{
22
+ color:var(--graupl-link-hover-color, var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%)))));
23
+ }
24
+ }
25
+ @layer graupl.layout{
26
+ .container,
27
+ .container > .full-width{
28
+ --graupl-container-full-width:minmax(var(--graupl-container-gap, var(--graupl-gap, 1rem)), 1fr);
29
+ --graupl-container-content:min(
30
+ var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)),
31
+ calc(100% - var(--graupl-container-gap, var(--graupl-gap, 1rem)) * 2)
32
+ );
33
+ --graupl-container-breakout:minmax(
34
+ 0,
35
+ var(--graupl-container-breakout-width, calc((var(--graupl-container-breakout-max-width, calc(var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)) + 15ch)) - var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch))) / 2))
36
+ );
37
+ --graupl-container-feature:minmax(
38
+ 0,
39
+ var(--graupl-container-feature-width, calc((var(--graupl-container-feature-max-width, calc(var(--graupl-container-breakout-max-width, calc(var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)) + 15ch)) + 20ch)) - var(--graupl-container-breakout-max-width, calc(var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)) + 15ch))) / 2))
40
+ );
41
+ display:grid;
42
+ grid-template-columns:[full-width-start] var(--graupl-container-full-width) [feature-start] var(--graupl-container-feature) [breakout-start] var(--graupl-container-breakout) [content-start] var(--graupl-container-content) [content-end] var(--graupl-container-breakout) [breakout-end] var(--graupl-container-feature) [feature-end] var(--graupl-container-full-width) [full-width-end];
43
+ }
44
+ .container > :not(.breakout, .full-width, .feature),
45
+ .container > .full-width > :not(.breakout, .full-width, .feature){
46
+ grid-column:content;
47
+ }
48
+ .container .breakout,
49
+ .container > .full-width .breakout{
50
+ grid-column:breakout;
51
+ }
52
+ .container .feature,
53
+ .container > .full-width .feature{
54
+ grid-column:feature;
55
+ }
56
+ .container .full-width,
57
+ .container > .full-width .full-width{
58
+ grid-column:full-width;
59
+ }
60
+ }
61
+ @layer graupl.layout{
62
+ .columns{
63
+ display:grid;
64
+ grid-template-columns:var(--graupl-columns, repeat(auto-fit, minmax(var(--graupl-columns-min-width, calc((var(--graupl-content-max-width, 96ch) - var(--graupl-columns-gap, var(--graupl-gap, 1rem)) * (var(--graupl-columns-count, 3) - 1)) / var(--graupl-columns-count, 3))), var(--graupl-columns-max-width, 1fr))));
65
+ gap:var(--graupl-columns-gap, var(--graupl-gap, 1rem));
66
+ }
67
+ .columns-1{
68
+ --graupl-columns-count:1;
69
+ }
70
+ .columns-2{
71
+ --graupl-columns-count:2;
72
+ }
73
+ .columns-3{
74
+ --graupl-columns-count:3;
75
+ }
76
+ .columns-4{
77
+ --graupl-columns-count:4;
78
+ }
79
+ @media screen and (max-width: 48ch){
80
+ .columns{
81
+ --graupl-columns-min-width:1fr;
82
+ }
83
+ }
84
+ }
85
+ @layer graupl.component{
86
+ .button{
87
+ display:flex;
88
+ align-items:center;
89
+ justify-content:center;
90
+ min-width:var(--graupl-button-min-width, 44px);
91
+ min-height:var(--graupl-button-min-height, 44px);
92
+ padding:var(--graupl-button-padding, var(--graupl-button-padding-y, calc(var(--graupl-gap, 1rem) / 2)) var(--graupl-button-padding-x, var(--graupl-gap, 1rem)));
93
+ transition:var(--graupl-button-transition, background var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease), color var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease), border-color var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease), transform var(--graupl-transition-duration-fast, 150ms) var(--graupl-transition-timing-function, ease));
94
+ border-width:var(--graupl-button-border-width, var(--graupl-border-width, 2px));
95
+ border-style:var(--graupl-botton-border-style, var(--graupl-border-style, solid));
96
+ border-radius:var(--graupl-button-border-radius, var(--graupl-border-radius, 0.125rem));
97
+ font-size:var(--graupl-button-font-size, var(--graupl-font-size-default, 1rem));
98
+ cursor:pointer;
99
+ }
100
+ .button:hover{
101
+ transform:var(--graupl-button-hover-transform, none);
102
+ }
103
+ .button:active{
104
+ transform:var(--graupl-button-active-transform, scale(0.95));
105
+ }
106
+ }
107
+ @layer graupl.theme{
108
+ .button{
109
+ border-color:var(--graupl-button-border-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
110
+ background:var(--graupl-button-background, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)))));
111
+ color:var(--graupl-button-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
112
+ }
113
+ .button:hover{
114
+ border-color:var(--graupl-button-hover-border-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
115
+ background:var(--graupl-button-hover-background, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
116
+ color:var(--graupl-button-hover-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)))));
117
+ }
118
+ .button:active{
119
+ border-color:var(--graupl-button-active-border-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
120
+ background:var(--graupl-button-active-background, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
121
+ color:var(--graupl-button-active-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)))));
122
+ }
123
+ .button.primary{
124
+ --graupl-button-hover-background:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
125
+ --graupl-button-active-background:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
126
+ --graupl-button-border-color:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
127
+ --graupl-button-hover-border-color:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
128
+ --graupl-button-active-border-color:var(--graupl-theme-active--primary, var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%))));
129
+ }
130
+ .button.secondary{
131
+ --graupl-button-hover-background:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
132
+ --graupl-button-active-background:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
133
+ --graupl-button-border-color:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
134
+ --graupl-button-hover-border-color:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
135
+ --graupl-button-active-border-color:var(--graupl-theme-active--secondary, var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%))));
136
+ }
137
+ }
138
+ @layer graupl.state{
139
+ *:focus-visible{
140
+ border-color:transparent;
141
+ outline:var(--graupl-focus-outline-width, var(--graupl-focus-width, var(--graupl-border-width, 2px))) var(--graupl-focus-outline-style, dotted) var(--graupl-focus-outline-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
142
+ outline-offset:var(--graupl-focus-outline-offset, calc(-1 * var(--graupl-focus-outline-width, var(--graupl-focus-width, var(--graupl-border-width, 2px)))));
143
+ box-shadow:var(--graupl-focus-box-shadow, var(--graupl-focus-width, var(--graupl-border-width, 2px)) var(--graupl-focus-width, var(--graupl-border-width, 2px)) 0 0 var(--graupl-focus-box-shadow-style, inset) var(--graupl-focus-box-shadow-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%))))), 0 0 0 var(--graupl-focus-width, var(--graupl-border-width, 2px)) var(--graupl-focus-box-shadow-style, inset) var(--graupl-focus-box-shadow-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%))))));
144
+ }
145
+ }
146
+ @layer graupl.theme{
147
+ :root{
148
+ background:var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%))));
149
+ color:var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%))));
150
+ font-family:var(--graupl-font-family, system-ui, -apple-system, blinkmacsystemfont, Segoe UI, roboto, Helvetica Neue, arial, sans-serif);
151
+ font-size:var(--graupl-font-size, clamp(0.85rem, 0.8rem + 0.5vw, 1.25rem));
152
+ }
153
+ .dark-mode{
154
+ --graupl-theme-active--primary:var(--graupl-theme-dark--primary, var(--graupl-primary--300, hsl(219, 80%, 65%)));
155
+ --graupl-theme-active--primary--dark:var(--graupl-theme-dark--primary--dark, var(--graupl-primary--200, hsl(219, 90%, 80%)));
156
+ --graupl-theme-active--primary--light:var(--graupl-theme-dark--primary--light, var(--graupl-primary--400, hsl(219, 75%, 55%)));
157
+ --graupl-theme-active--secondary:var(--graupl-theme-dark--secondary, var(--graupl-secondary--300, hsl(340, 65%, 65%)));
158
+ --graupl-theme-active--light:var(--graupl-theme-dark--light, var(--graupl-primary--900, hsl(219, 100%, 10%)));
159
+ --graupl-theme-active--dark:var(--graupl-theme-dark--dark, var(--graupl-primary--100, hsl(219, 100%, 95%)));
160
+ }
161
+ .light-mode{
162
+ --graupl-theme-active--primary:var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%)));
163
+ --graupl-theme-active--primary--dark:var(--graupl-theme-light--primary--dark, var(--graupl-primary--800, hsl(219, 90%, 20%)));
164
+ --graupl-theme-active--primary--light:var(--graupl-theme-light--primary--light, var(--graupl-primary--600, hsl(219, 75%, 45%)));
165
+ --graupl-theme-active--secondary:var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%)));
166
+ --graupl-theme-active--light:var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)));
167
+ --graupl-theme-active--dark:var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)));
168
+ }
169
+ }
170
+
171
+ /*# sourceMappingURL=graupl.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../scss/mixins/_layer.scss","../scss/base/link/_index.scss","../scss/base/link/_variables.scss","graupl.css","../scss/layout/container/_index.scss","../scss/layout/columns/_index.scss","../scss/layout/columns/_variables.scss","../scss/component/button/_index.scss","../scss/component/button/_variables.scss","../scss/state/focus/_index.scss","../scss/state/focus/_variables.scss","../scss/theme/_index.scss","../scss/theme/_variables.scss"],"names":[],"mappings":"AASI;ECHF;IACE,qEAAA;YAAA,6DAAA;IACA,uGCG6B;ECN/B;AACF;AHGI;ECIF;IACE,uJCCS;ECLX;EFME;IACE,mKCEa;ECNjB;EFOE;IACE,oKCEc;ECPlB;EFQE;IACE,+JCEe;ECRnB;EFQI;IACE,mKCTW;ECGjB;AACF;AHdI;EIFF;;IAEE,+FAAA;IACA;;;KAAA;IAIA;;;KAAA;IAIA;;;KAAA;IAKA,YAAA;IACA,6XACE;EDiBJ;ECTE;;IACE,mBAAA;EDYJ;ECTE;;IACE,oBAAA;EDYJ;ECTE;;IACE,mBAAA;EDYJ;ECTE;;IACE,sBAAA;EDYJ;AACF;AHlDI;EKDF;IACE,YAAA;IACA,wTAAA;IAIA,sDCTU;EH4DZ;EE/CE;IACE,wBAAA;EFiDJ;EElDE;IACE,wBAAA;EFoDJ;EErDE;IACE,wBAAA;EFuDJ;EExDE;IACE,wBAAA;EF0DJ;EErDA;IACE;MACE,8BAAA;IFuDF;EACF;AACF;AH1EI;EODF;IACE,YAAA;IACA,kBAAA;IACA,sBAAA;IACA,8CCJe;IDKf,gDCDgB;IDEhB,+JCOa;IDNb,0cCcgB;IDbhB,+EC4DkB;ID3DlB,iFC+DkB;ID9DlB,uFCkEmB;IDjEnB,+ECMe;IDLf,cAAA;EJ8EF;EI5EE;IACE,oDCemB;EL+DvB;EI3EE;IACE,4DCeoB;EL8DxB;AACF;AHhGI;EOwBF;IACE,kKCwDkB;IDvDlB,gKCagB;IDZhB,oJC0BW;ELiDb;EIzEE;IACE,wKCuDsB;IDtDtB,oKCYoB;IDXpB,4JCyBe;ELkDnB;EIxEE;IACE,yKCqDuB;IDpDvB,qKCUqB;IDTrB,6JCuBgB;ELmDpB;EIvEE;IACE,wJAAA;IACA,yJAAA;IACA,oJAAA;IACA,0JAAA;IACA,2JAAA;EJyEJ;EItEE;IACE,8JAAA;IACA,+JAAA;IACA,0JAAA;IACA,gKAAA;IACA,iKAAA;EJwEJ;AACF;AH/HI;ESHF;IACE,wBAAA;IACA,qSAAA;IACA,2JCUmB;IDTnB,onBCqBe;EPgHjB;AACF;AHvII;EWDF;IACE,+HCoJkB;IDnJlB,wHC+JiB;ID9JjB,wICoKU;IDnKV,0ECoKQ;ETzBV;EQvIA;IACE,gHAAA;IACA,4HAAA;IACA,8HAAA;IACA,sHAAA;IACA,6GAAA;IACA,2GAAA;ERyIF;EQrIA;IACE,iHAAA;IACA,6HAAA;IACA,+HAAA;IACA,uHAAA;IACA,8GAAA;IACA,4GAAA;ERuIF;AACF","file":"graupl.css"}
@@ -0,0 +1,26 @@
1
+ @layer graupl.layout{
2
+ .columns{
3
+ display:grid;
4
+ grid-template-columns:var(--graupl-columns, repeat(auto-fit, minmax(var(--graupl-columns-min-width, calc((var(--graupl-content-max-width, 96ch) - var(--graupl-columns-gap, var(--graupl-gap, 1rem)) * (var(--graupl-columns-count, 3) - 1)) / var(--graupl-columns-count, 3))), var(--graupl-columns-max-width, 1fr))));
5
+ gap:var(--graupl-columns-gap, var(--graupl-gap, 1rem));
6
+ }
7
+ .columns-1{
8
+ --graupl-columns-count:1;
9
+ }
10
+ .columns-2{
11
+ --graupl-columns-count:2;
12
+ }
13
+ .columns-3{
14
+ --graupl-columns-count:3;
15
+ }
16
+ .columns-4{
17
+ --graupl-columns-count:4;
18
+ }
19
+ @media screen and (max-width: 48ch){
20
+ .columns{
21
+ --graupl-columns-min-width:1fr;
22
+ }
23
+ }
24
+ }
25
+
26
+ /*# sourceMappingURL=columns.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../scss/mixins/_layer.scss","../../../scss/layout/columns/_index.scss","../../../scss/layout/columns/_variables.scss","columns.css"],"names":[],"mappings":"AASI;ECDF;IACE,YAAA;IACA,wTAAA;IAIA,sDCTU;ECAZ;EFaE;IACE,wBAAA;EEXJ;EFUE;IACE,wBAAA;EERJ;EFOE;IACE,wBAAA;EELJ;EFIE;IACE,wBAAA;EEFJ;EFOA;IACE;MACE,8BAAA;IELF;EACF;AACF","file":"columns.css"}
@@ -0,0 +1,38 @@
1
+ @layer graupl.layout{
2
+ .container,
3
+ .container > .full-width{
4
+ --graupl-container-full-width:minmax(var(--graupl-container-gap, var(--graupl-gap, 1rem)), 1fr);
5
+ --graupl-container-content:min(
6
+ var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)),
7
+ calc(100% - var(--graupl-container-gap, var(--graupl-gap, 1rem)) * 2)
8
+ );
9
+ --graupl-container-breakout:minmax(
10
+ 0,
11
+ var(--graupl-container-breakout-width, calc((var(--graupl-container-breakout-max-width, calc(var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)) + 15ch)) - var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch))) / 2))
12
+ );
13
+ --graupl-container-feature:minmax(
14
+ 0,
15
+ var(--graupl-container-feature-width, calc((var(--graupl-container-feature-max-width, calc(var(--graupl-container-breakout-max-width, calc(var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)) + 15ch)) + 20ch)) - var(--graupl-container-breakout-max-width, calc(var(--graupl-container-content-max-width, var(--graupl-content-max-width, 96ch)) + 15ch))) / 2))
16
+ );
17
+ display:grid;
18
+ grid-template-columns:[full-width-start] var(--graupl-container-full-width) [feature-start] var(--graupl-container-feature) [breakout-start] var(--graupl-container-breakout) [content-start] var(--graupl-container-content) [content-end] var(--graupl-container-breakout) [breakout-end] var(--graupl-container-feature) [feature-end] var(--graupl-container-full-width) [full-width-end];
19
+ }
20
+ .container > :not(.breakout, .full-width, .feature),
21
+ .container > .full-width > :not(.breakout, .full-width, .feature){
22
+ grid-column:content;
23
+ }
24
+ .container .breakout,
25
+ .container > .full-width .breakout{
26
+ grid-column:breakout;
27
+ }
28
+ .container .feature,
29
+ .container > .full-width .feature{
30
+ grid-column:feature;
31
+ }
32
+ .container .full-width,
33
+ .container > .full-width .full-width{
34
+ grid-column:full-width;
35
+ }
36
+ }
37
+
38
+ /*# sourceMappingURL=container.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../scss/mixins/_layer.scss","../../../scss/layout/container/_index.scss","container.css"],"names":[],"mappings":"AASI;ECFF;;IAEE,+FAAA;IACA;;;KAAA;IAIA;;;KAAA;IAIA;;;KAAA;IAKA,YAAA;IACA,6XACE;ECPJ;EDeE;;IACE,mBAAA;ECZJ;EDeE;;IACE,oBAAA;ECZJ;EDeE;;IACE,mBAAA;ECZJ;EDeE;;IACE,sBAAA;ECZJ;AACF","file":"container.css"}
@@ -0,0 +1,10 @@
1
+ @layer graupl.state{
2
+ *:focus-visible{
3
+ border-color:transparent;
4
+ outline:var(--graupl-focus-outline-width, var(--graupl-focus-width, var(--graupl-border-width, 2px))) var(--graupl-focus-outline-style, dotted) var(--graupl-focus-outline-color, var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)))));
5
+ outline-offset:var(--graupl-focus-outline-offset, calc(-1 * var(--graupl-focus-outline-width, var(--graupl-focus-width, var(--graupl-border-width, 2px)))));
6
+ box-shadow:var(--graupl-focus-box-shadow, var(--graupl-focus-width, var(--graupl-border-width, 2px)) var(--graupl-focus-width, var(--graupl-border-width, 2px)) 0 0 var(--graupl-focus-box-shadow-style, inset) var(--graupl-focus-box-shadow-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%))))), 0 0 0 var(--graupl-focus-width, var(--graupl-border-width, 2px)) var(--graupl-focus-box-shadow-style, inset) var(--graupl-focus-box-shadow-color, var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%))))));
7
+ }
8
+ }
9
+
10
+ /*# sourceMappingURL=focus.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../scss/mixins/_layer.scss","../../../scss/state/focus/_index.scss","../../../scss/state/focus/_variables.scss","focus.css"],"names":[],"mappings":"AASI;ECHF;IACE,wBAAA;IACA,qSAAA;IACA,2JCUmB;IDTnB,onBCqBe;ECxBjB;AACF","file":"focus.css"}
@@ -0,0 +1,26 @@
1
+ @layer graupl.theme{
2
+ :root{
3
+ background:var(--graupl-theme-active--light, var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%))));
4
+ color:var(--graupl-theme-active--dark, var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%))));
5
+ font-family:var(--graupl-font-family, system-ui, -apple-system, blinkmacsystemfont, Segoe UI, roboto, Helvetica Neue, arial, sans-serif);
6
+ font-size:var(--graupl-font-size, clamp(0.85rem, 0.8rem + 0.5vw, 1.25rem));
7
+ }
8
+ .dark-mode{
9
+ --graupl-theme-active--primary:var(--graupl-theme-dark--primary, var(--graupl-primary--300, hsl(219, 80%, 65%)));
10
+ --graupl-theme-active--primary--dark:var(--graupl-theme-dark--primary--dark, var(--graupl-primary--200, hsl(219, 90%, 80%)));
11
+ --graupl-theme-active--primary--light:var(--graupl-theme-dark--primary--light, var(--graupl-primary--400, hsl(219, 75%, 55%)));
12
+ --graupl-theme-active--secondary:var(--graupl-theme-dark--secondary, var(--graupl-secondary--300, hsl(340, 65%, 65%)));
13
+ --graupl-theme-active--light:var(--graupl-theme-dark--light, var(--graupl-primary--900, hsl(219, 100%, 10%)));
14
+ --graupl-theme-active--dark:var(--graupl-theme-dark--dark, var(--graupl-primary--100, hsl(219, 100%, 95%)));
15
+ }
16
+ .light-mode{
17
+ --graupl-theme-active--primary:var(--graupl-theme-light--primary, var(--graupl-primary--700, hsl(219, 80%, 35%)));
18
+ --graupl-theme-active--primary--dark:var(--graupl-theme-light--primary--dark, var(--graupl-primary--800, hsl(219, 90%, 20%)));
19
+ --graupl-theme-active--primary--light:var(--graupl-theme-light--primary--light, var(--graupl-primary--600, hsl(219, 75%, 45%)));
20
+ --graupl-theme-active--secondary:var(--graupl-theme-light--secondary, var(--graupl-secondary--700, hsl(340, 65%, 35%)));
21
+ --graupl-theme-active--light:var(--graupl-theme-light--light, var(--graupl-primary--100, hsl(219, 100%, 95%)));
22
+ --graupl-theme-active--dark:var(--graupl-theme-light--dark, var(--graupl-primary--900, hsl(219, 100%, 10%)));
23
+ }
24
+ }
25
+
26
+ /*# sourceMappingURL=theme.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../scss/mixins/_layer.scss","../../scss/theme/_index.scss","../../scss/theme/_variables.scss","theme.css"],"names":[],"mappings":"AASI;ECDF;IACE,+HCoJkB;IDnJlB,wHC+JiB;ID9JjB,wICoKU;IDnKV,0ECoKQ;ECzKV;EFSA;IACE,gHAAA;IACA,4HAAA;IACA,8HAAA;IACA,sHAAA;IACA,6GAAA;IACA,2GAAA;EEPF;EFWA;IACE,iHAAA;IACA,6HAAA;IACA,+HAAA;IACA,uHAAA;IACA,8GAAA;IACA,4GAAA;EETF;AACF","file":"theme.css"}
@@ -0,0 +1,11 @@
1
+ import { defineConfig } from "vitepress";
2
+
3
+ export default defineConfig({
4
+ lang: "en-US",
5
+ title: "Graupl",
6
+ description: "A modular and modern CSS framework.",
7
+ base: "/graupl/",
8
+ themeConfig: {
9
+ socialLinks: [{ icon: "github", url: "https://github.com/Graupl/graupl" }],
10
+ },
11
+ });
@@ -0,0 +1,35 @@
1
+ @use "../../../scss/theme/variables" as theme;
2
+
3
+ :root {
4
+ --vp-c-brand: #{theme.$theme-light--primary--dark};
5
+ --vp-c-brand-1: #{theme.$theme-light--primary--dark};
6
+ --vp-c-brand-2: #{theme.$theme-light--primary--dark};
7
+ --vp-c-brand-3: #{theme.$theme-light--primary--dark};
8
+ --vp-c-bg: #{theme.$theme-light--light};
9
+ --vp-c-bg-alt: #{theme.$theme-light--light};
10
+ --vp-c-bg-elv: #{theme.$theme-light--light};
11
+ --vp-c-bg-soft: #{theme.$theme-light--light};
12
+ --vp-c-border: #{theme.$theme-light--secondary--dark};
13
+ --vp-c-divider: #{theme.$theme-light--secondary--dark};
14
+ --vp-c-gutter: #{theme.$theme-light--secondary--dark};
15
+ --vp-c-text-1: #{theme.$theme-light--dark};
16
+ --vp-c-text-2: #{theme.$theme-light--dark};
17
+ --vp-c-text-3: #{theme.$theme-light--dark};
18
+ }
19
+
20
+ .dark {
21
+ --vp-c-brand: #{theme.$theme-light--primary--light};
22
+ --vp-c-brand-1: #{theme.$theme-light--primary--light};
23
+ --vp-c-brand-2: #{theme.$theme-light--primary--light};
24
+ --vp-c-brand-3: #{theme.$theme-light--primary--light};
25
+ --vp-c-bg: #{theme.$theme-light--dark};
26
+ --vp-c-bg-alt: #{theme.$theme-light--dark};
27
+ --vp-c-bg-elv: #{theme.$theme-light--dark};
28
+ --vp-c-bg-soft: #{theme.$theme-light--dark};
29
+ --vp-c-border: #{theme.$theme-light--secondary--light};
30
+ --vp-c-divider: #{theme.$theme-light--secondary--light};
31
+ --vp-c-gutter: #{theme.$theme-light--secondary--light};
32
+ --vp-c-text-1: #{theme.$theme-light--light};
33
+ --vp-c-text-2: #{theme.$theme-light--light};
34
+ --vp-c-text-3: #{theme.$theme-light--light};
35
+ }
@@ -0,0 +1,4 @@
1
+ import DefaultTheme from "vitepress/theme";
2
+ import "./custom.scss";
3
+
4
+ export default DefaultTheme;
package/docs/index.md ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: home
3
+
4
+ hero:
5
+ name: "Graupl"
6
+ tagline: "A modular and modern CSS framework."
7
+ ---
@@ -0,0 +1,73 @@
1
+ import jsdoc from "eslint-plugin-jsdoc";
2
+ import globals from "globals";
3
+ import js from "@eslint/js";
4
+ import prettier from "eslint-config-prettier";
5
+
6
+ const files = ["*.js", "*.cjs"];
7
+ const ignores = [
8
+ "dist/",
9
+ "docs/.vitepress/cache/",
10
+ "docs/.vitepress/dist/",
11
+ "!.*.js",
12
+ "!.*.mjs",
13
+ "!.*.cjs",
14
+ ];
15
+
16
+ const config = {
17
+ plugins: {
18
+ jsdoc,
19
+ },
20
+ languageOptions: {
21
+ globals: {
22
+ ...globals.browser,
23
+ ...globals.es2021,
24
+ },
25
+ },
26
+ rules: {
27
+ "no-console": [
28
+ "warn",
29
+ {
30
+ allow: ["warn", "error"],
31
+ },
32
+ ],
33
+ "jsdoc/no-defaults": 0,
34
+ "jsdoc/tag-lines": [
35
+ "warn",
36
+ "always",
37
+ {
38
+ applyToEndTag: false,
39
+ startLines: 1,
40
+ endLines: 0,
41
+ tags: {
42
+ property: { lines: "never" },
43
+ param: { lines: "never" },
44
+ },
45
+ },
46
+ ],
47
+ },
48
+ settings: {
49
+ jsdoc: {
50
+ mode: "permissive",
51
+ tagNamePreference: {
52
+ augments: {
53
+ message:
54
+ "@extends is to be used over @augments as it is more evocative of classes than @augments",
55
+ replacement: "extends",
56
+ },
57
+ },
58
+ },
59
+ },
60
+ };
61
+
62
+ export default [
63
+ js.configs.recommended,
64
+ prettier,
65
+ jsdoc.configs["flat/recommended"],
66
+ config,
67
+ {
68
+ files,
69
+ },
70
+ {
71
+ ignores,
72
+ },
73
+ ];
package/index.html ADDED
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Document</title>
7
+ <style>
8
+ @layer normalize, graupl;
9
+
10
+ @import url("https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css") layer(normalize);
11
+ </style>
12
+ <link rel="stylesheet" href="dist/graupl.css">
13
+ </head>
14
+ <body>
15
+ <main class="container">
16
+ <h1>Hello Graupl!</h1>
17
+ <p>Graupl is a modular CSS framework with the goal of making it easy to theme a site.</p>
18
+ <p>This source code can be found in <a href="https://github.com/Graupl/graupl">GitHub</a>.</p>
19
+ <p>Graupl support light and dark modes out-of-the-box.</p>
20
+ <h2>Buttons</h2>
21
+ <p>There are 3 colours of buttons supported by default, with plans to have a "graupl-theme" plugin that adds more.</p>
22
+ <div class="columns">
23
+ <button class="button">Button</button>
24
+ <button class="button primary">Primary Button</button>
25
+ <button class="button secondary">Secondary Button</button>
26
+ </div>
27
+ </main>
28
+ </body>
29
+ </html>
@@ -0,0 +1,6 @@
1
+ const config = {
2
+ "*.{js,mjs,cjs}": ["eslint --fix", "prettier --write"],
3
+ "*.{scss,sass}": ["stylelint --fix", "prettier --write"],
4
+ };
5
+
6
+ export default config;
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@graupl/graupl",
3
+ "version": "1.0.0-alpha.0",
4
+ "description": "A modular and modern CSS framework.",
5
+ "type": "module",
6
+ "scripts": {
7
+ "prepare": "husky install",
8
+ "commit": "git cz",
9
+ "eslint": "eslint .",
10
+ "prettier": "prettier '**/*.{js,mjs,cjs,scss,sass}'",
11
+ "stylelint": "stylelint '**/*.scss' --allow-empty-input",
12
+ "lint": "npm run eslint -- --fix && npm run stylelint -- --fix && npm run prettier -- --write",
13
+ "sass": "sass scss:dist",
14
+ "postcss": "postcss 'dist/**/*.css' --replace",
15
+ "build": "npm run sass && npm run postcss",
16
+ "release": "git add dist/. && standard-version -a",
17
+ "prerelease": "npm run lint && npm run build",
18
+ "docs:dev": "vitepress dev docs",
19
+ "docs:build": "vitepress build docs",
20
+ "docs:preview": "vitepress preview docs"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+ssh://git@github.com/Graupl/graupl.git"
25
+ },
26
+ "author": "",
27
+ "license": "ISC",
28
+ "bugs": {
29
+ "url": "https://github.com/Graupl/graupl/issues"
30
+ },
31
+ "homepage": "https://github.com/Graupl/graupl#readme",
32
+ "devDependencies": {
33
+ "@commitlint/cli": "^19.2.1",
34
+ "@commitlint/config-conventional": "^19.1.0",
35
+ "@eslint/js": "^9.0.0",
36
+ "autoprefixer": "^10.4.19",
37
+ "commitizen": "^4.3.0",
38
+ "cssnano": "^6.1.2",
39
+ "cz-conventional-changelog": "^3.3.0",
40
+ "eslint": "^8.57.0",
41
+ "eslint-config-prettier": "^9.1.0",
42
+ "eslint-config-standard": "^17.1.0",
43
+ "eslint-plugin-jsdoc": "^48.2.3",
44
+ "globals": "^15.0.0",
45
+ "husky": "^9.0.11",
46
+ "lint-staged": "^15.2.2",
47
+ "postcss": "^8.4.38",
48
+ "postcss-cli": "^11.0.0",
49
+ "postcss-discard-comments": "^6.0.2",
50
+ "prettier": "^3.2.5",
51
+ "sass": "^1.69.5",
52
+ "standard-version": "^9.5.0",
53
+ "stylelint": "^16.3.1",
54
+ "stylelint-config-property-sort-order-smacss": "^10.0.0",
55
+ "stylelint-config-sass-guidelines": "^11.1.0",
56
+ "stylelint-config-standard-scss": "^13.1.0",
57
+ "stylelint-prettier": "^5.0.0",
58
+ "vite": "^5.2.8",
59
+ "vitepress": "^1.1.0"
60
+ }
61
+ }
@@ -0,0 +1,12 @@
1
+ /** @type {import('postcss-load-config').Config} */
2
+ const config = {
3
+ plugins: [
4
+ require("autoprefixer"),
5
+ // @todo: add cssnano when ready
6
+ // Waiting on upstream issue for postcss-calc: https://github.com/postcss/postcss-calc/issues/77
7
+ // require("cssnano"),
8
+ require("postcss-discard-comments"),
9
+ ],
10
+ };
11
+
12
+ module.exports = config;
@@ -0,0 +1,16 @@
1
+ /** @type {import("prettier").Config} */
2
+ const config = {
3
+ tabWidth: 2,
4
+ useTabs: false,
5
+ semi: true,
6
+ singleQuote: false,
7
+ quoteProps: "as-needed",
8
+ trailingComma: "es5",
9
+ bracketSpacing: true,
10
+ arrowParens: "always",
11
+ htmlWhitespaceSensitivity: "css",
12
+ endOfLine: "lf",
13
+ printWidth: 80,
14
+ };
15
+
16
+ export default config;