@revikornmann/muka-ui 0.28.1 → 0.30.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 (70) hide show
  1. package/dist/cjs/components/Alert/Alert.css +12 -3
  2. package/dist/cjs/components/Alert/Alert.js +1 -1
  3. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  4. package/dist/cjs/components/Badge/Badge.css +27 -0
  5. package/dist/cjs/components/Badge/Badge.js +14 -5
  6. package/dist/cjs/components/Badge/Badge.js.map +1 -1
  7. package/dist/cjs/components/ChatComposer/ChatComposer.css +121 -1
  8. package/dist/cjs/components/ChatComposer/ChatComposer.js +148 -21
  9. package/dist/cjs/components/ChatComposer/ChatComposer.js.map +1 -1
  10. package/dist/cjs/components/ChatComposer/index.js.map +1 -1
  11. package/dist/cjs/components/PhotoUploader/PhotoUploader.css +6 -18
  12. package/dist/cjs/components/PhotoUploader/PhotoUploader.js +15 -16
  13. package/dist/cjs/components/PhotoUploader/PhotoUploader.js.map +1 -1
  14. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.css +26 -12
  15. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +49 -40
  16. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  17. package/dist/cjs/components/ProgressTracker/ProgressTracker.css +23 -5
  18. package/dist/cjs/components/ProgressTracker/ProgressTracker.js +8 -6
  19. package/dist/cjs/components/ProgressTracker/ProgressTracker.js.map +1 -1
  20. package/dist/cjs/components/index.js.map +1 -1
  21. package/dist/esm/components/Alert/Alert.css +12 -3
  22. package/dist/esm/components/Alert/Alert.js +1 -1
  23. package/dist/esm/components/Alert/Alert.js.map +1 -1
  24. package/dist/esm/components/Badge/Badge.css +27 -0
  25. package/dist/esm/components/Badge/Badge.js +14 -5
  26. package/dist/esm/components/Badge/Badge.js.map +1 -1
  27. package/dist/esm/components/ChatComposer/ChatComposer.css +121 -1
  28. package/dist/esm/components/ChatComposer/ChatComposer.js +150 -23
  29. package/dist/esm/components/ChatComposer/ChatComposer.js.map +1 -1
  30. package/dist/esm/components/ChatComposer/index.js +1 -1
  31. package/dist/esm/components/ChatComposer/index.js.map +1 -1
  32. package/dist/esm/components/PhotoUploader/PhotoUploader.css +6 -18
  33. package/dist/esm/components/PhotoUploader/PhotoUploader.js +15 -16
  34. package/dist/esm/components/PhotoUploader/PhotoUploader.js.map +1 -1
  35. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.css +26 -12
  36. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +49 -40
  37. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  38. package/dist/esm/components/ProgressTracker/ProgressTracker.css +23 -5
  39. package/dist/esm/components/ProgressTracker/ProgressTracker.js +8 -6
  40. package/dist/esm/components/ProgressTracker/ProgressTracker.js.map +1 -1
  41. package/dist/esm/components/index.js +1 -1
  42. package/dist/esm/components/index.js.map +1 -1
  43. package/dist/styles/components/Alert.css +12 -3
  44. package/dist/styles/components/Badge.css +27 -0
  45. package/dist/styles/components/ChatComposer.css +121 -1
  46. package/dist/styles/components/PhotoUploader.css +6 -18
  47. package/dist/styles/components/ProgressAccordeon.css +26 -12
  48. package/dist/styles/components/ProgressTracker.css +23 -5
  49. package/dist/styles/index.css +2743 -2567
  50. package/dist/styles/muka-dark.css +2743 -2567
  51. package/dist/styles/muka-light.css +2743 -2567
  52. package/dist/styles/wireframe-dark.css +2743 -2567
  53. package/dist/styles/wireframe-light.css +2743 -2567
  54. package/dist/types/components/Alert/Alert.d.ts +2 -2
  55. package/dist/types/components/Alert/Alert.d.ts.map +1 -1
  56. package/dist/types/components/Badge/Badge.d.ts +7 -5
  57. package/dist/types/components/Badge/Badge.d.ts.map +1 -1
  58. package/dist/types/components/ChatComposer/ChatComposer.d.ts +83 -12
  59. package/dist/types/components/ChatComposer/ChatComposer.d.ts.map +1 -1
  60. package/dist/types/components/ChatComposer/index.d.ts +1 -1
  61. package/dist/types/components/ChatComposer/index.d.ts.map +1 -1
  62. package/dist/types/components/PhotoUploader/PhotoUploader.d.ts +8 -8
  63. package/dist/types/components/PhotoUploader/PhotoUploader.d.ts.map +1 -1
  64. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts +36 -29
  65. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -1
  66. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts +10 -4
  67. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts.map +1 -1
  68. package/dist/types/components/index.d.ts +1 -1
  69. package/dist/types/components/index.d.ts.map +1 -1
  70. package/package.json +1 -1
