@graupl/graupl 1.0.0-alpha.0 → 1.0.0-alpha.10

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 (206) hide show
  1. package/.stylelintignore +9 -0
  2. package/CHANGELOG.md +178 -0
  3. package/dist/base/form.css +2 -0
  4. package/dist/base/form.css.map +1 -0
  5. package/dist/base/link.css +2 -0
  6. package/dist/base/link.css.map +1 -0
  7. package/dist/base/table.css +2 -0
  8. package/dist/base/table.css.map +1 -0
  9. package/dist/base.css +2 -0
  10. package/dist/base.css.map +1 -0
  11. package/dist/component/button.css +2 -0
  12. package/dist/component/button.css.map +1 -0
  13. package/dist/component/input-group.css +2 -0
  14. package/dist/component/input-group.css.map +1 -0
  15. package/dist/component/table.css +2 -0
  16. package/dist/component/table.css.map +1 -0
  17. package/dist/component.css +2 -0
  18. package/dist/component.css.map +1 -0
  19. package/dist/graupl.css +1 -170
  20. package/dist/graupl.css.map +1 -1
  21. package/dist/layout/columns.css +2 -0
  22. package/dist/layout/columns.css.map +1 -0
  23. package/dist/layout/container.css +2 -0
  24. package/dist/layout/container.css.map +1 -0
  25. package/dist/layout.css +2 -0
  26. package/dist/layout.css.map +1 -0
  27. package/dist/state/focus.css +2 -0
  28. package/dist/state/focus.css.map +1 -0
  29. package/dist/state.css +2 -0
  30. package/dist/state.css.map +1 -0
  31. package/dist/theme/color.css +2 -0
  32. package/dist/theme/color.css.map +1 -0
  33. package/dist/theme/typography.css +2 -0
  34. package/dist/theme/typography.css.map +1 -0
  35. package/dist/theme.css +2 -0
  36. package/dist/theme.css.map +1 -0
  37. package/dist/utilities/alignment.css +2 -0
  38. package/dist/utilities/alignment.css.map +1 -0
  39. package/dist/utilities/color.css +2 -0
  40. package/dist/utilities/color.css.map +1 -0
  41. package/dist/utilities/display.css +2 -0
  42. package/dist/utilities/display.css.map +1 -0
  43. package/dist/utilities/flex.css +2 -0
  44. package/dist/utilities/flex.css.map +1 -0
  45. package/dist/utilities/inset.css +2 -0
  46. package/dist/utilities/inset.css.map +1 -0
  47. package/dist/utilities/justification.css +2 -0
  48. package/dist/utilities/justification.css.map +1 -0
  49. package/dist/utilities/list.css +2 -0
  50. package/dist/utilities/list.css.map +1 -0
  51. package/dist/utilities/postion.css +2 -0
  52. package/dist/utilities/postion.css.map +1 -0
  53. package/dist/utilities/spacing.css +2 -0
  54. package/dist/utilities/spacing.css.map +1 -0
  55. package/dist/utilities/typography.css +2 -0
  56. package/dist/utilities/typography.css.map +1 -0
  57. package/dist/utilities/visibility.css +2 -0
  58. package/dist/utilities/visibility.css.map +1 -0
  59. package/dist/utilities.css +2 -0
  60. package/dist/utilities.css.map +1 -0
  61. package/docs/.vitepress/config.js +41 -1
  62. package/docs/.vitepress/theme/custom.scss +29 -29
  63. package/docs/compiling-graupl.md +56 -0
  64. package/docs/introduction.md +5 -0
  65. package/index.html +337 -4
  66. package/package.json +16 -4
  67. package/postcss.config.cjs +1 -1
  68. package/scss/base/form.scss +3 -0
  69. package/scss/base/link.scss +3 -0
  70. package/scss/base/table.scss +3 -0
  71. package/scss/base.scss +3 -0
  72. package/scss/component/button.scss +3 -0
  73. package/scss/component/input-group.scss +3 -0
  74. package/scss/component/table.scss +3 -0
  75. package/scss/component.scss +3 -0
  76. package/scss/graupl.scss +1 -5
  77. package/scss/layout/columns.scss +3 -0
  78. package/scss/layout/container.scss +3 -0
  79. package/scss/layout.scss +3 -0
  80. package/scss/state/focus.scss +3 -0
  81. package/scss/state.scss +3 -0
  82. package/scss/theme/color.scss +3 -0
  83. package/scss/theme/typography.scss +3 -0
  84. package/scss/theme.scss +3 -0
  85. package/scss/utilities/alignment.scss +3 -0
  86. package/scss/utilities/color.scss +3 -0
  87. package/scss/utilities/display.scss +3 -0
  88. package/scss/utilities/flex.scss +3 -0
  89. package/scss/utilities/inset.scss +3 -0
  90. package/scss/utilities/justification.scss +3 -0
  91. package/scss/utilities/list.scss +3 -0
  92. package/scss/utilities/postion.scss +3 -0
  93. package/scss/utilities/spacing.scss +3 -0
  94. package/scss/utilities/typography.scss +3 -0
  95. package/scss/utilities/visibility.scss +3 -0
  96. package/scss/utilities.scss +3 -0
  97. package/{scss → src/scss}/_defaults.scss +40 -13
  98. package/src/scss/_index.scss +14 -0
  99. package/src/scss/_init.scss +3 -0
  100. package/{scss → src/scss}/_variables.scss +14 -24
  101. package/src/scss/base/_index.scss +5 -0
  102. package/{scss/component/button → src/scss/base/form}/_defaults.scss +1 -4
  103. package/src/scss/base/form/_index.scss +90 -0
  104. package/src/scss/base/form/_variables.scss +145 -0
  105. package/{scss → src/scss}/base/link/_defaults.scss +0 -2
  106. package/src/scss/base/link/_variables.scss +32 -0
  107. package/src/scss/base/table/_defaults.scss +8 -0
  108. package/src/scss/base/table/_index.scss +27 -0
  109. package/src/scss/base/table/_variables.scss +65 -0
  110. package/{scss → src/scss}/component/_index.scss +2 -0
  111. package/src/scss/component/button/_defaults.scss +39 -0
  112. package/{scss → src/scss}/component/button/_index.scss +44 -13
  113. package/src/scss/component/button/_variables.scss +132 -0
  114. package/src/scss/component/input-group/_defaults.scss +23 -0
  115. package/src/scss/component/input-group/_index.scss +45 -0
  116. package/src/scss/component/input-group/_variables.scss +63 -0
  117. package/src/scss/component/table/_defaults.scss +30 -0
  118. package/src/scss/component/table/_index.scss +77 -0
  119. package/src/scss/component/table/_variables.scss +64 -0
  120. package/src/scss/functions/_important.scss +11 -0
  121. package/src/scss/functions/_theme.scss +18 -0
  122. package/{scss → src/scss}/layout/columns/_defaults.scss +2 -4
  123. package/src/scss/layout/columns/_index.scss +36 -0
  124. package/src/scss/layout/columns/_variables.scss +47 -0
  125. package/{scss → src/scss}/layout/container/_defaults.scss +0 -2
  126. package/src/scss/layout/container/_index.scss +36 -0
  127. package/src/scss/layout/container/_variables.scss +47 -0
  128. package/{scss → src/scss}/mixins/_layer.scss +2 -2
  129. package/{scss → src/scss}/mixins/_media-queries.scss +11 -0
  130. package/{scss → src/scss}/state/focus/_defaults.scss +0 -2
  131. package/src/scss/state/focus/_variables.scss +40 -0
  132. package/src/scss/theme/_index.scss +4 -0
  133. package/src/scss/theme/color/_defaults.scss +61 -0
  134. package/src/scss/theme/color/_index.scss +42 -0
  135. package/src/scss/theme/color/_variables.scss +121 -0
  136. package/src/scss/theme/typography/_defaults.scss +52 -0
  137. package/src/scss/theme/typography/_index.scss +111 -0
  138. package/src/scss/theme/typography/_variables.scss +227 -0
  139. package/src/scss/utilities/_index.scss +13 -0
  140. package/src/scss/utilities/alignment/_defaults.scss +57 -0
  141. package/src/scss/utilities/alignment/_index.scss +29 -0
  142. package/src/scss/utilities/alignment/_variables.scss +3 -0
  143. package/src/scss/utilities/color/_defaults.scss +30 -0
  144. package/src/scss/utilities/color/_index.scss +38 -0
  145. package/src/scss/utilities/color/_variables.scss +3 -0
  146. package/src/scss/utilities/display/_defaults.scss +27 -0
  147. package/src/scss/utilities/display/_index.scss +15 -0
  148. package/src/scss/utilities/display/_variables.scss +3 -0
  149. package/src/scss/utilities/flex/_defaults.scss +58 -0
  150. package/src/scss/utilities/flex/_index.scss +36 -0
  151. package/src/scss/utilities/flex/_variables.scss +3 -0
  152. package/src/scss/utilities/inset/_defaults.scss +36 -0
  153. package/src/scss/utilities/inset/_index.scss +19 -0
  154. package/src/scss/utilities/inset/_variables.scss +3 -0
  155. package/src/scss/utilities/justification/_defaults.scss +54 -0
  156. package/src/scss/utilities/justification/_index.scss +29 -0
  157. package/src/scss/utilities/justification/_variables.scss +3 -0
  158. package/src/scss/utilities/list/_defaults.scss +34 -0
  159. package/src/scss/utilities/list/_index.scss +22 -0
  160. package/src/scss/utilities/list/_variables.scss +3 -0
  161. package/src/scss/utilities/position/_defaults.scss +21 -0
  162. package/src/scss/utilities/position/_index.scss +15 -0
  163. package/src/scss/utilities/position/_variables.scss +3 -0
  164. package/src/scss/utilities/spacing/_defaults.scss +44 -0
  165. package/src/scss/utilities/spacing/_index.scss +64 -0
  166. package/src/scss/utilities/spacing/_variables.scss +3 -0
  167. package/src/scss/utilities/typography/_defaults.scss +25 -0
  168. package/src/scss/utilities/typography/_index.scss +95 -0
  169. package/src/scss/utilities/typography/_variables.scss +3 -0
  170. package/src/scss/utilities/visibility/_defaults.scss +20 -0
  171. package/src/scss/utilities/visibility/_index.scss +15 -0
  172. package/src/scss/utilities/visibility/_variables.scss +3 -0
  173. package/stylelint.config.js +2 -0
  174. package/dist/base/link/link.css +0 -26
  175. package/dist/base/link/link.css.map +0 -1
  176. package/dist/component/button/button.css +0 -55
  177. package/dist/component/button/button.css.map +0 -1
  178. package/dist/layout/columns/columns.css +0 -26
  179. package/dist/layout/columns/columns.css.map +0 -1
  180. package/dist/layout/container/container.css +0 -38
  181. package/dist/layout/container/container.css.map +0 -1
  182. package/dist/state/focus/focus.css +0 -10
  183. package/dist/state/focus/focus.css.map +0 -1
  184. package/dist/theme/theme.css +0 -26
  185. package/dist/theme/theme.css.map +0 -1
  186. package/scss/base/_index.scss +0 -3
  187. package/scss/base/link/_variables.scss +0 -31
  188. package/scss/base/link/link.scss +0 -3
  189. package/scss/component/button/_variables.scss +0 -102
  190. package/scss/component/button/button.scss +0 -3
  191. package/scss/layout/columns/_index.scss +0 -30
  192. package/scss/layout/columns/_variables.scss +0 -20
  193. package/scss/layout/columns/columns.scss +0 -3
  194. package/scss/layout/container/_index.scss +0 -50
  195. package/scss/layout/container/_variables.scss +0 -26
  196. package/scss/layout/container/container.scss +0 -3
  197. package/scss/state/focus/_variables.scss +0 -36
  198. package/scss/state/focus/focus.scss +0 -3
  199. package/scss/theme/_defaults.scss +0 -45
  200. package/scss/theme/_index.scss +0 -35
  201. package/scss/theme/_variables.scss +0 -177
  202. package/scss/theme/theme.scss +0 -3
  203. /package/{scss → src/scss}/base/link/_index.scss +0 -0
  204. /package/{scss → src/scss}/layout/_index.scss +0 -0
  205. /package/{scss → src/scss}/state/_index.scss +0 -0
  206. /package/{scss → src/scss}/state/focus/_index.scss +0 -0
