@ndwnu/design-system 14.2.1 → 14.3.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 (56) hide show
  1. package/CLAUDE.md +1539 -1525
  2. package/README.md +4 -4
  3. package/assets/icons.ts +83 -83
  4. package/fesm2022/ndwnu-design-system.mjs +260 -220
  5. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  6. package/package.json +1 -1
  7. package/styles/FONTS.md +46 -46
  8. package/styles/base/_colors.scss +246 -246
  9. package/styles/base/_fonts.scss +13 -13
  10. package/styles/base/_material.scss +17 -17
  11. package/styles/base/_typography.scss +133 -133
  12. package/styles/base/_variables.scss +92 -92
  13. package/styles/base/colors.stories.model.ts +85 -85
  14. package/styles/base/colors.stories.ts +24 -24
  15. package/styles/base/index.scss +5 -5
  16. package/styles/base/typography.stories.ts +111 -111
  17. package/styles/components/_button.scss +133 -133
  18. package/styles/components/_card.scss +3 -3
  19. package/styles/components/_datepicker.scss +134 -134
  20. package/styles/components/_divider.scss +10 -10
  21. package/styles/components/_dropdown.scss +8 -8
  22. package/styles/components/_edit-bar.scss +97 -97
  23. package/styles/components/_filter-button.scss +39 -39
  24. package/styles/components/_guided-tour.scss +70 -70
  25. package/styles/components/_input.scss +253 -253
  26. package/styles/components/_label.scss +23 -23
  27. package/styles/components/_link.scss +36 -36
  28. package/styles/components/_list-item.scss +7 -7
  29. package/styles/components/_map.scss +144 -114
  30. package/styles/components/_menu-button.scss +37 -37
  31. package/styles/components/_popover.scss +19 -19
  32. package/styles/components/_summary-card.scss +205 -183
  33. package/styles/components/_table.scss +8 -8
  34. package/styles/components/divider.stories.ts +80 -80
  35. package/styles/components/index.scss +17 -17
  36. package/styles/components/link.stories.ts +154 -154
  37. package/styles/index.scss +4 -4
  38. package/styles/layout/_grid.scss +165 -165
  39. package/styles/layout/_overlay.scss +7 -7
  40. package/styles/layout/grid.stories.ts +168 -168
  41. package/styles/layout/index.scss +2 -2
  42. package/styles/storybook/_core.scss +60 -60
  43. package/styles/storybook/_reset.scss +21 -21
  44. package/styles/storybook/index.scss +17 -17
  45. package/styles/storybook/overrides/_buttons.scss +95 -95
  46. package/styles/storybook/overrides/_code-previews.scss +97 -97
  47. package/styles/storybook/overrides/_content.scss +24 -24
  48. package/styles/storybook/overrides/_headers.scss +31 -31
  49. package/styles/storybook/overrides/_layout.scss +44 -44
  50. package/styles/storybook/overrides/_table.scss +112 -112
  51. package/styles/storybook/overrides/index.scss +6 -6
  52. package/styles/storybook/overrides.css +355 -355
  53. package/styles/utils/_screenreader.scss +13 -13
  54. package/styles/utils/classes.stories.ts +157 -157
  55. package/styles/utils/index.scss +1 -1
  56. package/types/ndwnu-design-system.d.ts +46 -48