@@ -60,6 +60,33 @@
60
60
  padding-left: var(--badge-padding-leading-lg);
61
61
  }
62
62
 
63
+ /* Icon-only — square, sized to the badge height (Figma: 24 / 32 / 40).
64
+ * Padding resets at size+icon-only specificity so `--has-icon` leading padding
65
+ * cannot win and shift the icon off-center. */
66
+ .muka-badge--icon-only {
67
+ justify-content: center;
68
+ align-items: center;
69
+ gap: 0;
70
+ }
71
+
72
+ .muka-badge--sm.muka-badge--icon-only,
73
+ .muka-badge--md.muka-badge--icon-only,
74
+ .muka-badge--lg.muka-badge--icon-only {
75
+ padding: 0;
76
+ }
77
+
78
+ .muka-badge--sm.muka-badge--icon-only {
79
+ width: var(--badge-size-height-sm);
80
+ }
81
+
82
+ .muka-badge--md.muka-badge--icon-only {
83
+ width: var(--badge-size-height-md);
84
+ }
85
+
86
+ .muka-badge--lg.muka-badge--icon-only {
87
+ width: var(--badge-size-height-lg);
88
+ }
89
+
63
90
  /* Leading icon slot — Figma icon sizes: sm 16, md 20, lg 24 (matches Chip) */
64
91
  .muka-badge__icon {
65
92
  display: inline-flex;
@@ -17,7 +17,7 @@
17
17
  pointer-events: none;
18
18
  }
19
19
 
20
- /* ─── Input row ────────────────────────────────────────── */
20
+ /* ─── Input row (default layout) ───────────────────────── */
21
21
 
22
22
  .muka-chat-composer__row {
23
23
  display: flex;
@@ -43,6 +43,19 @@
43
43
  transition: border-color 0.12s ease;
44
44
  }
45
45
 
46
+ .muka-chat-composer--options .muka-chat-composer__field {
47
+ flex: 1 1 auto;
48
+ width: auto;
49
+ }
50
+
51
+ /* Options input row: text field + mic / send beside it */
52
+ .muka-chat-composer__options-input {
53
+ display: flex;
54
+ align-items: flex-end;
55
+ gap: var(--spacing-3);
56
+ width: 100%;
57
+ }
58
+
46
59
  .muka-chat-composer__field:focus-within {
47
60
  border-color: var(--input-field-color-focus-border, var(--color-action-default));
48
61
  }
@@ -116,6 +129,113 @@
116
129
  transform: translateY(-50%);
117
130
  }
118
131
 