@@ -1,5 +1,8 @@
1
1
  // Media query mixins.
2
2
 
3
+ @use "../defaults" as root-defaults;
4
+ @use "sass:map";
5
+
3
6
  // A media query for targetting users who have not requested reduced motion.
4
7
  @mixin animation-on {
5
8
  @media (prefers-reduced-motion: no-preference) {
@@ -13,3 +16,11 @@
13
16
  @content;
14
17
  }
15
18
  }
19
+
20
+ @mixin screen($size) {
21
+ $screen-size: map.get(root-defaults.$screen-sizes, $size);
22
+
23
+ @media screen and #{$screen-size} {
24
+ @content;
25
+ }
26
+ }
@@ -4,7 +4,5 @@
4
4
  // They are mainly used to provide default fallbacks for custom properties
5
5
  // which can be found in the `variables.scss` file.
6
6
 
7
- @forward "../../defaults";
8
-
9
7
  $focus-outline-style: dotted !default;
10
8
  $focus-box-shadow-style: inset !default;
@@ -0,0 +1,40 @@
1
+ // Variables referencing custom properties.
2
+
3
+ @use "../../variables" as root-variables;
4
+ @use "defaults";
5
+ @use "../../defaults" as root-defaults;
6
+ @use "../../functions/theme";
7
+
8
+ $focus-width: var(
9
+ --#{root-defaults.$prefix}-focus-width,
10
+ #{root-variables.$border-width}
11
+ );
12
+ $focus-outline-color: var(
13
+ --#{root-defaults.$prefix}-focus-outline-color,
14
+ #{theme.get(primary, 900)}
15
+ );
16
+ $focus-outline-width: var(
17
+ --#{root-defaults.$prefix}-focus-outline-width,
18
+ #{$focus-width}
19
+ );
20
+ $focus-outline-style: var(
21
+ --#{root-defaults.$prefix}-focus-outline-style,
22
+ #{defaults.$focus-outline-style}
23
+ );
24
+ $focus-outline-offset: var(
25
+ --#{root-defaults.$prefix}-focus-outline-offset,
26
+ calc(-1 * #{$focus-outline-width})
27
+ );
28
+ $focus-box-shadow-color: var(
29
+ --#{root-defaults.$prefix}-focus-box-shadow-color,
30
+ #{theme.get(primary, 100)}
31
+ );
32
+ $focus-box-shadow-style: var(
33
+ --#{root-defaults.$prefix}-focus-box-shadow-style,
34
+ #{defaults.$focus-box-shadow-style}
35
+ );
36
+ $focus-box-shadow: var(
37
+ --#{root-defaults.$prefix}-focus-box-shadow,
38
+ #{$focus-width $focus-width} 0 0 #{$focus-box-shadow-style} #{$focus-box-shadow-color},
39
+ 0 0 0 #{$focus-width} #{$focus-box-shadow-style} #{$focus-box-shadow-color}
40
+ );
@@ -0,0 +1,4 @@
1
+ // Graupl theme.
2
+
3
+ @forward "color";
4
+ @forward "typography";
@@ -0,0 +1,61 @@
1
+ // Default values for Graupl.
2
+ //
3
+ // Generally, these should not be used directly when styling components.
4
+ // They are mainly used to provide default fallbacks for custom properties
5
+ // which can be found in the `variables.scss` file.
6
+
7
+ @use "sass:map";
8
+
9
+ // Colours.
10
+ $default-colors: (
11
+ primary: (
12
+ 100: hsl(219deg 100% 95%),
13
+ 200: hsl(219deg 90% 80%),
14
+ 300: hsl(219deg 80% 65%),
15
+ 400: hsl(219deg 75% 55%),
16
+ 500: hsl(219deg 75% 50%),
17
+ 600: hsl(219deg 75% 45%),
18
+ 700: hsl(219deg 80% 35%),
19
+ 800: hsl(219deg 90% 20%),
20
+ 900: hsl(219deg 100% 10%),
21
+ ),
22
+ secondary: (
23
+ 100: hsl(235deg 40% 95%),
24
+ 200: hsl(235deg 30% 80%),
25
+ 300: hsl(235deg 20% 65%),
26
+ 400: hsl(235deg 15% 55%),
27
+ 500: hsl(235deg 15% 50%),
28
+ 600: hsl(235deg 15% 45%),
29
+ 700: hsl(235deg 20% 35%),
30
+ 800: hsl(235deg 30% 20%),
31
+ 900: hsl(235deg 40% 10%),
32
+ ),
33
+ tertiary: (
34
+ 100: hsl(340deg 85% 95%),
35
+ 200: hsl(340deg 75% 80%),
36
+ 300: hsl(340deg 65% 65%),
37
+ 400: hsl(340deg 60% 55%),
38
+ 500: hsl(340deg 60% 50%),
39
+ 600: hsl(340deg 60% 45%),
40
+ 700: hsl(340deg 65% 35%),
41
+ 800: hsl(340deg 75% 20%),
42
+ 900: hsl(340deg 85% 10%),
43
+ ),
44
+ );
45
+ $custom-colors: () !default;
46
+ $colors: map.merge($default-colors, $custom-colors);
47
+
48
+ // A map for reversing the shade values of the dark theme.
49
+ $base-dark-map: (
50
+ 100: 900,
51
+ 200: 800,
52
+ 300: 700,
53
+ 400: 600,
54
+ 500: 500,
55
+ 600: 400,
56
+ 700: 300,
57
+ 800: 200,
58
+ 900: 100,
59
+ );
60
+ $custom-dark-map: () !default;
61
+ $dark-map: map.merge($base-dark-map, $custom-dark-map);
@@ -0,0 +1,42 @@
1
+ // Color theme styles.
2
+
3
+ @use "variables" as *;
4
+ @use "../../mixins/layer" as *;
5
+ @use "../../defaults" as root-defaults;
6
+ @use "sass:map";
7
+ @use "../../functions/theme";
8
+
9
+ @include layer(theme) {
10
+ :root {
11
+ background: $root-background;
12
+ color: $root-font-color;
13
+
14
+ @each $color, $map in $theme-light {
15
+ @each $shade, $value in $map {
16
+ --#{root-defaults.$prefix}-theme-active--#{$color}--#{$shade}: #{$value};
17
+ }
18
+ }
19
+ }
20
+
21
+ // Set the active theme for dark mode.
22
+ .dark-mode {
23
+ @each $color, $map in $theme-dark {
24
+ @each $shade, $value in $map {
25
+ --#{root-defaults.$prefix}-theme-active--#{$color}--#{$shade}: #{$value};
26
+ }
27
+ }
28
+
29
+ color-scheme: dark;
30
+ }
31
+
32
+ // Set the active theme for light mode.
33
+ .light-mode {
34
+ @each $color, $map in $theme-light {
35
+ @each $shade, $value in $map {
36
+ --#{root-defaults.$prefix}-theme-active--#{$color}--#{$shade}: #{$value};
37
+ }
38
+ }
39
+
40
+ color-scheme: light;
41
+ }
42
+ }
@@ -0,0 +1,121 @@
1
+ // Variables referencing custom properties.
2
+
3
+ @use "defaults";
4
+ @use "../../defaults" as root-defaults;
5
+ @use "sass:map";
6
+
7
+ // A colour map of base colours and their shades.
8
+ $colors: ();
9
+
10
+ // Create a map for each colour.
11
+ @each $color, $map in defaults.$colors {
12
+ // A map for the current colour.
13
+ $color-map: ();
14
+
15
+ @each $shade, $value in $map {
16
+ // Set the custom prop name and fallback value.
17
+ $color-property: var(
18
+ --#{root-defaults.$prefix}-#{$color}--#{$shade},
19
+ $value
20
+ );
21
+
22
+ // Add the custom prop to the map.
23
+ $color-map: map.merge(
24
+ $color-map,
25
+ (
26
+ $shade: $color-property,
27
+ )
28
+ );
29
+ }
30
+
31
+ // Merge the colour map with the existing colours.
32
+ $colors: map.merge(
33
+ $colors,
34
+ (
35
+ $color: $color-map,
36
+ )
37
+ );
38
+ }
39
+
40
+ // Theme properties.
41
+ $theme-light: ();
42
+ $theme-dark: ();
43
+ $theme-active: ();
44
+
45
+ // Create a map for each colour theme.
46
+ @each $color, $map in $colors {
47
+ // Maps for the current colour theme variants.
48
+ $light-map: ();
49
+ $dark-map: ();
50
+ $active-map: ();
51
+
52
+ @each $shade, $value in $map {
53
+ // Get the dark shade and value.
54
+ $dark-shade: map.get(defaults.$dark-map, $shade);
55
+ $dark-value: map.get($map, $dark-shade);
56
+
57
+ // Set the custom prop names and fallback values.
58
+ $light-property: var(
59
+ --#{root-defaults.$prefix}-theme-light--#{$color}--#{$shade},
60
+ $value
61
+ );
62
+ $dark-property: var(
63
+ --#{root-defaults.$prefix}-theme-dark--#{$color}--#{$shade},
64
+ $dark-value
65
+ );
66
+ $active-property: var(
67
+ --#{root-defaults.$prefix}-theme-active--#{$color}--#{$shade},
68
+ $light-property
69
+ );
70
+
71
+ // Add the custom props to the maps.
72
+ $light-map: map.merge(
73
+ $light-map,
74
+ (
75
+ $shade: $light-property,
76
+ )
77
+ );
78
+ $dark-map: map.merge(
79
+ $dark-map,
80
+ (
81
+ $shade: $dark-property,
82
+ )
83
+ );
84
+ $active-map: map.merge(
85
+ $active-map,
86
+ (
87
+ $shade: $active-property,
88
+ )
89
+ );
90
+ }
91
+
92
+ // Merge the theme maps with the existing themes.
93
+ $theme-light: map.merge(
94
+ $theme-light,
95
+ (
96
+ $color: $light-map,
97
+ )
98
+ );
99
+ $theme-dark: map.merge(
100
+ $theme-dark,
101
+ (
102
+ $color: $dark-map,
103
+ )
104
+ );
105
+ $theme-active: map.merge(
106
+ $theme-active,
107
+ (
108
+ $color: $active-map,
109
+ )
110
+ );
111
+ }
112
+
113
+ // Colour properties.
114
+ $root-font-color: var(
115
+ --#{root-defaults.$prefix}-root-font-color,
116
+ #{map.get(map.get($theme-active, primary), 900)}
117
+ );
118
+ $root-background: var(
119
+ --#{root-defaults.$prefix}-root-background,
120
+ #{map.get(map.get($theme-active, primary), 100)}
121
+ );
@@ -0,0 +1,52 @@
1
+ // Default values for Graupl.
2
+ //
3
+ // Generally, these should not be used directly when styling components.
4
+ // They are mainly used to provide default fallbacks for custom properties
5
+ // which can be found in the `variables.scss` file.
6
+
7
+ @use "sass:map";
8
+
9
+ // font properties.
10
+ $font-size: 1rem !default;
11
+ $root-font-size: clamp(0.85rem, calc(0.8rem + 0.5vw), 1.25rem) !default;
12
+ $line-height: 1.2em !default;
13
+
14
+ // Multipliers for font sizes.
15
+ // This uses a minor third scale.
16
+ // See: https://typescale.com/?size=16&scale=1.250&text=A%20Visual%20Type%20Scale&font=Lato&fontweight=400&bodyfont=body_font_default&bodyfontweight=400&lineheight=1.75&backgroundcolor=%23ffffff&fontcolor=%23000000
17
+ $base-font-size-multipliers: (
18
+ xs: 0.694,
19
+ sm: 0.833,
20
+ base: 1,
21
+ lg: 1.2,
22
+ xl: 1.44,
23
+ 2xl: 1.728,
24
+ 3xl: 2.074,
25
+ 4xl: 2.488,
26
+ 5xl: 2.986,
27
+ );
28
+ $custom-font-size-multipliers: () !default;
29
+ $font-size-multipliers: map.merge(
30
+ $base-font-size-multipliers,
31
+ $custom-font-size-multipliers
32
+ );
33
+
34
+ // Weights.
35
+ $base-font-weights: (
36
+ light: 300,
37
+ normal: 400,
38
+ bold: 700,
39
+ );
40
+ $custom-font-weights: () !default;
41
+ $font-weights: map.merge($base-font-weights, $custom-font-weights);
42
+
43
+ /* stylelint-disable-next-line scss/dollar-variable-colon-space-after */
44
+ $root-font-family:
45
+ system-ui,
46
+ -apple-system,
47
+ blinkmacsystemfont,
48
+ "Segoe UI",
49
+ roboto,
50
+ "Helvetica Neue",
51
+ arial,
52
+ sans-serif !default;
@@ -0,0 +1,111 @@
1
+ // Typography theme styles.
2
+
3
+ @use "variables" as *;
4
+ @use "../../mixins/layer" as *;
5
+ @use "sass:map";
6
+
7
+ @include layer(base) {
8
+ p {
9
+ margin: $paragraph-margin;
10
+ }
11
+
12
+ small {
13
+ margin: $small-margin;
14
+ }
15
+
16
+ h1 {
17
+ margin: $h1-margin;
18
+ }
19
+
20
+ h2 {
21
+ margin: $h2-margin;
22
+ }
23
+
24
+ h3 {
25
+ margin: $h3-margin;
26
+ }
27
+
28
+ h4 {
29
+ margin: $h4-margin;
30
+ }
31
+
32
+ h5 {
33
+ margin: $h5-margin;
34
+ }
35
+
36
+ h6 {
37
+ margin: $h6-margin;
38
+ }
39
+ }
40
+
41
+ @include layer(theme) {
42
+ :root {
43
+ font-family: $root-font-family;
44
+ font-size: $root-font-size;
45
+ }
46
+
47
+ b,
48
+ strong {
49
+ font-weight: $font-weight-bold;
50
+ }
51
+
52
+ body {
53
+ font-size: $body-font-size;
54
+ font-weight: $body-font-weight;
55
+ line-height: $body-line-height;
56
+ }
57
+
58
+ p {
59
+ font-size: $paragraph-font-size;
60
+ font-weight: $paragraph-font-weight;
61
+ line-height: $paragraph-line-height;
62
+ }
63
+
64
+ small {
65
+ font-size: $small-font-size;
66
+ font-weight: $small-font-weight;
67
+ line-height: $small-line-height;
68
+ }
69
+
70
+ h1 {
71
+ font-family: $h1-font-family;
72
+ font-size: $h1-font-size;
73
+ font-weight: $h1-font-weight;
74
+ line-height: $h1-line-height;
75
+ }
76
+
77
+ h2 {
78
+ font-family: $h2-font-family;
79
+ font-size: $h2-font-size;
80
+ font-weight: $h2-font-weight;
81
+ line-height: $h2-line-height;
82
+ }
83
+
84
+ h3 {
85
+ font-family: $h3-font-family;
86
+ font-size: $h3-font-size;
87
+ font-weight: $h3-font-weight;
88
+ line-height: $h3-line-height;
89
+ }
90
+
91
+ h4 {
92
+ font-family: $h4-font-family;
93
+ font-size: $h4-font-size;
94
+ font-weight: $h4-font-weight;
95
+ line-height: $h4-line-height;
96
+ }
97
+
98
+ h5 {
99
+ font-family: $h5-font-family;
100
+ font-size: $h5-font-size;
101
+ font-weight: $h5-font-weight;
102
+ line-height: $h5-line-height;
103
+ }
104
+
105
+ h6 {
106
+ font-family: $h6-font-family;
107
+ font-size: $h6-font-size;
108
+ font-weight: $h6-font-weight;
109
+ line-height: $h6-line-height;
110
+ }
111
+ }
@@ -0,0 +1,227 @@
1
+ // Variables referencing custom properties.
2
+
3
+ @use "defaults";
4
+ @use "../../defaults" as root-defaults;
5
+ @use "../../variables" as root-variables;
6
+ @use "sass:map";
7
+
8
+ // Font properties.
9
+ $font-size: var(--#{root-defaults.$prefix}-font-base, #{defaults.$font-size});
10
+ $line-height: var(
11
+ --#{root-defaults.$prefix}-line-height,
12
+ #{defaults.$line-height}
13
+ );
14
+
15
+ // Generate all of the font-size-x custom properties.
16
+ $font-sizes: ();
17
+
18
+ @each $key, $value in defaults.$font-size-multipliers {
19
+ $size: var(
20
+ --#{root-defaults.$prefix}-font-#{$key},
21
+ calc(#{$value} * #{$font-size})
22
+ );
23
+ $font-sizes: map.set($font-sizes, $key, $size);
24
+ }
25
+
26
+ $font-weights: ();
27
+
28
+ @each $key, $value in defaults.$font-weights {
29
+ $weight: var(--#{root-defaults.$prefix}-font-weight-#{$key}, $value);
30
+ $font-weights: map.set($font-weights, $key, $weight);
31
+ }
32
+
33
+ $font-weight-bold: var(
34
+ --#{root-defaults.$prefix}-font-weight-bold,
35
+ #{map.get($font-weights, bold)}
36
+ );
37
+
38
+ // Root properties.
39
+ $root-font-family: var(
40
+ --#{root-defaults.$prefix}-root-font-family,
41
+ #{defaults.$root-font-family}
42
+ );
43
+ $root-font-size: var(
44
+ --#{root-defaults.$prefix}-root-font-size,
45
+ #{defaults.$root-font-size}
46
+ );
47
+
48
+ // Typography properties.
49
+ $body-font-size: var(
50
+ --#{root-defaults.$prefix}-body-font-size,
51
+ #{map.get($font-sizes, base)}
52
+ );
53
+ $body-line-height: var(
54
+ --#{root-defaults.$prefix}-body-line-height,
55
+ #{$line-height}
56
+ );
57
+ $body-font-weight: var(
58
+ --#{root-defaults.$prefix}-body-font-weight,
59
+ #{map.get($font-weights, normal)}
60
+ );
61
+ $paragraph-font-size: var(
62
+ --#{root-defaults.$prefix}-paragraph-font-size,
63
+ #{$body-font-size}
64
+ );
65
+ $paragraph-line-height: var(
66
+ --#{root-defaults.$prefix}-paragraph-line-height,
67
+ #{$body-line-height}
68
+ );
69
+ $paragraph-margin: var(
70
+ --#{root-defaults.$prefix}-paragraph-margin,
71
+ 0 0 #{map.get(root-variables.$spacers, 2)} 0
72
+ );
73
+ $paragraph-font-weight: var(
74
+ --#{root-defaults.$prefix}-paragraph-font-weight,
75
+ #{$body-font-weight}
76
+ );
77
+ $small-font-size: var(
78
+ --#{root-defaults.$prefix}-small-font-size,
79
+ #{map.get($font-sizes, sm)}
80
+ );
81
+ $small-line-height: var(
82
+ --#{root-defaults.$prefix}-small-line-height,
83
+ #{$line-height}
84
+ );
85
+ $small-margin: var(
86
+ --#{root-defaults.$prefix}-small-margin,
87
+ 0 0 #{map.get(root-variables.$spacers, 2)} 0
88
+ );
89
+ $small-font-weight: var(
90
+ --#{root-defaults.$prefix}-small-font-weight,
91
+ #{$body-font-weight}
92
+ );
93
+
94
+ // Headings properties.
95
+ $heading-font-family: var(
96
+ --#{root-defaults.$prefix}-heading-font-family,
97
+ $root-font-family
98
+ );
99
+ $heading-line-height: var(
100
+ --#{root-defaults.$prefix}-heading-line-height,
101
+ #{$line-height}
102
+ );
103
+ $heading-margin: var(
104
+ --#{root-defaults.$prefix}-heading-margin,
105
+ #{map.get(root-variables.$spacers, 5)} 0 #{map.get(
106
+ root-variables.$spacers,
107
+ 2
108
+ )} 0
109
+ );
110
+ $heading-font-weight: var(
111
+ --#{root-defaults.$prefix}-heading-font-weight,
112
+ #{$font-weight-bold}
113
+ );
114
+
115
+ // H1 properties.
116
+ $h1-font-size: var(
117
+ --#{root-defaults.$prefix}-h1-font-size,
118
+ #{map.get($font-sizes, 5xl)}
119
+ );
120
+ $h1-line-height: var(
121
+ --#{root-defaults.$prefix}-h1-line-height,
122
+ #{$heading-line-height}
123
+ );
124
+ $h1-margin: var(--#{root-defaults.$prefix}-h1-margin, #{$heading-margin});
125
+ $h1-font-family: var(
126
+ --#{root-defaults.$prefix}-h1-font-family,
127
+ $heading-font-family
128
+ );
129
+ $h1-font-weight: var(
130
+ --#{root-defaults.$prefix}-h1-font-weight,
131
+ $heading-font-weight
132
+ );
133
+
134
+ // H2 properties.
135
+ $h2-font-size: var(
136
+ --#{root-defaults.$prefix}-h2-font-size,
137
+ #{map.get($font-sizes, 4xl)}
138
+ );
139
+ $h2-line-height: var(
140
+ --#{root-defaults.$prefix}-h2-line-height,
141
+ #{$heading-line-height}
142
+ );
143
+ $h2-margin: var(--#{root-defaults.$prefix}-h2-margin, #{$heading-margin});
144
+ $h2-font-family: var(
145
+ --#{root-defaults.$prefix}-h2-font-family,
146
+ $heading-font-family
147
+ );
148
+ $h2-font-weight: var(
149
+ --#{root-defaults.$prefix}-h2-font-weight,
150
+ $heading-font-weight
151
+ );
152
+
153
+ // H3 properties.
154
+ $h3-font-size: var(
155
+ --#{root-defaults.$prefix}-h3-font-size,
156
+ #{map.get($font-sizes, 3xl)}
157
+ );
158
+ $h3-line-height: var(
159
+ --#{root-defaults.$prefix}-h3-line-height,
160
+ #{$heading-line-height}
161
+ );
162
+ $h3-margin: var(--#{root-defaults.$prefix}-h3-margin, #{$heading-margin});
163
+ $h3-font-family: var(
164
+ --#{root-defaults.$prefix}-h3-font-family,
165
+ $heading-font-family
166
+ );
167
+ $h3-font-weight: var(
168
+ --#{root-defaults.$prefix}-h3-font-weight,
169
+ $heading-font-weight
170
+ );
171
+
172
+ // H4 properties.
173
+ $h4-font-size: var(
174
+ --#{root-defaults.$prefix}-h4-font-size,
175
+ #{map.get($font-sizes, 2xl)}
176
+ );
177
+ $h4-line-height: var(
178
+ --#{root-defaults.$prefix}-h4-line-height,
179
+ #{$heading-line-height}
180
+ );
181
+ $h4-margin: var(--#{root-defaults.$prefix}-h4-margin, #{$heading-margin});
182
+ $h4-font-family: var(
183
+ --#{root-defaults.$prefix}-h4-font-family,
184
+ $heading-font-family
185
+ );
186
+ $h4-font-weight: var(
187
+ --#{root-defaults.$prefix}-h4-font-weight,
188
+ $heading-font-weight
189
+ );
190
+
191
+ // H5 properties.
192
+ $h5-font-size: var(
193
+ --#{root-defaults.$prefix}-h5-font-size,
194
+ #{map.get($font-sizes, xl)}
195
+ );
196
+ $h5-line-height: var(
197
+ --#{root-defaults.$prefix}-h5-line-height,
198
+ #{$heading-line-height}
199
+ );
200
+ $h5-margin: var(--#{root-defaults.$prefix}-h5-margin, #{$heading-margin});
201
+ $h5-font-family: var(
202
+ --#{root-defaults.$prefix}-h5-font-family,
203
+ $heading-font-family
204
+ );
205
+ $h5-font-weight: var(
206
+ --#{root-defaults.$prefix}-h5-font-weight,
207
+ $heading-font-weight
208
+ );
209
+
210
+ // H6 properties.
211
+ $h6-font-size: var(
212
+ --#{root-defaults.$prefix}-h6-font-size,
213
+ #{map.get($font-sizes, lg)}
214
+ );
215
+ $h6-line-height: var(
216
+ --#{root-defaults.$prefix}-h6-line-height,
217
+ #{$heading-line-height}
218
+ );
219
+ $h6-margin: var(--#{root-defaults.$prefix}-h6-margin, #{$heading-margin});
220
+ $h6-font-family: var(
221
+ --#{root-defaults.$prefix}-h6-font-family,
222
+ $heading-font-family
223
+ );
224
+ $h6-font-weight: var(
225
+ --#{root-defaults.$prefix}-h6-font-weight,
226
+ $heading-font-weight
227
+ );
@@ -0,0 +1,13 @@
1
+ // Graupl utilities.
2
+
3
+ @forward "alignment";
4
+ @forward "color";
5
+ @forward "display";
6
+ @forward "flex";
7
+ @forward "inset";
8
+ @forward "justification";
9
+ @forward "list";
10
+ @forward "position";
11
+ @forward "spacing";
12
+ @forward "typography";
13
+ @forward "visibility";