@digiko-npm/designsystem 0.7.2 → 0.8.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 (58) hide show
  1. package/dist/designsystem.css +6682 -4515
  2. package/dist/designsystem.min.css +2 -2
  3. package/package.json +18 -3
  4. package/src/components/accordion.css +129 -128
  5. package/src/components/alert.css +137 -134
  6. package/src/components/avatar.css +77 -77
  7. package/src/components/badge.css +52 -52
  8. package/src/components/bottom-nav.css +71 -71
  9. package/src/components/bottom-sheet.css +146 -0
  10. package/src/components/breadcrumb.css +61 -61
  11. package/src/components/button.css +162 -154
  12. package/src/components/card.css +94 -72
  13. package/src/components/chip.css +38 -38
  14. package/src/components/collapsible.css +96 -100
  15. package/src/components/color-picker.css +82 -0
  16. package/src/components/combobox.css +418 -0
  17. package/src/components/command.css +141 -140
  18. package/src/components/copy-button.css +106 -0
  19. package/src/components/datepicker.css +257 -251
  20. package/src/components/description-list.css +89 -87
  21. package/src/components/divider.css +45 -45
  22. package/src/components/drawer.css +185 -174
  23. package/src/components/drop-zone.css +85 -84
  24. package/src/components/dropdown.css +148 -140
  25. package/src/components/empty-state.css +50 -50
  26. package/src/components/field.css +35 -0
  27. package/src/components/gallery.css +257 -0
  28. package/src/components/icon-btn.css +2 -1
  29. package/src/components/index.css +14 -3
  30. package/src/components/input.css +205 -146
  31. package/src/components/kbd.css +10 -10
  32. package/src/components/modal.css +92 -90
  33. package/src/components/nav.css +140 -138
  34. package/src/components/number-input.css +163 -0
  35. package/src/components/pagination.css +152 -139
  36. package/src/components/pin-input.css +136 -0
  37. package/src/components/popover.css +72 -72
  38. package/src/components/progress.css +128 -129
  39. package/src/components/result.css +53 -57
  40. package/src/components/scroll-area.css +73 -0
  41. package/src/components/search.css +10 -4
  42. package/src/components/segmented-control.css +93 -0
  43. package/src/components/skeleton.css +58 -58
  44. package/src/components/slider.css +102 -100
  45. package/src/components/sortable.css +44 -45
  46. package/src/components/spinner.css +27 -27
  47. package/src/components/star-rating.css +121 -0
  48. package/src/components/stat-card.css +38 -25
  49. package/src/components/table.css +288 -3
  50. package/src/components/tabs.css +121 -121
  51. package/src/components/tag.css +124 -124
  52. package/src/components/timeline.css +99 -99
  53. package/src/components/toast.css +37 -38
  54. package/src/components/toggle.css +88 -88
  55. package/src/components/toolbar.css +137 -121
  56. package/src/components/tooltip.css +150 -150
  57. package/src/components/truncated-text.css +75 -0
  58. package/src/tokens/tokens.json +413 -0
@@ -3,96 +3,98 @@
3
3
  Key-value pairs display with horizontal and vertical layouts.
4
4
  ========================================================================== */
5
5
 