132
+ /* ─── Options mode (Figma State=Options / State7 / State8) ─ */
133
+
134
+ .muka-chat-composer__prompt {
135
+ display: flex;
136
+ align-items: flex-start;
137
+ gap: var(--spacing-3);
138
+ width: 100%;
139
+ }
140
+
141
+ .muka-chat-composer__prompt-step {
142
+ flex-shrink: 0;
143
+ }
144
+
145
+ .muka-chat-composer__prompt-text {
146
+ display: flex;
147
+ flex-direction: column;
148
+ gap: var(--spacing-1);
149
+ min-width: 0;
150
+ flex: 1 1 auto;
151
+ }
152
+
153
+ .muka-chat-composer__prompt-heading {
154
+ color: var(--color-text-default-default);
155
+ font-family: var(--text-heading-sm-fontFamily);
156
+ font-weight: var(--text-heading-sm-fontWeight);
157
+ font-size: var(--text-heading-sm-fontSize);
158
+ line-height: var(--text-heading-sm-lineHeight);
159
+ }
160
+
161
+ .muka-chat-composer__prompt-description {
162
+ color: var(--color-text-subtle-default);
163
+ font-family: var(--text-body-base-regular-fontFamily);
164
+ font-weight: var(--text-body-base-regular-fontWeight);
165
+ font-size: var(--text-body-base-regular-fontSize);
166
+ line-height: var(--text-body-base-regular-lineHeight);
167
+ }
168
+
169
+ .muka-chat-composer__choices {
170
+ width: 100%;
171
+ }
172
+
173
+ .muka-chat-composer__choices-card {
174
+ width: 100%;
175
+ overflow: hidden;
176
+ }
177
+
178
+ /* Choice rows: the ListItem is the interactive control; the Radio/Checkbox is
179
+ decorative for AT (aria-hidden) and sits in the leading slot. */
180
+ .muka-chat-composer__choice-control {
181
+ display: inline-flex;
182
+ align-items: center;
183
+ pointer-events: none;
184
+ }
185
+
186
+ .muka-chat-composer__choice-control .muka-radio,
187
+ .muka-chat-composer__choice-control .muka-checkbox {
188
+ pointer-events: none;
189
+ }
190
+
191
+ /*
192
+ * Multi-step footer (Figma Canned responses). Previous (muted) | centered
193
+ * progress | Next/Send (muted when not ready, primary when ready — never
194
+ * disabled for unreadiness).
195
+ */
196
+ .muka-chat-composer__footer {
197
+ position: relative;
198
+ display: flex;
199
+ align-items: center;
200
+ justify-content: space-between;
201
+ gap: var(--spacing-2);
202
+ width: 100%;
203
+ min-height: var(--input-field-height-lg, 48px);
204
+ }
205
+
206
+ .muka-chat-composer__footer-spacer {
207
+ display: inline-block;
208
+ /* Approximate width of a Previous button so Next stays right-aligned when
209
+ there is no back control (step 1 of N). */
210
+ min-width: 7rem;
211
+ flex-shrink: 0;
212
+ }
213
+
214
+ .muka-chat-composer__footer-back {
215
+ flex-shrink: 0;
216
+ z-index: 1;
217
+ }
218
+
219
+ .muka-chat-composer__footer-action {
220
+ flex-shrink: 0;
221
+ margin-left: auto;
222
+ z-index: 1;
223
+ }
224
+
225
+ .muka-chat-composer__progress {
226
+ position: absolute;
227
+ left: 50%;
228
+ top: 50%;
229
+ transform: translate(-50%, -50%);
230
+ color: var(--color-text-subtle-default);
231
+ font-family: var(--text-label-lg-regular-fontFamily, var(--text-body-base-regular-fontFamily));
232
+ font-weight: var(--text-label-lg-regular-fontWeight, var(--text-body-base-regular-fontWeight));
233
+ font-size: var(--text-label-lg-regular-fontSize, var(--text-body-base-regular-fontSize));
234
+ line-height: var(--text-label-lg-regular-lineHeight, var(--text-body-base-regular-lineHeight));
235
+ white-space: nowrap;
236
+ pointer-events: none;
237
+ }
238
+
119
239
  /* ─── Print ────────────────────────────────────────────── */
120
240
 
121
241
  @media print {
@@ -42,7 +42,7 @@
42
42
  padding: 0;
43
43
  }
44
44
 
45
- /* ─── Drop zone card ──────────────────────────────────── */
45
+ /* ─── Drop zone card (button + "or drop here") ────────── */
46
46
  .muka-photo-uploader__dropzone {
47
47
  display: flex;
48
48
  flex-direction: column;
@@ -66,24 +66,12 @@
66
66
  background-color: var(--color-surface-level1);
67
67
  }
68
68
 
69
- .muka-photo-uploader__dropzone:focus-visible {
70
- outline: 2px solid var(--color-border-focus);
71
- outline-offset: 2px;
72
- }
73
-
74
- .muka-photo-uploader__dropzone-icon {
75
- display: flex;
76
- align-items: center;
77
- justify-content: center;
78
- color: var(--color-icon-subtle-default);
79
- }
80
-
81
69
  .muka-photo-uploader__dropzone-text {
82
- font-family: var(--text-body-base-regular-fontFamily);
83
- font-size: var(--text-body-base-regular-fontSize);
84
- font-weight: var(--text-body-base-regular-fontWeight);
85
- line-height: var(--text-body-base-regular-lineHeight);
86
- color: var(--color-text-subtle-default);
70
+ font-family: var(--text-subheading-sm-fontFamily);
71
+ font-size: var(--text-subheading-sm-fontSize);
72
+ font-weight: var(--text-subheading-sm-fontWeight);
73
+ line-height: var(--text-subheading-sm-lineHeight);
74
+ color: var(--color-text-default-default);
87
75
  }
88
76
 
89
77
  /* ─── Disabled ────────────────────────────────────────── */
@@ -13,6 +13,7 @@
13
13
 
14
14
  /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
15
15
  .muka-progress-accordeon--current,
16
+ .muka-progress-accordeon--current.muka-progress-accordeon--expanded,
16
17
  .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
17
18
  .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
18
19
  gap: var(--spacing-6);
@@ -20,7 +21,8 @@
20
21
 
21
22
  .muka-progress-accordeon--upcoming,
22
23
  .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
23
- .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
24
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed,
25
+ .muka-progress-accordeon--current.muka-progress-accordeon--collapsed {
24
26
  gap: var(--spacing-8);
25
27
  }
26
28
 
@@ -165,32 +167,44 @@
165
167
  width: 100%;
166
168
  }
167
169
 
