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/README.md
CHANGED
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
|
|
11
11
|
`@angular/cdk` for overlay, portal, and a11y primitives.
|
|
12
12
|
|
|
13
|
-
> **Status:** active development.
|
|
14
|
-
>
|
|
13
|
+
> **Status:** active development. v8 is the current major line (Angular 22 peer).
|
|
14
|
+
> Public API is stable across patch releases and still evolving between majors.
|
|
15
|
+
> [Open an issue](https://github.com/thekhegay/ngwr/issues/new)
|
|
15
16
|
> if something breaks or feels wrong.
|
|
16
17
|
|
|
17
18
|
## Requirements
|
|
@@ -139,13 +140,13 @@ Plus [icon](https://ngwr.dev/components/icon), the experimental [squircle](https
|
|
|
139
140
|
|
|
140
141
|
Animated UI effects. Mix of in-house components + ports of [reactbits.dev](https://www.reactbits.dev) — each port carries a credit chip on its docs page. Defaults are theme-aware (light + dark), and every component honors `prefers-reduced-motion`.
|
|
141
142
|
|
|
142
|
-
[aurora](https://ngwr.dev/animations/aurora), [blur-text](https://ngwr.dev/animations/blur-text), [border-glow](https://ngwr.dev/animations/border-glow), [circular-text](https://ngwr.dev/animations/circular-text), [click-spark](https://ngwr.dev/animations/click-spark), [confetti](https://ngwr.dev/animations/confetti), [decrypt-text](https://ngwr.dev/animations/decrypt-text), [falling-text](https://ngwr.dev/animations/falling-text), [fuzzy-text](https://ngwr.dev/animations/fuzzy-text), [glitch-text](https://ngwr.dev/animations/glitch-text), [gradient-text](https://ngwr.dev/animations/gradient-text), [marquee](https://ngwr.dev/animations/marquee), [
|
|
143
|
+
[aurora](https://ngwr.dev/animations/aurora), [blur-text](https://ngwr.dev/animations/blur-text), [border-glow](https://ngwr.dev/animations/border-glow), [circular-text](https://ngwr.dev/animations/circular-text), [click-spark](https://ngwr.dev/animations/click-spark), [confetti](https://ngwr.dev/animations/confetti), [decrypt-text](https://ngwr.dev/animations/decrypt-text), [falling-text](https://ngwr.dev/animations/falling-text), [fuzzy-text](https://ngwr.dev/animations/fuzzy-text), [glitch-text](https://ngwr.dev/animations/glitch-text), [gradient-text](https://ngwr.dev/animations/gradient-text), [marquee](https://ngwr.dev/animations/marquee), [rotating-text](https://ngwr.dev/animations/rotating-text), [shiny-text](https://ngwr.dev/animations/shiny-text), [splash-cursor](https://ngwr.dev/animations/splash-cursor), [split-text](https://ngwr.dev/animations/split-text), [spotlight-card](https://ngwr.dev/animations/spotlight-card), [star-border](https://ngwr.dev/animations/star-border), [tilt-card](https://ngwr.dev/animations/tilt-card), [typewriter](https://ngwr.dev/animations/typewriter), [waves](https://ngwr.dev/animations/waves).
|
|
143
144
|
|
|
144
145
|
Card packages bundle their related directives: `ngwr/spotlight-card` exports `WrSpotlight`; `ngwr/tilt-card` exports `WrTilt`; `ngwr/shiny-text` exports `WrShimmer`.
|
|
145
146
|
|
|
146
147
|
### Directives — `ngwr/directives`
|
|
147
148
|
|
|
148
|
-
[autofocus](https://ngwr.dev/directives/autofocus), [autosize](https://ngwr.dev/directives/autosize), [click-outside](https://ngwr.dev/directives/click-outside), [copy-to-clipboard](https://ngwr.dev/directives/copy-to-clipboard)
|
|
149
|
+
[autofocus](https://ngwr.dev/directives/autofocus), [autosize](https://ngwr.dev/directives/autosize), [click-outside](https://ngwr.dev/directives/click-outside), [copy-to-clipboard](https://ngwr.dev/directives/copy-to-clipboard). [affix](https://ngwr.dev/directives/affix) ships as its own entry (`ngwr/affix`).
|
|
149
150
|
|
|
150
151
|
### Pipes — `ngwr/pipes`
|
|
151
152
|
|
|
@@ -168,7 +169,7 @@ Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `g
|
|
|
168
169
|
- [Color](https://ngwr.dev/getting-started/color) — design tokens and palette.
|
|
169
170
|
- [Grid](https://ngwr.dev/getting-started/grid) — opt-in 12-column layout.
|
|
170
171
|
- [Overlay](https://ngwr.dev/getting-started/overlay) — isolated CDK overlay container, `provideWrOverlay()`.
|
|
171
|
-
- [Mobile & responsive](https://ngwr.dev/getting-started/mobile) — responsive overlays, touch targets, safe-area insets, container-query layouts.
|
|
172
|
+
- [Mobile & responsive](https://ngwr.dev/getting-started/mobile) — responsive overlays, touch targets & density, swipe gestures, safe-area insets, container-query layouts.
|
|
172
173
|
- [Typography](https://ngwr.dev/typography) — `wrTypography` directive: headings, paragraphs, lists, links, code.
|
|
173
174
|
- [Icons](https://ngwr.dev/icons) — `ngwr/icon` registry + thin adapters for Lucide, Feather, Tabler, Phosphor, Heroicons, Iconoir, Radix, Bootstrap.
|
|
174
175
|
- **Date adapters** — `ngwr/date-adapter-fns`, `ngwr/date-adapter-luxon`. Wire one with `provideWrDateAdapter(...)` to power calendar + every mode of date-picker.
|
|
@@ -177,8 +178,8 @@ Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `g
|
|
|
177
178
|
|
|
178
179
|
- **Standalone & signals-first.** Every component is standalone and uses `input()` / `model()` / `output()` / `signal()` / `computed()`. Zoneless-ready.
|
|
179
180
|
- **CDK-powered.** Overlays, portals, and a11y come from `@angular/cdk`. We add `provideWrOverlay()` so NGWR overlays never collide with other CDK consumers (Material, NG-ZORRO, etc.).
|
|
180
|
-
- **Mobile & responsive.** Overlays collapse to bottom-sheets on small screens (`provideWrResponsiveOverlays()`), touch targets grow to ≥44px on coarse pointers,
|
|
181
|
-
- **Tree-shakable.**
|
|
181
|
+
- **Mobile & responsive.** Overlays collapse to bottom-sheets on small screens (`provideWrResponsiveOverlays()`), touch targets grow to ≥44px on coarse pointers, a `touch` density preset enlarges every control, and drawer / lightbox / toast / carousel respond to swipe gestures. Fixed surfaces respect `env(safe-area-inset-*)`, and layout components (`descriptions`, `stepper`, `page-header`, `toolbar`, `pagination`, `table`, `tabs`) reflow to their container via container queries. [Guide](https://ngwr.dev/getting-started/mobile).
|
|
182
|
+
- **Tree-shakable.** 127 separate ng-packagr entry points — import only what you use. Per-component FESM bundles are small: a median of ~3 KB gzipped, the heaviest (`ngwr/window`) ~15 KB. The whole catalog gzips to ~320 KB — but real apps pull a handful of entries. The only runtime dependency is `tslib`.
|
|
182
183
|
- **Modular SCSS.** Component styles are scoped through CSS custom properties. Theme tokens live in `ngwr/theme`; utilities (`grid`, `reset`) and the breakpoints SCSS API are opt-in.
|
|
183
184
|
- **Tree-shaken icons.** `provideWrIcons([plus, trash])` registers only the icons you actually import. Dev-mode validation warns about unregistered icons.
|
|
184
185
|
- **Reactbits ports, dependency-free.** All animation ports are reimplemented with vanilla DOM + Web Animations API / `IntersectionObserver` / `requestAnimationFrame` / raw WebGL — no GSAP, no `motion/react`, no `matter-js`, no `ogl`.
|
package/alert/styles/_index.scss
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@use '../../theme/styles' as theme;
|
|
2
2
|
|
|
3
3
|
$alert-colors: (
|
|
4
|
-
info:
|
|
4
|
+
info: info,
|
|
5
5
|
success: success,
|
|
6
6
|
warning: warning,
|
|
7
7
|
danger: danger,
|
|
@@ -17,16 +17,16 @@ $alert-colors: (
|
|
|
17
17
|
min-width: 0;
|
|
18
18
|
|
|
19
19
|
// Defaults — overridden per variant below.
|
|
20
|
-
--wr-alert-bg:
|
|
21
|
-
--wr-alert-border: var(--wr-color-
|
|
22
|
-
--wr-alert-title: var(--wr-color-
|
|
20
|
+
--wr-alert-bg: var(--wr-color-info-soft);
|
|
21
|
+
--wr-alert-border: var(--wr-color-info-soft-border);
|
|
22
|
+
--wr-alert-title: var(--wr-color-info);
|
|
23
23
|
--wr-alert-message: var(--wr-color-dark);
|
|
24
|
-
--wr-alert-close: var(--wr-color-
|
|
24
|
+
--wr-alert-close: var(--wr-color-info);
|
|
25
25
|
|
|
26
26
|
background: var(--wr-alert-bg);
|
|
27
|
-
border
|
|
27
|
+
border: 1px solid var(--wr-alert-border);
|
|
28
28
|
@include theme.smooth-br(var(--wr-border-radius-base));
|
|
29
|
-
padding: 0.
|
|
29
|
+
padding: 0.625rem 0.875rem;
|
|
30
30
|
|
|
31
31
|
&--dismissed {
|
|
32
32
|
display: none;
|
|
@@ -38,6 +38,14 @@ $alert-colors: (
|
|
|
38
38
|
height: 1.125rem;
|
|
39
39
|
margin-top: 0.125rem;
|
|
40
40
|
color: var(--wr-alert-title);
|
|
41
|
+
// A custom `<wr-icon>` sizes via this var, not width/height.
|
|
42
|
+
--wr-icon-size: 1.125rem;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// `<wr-icon>` sets `color: inherit` on its own host at equal specificity;
|
|
46
|
+
// the type selector wins it back so a custom icon takes the intent colour.
|
|
47
|
+
wr-icon.wr-alert__icon {
|
|
48
|
+
color: var(--wr-alert-title);
|
|
41
49
|
}
|
|
42
50
|
|
|
43
51
|
&__body {
|
|
@@ -52,7 +60,7 @@ $alert-colors: (
|
|
|
52
60
|
margin: 0;
|
|
53
61
|
color: var(--wr-alert-title);
|
|
54
62
|
font-family: var(--wr-font-family-base);
|
|
55
|
-
font-size:
|
|
63
|
+
font-size: var(--wr-text-sm);
|
|
56
64
|
font-weight: 600;
|
|
57
65
|
line-height: 1.25rem;
|
|
58
66
|
}
|
|
@@ -61,7 +69,7 @@ $alert-colors: (
|
|
|
61
69
|
margin: 0;
|
|
62
70
|
color: var(--wr-alert-message);
|
|
63
71
|
font-family: var(--wr-font-family-base);
|
|
64
|
-
font-size:
|
|
72
|
+
font-size: var(--wr-text-sm);
|
|
65
73
|
line-height: 1.125rem;
|
|
66
74
|
}
|
|
67
75
|
|
|
@@ -84,20 +92,39 @@ $alert-colors: (
|
|
|
84
92
|
|
|
85
93
|
&:hover {
|
|
86
94
|
color: var(--wr-alert-title);
|
|
87
|
-
background:
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
&:focus-visible {
|
|
91
|
-
outline: 2px solid rgba(var(--wr-color-primary-rgb), 0.5);
|
|
92
|
-
outline-offset: 1px;
|
|
95
|
+
background: var(--wr-color-hover);
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
98
|
|
|
96
99
|
@each $variant, $color in $alert-colors {
|
|
97
100
|
&--#{$variant} {
|
|
98
|
-
--wr-alert-bg:
|
|
99
|
-
--wr-alert-border: var(--wr-color-#{$color});
|
|
101
|
+
--wr-alert-bg: var(--wr-color-#{$color}-soft);
|
|
102
|
+
--wr-alert-border: var(--wr-color-#{$color}-soft-border);
|
|
100
103
|
--wr-alert-title: var(--wr-color-#{$color});
|
|
104
|
+
--wr-alert-close: var(--wr-color-#{$color});
|
|
101
105
|
}
|
|
102
106
|
}
|
|
107
|
+
|
|
108
|
+
// Neutral — muted gray chip, reusing the `medium` soft tokens.
|
|
109
|
+
&--neutral {
|
|
110
|
+
--wr-alert-bg: var(--wr-color-medium-soft);
|
|
111
|
+
--wr-alert-border: var(--wr-color-medium-soft-border);
|
|
112
|
+
--wr-alert-title: var(--wr-color-dark);
|
|
113
|
+
--wr-alert-message: var(--wr-color-medium);
|
|
114
|
+
--wr-alert-close: var(--wr-color-medium);
|
|
115
|
+
|
|
116
|
+
.wr-alert__icon {
|
|
117
|
+
color: var(--wr-color-medium);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Offline — inverse chip. Auto-flips via the theme tokens: dark bg +
|
|
122
|
+
// light text in light theme; light bg + dark text in dark theme.
|
|
123
|
+
&--offline {
|
|
124
|
+
--wr-alert-bg: var(--wr-color-dark);
|
|
125
|
+
--wr-alert-border: var(--wr-color-dark);
|
|
126
|
+
--wr-alert-title: var(--wr-color-white);
|
|
127
|
+
--wr-alert-message: var(--wr-color-white);
|
|
128
|
+
--wr-alert-close: var(--wr-color-white);
|
|
129
|
+
}
|
|
103
130
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// treatment.
|
|
7
7
|
--wr-avatar-radius: 10%;
|
|
8
8
|
--wr-avatar-img-opacity: 0;
|
|
9
|
-
--wr-avatar-ring:
|
|
9
|
+
--wr-avatar-ring: var(--wr-color-border);
|
|
10
10
|
|
|
11
11
|
display: inline-flex;
|
|
12
12
|
align-items: center;
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
|
|
50
50
|
&__spin {
|
|
51
51
|
position: absolute;
|
|
52
|
-
color:
|
|
52
|
+
color: var(--wr-color-text-faint);
|
|
53
53
|
--wr-spinner-size: 40%;
|
|
54
54
|
}
|
|
55
55
|
}
|
package/badge/styles/_index.scss
CHANGED
|
@@ -9,19 +9,23 @@
|
|
|
9
9
|
display: inline-flex;
|
|
10
10
|
align-items: center;
|
|
11
11
|
justify-content: center;
|
|
12
|
+
min-height: var(--wr-badge-min-height);
|
|
12
13
|
padding: var(--wr-badge-padding-y) var(--wr-badge-padding-x);
|
|
13
14
|
border-radius: var(--wr-badge-radius);
|
|
14
15
|
font-size: var(--wr-badge-font-size);
|
|
15
16
|
font-weight: var(--wr-badge-font-weight);
|
|
16
|
-
line-height
|
|
17
|
+
// line-height 1 + min-height: flex centres the tight glyph box vertically,
|
|
18
|
+
// instead of line-height baking in asymmetric leading (which left small
|
|
19
|
+
// sizes looking top-heavy).
|
|
20
|
+
line-height: 1;
|
|
17
21
|
white-space: nowrap;
|
|
18
22
|
|
|
19
23
|
// Defaults — sized modifiers override these
|
|
20
24
|
--wr-badge-padding-y: 0.25rem;
|
|
21
25
|
--wr-badge-padding-x: 0.5rem;
|
|
22
26
|
--wr-badge-radius: var(--wr-border-radius-sm);
|
|
23
|
-
--wr-badge-font-size:
|
|
24
|
-
--wr-badge-
|
|
27
|
+
--wr-badge-font-size: var(--wr-text-xs);
|
|
28
|
+
--wr-badge-min-height: 1.5rem;
|
|
25
29
|
--wr-badge-font-weight: 600;
|
|
26
30
|
|
|
27
31
|
// Sizes
|
|
@@ -29,15 +33,15 @@
|
|
|
29
33
|
&--sm {
|
|
30
34
|
--wr-badge-padding-y: 0.125rem;
|
|
31
35
|
--wr-badge-padding-x: 0.375rem;
|
|
32
|
-
--wr-badge-font-size: 0.625rem;
|
|
33
|
-
--wr-badge-
|
|
36
|
+
--wr-badge-font-size: 0.625rem; // 10px — intentional micro-count, below --wr-text-xs
|
|
37
|
+
--wr-badge-min-height: 1.125rem;
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
&--lg {
|
|
37
41
|
--wr-badge-padding-y: 0.375rem;
|
|
38
42
|
--wr-badge-padding-x: 0.75rem;
|
|
39
|
-
--wr-badge-font-size:
|
|
40
|
-
--wr-badge-
|
|
43
|
+
--wr-badge-font-size: var(--wr-text-sm);
|
|
44
|
+
--wr-badge-min-height: 2rem;
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
// Shape — default `rounded` keeps the small radius from the defaults
|
package/badge/styles/_tag.scss
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
display: flex;
|
|
10
10
|
align-items: flex-end;
|
|
11
11
|
gap: 0.5rem;
|
|
12
|
-
padding-bottom: 0.25rem;
|
|
13
12
|
border-bottom: 1px solid var(--wr-color-light);
|
|
14
13
|
}
|
|
15
14
|
|
|
@@ -33,7 +32,7 @@
|
|
|
33
32
|
|
|
34
33
|
&__bar {
|
|
35
34
|
width: 100%;
|
|
36
|
-
border-radius:
|
|
35
|
+
border-radius: 2px 2px 0 0;
|
|
37
36
|
transition: height var(--wr-duration-slow) var(--wr-ease-out);
|
|
38
37
|
min-height: 1px;
|
|
39
38
|
}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// (set by the component from the `[separator]` input). All items except
|
|
3
3
|
// the first prepend the glyph via a `::before` pseudo-element.
|
|
4
4
|
|
|
5
|
+
@use '../../theme/styles' as theme;
|
|
6
|
+
|
|
5
7
|
.wr-breadcrumbs {
|
|
6
8
|
--wr-breadcrumbs-separator: '/';
|
|
7
9
|
--wr-breadcrumbs-gap: 0.5rem;
|
|
@@ -12,7 +14,7 @@
|
|
|
12
14
|
|
|
13
15
|
display: block;
|
|
14
16
|
font-family: var(--wr-font-family-base);
|
|
15
|
-
font-size:
|
|
17
|
+
font-size: var(--wr-text-sm);
|
|
16
18
|
color: var(--wr-breadcrumbs-color);
|
|
17
19
|
|
|
18
20
|
&__nav {
|
|
@@ -56,7 +58,7 @@
|
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
&:focus-visible {
|
|
59
|
-
|
|
61
|
+
@include theme.focus-ring;
|
|
60
62
|
outline-offset: 2px;
|
|
61
63
|
}
|
|
62
64
|
}
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
transition: background var(--wr-transition-base);
|
|
39
39
|
|
|
40
40
|
&:hover {
|
|
41
|
-
background:
|
|
41
|
+
background: var(--wr-color-hover);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
&:focus-visible {
|
|
45
|
-
|
|
45
|
+
@include theme.focus-ring;
|
|
46
46
|
outline-offset: 2px;
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
--wr-btn-color: var(--wr-color-dark);
|
|
21
21
|
--wr-btn-bg: var(--wr-color-white);
|
|
22
22
|
--wr-btn-border: var(--wr-color-light);
|
|
23
|
-
--wr-btn-radius: var(--wr-
|
|
23
|
+
--wr-btn-radius: var(--wr-control-radius-md);
|
|
24
24
|
--wr-btn-gap: 0.375rem;
|
|
25
|
-
--wr-btn-padding-y:
|
|
26
|
-
--wr-btn-padding-x:
|
|
27
|
-
--wr-btn-font-size:
|
|
25
|
+
--wr-btn-padding-y: var(--wr-control-padding-y-md);
|
|
26
|
+
--wr-btn-padding-x: 0.875rem; // 14px — buttons sit a touch wider than input/select
|
|
27
|
+
--wr-btn-font-size: var(--wr-control-font-size-md);
|
|
28
28
|
--wr-btn-font-weight: 500;
|
|
29
|
-
--wr-btn-line-height:
|
|
29
|
+
--wr-btn-line-height: var(--wr-control-line-height-md);
|
|
30
30
|
--wr-btn-icon-size: 1rem;
|
|
31
31
|
|
|
32
32
|
color: var(--wr-btn-color);
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
transition: var(--wr-transition-base);
|
|
42
42
|
|
|
43
43
|
&:hover {
|
|
44
|
-
--wr-btn-bg:
|
|
44
|
+
--wr-btn-bg: var(--wr-color-hover);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
&:active {
|
|
@@ -74,24 +74,26 @@
|
|
|
74
74
|
min-width: 0;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
// Sizes —
|
|
78
|
-
//
|
|
79
|
-
//
|
|
77
|
+
// Sizes — share the `--wr-control-*` contract (22 / 30 / 36 px) so button,
|
|
78
|
+
// input and select line up in a row. Buttons keep a slightly wider padding-x
|
|
79
|
+
// (12 / 14 / 18) than input/select; gap + icon step with the size.
|
|
80
80
|
&--sm {
|
|
81
|
+
--wr-btn-radius: var(--wr-control-radius-sm);
|
|
81
82
|
--wr-btn-gap: 0.25rem;
|
|
82
|
-
--wr-btn-padding-y:
|
|
83
|
+
--wr-btn-padding-y: var(--wr-control-padding-y-sm);
|
|
83
84
|
--wr-btn-padding-x: 0.75rem; // 12px
|
|
84
|
-
--wr-btn-font-size:
|
|
85
|
-
--wr-btn-line-height:
|
|
85
|
+
--wr-btn-font-size: var(--wr-control-font-size-sm);
|
|
86
|
+
--wr-btn-line-height: var(--wr-control-line-height-sm);
|
|
86
87
|
--wr-btn-icon-size: 0.875rem; // 14px
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
&--lg {
|
|
91
|
+
--wr-btn-radius: var(--wr-control-radius-lg);
|
|
90
92
|
--wr-btn-gap: 0.5rem;
|
|
91
|
-
--wr-btn-padding-y:
|
|
92
|
-
--wr-btn-padding-x: 1.
|
|
93
|
-
--wr-btn-font-size:
|
|
94
|
-
--wr-btn-line-height:
|
|
93
|
+
--wr-btn-padding-y: var(--wr-control-padding-y-lg);
|
|
94
|
+
--wr-btn-padding-x: 1.125rem; // 18px
|
|
95
|
+
--wr-btn-font-size: var(--wr-control-font-size-lg);
|
|
96
|
+
--wr-btn-line-height: var(--wr-control-line-height-lg);
|
|
95
97
|
--wr-btn-icon-size: 1.125rem; // 18px
|
|
96
98
|
}
|
|
97
99
|
|
|
@@ -200,11 +202,19 @@
|
|
|
200
202
|
}
|
|
201
203
|
|
|
202
204
|
// Solid colored segments share border and background color, so adjacent
|
|
203
|
-
// buttons fuse into one slab — draw a subtle divider on
|
|
204
|
-
//
|
|
205
|
+
// buttons fuse into one slab — draw a subtle divider on the right edge of
|
|
206
|
+
// every non-last segment. Outlined/default variants keep their own visible
|
|
207
|
+
// borders. On hover/focus the segment raises its own border (z-index above
|
|
208
|
+
// neighbours), which would otherwise double-paint that edge — so drop the
|
|
209
|
+
// seam there and let the raised border own it cleanly.
|
|
205
210
|
@each $name in theme.$colors {
|
|
206
|
-
> .wr-btn--#{$name}:not(.wr-btn--outlined):not(:
|
|
207
|
-
box-shadow: inset 1px 0 0 rgb
|
|
211
|
+
> .wr-btn--#{$name}:not(.wr-btn--outlined):not(:last-child) {
|
|
212
|
+
box-shadow: inset -1px 0 0 rgba(var(--wr-color-black-rgb), 0.2);
|
|
213
|
+
|
|
214
|
+
&:hover,
|
|
215
|
+
&:focus-visible {
|
|
216
|
+
box-shadow: none;
|
|
217
|
+
}
|
|
208
218
|
}
|
|
209
219
|
}
|
|
210
220
|
}
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
color: inherit;
|
|
43
43
|
text-align: center;
|
|
44
44
|
font-family: inherit;
|
|
45
|
-
font-size:
|
|
45
|
+
font-size: var(--wr-text-sm);
|
|
46
46
|
font-weight: 600;
|
|
47
47
|
line-height: 1.5rem;
|
|
48
48
|
border-radius: var(--wr-calendar-day-radius);
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
color var(--wr-transition-base);
|
|
53
53
|
|
|
54
54
|
&:hover:not(:disabled) {
|
|
55
|
-
background:
|
|
55
|
+
background: var(--wr-color-hover);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
&:focus-visible {
|
|
@@ -67,13 +67,15 @@
|
|
|
67
67
|
|
|
68
68
|
&__nav {
|
|
69
69
|
appearance: none;
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
justify-content: center;
|
|
70
73
|
background: transparent;
|
|
71
74
|
border: 0;
|
|
72
75
|
width: 1.75rem;
|
|
73
76
|
height: 1.75rem;
|
|
74
77
|
border-radius: var(--wr-calendar-day-radius);
|
|
75
78
|
color: var(--wr-calendar-muted);
|
|
76
|
-
font-size: 1.125rem;
|
|
77
79
|
line-height: 1;
|
|
78
80
|
cursor: pointer;
|
|
79
81
|
transition:
|
|
@@ -82,7 +84,7 @@
|
|
|
82
84
|
|
|
83
85
|
&:hover:not(:disabled) {
|
|
84
86
|
color: var(--wr-calendar-color);
|
|
85
|
-
background:
|
|
87
|
+
background: var(--wr-color-hover);
|
|
86
88
|
}
|
|
87
89
|
|
|
88
90
|
&:focus-visible {
|
|
@@ -106,7 +108,7 @@
|
|
|
106
108
|
&__weekday {
|
|
107
109
|
text-align: center;
|
|
108
110
|
color: var(--wr-calendar-muted);
|
|
109
|
-
font-size:
|
|
111
|
+
font-size: var(--wr-text-xs);
|
|
110
112
|
font-weight: 600;
|
|
111
113
|
line-height: 1.5rem;
|
|
112
114
|
text-transform: uppercase;
|
|
@@ -134,7 +136,7 @@
|
|
|
134
136
|
margin: 0;
|
|
135
137
|
height: var(--wr-calendar-cell-size);
|
|
136
138
|
font-family: inherit;
|
|
137
|
-
font-size:
|
|
139
|
+
font-size: var(--wr-text-sm);
|
|
138
140
|
line-height: var(--wr-calendar-cell-size);
|
|
139
141
|
color: var(--wr-calendar-color);
|
|
140
142
|
border-radius: var(--wr-calendar-day-radius);
|
|
@@ -144,7 +146,7 @@
|
|
|
144
146
|
color var(--wr-transition-base);
|
|
145
147
|
|
|
146
148
|
&:hover:not(:disabled):not(.wr-calendar__day--selected) {
|
|
147
|
-
background:
|
|
149
|
+
background: var(--wr-color-hover);
|
|
148
150
|
}
|
|
149
151
|
|
|
150
152
|
&:focus-visible {
|
|
@@ -208,7 +210,7 @@
|
|
|
208
210
|
margin: 0;
|
|
209
211
|
height: 2.5rem;
|
|
210
212
|
font-family: inherit;
|
|
211
|
-
font-size:
|
|
213
|
+
font-size: var(--wr-text-sm);
|
|
212
214
|
line-height: 2.5rem;
|
|
213
215
|
color: var(--wr-calendar-color);
|
|
214
216
|
border-radius: var(--wr-calendar-day-radius);
|
|
@@ -218,7 +220,7 @@
|
|
|
218
220
|
color var(--wr-transition-base);
|
|
219
221
|
|
|
220
222
|
&:hover:not(:disabled):not(.wr-calendar__chip--selected) {
|
|
221
|
-
background:
|
|
223
|
+
background: var(--wr-color-hover);
|
|
222
224
|
}
|
|
223
225
|
|
|
224
226
|
&:focus-visible {
|
|
@@ -59,6 +59,8 @@
|
|
|
59
59
|
&__cell {
|
|
60
60
|
width: var(--wr-heatmap-cell-size);
|
|
61
61
|
height: var(--wr-heatmap-cell-size);
|
|
62
|
+
// 2px — intentional micro-radius for the tiny (~11px) cells; the control /
|
|
63
|
+
// border-radius tokens (5px+) would read as near-circles at this size.
|
|
62
64
|
border-radius: 2px;
|
|
63
65
|
transition: transform var(--wr-transition-base);
|
|
64
66
|
|
package/card/styles/_index.scss
CHANGED
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
&__viewport {
|
|
14
14
|
overflow: hidden;
|
|
15
|
+
// Capture horizontal swipe-nav; let vertical scrolling pass through.
|
|
16
|
+
touch-action: pan-y;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
&__track {
|
|
@@ -86,7 +88,7 @@
|
|
|
86
88
|
border: 0;
|
|
87
89
|
border-radius: 50%;
|
|
88
90
|
background: rgba(var(--wr-color-white-rgb), 0.55);
|
|
89
|
-
box-shadow: 0 0 0 1px rgba(
|
|
91
|
+
box-shadow: 0 0 0 1px rgba(var(--wr-color-black-rgb), 0.15);
|
|
90
92
|
cursor: pointer;
|
|
91
93
|
transition:
|
|
92
94
|
width var(--wr-transition-base),
|
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
// is a horizontal row of columns where each column lists the children
|
|
3
3
|
// of the previously-active node. Picking a leaf commits the path.
|
|
4
4
|
|
|
5
|
+
@use '../../theme/styles' as theme;
|
|
6
|
+
|
|
5
7
|
.wr-cascader {
|
|
6
8
|
--wr-cascader-color: var(--wr-color-dark);
|
|
7
9
|
--wr-cascader-bg: var(--wr-color-white);
|
|
8
10
|
--wr-cascader-border: var(--wr-color-light);
|
|
9
|
-
--wr-cascader-radius: var(--wr-
|
|
10
|
-
--wr-cascader-padding-y:
|
|
11
|
-
--wr-cascader-padding-x:
|
|
12
|
-
--wr-cascader-font-size:
|
|
13
|
-
--wr-cascader-line-height:
|
|
11
|
+
--wr-cascader-radius: var(--wr-control-radius-md);
|
|
12
|
+
--wr-cascader-padding-y: var(--wr-control-padding-y-md);
|
|
13
|
+
--wr-cascader-padding-x: var(--wr-control-padding-x-md);
|
|
14
|
+
--wr-cascader-font-size: var(--wr-control-font-size-md);
|
|
15
|
+
--wr-cascader-line-height: var(--wr-control-line-height-md);
|
|
14
16
|
--wr-cascader-col-width: 12rem;
|
|
15
17
|
--wr-cascader-max-height: 16rem;
|
|
16
18
|
|
|
@@ -22,6 +24,23 @@
|
|
|
22
24
|
--wr-cascader-bg: rgba(var(--wr-color-light-rgb), 0.35);
|
|
23
25
|
}
|
|
24
26
|
|
|
27
|
+
// Sizes — trigger on the control contract (sm 22 / md 30 / lg 36).
|
|
28
|
+
&--sm {
|
|
29
|
+
--wr-cascader-radius: var(--wr-control-radius-sm);
|
|
30
|
+
--wr-cascader-padding-y: var(--wr-control-padding-y-sm);
|
|
31
|
+
--wr-cascader-padding-x: var(--wr-control-padding-x-sm);
|
|
32
|
+
--wr-cascader-font-size: var(--wr-control-font-size-sm);
|
|
33
|
+
--wr-cascader-line-height: var(--wr-control-line-height-sm);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&--lg {
|
|
37
|
+
--wr-cascader-radius: var(--wr-control-radius-lg);
|
|
38
|
+
--wr-cascader-padding-y: var(--wr-control-padding-y-lg);
|
|
39
|
+
--wr-cascader-padding-x: var(--wr-control-padding-x-lg);
|
|
40
|
+
--wr-cascader-font-size: var(--wr-control-font-size-lg);
|
|
41
|
+
--wr-cascader-line-height: var(--wr-control-line-height-lg);
|
|
42
|
+
}
|
|
43
|
+
|
|
25
44
|
&__trigger {
|
|
26
45
|
display: inline-flex;
|
|
27
46
|
align-items: center;
|
|
@@ -44,9 +63,8 @@
|
|
|
44
63
|
box-shadow var(--wr-transition-base);
|
|
45
64
|
|
|
46
65
|
&:focus-visible {
|
|
47
|
-
outline: none;
|
|
48
66
|
border-color: var(--wr-color-primary);
|
|
49
|
-
|
|
67
|
+
@include theme.focus-ring;
|
|
50
68
|
}
|
|
51
69
|
|
|
52
70
|
&:disabled {
|
|
@@ -68,7 +86,7 @@
|
|
|
68
86
|
}
|
|
69
87
|
|
|
70
88
|
&__placeholder {
|
|
71
|
-
color:
|
|
89
|
+
color: var(--wr-color-text-muted);
|
|
72
90
|
}
|
|
73
91
|
|
|
74
92
|
&__chevron {
|
|
@@ -108,44 +126,66 @@
|
|
|
108
126
|
}
|
|
109
127
|
|
|
110
128
|
.wr-cascader-panel {
|
|
129
|
+
// Option sizing — mirrored from the trigger size (panel is portaled, so it
|
|
130
|
+
// can't inherit the host size class). Default md.
|
|
131
|
+
--wr-cascader-opt-font: var(--wr-control-font-size-md);
|
|
132
|
+
--wr-cascader-opt-py: 0.5rem;
|
|
133
|
+
|
|
111
134
|
display: flex;
|
|
112
135
|
background: var(--wr-color-white);
|
|
113
136
|
border: 1px solid var(--wr-color-light);
|
|
114
137
|
border-radius: var(--wr-border-radius-base);
|
|
115
138
|
box-shadow: var(--wr-shadow-overlay);
|
|
116
139
|
font-family: var(--wr-font-family-base);
|
|
117
|
-
font-size:
|
|
140
|
+
font-size: var(--wr-cascader-opt-font);
|
|
118
141
|
overflow: hidden;
|
|
119
142
|
|
|
143
|
+
&--sm {
|
|
144
|
+
--wr-cascader-opt-font: var(--wr-control-font-size-sm);
|
|
145
|
+
--wr-cascader-opt-py: 0.375rem;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
&--lg {
|
|
149
|
+
--wr-cascader-opt-font: var(--wr-control-font-size-lg);
|
|
150
|
+
--wr-cascader-opt-py: 0.625rem;
|
|
151
|
+
}
|
|
152
|
+
|
|
120
153
|
.wr-cascader__col {
|
|
121
154
|
list-style: none;
|
|
122
155
|
margin: 0;
|
|
123
|
-
padding
|
|
156
|
+
// Inset padding so options read as rounded pills, matching the select panel.
|
|
157
|
+
padding: 0.25rem;
|
|
124
158
|
width: var(--wr-cascader-col-width, 12rem);
|
|
125
159
|
max-height: var(--wr-cascader-max-height, 16rem);
|
|
126
160
|
overflow-y: auto;
|
|
161
|
+
display: flex;
|
|
162
|
+
flex-direction: column;
|
|
163
|
+
gap: 0.125rem;
|
|
127
164
|
|
|
128
165
|
+ .wr-cascader__col {
|
|
129
166
|
border-left: 1px solid var(--wr-color-light);
|
|
130
167
|
}
|
|
131
168
|
}
|
|
132
169
|
|
|
170
|
+
// Options mirror .wr-option (rounded pill, soft primary tint when active).
|
|
133
171
|
.wr-cascader__opt {
|
|
134
172
|
display: flex;
|
|
135
173
|
align-items: center;
|
|
136
174
|
gap: 0.5rem;
|
|
137
|
-
padding:
|
|
175
|
+
padding: var(--wr-cascader-opt-py) 0.625rem;
|
|
176
|
+
border-radius: var(--wr-border-radius-sm);
|
|
138
177
|
color: var(--wr-color-dark);
|
|
139
178
|
cursor: pointer;
|
|
140
|
-
transition: background
|
|
179
|
+
transition: background var(--wr-transition-short);
|
|
141
180
|
|
|
142
181
|
&:hover {
|
|
143
|
-
background:
|
|
182
|
+
background: var(--wr-color-hover);
|
|
144
183
|
}
|
|
145
184
|
|
|
146
185
|
&--active {
|
|
147
|
-
background:
|
|
186
|
+
background: var(--wr-color-primary-soft);
|
|
148
187
|
color: var(--wr-color-primary);
|
|
188
|
+
font-weight: 500;
|
|
149
189
|
}
|
|
150
190
|
|
|
151
191
|
&--disabled {
|