@hawiyah/styles 0.0.0-stage → 0.2.1
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/LICENSE +73 -0
- package/NOTICE +34 -0
- package/README.md +246 -2
- package/dist/accordion-motion.css +18 -0
- package/dist/assets/external-link.svg +1 -0
- package/dist/assets/favicon.svg +4 -0
- package/dist/assets/fonts/riyal-LICENSE.txt +93 -0
- package/dist/assets/fonts/riyal-provenance.json +47 -0
- package/dist/assets/fonts/riyal.woff2 +0 -0
- package/dist/assets/hawiyah-loader-256.gif +0 -0
- package/dist/assets/hawiyah-loader-white-256.gif +0 -0
- package/dist/assets/hawiyah-loader-white.gif +0 -0
- package/dist/assets/hawiyah-loader.gif +0 -0
- package/dist/assets/hawiyah-lockup-ar-mono.svg +4 -0
- package/dist/assets/hawiyah-lockup-ar-reverse.svg +4 -0
- package/dist/assets/hawiyah-lockup-ar-white.svg +4 -0
- package/dist/assets/hawiyah-lockup-ar.svg +4 -0
- package/dist/assets/hawiyah-lockup-bilingual-mono.svg +4 -0
- package/dist/assets/hawiyah-lockup-bilingual-reverse.svg +4 -0
- package/dist/assets/hawiyah-lockup-bilingual-white.svg +4 -0
- package/dist/assets/hawiyah-lockup-bilingual.svg +4 -0
- package/dist/assets/hawiyah-lockup-en-mono.svg +4 -0
- package/dist/assets/hawiyah-lockup-en-reverse.svg +4 -0
- package/dist/assets/hawiyah-lockup-en-white.svg +4 -0
- package/dist/assets/hawiyah-lockup-en.svg +4 -0
- package/dist/assets/hawiyah-pattern.svg +4 -0
- package/dist/assets/hawiyah-symbol-mono.svg +4 -0
- package/dist/assets/hawiyah-symbol-reverse.svg +4 -0
- package/dist/assets/hawiyah-symbol-white.svg +4 -0
- package/dist/assets/hawiyah-symbol.svg +4 -0
- package/dist/assets/hawiyah-wordmark-loader-256.gif +0 -0
- package/dist/assets/hawiyah-wordmark-loader-white-256.gif +0 -0
- package/dist/assets/hawiyah-wordmark-loader-white.gif +0 -0
- package/dist/assets/hawiyah-wordmark-loader.gif +0 -0
- package/dist/assets/hawiyah-wordmark-mono.svg +4 -0
- package/dist/assets/hawiyah-wordmark-reverse.svg +4 -0
- package/dist/assets/hawiyah-wordmark-white.svg +4 -0
- package/dist/assets/hawiyah-wordmark.svg +4 -0
- package/dist/assets/icons/LICENSE +21 -0
- package/dist/assets/icons/add-01.svg +4 -0
- package/dist/assets/icons/alert-02.svg +5 -0
- package/dist/assets/icons/arrow-data-transfer-vertical.svg +4 -0
- package/dist/assets/icons/arrow-down-01.svg +3 -0
- package/dist/assets/icons/arrow-down-02.svg +4 -0
- package/dist/assets/icons/arrow-left-01.svg +3 -0
- package/dist/assets/icons/arrow-left-02.svg +4 -0
- package/dist/assets/icons/arrow-right-01.svg +3 -0
- package/dist/assets/icons/arrow-right-02.svg +4 -0
- package/dist/assets/icons/arrow-up-01.svg +3 -0
- package/dist/assets/icons/arrow-up-02.svg +4 -0
- package/dist/assets/icons/arrow-up-right-01.svg +3 -0
- package/dist/assets/icons/calendar-03.svg +6 -0
- package/dist/assets/icons/cancel-01.svg +3 -0
- package/dist/assets/icons/cancel-circle.svg +4 -0
- package/dist/assets/icons/checkmark-circle-02.svg +4 -0
- package/dist/assets/icons/exclamation-mark.svg +4 -0
- package/dist/assets/icons/filter-horizontal.svg +8 -0
- package/dist/assets/icons/home-01.svg +3 -0
- package/dist/assets/icons/information-circle.svg +5 -0
- package/dist/assets/icons/link-04.svg +4 -0
- package/dist/assets/icons/link-square-02.svg +4 -0
- package/dist/assets/icons/lock-password.svg +7 -0
- package/dist/assets/icons/menu-01.svg +5 -0
- package/dist/assets/icons/minus-sign-circle.svg +4 -0
- package/dist/assets/icons/minus-sign.svg +3 -0
- package/dist/assets/icons/provenance.json +403 -0
- package/dist/assets/icons/search-01.svg +4 -0
- package/dist/assets/icons/sorting-05.svg +8 -0
- package/dist/assets/icons/star.svg +3 -0
- package/dist/assets/icons/thumbs-down.svg +4 -0
- package/dist/assets/icons/thumbs-up.svg +4 -0
- package/dist/assets/icons/tick-02.svg +3 -0
- package/dist/assets/icons/view-off-slash.svg +5 -0
- package/dist/assets/icons/view.svg +4 -0
- package/dist/assets/notifications/danger-outline.svg +3 -0
- package/dist/assets/notifications/danger.svg +4 -0
- package/dist/assets/notifications/info-outline.svg +3 -0
- package/dist/assets/notifications/info.svg +4 -0
- package/dist/assets/notifications/neutral-outline.svg +3 -0
- package/dist/assets/notifications/neutral.svg +4 -0
- package/dist/assets/notifications/success-outline.svg +3 -0
- package/dist/assets/notifications/success.svg +4 -0
- package/dist/assets/notifications/warning-outline.svg +3 -0
- package/dist/assets/notifications/warning.svg +4 -0
- package/dist/assets/pagination-arrow.svg +1 -0
- package/dist/assets/select-down.svg +4 -0
- package/dist/assets/select-up.svg +4 -0
- package/dist/brand-loader.css +12 -0
- package/dist/components.css +335 -0
- package/dist/content-navigation.css +44 -0
- package/dist/date-picker.css +50 -0
- package/dist/dga.css +316 -0
- package/dist/direction.css +14 -0
- package/dist/extended.css +310 -0
- package/dist/feedback.css +48 -0
- package/dist/file-upload-list.css +64 -0
- package/dist/icons.css +67 -0
- package/dist/layout.css +129 -0
- package/dist/link-composition.css +10 -0
- package/dist/mobile-navigation.css +43 -0
- package/dist/mobile-top-bar.css +15 -0
- package/dist/navigation-drawer.css +104 -0
- package/dist/nic-accordion.css +97 -0
- package/dist/nic-avatars.css +33 -0
- package/dist/nic-badges.css +56 -0
- package/dist/nic-buttons.css +80 -0
- package/dist/nic-cards.css +77 -0
- package/dist/nic-carousel.css +77 -0
- package/dist/nic-choices.css +64 -0
- package/dist/nic-footer.css +73 -0
- package/dist/nic-foundations.css +115 -0
- package/dist/nic-icons.css +72 -0
- package/dist/nic-input-groups.css +35 -0
- package/dist/nic-links.css +61 -0
- package/dist/nic-lists.css +68 -0
- package/dist/nic-notification-dialog.css +115 -0
- package/dist/nic-notifications.css +126 -0
- package/dist/nic-pagination.css +73 -0
- package/dist/nic-rating.css +53 -0
- package/dist/nic-search.css +70 -0
- package/dist/nic-segmented.css +117 -0
- package/dist/nic-select.css +51 -0
- package/dist/nic-tables.css +68 -0
- package/dist/nic-tabs.css +86 -0
- package/dist/password-field.css +16 -0
- package/dist/portal-branches.css +52 -0
- package/dist/portal.css +24 -0
- package/dist/reset.css +12 -0
- package/dist/riyal.css +32 -0
- package/dist/search-field.css +11 -0
- package/dist/site-verification.css +36 -0
- package/dist/stepper.css +46 -0
- package/dist/styles.css +49 -0
- package/dist/tooltip-placement.css +65 -0
- package/package.json +51 -3
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/* NIC global.css 3883–3957 and master.js 441–520. The Angular host carries the variant. */
|
|
2
|
+
:where(dialog, hw-dialog)[data-variant='notification'] {
|
|
3
|
+
--_hw-notice-ink: var(--hw-color-info);
|
|
4
|
+
--_hw-notice-surface: var(--hw-color-info-subtle);
|
|
5
|
+
--_hw-notice-border: var(--hw-color-notice-info-border);
|
|
6
|
+
--_hw-notice-symbol: url('./assets/icons/information-circle.svg');
|
|
7
|
+
}
|
|
8
|
+
:where(dialog, hw-dialog)[data-variant='notification'][data-tone='success'] {
|
|
9
|
+
--_hw-notice-ink: var(--hw-color-success);
|
|
10
|
+
--_hw-notice-surface: var(--hw-color-success-subtle);
|
|
11
|
+
--_hw-notice-border: var(--hw-color-notice-success-border);
|
|
12
|
+
--_hw-notice-symbol: url('./assets/icons/checkmark-circle-02.svg');
|
|
13
|
+
}
|
|
14
|
+
:where(dialog, hw-dialog)[data-variant='notification'][data-tone='warning'] {
|
|
15
|
+
--_hw-notice-ink: var(--hw-color-notice-warning-text);
|
|
16
|
+
--_hw-notice-surface: var(--hw-color-warning-subtle);
|
|
17
|
+
--_hw-notice-border: var(--hw-color-notice-warning-border);
|
|
18
|
+
--_hw-notice-symbol: url('./assets/icons/alert-02.svg');
|
|
19
|
+
}
|
|
20
|
+
:where(dialog, hw-dialog)[data-variant='notification'][data-tone='danger'] {
|
|
21
|
+
--_hw-notice-ink: var(--hw-color-danger);
|
|
22
|
+
--_hw-notice-surface: var(--hw-color-danger-subtle);
|
|
23
|
+
--_hw-notice-border: var(--hw-color-notice-danger-border);
|
|
24
|
+
--_hw-notice-symbol: url('./assets/icons/cancel-circle.svg');
|
|
25
|
+
}
|
|
26
|
+
:where(dialog, hw-dialog)[data-variant='notification'][data-tone='neutral'] {
|
|
27
|
+
--_hw-notice-ink: var(--hw-color-notice-neutral-text);
|
|
28
|
+
--_hw-notice-surface: var(--hw-color-badge-neutral-background);
|
|
29
|
+
--_hw-notice-border: var(--hw-color-notice-neutral-text);
|
|
30
|
+
--_hw-notice-symbol: url('./assets/icons/minus-sign-circle.svg');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:is(dialog.hw-dialog[data-variant='notification'], hw-dialog[data-variant='notification'] > dialog.hw-dialog) {
|
|
34
|
+
box-sizing: border-box;
|
|
35
|
+
inline-size: min(500px, calc(100% - 40px));
|
|
36
|
+
max-inline-size: none;
|
|
37
|
+
max-block-size: calc(100dvh - 40px);
|
|
38
|
+
padding: 24px;
|
|
39
|
+
overflow: auto;
|
|
40
|
+
border: 0;
|
|
41
|
+
border-inline-start: 4px solid var(--_hw-notice-border);
|
|
42
|
+
border-radius: 12px;
|
|
43
|
+
background: var(--hw-color-surface);
|
|
44
|
+
color: var(--hw-color-text);
|
|
45
|
+
box-shadow: var(--hw-notification-dialog-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 10px 10px -5px rgb(0 0 0 / .04));
|
|
46
|
+
|
|
47
|
+
&[open] {
|
|
48
|
+
display: grid;
|
|
49
|
+
grid-template-columns: 48px minmax(0, 1fr) auto;
|
|
50
|
+
column-gap: 16px;
|
|
51
|
+
row-gap: 8px;
|
|
52
|
+
animation: hw-notice-dialog-in 300ms ease-out;
|
|
53
|
+
}
|
|
54
|
+
&::backdrop { background: rgb(0 0 0 / .5); backdrop-filter: none; animation: hw-notice-backdrop-in 200ms ease-out; }
|
|
55
|
+
& > .hw-dialog-header { display: contents; }
|
|
56
|
+
& > .hw-dialog-header::before, & > .hw-dialog-header::after {
|
|
57
|
+
content: '';
|
|
58
|
+
grid-column: 1;
|
|
59
|
+
grid-row: 1 / span 2;
|
|
60
|
+
align-self: start;
|
|
61
|
+
justify-self: center;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
}
|
|
64
|
+
& > .hw-dialog-header::before { inline-size: 48px; block-size: 48px; border-radius: 50%; background: var(--_hw-notice-surface); }
|
|
65
|
+
& > .hw-dialog-header::after {
|
|
66
|
+
margin-block-start: 12px;
|
|
67
|
+
inline-size: 24px; block-size: 24px;
|
|
68
|
+
background-color: var(--_hw-notice-ink);
|
|
69
|
+
mask: var(--_hw-notice-symbol) center / contain no-repeat;
|
|
70
|
+
}
|
|
71
|
+
& > .hw-dialog-header > :is(h1, h2, h3) { grid-column: 2; grid-row: 1; align-self: start; margin: 0; font-size: 1.125rem; font-weight: 600; overflow-wrap: anywhere; }
|
|
72
|
+
& > .hw-dialog-header > button {
|
|
73
|
+
grid-column: 3; grid-row: 1 / span 2; align-self: start; justify-self: end;
|
|
74
|
+
display: grid; place-items: center; gap: 0; inline-size: 40px; min-inline-size: 40px;
|
|
75
|
+
padding: 0; font-size: 0; color: var(--hw-color-text-muted);
|
|
76
|
+
}
|
|
77
|
+
& > .hw-dialog-header > button:has(.hw-icon)::before { content: none; }
|
|
78
|
+
& > .hw-dialog-header > button::before {
|
|
79
|
+
content: ''; inline-size: 24px; block-size: 24px; background-color: currentColor;
|
|
80
|
+
mask: url('./assets/icons/cancel-01.svg') center / contain no-repeat;
|
|
81
|
+
}
|
|
82
|
+
& > .hw-dialog-header > button:hover { color: var(--hw-color-text); }
|
|
83
|
+
& > .hw-dialog-body {
|
|
84
|
+
grid-column: 2; grid-row: 2; min-inline-size: 0; padding: 0;
|
|
85
|
+
font-size: .875rem; line-height: 1.6; color: var(--hw-color-text-muted); overflow-wrap: anywhere;
|
|
86
|
+
}
|
|
87
|
+
& > .hw-dialog-body > :first-child { margin-block-start: 0; }
|
|
88
|
+
& > .hw-dialog-body > :last-child { margin-block-end: 0; }
|
|
89
|
+
& > .hw-dialog-footer {
|
|
90
|
+
grid-column: 1 / -1; display: flex; flex-wrap: wrap; justify-content: flex-end;
|
|
91
|
+
gap: 12px; margin-block-start: 12px; padding: 0; background: transparent; border: 0;
|
|
92
|
+
}
|
|
93
|
+
& > .hw-dialog-footer:empty { display: none; }
|
|
94
|
+
}
|
|
95
|
+
@keyframes hw-notice-dialog-in { from { transform: translateY(-20px); opacity: 0; } }
|
|
96
|
+
@keyframes hw-notice-backdrop-in { from { opacity: 0; } }
|
|
97
|
+
@media (max-width: 576px) {
|
|
98
|
+
:is(dialog.hw-dialog[data-variant='notification'], hw-dialog[data-variant='notification'] > dialog.hw-dialog) {
|
|
99
|
+
inline-size: calc(100% - 60px);
|
|
100
|
+
& > .hw-dialog-header::before, & > .hw-dialog-header::after, & > .hw-dialog-header > button { grid-row: 1; }
|
|
101
|
+
& > .hw-dialog-body { grid-column: 1 / -1; }
|
|
102
|
+
& > .hw-dialog-footer { flex-direction: column; align-items: stretch; }
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
@media (prefers-reduced-motion: reduce) {
|
|
106
|
+
:is(dialog.hw-dialog[data-variant='notification'], hw-dialog[data-variant='notification'] > dialog.hw-dialog) {
|
|
107
|
+
&[open], &::backdrop { animation: none; }
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
@media (forced-colors: active) {
|
|
111
|
+
:is(dialog.hw-dialog[data-variant='notification'], hw-dialog[data-variant='notification'] > dialog.hw-dialog) {
|
|
112
|
+
border: 1px solid CanvasText; border-inline-start-width: 4px;
|
|
113
|
+
& > .hw-dialog-header::after, & > .hw-dialog-header > button::before { forced-color-adjust: none; background-color: CanvasText; }
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* NIC global.css 3797–3876 and master.js 318–412. */
|
|
2
|
+
.hw-toast-region[data-variant='banner'] {
|
|
3
|
+
--_hw-toast-gutter: 20px;
|
|
4
|
+
--_hw-toast-top: var(--hw-toast-header-offset, 80px);
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
inset-block: var(--_hw-toast-top) auto;
|
|
7
|
+
inset-inline: auto var(--_hw-toast-gutter);
|
|
8
|
+
inline-size: min(450px, calc(100% - 2 * var(--_hw-toast-gutter)));
|
|
9
|
+
max-block-size: calc(100dvh - var(--_hw-toast-top) - var(--_hw-toast-gutter));
|
|
10
|
+
padding: 0;
|
|
11
|
+
overscroll-behavior: contain;
|
|
12
|
+
/* The viewport edge bounds a fixed stack; notices may be taller when text wraps. */
|
|
13
|
+
}
|
|
14
|
+
.hw-toast-region[data-variant='banner']:is([data-position='top-start'], [data-position='bottom-start']) {
|
|
15
|
+
inset-inline: var(--_hw-toast-gutter) auto;
|
|
16
|
+
}
|
|
17
|
+
.hw-toast-region[data-variant='banner']:is([data-position='bottom-start'], [data-position='bottom-end']) {
|
|
18
|
+
inset-block: auto var(--_hw-toast-gutter);
|
|
19
|
+
max-block-size: calc(100dvh - 2 * var(--_hw-toast-gutter));
|
|
20
|
+
}
|
|
21
|
+
.hw-toast-region[data-position='inline'] {
|
|
22
|
+
position: static;
|
|
23
|
+
inline-size: 100%;
|
|
24
|
+
max-block-size: none;
|
|
25
|
+
overflow: visible;
|
|
26
|
+
}
|
|
27
|
+
.hw-toast-region[data-variant='banner'] .hw-toast {
|
|
28
|
+
--_hw-toast-accent: var(--hw-color-notice-info-border);
|
|
29
|
+
--_hw-toast-icon: url('./assets/icons/information-circle.svg');
|
|
30
|
+
--_hw-toast-text: var(--hw-color-info);
|
|
31
|
+
--_hw-toast-bg: var(--hw-color-info-subtle);
|
|
32
|
+
display: grid;
|
|
33
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
34
|
+
gap: 12px;
|
|
35
|
+
align-items: center;
|
|
36
|
+
box-sizing: border-box;
|
|
37
|
+
padding: 16px 24px;
|
|
38
|
+
border: 0;
|
|
39
|
+
border-block-end: 2px solid var(--_hw-toast-accent);
|
|
40
|
+
border-radius: 0;
|
|
41
|
+
color: var(--_hw-toast-text);
|
|
42
|
+
background-color: var(--_hw-toast-bg);
|
|
43
|
+
box-shadow: var(--hw-toast-banner-shadow, 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -1px rgb(0 0 0 / .06));
|
|
44
|
+
font-size: .875rem;
|
|
45
|
+
line-height: 1.5;
|
|
46
|
+
overflow-wrap: anywhere;
|
|
47
|
+
animation: hw-toast-banner-in 300ms ease-out;
|
|
48
|
+
}
|
|
49
|
+
.hw-toast-region[data-variant='banner'] .hw-toast[data-tone='neutral'] {
|
|
50
|
+
--_hw-toast-icon: url('./assets/icons/minus-sign-circle.svg');
|
|
51
|
+
--_hw-toast-text: var(--hw-color-notice-neutral-text);
|
|
52
|
+
--_hw-toast-accent: var(--_hw-toast-text);
|
|
53
|
+
--_hw-toast-bg: var(--hw-color-badge-neutral-background);
|
|
54
|
+
}
|
|
55
|
+
.hw-toast-region[data-variant='banner'] .hw-toast[data-tone='success'] {
|
|
56
|
+
--_hw-toast-icon: url('./assets/icons/checkmark-circle-02.svg');
|
|
57
|
+
--_hw-toast-text: var(--hw-color-success);
|
|
58
|
+
--_hw-toast-accent: var(--hw-color-notice-success-border);
|
|
59
|
+
--_hw-toast-bg: var(--hw-color-success-subtle);
|
|
60
|
+
}
|
|
61
|
+
.hw-toast-region[data-variant='banner'] .hw-toast[data-tone='warning'] {
|
|
62
|
+
--_hw-toast-icon: url('./assets/icons/alert-02.svg');
|
|
63
|
+
--_hw-toast-text: var(--hw-color-notice-warning-text);
|
|
64
|
+
--_hw-toast-accent: var(--hw-color-notice-warning-border);
|
|
65
|
+
--_hw-toast-bg: var(--hw-color-warning-subtle);
|
|
66
|
+
}
|
|
67
|
+
.hw-toast-region[data-variant='banner'] .hw-toast[data-tone='danger'] {
|
|
68
|
+
--_hw-toast-icon: url('./assets/icons/cancel-circle.svg');
|
|
69
|
+
--_hw-toast-text: var(--hw-color-danger);
|
|
70
|
+
--_hw-toast-accent: var(--hw-color-notice-danger-border);
|
|
71
|
+
--_hw-toast-bg: var(--hw-color-danger-subtle);
|
|
72
|
+
}
|
|
73
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-icon {
|
|
74
|
+
grid-column: 1; inline-size: 20px; block-size: 20px;
|
|
75
|
+
background-color: currentColor;
|
|
76
|
+
mask: var(--_hw-toast-icon) center / contain no-repeat;
|
|
77
|
+
}
|
|
78
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-content { grid-column: 2; min-inline-size: 0; }
|
|
79
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-content p { color: inherit; }
|
|
80
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-dismiss { grid-column: 3; grid-row: 1; align-self: center; color: inherit; }
|
|
81
|
+
@keyframes hw-toast-banner-in { from { opacity: 0; transform: translateX(calc(100% * var(--_hw-inline-sign, 1))); } }
|
|
82
|
+
@media (max-width: 576px) {
|
|
83
|
+
.hw-toast-region[data-variant='banner'] { --_hw-toast-gutter: 10px; --_hw-toast-top: var(--hw-toast-header-offset, 70px); }
|
|
84
|
+
}
|
|
85
|
+
@media (prefers-reduced-motion: reduce) {
|
|
86
|
+
.hw-toast-region[data-variant='banner'] .hw-toast { animation: none; }
|
|
87
|
+
}
|
|
88
|
+
@media (forced-colors: active) {
|
|
89
|
+
.hw-toast-region[data-variant='banner'] .hw-toast { border: 1px solid CanvasText; border-block-end-width: 2px; }
|
|
90
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-icon { forced-color-adjust: none; background-color: CanvasText; }
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/* Empty live regions stay mounted for announcements without occupying a gap. */
|
|
95
|
+
.hw-toast-region[data-variant='banner'] { row-gap: 0; }
|
|
96
|
+
.hw-toast-region[data-variant='banner'] > [data-hw-live]:has(.hw-toast) + [data-hw-live]:has(.hw-toast) {
|
|
97
|
+
margin-block-start: var(--hw-space-3);
|
|
98
|
+
}
|
|
99
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
100
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-dismiss { transition: color 200ms ease, background-color 200ms ease; }
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-dismiss {
|
|
104
|
+
color: var(--hw-color-text);
|
|
105
|
+
font-size: 0;
|
|
106
|
+
gap: 0;
|
|
107
|
+
inline-size: 40px;
|
|
108
|
+
min-inline-size: 40px;
|
|
109
|
+
padding-inline: 0;
|
|
110
|
+
}
|
|
111
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-dismiss::before {
|
|
112
|
+
content: '';
|
|
113
|
+
display: block;
|
|
114
|
+
inline-size: 20px;
|
|
115
|
+
block-size: 20px;
|
|
116
|
+
background-color: currentColor;
|
|
117
|
+
mask: url('./assets/icons/cancel-01.svg') center / contain no-repeat;
|
|
118
|
+
}
|
|
119
|
+
@media (forced-colors: active) {
|
|
120
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-dismiss::before {
|
|
121
|
+
forced-color-adjust: none;
|
|
122
|
+
background-color: ButtonText;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/* A dismiss button that carries its own DGA icon element does not need the drawn one. */
|
|
126
|
+
.hw-toast-region[data-variant='banner'] .hw-toast-dismiss:has(.hw-icon)::before { content: none; }
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/* NIC CSS 3505–3666 / 4005–4139. See docs/nic-pagination.md. */
|
|
2
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
3
|
+
--hw-profile-page-size: 40px; --hw-profile-page-radius: 0px;
|
|
4
|
+
--hw-profile-page-margin: 40px; --hw-profile-page-current-bg: transparent;
|
|
5
|
+
--hw-profile-page-current-border: transparent; --hw-profile-page-underline: 3px;
|
|
6
|
+
--hw-profile-page-weight: 400; --hw-profile-page-align: center;
|
|
7
|
+
}
|
|
8
|
+
:where([data-hw-theme]:not([data-hw-theme='dga'], [data-hw-theme='custom'])) {
|
|
9
|
+
--hw-profile-page-size: initial; --hw-profile-page-radius: initial;
|
|
10
|
+
--hw-profile-page-margin: initial; --hw-profile-page-current-bg: initial;
|
|
11
|
+
--hw-profile-page-current-border: initial; --hw-profile-page-underline: initial;
|
|
12
|
+
--hw-profile-page-weight: initial; --hw-profile-page-align: initial;
|
|
13
|
+
}
|
|
14
|
+
.hw-pagination { position: relative; justify-content: var(--hw-profile-page-align, start); margin-block: var(--hw-profile-page-margin, 0px); gap: 8px; max-inline-size: 100%; }
|
|
15
|
+
.hw-pagination[hidden] { display: none; }
|
|
16
|
+
.hw-pagination-items { display: contents; }
|
|
17
|
+
.hw-pagination :is(.hw-pagination-item, .hw-pagination-arrow, .hw-pagination-gap-trigger, [data-hw-page], .hw-pagination-ellipsis) {
|
|
18
|
+
position: relative; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
|
|
19
|
+
min-inline-size: var(--hw-profile-page-size, var(--hw-control-height-sm));
|
|
20
|
+
block-size: var(--hw-profile-page-size, var(--hw-control-height-sm)); min-block-size: var(--hw-profile-page-size, var(--hw-control-height-sm));
|
|
21
|
+
padding: 0 .25rem; border: 1px solid transparent; border-radius: var(--hw-profile-page-radius, var(--hw-radius-md));
|
|
22
|
+
background: transparent; color: var(--hw-color-text); font-family: inherit; font-size: 14px;
|
|
23
|
+
font-weight: 400; line-height: 1; text-decoration: none; cursor: pointer;
|
|
24
|
+
transition: background-color var(--hw-duration-pagination) ease, color var(--hw-duration-pagination) ease;
|
|
25
|
+
}
|
|
26
|
+
.hw-pagination :is(.hw-pagination-item, .hw-pagination-arrow, [data-hw-page]):is(:hover, :active):not(:disabled, [aria-disabled='true']) { background: var(--hw-color-surface-muted); color: var(--hw-color-text); box-shadow: none; }
|
|
27
|
+
.hw-pagination :is(.hw-pagination-item, [data-hw-page])[aria-current='page'] { color: var(--hw-color-text); font-weight: var(--hw-profile-page-weight, var(--hw-weight-semibold)); background: var(--hw-profile-page-current-bg, var(--hw-color-primary-subtle)); border-color: var(--hw-profile-page-current-border, var(--hw-color-primary)); }
|
|
28
|
+
.hw-pagination :is(.hw-pagination-item, [data-hw-page])[aria-current='page']::after {
|
|
29
|
+
content: ''; position: absolute; inset-inline: 4px; inset-block-end: -1px;
|
|
30
|
+
block-size: var(--hw-profile-page-underline, 0px); border-radius: 9999px; background: var(--hw-color-primary);
|
|
31
|
+
}
|
|
32
|
+
.hw-pagination .hw-button:is(:disabled, [aria-disabled='true']) { color: var(--hw-color-on-disabled); background: transparent; border-color: transparent; opacity: .5; cursor: not-allowed; }
|
|
33
|
+
.hw-pagination .hw-pagination-gap-trigger[aria-disabled='true'] { color: var(--hw-color-on-disabled); opacity: .5; cursor: not-allowed; }
|
|
34
|
+
.hw-pagination :is(.hw-pagination-item, .hw-pagination-arrow, .hw-pagination-gap-trigger, [data-hw-page]):focus-visible:not(:disabled, [aria-disabled='true']) { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: 2px; background: var(--hw-color-surface-muted); }
|
|
35
|
+
.hw-pagination-arrow::before { content: ''; inline-size: 18px; block-size: 18px; background: currentColor; mask: url('./assets/icons/arrow-right-01.svg') center / contain no-repeat; transform: scaleX(var(--_hw-inline-sign, 1)); }
|
|
36
|
+
.hw-pagination-arrow[data-hw-previous]::before { transform: scaleX(calc(-1 * var(--_hw-inline-sign, 1))); }
|
|
37
|
+
.hw-pagination-gap { position: static; }
|
|
38
|
+
.hw-pagination-gap-trigger { list-style: none; }
|
|
39
|
+
.hw-pagination-gap-trigger::-webkit-details-marker { display: none; }
|
|
40
|
+
.hw-pagination-ellipsis { cursor: default; }
|
|
41
|
+
.hw-pagination-menu {
|
|
42
|
+
position: absolute; z-index: 5; inset-block-start: calc(100% + 4px); inset-inline: 0; margin-inline: auto;
|
|
43
|
+
inline-size: max-content; min-inline-size: 80px; max-inline-size: 100%; max-block-size: 300px; overflow-y: auto;
|
|
44
|
+
box-sizing: border-box; padding: 8px 0; border: 1px solid var(--hw-color-pagination-menu-border);
|
|
45
|
+
border-radius: 4px; background: var(--hw-color-surface); box-shadow: var(--hw-shadow-pagination);
|
|
46
|
+
}
|
|
47
|
+
.hw-pagination-gap:not([open]) > .hw-pagination-menu { display: none; }
|
|
48
|
+
.hw-pagination .hw-pagination-menu > .hw-pagination-item {
|
|
49
|
+
display: flex; inline-size: 100%; min-block-size: 40px; block-size: 40px; padding-inline: 16px;
|
|
50
|
+
border: 0; border-radius: 0; font-size: 14px; transition-duration: var(--hw-duration-pagination-item);
|
|
51
|
+
}
|
|
52
|
+
.hw-pagination .hw-pagination-menu > .hw-pagination-item:focus-visible { outline-color: var(--hw-color-focus); outline-offset: -2px; }
|
|
53
|
+
.hw-pagination-jump { display: grid; gap: .5rem; padding: .5rem; inline-size: 12rem; max-inline-size: 100%; box-sizing: border-box; }
|
|
54
|
+
.hw-pagination-jump .hw-label { display: grid; gap: .5rem; margin: 0; }
|
|
55
|
+
.hw-pagination-jump .hw-input { min-inline-size: 0; inline-size: 100%; }
|
|
56
|
+
@media (max-width: 576px) {
|
|
57
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) { --hw-profile-page-size: 30px; }
|
|
58
|
+
.hw-pagination { gap: 6px; }
|
|
59
|
+
.hw-pagination :is(.hw-pagination-item, .hw-pagination-arrow, .hw-pagination-gap-trigger, [data-hw-page], .hw-pagination-ellipsis) { font-size: 12px; }
|
|
60
|
+
.hw-pagination .hw-pagination-arrow { min-inline-size: 40px; min-block-size: 40px; block-size: 40px; }
|
|
61
|
+
.hw-pagination .hw-pagination-gap-trigger { min-inline-size: 40px; }
|
|
62
|
+
.hw-pagination-arrow::before { inline-size: 16px; block-size: 16px; }
|
|
63
|
+
}
|
|
64
|
+
@media (prefers-reduced-motion: reduce) {
|
|
65
|
+
.hw-pagination :is(.hw-pagination-item, .hw-pagination-arrow, .hw-pagination-gap-trigger, [data-hw-page]) { transition: none; }
|
|
66
|
+
}
|
|
67
|
+
@media (forced-colors: active) {
|
|
68
|
+
.hw-pagination-arrow::before { background: ButtonText; forced-color-adjust: none; }
|
|
69
|
+
.hw-pagination-arrow:disabled::before { background: GrayText; }
|
|
70
|
+
.hw-pagination [aria-current='page'] { outline: 2px solid Highlight; outline-offset: -2px; }
|
|
71
|
+
.hw-pagination [aria-current='page']::after { background: Highlight; forced-color-adjust: none; }
|
|
72
|
+
.hw-pagination-menu { border-color: CanvasText; }
|
|
73
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* NIC global.css 3427–3502: 30px stars and a 200ms fractional-fill transition.
|
|
2
|
+
Native radio targets, visible boundaries and direction-aware fill are Hawiyah
|
|
3
|
+
accessibility adaptations. See docs/nic-rating.md. */
|
|
4
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
5
|
+
--hw-profile-rating-size: 30px;
|
|
6
|
+
}
|
|
7
|
+
:where([data-hw-theme]:not([data-hw-theme='dga'], [data-hw-theme='custom'])) {
|
|
8
|
+
--hw-profile-rating-size: initial;
|
|
9
|
+
}
|
|
10
|
+
.hw-rating label > span[aria-hidden='true'] {
|
|
11
|
+
font-size: var(--hw-profile-rating-size, 1.75rem);
|
|
12
|
+
color: var(--hw-color-rating-empty);
|
|
13
|
+
-webkit-text-stroke: .5px var(--hw-color-rating-outline);
|
|
14
|
+
transition: color var(--hw-duration-rating) ease;
|
|
15
|
+
}
|
|
16
|
+
.hw-rating label:is(:has(input:checked), :has(~ label input:checked)) > span[aria-hidden='true'] {
|
|
17
|
+
color: var(--hw-color-rating-fill); -webkit-text-stroke-color: currentColor;
|
|
18
|
+
}
|
|
19
|
+
@media (hover: hover) {
|
|
20
|
+
.hw-rating:not([data-hw-readonly='true']):not([aria-readonly='true']):has(label:hover input:not(:disabled)) label > span[aria-hidden='true'] {
|
|
21
|
+
color: var(--hw-color-rating-empty); -webkit-text-stroke-color: var(--hw-color-rating-outline);
|
|
22
|
+
}
|
|
23
|
+
.hw-rating:not([data-hw-readonly='true']):not([aria-readonly='true']):has(label:hover input:not(:disabled)) label:is(:hover, :has(~ label:hover input:not(:disabled))) > span[aria-hidden='true'] {
|
|
24
|
+
color: var(--hw-color-rating-fill); -webkit-text-stroke-color: currentColor;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
.hw-rating-display { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); max-inline-size: 100%; }
|
|
28
|
+
.hw-rating-stars { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; min-inline-size: 0; }
|
|
29
|
+
.hw-rating-star {
|
|
30
|
+
position: relative; display: inline-block; flex: none;
|
|
31
|
+
inline-size: var(--hw-profile-rating-size, 1.75rem); block-size: var(--hw-profile-rating-size, 1.75rem);
|
|
32
|
+
font-family: sans-serif; font-size: var(--hw-profile-rating-size, 1.75rem);
|
|
33
|
+
font-weight: 400; line-height: var(--hw-profile-rating-size, 1.75rem); text-align: center;
|
|
34
|
+
color: var(--hw-color-rating-empty); -webkit-text-stroke: .5px var(--hw-color-rating-outline);
|
|
35
|
+
}
|
|
36
|
+
.hw-rating-fill {
|
|
37
|
+
position: absolute; inset-inline-start: 0; inset-block-start: 0;
|
|
38
|
+
inline-size: clamp(0%, var(--hw-rating-fill, 0%), 100%); block-size: 100%;
|
|
39
|
+
overflow: hidden; color: var(--hw-color-rating-fill); -webkit-text-stroke-color: currentColor;
|
|
40
|
+
transition: inline-size var(--hw-duration-rating) ease;
|
|
41
|
+
}
|
|
42
|
+
.hw-rating-fill::before {
|
|
43
|
+
content: '★'; position: absolute; inset-inline-start: 0; inset-block-start: 0;
|
|
44
|
+
inline-size: var(--hw-profile-rating-size, 1.75rem); block-size: 100%;
|
|
45
|
+
}
|
|
46
|
+
.hw-rating-score { font-weight: var(--hw-weight-bold); color: var(--hw-color-text); direction: ltr; unicode-bidi: isolate; }
|
|
47
|
+
@media (prefers-reduced-motion: reduce) {
|
|
48
|
+
.hw-rating label > span[aria-hidden='true'], .hw-rating-fill { transition: none; }
|
|
49
|
+
}
|
|
50
|
+
@media (forced-colors: active) {
|
|
51
|
+
.hw-rating-star { color: Canvas; -webkit-text-stroke-color: CanvasText; forced-color-adjust: none; }
|
|
52
|
+
.hw-rating-fill { color: Highlight; -webkit-text-stroke-color: Highlight; forced-color-adjust: none; }
|
|
53
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/* NIC global.css 2148–2312. Scoped free-text search composition; see docs/nic-search.md. */
|
|
2
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
3
|
+
--hw-profile-search-input-start: 12px;
|
|
4
|
+
--hw-profile-search-clear-size: 18px;
|
|
5
|
+
--hw-profile-search-clear-hover: var(--hw-color-danger);
|
|
6
|
+
--hw-profile-search-duration: 200ms;
|
|
7
|
+
}
|
|
8
|
+
:where([data-hw-theme]:not([data-hw-theme='dga'], [data-hw-theme='custom'])) {
|
|
9
|
+
--hw-profile-search-input-start: initial;
|
|
10
|
+
--hw-profile-search-clear-size: initial;
|
|
11
|
+
--hw-profile-search-clear-hover: initial;
|
|
12
|
+
--hw-profile-search-duration: initial;
|
|
13
|
+
}
|
|
14
|
+
.hw-search-field { min-inline-size: 0; }
|
|
15
|
+
.hw-search-control > .hw-input { padding-inline-start: var(--hw-profile-search-input-start, var(--hw-space-4)); border-radius: var(--hw-profile-control-radius, var(--hw-radius-md)); }
|
|
16
|
+
.hw-search-control > .hw-search-clear {
|
|
17
|
+
display: grid; place-items: center; color: var(--hw-color-search-clear, var(--hw-color-text-muted));
|
|
18
|
+
transition: color var(--hw-profile-search-duration, var(--hw-duration-fast)) ease, background-color var(--hw-profile-search-duration, var(--hw-duration-fast)) ease;
|
|
19
|
+
}
|
|
20
|
+
.hw-search-control > .hw-search-clear:hover:not(:disabled) { color: var(--hw-profile-search-clear-hover, var(--hw-color-text)); }
|
|
21
|
+
.hw-search-clear-icon { inline-size: var(--hw-profile-search-clear-size, 20px); block-size: var(--hw-profile-search-clear-size, 20px); }
|
|
22
|
+
.hw-search-control > .hw-search-suggestions {
|
|
23
|
+
position: absolute; z-index: 10; inset-block-start: calc(100% + 4px); inset-inline: 0;
|
|
24
|
+
box-sizing: border-box; margin: 0; padding: 0; list-style: none;
|
|
25
|
+
max-block-size: 280px; overflow-y: auto; overscroll-behavior: contain;
|
|
26
|
+
background: var(--hw-color-surface); color: var(--hw-color-text-muted);
|
|
27
|
+
border: 1px solid var(--hw-color-search-suggestion-border, var(--hw-color-border)); border-radius: 8px;
|
|
28
|
+
box-shadow: var(--hw-search-suggestion-shadow, 0 8px 24px rgb(16 24 40 / .12));
|
|
29
|
+
}
|
|
30
|
+
.hw-search-control > .hw-search-suggestions[hidden] { display: none; }
|
|
31
|
+
.hw-search-option {
|
|
32
|
+
box-sizing: border-box; min-block-size: 40px; padding: 10px 14px;
|
|
33
|
+
font: inherit; font-size: 14px; line-height: 1.4; color: var(--hw-color-text-muted);
|
|
34
|
+
border-block-end: 1px solid var(--hw-color-surface-muted); cursor: pointer; overflow-wrap: anywhere;
|
|
35
|
+
}
|
|
36
|
+
.hw-search-option:last-child { border-block-end: 0; }
|
|
37
|
+
.hw-search-option:hover, .hw-search-option[aria-selected='true'] { background: var(--hw-color-surface-muted); }
|
|
38
|
+
.hw-search-option[aria-selected='true'] { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: -2px; }
|
|
39
|
+
.hw-search-option strong { color: var(--hw-color-primary-text); font-weight: 700; }
|
|
40
|
+
.hw-search-submit { flex: none; display: inline-flex; align-items: center; justify-content: center; inline-size: var(--hw-control-height); min-inline-size: var(--hw-control-height); padding: 0; }
|
|
41
|
+
.hw-search-submit-icon { display: inline-block; flex: none; inline-size: 24px; block-size: 24px; background: currentColor; mask: url('./assets/icons/search-01.svg') center / contain no-repeat; }
|
|
42
|
+
.hw-search-form { display: flex; align-items: start; gap: 16px; min-inline-size: 0; }
|
|
43
|
+
.hw-search-form > :is(.hw-field, .hw-search-field, hw-search-field) { flex: 1; min-inline-size: 0; }
|
|
44
|
+
.hw-search-form > .hw-search-submit { align-self: end; }
|
|
45
|
+
.hw-search-terms { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-block: 16px; }
|
|
46
|
+
.hw-search-terms > :is(h3, h4) { flex: 0 0 100%; margin: 0 0 4px; font-size: 14px; line-height: 1.5; font-weight: 600; color: var(--hw-color-text-muted); }
|
|
47
|
+
.hw-search-term {
|
|
48
|
+
display: inline-block; box-sizing: border-box; padding: 6px 14px; margin: 0; font: inherit; font-size: 13px; line-height: 1.4;
|
|
49
|
+
border-radius: 20px; border: 1px solid var(--hw-color-search-term-border, var(--hw-color-border));
|
|
50
|
+
background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); text-decoration: none; cursor: pointer;
|
|
51
|
+
transition: background-color 200ms ease, border-color 200ms ease, color 200ms ease;
|
|
52
|
+
}
|
|
53
|
+
.hw-search-term:is(:hover, :focus) { background: var(--hw-color-primary); border-color: var(--hw-color-primary); color: var(--hw-color-on-primary); text-decoration: none; }
|
|
54
|
+
.hw-search-advanced { display: flex; justify-content: center; }
|
|
55
|
+
.hw-search-advanced > :is(a, button) {
|
|
56
|
+
display: inline-block; box-sizing: border-box; margin-block-start: 16px; padding: 10px 28px; border-radius: 6px;
|
|
57
|
+
font: inherit; font-size: 16px; line-height: 28px; background: var(--hw-color-primary); border: 1px solid var(--hw-color-primary); color: var(--hw-color-on-primary); text-decoration: none; cursor: pointer;
|
|
58
|
+
transition: background-color 200ms ease, border-color 200ms ease;
|
|
59
|
+
}
|
|
60
|
+
.hw-search-advanced > :is(a, button):is(:hover, :focus) { background: var(--hw-color-primary-hover); border-color: var(--hw-color-primary-hover); color: var(--hw-color-on-primary); text-decoration: none; }
|
|
61
|
+
.hw-search-term:focus-visible, .hw-search-advanced > :is(a, button):focus-visible { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: 2px; }
|
|
62
|
+
@media (prefers-reduced-motion: reduce) {
|
|
63
|
+
.hw-search-control > .hw-search-clear, .hw-search-term, .hw-search-advanced > :is(a, button) { transition: none; }
|
|
64
|
+
}
|
|
65
|
+
@media (forced-colors: active) {
|
|
66
|
+
.hw-search-control > .hw-search-clear, .hw-search-option, .hw-search-option strong { color: CanvasText; }
|
|
67
|
+
.hw-search-submit-icon { forced-color-adjust: none; background: ButtonText; }
|
|
68
|
+
.hw-search-option[aria-selected='true'] { outline: 2px solid Highlight; outline-offset: -2px; }
|
|
69
|
+
.hw-search-term, .hw-search-advanced > :is(a, button) { border-color: ButtonText; }
|
|
70
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/* NIC global.css 1294–1386. See docs/nic-segmented.md for cascade,
|
|
2
|
+
disabled, dark-mode and focus adaptations. Calendar switches are separate. */
|
|
3
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
4
|
+
--hw-profile-segment-gap: 0px;
|
|
5
|
+
--hw-profile-segment-group-padding: 0px 0.5rem;
|
|
6
|
+
--hw-profile-segment-group-border: 0px;
|
|
7
|
+
--hw-profile-segment-group-background: transparent;
|
|
8
|
+
--hw-profile-segment-min-width: 4.75rem;
|
|
9
|
+
--hw-profile-segment-padding: 0.375rem 0.75rem;
|
|
10
|
+
--hw-profile-segment-font: 1rem;
|
|
11
|
+
--hw-profile-segment-leading: 1.5rem;
|
|
12
|
+
--hw-profile-segment-radius: 0px;
|
|
13
|
+
--hw-profile-segment-outer-radius: 0.5rem;
|
|
14
|
+
--hw-profile-segment-border: 0px;
|
|
15
|
+
--hw-profile-segment-selected-border: transparent;
|
|
16
|
+
--hw-profile-segment-selected-shadow: none;
|
|
17
|
+
--hw-profile-segment-separator: 1px;
|
|
18
|
+
--hw-profile-segment-transition: none;
|
|
19
|
+
--hw-profile-segment-focus-width: 2px;
|
|
20
|
+
--hw-profile-segment-focus-offset: -3px;
|
|
21
|
+
--hw-profile-segment-mobile-height: 3rem;
|
|
22
|
+
--hw-profile-segment-mobile-padding: 1.25rem;
|
|
23
|
+
--hw-profile-segment-mobile-width: 100%;
|
|
24
|
+
--hw-profile-segment-mobile-flex: 1 1 auto;
|
|
25
|
+
}
|
|
26
|
+
:where([data-hw-theme]:not([data-hw-theme='dga'], [data-hw-theme='custom'])) {
|
|
27
|
+
--hw-profile-segment-gap: initial;
|
|
28
|
+
--hw-profile-segment-group-padding: initial;
|
|
29
|
+
--hw-profile-segment-group-border: initial;
|
|
30
|
+
--hw-profile-segment-group-background: initial;
|
|
31
|
+
--hw-profile-segment-min-width: initial;
|
|
32
|
+
--hw-profile-segment-padding: initial;
|
|
33
|
+
--hw-profile-segment-font: initial;
|
|
34
|
+
--hw-profile-segment-leading: initial;
|
|
35
|
+
--hw-profile-segment-radius: initial;
|
|
36
|
+
--hw-profile-segment-outer-radius: initial;
|
|
37
|
+
--hw-profile-segment-border: initial;
|
|
38
|
+
--hw-profile-segment-selected-border: initial;
|
|
39
|
+
--hw-profile-segment-selected-shadow: initial;
|
|
40
|
+
--hw-profile-segment-separator: initial;
|
|
41
|
+
--hw-profile-segment-transition: initial;
|
|
42
|
+
--hw-profile-segment-focus-width: initial;
|
|
43
|
+
--hw-profile-segment-focus-offset: initial;
|
|
44
|
+
--hw-profile-segment-mobile-height: initial;
|
|
45
|
+
--hw-profile-segment-mobile-padding: initial;
|
|
46
|
+
--hw-profile-segment-mobile-width: initial;
|
|
47
|
+
--hw-profile-segment-mobile-flex: initial;
|
|
48
|
+
}
|
|
49
|
+
.hw-toggle-group:not([data-variant='outline']) {
|
|
50
|
+
gap: var(--hw-profile-segment-gap, var(--hw-space-1));
|
|
51
|
+
padding: var(--hw-profile-segment-group-padding, var(--hw-space-1));
|
|
52
|
+
border-width: var(--hw-profile-segment-group-border, 1px);
|
|
53
|
+
background: var(--hw-profile-segment-group-background, var(--hw-color-surface-muted));
|
|
54
|
+
}
|
|
55
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label) {
|
|
56
|
+
box-sizing: border-box; min-inline-size: var(--hw-profile-segment-min-width, 0px); min-block-size: var(--hw-control-height-sm);
|
|
57
|
+
padding: var(--hw-profile-segment-padding, var(--hw-space-1) var(--hw-space-3));
|
|
58
|
+
border-width: var(--hw-profile-segment-border, 1px); border-radius: var(--hw-profile-segment-radius, var(--hw-radius-sm));
|
|
59
|
+
background: transparent; color: var(--hw-dga-on, var(--hw-color-text-muted)) var(--hw-dga-off, var(--hw-color-text));
|
|
60
|
+
font-family: var(--hw-font-sans); font-size: var(--hw-profile-segment-font, var(--hw-text-sm));
|
|
61
|
+
line-height: var(--hw-profile-segment-leading, var(--hw-leading-normal)); font-weight: var(--hw-weight-medium);
|
|
62
|
+
box-shadow: none; transition: var(--hw-profile-segment-transition, background-color var(--hw-duration-fast));
|
|
63
|
+
}
|
|
64
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label):first-of-type { border-start-start-radius: var(--hw-profile-segment-outer-radius, var(--hw-radius-sm)); border-end-start-radius: var(--hw-profile-segment-outer-radius, var(--hw-radius-sm)); }
|
|
65
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label):last-of-type { border-start-end-radius: var(--hw-profile-segment-outer-radius, var(--hw-radius-sm)); border-end-end-radius: var(--hw-profile-segment-outer-radius, var(--hw-radius-sm)); }
|
|
66
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label) + :is(button,label)::before { content:''; pointer-events:none; position:absolute; inset-block:0; inset-inline-start:0; inline-size:var(--hw-profile-segment-separator,0px); background:var(--hw-color-border); }
|
|
67
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label):hover:not(:disabled,[aria-disabled='true'],:has(input:disabled,input[readonly]),[aria-pressed='true'],:has(input:checked)) { background:var(--hw-dga-on,transparent) var(--hw-dga-off,var(--hw-color-segment-hover)); color:var(--hw-dga-on,var(--hw-color-primary-text)) var(--hw-dga-off,var(--hw-color-text)); }
|
|
68
|
+
.hw-toggle-group:not([data-variant='outline']) > :is([aria-pressed='true'],label:has(input:checked)) {
|
|
69
|
+
background:var(--hw-color-segment-selected); color:var(--hw-color-on-segment-selected);
|
|
70
|
+
border-color:var(--hw-profile-segment-selected-border,var(--hw-color-border)); box-shadow:var(--hw-profile-segment-selected-shadow,var(--hw-shadow-sm));
|
|
71
|
+
}
|
|
72
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label):active:not(:disabled,[aria-disabled='true'],:has(input:disabled,input[readonly])) { background:var(--hw-color-segment-selected); color:var(--hw-color-on-segment-selected); box-shadow:none; }
|
|
73
|
+
.hw-toggle-group:not([data-variant='outline']) > :is([aria-pressed='true'],label:has(input:checked),:active)::before,
|
|
74
|
+
.hw-toggle-group:not([data-variant='outline']) > :is([aria-pressed='true'],label:has(input:checked),:active) + :is(button,label)::before { opacity:0; }
|
|
75
|
+
/* A focus ring stays visible on selected and read-only choices. */
|
|
76
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button:focus-visible,label:has(input:focus-visible)) {
|
|
77
|
+
background:var(--hw-color-segment-selected); color:var(--hw-color-on-segment-selected);
|
|
78
|
+
outline:var(--hw-profile-segment-focus-width,var(--hw-focus-width)) solid var(--hw-dga-on,var(--hw-color-focus)) var(--hw-dga-off,var(--hw-color-on-segment-selected));
|
|
79
|
+
outline-offset:var(--hw-profile-segment-focus-offset,1px); z-index:1;
|
|
80
|
+
}
|
|
81
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button:disabled,label:has(input:disabled)) { background:var(--hw-color-disabled); color:var(--hw-color-on-disabled); box-shadow:none; cursor:not-allowed; }
|
|
82
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button:disabled[aria-pressed='true'],label:has(input:disabled:checked)) { outline:1px solid var(--hw-color-border-strong); outline-offset:-1px; }
|
|
83
|
+
@media (max-width:576px) {
|
|
84
|
+
.hw-toggle-group:not([data-variant='outline']) { inline-size:var(--hw-profile-segment-mobile-width,auto); }
|
|
85
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label) { flex:var(--hw-profile-segment-mobile-flex,0 1 auto); min-block-size:var(--hw-profile-segment-mobile-height,var(--hw-control-height-sm)); padding-inline:var(--hw-profile-segment-mobile-padding,var(--hw-space-3)); }
|
|
86
|
+
}
|
|
87
|
+
@media (prefers-reduced-motion:reduce) { .hw-toggle-group > :is(button,label) { transition:none; } }
|
|
88
|
+
@media (forced-colors:active) {
|
|
89
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button,label) { background:Canvas; color:CanvasText; border:1px solid ButtonText; }
|
|
90
|
+
.hw-toggle-group:not([data-variant='outline']) > :is([aria-pressed='true'],label:has(input:checked)) { background:Highlight; color:HighlightText; outline:2px solid Highlight; outline-offset:-2px; }
|
|
91
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button:focus-visible,label:has(input:focus-visible)) { outline:2px solid Highlight; outline-offset:2px; }
|
|
92
|
+
.hw-toggle-group:not([data-variant='outline']) > :is(button:disabled,label:has(input:disabled)) { color:GrayText; background:Canvas; border-color:GrayText; }
|
|
93
|
+
}
|
|
94
|
+
/* Attached action groups keep ordinary button semantics. Support Angular's
|
|
95
|
+
native IconButton wrapper without reparenting framework-owned content. */
|
|
96
|
+
.hw-button-group > hw-icon-button { display:inline-flex; }
|
|
97
|
+
.hw-button-group[data-variant='attached'] > hw-icon-button > .hw-button { inline-size:100%; }
|
|
98
|
+
.hw-button-group[data-variant='attached'] > :is(.hw-button,hw-icon-button) + :is(.hw-button,hw-icon-button) { margin-inline-start:-1px; }
|
|
99
|
+
.hw-button-group[data-variant='attached'] > hw-icon-button:not(:first-child) > .hw-button { border-start-start-radius:0; border-end-start-radius:0; }
|
|
100
|
+
.hw-button-group[data-variant='attached'] > hw-icon-button:not(:last-child) > .hw-button { border-start-end-radius:0; border-end-end-radius:0; }
|
|
101
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > :is(.hw-button,hw-icon-button) { margin-inline:0; }
|
|
102
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > :is(.hw-button,hw-icon-button) + :is(.hw-button,hw-icon-button) { margin-block-start:-1px; }
|
|
103
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > .hw-button,
|
|
104
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > hw-icon-button > .hw-button { border-radius:0; }
|
|
105
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > .hw-button:first-child,
|
|
106
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > hw-icon-button:first-child > .hw-button { border-start-start-radius:var(--hw-profile-control-radius,var(--hw-radius-md)); border-start-end-radius:var(--hw-profile-control-radius,var(--hw-radius-md)); }
|
|
107
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > .hw-button:last-child,
|
|
108
|
+
.hw-button-group[data-variant='attached'][data-orientation='vertical'] > hw-icon-button:last-child > .hw-button { border-end-start-radius:var(--hw-profile-control-radius,var(--hw-radius-md)); border-end-end-radius:var(--hw-profile-control-radius,var(--hw-radius-md)); }
|
|
109
|
+
.hw-button-group > hw-icon-button:has(:focus-visible) { position:relative; z-index:1; }
|
|
110
|
+
|
|
111
|
+
/* Read-only pressed buttons remain keyboard stops, including outline mode. */
|
|
112
|
+
.hw-toggle-group[data-hw-readonly='true'][data-variant='outline'] > button[aria-disabled='true']:focus-visible:not(:disabled) {
|
|
113
|
+
outline:var(--hw-focus-width) solid var(--hw-color-focus); outline-offset:2px;
|
|
114
|
+
}
|
|
115
|
+
@media (forced-colors:active) {
|
|
116
|
+
.hw-toggle-group[data-hw-readonly='true'][data-variant='outline'] > button[aria-disabled='true']:focus-visible:not(:disabled) { outline:2px solid Highlight; }
|
|
117
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* NIC global.css 2439–2446, 2497–2527 and 2641–2649.
|
|
2
|
+
Keep the native picker and draw its indicator independently of the focus line. */
|
|
3
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
4
|
+
--hw-profile-select-down: , url('./assets/select-down.svg');
|
|
5
|
+
--hw-profile-select-up: , url('./assets/select-up.svg');
|
|
6
|
+
--hw-profile-select-size: , 18px 18px;
|
|
7
|
+
--hw-profile-select-position-ltr: , right 10px center;
|
|
8
|
+
--hw-profile-select-position-rtl: , left 12px center;
|
|
9
|
+
--hw-profile-select-appearance: none;
|
|
10
|
+
--hw-profile-select-font: .875rem;
|
|
11
|
+
--hw-profile-select-padding-ltr: 35px;
|
|
12
|
+
--hw-profile-select-padding-rtl: 36px;
|
|
13
|
+
--hw-profile-helper-size: .625rem;
|
|
14
|
+
--hw-profile-error-size: .75rem;
|
|
15
|
+
--hw-profile-error-offset: -.25rem;
|
|
16
|
+
}
|
|
17
|
+
:where([data-hw-theme]:not([data-hw-theme='dga'], [data-hw-theme='custom'])) {
|
|
18
|
+
--hw-profile-select-down: initial;
|
|
19
|
+
--hw-profile-select-up: initial;
|
|
20
|
+
--hw-profile-select-size: initial;
|
|
21
|
+
--hw-profile-select-position-ltr: initial;
|
|
22
|
+
--hw-profile-select-position-rtl: initial;
|
|
23
|
+
--hw-profile-select-appearance: initial;
|
|
24
|
+
--hw-profile-select-font: initial;
|
|
25
|
+
--hw-profile-select-padding-ltr: initial;
|
|
26
|
+
--hw-profile-select-padding-rtl: initial;
|
|
27
|
+
--hw-profile-helper-size: initial;
|
|
28
|
+
--hw-profile-error-size: initial;
|
|
29
|
+
--hw-profile-error-offset: initial;
|
|
30
|
+
}
|
|
31
|
+
@media (forced-colors: none) {
|
|
32
|
+
select.hw-select:where(:not([multiple]):is(:not([size]), [size='0'], [size='1'])) {
|
|
33
|
+
appearance: var(--hw-profile-select-appearance, auto);
|
|
34
|
+
--_hw-select-image: var(--hw-profile-select-down,);
|
|
35
|
+
--_hw-select-size: var(--hw-profile-select-size,);
|
|
36
|
+
--_hw-rtl-position: var(--_hw-rtl-only) var(--hw-profile-select-position-rtl,);
|
|
37
|
+
--_hw-select-position: var(--_hw-rtl-position, var(--hw-profile-select-position-ltr,));
|
|
38
|
+
--_hw-rtl-padding: var(--_hw-rtl-only) var(--hw-profile-select-padding-rtl, var(--hw-space-3));
|
|
39
|
+
--hw-profile-field-padding-end: var(--_hw-rtl-padding, var(--hw-profile-select-padding-ltr, var(--hw-space-3)));
|
|
40
|
+
font-size: var(--hw-profile-select-font, inherit);
|
|
41
|
+
}
|
|
42
|
+
select.hw-select:where(:not([multiple]):is(:not([size]), [size='0'], [size='1'])):focus { --_hw-select-image: var(--hw-profile-select-up,); }
|
|
43
|
+
}
|
|
44
|
+
.hw-field > .hw-hint { color: var(--hw-color-field-helper, var(--hw-color-text-muted)); font-size: var(--hw-profile-helper-size, var(--hw-text-sm)); }
|
|
45
|
+
.hw-field > .hw-error {
|
|
46
|
+
color: var(--hw-color-field-error-text, var(--hw-color-danger));
|
|
47
|
+
font-size: var(--hw-profile-error-size, var(--hw-text-sm));
|
|
48
|
+
margin-block-start: var(--hw-profile-error-offset, 0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.hw-label > .hw-required-marker { color: var(--hw-color-danger); }
|