@ndwnu/design-system 14.2.2 → 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 +254 -217
  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 -137
  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 +40 -45
@@ -1,183 +1,205 @@
1
- .ndw-summary-card {
2
- position: relative;
3
- box-sizing: border-box;
4
-
5
- display: grid;
6
- gap: var(--ndw-spacing-md);
7
- padding: var(--ndw-spacing-lg);
8
- border: var(--ndw-border-size-sm) solid var(--ndw-color-white);
9
- border-radius: var(--ndw-border-radius-md);
10
-
11
- background-color: var(--ndw-color-white);
12
- box-shadow: 0 var(--ndw-border-radius-xs) var(--ndw-border-radius-xs) 0 rgba(64, 78, 84, 0.05);
13
- transition: var(--ndw-animation-speed-fast);
14
-
15
- &:has(.ndw-summary-card-header a:hover) {
16
- border: var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);
17
- box-shadow: 0 var(--ndw-border-radius-xs) var(--ndw-border-radius-md) 0 rgba(64, 78, 84, 0.2);
18
- }
19
-
20
- &__wrapper {
21
- display: grid;
22
- gap: var(--ndw-spacing-md);
23
- height: 100%;
24
- align-items: start;
25
- box-sizing: border-box;
26
-
27
- &:has(ndw-avatar) {
28
- grid-template-columns: max-content 1fr;
29
- }
30
-
31
- &:has(a:focus:not(:active)) {
32
- outline: var(--ndw-border-size-sm) solid var(--ndw-color-info-500);
33
- }
34
- }
35
-
36
- &__content {
37
- display: grid;
38
- gap: var(--ndw-spacing-xs);
39
- }
40
-
41
- .ndw-summary-card-tags {
42
- display: flex;
43
- flex-wrap: wrap;
44
- gap: var(--ndw-spacing-xs);
45
- }
46
-
47
- .ndw-summary-card-tag {
48
- display: flex;
49
- flex-wrap: nowrap;
50
- gap: var(--ndw-spacing-2xs);
51
- align-items: center;
52
-
53
- border: 1px solid var(--ndw-color-grey-100);
54
- border-radius: var(--ndw-border-radius-xs);
55
- padding: var(--ndw-spacing-2xs);
56
-
57
- color: var(--ndw-color-grey-500);
58
- font-size: var(--ndw-font-size-xs);
59
-
60
- ndw-icon {
61
- font-size: var(--ndw-font-size-sm);
62
- }
63
-
64
- img {
65
- display: block;
66
- height: var(--ndw-font-size-sm);
67
- }
68
- }
69
-
70
- .ndw-summary-card-subtitle {
71
- display: grid;
72
- grid-template-columns: max-content 1fr;
73
- align-items: center;
74
- gap: var(--ndw-spacing-3xs);
75
-
76
- color: var(--ndw-color-grey-500);
77
- font-size: var(--ndw-font-size-xs);
78
-
79
- ndw-icon {
80
- font-size: var(--ndw-font-size-sm);
81
- }
82
-
83
- &__text {
84
- overflow: hidden;
85
- text-overflow: ellipsis;
86
- white-space: nowrap;
87
- }
88
- }
89
-
90
- .ndw-summary-card-header {
91
- display: flex;
92
- gap: var(--ndw-spacing-xs);
93
-
94
- &__wrapper {
95
- display: grid;
96
- gap: var(--ndw-spacing-2xs);
97
- justify-items: left;
98
- }
99
-
100
- &__title {
101
- width: 100%;
102
- white-space: nowrap;
103
- overflow: hidden;
104
- text-overflow: ellipsis;
105
- margin: 0;
106
-
107
- font-size: var(--ndw-base-font-size);
108
- font-weight: var(--ndw-font-weight-bold);
109
- font-family: var(--ndw-font-family-heading);
110
-
111
- a {
112
- color: inherit;
113
- text-decoration: none;
114
- font-family: var(--ndw-font-family-heading);
115
-
116
- &:after {
117
- content: '';
118
- position: absolute;
119
- inset: 0;
120
- }
121
-
122
- &:focus {
123
- outline: 0;
124
- }
125
- }
126
- }
127
- }
128
-
129
- .ndw-summary-card-content {
130
- overflow: hidden;
131
- text-overflow: ellipsis;
132
- display: -webkit-box;
133
- -webkit-line-clamp: 2;
134
- -webkit-box-orient: vertical;
135
-
136
- font-family: var(--ndw-font-family-body);
137
- font-size: var(--ndw-font-size-sm);
138
- color: var(--ndw-color-grey-500);
139
- }
140
-
141
- .ndw-summary-card-actions {
142
- flex: 1;
143
- display: flex;
144
- justify-content: flex-end;
145
-
146
- ndw-favorite {
147
- margin-right: var(--ndw-spacing-sm);
148
- }
149
-
150
- &--auto {
151
- container-type: inline-size;
152
- }
153
-
154
- .actions {
155
- gap: var(--ndw-spacing-2xs);
156
-
157
- &--popover {
158
- display: grid;
159
- }
160
-
161
- &--visible,
162
- &--auto {
163
- display: flex;
164
- }
165
- }
166
-
167
- .popover-wrapper {
168
- display: block;
169
-
170
- @container (width > 140px) {
171
- display: none;
172
- }
173
- }
174
-
175
- .regular-wrapper {
176
- display: none;
177
-
178
- @container (width > 140px) {
179
- display: block;
180
- }
181
- }
182
- }
183
- }
1
+ .ndw-summary-card {
2
+ position: relative;
3
+ box-sizing: border-box;
4
+ container: ndw-summary-card / inline-size;
5
+
6
+ display: grid;
7
+ gap: var(--ndw-spacing-md);
8
+ padding: var(--ndw-spacing-lg);
9
+ border: var(--ndw-border-size-sm) solid var(--ndw-color-white);
10
+ border-radius: var(--ndw-border-radius-md);
11
+
12
+ background-color: var(--ndw-color-white);
13
+ box-shadow: 0 var(--ndw-border-radius-xs) var(--ndw-border-radius-xs) 0 rgba(64, 78, 84, 0.05);
14
+ transition: var(--ndw-animation-speed-fast);
15
+
16
+ &:has(.ndw-summary-card-header a:hover) {
17
+ border: var(--ndw-border-size-sm) solid var(--ndw-color-grey-300);
18
+ box-shadow: 0 var(--ndw-border-radius-xs) var(--ndw-border-radius-md) 0 rgba(64, 78, 84, 0.2);
19
+ }
20
+
21
+ &__wrapper {
22
+ display: grid;
23
+ gap: var(--ndw-spacing-md);
24
+ height: 100%;
25
+ align-items: start;
26
+ box-sizing: border-box;
27
+
28
+ &:has(ndw-avatar) {
29
+ grid-template-columns: max-content minmax(0, 1fr);
30
+ }
31
+
32
+ &:has(a:focus:not(:active)) {
33
+ outline: var(--ndw-border-size-sm) solid var(--ndw-color-info-500);
34
+ }
35
+ }
36
+
37
+ &__content {
38
+ display: grid;
39
+ gap: var(--ndw-spacing-xs);
40
+ }
41
+
42
+ .ndw-summary-card-tags {
43
+ display: flex;
44
+ flex-wrap: wrap;
45
+ gap: var(--ndw-spacing-xs);
46
+ }
47
+
48
+ .ndw-summary-card-tag {
49
+ display: flex;
50
+ flex-wrap: nowrap;
51
+ gap: var(--ndw-spacing-2xs);
52
+ align-items: center;
53
+
54
+ border: 1px solid var(--ndw-color-grey-100);
55
+ border-radius: var(--ndw-border-radius-xs);
56
+ padding: var(--ndw-spacing-2xs);
57
+
58
+ color: var(--ndw-color-grey-500);
59
+ font-size: var(--ndw-font-size-xs);
60
+
61
+ ndw-icon {
62
+ font-size: var(--ndw-font-size-sm);
63
+ }
64
+
65
+ img {
66
+ display: block;
67
+ height: var(--ndw-font-size-sm);
68
+ }
69
+ }
70
+
71
+ .ndw-summary-card-subtitle {
72
+ display: grid;
73
+ grid-template-columns: max-content minmax(0, 1fr);
74
+ align-items: center;
75
+ gap: var(--ndw-spacing-3xs);
76
+
77
+ color: var(--ndw-color-grey-500);
78
+ font-size: var(--ndw-font-size-xs);
79
+
80
+ ndw-icon {
81
+ font-size: var(--ndw-font-size-sm);
82
+ }
83
+
84
+ &__text {
85
+ overflow: hidden;
86
+ text-overflow: ellipsis;
87
+ white-space: nowrap;
88
+ }
89
+ }
90
+
91
+ .ndw-summary-card-header {
92
+ display: flex;
93
+ gap: var(--ndw-spacing-xs);
94
+ min-width: 0;
95
+
96
+ &__wrapper {
97
+ display: grid;
98
+ gap: var(--ndw-spacing-2xs);
99
+ justify-items: left;
100
+ min-width: 0;
101
+ }
102
+
103
+ &__title {
104
+ width: 100%;
105
+ white-space: nowrap;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ margin: 0;
109
+
110
+ font-size: var(--ndw-base-font-size);
111
+ font-weight: var(--ndw-font-weight-bold);
112
+ font-family: var(--ndw-font-family-heading);
113
+
114
+ a {
115
+ color: inherit;
116
+ text-decoration: none;
117
+ font-family: var(--ndw-font-family-heading);
118
+
119
+ &:after {
120
+ content: '';
121
+ position: absolute;
122
+ inset: 0;
123
+ }
124
+
125
+ &:focus {
126
+ outline: 0;
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ .ndw-summary-card-content {
133
+ overflow: hidden;
134
+ text-overflow: ellipsis;
135
+ display: -webkit-box;
136
+ -webkit-line-clamp: 2;
137
+ -webkit-box-orient: vertical;
138
+
139
+ font-family: var(--ndw-font-family-body);
140
+ font-size: var(--ndw-font-size-sm);
141
+ color: var(--ndw-color-grey-500);
142
+ }
143
+
144
+ .ndw-summary-card-actions {
145
+ flex: 1;
146
+ display: flex;
147
+ justify-content: flex-end;
148
+
149
+ ndw-favorite {
150
+ margin-right: var(--ndw-spacing-sm);
151
+ }
152
+
153
+ &--auto {
154
+ container-type: inline-size;
155
+ }
156
+
157
+ .actions {
158
+ gap: var(--ndw-spacing-2xs);
159
+
160
+ &--popover {
161
+ display: grid;
162
+ }
163
+
164
+ &--visible,
165
+ &--auto {
166
+ display: flex;
167
+ }
168
+ }
169
+
170
+ .popover-wrapper {
171
+ display: block;
172
+
173
+ @container (width > 140px) {
174
+ display: none;
175
+ }
176
+ }
177
+
178
+ .regular-wrapper {
179
+ display: none;
180
+
181
+ @container (width > 140px) {
182
+ display: block;
183
+ }
184
+ }
185
+ }
186
+
187
+ // When the card itself becomes too narrow (e.g. 400% zoom / 320px reflow),
188
+ // stack the header so the title gets the full row and the actions drop to
189
+ // their own row beneath it instead of being squeezed onto one line.
190
+ @container ndw-summary-card (width < 320px) {
191
+ .ndw-summary-card-header {
192
+ flex-direction: column;
193
+ align-items: stretch;
194
+ }
195
+
196
+ .ndw-summary-card-actions {
197
+ flex: none;
198
+ justify-content: flex-start;
199
+
200
+ ndw-favorite {
201
+ margin-right: 0;
202
+ }
203
+ }
204
+ }
205
+ }
@@ -1,8 +1,8 @@
1
- .ag-root-wrapper {
2
- padding: var(--ndw-spacing-md);
3
- box-shadow: var(--ndw-elevation-content);
4
-
5
- .ag-header-cell-text {
6
- text-transform: uppercase;
7
- }
8
- }
1
+ .ag-root-wrapper {
2
+ padding: var(--ndw-spacing-md);
3
+ box-shadow: var(--ndw-elevation-content);
4
+
5
+ .ag-header-cell-text {
6
+ text-transform: uppercase;
7
+ }
8
+ }
@@ -1,80 +1,80 @@
1
- import { type Meta, type StoryObj } from '@storybook/angular';
2
-
3
- interface StoryArgs {
4
- noMargin: boolean;
5
- }
6
-
7
- const args: StoryArgs = {
8
- noMargin: false,
9
- };
10
-
11
- /**
12
- * The divider is used to separate content.
13
- *
14
- * ## Usage
15
- *
16
- * Use the `<hr />` element with the `ndwDivider` attribute to add a horizontal line to separate content.
17
- *
18
- * ```html
19
- * [[ content ]]
20
- * <hr ndwDivider />
21
- * [[ content ]]
22
- * ```
23
- *
24
- * ### No margin
25
- *
26
- * To remove the default margin from the divider, use the `[noMargin]` attribute.
27
- *
28
- * ```html
29
- * [[ content ]]
30
- * <hr ndwDivider noMargin />
31
- * [[ content ]]
32
- * ```
33
- */
34
-
35
- const meta: Meta<StoryArgs> = {
36
- tags: ['autodocs', 'ndw', 'nwb'],
37
- title: 'Components/Divider',
38
- render: (props) => ({
39
- props,
40
- styles: [
41
- `
42
- .content {
43
- background-color: var(--ndw-color-grey-100);
44
- padding: var(--ndw-spacing-xs);
45
- }
46
- `,
47
- ],
48
- template: `
49
- <div class="content">
50
- Content
51
- </div>
52
- <hr ndwDivider ${props.noMargin ? 'noMargin' : ''} />
53
- <div class="content">
54
- Content
55
- </div>
56
- `,
57
- }),
58
- args,
59
- argTypes: {
60
- noMargin: {
61
- control: 'boolean',
62
- description: 'Remove the default margin from the divider.',
63
- name: '[noMargin]',
64
- table: {
65
- category: 'Inputs',
66
- defaultValue: { summary: 'false' },
67
- },
68
- },
69
- },
70
- };
71
- export default meta;
72
- type Story = StoryObj;
73
-
74
- export const Default: Story = {};
75
-
76
- export const NoMargin: Story = {
77
- args: {
78
- noMargin: true,
79
- },
80
- };
1
+ import { type Meta, type StoryObj } from '@storybook/angular';
2
+
3
+ interface StoryArgs {
4
+ noMargin: boolean;
5
+ }
6
+
7
+ const args: StoryArgs = {
8
+ noMargin: false,
9
+ };
10
+
11
+ /**
12
+ * The divider is used to separate content.
13
+ *
14
+ * ## Usage
15
+ *
16
+ * Use the `<hr />` element with the `ndwDivider` attribute to add a horizontal line to separate content.
17
+ *
18
+ * ```html
19
+ * [[ content ]]
20
+ * <hr ndwDivider />
21
+ * [[ content ]]
22
+ * ```
23
+ *
24
+ * ### No margin
25
+ *
26
+ * To remove the default margin from the divider, use the `[noMargin]` attribute.
27
+ *
28
+ * ```html
29
+ * [[ content ]]
30
+ * <hr ndwDivider noMargin />
31
+ * [[ content ]]
32
+ * ```
33
+ */
34
+
35
+ const meta: Meta<StoryArgs> = {
36
+ tags: ['autodocs', 'ndw', 'nwb'],
37
+ title: 'Components/Divider',
38
+ render: (props) => ({
39
+ props,
40
+ styles: [
41
+ `
42
+ .content {
43
+ background-color: var(--ndw-color-grey-100);
44
+ padding: var(--ndw-spacing-xs);
45
+ }
46
+ `,
47
+ ],
48
+ template: `
49
+ <div class="content">
50
+ Content
51
+ </div>
52
+ <hr ndwDivider ${props.noMargin ? 'noMargin' : ''} />
53
+ <div class="content">
54
+ Content
55
+ </div>
56
+ `,
57
+ }),
58
+ args,
59
+ argTypes: {
60
+ noMargin: {
61
+ control: 'boolean',
62
+ description: 'Remove the default margin from the divider.',
63
+ name: '[noMargin]',
64
+ table: {
65
+ category: 'Inputs',
66
+ defaultValue: { summary: 'false' },
67
+ },
68
+ },
69
+ },
70
+ };
71
+ export default meta;
72
+ type Story = StoryObj;
73
+
74
+ export const Default: Story = {};
75
+
76
+ export const NoMargin: Story = {
77
+ args: {
78
+ noMargin: true,
79
+ },
80
+ };
@@ -1,17 +1,17 @@
1
- @forward 'button';
2
- @forward 'card';
3
- @forward 'datepicker';
4
- @forward 'divider';
5
- @forward 'dropdown';
6
- @forward 'edit-bar';
7
- @forward 'filter-button';
8
- @forward 'guided-tour';
9
- @forward 'input';
10
- @forward 'label';
11
- @forward 'link';
12
- @forward 'list-item';
13
- @forward 'map';
14
- @forward 'menu-button';
15
- @forward 'popover';
16
- @forward 'summary-card';
17
- @forward 'table';
1
+ @forward 'button';
2
+ @forward 'card';
3
+ @forward 'datepicker';
4
+ @forward 'divider';
5
+ @forward 'dropdown';
6
+ @forward 'edit-bar';
7
+ @forward 'filter-button';
8
+ @forward 'guided-tour';
9
+ @forward 'input';
10
+ @forward 'label';
11
+ @forward 'link';
12
+ @forward 'list-item';
13
+ @forward 'map';
14
+ @forward 'menu-button';
15
+ @forward 'popover';
16
+ @forward 'summary-card';
17
+ @forward 'table';