ngwr 14.3.0 → 14.4.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 +1 -1
- package/avatar/styles/_index.scss +4 -2
- package/badge/styles/_index.scss +4 -1
- package/badge/styles/_tag.scss +3 -0
- package/cascader/styles/_rules.scss +3 -0
- package/command-palette/styles/_index.scss +23 -0
- package/context-menu/styles/_index.scss +13 -1
- package/fesm2022/ngwr-action-sheet.mjs +3 -3
- package/fesm2022/ngwr-affix.mjs +17 -4
- package/fesm2022/ngwr-affix.mjs.map +1 -1
- package/fesm2022/ngwr-alert.mjs +4 -4
- 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-testing.mjs +18 -2
- package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
- 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 +6 -6
- package/fesm2022/ngwr-burger.mjs +3 -3
- package/fesm2022/ngwr-button.mjs +6 -6
- package/fesm2022/ngwr-calendar-heatmap-testing.mjs +12 -9
- package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
- package/fesm2022/ngwr-calendar-heatmap.mjs +35 -7
- package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +32 -4
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +9 -9
- package/fesm2022/ngwr-carousel.mjs +6 -6
- package/fesm2022/ngwr-cascader-testing.mjs +87 -17
- package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
- package/fesm2022/ngwr-cascader.mjs +63 -4
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox-testing.mjs +13 -2
- package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +42 -7
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +3 -3
- package/fesm2022/ngwr-click-spark.mjs +3 -3
- package/fesm2022/ngwr-clipboard.mjs +3 -3
- package/fesm2022/ngwr-collapse.mjs +9 -9
- package/fesm2022/ngwr-color-picker.mjs +6 -6
- package/fesm2022/ngwr-command-palette.mjs +16 -3
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-compare.mjs +3 -3
- package/fesm2022/ngwr-confetti.mjs +3 -3
- package/fesm2022/ngwr-context-menu.mjs +12 -12
- package/fesm2022/ngwr-cookie.mjs +3 -3
- package/fesm2022/ngwr-counter.mjs +6 -6
- package/fesm2022/ngwr-date-adapters-fns.mjs +3 -3
- package/fesm2022/ngwr-date-adapters-luxon.mjs +3 -3
- package/fesm2022/ngwr-date-picker.mjs +81 -26
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-date.mjs +3 -3
- package/fesm2022/ngwr-decrypt-text.mjs +3 -3
- package/fesm2022/ngwr-density.mjs +6 -6
- package/fesm2022/ngwr-descriptions.mjs +6 -6
- package/fesm2022/ngwr-dialog.mjs +15 -15
- package/fesm2022/ngwr-directives.mjs +12 -12
- package/fesm2022/ngwr-divider.mjs +3 -3
- package/fesm2022/ngwr-donut-chart-testing.mjs +18 -2
- package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-donut-chart.mjs +4 -4
- package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +6 -6
- package/fesm2022/ngwr-drawer.mjs +18 -18
- package/fesm2022/ngwr-dropdown.mjs +32 -14
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-empty.mjs +3 -3
- package/fesm2022/ngwr-event-calendar.mjs +6 -6
- package/fesm2022/ngwr-falling-text.mjs +3 -3
- package/fesm2022/ngwr-file-upload.mjs +18 -5
- package/fesm2022/ngwr-file-upload.mjs.map +1 -1
- package/fesm2022/ngwr-form.mjs +66 -14
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +3 -3
- package/fesm2022/ngwr-gauge-testing.mjs +16 -2
- package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +3 -3
- package/fesm2022/ngwr-glitch-text.mjs +3 -3
- package/fesm2022/ngwr-gradient-text.mjs +3 -3
- package/fesm2022/ngwr-hotkey.mjs +6 -6
- package/fesm2022/ngwr-i18n-ar.mjs +2 -0
- package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-cs.mjs +2 -0
- package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-de.mjs +2 -0
- package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +14 -2
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-es.mjs +2 -0
- package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-fr.mjs +2 -0
- package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-he.mjs +2 -0
- package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-hi.mjs +2 -0
- package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-id.mjs +2 -0
- package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-it.mjs +2 -0
- package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ja.mjs +2 -0
- package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ko.mjs +2 -0
- package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-nl.mjs +2 -0
- package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pl.mjs +2 -0
- package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-pt.mjs +2 -0
- package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +2 -0
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-sv.mjs +2 -0
- package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-tr.mjs +2 -0
- package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-uk.mjs +2 -0
- package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-vi.mjs +2 -0
- package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh-TW.mjs +2 -0
- package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-zh.mjs +2 -0
- package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +9 -9
- package/fesm2022/ngwr-icon.mjs +6 -6
- package/fesm2022/ngwr-image-cropper.mjs +3 -3
- package/fesm2022/ngwr-input-number.mjs +15 -6
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input-otp.mjs +38 -6
- package/fesm2022/ngwr-input-otp.mjs.map +1 -1
- package/fesm2022/ngwr-input.mjs +15 -15
- package/fesm2022/ngwr-keyboard.mjs +3 -3
- package/fesm2022/ngwr-knob-testing.mjs +11 -3
- package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
- package/fesm2022/ngwr-knob.mjs +19 -4
- package/fesm2022/ngwr-knob.mjs.map +1 -1
- package/fesm2022/ngwr-layout.mjs +15 -15
- package/fesm2022/ngwr-lightbox.mjs +3 -3
- package/fesm2022/ngwr-line-chart-testing.mjs +18 -2
- package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +22 -4
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +6 -6
- package/fesm2022/ngwr-loading-bar.mjs +6 -6
- package/fesm2022/ngwr-markdown.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 +6 -6
- package/fesm2022/ngwr-page-header.mjs +3 -3
- package/fesm2022/ngwr-pagination.mjs +33 -6
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-pipes.mjs +21 -21
- package/fesm2022/ngwr-platform.mjs +9 -9
- package/fesm2022/ngwr-popconfirm.mjs +6 -6
- package/fesm2022/ngwr-popover.mjs +29 -11
- package/fesm2022/ngwr-popover.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +3 -3
- package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
- package/fesm2022/ngwr-qr.mjs +3 -3
- package/fesm2022/ngwr-radio.mjs +6 -6
- package/fesm2022/ngwr-rating-testing.mjs +12 -3
- package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
- package/fesm2022/ngwr-rating.mjs +19 -4
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-result.mjs +13 -13
- package/fesm2022/ngwr-result.mjs.map +1 -1
- package/fesm2022/ngwr-rotating-text.mjs +3 -3
- package/fesm2022/ngwr-schema-form.mjs +40 -4
- package/fesm2022/ngwr-schema-form.mjs.map +1 -1
- package/fesm2022/ngwr-scroll.mjs +3 -3
- package/fesm2022/ngwr-segmented.mjs +3 -3
- package/fesm2022/ngwr-select.mjs +9 -9
- 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 +18 -5
- package/fesm2022/ngwr-slider.mjs.map +1 -1
- 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 +6 -6
- package/fesm2022/ngwr-squircle.mjs +28 -9
- package/fesm2022/ngwr-squircle.mjs.map +1 -1
- package/fesm2022/ngwr-star-border.mjs +3 -3
- package/fesm2022/ngwr-statistic.mjs +20 -13
- 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 +3 -3
- package/fesm2022/ngwr-table.mjs +18 -18
- package/fesm2022/ngwr-tabs-router.mjs +3 -3
- package/fesm2022/ngwr-tabs.mjs +6 -6
- package/fesm2022/ngwr-textarea.mjs +3 -3
- 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 +10 -10
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- package/fesm2022/ngwr-tour.mjs +6 -6
- package/fesm2022/ngwr-transfer.mjs +88 -11
- package/fesm2022/ngwr-transfer.mjs.map +1 -1
- package/fesm2022/ngwr-tree-testing.mjs +24 -0
- package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
- package/fesm2022/ngwr-tree.mjs +72 -7
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter.mjs +3 -3
- package/fesm2022/ngwr-typography.mjs +3 -3
- 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/form/styles/_index.scss +63 -0
- package/i18n/ar.json +4 -2
- package/i18n/cs.json +4 -2
- package/i18n/de.json +4 -2
- package/i18n/en.json +6 -4
- package/i18n/es.json +4 -2
- package/i18n/fr.json +4 -2
- package/i18n/he.json +4 -2
- package/i18n/hi.json +4 -2
- package/i18n/id.json +4 -2
- package/i18n/it.json +4 -2
- package/i18n/ja.json +4 -2
- package/i18n/ko.json +4 -2
- package/i18n/nl.json +4 -2
- package/i18n/pl.json +4 -2
- package/i18n/pt.json +4 -2
- package/i18n/ru.json +4 -2
- package/i18n/sv.json +4 -2
- package/i18n/tr.json +4 -2
- package/i18n/uk.json +4 -2
- package/i18n/vi.json +4 -2
- package/i18n/zh-TW.json +4 -2
- package/i18n/zh.json +4 -2
- package/input-otp/styles/_index.scss +5 -1
- package/line-chart/styles/_index.scss +5 -3
- package/llms-full.txt +1 -1
- package/markdown/styles/_index.scss +4 -1
- package/mention/styles/_index.scss +22 -1
- package/package.json +1 -1
- package/radio/styles/_index.scss +3 -0
- package/result/styles/_index.scss +12 -0
- package/schematics/migrations/v14/index.js +6 -3
- package/schematics/migrations.json +1 -1
- package/schematics/ng-add/index.js +34 -5
- package/segmented/styles/_index.scss +4 -1
- package/select/styles/_index.scss +20 -1
- package/statistic/styles/_index.scss +4 -0
- package/stepper/styles/_index.scss +36 -0
- package/switch/styles/_index.scss +3 -0
- package/table/styles/_index.scss +12 -0
- package/tabs/styles/_index.scss +4 -1
- package/textarea/styles/_index.scss +6 -1
- package/theme/styles/_colors.scss +11 -0
- package/theme/styles/_contrast.scss +136 -0
- package/theme/styles/_index.scss +1 -0
- package/theme/styles/_mixins.scss +15 -8
- package/timeline/styles/_index.scss +28 -1
- package/toast/styles/_index.scss +11 -0
- package/tree/styles/_index.scss +27 -1
- package/types/ngwr-badge.d.ts +1 -1
- package/types/ngwr-bar-chart-testing.d.ts +11 -1
- package/types/ngwr-button.d.ts +1 -1
- package/types/ngwr-calendar-heatmap-testing.d.ts +10 -5
- package/types/ngwr-calendar-heatmap.d.ts +22 -0
- package/types/ngwr-calendar.d.ts +21 -0
- package/types/ngwr-cascader-testing.d.ts +74 -17
- package/types/ngwr-cascader.d.ts +28 -0
- package/types/ngwr-checkbox-testing.d.ts +12 -1
- package/types/ngwr-checkbox.d.ts +10 -0
- package/types/ngwr-clipboard.d.ts +1 -1
- package/types/ngwr-confetti.d.ts +1 -1
- package/types/ngwr-cookie.d.ts +1 -1
- package/types/ngwr-date-adapters-fns.d.ts +1 -1
- package/types/ngwr-date-adapters-luxon.d.ts +1 -1
- package/types/ngwr-date.d.ts +9 -3
- package/types/ngwr-density.d.ts +1 -1
- package/types/ngwr-dialog.d.ts +1 -1
- package/types/ngwr-donut-chart-testing.d.ts +11 -1
- package/types/ngwr-drawer.d.ts +1 -1
- package/types/ngwr-dropdown.d.ts +16 -0
- package/types/ngwr-file-upload.d.ts +11 -0
- package/types/ngwr-form.d.ts +25 -0
- package/types/ngwr-gauge-testing.d.ts +9 -1
- package/types/ngwr-hotkey.d.ts +1 -1
- package/types/ngwr-i18n.d.ts +1 -1
- package/types/ngwr-input-number.d.ts +12 -2
- package/types/ngwr-input-otp.d.ts +12 -0
- package/types/ngwr-knob-testing.d.ts +11 -3
- package/types/ngwr-knob.d.ts +13 -0
- package/types/ngwr-line-chart-testing.d.ts +11 -1
- package/types/ngwr-line-chart.d.ts +18 -0
- package/types/ngwr-loading-bar.d.ts +1 -1
- package/types/ngwr-markdown.d.ts +1 -1
- package/types/ngwr-media.d.ts +1 -1
- package/types/ngwr-meta.d.ts +1 -1
- package/types/ngwr-overlay.d.ts +2 -2
- package/types/ngwr-pagination.d.ts +16 -0
- package/types/ngwr-platform.d.ts +3 -3
- package/types/ngwr-popover.d.ts +16 -0
- package/types/ngwr-rating-testing.d.ts +12 -3
- package/types/ngwr-rating.d.ts +13 -0
- package/types/ngwr-scroll.d.ts +1 -1
- package/types/ngwr-squircle.d.ts +22 -3
- package/types/ngwr-statistic.d.ts +0 -1
- package/types/ngwr-storage.d.ts +1 -1
- package/types/ngwr-theme.d.ts +1 -1
- package/types/ngwr-toast.d.ts +1 -1
- package/types/ngwr-tour.d.ts +1 -1
- package/types/ngwr-transfer.d.ts +52 -0
- package/types/ngwr-tree-testing.d.ts +20 -0
- package/types/ngwr-tree.d.ts +41 -0
- package/types/ngwr-version.d.ts +1 -1
- package/types/ngwr-window.d.ts +1 -1
- package/typography/styles/_index.scss +26 -4
package/i18n/vi.json
CHANGED
|
@@ -85,7 +85,8 @@
|
|
|
85
85
|
"selectAll": "Chọn tất cả",
|
|
86
86
|
"toTarget": "Chuyển sang danh sách đã chọn",
|
|
87
87
|
"toSource": "Chuyển về danh sách có sẵn",
|
|
88
|
-
"count": "{{checked}} / {{total}}"
|
|
88
|
+
"count": "{{checked}} / {{total}}",
|
|
89
|
+
"selectAllAria": "{{pane}} — {{action}}"
|
|
89
90
|
},
|
|
90
91
|
"form": {
|
|
91
92
|
"optional": "tùy chọn"
|
|
@@ -235,7 +236,8 @@
|
|
|
235
236
|
"channelAlpha": "A%"
|
|
236
237
|
},
|
|
237
238
|
"calendarHeatmap": {
|
|
238
|
-
"label": "Bản đồ nhiệt theo lịch"
|
|
239
|
+
"label": "Bản đồ nhiệt theo lịch",
|
|
240
|
+
"cell": "{{date}}: {{count}}"
|
|
239
241
|
},
|
|
240
242
|
"lineChart": {
|
|
241
243
|
"label": "Biểu đồ đường",
|
package/i18n/zh-TW.json
CHANGED
|
@@ -85,7 +85,8 @@
|
|
|
85
85
|
"selectAll": "全選",
|
|
86
86
|
"toTarget": "移至已選項目",
|
|
87
87
|
"toSource": "移回可選項目",
|
|
88
|
-
"count": "{{checked}} / {{total}}"
|
|
88
|
+
"count": "{{checked}} / {{total}}",
|
|
89
|
+
"selectAllAria": "{{pane}} — {{action}}"
|
|
89
90
|
},
|
|
90
91
|
"form": {
|
|
91
92
|
"optional": "選填"
|
|
@@ -235,7 +236,8 @@
|
|
|
235
236
|
"channelAlpha": "A%"
|
|
236
237
|
},
|
|
237
238
|
"calendarHeatmap": {
|
|
238
|
-
"label": "行事曆熱圖"
|
|
239
|
+
"label": "行事曆熱圖",
|
|
240
|
+
"cell": "{{date}}: {{count}}"
|
|
239
241
|
},
|
|
240
242
|
"lineChart": {
|
|
241
243
|
"label": "折線圖",
|
package/i18n/zh.json
CHANGED
|
@@ -85,7 +85,8 @@
|
|
|
85
85
|
"selectAll": "全选",
|
|
86
86
|
"toTarget": "移至已选",
|
|
87
87
|
"toSource": "移回待选",
|
|
88
|
-
"count": "{{checked}} / {{total}}"
|
|
88
|
+
"count": "{{checked}} / {{total}}",
|
|
89
|
+
"selectAllAria": "{{pane}} — {{action}}"
|
|
89
90
|
},
|
|
90
91
|
"form": {
|
|
91
92
|
"optional": "选填"
|
|
@@ -235,7 +236,8 @@
|
|
|
235
236
|
"channelAlpha": "A%"
|
|
236
237
|
},
|
|
237
238
|
"calendarHeatmap": {
|
|
238
|
-
"label": "日历热力图"
|
|
239
|
+
"label": "日历热力图",
|
|
240
|
+
"cell": "{{date}}: {{count}}"
|
|
239
241
|
},
|
|
240
242
|
"lineChart": {
|
|
241
243
|
"label": "折线图",
|
|
@@ -41,7 +41,11 @@
|
|
|
41
41
|
box-shadow var(--wr-transition-base);
|
|
42
42
|
|
|
43
43
|
&::placeholder {
|
|
44
|
-
|
|
44
|
+
// Placeholder text is TEXT — 1.4.3 asks 4.5:1, and the faint tier gave it
|
|
45
|
+
// 2.43:1 in light. `--wr-color-text-muted` is the softest tier that still
|
|
46
|
+
// clears the bar, at 4.81:1, which is exactly what `_colors.scss` says it
|
|
47
|
+
// was calibrated for.
|
|
48
|
+
color: var(--wr-color-text-muted);
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
&:focus {
|
|
@@ -21,10 +21,12 @@
|
|
|
21
21
|
font-size: var(--wr-text-xs);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
// A short line rather than a dot, because it now carries the series' dash
|
|
25
|
+
// pattern and a 10px circle cannot show one.
|
|
24
26
|
&__swatch {
|
|
25
|
-
width:
|
|
26
|
-
height: 0.
|
|
27
|
-
|
|
27
|
+
width: 1rem;
|
|
28
|
+
height: 0.125rem;
|
|
29
|
+
overflow: visible;
|
|
28
30
|
flex: 0 0 auto;
|
|
29
31
|
}
|
|
30
32
|
|
package/llms-full.txt
CHANGED
|
@@ -940,7 +940,7 @@
|
|
|
940
940
|
- import: `import { WrSquircle } from 'ngwr/squircle'`
|
|
941
941
|
- selector: `wr-squircle`, `[wrSquircle]`
|
|
942
942
|
- exports: squirclePath, WrSquircleCorners, WrSquircle, WrSquircleCornerMask, WrSquircleHost
|
|
943
|
-
- Figma-style smooth-corner rectangle
|
|
943
|
+
- Figma-style smooth-corner rectangle, clipped with a superellipse path and re-computed on resize. **Deprecated** — the native `corner-shape` route, which 31 entry points already ride through the `smooth-br` SCSS mixin, is the one to use. This entry point exists because that property was Chromium-only, and it will be removed in the major after Safari stable ships it. Until then it is still the only deterministic squircle, so it is deprecated rather than gone.
|
|
944
944
|
|
|
945
945
|
## ngwr/star-border
|
|
946
946
|
- import: `import { WrStarBorder } from 'ngwr/star-border'`
|
|
@@ -190,7 +190,10 @@
|
|
|
190
190
|
border-radius: var(--wr-border-radius-sm);
|
|
191
191
|
background: var(--wr-color-surface);
|
|
192
192
|
|
|
193
|
-
|
|
193
|
+
// color-ok: the nested `&::after` draws a tick out of two borders, and the
|
|
194
|
+
// unchecked task has no pseudo-element at all — the glyph appears, the tint
|
|
195
|
+
// only backs it.
|
|
196
|
+
&--checked {
|
|
194
197
|
border-color: var(--wr-color-primary);
|
|
195
198
|
background: var(--wr-color-primary);
|
|
196
199
|
|
|
@@ -50,11 +50,32 @@
|
|
|
50
50
|
user-select: none;
|
|
51
51
|
line-height: 1.25rem;
|
|
52
52
|
transition: background var(--wr-transition-base);
|
|
53
|
+
// Positioning context for the `--active` cursor bar below. Nothing else in
|
|
54
|
+
// an option is out of flow, so this establishes one for that alone.
|
|
55
|
+
position: relative;
|
|
53
56
|
|
|
54
|
-
&--active,
|
|
55
57
|
&:hover {
|
|
56
58
|
background: rgba(var(--wr-color-primary-rgb), 0.08);
|
|
57
59
|
}
|
|
60
|
+
|
|
61
|
+
// The keyboard cursor is NOT the hover tint — the two were one selector,
|
|
62
|
+
// so the row the arrows had reached and the row a mouse happened to rest
|
|
63
|
+
// on were the same pixel. The 8% tint alone measures 1.11:1 against the
|
|
64
|
+
// surface in light and 1.08:1 in dark, which is the same grey to a reader
|
|
65
|
+
// who cannot separate hue; the bar is what actually says "here".
|
|
66
|
+
&--active {
|
|
67
|
+
background: rgba(var(--wr-color-primary-rgb), 0.08);
|
|
68
|
+
|
|
69
|
+
&::before {
|
|
70
|
+
content: '';
|
|
71
|
+
position: absolute;
|
|
72
|
+
inset-block: 0;
|
|
73
|
+
inset-inline-start: 0;
|
|
74
|
+
width: 2px;
|
|
75
|
+
border-radius: inherit;
|
|
76
|
+
background: var(--wr-color-primary);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
58
79
|
}
|
|
59
80
|
|
|
60
81
|
// Nothing renders this any more — the panel's empty branch was unreachable
|
package/package.json
CHANGED
package/radio/styles/_index.scss
CHANGED
|
@@ -94,6 +94,9 @@
|
|
|
94
94
|
display: none;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
// color-ok: the cue is the glyph arriving — `.wr-radio__icon` goes from
|
|
98
|
+
// `opacity: 0` to `1` under `--checked` (line 109). This fill only backs it,
|
|
99
|
+
// since `--has-icon` turns the default dot off.
|
|
97
100
|
&--has-icon.wr-radio--checked {
|
|
98
101
|
--wr-radio-bg: var(--wr-color-primary);
|
|
99
102
|
}
|
|
@@ -47,18 +47,30 @@
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
// color-ok: each status draws its OWN glyph in result.html — a check, a
|
|
51
|
+
// triangle, a cross, an `i` — so these only ink a silhouette that already
|
|
52
|
+
// differs. The tint is reinforcement, not the signal.
|
|
50
53
|
&--success &__icon {
|
|
51
54
|
color: var(--wr-color-success-ink);
|
|
52
55
|
}
|
|
53
56
|
|
|
57
|
+
// color-ok: each status draws its OWN glyph in result.html — a check, a
|
|
58
|
+
// triangle, a cross, an `i` — so these only ink a silhouette that already
|
|
59
|
+
// differs. The tint is reinforcement, not the signal.
|
|
54
60
|
&--warning &__icon {
|
|
55
61
|
color: var(--wr-color-warning-ink);
|
|
56
62
|
}
|
|
57
63
|
|
|
64
|
+
// color-ok: each status draws its OWN glyph in result.html — a check, a
|
|
65
|
+
// triangle, a cross, an `i` — so these only ink a silhouette that already
|
|
66
|
+
// differs. The tint is reinforcement, not the signal.
|
|
58
67
|
&--error &__icon {
|
|
59
68
|
color: var(--wr-color-danger-ink);
|
|
60
69
|
}
|
|
61
70
|
|
|
71
|
+
// color-ok: each status draws its OWN glyph in result.html — a check, a
|
|
72
|
+
// triangle, a cross, an `i` — so these only ink a silhouette that already
|
|
73
|
+
// differs. The tint is reinforcement, not the signal.
|
|
62
74
|
&--info &__icon {
|
|
63
75
|
// `-ink`, like the three variants above. This one alone carried the bare
|
|
64
76
|
// intent, which is what made the set inconsistent rather than deliberate.
|
|
@@ -9,11 +9,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
/**
|
|
10
10
|
* v13 to v14 migration. Two halves, and the split is deliberate.
|
|
11
11
|
*
|
|
12
|
-
* **It REWRITES the
|
|
12
|
+
* **It REWRITES the six renames**: on `<wr-alert>` from `closeable` to
|
|
13
13
|
* `closable`, on `<wr-table>` from `[totalItems]` to `[total]`, on
|
|
14
14
|
* `<wr-pagination>` from `[(currentPage)]` to `[(page)]`, from
|
|
15
|
-
* `isDisabledWhenLoading` to `disabledWhenLoading`,
|
|
16
|
-
* `chromeSize` scale from `'compact' | 'normal'` to `'sm' | 'md'
|
|
15
|
+
* `isDisabledWhenLoading` to `disabledWhenLoading`, the window
|
|
16
|
+
* `chromeSize` scale from `'compact' | 'normal'` to `'sm' | 'md'`, and on
|
|
17
|
+
* `[wrInput]` from `wrSize` to `size` — the last one being the rename v13's own
|
|
18
|
+
* commit subject announced and never made, so leaving it out of the count here
|
|
19
|
+
* was the same omission running a second time. A rename is
|
|
17
20
|
* exactly what a codemod does well: the new name means what the old one meant,
|
|
18
21
|
* on the same element, and nothing about the app has to be understood to move it.
|
|
19
22
|
*
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"migration-v14": {
|
|
30
30
|
"version": "14.0.0",
|
|
31
|
-
"description": "Rewrites
|
|
31
|
+
"description": "Rewrites six renames: on <wr-alert> from closeable to closable; on <wr-table> from totalItems to total; on <wr-pagination> from currentPage to page (and from currentPageChange to pageChange); from isDisabledWhenLoading to disabledWhenLoading; the window chromeSize scale from compact/normal to sm/md, including the .wr-window--chrome-compact class; and on [wrInput] from wrSize to size. Reports what a codemod cannot decide: router integration is now opt-in (<wr-loading-bar> needs provideWrLoadingBarRouter() from ngwr/loading-bar/router, <wr-tab routerLink> needs wrTabsRouting on the strip plus WrTabsRouting in imports), the locale defaults now follow LOCALE_ID, and <wr-pagination ofLabel> is gone. Touches .ts, .html, .scss and .css files.",
|
|
32
32
|
"factory": "./migrations/v14/index#default"
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -57,7 +57,26 @@ const THEME_PROVIDER = {
|
|
|
57
57
|
system: "provideWrTheme({ defaultMode: 'auto' })",
|
|
58
58
|
};
|
|
59
59
|
const STYLES_DIRECTIVE_SCSS = "@use 'ngwr';";
|
|
60
|
-
|
|
60
|
+
/**
|
|
61
|
+
* What a project whose global stylesheet is plain CSS is told, instead of a
|
|
62
|
+
* line that cannot work.
|
|
63
|
+
*
|
|
64
|
+
* ngwr ships Sass SOURCES and no compiled CSS: every `exports` entry in
|
|
65
|
+
* `projects/lib/package.json` carries a `sass` condition and nothing else that
|
|
66
|
+
* a stylesheet can reach. So `@import 'ngwr'` from a `.css` file resolves
|
|
67
|
+
* through `default` to `fesm2022/ngwr.mjs` and esbuild — the bundler Angular 22
|
|
68
|
+
* uses — stops the build with `Cannot import ".../ngwr.mjs" into a CSS file`.
|
|
69
|
+
*
|
|
70
|
+
* That mattered more than it sounds: `ng new` takes CSS unless you ask for
|
|
71
|
+
* something else, so the default path was `ng add ngwr` followed by a build
|
|
72
|
+
* that failed, naming a `.mjs` nobody had typed. Writing nothing and saying why
|
|
73
|
+
* is the same choice the three branches below already make when they cannot
|
|
74
|
+
* find a stylesheet to edit.
|
|
75
|
+
*/
|
|
76
|
+
const CSS_PROJECT_ADVICE = 'ngwr ships Sass sources and no compiled CSS, so it cannot be reached from a plain CSS file. ' +
|
|
77
|
+
'Rename the global stylesheet to .scss (and update its path in angular.json), then add ' +
|
|
78
|
+
`\`${STYLES_DIRECTIVE_SCSS}\` to it — or keep CSS and pull in only what you use with ` +
|
|
79
|
+
'`ng g ngwr:component-style <name>`.';
|
|
61
80
|
function ngAdd(options) {
|
|
62
81
|
return (tree, context) => {
|
|
63
82
|
return (0, schematics_1.chain)([installPeerDeps(options, context), registerStyles(options), printNextSteps(options, context)])(tree, context);
|
|
@@ -97,14 +116,19 @@ function registerStyles(options) {
|
|
|
97
116
|
}
|
|
98
117
|
return async (tree, context) => {
|
|
99
118
|
const workspace = await (0, workspace_1.getWorkspace)(tree);
|
|
100
|
-
|
|
119
|
+
// Narrowed rather than read off the index signature directly: dotted access
|
|
120
|
+
// is what eslint asks for and what the lib's `noPropertyAccessFromIndexSignature`
|
|
121
|
+
// refuses, and this file has a spec now, so it is in that program.
|
|
122
|
+
const extensions = workspace.extensions;
|
|
123
|
+
const projectName = options.project ?? extensions.defaultProject;
|
|
101
124
|
const project = (projectName && workspace.projects.get(projectName)) ?? workspace.projects.values().next().value;
|
|
102
125
|
if (!project) {
|
|
103
126
|
context.logger.warn('ngwr: no Angular project found — skipping styles wiring.');
|
|
104
127
|
return tree;
|
|
105
128
|
}
|
|
106
129
|
const build = project.targets.get('build');
|
|
107
|
-
const
|
|
130
|
+
const buildOptions = (build?.options ?? {});
|
|
131
|
+
const styles = buildOptions.styles ?? [];
|
|
108
132
|
const stylesPath = typeof styles[0] === 'string' ? styles[0] : styles[0]?.input;
|
|
109
133
|
if (!stylesPath) {
|
|
110
134
|
context.logger.warn(`ngwr: no global stylesheet found for project "${project.root || '<root>'}" — add \`${STYLES_DIRECTIVE_SCSS}\` manually.`);
|
|
@@ -114,8 +138,13 @@ function registerStyles(options) {
|
|
|
114
138
|
context.logger.warn(`ngwr: styles file ${stylesPath} not found — add \`${STYLES_DIRECTIVE_SCSS}\` manually.`);
|
|
115
139
|
return tree;
|
|
116
140
|
}
|
|
117
|
-
|
|
118
|
-
|
|
141
|
+
// `.sass` is the indented syntax and takes `@use` like `.scss`; `.less` is
|
|
142
|
+
// the other one that cannot reach a Sass source.
|
|
143
|
+
if (stylesPath.endsWith('.css') || stylesPath.endsWith('.less')) {
|
|
144
|
+
context.logger.warn(`ngwr: ${stylesPath} is not Sass. ${CSS_PROJECT_ADVICE}`);
|
|
145
|
+
return tree;
|
|
146
|
+
}
|
|
147
|
+
const directive = STYLES_DIRECTIVE_SCSS;
|
|
119
148
|
const existing = tree.readText(stylesPath);
|
|
120
149
|
if (existing.includes(directive) || existing.includes("'ngwr'") || existing.includes('"ngwr"')) {
|
|
121
150
|
context.logger.info(`ngwr: ${stylesPath} already imports ngwr — skipping.`);
|
|
@@ -112,7 +112,10 @@
|
|
|
112
112
|
color: var(--wr-color-primary-ink);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
// color-ok: the selected option is named by POSITION — the thumb pill slides
|
|
116
|
+
// under it on `--wr-segmented-thumb-index`, and is hidden outright while
|
|
117
|
+
// nothing is picked. This declaration only re-inks the label above it.
|
|
118
|
+
&--selected {
|
|
116
119
|
color: var(--wr-segmented-selected-color);
|
|
117
120
|
}
|
|
118
121
|
|
|
@@ -100,6 +100,9 @@
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
// color-ok: opening attaches the panel and flips the chevron 180deg, so the
|
|
104
|
+
// state is a thing appearing and a glyph rotating; this only tints the edge
|
|
105
|
+
// underneath both.
|
|
103
106
|
&--open &__trigger {
|
|
104
107
|
border-color: var(--wr-color-primary);
|
|
105
108
|
box-shadow: 0 0 0 3px rgba(var(--wr-color-primary-rgb), 0.15);
|
|
@@ -454,12 +457,28 @@
|
|
|
454
457
|
overflow: hidden;
|
|
455
458
|
white-space: nowrap;
|
|
456
459
|
text-overflow: ellipsis;
|
|
460
|
+
// Positioning context for the `--active` cursor bar below.
|
|
461
|
+
position: relative;
|
|
457
462
|
}
|
|
458
463
|
|
|
459
464
|
// Keyboard cursor highlight — the virtualized list is navigated by
|
|
460
|
-
// aria-activedescendant, so the
|
|
465
|
+
// aria-activedescendant, so real focus never lands on the row and the tint
|
|
466
|
+
// is all there was. `--wr-color-hover` is translucent and lands within about
|
|
467
|
+
// 1.1:1 of the panel behind it, which is the same grey to a reader who
|
|
468
|
+
// cannot separate hue — and it is the declaration `:hover` uses, so the row
|
|
469
|
+
// the arrows reached and a row under the mouse were indistinguishable. The
|
|
470
|
+
// bar is the channel; the tint stays as reinforcement.
|
|
461
471
|
.wr-option--active {
|
|
462
472
|
background: var(--wr-color-hover);
|
|
473
|
+
|
|
474
|
+
&::before {
|
|
475
|
+
content: '';
|
|
476
|
+
position: absolute;
|
|
477
|
+
inset-block: 0;
|
|
478
|
+
inset-inline-start: 0;
|
|
479
|
+
width: 2px;
|
|
480
|
+
background: var(--wr-color-primary);
|
|
481
|
+
}
|
|
463
482
|
}
|
|
464
483
|
}
|
|
465
484
|
|
|
@@ -39,10 +39,14 @@
|
|
|
39
39
|
font-weight: var(--wr-font-weight-semibold);
|
|
40
40
|
font-variant-numeric: tabular-nums;
|
|
41
41
|
|
|
42
|
+
// color-ok: direction is DRAWN — statistic.html gives up and down two
|
|
43
|
+
// different triangle paths (apex up `M5 1 L9 8 L1 8 Z`, apex down
|
|
44
|
+
// `M5 9 L9 2 L1 2 Z`), and the value reads +12.4% against -0.4%.
|
|
42
45
|
&--up {
|
|
43
46
|
color: var(--wr-color-success-ink);
|
|
44
47
|
}
|
|
45
48
|
|
|
49
|
+
// color-ok: see `--up` above — the two triangles point opposite ways.
|
|
46
50
|
&--down {
|
|
47
51
|
color: var(--wr-color-danger-ink);
|
|
48
52
|
}
|
|
@@ -136,12 +136,43 @@ $header-padding-block: 0.25rem;
|
|
|
136
136
|
color var(--wr-transition-base);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
// The current step is the one state here with no glyph of its own: completed
|
|
140
|
+
// swaps the numeral for a tick, pending and unreachable keep the numeral, and
|
|
141
|
+
// active kept the numeral too — so it was a tinted circle beside a white one,
|
|
142
|
+
// 1.17:1, which is the same circle to a reader who cannot separate hue. The
|
|
143
|
+
// ring DOUBLES against the base rule's 1.5px, which is a weight rather than a
|
|
144
|
+
// colour and survives both greyscale and forced-colors.
|
|
139
145
|
&__header--active &__indicator {
|
|
146
|
+
border-width: 3px;
|
|
140
147
|
border-color: var(--wr-color-primary);
|
|
141
148
|
color: var(--wr-color-primary-ink);
|
|
142
149
|
background: var(--wr-color-primary-soft);
|
|
143
150
|
}
|
|
144
151
|
|
|
152
|
+
// A step `linear` has not opened yet renders a DISABLED button that looked
|
|
153
|
+
// exactly like an available one. `--reachable` was bound in the template,
|
|
154
|
+
// asserted by a spec and read by the harness, and styled by nothing at all,
|
|
155
|
+
// so the only cue was `cursor: not-allowed` — which needs a pointer, and a
|
|
156
|
+
// touch device has none.
|
|
157
|
+
//
|
|
158
|
+
// The cue is the border STYLE, deliberately: `linear` refuses rather than
|
|
159
|
+
// greys, so dimming would contradict the contract, and a tint would be
|
|
160
|
+
// invisible to a reader who cannot separate hue.
|
|
161
|
+
//
|
|
162
|
+
// `--completed` is excluded because a completed circle is FILLED with
|
|
163
|
+
// `--wr-color-primary` and rings itself in the same colour, so dashes there
|
|
164
|
+
// would be dashes against their own fill — invisible, and pointless besides,
|
|
165
|
+
// since a step already carrying a tick does not need to be told it is shut.
|
|
166
|
+
// The rule does cover a step its own `disabled` input closed, in a stepper
|
|
167
|
+
// that is not `linear` at all: `isReachable` fails on `disabled` first
|
|
168
|
+
// (stepper.ts:126), and "you cannot go here" is the same news either way.
|
|
169
|
+
&__header:not(.wr-stepper__header--reachable):not(.wr-stepper__header--completed) &__indicator {
|
|
170
|
+
border-style: dashed;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// color-ok: a completed step swaps its numeral for a TICK (stepper.html:19),
|
|
174
|
+
// so the glyph already differs from every other state; this only fills the
|
|
175
|
+
// disc behind it.
|
|
145
176
|
&__header--completed &__indicator {
|
|
146
177
|
background: var(--wr-color-primary);
|
|
147
178
|
border-color: var(--wr-color-primary);
|
|
@@ -173,6 +204,8 @@ $header-padding-block: 0.25rem;
|
|
|
173
204
|
margin-block-start: calc((var(--wr-stepper-indicator-size) - #{$label-line-height}) / 2);
|
|
174
205
|
}
|
|
175
206
|
|
|
207
|
+
// color-ok: the label follows the indicator beside it, which carries the
|
|
208
|
+
// state in its doubled ring — this is the same news, re-inked.
|
|
176
209
|
&__header--active &__label {
|
|
177
210
|
color: var(--wr-color-primary-ink);
|
|
178
211
|
}
|
|
@@ -225,6 +258,9 @@ $header-padding-block: 0.25rem;
|
|
|
225
258
|
flex: 0 0 auto;
|
|
226
259
|
}
|
|
227
260
|
|
|
261
|
+
// color-ok: filled against unfilled is 3.29:1 in LIGHTNESS — primary #3969e2
|
|
262
|
+
// against the connector's default `--wr-color-outline` #cbd5e1 — so the trail
|
|
263
|
+
// of finished steps reads as a darker line, not merely a bluer one.
|
|
228
264
|
&__header--completed + &__header &__connector,
|
|
229
265
|
&__header--completed &__connector {
|
|
230
266
|
background: var(--wr-color-primary);
|
|
@@ -84,6 +84,9 @@
|
|
|
84
84
|
--wr-switch-line-height: var(--wr-control-line-height-lg);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
// color-ok: the knob TRAVELS — the nested `.wr-switch__thumb` rule moves
|
|
88
|
+
// `inset-inline-start` from one end of the track to the other. Position is
|
|
89
|
+
// the channel; the track colour follows it.
|
|
87
90
|
&--checked {
|
|
88
91
|
--wr-switch-bg: var(--wr-switch-bg-checked);
|
|
89
92
|
|
package/table/styles/_index.scss
CHANGED
|
@@ -213,6 +213,9 @@
|
|
|
213
213
|
vertical-align: middle;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
+
// color-ok: the tick is the channel — a selected row's own `__td--select`
|
|
217
|
+
// cell holds a `<wr-checkbox>` bound to the same predicate as this class,
|
|
218
|
+
// and its mark appears. The tint is the reinforcement, not the signal.
|
|
216
219
|
&__tr--selected,
|
|
217
220
|
&__tr--selected:hover {
|
|
218
221
|
background: var(--wr-color-primary-soft);
|
|
@@ -220,6 +223,9 @@
|
|
|
220
223
|
|
|
221
224
|
// Pinned cells paint their own opaque background, so re-apply the selection
|
|
222
225
|
// tint over it (same technique as the row-hover rule above).
|
|
226
|
+
// color-ok: the pinned cells repaint the row tint they sit in, and the row
|
|
227
|
+
// itself is marked by the selection checkbox in its `__td--select` cell —
|
|
228
|
+
// these follow that, they do not carry the state.
|
|
223
229
|
&__tr--selected &__td--pin-left,
|
|
224
230
|
&__tr--selected &__td--pin-right,
|
|
225
231
|
&__tr--selected:hover &__td--pin-left,
|
|
@@ -758,6 +764,9 @@
|
|
|
758
764
|
display: inline-flex;
|
|
759
765
|
color: var(--wr-color-on-surface-muted);
|
|
760
766
|
|
|
767
|
+
// color-ok: the same `selectedCount() > 0` renders the `__count` numeral
|
|
768
|
+
// pill beside the funnel (table-filter.html:17) — a number appears where
|
|
769
|
+
// there was none.
|
|
761
770
|
&--active {
|
|
762
771
|
color: var(--wr-color-primary);
|
|
763
772
|
}
|
|
@@ -850,6 +859,9 @@
|
|
|
850
859
|
transition: var(--wr-transition-base);
|
|
851
860
|
}
|
|
852
861
|
|
|
862
|
+
// color-ok: the tick APPEARS. The base `&__check` holds the same SVG at
|
|
863
|
+
// `color: transparent` (line 851), so this is a glyph arriving rather than
|
|
864
|
+
// a hue swapped.
|
|
853
865
|
&__item--selected &__check {
|
|
854
866
|
background: var(--wr-color-primary);
|
|
855
867
|
border-color: var(--wr-color-primary);
|
package/tabs/styles/_index.scss
CHANGED
|
@@ -106,7 +106,10 @@
|
|
|
106
106
|
color: var(--wr-tabs-color-hover);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
// color-ok: the base tab already reserves `border-bottom: 2px solid
|
|
110
|
+
// transparent` (line 98), so colouring it paints an underline that no
|
|
111
|
+
// inactive tab carries — a mark appearing, not a hue swapped.
|
|
112
|
+
&--active {
|
|
110
113
|
color: var(--wr-tabs-color-active);
|
|
111
114
|
border-bottom-color: var(--wr-tabs-indicator);
|
|
112
115
|
}
|
|
@@ -103,7 +103,12 @@
|
|
|
103
103
|
inset-inline-end: 0.25rem;
|
|
104
104
|
bottom: 0.25rem;
|
|
105
105
|
display: inline-flex;
|
|
106
|
-
|
|
106
|
+
// NOT `--wr-color-text-faint`, which is where this sat and measured 2.43:1
|
|
107
|
+
// in light. A resize grip is an interactive affordance, so WCAG 1.4.11 asks
|
|
108
|
+
// 3:1 of it — the faint tier is documented as "decorative by design", and
|
|
109
|
+
// this is not decorative. The full-strength role is 5.35:1 light and 7.64:1
|
|
110
|
+
// dark. No gate reports this: axe ships no non-text-contrast rule.
|
|
111
|
+
color: var(--wr-color-on-surface-muted);
|
|
107
112
|
touch-action: none;
|
|
108
113
|
transition: color var(--wr-transition-base);
|
|
109
114
|
|
|
@@ -221,6 +221,17 @@ $contrast-light: #ffffff !default;
|
|
|
221
221
|
// most softening that still clears it (4.81), which leaves this token barely
|
|
222
222
|
// distinguishable from the flat role it wraps.
|
|
223
223
|
--wr-color-text-muted: rgba(var(--wr-color-muted-text-rgb), 0.95);
|
|
224
|
+
// unused-ok: the library paints with nothing at this strength any more, and
|
|
225
|
+
// that is the finding rather than an oversight. It had exactly three
|
|
226
|
+
// consumers — the OTP placeholder, the textarea resize grip and the avatar
|
|
227
|
+
// spinner — and all three were FAILING: 2.43:1 in light, against 4.5:1 for
|
|
228
|
+
// placeholder text and 3:1 for an interactive affordance and a status
|
|
229
|
+
// indicator. "Decorative by design" was true of the token and not of any of
|
|
230
|
+
// the three, so they moved to `-text-muted` and `-on-surface-muted`. The tier
|
|
231
|
+
// stays published because a custom property is public API and a consumer may
|
|
232
|
+
// have genuinely decorative text; the library, it turns out, has none. Note
|
|
233
|
+
// that no gate reports the shortfall: axe has no non-text-contrast rule, and
|
|
234
|
+
// `check:contrast` gates on route counts.
|
|
224
235
|
--wr-color-text-faint: rgba(var(--wr-color-muted-text-rgb), 0.6);
|
|
225
236
|
|
|
226
237
|
// Semantic role aliases over the flipping neutrals — prefer these in new code
|