diff options
33 files changed, 361 insertions, 236 deletions
diff --git a/package.json b/package.json index 6047b47..122839c 100644 --- a/package.json +++ b/package.json | |||
@@ -27,8 +27,8 @@ | |||
27 | "postcss-scss": "^4.0.3", | 27 | "postcss-scss": "^4.0.3", |
28 | "pug": "^3.0.0", | 28 | "pug": "^3.0.0", |
29 | "pug-cli": "^1.0.0-alpha6", | 29 | "pug-cli": "^1.0.0-alpha6", |
30 | "sass": "^1.49.8", | 30 | "sass": "^1.49.9", |
31 | "stylelint": "^14.5.1", | 31 | "stylelint": "^14.6.1", |
32 | "stylelint-config-sass-guidelines": "^9.0.1", | 32 | "stylelint-config-sass-guidelines": "^9.0.1", |
33 | "svg-sprite": "^1.5.4" | 33 | "svg-sprite": "^1.5.4" |
34 | } | 34 | } |
diff --git a/src/_apply-vars.scss b/src/_apply-vars.scss index 66ad9b7..9639a97 100644 --- a/src/_apply-vars.scss +++ b/src/_apply-vars.scss | |||
@@ -19,6 +19,12 @@ | |||
19 | } | 19 | } |
20 | } | 20 | } |
21 | 21 | ||
22 | @include iro.bem-theme('dark') { | ||
23 | @include iro.props-assign('colors'); | ||
24 | @include iro.props-assign('colors-dark'); | ||
25 | @include iro.props-assign('palette-dark'); | ||
26 | } | ||
27 | |||
22 | @include iro.bem-theme('raised') { | 28 | @include iro.bem-theme('raised') { |
23 | @include iro.props-assign('colors'); | 29 | @include iro.props-assign('colors'); |
24 | @include iro.props-assign('palette-light-raised'); | 30 | @include iro.props-assign('palette-light-raised'); |
@@ -29,8 +35,12 @@ | |||
29 | } | 35 | } |
30 | } | 36 | } |
31 | 37 | ||
32 | @include iro.bem-theme('dark') { | 38 | @include iro.bem-theme('lowered') { |
33 | @include iro.props-assign('colors'); | 39 | @include iro.props-assign('colors'); |
34 | @include iro.props-assign('colors-dark'); | 40 | @include iro.props-assign('palette-light-lowered'); |
35 | @include iro.props-assign('palette-dark'); | 41 | |
42 | @media (prefers-color-scheme: dark) { | ||
43 | @include iro.props-assign('colors-dark'); | ||
44 | @include iro.props-assign('palette-dark-lowered'); | ||
45 | } | ||
36 | } | 46 | } |
diff --git a/src/_config.scss b/src/_config.scss index cdbd02c..68df69f 100644 --- a/src/_config.scss +++ b/src/_config.scss | |||
@@ -21,7 +21,7 @@ $wanted-grays: ( | |||
21 | --3: 1, | 21 | --3: 1, |
22 | 22 | ||
23 | --4: 1.15, | 23 | --4: 1.15, |
24 | --5: 1.3, | 24 | --5: 1.35, |
25 | --6: 1.7, | 25 | --6: 1.7, |
26 | 26 | ||
27 | --7: 2.4, | 27 | --7: 2.4, |
diff --git a/src/_declare-vars.scss b/src/_declare-vars.scss index 998608a..0bcf101 100644 --- a/src/_declare-vars.scss +++ b/src/_declare-vars.scss | |||
@@ -115,7 +115,7 @@ | |||
115 | --fg: fn.color(--gray --10, null), // Text | 115 | --fg: fn.color(--gray --10, null), // Text |
116 | --fg-lo: fn.color(--gray --11, null), // Strong text | 116 | --fg-lo: fn.color(--gray --11, null), // Strong text |
117 | 117 | ||
118 | --gray: ( --h: 220, --s: 5% ), | 118 | --gray: ( --h: 220, --s: 0% ), |
119 | --blue: fn.color-palette(blend.lch(48% 50 279)), | 119 | --blue: fn.color-palette(blend.lch(48% 50 279)), |
120 | --purple: fn.color-palette(blend.lch(48% 50 308)), | 120 | --purple: fn.color-palette(blend.lch(48% 50 308)), |
121 | --red: fn.color-palette(blend.lch(48% 50 23)), | 121 | --red: fn.color-palette(blend.lch(48% 50 23)), |
@@ -140,7 +140,7 @@ | |||
140 | --focus: ( | 140 | --focus: ( |
141 | --shadow: 0 0 0 fn.dim(--focus-outline-width, null) fn.color(--accent --primary --semi, null), | 141 | --shadow: 0 0 0 fn.dim(--focus-outline-width, null) fn.color(--accent --primary --semi, null), |
142 | --fill: fn.color(--accent --primary --bg, null), | 142 | --fill: fn.color(--accent --primary --bg, null), |
143 | --text: fn.color(--accent --primary --lo, null), | 143 | --text: fn.color(--accent --primary --obj, null), |
144 | --fill-text: fn.color(--accent --primary --fg, null), | 144 | --fill-text: fn.color(--accent --primary --fg, null), |
145 | ), | 145 | ), |
146 | ), | 146 | ), |
@@ -148,7 +148,7 @@ | |||
148 | 148 | ||
149 | @include iro.props-store(( | 149 | @include iro.props-store(( |
150 | --colors: ( | 150 | --colors: ( |
151 | --gray: fn.gray-palette(94%), | 151 | --gray: fn.gray-palette(96%), |
152 | ), | 152 | ), |
153 | ), 'palette-light'); | 153 | ), 'palette-light'); |
154 | 154 | ||
@@ -158,6 +158,12 @@ | |||
158 | ), | 158 | ), |
159 | ), 'palette-light-raised'); | 159 | ), 'palette-light-raised'); |
160 | 160 | ||
161 | @include iro.props-store(( | ||
162 | --colors: ( | ||
163 | --gray: fn.gray-palette(91%), | ||
164 | ), | ||
165 | ), 'palette-light-lowered'); | ||
166 | |||
161 | // | 167 | // |
162 | 168 | ||
163 | @include iro.props-store(( | 169 | @include iro.props-store(( |
@@ -187,10 +193,16 @@ | |||
187 | 193 | ||
188 | @include iro.props-store(( | 194 | @include iro.props-store(( |
189 | --colors: ( | 195 | --colors: ( |
190 | --gray: fn.gray-palette(16%), | 196 | --gray: fn.gray-palette(13%), |
191 | ), | 197 | ), |
192 | ), 'palette-dark-raised'); | 198 | ), 'palette-dark-raised'); |
193 | 199 | ||
200 | @include iro.props-store(( | ||
201 | --colors: ( | ||
202 | --gray: fn.gray-palette(5%), | ||
203 | ), | ||
204 | ), 'palette-dark-lowered'); | ||
205 | |||
194 | // | 206 | // |
195 | 207 | ||
196 | @each $breakpoint in map-keys(media.$breakpoints) { | 208 | @each $breakpoint in map-keys(media.$breakpoints) { |
diff --git a/src/_objects.scss b/src/_objects.scss index 070e281..d01ed54 100644 --- a/src/_objects.scss +++ b/src/_objects.scss | |||
@@ -1,6 +1,6 @@ | |||
1 | @use 'objects/icon'; | 1 | @use 'objects/icon'; |
2 | @use 'objects/heading'; | 2 | @use 'objects/heading'; |
3 | @use 'objects/rule'; | 3 | @use 'objects/divider'; |
4 | @use 'objects/badge'; | 4 | @use 'objects/badge'; |
5 | @use 'objects/button'; | 5 | @use 'objects/button'; |
6 | @use 'objects/text-field'; | 6 | @use 'objects/text-field'; |
@@ -11,6 +11,8 @@ | |||
11 | @use 'objects/action-button'; | 11 | @use 'objects/action-button'; |
12 | @use 'objects/status-indicator'; | 12 | @use 'objects/status-indicator'; |
13 | @use 'objects/avatar'; | 13 | @use 'objects/avatar'; |
14 | @use 'objects/header'; | ||
15 | @use 'objects/sidebar'; | ||
14 | @use 'objects/action-menu'; | 16 | @use 'objects/action-menu'; |
15 | @use 'objects/menu'; | 17 | @use 'objects/menu'; |
16 | @use 'objects/backdrop'; | 18 | @use 'objects/backdrop'; |
diff --git a/src/layouts/_button-group.scss b/src/layouts/_button-group.scss index 17de1e1..2917776 100644 --- a/src/layouts/_button-group.scss +++ b/src/layouts/_button-group.scss | |||
@@ -4,7 +4,7 @@ | |||
4 | @include iro.props-namespace('button-group') { | 4 | @include iro.props-namespace('button-group') { |
5 | @include iro.props-store(( | 5 | @include iro.props-store(( |
6 | --dims: ( | 6 | --dims: ( |
7 | --spacing: iro.fn-px-to-rem(16px), | 7 | --spacing: fn.global-dim(--size --150), |
8 | ), | 8 | ), |
9 | ), 'dims'); | 9 | ), 'dims'); |
10 | 10 | ||
diff --git a/src/objects/_action-button.scss b/src/objects/_action-button.scss index 83321da..2dcbb12 100644 --- a/src/objects/_action-button.scss +++ b/src/objects/_action-button.scss | |||
@@ -15,44 +15,33 @@ | |||
15 | --bg: fn.global-color(--bg-hi), | 15 | --bg: fn.global-color(--bg-hi), |
16 | --label: fn.global-color(--fg), | 16 | --label: fn.global-color(--fg), |
17 | --border: fn.global-color(--obj-lo), | 17 | --border: fn.global-color(--obj-lo), |
18 | --shadow: 0 0 0 0 transparent, | ||
19 | 18 | ||
20 | --hover: ( | 19 | --hover: ( |
21 | --bg: fn.global-color(--bg-hi2), | 20 | --bg: fn.global-color(--bg-hi2), |
22 | --label: fn.global-color(--fg-lo), | 21 | --label: fn.global-color(--fg-lo), |
23 | --border: fn.global-color(--fg-hi2), | 22 | --border: fn.global-color(--fg-hi2), |
24 | --shadow: 0 0 0 0 transparent, | ||
25 | ), | 23 | ), |
26 | --active: ( | 24 | --active: ( |
27 | --bg: fn.global-color(--obj-hi), | 25 | --bg: fn.global-color(--obj-hi), |
28 | --label: fn.global-color(--fg-lo), | 26 | --label: fn.global-color(--fg-lo), |
29 | --border: fn.global-color(--fg-hi2), | 27 | --border: fn.global-color(--fg-hi2), |
30 | --shadow: 0 0 0 0 transparent, | ||
31 | ), | 28 | ), |
32 | --selected: ( | 29 | --selected: ( |
33 | --bg: fn.global-color(--obj-hi), | 30 | --bg: fn.global-color(--obj-hi), |
34 | --label: fn.global-color(--fg), | 31 | --label: fn.global-color(--fg), |
35 | --border: fn.global-color(--fg-hi3), | 32 | --border: fn.global-color(--fg-hi3), |
36 | --shadow: 0 0 0 0 transparent, | ||
37 | 33 | ||
38 | --hover: ( | 34 | --hover: ( |
39 | --label: fn.global-color(--fg-lo), | 35 | --label: fn.global-color(--fg-lo), |
40 | --border: fn.global-color(--fg-hi2), | 36 | --border: fn.global-color(--fg-hi2), |
41 | --shadow: 0 0 0 0 transparent, | ||
42 | ), | ||
43 | --key-focus: ( | ||
44 | --bg: fn.global-color(--obj-hi), | ||
45 | ), | 37 | ), |
46 | ), | 38 | ), |
47 | --disabled: ( | 39 | --disabled: ( |
48 | --bg: fn.global-color(--obj-hi), | 40 | --bg: fn.global-color(--obj-hi), |
49 | --label: fn.global-color(--fg-hi3), | 41 | --label: fn.global-color(--fg-hi3), |
50 | --border: fn.global-color(--obj-hi), | 42 | --border: fn.global-color(--obj-hi), |
51 | --shadow: 0 0 0 0 transparent, | ||
52 | ), | 43 | ), |
53 | --key-focus: ( | 44 | --key-focus: ( |
54 | --bg: fn.global-color(--bg-hi2), | ||
55 | --label: fn.global-color(--fg-lo), | ||
56 | --border: fn.global-color(--focus --fill), | 45 | --border: fn.global-color(--focus --fill), |
57 | --shadow: fn.global-color(--focus --shadow), | 46 | --shadow: fn.global-color(--focus --shadow), |
58 | ), | 47 | ), |
@@ -74,19 +63,10 @@ | |||
74 | --hover: ( | 63 | --hover: ( |
75 | --label: fn.global-color(--fg-lo), | 64 | --label: fn.global-color(--fg-lo), |
76 | ), | 65 | ), |
77 | --key-focus: ( | ||
78 | --bg: fn.global-color(--obj), | ||
79 | ), | ||
80 | ), | 66 | ), |
81 | --disabled: ( | 67 | --disabled: ( |
82 | --label: fn.global-color(--fg-hi3), | 68 | --label: fn.global-color(--fg-hi3), |
83 | ), | 69 | ), |
84 | --key-focus: ( | ||
85 | --bg: fn.global-color(--bg-hi2), | ||
86 | --label: fn.global-color(--fg-lo), | ||
87 | --border: fn.global-color(--focus --fill), | ||
88 | --shadow: fn.global-color(--focus --shadow), | ||
89 | ), | ||
90 | ), | 70 | ), |
91 | ), | 71 | ), |
92 | ), 'colors'); | 72 | ), 'colors'); |
@@ -98,7 +78,6 @@ | |||
98 | border: 1px solid fn.color(--disabled --border); | 78 | border: 1px solid fn.color(--disabled --border); |
99 | border-radius: fn.dim(--rounding); | 79 | border-radius: fn.dim(--rounding); |
100 | background-color: fn.color(--disabled --bg); | 80 | background-color: fn.color(--disabled --bg); |
101 | box-shadow: fn.color(--disabled --shadow); | ||
102 | color: fn.color(--disabled --label); | 81 | color: fn.color(--disabled --label); |
103 | line-height: 1; | 82 | line-height: 1; |
104 | text-align: center; | 83 | text-align: center; |
@@ -111,59 +90,36 @@ | |||
111 | &:enabled { | 90 | &:enabled { |
112 | border-color: fn.color(--border); | 91 | border-color: fn.color(--border); |
113 | background-color: fn.color(--bg); | 92 | background-color: fn.color(--bg); |
114 | box-shadow: fn.color(--shadow); | ||
115 | color: fn.color(--label); | 93 | color: fn.color(--label); |
116 | 94 | ||
117 | &:hover { | 95 | &:hover { |
118 | border-color: fn.color(--hover --border); | 96 | border-color: fn.color(--hover --border); |
119 | background-color: fn.color(--hover --bg); | 97 | background-color: fn.color(--hover --bg); |
120 | box-shadow: fn.color(--hover --shadow); | ||
121 | color: fn.color(--hover --label); | 98 | color: fn.color(--hover --label); |
122 | } | 99 | } |
123 | 100 | ||
124 | &:active { | 101 | &:active { |
125 | border-color: fn.color(--active --border); | 102 | border-color: fn.color(--active --border); |
126 | background-color: fn.color(--active --bg); | 103 | background-color: fn.color(--active --bg); |
127 | box-shadow: fn.color(--active --shadow); | ||
128 | color: fn.color(--active --label); | 104 | color: fn.color(--active --label); |
129 | } | 105 | } |
130 | } | 106 | } |
131 | 107 | ||
132 | @include iro.bem-at-theme('keyboard') { | ||
133 | &:focus { | ||
134 | border-color: fn.color(--key-focus --border); | ||
135 | background-color: fn.color(--key-focus --bg); | ||
136 | box-shadow: inset 0 0 0 1px fn.color(--key-focus --border), fn.color(--key-focus --shadow); | ||
137 | color: fn.color(--key-focus --label); | ||
138 | } | ||
139 | } | ||
140 | |||
141 | @include iro.bem-is('selected') { | 108 | @include iro.bem-is('selected') { |
142 | &:link, | 109 | &:link, |
143 | &:visited, | 110 | &:visited, |
144 | &:enabled { | 111 | &:enabled { |
145 | border-color: fn.color(--selected --border); | 112 | border-color: fn.color(--selected --border); |
146 | background-color: fn.color(--selected --bg); | 113 | background-color: fn.color(--selected --bg); |
147 | box-shadow: fn.color(--selected --shadow); | ||
148 | color: fn.color(--selected --label); | 114 | color: fn.color(--selected --label); |
149 | 115 | ||
150 | &:hover, | 116 | &:hover, |
151 | &:active { | 117 | &:active { |
152 | border-color: fn.color(--selected --hover --border); | 118 | border-color: fn.color(--selected --hover --border); |
153 | background-color: fn.color(--selected --bg); | 119 | background-color: fn.color(--selected --bg); |
154 | box-shadow: fn.color(--selected --hover --shadow); | ||
155 | color: fn.color(--selected --hover --label); | 120 | color: fn.color(--selected --hover --label); |
156 | } | 121 | } |
157 | } | 122 | } |
158 | |||
159 | @include iro.bem-at-theme('keyboard') { | ||
160 | &:focus { | ||
161 | border-color: fn.color(--key-focus --border); | ||
162 | background-color: fn.color(--selected --key-focus --bg); | ||
163 | box-shadow: inset 0 0 0 1px fn.color(--key-focus --border), fn.color(--key-focus --shadow); | ||
164 | color: fn.color(--key-focus --label); | ||
165 | } | ||
166 | } | ||
167 | } | 123 | } |
168 | 124 | ||
169 | @include iro.bem-modifier('quiet') { | 125 | @include iro.bem-modifier('quiet') { |
@@ -195,15 +151,6 @@ | |||
195 | } | 151 | } |
196 | } | 152 | } |
197 | 153 | ||
198 | @include iro.bem-at-theme('keyboard') { | ||
199 | &:focus { | ||
200 | border-color: fn.color(--quiet --key-focus --border); | ||
201 | background-color: fn.color(--quiet --key-focus --bg); | ||
202 | box-shadow: inset 0 0 0 1px fn.color(--quiet --key-focus --border), fn.color(--quiet --key-focus --shadow); | ||
203 | color: fn.color(--quiet --key-focus --label); | ||
204 | } | ||
205 | } | ||
206 | |||
207 | @include iro.bem-is('selected') { | 154 | @include iro.bem-is('selected') { |
208 | background-color: fn.color(--quiet --selected --bg); | 155 | background-color: fn.color(--quiet --selected --bg); |
209 | color: fn.color(--quiet --disabled --label); | 156 | color: fn.color(--quiet --disabled --label); |
@@ -224,14 +171,16 @@ | |||
224 | color: fn.color(--quiet --selected --hover --label); | 171 | color: fn.color(--quiet --selected --hover --label); |
225 | } | 172 | } |
226 | } | 173 | } |
174 | } | ||
175 | } | ||
227 | 176 | ||
228 | @include iro.bem-at-theme('keyboard') { | 177 | @include iro.bem-at-theme('keyboard') { |
229 | &:focus { | 178 | &:link, |
230 | border-color: fn.color(--quiet --key-focus --border); | 179 | &:visited, |
231 | background-color: fn.color(--quiet --selected --key-focus --bg); | 180 | &:enabled { |
232 | box-shadow: inset 0 0 0 1px fn.color(--quiet --key-focus --border), fn.color(--quiet --key-focus --shadow); | 181 | &:focus { |
233 | color: fn.color(--quiet --key-focus --label); | 182 | border-color: fn.color(--key-focus --border); |
234 | } | 183 | box-shadow: inset 0 0 0 1px fn.color(--key-focus --border), fn.color(--key-focus --shadow); |
235 | } | 184 | } |
236 | } | 185 | } |
237 | } | 186 | } |
diff --git a/src/objects/_action-menu.scss b/src/objects/_action-menu.scss index 89c4b3c..88e84d6 100644 --- a/src/objects/_action-menu.scss +++ b/src/objects/_action-menu.scss | |||
@@ -19,7 +19,7 @@ | |||
19 | @include iro.props-store(( | 19 | @include iro.props-store(( |
20 | --colors: ( | 20 | --colors: ( |
21 | --shadow: 0 .2em .5em rgba(#000, .1), | 21 | --shadow: 0 .2em .5em rgba(#000, .1), |
22 | --border: fn.global-color(--obj-lo), | 22 | --border: rgba(#000, .2), |
23 | --separator: fn.global-color(--obj), | 23 | --separator: fn.global-color(--obj), |
24 | --icon: fn.global-color(--fg-hi), | 24 | --icon: fn.global-color(--fg-hi), |
25 | --item: ( | 25 | --item: ( |
@@ -43,6 +43,7 @@ | |||
43 | @include iro.props-store(( | 43 | @include iro.props-store(( |
44 | --colors: ( | 44 | --colors: ( |
45 | --shadow: 0 .2em .5em rgba(#000, .5), | 45 | --shadow: 0 .2em .5em rgba(#000, .5), |
46 | --border: rgba(#fff, .2), | ||
46 | ), | 47 | ), |
47 | ), 'colors-dark'); | 48 | ), 'colors-dark'); |
48 | 49 | ||
diff --git a/src/objects/_dialog.scss b/src/objects/_dialog.scss index 54e9c59..f6e8e63 100644 --- a/src/objects/_dialog.scss +++ b/src/objects/_dialog.scss | |||
@@ -1,18 +1,20 @@ | |||
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 'header'; | ||
5 | |||
4 | @include iro.props-namespace('dialog') { | 6 | @include iro.props-namespace('dialog') { |
5 | @include iro.props-store(( | 7 | @include iro.props-store(( |
6 | --dims: ( | 8 | --dims: ( |
7 | --pad-x: fn.global-dim(--size --300), | ||
8 | --pad-y: fn.global-dim(--size --300), | ||
9 | --width-sm: iro.fn-px-to-rem(500px), | 9 | --width-sm: iro.fn-px-to-rem(500px), |
10 | --width-md: iro.fn-px-to-rem(800px), | 10 | --width-md: iro.fn-px-to-rem(800px), |
11 | --width-lg: iro.fn-px-to-rem(1100px), | 11 | --width-lg: iro.fn-px-to-rem(1100px), |
12 | --rounding: 3px, | 12 | --rounding: 3px, |
13 | --sidebar: ( | 13 | --border: 1px, |
14 | --pad-x: fn.global-dim(--size --150), | 14 | |
15 | --pad-y: fn.global-dim(--size --300), | 15 | --body: ( |
16 | --pad-x: fn.global-dim(--size --200), | ||
17 | --pad-y: fn.global-dim(--size --200), | ||
16 | ) | 18 | ) |
17 | ), | 19 | ), |
18 | ), 'dims'); | 20 | ), 'dims'); |
@@ -26,20 +28,18 @@ | |||
26 | 28 | ||
27 | @include iro.props-store(( | 29 | @include iro.props-store(( |
28 | --colors: ( | 30 | --colors: ( |
31 | --border: rgba(#000, .05), | ||
29 | --shadow: 0 .2em .5em rgba(#000, .2), | 32 | --shadow: 0 .2em .5em rgba(#000, .2), |
33 | |||
30 | --sidebar: ( | 34 | --sidebar: ( |
31 | --bg: fn.global-color(--bg), | ||
32 | --border: fn.global-color(--obj), | 35 | --border: fn.global-color(--obj), |
33 | ) | 36 | ), |
34 | ), | 37 | ), |
35 | ), 'colors'); | 38 | ), 'colors'); |
36 | 39 | ||
37 | @include iro.props-store(( | 40 | @include iro.props-store(( |
38 | --colors: ( | 41 | --colors: ( |
39 | --sidebar: ( | 42 | --border: rgba(#fff, .2), |
40 | --bg: fn.global-color(--bg-hi2), | ||
41 | --border: fn.global-color(--bg-hi2), | ||
42 | ), | ||
43 | ), | 43 | ), |
44 | ), 'colors-dark'); | 44 | ), 'colors-dark'); |
45 | 45 | ||
@@ -48,9 +48,9 @@ | |||
48 | grid-template-rows: auto 1fr auto; | 48 | grid-template-rows: auto 1fr auto; |
49 | grid-template-columns: auto 1fr; | 49 | grid-template-columns: auto 1fr; |
50 | grid-template-areas: | 50 | grid-template-areas: |
51 | 'sidebar header' | 51 | 'sidebar-header header' |
52 | 'sidebar body' | 52 | 'sidebar body' |
53 | 'sidebar footer'; | 53 | 'sidebar footer'; |
54 | position: relative; | 54 | position: relative; |
55 | box-sizing: border-box; | 55 | box-sizing: border-box; |
56 | width: 100%; | 56 | width: 100%; |
@@ -59,7 +59,7 @@ | |||
59 | overflow: hidden; | 59 | overflow: hidden; |
60 | border-radius: fn.dim(--rounding); | 60 | border-radius: fn.dim(--rounding); |
61 | background-color: fn.global-color(--bg); | 61 | background-color: fn.global-color(--bg); |
62 | box-shadow: fn.color(--shadow); | 62 | box-shadow: 0 0 0 1px fn.color(--border), fn.color(--shadow); |
63 | color: fn.global-color(--fg); | 63 | color: fn.global-color(--fg); |
64 | 64 | ||
65 | @include iro.bem-modifier('sm') { | 65 | @include iro.bem-modifier('sm') { |
@@ -70,52 +70,41 @@ | |||
70 | max-width: fn.dim(--width-lg); | 70 | max-width: fn.dim(--width-lg); |
71 | } | 71 | } |
72 | 72 | ||
73 | @include iro.bem-elem('sidebar') { | 73 | @include iro.bem-elem('sidebar-header') { |
74 | grid-area: sidebar; | 74 | grid-area: sidebar-header; |
75 | padding: fn.dim(--sidebar --pad-y) fn.dim(--sidebar --pad-x); | 75 | border-right: 1px solid fn.color(--sidebar --border); |
76 | border-right: 1px solid fn.color(--sidebar --border); | 76 | |
77 | background-color: fn.color(--sidebar --bg); | 77 | @include iro.bem-sibling-elem('header') { |
78 | grid-area: header; | ||
79 | } | ||
78 | } | 80 | } |
79 | 81 | ||
80 | @include iro.bem-elem('header') { | 82 | @include iro.bem-elem('header') { |
81 | grid-area: header; | 83 | grid-area: sidebar-header / sidebar-header / header / header; |
82 | margin: fn.dim(--pad-y) fn.dim(--pad-x) 0; | 84 | } |
83 | 85 | ||
84 | @include iro.bem-sibling-elem('body') { | 86 | @include iro.bem-elem('close-btn') { |
85 | &::before { | 87 | margin-left: auto; |
86 | display: none; | ||
87 | } | ||
88 | } | ||
89 | } | 88 | } |
90 | 89 | ||
91 | @include iro.bem-elem('body') { | 90 | @include iro.bem-elem('label') { |
92 | grid-area: body; | 91 | padding: 0 calc(fn.dim(--body --pad-x) - fn.foreign-dim(--header, --pad-x)); |
93 | min-height: 0; | 92 | } |
94 | margin: fn.dim(--pad-y) fn.dim(--pad-x); | ||
95 | 93 | ||
96 | &::before { | 94 | @include iro.bem-elem('sidebar') { |
97 | content: ''; | 95 | grid-area: sidebar; |
98 | width: fn.global-dim(--size --500); | ||
99 | height: fn.global-dim(--size --500); | ||
100 | float: right; | ||
101 | } | ||
102 | } | 96 | } |
103 | 97 | ||
104 | @include iro.bem-elem('close-btn') { | 98 | @include iro.bem-elem('body') { |
105 | position: absolute; | 99 | grid-area: body; |
106 | top: fn.global-dim(--size --150); | 100 | min-height: 0; |
107 | right: fn.global-dim(--size --150); | 101 | padding: fn.dim(--body --pad-y) fn.dim(--body --pad-x); |
108 | font-size: fn.global-dim(--font-size --150); | ||
109 | } | 102 | } |
110 | 103 | ||
111 | @include iro.bem-elem('footer') { | 104 | @include iro.bem-elem('footer') { |
112 | grid-area: footer; | 105 | grid-area: footer; |
113 | justify-content: flex-end; | 106 | justify-content: flex-end; |
114 | margin: 0 fn.dim(--pad-x) fn.dim(--pad-y); | 107 | padding: fn.dim(--body --pad-y) fn.dim(--body --pad-x); |
115 | } | ||
116 | |||
117 | @include iro.bem-elem('title') { | ||
118 | margin-top: 0; | ||
119 | } | 108 | } |
120 | } | 109 | } |
121 | } | 110 | } |
diff --git a/src/objects/_rule.scss b/src/objects/_divider.scss index ba09414..cef598f 100644 --- a/src/objects/_rule.scss +++ b/src/objects/_divider.scss | |||
@@ -1,7 +1,7 @@ | |||
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 | @include iro.props-namespace('rule') { | 4 | @include iro.props-namespace('divider') { |
5 | @include iro.props-store(( | 5 | @include iro.props-store(( |
6 | --dims: ( | 6 | --dims: ( |
7 | --margin-y: fn.global-dim(--size --85), | 7 | --margin-y: fn.global-dim(--size --85), |
diff --git a/src/objects/_header.scss b/src/objects/_header.scss new file mode 100644 index 0000000..773d584 --- /dev/null +++ b/src/objects/_header.scss | |||
@@ -0,0 +1,31 @@ | |||
1 | @use 'iro-sass/src/index' as iro; | ||
2 | @use '../functions' as fn; | ||
3 | |||
4 | @include iro.props-namespace('header') { | ||
5 | @include iro.props-store(( | ||
6 | --dims: ( | ||
7 | --pad-x: fn.global-dim(--size --75), | ||
8 | --pad-y: fn.global-dim(--size --75) | ||
9 | ), | ||
10 | ), 'dims'); | ||
11 | |||
12 | @include iro.props-store(( | ||
13 | --colors: ( | ||
14 | --border: fn.global-color(--obj), | ||
15 | ), | ||
16 | ), 'colors'); | ||
17 | |||
18 | @include iro.bem-object(iro.props-namespace()) { | ||
19 | border-bottom: 1px solid fn.color(--border); | ||
20 | |||
21 | @include iro.bem-elem('content') { | ||
22 | display: flex; | ||
23 | box-sizing: border-box; | ||
24 | align-items: center; | ||
25 | height: 100%; | ||
26 | padding: fn.dim(--pad-y) fn.dim(--pad-x); | ||
27 | background-color: fn.global-color(--bg); | ||
28 | color: fn.global-color(--fg); | ||
29 | } | ||
30 | } | ||
31 | } | ||
diff --git a/src/objects/_heading.scss b/src/objects/_heading.scss index 48088ba..3c14c99 100644 --- a/src/objects/_heading.scss +++ b/src/objects/_heading.scss | |||
@@ -23,12 +23,15 @@ | |||
23 | @include iro.bem-object(iro.props-namespace()) { | 23 | @include iro.bem-object(iro.props-namespace()) { |
24 | @include mx.set-font(--headline); | 24 | @include mx.set-font(--headline); |
25 | 25 | ||
26 | display: block; | 26 | display: block; |
27 | margin-top: fn.dim(--in-page-margin --top); | ||
28 | margin-bottom: 0; | ||
29 | 27 | ||
30 | & + & { | 28 | @include iro.bem-at-theme('typography') { |
31 | margin-top: fn.dim(--in-page-margin --top-sibling); | 29 | margin-top: fn.dim(--in-page-margin --top); |
30 | margin-bottom: 0; | ||
31 | |||
32 | & + & { | ||
33 | margin-top: fn.dim(--in-page-margin --top-sibling); | ||
34 | } | ||
32 | } | 35 | } |
33 | 36 | ||
34 | @include iro.bem-modifier('xxl') { | 37 | @include iro.bem-modifier('xxl') { |
@@ -54,8 +57,8 @@ | |||
54 | @include iro.bem-modifier('sm') { | 57 | @include iro.bem-modifier('sm') { |
55 | @include mx.set-font(--standard, ( | 58 | @include mx.set-font(--standard, ( |
56 | --line-height: null, | 59 | --line-height: null, |
57 | --size: fn.global-dim(--font-size --100), | 60 | --size: fn.global-dim(--font-size --100), |
58 | --weight: 500 | 61 | --weight: 700 |
59 | )); | 62 | )); |
60 | 63 | ||
61 | color: fn.color(--strong); | 64 | color: fn.color(--strong); |
diff --git a/src/objects/_lightbox.scss b/src/objects/_lightbox.scss index f3addf7..435ff88 100644 --- a/src/objects/_lightbox.scss +++ b/src/objects/_lightbox.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 'action-button'; | ||
5 | |||
4 | @include iro.props-namespace('lightbox') { | 6 | @include iro.props-namespace('lightbox') { |
5 | @include iro.props-store(( | 7 | @include iro.props-store(( |
6 | --dims: ( | 8 | --dims: ( |
diff --git a/src/objects/_list-group.scss b/src/objects/_list-group.scss index 521bc19..1093ad8 100644 --- a/src/objects/_list-group.scss +++ b/src/objects/_list-group.scss | |||
@@ -31,7 +31,7 @@ | |||
31 | border-top: 1px solid fn.color(--border); | 31 | border-top: 1px solid fn.color(--border); |
32 | } | 32 | } |
33 | 33 | ||
34 | @include iro.bem-multi('&:link, &:visited, &:enabled', 'modifier' 'action') { | 34 | @include iro.bem-multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') { |
35 | &:hover { | 35 | &:hover { |
36 | background-color: fn.color(--hover); | 36 | background-color: fn.color(--hover); |
37 | } | 37 | } |
diff --git a/src/objects/_sidebar.scss b/src/objects/_sidebar.scss new file mode 100644 index 0000000..bf8dd59 --- /dev/null +++ b/src/objects/_sidebar.scss | |||
@@ -0,0 +1,36 @@ | |||
1 | @use 'iro-sass/src/index' as iro; | ||
2 | @use '../functions' as fn; | ||
3 | |||
4 | @include iro.props-namespace('sidebar') { | ||
5 | @include iro.props-store(( | ||
6 | --dims: ( | ||
7 | --pad-x: fn.global-dim(--size --75), | ||
8 | --pad-y: fn.global-dim(--size --75) | ||
9 | ), | ||
10 | ), 'dims'); | ||
11 | |||
12 | @include iro.props-store(( | ||
13 | --colors: ( | ||
14 | --border: fn.global-color(--obj), | ||
15 | ), | ||
16 | ), 'colors'); | ||
17 | |||
18 | @include iro.bem-object(iro.props-namespace()) { | ||
19 | border-width: 0 1px 0 0; | ||
20 | border-style: solid; | ||
21 | border-color: fn.color(--border); | ||
22 | |||
23 | @include iro.bem-elem('content') { | ||
24 | box-sizing: border-box; | ||
25 | height: 100%; | ||
26 | padding: fn.dim(--pad-y) fn.dim(--pad-x); | ||
27 | background-color: fn.global-color(--bg); | ||
28 | color: fn.global-color(--fg); | ||
29 | } | ||
30 | |||
31 | @include iro.bem-modifier('right') { | ||
32 | border-right-width: 0; | ||
33 | border-left-width: 1px; | ||
34 | } | ||
35 | } | ||
36 | } | ||
diff --git a/src/objects/_table.scss b/src/objects/_table.scss index 410492b..1365d05 100644 --- a/src/objects/_table.scss +++ b/src/objects/_table.scss | |||
@@ -5,7 +5,7 @@ | |||
5 | @include iro.props-namespace('table') { | 5 | @include iro.props-namespace('table') { |
6 | @include iro.props-store(( | 6 | @include iro.props-store(( |
7 | --dims: ( | 7 | --dims: ( |
8 | --pad-x: fn.global-dim(--size --200), | 8 | --pad-x: fn.global-dim(--size --175), |
9 | --pad-y: fn.global-dim(--size --125), | 9 | --pad-y: fn.global-dim(--size --125), |
10 | --rounding: 3px, | 10 | --rounding: 3px, |
11 | --50: ( | 11 | --50: ( |
diff --git a/src/objects/_text-field.scss b/src/objects/_text-field.scss index e9330ce..1e18f0a 100644 --- a/src/objects/_text-field.scss +++ b/src/objects/_text-field.scss | |||
@@ -37,6 +37,11 @@ | |||
37 | --border-width: fn.global-dim(--border-width --thin), | 37 | --border-width: fn.global-dim(--border-width --thin), |
38 | --border-radius: 2px, | 38 | --border-radius: 2px, |
39 | 39 | ||
40 | --extended: ( | ||
41 | --pad: fn.global-dim(--size --50), | ||
42 | --border-radius: 6px, | ||
43 | ), | ||
44 | |||
40 | --focus: ( | 45 | --focus: ( |
41 | --border-width: fn.global-dim(--border-width --medium), | 46 | --border-width: fn.global-dim(--border-width --medium), |
42 | ) | 47 | ) |
@@ -87,7 +92,8 @@ | |||
87 | ), 'colors'); | 92 | ), 'colors'); |
88 | 93 | ||
89 | @include iro.bem-object(iro.props-namespace()) { | 94 | @include iro.bem-object(iro.props-namespace()) { |
90 | $line-height: 1.4; | 95 | $line-height: 1.4; |
96 | $focus-border-offset: calc(fn.dim(--border-width) - fn.dim(--focus --border-width)); | ||
91 | 97 | ||
92 | position: relative; | 98 | position: relative; |
93 | min-width: 0; | 99 | min-width: 0; |
@@ -133,14 +139,12 @@ | |||
133 | outline: 0; | 139 | outline: 0; |
134 | 140 | ||
135 | @include iro.bem-sibling-elem('bg') { | 141 | @include iro.bem-sibling-elem('bg') { |
136 | $offset: calc(fn.dim(--border-width) - fn.dim(--focus --border-width)); | 142 | top: $focus-border-offset; |
137 | 143 | right: $focus-border-offset; | |
138 | top: $offset; | 144 | bottom: $focus-border-offset; |
139 | right: $offset; | 145 | left: $focus-border-offset; |
140 | bottom: $offset; | ||
141 | left: $offset; | ||
142 | border: fn.dim(--focus --border-width) solid fn.color(--focus --border); | 146 | border: fn.dim(--focus --border-width) solid fn.color(--focus --border); |
143 | border-radius: calc(fn.dim(--border-radius) - $offset); | 147 | border-radius: calc(fn.dim(--border-radius) - $focus-border-offset); |
144 | box-shadow: fn.color(--focus --shadow); | 148 | box-shadow: fn.color(--focus --shadow); |
145 | } | 149 | } |
146 | } | 150 | } |
@@ -150,6 +154,22 @@ | |||
150 | } | 154 | } |
151 | } | 155 | } |
152 | 156 | ||
157 | @include iro.bem-modifier('extended') { | ||
158 | padding: fn.dim(--extended --pad); | ||
159 | |||
160 | @include iro.bem-multi('&', 'elem' 'bg') { | ||
161 | border-radius: calc(fn.dim(--border-radius) + fn.dim(--extended --pad)); | ||
162 | } | ||
163 | |||
164 | @include iro.bem-elem('native') { | ||
165 | &:focus { | ||
166 | @include iro.bem-sibling-elem('bg') { | ||
167 | border-radius: calc(fn.dim(--extended --border-radius) - $focus-border-offset); | ||
168 | } | ||
169 | } | ||
170 | } | ||
171 | } | ||
172 | |||
153 | @include iro.bem-is('invalid') { | 173 | @include iro.bem-is('invalid') { |
154 | @include iro.bem-elem('native') { | 174 | @include iro.bem-elem('native') { |
155 | @include invalid; | 175 | @include invalid; |
diff --git a/src_demo/components/_content.scss b/src_demo/components/_content.scss index 6045e4b..2f9a2d0 100644 --- a/src_demo/components/_content.scss +++ b/src_demo/components/_content.scss | |||
@@ -3,5 +3,6 @@ | |||
3 | @include iro.props-namespace('content') { | 3 | @include iro.props-namespace('content') { |
4 | @include iro.bem-component(iro.props-namespace()) { | 4 | @include iro.bem-component(iro.props-namespace()) { |
5 | grid-area: content; | 5 | grid-area: content; |
6 | overflow: auto; | ||
6 | } | 7 | } |
7 | } | 8 | } |
diff --git a/src_demo/components/_sidebar.scss b/src_demo/components/_sidebar.scss index 9cff3c8..6b7eaf0 100644 --- a/src_demo/components/_sidebar.scss +++ b/src_demo/components/_sidebar.scss | |||
@@ -2,28 +2,9 @@ | |||
2 | @use '../../src/functions' as fn; | 2 | @use '../../src/functions' as fn; |
3 | 3 | ||
4 | @include iro.props-namespace('sidebar') { | 4 | @include iro.props-namespace('sidebar') { |
5 | @include iro.props-store(( | ||
6 | --colors: ( | ||
7 | --bg: fn.global-color(--bg), | ||
8 | --border: fn.global-color(--obj), | ||
9 | --icon: fn.global-color(--fg-hi), | ||
10 | --group-header-fg: fn.global-color(--fg-hi), | ||
11 | ), | ||
12 | ), 'colors'); | ||
13 | |||
14 | @include iro.props-store(( | ||
15 | --colors: ( | ||
16 | --bg: fn.global-color(--bg-hi), | ||
17 | --border: fn.global-color(--bg-hi), | ||
18 | ), | ||
19 | ), 'colors-dark'); | ||
20 | |||
21 | @include iro.bem-component(iro.props-namespace()) { | 5 | @include iro.bem-component(iro.props-namespace()) { |
22 | grid-area: sidebar; | 6 | grid-area: sidebar; |
23 | min-width: 10em; | 7 | min-width: 15em; |
24 | padding: .6em; | 8 | min-height: 0; |
25 | overflow: auto; | ||
26 | border-right: 1px solid fn.color(--border); | ||
27 | background-color: fn.color(--bg); | ||
28 | } | 9 | } |
29 | } | 10 | } |
diff --git a/tpl/index.pug b/tpl/index.pug index 400ec64..14bfa10 100644 --- a/tpl/index.pug +++ b/tpl/index.pug | |||
@@ -7,7 +7,7 @@ | |||
7 | include layouts/container.pug | 7 | include layouts/container.pug |
8 | 8 | ||
9 | include objects/heading.pug | 9 | include objects/heading.pug |
10 | include objects/rule.pug | 10 | include objects/divider.pug |
11 | include objects/badge.pug | 11 | include objects/badge.pug |
12 | include objects/button.pug | 12 | include objects/button.pug |
13 | include objects/text-field.pug | 13 | include objects/text-field.pug |
@@ -27,14 +27,16 @@ include objects/lightbox.pug | |||
27 | include objects/list-group.pug | 27 | include objects/list-group.pug |
28 | include objects/table.pug | 28 | include objects/table.pug |
29 | include objects/alert.pug | 29 | include objects/alert.pug |
30 | include objects/header.pug | ||
31 | include objects/sidebar.pug | ||
30 | 32 | ||
31 | mixin view(id, title) | 33 | mixin view(id, title) |
32 | - | 34 | - |
33 | views.push({ id, title }); | 35 | views.push({ id, title }); |
34 | 36 | ||
35 | +container(padX=true padY=true narrow=true)(class='c-view' id=id) | 37 | +container(padX=true padY=true narrow=true class='c-view' id=id) |
36 | +h1-heading('xl')= title | 38 | +h1-heading('xl')= title |
37 | +rule('medium') | 39 | +divider('medium') |
38 | block | 40 | block |
39 | 41 | ||
40 | mixin user-card(name, hue) | 42 | mixin user-card(name, hue) |
@@ -47,7 +49,7 @@ mixin user-card(name, hue) | |||
47 | = name | 49 | = name |
48 | 50 | ||
49 | include views/heading.pug | 51 | include views/heading.pug |
50 | include views/rule.pug | 52 | include views/divider.pug |
51 | include views/colored-links.pug | 53 | include views/colored-links.pug |
52 | include views/badge.pug | 54 | include views/badge.pug |
53 | include views/button.pug | 55 | include views/button.pug |
@@ -80,9 +82,9 @@ html | |||
80 | script(src="script.js") | 82 | script(src="script.js") |
81 | 83 | ||
82 | body | 84 | body |
83 | .c-content | 85 | .c-content.l-overflow |
84 | +view-heading | 86 | +view-heading |
85 | +view-rule | 87 | +view-divider |
86 | +view-colored-links | 88 | +view-colored-links |
87 | +view-badge | 89 | +view-badge |
88 | +view-button | 90 | +view-button |
@@ -104,7 +106,7 @@ html | |||
104 | +view-table | 106 | +view-table |
105 | +view-alert | 107 | +view-alert |
106 | 108 | ||
107 | .c-sidebar | 109 | +sidebar(class='c-sidebar') |
108 | +menu | 110 | +menu |
109 | each view in views | 111 | each view in views |
110 | +menu-item(tag='a' href='#' + view.id)= view.title | 112 | +menu-item(tag='a' href='#' + view.id)= view.title |
diff --git a/tpl/objects/action-button.pug b/tpl/objects/action-button.pug index 0467bd7..f99d789 100644 --- a/tpl/objects/action-button.pug +++ b/tpl/objects/action-button.pug | |||
@@ -4,7 +4,7 @@ mixin action-button | |||
4 | - | 4 | - |
5 | let classes = { | 5 | let classes = { |
6 | 'o-action-button': true, | 6 | 'o-action-button': true, |
7 | 'o-action-button--block': attributes.block, | 7 | 'u-d-block': attributes.block, |
8 | 'o-action-button--quiet': attributes.quiet, | 8 | 'o-action-button--quiet': attributes.quiet, |
9 | 'o-action-button--round': attributes.round, | 9 | 'o-action-button--round': attributes.round, |
10 | 'is-selected': attributes.selected | 10 | 'is-selected': attributes.selected |
diff --git a/tpl/objects/dialog.pug b/tpl/objects/dialog.pug index 2823e41..2474cc3 100644 --- a/tpl/objects/dialog.pug +++ b/tpl/objects/dialog.pug | |||
@@ -1,7 +1,6 @@ | |||
1 | include rule.pug | ||
2 | include button.pug | ||
3 | include heading.pug | 1 | include heading.pug |
4 | include action-button.pug | 2 | include header.pug |
3 | include sidebar.pug | ||
5 | 4 | ||
6 | mixin dialog(title) | 5 | mixin dialog(title) |
7 | - const slots = {} | 6 | - const slots = {} |
@@ -13,9 +12,7 @@ mixin dialog(title) | |||
13 | block ? block() : undefined | 12 | block ? block() : undefined |
14 | 13 | ||
15 | let classes = { | 14 | let classes = { |
16 | 'o-dialog': true, | 15 | 'o-dialog': true, |
17 | 't-raised': true, | ||
18 | 'o-dialog--split': !!slots.sidebar, | ||
19 | } | 16 | } |
20 | 17 | ||
21 | let bodyClass = { | 18 | let bodyClass = { |
@@ -26,16 +23,26 @@ mixin dialog(title) | |||
26 | } | 23 | } |
27 | 24 | ||
28 | div(class=classes) | 25 | div(class=classes) |
26 | if slots['sidebar-header'] | ||
27 | +header(class='o-dialog__sidebar-header') | ||
28 | - slots['sidebar-header']() | ||
29 | |||
29 | if slots.sidebar | 30 | if slots.sidebar |
30 | .o-dialog__sidebar | 31 | +sidebar(class='o-dialog__sidebar') |
31 | - slots.sidebar() | 32 | - slots.sidebar() |
32 | header.o-dialog__header | 33 | |
33 | +div-heading('md')(class='o-dialog__title') | 34 | +header(class='o-dialog__header') |
34 | = title | 35 | if slots.header |
35 | +action-button(round=true quiet=true icon='x' class='o-dialog__close-btn') | 36 | - slots.header() |
37 | else | ||
38 | if title | ||
39 | +div-heading('sm')(class='o-dialog__label')= title | ||
40 | +action-button(round=true quiet=true icon='x' class='o-dialog__close-btn') | ||
41 | |||
36 | section(class=bodyClass) | 42 | section(class=bodyClass) |
37 | if slots.body | 43 | if slots.body |
38 | - slots.body() | 44 | - slots.body() |
45 | |||
39 | footer.o-dialog__footer.l-button-group | 46 | footer.o-dialog__footer.l-button-group |
40 | +a-button(outline=true)= 'Cancel' | 47 | +a-button(outline=true)= 'Cancel' |
41 | = ' ' | 48 | = ' ' |
diff --git a/tpl/objects/divider.pug b/tpl/objects/divider.pug new file mode 100644 index 0000000..094df07 --- /dev/null +++ b/tpl/objects/divider.pug | |||
@@ -0,0 +1,12 @@ | |||
1 | mixin divider(level) | ||
2 | - | ||
3 | let classes = { | ||
4 | 'o-divider': true, | ||
5 | 'o-divider--labelled': !!block, | ||
6 | ['o-divider--' + level]: true | ||
7 | } | ||
8 | |||
9 | div(class=classes)&attributes(attributes) | ||
10 | if block | ||
11 | .o-divider__label | ||
12 | block | ||
diff --git a/tpl/objects/header.pug b/tpl/objects/header.pug new file mode 100644 index 0000000..4518afc --- /dev/null +++ b/tpl/objects/header.pug | |||
@@ -0,0 +1,12 @@ | |||
1 | mixin header | ||
2 | - | ||
3 | let classes = { | ||
4 | 'o-header': true | ||
5 | } | ||
6 | if (attributes.class) { | ||
7 | classes[attributes.class] = true; | ||
8 | } | ||
9 | |||
10 | header(class=classes) | ||
11 | .o-header__content.t-lowered | ||
12 | block | ||
diff --git a/tpl/objects/list-group.pug b/tpl/objects/list-group.pug index 36be264..ad3c212 100644 --- a/tpl/objects/list-group.pug +++ b/tpl/objects/list-group.pug | |||
@@ -5,8 +5,8 @@ mixin list-group | |||
5 | mixin list-group-item | 5 | mixin list-group-item |
6 | - | 6 | - |
7 | let classes = { | 7 | let classes = { |
8 | 'o-list-group__item': true, | 8 | 'o-list-group__item': true, |
9 | 'o-list-group__item--action': attributes.action, | 9 | 'o-list-group__item--interactive': attributes.interactive, |
10 | } | 10 | } |
11 | 11 | ||
12 | div(class=classes) | 12 | div(class=classes) |
diff --git a/tpl/objects/rule.pug b/tpl/objects/rule.pug deleted file mode 100644 index b2f3a38..0000000 --- a/tpl/objects/rule.pug +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | mixin rule(level) | ||
2 | - | ||
3 | let classes = { | ||
4 | 'o-rule': true, | ||
5 | 'o-rule--labelled': !!block, | ||
6 | ['o-rule--' + level]: true | ||
7 | } | ||
8 | |||
9 | div(class=classes)&attributes(attributes) | ||
10 | if block | ||
11 | .o-rule__label | ||
12 | block | ||
diff --git a/tpl/objects/sidebar.pug b/tpl/objects/sidebar.pug new file mode 100644 index 0000000..caa0f1f --- /dev/null +++ b/tpl/objects/sidebar.pug | |||
@@ -0,0 +1,12 @@ | |||
1 | mixin sidebar | ||
2 | - | ||
3 | let classes = { | ||
4 | 'o-sidebar': true | ||
5 | } | ||
6 | if (attributes.class) { | ||
7 | classes[attributes.class] = true; | ||
8 | } | ||
9 | |||
10 | aside(class=classes) | ||
11 | .o-sidebar__content.l-overflow | ||
12 | block | ||
diff --git a/tpl/objects/text-field.pug b/tpl/objects/text-field.pug index cbdb8c4..673aa27 100644 --- a/tpl/objects/text-field.pug +++ b/tpl/objects/text-field.pug | |||
@@ -10,23 +10,33 @@ mixin text-field | |||
10 | block ? block() : undefined | 10 | block ? block() : undefined |
11 | 11 | ||
12 | let classes = { | 12 | let classes = { |
13 | 'o-text-field': true, | 13 | 'o-text-field': true, |
14 | 'o-text-field--ext': attributes.ext, | 14 | 'o-text-field--extended': !!block, |
15 | 'is-invalid': attributes.invalid, | 15 | 'is-invalid': attributes.invalid, |
16 | 'is-disabled': attributes.disabled, | 16 | 'is-disabled': attributes.disabled, |
17 | 'l-card': !!block, | 17 | 'l-card': !!block, |
18 | 'l-card--flush': !!block, | 18 | 'l-card--flush': !!block, |
19 | 'l-card--gapless': !!block | 19 | 'l-card--gapless': !!block |
20 | } | ||
21 | if (attributes.class) { | ||
22 | classes[attributes.class] = true; | ||
23 | } | ||
24 | |||
25 | const attr = { | ||
26 | placeholder: attributes.placeholder, | ||
27 | disabled: attributes.disabled | ||
20 | } | 28 | } |
21 | 29 | ||
22 | div(class=classes aria-disabled=attributes.disabled && String(attributes.disabled)) | 30 | div(class=classes aria-disabled=attributes.disabled && String(attributes.disabled)) |
23 | if !!block | 31 | if !!block |
24 | if slots.pre | 32 | if slots.pre |
25 | - slots.pre() | 33 | .u-d-contents.t-raised |
26 | input.o-text-field__native.l-card__block.l-card__block--main&attributes(attributes) | 34 | - slots.pre() |
35 | input.o-text-field__native.l-card__block.l-card__block--main&attributes(attr) | ||
27 | if slots.post | 36 | if slots.post |
28 | - slots.post() | 37 | .u-d-contents.t-raised |
38 | - slots.post() | ||
29 | .o-text-field__bg | 39 | .o-text-field__bg |
30 | else | 40 | else |
31 | input.o-text-field__native&attributes(attributes) | 41 | input.o-text-field__native&attributes(attr) |
32 | .o-text-field__bg | 42 | .o-text-field__bg |
diff --git a/tpl/views/dialog.pug b/tpl/views/dialog.pug index 6aaead5..0b6f8e7 100644 --- a/tpl/views/dialog.pug +++ b/tpl/views/dialog.pug | |||
@@ -18,10 +18,40 @@ mixin view-dialog | |||
18 | 18 | ||
19 | .c-box | 19 | .c-box |
20 | +backdrop | 20 | +backdrop |
21 | +dialog('Lorem ipsum')(noRule=true) | 21 | +dialog('Tags') |
22 | +slot('sidebar-header') | ||
23 | +div-heading('sm')(class='o-dialog__label')= '#channel' | ||
24 | +slot('sidebar') | ||
25 | +menu(style={ 'min-width': '10em' }) | ||
26 | +menu-item(icon='bookmark')= 'Bookmark' | ||
27 | +menu-item(icon='tags', selected=true)= 'Tags' | ||
28 | +menu-item(icon='hash')= 'achannel' | ||
29 | +slot('body') | ||
30 | p.u-mt-0= loremIpsum | ||
31 | |||
32 | .c-box | ||
33 | +backdrop | ||
34 | +dialog('#channel') | ||
35 | +slot('sidebar') | ||
36 | +menu(style={ 'min-width': '10em' }) | ||
37 | +menu-item(icon='bookmark')= 'Bookmark' | ||
38 | +menu-item(icon='tags', selected=true)= 'Tags' | ||
39 | +menu-item(icon='hash')= 'achannel' | ||
40 | +slot('body') | ||
41 | p.u-mt-0= loremIpsum | ||
42 | |||
43 | .c-box | ||
44 | +backdrop | ||
45 | +dialog | ||
46 | +slot('header') | ||
47 | .l-card.l-card--flush | ||
48 | .l-card__block.l-flex | ||
49 | +action-button(quiet=true icon='chevron-left') | ||
50 | +action-button(quiet=true icon='chevron-right') | ||
51 | .l-card__block.l-card__block--main | ||
52 | +div-heading('sm')= 'Tags' | ||
22 | +slot('sidebar') | 53 | +slot('sidebar') |
23 | +menu(style={ 'min-width': '10em' }) | 54 | +menu(style={ 'min-width': '10em' }) |
24 | +menu-header= '#channel' | ||
25 | +menu-item(icon='bookmark')= 'Bookmark' | 55 | +menu-item(icon='bookmark')= 'Bookmark' |
26 | +menu-item(icon='tags', selected=true)= 'Tags' | 56 | +menu-item(icon='tags', selected=true)= 'Tags' |
27 | +menu-item(icon='hash')= 'achannel' | 57 | +menu-item(icon='hash')= 'achannel' |
diff --git a/tpl/views/rule.pug b/tpl/views/divider.pug index 495c804..8c3ec0c 100644 --- a/tpl/views/rule.pug +++ b/tpl/views/divider.pug | |||
@@ -1,21 +1,21 @@ | |||
1 | mixin view-rule | 1 | mixin view-divider |
2 | +view('rule', 'Rule') | 2 | +view('divider', 'Divider') |
3 | .c-box | 3 | .c-box |
4 | +div-heading('lg')= 'Heading' | 4 | +div-heading('lg')= 'Heading' |
5 | +rule('strong') | 5 | +divider('strong') |
6 | p= loremIpsum | 6 | p= loremIpsum |
7 | 7 | ||
8 | .c-box | 8 | .c-box |
9 | +div-heading('sm')= 'Heading' | 9 | +div-heading('sm')= 'Heading' |
10 | +rule('medium') | 10 | +divider('medium') |
11 | p= loremIpsum | 11 | p= loremIpsum |
12 | 12 | ||
13 | .c-box | 13 | .c-box |
14 | +div-heading('xs')= 'Heading' | 14 | +div-heading('xs')= 'Heading' |
15 | +rule('faint') | 15 | +divider('faint') |
16 | p= loremIpsum | 16 | p= loremIpsum |
17 | 17 | ||
18 | .c-box | 18 | .c-box |
19 | +rule('strong')= 'Strong' | 19 | +divider('strong')= 'Strong' |
20 | +rule('medium')= 'Medium' | 20 | +divider('medium')= 'Medium' |
21 | +rule('faint')= 'Faint' | 21 | +divider('faint')= 'Faint' |
diff --git a/tpl/views/list-group.pug b/tpl/views/list-group.pug index 970f0fb..9acef31 100644 --- a/tpl/views/list-group.pug +++ b/tpl/views/list-group.pug | |||
@@ -9,7 +9,7 @@ mixin view-list-group | |||
9 | 9 | ||
10 | .c-box | 10 | .c-box |
11 | +list-group | 11 | +list-group |
12 | +list-group-item(action=true)= 'First item' | 12 | +list-group-item(interactive=true)= 'First item' |
13 | +list-group-item(action=true)= 'Second item' | 13 | +list-group-item(interactive=true)= 'Second item' |
14 | +list-group-item(action=true)= 'Third item' | 14 | +list-group-item(interactive=true)= 'Third item' |
15 | +list-group-item(action=true)= 'Fourth item' | 15 | +list-group-item(interactive=true)= 'Fourth item' |
diff --git a/tpl/views/text-field.pug b/tpl/views/text-field.pug index 0ba84be..262195d 100644 --- a/tpl/views/text-field.pug +++ b/tpl/views/text-field.pug | |||
@@ -14,9 +14,10 @@ mixin view-text-field | |||
14 | +text-field(value='Incorrect input' pattern='a+' required=true disabled=true) | 14 | +text-field(value='Incorrect input' pattern='a+' required=true disabled=true) |
15 | br | 15 | br |
16 | div | 16 | div |
17 | +text-field(placeholder='Just landed in L.A.') | 17 | +text-field(placeholder='Just landed in L.A.' class="u-p-50") |
18 | +slot('pre') | 18 | +slot('pre') |
19 | +action-button(quiet=true selected=true class='l-card__block')= 'Volpeon' | 19 | +action-button(quiet=true class='l-card__block')= 'Volpeon' |
20 | +divider('vertical')(class='u-ml-50') | ||
20 | +slot('post') | 21 | +slot('post') |
21 | +action-button(quiet=true icon='smile' class='l-card__block') | 22 | +action-button(quiet=true icon='smile' class='l-card__block') |
22 | +action-button(quiet=true icon='send' class='l-card__block') | 23 | +action-button(quiet=true icon='send' class='l-card__block') |
@@ -705,10 +705,10 @@ debug@^2.6.9: | |||
705 | dependencies: | 705 | dependencies: |
706 | ms "2.0.0" | 706 | ms "2.0.0" |
707 | 707 | ||
708 | debug@^4.3.3: | 708 | debug@^4.3.4: |
709 | version "4.3.3" | 709 | version "4.3.4" |
710 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" | 710 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" |
711 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== | 711 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== |
712 | dependencies: | 712 | dependencies: |
713 | ms "2.1.2" | 713 | ms "2.1.2" |
714 | 714 | ||
@@ -1266,7 +1266,7 @@ internal-slot@^1.0.3: | |||
1266 | 1266 | ||
1267 | "iro-icons@git+https://git.vulpes.one/git/iro-icons.git": | 1267 | "iro-icons@git+https://git.vulpes.one/git/iro-icons.git": |
1268 | version "1.0.0" | 1268 | version "1.0.0" |
1269 | resolved "git+https://git.vulpes.one/git/iro-icons.git#b871fcd977047a20812ebac8d82f7a1d695eee2b" | 1269 | resolved "git+https://git.vulpes.one/git/iro-icons.git#b07eab73627edc89c31da7f207348bb86c71adb4" |
1270 | 1270 | ||
1271 | "iro-sass@git+https://git.vulpes.one/git/iro-sass.git": | 1271 | "iro-sass@git+https://git.vulpes.one/git/iro-sass.git": |
1272 | version "1.0.2" | 1272 | version "1.0.2" |
@@ -1745,6 +1745,11 @@ nanoid@^3.2.0: | |||
1745 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" | 1745 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" |
1746 | integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== | 1746 | integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== |
1747 | 1747 | ||
1748 | nanoid@^3.3.1: | ||
1749 | version "3.3.1" | ||
1750 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" | ||
1751 | integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== | ||
1752 | |||
1748 | normalize-package-data@^2.5.0: | 1753 | normalize-package-data@^2.5.0: |
1749 | version "2.5.0" | 1754 | version "2.5.0" |
1750 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" | 1755 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" |
@@ -1985,7 +1990,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: | |||
1985 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" | 1990 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" |
1986 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== | 1991 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== |
1987 | 1992 | ||
1988 | postcss@^8.3.11, postcss@^8.4.6: | 1993 | postcss@^8.3.11: |
1989 | version "8.4.6" | 1994 | version "8.4.6" |
1990 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" | 1995 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" |
1991 | integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== | 1996 | integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== |
@@ -1994,6 +1999,15 @@ postcss@^8.3.11, postcss@^8.4.6: | |||
1994 | picocolors "^1.0.0" | 1999 | picocolors "^1.0.0" |
1995 | source-map-js "^1.0.2" | 2000 | source-map-js "^1.0.2" |
1996 | 2001 | ||
2002 | postcss@^8.4.12: | ||
2003 | version "8.4.12" | ||
2004 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" | ||
2005 | integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== | ||
2006 | dependencies: | ||
2007 | nanoid "^3.3.1" | ||
2008 | picocolors "^1.0.0" | ||
2009 | source-map-js "^1.0.2" | ||
2010 | |||
1997 | prettysize@^2.0.0: | 2011 | prettysize@^2.0.0: |
1998 | version "2.0.0" | 2012 | version "2.0.0" |
1999 | resolved "https://registry.yarnpkg.com/prettysize/-/prettysize-2.0.0.tgz#902c02480d865d9cc0813011c9feb4fa02ce6996" | 2013 | resolved "https://registry.yarnpkg.com/prettysize/-/prettysize-2.0.0.tgz#902c02480d865d9cc0813011c9feb4fa02ce6996" |
@@ -2458,10 +2472,10 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: | |||
2458 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" | 2472 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" |
2459 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== | 2473 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== |
2460 | 2474 | ||
2461 | sass@^1.49.8: | 2475 | sass@^1.49.9: |
2462 | version "1.49.8" | 2476 | version "1.49.9" |
2463 | resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.8.tgz#9bbbc5d43d14862db07f1c04b786c9da9b641828" | 2477 | resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9" |
2464 | integrity sha512-NoGOjvDDOU9og9oAxhRnap71QaTjjlzrvLnKecUJ3GxhaQBrV6e7gPuSPF28u1OcVAArVojPAe4ZhOXwwC4tGw== | 2478 | integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A== |
2465 | dependencies: | 2479 | dependencies: |
2466 | chokidar ">=3.0.0 <4.0.0" | 2480 | chokidar ">=3.0.0 <4.0.0" |
2467 | immutable "^4.0.0" | 2481 | immutable "^4.0.0" |
@@ -2693,16 +2707,16 @@ stylelint-scss@^4.0.0: | |||
2693 | postcss-selector-parser "^6.0.6" | 2707 | postcss-selector-parser "^6.0.6" |
2694 | postcss-value-parser "^4.1.0" | 2708 | postcss-value-parser "^4.1.0" |
2695 | 2709 | ||
2696 | stylelint@^14.5.1: | 2710 | stylelint@^14.6.1: |
2697 | version "14.5.1" | 2711 | version "14.6.1" |
2698 | resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.5.1.tgz#2b2575ccaf14bb057209d48fc87c17d5b684f8db" | 2712 | resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.6.1.tgz#aff137b0254515fc36b91921d88a3eb2edc194bf" |
2699 | integrity sha512-8Hf4HtnhxlWlf7iXF9zFfhSc3X0teRnVzl6PqPs2JEFx+dy/mhMhghZfiTDW4QG0ihDw9+WP7GZw5Nzx7cQF5A== | 2713 | integrity sha512-FfNdvZUZdzh9KDQxDnO7Opp+prKh8OQVuSW8S13cBtxrooCbm6J6royhUeb++53WPMt04VB+ZbOz/QmzAijs6Q== |
2700 | dependencies: | 2714 | dependencies: |
2701 | balanced-match "^2.0.0" | 2715 | balanced-match "^2.0.0" |
2702 | colord "^2.9.2" | 2716 | colord "^2.9.2" |
2703 | cosmiconfig "^7.0.1" | 2717 | cosmiconfig "^7.0.1" |
2704 | css-functions-list "^3.0.1" | 2718 | css-functions-list "^3.0.1" |
2705 | debug "^4.3.3" | 2719 | debug "^4.3.4" |
2706 | execall "^2.0.0" | 2720 | execall "^2.0.0" |
2707 | fast-glob "^3.2.11" | 2721 | fast-glob "^3.2.11" |
2708 | fastest-levenshtein "^1.0.12" | 2722 | fastest-levenshtein "^1.0.12" |
@@ -2723,7 +2737,7 @@ stylelint@^14.5.1: | |||
2723 | normalize-path "^3.0.0" | 2737 | normalize-path "^3.0.0" |
2724 | normalize-selector "^0.2.0" | 2738 | normalize-selector "^0.2.0" |
2725 | picocolors "^1.0.0" | 2739 | picocolors "^1.0.0" |
2726 | postcss "^8.4.6" | 2740 | postcss "^8.4.12" |
2727 | postcss-media-query-parser "^0.2.3" | 2741 | postcss-media-query-parser "^0.2.3" |
2728 | postcss-resolve-nested-selector "^0.1.1" | 2742 | postcss-resolve-nested-selector "^0.1.1" |
2729 | postcss-safe-parser "^6.0.0" | 2743 | postcss-safe-parser "^6.0.0" |