@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,310 @@
|
|
|
1
|
+
/* Extended native controls and platform compositions. These recipes never
|
|
2
|
+
provide interaction semantics on their own; use the native adapters. */
|
|
3
|
+
:where(.hw-input-group, .hw-password-field, .hw-search-field, .hw-number-field,
|
|
4
|
+
.hw-range-slider, .hw-rating, .hw-tag-input, .hw-multi-select, .hw-calendar,
|
|
5
|
+
.hw-date-picker, .hw-file-dropzone, .hw-toggle-group, .hw-popover, .hw-menu,
|
|
6
|
+
.hw-drawer, .hw-toast-region, .hw-collapsible, .hw-tree-view, .hw-carousel,
|
|
7
|
+
.hw-description-list, .hw-stat, .hw-meter, .hw-avatar-group, .hw-data-table,
|
|
8
|
+
.hw-service-card, .hw-service-details, .hw-portal-header, .hw-portal-footer,
|
|
9
|
+
.hw-feedback, .hw-cookie-consent, .hw-notification-list) {
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
min-inline-size: 0;
|
|
12
|
+
color: var(--hw-color-text);
|
|
13
|
+
font-family: var(--hw-font-sans);
|
|
14
|
+
font-size: var(--hw-text-md);
|
|
15
|
+
line-height: var(--hw-leading-normal);
|
|
16
|
+
}
|
|
17
|
+
:where(.hw-link, .hw-icon-button, .hw-slider, .hw-calendar-day,
|
|
18
|
+
.hw-toggle-group button, .hw-menu-item, :is(.hw-tree-item, .hw-tree-view [role='treeitem']),
|
|
19
|
+
.hw-data-table th button, .hw-collapsible-trigger,
|
|
20
|
+
.hw-collapsible > summary, .hw-collapsible > button,
|
|
21
|
+
.hw-carousel button, .hw-portal-header a, .hw-portal-footer a,
|
|
22
|
+
.hw-file-dropzone input, .hw-notification a):focus-visible {
|
|
23
|
+
outline: var(--hw-focus-width) solid var(--hw-color-focus);
|
|
24
|
+
outline-offset: var(--hw-focus-offset);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Input compositions preserve native inputs, labels and form semantics. */
|
|
28
|
+
.hw-input-group { display: flex; align-items: stretch; inline-size: 100%; }
|
|
29
|
+
.hw-input-group > :where(.hw-input, .hw-select, input, select, .hw-field) { position: relative; flex: 1 1 0%; min-inline-size: 0; }
|
|
30
|
+
.hw-input-group > :not(:first-child) { margin-inline-start: -1px; border-start-start-radius: 0; border-end-start-radius: 0; }
|
|
31
|
+
.hw-input-group > :not(:last-child) { border-start-end-radius: 0; border-end-end-radius: 0; }
|
|
32
|
+
.hw-input-group > :focus-visible, .hw-input-group > :focus-within { z-index: 1; }
|
|
33
|
+
.hw-input-addon { display: inline-flex; flex: none; align-items: center; justify-content: center; gap: var(--hw-space-2); padding-inline: var(--hw-space-3); border: 1px solid var(--hw-color-border-strong); border-radius: var(--hw-radius-md); background: var(--hw-color-surface-muted); color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); white-space: nowrap; }
|
|
34
|
+
.hw-input-group > .hw-button { flex: none; }
|
|
35
|
+
:is(.hw-password-field, .hw-search-field, .hw-date-picker):not(.hw-field) { display: flex; align-items: end; gap: var(--hw-space-2); }
|
|
36
|
+
:is(.hw-password-field, .hw-search-field, .hw-date-picker) > :is(.hw-field, .hw-input) { flex: 1; min-inline-size: 0; }
|
|
37
|
+
.hw-number-field input, input.hw-number-field { font-variant-numeric: tabular-nums; }
|
|
38
|
+
.hw-slider, .hw-range-slider input[type='range'] { box-sizing: border-box; appearance: none; display: block; inline-size: 100%; min-inline-size: 0; block-size: var(--hw-control-height); margin: 0; padding: 0; border: 0; border-radius: var(--hw-radius-sm); background: transparent; color: var(--hw-color-primary); accent-color: var(--hw-color-primary); cursor: pointer; }
|
|
39
|
+
:is(.hw-slider, .hw-range-slider input[type='range'])::-webkit-slider-runnable-track { block-size: 0.375rem; border: 1px solid var(--hw-color-border-strong); border-radius: var(--hw-radius-full); background: var(--hw-color-surface-muted); }
|
|
40
|
+
:is(.hw-slider, .hw-range-slider input[type='range'])::-webkit-slider-thumb { appearance: none; inline-size: 1.25rem; block-size: 1.25rem; margin-block-start: -0.5rem; border: 2px solid var(--hw-color-surface); border-radius: 50%; background: var(--hw-color-primary); box-shadow: 0 0 0 1px var(--hw-color-primary); }
|
|
41
|
+
:is(.hw-slider, .hw-range-slider input[type='range'])::-moz-range-track { block-size: 0.25rem; border: 1px solid var(--hw-color-border-strong); border-radius: var(--hw-radius-full); background: var(--hw-color-surface-muted); }
|
|
42
|
+
:is(.hw-slider, .hw-range-slider input[type='range'])::-moz-range-progress { block-size: 0.375rem; border-radius: var(--hw-radius-full); background: var(--hw-color-primary); }
|
|
43
|
+
:is(.hw-slider, .hw-range-slider input[type='range'])::-moz-range-thumb { inline-size: 1rem; block-size: 1rem; border: 2px solid var(--hw-color-surface); border-radius: 50%; background: var(--hw-color-primary); box-shadow: 0 0 0 1px var(--hw-color-primary); }
|
|
44
|
+
:is(.hw-slider, .hw-range-slider input[type='range']):disabled { opacity: 0.5; cursor: not-allowed; }
|
|
45
|
+
.hw-range-slider { display: grid; gap: var(--hw-density-gap); margin: 0; padding: 0; border: 0; }
|
|
46
|
+
.hw-range-slider legend { padding: 0; margin-block-end: var(--hw-space-2); }
|
|
47
|
+
.hw-range-slider :is(label, output) { font-size: var(--hw-text-sm); font-variant-numeric: tabular-nums; }
|
|
48
|
+
.hw-range-slider output { display: block; color: var(--hw-color-text-muted); }
|
|
49
|
+
.hw-rating { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-1); margin: 0; padding: 0; border: 0; }
|
|
50
|
+
.hw-rating > legend { padding: 0; margin-block-end: var(--hw-space-2); }
|
|
51
|
+
.hw-rating label { position: relative; display: inline-grid; place-items: center; min-inline-size: 2.5rem; min-block-size: var(--hw-control-height); border-radius: var(--hw-radius-sm); color: var(--hw-color-primary-text); font-size: 1.75rem; line-height: 1; cursor: pointer; }
|
|
52
|
+
.hw-rating label input { position: absolute; inline-size: 1px; block-size: 1px; margin: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
53
|
+
.hw-rating label:has(input:focus-visible) { outline: var(--hw-focus-width) solid var(--hw-color-focus); outline-offset: 1px; }
|
|
54
|
+
.hw-rating label > span[aria-hidden='true'] { color: var(--hw-color-text-muted); }
|
|
55
|
+
.hw-rating label:is(:has(input:checked), :has(~ label input:checked)) { background: var(--hw-color-primary-subtle); }
|
|
56
|
+
.hw-rating label:is(:has(input:checked), :has(~ label input:checked)) > span[aria-hidden='true'] { color: var(--hw-color-primary-text); }
|
|
57
|
+
@media (hover: hover) {
|
|
58
|
+
.hw-rating:not([data-hw-readonly='true']):not([aria-readonly='true']):has(label:hover input:not(:disabled)) label { background: transparent; }
|
|
59
|
+
.hw-rating:not([data-hw-readonly='true']):not([aria-readonly='true']):has(label:hover input:not(:disabled)) label > span[aria-hidden='true'] { color: var(--hw-color-text-muted); }
|
|
60
|
+
.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))) { background: var(--hw-color-primary-subtle); }
|
|
61
|
+
.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'] { color: var(--hw-color-primary-text); }
|
|
62
|
+
}
|
|
63
|
+
.hw-rating:is([data-hw-readonly='true'], [aria-readonly='true']) label { cursor: default; }
|
|
64
|
+
.hw-rating label:has(input:disabled) { opacity: 0.5; cursor: not-allowed; }
|
|
65
|
+
.hw-rating > :is(.hw-hint, .hw-error) { flex-basis: 100%; }
|
|
66
|
+
input.hw-pin-input, .hw-pin-input input:not([type='hidden']) { inline-size: min(100%, 23ch); min-block-size: var(--hw-control-height-lg); padding-inline: var(--hw-space-4); direction: ltr; font-family: var(--hw-font-mono); font-size: var(--hw-text-xl); font-variant-numeric: tabular-nums; letter-spacing: 0.6em; text-align: center; }
|
|
67
|
+
.hw-pin-input[data-size='sm'] { min-block-size: var(--hw-control-height); font-size: var(--hw-text-md); }
|
|
68
|
+
.hw-tag-input { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); min-block-size: var(--hw-control-height); padding: var(--hw-space-2); border: 1px solid var(--hw-color-border-strong); border-radius: var(--hw-radius-md); background: var(--hw-color-surface); }
|
|
69
|
+
.hw-tag-input:focus-within { outline: 2px solid var(--hw-color-focus); outline-offset: -2px; border-color: var(--hw-color-primary); }
|
|
70
|
+
.hw-tag-input:has([aria-invalid='true']) { border-color: var(--hw-color-danger); }
|
|
71
|
+
.hw-tag-input > ul { display: contents; margin: 0; padding: 0; list-style: none; }
|
|
72
|
+
.hw-tag-input > input:not([type='hidden']) { flex: 1 1 8rem; inline-size: auto; min-inline-size: min(100%, 8rem); min-block-size: 2rem; padding: var(--hw-space-1); border: 0; border-radius: var(--hw-radius-sm); background: transparent; }
|
|
73
|
+
.hw-tag-input > input:focus-visible { outline: none; box-shadow: none; }
|
|
74
|
+
.hw-tag-input:has(input:disabled) { background: var(--hw-color-disabled); }
|
|
75
|
+
.hw-tag-input .hw-chip { max-inline-size: 100%; overflow-wrap: anywhere; }
|
|
76
|
+
.hw-multi-select { display: grid; gap: var(--hw-space-3); margin: 0; padding: var(--hw-space-4); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); }
|
|
77
|
+
.hw-multi-select > legend { padding-inline: var(--hw-space-1); }
|
|
78
|
+
.hw-multi-select-options, .hw-multi-select > [role='group'] { position: relative; display: grid; gap: var(--hw-space-1); max-block-size: 16rem; overflow: auto; overscroll-behavior: contain; margin: 0; padding: 3px; }
|
|
79
|
+
.hw-multi-select-options > label { padding-inline: var(--hw-space-2); border-radius: var(--hw-radius-sm); font-size: var(--hw-text-sm); }
|
|
80
|
+
.hw-multi-select-options > label:has(input:checked) { background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); }
|
|
81
|
+
.hw-multi-select-options > label:hover:not(:has(input:disabled)) { background: var(--hw-color-surface-muted); }
|
|
82
|
+
.hw-multi-select > p { margin: 0; font-size: var(--hw-text-sm); color: var(--hw-color-text-muted); }
|
|
83
|
+
.hw-file-dropzone { 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); text-align: center; transition: background-color var(--hw-duration-fast), border-color var(--hw-duration-fast); }
|
|
84
|
+
.hw-file-dropzone p { max-inline-size: 100%; margin: 0; overflow-wrap: anywhere; }
|
|
85
|
+
.hw-file-dropzone > :is(svg, .hw-file-dropzone-icon) { color: var(--hw-color-primary); }
|
|
86
|
+
.hw-file-dropzone input[type='file'] { max-inline-size: 100%; font-size: var(--hw-text-sm); }
|
|
87
|
+
.hw-file-dropzone :is(.hw-hint, [role='status']) { color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
88
|
+
.hw-file-dropzone:focus-within, .hw-file-dropzone[data-dragging='true'], .hw-file-dropzone[data-state='dragging'] { border-color: var(--hw-color-primary); background: var(--hw-color-primary-subtle); }
|
|
89
|
+
.hw-file-dropzone[data-state='error'], .hw-file-dropzone:has([aria-invalid='true']) { border-color: var(--hw-color-danger); }
|
|
90
|
+
.hw-file-dropzone:has(input:disabled) { border-style: solid; background: var(--hw-color-disabled); color: var(--hw-color-on-disabled); }
|
|
91
|
+
|
|
92
|
+
/* Calendar has seven stable columns and no fixed pixel width assumption. */
|
|
93
|
+
.hw-calendar { inline-size: min(100%, 23rem); padding: var(--hw-space-4); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); }
|
|
94
|
+
.hw-calendar-header, .hw-calendar-toolbar { display: flex; align-items: center; justify-content: space-between; gap: var(--hw-space-2); margin-block-end: var(--hw-space-3); }
|
|
95
|
+
:is(.hw-calendar-header, .hw-calendar-toolbar) > :is(h2, h3, span, strong) { flex: 1; min-inline-size: 0; margin: 0; font-size: var(--hw-text-md); font-weight: var(--hw-weight-semibold); line-height: var(--hw-leading-heading); text-align: center; overflow-wrap: anywhere; }
|
|
96
|
+
:is(.hw-calendar-header, .hw-calendar-toolbar) .hw-button { min-inline-size: 2.75rem; min-block-size: 2.75rem; max-inline-size: 32%; padding: var(--hw-space-1) var(--hw-space-2); font-size: var(--hw-text-sm); overflow-wrap: anywhere; }
|
|
97
|
+
.hw-calendar :is(.hw-calendar-prev, .hw-calendar-next) { flex: none; inline-size: 2.75rem; max-inline-size: 2.75rem; padding: 0; gap: 0; font-size: 0; }
|
|
98
|
+
.hw-calendar :is(.hw-calendar-prev, .hw-calendar-next)::before { content: ''; display: block; inline-size: 1.5rem; block-size: 1.5rem; background-color: currentColor; -webkit-mask: var(--hw-calendar-arrow) center / contain no-repeat; mask: var(--hw-calendar-arrow) center / contain no-repeat; }
|
|
99
|
+
.hw-calendar-prev { --hw-calendar-arrow: url('./assets/icons/arrow-left-01.svg'); }
|
|
100
|
+
.hw-calendar-next { --hw-calendar-arrow: url('./assets/icons/arrow-right-01.svg'); }
|
|
101
|
+
.hw-calendar :is(.hw-calendar-prev, .hw-calendar-next)::before { --_hw-mirror: var(--_hw-rtl-only) scaleX(-1); transform: var(--_hw-mirror, none); }
|
|
102
|
+
@media (forced-colors: active) {
|
|
103
|
+
.hw-calendar :is(.hw-calendar-prev, .hw-calendar-next)::before { forced-color-adjust: none; background-color: ButtonText; }
|
|
104
|
+
.hw-calendar :is(.hw-calendar-prev, .hw-calendar-next):disabled::before { background-color: GrayText; }
|
|
105
|
+
}
|
|
106
|
+
.hw-calendar-grid, .hw-calendar > table { inline-size: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0.125rem; }
|
|
107
|
+
:is(.hw-calendar-grid, .hw-calendar > table) :is(th, td) { padding: 0; text-align: center; vertical-align: middle; }
|
|
108
|
+
:is(.hw-calendar-grid, .hw-calendar > table) th, .hw-calendar-weekday { padding-block: var(--hw-space-2); color: var(--hw-color-text-muted); font-size: var(--hw-text-xs); font-weight: var(--hw-weight-medium); white-space: nowrap; }
|
|
109
|
+
.hw-calendar-day { position: relative; box-sizing: border-box; display: inline-grid; place-items: center; inline-size: 100%; min-block-size: 2.75rem; padding: var(--hw-space-1); border: 1px solid transparent; border-radius: var(--hw-radius-sm); background: transparent; color: var(--hw-color-text); font: inherit; font-size: var(--hw-text-md); font-variant-numeric: tabular-nums; cursor: pointer; }
|
|
110
|
+
.hw-calendar-day:hover:not(:disabled, [aria-disabled='true']) { background: var(--hw-color-surface-muted); }
|
|
111
|
+
.hw-calendar-day[data-outside='true'], .hw-calendar-day[data-outside=''] { color: var(--hw-color-text-subtle); }
|
|
112
|
+
.hw-calendar-day:is([data-today='true'], [data-today=''], [aria-current='date']) { border-color: var(--hw-color-primary); font-weight: var(--hw-weight-semibold); }
|
|
113
|
+
.hw-calendar-day:is([aria-selected='true'], [data-selected='true']), [aria-selected='true'] > .hw-calendar-day { background: var(--hw-color-primary); color: var(--hw-color-on-primary); font-weight: var(--hw-weight-semibold); }
|
|
114
|
+
.hw-calendar-day:is([aria-selected='true'], [data-selected='true']):hover:not(:disabled), [aria-selected='true'] > .hw-calendar-day:hover:not(:disabled) { background: var(--hw-color-primary-hover); }
|
|
115
|
+
.hw-calendar-day:disabled { opacity: 0.45; text-decoration: line-through; cursor: not-allowed; }
|
|
116
|
+
.hw-calendar-day[aria-disabled='true'] { cursor: default; }
|
|
117
|
+
.hw-calendar-day:focus-visible { z-index: 1; outline-offset: -3px; }
|
|
118
|
+
.hw-date-picker:not(.hw-field) { flex-wrap: wrap; }
|
|
119
|
+
.hw-date-picker > :is(.hw-input-group, .hw-date-picker-value, .hw-error) { flex: 0 0 100%; min-inline-size: 0; }
|
|
120
|
+
.hw-date-picker-value { overflow-wrap: anywhere; }
|
|
121
|
+
.hw-date-picker .hw-dialog { inline-size: min(26rem, calc(100vw - 2rem)); white-space: normal; }
|
|
122
|
+
.hw-date-picker .hw-dialog-header { align-items: center; }
|
|
123
|
+
.hw-date-picker .hw-dialog-header > h2 { min-inline-size: 0; overflow-wrap: anywhere; }
|
|
124
|
+
.hw-date-picker .hw-dialog-header > .hw-button { flex: none; min-inline-size: 2.75rem; min-block-size: 2.75rem; }
|
|
125
|
+
.hw-date-picker .hw-dialog .hw-calendar { inline-size: 100%; margin-inline: auto; padding: 0; border: 0; background: transparent; }
|
|
126
|
+
.hw-calendar-system { display: grid; gap: var(--hw-space-1); margin-block-end: var(--hw-space-3); }
|
|
127
|
+
.hw-calendar-range { display: grid; gap: var(--hw-space-1); text-align: center; }
|
|
128
|
+
.hw-calendar-range > bdi { white-space: nowrap; }
|
|
129
|
+
.hw-date-picker .hw-dialog-body > .hw-field { margin-block-end: var(--hw-space-3); }
|
|
130
|
+
@media (max-width: 25rem) {
|
|
131
|
+
.hw-date-picker :is(.hw-dialog-header, .hw-dialog-body) { padding-inline: var(--hw-space-3); }
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* Selection, disclosure, overlays and live feedback. */
|
|
135
|
+
.hw-toggle-group { display: inline-flex; flex-wrap: wrap; gap: var(--hw-space-1); max-inline-size: 100%; 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-muted); }
|
|
136
|
+
.hw-toggle-group > legend { padding-inline: var(--hw-space-1); font-size: var(--hw-text-sm); font-weight: var(--hw-weight-semibold); }
|
|
137
|
+
.hw-toggle-group > :is(button, label) { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--hw-space-2); 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-sm); background: transparent; color: var(--hw-color-text-muted); font: inherit; font-size: var(--hw-text-sm); font-weight: var(--hw-weight-medium); cursor: pointer; }
|
|
138
|
+
.hw-toggle-group > label input { position: absolute; inline-size: 1px; block-size: 1px; clip-path: inset(50%); }
|
|
139
|
+
.hw-toggle-group > label:has(input:focus-visible) { outline: var(--hw-focus-width) solid var(--hw-color-focus); outline-offset: 1px; }
|
|
140
|
+
.hw-toggle-group > :is([aria-pressed='true'], label:has(input:checked)) { border-color: var(--hw-color-border); background: var(--hw-color-surface); color: var(--hw-color-primary-text); box-shadow: var(--hw-shadow-sm); }
|
|
141
|
+
.hw-toggle-group > :is(button, label):hover:not(:disabled, :has(input:disabled)) { color: var(--hw-color-primary-text); }
|
|
142
|
+
.hw-toggle-group > :is(button:disabled, label:has(input:disabled)) { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
143
|
+
.hw-toggle-group[data-variant='outline'] { gap: 0; padding: 0; background: var(--hw-color-surface); border-color: var(--hw-color-border-strong); }
|
|
144
|
+
.hw-toggle-group[data-variant='outline'] > :is(button, label) { border-radius: 0; border: 0; }
|
|
145
|
+
.hw-toggle-group[data-variant='outline'] > :is(button, label) + :is(button, label) { border-inline-start: 1px solid var(--hw-color-border); }
|
|
146
|
+
.hw-toggle-group[data-variant='outline'] > :is([aria-pressed='true'], label:has(input:checked)) { background: var(--hw-color-primary-subtle); box-shadow: none; }
|
|
147
|
+
.hw-popover, .hw-menu { position: relative; display: inline-block; max-inline-size: 100%; }
|
|
148
|
+
.hw-popover > :is([data-hw-panel], .hw-popover-content, .hw-popover-panel, [data-hw-popover-panel]), .hw-menu > :is([role='menu'], [data-hw-panel], .hw-menu-content) { position: absolute; z-index: var(--hw-z-popover); inset-block-start: calc(100% + var(--hw-space-2)); inset-inline-start: 0; inline-size: max-content; max-inline-size: min(24rem, calc(100vw - 2rem)); margin: 0; padding: var(--hw-space-4); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface-raised); color: var(--hw-color-text); box-shadow: var(--hw-shadow-md); }
|
|
149
|
+
.hw-popover[data-side='top'] > :is([data-hw-panel], .hw-popover-content, .hw-popover-panel), .hw-menu[data-side='top'] > :is([role='menu'], [data-hw-panel], .hw-menu-content) { inset-block-start: auto; inset-block-end: calc(100% + var(--hw-space-2)); }
|
|
150
|
+
:is(.hw-popover, .hw-menu)[data-align='end'] > :is([data-hw-panel], .hw-popover-content, .hw-popover-panel, [role='menu'], .hw-menu-content) { inset-inline-start: auto; inset-inline-end: 0; }
|
|
151
|
+
.hw-popover-content > :first-child { margin-block-start: 0; }.hw-popover-content > :last-child { margin-block-end: 0; }
|
|
152
|
+
.hw-menu > :is([role='menu'], [data-hw-panel], .hw-menu-content) { min-inline-size: 12rem; padding: var(--hw-space-1); border-radius: var(--hw-radius-md); list-style: none; }
|
|
153
|
+
.hw-menu-item, .hw-menu [role='menuitem'], .hw-menu [role='menuitemcheckbox'], .hw-menu [role='menuitemradio'] { display: flex; align-items: center; gap: var(--hw-space-3); inline-size: 100%; min-block-size: var(--hw-control-height-sm); padding: var(--hw-space-2) var(--hw-space-3); border: 0; border-radius: var(--hw-radius-sm); background: transparent; color: var(--hw-color-text); font: inherit; font-size: var(--hw-text-sm); text-align: start; text-decoration: none; cursor: pointer; }
|
|
154
|
+
.hw-menu-item:hover:not(:disabled, [aria-disabled='true']), .hw-menu [role^='menuitem']:hover:not(:disabled, [aria-disabled='true']), .hw-menu [role^='menuitem']:focus-visible { background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); }
|
|
155
|
+
.hw-menu :is([role='separator'], hr) { margin-block: var(--hw-space-1); border: 0; border-block-start: 1px solid var(--hw-color-border); }
|
|
156
|
+
.hw-menu :is([aria-disabled='true'], :disabled) { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
157
|
+
.hw-menu-item[data-tone='danger'] { color: var(--hw-color-danger); }
|
|
158
|
+
.hw-drawer { position: fixed; inset-block: 0; inset-inline: auto 0; inline-size: min(28rem, calc(100vw - 1rem)); max-inline-size: none; block-size: 100dvh; max-block-size: 100dvh; margin: 0; padding: 0; overflow: auto; overscroll-behavior: contain; border: 1px solid var(--hw-color-border); border-radius: 0; background: var(--hw-color-surface-raised); color: var(--hw-color-text); box-shadow: var(--hw-shadow-lg); }
|
|
159
|
+
.hw-drawer::backdrop { background: var(--hw-color-overlay); backdrop-filter: blur(3px); }
|
|
160
|
+
.hw-drawer[data-side='start'] { inset-inline-start: 0; inset-inline-end: auto; }
|
|
161
|
+
.hw-drawer[data-side='bottom'] { inset-block-start: auto; inset-block-end: 0; inset-inline: 0; inline-size: 100%; block-size: auto; max-block-size: 85dvh; border-start-start-radius: var(--hw-radius-xl); border-start-end-radius: var(--hw-radius-xl); }
|
|
162
|
+
.hw-drawer[open] { animation: hw-drawer-in var(--hw-duration-normal) var(--hw-ease-standard); }
|
|
163
|
+
.hw-drawer > :is(header, .hw-drawer-header) { display: flex; align-items: start; justify-content: space-between; gap: var(--hw-space-4); padding: var(--hw-space-6); border-block-end: 1px solid var(--hw-color-border); }
|
|
164
|
+
.hw-drawer-body { padding: var(--hw-space-6); }.hw-drawer-footer { display: flex; flex-wrap: wrap; gap: var(--hw-space-3); padding: var(--hw-space-5) var(--hw-space-6); border-block-start: 1px solid var(--hw-color-border); }
|
|
165
|
+
@keyframes hw-drawer-in { from { opacity: 0; translate: 0 0.5rem; } to { opacity: 1; translate: 0; } }
|
|
166
|
+
.hw-toast-region { position: fixed; z-index: var(--hw-z-toast); inset-block-end: var(--hw-space-5); inset-inline-end: var(--hw-space-5); display: grid; gap: var(--hw-space-3); inline-size: min(25rem, calc(100vw - 2.5rem)); max-block-size: calc(100dvh - 2.5rem); overflow: auto; padding: var(--hw-space-1); list-style: none; }
|
|
167
|
+
.hw-toast-region[data-position='top-end'], .hw-toast-region[data-position='top-start'] { inset-block-start: var(--hw-space-5); inset-block-end: auto; }
|
|
168
|
+
.hw-toast-region[data-position='top-start'], .hw-toast-region[data-position='bottom-start'] { inset-inline-start: var(--hw-space-5); inset-inline-end: auto; }
|
|
169
|
+
.hw-toast-region[data-variant='inline'] { position: static; inline-size: 100%; max-block-size: none; overflow: visible; padding: 0; }
|
|
170
|
+
.hw-toast { display: grid; grid-template-columns: minmax(0, 1fr) auto; 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-color-primary); border-radius: var(--hw-radius-md); background: var(--hw-color-surface-raised); color: var(--hw-color-text); box-shadow: var(--hw-shadow-md); font-size: var(--hw-text-sm); }
|
|
171
|
+
.hw-toast > :is(.hw-toast-content, div) { flex: 1; min-inline-size: 0; }.hw-toast :is(h2, h3, p) { margin: 0; font-size: inherit; }.hw-toast :is(h2, h3, strong) { font-weight: var(--hw-weight-semibold); }.hw-toast p { color: var(--hw-color-text-muted); }.hw-toast [data-hw-dismiss] { margin-inline-start: auto; }
|
|
172
|
+
.hw-toast[data-tone='neutral'] { border-inline-start-color: var(--hw-color-text-muted); }
|
|
173
|
+
.hw-toast[data-tone='danger'] { border-inline-start-color: var(--hw-color-danger); }.hw-toast[data-tone='warning'] { border-inline-start-color: var(--hw-color-warning); }.hw-toast[data-tone='success'] { border-inline-start-color: var(--hw-color-success); }.hw-toast[data-tone='info'] { border-inline-start-color: var(--hw-color-info); }
|
|
174
|
+
.hw-collapsible { border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-md); background: var(--hw-color-surface); }
|
|
175
|
+
.hw-collapsible > :is(summary, .hw-collapsible-trigger, [data-hw-trigger]) { display: flex; align-items: center; justify-content: space-between; gap: var(--hw-space-3); inline-size: 100%; min-block-size: var(--hw-control-height); padding: var(--hw-space-3) var(--hw-space-4); border: 0; border-radius: var(--hw-radius-md); background: transparent; color: var(--hw-color-text); font: inherit; font-weight: var(--hw-weight-medium); text-align: start; list-style: none; cursor: pointer; }
|
|
176
|
+
.hw-collapsible > summary::-webkit-details-marker { display: none; }
|
|
177
|
+
.hw-collapsible > summary::after { content: ''; display: inline-block; flex: none; inline-size: 1.25rem; block-size: 1.25rem; color: var(--hw-color-text-muted); background: currentColor; mask: url('./assets/icons/add-01.svg') center / contain no-repeat; }.hw-collapsible[open] > summary::after { mask-image: url('./assets/icons/minus-sign.svg'); }
|
|
178
|
+
.hw-collapsible-content, .hw-collapsible > :is([data-hw-panel], div, p, section) { padding: var(--hw-space-4); border-block-start: 1px solid var(--hw-color-border); }
|
|
179
|
+
.hw-tree-view, .hw-tree-view [role='group'] { margin: 0; padding: 0; list-style: none; }
|
|
180
|
+
.hw-tree-view { padding: var(--hw-space-2); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-md); background: var(--hw-color-surface); }
|
|
181
|
+
.hw-tree-view [role='group'] { margin-inline-start: var(--hw-space-3); padding-inline-start: var(--hw-space-3); border-inline-start: 1px solid var(--hw-color-border); }
|
|
182
|
+
:is(.hw-tree-item, .hw-tree-view [role='treeitem']) { position: relative; display: flex; align-items: center; flex-wrap: wrap; gap: var(--hw-space-2); min-block-size: var(--hw-control-height-sm); padding: var(--hw-space-2); border-radius: var(--hw-radius-sm); color: var(--hw-color-text); font-size: var(--hw-text-sm); cursor: pointer; }
|
|
183
|
+
:is(.hw-tree-item, .hw-tree-view [role='treeitem'])[aria-selected='true'] { background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); }
|
|
184
|
+
:is(.hw-tree-item, .hw-tree-view [role='treeitem'])[aria-disabled='true'] { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
185
|
+
:is(.hw-tree-item, .hw-tree-view [role='treeitem']):focus-visible { outline-offset: -2px; }:is(.hw-tree-item, .hw-tree-view [role='treeitem']) > [role='group'] { margin-block-start: var(--hw-space-2); background: var(--hw-color-surface); color: var(--hw-color-text); }
|
|
186
|
+
.hw-tree-row { display: flex; align-items: center; gap: var(--hw-space-2); }:is(.hw-tree-item, .hw-tree-view [role='treeitem']) button { color: inherit; }
|
|
187
|
+
.hw-carousel { position: relative; min-inline-size: 0; }.hw-carousel-viewport, .hw-carousel-slides { min-inline-size: 0; overflow: hidden; border-radius: var(--hw-radius-lg); }
|
|
188
|
+
.hw-carousel-slide, .hw-carousel > [role='group'] { min-inline-size: 0; padding: var(--hw-space-5); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); }
|
|
189
|
+
.hw-carousel-slide > :is(img, video) { display: block; max-inline-size: 100%; block-size: auto; border-radius: var(--hw-radius-md); }
|
|
190
|
+
.hw-carousel-controls, .hw-carousel > .hw-inline { display: flex; align-items: center; justify-content: space-between; gap: var(--hw-space-3); margin-block-start: var(--hw-space-3); }
|
|
191
|
+
.hw-carousel-status { color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); font-variant-numeric: tabular-nums; }
|
|
192
|
+
|
|
193
|
+
/* Composable content; visual variants do not change behavior. */
|
|
194
|
+
.hw-link { border-radius: 2px; color: var(--hw-color-primary-text); font-family: var(--hw-font-sans); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
|
|
195
|
+
.hw-link:hover { text-decoration-thickness: 2px; }.hw-link[aria-current] { font-weight: var(--hw-weight-semibold); }.hw-link[data-variant='subtle'] { color: var(--hw-color-text-muted); text-decoration: none; }.hw-link[data-variant='subtle']:hover { color: var(--hw-color-primary-text); text-decoration: underline; }.hw-link[data-variant='standalone'] { display: inline-flex; align-items: center; gap: var(--hw-space-2); font-weight: var(--hw-weight-medium); text-decoration: none; }.hw-link[aria-disabled='true'] { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
196
|
+
.hw-icon-button { display: inline-flex; flex: none; align-items: center; justify-content: center; inline-size: var(--hw-control-height); min-block-size: var(--hw-control-height); padding: var(--hw-space-2); }
|
|
197
|
+
.hw-icon-button[data-size='sm'] { inline-size: var(--hw-control-height-sm); min-block-size: var(--hw-control-height-sm); }.hw-icon-button[data-size='lg'] { inline-size: var(--hw-control-height-lg); min-block-size: var(--hw-control-height-lg); }.hw-icon-button > span { display: inline-flex; align-items: center; justify-content: center; }.hw-icon-button[aria-pressed='true'] { background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); }
|
|
198
|
+
.hw-button-group { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); max-inline-size: 100%; }.hw-button-group[data-orientation='vertical'] { flex-direction: column; align-items: stretch; }.hw-button-group[data-variant='attached'] { gap: 0; }.hw-button-group[data-variant='attached'] > .hw-button + .hw-button { margin-inline-start: -1px; }.hw-button-group[data-variant='attached'] > .hw-button:not(:first-child) { border-start-start-radius: 0; border-end-start-radius: 0; }.hw-button-group[data-variant='attached'] > .hw-button:not(:last-child) { border-start-end-radius: 0; border-end-end-radius: 0; }.hw-button-group > .hw-button:focus-visible { position: relative; z-index: 1; }
|
|
199
|
+
.hw-chip[data-tone='success'] { --hw-tone: var(--hw-color-success); --hw-tone-bg: var(--hw-color-success-subtle); }.hw-chip[data-tone='warning'] { --hw-tone: var(--hw-color-warning); --hw-tone-bg: var(--hw-color-warning-subtle); }.hw-chip[data-tone='danger'] { --hw-tone: var(--hw-color-danger); --hw-tone-bg: var(--hw-color-danger-subtle); }.hw-chip[data-tone='info'] { --hw-tone: var(--hw-color-info); --hw-tone-bg: var(--hw-color-info-subtle); }
|
|
200
|
+
:is(.hw-badge, .hw-chip)[data-variant='outline'] { border-color: currentColor; background: transparent; }.hw-badge[data-variant='dot']::before { content: ''; inline-size: 0.375rem; block-size: 0.375rem; border-radius: 50%; background: currentColor; }.hw-chip[data-size='sm'] { min-block-size: 1.75rem; padding-inline: var(--hw-space-2); }.hw-chip[data-size='lg'] { min-block-size: var(--hw-control-height); font-size: var(--hw-text-sm); }
|
|
201
|
+
.hw-description-list { display: grid; gap: 0; margin: 0; }.hw-description-list > div { min-inline-size: 0; padding-block: var(--hw-space-4); border-block-end: 1px solid var(--hw-color-border); }.hw-description-list dt { margin: 0 0 var(--hw-space-1); color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-description-list dd { margin: 0; overflow-wrap: anywhere; color: var(--hw-color-text); font-weight: var(--hw-weight-medium); }
|
|
202
|
+
.hw-description-list[data-variant='horizontal'] > div { display: grid; grid-template-columns: minmax(7rem, 1fr) minmax(0, 2fr); align-items: baseline; gap: var(--hw-space-5); }.hw-description-list[data-variant='horizontal'] dt { margin: 0; }.hw-description-list[data-variant='compact'] > div { padding-block: var(--hw-space-2); }
|
|
203
|
+
.hw-stat { position: relative; display: grid; gap: var(--hw-space-2); padding: var(--hw-space-5); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); }.hw-stat-label { color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-stat-value { font-size: var(--hw-text-3xl); font-weight: var(--hw-weight-semibold); font-variant-numeric: tabular-nums; line-height: var(--hw-leading-heading); }.hw-stat-description { margin: 0; color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-stat[data-tone='success'] .hw-stat-value { color: var(--hw-color-success); }.hw-stat[data-tone='danger'] .hw-stat-value { color: var(--hw-color-danger); }.hw-stat[data-variant='plain'] { padding: 0; border: 0; border-radius: 0; background: transparent; }
|
|
204
|
+
.hw-timeline-item h3 { margin-block: 0 var(--hw-space-1); font-size: var(--hw-text-md); font-weight: var(--hw-weight-medium); }.hw-timeline-item p { margin: 0; color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-timeline > li[data-state='current']::before { background: var(--hw-color-primary); box-shadow: 0 0 0 3px var(--hw-color-primary-subtle); }
|
|
205
|
+
.hw-meter { display: grid; gap: var(--hw-space-2); font-size: var(--hw-text-sm); }.hw-meter meter, meter.hw-meter { display: block; inline-size: 100%; block-size: 0.75rem; border: 0; border-radius: var(--hw-radius-full); background: var(--hw-color-surface-muted); accent-color: var(--hw-color-primary); }.hw-meter meter::-webkit-meter-bar, meter.hw-meter::-webkit-meter-bar { block-size: 0.5rem; border: 0; border-radius: var(--hw-radius-full); background: var(--hw-color-surface-muted); }.hw-meter meter::-webkit-meter-optimum-value, meter.hw-meter::-webkit-meter-optimum-value { border-radius: var(--hw-radius-full); background: var(--hw-color-success); }.hw-meter meter::-webkit-meter-suboptimum-value, meter.hw-meter::-webkit-meter-suboptimum-value { background: var(--hw-color-warning); }.hw-meter meter::-webkit-meter-even-less-good-value, meter.hw-meter::-webkit-meter-even-less-good-value { background: var(--hw-color-danger); }.hw-meter meter::-moz-meter-bar, meter.hw-meter::-moz-meter-bar { border-radius: var(--hw-radius-full); background: var(--hw-color-primary); }
|
|
206
|
+
.hw-avatar-group { display: inline-flex; align-items: center; padding-inline-start: var(--hw-space-2); }.hw-avatar-group > * { position: relative; margin-inline-start: calc(-1 * var(--hw-space-2)); border-radius: var(--hw-radius-full); }.hw-avatar-group .hw-avatar { border: 2px solid var(--hw-color-surface); }.hw-avatar-group > :focus-within { z-index: 1; }
|
|
207
|
+
.hw-data-table, .hw-table-wrap { position: relative; }.hw-data-table th button { display: inline-flex; align-items: center; gap: var(--hw-space-2); min-block-size: 2rem; margin: -0.25rem; padding: 0.25rem; border: 0; border-radius: var(--hw-radius-sm); background: transparent; color: inherit; font: inherit; font-weight: inherit; text-align: start; cursor: pointer; }.hw-data-table th button:hover { color: var(--hw-color-primary-text); }.hw-data-table [aria-sort='ascending'], .hw-data-table [aria-sort='descending'] { color: var(--hw-color-primary-text); }
|
|
208
|
+
.hw-table[data-variant='striped'] tbody tr:nth-child(even) { background: var(--hw-color-canvas); }.hw-table[data-variant='bordered'] :is(th, td) + :is(th, td) { border-inline-start: 1px solid var(--hw-color-border); }.hw-table[data-size='sm'] :is(th, td) { padding-block: var(--hw-space-2); font-size: var(--hw-text-xs); }.hw-table[data-size='lg'] :is(th, td) { padding-block: var(--hw-space-5); }
|
|
209
|
+
|
|
210
|
+
/* Configurable Saudi-platform patterns. Brand and trust content stay caller-owned. */
|
|
211
|
+
.hw-service-card { display: flex; flex-direction: column; align-items: start; gap: var(--hw-space-3); padding: var(--hw-space-5); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); transition: border-color var(--hw-duration-normal), box-shadow var(--hw-duration-normal); }
|
|
212
|
+
.hw-service-card-icon { display: inline-grid; place-items: center; inline-size: 3rem; block-size: 3rem; margin-block-end: var(--hw-space-2); border-radius: var(--hw-radius-md); background: var(--hw-color-primary-subtle); color: var(--hw-color-primary-text); }.hw-service-card-icon:empty { display: none; }
|
|
213
|
+
.hw-service-card h3, .hw-service-card h2 { margin: 0; font-size: var(--hw-text-lg); font-weight: var(--hw-weight-semibold); line-height: var(--hw-leading-heading); }.hw-service-card h3 a, .hw-service-card h2 a { color: inherit; text-decoration: none; }.hw-service-card h3 a:hover, .hw-service-card h2 a:hover { color: var(--hw-color-primary-text); text-decoration: underline; }
|
|
214
|
+
.hw-service-card > p { margin: 0; color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-service-card > .hw-badge { flex: none; }.hw-service-card > p:not(.hw-badge) { flex: 1; }.hw-service-card-meta { display: flex; flex-wrap: wrap; gap: var(--hw-space-3); inline-size: 100%; margin-block: var(--hw-space-2); color: var(--hw-color-text-muted); font-size: var(--hw-text-xs); }.hw-service-card-meta > span + span { padding-inline-start: var(--hw-space-3); border-inline-start: 1px solid var(--hw-color-border); }.hw-service-card > .hw-button { align-self: stretch; margin-block-start: auto; }
|
|
215
|
+
.hw-service-card[data-variant='featured'] { border-color: var(--hw-color-primary); box-shadow: inset 0 3px 0 var(--hw-color-primary); }.hw-service-card[data-variant='compact'] { gap: var(--hw-space-2); padding: var(--hw-space-4); }.hw-service-card:focus-within { border-color: var(--hw-color-primary); }
|
|
216
|
+
.hw-service-details { display: grid; gap: var(--hw-space-5); }.hw-service-details > header :is(h1, h2) { margin: 0 0 var(--hw-space-3); font-size: var(--hw-text-2xl); font-weight: var(--hw-weight-semibold); line-height: var(--hw-leading-heading); }.hw-service-details > header p { margin: 0; max-inline-size: 65ch; color: var(--hw-color-text-muted); }.hw-service-details > h3 { margin: 0; font-size: var(--hw-text-lg); }.hw-service-details > ul { margin: 0; padding-inline-start: var(--hw-space-6); color: var(--hw-color-text-muted); }.hw-service-details > ul li + li { margin-block-start: var(--hw-space-2); }
|
|
217
|
+
.hw-portal-header { position: relative; display: flex; align-items: center; flex-wrap: wrap; gap: var(--hw-space-5); min-block-size: 5rem; padding: var(--hw-space-4) clamp(1rem, 4vw, 3rem); border-block-end: 1px solid var(--hw-color-border); background: var(--hw-color-surface); }
|
|
218
|
+
.hw-portal-brand { display: inline-flex; align-items: center; gap: var(--hw-space-3); flex: none; color: var(--hw-color-text); font-size: var(--hw-text-xl); font-weight: var(--hw-weight-semibold); text-decoration: none; }.hw-portal-brand :is(img, svg) { max-inline-size: 10rem; max-block-size: 3rem; }.hw-portal-header nav { display: flex; flex: 1; flex-wrap: wrap; gap: var(--hw-space-4); }.hw-portal-header nav ul { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-4); margin: 0; padding: 0; list-style: none; }.hw-portal-header nav a { display: inline-flex; align-items: center; min-block-size: var(--hw-control-height); color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); text-decoration: none; }.hw-portal-header nav a[aria-current='page'] { color: var(--hw-color-primary-text); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 0.6em; }.hw-portal-header-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); margin-inline-start: auto; }.hw-portal-menu-toggle { display: none; }.hw-portal-header[data-variant='sticky'] { position: sticky; z-index: var(--hw-z-sticky); inset-block-start: 0; }
|
|
219
|
+
.hw-skip-link { position: absolute; z-index: var(--hw-z-popover); inset-inline-start: var(--hw-space-4); inset-block-start: var(--hw-space-2); padding: var(--hw-space-2) var(--hw-space-4); transform: translateY(-200%); border-radius: var(--hw-radius-sm); background: var(--hw-color-primary); color: var(--hw-color-on-primary); font-weight: var(--hw-weight-medium); }.hw-skip-link:focus { transform: none; }
|
|
220
|
+
.hw-portal-footer { display: flex; flex-wrap: wrap; gap: var(--hw-space-8); justify-content: space-between; padding: var(--hw-space-8) clamp(1rem, 4vw, 3rem); border-block-start: 1px solid var(--hw-color-border); background: var(--hw-color-canvas); color: var(--hw-color-text); }.hw-portal-footer > div { flex: 1 1 16rem; }.hw-portal-footer strong { font-size: var(--hw-text-lg); }.hw-portal-footer nav { display: flex; flex-wrap: wrap; gap: var(--hw-space-4); }.hw-portal-footer nav ul { display: flex; flex-wrap: wrap; gap: var(--hw-space-4); margin: 0; padding: 0; list-style: none; }.hw-portal-footer nav a { font-size: var(--hw-text-sm); }.hw-portal-footer > p { flex-basis: 100%; margin: 0; padding-block-start: var(--hw-space-4); border-block-start: 1px solid var(--hw-color-border); color: var(--hw-color-text-muted); font-size: var(--hw-text-xs); }
|
|
221
|
+
.hw-feedback { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-4); padding: var(--hw-space-5); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-canvas); }.hw-feedback > p { margin: 0; font-size: var(--hw-text-sm); }.hw-feedback > p:first-child { flex: 1 1 12rem; font-weight: var(--hw-weight-medium); }.hw-feedback [aria-pressed='true'] { outline: 2px solid var(--hw-color-primary); outline-offset: 3px; }.hw-feedback [role='status'] { flex-basis: 100%; color: var(--hw-color-primary-text); }.hw-feedback [role='status']:empty { flex-basis: 0; }
|
|
222
|
+
.hw-cookie-consent { display: grid; gap: var(--hw-space-3); padding: var(--hw-space-5); border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface-raised); box-shadow: var(--hw-shadow-md); }.hw-cookie-consent h2 { margin: 0; font-size: var(--hw-text-lg); font-weight: var(--hw-weight-semibold); }.hw-cookie-consent p { margin: 0; max-inline-size: 75ch; color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-cookie-consent > .hw-button-group { margin-block-start: var(--hw-space-2); }.hw-cookie-consent[data-variant='banner'] { position: fixed; z-index: var(--hw-z-toast); inset-inline: var(--hw-space-4); inset-block-end: var(--hw-space-4); max-inline-size: var(--hw-content-max); margin-inline: auto; }
|
|
223
|
+
.hw-notification-list { border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-lg); background: var(--hw-color-surface); }.hw-notification-list > ul { margin: 0; padding: 0; list-style: none; }.hw-notification, :is(.hw-notification-list > ul > li, .hw-notification-list > li) { position: relative; display: flex; align-items: start; gap: var(--hw-space-3); padding: var(--hw-space-4); }.hw-notification + .hw-notification { border-block-start: 1px solid var(--hw-color-border); }.hw-notification > div { flex: 1; min-inline-size: 0; }.hw-notification :is(strong, a) { font-size: var(--hw-text-sm); font-weight: var(--hw-weight-semibold); }.hw-notification p { margin-block: var(--hw-space-1); color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-notification :is(time, div > span:not(.hw-sr-only)) { color: var(--hw-color-text-subtle); font-size: var(--hw-text-xs); }.hw-notification[data-unread='true'] { background: var(--hw-color-primary-subtle); }.hw-notification[data-unread='true']::before { content: ''; flex: none; inline-size: 0.375rem; block-size: 0.375rem; margin-block-start: 0.6rem; border-radius: 50%; background: var(--hw-color-primary); }.hw-notification:first-child { border-start-start-radius: var(--hw-radius-lg); border-start-end-radius: var(--hw-radius-lg); }.hw-notification:last-child { border-end-start-radius: var(--hw-radius-lg); border-end-end-radius: var(--hw-radius-lg); }
|
|
224
|
+
|
|
225
|
+
/* Alternative native adapter anatomy uses the same visual contract. */
|
|
226
|
+
.hw-popover-panel > :first-child { margin-block-start: 0; }.hw-popover-panel > :last-child { margin-block-end: 0; }
|
|
227
|
+
.hw-popover-panel > :is(h2, h3) { margin-block-end: var(--hw-space-3); font-size: var(--hw-text-lg); font-weight: var(--hw-weight-semibold); }
|
|
228
|
+
.hw-toggle-group > :is(.hw-hint, .hw-error) { flex-basis: 100%; margin-block: var(--hw-space-2) 0; }
|
|
229
|
+
.hw-pin-slots { display: flex; flex-wrap: wrap; gap: var(--hw-space-2); direction: ltr; }
|
|
230
|
+
.hw-pin-slots > span { display: grid; place-items: center; inline-size: 2.5rem; min-block-size: 2.75rem; border: 1px solid var(--hw-color-border); border-radius: var(--hw-radius-md); background: var(--hw-color-surface-muted); font-family: var(--hw-font-mono); font-size: var(--hw-text-lg); }
|
|
231
|
+
.hw-tag-input.hw-field > :is(.hw-label, .hw-hint, .hw-error) { flex-basis: 100%; }
|
|
232
|
+
.hw-tag-input > .hw-inline { gap: var(--hw-space-2); }
|
|
233
|
+
.hw-tree-toggle { display: inline-grid; flex: none; place-items: center; min-inline-size: 1.75rem; min-block-size: 1.75rem; border-radius: var(--hw-radius-sm); color: var(--hw-color-text-muted); }
|
|
234
|
+
:is(.hw-tree-item, .hw-tree-view [role='treeitem']) > [role='group'] { flex-basis: 100%; }
|
|
235
|
+
.hw-carousel-controls > [role='status'], .hw-carousel > .hw-inline > [role='status'] { color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); text-align: center; }
|
|
236
|
+
.hw-carousel-slide > :is(h2, h3) { margin-block: var(--hw-space-3) var(--hw-space-2); }.hw-carousel-slide > p { margin: 0; color: var(--hw-color-text-muted); }
|
|
237
|
+
.hw-toast-region > :is([role='status'], [role='alert']) { display: grid; gap: var(--hw-space-3); }
|
|
238
|
+
.hw-toast > :is(strong, h2, h3, p, div) { grid-column: 1; }
|
|
239
|
+
.hw-toast > button { grid-column: 2; grid-row: 1 / span 2; align-self: start; }
|
|
240
|
+
.hw-stat dl, .hw-stat dd { margin: 0; }.hw-stat dt { margin-block-end: var(--hw-space-2); color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }.hw-stat > p, .hw-stat-trend { margin: 0; color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
241
|
+
.hw-service-card > :is(.hw-card-header, .hw-card-body, .hw-card-footer) { inline-size: 100%; padding: 0; }
|
|
242
|
+
.hw-service-card > .hw-card-body { flex: 1; }
|
|
243
|
+
.hw-service-card > .hw-card-header { justify-content: start; }
|
|
244
|
+
.hw-service-card > .hw-card-footer { margin-block-start: auto; padding-block-start: var(--hw-space-4); }
|
|
245
|
+
.hw-service-card .hw-card-body > p { margin: 0; color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
246
|
+
.hw-service-card .hw-card-body > ul { display: flex; flex-wrap: wrap; gap: var(--hw-space-3); margin-block: var(--hw-space-4) 0; padding: 0; list-style: none; color: var(--hw-color-text-muted); font-size: var(--hw-text-xs); }
|
|
247
|
+
.hw-service-details > section > h3 { margin: 0; font-size: var(--hw-text-lg); }.hw-service-details > section > ul { padding-inline-start: var(--hw-space-6); color: var(--hw-color-text-muted); }
|
|
248
|
+
.hw-portal-header-main { display: flex; align-items: center; flex-wrap: wrap; gap: var(--hw-space-5); inline-size: 100%; min-inline-size: 0; }
|
|
249
|
+
.hw-portal-notice { flex-basis: 100%; inline-size: 100%; padding-block-end: var(--hw-space-3); border-block-end: 1px solid var(--hw-color-border); color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
250
|
+
.hw-portal-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); margin-inline-start: auto; }
|
|
251
|
+
.hw-portal-footer > small { flex-basis: 100%; color: var(--hw-color-text-muted); font-size: var(--hw-text-xs); }.hw-portal-footer nav a { color: var(--hw-color-primary-text); text-underline-offset: 0.2em; }
|
|
252
|
+
.hw-feedback > h2 { flex: 1 1 12rem; margin: 0; font-size: var(--hw-text-md); font-weight: var(--hw-weight-semibold); }
|
|
253
|
+
.hw-feedback > div:not(.hw-button-group, .hw-inline, .hw-feedback-actions) { display: grid; gap: var(--hw-space-3); flex-basis: 100%; }
|
|
254
|
+
.hw-notification-list > :is(h2, p) { margin: 0; padding: var(--hw-space-4); }.hw-notification-list > h2 { border-block-end: 1px solid var(--hw-color-border); font-size: var(--hw-text-lg); }
|
|
255
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li) { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--hw-space-2) var(--hw-space-3); }
|
|
256
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li) + li { border-block-start: 1px solid var(--hw-color-border); }
|
|
257
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li) > :is(h3, p, time, div) { grid-column: 1; min-inline-size: 0; margin: 0; }
|
|
258
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li) > h3 { font-size: var(--hw-text-sm); font-weight: var(--hw-weight-semibold); }
|
|
259
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li) > :is(p, time) { color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
260
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li) > button { grid-column: 2; max-inline-size: 12rem; align-self: start; }
|
|
261
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li) > .hw-badge { grid-column: 2; justify-self: start; }
|
|
262
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li):is([data-unread='true'], [data-read='false'], [data-state='unread']) { background: var(--hw-color-primary-subtle); }
|
|
263
|
+
:is(.hw-notification-list > ul > li, .hw-notification-list > li):is([data-unread='true'], [data-read='false'], [data-state='unread']) :is(p, time, div > span:not(.hw-sr-only)) { color: var(--hw-color-primary-text); }
|
|
264
|
+
.hw-notification[data-unread='true']::before { position: absolute; inset-inline-start: var(--hw-space-2); inset-block-start: var(--hw-space-4); }
|
|
265
|
+
|
|
266
|
+
/* Shared variation knobs for established primitives. */
|
|
267
|
+
.hw-button[data-variant='soft'] { --hw-button-bg: var(--hw-color-primary-subtle); --hw-button-fg: var(--hw-color-primary-text); --hw-button-hover: var(--hw-color-surface-muted); }.hw-button[data-variant='outline'] { --hw-button-bg: transparent; --hw-button-fg: var(--hw-color-primary-text); --hw-button-border: var(--hw-color-primary); --hw-button-hover: var(--hw-color-primary-subtle); }.hw-button[data-variant='link'] { --hw-button-bg: transparent; --hw-button-fg: var(--hw-color-primary-text); --hw-button-hover: transparent; padding-inline: var(--hw-space-1); text-decoration: underline; text-underline-offset: 0.25em; }
|
|
268
|
+
:is(.hw-input, .hw-textarea, .hw-select)[data-size='sm'] { min-block-size: var(--hw-control-height-sm); padding-block: var(--hw-space-1); font-size: var(--hw-text-sm); }:is(.hw-input, .hw-textarea, .hw-select)[data-size='lg'] { min-block-size: var(--hw-control-height-lg); padding-inline: var(--hw-space-4); font-size: var(--hw-text-lg); }:is(.hw-input, .hw-textarea, .hw-select)[data-variant='filled'] { border-color: transparent; background: var(--hw-color-surface-muted); }:is(.hw-input, .hw-textarea, .hw-select)[data-variant='filled']:focus-visible { border-color: var(--hw-color-primary); }
|
|
269
|
+
.hw-card[data-variant='flat'] { box-shadow: none; }.hw-card[data-variant='elevated'] { box-shadow: var(--hw-shadow-md); }.hw-card[data-variant='outlined'] { border-color: var(--hw-color-border-strong); box-shadow: none; }.hw-card[data-variant='ghost'] { border-color: transparent; background: transparent; box-shadow: none; }
|
|
270
|
+
.hw-alert[data-variant='outline'] { background: transparent; border-color: var(--hw-tone); }.hw-alert[data-variant='minimal'] { padding-inline: 0; border: 0; background: transparent; }.hw-tabs[data-variant='pills'] .hw-tab-list { gap: var(--hw-space-2); padding: 3px; border: 0; }.hw-tabs[data-variant='pills'] .hw-tab { border-radius: var(--hw-radius-full); }.hw-tabs[data-variant='pills'] .hw-tab::after { display: none; }.hw-tabs[data-variant='pills'] .hw-tab[aria-selected='true'] { background: var(--hw-color-primary-subtle); }
|
|
271
|
+
.hw-avatar[data-size='sm'] { inline-size: 2rem; block-size: 2rem; font-size: var(--hw-text-xs); }.hw-avatar[data-size='lg'] { inline-size: 3.5rem; block-size: 3.5rem; font-size: var(--hw-text-lg); }.hw-avatar[data-size='xl'] { inline-size: 5rem; block-size: 5rem; font-size: var(--hw-text-2xl); }.hw-avatar img { inline-size: 100%; block-size: 100%; }.hw-avatar[data-variant='square'] { border-radius: var(--hw-radius-md); }
|
|
272
|
+
.hw-skeleton[data-variant='circle'] { aspect-ratio: 1; border-radius: 50%; }.hw-skeleton[data-variant='text'] { min-block-size: 0.75em; border-radius: 0.2em; }.hw-progress[data-size='sm'] { block-size: 0.25rem; }.hw-progress[data-size='lg'] { block-size: 0.75rem; }.hw-spinner[data-size='sm'] { inline-size: 1rem; block-size: 1rem; }.hw-spinner[data-size='lg'] { inline-size: 2rem; block-size: 2rem; border-width: 3px; }
|
|
273
|
+
.hw-tooltip-anchor { position: relative; display: inline-flex; }
|
|
274
|
+
@media (max-width: 47.999rem) {
|
|
275
|
+
.hw-portal-header { gap: var(--hw-space-3); }
|
|
276
|
+
.hw-portal-menu-toggle { display: inline-flex; margin-inline-start: auto; }
|
|
277
|
+
.hw-portal-header > nav, .hw-portal-header-main > nav { order: 3; flex-basis: 100%; }
|
|
278
|
+
.hw-portal-header > nav[data-open='false'] { display: none; }
|
|
279
|
+
.hw-portal-header > nav ul, .hw-portal-header-main > nav ul { align-items: stretch; flex-direction: column; gap: var(--hw-space-1); }
|
|
280
|
+
.hw-portal-header > nav a, .hw-portal-header-main > nav a { inline-size: 100%; padding-inline: var(--hw-space-2); }
|
|
281
|
+
.hw-portal-header-actions:empty { display: none; }
|
|
282
|
+
.hw-portal-footer { gap: var(--hw-space-5); }
|
|
283
|
+
}
|
|
284
|
+
@media (max-width: 39.999rem) {
|
|
285
|
+
.hw-description-list[data-variant='horizontal'] > div { grid-template-columns: minmax(0, 1fr); gap: var(--hw-space-1); }
|
|
286
|
+
.hw-cookie-consent .hw-button-group { display: grid; inline-size: 100%; }
|
|
287
|
+
.hw-calendar { padding: var(--hw-space-3); }
|
|
288
|
+
.hw-rating label { min-inline-size: 2.25rem; }
|
|
289
|
+
.hw-service-card { padding: var(--hw-space-4); }
|
|
290
|
+
}
|
|
291
|
+
@media (prefers-reduced-motion: reduce) {
|
|
292
|
+
.hw-file-dropzone, .hw-service-card { transition: none; }
|
|
293
|
+
.hw-drawer[open] { animation: none; }
|
|
294
|
+
}
|
|
295
|
+
@media (forced-colors: active) {
|
|
296
|
+
.hw-slider, .hw-range-slider input[type='range'] { appearance: auto; }
|
|
297
|
+
.hw-rating label:has(input:checked), .hw-toggle-group > :is([aria-pressed='true'], label:has(input:checked)), .hw-calendar-day:is([aria-selected='true'], [data-selected='true']), [aria-selected='true'] > .hw-calendar-day, :is(.hw-tree-item, .hw-tree-view [role='treeitem'])[aria-selected='true'] { outline: 2px solid Highlight; outline-offset: -2px; }
|
|
298
|
+
.hw-rating label:has(~ label input:checked) { outline: 2px solid Highlight; outline-offset: -2px; }
|
|
299
|
+
.hw-rating label:has(input:focus-visible) { outline: 3px solid CanvasText; outline-offset: 2px; }
|
|
300
|
+
.hw-input-addon, .hw-toast, .hw-cookie-consent { border-color: CanvasText; }
|
|
301
|
+
.hw-notification[data-unread='true']::before { background: Highlight; }
|
|
302
|
+
.hw-drawer::backdrop { background: Canvas; opacity: 0.7; }
|
|
303
|
+
.hw-menu :is([aria-disabled='true'], :disabled), .hw-toggle-group > :disabled { color: GrayText; }
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.hw-notification-list:is(ul, ol) { margin: 0; padding: 0; list-style: none; }
|
|
307
|
+
.hw-notification-list > li > a { grid-column: 1; min-inline-size: 0; font-size: var(--hw-text-sm); }
|
|
308
|
+
.hw-timeline-item[aria-current='step']::before { background: var(--hw-color-primary); box-shadow: 0 0 0 3px var(--hw-color-primary-subtle); }
|
|
309
|
+
.hw-stat-trend[data-tone='success'] { color: var(--hw-color-success); }.hw-stat-trend[data-tone='danger'] { color: var(--hw-color-danger); }
|
|
310
|
+
.hw-cookie-consent > h3 { margin: 0; font-size: var(--hw-text-lg); font-weight: var(--hw-weight-semibold); }
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* Choice presentation is independent of each adapter's feedback data contract. */
|
|
2
|
+
.hw-feedback > .hw-inline, .hw-feedback .hw-feedback-actions {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: row;
|
|
5
|
+
flex-wrap: wrap;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: var(--hw-space-2);
|
|
8
|
+
flex-basis: auto;
|
|
9
|
+
}
|
|
10
|
+
.hw-feedback > fieldset { flex: 1 1 100%; min-inline-size: 0; border: 0; padding: 0; margin: 0; }
|
|
11
|
+
.hw-feedback > fieldset > legend { padding: 0; font-weight: var(--hw-weight-medium); }
|
|
12
|
+
.hw-feedback > fieldset > .hw-button { margin-block-start: var(--hw-space-3); }
|
|
13
|
+
.hw-feedback > fieldset > .hw-feedback-actions { margin-block: var(--hw-space-3); }
|
|
14
|
+
.hw-feedback-actions > .hw-field { min-inline-size: 0; }
|
|
15
|
+
.hw-feedback-actions .hw-choice {
|
|
16
|
+
box-sizing: border-box;
|
|
17
|
+
position: relative;
|
|
18
|
+
min-block-size: var(--hw-control-height);
|
|
19
|
+
padding: var(--hw-space-2) var(--hw-space-4);
|
|
20
|
+
border-radius: var(--hw-profile-control-radius, var(--hw-radius-md));
|
|
21
|
+
background: var(--hw-color-action-secondary);
|
|
22
|
+
color: var(--hw-color-on-action-secondary);
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
}
|
|
25
|
+
.hw-feedback-actions .hw-choice:hover:not(:has(:disabled)) { background: var(--hw-color-action-secondary-hover); }
|
|
26
|
+
.hw-feedback-actions .hw-choice:has(:checked) { outline: 2px solid var(--hw-color-primary); outline-offset: 3px; }
|
|
27
|
+
.hw-feedback-actions .hw-choice:has(:focus-visible) { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: 3px; }
|
|
28
|
+
.hw-feedback-actions .hw-choice:has(:disabled) { background: var(--hw-color-disabled); color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
29
|
+
.hw-feedback-actions .hw-radio,
|
|
30
|
+
.hw-feedback[data-choice-variant='icon'] .hw-feedback-label {
|
|
31
|
+
position: absolute;
|
|
32
|
+
inline-size: 1px;
|
|
33
|
+
block-size: 1px;
|
|
34
|
+
padding: 0;
|
|
35
|
+
margin: -1px;
|
|
36
|
+
overflow: hidden;
|
|
37
|
+
clip-path: inset(50%);
|
|
38
|
+
white-space: nowrap;
|
|
39
|
+
border: 0;
|
|
40
|
+
}
|
|
41
|
+
.hw-feedback .hw-feedback-icon { display: none; }
|
|
42
|
+
.hw-feedback:is([data-choice-variant='icon'], [data-choice-variant='icon-text']) .hw-feedback-icon { display: inline-block; }
|
|
43
|
+
.hw-feedback[data-choice-variant='icon'] .hw-feedback-actions :is(.hw-button, .hw-choice) { min-inline-size: var(--hw-control-height); padding-inline: var(--hw-space-2); }
|
|
44
|
+
@media (forced-colors: active) {
|
|
45
|
+
.hw-feedback-actions .hw-choice { border: 1px solid ButtonText; }
|
|
46
|
+
.hw-feedback-actions .hw-choice:has(:checked, :focus-visible) { outline-color: Highlight; }
|
|
47
|
+
.hw-feedback-actions .hw-choice:has(:disabled) { border-color: GrayText; color: GrayText; }
|
|
48
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/* Mobile Components local uploaded-row definitions 5698:34512 / 10705:1294. */
|
|
2
|
+
.hw-upload-list { display: grid; gap: var(--hw-space-2); margin: 0; padding: 0; list-style: none; }
|
|
3
|
+
.hw-upload-item {
|
|
4
|
+
position: relative;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
display: grid;
|
|
7
|
+
grid-template-columns: 20px minmax(0, 1fr) auto;
|
|
8
|
+
align-items: center;
|
|
9
|
+
column-gap: var(--hw-space-2);
|
|
10
|
+
row-gap: var(--hw-space-2);
|
|
11
|
+
min-block-size: 36px;
|
|
12
|
+
padding: calc(var(--hw-space-2) - 1px);
|
|
13
|
+
border: 1px solid var(--hw-color-border);
|
|
14
|
+
border-radius: var(--hw-radius-sm);
|
|
15
|
+
background: var(--hw-color-surface-muted);
|
|
16
|
+
color: var(--hw-color-text);
|
|
17
|
+
}
|
|
18
|
+
.hw-upload-item::before {
|
|
19
|
+
content: '';
|
|
20
|
+
grid-column: 1;
|
|
21
|
+
grid-row: 1;
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
inline-size: 20px;
|
|
24
|
+
block-size: 20px;
|
|
25
|
+
border: 1.5px solid var(--hw-color-text-muted);
|
|
26
|
+
border-radius: 50%;
|
|
27
|
+
}
|
|
28
|
+
.hw-upload-item[data-status='complete']::before {
|
|
29
|
+
border: 0;
|
|
30
|
+
border-radius: 0;
|
|
31
|
+
background: var(--hw-color-success);
|
|
32
|
+
mask: url('./assets/icons/checkmark-circle-02.svg') center / contain no-repeat;
|
|
33
|
+
}
|
|
34
|
+
.hw-upload-item[data-status='error']::before { border-color: var(--hw-color-danger); }
|
|
35
|
+
.hw-upload-name { grid-column: 2; grid-row: 1; min-inline-size: 0; overflow-wrap: anywhere; font-size: 0.875rem; line-height: 1.25rem; font-weight: var(--hw-weight-medium); }
|
|
36
|
+
.hw-upload-status { grid-column: 2 / -1; color: var(--hw-color-text-muted); font-size: var(--hw-text-sm); }
|
|
37
|
+
.hw-upload-item:not([data-message])[data-status]:is([data-status='selected'], [data-status='complete']) > .hw-upload-status {
|
|
38
|
+
position: absolute; inline-size: 1px; block-size: 1px; padding: 0; margin: -1px;
|
|
39
|
+
overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
|
|
40
|
+
}
|
|
41
|
+
.hw-upload-item[data-status='error'] .hw-upload-status { color: var(--hw-color-danger); }
|
|
42
|
+
.hw-upload-item[data-status='complete'] .hw-upload-status { color: var(--hw-color-success); }
|
|
43
|
+
.hw-upload-item > button {
|
|
44
|
+
position: relative; grid-column: 3; grid-row: 1; align-self: center;
|
|
45
|
+
inline-size: 20px; block-size: 20px; min-inline-size: 20px; min-block-size: 20px;
|
|
46
|
+
padding: 0; border: 0; font-size: 0; line-height: 1; background: transparent;
|
|
47
|
+
color: var(--hw-color-text);
|
|
48
|
+
}
|
|
49
|
+
.hw-upload-item > button:disabled { color: var(--hw-color-on-disabled); }
|
|
50
|
+
.hw-upload-item > button::before {
|
|
51
|
+
content: ''; inline-size: 20px; block-size: 20px;
|
|
52
|
+
background: currentColor; mask: url('./assets/icons/cancel-01.svg') center / contain no-repeat;
|
|
53
|
+
}
|
|
54
|
+
/* Expand the pointer target inside the row without changing the source glyph box. */
|
|
55
|
+
.hw-upload-item > button::after { content: ''; position: absolute; inset: -4px; }
|
|
56
|
+
@media (pointer: coarse) {
|
|
57
|
+
.hw-upload-item > button::after { inset-block: -12px; inset-inline: -16px -8px; }
|
|
58
|
+
}
|
|
59
|
+
.hw-upload-item > progress { grid-column: 2 / -1; inline-size: 100%; accent-color: var(--hw-color-primary); }
|
|
60
|
+
@media (forced-colors: active) {
|
|
61
|
+
.hw-upload-item::before { border-color: CanvasText; }
|
|
62
|
+
.hw-upload-item[data-status='complete']::before, .hw-upload-item > button::before { background: ButtonText; forced-color-adjust: none; }
|
|
63
|
+
.hw-upload-item > button:disabled::before { background: GrayText; }
|
|
64
|
+
}
|
package/dist/icons.css
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* Artwork remains unchanged; the alpha mask adopts the surrounding text color. */
|
|
2
|
+
.hw-icon {
|
|
3
|
+
display: inline-block;
|
|
4
|
+
flex: none;
|
|
5
|
+
inline-size: var(--hw-icon-size, var(--hw-icon-context-size, 1.5rem));
|
|
6
|
+
block-size: var(--hw-icon-size, var(--hw-icon-context-size, 1.5rem));
|
|
7
|
+
vertical-align: middle;
|
|
8
|
+
background-color: currentColor;
|
|
9
|
+
-webkit-mask: var(--hw-icon-image, none) center / contain no-repeat;
|
|
10
|
+
mask: var(--hw-icon-image, none) center / contain no-repeat;
|
|
11
|
+
}
|
|
12
|
+
.hw-icon[hidden] { display: none; }
|
|
13
|
+
.hw-icon[data-icon='search-01'] { --hw-icon-image: url('./assets/icons/search-01.svg'); }
|
|
14
|
+
.hw-icon[data-icon='menu-01'] { --hw-icon-image: url('./assets/icons/menu-01.svg'); }
|
|
15
|
+
.hw-icon[data-icon='cancel-01'] { --hw-icon-image: url('./assets/icons/cancel-01.svg'); }
|
|
16
|
+
.hw-icon[data-icon='arrow-left-01'] { --hw-icon-image: url('./assets/icons/arrow-left-01.svg'); }
|
|
17
|
+
.hw-icon[data-icon='arrow-right-01'] { --hw-icon-image: url('./assets/icons/arrow-right-01.svg'); }
|
|
18
|
+
.hw-icon[data-icon='arrow-down-01'] { --hw-icon-image: url('./assets/icons/arrow-down-01.svg'); }
|
|
19
|
+
.hw-icon[data-icon='filter-horizontal'] { --hw-icon-image: url('./assets/icons/filter-horizontal.svg'); }
|
|
20
|
+
.hw-icon[data-icon='sorting-05'] { --hw-icon-image: url('./assets/icons/sorting-05.svg'); }
|
|
21
|
+
.hw-icon[data-icon='home-01'] { --hw-icon-image: url('./assets/icons/home-01.svg'); }
|
|
22
|
+
.hw-icon[data-icon='checkmark-circle-02'] { --hw-icon-image: url('./assets/icons/checkmark-circle-02.svg'); }
|
|
23
|
+
.hw-icon[data-icon='thumbs-up'] { --hw-icon-image: url('./assets/icons/thumbs-up.svg'); }
|
|
24
|
+
.hw-icon[data-icon='thumbs-down'] { --hw-icon-image: url('./assets/icons/thumbs-down.svg'); }
|
|
25
|
+
|
|
26
|
+
/* Opt in only for semantic forward/back; physical directions retain their meaning. */
|
|
27
|
+
.hw-icon:is([data-icon='arrow-left-01'], [data-icon='arrow-right-01'], [data-icon='arrow-left-02'], [data-icon='arrow-right-02'])[data-directional='true'] {
|
|
28
|
+
--_hw-mirror: var(--_hw-rtl-only) scaleX(-1);
|
|
29
|
+
transform: var(--_hw-mirror, none);
|
|
30
|
+
}
|
|
31
|
+
@media (forced-colors: active) {
|
|
32
|
+
.hw-icon {
|
|
33
|
+
forced-color-adjust: none;
|
|
34
|
+
background-color: CanvasText;
|
|
35
|
+
}
|
|
36
|
+
:where(button, a)[aria-disabled='true'] .hw-icon,
|
|
37
|
+
button:disabled .hw-icon { background-color: GrayText; }
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.hw-icon[data-icon="link-04"] { --hw-icon-image: url("./assets/icons/link-04.svg"); }
|
|
41
|
+
|
|
42
|
+
.hw-icon[data-icon="lock-password"] { --hw-icon-image: url("./assets/icons/lock-password.svg"); }
|
|
43
|
+
|
|
44
|
+
.hw-icon[data-icon="arrow-up-01"] { --hw-icon-image: url("./assets/icons/arrow-up-01.svg"); }
|
|
45
|
+
|
|
46
|
+
.hw-icon[data-icon="arrow-up-right-01"] { --hw-icon-image: url("./assets/icons/arrow-up-right-01.svg"); }
|
|
47
|
+
|
|
48
|
+
.hw-icon[data-icon="link-square-02"] { --hw-icon-image: url("./assets/icons/link-square-02.svg"); }
|
|
49
|
+
|
|
50
|
+
.hw-icon[data-icon="information-circle"] { --hw-icon-image: url("./assets/icons/information-circle.svg"); }
|
|
51
|
+
|
|
52
|
+
.hw-icon[data-icon="alert-02"] { --hw-icon-image: url("./assets/icons/alert-02.svg"); }
|
|
53
|
+
|
|
54
|
+
.hw-icon[data-icon="cancel-circle"] { --hw-icon-image: url("./assets/icons/cancel-circle.svg"); }
|
|
55
|
+
|
|
56
|
+
.hw-icon[data-icon="minus-sign-circle"] { --hw-icon-image: url("./assets/icons/minus-sign-circle.svg"); }
|
|
57
|
+
|
|
58
|
+
.hw-icon[data-icon="add-01"] { --hw-icon-image: url("./assets/icons/add-01.svg"); }
|
|
59
|
+
.hw-icon[data-icon="minus-sign"] { --hw-icon-image: url("./assets/icons/minus-sign.svg"); }
|
|
60
|
+
.hw-icon[data-icon="tick-02"] { --hw-icon-image: url("./assets/icons/tick-02.svg"); }
|
|
61
|
+
.hw-icon[data-icon="exclamation-mark"] { --hw-icon-image: url("./assets/icons/exclamation-mark.svg"); }
|
|
62
|
+
.hw-icon[data-icon="arrow-up-02"] { --hw-icon-image: url("./assets/icons/arrow-up-02.svg"); }
|
|
63
|
+
.hw-icon[data-icon="arrow-down-02"] { --hw-icon-image: url("./assets/icons/arrow-down-02.svg"); }
|
|
64
|
+
.hw-icon[data-icon="arrow-left-02"] { --hw-icon-image: url("./assets/icons/arrow-left-02.svg"); }
|
|
65
|
+
.hw-icon[data-icon="arrow-right-02"] { --hw-icon-image: url("./assets/icons/arrow-right-02.svg"); }
|
|
66
|
+
.hw-icon[data-icon="arrow-data-transfer-vertical"] { --hw-icon-image: url("./assets/icons/arrow-data-transfer-vertical.svg"); }
|
|
67
|
+
.hw-icon[data-icon="star"] { --hw-icon-image: url("./assets/icons/star.svg"); }
|