@revikornmann/muka-ui 0.9.1 → 0.10.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 (26) hide show
  1. package/dist/cjs/components/ChatComposer/ChatComposer.css +52 -61
  2. package/dist/cjs/components/ChatComposer/ChatComposer.js +29 -6
  3. package/dist/cjs/components/ChatComposer/ChatComposer.js.map +1 -1
  4. package/dist/cjs/components/ChatComposer/index.js +6 -1
  5. package/dist/cjs/components/ChatComposer/index.js.map +1 -1
  6. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +20 -6
  7. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  8. package/dist/esm/components/ChatComposer/ChatComposer.css +52 -61
  9. package/dist/esm/components/ChatComposer/ChatComposer.js +29 -6
  10. package/dist/esm/components/ChatComposer/ChatComposer.js.map +1 -1
  11. package/dist/esm/components/ChatComposer/index.js +1 -0
  12. package/dist/esm/components/ChatComposer/index.js.map +1 -1
  13. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +17 -6
  14. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  15. package/dist/styles/components/ChatComposer.css +52 -61
  16. package/dist/styles/index.css +438 -447
  17. package/dist/styles/muka-dark.css +438 -447
  18. package/dist/styles/muka-light.css +438 -447
  19. package/dist/styles/wireframe-dark.css +438 -447
  20. package/dist/styles/wireframe-light.css +438 -447
  21. package/dist/types/components/ChatComposer/ChatComposer.d.ts +50 -18
  22. package/dist/types/components/ChatComposer/ChatComposer.d.ts.map +1 -1
  23. package/dist/types/components/ChatComposer/index.d.ts +1 -0
  24. package/dist/types/components/ChatComposer/index.d.ts.map +1 -1
  25. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -1
  26. package/package.json +1 -1
@@ -8147,268 +8147,6 @@ li.muka-listitem {
8147
8147
  }
8148
8148
 
8149
8149
 