168
- /* ─── Collapse/expand animation (past & upcoming steps) ──────
169
- The grid-template-rows 1fr → 0fr technique animates the content to/from its
170
- intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
171
- --motion-duration-view resolves to 0ms, so the toggle stays instant. */
172
- .muka-progress-accordeon__slot-wrapper {
170
+ /* ─── Collapse/expand animation (any expandable step) ──────
171
+ Animates grid-template-rows 1fr ↔ 0fr so the panel (slot + actions) grows and
172
+ shrinks to its intrinsic height. Opacity fades with the same duration.
173
+ Under prefers-reduced-motion, --motion-duration-view is 0ms. */
174
+ .muka-progress-accordeon__panel-wrapper {
173
175
  display: grid;
174
176
  grid-template-rows: 1fr;
175
- transition: grid-template-rows var(--motion-duration-view) var(--motion-easing-enter);
177
+ opacity: 1;
178
+ transition:
179
+ grid-template-rows var(--motion-duration-view) var(--motion-easing-enter),
180
+ opacity var(--motion-duration-view) var(--motion-easing-enter);
176
181
  }
177
182
 
178
- .muka-progress-accordeon__slot-wrapper--collapsed {
183
+ .muka-progress-accordeon__panel-wrapper--collapsed {
179
184
  grid-template-rows: 0fr;
185
+ opacity: 0;
186
+ transition:
187
+ grid-template-rows var(--motion-duration-view) var(--motion-easing-exit),
188
+ opacity calc(var(--motion-duration-view) * 0.6) var(--motion-easing-exit);
180
189
  }
181
190
 
182
191
  /* The direct grid child clips and must have NO padding/border of its own —
183
192
  min-height:0 lets it shrink, and with no padding the 0fr track reaches a true
184
193
  0 height (padding on the item would leave a residual gap when collapsed). */
185
- .muka-progress-accordeon__slot-clip {
194
+ .muka-progress-accordeon__panel-clip {
186
195
  overflow: hidden;
187
196
  min-height: 0;
188
197
  }
189
198
 
190
- /* The header↔content spacing lives on the inner slot (inside the clip region)
191
- so it collapses together with the content. */
192
- .muka-progress-accordeon__slot-wrapper .muka-progress-accordeon__slot {
199
+ /* Header↔content spacing + slot/actions gap live inside the clip so they
200
+ collapse together with the panel. */
201
+ .muka-progress-accordeon__panel {
202
+ display: flex;
203
+ flex-direction: column;
204
+ align-items: stretch;
205
+ gap: var(--spacing-6);
193
206
  padding-top: var(--spacing-4);
207
+ width: 100%;
194
208
  }
195
209
 
196
210
  /* ─── Action buttons (current state) ─────────────────────── */
@@ -58,17 +58,26 @@
58
58
  color: var(--color-text-default-inverse);
59
59
  }
60
60
 
61
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
61
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--interactive {
62
62
  cursor: pointer;
63
63
  }
64
64
 
65
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
65
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--interactive:focus-visible {
66
+ outline: 2px solid var(--color-border-focus);
67
+ outline-offset: 2px;
68
+ }
69
+
70
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past.muka-progress-tracker__indicator--interactive:hover {
66
71
  background-color: var(--alias-color-accent-pressed);
67
72
  }
68
73
 
69
- .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
70
- outline: 2px solid var(--color-border-focus);
71
- outline-offset: 2px;
74
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--current.muka-progress-tracker__indicator--interactive:hover {
75
+ background-color: var(--alias-color-accent-hover);
76
+ }
77
+
78
+ /* Upcoming (clickableSteps="all"): a 4px halo, the vertical hover's 40px circle */
79
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--upcoming.muka-progress-tracker__indicator--interactive:hover {
80
+ box-shadow: 0 0 0 4px var(--color-surface-level1);
72
81
  }
73
82
 
74
83
  /* Current: accent default circle with white number */
@@ -141,6 +150,15 @@
141
150
  font-weight: var(--text-label-sm-bold-fontWeight);
142
151
  }
143
152
 
153
+ /* Selected step: a pill behind the label (horizontal), matching the vertical
154
+ selected pill's surface. The label stays centred under its indicator. */
155
+ .muka-progress-tracker--horizontal .muka-progress-tracker__step[data-selected='true'] .muka-progress-tracker__label {
156
+ padding: 0 var(--spacing-2);
157
+ border-radius: var(--border-radius-full);
158
+ background-color: var(--color-surface-level1);
159
+ max-width: calc(120px + 2 * var(--spacing-2));
160
+ }
161
+
144
162
  /* ─── Connectors layer (behind indicators) — horizontal ─── */
145
163
  .muka-progress-tracker--horizontal .muka-progress-tracker__connectors {
146
164
  display: flex;