@hawiyah/styles 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/LICENSE +73 -0
  2. package/NOTICE +34 -0
  3. package/README.md +246 -2
  4. package/dist/accordion-motion.css +18 -0
  5. package/dist/assets/external-link.svg +1 -0
  6. package/dist/assets/favicon.svg +4 -0
  7. package/dist/assets/fonts/riyal-LICENSE.txt +93 -0
  8. package/dist/assets/fonts/riyal-provenance.json +47 -0
  9. package/dist/assets/fonts/riyal.woff2 +0 -0
  10. package/dist/assets/hawiyah-loader-256.gif +0 -0
  11. package/dist/assets/hawiyah-loader-white-256.gif +0 -0
  12. package/dist/assets/hawiyah-loader-white.gif +0 -0
  13. package/dist/assets/hawiyah-loader.gif +0 -0
  14. package/dist/assets/hawiyah-lockup-ar-mono.svg +4 -0
  15. package/dist/assets/hawiyah-lockup-ar-reverse.svg +4 -0
  16. package/dist/assets/hawiyah-lockup-ar-white.svg +4 -0
  17. package/dist/assets/hawiyah-lockup-ar.svg +4 -0
  18. package/dist/assets/hawiyah-lockup-bilingual-mono.svg +4 -0
  19. package/dist/assets/hawiyah-lockup-bilingual-reverse.svg +4 -0
  20. package/dist/assets/hawiyah-lockup-bilingual-white.svg +4 -0
  21. package/dist/assets/hawiyah-lockup-bilingual.svg +4 -0
  22. package/dist/assets/hawiyah-lockup-en-mono.svg +4 -0
  23. package/dist/assets/hawiyah-lockup-en-reverse.svg +4 -0
  24. package/dist/assets/hawiyah-lockup-en-white.svg +4 -0
  25. package/dist/assets/hawiyah-lockup-en.svg +4 -0
  26. package/dist/assets/hawiyah-pattern.svg +4 -0
  27. package/dist/assets/hawiyah-symbol-mono.svg +4 -0
  28. package/dist/assets/hawiyah-symbol-reverse.svg +4 -0
  29. package/dist/assets/hawiyah-symbol-white.svg +4 -0
  30. package/dist/assets/hawiyah-symbol.svg +4 -0
  31. package/dist/assets/hawiyah-wordmark-loader-256.gif +0 -0
  32. package/dist/assets/hawiyah-wordmark-loader-white-256.gif +0 -0
  33. package/dist/assets/hawiyah-wordmark-loader-white.gif +0 -0
  34. package/dist/assets/hawiyah-wordmark-loader.gif +0 -0
  35. package/dist/assets/hawiyah-wordmark-mono.svg +4 -0
  36. package/dist/assets/hawiyah-wordmark-reverse.svg +4 -0
  37. package/dist/assets/hawiyah-wordmark-white.svg +4 -0
  38. package/dist/assets/hawiyah-wordmark.svg +4 -0
  39. package/dist/assets/icons/LICENSE +21 -0
  40. package/dist/assets/icons/arrow-down-01.svg +3 -0
  41. package/dist/assets/icons/arrow-left-01.svg +3 -0
  42. package/dist/assets/icons/arrow-right-01.svg +3 -0
  43. package/dist/assets/icons/calendar-03.svg +6 -0
  44. package/dist/assets/icons/cancel-01.svg +3 -0
  45. package/dist/assets/icons/checkmark-circle-02.svg +4 -0
  46. package/dist/assets/icons/filter-horizontal.svg +8 -0
  47. package/dist/assets/icons/home-01.svg +3 -0
  48. package/dist/assets/icons/link-04.svg +4 -0
  49. package/dist/assets/icons/lock-password.svg +7 -0
  50. package/dist/assets/icons/menu-01.svg +5 -0
  51. package/dist/assets/icons/provenance.json +202 -0
  52. package/dist/assets/icons/search-01.svg +4 -0
  53. package/dist/assets/icons/sorting-05.svg +8 -0
  54. package/dist/assets/icons/thumbs-down.svg +4 -0
  55. package/dist/assets/icons/thumbs-up.svg +4 -0
  56. package/dist/assets/icons/view-off-slash.svg +5 -0
  57. package/dist/assets/icons/view.svg +4 -0
  58. package/dist/assets/notifications/danger-outline.svg +3 -0
  59. package/dist/assets/notifications/danger.svg +4 -0
  60. package/dist/assets/notifications/info-outline.svg +3 -0
  61. package/dist/assets/notifications/info.svg +4 -0
  62. package/dist/assets/notifications/neutral-outline.svg +3 -0
  63. package/dist/assets/notifications/neutral.svg +4 -0
  64. package/dist/assets/notifications/success-outline.svg +3 -0
  65. package/dist/assets/notifications/success.svg +4 -0
  66. package/dist/assets/notifications/warning-outline.svg +3 -0
  67. package/dist/assets/notifications/warning.svg +4 -0
  68. package/dist/assets/pagination-arrow.svg +1 -0
  69. package/dist/assets/select-down.svg +4 -0
  70. package/dist/assets/select-up.svg +4 -0
  71. package/dist/brand-loader.css +12 -0
  72. package/dist/components.css +335 -0
  73. package/dist/content-navigation.css +44 -0
  74. package/dist/date-picker.css +50 -0
  75. package/dist/dga.css +316 -0
  76. package/dist/direction.css +14 -0
  77. package/dist/extended.css +310 -0
  78. package/dist/feedback.css +48 -0
  79. package/dist/file-upload-list.css +64 -0
  80. package/dist/icons.css +42 -0
  81. package/dist/layout.css +129 -0
  82. package/dist/link-composition.css +10 -0
  83. package/dist/mobile-navigation.css +43 -0
  84. package/dist/mobile-top-bar.css +15 -0
  85. package/dist/navigation-drawer.css +103 -0
  86. package/dist/nic-accordion.css +96 -0
  87. package/dist/nic-avatars.css +33 -0
  88. package/dist/nic-badges.css +56 -0
  89. package/dist/nic-buttons.css +80 -0
  90. package/dist/nic-cards.css +77 -0
  91. package/dist/nic-carousel.css +77 -0
  92. package/dist/nic-choices.css +64 -0
  93. package/dist/nic-footer.css +73 -0
  94. package/dist/nic-foundations.css +115 -0
  95. package/dist/nic-icons.css +72 -0
  96. package/dist/nic-input-groups.css +35 -0
  97. package/dist/nic-links.css +61 -0
  98. package/dist/nic-lists.css +68 -0
  99. package/dist/nic-notification-dialog.css +114 -0
  100. package/dist/nic-notifications.css +124 -0
  101. package/dist/nic-pagination.css +73 -0
  102. package/dist/nic-rating.css +53 -0
  103. package/dist/nic-search.css +70 -0
  104. package/dist/nic-segmented.css +117 -0
  105. package/dist/nic-select.css +51 -0
  106. package/dist/nic-tables.css +68 -0
  107. package/dist/nic-tabs.css +86 -0
  108. package/dist/password-field.css +16 -0
  109. package/dist/portal-branches.css +52 -0
  110. package/dist/portal.css +24 -0
  111. package/dist/reset.css +12 -0
  112. package/dist/riyal.css +32 -0
  113. package/dist/search-field.css +11 -0
  114. package/dist/site-verification.css +36 -0
  115. package/dist/stepper.css +46 -0
  116. package/dist/styles.css +49 -0
  117. package/dist/tooltip-placement.css +65 -0
  118. 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: '↕'; }
46
+ th[aria-sort='ascending'] .hw-table-sort-icon::before { content: '↑'; }
47
+ th[aria-sort='descending'] .hw-table-sort-icon::before { content: '↓'; }
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(--_nq-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
+ }
@@ -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-primary-text); 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
+ }
@@ -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-subtle));
19
+ background: var(--hw-step-complete-background, var(--hw-color-primary-subtle));
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
+ }
@@ -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
+ --_nq-tooltip-background: var(--hw-color-inverse);
16
+ --_nq-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(--_nq-tooltip-background));
22
+ color: var(--hw-tooltip-color, var(--_nq-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
+ --_nq-tooltip-background: var(--hw-color-surface);
30
+ --_nq-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(--_nq-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.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.2.0",
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.0"
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
  }