@hawiyah/styles 0.0.0-stage → 0.2.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/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/arrow-down-01.svg +3 -0
- package/dist/assets/icons/arrow-left-01.svg +3 -0
- package/dist/assets/icons/arrow-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/checkmark-circle-02.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/link-04.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/provenance.json +202 -0
- package/dist/assets/icons/search-01.svg +4 -0
- package/dist/assets/icons/sorting-05.svg +8 -0
- package/dist/assets/icons/thumbs-down.svg +4 -0
- package/dist/assets/icons/thumbs-up.svg +4 -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 +42 -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 +103 -0
- package/dist/nic-accordion.css +96 -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 +114 -0
- package/dist/nic-notifications.css +124 -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,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
|
|
2
|
+
<mask id="shape"><g fill="white"><circle cx="10" cy="10" r="9"/><path d="M10 9v5.5" stroke="black" stroke-width="2"/><circle cx="10" cy="6.2" r="1.1" fill="black"/></g></mask>
|
|
3
|
+
<rect width="20" height="20" mask="url(#shape)"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
|
|
2
|
+
<mask id="shape"><g fill="white"><circle cx="10" cy="10" r="9"/><path d="m5.6 10 2.7 2.8 6.1-6" stroke="black" fill="none" stroke-width="1.7"/></g></mask>
|
|
3
|
+
<rect width="20" height="20" mask="url(#shape)"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
|
|
2
|
+
<mask id="shape"><g fill="white"><path d="M8.3 2.7c.8-1.5 2.6-1.5 3.4 0l7 13c.7 1.3-.2 2.8-1.7 2.8H3c-1.5 0-2.4-1.5-1.7-2.8z"/><path d="M10 6.3v5.6" stroke="black" stroke-width="2"/><circle cx="10" cy="14.8" r="1.1" fill="black"/></g></mask>
|
|
3
|
+
<rect width="20" height="20" mask="url(#shape)"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9 6 15 12 9 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2
|
+
<style>path { stroke: #161616 } @media (prefers-color-scheme: dark) { path { stroke: #e5e7eb } }</style>
|
|
3
|
+
<path d="M6 9 12 15 18 9" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2
|
+
<style>path { stroke: #161616 } @media (prefers-color-scheme: dark) { path { stroke: #e5e7eb } }</style>
|
|
3
|
+
<path d="M6 15 12 9 18 15" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* Compose the packaged identity assets with one status label; no runtime font. */
|
|
2
|
+
.hw-brand-loader { display: inline-flex; align-items: center; justify-content: center; }
|
|
3
|
+
.hw-brand-loader img { display: block; inline-size: var(--hw-brand-loader-size, 4rem); block-size: var(--hw-brand-loader-size, 4rem); object-fit: contain; }
|
|
4
|
+
.hw-brand-loader > .hw-brand-loader-dark { display: none; }
|
|
5
|
+
[data-hw-mode='dark'] .hw-brand-loader > .hw-brand-loader-light { display: none; }
|
|
6
|
+
[data-hw-mode='dark'] .hw-brand-loader > .hw-brand-loader-dark { display: block; }
|
|
7
|
+
|
|
8
|
+
.hw-brand-loader .hw-brand-loader-static { display: none; }
|
|
9
|
+
@media (prefers-reduced-motion: reduce) {
|
|
10
|
+
.hw-brand-loader .hw-brand-loader-motion { display: none; }
|
|
11
|
+
.hw-brand-loader .hw-brand-loader-static { display: block; }
|
|
12
|
+
}
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/* Hawiyah components are opt-in. Import reset.css separately for new applications. */
|
|
2
|
+
:where(.hw-button, .hw-field, .hw-input, .hw-textarea, .hw-select, .hw-tabs,
|
|
3
|
+
.hw-dialog, .hw-combobox, .hw-listbox, .hw-card, .hw-badge, .hw-alert,
|
|
4
|
+
.hw-table, .hw-pagination, .hw-breadcrumb, .hw-accordion, .hw-avatar,
|
|
5
|
+
.hw-toolbar, .hw-chip, .hw-empty, .hw-stepper, .hw-timeline, .hw-upload,
|
|
6
|
+
.hw-tooltip, .hw-stack, .hw-cluster, .hw-container) {
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
font-family: var(--hw-font-sans);
|
|
9
|
+
font-size: var(--hw-text-md);
|
|
10
|
+
line-height: var(--hw-leading-normal);
|
|
11
|
+
}
|
|
12
|
+
:where([class^='hw-'], [class*=' hw-'])::before,
|
|
13
|
+
:where([class^='hw-'], [class*=' hw-'])::after { box-sizing: border-box; }
|
|
14
|
+
:where(.hw-button, .hw-input, .hw-textarea, .hw-select, .hw-checkbox,
|
|
15
|
+
.hw-radio, .hw-switch, .hw-tab, .hw-accordion-trigger,
|
|
16
|
+
.hw-pagination a, .hw-pagination button, .hw-breadcrumb a,
|
|
17
|
+
.hw-chip button, .hw-upload input, .hw-tooltip-trigger):focus-visible {
|
|
18
|
+
outline: var(--hw-focus-width) solid var(--hw-color-focus);
|
|
19
|
+
outline-offset: var(--hw-focus-offset);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Actions */
|
|
23
|
+
.hw-button {
|
|
24
|
+
--hw-button-bg: var(--hw-color-primary);
|
|
25
|
+
--hw-button-fg: var(--hw-color-on-primary);
|
|
26
|
+
--hw-button-border: transparent;
|
|
27
|
+
--hw-button-hover: var(--hw-color-primary-hover);
|
|
28
|
+
display: inline-flex;
|
|
29
|
+
position: relative;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
gap: var(--hw-space-2);
|
|
33
|
+
min-block-size: var(--hw-control-height);
|
|
34
|
+
padding: var(--hw-space-2) var(--hw-control-padding-inline);
|
|
35
|
+
border: 1px solid var(--hw-button-border);
|
|
36
|
+
border-radius: var(--hw-radius-md);
|
|
37
|
+
background: var(--hw-button-bg);
|
|
38
|
+
color: var(--hw-button-fg);
|
|
39
|
+
font-size: var(--hw-text-sm);
|
|
40
|
+
font-weight: var(--hw-weight-semibold);
|
|
41
|
+
line-height: var(--hw-leading-heading);
|
|
42
|
+
text-align: center;
|
|
43
|
+
text-decoration: none;
|
|
44
|
+
vertical-align: middle;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
user-select: none;
|
|
47
|
+
-webkit-tap-highlight-color: transparent;
|
|
48
|
+
transition: background-color var(--hw-duration-fast), border-color var(--hw-duration-fast), box-shadow var(--hw-duration-fast);
|
|
49
|
+
}
|
|
50
|
+
.hw-button[data-variant='secondary'] {
|
|
51
|
+
--hw-button-bg: var(--hw-color-surface);
|
|
52
|
+
--hw-button-fg: var(--hw-color-text);
|
|
53
|
+
--hw-button-border: var(--hw-color-border-strong);
|
|
54
|
+
--hw-button-hover: var(--hw-color-surface-muted);
|
|
55
|
+
}
|
|
56
|
+
.hw-button[data-variant='ghost'] {
|
|
57
|
+
--hw-button-bg: transparent;
|
|
58
|
+
--hw-button-fg: var(--hw-color-primary-text);
|
|
59
|
+
--hw-button-hover: var(--hw-color-primary-subtle);
|
|
60
|
+
}
|
|
61
|
+
.hw-button[data-variant='danger'] {
|
|
62
|
+
--hw-button-bg: var(--hw-color-danger);
|
|
63
|
+
--hw-button-fg: var(--hw-color-surface);
|
|
64
|
+
--hw-button-hover: var(--hw-color-danger-hover);
|
|
65
|
+
}
|
|
66
|
+
.hw-button[data-size='sm'] { min-block-size: var(--hw-control-height-sm); padding: var(--hw-space-1) var(--hw-space-3); font-size: var(--hw-text-xs); }
|
|
67
|
+
.hw-button[data-size='lg'] { min-block-size: var(--hw-control-height-lg); padding-inline: var(--hw-space-6); font-size: var(--hw-text-md); }
|
|
68
|
+
.hw-button[data-icon-only] { inline-size: var(--hw-control-height); padding-inline: var(--hw-space-2); }
|
|
69
|
+
.hw-button[data-icon-only][data-size='sm'] { inline-size: var(--hw-control-height-sm); }
|
|
70
|
+
.hw-button[data-icon-only][data-size='lg'] { inline-size: var(--hw-control-height-lg); }
|
|
71
|
+
.hw-button > svg { flex: none; inline-size: 1.125em; block-size: 1.125em; }
|
|
72
|
+
@media (hover: hover) {
|
|
73
|
+
.hw-button:not(:disabled, [aria-disabled='true']):hover { background: var(--hw-button-hover); }
|
|
74
|
+
}
|
|
75
|
+
.hw-button:not(:disabled, [aria-disabled='true']):active { box-shadow: inset 0 0 0 100px rgb(0 0 0 / 0.06); }
|
|
76
|
+
.hw-button:where(:disabled, [aria-disabled='true']) {
|
|
77
|
+
background: var(--hw-color-disabled);
|
|
78
|
+
border-color: transparent;
|
|
79
|
+
color: var(--hw-color-on-disabled);
|
|
80
|
+
cursor: not-allowed;
|
|
81
|
+
box-shadow: none;
|
|
82
|
+
}
|
|
83
|
+
.hw-button[aria-busy='true'] { cursor: progress; }
|
|
84
|
+
|
|
85
|
+
/* Inputs and field anatomy */
|
|
86
|
+
/* Equal-height form rows must not distribute spare height into labels/inputs. */
|
|
87
|
+
.hw-field { display: grid; align-content: start; gap: var(--hw-space-2); min-inline-size: 0; color: var(--hw-color-text); }
|
|
88
|
+
.hw-label { display: block; color: var(--hw-color-text); font-size: var(--hw-text-sm); font-weight: var(--hw-weight-semibold); line-height: var(--hw-leading-normal); }
|
|
89
|
+
.hw-label abbr[title] { color: var(--hw-color-danger); text-decoration: none; }
|
|
90
|
+
:where(.hw-input, .hw-textarea, .hw-select) {
|
|
91
|
+
display: block;
|
|
92
|
+
inline-size: 100%;
|
|
93
|
+
min-inline-size: 0;
|
|
94
|
+
min-block-size: var(--hw-control-height);
|
|
95
|
+
padding: var(--hw-space-2) var(--hw-space-3);
|
|
96
|
+
border: 1px solid var(--hw-color-border-strong);
|
|
97
|
+
border-radius: var(--hw-radius-md);
|
|
98
|
+
background: var(--hw-color-surface);
|
|
99
|
+
color: var(--hw-color-text);
|
|
100
|
+
font-weight: var(--hw-weight-regular);
|
|
101
|
+
transition: border-color var(--hw-duration-fast), box-shadow var(--hw-duration-fast);
|
|
102
|
+
}
|
|
103
|
+
:where(.hw-input, .hw-textarea)::placeholder { color: var(--hw-color-text-subtle); opacity: 1; }
|
|
104
|
+
:where(.hw-input, .hw-textarea, .hw-select):hover:not(:disabled, [readonly]) { border-color: var(--hw-color-primary); }
|
|
105
|
+
:where(.hw-input, .hw-textarea, .hw-select):focus-visible { border-color: var(--hw-color-primary); }
|
|
106
|
+
:where(.hw-input, .hw-textarea, .hw-select)[aria-invalid='true'] { border-color: var(--hw-color-danger); }
|
|
107
|
+
@supports selector(:user-invalid) {
|
|
108
|
+
:where(.hw-input, .hw-textarea, .hw-select):user-invalid { border-color: var(--hw-color-danger); }
|
|
109
|
+
}
|
|
110
|
+
:where(.hw-input, .hw-textarea, .hw-select):disabled { background: var(--hw-color-disabled); border-color: var(--hw-color-border); color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
111
|
+
:where(.hw-input, .hw-textarea)[readonly] { background: var(--hw-color-surface-muted); }
|
|
112
|
+
.hw-input[type='search'] { appearance: none; }
|
|
113
|
+
.hw-input[type='number'] { font-variant-numeric: tabular-nums; }
|
|
114
|
+
.hw-input::file-selector-button { margin-inline-end: var(--hw-space-3); padding: var(--hw-space-1) var(--hw-space-3); border: 0; border-radius: var(--hw-radius-sm); background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); font: inherit; cursor: pointer; }
|
|
115
|
+
.hw-textarea { min-block-size: 7.5rem; resize: vertical; }
|
|
116
|
+
/* Retain the native select arrow, keyboard behavior, and platform picker. */
|
|
117
|
+
.hw-select { cursor: pointer; }
|
|
118
|
+
.hw-hint, .hw-error { margin: 0; font-size: var(--hw-text-sm); line-height: var(--hw-leading-normal); }
|
|
119
|
+
.hw-hint { color: var(--hw-color-text-muted); }
|
|
120
|
+
.hw-error { color: var(--hw-color-danger); }
|
|
121
|
+
.hw-choice { display: inline-flex; align-items: center; gap: var(--hw-space-3); min-block-size: var(--hw-control-height); color: var(--hw-color-text); font: inherit; cursor: pointer; }
|
|
122
|
+
:where(.hw-checkbox, .hw-radio) { box-sizing: border-box; flex: none; inline-size: 1.25rem; block-size: 1.25rem; margin: 0; accent-color: var(--hw-color-primary); vertical-align: middle; cursor: pointer; }
|
|
123
|
+
:where(.hw-checkbox, .hw-radio, .hw-switch):disabled { cursor: not-allowed; opacity: 0.6; }
|
|
124
|
+
.hw-switch {
|
|
125
|
+
box-sizing: border-box;
|
|
126
|
+
appearance: none;
|
|
127
|
+
position: relative;
|
|
128
|
+
flex: none;
|
|
129
|
+
inline-size: var(--hw-switch-width, 2.75rem);
|
|
130
|
+
block-size: var(--hw-switch-height, 1.625rem);
|
|
131
|
+
margin: 0;
|
|
132
|
+
border: 1px solid var(--hw-color-border-strong);
|
|
133
|
+
border-radius: var(--hw-radius-full);
|
|
134
|
+
background: var(--hw-color-text-subtle);
|
|
135
|
+
vertical-align: middle;
|
|
136
|
+
cursor: pointer;
|
|
137
|
+
transition: background-color var(--hw-duration-switch, var(--hw-duration-normal)) var(--hw-ease-switch-track, ease), border-color var(--hw-duration-switch, var(--hw-duration-normal)) var(--hw-ease-switch-track, ease);
|
|
138
|
+
}
|
|
139
|
+
.hw-switch::before {
|
|
140
|
+
content: '';
|
|
141
|
+
position: absolute;
|
|
142
|
+
inset-block-start: var(--hw-switch-thumb-offset, 0.1875rem);
|
|
143
|
+
inset-inline-start: var(--hw-switch-thumb-offset, 0.1875rem);
|
|
144
|
+
inline-size: var(--hw-switch-thumb-size, 1.125rem);
|
|
145
|
+
block-size: var(--hw-switch-thumb-size, 1.125rem);
|
|
146
|
+
border-radius: 50%;
|
|
147
|
+
background: var(--hw-color-surface);
|
|
148
|
+
box-shadow: 0 1px 3px rgb(0 0 0 / 0.2);
|
|
149
|
+
transition: inset-inline-start var(--hw-duration-switch, var(--hw-duration-normal)) var(--hw-ease-switch, var(--hw-ease-standard));
|
|
150
|
+
}
|
|
151
|
+
.hw-switch:checked { background: var(--hw-color-primary); border-color: var(--hw-color-primary); }
|
|
152
|
+
.hw-switch:checked::before { inset-inline-start: var(--hw-switch-thumb-offset-checked, 1.3125rem); background: var(--hw-color-on-primary); }
|
|
153
|
+
|
|
154
|
+
/* Navigation and disclosure */
|
|
155
|
+
.hw-tabs { min-inline-size: 0; color: var(--hw-color-text); }
|
|
156
|
+
.hw-tab-list { display: flex; gap: var(--hw-space-1); overflow-x: auto; padding: 3px 3px 0; border-block-end: 1px solid var(--hw-color-border); scrollbar-width: thin; }
|
|
157
|
+
.hw-tab { position: relative; flex: none; min-block-size: var(--hw-control-height); padding: var(--hw-space-3) var(--hw-space-4); border: 0; border-radius: var(--hw-radius-sm) var(--hw-radius-sm) 0 0; background: transparent; color: var(--hw-color-text-muted); font: inherit; font-size: var(--hw-text-sm); font-weight: var(--hw-weight-medium); cursor: pointer; }
|
|
158
|
+
.hw-tab::after { content: ''; position: absolute; inset-inline: var(--hw-space-3); inset-block-end: 0; block-size: 3px; border-radius: 3px 3px 0 0; background: transparent; }
|
|
159
|
+
.hw-tab:focus-visible { outline-offset: -4px; }
|
|
160
|
+
.hw-tab[aria-selected='true'] { color: var(--hw-color-primary-text); font-weight: var(--hw-weight-semibold); }
|
|
161
|
+
.hw-tab[aria-selected='true']::after { background: var(--hw-color-primary); }
|
|
162
|
+
.hw-tab:hover:not(:disabled) { background: var(--hw-color-surface-muted); }
|
|
163
|
+
.hw-tab:disabled, .hw-tab[aria-disabled='true'] { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
164
|
+
.hw-tab-panel { padding-block: var(--hw-space-5); outline-offset: -3px; }
|
|
165
|
+
.hw-tab-list[aria-orientation='vertical'] { flex-direction: column; border-block-end: 0; border-inline-end: 1px solid var(--hw-color-border); overflow: visible; }
|
|
166
|
+
.hw-tab-list[aria-orientation='vertical'] .hw-tab { text-align: start; border-radius: var(--hw-radius-sm); }
|
|
167
|
+
.hw-tab-list[aria-orientation='vertical'] .hw-tab::after { inset-inline-start: auto; inset-inline-end: -1px; inset-block: var(--hw-space-2); inline-size: 3px; block-size: auto; }
|
|
168
|
+
.hw-accordion { border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); color: var(--hw-color-text); }
|
|
169
|
+
.hw-accordion-item + .hw-accordion-item { border-block-start: 1px solid var(--hw-color-border); }
|
|
170
|
+
.hw-accordion-trigger { display: flex; align-items: center; justify-content: space-between; gap: var(--hw-space-4); padding: var(--hw-space-4) var(--hw-space-5); font-weight: var(--hw-weight-semibold); list-style: none; cursor: pointer; }
|
|
171
|
+
.hw-accordion-trigger::-webkit-details-marker { display: none; }
|
|
172
|
+
.hw-accordion-trigger::after { content: '+'; display: inline-grid; flex: none; place-items: center; inline-size: 1.5rem; block-size: 1.5rem; color: var(--hw-color-text-muted); font-family: var(--hw-font-mono); font-size: 1.25rem; font-weight: 400; }
|
|
173
|
+
.hw-accordion-item[open] > .hw-accordion-trigger::after { content: '−'; }
|
|
174
|
+
.hw-accordion-trigger:hover { background: var(--hw-color-surface-muted); }
|
|
175
|
+
.hw-accordion-trigger:focus-visible { outline-offset: -4px; }
|
|
176
|
+
.hw-accordion-content, .hw-accordion-item > :not(summary) { padding: 0 var(--hw-space-5) var(--hw-space-5); color: var(--hw-color-text-muted); }
|
|
177
|
+
.hw-breadcrumb { color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
178
|
+
.hw-breadcrumb :where(ol, ul) { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); margin: 0; padding: 0; list-style: none; }
|
|
179
|
+
.hw-breadcrumb li { display: inline-flex; align-items: center; gap: var(--hw-space-2); }
|
|
180
|
+
.hw-breadcrumb li + li::before { content: '/'; color: var(--hw-color-text-subtle); }
|
|
181
|
+
.hw-breadcrumb a { border-radius: 2px; color: inherit; text-underline-offset: 0.2em; text-decoration: none; }
|
|
182
|
+
.hw-breadcrumb a:hover { color: var(--hw-color-primary-text); text-decoration: underline; }
|
|
183
|
+
.hw-breadcrumb [aria-current='page'] { color: var(--hw-color-text); font-weight: var(--hw-weight-medium); }
|
|
184
|
+
.hw-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); }
|
|
185
|
+
.hw-pagination :where(button, a) { display: inline-flex; align-items: center; justify-content: center; min-inline-size: var(--hw-control-height-sm); min-block-size: var(--hw-control-height-sm); padding: var(--hw-space-1) var(--hw-space-3); border: 1px solid transparent; border-radius: var(--hw-radius-md); background: transparent; color: var(--hw-color-text-muted); font: inherit; font-size: var(--hw-text-sm); font-variant-numeric: tabular-nums; text-decoration: none; cursor: pointer; }
|
|
186
|
+
.hw-pagination :where(button, a):hover:not(:disabled, [aria-disabled='true']) { background: var(--hw-color-surface-muted); }
|
|
187
|
+
.hw-pagination [aria-current='page'] { border-color: var(--hw-color-primary); background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); font-weight: var(--hw-weight-semibold); }
|
|
188
|
+
.hw-pagination :where(:disabled, [aria-disabled='true']) { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
189
|
+
|
|
190
|
+
/* Overlay and search selection */
|
|
191
|
+
.hw-dialog {
|
|
192
|
+
position: fixed;
|
|
193
|
+
inline-size: min(36rem, calc(100vw - 2rem));
|
|
194
|
+
max-inline-size: none;
|
|
195
|
+
max-block-size: calc(100dvh - 3rem);
|
|
196
|
+
margin: auto;
|
|
197
|
+
padding: 0;
|
|
198
|
+
overflow: auto;
|
|
199
|
+
overscroll-behavior: contain;
|
|
200
|
+
border: 1px solid var(--hw-color-border);
|
|
201
|
+
border-radius: var(--hw-radius-xl);
|
|
202
|
+
background: var(--hw-color-surface-raised);
|
|
203
|
+
color: var(--hw-color-text);
|
|
204
|
+
box-shadow: var(--hw-shadow-lg);
|
|
205
|
+
}
|
|
206
|
+
.hw-dialog::backdrop { background: var(--hw-color-overlay); backdrop-filter: blur(3px); }
|
|
207
|
+
.hw-dialog[open] { animation: hw-dialog-in var(--hw-duration-normal) var(--hw-ease-standard); }
|
|
208
|
+
.hw-dialog-header { display: flex; align-items: start; justify-content: space-between; gap: var(--hw-space-4); padding: var(--hw-space-6) var(--hw-space-6) var(--hw-space-4); }
|
|
209
|
+
.hw-dialog-header :where(h1, h2, h3) { margin: 0; color: var(--hw-color-text); font-size: var(--hw-text-xl); font-weight: var(--hw-weight-semibold); line-height: var(--hw-leading-heading); }
|
|
210
|
+
.hw-dialog-body { padding: 0 var(--hw-space-6) var(--hw-space-6); }
|
|
211
|
+
.hw-dialog-footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--hw-space-3); padding: var(--hw-space-4) var(--hw-space-6); border-block-start: 1px solid var(--hw-color-border); background: var(--hw-color-surface-muted); }
|
|
212
|
+
@keyframes hw-dialog-in { from { opacity: 0; transform: translateY(8px) scale(0.985); } to { opacity: 1; transform: none; } }
|
|
213
|
+
.hw-combobox { position: relative; min-inline-size: 0; }
|
|
214
|
+
.hw-listbox { position: absolute; z-index: var(--hw-z-popover); inset-inline: 0; inset-block-start: calc(100% + var(--hw-space-2)); max-block-size: 18rem; overflow: auto; overscroll-behavior: contain; margin: 0; padding: var(--hw-space-1); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-md); background: var(--hw-color-surface-raised); color: var(--hw-color-text); box-shadow: var(--hw-shadow-md); list-style: none; }
|
|
215
|
+
.hw-option { display: flex; align-items: center; gap: var(--hw-space-2); min-block-size: var(--hw-control-height); padding: var(--hw-space-2) var(--hw-space-3); border-radius: var(--hw-radius-sm); font-size: var(--hw-text-sm); cursor: pointer; }
|
|
216
|
+
.hw-option:hover:not([aria-disabled='true']), .hw-option[data-active] { background: var(--hw-color-surface-muted); }
|
|
217
|
+
.hw-option[aria-selected='true'] { background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); font-weight: var(--hw-weight-semibold); }
|
|
218
|
+
.hw-option[data-active] { outline: 2px solid var(--hw-color-focus); outline-offset: -2px; }
|
|
219
|
+
.hw-option[aria-disabled='true'] { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
220
|
+
.hw-tooltip { position: absolute; z-index: var(--hw-z-tooltip); inset-block-end: calc(100% + var(--hw-space-2)); inset-inline-start: 0; inline-size: max-content; max-inline-size: min(20rem, calc(100vw - 2rem)); padding: var(--hw-space-2) var(--hw-space-3); border-radius: var(--hw-radius-sm); background: var(--hw-color-inverse); color: var(--hw-color-on-inverse); font-size: var(--hw-text-xs); font-weight: var(--hw-weight-medium); box-shadow: var(--hw-shadow-sm); }
|
|
221
|
+
[data-hw='tooltip'], .hw-tooltip-anchor { position: relative; display: inline-flex; }
|
|
222
|
+
|
|
223
|
+
/* Content surfaces */
|
|
224
|
+
.hw-card { min-inline-size: 0; border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); color: var(--hw-color-text); box-shadow: var(--hw-shadow-sm); }
|
|
225
|
+
.hw-card-header { display: flex; align-items: start; justify-content: space-between; gap: var(--hw-space-4); padding: var(--hw-space-5) var(--hw-space-5) 0; }
|
|
226
|
+
.hw-card-header :where(h2, h3, h4) { margin: 0; font-size: var(--hw-text-lg); font-weight: var(--hw-weight-semibold); line-height: var(--hw-leading-heading); }
|
|
227
|
+
.hw-card-body { padding: var(--hw-space-5); }
|
|
228
|
+
.hw-card-footer { border-end-start-radius: var(--hw-radius-lg); border-end-end-radius: var(--hw-radius-lg); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--hw-space-3); padding: var(--hw-space-4) var(--hw-space-5); border-block-start: 1px solid var(--hw-color-border); }
|
|
229
|
+
.hw-badge, .hw-chip { --hw-tone: var(--hw-color-text-muted); --hw-tone-bg: var(--hw-color-surface-muted); display: inline-flex; align-items: center; gap: var(--hw-space-1); max-inline-size: 100%; padding: 0.125rem var(--hw-space-2); border: 1px solid transparent; border-radius: var(--hw-radius-full); background: var(--hw-tone-bg); color: var(--hw-tone); font-size: var(--hw-text-xs); font-weight: var(--hw-weight-medium); line-height: 1.65; vertical-align: middle; }
|
|
230
|
+
:is(.hw-badge, .hw-alert)[data-tone='success'] { --hw-tone: var(--hw-color-success); --hw-tone-bg: var(--hw-color-success-subtle); }
|
|
231
|
+
:is(.hw-badge, .hw-alert)[data-tone='warning'] { --hw-tone: var(--hw-color-warning); --hw-tone-bg: var(--hw-color-warning-subtle); }
|
|
232
|
+
:is(.hw-badge, .hw-alert)[data-tone='danger'] { --hw-tone: var(--hw-color-danger); --hw-tone-bg: var(--hw-color-danger-subtle); }
|
|
233
|
+
:is(.hw-badge, .hw-alert)[data-tone='info'] { --hw-tone: var(--hw-color-info); --hw-tone-bg: var(--hw-color-info-subtle); }
|
|
234
|
+
.hw-alert { --hw-tone: var(--hw-color-info); --hw-tone-bg: var(--hw-color-info-subtle); display: flex; align-items: start; gap: var(--hw-space-3); padding: var(--hw-space-4); border: 1px solid var(--hw-color-border); border-inline-start: 3px solid var(--hw-tone); border-radius: var(--hw-radius-md); background: var(--hw-tone-bg); color: var(--hw-tone); font-size: var(--hw-text-sm); }
|
|
235
|
+
.hw-alert > svg { flex: none; inline-size: 1.25rem; block-size: 1.25rem; margin-block-start: 0.15rem; }
|
|
236
|
+
.hw-alert :where(h2, h3, h4, p) { margin-block: 0; }
|
|
237
|
+
.hw-alert :where(h2, h3, h4) { font-size: inherit; font-weight: var(--hw-weight-semibold); }
|
|
238
|
+
.hw-alert[data-tone='neutral'] { --hw-tone: var(--hw-color-text-muted); --hw-tone-bg: var(--hw-color-canvas); }
|
|
239
|
+
.hw-alert-content { flex: 1; min-inline-size: 0; }
|
|
240
|
+
.hw-alert a { color: inherit; text-underline-offset: 0.2em; }
|
|
241
|
+
.hw-chip { gap: var(--hw-space-2); min-block-size: 2rem; padding-inline: var(--hw-space-3) var(--hw-space-2); border-color: var(--hw-color-border); border-radius: var(--hw-radius-md); }
|
|
242
|
+
.hw-chip button { display: inline-grid; place-items: center; inline-size: 1.5rem; block-size: 1.5rem; padding: 0; border: 0; border-radius: var(--hw-radius-sm); background: transparent; color: inherit; font: inherit; cursor: pointer; }
|
|
243
|
+
.hw-chip button:hover { background: var(--hw-color-border); }
|
|
244
|
+
.hw-avatar { display: inline-grid; flex: none; place-items: center; inline-size: 2.75rem; block-size: 2.75rem; overflow: hidden; border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-full); background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); font-size: var(--hw-text-sm); font-weight: var(--hw-weight-semibold); }
|
|
245
|
+
.hw-avatar img, img.hw-avatar { inline-size: 2.75rem; block-size: 2.75rem; object-fit: cover; }
|
|
246
|
+
.hw-divider { inline-size: 100%; block-size: 0; margin-block: var(--hw-space-5); border: 0; border-block-start: 1px solid var(--hw-color-border); }
|
|
247
|
+
.hw-divider[aria-orientation='vertical'] { align-self: stretch; inline-size: 0; block-size: auto; margin-block: 0; margin-inline: var(--hw-space-3); border-block-start: 0; border-inline-start: 1px solid var(--hw-color-border); }
|
|
248
|
+
|
|
249
|
+
/* Tables and activity */
|
|
250
|
+
.hw-table-wrap { position: relative; min-inline-size: 0; overflow-x: auto; border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); }
|
|
251
|
+
.hw-table-wrap:focus-visible { outline: var(--hw-focus-width) solid var(--hw-color-focus); outline-offset: var(--hw-focus-offset); }
|
|
252
|
+
.hw-table { inline-size: 100%; border-collapse: collapse; color: var(--hw-color-text); font-size: var(--hw-text-sm); text-align: start; }
|
|
253
|
+
.hw-table caption { padding: var(--hw-space-4) var(--hw-space-5); color: var(--hw-color-text); font-weight: var(--hw-weight-semibold); text-align: start; }
|
|
254
|
+
.hw-table :where(th, td) { padding: var(--hw-density-cell-padding) var(--hw-space-5); border-block-end: 1px solid var(--hw-color-border); text-align: start; vertical-align: middle; }
|
|
255
|
+
.hw-table thead { background: var(--hw-color-surface-muted); color: var(--hw-color-text-muted); }
|
|
256
|
+
.hw-table th { font-weight: var(--hw-weight-semibold); white-space: nowrap; }
|
|
257
|
+
.hw-table tbody tr:last-child > * { border-block-end: 0; }
|
|
258
|
+
.hw-table tbody tr:hover { background: var(--hw-color-canvas); }
|
|
259
|
+
.hw-table tr[aria-selected='true'] { background: var(--hw-color-primary-subtle); }
|
|
260
|
+
.hw-table [data-numeric] { font-variant-numeric: tabular-nums; text-align: end; }
|
|
261
|
+
.hw-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--hw-space-3); }
|
|
262
|
+
.hw-toolbar > .hw-input, .hw-toolbar > .hw-combobox { flex: 1 1 16rem; }
|
|
263
|
+
.hw-stepper { display: flex; gap: var(--hw-space-4); margin: 0; padding: 0; color: var(--hw-color-text-muted); list-style: none; counter-reset: hw-step; }
|
|
264
|
+
.hw-step { position: relative; display: flex; align-items: center; flex: 1; gap: var(--hw-space-3); min-inline-size: 0; font-size: var(--hw-text-sm); counter-increment: hw-step; }
|
|
265
|
+
.hw-step::before { content: counter(hw-step); display: inline-grid; flex: none; place-items: center; inline-size: 2.25rem; block-size: 2.25rem; border: 1px solid var(--hw-color-border-strong); border-radius: var(--hw-radius-full); background: var(--hw-color-surface); color: var(--hw-color-text-muted); font-variant-numeric: tabular-nums; font-weight: var(--hw-weight-semibold); }
|
|
266
|
+
.hw-step:not(:last-child)::after { content: ''; flex: 1; min-inline-size: var(--hw-space-4); block-size: 1px; background: var(--hw-color-border); }
|
|
267
|
+
.hw-step[aria-current='step'], .hw-step[data-state='active'] { color: var(--hw-color-primary-text); font-weight: var(--hw-weight-semibold); }
|
|
268
|
+
.hw-step[aria-current='step']::before, .hw-step[data-state='active']::before { border-color: var(--hw-color-primary); background: var(--hw-color-primary); color: var(--hw-color-on-primary); box-shadow: 0 0 0 4px var(--hw-color-primary-subtle); }
|
|
269
|
+
.hw-step[data-state='complete']::before, .hw-step[data-state='completed']::before { content: '✓'; border-color: var(--hw-color-primary-subtle); background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); }
|
|
270
|
+
.hw-step[data-state='error']::before { content: '!'; border-color: var(--hw-color-danger); background: var(--hw-color-danger-subtle); color: var(--hw-color-danger); }
|
|
271
|
+
.hw-timeline { margin: 0; padding: 0; color: var(--hw-color-text); list-style: none; }
|
|
272
|
+
.hw-timeline > li { position: relative; padding-inline-start: var(--hw-space-8); padding-block-end: var(--hw-space-6); }
|
|
273
|
+
.hw-timeline > li::before { content: ''; position: absolute; inset-inline-start: 0.3125rem; inset-block-start: 0.6rem; inline-size: 0.625rem; block-size: 0.625rem; border: 2px solid var(--hw-color-surface); border-radius: 50%; background: var(--hw-color-border-strong); box-shadow: 0 0 0 1px var(--hw-color-border-strong); }
|
|
274
|
+
.hw-timeline > li:not(:last-child)::after { content: ''; position: absolute; inset-inline-start: 0.5625rem; inset-block: 1.5rem 0.3rem; inline-size: 1px; background: var(--hw-color-border); }
|
|
275
|
+
.hw-timeline > li[data-state='complete']::before, .hw-timeline > li[data-state='active']::before { background: var(--hw-color-primary); box-shadow: 0 0 0 1px var(--hw-color-primary); }
|
|
276
|
+
.hw-timeline time { display: block; color: var(--hw-color-text-muted); font-size: var(--hw-text-xs); }
|
|
277
|
+
.hw-empty { display: grid; justify-items: center; gap: var(--hw-space-3); padding: var(--hw-space-12) var(--hw-space-6); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); color: var(--hw-color-text); text-align: center; }
|
|
278
|
+
.hw-empty > svg { inline-size: 2.5rem; block-size: 2.5rem; padding: var(--hw-space-4); border-radius: var(--hw-radius-xl); background: var(--hw-color-surface-muted); color: var(--hw-color-text-muted); box-sizing: content-box; }
|
|
279
|
+
.hw-empty :where(h2, h3, p) { max-inline-size: 34rem; margin: 0; }
|
|
280
|
+
.hw-empty :where(h2, h3) { font-size: var(--hw-text-lg); font-weight: var(--hw-weight-semibold); }
|
|
281
|
+
.hw-empty p { color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
282
|
+
.hw-upload { display: grid; justify-items: center; gap: var(--hw-space-3); padding: var(--hw-space-8) var(--hw-space-5); border: 1.5px dashed var(--hw-color-border-strong); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); color: var(--hw-color-text); text-align: center; }
|
|
283
|
+
.hw-upload:focus-within, .hw-upload[data-state='dragging'] { border-color: var(--hw-color-primary); background: var(--hw-color-primary-subtle); }
|
|
284
|
+
.hw-upload[data-state='error'] { border-color: var(--hw-color-danger); }
|
|
285
|
+
.hw-upload input[type='file'] { max-inline-size: 100%; color: var(--hw-color-text-muted); font: inherit; font-size: var(--hw-text-sm); }
|
|
286
|
+
.hw-upload input[type='file']::file-selector-button { min-block-size: var(--hw-control-height-sm); margin-inline-end: var(--hw-space-3); padding-inline: var(--hw-space-4); border: 1px solid var(--hw-color-border-strong); border-radius: var(--hw-radius-md); background: var(--hw-color-surface); color: var(--hw-color-text); font: inherit; font-weight: var(--hw-weight-medium); cursor: pointer; }
|
|
287
|
+
|
|
288
|
+
/* Loading and progress */
|
|
289
|
+
.hw-progress { display: block; inline-size: 100%; block-size: 0.5rem; overflow: hidden; border: 0; border-radius: var(--hw-radius-full); background: var(--hw-color-surface-muted); accent-color: var(--hw-color-primary); }
|
|
290
|
+
progress.hw-progress { appearance: none; }
|
|
291
|
+
.hw-progress::-webkit-progress-bar { border-radius: var(--hw-radius-full); background: var(--hw-color-surface-muted); }
|
|
292
|
+
.hw-progress::-webkit-progress-value { border-radius: var(--hw-radius-full); background: var(--hw-color-primary); transition: width var(--hw-duration-slow); }
|
|
293
|
+
.hw-progress::-moz-progress-bar { border-radius: var(--hw-radius-full); background: var(--hw-color-primary); }
|
|
294
|
+
.hw-progress > span { display: block; block-size: 100%; border-radius: inherit; background: var(--hw-color-primary); }
|
|
295
|
+
.hw-skeleton { display: block; min-block-size: 1rem; border-radius: var(--hw-radius-sm); background: var(--hw-color-surface-muted); animation: hw-pulse 1.8s ease-in-out infinite; }
|
|
296
|
+
.hw-spinner { display: inline-block; box-sizing: border-box; inline-size: 1.25rem; block-size: 1.25rem; flex: none; border: 2px solid currentColor; border-inline-end-color: transparent; border-radius: 50%; color: inherit; vertical-align: middle; animation: hw-spin var(--hw-duration-spinner, 0.7s) linear infinite; }
|
|
297
|
+
@keyframes hw-spin { to { transform: rotate(360deg); } }
|
|
298
|
+
@keyframes hw-pulse { 50% { opacity: 0.45; } }
|
|
299
|
+
|
|
300
|
+
/* Layout helpers use logical dimensions and remain direction independent. */
|
|
301
|
+
.hw-container { inline-size: min(var(--hw-content-max), calc(100% - 3rem)); margin-inline: auto; }
|
|
302
|
+
.hw-stack { display: flex; flex-direction: column; gap: var(--hw-gap, var(--hw-space-4)); min-inline-size: 0; }
|
|
303
|
+
.hw-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-gap, var(--hw-space-3)); }
|
|
304
|
+
.hw-sr-only { position: absolute !important; inline-size: 1px !important; block-size: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
|
|
305
|
+
/* Hidden behavior must survive a component's display declaration. */
|
|
306
|
+
:where([class^='hw-'], [class*=' hw-'])[hidden] { display: none !important; }
|
|
307
|
+
|
|
308
|
+
@media (max-width: 40rem) {
|
|
309
|
+
.hw-container { inline-size: calc(100% - 2rem); }
|
|
310
|
+
.hw-dialog-header { padding: var(--hw-space-5) var(--hw-space-4) var(--hw-space-3); }
|
|
311
|
+
.hw-dialog-body { padding: 0 var(--hw-space-4) var(--hw-space-5); }
|
|
312
|
+
.hw-dialog-footer { padding-inline: var(--hw-space-4); }
|
|
313
|
+
.hw-card-header { padding-inline: var(--hw-space-4); }
|
|
314
|
+
.hw-card-body, .hw-card-footer { padding-inline: var(--hw-space-4); }
|
|
315
|
+
.hw-stepper { flex-direction: column; gap: var(--hw-space-3); }
|
|
316
|
+
.hw-step:not(:last-child)::after { display: none; }
|
|
317
|
+
.hw-table :where(th, td) { padding-inline: var(--hw-space-3); }
|
|
318
|
+
}
|
|
319
|
+
@media (prefers-reduced-motion: reduce) {
|
|
320
|
+
.hw-button, .hw-input, .hw-textarea, .hw-select, .hw-switch, .hw-switch::before, .hw-progress > span { transition: none; }
|
|
321
|
+
.hw-dialog[open], .hw-skeleton, .hw-spinner { animation: none; }
|
|
322
|
+
.hw-progress::-webkit-progress-value { transition: none; }
|
|
323
|
+
}
|
|
324
|
+
@media (forced-colors: active) {
|
|
325
|
+
.hw-button, .hw-badge, .hw-chip, .hw-avatar { border: 1px solid ButtonText; }
|
|
326
|
+
.hw-button:where(:disabled, [aria-disabled='true']) { border-color: GrayText; color: GrayText; }
|
|
327
|
+
.hw-tab[aria-selected='true']::after { background: Highlight; }
|
|
328
|
+
.hw-option[aria-selected='true'], .hw-pagination [aria-current='page'] { outline: 2px solid Highlight; outline-offset: -2px; }
|
|
329
|
+
.hw-switch { appearance: auto; }
|
|
330
|
+
.hw-switch::before { display: none; }
|
|
331
|
+
.hw-spinner { border-color: CanvasText; border-inline-end-color: transparent; }
|
|
332
|
+
.hw-progress, .hw-skeleton { border: 1px solid CanvasText; }
|
|
333
|
+
.hw-step[aria-current='step']::before { border: 3px solid Highlight; }
|
|
334
|
+
.hw-dialog::backdrop { background: Canvas; opacity: 0.7; }
|
|
335
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* NIC global.css 1890–2036. Geometry and accessibility adaptations:
|
|
2
|
+
docs/nic-content-navigation.md. No global section-ID selector is installed. */
|
|
3
|
+
.hw-content-nav {
|
|
4
|
+
display: flex; flex-direction: column; align-self: start; gap: 8px; min-inline-size: 0;
|
|
5
|
+
color: var(--hw-color-text); font-family: var(--hw-font-sans);
|
|
6
|
+
}
|
|
7
|
+
.hw-content-nav-heading { margin: 0; font: inherit; font-size: 16px; line-height: 24px; font-weight: var(--hw-weight-semibold); }
|
|
8
|
+
.hw-content-nav-list, .hw-content-nav-sublist { list-style: none; padding: 0; margin: 0; }
|
|
9
|
+
.hw-content-nav-sublist { margin-inline-start: var(--hw-content-nav-indent, 16px); }
|
|
10
|
+
.hw-content-nav-link {
|
|
11
|
+
display: flex; position: relative; box-sizing: border-box; align-items: center;
|
|
12
|
+
min-inline-size: min(140px, 100%); min-block-size: 40px; padding-inline: 8px 16px;
|
|
13
|
+
border-radius: 2px; color: var(--hw-color-text); text-decoration: none; cursor: pointer;
|
|
14
|
+
}
|
|
15
|
+
.hw-content-nav-label { flex: 1; min-inline-size: 0; padding-block: 6px; font-size: 14px; line-height: 28px; color: var(--hw-color-text); overflow-wrap: anywhere; }
|
|
16
|
+
.hw-content-nav-sublist .hw-content-nav-link::before {
|
|
17
|
+
content: ''; position: absolute; inset-inline-start: 0; inset-block: 0; inline-size: 2px; background: var(--hw-color-border);
|
|
18
|
+
}
|
|
19
|
+
.hw-content-nav-marker { position: absolute; inset-inline-start: 0; inset-block: 0; inline-size: 3px; border-radius: 9999px; background: transparent; }
|
|
20
|
+
.hw-content-nav-link[aria-current='location'] .hw-content-nav-marker { background: var(--hw-color-primary-text); }
|
|
21
|
+
.hw-content-nav-link:hover:where(:not([aria-disabled='true'])) { background: var(--hw-color-surface-muted); text-decoration: none; }
|
|
22
|
+
.hw-content-nav-link:hover:where(:not([aria-disabled='true'])) .hw-content-nav-marker { background: var(--hw-color-content-nav-marker-hover, var(--hw-color-text-subtle)); }
|
|
23
|
+
.hw-content-nav-link:focus { background: var(--hw-color-border); color: var(--hw-color-text); }
|
|
24
|
+
.hw-content-nav-link:focus:not([aria-current='location']) .hw-content-nav-marker { visibility: hidden; }
|
|
25
|
+
.hw-content-nav-link:focus::before { visibility: hidden; }
|
|
26
|
+
/* The reference suppresses focus outlines. Keep an unmistakable keyboard cue. */
|
|
27
|
+
.hw-content-nav-link:focus-visible { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: -2px; }
|
|
28
|
+
.hw-content-nav-link[aria-disabled='true'] { cursor: not-allowed; }
|
|
29
|
+
.hw-content-nav-link[aria-disabled='true'] .hw-content-nav-label { color: var(--hw-color-on-disabled); }
|
|
30
|
+
@media (min-width: 1200px) {
|
|
31
|
+
.hw-content-nav[data-sticky='true'] {
|
|
32
|
+
position: sticky; inset-block-start: var(--hw-content-nav-top, 145px);
|
|
33
|
+
max-block-size: calc(100dvh - var(--hw-content-nav-bottom-reserve, 165px)); overflow-y: auto;
|
|
34
|
+
overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--hw-color-primary-subtle) transparent;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
@media (forced-colors: active) {
|
|
38
|
+
.hw-content-nav-link, .hw-content-nav-label { color: LinkText; }
|
|
39
|
+
.hw-content-nav-link[aria-current='location'] .hw-content-nav-marker { background: Highlight; }
|
|
40
|
+
.hw-content-nav-link[aria-current='location'] { outline: 1px solid Highlight; outline-offset: -1px; }
|
|
41
|
+
.hw-content-nav-link:hover .hw-content-nav-marker { background: Highlight; }
|
|
42
|
+
.hw-content-nav-link:focus-visible { outline: 2px solid Highlight; outline-offset: -2px; }
|
|
43
|
+
.hw-content-nav-link[aria-disabled='true'] .hw-content-nav-label { color: GrayText; }
|
|
44
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* Compact custom date field. Native input density and focus remain authoritative. */
|
|
2
|
+
.hw-date-picker-control { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); min-inline-size: 0; inline-size: 100%; }
|
|
3
|
+
.hw-date-picker-control > .hw-input { inline-size: 100%; min-inline-size: 0; padding-inline-end: 3rem; border-radius: var(--hw-radius-md); }
|
|
4
|
+
.hw-date-picker-control > .hw-date-picker-trigger { position: absolute; inset-inline-end: 0.125rem; inset-block: 0.125rem; inline-size: 2.5rem; min-block-size: 0; padding: 0; margin: 0; border: 0; border-radius: var(--hw-radius-sm); background: transparent; color: var(--hw-color-text-muted); box-shadow: none; }
|
|
5
|
+
.hw-date-picker-control > .hw-date-picker-trigger:hover:not(:disabled) { background: var(--hw-color-surface-muted); color: var(--hw-color-text); }
|
|
6
|
+
.hw-date-picker-control > .hw-date-picker-trigger:focus-visible { outline-offset: -3px; }
|
|
7
|
+
.hw-date-picker-trigger:disabled { cursor: not-allowed; }
|
|
8
|
+
.hw-date-picker-icon { display: inline-block; inline-size: 1.5rem; block-size: 1.5rem; background: currentColor; -webkit-mask: var(--hw-date-picker-icon, url('./assets/icons/calendar-03.svg')) center / contain no-repeat; mask: var(--hw-date-picker-icon, url('./assets/icons/calendar-03.svg')) center / contain no-repeat; }
|
|
9
|
+
.hw-date-picker > .hw-date-picker-control { flex: 0 0 100%; }
|
|
10
|
+
|
|
11
|
+
/* Native radios retain keyboard behavior; the rectangle moves in logical order. */
|
|
12
|
+
.hw-calendar-switch { position: relative; isolation: isolate; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 4px; margin-block-end: var(--hw-space-3); border: 1px solid var(--hw-color-border-strong); border-radius: var(--hw-radius-sm); background: var(--hw-color-surface-muted); }
|
|
13
|
+
.hw-calendar-switch::before { content: ''; position: absolute; z-index: -1; inset-block: 4px; inset-inline-start: 4px; inline-size: calc(50% - 4px); background: var(--hw-color-primary); border: 1px solid var(--hw-color-primary); border-radius: var(--hw-radius-sm); transition: inset-inline-start var(--hw-duration-fast) var(--hw-ease-standard); }
|
|
14
|
+
.hw-calendar-switch[data-calendar='islamic-umalqura']::before { inset-inline-start: 50%; }
|
|
15
|
+
.hw-calendar-switch > label { position: relative; display: flex; align-items: center; justify-content: center; min-inline-size: 0; min-block-size: var(--hw-control-height); padding: var(--hw-space-1) var(--hw-space-2); color: var(--hw-color-text); font-size: var(--hw-text-sm); line-height: var(--hw-leading-heading); text-align: center; cursor: pointer; }
|
|
16
|
+
.hw-calendar-switch > label > input { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; margin: 0; opacity: 0; cursor: inherit; }
|
|
17
|
+
.hw-calendar-switch > label:has(input:checked) { font-weight: var(--hw-weight-semibold); color: var(--hw-color-on-primary); }
|
|
18
|
+
.hw-calendar-switch > label:has(input:focus-visible) { outline: 2px solid var(--hw-color-focus); outline-offset: -2px; border-radius: var(--hw-radius-sm); }
|
|
19
|
+
.hw-calendar-switch > label:has(input:disabled) { cursor: not-allowed; opacity: 0.6; }
|
|
20
|
+
@media (prefers-reduced-motion: reduce) { .hw-calendar-switch::before { transition: none; } }
|
|
21
|
+
@media (forced-colors: active) {
|
|
22
|
+
.hw-date-picker-icon { forced-color-adjust: none; background: ButtonText; }
|
|
23
|
+
.hw-date-picker-trigger:disabled > .hw-date-picker-icon { background: GrayText; }
|
|
24
|
+
.hw-calendar-switch::before { forced-color-adjust: none; background: Highlight; border-color: Highlight; }
|
|
25
|
+
.hw-calendar-switch > label:has(input:checked) > span { forced-color-adjust: none; color: HighlightText; }
|
|
26
|
+
.hw-calendar-switch > label:has(input:focus-visible) { outline-color: CanvasText; }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/* Compact chrome; retain 44px day targets and six week rows without layout shifts. */
|
|
31
|
+
.hw-date-picker .hw-dialog { inline-size: min(24rem, calc(100vw - 2rem)); }
|
|
32
|
+
.hw-date-picker .hw-dialog-header { padding: var(--hw-space-3) var(--hw-space-4) var(--hw-space-2); gap: var(--hw-space-2); }
|
|
33
|
+
.hw-date-picker .hw-dialog-header > h2 { margin: 0; font-size: var(--hw-text-lg); }
|
|
34
|
+
.hw-date-picker .hw-dialog-body { padding: 0 var(--hw-space-4) var(--hw-space-3); }
|
|
35
|
+
.hw-date-picker .hw-dialog-footer:empty { display: none; }
|
|
36
|
+
.hw-date-picker .hw-dialog-body > .hw-field { margin-block-end: 0; }
|
|
37
|
+
.hw-calendar-options { margin-block-end: var(--hw-space-2); }
|
|
38
|
+
.hw-calendar-options > .hw-calendar-switch { margin: 0; padding: 3px; }
|
|
39
|
+
.hw-calendar-options > .hw-calendar-switch > label { min-block-size: 2.25rem; padding-block: var(--hw-space-1); }
|
|
40
|
+
.hw-calendar :is(.hw-calendar-header, .hw-calendar-toolbar) { margin-block: 0 var(--hw-space-1); }
|
|
41
|
+
.hw-calendar-heading { position: relative; display: flex; flex: 1; align-items: center; justify-content: center; gap: var(--hw-space-1); min-inline-size: 0; }
|
|
42
|
+
.hw-calendar-heading > :is(h3, span:not(.hw-calendar-info)) { margin: 0; font-size: var(--hw-text-md); font-weight: var(--hw-weight-semibold); line-height: var(--hw-leading-heading); }
|
|
43
|
+
.hw-calendar-heading .hw-calendar-info, .hw-calendar-info > .hw-tooltip-anchor { position: static; }
|
|
44
|
+
.hw-calendar-info { flex: none; display: inline-flex; color: var(--hw-color-text-muted); }
|
|
45
|
+
.hw-calendar-info-icon { display: inline-grid; place-items: center; inline-size: 1rem; block-size: 1rem; border: 1px solid currentColor; border-radius: 50%; font: 600 0.6875rem/1 sans-serif; color: var(--hw-color-text-muted); cursor: help; }
|
|
46
|
+
.hw-calendar-info [data-hw-tooltip-trigger] { font-size: 0; }
|
|
47
|
+
.hw-calendar-info [data-hw-tooltip-trigger]::before { content: 'i'; font-size: 0.6875rem; }
|
|
48
|
+
.hw-calendar-info .hw-tooltip { inset-block-end: calc(100% + 4px); inset-inline: auto; left: 50%; transform: translateX(-50%); inline-size: 15rem; max-inline-size: calc(100vw - 4rem); white-space: normal; text-align: start; }
|
|
49
|
+
.hw-calendar-info bdi { white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
50
|
+
.hw-calendar-info[hidden] { display: none; }
|