diff options
-rw-r--r-- | src/_base.scss | 3 | ||||
-rw-r--r-- | src/_config.scss | 30 | ||||
-rw-r--r-- | src/_declare-vars.scss (renamed from src/_vars.scss) | 85 | ||||
-rw-r--r-- | src/_functions.scss | 42 | ||||
-rw-r--r-- | src/_layouts.scss | 4 | ||||
-rw-r--r-- | src/_mixins.scss | 11 | ||||
-rw-r--r-- | src/_objects.scss | 16 | ||||
-rw-r--r-- | src/index.scss | 30 | ||||
-rw-r--r-- | src/layouts/_form.scss | 4 | ||||
-rw-r--r-- | src/objects/_heading.scss | 7 |
10 files changed, 116 insertions, 116 deletions
diff --git a/src/_base.scss b/src/_base.scss index 6e404fe..6e8efbd 100644 --- a/src/_base.scss +++ b/src/_base.scss | |||
@@ -1,5 +1,6 @@ | |||
1 | @use 'iro-sass/src/index' as iro; | 1 | @use 'iro-sass/src/index' as iro; |
2 | @use 'functions' as fn; | 2 | @use 'functions' as fn; |
3 | @use 'mixins' as mx; | ||
3 | 4 | ||
4 | html, | 5 | html, |
5 | body { | 6 | body { |
@@ -7,7 +8,7 @@ body { | |||
7 | } | 8 | } |
8 | 9 | ||
9 | body { | 10 | body { |
10 | @include fn.set-font(--standard, (--size: fn.dim(--font-size --md))); | 11 | @include mx.set-font(--standard, (--size: fn.dim(--font-size --md))); |
11 | 12 | ||
12 | margin: 0; | 13 | margin: 0; |
13 | padding: 0; | 14 | padding: 0; |
diff --git a/src/_config.scss b/src/_config.scss new file mode 100644 index 0000000..d79153f --- /dev/null +++ b/src/_config.scss | |||
@@ -0,0 +1,30 @@ | |||
1 | @use 'iro-sass/src/index' as iro; | ||
2 | @use 'include-media/dist/include-media' as media; | ||
3 | |||
4 | iro.$vars-root-size: 16px; | ||
5 | |||
6 | media.$breakpoints: ( | ||
7 | md: 40rem, | ||
8 | sm: 28rem | ||
9 | ); | ||
10 | |||
11 | media.$unit-intervals: ( | ||
12 | 'px': 1, | ||
13 | 'em': .01, | ||
14 | 'rem': .01, | ||
15 | '': 0 | ||
16 | ); | ||
17 | |||
18 | $wanted-grays: ( | ||
19 | -1.25, | ||
20 | -1.1, | ||
21 | 1, | ||
22 | 1.15, | ||
23 | 1.37, | ||
24 | 1.73, | ||
25 | 2.4, | ||
26 | 3.26, | ||
27 | 5, | ||
28 | 11, | ||
29 | 21, | ||
30 | ); | ||
diff --git a/src/_vars.scss b/src/_declare-vars.scss index d2fbc10..38d39dd 100644 --- a/src/_vars.scss +++ b/src/_declare-vars.scss | |||
@@ -1,69 +1,8 @@ | |||
1 | @use 'sass:map'; | ||
2 | @use 'iro-sass/src/index' as iro; | 1 | @use 'iro-sass/src/index' as iro; |
3 | @use 'include-media/dist/include-media' as media; | 2 | @use 'include-media/dist/include-media' as media; |
4 | @use '@oddbird/blend'; | 3 | @use '@oddbird/blend'; |
5 | @use 'functions' as fn; | 4 | @use 'functions' as fn; |
6 | 5 | ||
7 | iro.$vars-root-size: 16px; | ||
8 | |||
9 | media.$breakpoints: ( | ||
10 | md: 40rem, | ||
11 | sm: 28rem | ||
12 | ); | ||
13 | |||
14 | media.$unit-intervals: ( | ||
15 | 'px': 1, | ||
16 | 'em': .01, | ||
17 | 'rem': .01, | ||
18 | '': 0 | ||
19 | ); | ||
20 | |||
21 | $grays: (); | ||
22 | |||
23 | @for $i from 0 through 100 { | ||
24 | $grays: append($grays, blend.lch($i * 1% 0 0)); | ||
25 | } | ||
26 | |||
27 | $wanted-grays: ( | ||
28 | -1.25, | ||
29 | -1.1, | ||
30 | 1, | ||
31 | 1.15, | ||
32 | 1.37, | ||
33 | 1.73, | ||
34 | 2.4, | ||
35 | 3.26, | ||
36 | 5, | ||
37 | 11, | ||
38 | 21, | ||
39 | ); | ||
40 | |||
41 | @function accent-palette($base, $dir: 1) { | ||
42 | @return ( | ||
43 | --hi: blend.scale($base, $lightness: $dir * 15%, $chroma: $dir * 10%), | ||
44 | --main: $base, | ||
45 | --lo: blend.scale($base, $lightness: $dir * -15%, $chroma: $dir * -10%), | ||
46 | --lo2: blend.scale($base, $lightness: $dir * -25%, $chroma: $dir * -20%), | ||
47 | --semi: rgba($base, .4), | ||
48 | --selection: rgba($base, .99), | ||
49 | --fg: blend.contrast($base), | ||
50 | ); | ||
51 | } | ||
52 | |||
53 | @function gray-palette($lightness) { | ||
54 | $colors: fn.multi-contrast(blend.lch($lightness * 1% 0 0), $grays, $wanted-grays); | ||
55 | |||
56 | $palette: (); | ||
57 | |||
58 | @for $i from 1 through length($colors) { | ||
59 | $palette: map.set($palette, --gray#{$i}, hsl(fn.color(--gray-h), fn.color(--gray-s), lightness(nth($colors, $i)))); | ||
60 | } | ||
61 | |||
62 | @return $palette; | ||
63 | } | ||
64 | |||
65 | // | ||
66 | |||
67 | @include iro.props-store(( | 6 | @include iro.props-store(( |
68 | --dims: ( | 7 | --dims: ( |
69 | --spacing: ( | 8 | --spacing: ( |
@@ -149,10 +88,10 @@ $wanted-grays: ( | |||
149 | --fg-lo: fn.color(--gray11, null), // Strong text | 88 | --fg-lo: fn.color(--gray11, null), // Strong text |
150 | 89 | ||
151 | --accent: ( | 90 | --accent: ( |
152 | --blue: accent-palette(blend.lch(48% 50 279)), | 91 | --blue: fn.accent-palette(blend.lch(48% 50 279)), |
153 | --red: accent-palette(blend.lch(48% 50 23)), | 92 | --red: fn.accent-palette(blend.lch(48% 50 23)), |
154 | --green: accent-palette(blend.lch(58% 50 141)), | 93 | --green: fn.accent-palette(blend.lch(58% 50 141)), |
155 | --yellow: accent-palette(blend.lch(73% 50 90)), | 94 | --yellow: fn.accent-palette(blend.lch(73% 50 90)), |
156 | 95 | ||
157 | --primary: iro.props-ref('colors', --colors --accent --blue), | 96 | --primary: iro.props-ref('colors', --colors --accent --blue), |
158 | --error: iro.props-ref('colors', --colors --accent --red), | 97 | --error: iro.props-ref('colors', --colors --accent --red), |
@@ -175,11 +114,11 @@ $wanted-grays: ( | |||
175 | ), 'colors'); | 114 | ), 'colors'); |
176 | 115 | ||
177 | @include iro.props-store(( | 116 | @include iro.props-store(( |
178 | --colors: gray-palette(94%) | 117 | --colors: fn.gray-palette(94%) |
179 | ), 'palette-light'); | 118 | ), 'palette-light'); |
180 | 119 | ||
181 | @include iro.props-store(( | 120 | @include iro.props-store(( |
182 | --colors: gray-palette(100%) | 121 | --colors: fn.gray-palette(100%) |
183 | ), 'palette-light-raised'); | 122 | ), 'palette-light-raised'); |
184 | } | 123 | } |
185 | 124 | ||
@@ -189,10 +128,10 @@ $wanted-grays: ( | |||
189 | @include iro.props-store(( | 128 | @include iro.props-store(( |
190 | --colors: ( | 129 | --colors: ( |
191 | --accent: ( | 130 | --accent: ( |
192 | --blue: accent-palette(blend.lch(58% 60 279), -1), | 131 | --blue: fn.accent-palette(blend.lch(58% 60 279), -1), |
193 | --red: accent-palette(blend.lch(58% 60 23), -1), | 132 | --red: fn.accent-palette(blend.lch(58% 60 23), -1), |
194 | --green: accent-palette(blend.lch(68% 60 141), -1), | 133 | --green: fn.accent-palette(blend.lch(68% 60 141), -1), |
195 | --yellow: accent-palette(blend.lch(83% 60 90), -1), | 134 | --yellow: fn.accent-palette(blend.lch(83% 60 90), -1), |
196 | 135 | ||
197 | --primary: iro.props-ref('colors-dark', --colors --accent --blue), | 136 | --primary: iro.props-ref('colors-dark', --colors --accent --blue), |
198 | --error: iro.props-ref('colors-dark', --colors --accent --red), | 137 | --error: iro.props-ref('colors-dark', --colors --accent --red), |
@@ -202,11 +141,11 @@ $wanted-grays: ( | |||
202 | ), 'colors-dark'); | 141 | ), 'colors-dark'); |
203 | 142 | ||
204 | @include iro.props-store(( | 143 | @include iro.props-store(( |
205 | --colors: gray-palette(9%) | 144 | --colors: fn.gray-palette(9%) |
206 | ), 'palette-dark'); | 145 | ), 'palette-dark'); |
207 | 146 | ||
208 | @include iro.props-store(( | 147 | @include iro.props-store(( |
209 | --colors: gray-palette(16%) | 148 | --colors: fn.gray-palette(16%) |
210 | ), 'palette-dark-raised'); | 149 | ), 'palette-dark-raised'); |
211 | } | 150 | } |
212 | 151 | ||
diff --git a/src/_functions.scss b/src/_functions.scss index 73a1ec9..56fdf39 100644 --- a/src/_functions.scss +++ b/src/_functions.scss | |||
@@ -1,5 +1,7 @@ | |||
1 | @use 'sass:math'; | 1 | @use 'sass:math'; |
2 | @use 'sass:map'; | ||
2 | @use 'iro-sass/src/index' as iro; | 3 | @use 'iro-sass/src/index' as iro; |
4 | @use 'config'; | ||
3 | @use '@oddbird/blend'; | 5 | @use '@oddbird/blend'; |
4 | @use '@oddbird/blend/sass/convert' as blend-convert; | 6 | @use '@oddbird/blend/sass/convert' as blend-convert; |
5 | 7 | ||
@@ -53,16 +55,6 @@ | |||
53 | @return $map; | 55 | @return $map; |
54 | } | 56 | } |
55 | 57 | ||
56 | @mixin set-font($basis, $values: ()) { | ||
57 | $values: set-font($basis, $values); | ||
58 | |||
59 | @each $prop, $value in $values { | ||
60 | @if $value != null { | ||
61 | #{$prop}: $value; | ||
62 | } | ||
63 | } | ||
64 | } | ||
65 | |||
66 | @function multi-contrast($base-color, $colors, $wanted-contrasts) { | 58 | @function multi-contrast($base-color, $colors, $wanted-contrasts) { |
67 | $dir: if(lightness($base-color) >= 50%, -1, 1); | 59 | $dir: if(lightness($base-color) >= 50%, -1, 1); |
68 | $base-lum: nth(blend-convert.lin_sRGB_to_XYZ(blend-convert.lin_sRGB(blend-convert.sassToRgb($base-color))), 2) + .05; | 60 | $base-lum: nth(blend-convert.lin_sRGB_to_XYZ(blend-convert.lin_sRGB(blend-convert.sassToRgb($base-color))), 2) + .05; |
@@ -104,3 +96,33 @@ | |||
104 | 96 | ||
105 | @return $result; | 97 | @return $result; |
106 | } | 98 | } |
99 | |||
100 | @function accent-palette($base, $dir: 1) { | ||
101 | @return ( | ||
102 | --hi: blend.scale($base, $lightness: $dir * 15%, $chroma: $dir * 10%), | ||
103 | --main: $base, | ||
104 | --lo: blend.scale($base, $lightness: $dir * -15%, $chroma: $dir * -10%), | ||
105 | --lo2: blend.scale($base, $lightness: $dir * -25%, $chroma: $dir * -20%), | ||
106 | --semi: rgba($base, .4), | ||
107 | --selection: rgba($base, .99), | ||
108 | --fg: blend.contrast($base), | ||
109 | ); | ||
110 | } | ||
111 | |||
112 | @function gray-palette($lightness) { | ||
113 | $grays: (); | ||
114 | |||
115 | @for $i from 0 through 100 { | ||
116 | $grays: append($grays, blend.lch($i * 1% 0 0)); | ||
117 | } | ||
118 | |||
119 | $colors: multi-contrast(blend.lch($lightness * 1% 0 0), $grays, config.$wanted-grays); | ||
120 | |||
121 | $palette: (); | ||
122 | |||
123 | @for $i from 1 through length($colors) { | ||
124 | $palette: map.set($palette, --gray#{$i}, hsl(color(--gray-h), color(--gray-s), lightness(nth($colors, $i)))); | ||
125 | } | ||
126 | |||
127 | @return $palette; | ||
128 | } | ||
diff --git a/src/_layouts.scss b/src/_layouts.scss new file mode 100644 index 0000000..99a003e --- /dev/null +++ b/src/_layouts.scss | |||
@@ -0,0 +1,4 @@ | |||
1 | @use 'layouts/card'; | ||
2 | @use 'layouts/container'; | ||
3 | @use 'layouts/button-group'; | ||
4 | @use 'layouts/form'; | ||
diff --git a/src/_mixins.scss b/src/_mixins.scss new file mode 100644 index 0000000..e8595f1 --- /dev/null +++ b/src/_mixins.scss | |||
@@ -0,0 +1,11 @@ | |||
1 | @use 'functions'; | ||
2 | |||
3 | @mixin set-font($basis, $values: ()) { | ||
4 | $values: functions.set-font($basis, $values); | ||
5 | |||
6 | @each $prop, $value in $values { | ||
7 | @if $value != null { | ||
8 | #{$prop}: $value; | ||
9 | } | ||
10 | } | ||
11 | } | ||
diff --git a/src/_objects.scss b/src/_objects.scss new file mode 100644 index 0000000..45415f1 --- /dev/null +++ b/src/_objects.scss | |||
@@ -0,0 +1,16 @@ | |||
1 | @use 'objects/icon'; | ||
2 | @use 'objects/heading'; | ||
3 | @use 'objects/rule'; | ||
4 | @use 'objects/button'; | ||
5 | @use 'objects/text-field'; | ||
6 | @use 'objects/field-label'; | ||
7 | @use 'objects/radio'; | ||
8 | @use 'objects/checkbox'; | ||
9 | @use 'objects/switch'; | ||
10 | @use 'objects/action-button'; | ||
11 | @use 'objects/status-indicator'; | ||
12 | @use 'objects/avatar'; | ||
13 | @use 'objects/action-menu'; | ||
14 | @use 'objects/menu'; | ||
15 | @use 'objects/backdrop'; | ||
16 | @use 'objects/dialog'; | ||
diff --git a/src/index.scss b/src/index.scss index 21054db..e090427 100644 --- a/src/index.scss +++ b/src/index.scss | |||
@@ -1,32 +1,8 @@ | |||
1 | @use 'functions'; | 1 | @use 'declare-vars'; |
2 | |||
3 | @use 'vars'; | ||
4 | 2 | ||
5 | @use 'base'; | 3 | @use 'base'; |
6 | 4 | @use 'layouts'; | |
7 | @use 'layouts/card'; | 5 | @use 'objects'; |
8 | @use 'layouts/container'; | ||
9 | @use 'layouts/button-group'; | ||
10 | |||
11 | @use 'objects/icon'; | ||
12 | @use 'objects/heading'; | ||
13 | @use 'objects/rule'; | ||
14 | @use 'objects/button'; | ||
15 | @use 'objects/text-field'; | ||
16 | @use 'objects/field-label'; | ||
17 | @use 'objects/radio'; | ||
18 | @use 'objects/checkbox'; | ||
19 | @use 'objects/switch'; | ||
20 | @use 'objects/action-button'; | ||
21 | @use 'objects/status-indicator'; | ||
22 | @use 'objects/avatar'; | ||
23 | @use 'objects/action-menu'; | ||
24 | @use 'objects/menu'; | ||
25 | @use 'objects/backdrop'; | ||
26 | @use 'objects/dialog'; | ||
27 | |||
28 | @use 'layouts/form'; | ||
29 | |||
30 | @use 'utils'; | 6 | @use 'utils'; |
31 | 7 | ||
32 | @use 'apply-vars'; | 8 | @use 'apply-vars'; |
diff --git a/src/layouts/_form.scss b/src/layouts/_form.scss index 4334192..a8308af 100644 --- a/src/layouts/_form.scss +++ b/src/layouts/_form.scss | |||
@@ -1,6 +1,8 @@ | |||
1 | @use 'iro-sass/src/index' as iro; | 1 | @use 'iro-sass/src/index' as iro; |
2 | @use '../functions' as fn; | 2 | @use '../functions' as fn; |
3 | 3 | ||
4 | @use '../objects/field-label'; | ||
5 | |||
4 | @include iro.props-namespace('form') { | 6 | @include iro.props-namespace('form') { |
5 | @include iro.props-store(( | 7 | @include iro.props-store(( |
6 | --dims: ( | 8 | --dims: ( |
@@ -11,8 +13,6 @@ | |||
11 | ), 'dims'); | 13 | ), 'dims'); |
12 | 14 | ||
13 | @include iro.bem-layout(iro.props-namespace()) { | 15 | @include iro.bem-layout(iro.props-namespace()) { |
14 | @include iro.bem-composed-of('field-label' 'object'); | ||
15 | |||
16 | display: flex; | 16 | display: flex; |
17 | flex-direction: column; | 17 | flex-direction: column; |
18 | align-items: baseline; | 18 | align-items: baseline; |
diff --git a/src/objects/_heading.scss b/src/objects/_heading.scss index 24971bb..b5f02d8 100644 --- a/src/objects/_heading.scss +++ b/src/objects/_heading.scss | |||
@@ -1,5 +1,6 @@ | |||
1 | @use 'iro-sass/src/index' as iro; | 1 | @use 'iro-sass/src/index' as iro; |
2 | @use '../functions' as fn; | 2 | @use '../functions' as fn; |
3 | @use '../mixins' as mx; | ||
3 | 4 | ||
4 | @include iro.props-namespace('heading') { | 5 | @include iro.props-namespace('heading') { |
5 | @include iro.props-store(( | 6 | @include iro.props-store(( |
@@ -20,7 +21,7 @@ | |||
20 | ), 'colors'); | 21 | ), 'colors'); |
21 | 22 | ||
22 | @include iro.bem-object(iro.props-namespace()) { | 23 | @include iro.bem-object(iro.props-namespace()) { |
23 | @include fn.set-font(--headline); | 24 | @include mx.set-font(--headline); |
24 | 25 | ||
25 | display: block; | 26 | display: block; |
26 | margin-top: fn.dim(--in-page-margin --top); | 27 | margin-top: fn.dim(--in-page-margin --top); |
@@ -51,7 +52,7 @@ | |||
51 | } | 52 | } |
52 | 53 | ||
53 | @include iro.bem-modifier('sm') { | 54 | @include iro.bem-modifier('sm') { |
54 | @include fn.set-font(--standard, ( | 55 | @include mx.set-font(--standard, ( |
55 | --line-height: null, | 56 | --line-height: null, |
56 | --size: fn.global-dim(--font-size --md), | 57 | --size: fn.global-dim(--font-size --md), |
57 | --weight: 500 | 58 | --weight: 500 |
@@ -61,7 +62,7 @@ | |||
61 | } | 62 | } |
62 | 63 | ||
63 | @include iro.bem-modifier('xs') { | 64 | @include iro.bem-modifier('xs') { |
64 | @include fn.set-font(--standard, ( | 65 | @include mx.set-font(--standard, ( |
65 | --line-height: null, | 66 | --line-height: null, |
66 | --size: fn.global-dim(--font-size --xs), | 67 | --size: fn.global-dim(--font-size --xs), |
67 | --weight: 500, | 68 | --weight: 500, |