@@ -1,23 +1,23 @@
1
- [ndwLabel] {
2
- align-content: center;
3
- align-items: center;
4
- display: grid;
5
- font-family: var(--ndw-font-family-body);
6
- font-size: var(--ndw-font-size-sm);
7
- font-weight: var(--ndw-font-weight-bold);
8
- gap: var(--ndw-spacing-3xs);
9
- grid-template-columns: repeat(3, auto);
10
- justify-content: start;
11
- line-height: 100%;
12
- margin-bottom: var(--ndw-spacing-2xs);
13
-
14
- ndw-icon {
15
- color: var(--ndw-color-grey-400);
16
- font-size: var(--ndw-icon-size-md);
17
- margin-top: calc(var(--ndw-spacing-3xs) * -1);
18
- }
19
-
20
- .required {
21
- color: var(--ndw-color-grey-400);
22
- }
23
- }
1
+ [ndwLabel] {
2
+ align-content: center;
3
+ align-items: center;
4
+ display: grid;
5
+ font-family: var(--ndw-font-family-body);
6
+ font-size: var(--ndw-font-size-sm);
7
+ font-weight: var(--ndw-font-weight-bold);
8
+ gap: var(--ndw-spacing-3xs);
9
+ grid-template-columns: repeat(3, auto);
10
+ justify-content: start;
11
+ line-height: 100%;
12
+ margin-bottom: var(--ndw-spacing-2xs);
13
+
14
+ ndw-icon {
15
+ color: var(--ndw-color-grey-400);
16
+ font-size: var(--ndw-icon-size-md);
17
+ margin-top: calc(var(--ndw-spacing-3xs) * -1);
18
+ }
19
+
20
+ .required {
21
+ color: var(--ndw-color-grey-400);
22
+ }
23
+ }
@@ -1,36 +1,36 @@
1
- [ndwLink] {
2
- display: inline-flex;
3
- align-items: baseline;
4
- gap: var(--ndw-spacing-2xs);
5
- padding: 0;
6
- border: 0;
7
-
8
- font-size: inherit;
9
- font-family: var(--ndw-font-family-body);
10
- text-decoration: underline var(--ndw-border-size-sm) transparent;
11
- text-underline-offset: var(--ndw-border-size-md);
12
-
13
- color: var(--ndw-color-link-400);
14
- background-color: transparent;
15
- transition: text-decoration-color var(--ndw-animation-speed-fast) ease-in-out;
16
-
17
- > * {
18
- align-self: center;
19
- }
20
-
21
- ndw-icon {
22
- font-size: 1.25em;
23
- overflow: hidden;
24
- }
25
-
26
- &:hover {
27
- color: var(--ndw-color-link-500);
28
- text-decoration-color: var(--ndw-color-link-500);
29
- }
30
-
31
- &[disabled] {
32
- color: var(--ndw-color-grey-400);
33
- pointer-events: none;
34
- user-select: none;
35
- }
36
- }
1
+ [ndwLink] {
2
+ display: inline-flex;
3
+ align-items: baseline;
4
+ gap: var(--ndw-spacing-2xs);
5
+ padding: 0;
6
+ border: 0;
7
+
8
+ font-size: inherit;
9
+ font-family: var(--ndw-font-family-body);
10
+ text-decoration: underline var(--ndw-border-size-sm) transparent;
11
+ text-underline-offset: var(--ndw-border-size-md);
12
+
13
+ color: var(--ndw-color-link-400);
14
+ background-color: transparent;
15
+ transition: text-decoration-color var(--ndw-animation-speed-fast) ease-in-out;
16
+
17
+ > * {
18
+ align-self: center;
19
+ }
20
+
21
+ ndw-icon {
22
+ font-size: 1.25em;
23
+ overflow: hidden;
24
+ }
25
+
26
+ &:hover {
27
+ color: var(--ndw-color-link-500);
28
+ text-decoration-color: var(--ndw-color-link-500);
29
+ }
30
+
31
+ &[disabled] {
32
+ color: var(--ndw-color-grey-400);
33
+ pointer-events: none;
34
+ user-select: none;
35
+ }
36
+ }
@@ -1,7 +1,7 @@
1
- @use '../base/typography' as *;
2
-
3
- [ndw-list-item] {
4
- cursor: pointer;
5
-
6
- @include ndw-paragraph-md;
7
- }
1
+ @use '../base/typography' as *;
2
+
3
+ [ndw-list-item] {
4
+ cursor: pointer;
5
+
6
+ @include ndw-paragraph-md;
7
+ }
@@ -1,114 +1,144 @@
1
- @use '../base/typography' as *;
2
-
3
- .map-control {
4
- position: relative;
5
- overflow: hidden;
6
- display: inline-flex;
7
- align-items: center;
8
-
9
- height: 40px;
10
- min-width: 40px;
11
- line-height: 100%;
12
-
13
- border: var(--ndw-border-size-sm) solid var(--ndw-color-grey-200);
14
- border-radius: var(--ndw-border-radius-sm);
15
- box-shadow: var(--ndw-elevation-content);
16
-
17
- @include ndw-paragraph-bold-md;
18
- color: var(--ndw-color-grey-500);
19
- background-color: var(--ndw-color-white);
20
- transition: var(--ndw-animation-speed-default);
21
- will-change: background-color, color;
22
-
23
- &:hover {
24
- background-color: var(--ndw-color-grey-100);
25
- }
26
-
27
- &.active {
28
- color: var(--ndw-color-primary-500);
29
-
30
- ndw-icon {
31
- font-variation-settings: 'FILL' 1;
32
- }
33
-
34
- .map-control__chevron {
35
- rotate: 180deg;
36
- }
37
- }
38
-
39
- &:disabled,
40
- &.disabled {
41
- pointer-events: none;
42
- color: var(--ndw-color-grey-300);
43
- }
44
-
45
- .map-control__chevron {
46
- pointer-events: none;
47
- padding: 0.25rem;
48
- color: var(--ndw-color-primary);
49
-
50
- transition-property: rotate;
51
- transition-duration: var(--ndw-animation-speed-fast);
52
- transition-timing-function: ease-out;
53
- transition-delay: 0s;
54
- }
55
-
56
- .content-wrapper:not(:empty) {
57
- @include ndw-paragraph-bold-md;
58
- line-height: 1rem;
59
- padding-inline: var(--ndw-spacing-xs);
60
- }
61
-
62
- > button {
63
- @include ndw-paragraph-bold-md;
64
-
65
- border: none;
66
- background: none;
67
- padding: var(--ndw-spacing-xs);
68
-
69
- color: var(--ndw-color-grey-600);
70
- font-size: var(--ndw-font-size-sm);
71
- font-weight: var(--ndw-font-weight-bold);
72
-
73
- &:after {
74
- content: '';
75
- position: absolute;
76
- inset: 0;
77
- }
78
- }
79
- }
80
-
81
- .map-control-dropdown {
82
- display: grid;
83
- grid-template-rows: max-content 1fr;
84
- padding: var(--ndw-spacing-2xs);
85
- width: 240px;
86
-
87
- border: var(--ndw-border-size-sm) solid var(--ndw-color-grey-200);
88
- border-radius: var(--ndw-border-radius-sm);
89
- box-shadow: var(--ndw-elevation-dropdown);
90
-
91
- background-color: var(--ndw-color-white);
92
-
93
- &:not(.fixed) {
94
- max-height: 380px;
95
- }
96
-
97
- header {
98
- display: flex;
99
- justify-content: space-between;
100
- align-items: center;
101
- gap: var(--ndw-spacing-xs);
102
- padding: var(--ndw-spacing-xs) 0 var(--ndw-spacing-xs) var(--ndw-spacing-2xs);
103
-
104
- h3 {
105
- color: var(--ndw-color-grey-600);
106
- margin-block: 0;
107
- }
108
- }
109
-
110
- &__content {
111
- flex: 1;
112
- overflow-y: auto;
113
- }
114
- }
1
+ @use '../base/typography' as *;
2
+
3
+ .map-control {
4
+ position: relative;
5
+ overflow: hidden;
6
+ display: inline-flex;
7
+ align-items: center;
8
+
9
+ height: 40px;
10
+ min-width: 40px;
11
+ line-height: 100%;
12
+
13
+ border: var(--ndw-border-size-sm) solid var(--ndw-color-grey-200);
14
+ border-radius: var(--ndw-border-radius-sm);
15
+ box-shadow: var(--ndw-elevation-content);
16
+
17
+ @include ndw-paragraph-bold-md;
18
+ color: var(--ndw-color-grey-500);
19
+ background-color: var(--ndw-color-white);
20
+ transition: var(--ndw-animation-speed-default);
21
+ will-change: background-color, color;
22
+
23
+ &:hover {
24
+ background-color: var(--ndw-color-grey-100);
25
+ }
26
+
27
+ &.active {
28
+ color: var(--ndw-color-primary-500);
29
+
30
+ ndw-icon {
31
+ font-variation-settings: 'FILL' 1;
32
+ }
33
+
34
+ .map-control__chevron {
35
+ rotate: 180deg;
36
+ }
37
+ }
38
+
39
+ &:disabled,
40
+ &.disabled {
41
+ pointer-events: none;
42
+ color: var(--ndw-color-grey-300);
43
+ }
44
+
45
+ .map-control__chevron {
46
+ pointer-events: none;
47
+ padding: 0.25rem;
48
+ color: var(--ndw-color-primary);
49
+
50
+ transition-property: rotate;
51
+ transition-duration: var(--ndw-animation-speed-fast);
52
+ transition-timing-function: ease-out;
53
+ transition-delay: 0s;
54
+ }
55
+
56
+ .content-wrapper:not(:empty) {
57
+ @include ndw-paragraph-bold-md;
58
+ line-height: 1rem;
59
+ padding-inline: var(--ndw-spacing-xs);
60
+ }
61
+
62
+ > button {
63
+ @include ndw-paragraph-bold-md;
64
+
65
+ border: none;
66
+ background: none;
67
+ padding: var(--ndw-spacing-xs);
68
+
69
+ color: var(--ndw-color-grey-600);
70
+ font-size: var(--ndw-font-size-sm);
71
+ font-weight: var(--ndw-font-weight-bold);
72
+
73
+ &:after {
74
+ content: '';
75
+ position: absolute;
76
+ inset: 0;
77
+ }
78
+ }
79
+
80
+ &--compact {
81
+ height: 32px;
82
+ min-width: 32px;
83
+
84
+ > svg,
85
+ > ndw-icon {
86
+ width: 20px;
87
+ height: 20px;
88
+ font-size: 20px;
89
+ }
90
+
91
+ > button {
92
+ padding: 0;
93
+ }
94
+
95
+ ndw-map-display-option img,
96
+ ndw-map-display-option ndw-icon {
97
+ width: 24px;
98
+ height: 24px;
99
+ padding: var(--ndw-spacing-3xs);
100
+ }
101
+ }
102
+ }
103
+
104
+ .map-control-dropdown {
105
+ display: grid;
106
+ grid-template-rows: max-content 1fr;
107
+ padding: var(--ndw-spacing-2xs);
108
+ width: 240px;
109
+
110
+ border: var(--ndw-border-size-sm) solid var(--ndw-color-grey-200);
111
+ border-radius: var(--ndw-border-radius-sm);
112
+ box-shadow: var(--ndw-elevation-dropdown);
113
+
114
+ background-color: var(--ndw-color-white);
115
+
116
+ &:not(.fixed) {
117
+ // Never exceed the available viewport height (minus the overlay's 8px
118
+ // viewport margin on each side), so on small screens the popover stays
119
+ // fully visible and its content scrolls instead of overflowing off-screen.
120
+ max-height: min(380px, calc(100vh - 16px));
121
+ max-height: min(380px, calc(100dvh - 16px));
122
+ }
123
+
124
+ header {
125
+ display: flex;
126
+ justify-content: space-between;
127
+ align-items: center;
128
+ gap: var(--ndw-spacing-xs);
129
+ padding: var(--ndw-spacing-xs) 0 var(--ndw-spacing-xs) var(--ndw-spacing-2xs);
130
+
131
+ h3 {
132
+ color: var(--ndw-color-grey-600);
133
+ margin-block: 0;
134
+ }
135
+ }
136
+
137
+ &__content {
138
+ // `min-height: 0` lets this 1fr grid row shrink below its content height so
139
+ // the scrollbar engages; without it the row keeps its intrinsic height and
140
+ // the dropdown grows past its max-height, clipping the last items.
141
+ min-height: 0;
142
+ overflow-y: auto;
143
+ }
144
+ }
@@ -1,37 +1,37 @@
1
- [ndwButton] {
2
- &[menu] {
3
- background-color: transparent;
4
- border-color: transparent;
5
- color: var(--ndw-color-grey-700);
6
- gap: var(--ndw-spacing-xs);
7
- height: 2.625rem;
8
- margin-inline: var(--ndw-spacing-xs);
9
- padding-inline: 0;
10
- position: relative;
11
- width: calc(100% - var(--ndw-spacing-xs) * 2);
12
- border-radius: var(--ndw-border-radius-md);
13
- cursor: default;
14
- transition: var(--ndw-animation-speed-fast);
15
-
16
- &:hover {
17
- background-color: var(--ndw-color-grey-100);
18
- border-color: var(--ndw-color-grey-100);
19
- cursor: pointer;
20
- }
21
-
22
- &:active,
23
- &[active],
24
- &[selected] {
25
- background-color: var(--ndw-color-info-100);
26
- border-color: var(--ndw-color-info-100);
27
- &:hover {
28
- background-color: var(--ndw-color-info-200);
29
- border-color: var(--ndw-color-info-200);
30
- }
31
- }
32
-
33
- &:not([clickable]) {
34
- cursor: default;
35
- }
36
- }
37
- }
1
+ [ndwButton] {
2
+ &[menu] {
3
+ background-color: transparent;
4
+ border-color: transparent;
5
+ color: var(--ndw-color-grey-700);
6
+ gap: var(--ndw-spacing-xs);
7
+ height: 2.625rem;
8
+ margin-inline: var(--ndw-spacing-xs);
9
+ padding-inline: 0;
10
+ position: relative;
11
+ width: calc(100% - var(--ndw-spacing-xs) * 2);
12
+ border-radius: var(--ndw-border-radius-md);
13
+ cursor: default;
14
+ transition: var(--ndw-animation-speed-fast);
15
+
16
+ &:hover {
17
+ background-color: var(--ndw-color-grey-100);
18
+ border-color: var(--ndw-color-grey-100);
19
+ cursor: pointer;
20
+ }
21
+
22
+ &:active,
23
+ &[active],
24
+ &[selected] {
25
+ background-color: var(--ndw-color-info-100);
26
+ border-color: var(--ndw-color-info-100);
27
+ &:hover {
28
+ background-color: var(--ndw-color-info-200);
29
+ border-color: var(--ndw-color-info-200);
30
+ }
31
+ }
32
+
33
+ &:not([clickable]) {
34
+ cursor: default;
35
+ }
36
+ }
37
+ }
@@ -1,19 +1,19 @@
1
- @keyframes show {
2
- from {
3
- opacity: 0;
4
- }
5
- to {
6
- opacity: 1;
7
- }
8
- }
9
-
10
- .cdk-overlay-pane {
11
- &.ndw-popover-panel {
12
- animation: show var(--ndw-animation-speed-fast) ease-out;
13
- background-color: var(--ndw-color-white);
14
- border-radius: var(--ndw-border-radius-md);
15
- box-shadow: var(--ndw-elevation-popover);
16
- display: grid;
17
- padding: var(--ndw-spacing-sm);
18
- }
19
- }
1
+ @keyframes show {
2
+ from {
3
+ opacity: 0;
4
+ }
5
+ to {
6
+ opacity: 1;
7
+ }
8
+ }
9
+
10
+ .cdk-overlay-pane {
11
+ &.ndw-popover-panel {
12
+ animation: show var(--ndw-animation-speed-fast) ease-out;
13
+ background-color: var(--ndw-color-white);
14
+ border-radius: var(--ndw-border-radius-md);
15
+ box-shadow: var(--ndw-elevation-popover);
16
+ display: grid;
17
+ padding: var(--ndw-spacing-sm);
18
+ }
19
+ }