6
- /* ---------------------------------------------------------------------------
7
- Container
8
- --------------------------------------------------------------------------- */
9
-
10
6
  .ds-description-list {
11
7
  display: flex;
12
8
  flex-direction: column;
13
9
  gap: 0;
14
- }
15
-
16
- /* ---------------------------------------------------------------------------
17
- Item
18
- --------------------------------------------------------------------------- */
19
-
20
- .ds-description-list__item {
21
- display: flex;
22
- flex-direction: column;
23
- gap: var(--ds-space-1);
24
- padding: var(--ds-space-3) 0;
25
- }
26
-
27
- .ds-description-list__item:first-child {
28
- padding-block-start: 0;
29
- }
30
-
31
- .ds-description-list__item:last-child {
32
- padding-block-end: 0;
33
- }
34
-
35
- /* ---------------------------------------------------------------------------
36
- Term (key)
37
- --------------------------------------------------------------------------- */
38
-
39
- .ds-description-list__term {
40
- font-family: var(--ds-font-sans);
41
- font-size: var(--ds-text-sm);
42
- font-weight: var(--ds-weight-medium);
43
- color: var(--ds-color-text-secondary);
44
- line-height: var(--ds-leading-normal);
45
- }
46
-
47
- /* ---------------------------------------------------------------------------
48
- Detail (value)
49
- --------------------------------------------------------------------------- */
50
-
51
- .ds-description-list__detail {
52
- font-family: var(--ds-font-sans);
53
- font-size: var(--ds-text-sm);
54
- color: var(--ds-color-text);
55
- line-height: var(--ds-leading-normal);
56
- }
57
-
58
- /* ---------------------------------------------------------------------------
59
- Variant: Horizontal (term and detail on same row)
60
- --------------------------------------------------------------------------- */
61
-
62
- .ds-description-list--horizontal .ds-description-list__item {
63
- flex-direction: row;
64
- align-items: flex-start;
65
- gap: var(--ds-space-4);
66
- }
67
-
68
- .ds-description-list--horizontal .ds-description-list__term {
69
- flex-shrink: 0;
70
- min-width: 10rem;
71
- }
72
-
73
- .ds-description-list--horizontal .ds-description-list__detail {
74
- flex: 1;
75
- min-width: 0;
76
- }
77
-
78
- /* ---------------------------------------------------------------------------
79
- Variant: Bordered (separator between items)
80
- --------------------------------------------------------------------------- */
81
-
82
- .ds-description-list--bordered .ds-description-list__item {
83
- border-block-end: 1px solid var(--ds-color-border);
84
- }
85
-
86
- .ds-description-list--bordered .ds-description-list__item:last-child {
87
- border-block-end: 0;
88
- }
89
-
90
- /* ---------------------------------------------------------------------------
91
- Variant: Striped (alternating background)
92
- --------------------------------------------------------------------------- */
93
10
 
94
- .ds-description-list--striped .ds-description-list__item:nth-child(odd) {
95
- background-color: var(--ds-color-bg-subtle);
96
- padding-inline: var(--ds-space-3);
97
- border-radius: var(--ds-radius-md);
11
+ /* ---------------------------------------------------------------------------
12
+ Item
13
+ --------------------------------------------------------------------------- */
14
+
15
+ &__item {
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: var(--ds-space-1);
19
+ padding: var(--ds-space-3) 0;
20
+
21
+ &:first-child {
22
+ padding-block-start: 0;
23
+ }
24
+
25
+ &:last-child {
26
+ padding-block-end: 0;
27
+ }
28
+ }
29
+
30
+ /* ---------------------------------------------------------------------------
31
+ Term (key)
32
+ --------------------------------------------------------------------------- */
33
+
34
+ &__term {
35
+ font-family: var(--ds-font-sans);
36
+ font-size: var(--ds-text-sm);
37
+ font-weight: var(--ds-weight-medium);
38
+ color: var(--ds-color-text-secondary);
39
+ line-height: var(--ds-leading-normal);
40
+ }
41
+
42
+ /* ---------------------------------------------------------------------------
43
+ Detail (value)
44
+ --------------------------------------------------------------------------- */
45
+
46
+ &__detail {
47
+ font-family: var(--ds-font-sans);
48
+ font-size: var(--ds-text-sm);
49
+ color: var(--ds-color-text);
50
+ line-height: var(--ds-leading-normal);
51
+ }
52
+
53
+ /* ---------------------------------------------------------------------------
54
+ Variant: Horizontal (term and detail on same row)
55
+ --------------------------------------------------------------------------- */
56
+
57
+ &--horizontal {
58
+ & .ds-description-list__item {
59
+ flex-direction: row;
60
+ align-items: flex-start;
61
+ gap: var(--ds-space-4);
62
+ }
63
+
64
+ & .ds-description-list__term {
65
+ flex-shrink: 0;
66
+ min-width: 10rem;
67
+ }
68
+
69
+ & .ds-description-list__detail {
70
+ flex: 1;
71
+ min-width: 0;
72
+ }
73
+ }
74
+
75
+ /* ---------------------------------------------------------------------------
76
+ Variant: Bordered (separator between items)
77
+ --------------------------------------------------------------------------- */
78
+
79
+ &--bordered {
80
+ & .ds-description-list__item {
81
+ border-block-end: 1px solid var(--ds-color-border);
82
+
83
+ &:last-child {
84
+ border-block-end: 0;
85
+ }
86
+ }
87
+ }
88
+
89
+ /* ---------------------------------------------------------------------------
90
+ Variant: Striped (alternating background)
91
+ --------------------------------------------------------------------------- */
92
+
93
+ &--striped {
94
+ & .ds-description-list__item:nth-child(odd) {
95
+ background-color: var(--ds-color-bg-subtle);
96
+ padding-inline: var(--ds-space-3);
97
+ border-radius: var(--ds-radius-md);
98
+ }
99
+ }
98
100
  }
