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