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