@@ -8,59 +8,59 @@
8
8
  border-top: 1px solid var(--ds-color-border);
9
9
  margin-block: var(--ds-space-4);
10
10
  width: 100%;
11
- }
12
11
 
13
- /* --- Vertical --- */
12
+ /* --- Vertical --- */
14
13
 
15
- .ds-divider--vertical {
16
- border-top: none;
17
- border-inline-start: 1px solid var(--ds-color-border);
18
- display: inline-block;
19
- width: auto;
20
- height: auto;
21
- min-height: 1rem;
22
- align-self: stretch;
23
- margin-block: var(--ds-space-0);
24
- margin-inline: var(--ds-space-3);
25
- }
14
+ &--vertical {
15
+ border-top: none;
16
+ border-inline-start: 1px solid var(--ds-color-border);
17
+ display: inline-block;
18
+ width: auto;
19
+ height: auto;
20
+ min-height: 1rem;
21
+ align-self: stretch;
22
+ margin-block: var(--ds-space-0);
23
+ margin-inline: var(--ds-space-3);
24
+ }
26
25
 
27
- /* --- Subtle --- */
26
+ /* --- Subtle --- */
28
27
 
29
- .ds-divider--subtle {
30
- border-color: var(--ds-color-border-subtle);
31
- }
28
+ &--subtle {
29
+ border-color: var(--ds-color-border-subtle);
30
+ }
32
31
 
33
- /* --- Spacious --- */
32
+ /* --- Spacious --- */
34
33
 
35
- .ds-divider--spacious {
36
- margin-block: var(--ds-space-8);
37
- }
34
+ &--spacious {
35
+ margin-block: var(--ds-space-8);
38
36
 
39
- .ds-divider--spacious.ds-divider--vertical {
40
- margin-block: var(--ds-space-0);
41
- margin-inline: var(--ds-space-6);
42
- }
37
+ &.ds-divider--vertical {
38
+ margin-block: var(--ds-space-0);
39
+ margin-inline: var(--ds-space-6);
40
+ }
41
+ }
43
42
 
44
- /* --- Label (centered text with lines on either side) --- */
43
+ /* --- Label (centered text with lines on either side) --- */
45
44
 
46
- .ds-divider--label {
47
- border-top: none;
48
- display: flex;
49
- align-items: center;
50
- gap: var(--ds-space-3);
51
- font-family: var(--ds-font-sans);
52
- font-size: var(--ds-text-xs);
53
- font-weight: var(--ds-weight-medium);
54
- color: var(--ds-color-text-tertiary);
55
- text-transform: uppercase;
56
- letter-spacing: var(--ds-tracking-wide);
57
- white-space: nowrap;
58
- }
45
+ &--label {
46
+ border-top: none;
47
+ display: flex;
48
+ align-items: center;
49
+ gap: var(--ds-space-3);
50
+ font-family: var(--ds-font-sans);
51
+ font-size: var(--ds-text-xs);
52
+ font-weight: var(--ds-weight-medium);
53
+ color: var(--ds-color-text-tertiary);
54
+ text-transform: uppercase;
55
+ letter-spacing: var(--ds-tracking-wide);
56
+ white-space: nowrap;
59
57
 
60
- .ds-divider--label::before,
61
- .ds-divider--label::after {
62
- content: '';
63
- flex: 1;
64
- height: 0;
65
- border-top: 1px solid var(--ds-color-border);
58
+ &::before,
59
+ &::after {
60
+ content: '';
61
+ flex: 1;
62
+ height: 0;
63
+ border-top: 1px solid var(--ds-color-border);
64
+ }
65
+ }
66
66
  }
