@revikornmann/muka-ui 0.28.0 → 0.28.1

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.
@@ -2472,38 +2472,6 @@ body {
2472
2472
  }
2473
2473
 
2474
2474
 
2475
- /* VoiceMessage */
2476
- /* VoiceMessage Component Styles */
2477
-
2478
- .muka-voice-message {
2479
- display: flex;
2480
- align-items: center;
2481
- gap: var(--spacing-3);
2482
- width: 100%;
2483
- min-width: min(16rem, 60vw);
2484
- }
2485
-
2486
- .muka-voice-message__wave {
2487
- flex: 1 1 auto;
2488
- min-width: 0;
2489
- }
2490
-
2491
- .muka-voice-message__time {
2492
- flex: 0 0 auto;
2493
- white-space: nowrap;
2494
- font-size: var(--text-label-sm-fontSize, 0.75rem);
2495
- line-height: var(--text-label-sm-lineHeight, 1);
2496
- font-variant-numeric: tabular-nums;
2497
- color: var(--color-text-subtle-default);
2498
- }
2499
-
2500
- /* On the tinted own bubble the surface is the action color, so the timer flips
2501
- * to the inverse text token for contrast. */
2502
- .muka-voice-message--own .muka-voice-message__time {
2503
- color: var(--color-text-default-inverse);
2504
- }
2505
-
2506
-
2507
2475
  /* View */
2508
2476
  /* View Component Styles */
2509
2477
 
@@ -2614,6 +2582,38 @@ body {
2614
2582
  }
2615
2583
 
2616
2584
 
2585
+ /* VoiceMessage */
2586
+ /* VoiceMessage Component Styles */
2587
+
2588
+ .muka-voice-message {
2589
+ display: flex;
2590
+ align-items: center;
2591
+ gap: var(--spacing-3);
2592
+ width: 100%;
2593
+ min-width: min(16rem, 60vw);
2594
+ }
2595
+
2596
+ .muka-voice-message__wave {
2597
+ flex: 1 1 auto;
2598
+ min-width: 0;
2599
+ }
2600
+
2601
+ .muka-voice-message__time {
2602
+ flex: 0 0 auto;
2603
+ white-space: nowrap;
2604
+ font-size: var(--text-label-sm-fontSize, 0.75rem);
2605
+ line-height: var(--text-label-sm-lineHeight, 1);
2606
+ font-variant-numeric: tabular-nums;
2607
+ color: var(--color-text-subtle-default);
2608
+ }
2609
+
2610
+ /* On the tinted own bubble the surface is the action color, so the timer flips
2611
+ * to the inverse text token for contrast. */
2612
+ .muka-voice-message--own .muka-voice-message__time {
2613
+ color: var(--color-text-default-inverse);
2614
+ }
2615
+
2616
+
2617
2617
  /* Typography */
