@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,68 @@
|
|
|
1
|
+
/* NIC global.css 1770–1886. Only Hawiyah data tables; never calendar grids.
|
|
2
|
+
See docs/nic-tables.md for source dependencies and intentional adaptations. */
|
|
3
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
4
|
+
--hw-profile-table-radius: .5rem;
|
|
5
|
+
--hw-profile-table-cell-height: 3rem;
|
|
6
|
+
--hw-profile-table-cell-padding: .5rem 1rem;
|
|
7
|
+
--hw-profile-table-font: 1rem;
|
|
8
|
+
--hw-profile-table-heading-weight: 400;
|
|
9
|
+
--hw-profile-table-heading-border: 1px;
|
|
10
|
+
--hw-profile-table-cell-padding-inline: 1rem;
|
|
11
|
+
--hw-profile-table-small-height: 2.5rem;
|
|
12
|
+
--hw-profile-table-large-height: 3.5rem;
|
|
13
|
+
--hw-profile-table-small-padding: .375rem 1rem;
|
|
14
|
+
--hw-profile-table-large-padding: .75rem 1rem;
|
|
15
|
+
}
|
|
16
|
+
:where([data-hw-theme]:not([data-hw-theme='dga'], [data-hw-theme='custom'])) {
|
|
17
|
+
--hw-profile-table-radius: initial;
|
|
18
|
+
--hw-profile-table-cell-height: initial;
|
|
19
|
+
--hw-profile-table-cell-padding: initial;
|
|
20
|
+
--hw-profile-table-font: initial;
|
|
21
|
+
--hw-profile-table-heading-weight: initial;
|
|
22
|
+
--hw-profile-table-heading-border: initial;
|
|
23
|
+
--hw-profile-table-cell-padding-inline: initial;
|
|
24
|
+
--hw-profile-table-small-height: initial;
|
|
25
|
+
--hw-profile-table-large-height: initial;
|
|
26
|
+
--hw-profile-table-small-padding: initial;
|
|
27
|
+
--hw-profile-table-large-padding: initial;
|
|
28
|
+
}
|
|
29
|
+
.hw-table-wrap { border-radius: var(--hw-profile-table-radius, var(--hw-radius-lg)); }
|
|
30
|
+
.hw-table { font-size: var(--hw-profile-table-font, var(--hw-text-sm)); }
|
|
31
|
+
.hw-table :where(th, td) {
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
block-size: var(--hw-table-cell-height, var(--hw-profile-table-cell-height, auto));
|
|
34
|
+
padding: var(--hw-table-cell-padding, var(--hw-profile-table-cell-padding, var(--hw-density-cell-padding) var(--hw-space-5)));
|
|
35
|
+
}
|
|
36
|
+
.hw-table thead th { font-weight: var(--hw-profile-table-heading-weight, var(--hw-weight-semibold)); }
|
|
37
|
+
.hw-table thead { color: var(--hw-dga-on, var(--hw-color-text)) var(--hw-dga-off, var(--hw-color-text-muted)); }
|
|
38
|
+
.hw-table thead th + th { border-inline-start: var(--hw-profile-table-heading-border, 0px) solid var(--hw-color-border); }
|
|
39
|
+
.hw-table-heading { display: inline-flex; align-items: center; justify-content: space-between; gap: .5rem; inline-size: 100%; font-size: .75rem; font-weight: 500; line-height: 1.125rem; color: var(--hw-color-text-muted); }
|
|
40
|
+
.hw-data-table th button { block-size: auto; min-block-size: 2rem; line-height: 1.5rem; }
|
|
41
|
+
.hw-data-table th button:hover,
|
|
42
|
+
.hw-data-table [aria-sort='ascending'],
|
|
43
|
+
.hw-data-table [aria-sort='descending'] { color: var(--hw-color-link); }
|
|
44
|
+
/* Author this span with aria-hidden="true"; aria-sort carries the meaning. */
|
|
45
|
+
.hw-table-sort-icon::before { content: ''; display: inline-block; inline-size: 1rem; block-size: 1rem; vertical-align: middle; background: currentColor; mask: url('./assets/icons/arrow-data-transfer-vertical.svg') center / contain no-repeat; }
|
|
46
|
+
th[aria-sort='ascending'] .hw-table-sort-icon::before { mask-image: url('./assets/icons/arrow-up-02.svg'); }
|
|
47
|
+
th[aria-sort='descending'] .hw-table-sort-icon::before { mask-image: url('./assets/icons/arrow-down-02.svg'); }
|
|
48
|
+
.hw-table tbody tr:hover { background: var(--hw-color-table-row-hover, var(--hw-color-canvas)); }
|
|
49
|
+
.hw-table tbody tr:nth-child(odd):hover { background: var(--hw-color-table-row-hover-odd, var(--hw-color-canvas)); }
|
|
50
|
+
/* Selection stays visible while hovering, including on striped rows. */
|
|
51
|
+
.hw-table tbody tr[aria-selected='true'],
|
|
52
|
+
.hw-table[data-variant='striped'] tbody tr[aria-selected='true'] { background: var(--hw-color-primary-subtle); }
|
|
53
|
+
.hw-table[data-variant='striped'] tbody tr:hover { background: var(--hw-color-table-row-hover, var(--hw-color-canvas)); }
|
|
54
|
+
.hw-table[data-variant='striped'] tbody tr:nth-child(odd):hover { background: var(--hw-color-table-row-hover-odd, var(--hw-color-canvas)); }
|
|
55
|
+
.hw-table tbody tr[aria-selected='true']:hover,
|
|
56
|
+
.hw-table[data-variant='striped'] tbody tr[aria-selected='true']:hover { background: var(--hw-color-primary-subtle); }
|
|
57
|
+
/* Existing size extensions remain explicit, with row height as a minimum. */
|
|
58
|
+
.hw-table[data-size='sm'] { --hw-table-cell-height: var(--hw-profile-table-small-height, auto); --hw-table-cell-padding: var(--hw-profile-table-small-padding, var(--hw-space-2) var(--hw-space-5)); }
|
|
59
|
+
.hw-table[data-size='lg'] { --hw-table-cell-height: var(--hw-profile-table-large-height, auto); --hw-table-cell-padding: var(--hw-profile-table-large-padding, var(--hw-space-5)); }
|
|
60
|
+
.hw-table[data-size]:is([data-size='sm'], [data-size='lg']) :is(th, td) { padding: var(--hw-table-cell-padding); }
|
|
61
|
+
@media (max-width: 40rem) {
|
|
62
|
+
.hw-table :where(th, td),
|
|
63
|
+
.hw-table[data-size]:is([data-size='sm'], [data-size='lg']) :is(th, td) { padding-inline: var(--hw-profile-table-cell-padding-inline, var(--hw-space-3)); }
|
|
64
|
+
}
|
|
65
|
+
@media (forced-colors: active) {
|
|
66
|
+
.hw-table-wrap, .hw-table :is(th, td) { border-color: CanvasText; }
|
|
67
|
+
.hw-table tbody tr[aria-selected='true'] { outline: 2px solid Highlight; outline-offset: -2px; }
|
|
68
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/* NIC global.css 2316–2427; responsive behavior master.js 1854–2079. */
|
|
2
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
3
|
+
--hw-profile-tab-gap: 3px; --hw-profile-tab-height: 44px;
|
|
4
|
+
--hw-profile-tab-list-padding: 0px; --hw-profile-tab-rail: 3px;
|
|
5
|
+
--hw-profile-tab-radius: 4px; --hw-profile-tab-weight: 400;
|
|
6
|
+
--hw-profile-tab-active-weight: 700; --hw-profile-tab-active-color: var(--hw-color-text);
|
|
7
|
+
--hw-profile-tab-line-height: 20px; --hw-profile-tab-inset: 16px;
|
|
8
|
+
--hw-profile-tab-panel-gap: 24px; --hw-profile-tab-panel-padding: 0px;
|
|
9
|
+
--hw-profile-tab-hover-line: var(--hw-color-text);
|
|
10
|
+
}
|
|
11
|
+
:where([data-hw-theme]:not([data-hw-theme='dga'], [data-hw-theme='custom'])) {
|
|
12
|
+
--hw-profile-tab-gap: initial; --hw-profile-tab-height: initial;
|
|
13
|
+
--hw-profile-tab-list-padding: initial; --hw-profile-tab-rail: initial;
|
|
14
|
+
--hw-profile-tab-radius: initial; --hw-profile-tab-weight: initial;
|
|
15
|
+
--hw-profile-tab-active-weight: initial; --hw-profile-tab-active-color: initial;
|
|
16
|
+
--hw-profile-tab-line-height: initial; --hw-profile-tab-inset: initial;
|
|
17
|
+
--hw-profile-tab-panel-gap: initial; --hw-profile-tab-panel-padding: initial;
|
|
18
|
+
--hw-profile-tab-hover-line: initial;
|
|
19
|
+
}
|
|
20
|
+
.hw-tabs { min-inline-size: 0; }
|
|
21
|
+
.hw-tab-bar { position: relative; display: flex; align-items: stretch; min-inline-size: 0; max-inline-size: 100%; }
|
|
22
|
+
.hw-tab-list { position: relative; z-index: 1; min-inline-size: 0; box-sizing: border-box; }
|
|
23
|
+
.hw-tab-list:not([aria-orientation='vertical']) {
|
|
24
|
+
gap: var(--hw-profile-tab-gap, var(--hw-space-1));
|
|
25
|
+
padding: var(--hw-profile-tab-list-padding, 3px 3px 0); border-block-end: 0;
|
|
26
|
+
}
|
|
27
|
+
.hw-tab-bar > .hw-tab-list { flex: 1 1 0%; }
|
|
28
|
+
.hw-tab-list:not([aria-orientation='vertical'])::after, .hw-tab-bar:not(:has(> [aria-orientation='vertical']))::after {
|
|
29
|
+
content: ''; position: absolute; z-index: 0; pointer-events: none; inset-inline: 0; inset-block-end: 0;
|
|
30
|
+
block-size: var(--hw-profile-tab-rail, 1px); border-radius: 9999px; background: var(--hw-color-border);
|
|
31
|
+
}
|
|
32
|
+
.hw-tab-bar > .hw-tab-list::after { display: none; }
|
|
33
|
+
.hw-tab-bar:has(> .hw-tabs-overflow:not([hidden])) > .hw-tab-list[data-hw-overflow='menu']:not([aria-orientation='vertical']) { overflow: hidden; }
|
|
34
|
+
.hw-tab-list[aria-orientation='vertical'] { flex-basis: 100%; }
|
|
35
|
+
.hw-tab[data-hw-overflow-hidden='true'] {
|
|
36
|
+
position: absolute; visibility: hidden; pointer-events: none; inset-inline-start: 0; inset-block-start: 0;
|
|
37
|
+
}
|
|
38
|
+
.hw-tab, .hw-tab-overflow-trigger {
|
|
39
|
+
box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; gap: 4px;
|
|
40
|
+
flex: none; min-block-size: var(--hw-profile-tab-height, var(--hw-control-height));
|
|
41
|
+
padding: 12px 16px; border: 0; border-radius: var(--hw-profile-tab-radius, var(--hw-radius-sm));
|
|
42
|
+
background: transparent; color: var(--hw-color-text-muted); font: inherit; font-size: 14px;
|
|
43
|
+
font-weight: var(--hw-profile-tab-weight, var(--hw-weight-medium));
|
|
44
|
+
line-height: var(--hw-profile-tab-line-height, inherit); white-space: nowrap; cursor: pointer; text-decoration: none;
|
|
45
|
+
}
|
|
46
|
+
.hw-tab::after, .hw-tab-overflow-trigger::after {
|
|
47
|
+
content: ''; position: absolute; inset-inline: var(--hw-profile-tab-inset, var(--hw-space-3));
|
|
48
|
+
inset-block-end: 1px; block-size: 3px; border-radius: 9999px; background: transparent;
|
|
49
|
+
}
|
|
50
|
+
.hw-tab:hover:not(:disabled, [aria-disabled='true']), .hw-tab-overflow-trigger:hover { background: var(--hw-color-surface-muted); }
|
|
51
|
+
.hw-tab:active:not(:disabled, [aria-disabled='true']), .hw-tab-overflow-trigger:active { background: var(--hw-color-action-secondary-hover); }
|
|
52
|
+
.hw-tab:is(:hover, :active):not(:disabled, [aria-disabled='true'])::after, .hw-tab-overflow-trigger:is(:hover, :active)::after { background: var(--hw-profile-tab-hover-line, transparent); }
|
|
53
|
+
.hw-tab[aria-selected='true'], .hw-tab[aria-selected='true']:is(:hover, :active), .hw-tab-overflow-trigger[data-active='true'], .hw-tab-overflow-trigger[data-active='true']:is(:hover, :active) {
|
|
54
|
+
background: transparent; color: var(--hw-profile-tab-active-color, var(--hw-color-primary-text)); font-weight: var(--hw-profile-tab-active-weight, var(--hw-weight-semibold));
|
|
55
|
+
}
|
|
56
|
+
.hw-tab[aria-selected='true']::after, .hw-tab-overflow-trigger[data-active='true']::after { background: var(--hw-color-primary); }
|
|
57
|
+
.hw-tab:focus:not(:disabled, [aria-disabled='true']), .hw-tab-overflow-trigger:focus { color: var(--hw-color-text); background: transparent; outline: 2px solid var(--hw-color-focus-contrast); outline-offset: -2px; }
|
|
58
|
+
.hw-tab:is(:disabled, [aria-disabled='true']) { background: transparent; color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
59
|
+
.hw-tab-panel { margin-block-start: var(--hw-profile-tab-panel-gap, 0px); padding-block: var(--hw-profile-tab-panel-padding, var(--hw-space-5)); }
|
|
60
|
+
.hw-tabs-overflow { flex: 0 0 72px; min-inline-size: 0; }
|
|
61
|
+
.hw-tabs-overflow[hidden] { display: none; }
|
|
62
|
+
.hw-tab-overflow-trigger { position: relative; z-index: 1; inline-size: 100%; block-size: 100%; list-style: none; font-size: 18px; font-weight: 700; }
|
|
63
|
+
.hw-tab-overflow-trigger::-webkit-details-marker { display: none; }
|
|
64
|
+
.hw-tab-overflow-menu {
|
|
65
|
+
position: absolute; z-index: 20; inset-block-start: 100%; inset-inline-end: 0;
|
|
66
|
+
box-sizing: border-box; inline-size: max-content; min-inline-size: min(12rem, 100%); max-inline-size: 100%;
|
|
67
|
+
max-block-size: min(300px, 60vh); overflow: auto; overscroll-behavior: contain;
|
|
68
|
+
padding: 8px; border: 1px solid var(--hw-color-border); border-radius: 4px;
|
|
69
|
+
background: var(--hw-color-surface); color: var(--hw-color-text); box-shadow: var(--hw-shadow-pagination, var(--hw-shadow-lg));
|
|
70
|
+
}
|
|
71
|
+
.hw-tab-overflow-item {
|
|
72
|
+
display: block; box-sizing: border-box; inline-size: 100%; min-block-size: 40px;
|
|
73
|
+
padding: 8px 16px; border: 0; border-radius: 4px; background: transparent; color: inherit;
|
|
74
|
+
font: inherit; font-size: 14px; text-align: start; white-space: normal; overflow-wrap: anywhere; cursor: pointer;
|
|
75
|
+
}
|
|
76
|
+
.hw-tab-overflow-item:hover:not(:disabled) { background: var(--hw-color-surface-muted); }
|
|
77
|
+
.hw-tab-overflow-item[aria-pressed='true'] { font-weight: 700; box-shadow: inset calc(3px * var(--_hw-inline-sign, 1)) 0 var(--hw-color-primary); }
|
|
78
|
+
.hw-tab-overflow-item:disabled { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
79
|
+
.hw-tab-overflow-item:focus-visible { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: -2px; }
|
|
80
|
+
.hw-tabs[data-variant='pills'] :is(.hw-tab-bar, .hw-tab-list)::after { display: none; }
|
|
81
|
+
@media (forced-colors: active) {
|
|
82
|
+
.hw-tab-list::after, .hw-tab-bar::after { background: GrayText; }
|
|
83
|
+
.hw-tab[aria-selected='true']::after, .hw-tab-overflow-trigger[data-active='true']::after { background: Highlight; }
|
|
84
|
+
.hw-tab-overflow-item[aria-pressed='true'] { outline: 1px solid Highlight; outline-offset: -1px; }
|
|
85
|
+
.hw-tab-overflow-menu { border-color: CanvasText; }
|
|
86
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* Password visibility is an input action; the input retains native sizing. */
|
|
2
|
+
.hw-password-control, .hw-password-control.hw-password-field { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); min-inline-size: 0; inline-size: 100%; }
|
|
3
|
+
.hw-password-control > .hw-input { inline-size: 100%; min-inline-size: 0; }
|
|
4
|
+
.hw-password-control:has(> .hw-password-toggle[data-toggle-variant='icon']) > .hw-input { padding-inline-end: 3rem; }
|
|
5
|
+
.hw-password-control > .hw-password-toggle[data-toggle-variant='icon'] { 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; }
|
|
6
|
+
.hw-password-control > .hw-password-toggle:hover:not(:disabled) { color: var(--hw-color-text); background: var(--hw-color-surface-muted); }
|
|
7
|
+
.hw-password-control > .hw-password-toggle:focus-visible { outline-offset: -3px; }
|
|
8
|
+
.hw-password-control > .hw-password-toggle:disabled { color: var(--hw-color-on-disabled); cursor: not-allowed; }
|
|
9
|
+
.hw-password-icon { display: inline-block; flex: none; inline-size: var(--hw-password-icon-size, 1.5rem); block-size: var(--hw-password-icon-size, 1.5rem); background: currentColor; -webkit-mask: var(--hw-password-show-icon, url('./assets/icons/view.svg')) center / contain no-repeat; mask: var(--hw-password-show-icon, url('./assets/icons/view.svg')) center / contain no-repeat; }
|
|
10
|
+
.hw-password-toggle[aria-pressed='true'] > .hw-password-icon { -webkit-mask-image: var(--hw-password-hide-icon, url('./assets/icons/view-off-slash.svg')); mask-image: var(--hw-password-hide-icon, url('./assets/icons/view-off-slash.svg')); }
|
|
11
|
+
.hw-password-control:has(> .hw-password-toggle[data-toggle-variant='text']) { grid-template-columns: minmax(0, 1fr) auto; gap: var(--hw-space-2); }
|
|
12
|
+
.hw-password-control > .hw-password-toggle[data-toggle-variant='text'] { max-inline-size: 12rem; white-space: normal; overflow-wrap: anywhere; }
|
|
13
|
+
@media (forced-colors: active) {
|
|
14
|
+
.hw-password-icon { forced-color-adjust: none; background: ButtonText; }
|
|
15
|
+
.hw-password-toggle:disabled > .hw-password-icon { background: GrayText; }
|
|
16
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* Native portal disclosures. NIC master.js 627–929 supplies structure and
|
|
2
|
+
interaction evidence; dimensions here use Hawiyah tokens. */
|
|
3
|
+
.hw-portal-header:has(.hw-portal-branch) { position: relative; }
|
|
4
|
+
.hw-portal-branch > summary {
|
|
5
|
+
display: inline-flex; align-items: center; gap: var(--hw-space-2);
|
|
6
|
+
min-block-size: var(--hw-control-height);
|
|
7
|
+
padding-inline: var(--hw-space-2); border-radius: var(--hw-radius-sm);
|
|
8
|
+
color: var(--hw-color-heading, var(--hw-color-text));
|
|
9
|
+
font: inherit; cursor: pointer; list-style: none;
|
|
10
|
+
}
|
|
11
|
+
.hw-portal-branch > summary::-webkit-details-marker { display: none; }
|
|
12
|
+
.hw-portal-branch > summary::after {
|
|
13
|
+
content: ''; flex: none; inline-size: 1.125rem; block-size: 1.125rem;
|
|
14
|
+
background: currentColor; mask: url('./assets/icons/arrow-down-01.svg') center / contain no-repeat;
|
|
15
|
+
transition: transform var(--hw-duration-fast) var(--hw-ease-standard);
|
|
16
|
+
}
|
|
17
|
+
.hw-portal-branch[open] > summary::after { transform: rotate(180deg); }
|
|
18
|
+
.hw-portal-branch > summary:hover, .hw-portal-branch[open] > summary { background: var(--hw-color-surface-muted); }
|
|
19
|
+
.hw-portal-branch[data-current='true'] > summary { color: var(--hw-color-primary-text); font-weight: var(--hw-weight-semibold); }
|
|
20
|
+
.hw-portal-branch > summary:focus-visible { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: -2px; }
|
|
21
|
+
.hw-portal-branch-panel {
|
|
22
|
+
box-sizing: border-box; position: absolute; z-index: var(--hw-z-popover, 10);
|
|
23
|
+
inset-inline: 0; inset-block-start: 100%; margin-inline: auto;
|
|
24
|
+
display: grid; grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr));
|
|
25
|
+
gap: var(--hw-space-4); max-inline-size: 64rem; max-block-size: 65dvh; overflow: auto;
|
|
26
|
+
padding: var(--hw-space-4); border: 1px solid var(--hw-color-border);
|
|
27
|
+
border-radius: var(--hw-radius-md); background: var(--hw-color-surface);
|
|
28
|
+
color: var(--hw-color-text); box-shadow: var(--hw-shadow-md);
|
|
29
|
+
}
|
|
30
|
+
.hw-portal-branch-panel .hw-portal-branch-overview { grid-column: 1 / -1; justify-self: start; }
|
|
31
|
+
.hw-portal-branch-group { min-inline-size: 0; }
|
|
32
|
+
.hw-portal-branch-group > h2 { margin: 0 0 var(--hw-space-2); font-size: 1rem; }
|
|
33
|
+
.hw-portal-header nav .hw-portal-branch-group > ul {
|
|
34
|
+
display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--hw-space-1);
|
|
35
|
+
margin: 0; padding: 0; list-style: none;
|
|
36
|
+
}
|
|
37
|
+
.hw-portal-header nav .hw-portal-branch-panel a { overflow-wrap: anywhere; white-space: normal; }
|
|
38
|
+
@media (max-width: 47.999rem) {
|
|
39
|
+
.hw-portal-branch > summary { box-sizing: border-box; inline-size: 100%; justify-content: space-between; }
|
|
40
|
+
.hw-portal-branch-panel {
|
|
41
|
+
position: static; grid-template-columns: minmax(0, 1fr);
|
|
42
|
+
max-block-size: none; box-shadow: none;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
@media (prefers-reduced-motion: reduce) {
|
|
46
|
+
.hw-portal-branch > summary::after { transition: none; }
|
|
47
|
+
}
|
|
48
|
+
@media (forced-colors: active) {
|
|
49
|
+
.hw-portal-branch > summary::after { forced-color-adjust: none; background: ButtonText; }
|
|
50
|
+
.hw-portal-branch > summary:focus-visible { outline-color: Highlight; }
|
|
51
|
+
.hw-portal-branch-panel { border-color: CanvasText; }
|
|
52
|
+
}
|
package/dist/portal.css
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* Public portal composition. The 48rem disclosure breakpoint is Hawiyah policy,
|
|
2
|
+
not an asserted Figma breakpoint. No viewport script or motion is required. */
|
|
3
|
+
.hw-portal-layout { display: flex; flex-direction: column; min-block-size: 100dvh; color: var(--hw-color-text); background: var(--hw-color-canvas); font-family: var(--hw-font-sans); }
|
|
4
|
+
.hw-portal-layout > *, .hw-portal-layout-main > * { min-inline-size: 0; }
|
|
5
|
+
/* Moving a skip link above its header does not hide it in an embedded layout.
|
|
6
|
+
Clip it until focus so it cannot cover preceding content or pointer targets. */
|
|
7
|
+
.hw-skip-link:not(:focus) { inline-size: 1px; block-size: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; transform: none; }
|
|
8
|
+
.hw-portal-layout-main { flex: 1; padding-block: var(--hw-space-8); }
|
|
9
|
+
.hw-portal-layout-main > .hw-breadcrumb, .hw-portal-layout-main > hw-breadcrumb { display: block; margin-block-end: var(--hw-space-6); }
|
|
10
|
+
.hw-secondary-nav { color: var(--hw-color-text); background: var(--hw-color-surface); border-block-end: 1px solid var(--hw-color-border); overflow-x: auto; }
|
|
11
|
+
.hw-secondary-nav ul { display: flex; flex-wrap: wrap; gap: var(--hw-space-2); max-inline-size: var(--hw-content-max); margin: 0 auto; padding: var(--hw-space-2) var(--hw-content-gutter-mobile, 1rem); list-style: none; }
|
|
12
|
+
.hw-secondary-nav a { display: inline-flex; align-items: center; min-block-size: var(--hw-control-height); padding: var(--hw-space-2) var(--hw-space-3); color: inherit; text-decoration: none; border-block-end: 2px solid transparent; }
|
|
13
|
+
.hw-secondary-nav a[aria-current='page'] { color: var(--hw-color-primary-text); border-block-end-color: currentColor; font-weight: var(--hw-weight-semibold); }
|
|
14
|
+
.hw-secondary-nav a:hover { background: var(--hw-color-surface-muted); }
|
|
15
|
+
.hw-secondary-nav a:focus-visible { outline: 2px solid var(--hw-color-focus); outline-offset: -2px; }
|
|
16
|
+
@media (max-width: 47.999rem) {
|
|
17
|
+
.hw-portal-header :is(.hw-portal-header-main, .hw-portal-header-inner) > nav[data-open='false'] { display: none; }
|
|
18
|
+
.hw-portal-header :is(.hw-portal-header-main, .hw-portal-header-inner) > nav { order: 3; flex-basis: 100%; }
|
|
19
|
+
.hw-portal-header :is(.hw-portal-header-main, .hw-portal-header-inner) > nav ul { flex-direction: column; align-items: stretch; inline-size: 100%; }
|
|
20
|
+
}
|
|
21
|
+
@media (forced-colors: active) {
|
|
22
|
+
.hw-secondary-nav a:focus-visible { outline-color: Highlight; }
|
|
23
|
+
.hw-secondary-nav a[aria-current='page'] { border-block-end-color: LinkText; }
|
|
24
|
+
}
|
package/dist/reset.css
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* Optional application reset. Do not import this into an existing app by default. */
|
|
2
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
3
|
+
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
|
|
4
|
+
body { margin: 0; }
|
|
5
|
+
:where(h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd) { margin: 0; }
|
|
6
|
+
:where(button, input, select, textarea) { font: inherit; }
|
|
7
|
+
:where(img, picture, video, canvas, svg) { display: block; max-inline-size: 100%; }
|
|
8
|
+
:where(img, video) { block-size: auto; }
|
|
9
|
+
:where(button, [role='button']) { touch-action: manipulation; }
|
|
10
|
+
:where(textarea) { resize: vertical; }
|
|
11
|
+
:where(table) { border-collapse: collapse; }
|
|
12
|
+
:where([hidden]) { display: none !important; }
|
package/dist/riyal.css
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* U+20C1 only: the application's normal Arabic/Latin font remains unchanged.
|
|
2
|
+
Source, license and reproducible subset steps accompany the font asset. */
|
|
3
|
+
@font-face {
|
|
4
|
+
font-family: 'HawiyahRiyal';
|
|
5
|
+
src: url('./assets/fonts/riyal.woff2') format('woff2');
|
|
6
|
+
font-style: normal;
|
|
7
|
+
font-weight: 400;
|
|
8
|
+
font-display: swap;
|
|
9
|
+
unicode-range: U+20C1;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Render the actual Unicode character, not generated content or an image.
|
|
13
|
+
When paired with an amount, hide this span from assistive technology and
|
|
14
|
+
provide the localized currency name in the amount's accessible text. */
|
|
15
|
+
.hw-riyal {
|
|
16
|
+
font-family: 'HawiyahRiyal', 'Segoe UI', Arial, Tahoma, sans-serif;
|
|
17
|
+
font-size: inherit;
|
|
18
|
+
line-height: inherit;
|
|
19
|
+
font-style: normal;
|
|
20
|
+
font-weight: 400;
|
|
21
|
+
font-synthesis: none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* The amount-field adornment is an icon, independent of small addon labels. */
|
|
25
|
+
.hw-input-addon .hw-riyal {
|
|
26
|
+
display: inline-flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
min-inline-size: 1.75rem;
|
|
30
|
+
font-size: var(--hw-riyal-input-size, 1.75rem);
|
|
31
|
+
line-height: 1;
|
|
32
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* A single named clear action, inset within the native search field. */
|
|
2
|
+
.hw-search-control, .hw-search-control.hw-search-field { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); flex: 1; min-inline-size: 0; inline-size: 100%; }
|
|
3
|
+
.hw-search-control > .hw-input { inline-size: 100%; min-inline-size: 0; padding-inline-end: 3rem; border-radius: var(--hw-radius-md); }
|
|
4
|
+
.hw-search-control > input[type='search']::-webkit-search-cancel-button { display: none; -webkit-appearance: none; }
|
|
5
|
+
.hw-search-control > .hw-search-clear { 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; }
|
|
6
|
+
.hw-search-control > .hw-search-clear:hover:not(:disabled) { color: var(--hw-color-text); background: var(--hw-color-surface-muted); }
|
|
7
|
+
.hw-search-control > .hw-search-clear:focus-visible { outline-offset: -3px; }
|
|
8
|
+
.hw-search-control > .hw-search-clear { z-index: 1; }
|
|
9
|
+
.hw-search-control > .hw-search-clear[hidden] { display: none; }
|
|
10
|
+
.hw-search-clear-icon { display: inline-block; inline-size: 1.25rem; block-size: 1.25rem; background: currentColor; -webkit-mask: url('./assets/icons/cancel-01.svg') center / contain no-repeat; mask: url('./assets/icons/cancel-01.svg') center / contain no-repeat; }
|
|
11
|
+
@media (forced-colors: active) { .hw-search-clear-icon { forced-color-adjust: none; background: ButtonText; } .hw-search-clear:disabled .hw-search-clear-icon { background: GrayText; } }
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* Source structure: NIC master.js 1176–1310. Native details owns disclosure.
|
|
2
|
+
Geometry below is a token-based Hawiyah composition, not a copied stamp asset. */
|
|
3
|
+
.hw-site-verification { box-sizing: border-box; inline-size: 100%; color: var(--hw-color-text); background: var(--hw-color-surface-muted); border-block: 1px solid var(--hw-color-border); font: var(--hw-text-sm)/var(--hw-leading-normal) var(--hw-font-sans); }
|
|
4
|
+
.hw-site-verification > details { max-inline-size: var(--hw-content-max); padding-inline: var(--hw-portal-gutter, var(--hw-space-8)); margin-inline: auto; }
|
|
5
|
+
.hw-site-verification summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--hw-space-2); min-block-size: 2.75rem; padding-block: var(--hw-space-2); box-sizing: border-box; list-style: none; cursor: pointer; }
|
|
6
|
+
.hw-site-verification summary::-webkit-details-marker { display: none; }
|
|
7
|
+
.hw-verification-mark { flex: none; display: inline-flex; align-items: center; justify-content: center; inline-size: 1.25rem; block-size: 1.25rem; }
|
|
8
|
+
.hw-verification-mark:empty { display: none; }
|
|
9
|
+
.hw-verification-mark :is(img,svg) { display: block; max-inline-size: 100%; max-block-size: 100%; }
|
|
10
|
+
.hw-verification-toggle { display: inline-flex; align-items: center; gap: var(--hw-space-1); color: var(--hw-color-link); text-decoration: underline; text-underline-offset: .25em; }
|
|
11
|
+
.hw-verification-toggle .hw-icon { inline-size: 1rem; block-size: 1rem; transition: transform 200ms ease; }
|
|
12
|
+
.hw-site-verification details[open] .hw-verification-toggle .hw-icon { transform: rotate(180deg); }
|
|
13
|
+
.hw-site-verification summary:hover .hw-verification-toggle { color: var(--hw-color-text); }
|
|
14
|
+
.hw-site-verification summary:focus-visible, .hw-site-verification a:focus-visible { outline: 2px solid var(--hw-color-focus-contrast); outline-offset: 2px; border-radius: var(--hw-radius-sm); }
|
|
15
|
+
.hw-verification-content { padding-block: var(--hw-space-4) var(--hw-space-6); }
|
|
16
|
+
.hw-verification-checks { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,20rem),1fr)); gap: var(--hw-space-6); }
|
|
17
|
+
.hw-verification-checks > section { display: flex; align-items: start; gap: var(--hw-space-3); min-inline-size: 0; }
|
|
18
|
+
.hw-verification-checks > section > .hw-icon { flex: none; color: var(--hw-color-primary-text); margin-block-start: 2px; }
|
|
19
|
+
.hw-verification-checks h2 { margin: 0 0 var(--hw-space-2); font-size: var(--hw-text-md); line-height: var(--hw-leading-heading); font-weight: var(--hw-weight-semibold); }
|
|
20
|
+
.hw-verification-checks p { margin: 0; }
|
|
21
|
+
.hw-site-verification bdi { direction: ltr; overflow-wrap: anywhere; }
|
|
22
|
+
.hw-verification-registration { margin: var(--hw-space-4) 0 0; }
|
|
23
|
+
.hw-verification-registration a { color: var(--hw-color-primary-text); text-underline-offset: .25em; overflow-wrap: anywhere; }
|
|
24
|
+
.hw-portal-masthead { min-inline-size: 0; }
|
|
25
|
+
.hw-portal-masthead > .hw-portal-header, .hw-portal-masthead > hw-portal-header > .hw-portal-header { padding-inline: var(--hw-portal-gutter, var(--hw-space-8)); }
|
|
26
|
+
.hw-portal-masthead > hw-portal-header { display: block; }
|
|
27
|
+
.hw-portal-masthead[data-variant='sticky'] { position: sticky; inset-block-start: 0; z-index: var(--hw-z-sticky); }
|
|
28
|
+
@media(prefers-reduced-motion:reduce) { .hw-verification-toggle .hw-icon { transition: none; } }
|
|
29
|
+
@media(forced-colors:active) { .hw-site-verification { border-color: CanvasText; } .hw-verification-toggle,.hw-verification-registration a { color: LinkText; } .hw-site-verification :is(summary,a):focus-visible { outline-color: Highlight; } }
|
|
30
|
+
|
|
31
|
+
.hw-portal-masthead .hw-site-verification > details { max-inline-size: none; }
|
|
32
|
+
@media(max-width:37.499rem) {
|
|
33
|
+
.hw-site-verification > details,
|
|
34
|
+
.hw-portal-masthead > .hw-portal-header,
|
|
35
|
+
.hw-portal-masthead > hw-portal-header > .hw-portal-header { padding-inline: var(--hw-portal-gutter, var(--hw-space-4)); }
|
|
36
|
+
}
|
package/dist/stepper.css
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* State hooks are shared by static HTML and all native adapters. Defaults preserve
|
|
2
|
+
the original marker treatments; consumers can scope these variables per list. */
|
|
3
|
+
.hw-step {
|
|
4
|
+
color: var(--hw-step-upcoming-color, var(--hw-color-text-muted));
|
|
5
|
+
font-weight: var(--hw-step-upcoming-weight, inherit);
|
|
6
|
+
}
|
|
7
|
+
.hw-step::before {
|
|
8
|
+
border-color: var(--hw-step-upcoming-border, var(--hw-color-border-strong));
|
|
9
|
+
background: var(--hw-step-upcoming-background, var(--hw-color-surface));
|
|
10
|
+
color: var(--hw-step-upcoming-marker-color, var(--hw-color-text-muted));
|
|
11
|
+
}
|
|
12
|
+
.hw-step:not(:last-child)::after { background: var(--hw-step-upcoming-connector, var(--hw-color-border)); }
|
|
13
|
+
.hw-step:is([data-state='complete'], [data-state='completed']) {
|
|
14
|
+
color: var(--hw-step-complete-color, var(--hw-color-text-muted));
|
|
15
|
+
font-weight: var(--hw-step-complete-weight, inherit);
|
|
16
|
+
}
|
|
17
|
+
.hw-step:is([data-state='complete'], [data-state='completed'])::before {
|
|
18
|
+
border-color: var(--hw-step-complete-border, var(--hw-color-primary));
|
|
19
|
+
background: var(--hw-step-complete-background, var(--hw-color-primary));
|
|
20
|
+
color: var(--hw-step-complete-marker-color, var(--hw-color-primary-text));
|
|
21
|
+
}
|
|
22
|
+
.hw-step:is([data-state='complete'], [data-state='completed']):not(:last-child)::after { background: var(--hw-step-complete-connector, var(--hw-color-border)); }
|
|
23
|
+
.hw-step:is([aria-current='step'], [data-state='active'], [data-state='current']) {
|
|
24
|
+
color: var(--hw-step-current-color, var(--hw-color-primary-text));
|
|
25
|
+
font-weight: var(--hw-step-current-weight, var(--hw-weight-semibold));
|
|
26
|
+
}
|
|
27
|
+
.hw-step:is([aria-current='step'], [data-state='active'], [data-state='current'])::before {
|
|
28
|
+
border-color: var(--hw-step-current-border, var(--hw-color-primary));
|
|
29
|
+
background: var(--hw-step-current-background, var(--hw-color-primary));
|
|
30
|
+
color: var(--hw-step-current-marker-color, var(--hw-color-on-primary));
|
|
31
|
+
box-shadow: var(--hw-step-current-ring, 0 0 0 4px var(--hw-color-primary-subtle));
|
|
32
|
+
}
|
|
33
|
+
.hw-step:is([aria-current='step'], [data-state='active'], [data-state='current']):not(:last-child)::after { background: var(--hw-step-current-connector, var(--hw-color-border)); }
|
|
34
|
+
/* The form sidebar retains its filled completed marker and vertical connector. */
|
|
35
|
+
.hw-stepper-responsive .hw-step:is([data-state='complete'], [data-state='completed'])::before {
|
|
36
|
+
border-color: var(--hw-step-complete-border, var(--hw-color-primary));
|
|
37
|
+
background: var(--hw-step-complete-background, var(--hw-color-primary));
|
|
38
|
+
color: var(--hw-step-complete-marker-color, var(--hw-color-on-primary));
|
|
39
|
+
}
|
|
40
|
+
.hw-stepper-responsive .hw-step:is([data-state='complete'], [data-state='completed']):not(:last-child)::after { background: var(--hw-step-complete-connector, var(--hw-color-primary)); }
|
|
41
|
+
.hw-stepper-responsive .hw-step:is([aria-current='step'], [data-state='active'], [data-state='current'])::before { box-shadow: var(--hw-step-current-ring, none); }
|
|
42
|
+
@media (forced-colors: active) {
|
|
43
|
+
.hw-stepper .hw-step::before, .hw-stepper-responsive .hw-stepper .hw-step::before { border-color: CanvasText; }
|
|
44
|
+
.hw-stepper .hw-step:is([aria-current='step'], [data-state='active'], [data-state='current'])::before { border: 3px solid Highlight; box-shadow: none; }
|
|
45
|
+
.hw-stepper-responsive .hw-stepper .hw-step:is([aria-current='step'], [data-state='active'], [data-state='current'])::before { outline: 2px solid Highlight; outline-offset: 2px; box-shadow: none; }
|
|
46
|
+
}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
@import '@hawiyah/tokens/tokens.css';
|
|
2
|
+
@import './direction.css';
|
|
3
|
+
@import './components.css';
|
|
4
|
+
@import './nic-foundations.css';
|
|
5
|
+
@import './extended.css';
|
|
6
|
+
@import './layout.css';
|
|
7
|
+
@import './dga.css';
|
|
8
|
+
@import './portal.css';
|
|
9
|
+
@import './portal-branches.css';
|
|
10
|
+
@import './icons.css';
|
|
11
|
+
@import './riyal.css';
|
|
12
|
+
@import './mobile-navigation.css';
|
|
13
|
+
@import './accordion-motion.css';
|
|
14
|
+
@import './mobile-top-bar.css';
|
|
15
|
+
@import './navigation-drawer.css';
|
|
16
|
+
@import './stepper.css';
|
|
17
|
+
@import './password-field.css';
|
|
18
|
+
@import './date-picker.css';
|
|
19
|
+
@import './brand-loader.css';
|
|
20
|
+
@import './search-field.css';
|
|
21
|
+
@import './nic-cards.css';
|
|
22
|
+
@import './nic-lists.css';
|
|
23
|
+
@import './nic-buttons.css';
|
|
24
|
+
@import './nic-input-groups.css';
|
|
25
|
+
@import './nic-select.css';
|
|
26
|
+
@import './nic-choices.css';
|
|
27
|
+
@import './nic-accordion.css';
|
|
28
|
+
@import './feedback.css';
|
|
29
|
+
@import './link-composition.css';
|
|
30
|
+
@import './nic-links.css';
|
|
31
|
+
@import './nic-segmented.css';
|
|
32
|
+
@import './nic-icons.css';
|
|
33
|
+
@import './nic-tables.css';
|
|
34
|
+
@import './nic-badges.css';
|
|
35
|
+
@import './nic-avatars.css';
|
|
36
|
+
@import './nic-carousel.css';
|
|
37
|
+
@import './nic-rating.css';
|
|
38
|
+
@import './nic-pagination.css';
|
|
39
|
+
@import './nic-tabs.css';
|
|
40
|
+
@import './content-navigation.css';
|
|
41
|
+
@import './nic-search.css';
|
|
42
|
+
@import './nic-notifications.css';
|
|
43
|
+
@import './nic-notification-dialog.css';
|
|
44
|
+
|
|
45
|
+
@import './site-verification.css';
|
|
46
|
+
@import './nic-footer.css';
|
|
47
|
+
|
|
48
|
+
@import './file-upload-list.css';
|
|
49
|
+
@import './tooltip-placement.css';
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/* Local Mobile Components tooltip content 5666:4262 and text 5666:4266. */
|
|
2
|
+
:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom']) {
|
|
3
|
+
--hw-profile-tooltip-padding: var(--hw-space-2);
|
|
4
|
+
--hw-profile-tooltip-min: 10rem;
|
|
5
|
+
--hw-profile-tooltip-max: 15rem;
|
|
6
|
+
--hw-profile-tooltip-shadow: 0 4px 6px -2px rgb(16 24 40 / .03), 0 12px 16px -4px rgb(16 24 40 / .08);
|
|
7
|
+
}
|
|
8
|
+
[data-hw-theme='hawiyah'] {
|
|
9
|
+
--hw-profile-tooltip-padding: initial;
|
|
10
|
+
--hw-profile-tooltip-min: initial;
|
|
11
|
+
--hw-profile-tooltip-max: initial;
|
|
12
|
+
--hw-profile-tooltip-shadow: initial;
|
|
13
|
+
}
|
|
14
|
+
.hw-tooltip {
|
|
15
|
+
--_hw-tooltip-background: var(--hw-color-inverse);
|
|
16
|
+
--_hw-tooltip-color: var(--hw-color-on-inverse);
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
min-inline-size: min(var(--hw-tooltip-min-width, var(--hw-profile-tooltip-min, 0px)), calc(100vw - 2rem));
|
|
19
|
+
max-inline-size: min(var(--hw-tooltip-max-width, var(--hw-profile-tooltip-max, 20rem)), calc(100vw - 2rem));
|
|
20
|
+
padding: var(--hw-tooltip-padding, var(--hw-profile-tooltip-padding, var(--hw-space-2) var(--hw-space-3)));
|
|
21
|
+
background: var(--hw-tooltip-background, var(--_hw-tooltip-background));
|
|
22
|
+
color: var(--hw-tooltip-color, var(--_hw-tooltip-color));
|
|
23
|
+
line-height: 1.5;
|
|
24
|
+
box-shadow: var(--hw-tooltip-shadow, var(--hw-profile-tooltip-shadow, var(--hw-shadow-sm)));
|
|
25
|
+
}
|
|
26
|
+
/* Resolve color roles on the tooltip so nested mode overrides stay live. */
|
|
27
|
+
@scope (:where(:root:not([data-hw-theme]), [data-hw-theme='dga'], [data-hw-theme='custom'])) to ([data-hw-theme]) {
|
|
28
|
+
.hw-tooltip {
|
|
29
|
+
--_hw-tooltip-background: var(--hw-color-surface);
|
|
30
|
+
--_hw-tooltip-color: var(--hw-color-text-muted);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/* Logical sides follow the nearest direction, independently of language. */
|
|
34
|
+
.hw-tooltip[data-placement='bottom'] {
|
|
35
|
+
inset-block-start: calc(100% + var(--hw-space-2));
|
|
36
|
+
inset-block-end: auto;
|
|
37
|
+
}
|
|
38
|
+
.hw-tooltip:not([data-placement='start'], [data-placement='end'])[data-align='end'] {
|
|
39
|
+
inset-inline-start: auto;
|
|
40
|
+
inset-inline-end: 0;
|
|
41
|
+
}
|
|
42
|
+
.hw-tooltip:not([data-placement='start'], [data-placement='end'])[data-align='center'] {
|
|
43
|
+
inset-inline-start: 50%;
|
|
44
|
+
translate: calc(-50% * var(--_hw-inline-sign, 1)) 0;
|
|
45
|
+
}
|
|
46
|
+
.hw-tooltip:is([data-placement='start'], [data-placement='end']) {
|
|
47
|
+
inset-block-start: 0;
|
|
48
|
+
inset-block-end: auto;
|
|
49
|
+
}
|
|
50
|
+
.hw-tooltip[data-placement='start'] {
|
|
51
|
+
inset-inline-start: auto;
|
|
52
|
+
inset-inline-end: calc(100% + var(--hw-space-2));
|
|
53
|
+
}
|
|
54
|
+
.hw-tooltip[data-placement='end'] {
|
|
55
|
+
inset-inline-start: calc(100% + var(--hw-space-2));
|
|
56
|
+
inset-inline-end: auto;
|
|
57
|
+
}
|
|
58
|
+
.hw-tooltip:is([data-placement='start'], [data-placement='end'])[data-align='end'] {
|
|
59
|
+
inset-block-start: auto;
|
|
60
|
+
inset-block-end: 0;
|
|
61
|
+
}
|
|
62
|
+
.hw-tooltip:is([data-placement='start'], [data-placement='end'])[data-align='center'] {
|
|
63
|
+
inset-block-start: 50%;
|
|
64
|
+
translate: 0 -50%;
|
|
65
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hawiyah/styles",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Component styles for Hawiyah, a UI library built to comply with the DGA Platforms Code",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"**/*.css"
|
|
8
|
+
],
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"NOTICE"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": "./dist/styles.css",
|
|
17
|
+
"./styles.css": "./dist/styles.css",
|
|
18
|
+
"./reset.css": "./dist/reset.css",
|
|
19
|
+
"./assets/*": "./dist/assets/*"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@hawiyah/tokens": "0.2.1"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"hawiyah",
|
|
26
|
+
"dga",
|
|
27
|
+
"sdga",
|
|
28
|
+
"platforms-code",
|
|
29
|
+
"saudi-design-system",
|
|
30
|
+
"arabic",
|
|
31
|
+
"rtl",
|
|
32
|
+
"ui-components",
|
|
33
|
+
"styles"
|
|
34
|
+
],
|
|
35
|
+
"license": "Apache-2.0",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/MohamedEmbarak/hawiyah.git",
|
|
39
|
+
"directory": "packages/styles"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://mohamedembarak.github.io/hawiyah/",
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/MohamedEmbarak/hawiyah/issues"
|
|
44
|
+
},
|
|
45
|
+
"author": {
|
|
46
|
+
"name": "Development Team, National Platforms Sector — National Information Center"
|
|
47
|
+
},
|
|
48
|
+
"contributors": [
|
|
49
|
+
{
|
|
50
|
+
"name": "Mohamed Embarak",
|
|
51
|
+
"url": "https://github.com/MohamedEmbarak"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
6
54
|
}
|