@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
@@ -8114,268 +8114,6 @@ li.muka-listitem {
8114
8114
  }
8115
8115
 
8116
8116
 
8117
- /* FileUpload */
8118
- /* FileUpload Component Styles */
8119
-
8120
- .muka-fileupload-wrapper {
8121
- display: flex;
8122
- flex-direction: column;
8123
- gap: var(--spacing-3);
8124
- width: 100%;
8125
- }
8126
-
8127
- /* Dropzone */
8128
- .muka-fileupload {
8129
- display: flex;
8130
- flex-direction: column;
8131
- align-items: center;
8132
- justify-content: center;
8133
- gap: var(--fileupload-dropzone-gap);
8134
- padding: var(--fileupload-dropzone-padding-md);
8135
- background-color: var(--fileupload-dropzone-color-default-background);
8136
- border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
8137
- border-radius: var(--fileupload-dropzone-radius);
8138
- cursor: pointer;
8139
- transition: background-color 0.2s ease, border-color 0.2s ease;
8140
- text-align: center;
8141
- min-height: 120px;
8142
- }
8143
-
8144
- .muka-fileupload:focus-visible {
8145
- outline: 2px solid var(--color-border-focus);
8146
- outline-offset: 2px;
8147
- }
8148
-
8149
- /* Size variants */
8150
- .muka-fileupload--sm {
8151
- padding: var(--fileupload-dropzone-padding-sm);
8152
- min-height: 80px;
8153
- }
8154
-
8155
- .muka-fileupload--lg {
8156
- padding: var(--fileupload-dropzone-padding-lg);
8157
- min-height: 160px;
8158
- }
8159
-
8160
- /* Button variant */
8161
- .muka-fileupload--button {
8162
- flex-direction: row;
8163
- min-height: auto;
8164
- padding: var(--spacing-2) var(--spacing-3);
8165
- border-style: solid;
8166
- border-width: var(--border-width-regular);
8167
- border-radius: var(--border-radius-md);
8168
- }
8169
-
8170
- /* Hover state */
8171
- .muka-fileupload:hover:not(.muka-fileupload--disabled) {
8172
- background-color: var(--fileupload-dropzone-color-hover-background);
8173
- border-color: var(--fileupload-dropzone-color-hover-border);
8174
- }
8175
-
8176
- /* Active/drag state */
8177
- .muka-fileupload--active:not(.muka-fileupload--disabled) {
8178
- background-color: var(--fileupload-dropzone-color-active-background);
8179
- border-color: var(--fileupload-dropzone-color-active-border);
8180
- }
8181
-
8182
- /* Disabled state */
8183
- .muka-fileupload--disabled {
8184
- background-color: var(--fileupload-dropzone-color-disabled-background);
8185
- border-color: var(--fileupload-dropzone-color-disabled-border);
8186
- cursor: not-allowed;
8187
- opacity: 0.6;
8188
- }
8189
-
8190
- /* Hidden file input */
8191
- .muka-fileupload__input {
8192
- position: absolute;
8193
- width: 1px;
8194
- height: 1px;
8195
- padding: 0;
8196
- margin: -1px;
8197
- overflow: hidden;
8198
- clip: rect(0, 0, 0, 0);
8199
- white-space: nowrap;
8200
- border: 0;
8201
- }
8202
-
8203
- /* Content container */
8204
- .muka-fileupload__content {
8205
- display: flex;
8206
- flex-direction: column;
8207
- align-items: center;
8208
- gap: var(--spacing-2);
8209
- }
8210
-
8211
- /* Upload icon */
8212
- .muka-fileupload__icon {
8213
- display: flex;
8214
- align-items: center;
8215
- justify-content: center;
8216
- width: var(--size-3xl);
8217
- height: var(--size-3xl);
8218
- color: var(--fileupload-dropzone-color-default-foreground);
8219
- }
8220
-
8221
- .muka-fileupload__icon svg {
8222
- width: 100%;
8223
- height: 100%;
8224
- }
8225
-
8226
- .muka-fileupload--sm .muka-fileupload__icon {
8227
- width: var(--size-2xl);
8228
- height: var(--size-2xl);
8229
- }
8230
-
8231
- .muka-fileupload--lg .muka-fileupload__icon {
8232
- width: var(--size-4xl);
8233
- height: var(--size-4xl);
8234
- }
8235
-
8236
- /* Text */
8237
- .muka-fileupload__text {
8238
- font-family: var(--text-body-md-regular-fontFamily);
8239
- font-size: var(--text-body-md-regular-fontSize);
8240
- font-weight: var(--text-body-md-regular-fontWeight);
8241
- line-height: var(--text-body-md-regular-lineHeight);
8242
- color: var(--color-text-default-default);
8243
- }
8244
-
8245
- .muka-fileupload--sm .muka-fileupload__text {
8246
- font-size: var(--text-body-sm-regular-fontSize);
8247
- }
8248
-
8249
- /* Hint text */
8250
- .muka-fileupload__hint {
8251
- font-family: var(--text-label-sm-regular-fontFamily);
8252
- font-size: var(--text-label-sm-regular-fontSize);
8253
- font-weight: var(--text-label-sm-regular-fontWeight);
8254
- line-height: var(--text-label-sm-regular-lineHeight);
8255
- color: var(--fileupload-dropzone-color-default-foreground);
8256
- }
8257
-
8258
- /* File list */
8259
- .muka-fileupload__list {
8260
- display: flex;
8261
- flex-direction: column;
8262
- gap: var(--spacing-2);
8263
- list-style: none;
8264
- margin: 0;
8265
- padding: 0;
8266
- }
8267
-
8268
- .muka-fileupload__list li {
8269
- margin: 0;
8270
- padding: 0;
8271
- }
8272
-
8273
- /* File item */
8274
- .muka-fileupload-item {
8275
- display: flex;
8276
- align-items: center;
8277
- gap: var(--fileupload-item-gap);
8278
- padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
8279
- background-color: var(--fileupload-item-color-default-background);
8280
- border-radius: var(--fileupload-item-radius);
8281
- }
8282
-
8283
- .muka-fileupload-item--error {
8284
- background-color: var(--fileupload-item-color-error-background);
8285
- }
8286
-
8287
- .muka-fileupload-item--success {
8288
- background-color: var(--fileupload-item-color-default-background);
8289
- }
8290
-
8291
- /* Preview/Icon container */
8292
- .muka-fileupload-item__preview {
8293
- display: flex;
8294
- align-items: center;
8295
- justify-content: center;
8296
- flex-shrink: 0;
8297
- width: var(--fileupload-preview-size);
8298
- height: var(--fileupload-preview-size);
8299
- border-radius: var(--fileupload-preview-radius);
8300
- overflow: hidden;
8301
- background-color: var(--color-surface-level1);
8302
- }
8303
-
8304
- .muka-fileupload-item__thumbnail {
8305
- width: 100%;
8306
- height: 100%;
8307
- object-fit: cover;
8308
- }
8309
-
8310
- .muka-fileupload-item__icon {
8311
- color: var(--color-text-subtle-default);
8312
- }
8313
-
8314
- /* File info */
8315
- .muka-fileupload-item__info {
8316
- flex: 1;
8317
- min-width: 0;
8318
- display: flex;
8319
- flex-direction: column;
8320
- gap: var(--spacing-1);
8321
- }
8322
-
8323
- .muka-fileupload-item__name {
8324
- font-family: var(--text-body-sm-medium-fontFamily);
8325
- font-size: var(--text-body-sm-medium-fontSize);
8326
- font-weight: var(--text-body-sm-medium-fontWeight);
8327
- line-height: var(--text-body-sm-medium-lineHeight);
8328
- color: var(--fileupload-item-color-default-foreground);
8329
- white-space: nowrap;
8330
- overflow: hidden;
8331
- text-overflow: ellipsis;
8332
- }
8333
-
8334
- .muka-fileupload-item--error .muka-fileupload-item__name {
8335
- color: var(--fileupload-item-color-error-foreground);
8336
- }
8337
-
8338
- .muka-fileupload-item__meta {
8339
- font-family: var(--text-label-sm-regular-fontFamily);
8340
- font-size: var(--text-label-sm-regular-fontSize);
8341
- font-weight: var(--text-label-sm-regular-fontWeight);
8342
- line-height: var(--text-label-sm-regular-lineHeight);
8343
- color: var(--color-text-subtle-default);
8344
- }
8345
-
8346
- .muka-fileupload-item__error {
8347
- color: var(--fileupload-item-color-error-foreground);
8348
- }
8349
-
8350
- .muka-fileupload-item__progress {
8351
- margin-top: var(--spacing-1);
8352
- }
8353
-
8354
- /* Actions */
8355
- .muka-fileupload-item__actions {
8356
- display: flex;
8357
- align-items: center;
8358
- gap: var(--spacing-2);
8359
- flex-shrink: 0;
8360
- }
8361
-
8362
- .muka-fileupload-item__status-icon--success {
8363
- color: var(--color-state-success-foreground);
8364
- }
8365
-
8366
- .muka-fileupload-item__status-icon--error {
8367
- color: var(--color-state-error-foreground);
8368
- }
8369
-
8370
- .muka-fileupload-item__remove {
8371
- opacity: 0.7;
8372
- }
8373
-
8374
- .muka-fileupload-item__remove:hover {
8375
- opacity: 1;
8376
- }
8377
-
8378
-
8379
8117
  /* FAB */