2618
2618
  .muka-typography-catalog {
2619
2619
  display: flex;
@@ -7381,6 +7381,178 @@ body {
7381
7381
  }
7382
7382
 
7383
7383
 
7384
+ /* Progress */
7385
+ /* Progress Component Styles - Using Muka Design Tokens */
7386
+
7387
+ /* ========================================
7388
+ BAR VARIANT
7389
+ ======================================== */
7390
+
7391
+ .muka-progress--bar {
7392
+ display: flex;
7393
+ align-items: center;
7394
+ gap: var(--spacing-2);
7395
+ width: 100%;
7396
+ }
7397
+
7398
+ .muka-progress--bar .muka-progress__track {
7399
+ flex: 1;
7400
+ background-color: var(--color-surface-level1);
7401
+ border-radius: var(--border-radius-full);
7402
+ overflow: hidden;
7403
+ }
7404
+
7405
+ .muka-progress--bar.muka-progress--sm .muka-progress__track {
7406
+ height: var(--progress-size-bar-height-sm);
7407
+ }
7408
+
7409
+ .muka-progress--bar.muka-progress--md .muka-progress__track {
7410
+ height: var(--progress-size-bar-height-md);
7411
+ }
7412
+
7413
+ .muka-progress--bar.muka-progress--lg .muka-progress__track {
7414
+ height: var(--progress-size-bar-height-lg);
7415
+ }
7416
+
7417
+ .muka-progress--bar .muka-progress__fill {
7418
+ height: 100%;
7419
+ background-color: var(--color-action-default);
7420
+ border-radius: var(--border-radius-full);
7421
+ transition: width 0.3s ease;
7422
+ }
7423
+
7424
+ .muka-progress--bar .muka-progress__label {
7425
+ flex-shrink: 0;
7426
+ font-family: var(--text-label-sm-semibold-fontFamily);
7427
+ font-weight: var(--text-label-sm-semibold-fontWeight);
7428
+ font-size: var(--text-label-sm-semibold-fontSize);
7429
+ line-height: var(--text-label-sm-semibold-lineHeight);
7430
+ color: var(--color-text-default-default);
7431
+ min-width: 3ch;
7432
+ text-align: right;
7433
+ }
7434
+
7435
+ /* Indeterminate animation for bar */
7436
+ .muka-progress--bar.muka-progress--indeterminate .muka-progress__fill {
7437
+ width: 40%;
7438
+ animation: muka-progress-bar-indeterminate 1.5s ease-in-out infinite;
7439
+ }
7440
+
7441
+ @keyframes muka-progress-bar-indeterminate {
7442
+ 0% {
7443
+ transform: translateX(-100%);
7444
+ }
7445
+ 100% {
7446
+ transform: translateX(250%);
7447
+ }
7448
+ }
7449
+
7450
+ /* ========================================
7451
+ CIRCLE VARIANT
7452
+ ======================================== */
7453
+
7454
+ .muka-progress--circle {
7455
+ position: relative;
7456
+ display: inline-flex;
7457
+ align-items: center;
7458
+ justify-content: center;
7459
+ }
7460
+
7461
+ .muka-progress--circle.muka-progress--sm {
7462
+ width: var(--progress-size-circle-diameter-sm);
7463
+ height: var(--progress-size-circle-diameter-sm);
7464
+ }
7465
+
7466
+ .muka-progress--circle.muka-progress--md {
7467
+ width: var(--progress-size-circle-diameter-md);
7468
+ height: var(--progress-size-circle-diameter-md);
7469
+ }
7470
+
7471
+ .muka-progress--circle.muka-progress--lg {
7472
+ width: var(--progress-size-circle-diameter-lg);
7473
+ height: var(--progress-size-circle-diameter-lg);
7474
+ }
7475
+
7476
+ .muka-progress__circle {
7477
+ width: 100%;
7478
+ height: 100%;
7479
+ transform: rotate(-90deg);
7480
+ }
7481
+
7482
+ .muka-progress--circle .muka-progress__track {
7483
+ fill: none;
7484
+ stroke: var(--color-surface-level1);
7485
+ }
7486
+
7487
+ .muka-progress--circle.muka-progress--sm .muka-progress__track,
7488
+ .muka-progress--circle.muka-progress--sm .muka-progress__fill {
7489
+ stroke-width: var(--progress-size-circle-strokeWidth-sm);
7490
+ }
7491
+
7492
+ .muka-progress--circle.muka-progress--md .muka-progress__track,
7493
+ .muka-progress--circle.muka-progress--md .muka-progress__fill {
7494
+ stroke-width: var(--progress-size-circle-strokeWidth-md);
7495
+ }
7496
+
7497
+ .muka-progress--circle.muka-progress--lg .muka-progress__track,
7498
+ .muka-progress--circle.muka-progress--lg .muka-progress__fill {
7499
+ stroke-width: var(--progress-size-circle-strokeWidth-lg);
7500
+ }
7501
+
7502
+ .muka-progress--circle .muka-progress__fill {
7503
+ fill: none;
7504
+ stroke: var(--color-action-default);
7505
+ stroke-linecap: round;
7506
+ transition: stroke-dashoffset 0.3s ease;
7507
+ }
7508
+
7509
+ .muka-progress--circle .muka-progress__label {
7510
+ position: absolute;
7511
+ font-family: var(--text-label-sm-semibold-fontFamily);
7512
+ font-weight: var(--text-label-sm-semibold-fontWeight);
7513
+ color: var(--color-text-default-default);
7514
+ }
7515
+
7516
+ .muka-progress--circle.muka-progress--sm .muka-progress__label {
7517
+ font-size: var(--text-label-sm-semibold-fontSize);
7518
+ }
7519
+
7520
+ .muka-progress--circle.muka-progress--md .muka-progress__label {
7521
+ font-size: var(--text-label-md-semibold-fontSize);
7522
+ }
7523
+
7524
+ .muka-progress--circle.muka-progress--lg .muka-progress__label {
7525
+ font-size: var(--text-label-lg-semibold-fontSize);
7526
+ }
7527
+
7528
+ /* Indeterminate animation for circle */
7529
+ .muka-progress--circle.muka-progress--indeterminate .muka-progress__circle {
7530
+ animation: muka-progress-circle-rotate 2s linear infinite;
7531
+ }
7532
+
7533
+ .muka-progress--circle.muka-progress--indeterminate .muka-progress__fill {
7534
+ animation: muka-progress-circle-dash 1.5s ease-in-out infinite;
7535
+ }
7536
+
7537
+ @keyframes muka-progress-circle-rotate {
7538
+ 100% {
7539
+ transform: rotate(270deg);
7540
+ }
7541
+ }
7542
+
7543
+ @keyframes muka-progress-circle-dash {
7544
+ 0% {
7545
+ stroke-dashoffset: 220;
7546
+ }
7547
+ 50% {
7548
+ stroke-dashoffset: 70;
7549
+ }
7550
+ 100% {
7551
+ stroke-dashoffset: 220;
7552
+ }
7553
+ }
7554
+
7555
+
7384
7556
  /* ProfileBadge */
7385
7557
  /* ProfileBadge Component Styles - Using Muka Design Tokens */
7386
7558
 
@@ -7452,115 +7624,18 @@ body {
7452
7624
  }
7453
7625
 
7454
7626
 
7455
- /* PriceTag */
7456
- /* PriceTag Component Styles - Using Muka Design Tokens */
7627
+ /* Popover */
7628
+ /* Popover Component Styles */
7457
7629
 
7458
- .muka-price-tag {
7459
- display: flex;
7460
- flex-shrink: 0;
7461
- }
7462
-
7463
- /* Medium: stacked layout (price on top, unit below) */
7464
- .muka-price-tag--md {
7465
- flex-direction: column;
7466
- align-items: flex-end;
7467
- justify-content: center;
7468
- }
7469
-
7470
- /* Small: inline layout */
7471
- .muka-price-tag--sm {
7472
- flex-direction: row;
7473
- align-items: center;
7474
- gap: 3px;
7475
- }
7476
-
7477
- /* Amount row: currency + numbers */
7478
- .muka-price-tag__amount {
7479
- display: flex;
7480
- align-items: flex-start;
7481
- gap: var(--spacing-1);
7482
- }
7483
-
7484
- .muka-price-tag--sm .muka-price-tag__amount {
7485
- align-items: center;
7486
- }
7487
-
7488
- /* Numbers group: whole + decimal + cents */
7489
- .muka-price-tag__numbers {
7490
- display: flex;
7491
- align-items: baseline;
7492
- }
7493
-
7494
- /* ─── Medium size typography ──────────────────────────── */
7495
-
7496
- .muka-price-tag--md .muka-price-tag__currency {
7497
- font-family: var(--text-subheading-md-fontFamily);
7498
- font-weight: var(--text-subheading-md-fontWeight);
7499
- font-size: var(--text-subheading-md-fontSize);
7500
- line-height: var(--text-label-2xl-bold-lineHeight);
7501
- color: var(--color-text-subtle-default);
7502
- }
7503
-
7504
- .muka-price-tag--md .muka-price-tag__whole {
7505
- font-family: var(--text-label-2xl-bold-fontFamily);
7506
- font-weight: var(--text-label-2xl-bold-fontWeight);
7507
- font-size: var(--text-label-2xl-bold-fontSize);
7508
- line-height: var(--text-label-2xl-bold-lineHeight);
7509
- color: var(--color-text-default-default);
7510
- }
7511
-
7512
- .muka-price-tag--md .muka-price-tag__decimal,
7513
- .muka-price-tag--md .muka-price-tag__cents {
7514
- font-family: var(--text-label-md-bold-fontFamily);
7515
- font-weight: var(--text-label-md-bold-fontWeight);
7516
- font-size: var(--text-label-md-bold-fontSize);
7517
- line-height: var(--text-label-md-bold-lineHeight);
7518
- color: var(--color-text-default-default);
7519
- }
7520
-
7521
- /* ─── Small size typography ───────────────────────────── */
7522
-
7523
- .muka-price-tag--sm .muka-price-tag__currency {
7524
- font-family: var(--text-body-base-regular-fontFamily);
7525
- font-weight: var(--text-body-base-regular-fontWeight);
7526
- font-size: var(--text-body-base-regular-fontSize);
7527
- line-height: var(--text-label-md-bold-lineHeight);
7528
- color: var(--color-text-subtle-default);
7529
- }
7530
-
7531
- .muka-price-tag--sm .muka-price-tag__whole,
7532
- .muka-price-tag--sm .muka-price-tag__decimal,
7533
- .muka-price-tag--sm .muka-price-tag__cents {
7534
- font-family: var(--text-label-md-bold-fontFamily);
7535
- font-weight: var(--text-label-md-bold-fontWeight);
7536
- font-size: var(--text-label-md-bold-fontSize);
7537
- line-height: var(--text-label-md-bold-lineHeight);
7538
- color: var(--color-text-default-default);
7539
- }
7540
-
7541
- /* ─── Unit label (same for both sizes) ────────────────── */
7542
-
7543
- .muka-price-tag__unit {
7544
- font-family: var(--text-body-sm-regular-fontFamily);
7545
- font-weight: var(--text-body-sm-regular-fontWeight);
7546
- font-size: var(--text-body-sm-regular-fontSize);
7547
- line-height: var(--text-body-sm-regular-lineHeight);
7548
- color: var(--color-text-subtle-default);
7549
- }
7550
-
7551
-
7552
- /* Popover */
7553
- /* Popover Component Styles */
7554
-
7555
- .muka-popover__content {
7556
- background-color: var(--color-surface-level3);
7557
- border: var(--border-width-regular) solid var(--color-border-default);
7558
- border-radius: var(--radius-md);
7559
- padding: var(--spacing-4);
7560
- box-shadow: var(--shadow-level3);
7561
- max-width: 20rem;
7562
- z-index: 50;
7563
- animation: muka-popover-fade-in 150ms ease;
7630
+ .muka-popover__content {
7631
+ background-color: var(--color-surface-level3);
7632
+ border: var(--border-width-regular) solid var(--color-border-default);
7633
+ border-radius: var(--radius-md);
7634
+ padding: var(--spacing-4);
7635
+ box-shadow: var(--shadow-level3);
7636
+ max-width: 20rem;
7637
+ z-index: 50;
7638
+ animation: muka-popover-fade-in 150ms ease;
7564
7639
  }
7565
7640
 
7566
7641
  @keyframes muka-popover-fade-in {
@@ -7805,197 +7880,122 @@ body {
7805
7880
  }
7806
7881
 
7807
7882
 
7808
- /* Progress */
7809
- /* Progress Component Styles - Using Muka Design Tokens */
7810
-
7811
- /* ========================================
7812
- BAR VARIANT
7813
- ======================================== */
7883
+ /* PriceTag */
7884
+ /* PriceTag Component Styles - Using Muka Design Tokens */
7814
7885
 
7815
- .muka-progress--bar {
7886
+ .muka-price-tag {
7816
7887
  display: flex;
7817
- align-items: center;
7818
- gap: var(--spacing-2);
7819
- width: 100%;
7888
+ flex-shrink: 0;
7820
7889
  }
7821
7890
 
7822
- .muka-progress--bar .muka-progress__track {
7823
- flex: 1;
7824
- background-color: var(--color-surface-level1);
7825
- border-radius: var(--border-radius-full);
7826
- overflow: hidden;
7891
+ /* Medium: stacked layout (price on top, unit below) */
7892
+ .muka-price-tag--md {
7893
+ flex-direction: column;
7894
+ align-items: flex-end;
7895
+ justify-content: center;
7827
7896
  }
7828
7897
 
7829
- .muka-progress--bar.muka-progress--sm .muka-progress__track {
7830
- height: var(--progress-size-bar-height-sm);
7898
+ /* Small: inline layout */
7899
+ .muka-price-tag--sm {
7900
+ flex-direction: row;
7901
+ align-items: center;
7902
+ gap: 3px;
7831
7903
  }
7832
7904
 
7833
- .muka-progress--bar.muka-progress--md .muka-progress__track {
7834
- height: var(--progress-size-bar-height-md);
7905
+ /* Amount row: currency + numbers */
7906
+ .muka-price-tag__amount {
7907
+ display: flex;
7908
+ align-items: flex-start;
7909
+ gap: var(--spacing-1);
7835
7910
  }
7836
7911
 
7837
- .muka-progress--bar.muka-progress--lg .muka-progress__track {
7838
- height: var(--progress-size-bar-height-lg);
7912
+ .muka-price-tag--sm .muka-price-tag__amount {
7913
+ align-items: center;
7839
7914
  }
7840
7915
 
7841
- .muka-progress--bar .muka-progress__fill {
7842
- height: 100%;
7843
- background-color: var(--color-action-default);
7844
- border-radius: var(--border-radius-full);
7845
- transition: width 0.3s ease;
7916
+ /* Numbers group: whole + decimal + cents */
7917
+ .muka-price-tag__numbers {
7918
+ display: flex;
7919
+ align-items: baseline;
7846
7920
  }
7847
7921
 
7848
- .muka-progress--bar .muka-progress__label {
7849
- flex-shrink: 0;
7850
- font-family: var(--text-label-sm-semibold-fontFamily);
7851
- font-weight: var(--text-label-sm-semibold-fontWeight);
7852
- font-size: var(--text-label-sm-semibold-fontSize);
7853
- line-height: var(--text-label-sm-semibold-lineHeight);
7854
- color: var(--color-text-default-default);
7855
- min-width: 3ch;
7856
- text-align: right;
7922
+ /* ─── Medium size typography ──────────────────────────── */
7923
+
7924
+ .muka-price-tag--md .muka-price-tag__currency {
7925
+ font-family: var(--text-subheading-md-fontFamily);
7926
+ font-weight: var(--text-subheading-md-fontWeight);
7927
+ font-size: var(--text-subheading-md-fontSize);
7928
+ line-height: var(--text-label-2xl-bold-lineHeight);
7929
+ color: var(--color-text-subtle-default);
7857
7930
  }
7858
7931
 
7859
- /* Indeterminate animation for bar */
7860
- .muka-progress--bar.muka-progress--indeterminate .muka-progress__fill {
7861
- width: 40%;
7862
- animation: muka-progress-bar-indeterminate 1.5s ease-in-out infinite;
7932
+ .muka-price-tag--md .muka-price-tag__whole {
7933
+ font-family: var(--text-label-2xl-bold-fontFamily);
7934
+ font-weight: var(--text-label-2xl-bold-fontWeight);
7935
+ font-size: var(--text-label-2xl-bold-fontSize);
7936
+ line-height: var(--text-label-2xl-bold-lineHeight);
7937
+ color: var(--color-text-default-default);
7863
7938
  }
7864
7939
 
7865
- @keyframes muka-progress-bar-indeterminate {
7866
- 0% {
7867
- transform: translateX(-100%);
7868
- }
7869
- 100% {
7870
- transform: translateX(250%);
7871
- }
7940
+ .muka-price-tag--md .muka-price-tag__decimal,
7941
+ .muka-price-tag--md .muka-price-tag__cents {
7942
+ font-family: var(--text-label-md-bold-fontFamily);
7943
+ font-weight: var(--text-label-md-bold-fontWeight);
7944
+ font-size: var(--text-label-md-bold-fontSize);
7945
+ line-height: var(--text-label-md-bold-lineHeight);
7946
+ color: var(--color-text-default-default);
7872
7947
  }
7873
7948
 
7874
- /* ========================================
7875
- CIRCLE VARIANT
7876
- ======================================== */
7949
+ /* ─── Small size typography ───────────────────────────── */
7877
7950
 
7878
- .muka-progress--circle {
7879
- position: relative;
7880
- display: inline-flex;
7881
- align-items: center;
7882
- justify-content: center;
7951
+ .muka-price-tag--sm .muka-price-tag__currency {
7952
+ font-family: var(--text-body-base-regular-fontFamily);
7953
+ font-weight: var(--text-body-base-regular-fontWeight);
7954
+ font-size: var(--text-body-base-regular-fontSize);
7955
+ line-height: var(--text-label-md-bold-lineHeight);
7956
+ color: var(--color-text-subtle-default);
7883
7957
  }
7884
7958
 
7885
- .muka-progress--circle.muka-progress--sm {
7886
- width: var(--progress-size-circle-diameter-sm);
7887
- height: var(--progress-size-circle-diameter-sm);
7959
+ .muka-price-tag--sm .muka-price-tag__whole,
7960
+ .muka-price-tag--sm .muka-price-tag__decimal,
7961
+ .muka-price-tag--sm .muka-price-tag__cents {
7962
+ font-family: var(--text-label-md-bold-fontFamily);
7963
+ font-weight: var(--text-label-md-bold-fontWeight);
7964
+ font-size: var(--text-label-md-bold-fontSize);
7965
+ line-height: var(--text-label-md-bold-lineHeight);
7966
+ color: var(--color-text-default-default);
7888
7967
  }
7889
7968
 
7890
- .muka-progress--circle.muka-progress--md {
7891
- width: var(--progress-size-circle-diameter-md);
7892
- height: var(--progress-size-circle-diameter-md);
7893
- }
7969
+ /* ─── Unit label (same for both sizes) ────────────────── */
7894
7970
 
7895
- .muka-progress--circle.muka-progress--lg {
7896
- width: var(--progress-size-circle-diameter-lg);
7897
- height: var(--progress-size-circle-diameter-lg);
7971
+ .muka-price-tag__unit {
7972
+ font-family: var(--text-body-sm-regular-fontFamily);
7973
+ font-weight: var(--text-body-sm-regular-fontWeight);
7974
+ font-size: var(--text-body-sm-regular-fontSize);
7975
+ line-height: var(--text-body-sm-regular-lineHeight);
7976
+ color: var(--color-text-subtle-default);
7898
7977
  }
7899
7978
 
7900
- .muka-progress__circle {
7979
+
7980
+ /* PhotoDraftStrip */
7981
+ /* PhotoDraftStrip Component Styles */
7982
+
7983
+ .muka-photo-draft-strip {
7984
+ display: flex;
7985
+ align-items: center;
7986
+ gap: var(--spacing-3);
7901
7987
  width: 100%;
7902
- height: 100%;
7903
- transform: rotate(-90deg);
7988
+ padding: var(--spacing-2) 0;
7904
7989
  }
7905
7990
 
7906
- .muka-progress--circle .muka-progress__track {
7907
- fill: none;
7908
- stroke: var(--color-surface-level1);
7909
- }
7910
-
7911
- .muka-progress--circle.muka-progress--sm .muka-progress__track,
7912
- .muka-progress--circle.muka-progress--sm .muka-progress__fill {
7913
- stroke-width: var(--progress-size-circle-strokeWidth-sm);
7914
- }
7915
-
7916
- .muka-progress--circle.muka-progress--md .muka-progress__track,
7917
- .muka-progress--circle.muka-progress--md .muka-progress__fill {
7918
- stroke-width: var(--progress-size-circle-strokeWidth-md);
7919
- }
7920
-
7921
- .muka-progress--circle.muka-progress--lg .muka-progress__track,
7922
- .muka-progress--circle.muka-progress--lg .muka-progress__fill {
7923
- stroke-width: var(--progress-size-circle-strokeWidth-lg);
7924
- }
7925
-
7926
- .muka-progress--circle .muka-progress__fill {
7927
- fill: none;
7928
- stroke: var(--color-action-default);
7929
- stroke-linecap: round;
7930
- transition: stroke-dashoffset 0.3s ease;
7931
- }
7932
-
7933
- .muka-progress--circle .muka-progress__label {
7934
- position: absolute;
7935
- font-family: var(--text-label-sm-semibold-fontFamily);
7936
- font-weight: var(--text-label-sm-semibold-fontWeight);
7937
- color: var(--color-text-default-default);
7938
- }
7939
-
7940
- .muka-progress--circle.muka-progress--sm .muka-progress__label {
7941
- font-size: var(--text-label-sm-semibold-fontSize);
7942
- }
7943
-
7944
- .muka-progress--circle.muka-progress--md .muka-progress__label {
7945
- font-size: var(--text-label-md-semibold-fontSize);
7946
- }
7947
-
7948
- .muka-progress--circle.muka-progress--lg .muka-progress__label {
7949
- font-size: var(--text-label-lg-semibold-fontSize);
7950
- }
7951
-
7952
- /* Indeterminate animation for circle */
7953
- .muka-progress--circle.muka-progress--indeterminate .muka-progress__circle {
7954
- animation: muka-progress-circle-rotate 2s linear infinite;
7955
- }
7956
-
7957
- .muka-progress--circle.muka-progress--indeterminate .muka-progress__fill {
7958
- animation: muka-progress-circle-dash 1.5s ease-in-out infinite;
7959
- }
7960
-
7961
- @keyframes muka-progress-circle-rotate {
7962
- 100% {
7963
- transform: rotate(270deg);
7964
- }
7965
- }
7966
-
7967
- @keyframes muka-progress-circle-dash {
7968
- 0% {
7969
- stroke-dashoffset: 220;
7970
- }
7971
- 50% {
7972
- stroke-dashoffset: 70;
7973
- }
7974
- 100% {
7975
- stroke-dashoffset: 220;
7976
- }
7977
- }
7978
-
7979
-
7980
- /* PhotoDraftStrip */
7981
- /* PhotoDraftStrip Component Styles */
7982
-
7983
- .muka-photo-draft-strip {
7984
- display: flex;
7985
- align-items: center;
7986
- gap: var(--spacing-3);
7987
- width: 100%;
7988
- padding: var(--spacing-2) 0;
7989
- }
7990
-
7991
- .muka-photo-draft-strip__track {
7992
- display: flex;
7993
- gap: var(--spacing-2);
7994
- flex: 1 1 auto;
7995
- min-width: 0;
7996
- overflow-x: auto;
7997
- scroll-behavior: smooth;
7998
- scrollbar-width: none;
7991
+ .muka-photo-draft-strip__track {
7992
+ display: flex;
7993
+ gap: var(--spacing-2);
7994
+ flex: 1 1 auto;
7995
+ min-width: 0;
7996
+ overflow-x: auto;
7997
+ scroll-behavior: smooth;
7998
+ scrollbar-width: none;
7999
7999
  }
8000
8000
 
8001
8001
  .muka-photo-draft-strip__track::-webkit-scrollbar {
@@ -8139,34 +8139,6 @@ body {
8139
8139
  }
8140
8140
 
8141
8141
 
8142
- /* NavigationTransition */
8143
- /* NavigationTransition Component Styles */
8144
-
8145
- /* ─── Wrapper ────────────────────────────────────────── */
8146
-
8147
- .muka-nav-transition {
8148
- position: relative;
8149
- height: 100vh;
8150
- overflow: hidden;
8151
- }
8152
-
8153
- /* Disable interaction during animation */
8154
- .muka-nav-transition--active {
8155
- pointer-events: none;
8156
- }
8157
-
8158
- /* ─── View slots ─────────────────────────────────────── */
8159
-
8160
- .muka-nav-transition--active .muka-nav-transition__view {
8161
- position: absolute;
8162
- inset: 0;
8163
- }
8164
-
8165
- /* Z-index layering */
8166
- .muka-nav-transition__view--bottom { z-index: 1; }
8167
- .muka-nav-transition__view--top { z-index: 2; }
8168
-
8169
-
8170
8142
  /* Menu */
8171
8143
  /* Menu Component Styles */
8172
8144
 
@@ -8737,7 +8709,10 @@ body {
8737
8709
  max-width: 100%;
8738
8710
  max-height: 100%;
8739
8711
  object-fit: contain;
8740
- pointer-events: none;
8712
+ /* The image takes touches, so a long press opens the OS menu (save, share,
8713
+ copy). The swipe still works: pointer events bubble to the stage, and a
8714
+ long press doesn't move far enough to start a drag. */
8715
+ -webkit-touch-callout: default;
8741
8716
  }
8742
8717
 
8743
8718
  /* ─── Previous / next: devices that can hover ─────────── */
@@ -8829,6 +8804,34 @@ body {
8829
8804
  }
8830
8805
 
8831
8806
 
8807
+ /* NavigationTransition */
8808
+ /* NavigationTransition Component Styles */
8809
+
8810
+ /* ─── Wrapper ────────────────────────────────────────── */
8811
+
8812
+ .muka-nav-transition {
8813
+ position: relative;
8814
+ height: 100vh;
8815
+ overflow: hidden;
8816
+ }
8817
+
8818
+ /* Disable interaction during animation */
8819
+ .muka-nav-transition--active {
8820
+ pointer-events: none;
8821
+ }
8822
+
8823
+ /* ─── View slots ─────────────────────────────────────── */
8824
+
8825
+ .muka-nav-transition--active .muka-nav-transition__view {
8826
+ position: absolute;
8827
+ inset: 0;
8828
+ }
8829
+
8830
+ /* Z-index layering */
8831
+ .muka-nav-transition__view--bottom { z-index: 1; }
8832
+ .muka-nav-transition__view--top { z-index: 2; }
8833
+
8834
+
8832
8835
  /* ListItem */
8833
8836
  /* ListItem Component Styles - Using Muka Design Tokens */
8834
8837
 
@@ -9023,255 +9026,62 @@ li.muka-listitem {
9023
9026
  }
9024
9027
 
9025
9028
 
9026
- /* LicensePlateInput */
9027
- /* LicensePlateInput — Dutch RDW-style plate input
9028
- *
9029
- * Plate body colors are regulatory (EU/NL) and intentionally fixed:
9030
- * - Plate yellow: #F0CE3D
9031
- * - EU strip blue: #003399
9032
- * - EU stars yellow: #FFCC00
9033
- * - Plate text: #1A1A1A
9034
- *
9035
- * All surrounding UI (label, helper, focus ring, error border) uses Muka tokens.
9036
- */
9037
-
9038
- .muka-license-plate-input {
9039
- --plate-yellow: #f0ce3d;
9040
- --plate-blue: #003399;
9041
- --plate-text: #1a1a1a;
9042
- --plate-stars: #ffcc00;
9029
+ /* Label */
9030
+ /* Label Component Styles - Using Muka Design Tokens */
9043
9031
 
9032
+ .muka-label {
9044
9033
  display: inline-flex;
9045
- flex-direction: column;
9046
- gap: var(--spacing-2);
9034
+ align-items: center;
9035
+ color: var(--color-text-default-default);
9036
+ cursor: pointer;
9047
9037
  }
9048
9038
 
9049
- /* Plate body */
9050
- .muka-license-plate-input__plate {
9051
- display: inline-flex;
9052
- align-items: stretch;
9053
- background-color: var(--plate-yellow);
9054
- border-radius: var(--input-field-radius-md);
9055
- cursor: text;
9056
- position: relative;
9057
- overflow: hidden;
9058
- box-sizing: border-box;
9059
- /* Subtle outline to lift the plate from light backgrounds */
9060
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
9061
- /* Reserve space for the focus / error solid ring without shifting layout */
9062
- outline: 3px solid transparent;
9063
- outline-offset: 2px;
9064
- transition: outline-color 0.15s ease, opacity 0.15s ease;
9039
+ .muka-label--sm {
9040
+ font-family: var(--text-label-sm-semibold-fontFamily);
9041
+ font-weight: var(--text-label-sm-semibold-fontWeight);
9042
+ font-size: var(--text-label-sm-semibold-fontSize);
9043
+ line-height: var(--text-label-sm-semibold-lineHeight);
9065
9044
  }
9066
9045
 
9067
- /* Size variants — plate aspect echoes the real RDW plate (~5:1) */
9068
- .muka-license-plate-input__plate--sm {
9069
- height: 44px;
9070
- min-width: 220px;
9071
- border-radius: var(--input-field-radius-sm);
9046
+ .muka-label--md {
9047
+ font-family: var(--text-label-md-semibold-fontFamily);
9048
+ font-weight: var(--text-label-md-semibold-fontWeight);
9049
+ font-size: var(--text-label-md-semibold-fontSize);
9050
+ line-height: var(--text-label-md-semibold-lineHeight);
9072
9051
  }
9073
9052
 
9074
- .muka-license-plate-input__plate--md {
9075
- height: 60px;
9076
- min-width: 300px;
9077
- border-radius: var(--input-field-radius-md);
9053
+ .muka-label--lg {
9054
+ font-family: var(--text-label-lg-semibold-fontFamily);
9055
+ font-weight: var(--text-label-lg-semibold-fontWeight);
9056
+ font-size: var(--text-label-lg-semibold-fontSize);
9057
+ line-height: var(--text-label-lg-semibold-lineHeight);
9078
9058
  }
9079
9059
 
9080
- .muka-license-plate-input__plate--lg {
9081
- height: 80px;
9082
- min-width: 400px;
9083
- border-radius: var(--input-field-radius-lg);
9060
+ .muka-label--disabled {
9061
+ color: var(--color-text-subtle-default);
9062
+ cursor: not-allowed;
9084
9063
  }
9085
9064
 
9086
- /* Focus — solid outline ring */
9087
- .muka-license-plate-input__plate--focused:not(.muka-license-plate-input__plate--disabled) {
9088
- outline-color: var(--input-field-color-focus-border);
9065
+ .muka-label__required {
9066
+ color: var(--color-state-error-default);
9089
9067
  }
9090
9068
 
9091
- /* Error — solid outline ring in error color */
9092
- .muka-license-plate-input__plate--error:not(.muka-license-plate-input__plate--disabled) {
9093
- outline-color: var(--input-field-color-error-border);
9094
- }
9095
9069
 
9096
- /* Disabled */
9097
- .muka-license-plate-input__plate--disabled {
9098
- cursor: not-allowed;
9099
- opacity: 0.55;
9100
- }
9070
+ /* InputCounter */
9071
+ /* InputCounter — numeric field + joined decrement/increment buttons.
9072
+ Label, helper and error text reuse Input.css (../Input/Input.css).
9073
+ Field and button group share one radius per size:
9074
+ sm/md → input.field.radius.md, lg → input.field.radius.lg. */
9075
+
9076
+ .muka-inputcounter {
9077
+ --muka-inputcounter-radius: var(--input-field-radius-md);
9078
+ --muka-inputcounter-height: var(--input-field-height-default);
9079
+ --muka-inputcounter-pad: calc(var(--spacing-2) + var(--spacing-1));
9080
+ --muka-inputcounter-min: var(--size-3xl);
9101
9081
 
9102
- /* EU strip */
9103
- .muka-license-plate-input__eu-strip {
9104
9082
  display: inline-flex;
9105
9083
  flex-direction: column;
9106
- align-items: center;
9107
- justify-content: center;
9108
- background-color: var(--plate-blue);
9109
- color: #ffffff;
9110
- flex-shrink: 0;
9111
- padding: 0 0.4em;
9112
- gap: 0.15em;
9113
- /* Strip width scales with plate height for a consistent ratio */
9114
- width: 14%;
9115
- min-width: 36px;
9116
- }
9117
-
9118
- .muka-license-plate-input__eu-stars {
9119
- width: 60%;
9120
- max-width: 28px;
9121
- aspect-ratio: 1 / 1;
9122
- display: block;
9123
- }
9124
-
9125
- .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
9126
- max-width: 20px;
9127
- }
9128
-
9129
- .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
9130
- max-width: 36px;
9131
- }
9132
-
9133
- .muka-license-plate-input__country-code {
9134
- font-family:
9135
- 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
9136
- font-weight: 700;
9137
- letter-spacing: 0.04em;
9138
- line-height: 1;
9139
- color: #ffffff;
9140
- }
9141
-
9142
- .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
9143
- font-size: 10px;
9144
- }
9145
-
9146
- .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
9147
- font-size: 13px;
9148
- }
9149
-
9150
- .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
9151
- font-size: 16px;
9152
- }
9153
-
9154
- /* Native input */
9155
- .muka-license-plate-input__native {
9156
- flex: 1;
9157
- min-width: 0;
9158
- border: none;
9159
- outline: none;
9160
- background: transparent;
9161
- color: var(--plate-text);
9162
- text-align: center;
9163
- text-transform: uppercase;
9164
- letter-spacing: 0.06em;
9165
- /* Plate font — bold condensed sans is closest to the FE-Schrift look without
9166
- shipping a custom font. JetBrains Mono is the system mono brand font. */
9167
- font-family:
9168
- 'Arial Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif;
9169
- font-weight: 800;
9170
- padding: 0 0.5em;
9171
- width: 100%;
9172
- caret-color: var(--plate-text);
9173
- }
9174
-
9175
- .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
9176
- font-size: 22px;
9177
- }
9178
-
9179
- .muka-license-plate-input__plate--md .muka-license-plate-input__native {
9180
- font-size: 30px;
9181
- }
9182
-
9183
- .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
9184
- font-size: 42px;
9185
- }
9186
-
9187
- .muka-license-plate-input__native::placeholder {
9188
- color: var(--plate-text);
9189
- opacity: 0.55;
9190
- font-weight: 700;
9191
- letter-spacing: 0.08em;
9192
- }
9193
-
9194
- .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
9195
- cursor: not-allowed;
9196
- }
9197
-
9198
- /* Helper text */
9199
- .muka-license-plate-input__helper {
9200
- font-family: var(--text-label-sm-regular-fontFamily);
9201
- font-weight: var(--text-label-sm-regular-fontWeight);
9202
- font-size: var(--text-label-sm-regular-fontSize);
9203
- line-height: var(--text-label-sm-regular-lineHeight);
9204
- color: var(--color-text-subtle-default);
9205
- margin: 0;
9206
- }
9207
-
9208
- /* Error message */
9209
- .muka-license-plate-input__error {
9210
- font-family: var(--text-label-sm-regular-fontFamily);
9211
- font-weight: var(--text-label-sm-regular-fontWeight);
9212
- font-size: var(--text-label-sm-regular-fontSize);
9213
- line-height: var(--text-label-sm-regular-lineHeight);
9214
- color: var(--color-state-error-default);
9215
- margin: 0;
9216
- }
9217
-
9218
-
9219
- /* Label */
9220
- /* Label Component Styles - Using Muka Design Tokens */
9221
-
9222
- .muka-label {
9223
- display: inline-flex;
9224
- align-items: center;
9225
- color: var(--color-text-default-default);
9226
- cursor: pointer;
9227
- }
9228
-
9229
- .muka-label--sm {
9230
- font-family: var(--text-label-sm-semibold-fontFamily);
9231
- font-weight: var(--text-label-sm-semibold-fontWeight);
9232
- font-size: var(--text-label-sm-semibold-fontSize);
9233
- line-height: var(--text-label-sm-semibold-lineHeight);
9234
- }
9235
-
9236
- .muka-label--md {
9237
- font-family: var(--text-label-md-semibold-fontFamily);
9238
- font-weight: var(--text-label-md-semibold-fontWeight);
9239
- font-size: var(--text-label-md-semibold-fontSize);
9240
- line-height: var(--text-label-md-semibold-lineHeight);
9241
- }
9242
-
9243
- .muka-label--lg {
9244
- font-family: var(--text-label-lg-semibold-fontFamily);
9245
- font-weight: var(--text-label-lg-semibold-fontWeight);
9246
- font-size: var(--text-label-lg-semibold-fontSize);
9247
- line-height: var(--text-label-lg-semibold-lineHeight);
9248
- }
9249
-
9250
- .muka-label--disabled {
9251
- color: var(--color-text-subtle-default);
9252
- cursor: not-allowed;
9253
- }
9254
-
9255
- .muka-label__required {
9256
- color: var(--color-state-error-default);
9257
- }
9258
-
9259
-
9260
- /* InputCounter */
9261
- /* InputCounter — numeric field + joined decrement/increment buttons.
9262
- Label, helper and error text reuse Input.css (../Input/Input.css).
9263
- Field and button group share one radius per size:
9264
- sm/md → input.field.radius.md, lg → input.field.radius.lg. */
9265
-
9266
- .muka-inputcounter {
9267
- --muka-inputcounter-radius: var(--input-field-radius-md);
9268
- --muka-inputcounter-height: var(--input-field-height-default);
9269
- --muka-inputcounter-pad: calc(var(--spacing-2) + var(--spacing-1));
9270
- --muka-inputcounter-min: var(--size-3xl);
9271
-
9272
- display: inline-flex;
9273
- flex-direction: column;
9274
- gap: var(--spacing-2);
9084
+ gap: var(--spacing-2);
9275
9085
  }
9276
9086
 
9277
9087
  .muka-inputcounter--sm {
@@ -9435,67 +9245,260 @@ li.muka-listitem {
9435
9245
  }
9436
9246
 
9437
9247
 
9438
- /* Input */
9439
- /* Input Component Styles - Using Muka Design Tokens */
9248
+ /* LicensePlateInput */
9249
+ /* LicensePlateInput — Dutch RDW-style plate input
9250
+ *
9251
+ * Plate body colors are regulatory (EU/NL) and intentionally fixed:
9252
+ * - Plate yellow: #F0CE3D
9253
+ * - EU strip blue: #003399
9254
+ * - EU stars yellow: #FFCC00
9255
+ * - Plate text: #1A1A1A
9256
+ *
9257
+ * All surrounding UI (label, helper, focus ring, error border) uses Muka tokens.
9258
+ */
9259
+
9260
+ .muka-license-plate-input {
9261
+ --plate-yellow: #f0ce3d;
9262
+ --plate-blue: #003399;
9263
+ --plate-text: #1a1a1a;
9264
+ --plate-stars: #ffcc00;
9440
9265
 
9441
- /* Wrapper — label, field, helper spacing per Figma */
9442
- .muka-input {
9443
9266
  display: inline-flex;
9444
9267
  flex-direction: column;
9445
9268
  gap: var(--spacing-2);
9446
9269
  }
9447
9270
 
9448
- .muka-input--full-width {
9449
- width: 100%;
9271
+ /* Plate body */
9272
+ .muka-license-plate-input__plate {
9273
+ display: inline-flex;
9274
+ align-items: stretch;
9275
+ background-color: var(--plate-yellow);
9276
+ border-radius: var(--input-field-radius-md);
9277
+ cursor: text;
9278
+ position: relative;
9279
+ overflow: hidden;
9280
+ box-sizing: border-box;
9281
+ /* Subtle outline to lift the plate from light backgrounds */
9282
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
9283
+ /* Reserve space for the focus / error solid ring without shifting layout */
9284
+ outline: 3px solid transparent;
9285
+ outline-offset: 2px;
9286
+ transition: outline-color 0.15s ease, opacity 0.15s ease;
9450
9287
  }
9451
9288
 
9452
- /* Label */
9453
- .muka-input__label {
9454
- color: var(--color-text-default-default);
9455
- cursor: pointer;
9289
+ /* Size variants — plate aspect echoes the real RDW plate (~5:1) */
9290
+ .muka-license-plate-input__plate--sm {
9291
+ height: 44px;
9292
+ min-width: 220px;
9293
+ border-radius: var(--input-field-radius-sm);
9456
9294
  }
9457
9295
 
9458
- .muka-input__label--sm {
9459
- font-family: var(--text-label-sm-semibold-fontFamily);
9460
- font-weight: var(--text-label-sm-semibold-fontWeight);
9461
- font-size: var(--text-label-sm-semibold-fontSize);
9462
- line-height: var(--text-label-sm-semibold-lineHeight);
9296
+ .muka-license-plate-input__plate--md {
9297
+ height: 60px;
9298
+ min-width: 300px;
9299
+ border-radius: var(--input-field-radius-md);
9463
9300
  }
9464
9301
 
9465
- .muka-input__label--md {
9466
- font-family: var(--text-label-md-semibold-fontFamily);
9467
- font-weight: var(--text-label-md-semibold-fontWeight);
9468
- font-size: var(--text-label-md-semibold-fontSize);
9469
- line-height: var(--text-label-md-semibold-lineHeight);
9302
+ .muka-license-plate-input__plate--lg {
9303
+ height: 80px;
9304
+ min-width: 400px;
9305
+ border-radius: var(--input-field-radius-lg);
9470
9306
  }
9471
9307
 
9472
- .muka-input__label--lg {
9473
- font-family: var(--text-label-lg-semibold-fontFamily);
9474
- font-weight: var(--text-label-lg-semibold-fontWeight);
9475
- font-size: var(--text-label-lg-semibold-fontSize);
9476
- line-height: var(--text-label-lg-semibold-lineHeight);
9308
+ /* Focus — solid outline ring */
9309
+ .muka-license-plate-input__plate--focused:not(.muka-license-plate-input__plate--disabled) {
9310
+ outline-color: var(--input-field-color-focus-border);
9477
9311
  }
9478
9312
 
9479
- .muka-input__required {
9480
- color: var(--color-state-error-default);
9313
+ /* Error — solid outline ring in error color */
9314
+ .muka-license-plate-input__plate--error:not(.muka-license-plate-input__plate--disabled) {
9315
+ outline-color: var(--input-field-color-error-border);
9481
9316
  }
9482
9317
 
9483
- .muka-input__label--sm + .muka-input__field--disabled,
9484
- .muka-input__label--md + .muka-input__field--disabled,
9485
- .muka-input__label--lg + .muka-input__field--disabled {
9318
+ /* Disabled */
9319
+ .muka-license-plate-input__plate--disabled {
9486
9320
  cursor: not-allowed;
9321
+ opacity: 0.55;
9487
9322
  }
9488
9323
 
9489
- /* Field container — default/hover: 1px border. Radius per Figma (812-10825): input field tokens. */
9490
- .muka-input__field {
9491
- display: flex;
9324
+ /* EU strip */
9325
+ .muka-license-plate-input__eu-strip {
9326
+ display: inline-flex;
9327
+ flex-direction: column;
9492
9328
  align-items: center;
9493
- gap: var(--spacing-2);
9494
- background-color: var(--input-field-color-default-background);
9495
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
9496
- border-radius: var(--input-field-radius-md);
9497
- padding: var(--input-field-padding-y) var(--input-field-padding-x);
9498
- transition: border-color 0.2s ease, background-color 0.2s ease;
9329
+ justify-content: center;
9330
+ background-color: var(--plate-blue);
9331
+ color: #ffffff;
9332
+ flex-shrink: 0;
9333
+ padding: 0 0.4em;
9334
+ gap: 0.15em;
9335
+ /* Strip width scales with plate height for a consistent ratio */
9336
+ width: 14%;
9337
+ min-width: 36px;
9338
+ }
9339
+
9340
+ .muka-license-plate-input__eu-stars {
9341
+ width: 60%;
9342
+ max-width: 28px;
9343
+ aspect-ratio: 1 / 1;
9344
+ display: block;
9345
+ }
9346
+
9347
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__eu-stars {
9348
+ max-width: 20px;
9349
+ }
9350
+
9351
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__eu-stars {
9352
+ max-width: 36px;
9353
+ }
9354
+
9355
+ .muka-license-plate-input__country-code {
9356
+ font-family:
9357
+ 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
9358
+ font-weight: 700;
9359
+ letter-spacing: 0.04em;
9360
+ line-height: 1;
9361
+ color: #ffffff;
9362
+ }
9363
+
9364
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__country-code {
9365
+ font-size: 10px;
9366
+ }
9367
+
9368
+ .muka-license-plate-input__plate--md .muka-license-plate-input__country-code {
9369
+ font-size: 13px;
9370
+ }
9371
+
9372
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__country-code {
9373
+ font-size: 16px;
9374
+ }
9375
+
9376
+ /* Native input */
9377
+ .muka-license-plate-input__native {
9378
+ flex: 1;
9379
+ min-width: 0;
9380
+ border: none;
9381
+ outline: none;
9382
+ background: transparent;
9383
+ color: var(--plate-text);
9384
+ text-align: center;
9385
+ text-transform: uppercase;
9386
+ letter-spacing: 0.06em;
9387
+ /* Plate font — bold condensed sans is closest to the FE-Schrift look without
9388
+ shipping a custom font. JetBrains Mono is the system mono brand font. */
9389
+ font-family:
9390
+ 'Arial Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif;
9391
+ font-weight: 800;
9392
+ padding: 0 0.5em;
9393
+ width: 100%;
9394
+ caret-color: var(--plate-text);
9395
+ }
9396
+
9397
+ .muka-license-plate-input__plate--sm .muka-license-plate-input__native {
9398
+ font-size: 22px;
9399
+ }
9400
+
9401
+ .muka-license-plate-input__plate--md .muka-license-plate-input__native {
9402
+ font-size: 30px;
9403
+ }
9404
+
9405
+ .muka-license-plate-input__plate--lg .muka-license-plate-input__native {
9406
+ font-size: 42px;
9407
+ }
9408
+
9409
+ .muka-license-plate-input__native::placeholder {
9410
+ color: var(--plate-text);
9411
+ opacity: 0.55;
9412
+ font-weight: 700;
9413
+ letter-spacing: 0.08em;
9414
+ }
9415
+
9416
+ .muka-license-plate-input__plate--disabled .muka-license-plate-input__native {
9417
+ cursor: not-allowed;
9418
+ }
9419
+
9420
+ /* Helper text */
9421
+ .muka-license-plate-input__helper {
9422
+ font-family: var(--text-label-sm-regular-fontFamily);
9423
+ font-weight: var(--text-label-sm-regular-fontWeight);
9424
+ font-size: var(--text-label-sm-regular-fontSize);
9425
+ line-height: var(--text-label-sm-regular-lineHeight);
9426
+ color: var(--color-text-subtle-default);
9427
+ margin: 0;
9428
+ }
9429
+
9430
+ /* Error message */
9431
+ .muka-license-plate-input__error {
9432
+ font-family: var(--text-label-sm-regular-fontFamily);
9433
+ font-weight: var(--text-label-sm-regular-fontWeight);
9434
+ font-size: var(--text-label-sm-regular-fontSize);
9435
+ line-height: var(--text-label-sm-regular-lineHeight);
9436
+ color: var(--color-state-error-default);
9437
+ margin: 0;
9438
+ }
9439
+
9440
+
9441
+ /* Input */
9442
+ /* Input Component Styles - Using Muka Design Tokens */
9443
+
9444
+ /* Wrapper — label, field, helper spacing per Figma */
9445
+ .muka-input {
9446
+ display: inline-flex;
9447
+ flex-direction: column;
9448
+ gap: var(--spacing-2);
9449
+ }
9450
+
9451
+ .muka-input--full-width {
9452
+ width: 100%;
9453
+ }
9454
+
9455
+ /* Label */
9456
+ .muka-input__label {
9457
+ color: var(--color-text-default-default);
9458
+ cursor: pointer;
9459
+ }
9460
+
9461
+ .muka-input__label--sm {
9462
+ font-family: var(--text-label-sm-semibold-fontFamily);
9463
+ font-weight: var(--text-label-sm-semibold-fontWeight);
9464
+ font-size: var(--text-label-sm-semibold-fontSize);
9465
+ line-height: var(--text-label-sm-semibold-lineHeight);
9466
+ }
9467
+
9468
+ .muka-input__label--md {
9469
+ font-family: var(--text-label-md-semibold-fontFamily);
9470
+ font-weight: var(--text-label-md-semibold-fontWeight);
9471
+ font-size: var(--text-label-md-semibold-fontSize);
9472
+ line-height: var(--text-label-md-semibold-lineHeight);
9473
+ }
9474
+
9475
+ .muka-input__label--lg {
9476
+ font-family: var(--text-label-lg-semibold-fontFamily);
9477
+ font-weight: var(--text-label-lg-semibold-fontWeight);
9478
+ font-size: var(--text-label-lg-semibold-fontSize);
9479
+ line-height: var(--text-label-lg-semibold-lineHeight);
9480
+ }
9481
+
9482
+ .muka-input__required {
9483
+ color: var(--color-state-error-default);
9484
+ }
9485
+
9486
+ .muka-input__label--sm + .muka-input__field--disabled,
9487
+ .muka-input__label--md + .muka-input__field--disabled,
9488
+ .muka-input__label--lg + .muka-input__field--disabled {
9489
+ cursor: not-allowed;
9490
+ }
9491
+
9492
+ /* Field container — default/hover: 1px border. Radius per Figma (812-10825): input field tokens. */
9493
+ .muka-input__field {
9494
+ display: flex;
9495
+ align-items: center;
9496
+ gap: var(--spacing-2);
9497
+ background-color: var(--input-field-color-default-background);
9498
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
9499
+ border-radius: var(--input-field-radius-md);
9500
+ padding: var(--input-field-padding-y) var(--input-field-padding-x);
9501
+ transition: border-color 0.2s ease, background-color 0.2s ease;
9499
9502
  cursor: text;
9500
9503
  position: relative;
9501
9504
  box-sizing: border-box;
@@ -9716,60 +9719,6 @@ li.muka-listitem {
9716
9719
  }
9717
9720
 
9718
9721
 
9719
- /* Icon */
9720
- /* Icon Component Styles - Using Muka Design Tokens */
9721
-
9722
- .muka-icon {
9723
- display: inline-flex;
9724
- align-items: center;
9725
- justify-content: center;
9726
- flex-shrink: 0;
9727
- color: var(--color-icon-default-default, currentColor);
9728
- }
9729
-
9730
- /* Icons inside buttons should inherit from button's foreground color */
9731
- .muka-button .muka-icon {
9732
- color: inherit;
9733
- }
9734
-
9735
- .muka-icon--subtle {
9736
- color: var(--color-icon-subtle-default);
9737
- }
9738
-
9739
- .muka-icon--muted {
9740
- color: var(--color-icon-muted-default);
9741
- }
9742
-
9743
- .muka-icon--inverse {
9744
- color: var(--color-icon-default-inverse);
9745
- }
9746
-
9747
- .muka-icon--xs {
9748
- width: var(--icon-size-xs);
9749
- height: var(--icon-size-xs);
9750
- }
9751
-
9752
- .muka-icon--sm {
9753
- width: var(--icon-size-sm);
9754
- height: var(--icon-size-sm);
9755
- }
9756
-
9757
- .muka-icon--md {
9758
- width: var(--icon-size-default);
9759
- height: var(--icon-size-default);
9760
- }
9761
-
9762
- .muka-icon--lg {
9763
- width: var(--icon-size-lg);
9764
- height: var(--icon-size-lg);
9765
- }
9766
-
9767
- .muka-icon svg {
9768
- width: 100%;
9769
- height: 100%;
9770
- }
9771
-
9772
-
9773
9722
  /* Form */
9774
9723
  .muka-form {
9775
9724
  display: flex;
@@ -10052,146 +10001,59 @@ li.muka-listitem {
10052
10001
  }
10053
10002
 
10054
10003
 
10055
- /* FAB */
10056
- /* FAB (Floating Action Button) Component Styles */
10057
-
10058
- .muka-fab {
10059
- position: fixed;
10060
- z-index: 40;
10004
+ /* Icon */
10005
+ /* Icon Component Styles - Using Muka Design Tokens */
10061
10006
 
10007
+ .muka-icon {
10062
10008
  display: inline-flex;
10063
10009
  align-items: center;
10064
10010
  justify-content: center;
10065
- gap: var(--spacing-2);
10066
-
10067
- border: none;
10068
- cursor: pointer;
10069
- font-family: inherit;
10070
- box-shadow: var(--shadow-level4);
10011
+ flex-shrink: 0;
10012
+ color: var(--color-icon-default-default, currentColor);
10013
+ }
10071
10014
 
10072
- transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
10073
- -webkit-tap-highlight-color: transparent;
10015
+ /* Icons inside buttons should inherit from button's foreground color */
10016
+ .muka-button .muka-icon {
10017
+ color: inherit;
10074
10018
  }
10075
10019
 
10076
- .muka-fab:active {
10077
- transform: scale(0.96);
10078
- box-shadow: var(--shadow-level3);
10020
+ .muka-icon--subtle {
10021
+ color: var(--color-icon-subtle-default);
10079
10022
  }
10080
10023
 
10081
- .muka-fab:focus-visible {
10082
- outline: 2px solid var(--color-action-default);
10083
- outline-offset: 2px;
10084
- }
10085
-
10086
- .muka-fab:disabled {
10087
- opacity: 0.5;
10088
- cursor: not-allowed;
10089
- box-shadow: none;
10090
- }
10091
-
10092
- /* ─── Variants ────────────────────────────────────────── */
10093
-
10094
- .muka-fab--primary {
10095
- background-color: var(--color-action-default);
10096
- color: var(--color-text-default-inverse);
10097
- }
10098
-
10099
- .muka-fab--primary:hover:not(:disabled) {
10100
- background-color: var(--color-action-hover);
10101
- }
10102
-
10103
- .muka-fab--secondary {
10104
- background-color: var(--color-surface-level3);
10105
- color: var(--color-text-default-default);
10106
- }
10107
-
10108
- .muka-fab--secondary:hover:not(:disabled) {
10109
- background-color: var(--color-surface-level2);
10024
+ .muka-icon--muted {
10025
+ color: var(--color-icon-muted-default);
10110
10026
  }
10111
10027
 
10112
- /* ─── Sizes (circular by default) ─────────────────────── */
10113
-
10114
- .muka-fab--md {
10115
- width: 56px;
10116
- height: 56px;
10117
- border-radius: 50%;
10028
+ .muka-icon--inverse {
10029
+ color: var(--color-icon-default-inverse);
10118
10030
  }
10119
10031
 
10120
- .muka-fab--lg {
10121
- width: 64px;
10122
- height: 64px;
10123
- border-radius: 50%;
10032
+ .muka-icon--xs {
10033
+ width: var(--icon-size-xs);
10034
+ height: var(--icon-size-xs);
10124
10035
  }
10125
10036
 
10126
- /* ─── Extended (pill shape with label) ────────────────── */
10127
-
10128
- .muka-fab--extended {
10129
- width: auto;
10130
- height: auto;
10131
- padding: var(--spacing-3) var(--spacing-4);
10132
- border-radius: var(--radius-full);
10037
+ .muka-icon--sm {
10038
+ width: var(--icon-size-sm);
10039
+ height: var(--icon-size-sm);
10133
10040
  }
10134
10041
 
10135
- .muka-fab--extended.muka-fab--lg {
10136
- padding: var(--spacing-4) var(--spacing-5);
10042
+ .muka-icon--md {
10043
+ width: var(--icon-size-default);
10044
+ height: var(--icon-size-default);
10137
10045
  }
10138
10046
 
10139
- .muka-fab__icon {
10140
- display: inline-flex;
10141
- align-items: center;
10142
- justify-content: center;
10143
- width: 24px;
10144
- height: 24px;
10047
+ .muka-icon--lg {
10048
+ width: var(--icon-size-lg);
10049
+ height: var(--icon-size-lg);
10145
10050
  }
10146
10051
 
10147
- .muka-fab__icon svg {
10052
+ .muka-icon svg {
10148
10053
  width: 100%;
10149
10054
  height: 100%;
10150
10055
  }
10151
10056
 
10152
- .muka-fab__label {
10153
- font-family: var(--text-label-md-semibold-fontFamily);
10154
- font-weight: var(--text-label-md-semibold-fontWeight);
10155
- font-size: var(--text-label-md-semibold-fontSize);
10156
- line-height: var(--text-label-md-semibold-lineHeight);
10157
- }
10158
-
10159
- /* ─── Positioning ─────────────────────────────────────── */
10160
-
10161
- .muka-fab--bottom-right {
10162
- right: var(--spacing-4);
10163
- bottom: var(--spacing-4);
10164
- }
10165
-
10166
- .muka-fab--bottom-left {
10167
- left: var(--spacing-4);
10168
- bottom: var(--spacing-4);
10169
- }
10170
-
10171
- .muka-fab--bottom-center {
10172
- left: 50%;
10173
- bottom: var(--spacing-4);
10174
- transform: translateX(-50%);
10175
- }
10176
-
10177
- .muka-fab--bottom-center:active {
10178
- transform: translateX(-50%) scale(0.96);
10179
- }
10180
-
10181
- /* Add the iOS home-indicator inset to the bottom offset. */
10182
- .muka-fab:not(.muka-fab--no-safe-area) {
10183
- bottom: calc(var(--spacing-4) + env(safe-area-inset-bottom));
10184
- }
10185
-
10186
- /* Lateral safe-area for landscape iPhone with notch. */
10187
- .muka-fab--bottom-right:not(.muka-fab--no-safe-area) {
10188
- right: max(var(--spacing-4), env(safe-area-inset-right));
10189
- }
10190
-
10191
- .muka-fab--bottom-left:not(.muka-fab--no-safe-area) {
10192
- left: max(var(--spacing-4), env(safe-area-inset-left));
10193
- }
10194
-
10195
10057
 
10196
10058
  /* EmptyState */
10197
10059
  /* EmptyState Component Styles - Using Muka Design Tokens */
@@ -10334,6 +10196,147 @@ li.muka-listitem {
10334
10196
  }
10335
10197
 
10336
10198
 
10199
+ /* FAB */
10200
+ /* FAB (Floating Action Button) Component Styles */
10201
+
10202
+ .muka-fab {
10203
+ position: fixed;
10204
+ z-index: 40;
10205
+
10206
+ display: inline-flex;
10207
+ align-items: center;
10208
+ justify-content: center;
10209
+ gap: var(--spacing-2);
10210
+
10211
+ border: none;
10212
+ cursor: pointer;
10213
+ font-family: inherit;
10214
+ box-shadow: var(--shadow-level4);
10215
+
10216
+ transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
10217
+ -webkit-tap-highlight-color: transparent;
10218
+ }
10219
+
10220
+ .muka-fab:active {
10221
+ transform: scale(0.96);
10222
+ box-shadow: var(--shadow-level3);
10223
+ }
10224
+
10225
+ .muka-fab:focus-visible {
10226
+ outline: 2px solid var(--color-action-default);
10227
+ outline-offset: 2px;
10228
+ }
10229
+
10230
+ .muka-fab:disabled {
10231
+ opacity: 0.5;
10232
+ cursor: not-allowed;
10233
+ box-shadow: none;
10234
+ }
10235
+
10236
+ /* ─── Variants ────────────────────────────────────────── */
10237
+
10238
+ .muka-fab--primary {
10239
+ background-color: var(--color-action-default);
10240
+ color: var(--color-text-default-inverse);
10241
+ }
10242
+
10243
+ .muka-fab--primary:hover:not(:disabled) {
10244
+ background-color: var(--color-action-hover);
10245
+ }
10246
+
10247
+ .muka-fab--secondary {
10248
+ background-color: var(--color-surface-level3);
10249
+ color: var(--color-text-default-default);
10250
+ }
10251
+
10252
+ .muka-fab--secondary:hover:not(:disabled) {
10253
+ background-color: var(--color-surface-level2);
10254
+ }
10255
+
10256
+ /* ─── Sizes (circular by default) ─────────────────────── */
10257
+
10258
+ .muka-fab--md {
10259
+ width: 56px;
10260
+ height: 56px;
10261
+ border-radius: 50%;
10262
+ }
10263
+
10264
+ .muka-fab--lg {
10265
+ width: 64px;
10266
+ height: 64px;
10267
+ border-radius: 50%;
10268
+ }
10269
+
10270
+ /* ─── Extended (pill shape with label) ────────────────── */
10271
+
10272
+ .muka-fab--extended {
10273
+ width: auto;
10274
+ height: auto;
10275
+ padding: var(--spacing-3) var(--spacing-4);
10276
+ border-radius: var(--radius-full);
10277
+ }
10278
+
10279
+ .muka-fab--extended.muka-fab--lg {
10280
+ padding: var(--spacing-4) var(--spacing-5);
10281
+ }
10282
+
10283
+ .muka-fab__icon {
10284
+ display: inline-flex;
10285
+ align-items: center;
10286
+ justify-content: center;
10287
+ width: 24px;
10288
+ height: 24px;
10289
+ }
10290
+
10291
+ .muka-fab__icon svg {
10292
+ width: 100%;
10293
+ height: 100%;
10294
+ }
10295
+
10296
+ .muka-fab__label {
10297
+ font-family: var(--text-label-md-semibold-fontFamily);
10298
+ font-weight: var(--text-label-md-semibold-fontWeight);
10299
+ font-size: var(--text-label-md-semibold-fontSize);
10300
+ line-height: var(--text-label-md-semibold-lineHeight);
10301
+ }
10302
+
10303
+ /* ─── Positioning ─────────────────────────────────────── */
10304
+
10305
+ .muka-fab--bottom-right {
10306
+ right: var(--spacing-4);
10307
+ bottom: var(--spacing-4);
10308
+ }
10309
+
10310
+ .muka-fab--bottom-left {
10311
+ left: var(--spacing-4);
10312
+ bottom: var(--spacing-4);
10313
+ }
10314
+
10315
+ .muka-fab--bottom-center {
10316
+ left: 50%;
10317
+ bottom: var(--spacing-4);
10318
+ transform: translateX(-50%);
10319
+ }
10320
+
10321
+ .muka-fab--bottom-center:active {
10322
+ transform: translateX(-50%) scale(0.96);
10323
+ }
10324
+
10325
+ /* Add the iOS home-indicator inset to the bottom offset. */
10326
+ .muka-fab:not(.muka-fab--no-safe-area) {
10327
+ bottom: calc(var(--spacing-4) + env(safe-area-inset-bottom));
10328
+ }
10329
+
10330
+ /* Lateral safe-area for landscape iPhone with notch. */
10331
+ .muka-fab--bottom-right:not(.muka-fab--no-safe-area) {
10332
+ right: max(var(--spacing-4), env(safe-area-inset-right));
10333
+ }
10334
+
10335
+ .muka-fab--bottom-left:not(.muka-fab--no-safe-area) {
10336
+ left: max(var(--spacing-4), env(safe-area-inset-left));
10337
+ }
10338
+
10339
+
10337
10340
  /* EmojiPicker */
10338
10341
  /* EmojiPicker Component Styles */
10339
10342
 
@@ -10740,429 +10743,150 @@ li.muka-listitem {
10740
10743
  }
10741
10744
 
10742
10745
 
10743
- /* DocumentViewer */
10744
- /* DocumentViewer Component Styles - Using Muka Design Tokens */
10745
-
10746
- .muka-documentviewer {
10747
- display: flex;
10748
- flex-direction: column;
10749
- background-color: var(--documentviewer-container-background);
10750
- border-radius: var(--documentviewer-container-borderRadius);
10751
- overflow: hidden;
10752
- position: relative;
10753
- }
10754
-
10755
- .muka-documentviewer--fullscreen {
10756
- position: fixed;
10757
- top: 0;
10758
- left: 0;
10759
- right: 0;
10760
- bottom: 0;
10761
- width: 100vw;
10762
- height: 100vh;
10763
- z-index: 9999;
10764
- border-radius: 0;
10765
- }
10746
+ /* Divider */
10747
+ /* Divider Component Styles - Using Muka Design Tokens */
10766
10748
 
10767
- /* Toolbar */
10768
- .muka-documentviewer__toolbar {
10769
- display: flex;
10770
- align-items: center;
10771
- justify-content: space-between;
10772
- height: var(--documentviewer-toolbar-height);
10773
- padding: var(--documentviewer-toolbar-padding-y) var(--documentviewer-toolbar-padding-x);
10774
- background-color: var(--documentviewer-toolbar-background);
10775
- border-bottom: 1px solid var(--documentviewer-toolbar-border);
10776
- gap: var(--documentviewer-toolbar-gap);
10749
+ .muka-divider {
10777
10750
  flex-shrink: 0;
10778
10751
  }
10779
10752
 
10780
- .muka-documentviewer__toolbar-section {
10781
- display: flex;
10782
- align-items: center;
10783
- gap: var(--documentviewer-toolbar-gap);
10753
+ .muka-divider--horizontal {
10754
+ width: 100%;
10755
+ height: var(--separator-width);
10784
10756
  }
10785
10757
 
10786
- .muka-documentviewer__toolbar-section--center {
10787
- flex: 1;
10788
- justify-content: center;
10758
+ .muka-divider--vertical {
10759
+ height: 100%;
10760
+ width: var(--separator-width);
10761
+ align-self: stretch;
10789
10762
  }
10790
10763
 
10791
- .muka-documentviewer__toolbar-section--end {
10792
- justify-content: flex-end;
10764
+ .muka-divider--default {
10765
+ background-color: var(--separator-color-default);
10793
10766
  }
10794
10767
 
10795
- /* Page navigation */
10796
- .muka-documentviewer__page-input {
10797
- display: flex;
10798
- align-items: center;
10799
- gap: var(--spacing-1);
10768
+ .muka-divider--contrast {
10769
+ background-color: var(--separator-color-contrast);
10800
10770
  }
10801
10771
 
10802
- .muka-documentviewer__page-number {
10803
- width: 3rem;
10804
- padding: var(--spacing-1) var(--spacing-2);
10805
- text-align: center;
10806
- font-family: var(--alias-font-brand-family);
10807
- font-size: var(--text-label-sm-fontSize);
10808
- line-height: var(--text-label-sm-lineHeight);
10809
- border: 1px solid var(--color-border-default);
10810
- border-radius: var(--border-radius-md);
10811
- background-color: var(--color-surface-level0);
10812
- color: var(--color-text-default-default);
10813
- }
10814
10772
 
10815
- .muka-documentviewer__page-number:focus {
10816
- outline: 2px solid var(--color-border-focus);
10817
- outline-offset: 0;
10818
- border-color: var(--color-border-focus);
10819
- }
10773
+ /* Dialog */
10774
+ /* Dialog Component Styles */
10820
10775
 
10821
- .muka-documentviewer__page-total {
10822
- font-family: var(--alias-font-brand-family);
10823
- font-size: var(--text-label-sm-fontSize);
10824
- color: var(--color-text-subtle-default);
10825
- }
10776
+ /* ─── Native dialog reset ─────────────────────────────── */
10826
10777
 
10827
- /* Zoom controls */
10828
- .muka-documentviewer__zoom-display {
10829
- min-width: var(--documentviewer-zoom-button-width);
10830
- padding: var(--spacing-1) var(--spacing-2);
10831
- font-family: var(--alias-font-brand-family);
10832
- font-size: var(--text-label-sm-fontSize);
10833
- font-weight: var(--alias-font-brand-weight-semibold);
10834
- color: var(--color-text-default-default);
10835
- background: transparent;
10778
+ .muka-dialog {
10836
10779
  border: none;
10837
- border-radius: var(--border-radius-md);
10838
- cursor: pointer;
10839
- transition: background-color 0.2s ease;
10780
+ padding: 0;
10781
+ max-width: none;
10782
+ max-height: none;
10783
+ overflow: visible;
10784
+ background: transparent;
10785
+ color: inherit;
10786
+ box-shadow: none;
10840
10787
  }
10841
10788
 
10842
- .muka-documentviewer__zoom-display:hover {
10843
- background-color: var(--color-surface-level2);
10789
+ .muka-dialog:not([open]) {
10790
+ display: none;
10844
10791
  }
10845
10792
 
10846
- .muka-documentviewer__zoom-display:focus {
10847
- outline: 2px solid var(--color-border-focus);
10848
- outline-offset: 0;
10793
+ /* ─── Backdrop ────────────────────────────────────────── */
10794
+
10795
+ .muka-dialog::backdrop {
10796
+ background-color: var(--dialog-color-backdrop);
10849
10797
  }
10850
10798
 
10851
- /* Content area */
10852
- .muka-documentviewer__content {
10853
- display: flex;
10854
- flex: 1;
10855
- overflow: hidden;
10799
+ /* ─── Non-modal modifier ──────────────────────────────── */
10800
+
10801
+ .muka-dialog--non-modal::backdrop {
10802
+ pointer-events: auto;
10856
10803
  }
10857
10804
 
10858
- .muka-documentviewer__main {
10859
- flex: 1;
10805
+ /* ─── Mobile: all sizes bottom-attached (< 1024px) ───── */
10806
+
10807
+ .muka-dialog--sm,
10808
+ .muka-dialog--md,
10809
+ .muka-dialog--lg {
10810
+ width: 100%;
10811
+ height: 100%;
10812
+ max-width: 100vw;
10813
+ max-height: 100vh;
10814
+ max-height: 100dvh;
10815
+ margin: 0;
10860
10816
  display: flex;
10861
10817
  flex-direction: column;
10862
- overflow: hidden;
10863
- position: relative;
10818
+ justify-content: flex-end;
10819
+ align-items: stretch;
10864
10820
  }
10865
10821
 
10866
- /* Canvas */
10867
- .muka-documentviewer__canvas {
10868
- flex: 1;
10869
- background-color: var(--documentviewer-canvas-background);
10870
- padding: var(--documentviewer-canvas-padding);
10871
- overflow: auto;
10872
- display: flex;
10873
- align-items: flex-start;
10874
- justify-content: center;
10822
+ .muka-dialog__surface:focus {
10823
+ outline: none;
10875
10824
  }
10876
10825
 
10877
- .muka-documentviewer__page {
10878
- background-color: var(--documentviewer-page-background);
10879
- box-shadow: var(--documentviewer-page-shadow);
10880
- border-radius: var(--documentviewer-page-borderRadius);
10826
+ .muka-dialog--sm .muka-dialog__surface,
10827
+ .muka-dialog--md .muka-dialog__surface,
10828
+ .muka-dialog--lg .muka-dialog__surface {
10829
+ background-color: var(--dialog-color-background);
10830
+ border-radius: var(--dialog-border-radius) var(--dialog-border-radius) 0 0;
10831
+ box-shadow: var(--dialog-shadow-default);
10832
+ display: flex;
10833
+ flex-direction: column;
10881
10834
  overflow: hidden;
10835
+ min-height: var(--dialog-min-height-mobile);
10882
10836
  }
10883
10837
 
10884
- .muka-documentviewer__page canvas {
10885
- display: block;
10886
- max-width: 100%;
10887
- height: auto;
10838
+ /* Mobile per-size heights */
10839
+ .muka-dialog--sm .muka-dialog__surface {
10840
+ height: var(--dialog-height-mobile-sm);
10888
10841
  }
10889
10842
 
10890
- .muka-documentviewer__page-number {
10891
- text-align: center;
10892
- padding: var(--spacing-2);
10893
- font-family: var(--alias-font-brand-family);
10894
- font-size: var(--text-label-sm-fontSize);
10895
- color: var(--color-text-subtle-default);
10843
+ .muka-dialog--md .muka-dialog__surface {
10844
+ height: var(--dialog-height-mobile-md);
10896
10845
  }
10897
10846
 
10898
- /* Thumbnails */
10899
- .muka-documentviewer__thumbnails {
10900
- width: var(--documentviewer-thumbnails-width);
10901
- background-color: var(--documentviewer-thumbnails-background);
10902
- border-right: 1px solid var(--documentviewer-thumbnails-border);
10903
- overflow-y: auto;
10904
- flex-shrink: 0;
10847
+ .muka-dialog--lg .muka-dialog__surface {
10848
+ height: calc(100vh - var(--dialog-margin-top-mobile));
10849
+ /* dvh tracks the visible area as mobile toolbars show and hide */
10850
+ height: calc(100dvh - var(--dialog-margin-top-mobile));
10905
10851
  }
10906
10852
 
10907
- .muka-documentviewer__thumbnails-list {
10908
- display: flex;
10909
- flex-direction: column;
10910
- gap: var(--documentviewer-thumbnails-item-gap);
10911
- padding: var(--spacing-2);
10853
+ /* Body */
10854
+ .muka-dialog--sm .muka-dialog__body,
10855
+ .muka-dialog--md .muka-dialog__body,
10856
+ .muka-dialog--lg .muka-dialog__body {
10857
+ flex: 1;
10858
+ overflow-y: auto;
10859
+ padding: var(--dialog-padding-x);
10860
+ background-color: var(--dialog-color-body-background);
10912
10861
  }
10913
10862
 
10914
- .muka-documentviewer__thumbnail-item {
10915
- display: flex;
10916
- flex-direction: column;
10917
- align-items: center;
10918
- gap: var(--spacing-1);
10919
- padding: var(--documentviewer-thumbnails-item-padding);
10920
- border-radius: var(--documentviewer-thumbnails-item-borderRadius);
10921
- border: 2px solid var(--documentviewer-thumbnails-item-border-default);
10922
- background-color: var(--documentviewer-thumbnails-item-background-default);
10923
- cursor: pointer;
10924
- transition: all 0.2s ease;
10925
- width: 100%;
10926
- }
10863
+ /* ─── Surface level variants ─────────────────────────── */
10927
10864
 
10928
- .muka-documentviewer__thumbnail-item:hover {
10929
- background-color: var(--documentviewer-thumbnails-item-background-hover);
10865
+ .muka-dialog--surface-2 .muka-dialog__body {
10866
+ background-color: var(--color-surface-level2);
10930
10867
  }
10931
10868
 
10932
- .muka-documentviewer__thumbnail-item--selected {
10933
- background-color: var(--documentviewer-thumbnails-item-background-selected);
10934
- border-color: var(--documentviewer-thumbnails-item-border-selected);
10935
- }
10869
+ /* ─── Footer ──────────────────────────────────────────── */
10936
10870
 
10937
- .muka-documentviewer__thumbnail-item:focus {
10938
- outline: 2px solid var(--color-border-focus);
10939
- outline-offset: 2px;
10871
+ .muka-dialog__footer {
10872
+ flex-shrink: 0;
10940
10873
  }
10941
10874
 
10942
- .muka-documentviewer__thumbnail-preview {
10943
- width: 100%;
10944
- overflow: hidden;
10945
- border-radius: var(--border-radius-sm);
10946
- }
10875
+ /* Hide footer on mobile for modal dialogs with inputs (actions move to TopBar),
10876
+ unless the consumer keeps them in the BottomBar (mobileActions="footer") */
10877
+ @media (max-width: 1023px) {
10878
+ .muka-dialog:not(.muka-dialog--non-modal):not(.muka-dialog--no-inputs):not(.muka-dialog--mobile-actions-footer) .muka-dialog__footer {
10879
+ display: none;
10880
+ }
10947
10881
 
10948
- .muka-documentviewer__thumbnail-preview canvas {
10949
- display: block;
10950
- width: 100%;
10951
- height: auto;
10952
- }
10953
-
10954
- .muka-documentviewer__thumbnail-label {
10955
- font-family: var(--alias-font-brand-family);
10956
- font-size: var(--text-label-xs-regular-fontSize);
10957
- color: var(--color-text-default-default);
10958
- font-weight: var(--alias-font-brand-weight-medium);
10959
- }
10960
-
10961
- /* Loading state */
10962
- .muka-documentviewer__loading {
10963
- display: flex;
10964
- align-items: center;
10965
- justify-content: center;
10966
- flex: 1;
10967
- background-color: var(--documentviewer-loading-overlay-background);
10968
- }
10969
-
10970
- /* Error state */
10971
- .muka-documentviewer__error {
10972
- display: flex;
10973
- align-items: center;
10974
- justify-content: center;
10975
- flex: 1;
10976
- padding: var(--spacing-4);
10977
- background-color: var(--documentviewer-error-background);
10978
- }
10979
-
10980
- /* Accessibility - visually hidden */
10981
- .visually-hidden {
10982
- position: absolute;
10983
- width: 1px;
10984
- height: 1px;
10985
- margin: -1px;
10986
- padding: 0;
10987
- overflow: hidden;
10988
- clip: rect(0, 0, 0, 0);
10989
- white-space: nowrap;
10990
- border-width: 0;
10991
- }
10992
-
10993
- /* React-PDF specific styles */
10994
- .react-pdf__Document {
10995
- display: flex;
10996
- flex-direction: column;
10997
- align-items: center;
10998
- }
10999
-
11000
- .react-pdf__Page {
11001
- max-width: 100%;
11002
- box-shadow: var(--documentviewer-page-shadow);
11003
- border-radius: var(--documentviewer-page-borderRadius);
11004
- overflow: hidden;
11005
- }
11006
-
11007
- .react-pdf__Page__canvas {
11008
- max-width: 100%;
11009
- height: auto !important;
11010
- display: block;
11011
- }
11012
-
11013
- .react-pdf__Page__textContent {
11014
- max-width: 100%;
11015
- }
11016
-
11017
- .react-pdf__Page__annotations {
11018
- max-width: 100%;
11019
- }
11020
-
11021
-
11022
- /* Divider */
11023
- /* Divider Component Styles - Using Muka Design Tokens */
11024
-
11025
- .muka-divider {
11026
- flex-shrink: 0;
11027
- }
11028
-
11029
- .muka-divider--horizontal {
11030
- width: 100%;
11031
- height: var(--separator-width);
11032
- }
11033
-
11034
- .muka-divider--vertical {
11035
- height: 100%;
11036
- width: var(--separator-width);
11037
- align-self: stretch;
11038
- }
11039
-
11040
- .muka-divider--default {
11041
- background-color: var(--separator-color-default);
11042
- }
11043
-
11044
- .muka-divider--contrast {
11045
- background-color: var(--separator-color-contrast);
11046
- }
11047
-
11048
-
11049
- /* Dialog */
11050
- /* Dialog Component Styles */
11051
-
11052
- /* ─── Native dialog reset ─────────────────────────────── */
11053
-
11054
- .muka-dialog {
11055
- border: none;
11056
- padding: 0;
11057
- max-width: none;
11058
- max-height: none;
11059
- overflow: visible;
11060
- background: transparent;
11061
- color: inherit;
11062
- box-shadow: none;
11063
- }
11064
-
11065
- .muka-dialog:not([open]) {
11066
- display: none;
11067
- }
11068
-
11069
- /* ─── Backdrop ────────────────────────────────────────── */
11070
-
11071
- .muka-dialog::backdrop {
11072
- background-color: var(--dialog-color-backdrop);
11073
- }
11074
-
11075
- /* ─── Non-modal modifier ──────────────────────────────── */
11076
-
11077
- .muka-dialog--non-modal::backdrop {
11078
- pointer-events: auto;
11079
- }
11080
-
11081
- /* ─── Mobile: all sizes bottom-attached (< 1024px) ───── */
11082
-
11083
- .muka-dialog--sm,
11084
- .muka-dialog--md,
11085
- .muka-dialog--lg {
11086
- width: 100%;
11087
- height: 100%;
11088
- max-width: 100vw;
11089
- max-height: 100vh;
11090
- max-height: 100dvh;
11091
- margin: 0;
11092
- display: flex;
11093
- flex-direction: column;
11094
- justify-content: flex-end;
11095
- align-items: stretch;
11096
- }
11097
-
11098
- .muka-dialog__surface:focus {
11099
- outline: none;
11100
- }
11101
-
11102
- .muka-dialog--sm .muka-dialog__surface,
11103
- .muka-dialog--md .muka-dialog__surface,
11104
- .muka-dialog--lg .muka-dialog__surface {
11105
- background-color: var(--dialog-color-background);
11106
- border-radius: var(--dialog-border-radius) var(--dialog-border-radius) 0 0;
11107
- box-shadow: var(--dialog-shadow-default);
11108
- display: flex;
11109
- flex-direction: column;
11110
- overflow: hidden;
11111
- min-height: var(--dialog-min-height-mobile);
11112
- }
11113
-
11114
- /* Mobile per-size heights */
11115
- .muka-dialog--sm .muka-dialog__surface {
11116
- height: var(--dialog-height-mobile-sm);
11117
- }
11118
-
11119
- .muka-dialog--md .muka-dialog__surface {
11120
- height: var(--dialog-height-mobile-md);
11121
- }
11122
-
11123
- .muka-dialog--lg .muka-dialog__surface {
11124
- height: calc(100vh - var(--dialog-margin-top-mobile));
11125
- /* dvh tracks the visible area as mobile toolbars show and hide */
11126
- height: calc(100dvh - var(--dialog-margin-top-mobile));
11127
- }
11128
-
11129
- /* Body */
11130
- .muka-dialog--sm .muka-dialog__body,
11131
- .muka-dialog--md .muka-dialog__body,
11132
- .muka-dialog--lg .muka-dialog__body {
11133
- flex: 1;
11134
- overflow-y: auto;
11135
- padding: var(--dialog-padding-x);
11136
- background-color: var(--dialog-color-body-background);
11137
- }
11138
-
11139
- /* ─── Surface level variants ─────────────────────────── */
11140
-
11141
- .muka-dialog--surface-2 .muka-dialog__body {
11142
- background-color: var(--color-surface-level2);
11143
- }
11144
-
11145
- /* ─── Footer ──────────────────────────────────────────── */
11146
-
11147
- .muka-dialog__footer {
11148
- flex-shrink: 0;
11149
- }
11150
-
11151
- /* Hide footer on mobile for modal dialogs with inputs (actions move to TopBar),
11152
- unless the consumer keeps them in the BottomBar (mobileActions="footer") */
11153
- @media (max-width: 1023px) {
11154
- .muka-dialog:not(.muka-dialog--non-modal):not(.muka-dialog--no-inputs):not(.muka-dialog--mobile-actions-footer) .muka-dialog__footer {
11155
- display: none;
11156
- }
11157
-
11158
- /* No-input modals: stack footer buttons vertically on mobile */
11159
- .muka-dialog--no-inputs .muka-bottombar--actions .muka-bottombar__content {
11160
- flex-direction: column;
11161
- }
11162
-
11163
- .muka-dialog--no-inputs .muka-bottombar--actions .muka-bottombar__content > * {
11164
- width: 100%;
11165
- }
10882
+ /* No-input modals: stack footer buttons vertically on mobile */
10883
+ .muka-dialog--no-inputs .muka-bottombar--actions .muka-bottombar__content {
10884
+ flex-direction: column;
10885
+ }
10886
+
10887
+ .muka-dialog--no-inputs .muka-bottombar--actions .muka-bottombar__content > * {
10888
+ width: 100%;
10889
+ }
11166
10890
  }
11167
10891
 
11168
10892
  /* ─── Mobile slide animation (< 1024px) ─────────────── */
@@ -11317,6 +11041,285 @@ li.muka-listitem {
11317
11041
  }
11318
11042
 
11319
11043
 
11044
+ /* DocumentViewer */
11045
+ /* DocumentViewer Component Styles - Using Muka Design Tokens */
11046
+
11047
+ .muka-documentviewer {
11048
+ display: flex;
11049
+ flex-direction: column;
11050
+ background-color: var(--documentviewer-container-background);
11051
+ border-radius: var(--documentviewer-container-borderRadius);
11052
+ overflow: hidden;
11053
+ position: relative;
11054
+ }
11055
+
11056
+ .muka-documentviewer--fullscreen {
11057
+ position: fixed;
11058
+ top: 0;
11059
+ left: 0;
11060
+ right: 0;
11061
+ bottom: 0;
11062
+ width: 100vw;
11063
+ height: 100vh;
11064
+ z-index: 9999;
11065
+ border-radius: 0;
11066
+ }
11067
+
11068
+ /* Toolbar */
11069
+ .muka-documentviewer__toolbar {
11070
+ display: flex;
11071
+ align-items: center;
11072
+ justify-content: space-between;
11073
+ height: var(--documentviewer-toolbar-height);
11074
+ padding: var(--documentviewer-toolbar-padding-y) var(--documentviewer-toolbar-padding-x);
11075
+ background-color: var(--documentviewer-toolbar-background);
11076
+ border-bottom: 1px solid var(--documentviewer-toolbar-border);
11077
+ gap: var(--documentviewer-toolbar-gap);
11078
+ flex-shrink: 0;
11079
+ }
11080
+
11081
+ .muka-documentviewer__toolbar-section {
11082
+ display: flex;
11083
+ align-items: center;
11084
+ gap: var(--documentviewer-toolbar-gap);
11085
+ }
11086
+
11087
+ .muka-documentviewer__toolbar-section--center {
11088
+ flex: 1;
11089
+ justify-content: center;
11090
+ }
11091
+
11092
+ .muka-documentviewer__toolbar-section--end {
11093
+ justify-content: flex-end;
11094
+ }
11095
+
11096
+ /* Page navigation */
11097
+ .muka-documentviewer__page-input {
11098
+ display: flex;
11099
+ align-items: center;
11100
+ gap: var(--spacing-1);
11101
+ }
11102
+
11103
+ .muka-documentviewer__page-number {
11104
+ width: 3rem;
11105
+ padding: var(--spacing-1) var(--spacing-2);
11106
+ text-align: center;
11107
+ font-family: var(--alias-font-brand-family);
11108
+ font-size: var(--text-label-sm-fontSize);
11109
+ line-height: var(--text-label-sm-lineHeight);
11110
+ border: 1px solid var(--color-border-default);
11111
+ border-radius: var(--border-radius-md);
11112
+ background-color: var(--color-surface-level0);
11113
+ color: var(--color-text-default-default);
11114
+ }
11115
+
11116
+ .muka-documentviewer__page-number:focus {
11117
+ outline: 2px solid var(--color-border-focus);
11118
+ outline-offset: 0;
11119
+ border-color: var(--color-border-focus);
11120
+ }
11121
+
11122
+ .muka-documentviewer__page-total {
11123
+ font-family: var(--alias-font-brand-family);
11124
+ font-size: var(--text-label-sm-fontSize);
11125
+ color: var(--color-text-subtle-default);
11126
+ }
11127
+
11128
+ /* Zoom controls */
11129
+ .muka-documentviewer__zoom-display {
11130
+ min-width: var(--documentviewer-zoom-button-width);
11131
+ padding: var(--spacing-1) var(--spacing-2);
11132
+ font-family: var(--alias-font-brand-family);
11133
+ font-size: var(--text-label-sm-fontSize);
11134
+ font-weight: var(--alias-font-brand-weight-semibold);
11135
+ color: var(--color-text-default-default);
11136
+ background: transparent;
11137
+ border: none;
11138
+ border-radius: var(--border-radius-md);
11139
+ cursor: pointer;
11140
+ transition: background-color 0.2s ease;
11141
+ }
11142
+
11143
+ .muka-documentviewer__zoom-display:hover {
11144
+ background-color: var(--color-surface-level2);
11145
+ }
11146
+
11147
+ .muka-documentviewer__zoom-display:focus {
11148
+ outline: 2px solid var(--color-border-focus);
11149
+ outline-offset: 0;
11150
+ }
11151
+
11152
+ /* Content area */
11153
+ .muka-documentviewer__content {
11154
+ display: flex;
11155
+ flex: 1;
11156
+ overflow: hidden;
11157
+ }
11158
+
11159
+ .muka-documentviewer__main {
11160
+ flex: 1;
11161
+ display: flex;
11162
+ flex-direction: column;
11163
+ overflow: hidden;
11164
+ position: relative;
11165
+ }
11166
+
11167
+ /* Canvas */
11168
+ .muka-documentviewer__canvas {
11169
+ flex: 1;
11170
+ background-color: var(--documentviewer-canvas-background);
11171
+ padding: var(--documentviewer-canvas-padding);
11172
+ overflow: auto;
11173
+ display: flex;
11174
+ align-items: flex-start;
11175
+ justify-content: center;
11176
+ }
11177
+
11178
+ .muka-documentviewer__page {
11179
+ background-color: var(--documentviewer-page-background);
11180
+ box-shadow: var(--documentviewer-page-shadow);
11181
+ border-radius: var(--documentviewer-page-borderRadius);
11182
+ overflow: hidden;
11183
+ }
11184
+
11185
+ .muka-documentviewer__page canvas {
11186
+ display: block;
11187
+ max-width: 100%;
11188
+ height: auto;
11189
+ }
11190
+
11191
+ .muka-documentviewer__page-number {
11192
+ text-align: center;
11193
+ padding: var(--spacing-2);
11194
+ font-family: var(--alias-font-brand-family);
11195
+ font-size: var(--text-label-sm-fontSize);
11196
+ color: var(--color-text-subtle-default);
11197
+ }
11198
+
11199
+ /* Thumbnails */
11200
+ .muka-documentviewer__thumbnails {
11201
+ width: var(--documentviewer-thumbnails-width);
11202
+ background-color: var(--documentviewer-thumbnails-background);
11203
+ border-right: 1px solid var(--documentviewer-thumbnails-border);
11204
+ overflow-y: auto;
11205
+ flex-shrink: 0;
11206
+ }
11207
+
11208
+ .muka-documentviewer__thumbnails-list {
11209
+ display: flex;
11210
+ flex-direction: column;
11211
+ gap: var(--documentviewer-thumbnails-item-gap);
11212
+ padding: var(--spacing-2);
11213
+ }
11214
+
11215
+ .muka-documentviewer__thumbnail-item {
11216
+ display: flex;
11217
+ flex-direction: column;
11218
+ align-items: center;
11219
+ gap: var(--spacing-1);
11220
+ padding: var(--documentviewer-thumbnails-item-padding);
11221
+ border-radius: var(--documentviewer-thumbnails-item-borderRadius);
11222
+ border: 2px solid var(--documentviewer-thumbnails-item-border-default);
11223
+ background-color: var(--documentviewer-thumbnails-item-background-default);
11224
+ cursor: pointer;
11225
+ transition: all 0.2s ease;
11226
+ width: 100%;
11227
+ }
11228
+
11229
+ .muka-documentviewer__thumbnail-item:hover {
11230
+ background-color: var(--documentviewer-thumbnails-item-background-hover);
11231
+ }
11232
+
11233
+ .muka-documentviewer__thumbnail-item--selected {
11234
+ background-color: var(--documentviewer-thumbnails-item-background-selected);
11235
+ border-color: var(--documentviewer-thumbnails-item-border-selected);
11236
+ }
11237
+
11238
+ .muka-documentviewer__thumbnail-item:focus {
11239
+ outline: 2px solid var(--color-border-focus);
11240
+ outline-offset: 2px;
11241
+ }
11242
+
11243
+ .muka-documentviewer__thumbnail-preview {
11244
+ width: 100%;
11245
+ overflow: hidden;
11246
+ border-radius: var(--border-radius-sm);
11247
+ }
11248
+
11249
+ .muka-documentviewer__thumbnail-preview canvas {
11250
+ display: block;
11251
+ width: 100%;
11252
+ height: auto;
11253
+ }
11254
+
11255
+ .muka-documentviewer__thumbnail-label {
11256
+ font-family: var(--alias-font-brand-family);
11257
+ font-size: var(--text-label-xs-regular-fontSize);
11258
+ color: var(--color-text-default-default);
11259
+ font-weight: var(--alias-font-brand-weight-medium);
11260
+ }
11261
+
11262
+ /* Loading state */
11263
+ .muka-documentviewer__loading {
11264
+ display: flex;
11265
+ align-items: center;
11266
+ justify-content: center;
11267
+ flex: 1;
11268
+ background-color: var(--documentviewer-loading-overlay-background);
11269
+ }
11270
+
11271
+ /* Error state */
11272
+ .muka-documentviewer__error {
11273
+ display: flex;
11274
+ align-items: center;
11275
+ justify-content: center;
11276
+ flex: 1;
11277
+ padding: var(--spacing-4);
11278
+ background-color: var(--documentviewer-error-background);
11279
+ }
11280
+
11281
+ /* Accessibility - visually hidden */
11282
+ .visually-hidden {
11283
+ position: absolute;
11284
+ width: 1px;
11285
+ height: 1px;
11286
+ margin: -1px;
11287
+ padding: 0;
11288
+ overflow: hidden;
11289
+ clip: rect(0, 0, 0, 0);
11290
+ white-space: nowrap;
11291
+ border-width: 0;
11292
+ }
11293
+
11294
+ /* React-PDF specific styles */
11295
+ .react-pdf__Document {
11296
+ display: flex;
11297
+ flex-direction: column;
11298
+ align-items: center;
11299
+ }
11300
+
11301
+ .react-pdf__Page {
11302
+ max-width: 100%;
11303
+ box-shadow: var(--documentviewer-page-shadow);
11304
+ border-radius: var(--documentviewer-page-borderRadius);
11305
+ overflow: hidden;
11306
+ }
11307
+
11308
+ .react-pdf__Page__canvas {
11309
+ max-width: 100%;
11310
+ height: auto !important;
11311
+ display: block;
11312
+ }
11313
+
11314
+ .react-pdf__Page__textContent {
11315
+ max-width: 100%;
11316
+ }
11317
+
11318
+ .react-pdf__Page__annotations {
11319
+ max-width: 100%;
11320
+ }
11321
+
11322
+
11320
11323
  /* DatePicker */
11321
11324
  /* DatePicker — compact native date field. */
11322
11325
  /* Field/label/helper styling is inherited from ../Input/Input.css. */