ngwr 7.3.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 +5 -4
- 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 +1 -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 +11 -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 +3 -3
- package/dialog/styles/_index.scss +3 -3
- package/divider/styles/_index.scss +1 -1
- package/drawer/styles/_index.scss +11 -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 +6 -6
- 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 +40 -88
- 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 +6 -6
- package/fesm2022/ngwr-drawer.mjs +15 -15
- 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 +17 -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 +5 -15
- 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 +3 -3
- 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 +12 -12
- package/fesm2022/ngwr-tabs.mjs +8 -6
- 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 +46 -24
- package/fesm2022/ngwr-toast.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +3 -3
- 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 +29 -10
- package/list/styles/_index.scss +3 -3
- package/llms-full.txt +14 -19
- package/mention/styles/_index.scss +2 -2
- package/overlay/styles/_index.scss +1 -1
- package/package.json +1 -6
- package/pagination/styles/_index.scss +3 -26
- 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 +2 -3
- package/speed-dial/styles/_index.scss +1 -0
- package/splitter/styles/_index.scss +4 -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 +9 -9
- package/tabs/styles/_index.scss +22 -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 +13 -5
- package/toolbar/styles/_index.scss +1 -1
- package/tree/styles/_index.scss +18 -17
- package/types/ngwr-alert.d.ts +16 -6
- 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 -25
- 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-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 +9 -1
- package/types/ngwr-pagination.d.ts +3 -9
- package/types/ngwr-radio.d.ts +14 -3
- package/types/ngwr-rating.d.ts +5 -1
- 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-textarea.d.ts +25 -3
- package/types/ngwr-toast.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
|
@@ -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
|
|
@@ -147,7 +155,7 @@ $toast-colors: (
|
|
|
147
155
|
&__title {
|
|
148
156
|
margin: 0 0 0.125rem;
|
|
149
157
|
color: var(--wr-toast-title);
|
|
150
|
-
font-size:
|
|
158
|
+
font-size: var(--wr-text-sm);
|
|
151
159
|
font-weight: 600;
|
|
152
160
|
line-height: 1.25rem;
|
|
153
161
|
}
|
|
@@ -155,7 +163,7 @@ $toast-colors: (
|
|
|
155
163
|
&__message {
|
|
156
164
|
margin: 0;
|
|
157
165
|
color: var(--wr-toast-message);
|
|
158
|
-
font-size:
|
|
166
|
+
font-size: var(--wr-text-sm);
|
|
159
167
|
line-height: 1.125rem;
|
|
160
168
|
overflow-wrap: break-word;
|
|
161
169
|
}
|
|
@@ -183,7 +191,7 @@ $toast-colors: (
|
|
|
183
191
|
|
|
184
192
|
&:hover {
|
|
185
193
|
color: var(--wr-color-dark);
|
|
186
|
-
background:
|
|
194
|
+
background: var(--wr-color-hover);
|
|
187
195
|
}
|
|
188
196
|
}
|
|
189
197
|
|
|
@@ -243,12 +251,12 @@ $toast-colors: (
|
|
|
243
251
|
padding: 0.375rem 0.75rem;
|
|
244
252
|
color: var(--wr-color-medium);
|
|
245
253
|
font-family: var(--wr-font-family-base);
|
|
246
|
-
font-size:
|
|
254
|
+
font-size: var(--wr-text-xs);
|
|
247
255
|
font-weight: 500;
|
|
248
256
|
line-height: 1rem;
|
|
249
257
|
text-align: center;
|
|
250
258
|
cursor: pointer;
|
|
251
|
-
box-shadow:
|
|
259
|
+
box-shadow: var(--wr-shadow-xs);
|
|
252
260
|
transition:
|
|
253
261
|
color var(--wr-transition-base),
|
|
254
262
|
background var(--wr-transition-base),
|
|
@@ -16,7 +16,7 @@
|
|
|
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
|
|
package/tree/styles/_index.scss
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
display: block;
|
|
7
7
|
font-family: var(--wr-font-family-base);
|
|
8
|
-
font-size:
|
|
8
|
+
font-size: var(--wr-text-sm);
|
|
9
9
|
color: var(--wr-color-dark);
|
|
10
10
|
|
|
11
11
|
&__list {
|
|
@@ -29,19 +29,18 @@
|
|
|
29
29
|
color var(--wr-transition-base);
|
|
30
30
|
|
|
31
31
|
&:hover:not(.wr-tree__row--disabled) {
|
|
32
|
-
background:
|
|
32
|
+
background: var(--wr-color-hover);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
&--selected {
|
|
36
|
-
background:
|
|
36
|
+
background: var(--wr-color-primary-soft);
|
|
37
37
|
color: var(--wr-color-primary);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// Visible ring only when the row truly has keyboard focus — not
|
|
41
41
|
// just because it's the roving-tabindex cursor row.
|
|
42
42
|
&:focus-visible {
|
|
43
|
-
|
|
44
|
-
box-shadow: 0 0 0 2px rgba(var(--wr-color-primary-rgb), 0.25);
|
|
43
|
+
@include theme.focus-ring;
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
&--disabled {
|
|
@@ -100,11 +99,13 @@
|
|
|
100
99
|
--wr-tree-trigger-color: var(--wr-color-dark);
|
|
101
100
|
--wr-tree-trigger-bg: var(--wr-color-white);
|
|
102
101
|
--wr-tree-trigger-border: var(--wr-color-light);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
--wr-tree-trigger-
|
|
106
|
-
--wr-tree-trigger-
|
|
107
|
-
--wr-tree-trigger-
|
|
102
|
+
// Combobox trigger on the md control contract (30px, radius 6) so it lines
|
|
103
|
+
// up with select / input / button when used as a tree-select.
|
|
104
|
+
--wr-tree-trigger-radius: var(--wr-control-radius-md);
|
|
105
|
+
--wr-tree-trigger-padding-y: var(--wr-control-padding-y-md);
|
|
106
|
+
--wr-tree-trigger-padding-x: var(--wr-control-padding-x-md);
|
|
107
|
+
--wr-tree-trigger-font-size: var(--wr-control-font-size-md);
|
|
108
|
+
--wr-tree-trigger-line-height: var(--wr-control-line-height-md);
|
|
108
109
|
--wr-tree-panel-max-height: 18rem;
|
|
109
110
|
|
|
110
111
|
display: inline-flex;
|
|
@@ -138,9 +139,8 @@
|
|
|
138
139
|
box-shadow var(--wr-transition-base);
|
|
139
140
|
|
|
140
141
|
&:focus-visible {
|
|
141
|
-
outline: none;
|
|
142
142
|
border-color: var(--wr-color-primary);
|
|
143
|
-
|
|
143
|
+
@include theme.focus-ring;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
&:disabled {
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
&__placeholder {
|
|
165
|
-
color:
|
|
165
|
+
color: var(--wr-color-text-muted);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
&__chevron {
|
|
@@ -202,7 +202,8 @@
|
|
|
202
202
|
flex-wrap: wrap;
|
|
203
203
|
align-items: center;
|
|
204
204
|
padding: 0.25rem 0.5rem;
|
|
205
|
-
|
|
205
|
+
// Empty / one-row floor = single-mode height (+2px for the border).
|
|
206
|
+
min-height: calc(var(--wr-tree-trigger-line-height) + var(--wr-tree-trigger-padding-y) * 2 + 2px);
|
|
206
207
|
}
|
|
207
208
|
|
|
208
209
|
&__chips {
|
|
@@ -221,9 +222,9 @@
|
|
|
221
222
|
max-width: 100%;
|
|
222
223
|
padding: 0.125rem 0.25rem 0.125rem 0.5rem;
|
|
223
224
|
border-radius: 999px;
|
|
224
|
-
background:
|
|
225
|
+
background: var(--wr-color-primary-soft);
|
|
225
226
|
color: var(--wr-color-primary);
|
|
226
|
-
font-size:
|
|
227
|
+
font-size: var(--wr-text-sm);
|
|
227
228
|
line-height: 1.4;
|
|
228
229
|
user-select: none;
|
|
229
230
|
}
|
|
@@ -246,7 +247,7 @@
|
|
|
246
247
|
transition: background 0.12s ease;
|
|
247
248
|
|
|
248
249
|
&:hover {
|
|
249
|
-
background:
|
|
250
|
+
background: var(--wr-color-primary-active);
|
|
250
251
|
}
|
|
251
252
|
}
|
|
252
253
|
|
package/types/ngwr-alert.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import * as _angular_core from '@angular/core';
|
|
|
9
9
|
/**
|
|
10
10
|
* Visual variant of the alert.
|
|
11
11
|
*/
|
|
12
|
-
type WrAlertType = 'info' | 'success' | 'warning' | 'danger';
|
|
12
|
+
type WrAlertType = 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'offline';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Inline status banner. Use for feedback messages — saved/failed/notice etc.
|
|
@@ -23,14 +23,24 @@ type WrAlertType = 'info' | 'success' | 'warning' | 'danger';
|
|
|
23
23
|
* @see https://ngwr.dev/components/alert
|
|
24
24
|
*/
|
|
25
25
|
declare class WrAlert {
|
|
26
|
-
/**
|
|
27
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Optional headline shown at the top of the alert.
|
|
28
|
+
*
|
|
29
|
+
* @default null
|
|
30
|
+
*/
|
|
31
|
+
readonly title: _angular_core.InputSignal<string | null>;
|
|
28
32
|
/**
|
|
29
33
|
* Visual variant.
|
|
30
34
|
*
|
|
31
35
|
* @default 'info'
|
|
32
36
|
*/
|
|
33
37
|
readonly type: _angular_core.InputSignal<WrAlertType>;
|
|
38
|
+
/**
|
|
39
|
+
* Override the default per-type icon with any ngwr icon name.
|
|
40
|
+
*
|
|
41
|
+
* @default null
|
|
42
|
+
*/
|
|
43
|
+
readonly iconName: _angular_core.InputSignal<string | null>;
|
|
34
44
|
/**
|
|
35
45
|
* Optional secondary message rendered below the title.
|
|
36
46
|
*
|
|
@@ -38,8 +48,8 @@ declare class WrAlert {
|
|
|
38
48
|
*/
|
|
39
49
|
readonly message: _angular_core.InputSignal<string | null>;
|
|
40
50
|
/**
|
|
41
|
-
* When `true`, renders a leading status icon matching the `type
|
|
42
|
-
*
|
|
51
|
+
* When `true`, renders a leading status icon matching the `type`.
|
|
52
|
+
* Pass `false` to hide. Ignored when `iconName` is set.
|
|
43
53
|
*
|
|
44
54
|
* @default true
|
|
45
55
|
*/
|
|
@@ -61,7 +71,7 @@ declare class WrAlert {
|
|
|
61
71
|
protected readonly liveLevel: _angular_core.Signal<"assertive" | "polite" | null>;
|
|
62
72
|
protected onClose(): void;
|
|
63
73
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrAlert, never>;
|
|
64
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrAlert, "wr-alert", never, { "title": { "alias": "title"; "required":
|
|
74
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrAlert, "wr-alert", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "closeable": { "alias": "closeable"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
65
75
|
}
|
|
66
76
|
|
|
67
77
|
export { WrAlert };
|
package/types/ngwr-cascader.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ interface WrCascaderOption<T = string> {
|
|
|
43
43
|
*
|
|
44
44
|
* @see https://ngwr.dev/components/cascader
|
|
45
45
|
*/
|
|
46
|
+
type WrCascaderSize = 'sm' | 'md' | 'lg';
|
|
46
47
|
declare class WrCascader<T = string> implements ControlValueAccessor {
|
|
47
48
|
/** Root-level options. Each may have `children` for deeper levels. */
|
|
48
49
|
readonly options: _angular_core.InputSignal<readonly WrCascaderOption<T>[]>;
|
|
@@ -50,6 +51,8 @@ declare class WrCascader<T = string> implements ControlValueAccessor {
|
|
|
50
51
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
51
52
|
/** Disable the cascader. */
|
|
52
53
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
54
|
+
/** Control size — shares the `--wr-control-*` contract. @default 'md' */
|
|
55
|
+
readonly size: _angular_core.InputSignal<WrCascaderSize>;
|
|
53
56
|
/** Show a clear-all (×) button on the trigger when a path is selected. @default true */
|
|
54
57
|
readonly clearable: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
55
58
|
/**
|
|
@@ -100,8 +103,8 @@ declare class WrCascader<T = string> implements ControlValueAccessor {
|
|
|
100
103
|
private openOverlay;
|
|
101
104
|
private closeOverlay;
|
|
102
105
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCascader<any>, never>;
|
|
103
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCascader<any>, "wr-cascader", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "changeOnSelect": { "alias": "changeOnSelect"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
106
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCascader<any>, "wr-cascader", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "changeOnSelect": { "alias": "changeOnSelect"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
104
107
|
}
|
|
105
108
|
|
|
106
109
|
export { WrCascader };
|
|
107
|
-
export type { WrCascaderOption };
|
|
110
|
+
export type { WrCascaderOption, WrCascaderSize };
|
package/types/ngwr-checkbox.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ import { ControlValueAccessor } from '@angular/forms';
|
|
|
25
25
|
*
|
|
26
26
|
* @see https://ngwr.dev/components/checkbox
|
|
27
27
|
*/
|
|
28
|
+
type WrCheckboxSize = 'sm' | 'md' | 'lg';
|
|
28
29
|
declare class WrCheckbox implements ControlValueAccessor {
|
|
29
30
|
/**
|
|
30
31
|
* Stable id used to associate the native input with its label.
|
|
@@ -43,6 +44,8 @@ declare class WrCheckbox implements ControlValueAccessor {
|
|
|
43
44
|
* @default false
|
|
44
45
|
*/
|
|
45
46
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
47
|
+
/** Control size — shares the `--wr-control-*` contract. @default 'md' */
|
|
48
|
+
readonly size: _angular_core.InputSignal<WrCheckboxSize>;
|
|
46
49
|
/**
|
|
47
50
|
* Optional icon name rendered inside the box when checked, in place of the
|
|
48
51
|
* default checkmark. Use any registered NGWR icon.
|
|
@@ -65,7 +68,7 @@ declare class WrCheckbox implements ControlValueAccessor {
|
|
|
65
68
|
protected onInputChange(event: Event): void;
|
|
66
69
|
protected onInputBlur(): void;
|
|
67
70
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCheckbox, never>;
|
|
68
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCheckbox, "wr-checkbox", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
71
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCheckbox, "wr-checkbox", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
69
72
|
}
|
|
70
73
|
|
|
71
74
|
/**
|
|
@@ -136,4 +139,4 @@ declare class WrCheckboxGroup implements ControlValueAccessor, WrCheckboxGroupCo
|
|
|
136
139
|
}
|
|
137
140
|
|
|
138
141
|
export { WR_CHECKBOX_GROUP, WrCheckbox, WrCheckboxGroup };
|
|
139
|
-
export type { WrCheckboxGroupContext };
|
|
142
|
+
export type { WrCheckboxGroupContext, WrCheckboxSize };
|
|
@@ -19,7 +19,12 @@ type WrClickSparkEasing = 'linear' | 'ease-in' | 'ease-in-out' | 'ease-out';
|
|
|
19
19
|
* @see https://www.reactbits.dev/animations/click-spark
|
|
20
20
|
*/
|
|
21
21
|
declare class WrClickSpark {
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Spark line colour. Accepts any CSS colour, or a `var(--wr-…)` token which is
|
|
24
|
+
* resolved against the host so it tracks the theme. The default flips with the
|
|
25
|
+
* theme — dark sparks in light mode, light sparks in dark.
|
|
26
|
+
* @default 'var(--wr-color-dark)'
|
|
27
|
+
*/
|
|
23
28
|
readonly sparkColor: _angular_core.InputSignal<string>;
|
|
24
29
|
/** Length of each spark line in pixels (at t=0; tapers to 0 at t=1). @default 10 */
|
|
25
30
|
readonly sparkSize: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -41,6 +46,13 @@ declare class WrClickSpark {
|
|
|
41
46
|
private sparks;
|
|
42
47
|
constructor();
|
|
43
48
|
protected onClick(event: MouseEvent): void;
|
|
49
|
+
/**
|
|
50
|
+
* Canvas `strokeStyle` can't read CSS custom properties, so a `var(--wr-…)`
|
|
51
|
+
* token is resolved against the host's computed style here. Plain colours
|
|
52
|
+
* pass through untouched. Falls back to a dark literal if the custom
|
|
53
|
+
* property resolves to nothing.
|
|
54
|
+
*/
|
|
55
|
+
private resolveColor;
|
|
44
56
|
private syncCanvasSize;
|
|
45
57
|
private watchResize;
|
|
46
58
|
private startLoop;
|
|
@@ -41,7 +41,18 @@ declare class WrClipboard {
|
|
|
41
41
|
* when the user denied the permission prompt.
|
|
42
42
|
*/
|
|
43
43
|
read(): Promise<string | null>;
|
|
44
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Report whether clipboard read / write is available and, when the
|
|
46
|
+
* browser exposes it, what the user has granted.
|
|
47
|
+
*
|
|
48
|
+
* The answer is grounded in the actual Clipboard API capability
|
|
49
|
+
* (`writeText` / `readText`), then refined by the Permissions API when
|
|
50
|
+
* it can speak for the requested name. `clipboard-read` / `clipboard-write`
|
|
51
|
+
* are not recognised everywhere — Firefox and Safari throw on the query —
|
|
52
|
+
* so a missing or throwing Permissions API is treated as "supported,
|
|
53
|
+
* will resolve at use time" (`'prompt'`), not `'unsupported'`. We only
|
|
54
|
+
* return `'unsupported'` when the capability genuinely isn't there.
|
|
55
|
+
*/
|
|
45
56
|
permission(name: 'read' | 'write'): Promise<WrClipboardPermission>;
|
|
46
57
|
/** Hidden-textarea + `execCommand('copy')` write. Synchronous, no permissions. */
|
|
47
58
|
private legacyWrite;
|