8380
8118
  /* FAB (Floating Action Button) Component Styles */
8381
8119
 
@@ -10769,15 +10507,9 @@ li.muka-listitem {
10769
10507
  .muka-chat-composer {
10770
10508
  display: flex;
10771
10509
  flex-direction: column;
10772
- gap: var(--spacing-2);
10510
+ gap: var(--spacing-3);
10773
10511
  width: 100%;
10774
10512
  max-width: 768px;
10775
- padding: var(--spacing-3);
10776
- background-color: var(--color-surface-level3);
10777
- border-radius: var(--radius-xl);
10778
- box-shadow:
10779
- 0 0 0.5px var(--color-black-alpha-5, rgba(0, 0, 0, 0.09)),
10780
- 0 8px 8px var(--color-black-alpha-5, rgba(0, 0, 0, 0.09));
10781
10513
  }
10782
10514
 
10783
10515
  .muka-chat-composer--disabled {
@@ -10785,28 +10517,33 @@ li.muka-listitem {
10785
10517
  pointer-events: none;
10786
10518
  }
10787
10519
 
10788
- /* ─── Staged attachments slot ──────────────────────────── */
10520
+ /* ─── Input row ────────────────────────────────────────── */
10789
10521
 
10790
- .muka-chat-composer__attachments {
10522
+ .muka-chat-composer__row {
10791
10523
  display: flex;
10792
- flex-wrap: wrap;
10793
- gap: var(--spacing-2);
10524
+ width: 100%;
10525
+ align-items: flex-end;
10526
+ gap: var(--spacing-3);
10794
10527
  }
10795
10528
 
10796
- /* ─── Input row ────────────────────────────────────────── */
10529
+ /* ─── Text field ───────────────────────────────────────── */
10797
10530
 
10798
- .muka-chat-composer__row {
10531
+ .muka-chat-composer__field {
10799
10532
  display: flex;
10800
- width: 100%;
10801
- align-items: stretch;
10533
+ flex: 1 1 auto;
10534
+ min-width: 0;
10535
+ box-sizing: border-box;
10536
+ align-items: center;
10537
+ gap: var(--spacing-1);
10538
+ min-height: var(--input-field-height-lg, 48px);
10539
+ padding: 0 var(--spacing-2);
10802
10540
  border: var(--border-width-regular) solid var(--input-field-color-default-border);
10803
10541
  border-radius: var(--input-field-radius-lg);
10804
10542
  background-color: var(--input-field-color-default-background);
10805
- padding: var(--spacing-2);
10806
10543
  transition: border-color 0.12s ease;
10807
10544
  }
10808
10545
 
10809
- .muka-chat-composer__row:focus-within {
10546
+ .muka-chat-composer__field:focus-within {
10810
10547
  border-color: var(--input-field-color-focus-border, var(--color-action-default));
10811
10548
  }
10812
10549
 
@@ -10814,16 +10551,17 @@ li.muka-listitem {
10814
10551
  flex: 1 1 auto;
10815
10552
  min-width: 0;
10816
10553
  width: 100%;
10554
+ box-sizing: border-box;
10817
10555
  resize: none;
10818
10556
  border: none;
10819
10557
  background: transparent;
10820
10558
  outline: none;
10821
- padding: var(--spacing-1) var(--spacing-2);
10559
+ padding: 0 var(--spacing-1);
10822
10560
  color: var(--color-text-default-default);
10823
- font-family: var(--text-body-md-regular-fontFamily);
10824
- font-weight: var(--text-body-md-regular-fontWeight);
10825
- font-size: var(--text-body-md-regular-fontSize);
10826
- line-height: var(--text-body-md-regular-lineHeight);
10561
+ font-family: var(--text-body-base-regular-fontFamily);
10562
+ font-weight: var(--text-body-base-regular-fontWeight);
10563
+ font-size: var(--text-body-base-regular-fontSize);
10564
+ line-height: var(--text-body-base-regular-lineHeight);
10827
10565
  appearance: none;
10828
10566
  -webkit-appearance: none;
10829
10567
  }
@@ -10832,59 +10570,50 @@ li.muka-listitem {
10832
10570
  color: var(--color-text-subtle-default);
10833
10571
  }
10834
10572
 
10835
- /* ─── Actions row (leading + trailing) ─────────────────── */
10836
-
10837
- .muka-chat-composer__actions {
10838
- display: flex;
10839
- align-items: center;
10840
- justify-content: space-between;
10841
- gap: var(--spacing-2);
10573
+ /* Keep the in-field emoji button flush to the bottom-right as the field grows */
10574
+ .muka-chat-composer__emoji {
10575
+ flex-shrink: 0;
10842
10576
  }
10843
10577
 
10844
- .muka-chat-composer__leading {
10845
- display: flex;
10846
- align-items: center;
10847
- gap: var(--spacing-1);
10848
- }
10578
+ /* ─── Recording bar ────────────────────────────────────── */
10849
10579
 
10850
- .muka-chat-composer__trailing {
10580
+ .muka-chat-composer__recording {
10851
10581
  display: flex;
10582
+ flex: 1 1 auto;
10583
+ min-width: 0;
10584
+ box-sizing: border-box;
10852
10585
  align-items: center;
10853
- gap: var(--spacing-1);
10854
- margin-left: auto;
10586
+ min-height: var(--input-field-height-lg, 48px);
10587
+ padding: var(--card-padding-sm);
10588
+ border: var(--border-width-regular) solid var(--card-color-default-border);
10589
+ border-radius: var(--radius-lg);
10590
+ background-color: var(--card-color-default-background);
10855
10591
  }
10856
10592
 
10857
- /* ─── Send button ──────────────────────────────────────── */
10593
+ /* ─── Staged attachments strip ─────────────────────────── */
10858
10594
 
10859
- .muka-chat-composer__send {
10860
- display: inline-flex;
10861
- align-items: center;
10862
- justify-content: center;
10863
- width: var(--size-3xl, 40px);
10864
- height: var(--size-3xl, 40px);
10865
- border: none;
10866
- border-radius: var(--radius-lg);
10867
- background-color: var(--button-color-primary-background-default);
10868
- color: var(--button-color-primary-foreground-default);
10869
- cursor: pointer;
10870
- flex-shrink: 0;
10871
- -webkit-tap-highlight-color: transparent;
10872
- transition: background-color 0.12s ease;
10595
+ .muka-chat-composer__attachments-strip {
10596
+ position: relative;
10597
+ width: 100%;
10873
10598
  }
10874
10599
 
10875
- .muka-chat-composer__send:hover:not(:disabled) {
10876
- background-color: var(--button-color-primary-background-hover, var(--button-color-primary-background-default));
10600
+ .muka-chat-composer__attachments {
10601
+ display: flex;
10602
+ gap: var(--spacing-3);
10603
+ overflow-x: auto;
10604
+ scroll-behavior: smooth;
10605
+ scrollbar-width: none;
10877
10606
  }
10878
10607
 
10879
- .muka-chat-composer__send:disabled {
10880
- background-color: var(--color-surface-level1);
10881
- color: var(--color-text-subtle-default);
10882
- cursor: not-allowed;
10608
+ .muka-chat-composer__attachments::-webkit-scrollbar {
10609
+ display: none;
10883
10610
  }
10884
10611
 
10885
- .muka-chat-composer__send:focus-visible {
10886
- outline: 2px solid var(--color-action-default);
10887
- outline-offset: 2px;
10612
+ .muka-chat-composer__overflow {
10613
+ position: absolute;
10614
+ top: 50%;
10615
+ right: var(--spacing-2);
10616
+ transform: translateY(-50%);
10888
10617
  }
10889
10618
 
10890
10619
 
@@ -12892,191 +12621,453 @@ li.muka-listitem {
12892
12621
  outline-offset: -2px;
12893
12622
  }
12894
12623
 
12895
- .muka-action-sheet__item--destructive {
12896
- color: var(--color-state-error-default);
12624
+ .muka-action-sheet__item--destructive {
12625
+ color: var(--color-state-error-default);
12626
+ }
12627
+
12628
+ .muka-action-sheet__item--disabled,
12629
+ .muka-action-sheet__item:disabled {
12630
+ opacity: 0.5;
12631
+ cursor: not-allowed;
12632
+ }
12633
+
12634
+ .muka-action-sheet__item-icon {
12635
+ display: inline-flex;
12636
+ align-items: center;
12637
+ justify-content: center;
12638
+ width: 24px;
12639
+ height: 24px;
12640
+ flex-shrink: 0;
12641
+ }
12642
+
12643
+ .muka-action-sheet__item-icon svg {
12644
+ width: 100%;
12645
+ height: 100%;
12646
+ }
12647
+
12648
+ .muka-action-sheet__item-label {
12649
+ flex: 1;
12650
+ }
12651
+
12652
+ /* ─── Cancel button (separate at bottom) ──────────────── */
12653
+
12654
+ .muka-action-sheet__cancel {
12655
+ display: flex;
12656
+ align-items: center;
12657
+ justify-content: center;
12658
+ padding: var(--spacing-3) var(--spacing-4);
12659
+ background-color: var(--color-surface-level1);
12660
+ border: none;
12661
+ border-radius: var(--radius-md);
12662
+ cursor: pointer;
12663
+ color: var(--color-text-default-default);
12664
+ font-family: var(--text-label-md-semibold-fontFamily);
12665
+ font-weight: var(--text-label-md-semibold-fontWeight);
12666
+ font-size: var(--text-label-md-semibold-fontSize);
12667
+ line-height: var(--text-label-md-semibold-lineHeight);
12668
+ -webkit-tap-highlight-color: transparent;
12669
+ transition: background-color 0.12s ease;
12670
+ }
12671
+
12672
+ .muka-action-sheet__cancel:hover {
12673
+ background-color: var(--color-surface-level2);
12674
+ }
12675
+
12676
+ .muka-action-sheet__cancel:focus-visible {
12677
+ outline: 2px solid var(--color-action-default);
12678
+ outline-offset: 2px;
12679
+ }
12680
+
12681
+
12682
+ /* Accordion */
12683
+ /* Accordion Component Styles */
12684
+
12685
+ .muka-accordion {
12686
+ width: 100%;
12687
+ }
12688
+
12689
+ /* Item */
12690
+ .muka-accordion__item {
12691
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
12692
+ }
12693
+
12694
+ .muka-accordion__item:last-child {
12695
+ border-bottom: none;
12696
+ }
12697
+
12698
+ /* Header reset */
12699
+ .muka-accordion__header {
12700
+ margin: 0;
12701
+ }
12702
+
12703
+ /* Trigger */
12704
+ .muka-accordion__trigger {
12705
+ display: flex;
12706
+ align-items: center;
12707
+ justify-content: space-between;
12708
+ width: 100%;
12709
+ padding: var(--spacing-4);
12710
+ background: none;
12711
+ border: none;
12712
+ cursor: pointer;
12713
+ font-family: var(--text-label-md-semibold-fontFamily);
12714
+ font-weight: var(--text-label-md-semibold-fontWeight);
12715
+ font-size: var(--text-label-md-semibold-fontSize);
12716
+ line-height: var(--text-label-md-semibold-lineHeight);
12717
+ color: var(--color-text-default-default);
12718
+ text-align: left;
12719
+ gap: var(--spacing-3);
12720
+ transition: background-color 0.15s ease;
12721
+ }
12722
+
12723
+ .muka-accordion__trigger:hover {
12724
+ background-color: var(--color-surface-level1);
12725
+ }
12726
+
12727
+ .muka-accordion__trigger[data-disabled] {
12728
+ cursor: not-allowed;
12729
+ opacity: 0.4;
12730
+ }
12731
+
12732
+ .muka-accordion__trigger-text {
12733
+ flex: 1;
12734
+ }
12735
+
12736
+ /* Chevron rotation */
12737
+ .muka-accordion__chevron {
12738
+ display: inline-flex;
12739
+ align-items: center;
12740
+ color: var(--color-text-subtle-default);
12741
+ transition: transform 200ms ease;
12742
+ }
12743
+
12744
+ .muka-accordion__trigger[data-state='open'] .muka-accordion__chevron {
12745
+ transform: rotate(180deg);
12746
+ }
12747
+
12748
+ /* Content */
12749
+ .muka-accordion__content {
12750
+ overflow: hidden;
12751
+ }
12752
+
12753
+ .muka-accordion__content[data-state='open'] {
12754
+ animation: muka-accordion-slideDown 200ms ease;
12755
+ }
12756
+
12757
+ .muka-accordion__content[data-state='closed'] {
12758
+ animation: muka-accordion-slideUp 200ms ease;
12759
+ }
12760
+
12761
+ @keyframes muka-accordion-slideDown {
12762
+ from {
12763
+ height: 0;
12764
+ }
12765
+ to {
12766
+ height: var(--radix-accordion-content-height);
12767
+ }
12768
+ }
12769
+
12770
+ @keyframes muka-accordion-slideUp {
12771
+ from {
12772
+ height: var(--radix-accordion-content-height);
12773
+ }
12774
+ to {
12775
+ height: 0;
12776
+ }
12777
+ }
12778
+
12779
+ .muka-accordion__content-inner {
12780
+ padding: 0 var(--spacing-4) var(--spacing-5);
12781
+ color: var(--color-text-default-default);
12782
+ }
12783
+
12784
+ /* ─── Variant: flush ────────────────────────────────────────────────────── */
12785
+
12786
+ .muka-accordion--flush .muka-accordion__trigger {
12787
+ padding-left: 0;
12788
+ padding-right: 0;
12789
+ }
12790
+
12791
+ .muka-accordion--flush .muka-accordion__content-inner {
12792
+ padding-left: 0;
12793
+ padding-right: 0;
12794
+ }
12795
+
12796
+ /* ─── Variant: contained ────────────────────────────────────────────────── */
12797
+
12798
+ .muka-accordion--contained {
12799
+ border: var(--border-width-regular) solid var(--color-border-default);
12800
+ border-radius: var(--radius-md);
12801
+ overflow: hidden;
12802
+ }
12803
+
12804
+ .muka-accordion--contained .muka-accordion__item {
12805
+ background-color: var(--color-surface-level3);
12806
+ }
12807
+
12808
+ .muka-accordion--contained .muka-accordion__item:last-child {
12809
+ border-bottom: none;
12810
+ }
12811
+
12812
+
12813
+ /* FileUpload */
12814
+ /* FileUpload Component Styles */
12815
+
12816
+ .muka-fileupload-wrapper {
12817
+ display: flex;
12818
+ flex-direction: column;
12819
+ gap: var(--spacing-3);
12820
+ width: 100%;
12821
+ }
12822
+
12823
+ /* Dropzone */
12824
+ .muka-fileupload {
12825
+ display: flex;
12826
+ flex-direction: column;
12827
+ align-items: center;
12828
+ justify-content: center;
12829
+ gap: var(--fileupload-dropzone-gap);
12830
+ padding: var(--fileupload-dropzone-padding-md);
12831
+ background-color: var(--fileupload-dropzone-color-default-background);
12832
+ border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
12833
+ border-radius: var(--fileupload-dropzone-radius);
12834
+ cursor: pointer;
12835
+ transition: background-color 0.2s ease, border-color 0.2s ease;
12836
+ text-align: center;
12837
+ min-height: 120px;
12838
+ }
12839
+
12840
+ .muka-fileupload:focus-visible {
12841
+ outline: 2px solid var(--color-border-focus);
12842
+ outline-offset: 2px;
12843
+ }
12844
+
12845
+ /* Size variants */
12846
+ .muka-fileupload--sm {
12847
+ padding: var(--fileupload-dropzone-padding-sm);
12848
+ min-height: 80px;
12849
+ }
12850
+
12851
+ .muka-fileupload--lg {
12852
+ padding: var(--fileupload-dropzone-padding-lg);
12853
+ min-height: 160px;
12854
+ }
12855
+
12856
+ /* Button variant */
12857
+ .muka-fileupload--button {
12858
+ flex-direction: row;
12859
+ min-height: auto;
12860
+ padding: var(--spacing-2) var(--spacing-3);
12861
+ border-style: solid;
12862
+ border-width: var(--border-width-regular);
12863
+ border-radius: var(--border-radius-md);
12864
+ }
12865
+
12866
+ /* Hover state */
12867
+ .muka-fileupload:hover:not(.muka-fileupload--disabled) {
12868
+ background-color: var(--fileupload-dropzone-color-hover-background);
12869
+ border-color: var(--fileupload-dropzone-color-hover-border);
12870
+ }
12871
+
12872
+ /* Active/drag state */
12873
+ .muka-fileupload--active:not(.muka-fileupload--disabled) {
12874
+ background-color: var(--fileupload-dropzone-color-active-background);
12875
+ border-color: var(--fileupload-dropzone-color-active-border);
12876
+ }
12877
+
12878
+ /* Disabled state */
12879
+ .muka-fileupload--disabled {
12880
+ background-color: var(--fileupload-dropzone-color-disabled-background);
12881
+ border-color: var(--fileupload-dropzone-color-disabled-border);
12882
+ cursor: not-allowed;
12883
+ opacity: 0.6;
12897
12884
  }
12898
12885
 
12899
- .muka-action-sheet__item--disabled,
12900
- .muka-action-sheet__item:disabled {
12901
- opacity: 0.5;
12902
- cursor: not-allowed;
12886
+ /* Hidden file input */
12887
+ .muka-fileupload__input {
12888
+ position: absolute;
12889
+ width: 1px;
12890
+ height: 1px;
12891
+ padding: 0;
12892
+ margin: -1px;
12893
+ overflow: hidden;
12894
+ clip: rect(0, 0, 0, 0);
12895
+ white-space: nowrap;
12896
+ border: 0;
12903
12897
  }
12904
12898
 
12905
- .muka-action-sheet__item-icon {
12906
- display: inline-flex;
12899
+ /* Content container */
12900
+ .muka-fileupload__content {
12901
+ display: flex;
12902
+ flex-direction: column;
12903
+ align-items: center;
12904
+ gap: var(--spacing-2);
12905
+ }
12906
+
12907
+ /* Upload icon */
12908
+ .muka-fileupload__icon {
12909
+ display: flex;
12907
12910
  align-items: center;
12908
12911
  justify-content: center;
12909
- width: 24px;
12910
- height: 24px;
12911
- flex-shrink: 0;
12912
+ width: var(--size-3xl);
12913
+ height: var(--size-3xl);
12914
+ color: var(--fileupload-dropzone-color-default-foreground);
12912
12915
  }
12913
12916
 
12914
- .muka-action-sheet__item-icon svg {
12917
+ .muka-fileupload__icon svg {
12915
12918
  width: 100%;
12916
12919
  height: 100%;
12917
12920
  }
12918
12921
 
12919
- .muka-action-sheet__item-label {
12920
- flex: 1;
12922
+ .muka-fileupload--sm .muka-fileupload__icon {
12923
+ width: var(--size-2xl);
12924
+ height: var(--size-2xl);
12921
12925
  }
12922
12926
 
12923
- /* ─── Cancel button (separate at bottom) ──────────────── */
12927
+ .muka-fileupload--lg .muka-fileupload__icon {
12928
+ width: var(--size-4xl);
12929
+ height: var(--size-4xl);
12930
+ }
12924
12931
 
12925
- .muka-action-sheet__cancel {
12926
- display: flex;
12927
- align-items: center;
12928
- justify-content: center;
12929
- padding: var(--spacing-3) var(--spacing-4);
12930
- background-color: var(--color-surface-level1);
12931
- border: none;
12932
- border-radius: var(--radius-md);
12933
- cursor: pointer;
12932
+ /* Text */
12933
+ .muka-fileupload__text {
12934
+ font-family: var(--text-body-md-regular-fontFamily);
12935
+ font-size: var(--text-body-md-regular-fontSize);
12936
+ font-weight: var(--text-body-md-regular-fontWeight);
12937
+ line-height: var(--text-body-md-regular-lineHeight);
12934
12938
  color: var(--color-text-default-default);
12935
- font-family: var(--text-label-md-semibold-fontFamily);
12936
- font-weight: var(--text-label-md-semibold-fontWeight);
12937
- font-size: var(--text-label-md-semibold-fontSize);
12938
- line-height: var(--text-label-md-semibold-lineHeight);
12939
- -webkit-tap-highlight-color: transparent;
12940
- transition: background-color 0.12s ease;
12941
12939
  }
12942
12940
 
12943
- .muka-action-sheet__cancel:hover {
12944
- background-color: var(--color-surface-level2);
12941
+ .muka-fileupload--sm .muka-fileupload__text {
12942
+ font-size: var(--text-body-sm-regular-fontSize);
12945
12943
  }
12946
12944
 
12947
- .muka-action-sheet__cancel:focus-visible {
12948
- outline: 2px solid var(--color-action-default);
12949
- outline-offset: 2px;
12945
+ /* Hint text */
12946
+ .muka-fileupload__hint {
12947
+ font-family: var(--text-label-sm-regular-fontFamily);
12948
+ font-size: var(--text-label-sm-regular-fontSize);
12949
+ font-weight: var(--text-label-sm-regular-fontWeight);
12950
+ line-height: var(--text-label-sm-regular-lineHeight);
12951
+ color: var(--fileupload-dropzone-color-default-foreground);
12950
12952
  }
12951
12953
 
12954
+ /* File list */
12955
+ .muka-fileupload__list {
12956
+ display: flex;
12957
+ flex-direction: column;
12958
+ gap: var(--spacing-2);
12959
+ list-style: none;
12960
+ margin: 0;
12961
+ padding: 0;
12962
+ }
12952
12963
 
12953
- /* Accordion */
12954
- /* Accordion Component Styles */
12955
-
12956
- .muka-accordion {
12957
- width: 100%;
12964
+ .muka-fileupload__list li {
12965
+ margin: 0;
12966
+ padding: 0;
12958
12967
  }
12959
12968
 
12960
- /* Item */
12961
- .muka-accordion__item {
12962
- border-bottom: var(--border-width-regular) solid var(--color-border-default);
12969
+ /* File item */
12970
+ .muka-fileupload-item {
12971
+ display: flex;
12972
+ align-items: center;
12973
+ gap: var(--fileupload-item-gap);
12974
+ padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
12975
+ background-color: var(--fileupload-item-color-default-background);
12976
+ border-radius: var(--fileupload-item-radius);
12963
12977
  }
12964
12978
 
12965
- .muka-accordion__item:last-child {
12966
- border-bottom: none;
12979
+ .muka-fileupload-item--error {
12980
+ background-color: var(--fileupload-item-color-error-background);
12967
12981
  }
12968
12982
 
12969
- /* Header reset */
12970
- .muka-accordion__header {
12971
- margin: 0;
12983
+ .muka-fileupload-item--success {
12984
+ background-color: var(--fileupload-item-color-default-background);
12972
12985
  }
12973
12986
 
12974
- /* Trigger */
12975
- .muka-accordion__trigger {
12987
+ /* Preview/Icon container */
12988
+ .muka-fileupload-item__preview {
12976
12989
  display: flex;
12977
12990
  align-items: center;
12978
- justify-content: space-between;
12979
- width: 100%;
12980
- padding: var(--spacing-4);
12981
- background: none;
12982
- border: none;
12983
- cursor: pointer;
12984
- font-family: var(--text-label-md-semibold-fontFamily);
12985
- font-weight: var(--text-label-md-semibold-fontWeight);
12986
- font-size: var(--text-label-md-semibold-fontSize);
12987
- line-height: var(--text-label-md-semibold-lineHeight);
12988
- color: var(--color-text-default-default);
12989
- text-align: left;
12990
- gap: var(--spacing-3);
12991
- transition: background-color 0.15s ease;
12992
- }
12993
-
12994
- .muka-accordion__trigger:hover {
12991
+ justify-content: center;
12992
+ flex-shrink: 0;
12993
+ width: var(--fileupload-preview-size);
12994
+ height: var(--fileupload-preview-size);
12995
+ border-radius: var(--fileupload-preview-radius);
12996
+ overflow: hidden;
12995
12997
  background-color: var(--color-surface-level1);
12996
12998
  }
12997
12999
 
12998
- .muka-accordion__trigger[data-disabled] {
12999
- cursor: not-allowed;
13000
- opacity: 0.4;
13001
- }
13002
-
13003
- .muka-accordion__trigger-text {
13004
- flex: 1;
13000
+ .muka-fileupload-item__thumbnail {
13001
+ width: 100%;
13002
+ height: 100%;
13003
+ object-fit: cover;
13005
13004
  }
13006
13005
 
13007
- /* Chevron rotation */
13008
- .muka-accordion__chevron {
13009
- display: inline-flex;
13010
- align-items: center;
13006
+ .muka-fileupload-item__icon {
13011
13007
  color: var(--color-text-subtle-default);
13012
- transition: transform 200ms ease;
13013
13008
  }
13014
13009
 
13015
- .muka-accordion__trigger[data-state='open'] .muka-accordion__chevron {
13016
- transform: rotate(180deg);
13010
+ /* File info */
13011
+ .muka-fileupload-item__info {
13012
+ flex: 1;
13013
+ min-width: 0;
13014
+ display: flex;
13015
+ flex-direction: column;
13016
+ gap: var(--spacing-1);
13017
13017
  }
13018
13018
 
13019
- /* Content */
13020
- .muka-accordion__content {
13019
+ .muka-fileupload-item__name {
13020
+ font-family: var(--text-body-sm-medium-fontFamily);
13021
+ font-size: var(--text-body-sm-medium-fontSize);
13022
+ font-weight: var(--text-body-sm-medium-fontWeight);
13023
+ line-height: var(--text-body-sm-medium-lineHeight);
13024
+ color: var(--fileupload-item-color-default-foreground);
13025
+ white-space: nowrap;
13021
13026
  overflow: hidden;
13027
+ text-overflow: ellipsis;
13022
13028
  }
13023
13029
 
13024
- .muka-accordion__content[data-state='open'] {
13025
- animation: muka-accordion-slideDown 200ms ease;
13026
- }
13027
-
13028
- .muka-accordion__content[data-state='closed'] {
13029
- animation: muka-accordion-slideUp 200ms ease;
13030
+ .muka-fileupload-item--error .muka-fileupload-item__name {
13031
+ color: var(--fileupload-item-color-error-foreground);
13030
13032
  }
13031
13033
 
13032
- @keyframes muka-accordion-slideDown {
13033
- from {
13034
- height: 0;
13035
- }
13036
- to {
13037
- height: var(--radix-accordion-content-height);
13038
- }
13034
+ .muka-fileupload-item__meta {
13035
+ font-family: var(--text-label-sm-regular-fontFamily);
13036
+ font-size: var(--text-label-sm-regular-fontSize);
13037
+ font-weight: var(--text-label-sm-regular-fontWeight);
13038
+ line-height: var(--text-label-sm-regular-lineHeight);
13039
+ color: var(--color-text-subtle-default);
13039
13040
  }
13040
13041
 
13041
- @keyframes muka-accordion-slideUp {
13042
- from {
13043
- height: var(--radix-accordion-content-height);
13044
- }
13045
- to {
13046
- height: 0;
13047
- }
13042
+ .muka-fileupload-item__error {
13043
+ color: var(--fileupload-item-color-error-foreground);
13048
13044
  }
13049
13045
 
13050
- .muka-accordion__content-inner {
13051
- padding: 0 var(--spacing-4) var(--spacing-5);
13052
- color: var(--color-text-default-default);
13046
+ .muka-fileupload-item__progress {
13047
+ margin-top: var(--spacing-1);
13053
13048
  }
13054
13049
 
13055
- /* ─── Variant: flush ────────────────────────────────────────────────────── */
13056
-
13057
- .muka-accordion--flush .muka-accordion__trigger {
13058
- padding-left: 0;
13059
- padding-right: 0;
13050
+ /* Actions */
13051
+ .muka-fileupload-item__actions {
13052
+ display: flex;
13053
+ align-items: center;
13054
+ gap: var(--spacing-2);
13055
+ flex-shrink: 0;
13060
13056
  }
13061
13057
 
13062
- .muka-accordion--flush .muka-accordion__content-inner {
13063
- padding-left: 0;
13064
- padding-right: 0;
13058
+ .muka-fileupload-item__status-icon--success {
13059
+ color: var(--color-state-success-foreground);
13065
13060
  }
13066
13061
 
13067
- /* ─── Variant: contained ────────────────────────────────────────────────── */
13068
-
13069
- .muka-accordion--contained {
13070
- border: var(--border-width-regular) solid var(--color-border-default);
13071
- border-radius: var(--radius-md);
13072
- overflow: hidden;
13062
+ .muka-fileupload-item__status-icon--error {
13063
+ color: var(--color-state-error-foreground);
13073
13064
  }
13074
13065
 
13075
- .muka-accordion--contained .muka-accordion__item {
13076
- background-color: var(--color-surface-level3);
13066
+ .muka-fileupload-item__remove {
13067
+ opacity: 0.7;
13077
13068
  }
13078
13069
 
13079
- .muka-accordion--contained .muka-accordion__item:last-child {
13080
- border-bottom: none;
13070
+ .muka-fileupload-item__remove:hover {
13071
+ opacity: 1;
13081
13072
  }
13082
13073