@@ -45,179 +45,190 @@
45
45
  transition:
46
46
  opacity var(--ds-duration-normal) var(--ds-ease-default),
47
47
  visibility var(--ds-duration-normal) var(--ds-ease-default);
48
- }
49
-
50
- .ds-drawer--open {
51
- opacity: 1;
52
- visibility: visible;
53
- }
54
-
55
- /* ---------------------------------------------------------------------------
56
- Sliding panel
57
- --------------------------------------------------------------------------- */
58
-
59
- .ds-drawer__content {
60
- position: fixed;
61
- display: flex;
62
- flex-direction: column;
63
- background-color: var(--ds-color-surface);
64
- box-shadow: var(--ds-shadow-lg);
65
- overflow-y: auto;
66
- transition: transform var(--ds-duration-normal) var(--ds-ease-out-expo);
67
- }
68
-
69
- /* ==========================================================================
70
- * Direction: Right (default)
71
- * ========================================================================== */
72
-
73
- .ds-drawer__content,
74
- .ds-drawer--right .ds-drawer__content {
75
- inset-block-start: 0;
76
- inset-inline-end: 0;
77
- inset-block-end: 0;
78
- width: 24rem;
79
- max-width: 90vw;
80
- border-inline-start: 1px solid var(--ds-color-border);
81
- transform: translateX(100%);
82
- }
83
-
84
- .ds-drawer--open .ds-drawer__content,
85
- .ds-drawer--right.ds-drawer--open .ds-drawer__content {
86
- transform: translateX(0);
87
- }
88
-
89
- /* ==========================================================================
90
- * Direction: Left
91
- * ========================================================================== */
92
-
93
- .ds-drawer--left .ds-drawer__content {
94
- inset-inline-start: 0;
95
- inset-block-start: 0;
96
- inset-block-end: 0;
97
- inset-inline-end: auto;
98
- width: 24rem;
99
- max-width: 90vw;
100
- border-inline-start: 0;
101
- border-inline-end: 1px solid var(--ds-color-border);
102
- transform: translateX(-100%);
103
- }
104
-
105
- .ds-drawer--left.ds-drawer--open .ds-drawer__content {
106
- transform: translateX(0);
107
- }
108
-
109
- /* ==========================================================================
110
- * Direction: Bottom
111
- * ========================================================================== */
112
-
113
- .ds-drawer--bottom .ds-drawer__content {
114
- inset-block-end: 0;
115
- inset-inline-start: 0;
116
- inset-inline-end: 0;
117
- inset-block-start: auto;
118
- width: auto;
119
- max-height: 90dvh;
120
- border-inline-start: 0;
121
- border-block-start: 1px solid var(--ds-color-border);
122
- border-radius: var(--ds-radius-xl) var(--ds-radius-xl) 0 0;
123
- transform: translateY(100%);
124
- }
125
-
126
- .ds-drawer--bottom.ds-drawer--open .ds-drawer__content {
127
- transform: translateY(0);
128
- }
129
-
130
- /* ==========================================================================
131
- * Sizes
132
- * ========================================================================== */
133
-
134
- .ds-drawer--sm .ds-drawer__content {
135
- width: 18rem;
136
- }
137
-
138
- .ds-drawer--lg .ds-drawer__content {
139
- width: 36rem;
140
- }
141
-
142
- /* Bottom drawers should not have a fixed width */
143
- .ds-drawer--bottom.ds-drawer--sm .ds-drawer__content,
144
- .ds-drawer--bottom.ds-drawer--lg .ds-drawer__content {
145
- width: auto;
146
- }
147
48
 