8150
- /* FileUpload */
8151
- /* FileUpload Component Styles */
8152
-
8153
- .muka-fileupload-wrapper {
8154
- display: flex;
8155
- flex-direction: column;
8156
- gap: var(--spacing-3);
8157
- width: 100%;
8158
- }
8159
-
8160
- /* Dropzone */
8161
- .muka-fileupload {
8162
- display: flex;
8163
- flex-direction: column;
8164
- align-items: center;
8165
- justify-content: center;
8166
- gap: var(--fileupload-dropzone-gap);
8167
- padding: var(--fileupload-dropzone-padding-md);
8168
- background-color: var(--fileupload-dropzone-color-default-background);
8169
- border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
8170
- border-radius: var(--fileupload-dropzone-radius);
8171
- cursor: pointer;
8172
- transition: background-color 0.2s ease, border-color 0.2s ease;
8173
- text-align: center;
8174
- min-height: 120px;
8175
- }
8176
-
8177
- .muka-fileupload:focus-visible {
8178
- outline: 2px solid var(--color-border-focus);
8179
- outline-offset: 2px;
8180
- }
8181
-
8182
- /* Size variants */
8183
- .muka-fileupload--sm {
8184
- padding: var(--fileupload-dropzone-padding-sm);
8185
- min-height: 80px;
8186
- }
8187
-
8188
- .muka-fileupload--lg {
8189
- padding: var(--fileupload-dropzone-padding-lg);
8190
- min-height: 160px;
8191
- }
8192
-
8193
- /* Button variant */
8194
- .muka-fileupload--button {
8195
- flex-direction: row;
8196
- min-height: auto;
8197
- padding: var(--spacing-2) var(--spacing-3);
8198
- border-style: solid;
8199
- border-width: var(--border-width-regular);
8200
- border-radius: var(--border-radius-md);
8201
- }
8202
-
8203
- /* Hover state */
8204
- .muka-fileupload:hover:not(.muka-fileupload--disabled) {
8205
- background-color: var(--fileupload-dropzone-color-hover-background);
8206
- border-color: var(--fileupload-dropzone-color-hover-border);
8207
- }
8208
-
8209
- /* Active/drag state */
8210
- .muka-fileupload--active:not(.muka-fileupload--disabled) {
8211
- background-color: var(--fileupload-dropzone-color-active-background);
8212
- border-color: var(--fileupload-dropzone-color-active-border);
8213
- }
8214
-
8215
- /* Disabled state */
8216
- .muka-fileupload--disabled {
8217
- background-color: var(--fileupload-dropzone-color-disabled-background);
8218
- border-color: var(--fileupload-dropzone-color-disabled-border);
8219
- cursor: not-allowed;
8220
- opacity: 0.6;
8221
- }
8222
-
8223
- /* Hidden file input */
8224
- .muka-fileupload__input {
8225
- position: absolute;
8226
- width: 1px;
8227
- height: 1px;
8228
- padding: 0;
8229
- margin: -1px;
8230
- overflow: hidden;
8231
- clip: rect(0, 0, 0, 0);
8232
- white-space: nowrap;
8233
- border: 0;
8234
- }
8235
-
8236
- /* Content container */
8237
- .muka-fileupload__content {
8238
- display: flex;
8239
- flex-direction: column;
8240
- align-items: center;
8241
- gap: var(--spacing-2);
8242
- }
8243
-
8244
- /* Upload icon */
8245
- .muka-fileupload__icon {
8246
- display: flex;
8247
- align-items: center;
8248
- justify-content: center;
8249
- width: var(--size-3xl);
8250
- height: var(--size-3xl);
8251
- color: var(--fileupload-dropzone-color-default-foreground);
8252
- }
8253
-
8254
- .muka-fileupload__icon svg {
8255
- width: 100%;
8256
- height: 100%;
8257
- }
8258
-
8259
- .muka-fileupload--sm .muka-fileupload__icon {
8260
- width: var(--size-2xl);
8261
- height: var(--size-2xl);
8262
- }
8263
-
8264
- .muka-fileupload--lg .muka-fileupload__icon {
8265
- width: var(--size-4xl);
8266
- height: var(--size-4xl);
8267
- }
8268
-
8269
- /* Text */
8270
- .muka-fileupload__text {
8271
- font-family: var(--text-body-md-regular-fontFamily);
8272
- font-size: var(--text-body-md-regular-fontSize);
8273
- font-weight: var(--text-body-md-regular-fontWeight);
8274
- line-height: var(--text-body-md-regular-lineHeight);
8275
- color: var(--color-text-default-default);
8276
- }
8277
-
8278
- .muka-fileupload--sm .muka-fileupload__text {
8279
- font-size: var(--text-body-sm-regular-fontSize);
8280
- }
8281
-
8282
- /* Hint text */
8283
- .muka-fileupload__hint {
8284
- font-family: var(--text-label-sm-regular-fontFamily);
8285
- font-size: var(--text-label-sm-regular-fontSize);
8286
- font-weight: var(--text-label-sm-regular-fontWeight);
8287
- line-height: var(--text-label-sm-regular-lineHeight);
8288
- color: var(--fileupload-dropzone-color-default-foreground);
8289
- }
8290
-
8291
- /* File list */
8292
- .muka-fileupload__list {
8293
- display: flex;
8294
- flex-direction: column;
8295
- gap: var(--spacing-2);
8296
- list-style: none;
8297
- margin: 0;
8298
- padding: 0;
8299
- }
8300
-
8301
- .muka-fileupload__list li {
8302
- margin: 0;
8303
- padding: 0;
8304
- }
8305
-
8306
- /* File item */
8307
- .muka-fileupload-item {
8308
- display: flex;
8309
- align-items: center;
8310
- gap: var(--fileupload-item-gap);
8311
- padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
8312
- background-color: var(--fileupload-item-color-default-background);
8313
- border-radius: var(--fileupload-item-radius);
8314
- }
8315
-
8316
- .muka-fileupload-item--error {
8317
- background-color: var(--fileupload-item-color-error-background);
8318
- }
8319
-
8320
- .muka-fileupload-item--success {
8321
- background-color: var(--fileupload-item-color-default-background);
8322
- }
8323
-
8324
- /* Preview/Icon container */
8325
- .muka-fileupload-item__preview {
8326
- display: flex;
8327
- align-items: center;
8328
- justify-content: center;
8329
- flex-shrink: 0;
8330
- width: var(--fileupload-preview-size);
8331
- height: var(--fileupload-preview-size);
8332
- border-radius: var(--fileupload-preview-radius);
8333
- overflow: hidden;
8334
- background-color: var(--color-surface-level1);
8335
- }
8336
-
8337
- .muka-fileupload-item__thumbnail {
8338
- width: 100%;
8339
- height: 100%;
8340
- object-fit: cover;
8341
- }
8342
-
8343
- .muka-fileupload-item__icon {
8344
- color: var(--color-text-subtle-default);
8345
- }
8346
-
8347
- /* File info */
8348
- .muka-fileupload-item__info {
8349
- flex: 1;
8350
- min-width: 0;
8351
- display: flex;
8352
- flex-direction: column;
8353
- gap: var(--spacing-1);
8354
- }
8355
-
8356
- .muka-fileupload-item__name {
8357
- font-family: var(--text-body-sm-medium-fontFamily);
8358
- font-size: var(--text-body-sm-medium-fontSize);
8359
- font-weight: var(--text-body-sm-medium-fontWeight);
8360
- line-height: var(--text-body-sm-medium-lineHeight);
8361
- color: var(--fileupload-item-color-default-foreground);
8362
- white-space: nowrap;
8363
- overflow: hidden;
8364
- text-overflow: ellipsis;
8365
- }
8366
-
8367
- .muka-fileupload-item--error .muka-fileupload-item__name {
8368
- color: var(--fileupload-item-color-error-foreground);
8369
- }
8370
-
8371
- .muka-fileupload-item__meta {
8372
- font-family: var(--text-label-sm-regular-fontFamily);
8373
- font-size: var(--text-label-sm-regular-fontSize);
8374
- font-weight: var(--text-label-sm-regular-fontWeight);
8375
- line-height: var(--text-label-sm-regular-lineHeight);
8376
- color: var(--color-text-subtle-default);
8377
- }
8378
-
8379
- .muka-fileupload-item__error {
8380
- color: var(--fileupload-item-color-error-foreground);
8381
- }
8382
-
8383
- .muka-fileupload-item__progress {
8384
- margin-top: var(--spacing-1);
8385
- }
8386
-
8387
- /* Actions */
8388
- .muka-fileupload-item__actions {
8389
- display: flex;
8390
- align-items: center;
8391
- gap: var(--spacing-2);
8392
- flex-shrink: 0;
8393
- }
8394
-
8395
- .muka-fileupload-item__status-icon--success {
8396
- color: var(--color-state-success-foreground);
8397
- }
8398
-
8399
- .muka-fileupload-item__status-icon--error {
8400
- color: var(--color-state-error-foreground);
8401
- }
8402
-
8403
- .muka-fileupload-item__remove {
8404
- opacity: 0.7;
8405
- }
8406
-
8407
- .muka-fileupload-item__remove:hover {
8408
- opacity: 1;
8409
- }
8410
-
8411
-
8412
8150
  /* FAB */
