contain-css-svelte 0.0.13 → 0.0.14
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.
- package/dist/Card.svelte +46 -26
- package/dist/controls/Button.svelte +7 -2
- package/dist/controls/Checkbox.svelte +6 -1
- package/dist/controls/Input.svelte +2 -2
- package/dist/controls/MiniButton.svelte +11 -2
- package/dist/controls/RadioButton.svelte +11 -5
- package/dist/controls/Select.svelte +46 -30
- package/dist/controls/TabItem.svelte +2 -2
- package/dist/cssprops.js +0 -1
- package/dist/dropdowns/DropdownMenu.svelte +20 -17
- package/dist/layout/Bar.svelte +2 -2
- package/dist/layout/Column.svelte +3 -3
- package/dist/layout/Columns.svelte +2 -2
- package/dist/layout/Container.svelte +46 -26
- package/dist/layout/FormItem.svelte +2 -2
- package/dist/layout/GridLayout.svelte +2 -2
- package/dist/layout/Hero.svelte +46 -26
- package/dist/layout/MenuList.svelte +8 -2
- package/dist/layout/Page.svelte +2 -2
- package/dist/layout/Row.svelte +2 -2
- package/dist/layout/Sidebar.svelte +6 -1
- package/dist/layout/SplitPane.svelte +2 -2
- package/dist/layout/TabBar.svelte +2 -2
- package/dist/layout/Tile.svelte +59 -33
- package/dist/misc/CodeInner.svelte +2 -109
- package/dist/misc/Progress.svelte +288 -0
- package/dist/misc/Progress.svelte.d.ts +28 -0
- package/dist/overlays/Dialog.svelte +2 -2
- package/dist/overlays/Tooltip.svelte +54 -34
- package/dist/sass/_affordances.scss +51 -0
- package/dist/sass/_box.scss +112 -0
- package/dist/sass/_color.scss +8 -0
- package/dist/sass/_functions.scss +113 -0
- package/dist/sass/_mixins.scss +6 -418
- package/dist/sass/_responsive.scss +75 -0
- package/dist/sass/_typography.scss +116 -0
- package/dist/typography/TextLayout.svelte +46 -26
- package/dist/vars/affordances.css +6 -1
- package/dist/vars/colors.css +1 -0
- package/dist/vars/defaults.css +7 -1
- package/dist/vars/themes/typography-airy.css +1 -1
- package/dist/vars/themes/typography-browser.css +1 -1
- package/dist/vars/themes/typography-carbon.css +1 -1
- package/package.json +3 -3
package/dist/Card.svelte
CHANGED
|
@@ -32,13 +32,13 @@ let hasFooter = $$slots.footer;
|
|
|
32
32
|
</footer>
|
|
33
33
|
</div>
|
|
34
34
|
|
|
35
|
-
<style>/*
|
|
36
|
-
/* Warning: because we define a fallback
|
|
35
|
+
<style>/* Warning: because we define a fallback
|
|
37
36
|
media query, the media query can override the container
|
|
38
37
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
39
38
|
Put min-width queries *after* max-width queries so that smaller
|
|
40
39
|
container queries don't get their styles overridden by large media queries.
|
|
41
40
|
*/
|
|
41
|
+
/* Convenience groupings */
|
|
42
42
|
.card {
|
|
43
43
|
--w: var(--card-width);
|
|
44
44
|
--h: var(--card-height);
|
|
@@ -98,6 +98,25 @@ let hasFooter = $$slots.footer;
|
|
|
98
98
|
margin-right: auto;
|
|
99
99
|
margin-bottom: var(--card-heading-margin-bottom, var(--container-heading-margin-bottom, var(--heading-margin-bottom, 0)));
|
|
100
100
|
margin-top: var(--card-heading-margin-top, var(--container-heading-margin-top, var(--heading-margin-top, 1.5em)));
|
|
101
|
+
/* Typography */
|
|
102
|
+
font-family: var(--card-heading-font-family, var(--container-heading-font-family, var(--heading-font-family, var(--heading-font-family, inherit))));
|
|
103
|
+
text-transform: var(--card-heading-text-transform, var(--container-heading-text-transform, var(--heading-text-transform, var(--heading-text-transform, inherit))));
|
|
104
|
+
text-decoration: var(--card-heading-text-decoration, var(--container-heading-text-decoration, var(--heading-text-decoration, var(--heading-text-decoration, inherit))));
|
|
105
|
+
font-size: var(--card-heading-font-size, var(--container-heading-font-size, var(--heading-font-size, var(--heading-font-size, inherit))));
|
|
106
|
+
font-weight: var(--card-heading-font-weight, var(--container-heading-font-weight, var(--heading-font-weight, var(--heading-font-weight, inherit))));
|
|
107
|
+
line-height: var(--card-heading-line-height, var(--container-heading-line-height, var(--heading-line-height, var(--heading-line-height, inherit))));
|
|
108
|
+
letter-spacing: var(--card-heading-letter-spacing, var(--container-heading-letter-spacing, var(--heading-letter-spacing, var(--heading-letter-spacing, inherit))));
|
|
109
|
+
text-indent: var(--card-heading-indent, var(--container-heading-indent, var(--heading-indent, var(--heading-indent, inherit))));
|
|
110
|
+
font-variant: var(--card-heading-font-variant, var(--container-heading-font-variant, var(--heading-font-variant, var(--heading-font-variant, inherit))));
|
|
111
|
+
text-align: var(--card-heading-text-align, var(--container-heading-text-align, var(--heading-text-align, var(--heading-text-align, inherit))));
|
|
112
|
+
/* font-family: fn.var(--heading-font-family, var(--body-font-family, var(--font-family, inherit)));
|
|
113
|
+
font-size: fn.var(--heading-font-size, inherit);
|
|
114
|
+
font-weight: fn.var(--heading-font-weight, var(--body-font-weight, var(--font-weight, inherit)));
|
|
115
|
+
line-height: fn.var(--heading-line-height, var(--body-line-height, var(--line-height, inherit)));
|
|
116
|
+
letter-spacing: fn.var(--heading-letter-spacing, var(--body-letter-spacing, var(--letter-spacing, inherit)));
|
|
117
|
+
text-indent: fn.var(--heading-indent, var(--body-indent, var(--indent, inherit)));
|
|
118
|
+
font-variant: fn.var(--heading-font-variant, var(--body-font-variant, var(--font-variant, inherit)));
|
|
119
|
+
text-align: fn.var(--heading-text-align, var(--body-text-align, var(--text-align, inherit))); */
|
|
101
120
|
}
|
|
102
121
|
.card section :global(p) {
|
|
103
122
|
font-family: var(--card-paragraph-font-family, var(--container-paragraph-font-family, var(--paragraph-font-family, var(--paragraph-font-family, inherit))));
|
|
@@ -128,34 +147,35 @@ let hasFooter = $$slots.footer;
|
|
|
128
147
|
text-indent: var(--card-first-paragraph-indent, var(--container-first-paragraph-indent, var(--first-paragraph-indent, var(--first-paragraph-indent, inherit))));
|
|
129
148
|
font-variant: var(--card-first-paragraph-font-variant, var(--container-first-paragraph-font-variant, var(--first-paragraph-font-variant, var(--first-paragraph-font-variant, inherit))));
|
|
130
149
|
text-align: var(--card-first-paragraph-text-align, var(--container-first-paragraph-text-align, var(--first-paragraph-text-align, var(--first-paragraph-text-align, inherit))));
|
|
150
|
+
margin-block-start: var(--card-first-paragraph-margin-top, var(--container-first-paragraph-margin-top, var(--first-paragraph-margin-top, 0)));
|
|
131
151
|
}
|
|
132
152
|
.card section :global(p:first-of-type::first-line) {
|
|
133
|
-
font-family: var(--card-first-line-font-family, var(--container-first-line-font-family, var(--first-line-font-family, var(--first-line-font-family, inherit))));
|
|
134
|
-
text-transform: var(--card-first-line-text-transform, var(--container-first-line-text-transform, var(--first-line-text-transform, var(--first-line-text-transform, inherit))));
|
|
135
|
-
text-decoration: var(--card-first-line-text-decoration, var(--container-first-line-text-decoration, var(--first-line-text-decoration, var(--first-line-text-decoration, inherit))));
|
|
136
|
-
font-size: var(--card-first-line-font-size, var(--container-first-line-font-size, var(--first-line-font-size, var(--first-line-font-size, inherit))));
|
|
137
|
-
font-weight: var(--card-first-line-font-weight, var(--container-first-line-font-weight, var(--first-line-font-weight, var(--first-line-font-weight, inherit))));
|
|
138
|
-
line-height: var(--card-first-line-line-height, var(--container-first-line-line-height, var(--first-line-line-height, var(--first-line-line-height, inherit))));
|
|
139
|
-
letter-spacing: var(--card-first-line-letter-spacing, var(--container-first-line-letter-spacing, var(--first-line-letter-spacing, var(--first-line-letter-spacing, inherit))));
|
|
140
|
-
text-indent: var(--card-first-line-indent, var(--container-first-line-indent, var(--first-line-indent, var(--first-line-indent, inherit))));
|
|
141
|
-
font-variant: var(--card-first-line-font-variant, var(--container-first-line-font-variant, var(--first-line-font-variant, var(--first-line-font-variant, inherit))));
|
|
142
|
-
text-align: var(--card-first-line-text-align, var(--container-first-line-text-align, var(--first-line-text-align, var(--first-line-text-align, inherit))));
|
|
153
|
+
font-family: var(--first-line-font-family, var(--card-first-line-font-family, var(--container-first-line-font-family, var(--first-line-font-family, var(--first-line-font-family, inherit)))));
|
|
154
|
+
text-transform: var(--first-line-text-transform, var(--card-first-line-text-transform, var(--container-first-line-text-transform, var(--first-line-text-transform, var(--first-line-text-transform, inherit)))));
|
|
155
|
+
text-decoration: var(--first-line-text-decoration, var(--card-first-line-text-decoration, var(--container-first-line-text-decoration, var(--first-line-text-decoration, var(--first-line-text-decoration, inherit)))));
|
|
156
|
+
font-size: var(--first-line-font-size, var(--card-first-line-font-size, var(--container-first-line-font-size, var(--first-line-font-size, var(--first-line-font-size, inherit)))));
|
|
157
|
+
font-weight: var(--first-line-font-weight, var(--card-first-line-font-weight, var(--container-first-line-font-weight, var(--first-line-font-weight, var(--first-line-font-weight, inherit)))));
|
|
158
|
+
line-height: var(--first-line-line-height, var(--card-first-line-line-height, var(--container-first-line-line-height, var(--first-line-line-height, var(--first-line-line-height, inherit)))));
|
|
159
|
+
letter-spacing: var(--first-line-letter-spacing, var(--card-first-line-letter-spacing, var(--container-first-line-letter-spacing, var(--first-line-letter-spacing, var(--first-line-letter-spacing, inherit)))));
|
|
160
|
+
text-indent: var(--first-line-indent, var(--card-first-line-indent, var(--container-first-line-indent, var(--first-line-indent, var(--first-line-indent, inherit)))));
|
|
161
|
+
font-variant: var(--first-line-font-variant, var(--card-first-line-font-variant, var(--container-first-line-font-variant, var(--first-line-font-variant, var(--first-line-font-variant, inherit)))));
|
|
162
|
+
text-align: var(--first-line-text-align, var(--card-first-line-text-align, var(--container-first-line-text-align, var(--first-line-text-align, var(--first-line-text-align, inherit)))));
|
|
143
163
|
}
|
|
144
164
|
.card section :global(p:first-of-type::first-letter) {
|
|
145
|
-
font-family: var(--card-first-letter-font-family, var(--container-first-letter-font-family, var(--container-first-letter-font-family, inherit)));
|
|
146
|
-
text-transform: var(--card-first-letter-text-transform, var(--container-first-letter-text-transform, var(--container-first-letter-text-transform, inherit)));
|
|
147
|
-
text-decoration: var(--card-first-letter-text-decoration, var(--container-first-letter-text-decoration, var(--container-first-letter-text-decoration, inherit)));
|
|
148
|
-
font-size: var(--card-first-letter-font-size, var(--container-first-letter-font-size, var(--container-first-letter-font-size, inherit)));
|
|
149
|
-
font-weight: var(--card-first-letter-font-weight, var(--container-first-letter-font-weight, var(--container-first-letter-font-weight, inherit)));
|
|
150
|
-
line-height: var(--card-first-letter-line-height, var(--container-first-letter-line-height, var(--container-first-letter-line-height, inherit)));
|
|
151
|
-
letter-spacing: var(--card-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, inherit)));
|
|
152
|
-
text-indent: var(--card-first-letter-indent, var(--container-first-letter-indent, var(--container-first-letter-indent, inherit)));
|
|
153
|
-
font-variant: var(--card-first-letter-font-variant, var(--container-first-letter-font-variant, var(--container-first-letter-font-variant, inherit)));
|
|
154
|
-
text-align: var(--card-first-letter-text-align, var(--container-first-letter-text-align, var(--container-first-letter-text-align, inherit)));
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
165
|
+
font-family: var(--first-letter-font-family, var(--card-first-letter-font-family, var(--container-first-letter-font-family, var(--container-first-letter-font-family, inherit))));
|
|
166
|
+
text-transform: var(--first-letter-text-transform, var(--card-first-letter-text-transform, var(--container-first-letter-text-transform, var(--container-first-letter-text-transform, inherit))));
|
|
167
|
+
text-decoration: var(--first-letter-text-decoration, var(--card-first-letter-text-decoration, var(--container-first-letter-text-decoration, var(--container-first-letter-text-decoration, inherit))));
|
|
168
|
+
font-size: var(--first-letter-font-size, var(--card-first-letter-font-size, var(--container-first-letter-font-size, var(--container-first-letter-font-size, inherit))));
|
|
169
|
+
font-weight: var(--first-letter-font-weight, var(--card-first-letter-font-weight, var(--container-first-letter-font-weight, var(--container-first-letter-font-weight, inherit))));
|
|
170
|
+
line-height: var(--first-letter-line-height, var(--card-first-letter-line-height, var(--container-first-letter-line-height, var(--container-first-letter-line-height, inherit))));
|
|
171
|
+
letter-spacing: var(--first-letter-letter-spacing, var(--card-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, var(--container-first-letter-letter-spacing, inherit))));
|
|
172
|
+
text-indent: var(--first-letter-indent, var(--card-first-letter-indent, var(--container-first-letter-indent, var(--container-first-letter-indent, inherit))));
|
|
173
|
+
font-variant: var(--first-letter-font-variant, var(--card-first-letter-font-variant, var(--container-first-letter-font-variant, var(--container-first-letter-font-variant, inherit))));
|
|
174
|
+
text-align: var(--first-letter-text-align, var(--card-first-letter-text-align, var(--container-first-letter-text-align, var(--container-first-letter-text-align, inherit))));
|
|
175
|
+
--link-bg: var(--card-link-bg, var(--container-link-bg, var(--container-link-bg, inherit)));
|
|
176
|
+
--link-fg: var(--card-link-fg, var(--container-link-fg, var(--container-link-fg, inherit)));
|
|
177
|
+
background: var(--card-first-letter-bg, var(--container-first-letter-bg, var(--first-letter-bg, inherit)));
|
|
178
|
+
color: var(--card-first-letter-fg, var(--container-first-letter-fg, var(--first-letter-fg, inherit)));
|
|
159
179
|
}
|
|
160
180
|
|
|
161
181
|
@container (max-width: 600px) {
|
|
@@ -28,13 +28,13 @@ let cssVars = injectVars($$props, "button", [
|
|
|
28
28
|
<span class:hidden={!iconSlotted} class="icon"><slot name="icon" /></span>
|
|
29
29
|
</button>
|
|
30
30
|
|
|
31
|
-
<style>/*
|
|
32
|
-
/* Warning: because we define a fallback
|
|
31
|
+
<style>/* Warning: because we define a fallback
|
|
33
32
|
media query, the media query can override the container
|
|
34
33
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
35
34
|
Put min-width queries *after* max-width queries so that smaller
|
|
36
35
|
container queries don't get their styles overridden by large media queries.
|
|
37
36
|
*/
|
|
37
|
+
/* Convenience groupings */
|
|
38
38
|
button.has-icon {
|
|
39
39
|
display: flex;
|
|
40
40
|
align-items: center;
|
|
@@ -84,6 +84,11 @@ button:active {
|
|
|
84
84
|
filter: var(--button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
|
|
85
85
|
transform: var(--button-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
|
|
86
86
|
}
|
|
87
|
+
button:disabled {
|
|
88
|
+
cursor: var(--button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
|
|
89
|
+
transform: var(--button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
|
|
90
|
+
filter: var(--button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
|
|
91
|
+
}
|
|
87
92
|
|
|
88
93
|
button.primary {
|
|
89
94
|
background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
|
|
@@ -37,13 +37,13 @@ $: {
|
|
|
37
37
|
</div>
|
|
38
38
|
|
|
39
39
|
<style>@charset "UTF-8";
|
|
40
|
-
/* Convenience groupings */
|
|
41
40
|
/* Warning: because we define a fallback
|
|
42
41
|
media query, the media query can override the container
|
|
43
42
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
44
43
|
Put min-width queries *after* max-width queries so that smaller
|
|
45
44
|
container queries don't get their styles overridden by large media queries.
|
|
46
45
|
*/
|
|
46
|
+
/* Convenience groupings */
|
|
47
47
|
.label-sizing-box {
|
|
48
48
|
position: relative;
|
|
49
49
|
display: inline-block;
|
|
@@ -110,6 +110,11 @@ label:active {
|
|
|
110
110
|
filter: var(--checkbox-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
|
|
111
111
|
transform: var(--checkbox-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
|
|
112
112
|
}
|
|
113
|
+
label:disabled {
|
|
114
|
+
cursor: var(--checkbox-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
|
|
115
|
+
transform: var(--checkbox-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
|
|
116
|
+
filter: var(--checkbox-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
|
|
117
|
+
}
|
|
113
118
|
|
|
114
119
|
label span {
|
|
115
120
|
width: var(--label-width);
|
|
@@ -6,13 +6,13 @@ export let placeholder = "";
|
|
|
6
6
|
{...$$restProps}
|
|
7
7
|
/>
|
|
8
8
|
|
|
9
|
-
<style>/*
|
|
10
|
-
/* Warning: because we define a fallback
|
|
9
|
+
<style>/* Warning: because we define a fallback
|
|
11
10
|
media query, the media query can override the container
|
|
12
11
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
13
12
|
Put min-width queries *after* max-width queries so that smaller
|
|
14
13
|
container queries don't get their styles overridden by large media queries.
|
|
15
14
|
*/
|
|
15
|
+
/* Convenience groupings */
|
|
16
16
|
input {
|
|
17
17
|
font-family: var(--input-font-family, var(--ui-font-family, var(--font-family, unset)));
|
|
18
18
|
text-transform: var(--input-text-transform, var(--ui-text-transform, var(--text-transform, unset)));
|
|
@@ -28,13 +28,13 @@ let style = injectVars($$props, "mini-button", [
|
|
|
28
28
|
<slot />
|
|
29
29
|
</button>
|
|
30
30
|
|
|
31
|
-
<style>/*
|
|
32
|
-
/* Warning: because we define a fallback
|
|
31
|
+
<style>/* Warning: because we define a fallback
|
|
33
32
|
media query, the media query can override the container
|
|
34
33
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
35
34
|
Put min-width queries *after* max-width queries so that smaller
|
|
36
35
|
container queries don't get their styles overridden by large media queries.
|
|
37
36
|
*/
|
|
37
|
+
/* Convenience groupings */
|
|
38
38
|
button.primary {
|
|
39
39
|
background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
|
|
40
40
|
color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
|
|
@@ -68,10 +68,14 @@ button {
|
|
|
68
68
|
margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
|
|
69
69
|
width: var(--mini-button-size, var(--icon-size, 1em));
|
|
70
70
|
height: var(--mini-button-size, var(--icon-size, 1em));
|
|
71
|
+
/* Make sure we don't shrink in a flex container */
|
|
72
|
+
min-width: var(--mini-button-size, var(--icon-size, 1em));
|
|
73
|
+
min-height: var(--mini-button-size, var(--icon-size, 1em));
|
|
71
74
|
border-radius: var(--mini-button-radius, 50%);
|
|
72
75
|
border: var(--mini-button-border, button-border, none);
|
|
73
76
|
display: inline-grid;
|
|
74
77
|
place-content: center;
|
|
78
|
+
flex-shrink: 0; /* Don't shrink any more */
|
|
75
79
|
}
|
|
76
80
|
button:hover {
|
|
77
81
|
filter: var(--mini-button-hover-filter, var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.4)))));
|
|
@@ -81,6 +85,11 @@ button:active {
|
|
|
81
85
|
filter: var(--mini-button-active-filter, var(--button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9)))));
|
|
82
86
|
transform: var(--mini-button-active-transform, var(--button-active-transform, var(--clickable-active-transform, var(--active-transform, none))));
|
|
83
87
|
}
|
|
88
|
+
button:disabled {
|
|
89
|
+
cursor: var(--mini-button-disabled-cursor, var(--button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed))));
|
|
90
|
+
transform: var(--mini-button-disabled-transform, var(--button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none))));
|
|
91
|
+
filter: var(--mini-button-disabled-filter, var(--button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
|
|
92
|
+
}
|
|
84
93
|
|
|
85
94
|
button.primary {
|
|
86
95
|
background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
|
|
@@ -52,13 +52,13 @@ $: {
|
|
|
52
52
|
visibility: hidden;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
/* Convenience groupings */
|
|
56
55
|
/* Warning: because we define a fallback
|
|
57
56
|
media query, the media query can override the container
|
|
58
57
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
59
58
|
Put min-width queries *after* max-width queries so that smaller
|
|
60
59
|
container queries don't get their styles overridden by large media queries.
|
|
61
60
|
*/
|
|
61
|
+
/* Convenience groupings */
|
|
62
62
|
:root {
|
|
63
63
|
/* Customize these variables for radio button styling */
|
|
64
64
|
--radio-button-dot: "•";
|
|
@@ -96,6 +96,7 @@ label {
|
|
|
96
96
|
box-sizing: border-box;
|
|
97
97
|
user-select: none;
|
|
98
98
|
gap: var(--radio-button-space, var(--toggle-space, var(--space-md)));
|
|
99
|
+
white-space: nowrap;
|
|
99
100
|
cursor: var(--radio-button-cursor, var(--clickable-cursor, var(--cursor, pointer)));
|
|
100
101
|
transition: filter, transform var(--radio-button-transition, var(--clickable-transition, var(--transition, 300ms)));
|
|
101
102
|
}
|
|
@@ -107,6 +108,11 @@ label:active {
|
|
|
107
108
|
filter: var(--radio-button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
|
|
108
109
|
transform: var(--radio-button-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
|
|
109
110
|
}
|
|
111
|
+
label:disabled {
|
|
112
|
+
cursor: var(--radio-button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
|
|
113
|
+
transform: var(--radio-button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
|
|
114
|
+
filter: var(--radio-button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
|
|
115
|
+
}
|
|
110
116
|
|
|
111
117
|
label span {
|
|
112
118
|
width: var(--label-width);
|
|
@@ -138,10 +144,10 @@ label::before {
|
|
|
138
144
|
}
|
|
139
145
|
|
|
140
146
|
label:has(input:checked)::before {
|
|
141
|
-
background: var(--radio-button-checked-bg, var(--toggle-on-bg, var(--primary-bg, var(--
|
|
142
|
-
color: var(--radio-button-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--
|
|
143
|
-
--link-bg: var(--radio-button-checked-link-bg, var(--toggle-on-link-bg, var(--primary-link-bg, var(--
|
|
144
|
-
--link-fg: var(--radio-button-checked-link-fg, var(--toggle-on-link-fg, var(--primary-link-fg, var(--
|
|
147
|
+
background: var(--radio-button-checked-bg, var(--toggle-on-bg, var(--primary-bg, var(--bg, unset))));
|
|
148
|
+
color: var(--radio-button-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--fg, unset))));
|
|
149
|
+
--link-bg: var(--radio-button-checked-link-bg, var(--toggle-on-link-bg, var(--primary-link-bg, var(--primary-link-bg, inherit))));
|
|
150
|
+
--link-fg: var(--radio-button-checked-link-fg, var(--toggle-on-link-fg, var(--primary-link-fg, var(--primary-link-fg, inherit))));
|
|
145
151
|
border: var(--radio-button-checked-border, var(--toggle-on-border, var(--border, radio-button)));
|
|
146
152
|
box-sizing: border-box;
|
|
147
153
|
width: var(--radio-button-size, var(--toggle-size, var(--font-size, var(--size, 1em))));
|
|
@@ -3,6 +3,9 @@ import { onMount, tick } from "svelte";
|
|
|
3
3
|
export let value;
|
|
4
4
|
let selectElement;
|
|
5
5
|
let observer;
|
|
6
|
+
let resizeObserver;
|
|
7
|
+
let targetWidth = 0;
|
|
8
|
+
let optionButtons = [];
|
|
6
9
|
onMount(async () => {
|
|
7
10
|
await tick(); // Ensure slot content is rendered
|
|
8
11
|
updateOptions();
|
|
@@ -15,7 +18,13 @@ onMount(async () => {
|
|
|
15
18
|
});
|
|
16
19
|
});
|
|
17
20
|
observer.observe(selectElement, { childList: true });
|
|
18
|
-
|
|
21
|
+
// Observe size changes in option buttons
|
|
22
|
+
resizeObserver = new ResizeObserver(() => updateTargetWidth());
|
|
23
|
+
optionButtons.forEach(button => resizeObserver.observe(button));
|
|
24
|
+
return () => {
|
|
25
|
+
observer.disconnect();
|
|
26
|
+
resizeObserver.disconnect();
|
|
27
|
+
};
|
|
19
28
|
});
|
|
20
29
|
let options = [];
|
|
21
30
|
let activeOption = null;
|
|
@@ -25,7 +34,6 @@ function updateOptions() {
|
|
|
25
34
|
}
|
|
26
35
|
options = [];
|
|
27
36
|
let optionEls = selectElement.querySelectorAll("option");
|
|
28
|
-
let newOptions = [];
|
|
29
37
|
for (let optionEl of optionEls) {
|
|
30
38
|
options.push({
|
|
31
39
|
value: optionEl.value,
|
|
@@ -33,38 +41,32 @@ function updateOptions() {
|
|
|
33
41
|
});
|
|
34
42
|
}
|
|
35
43
|
activeOption = options[selectElement.selectedIndex];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
updateTargetWidth();
|
|
45
|
+
}
|
|
46
|
+
function updateTargetWidth() {
|
|
47
|
+
let maxWidth = 0;
|
|
48
|
+
for (let button of optionButtons) {
|
|
49
|
+
if (button.offsetWidth > maxWidth) {
|
|
50
|
+
maxWidth = button.offsetWidth;
|
|
43
51
|
}
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
}
|
|
53
|
+
targetWidth = maxWidth || 150; // Fallback width if measurement fails
|
|
46
54
|
}
|
|
47
55
|
function setValue(idx) {
|
|
48
|
-
console.log("Button to set", idx);
|
|
49
56
|
selectElement.selectedIndex = idx;
|
|
50
57
|
selectElement.dispatchEvent(new Event("change"));
|
|
51
58
|
activeOption = options[idx];
|
|
52
59
|
}
|
|
53
60
|
async function updateOption(value) {
|
|
54
|
-
/* Wait for svelte to update its internal select component */
|
|
55
61
|
await tick();
|
|
56
62
|
if (selectElement) {
|
|
57
|
-
/* Use svelte's magic to update our option */
|
|
58
63
|
activeOption = options[selectElement.selectedIndex];
|
|
59
64
|
}
|
|
60
65
|
}
|
|
61
66
|
$: updateOption(value);
|
|
62
|
-
let targetWidth;
|
|
63
|
-
let optionButtons = [];
|
|
64
67
|
</script>
|
|
65
68
|
|
|
66
|
-
<select bind:value on:change bind:this={selectElement}
|
|
67
|
-
{...$$restProps}>
|
|
69
|
+
<select bind:value on:change bind:this={selectElement} {...$$restProps}>
|
|
68
70
|
<slot />
|
|
69
71
|
</select>
|
|
70
72
|
<div class="dropdown-wrapper" style:--target-width="{targetWidth}px">
|
|
@@ -85,32 +87,32 @@ let optionButtons = [];
|
|
|
85
87
|
</div>
|
|
86
88
|
|
|
87
89
|
<style>@charset "UTF-8";
|
|
88
|
-
/* Convenience groupings */
|
|
89
90
|
/* Warning: because we define a fallback
|
|
90
91
|
media query, the media query can override the container
|
|
91
92
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
92
93
|
Put min-width queries *after* max-width queries so that smaller
|
|
93
94
|
container queries don't get their styles overridden by large media queries.
|
|
94
95
|
*/
|
|
96
|
+
/* Convenience groupings */
|
|
95
97
|
select,
|
|
96
98
|
.dropdown-wrapper > :global(.dropdown-menu > button) {
|
|
97
99
|
box-sizing: border-box;
|
|
98
100
|
border: var(--select-border, var(--input-border, var(--menu-border, var(--control-border, var(--container-border, var(--border, var(--border-width, 1px) var(--border-style, solid) var(--border-color, var(--fg))))))));
|
|
99
|
-
/* border-top: var-with-fallbacks(--border-top,
|
|
101
|
+
/* border-top: fn.var-with-fallbacks(--border-top,
|
|
100
102
|
append($prefixes,
|
|
101
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
103
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
102
104
|
)...) */
|
|
103
|
-
/* border-right: var-with-fallbacks(--border-right,
|
|
105
|
+
/* border-right: fn.var-with-fallbacks(--border-right,
|
|
104
106
|
append($prefixes,
|
|
105
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
107
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
106
108
|
)...) */
|
|
107
|
-
/* border-bottom: var-with-fallbacks(--border-bottom,
|
|
109
|
+
/* border-bottom: fn.var-with-fallbacks(--border-bottom,
|
|
108
110
|
append($prefixes,
|
|
109
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
111
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
110
112
|
)...) */
|
|
111
|
-
/* border-left: var-with-fallbacks(--border-left,
|
|
113
|
+
/* border-left: fn.var-with-fallbacks(--border-left,
|
|
112
114
|
append($prefixes,
|
|
113
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
115
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
114
116
|
)...) */
|
|
115
117
|
padding: var(--select-padding, var(--input-padding, var(--menu-padding, var(--control-padding, var(--container-padding, var(--padding, 4px))))));
|
|
116
118
|
border-radius: var(--select-square-radius, var(--input-square-radius, var(--menu-square-radius, var(--control-square-radius, var(--container-square-radius, var(--square-radius, 0))))));
|
|
@@ -118,13 +120,27 @@ select,
|
|
|
118
120
|
color: var(--select-fg, var(--input-fg, var(--menu-fg, var(--control-fg, var(--container-fg, var(--fg, unset))))));
|
|
119
121
|
--link-bg: var(--select-link-bg, var(--input-link-bg, var(--menu-link-bg, var(--control-link-bg, var(--container-link-bg, var(--container-link-bg, inherit))))));
|
|
120
122
|
--link-fg: var(--select-link-fg, var(--input-link-fg, var(--menu-link-fg, var(--control-link-fg, var(--container-link-fg, var(--container-link-fg, inherit))))));
|
|
121
|
-
width: var(--select-width, var(--target-width, var(--dropdown-menu-width, min(12em,
|
|
123
|
+
width: var(--select-width, var(--target-width, var(--dropdown-menu-width, min(12em, 100vw))));
|
|
122
124
|
text-overflow: ellipsis;
|
|
125
|
+
font-family: var(--select-font-family, var(--input-font-family, var(--ui-font-family, var(--font-family, unset))));
|
|
126
|
+
text-transform: var(--select-text-transform, var(--input-text-transform, var(--ui-text-transform, var(--text-transform, unset))));
|
|
127
|
+
text-decoration: var(--select-text-decoration, var(--input-text-decoration, var(--ui-text-decoration, var(--text-decoration, unset))));
|
|
128
|
+
font-size: var(--select-font-size, var(--input-font-size, var(--ui-font-size, var(--font-size, unset))));
|
|
129
|
+
font-weight: var(--select-font-weight, var(--input-font-weight, var(--ui-font-weight, var(--font-weight, unset))));
|
|
130
|
+
line-height: var(--select-line-height, var(--input-line-height, var(--ui-line-height, var(--line-height, unset))));
|
|
131
|
+
letter-spacing: var(--select-letter-spacing, var(--input-letter-spacing, var(--ui-letter-spacing, var(--letter-spacing, unset))));
|
|
132
|
+
margin-top: var(--select-margin, var(--input-margin, var(--ui-margin, var(--margin, unset))));
|
|
133
|
+
margin-top: var(--select-margin-top, var(--input-margin-top, var(--ui-margin-top, var(--margin-top, unset))));
|
|
134
|
+
margin-bottom: var(--select-margin, var(--input-margin, var(--ui-margin, var(--margin, unset))));
|
|
135
|
+
margin-bottom: var(--select-margin-bottom, var(--input-margin-bottom, var(--ui-margin-bottom, var(--margin-bottom, unset))));
|
|
136
|
+
text-indent: var(--select-indent, var(--input-indent, var(--ui-indent, var(--indent, unset))));
|
|
137
|
+
font-variant: var(--select-font-variant, var(--input-font-variant, var(--ui-font-variant, var(--font-variant, unset))));
|
|
138
|
+
text-align: var(--select-text-align, var(--input-text-align, var(--ui-text-align, var(--text-align, unset))));
|
|
123
139
|
}
|
|
124
140
|
|
|
125
141
|
.select-dropdown-label {
|
|
126
142
|
overflow: hidden;
|
|
127
|
-
|
|
143
|
+
white-space: nowrap;
|
|
128
144
|
text-overflow: ellipsis;
|
|
129
145
|
}
|
|
130
146
|
|
|
@@ -151,7 +167,7 @@ select,
|
|
|
151
167
|
}
|
|
152
168
|
|
|
153
169
|
.select-dropdown::after {
|
|
154
|
-
content: var(--select-arrow, "⌄");
|
|
170
|
+
content: var(--select-arrow, "⌄");
|
|
155
171
|
margin-left: auto;
|
|
156
172
|
transform: var(--select-arrow-transform, scaleX(1.5) translateY(-70%));
|
|
157
173
|
display: inline-grid;
|
|
@@ -25,13 +25,13 @@ let style = injectVars($$props, "tab", [
|
|
|
25
25
|
</Button>
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
|
-
<style>/*
|
|
29
|
-
/* Warning: because we define a fallback
|
|
28
|
+
<style>/* Warning: because we define a fallback
|
|
30
29
|
media query, the media query can override the container
|
|
31
30
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
32
31
|
Put min-width queries *after* max-width queries so that smaller
|
|
33
32
|
container queries don't get their styles overridden by large media queries.
|
|
34
33
|
*/
|
|
34
|
+
/* Convenience groupings */
|
|
35
35
|
div,
|
|
36
36
|
span {
|
|
37
37
|
display: contents;
|
package/dist/cssprops.js
CHANGED
|
@@ -35,20 +35,15 @@ function computePosition() {
|
|
|
35
35
|
dropdownTop = Math.max(0, window.innerHeight - dropdownRect.height);
|
|
36
36
|
}
|
|
37
37
|
dropdownMaxHeight = window.innerHeight - dropdownTop;
|
|
38
|
-
console.log("Computed top", dropdownTop, "left", dropdownLeft, "maxHeight", dropdownMaxHeight);
|
|
39
38
|
}
|
|
40
39
|
function triggerMenu(e) {
|
|
41
|
-
console.log("Triggered...");
|
|
42
40
|
let isOpen = popoverDiv.matches(":popover-open");
|
|
43
|
-
console.log("Popover is currently open?", isOpen);
|
|
44
41
|
if (!isOpen) {
|
|
45
|
-
console.log("Opening popover");
|
|
46
42
|
injectVariablesIntoDropdown();
|
|
47
43
|
computePosition();
|
|
48
44
|
}
|
|
49
45
|
}
|
|
50
46
|
function dismissPopover(e) {
|
|
51
|
-
console.log("Dismissing popover");
|
|
52
47
|
popoverDiv.hidePopover();
|
|
53
48
|
}
|
|
54
49
|
let searchString = "";
|
|
@@ -76,12 +71,10 @@ function handleKeystroke(event) {
|
|
|
76
71
|
}
|
|
77
72
|
}
|
|
78
73
|
function maybeFocusMatch(searchString) {
|
|
79
|
-
console.log("Maybe focus", searchString);
|
|
80
74
|
let focusableItems = dropdownContentElement.querySelectorAll("a,button,[tabindex]");
|
|
81
75
|
for (let element of focusableItems) {
|
|
82
76
|
if (element.textContent &&
|
|
83
77
|
element.textContent.toLowerCase().startsWith(searchString.toLowerCase())) {
|
|
84
|
-
console.log("Found", element);
|
|
85
78
|
if (element.focus) {
|
|
86
79
|
element.focus();
|
|
87
80
|
return;
|
|
@@ -146,13 +139,13 @@ let popoverDiv;
|
|
|
146
139
|
</div>
|
|
147
140
|
</nav>
|
|
148
141
|
|
|
149
|
-
<style>/*
|
|
150
|
-
/* Warning: because we define a fallback
|
|
142
|
+
<style>/* Warning: because we define a fallback
|
|
151
143
|
media query, the media query can override the container
|
|
152
144
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
153
145
|
Put min-width queries *after* max-width queries so that smaller
|
|
154
146
|
container queries don't get their styles overridden by large media queries.
|
|
155
147
|
*/
|
|
148
|
+
/* Convenience groupings */
|
|
156
149
|
button {
|
|
157
150
|
background: var(--menu-bg, var(--button-bg, var(--container-bg, var(--bg, unset))));
|
|
158
151
|
color: var(--menu-fg, var(--button-fg, var(--container-fg, var(--fg, unset))));
|
|
@@ -178,6 +171,11 @@ button:active {
|
|
|
178
171
|
filter: var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9)))));
|
|
179
172
|
transform: var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none))));
|
|
180
173
|
}
|
|
174
|
+
button:disabled {
|
|
175
|
+
cursor: var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed))));
|
|
176
|
+
transform: var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none))));
|
|
177
|
+
filter: var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
|
|
178
|
+
}
|
|
181
179
|
|
|
182
180
|
.menu {
|
|
183
181
|
background: var(--menu-bg, var(--container-bg, var(--bg, unset)));
|
|
@@ -217,6 +215,11 @@ button:active {
|
|
|
217
215
|
filter: var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9)))));
|
|
218
216
|
transform: var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none))));
|
|
219
217
|
}
|
|
218
|
+
.menu:disabled {
|
|
219
|
+
cursor: var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed))));
|
|
220
|
+
transform: var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none))));
|
|
221
|
+
filter: var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
|
|
222
|
+
}
|
|
220
223
|
|
|
221
224
|
.dropdown-menu {
|
|
222
225
|
font-family: var(--menu-font-family, var(--container-font-family, var(--font-family, unset)));
|
|
@@ -271,21 +274,21 @@ button:active {
|
|
|
271
274
|
box-shadow: var(--dropdown-menu-shadow-distance, var(--dropdown-shadow-distance, var(--shadow-distance, var(--space-md)))) var(--dropdown-menu-shadow-distance, var(--dropdown-shadow-distance, var(--shadow-distance, var(--space-md)))) var(--dropdown-menu-shadow-blur, var(--dropdown-shadow-blur, var(--shadow-blur, var(--space)))) var(--dropdown-menu-shadow-color, var(--dropdown-shadow-color, var(--shadow-color, rgba(127, 127, 127, 0.4))));
|
|
272
275
|
box-sizing: border-box;
|
|
273
276
|
border: var(--dropdown-menu-border, var(--menu-border, var(--container-border, var(--border, var(--border-width, 1px) var(--border-style, solid) var(--border-color, var(--fg))))));
|
|
274
|
-
/* border-top: var-with-fallbacks(--border-top,
|
|
277
|
+
/* border-top: fn.var-with-fallbacks(--border-top,
|
|
275
278
|
append($prefixes,
|
|
276
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
279
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
277
280
|
)...) */
|
|
278
|
-
/* border-right: var-with-fallbacks(--border-right,
|
|
281
|
+
/* border-right: fn.var-with-fallbacks(--border-right,
|
|
279
282
|
append($prefixes,
|
|
280
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
283
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
281
284
|
)...) */
|
|
282
|
-
/* border-bottom: var-with-fallbacks(--border-bottom,
|
|
285
|
+
/* border-bottom: fn.var-with-fallbacks(--border-bottom,
|
|
283
286
|
append($prefixes,
|
|
284
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
287
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
285
288
|
)...) */
|
|
286
|
-
/* border-left: var-with-fallbacks(--border-left,
|
|
289
|
+
/* border-left: fn.var-with-fallbacks(--border-left,
|
|
287
290
|
append($prefixes,
|
|
288
|
-
var-with-fallbacks(--border,$prefixes...)
|
|
291
|
+
fn.var-with-fallbacks(--border,$prefixes...)
|
|
289
292
|
)...) */
|
|
290
293
|
padding: var(--dropdown-menu-padding, var(--menu-padding, var(--container-padding, var(--padding, 4px))));
|
|
291
294
|
border-radius: var(--dropdown-menu-square-radius, var(--menu-square-radius, var(--container-square-radius, var(--square-radius, 0))));
|
package/dist/layout/Bar.svelte
CHANGED
|
@@ -24,13 +24,13 @@ let style = injectVars($$props, "bar", [
|
|
|
24
24
|
<slot />
|
|
25
25
|
</div>
|
|
26
26
|
|
|
27
|
-
<style>/*
|
|
28
|
-
/* Warning: because we define a fallback
|
|
27
|
+
<style>/* Warning: because we define a fallback
|
|
29
28
|
media query, the media query can override the container
|
|
30
29
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
31
30
|
Put min-width queries *after* max-width queries so that smaller
|
|
32
31
|
container queries don't get their styles overridden by large media queries.
|
|
33
32
|
*/
|
|
33
|
+
/* Convenience groupings */
|
|
34
34
|
.bar {
|
|
35
35
|
display: flex;
|
|
36
36
|
align-items: var(--bar-align, center);
|
|
@@ -12,13 +12,13 @@ export let customWidth = null;
|
|
|
12
12
|
<slot />
|
|
13
13
|
</section>
|
|
14
14
|
|
|
15
|
-
<style>/*
|
|
16
|
-
/* Warning: because we define a fallback
|
|
15
|
+
<style>/* Warning: because we define a fallback
|
|
17
16
|
media query, the media query can override the container
|
|
18
17
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
19
18
|
Put min-width queries *after* max-width queries so that smaller
|
|
20
19
|
container queries don't get their styles overridden by large media queries.
|
|
21
20
|
*/
|
|
21
|
+
/* Convenience groupings */
|
|
22
22
|
.small {
|
|
23
23
|
--w: 120px;
|
|
24
24
|
}
|
|
@@ -39,5 +39,5 @@ section {
|
|
|
39
39
|
container-type: inline-size;
|
|
40
40
|
overflow: auto;
|
|
41
41
|
justify-content: start;
|
|
42
|
-
align-items: center;
|
|
42
|
+
align-items: var(--column-align, center);
|
|
43
43
|
}</style>
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
<slot />
|
|
6
6
|
</div>
|
|
7
7
|
|
|
8
|
-
<style>/*
|
|
9
|
-
/* Warning: because we define a fallback
|
|
8
|
+
<style>/* Warning: because we define a fallback
|
|
10
9
|
media query, the media query can override the container
|
|
11
10
|
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
12
11
|
Put min-width queries *after* max-width queries so that smaller
|
|
13
12
|
container queries don't get their styles overridden by large media queries.
|
|
14
13
|
*/
|
|
14
|
+
/* Convenience groupings */
|
|
15
15
|
.columns {
|
|
16
16
|
display: flex;
|
|
17
17
|
flex-direction: row;
|