148
- /* ==========================================================================
149
- * Header
150
- * ========================================================================== */
151
-
152
- .ds-drawer__header {
153
- display: flex;
154
- justify-content: space-between;
155
- align-items: flex-start;
156
- padding: var(--ds-space-4) var(--ds-space-5);
157
- border-block-end: 1px solid var(--ds-color-border);
158
- }
159
-
160
- .ds-drawer__header h3 {
161
- font-family: var(--ds-font-display);
162
- font-weight: var(--ds-font-display-weight);
163
- font-size: var(--ds-text-lg);
164
- color: var(--ds-color-text);
165
- margin: 0;
166
- }
167
-
168
- /* ==========================================================================
169
- * Close button
170
- * ========================================================================== */
171
-
172
- .ds-drawer__close {
173
- display: flex;
174
- align-items: center;
175
- justify-content: center;
176
- width: 2rem;
177
- height: 2rem;
178
- padding: 0;
179
- border: 0;
180
- border-radius: var(--ds-radius-md);
181
- background-color: transparent;
182
- color: var(--ds-color-text-tertiary);
183
- font-size: var(--ds-text-lg);
184
- line-height: var(--ds-leading-none);
185
- cursor: pointer;
186
- flex-shrink: 0;
187
- transition:
188
- background-color var(--ds-duration-fast) var(--ds-ease-default),
189
- color var(--ds-duration-fast) var(--ds-ease-default);
190
- }
191
-
192
- .ds-drawer__close:hover {
193
- background-color: var(--ds-color-overlay);
194
- color: var(--ds-color-text);
195
- }
196
- .ds-drawer__close:focus-visible {
197
- outline: none;
198
- box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
199
- scroll-margin-block: var(--ds-space-16, 4rem);
200
- }
201
-
202
- /* ==========================================================================
203
- * Body
204
- * ========================================================================== */
205
-
206
- .ds-drawer__body {
207
- padding: var(--ds-space-5);
208
- flex: 1;
209
- overflow-y: auto;
210
- }
211
-
212
- /* ==========================================================================
213
- * Footer
214
- * ========================================================================== */
215
-
216
- .ds-drawer__footer {
217
- padding: var(--ds-space-4) var(--ds-space-5);
218
- border-block-start: 1px solid var(--ds-color-border);
219
- display: flex;
220
- align-items: center;
221
- justify-content: flex-end;
222
- gap: var(--ds-space-2);
49
+ &--open {
50
+ opacity: 1;
51
+ visibility: visible;
52
+
53
+ & .ds-drawer__content {
54
+ transform: translateX(0);
55
+ }
56
+ }
57
+
58
+ /* ---------------------------------------------------------------------------
59
+ Sliding panel
60
+ --------------------------------------------------------------------------- */
61
+
62
+ &__content {
63
+ position: fixed;
64
+ display: flex;
65
+ flex-direction: column;
66
+ background-color: var(--ds-color-surface);
67
+ box-shadow: var(--ds-shadow-lg);
68
+ overflow-y: auto;
69
+ transition: transform var(--ds-duration-normal) var(--ds-ease-out-expo);
70
+ /* Direction: Right (default) */
71
+ inset-block-start: 0;
72
+ inset-inline-end: 0;
73
+ inset-block-end: 0;
74
+ width: 24rem;
75
+ max-width: 90vw;
76
+ border-inline-start: 1px solid var(--ds-color-border);
77
+ transform: translateX(100%);
78
+ }
79
+
80
+ /* ==========================================================================
81
+ * Direction: Right (explicit)
82
+ * ========================================================================== */
83
+
84
+ &--right &__content {
85
+ inset-block-start: 0;
86
+ inset-inline-end: 0;
87
+ inset-block-end: 0;
88
+ width: 24rem;
89
+ max-width: 90vw;
90
+ border-inline-start: 1px solid var(--ds-color-border);
91
+ transform: translateX(100%);
92
+ }
93
+
94
+ &--right&--open &__content {
95
+ transform: translateX(0);
96
+ }
97
+
98
+ /* ==========================================================================
99
+ * Direction: Left
100
+ * ========================================================================== */
101
+
102
+ &--left &__content {
103
+ inset-inline-start: 0;
104
+ inset-block-start: 0;
105
+ inset-block-end: 0;
106
+ inset-inline-end: auto;
107
+ width: 24rem;
108
+ max-width: 90vw;
109
+ border-inline-start: 0;
110
+ border-inline-end: 1px solid var(--ds-color-border);
111
+ transform: translateX(-100%);
112
+ }
113
+
114
+ &--left&--open &__content {
115
+ transform: translateX(0);
116
+ }
117
+
118
+ /* ==========================================================================
119
+ * Direction: Bottom
120
+ * ========================================================================== */
121
+
122
+ &--bottom &__content {
123
+ inset-block-end: 0;
124
+ inset-inline-start: 0;
125
+ inset-inline-end: 0;
126
+ inset-block-start: auto;
127
+ width: auto;
128
+ max-height: 90dvh;
129
+ border-inline-start: 0;
130
+ border-block-start: 1px solid var(--ds-color-border);
131
+ border-radius: var(--ds-radius-xl) var(--ds-radius-xl) 0 0;
132
+ transform: translateY(100%);
133
+ }
134
+
135
+ &--bottom&--open &__content {
136
+ transform: translateY(0);
137
+ }
138
+
139
+ /* ==========================================================================
140
+ * Sizes
141
+ * ========================================================================== */
142
+
143
+ &--sm &__content {
144
+ width: 18rem;
145
+ }
146
+
147
+ &--lg &__content {
148
+ width: 36rem;
149
+ }
150
+
151
+ /* Bottom drawers should not have a fixed width */
152
+ &--bottom&--sm &__content,
153
+ &--bottom&--lg &__content {
154
+ width: auto;
155
+ }
156
+
157
+ /* ==========================================================================
158
+ * Header
159
+ * ========================================================================== */
160
+
161
+ &__header {
162
+ display: flex;
163
+ justify-content: space-between;
164
+ align-items: flex-start;
165
+ padding: var(--ds-space-4) var(--ds-space-5);
166
+ border-block-end: 1px solid var(--ds-color-border);
167
+
168
+ & h3 {
169
+ font-family: var(--ds-font-display);
170
+ font-weight: var(--ds-font-display-weight);
171
+ font-size: var(--ds-text-lg);
172
+ color: var(--ds-color-text);
173
+ margin: 0;
174
+ }
175
+ }
176
+
177
+ /* ==========================================================================
178
+ * Close button
179
+ * ========================================================================== */
180
+
181
+ &__close {
182
+ display: flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ width: 2rem;
186
+ height: 2rem;
187
+ padding: 0;
188
+ border: 0;
189
+ border-radius: var(--ds-radius-md);
190
+ background-color: transparent;
191
+ color: var(--ds-color-text-tertiary);
192
+ font-size: var(--ds-text-lg);
193
+ line-height: var(--ds-leading-none);
194
+ cursor: pointer;
195
+ flex-shrink: 0;
196
+ transition:
197
+ background-color var(--ds-duration-fast) var(--ds-ease-default),
198
+ color var(--ds-duration-fast) var(--ds-ease-default);
199
+
200
+ &:hover {
201
+ background-color: var(--ds-color-overlay);
202
+ color: var(--ds-color-text);
203
+ }
204
+
205
+ &:focus-visible {
206
+ outline: none;
207
+ box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
208
+ scroll-margin-block: var(--ds-space-16, 4rem);
209
+ }
210
+ }
211
+
212
+ /* ==========================================================================
213
+ * Body
214
+ * ========================================================================== */
215
+
216
+ &__body {
217
+ padding: var(--ds-space-5);
218
+ flex: 1;
219
+ overflow-y: auto;
220
+ }
221
+
222
+ /* ==========================================================================
223
+ * Footer
224
+ * ========================================================================== */
225
+
226
+ &__footer {
227
+ padding: var(--ds-space-4) var(--ds-space-5);
228
+ border-block-start: 1px solid var(--ds-color-border);
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: flex-end;
232
+ gap: var(--ds-space-2);
233
+ }
223
234
  }