ngwr 7.2.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/alert/styles/_index.scss +44 -17
- package/avatar/styles/_index.scss +2 -2
- package/badge/styles/_index.scss +11 -7
- package/badge/styles/_tag.scss +1 -1
- package/bar-chart/styles/_index.scss +1 -2
- package/breadcrumbs/styles/_index.scss +4 -2
- package/burger/styles/_index.scss +2 -2
- package/button/styles/_index.scss +30 -20
- package/calendar/styles/_index.scss +11 -9
- package/calendar-heatmap/styles/_index.scss +2 -0
- package/card/styles/_index.scss +1 -1
- package/carousel/styles/_index.scss +3 -1
- package/cascader/styles/_index.scss +54 -14
- package/checkbox/styles/_index.scss +21 -4
- package/collapse/styles/_index.scss +1 -1
- package/color-picker/styles/_index.scss +18 -12
- package/command-palette/styles/_index.scss +3 -3
- package/compare/styles/_index.scss +3 -3
- package/context-menu/styles/_index.scss +1 -1
- package/date-picker/styles/_index.scss +5 -6
- package/density/styles/_index.scss +13 -3
- package/dialog/styles/_index.scss +3 -3
- package/divider/styles/_index.scss +1 -1
- package/drawer/styles/_index.scss +13 -11
- package/dropdown/styles/_index.scss +2 -2
- package/fesm2022/ngwr-affix.mjs +3 -3
- package/fesm2022/ngwr-alert.mjs +22 -10
- package/fesm2022/ngwr-alert.mjs.map +1 -1
- package/fesm2022/ngwr-anchor.mjs +3 -3
- package/fesm2022/ngwr-aurora.mjs +3 -3
- package/fesm2022/ngwr-avatar.mjs +3 -3
- package/fesm2022/ngwr-back-top.mjs +3 -3
- package/fesm2022/ngwr-badge.mjs +6 -6
- package/fesm2022/ngwr-bar-chart.mjs +3 -3
- package/fesm2022/ngwr-blur-text.mjs +3 -3
- package/fesm2022/ngwr-border-glow.mjs +3 -3
- package/fesm2022/ngwr-breadcrumbs.mjs +7 -7
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-button.mjs +6 -6
- package/fesm2022/ngwr-calendar-heatmap.mjs +3 -3
- package/fesm2022/ngwr-calendar.mjs +4 -4
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +10 -10
- package/fesm2022/ngwr-card.mjs.map +1 -1
- package/fesm2022/ngwr-carousel.mjs +50 -9
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader.mjs +12 -35
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +13 -30
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +3 -3
- package/fesm2022/ngwr-click-spark.mjs +25 -6
- package/fesm2022/ngwr-click-spark.mjs.map +1 -1
- package/fesm2022/ngwr-clipboard.mjs +27 -6
- package/fesm2022/ngwr-clipboard.mjs.map +1 -1
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-color-picker.mjs +7 -7
- package/fesm2022/ngwr-color-picker.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette.mjs +3 -3
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-confetti.mjs +3 -3
- package/fesm2022/ngwr-context-menu.mjs +39 -15
- package/fesm2022/ngwr-context-menu.mjs.map +1 -1
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-counter.mjs +12 -8
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
- package/fesm2022/ngwr-date-adapter-luxon.mjs +3 -3
- package/fesm2022/ngwr-date-adapter.mjs +3 -3
- package/fesm2022/ngwr-date-picker.mjs +25 -11
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-decrypt-text.mjs +3 -3
- package/fesm2022/ngwr-density.mjs +14 -14
- package/fesm2022/ngwr-density.mjs.map +1 -1
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-dialog.mjs +15 -15
- package/fesm2022/ngwr-directives.mjs +15 -87
- package/fesm2022/ngwr-directives.mjs.map +1 -1
- package/fesm2022/ngwr-divider.mjs +3 -3
- package/fesm2022/ngwr-donut-chart.mjs +10 -4
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +18 -8
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-drawer.mjs +80 -19
- package/fesm2022/ngwr-drawer.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown.mjs +9 -9
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-falling-text.mjs +3 -3
- package/fesm2022/ngwr-file-upload.mjs +3 -3
- package/fesm2022/ngwr-form.mjs +9 -9
- package/fesm2022/ngwr-fuzzy-text.mjs +8 -7
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +3 -3
- package/fesm2022/ngwr-glitch-text.mjs +15 -7
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text.mjs +3 -3
- package/fesm2022/ngwr-hotkey.mjs +6 -6
- package/fesm2022/ngwr-i18n.mjs +9 -9
- package/fesm2022/ngwr-icon.mjs +3 -3
- package/fesm2022/ngwr-image-cropper.mjs +3 -3
- package/fesm2022/ngwr-input-number.mjs +4 -4
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp.mjs +10 -4
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input.mjs +25 -16
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob.mjs +3 -3
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox.mjs +60 -5
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +3 -3
- package/fesm2022/ngwr-list.mjs +7 -7
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +6 -6
- package/fesm2022/ngwr-marquee.mjs +3 -3
- package/fesm2022/ngwr-media.mjs +3 -3
- package/fesm2022/ngwr-mention.mjs +6 -6
- package/fesm2022/ngwr-meta.mjs +6 -6
- package/fesm2022/ngwr-meter-group.mjs +3 -3
- package/fesm2022/ngwr-overlay.mjs +3 -3
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination.mjs +14 -16
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +21 -21
- package/fesm2022/ngwr-platform.mjs +3 -3
- package/fesm2022/ngwr-popconfirm.mjs +6 -6
- package/fesm2022/ngwr-popover.mjs +6 -6
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs +3 -3
- package/fesm2022/ngwr-radio.mjs +28 -26
- package/fesm2022/ngwr-radio.mjs.map +1 -1
- package/fesm2022/ngwr-rating.mjs +12 -23
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-result.mjs +12 -12
- package/fesm2022/ngwr-rotating-text.mjs +18 -7
- package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented.mjs +10 -22
- package/fesm2022/ngwr-segmented.mjs.map +1 -1
- package/fesm2022/ngwr-select.mjs +26 -13
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +6 -6
- package/fesm2022/ngwr-sidebar.mjs +3 -3
- package/fesm2022/ngwr-skeleton.mjs +3 -3
- package/fesm2022/ngwr-slider.mjs +3 -3
- package/fesm2022/ngwr-sparkline.mjs +3 -3
- package/fesm2022/ngwr-speed-dial.mjs +3 -3
- package/fesm2022/ngwr-spinner.mjs +3 -3
- package/fesm2022/ngwr-splash-cursor.mjs +3 -3
- package/fesm2022/ngwr-split-text.mjs +3 -3
- package/fesm2022/ngwr-splitter.mjs +3 -3
- package/fesm2022/ngwr-spotlight-card.mjs +8 -8
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-squircle.mjs +6 -6
- package/fesm2022/ngwr-star-border.mjs +3 -3
- package/fesm2022/ngwr-statistic.mjs +79 -10
- package/fesm2022/ngwr-statistic.mjs.map +1 -1
- package/fesm2022/ngwr-stepper.mjs +6 -6
- package/fesm2022/ngwr-storage.mjs +3 -3
- package/fesm2022/ngwr-switch.mjs +10 -14
- package/fesm2022/ngwr-switch.mjs.map +1 -1
- package/fesm2022/ngwr-table.mjs +20 -14
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs.mjs +45 -11
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea.mjs +84 -25
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-theme.mjs +3 -3
- package/fesm2022/ngwr-tilt-card.mjs +6 -6
- package/fesm2022/ngwr-timeline.mjs +6 -6
- package/fesm2022/ngwr-toast.mjs +99 -25
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +13 -6
- package/fesm2022/ngwr-toolbar.mjs.map +1 -1
- package/fesm2022/ngwr-tree.mjs +3 -3
- package/fesm2022/ngwr-typewriter.mjs +3 -3
- package/fesm2022/ngwr-typography.mjs +3 -3
- package/fesm2022/ngwr-validators.mjs +41 -3
- package/fesm2022/ngwr-validators.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +1 -1
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
- package/fesm2022/ngwr-waves.mjs +3 -3
- package/fesm2022/ngwr-window.mjs +12 -12
- package/file-upload/styles/_index.scss +3 -3
- package/form/styles/_index.scss +5 -5
- package/glitch-text/styles/_index.scss +3 -6
- package/image-cropper/styles/_index.scss +3 -3
- package/input/styles/_index.scss +26 -7
- package/input-otp/styles/_index.scss +23 -5
- package/keyboard/styles/_index.scss +6 -4
- package/knob/styles/_index.scss +1 -1
- package/lightbox/styles/_index.scss +31 -10
- package/list/styles/_index.scss +3 -3
- package/llms-full.txt +668 -0
- package/llms.txt +106 -0
- package/mention/styles/_index.scss +2 -2
- package/overlay/styles/_index.scss +1 -1
- package/package.json +1 -6
- package/pagination/styles/_index.scss +36 -25
- package/popconfirm/styles/_index.scss +1 -1
- package/popover/styles/_index.scss +2 -2
- package/radio/styles/_index.scss +20 -5
- package/rating/styles/_index.scss +12 -1
- package/schematics/migrations/v8/index.js +122 -0
- package/schematics/migrations.json +5 -0
- package/schematics/ng-add/index.js +3 -3
- package/schematics/ng-add/schema.json +6 -6
- package/schematics/provider/schema.json +1 -1
- package/schematics/use/symbol-map.json +11 -2
- package/segmented/styles/_index.scss +31 -8
- package/select/styles/_index.scss +73 -25
- package/sidebar/styles/_index.scss +3 -3
- package/slider/styles/_index.scss +5 -3
- package/speed-dial/styles/_index.scss +1 -0
- package/splitter/styles/_index.scss +7 -4
- package/spotlight-card/styles/_index.scss +8 -4
- package/stepper/styles/_index.scss +4 -4
- package/styles/_animations.scss +0 -23
- package/styles.scss +0 -1
- package/switch/styles/_index.scss +25 -6
- package/table/styles/_index.scss +69 -8
- package/tabs/styles/_index.scss +46 -3
- package/textarea/styles/_index.scss +59 -4
- package/theme/styles/_colors.scss +57 -0
- package/theme/styles/_dark.scss +22 -8
- package/theme/styles/_focus.scss +5 -0
- package/theme/styles/_variables.scss +24 -0
- package/timeline/styles/_index.scss +11 -2
- package/toast/styles/_index.scss +15 -5
- package/toolbar/styles/_index.scss +30 -1
- package/tree/styles/_index.scss +18 -17
- package/types/ngwr-alert.d.ts +16 -6
- package/types/ngwr-carousel.d.ts +8 -1
- package/types/ngwr-cascader.d.ts +5 -2
- package/types/ngwr-checkbox.d.ts +5 -2
- package/types/ngwr-click-spark.d.ts +13 -1
- package/types/ngwr-clipboard.d.ts +12 -1
- package/types/ngwr-context-menu.d.ts +20 -3
- package/types/ngwr-date-picker.d.ts +3 -0
- package/types/ngwr-density.d.ts +7 -7
- package/types/ngwr-directives.d.ts +17 -49
- package/types/ngwr-drag-drop.d.ts +13 -1
- package/types/ngwr-drawer.d.ts +11 -3
- package/types/ngwr-fuzzy-text.d.ts +1 -1
- package/types/ngwr-glitch-text.d.ts +9 -3
- package/types/ngwr-input-otp.d.ts +6 -2
- package/types/ngwr-input.d.ts +27 -13
- package/types/ngwr-lightbox.d.ts +14 -1
- package/types/ngwr-pagination.d.ts +10 -10
- package/types/ngwr-radio.d.ts +14 -3
- package/types/ngwr-rating.d.ts +5 -1
- package/types/ngwr-rotating-text.d.ts +1 -0
- package/types/ngwr-segmented.d.ts +5 -2
- package/types/ngwr-select.d.ts +6 -2
- package/types/ngwr-spotlight-card.d.ts +1 -1
- package/types/ngwr-statistic.d.ts +35 -1
- package/types/ngwr-switch.d.ts +5 -1
- package/types/ngwr-table.d.ts +7 -1
- package/types/ngwr-tabs.d.ts +6 -0
- package/types/ngwr-textarea.d.ts +25 -3
- package/types/ngwr-toast.d.ts +7 -1
- package/types/ngwr-toolbar.d.ts +7 -1
- package/types/ngwr-validators.d.ts +3 -1
- package/types/ngwr-version.d.ts +1 -1
- package/window/styles/_index.scss +8 -8
- package/fesm2022/ngwr-scramble-text.mjs +0 -165
- package/fesm2022/ngwr-scramble-text.mjs.map +0 -1
- package/scramble-text/scramble-text.scss +0 -1
- package/scramble-text/styles/_index.scss +0 -8
- package/types/ngwr-scramble-text.d.ts +0 -49
package/table/styles/_index.scss
CHANGED
|
@@ -14,6 +14,13 @@
|
|
|
14
14
|
font-family: var(--wr-font-family-base);
|
|
15
15
|
color: var(--wr-color-dark);
|
|
16
16
|
|
|
17
|
+
// Opt-in (`responsive`): query the table's own width so each row collapses to
|
|
18
|
+
// a labelled card when it's too narrow for columns. Already width:100%, so
|
|
19
|
+
// containment is safe.
|
|
20
|
+
&--responsive {
|
|
21
|
+
container: wr-table / inline-size;
|
|
22
|
+
}
|
|
23
|
+
|
|
17
24
|
&__scroll {
|
|
18
25
|
width: 100%;
|
|
19
26
|
overflow-x: auto;
|
|
@@ -22,7 +29,7 @@
|
|
|
22
29
|
&__table {
|
|
23
30
|
width: 100%;
|
|
24
31
|
border-collapse: collapse;
|
|
25
|
-
font-size:
|
|
32
|
+
font-size: var(--wr-text-sm);
|
|
26
33
|
line-height: 1.25rem;
|
|
27
34
|
}
|
|
28
35
|
|
|
@@ -38,7 +45,7 @@
|
|
|
38
45
|
background: var(--wr-table-head-bg);
|
|
39
46
|
color: var(--wr-color-medium);
|
|
40
47
|
font-weight: 600;
|
|
41
|
-
font-size:
|
|
48
|
+
font-size: var(--wr-text-xs);
|
|
42
49
|
letter-spacing: 0.04em;
|
|
43
50
|
text-transform: uppercase;
|
|
44
51
|
white-space: nowrap;
|
|
@@ -102,6 +109,60 @@
|
|
|
102
109
|
}
|
|
103
110
|
}
|
|
104
111
|
|
|
112
|
+
// Responsive tables: when the box is too narrow for columns, each row becomes a
|
|
113
|
+
// card and every cell shows its column title (from `data-label`) as a label.
|
|
114
|
+
@container wr-table (max-width: 36rem) {
|
|
115
|
+
.wr-table--responsive .wr-table__scroll {
|
|
116
|
+
overflow-x: visible;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Break the table grid down to blocks; the header row is replaced by per-cell
|
|
120
|
+
// labels.
|
|
121
|
+
.wr-table--responsive .wr-table__table,
|
|
122
|
+
.wr-table--responsive .wr-table__table tbody,
|
|
123
|
+
.wr-table--responsive .wr-table__tr,
|
|
124
|
+
.wr-table--responsive .wr-table__td {
|
|
125
|
+
display: block;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.wr-table--responsive .wr-table__table thead {
|
|
129
|
+
display: none;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// One card per row.
|
|
133
|
+
.wr-table--responsive .wr-table__tr {
|
|
134
|
+
padding: 0.375rem 0;
|
|
135
|
+
border-bottom: 1px solid var(--wr-table-border);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.wr-table--responsive .wr-table__tr:last-child {
|
|
139
|
+
border-bottom: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Each cell is a `LABEL ......... value` line.
|
|
143
|
+
.wr-table--responsive .wr-table__td {
|
|
144
|
+
display: flex;
|
|
145
|
+
justify-content: space-between;
|
|
146
|
+
align-items: baseline;
|
|
147
|
+
gap: 1rem;
|
|
148
|
+
padding: 0.25rem 0.875rem;
|
|
149
|
+
border-bottom: 0;
|
|
150
|
+
text-align: right;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.wr-table--responsive .wr-table__td::before {
|
|
154
|
+
content: attr(data-label);
|
|
155
|
+
flex: 0 0 auto;
|
|
156
|
+
color: var(--wr-color-medium);
|
|
157
|
+
font-size: var(--wr-text-xs);
|
|
158
|
+
font-weight: 600;
|
|
159
|
+
letter-spacing: 0.04em;
|
|
160
|
+
text-transform: uppercase;
|
|
161
|
+
text-align: left;
|
|
162
|
+
white-space: nowrap;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
105
166
|
.wr-table-sort {
|
|
106
167
|
display: inline-flex;
|
|
107
168
|
--wr-icon-size: 0.875rem;
|
|
@@ -153,7 +214,7 @@
|
|
|
153
214
|
border-radius: var(--wr-border-radius-pill);
|
|
154
215
|
background: var(--wr-color-primary);
|
|
155
216
|
color: var(--wr-color-primary-contrast);
|
|
156
|
-
font-size: 0.625rem;
|
|
217
|
+
font-size: 0.625rem; // 10px — intentional micro-count badge, below --wr-text-xs
|
|
157
218
|
font-weight: 600;
|
|
158
219
|
}
|
|
159
220
|
|
|
@@ -176,7 +237,7 @@
|
|
|
176
237
|
background: transparent;
|
|
177
238
|
color: var(--wr-color-dark);
|
|
178
239
|
font: inherit;
|
|
179
|
-
font-size:
|
|
240
|
+
font-size: var(--wr-text-sm);
|
|
180
241
|
}
|
|
181
242
|
|
|
182
243
|
&__list {
|
|
@@ -197,7 +258,7 @@
|
|
|
197
258
|
border-radius: var(--wr-border-radius-sm);
|
|
198
259
|
color: var(--wr-color-dark);
|
|
199
260
|
font: inherit;
|
|
200
|
-
font-size:
|
|
261
|
+
font-size: var(--wr-text-sm);
|
|
201
262
|
text-align: left;
|
|
202
263
|
cursor: pointer;
|
|
203
264
|
|
|
@@ -232,7 +293,7 @@
|
|
|
232
293
|
&__empty {
|
|
233
294
|
padding: 0.625rem 0.5rem;
|
|
234
295
|
color: var(--wr-color-medium);
|
|
235
|
-
font-size:
|
|
296
|
+
font-size: var(--wr-text-sm);
|
|
236
297
|
text-align: center;
|
|
237
298
|
}
|
|
238
299
|
|
|
@@ -244,12 +305,12 @@
|
|
|
244
305
|
border-radius: var(--wr-border-radius-sm);
|
|
245
306
|
color: var(--wr-color-primary);
|
|
246
307
|
font: inherit;
|
|
247
|
-
font-size:
|
|
308
|
+
font-size: var(--wr-text-sm);
|
|
248
309
|
cursor: pointer;
|
|
249
310
|
text-align: left;
|
|
250
311
|
|
|
251
312
|
&:hover {
|
|
252
|
-
background:
|
|
313
|
+
background: var(--wr-color-primary-soft);
|
|
253
314
|
}
|
|
254
315
|
}
|
|
255
316
|
}
|
package/tabs/styles/_index.scss
CHANGED
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
--wr-tabs-color-hover: var(--wr-color-dark);
|
|
7
7
|
--wr-tabs-color-active: var(--wr-color-primary);
|
|
8
8
|
--wr-tabs-indicator: var(--wr-color-primary);
|
|
9
|
+
--wr-tabs-font-size: var(--wr-control-font-size-md);
|
|
10
|
+
--wr-tabs-line-height: var(--wr-control-line-height-md);
|
|
11
|
+
--wr-tabs-padding-y: 0.625rem;
|
|
12
|
+
--wr-tabs-padding-x: 1rem;
|
|
9
13
|
|
|
10
14
|
display: block;
|
|
11
15
|
// Claim the full row even when nested in a flex-row demo wrapper.
|
|
@@ -14,6 +18,21 @@
|
|
|
14
18
|
min-width: 0;
|
|
15
19
|
font-family: var(--wr-font-family-base);
|
|
16
20
|
|
|
21
|
+
// Sizes — wire the (previously inert) `size` input to the control fonts.
|
|
22
|
+
&--sm {
|
|
23
|
+
--wr-tabs-font-size: var(--wr-control-font-size-sm);
|
|
24
|
+
--wr-tabs-line-height: var(--wr-control-line-height-sm);
|
|
25
|
+
--wr-tabs-padding-y: 0.5rem;
|
|
26
|
+
--wr-tabs-padding-x: 0.75rem;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&--lg {
|
|
30
|
+
--wr-tabs-font-size: var(--wr-control-font-size-lg);
|
|
31
|
+
--wr-tabs-line-height: var(--wr-control-line-height-lg);
|
|
32
|
+
--wr-tabs-padding-y: 0.75rem;
|
|
33
|
+
--wr-tabs-padding-x: 1.25rem;
|
|
34
|
+
}
|
|
35
|
+
|
|
17
36
|
&__strip {
|
|
18
37
|
display: flex;
|
|
19
38
|
align-items: stretch;
|
|
@@ -29,6 +48,30 @@
|
|
|
29
48
|
// the y-axis since the strip is always a single row.
|
|
30
49
|
overflow-x: auto;
|
|
31
50
|
overflow-y: hidden;
|
|
51
|
+
|
|
52
|
+
// Edge fades — when the strip overflows, the side that still has tabs to
|
|
53
|
+
// scroll to fades out, cueing that there's more. `--wr-tabs-fade-*` default
|
|
54
|
+
// to 0 (no fade); the `--fade-start` / `--fade-end` modifiers below turn an
|
|
55
|
+
// edge on from the component's scroll metrics, so a non-scrolling strip is
|
|
56
|
+
// never masked.
|
|
57
|
+
--wr-tabs-fade: 1.5rem;
|
|
58
|
+
--wr-tabs-fade-start: 0px;
|
|
59
|
+
--wr-tabs-fade-end: 0px;
|
|
60
|
+
mask-image: linear-gradient(
|
|
61
|
+
to right,
|
|
62
|
+
transparent 0,
|
|
63
|
+
#000 var(--wr-tabs-fade-start),
|
|
64
|
+
#000 calc(100% - var(--wr-tabs-fade-end)),
|
|
65
|
+
transparent 100%
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&--fade-start &__strip {
|
|
70
|
+
--wr-tabs-fade-start: var(--wr-tabs-fade);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&--fade-end &__strip {
|
|
74
|
+
--wr-tabs-fade-end: var(--wr-tabs-fade);
|
|
32
75
|
}
|
|
33
76
|
|
|
34
77
|
&__tab {
|
|
@@ -36,12 +79,12 @@
|
|
|
36
79
|
background: transparent;
|
|
37
80
|
border: 0;
|
|
38
81
|
text-decoration: none;
|
|
39
|
-
padding:
|
|
82
|
+
padding: var(--wr-tabs-padding-y) var(--wr-tabs-padding-x);
|
|
40
83
|
color: var(--wr-tabs-color);
|
|
41
84
|
font: inherit;
|
|
42
|
-
font-size:
|
|
85
|
+
font-size: var(--wr-tabs-font-size);
|
|
43
86
|
font-weight: 500;
|
|
44
|
-
line-height:
|
|
87
|
+
line-height: var(--wr-tabs-line-height);
|
|
45
88
|
border-bottom: 2px solid transparent;
|
|
46
89
|
cursor: pointer;
|
|
47
90
|
white-space: nowrap;
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
--wr-textarea-placeholder: rgba(var(--wr-color-medium-rgb), 0.7);
|
|
10
10
|
--wr-textarea-bg: var(--wr-color-white);
|
|
11
11
|
--wr-textarea-border: var(--wr-color-light);
|
|
12
|
-
--wr-textarea-radius: var(--wr-
|
|
12
|
+
--wr-textarea-radius: var(--wr-control-radius-md);
|
|
13
13
|
--wr-textarea-ring: transparent;
|
|
14
14
|
--wr-textarea-padding-y: 0.5rem;
|
|
15
|
-
--wr-textarea-padding-x:
|
|
16
|
-
--wr-textarea-font-size:
|
|
15
|
+
--wr-textarea-padding-x: var(--wr-control-padding-x-md);
|
|
16
|
+
--wr-textarea-font-size: var(--wr-text-sm);
|
|
17
17
|
--wr-textarea-line-height: 1.375rem;
|
|
18
18
|
|
|
19
19
|
background: var(--wr-textarea-bg);
|
|
@@ -37,6 +37,29 @@
|
|
|
37
37
|
cursor: not-allowed;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
// Horizontal resize needs a shrinkable, explicit-width box (not full-width block).
|
|
41
|
+
&--resize-x {
|
|
42
|
+
display: inline-block;
|
|
43
|
+
max-width: 100%;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Sizes — radius, padding, font + line-height scale; height stays content-driven.
|
|
47
|
+
&--sm {
|
|
48
|
+
--wr-textarea-radius: var(--wr-control-radius-sm);
|
|
49
|
+
--wr-textarea-padding-y: 0.375rem;
|
|
50
|
+
--wr-textarea-padding-x: var(--wr-control-padding-x-sm);
|
|
51
|
+
--wr-textarea-font-size: var(--wr-text-xs);
|
|
52
|
+
--wr-textarea-line-height: 1.125rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&--lg {
|
|
56
|
+
--wr-textarea-radius: var(--wr-control-radius-lg);
|
|
57
|
+
--wr-textarea-padding-y: 0.625rem;
|
|
58
|
+
--wr-textarea-padding-x: var(--wr-control-padding-x-lg);
|
|
59
|
+
--wr-textarea-font-size: var(--wr-text-base);
|
|
60
|
+
--wr-textarea-line-height: 1.625rem;
|
|
61
|
+
}
|
|
62
|
+
|
|
40
63
|
&--no-resize &__native {
|
|
41
64
|
resize: none;
|
|
42
65
|
}
|
|
@@ -55,7 +78,8 @@
|
|
|
55
78
|
line-height: var(--wr-textarea-line-height);
|
|
56
79
|
padding: calc(var(--wr-textarea-padding-y) * var(--wr-density-y, 1))
|
|
57
80
|
calc(var(--wr-textarea-padding-x) * var(--wr-density-x, 1));
|
|
58
|
-
|
|
81
|
+
// Native grip removed — we draw our own corner grip (&__resize) instead.
|
|
82
|
+
resize: none;
|
|
59
83
|
|
|
60
84
|
&::placeholder {
|
|
61
85
|
color: var(--wr-textarea-placeholder);
|
|
@@ -65,4 +89,35 @@
|
|
|
65
89
|
cursor: not-allowed;
|
|
66
90
|
}
|
|
67
91
|
}
|
|
92
|
+
|
|
93
|
+
// Corner resize grip — icon (move-vertical / -horizontal / -diagonal-2) and
|
|
94
|
+
// cursor follow the `resize` direction.
|
|
95
|
+
&__resize {
|
|
96
|
+
position: absolute;
|
|
97
|
+
right: 0.25rem;
|
|
98
|
+
bottom: 0.25rem;
|
|
99
|
+
display: inline-flex;
|
|
100
|
+
color: var(--wr-color-text-faint);
|
|
101
|
+
touch-action: none;
|
|
102
|
+
transition: color var(--wr-transition-base);
|
|
103
|
+
|
|
104
|
+
&--vertical {
|
|
105
|
+
cursor: ns-resize;
|
|
106
|
+
}
|
|
107
|
+
&--horizontal {
|
|
108
|
+
cursor: ew-resize;
|
|
109
|
+
}
|
|
110
|
+
&--both {
|
|
111
|
+
cursor: nwse-resize;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.wr-icon__svg {
|
|
115
|
+
width: 0.875rem;
|
|
116
|
+
height: 0.875rem;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
&:hover {
|
|
120
|
+
color: var(--wr-color-medium);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
68
123
|
}
|
|
@@ -15,6 +15,7 @@ $base-colors: (
|
|
|
15
15
|
success: #00a400,
|
|
16
16
|
warning: #ffba00,
|
|
17
17
|
danger: #fa383e,
|
|
18
|
+
info: #3b82f6,
|
|
18
19
|
light: #cbd5e1,
|
|
19
20
|
medium: #8594a4,
|
|
20
21
|
dark: #0f172a,
|
|
@@ -65,6 +66,48 @@ $contrast-light: #ffffff !default;
|
|
|
65
66
|
// and turns the backdrop into a white wash.
|
|
66
67
|
--wr-color-backdrop-rgb: 0, 0, 0;
|
|
67
68
|
|
|
69
|
+
// Generic subtle hover-surface tint (icon buttons, list rows) — one place
|
|
70
|
+
// so the hover strength stays consistent everywhere.
|
|
71
|
+
--wr-color-hover: rgba(var(--wr-color-light-rgb), 0.4);
|
|
72
|
+
|
|
73
|
+
// Border / divider strengths — translucent so they read on any surface and
|
|
74
|
+
// auto-adapt in dark (via the flipping `light` channels). One place each.
|
|
75
|
+
--wr-color-border: rgba(var(--wr-color-light-rgb), 0.5);
|
|
76
|
+
--wr-color-border-subtle: rgba(var(--wr-color-light-rgb), 0.35);
|
|
77
|
+
--wr-color-border-strong: rgba(var(--wr-color-light-rgb), 0.6);
|
|
78
|
+
|
|
79
|
+
// Scrim behind modals / drawers — always black so the dim reads as "covered"
|
|
80
|
+
// regardless of theme.
|
|
81
|
+
--wr-color-overlay: rgba(var(--wr-color-backdrop-rgb), 0.45);
|
|
82
|
+
|
|
83
|
+
// De-emphasized text — `medium` dimmed to two canonical strengths so muted
|
|
84
|
+
// labels / captions / placeholders read consistently. One place each.
|
|
85
|
+
--wr-color-text-muted: rgba(var(--wr-color-medium-rgb), 0.85);
|
|
86
|
+
--wr-color-text-faint: rgba(var(--wr-color-medium-rgb), 0.6);
|
|
87
|
+
|
|
88
|
+
// Neutral gray ramp — a FIXED primitive scale (slate). Each step is a stable
|
|
89
|
+
// job (50 = subtlest surface tint … 950 = strongest ink) and, unlike the
|
|
90
|
+
// semantic neutrals, does NOT flip in dark mode. For theme-aware surface /
|
|
91
|
+
// text jobs reach for the role aliases below instead.
|
|
92
|
+
--wr-color-gray-50: #f8fafc;
|
|
93
|
+
--wr-color-gray-100: #f1f5f9;
|
|
94
|
+
--wr-color-gray-200: #e2e8f0;
|
|
95
|
+
--wr-color-gray-300: #cbd5e1;
|
|
96
|
+
--wr-color-gray-400: #94a3b8;
|
|
97
|
+
--wr-color-gray-500: #64748b;
|
|
98
|
+
--wr-color-gray-600: #475569;
|
|
99
|
+
--wr-color-gray-700: #334155;
|
|
100
|
+
--wr-color-gray-800: #1e293b;
|
|
101
|
+
--wr-color-gray-900: #0f172a;
|
|
102
|
+
--wr-color-gray-950: #020617;
|
|
103
|
+
|
|
104
|
+
// Semantic role aliases over the flipping neutrals — prefer these in new code
|
|
105
|
+
// for intent-free surface / text jobs. They resolve through `white` / `dark`
|
|
106
|
+
// / `medium`, so they flip with the theme automatically.
|
|
107
|
+
--wr-color-surface: var(--wr-color-white);
|
|
108
|
+
--wr-color-on-surface: var(--wr-color-dark);
|
|
109
|
+
--wr-color-on-surface-muted: var(--wr-color-medium);
|
|
110
|
+
|
|
68
111
|
@each $name, $base in $base-colors {
|
|
69
112
|
--wr-color-#{$name}: #{$base};
|
|
70
113
|
--wr-color-#{$name}-rgb: #{_rgb-channels($base)};
|
|
@@ -74,6 +117,20 @@ $contrast-light: #ffffff !default;
|
|
|
74
117
|
--wr-color-#{$name}-light: #{color.adjust($base, $lightness: 5%)};
|
|
75
118
|
--wr-color-#{$name}-lighter: #{color.adjust($base, $lightness: 10%)};
|
|
76
119
|
}
|
|
120
|
+
|
|
121
|
+
// Soft trio per intent (+ `medium` for neutral surfaces) — tokenizes the
|
|
122
|
+
// ad-hoc `rgba(var(--*-rgb), α)` fills components hand-rolled at ~8
|
|
123
|
+
// different alphas, so each alpha lives in ONE place. `-soft` is the
|
|
124
|
+
// canonical low-alpha fill, `-soft-border` the matching hairline, and
|
|
125
|
+
// `-soft-contrast` the readable same-hue text on it (deep in light,
|
|
126
|
+
// light in dark — follows `--wr-color-dark`). All theme-correct over any
|
|
127
|
+
// background via the -rgb channels.
|
|
128
|
+
@each $name in (primary, secondary, success, warning, danger, info, medium) {
|
|
129
|
+
--wr-color-#{$name}-soft: rgba(var(--wr-color-#{$name}-rgb), 0.12);
|
|
130
|
+
--wr-color-#{$name}-soft-border: rgba(var(--wr-color-#{$name}-rgb), 0.3);
|
|
131
|
+
--wr-color-#{$name}-soft-contrast: color-mix(in srgb, var(--wr-color-#{$name}) 62%, var(--wr-color-dark));
|
|
132
|
+
--wr-color-#{$name}-active: rgba(var(--wr-color-#{$name}-rgb), 0.2);
|
|
133
|
+
}
|
|
77
134
|
}
|
|
78
135
|
|
|
79
136
|
// Public SCSS list
|
package/theme/styles/_dark.scss
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@use 'sass:color';
|
|
2
|
+
|
|
1
3
|
// Dark theme overrides — opt-in via `[data-theme="dark"]` on <html>.
|
|
2
4
|
// Drive the toggle from `WrTheme` (provided automatically with
|
|
3
5
|
// `provideWrTheme(...)`).
|
|
@@ -5,6 +7,16 @@
|
|
|
5
7
|
// Only semantic tokens flip — palette hues stay so brand-coloured
|
|
6
8
|
// elements look the same regardless of theme.
|
|
7
9
|
|
|
10
|
+
// Intents re-tuned for the dark canvas. Looped (below) so each gets the
|
|
11
|
+
// FULL symmetric shade set — the hand blocks used to ship only base+rgb,
|
|
12
|
+
// leaving -light/-dark/-lighter/-darker baked from the LIGHT palette.
|
|
13
|
+
// (primary keeps its hand-tuned block; info stays its light values.)
|
|
14
|
+
$dark-intents: (
|
|
15
|
+
success: #34c759,
|
|
16
|
+
warning: #ffcc33,
|
|
17
|
+
danger: #ff5c5c,
|
|
18
|
+
);
|
|
19
|
+
|
|
8
20
|
[data-theme='dark'] {
|
|
9
21
|
// Canvas (was `--wr-color-white` in light mode)
|
|
10
22
|
// Deeper than slate-900 so an elevated surface in slate-800 reads
|
|
@@ -63,14 +75,16 @@
|
|
|
63
75
|
--wr-color-primary-lighter: #99b6ff;
|
|
64
76
|
--wr-color-primary-darker: #1f3a99;
|
|
65
77
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
78
|
+
// success / warning / danger — retuned bases now get the FULL symmetric
|
|
79
|
+
// shade set in dark too (generated, so no intent can silently drift).
|
|
80
|
+
@each $name, $base in $dark-intents {
|
|
81
|
+
--wr-color-#{$name}: #{$base};
|
|
82
|
+
--wr-color-#{$name}-rgb: #{color.channel($base, 'red')}, #{color.channel($base, 'green')}, #{color.channel($base, 'blue')};
|
|
83
|
+
--wr-color-#{$name}-light: #{color.adjust($base, $lightness: 5%)};
|
|
84
|
+
--wr-color-#{$name}-lighter: #{color.adjust($base, $lightness: 10%)};
|
|
85
|
+
--wr-color-#{$name}-dark: #{color.adjust($base, $lightness: -5%)};
|
|
86
|
+
--wr-color-#{$name}-darker: #{color.adjust($base, $lightness: -10%)};
|
|
87
|
+
}
|
|
74
88
|
|
|
75
89
|
// Elevation
|
|
76
90
|
// Black shadows at light-mode alphas vanish on the deep canvas; same
|
package/theme/styles/_focus.scss
CHANGED
|
@@ -10,6 +10,30 @@
|
|
|
10
10
|
--wr-border-radius-lg: 1rem;
|
|
11
11
|
--wr-border-radius-pill: 50rem;
|
|
12
12
|
|
|
13
|
+
// Control sizing
|
|
14
|
+
//
|
|
15
|
+
// The shared contract every form control reads (button, input, select, …)
|
|
16
|
+
// so they line up pixel-for-pixel at each size. Height is NOT fixed — it's
|
|
17
|
+
// the sum of `line-height + 2×padding-y + 2×border(1px)`, so padding-y can
|
|
18
|
+
// stay density-aware (`* var(--wr-density-y)`) and controls track density
|
|
19
|
+
// together. Keep the three parts in sync if you retune a size.
|
|
20
|
+
// sm → 22px · md → 30px · lg → 36px (radius 5 / 6 / 7)
|
|
21
|
+
--wr-control-padding-y-sm: 0.125rem; // 2px → 16 + 4 + 2 = 22
|
|
22
|
+
--wr-control-padding-y-md: 0.25rem; // 4px → 20 + 8 + 2 = 30
|
|
23
|
+
--wr-control-padding-y-lg: 0.3125rem; // 5px → 24 + 10 + 2 = 36
|
|
24
|
+
--wr-control-padding-x-sm: 0.5rem; // 8px
|
|
25
|
+
--wr-control-padding-x-md: 0.75rem; // 12px
|
|
26
|
+
--wr-control-padding-x-lg: 1rem; // 16px
|
|
27
|
+
--wr-control-line-height-sm: 1rem; // 16px
|
|
28
|
+
--wr-control-line-height-md: 1.25rem; // 20px
|
|
29
|
+
--wr-control-line-height-lg: 1.5rem; // 24px
|
|
30
|
+
--wr-control-font-size-sm: var(--wr-text-xs); // 12px
|
|
31
|
+
--wr-control-font-size-md: var(--wr-text-sm); // 14px
|
|
32
|
+
--wr-control-font-size-lg: var(--wr-text-base); // 16px
|
|
33
|
+
--wr-control-radius-sm: 5px;
|
|
34
|
+
--wr-control-radius-md: 6px;
|
|
35
|
+
--wr-control-radius-lg: 7px;
|
|
36
|
+
|
|
13
37
|
// Easing curves
|
|
14
38
|
--wr-ease-linear: linear;
|
|
15
39
|
--wr-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
@@ -101,19 +101,28 @@
|
|
|
101
101
|
|
|
102
102
|
// Horizontal: row layout with line through dots.
|
|
103
103
|
.wr-timeline--horizontal & {
|
|
104
|
+
// Equal-width columns so every dot sits at the same horizontal pitch
|
|
105
|
+
// and the connectors line up across items.
|
|
106
|
+
flex: 1 1 0;
|
|
104
107
|
flex-direction: column;
|
|
105
108
|
align-items: center;
|
|
106
109
|
text-align: center;
|
|
107
110
|
min-width: 8rem;
|
|
111
|
+
padding-bottom: 0;
|
|
108
112
|
|
|
113
|
+
// Connector runs from this dot's centre to the next dot's centre:
|
|
114
|
+
// half of this item + the 2rem gap + half of the next item. With equal
|
|
115
|
+
// widths that is `100% of the item + the gap`, anchored at the centre.
|
|
109
116
|
&::before {
|
|
110
117
|
content: '';
|
|
111
118
|
position: absolute;
|
|
112
|
-
|
|
119
|
+
// Dot centre: margin-top 0.125rem + half of the 0.75rem dot = 0.5rem.
|
|
120
|
+
top: 0.5rem;
|
|
113
121
|
left: 50%;
|
|
114
|
-
|
|
122
|
+
width: calc(100% + 2rem);
|
|
115
123
|
height: 1.5px;
|
|
116
124
|
background: var(--wr-color-light);
|
|
125
|
+
z-index: 0;
|
|
117
126
|
}
|
|
118
127
|
|
|
119
128
|
&:last-child::before {
|
package/toast/styles/_index.scss
CHANGED
|
@@ -33,6 +33,14 @@ $toast-colors: (
|
|
|
33
33
|
pointer-events: auto;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
// While expanded the toasts spread into a column with gaps. Those gaps are
|
|
37
|
+
// dead space under `pointer-events: none`, so the cursor crossing them fires
|
|
38
|
+
// mouseleave/mouseenter and toggles `expanded` (jitter). Make the whole host
|
|
39
|
+
// hit-testable while expanded so the inter-toast gaps stay "inside" it.
|
|
40
|
+
&--expanded {
|
|
41
|
+
pointer-events: auto;
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
// Sonner-style stack
|
|
37
45
|
// Collapsed: every toast except the front one collapses behind it with a
|
|
38
46
|
// scale-down + tiny offset. Hovering the host expands them into the
|
|
@@ -130,6 +138,8 @@ $toast-colors: (
|
|
|
130
138
|
padding: 0.75rem 0.875rem;
|
|
131
139
|
background: var(--wr-toast-bg);
|
|
132
140
|
border: 1px solid var(--wr-toast-border);
|
|
141
|
+
// Capture horizontal swipe-to-dismiss; let vertical scroll pass through.
|
|
142
|
+
touch-action: pan-y;
|
|
133
143
|
border-left: 3px solid var(--wr-toast-accent);
|
|
134
144
|
@include theme.smooth-br(var(--wr-border-radius-base));
|
|
135
145
|
box-shadow: var(--wr-shadow-overlay);
|
|
@@ -145,7 +155,7 @@ $toast-colors: (
|
|
|
145
155
|
&__title {
|
|
146
156
|
margin: 0 0 0.125rem;
|
|
147
157
|
color: var(--wr-toast-title);
|
|
148
|
-
font-size:
|
|
158
|
+
font-size: var(--wr-text-sm);
|
|
149
159
|
font-weight: 600;
|
|
150
160
|
line-height: 1.25rem;
|
|
151
161
|
}
|
|
@@ -153,7 +163,7 @@ $toast-colors: (
|
|
|
153
163
|
&__message {
|
|
154
164
|
margin: 0;
|
|
155
165
|
color: var(--wr-toast-message);
|
|
156
|
-
font-size:
|
|
166
|
+
font-size: var(--wr-text-sm);
|
|
157
167
|
line-height: 1.125rem;
|
|
158
168
|
overflow-wrap: break-word;
|
|
159
169
|
}
|
|
@@ -181,7 +191,7 @@ $toast-colors: (
|
|
|
181
191
|
|
|
182
192
|
&:hover {
|
|
183
193
|
color: var(--wr-color-dark);
|
|
184
|
-
background:
|
|
194
|
+
background: var(--wr-color-hover);
|
|
185
195
|
}
|
|
186
196
|
}
|
|
187
197
|
|
|
@@ -241,12 +251,12 @@ $toast-colors: (
|
|
|
241
251
|
padding: 0.375rem 0.75rem;
|
|
242
252
|
color: var(--wr-color-medium);
|
|
243
253
|
font-family: var(--wr-font-family-base);
|
|
244
|
-
font-size:
|
|
254
|
+
font-size: var(--wr-text-xs);
|
|
245
255
|
font-weight: 500;
|
|
246
256
|
line-height: 1rem;
|
|
247
257
|
text-align: center;
|
|
248
258
|
cursor: pointer;
|
|
249
|
-
box-shadow:
|
|
259
|
+
box-shadow: var(--wr-shadow-xs);
|
|
250
260
|
transition:
|
|
251
261
|
color var(--wr-transition-base),
|
|
252
262
|
background var(--wr-transition-base),
|
|
@@ -16,10 +16,20 @@
|
|
|
16
16
|
background: var(--wr-color-white);
|
|
17
17
|
border: 1px solid var(--wr-color-light);
|
|
18
18
|
@include theme.smooth-br(var(--wr-border-radius-base));
|
|
19
|
-
box-shadow:
|
|
19
|
+
box-shadow: var(--wr-shadow-xs);
|
|
20
20
|
font-family: var(--wr-font-family-base);
|
|
21
21
|
color: var(--wr-color-dark);
|
|
22
22
|
|
|
23
|
+
// Opt-in (`responsive`): query the toolbar's own width so the zones stack
|
|
24
|
+
// when it's too narrow for a row. Already full-width, so containment is safe.
|
|
25
|
+
// `flex-wrap` lives here (not in the `@container` below) because a container
|
|
26
|
+
// query can't style the query container itself — only its descendants; wrap
|
|
27
|
+
// only kicks in once the zones go full-width at the breakpoint.
|
|
28
|
+
&--responsive {
|
|
29
|
+
container: wr-toolbar / inline-size;
|
|
30
|
+
flex-wrap: wrap;
|
|
31
|
+
}
|
|
32
|
+
|
|
23
33
|
&__zone {
|
|
24
34
|
display: flex;
|
|
25
35
|
align-items: center;
|
|
@@ -63,3 +73,22 @@
|
|
|
63
73
|
}
|
|
64
74
|
}
|
|
65
75
|
}
|
|
76
|
+
|
|
77
|
+
// Responsive toolbars stack their zones when the bar is too narrow for a row.
|
|
78
|
+
@container wr-toolbar (max-width: 32rem) {
|
|
79
|
+
.wr-toolbar--responsive .wr-toolbar__zone {
|
|
80
|
+
flex: 1 1 100%;
|
|
81
|
+
justify-content: flex-start;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.wr-toolbar--responsive .wr-toolbar__zone--end {
|
|
85
|
+
margin-left: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// The vertical hairline dividers are a horizontal-row affordance — drop them
|
|
89
|
+
// once the zones stack.
|
|
90
|
+
.wr-toolbar--responsive .wr-toolbar__zone--start + .wr-toolbar__zone--center::before,
|
|
91
|
+
.wr-toolbar--responsive .wr-toolbar__zone--center + .wr-toolbar__zone--end::before {
|
|
92
|
+
display: none;
|
|
93
|
+
}
|
|
94
|
+
}
|