8413
8151
  /* FAB (Floating Action Button) Component Styles */
8414
8152
 
@@ -10802,15 +10540,9 @@ li.muka-listitem {
10802
10540
  .muka-chat-composer {
10803
10541
  display: flex;
10804
10542
  flex-direction: column;
10805
- gap: var(--spacing-2);
10543
+ gap: var(--spacing-3);
10806
10544
  width: 100%;
10807
10545
  max-width: 768px;
10808
- padding: var(--spacing-3);
10809
- background-color: var(--color-surface-level3);
10810
- border-radius: var(--radius-xl);
10811
- box-shadow:
10812
- 0 0 0.5px var(--color-black-alpha-5, rgba(0, 0, 0, 0.09)),
10813
- 0 8px 8px var(--color-black-alpha-5, rgba(0, 0, 0, 0.09));
10814
10546
  }
10815
10547
 
10816
10548
  .muka-chat-composer--disabled {
@@ -10818,28 +10550,33 @@ li.muka-listitem {
10818
10550
  pointer-events: none;
10819
10551
  }
10820
10552
 
10821
- /* ─── Staged attachments slot ──────────────────────────── */
10553
+ /* ─── Input row ────────────────────────────────────────── */
10822
10554
 
10823
- .muka-chat-composer__attachments {
10555
+ .muka-chat-composer__row {
10824
10556
  display: flex;
10825
- flex-wrap: wrap;
10826
- gap: var(--spacing-2);
10557
+ width: 100%;
10558
+ align-items: flex-end;
10559
+ gap: var(--spacing-3);
10827
10560
  }
10828
10561
 
10829
- /* ─── Input row ────────────────────────────────────────── */
10562
+ /* ─── Text field ───────────────────────────────────────── */
10830
10563
 
10831
- .muka-chat-composer__row {
10564
+ .muka-chat-composer__field {
10832
10565
  display: flex;
10833
- width: 100%;
10834
- align-items: stretch;
10566
+ flex: 1 1 auto;
10567
+ min-width: 0;
10568
+ box-sizing: border-box;
10569
+ align-items: center;
10570
+ gap: var(--spacing-1);
10571
+ min-height: var(--input-field-height-lg, 48px);
10572
+ padding: 0 var(--spacing-2);
10835
10573
  border: var(--border-width-regular) solid var(--input-field-color-default-border);
10836
10574
  border-radius: var(--input-field-radius-lg);
10837
10575
  background-color: var(--input-field-color-default-background);
10838
- padding: var(--spacing-2);
10839
10576
  transition: border-color 0.12s ease;
10840
10577
  }
10841
10578
 
10842
- .muka-chat-composer__row:focus-within {
10579
+ .muka-chat-composer__field:focus-within {
10843
10580
  border-color: var(--input-field-color-focus-border, var(--color-action-default));
10844
10581
  }
10845
10582
 
@@ -10847,16 +10584,17 @@ li.muka-listitem {
10847
10584
  flex: 1 1 auto;
10848
10585
  min-width: 0;
10849
10586
  width: 100%;
10587
+ box-sizing: border-box;
10850
10588
  resize: none;
10851
10589
  border: none;
10852
10590
  background: transparent;
10853
10591
  outline: none;
10854
- padding: var(--spacing-1) var(--spacing-2);
10592
+ padding: 0 var(--spacing-1);
10855
10593
  color: var(--color-text-default-default);
10856
- font-family: var(--text-body-md-regular-fontFamily);
10857
- font-weight: var(--text-body-md-regular-fontWeight);
10858
- font-size: var(--text-body-md-regular-fontSize);
10859
- line-height: var(--text-body-md-regular-lineHeight);
10594
+ font-family: var(--text-body-base-regular-fontFamily);
10595
+ font-weight: var(--text-body-base-regular-fontWeight);
10596
+ font-size: var(--text-body-base-regular-fontSize);
10597
+ line-height: var(--text-body-base-regular-lineHeight);
10860
10598
  appearance: none;
10861
10599
  -webkit-appearance: none;
10862
10600
  }
@@ -10865,59 +10603,50 @@ li.muka-listitem {
10865
10603
  color: var(--color-text-subtle-default);
10866
10604
  }
10867
10605
 
10868
- /* ─── Actions row (leading + trailing) ─────────────────── */
10869
-
10870
- .muka-chat-composer__actions {
10871
- display: flex;
10872
- align-items: center;
10873
- justify-content: space-between;
10874
- gap: var(--spacing-2);
10606
+ /* Keep the in-field emoji button flush to the bottom-right as the field grows */
10607
+ .muka-chat-composer__emoji {
10608
+ flex-shrink: 0;
10875
10609
  }
10876
10610
 
10877
- .muka-chat-composer__leading {
10878
- display: flex;
10879
- align-items: center;
10880
- gap: var(--spacing-1);
10881
- }
10611
+ /* ─── Recording bar ────────────────────────────────────── */
10882
10612
 
10883
- .muka-chat-composer__trailing {
10613
+ .muka-chat-composer__recording {
10884
10614
  display: flex;
10615
+ flex: 1 1 auto;
10616
+ min-width: 0;
10617
+ box-sizing: border-box;
10885
10618
  align-items: center;
10886
- gap: var(--spacing-1);
10887
- margin-left: auto;
10619
+ min-height: var(--input-field-height-lg, 48px);
10620
+ padding: var(--card-padding-sm);
10621
+ border: var(--border-width-regular) solid var(--card-color-default-border);
10622
+ border-radius: var(--radius-lg);
10623
+ background-color: var(--card-color-default-background);
10888
10624
  }
10889
10625
 
10890
- /* ─── Send button ──────────────────────────────────────── */
10626
+ /* ─── Staged attachments strip ─────────────────────────── */
10891
10627
 
10892
- .muka-chat-composer__send {
10893
- display: inline-flex;
10894
- align-items: center;
10895
- justify-content: center;
10896
- width: var(--size-3xl, 40px);
10897
- height: var(--size-3xl, 40px);
10898
- border: none;
10899
- border-radius: var(--radius-lg);
10900
- background-color: var(--button-color-primary-background-default);
10901
- color: var(--button-color-primary-foreground-default);
10902
- cursor: pointer;
10903
- flex-shrink: 0;
10904
- -webkit-tap-highlight-color: transparent;
10905
- transition: background-color 0.12s ease;
10628
+ .muka-chat-composer__attachments-strip {
10629
+ position: relative;
10630
+ width: 100%;
10906
10631
  }
10907
10632
 
10908
- .muka-chat-composer__send:hover:not(:disabled) {
10909
- background-color: var(--button-color-primary-background-hover, var(--button-color-primary-background-default));
10633
+ .muka-chat-composer__attachments {
10634
+ display: flex;
10635
+ gap: var(--spacing-3);
10636
+ overflow-x: auto;
10637
+ scroll-behavior: smooth;
10638
+ scrollbar-width: none;
10910
10639
  }
10911
10640
 
10912
- .muka-chat-composer__send:disabled {
10913
- background-color: var(--color-surface-level1);
10914
- color: var(--color-text-subtle-default);
10915
- cursor: not-allowed;
10641
+ .muka-chat-composer__attachments::-webkit-scrollbar {
10642
+ display: none;
10916
10643
  }
10917
10644
 
10918
- .muka-chat-composer__send:focus-visible {
10919
- outline: 2px solid var(--color-action-default);
10920
- outline-offset: 2px;
10645
+ .muka-chat-composer__overflow {
10646
+ position: absolute;
10647
+ top: 50%;
10648
+ right: var(--spacing-2);
10649
+ transform: translateY(-50%);
10921
10650
  }
10922
10651
 
10923
10652
 
@@ -12925,191 +12654,453 @@ li.muka-listitem {
12925
12654
  outline-offset: -2px;
12926
12655
  }
12927
12656
 
12928
- .muka-action-sheet__item--destructive {
12929
- color: var(--color-state-error-default);
12657
+ .muka-action-sheet__item--destructive {
12658
+ color: var(--color-state-error-default);
12659
+ }
12660
+
12661
+ .muka-action-sheet__item--disabled,
12662
+ .muka-action-sheet__item:disabled {
12663
+ opacity: 0.5;
12664
+ cursor: not-allowed;
12665
+ }
12666
+
12667
+ .muka-action-sheet__item-icon {
12668
+ display: inline-flex;
12669
+ align-items: center;
12670
+ justify-content: center;
12671
+ width: 24px;
12672
+ height: 24px;
12673
+ flex-shrink: 0;
12674
+ }
12675
+
12676
+ .muka-action-sheet__item-icon svg {
12677
+ width: 100%;
12678
+ height: 100%;
12679
+ }
12680
+
12681
+ .muka-action-sheet__item-label {
12682
+ flex: 1;
12683
+ }
12684
+
12685
+ /* ─── Cancel button (separate at bottom) ──────────────── */
12686
+
12687
+ .muka-action-sheet__cancel {
12688
+ display: flex;
12689
+ align-items: center;
12690
+ justify-content: center;
12691
+ padding: var(--spacing-3) var(--spacing-4);
12692
+ background-color: var(--color-surface-level1);
12693
+ border: none;
12694
+ border-radius: var(--radius-md);
12695
+ cursor: pointer;
12696
+ color: var(--color-text-default-default);
12697
+ font-family: var(--text-label-md-semibold-fontFamily);
12698
+ font-weight: var(--text-label-md-semibold-fontWeight);
12699
+ font-size: var(--text-label-md-semibold-fontSize);
12700
+ line-height: var(--text-label-md-semibold-lineHeight);
12701
+ -webkit-tap-highlight-color: transparent;
12702
+ transition: background-color 0.12s ease;
12703
+ }
12704
+
12705
+ .muka-action-sheet__cancel:hover {
12706
+ background-color: var(--color-surface-level2);
12707
+ }
12708
+
12709
+ .muka-action-sheet__cancel:focus-visible {
12710
+ outline: 2px solid var(--color-action-default);
12711
+ outline-offset: 2px;
12712
+ }
12713
+
12714
+
12715
+ /* Accordion */
12716
+ /* Accordion Component Styles */
12717
+
12718
+ .muka-accordion {
12719
+ width: 100%;
12720
+ }
12721
+
12722
+ /* Item */
12723
+ .muka-accordion__item {
12724
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
12725
+ }
12726
+
12727
+ .muka-accordion__item:last-child {
12728
+ border-bottom: none;
12729
+ }
12730
+
12731
+ /* Header reset */
12732
+ .muka-accordion__header {
12733
+ margin: 0;
12734
+ }
12735
+
12736
+ /* Trigger */
12737
+ .muka-accordion__trigger {
12738
+ display: flex;
12739
+ align-items: center;
12740
+ justify-content: space-between;
12741
+ width: 100%;
12742
+ padding: var(--spacing-4);
12743
+ background: none;
12744
+ border: none;
12745
+ cursor: pointer;
12746
+ font-family: var(--text-label-md-semibold-fontFamily);
12747
+ font-weight: var(--text-label-md-semibold-fontWeight);
12748
+ font-size: var(--text-label-md-semibold-fontSize);
12749
+ line-height: var(--text-label-md-semibold-lineHeight);
12750
+ color: var(--color-text-default-default);
12751
+ text-align: left;
12752
+ gap: var(--spacing-3);
12753
+ transition: background-color 0.15s ease;
12754
+ }
12755
+
12756
+ .muka-accordion__trigger:hover {
12757
+ background-color: var(--color-surface-level1);
12758
+ }
12759
+
12760
+ .muka-accordion__trigger[data-disabled] {
12761
+ cursor: not-allowed;
12762
+ opacity: 0.4;
12763
+ }
12764
+
12765
+ .muka-accordion__trigger-text {
12766
+ flex: 1;
12767
+ }
12768
+
12769
+ /* Chevron rotation */
12770
+ .muka-accordion__chevron {
12771
+ display: inline-flex;
12772
+ align-items: center;
12773
+ color: var(--color-text-subtle-default);
12774
+ transition: transform 200ms ease;
12775
+ }
12776
+
12777
+ .muka-accordion__trigger[data-state='open'] .muka-accordion__chevron {
12778
+ transform: rotate(180deg);
12779
+ }
12780
+
12781
+ /* Content */
12782
+ .muka-accordion__content {
12783
+ overflow: hidden;
12784
+ }
12785
+
12786
+ .muka-accordion__content[data-state='open'] {
12787
+ animation: muka-accordion-slideDown 200ms ease;
12788
+ }
12789
+
12790
+ .muka-accordion__content[data-state='closed'] {
12791
+ animation: muka-accordion-slideUp 200ms ease;
12792
+ }
12793
+
12794
+ @keyframes muka-accordion-slideDown {
12795
+ from {
12796
+ height: 0;
12797
+ }
12798
+ to {
12799
+ height: var(--radix-accordion-content-height);
12800
+ }
12801
+ }
12802
+
12803
+ @keyframes muka-accordion-slideUp {
12804
+ from {
12805
+ height: var(--radix-accordion-content-height);
12806
+ }
12807
+ to {
12808
+ height: 0;
12809
+ }
12810
+ }
12811
+
12812
+ .muka-accordion__content-inner {
12813
+ padding: 0 var(--spacing-4) var(--spacing-5);
12814
+ color: var(--color-text-default-default);
12815
+ }
12816
+
12817
+ /* ─── Variant: flush ────────────────────────────────────────────────────── */
12818
+
12819
+ .muka-accordion--flush .muka-accordion__trigger {
12820
+ padding-left: 0;
12821
+ padding-right: 0;
12822
+ }
12823
+
12824
+ .muka-accordion--flush .muka-accordion__content-inner {
12825
+ padding-left: 0;
12826
+ padding-right: 0;
12827
+ }
12828
+
12829
+ /* ─── Variant: contained ────────────────────────────────────────────────── */
12830
+
12831
+ .muka-accordion--contained {
12832
+ border: var(--border-width-regular) solid var(--color-border-default);
12833
+ border-radius: var(--radius-md);
12834
+ overflow: hidden;
12835
+ }
12836
+
12837
+ .muka-accordion--contained .muka-accordion__item {
12838
+ background-color: var(--color-surface-level3);
12839
+ }
12840
+
12841
+ .muka-accordion--contained .muka-accordion__item:last-child {
12842
+ border-bottom: none;
12843
+ }
12844
+
12845
+
12846
+ /* FileUpload */
12847
+ /* FileUpload Component Styles */
12848
+
12849
+ .muka-fileupload-wrapper {
12850
+ display: flex;
12851
+ flex-direction: column;
12852
+ gap: var(--spacing-3);
12853
+ width: 100%;
12854
+ }
12855
+
12856
+ /* Dropzone */
12857
+ .muka-fileupload {
12858
+ display: flex;
12859
+ flex-direction: column;
12860
+ align-items: center;
12861
+ justify-content: center;
12862
+ gap: var(--fileupload-dropzone-gap);
12863
+ padding: var(--fileupload-dropzone-padding-md);
12864
+ background-color: var(--fileupload-dropzone-color-default-background);
12865
+ border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
12866
+ border-radius: var(--fileupload-dropzone-radius);
12867
+ cursor: pointer;
12868
+ transition: background-color 0.2s ease, border-color 0.2s ease;
12869
+ text-align: center;
12870
+ min-height: 120px;
12871
+ }
12872
+
12873
+ .muka-fileupload:focus-visible {
12874
+ outline: 2px solid var(--color-border-focus);
12875
+ outline-offset: 2px;
12876
+ }
12877
+
12878
+ /* Size variants */
12879
+ .muka-fileupload--sm {
12880
+ padding: var(--fileupload-dropzone-padding-sm);
12881
+ min-height: 80px;
12882
+ }
12883
+
12884
+ .muka-fileupload--lg {
12885
+ padding: var(--fileupload-dropzone-padding-lg);
12886
+ min-height: 160px;
12887
+ }
12888
+
12889
+ /* Button variant */
12890
+ .muka-fileupload--button {
12891
+ flex-direction: row;
12892
+ min-height: auto;
12893
+ padding: var(--spacing-2) var(--spacing-3);
12894
+ border-style: solid;
12895
+ border-width: var(--border-width-regular);
12896
+ border-radius: var(--border-radius-md);
12897
+ }
12898
+
12899
+ /* Hover state */
12900
+ .muka-fileupload:hover:not(.muka-fileupload--disabled) {
12901
+ background-color: var(--fileupload-dropzone-color-hover-background);
12902
+ border-color: var(--fileupload-dropzone-color-hover-border);
12903
+ }
12904
+
12905
+ /* Active/drag state */
12906
+ .muka-fileupload--active:not(.muka-fileupload--disabled) {
12907
+ background-color: var(--fileupload-dropzone-color-active-background);
12908
+ border-color: var(--fileupload-dropzone-color-active-border);
12909
+ }
12910
+
12911
+ /* Disabled state */
12912
+ .muka-fileupload--disabled {
12913
+ background-color: var(--fileupload-dropzone-color-disabled-background);
12914
+ border-color: var(--fileupload-dropzone-color-disabled-border);
12915
+ cursor: not-allowed;
12916
+ opacity: 0.6;
12930
12917
  }
12931
12918
 
12932
- .muka-action-sheet__item--disabled,
12933
- .muka-action-sheet__item:disabled {
12934
- opacity: 0.5;
12935
- cursor: not-allowed;
12919
+ /* Hidden file input */
12920
+ .muka-fileupload__input {
12921
+ position: absolute;
12922
+ width: 1px;
12923
+ height: 1px;
12924
+ padding: 0;
12925
+ margin: -1px;
12926
+ overflow: hidden;
12927
+ clip: rect(0, 0, 0, 0);
12928
+ white-space: nowrap;
12929
+ border: 0;
12936
12930
  }
12937
12931
 
12938
- .muka-action-sheet__item-icon {
12939
- display: inline-flex;
12932
+ /* Content container */
12933
+ .muka-fileupload__content {
12934
+ display: flex;
12935
+ flex-direction: column;
12936
+ align-items: center;
12937
+ gap: var(--spacing-2);
12938
+ }
12939
+
12940
+ /* Upload icon */
12941
+ .muka-fileupload__icon {
12942
+ display: flex;
12940
12943
  align-items: center;
12941
12944
  justify-content: center;
12942
- width: 24px;
12943
- height: 24px;
12944
- flex-shrink: 0;
12945
+ width: var(--size-3xl);
12946
+ height: var(--size-3xl);
12947
+ color: var(--fileupload-dropzone-color-default-foreground);
12945
12948
  }
12946
12949
 
12947
- .muka-action-sheet__item-icon svg {
12950
+ .muka-fileupload__icon svg {
12948
12951
  width: 100%;
12949
12952
  height: 100%;
12950
12953
  }
12951
12954
 
12952
- .muka-action-sheet__item-label {
12953
- flex: 1;
12955
+ .muka-fileupload--sm .muka-fileupload__icon {
12956
+ width: var(--size-2xl);
12957
+ height: var(--size-2xl);
12954
12958
  }
12955
12959
 
12956
- /* ─── Cancel button (separate at bottom) ──────────────── */
12960
+ .muka-fileupload--lg .muka-fileupload__icon {
12961
+ width: var(--size-4xl);
12962
+ height: var(--size-4xl);
12963
+ }
12957
12964
 
12958
- .muka-action-sheet__cancel {
12959
- display: flex;
12960
- align-items: center;
12961
- justify-content: center;
12962
- padding: var(--spacing-3) var(--spacing-4);
12963
- background-color: var(--color-surface-level1);
12964
- border: none;
12965
- border-radius: var(--radius-md);
12966
- cursor: pointer;
12965
+ /* Text */
12966
+ .muka-fileupload__text {
12967
+ font-family: var(--text-body-md-regular-fontFamily);
12968
+ font-size: var(--text-body-md-regular-fontSize);
12969
+ font-weight: var(--text-body-md-regular-fontWeight);
12970
+ line-height: var(--text-body-md-regular-lineHeight);
12967
12971
  color: var(--color-text-default-default);
12968
- font-family: var(--text-label-md-semibold-fontFamily);
12969
- font-weight: var(--text-label-md-semibold-fontWeight);
12970
- font-size: var(--text-label-md-semibold-fontSize);
12971
- line-height: var(--text-label-md-semibold-lineHeight);
12972
- -webkit-tap-highlight-color: transparent;
12973
- transition: background-color 0.12s ease;
12974
12972
  }
12975
12973
 
12976
- .muka-action-sheet__cancel:hover {
12977
- background-color: var(--color-surface-level2);
12974
+ .muka-fileupload--sm .muka-fileupload__text {
12975
+ font-size: var(--text-body-sm-regular-fontSize);
12978
12976
  }
12979
12977
 
12980
- .muka-action-sheet__cancel:focus-visible {
12981
- outline: 2px solid var(--color-action-default);
12982
- outline-offset: 2px;
12978
+ /* Hint text */
12979
+ .muka-fileupload__hint {
12980
+ font-family: var(--text-label-sm-regular-fontFamily);
12981
+ font-size: var(--text-label-sm-regular-fontSize);
12982
+ font-weight: var(--text-label-sm-regular-fontWeight);
12983
+ line-height: var(--text-label-sm-regular-lineHeight);
12984
+ color: var(--fileupload-dropzone-color-default-foreground);
12983
12985
  }
12984
12986
 
12987
+ /* File list */
12988
+ .muka-fileupload__list {
12989
+ display: flex;
12990
+ flex-direction: column;
12991
+ gap: var(--spacing-2);
12992
+ list-style: none;
12993
+ margin: 0;
12994
+ padding: 0;
12995
+ }
12985
12996
 
12986
- /* Accordion */
12987
- /* Accordion Component Styles */
12988
-
12989
- .muka-accordion {
12990
- width: 100%;
12997
+ .muka-fileupload__list li {
12998
+ margin: 0;
12999
+ padding: 0;
12991
13000
  }
12992
13001
 
12993
- /* Item */
12994
- .muka-accordion__item {
12995
- border-bottom: var(--border-width-regular) solid var(--color-border-default);
13002
+ /* File item */
13003
+ .muka-fileupload-item {
13004
+ display: flex;
13005
+ align-items: center;
13006
+ gap: var(--fileupload-item-gap);
13007
+ padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
13008
+ background-color: var(--fileupload-item-color-default-background);
13009
+ border-radius: var(--fileupload-item-radius);
12996
13010
  }
12997
13011
 
12998
- .muka-accordion__item:last-child {
12999
- border-bottom: none;
13012
+ .muka-fileupload-item--error {
13013
+ background-color: var(--fileupload-item-color-error-background);
13000
13014
  }
13001
13015
 
13002
- /* Header reset */
13003
- .muka-accordion__header {
13004
- margin: 0;
13016
+ .muka-fileupload-item--success {
13017
+ background-color: var(--fileupload-item-color-default-background);
13005
13018
  }
13006
13019
 
13007
- /* Trigger */
13008
- .muka-accordion__trigger {
13020
+ /* Preview/Icon container */
13021
+ .muka-fileupload-item__preview {
13009
13022
  display: flex;
13010
13023
  align-items: center;
13011
- justify-content: space-between;
13012
- width: 100%;
13013
- padding: var(--spacing-4);
13014
- background: none;
13015
- border: none;
13016
- cursor: pointer;
13017
- font-family: var(--text-label-md-semibold-fontFamily);
13018
- font-weight: var(--text-label-md-semibold-fontWeight);
13019
- font-size: var(--text-label-md-semibold-fontSize);
13020
- line-height: var(--text-label-md-semibold-lineHeight);
13021
- color: var(--color-text-default-default);
13022
- text-align: left;
13023
- gap: var(--spacing-3);
13024
- transition: background-color 0.15s ease;
13025
- }
13026
-
13027
- .muka-accordion__trigger:hover {
13024
+ justify-content: center;
13025
+ flex-shrink: 0;
13026
+ width: var(--fileupload-preview-size);
13027
+ height: var(--fileupload-preview-size);
13028
+ border-radius: var(--fileupload-preview-radius);
13029
+ overflow: hidden;
13028
13030
  background-color: var(--color-surface-level1);
13029
13031
  }
13030
13032
 
13031
- .muka-accordion__trigger[data-disabled] {
13032
- cursor: not-allowed;
13033
- opacity: 0.4;
13034
- }
13035
-
13036
- .muka-accordion__trigger-text {
13037
- flex: 1;
13033
+ .muka-fileupload-item__thumbnail {
13034
+ width: 100%;
13035
+ height: 100%;
13036
+ object-fit: cover;
13038
13037
  }
13039
13038
 
13040
- /* Chevron rotation */
13041
- .muka-accordion__chevron {
13042
- display: inline-flex;
13043
- align-items: center;
13039
+ .muka-fileupload-item__icon {
13044
13040
  color: var(--color-text-subtle-default);
13045
- transition: transform 200ms ease;
13046
13041
  }
13047
13042
 
13048
- .muka-accordion__trigger[data-state='open'] .muka-accordion__chevron {
13049
- transform: rotate(180deg);
13043
+ /* File info */
13044
+ .muka-fileupload-item__info {
13045
+ flex: 1;
13046
+ min-width: 0;
13047
+ display: flex;
13048
+ flex-direction: column;
13049
+ gap: var(--spacing-1);
13050
13050
  }
13051
13051
 
13052
- /* Content */
13053
- .muka-accordion__content {
13052
+ .muka-fileupload-item__name {
13053
+ font-family: var(--text-body-sm-medium-fontFamily);
13054
+ font-size: var(--text-body-sm-medium-fontSize);
13055
+ font-weight: var(--text-body-sm-medium-fontWeight);
13056
+ line-height: var(--text-body-sm-medium-lineHeight);
13057
+ color: var(--fileupload-item-color-default-foreground);
13058
+ white-space: nowrap;
13054
13059
  overflow: hidden;
13060
+ text-overflow: ellipsis;
13055
13061
  }
13056
13062
 
13057
- .muka-accordion__content[data-state='open'] {
13058
- animation: muka-accordion-slideDown 200ms ease;
13059
- }
13060
-
13061
- .muka-accordion__content[data-state='closed'] {
13062
- animation: muka-accordion-slideUp 200ms ease;
13063
+ .muka-fileupload-item--error .muka-fileupload-item__name {
13064
+ color: var(--fileupload-item-color-error-foreground);
13063
13065
  }
13064
13066
 
13065
- @keyframes muka-accordion-slideDown {
13066
- from {
13067
- height: 0;
13068
- }
13069
- to {
13070
- height: var(--radix-accordion-content-height);
13071
- }
13067
+ .muka-fileupload-item__meta {
13068
+ font-family: var(--text-label-sm-regular-fontFamily);
13069
+ font-size: var(--text-label-sm-regular-fontSize);
13070
+ font-weight: var(--text-label-sm-regular-fontWeight);
13071
+ line-height: var(--text-label-sm-regular-lineHeight);
13072
+ color: var(--color-text-subtle-default);
13072
13073
  }
13073
13074
 
13074
- @keyframes muka-accordion-slideUp {
13075
- from {
13076
- height: var(--radix-accordion-content-height);
13077
- }
13078
- to {
13079
- height: 0;
13080
- }
13075
+ .muka-fileupload-item__error {
13076
+ color: var(--fileupload-item-color-error-foreground);
13081
13077
  }
13082
13078
 
13083
- .muka-accordion__content-inner {
13084
- padding: 0 var(--spacing-4) var(--spacing-5);
13085
- color: var(--color-text-default-default);
13079
+ .muka-fileupload-item__progress {
13080
+ margin-top: var(--spacing-1);
13086
13081
  }
13087
13082
 
13088
- /* ─── Variant: flush ────────────────────────────────────────────────────── */
13089
-
13090
- .muka-accordion--flush .muka-accordion__trigger {
13091
- padding-left: 0;
13092
- padding-right: 0;
13083
+ /* Actions */
13084
+ .muka-fileupload-item__actions {
13085
+ display: flex;
13086
+ align-items: center;
13087
+ gap: var(--spacing-2);
13088
+ flex-shrink: 0;
13093
13089
  }
13094
13090
 
13095
- .muka-accordion--flush .muka-accordion__content-inner {
13096
- padding-left: 0;
13097
- padding-right: 0;
13091
+ .muka-fileupload-item__status-icon--success {
13092
+ color: var(--color-state-success-foreground);
13098
13093
  }
13099
13094
 
13100
- /* ─── Variant: contained ────────────────────────────────────────────────── */
13101
-
13102
- .muka-accordion--contained {
13103
- border: var(--border-width-regular) solid var(--color-border-default);
13104
- border-radius: var(--radius-md);
13105
- overflow: hidden;
13095
+ .muka-fileupload-item__status-icon--error {
13096
+ color: var(--color-state-error-foreground);
13106
13097
  }
13107
13098
 
13108
- .muka-accordion--contained .muka-accordion__item {
13109
- background-color: var(--color-surface-level3);
13099
+ .muka-fileupload-item__remove {
13100
+ opacity: 0.7;
13110
13101
  }
13111
13102
 
13112
- .muka-accordion--contained .muka-accordion__item:last-child {
13113
- border-bottom: none;
13103
+ .muka-fileupload-item__remove:hover {
13104
+ opacity: 1;
13114
13105
  }
13115
13106