@usefidel/design-system 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -3034,19 +3034,64 @@
3034
3034
  position: relative;
3035
3035
  display: inline-flex;
3036
3036
  }
3037
+ .fds-menu--block {
3038
+ display: flex;
3039
+ width: 100%;
3040
+ }
3041
+ .fds-menu--block > :first-child {
3042
+ flex: 1;
3043
+ min-width: 0;
3044
+ }
3037
3045
  .fds-menu__list {
3038
3046
  position: absolute;
3039
- top: calc(100% + 4px);
3040
3047
  z-index: 50;
3041
3048
  min-width: 200px;
3042
- padding: var(--spacing-1, 4px);
3049
+ box-sizing: border-box;
3043
3050
  background: var(--color-surface-raised, #ffffff);
3044
3051
  border: 1px solid var(--color-border, #e5e5e5);
3045
- border-radius: var(--radius-md, 6px);
3052
+ border-radius: var(--radius-lg, 8px);
3046
3053
  box-shadow: var(--shadow-lg, 0 4px 8px rgba(0, 0, 0, 0.06), 0 16px 40px rgba(0, 0, 0, 0.1));
3047
3054
  }
3048
- .fds-menu__list:focus {
3049
- outline: none;
3055
+ .fds-menu__list {
3056
+ animation: fds-menu-in var(--duration-quick, 150ms) var(--ease-out, ease-out);
3057
+ }
3058
+ @keyframes fds-menu-in {
3059
+ from {
3060
+ opacity: 0;
3061
+ transform: translateY(calc(var(--spacing-1, 4px) * -1));
3062
+ }
3063
+ to {
3064
+ opacity: 1;
3065
+ transform: none;
3066
+ }
3067
+ }
3068
+ .fds-menu__list--top {
3069
+ animation-name: fds-menu-in-up;
3070
+ }
3071
+ @keyframes fds-menu-in-up {
3072
+ from {
3073
+ opacity: 0;
3074
+ transform: translateY(var(--spacing-1, 4px));
3075
+ }
3076
+ to {
3077
+ opacity: 1;
3078
+ transform: none;
3079
+ }
3080
+ }
3081
+ @media (prefers-reduced-motion: reduce) {
3082
+ .fds-menu__list {
3083
+ animation: none;
3084
+ }
3085
+ }
3086
+ .fds-menu__list--bottom {
3087
+ top: calc(100% + var(--spacing-1, 4px));
3088
+ }
3089
+ .fds-menu__list--top {
3090
+ bottom: calc(100% + var(--spacing-1, 4px));
3091
+ }
3092
+ .fds-menu__list--right {
3093
+ top: 0;
3094
+ left: calc(100% + var(--spacing-1, 4px));
3050
3095
  }
3051
3096
  .fds-menu__list--start {
3052
3097
  left: 0;
@@ -3054,14 +3099,82 @@
3054
3099
  .fds-menu__list--end {
3055
3100
  right: 0;
3056
3101
  }
3102
+ .fds-menu__list--wide {
3103
+ width: 304px;
3104
+ }
3105
+ .fds-menu__items {
3106
+ display: flex;
3107
+ flex-direction: column;
3108
+ padding: var(--spacing-1, 4px);
3109
+ }
3110
+ .fds-menu__items:focus {
3111
+ outline: none;
3112
+ }
3113
+ .fds-menu__search {
3114
+ display: flex;
3115
+ align-items: center;
3116
+ gap: var(--spacing-2, 8px);
3117
+ padding: 0 var(--spacing-3, 12px);
3118
+ height: var(--size-control-md, 36px);
3119
+ border-bottom: 1px solid var(--color-border, #e5e5e5);
3120
+ color: var(--color-text-tertiary, #737373);
3121
+ }
3122
+ .fds-menu__search > svg {
3123
+ width: 16px;
3124
+ height: 16px;
3125
+ flex-shrink: 0;
3126
+ }
3127
+ .fds-menu__search input {
3128
+ flex: 1;
3129
+ min-width: 0;
3130
+ border: 0;
3131
+ padding: 0;
3132
+ background: transparent;
3133
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3134
+ font-size: var(--font-size-text-compact, 13px);
3135
+ line-height: var(--line-height-text-compact, 20px);
3136
+ color: var(--color-text, #171717);
3137
+ }
3138
+ .fds-menu__search input::placeholder {
3139
+ color: var(--color-text-muted, #a3a3a3);
3140
+ }
3141
+ .fds-menu__search input:focus {
3142
+ outline: none;
3143
+ }
3144
+ .fds-menu__search input:disabled {
3145
+ cursor: not-allowed;
3146
+ }
3147
+ .fds-menu__search:has(input:disabled) {
3148
+ opacity: 0.5;
3149
+ }
3150
+ .fds-menu__label {
3151
+ padding: var(--spacing-2, 8px) var(--spacing-2, 8px) var(--spacing-1, 4px);
3152
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3153
+ font-size: var(--font-size-text-xs, 12px);
3154
+ line-height: var(--line-height-text-xs, 18px);
3155
+ font-weight: var(--font-weight-medium, 500);
3156
+ color: var(--color-text-tertiary, #737373);
3157
+ }
3158
+ .fds-menu__divider {
3159
+ height: 1px;
3160
+ margin: var(--spacing-1, 4px) calc(var(--spacing-1, 4px) * -1);
3161
+ background: var(--color-border, #e5e5e5);
3162
+ }
3163
+ .fds-menu__empty {
3164
+ padding: var(--spacing-2, 8px);
3165
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3166
+ font-size: var(--font-size-text-compact, 13px);
3167
+ line-height: var(--line-height-text-compact, 20px);
3168
+ color: var(--color-text-tertiary, #737373);
3169
+ }
3057
3170
  .fds-menu__item {
3058
3171
  display: flex;
3059
3172
  align-items: center;
3060
3173
  gap: var(--spacing-2, 8px);
3061
- padding: var(--spacing-2, 8px) var(--spacing-2, 8px);
3062
- border-radius: var(--radius-sm, 4px);
3174
+ padding: var(--spacing-2, 8px);
3175
+ border-radius: var(--radius-md, 6px);
3063
3176
  font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3064
- font-size: var(--font-size-text-sm, 14px);
3177
+ font-size: var(--font-size-text-compact, 13px);
3065
3178
  line-height: var(--line-height-text-compact, 20px);
3066
3179
  color: var(--color-text, #171717);
3067
3180
  white-space: nowrap;
@@ -3077,15 +3190,49 @@
3077
3190
  opacity: 0.5;
3078
3191
  cursor: not-allowed;
3079
3192
  }
3080
- .fds-menu__icon {
3193
+ .fds-menu__icon,
3194
+ .fds-menu__check {
3081
3195
  display: inline-flex;
3196
+ flex-shrink: 0;
3082
3197
  width: 16px;
3083
3198
  height: 16px;
3084
3199
  }
3200
+ .fds-menu__icon {
3201
+ color: var(--color-text-secondary, #525252);
3202
+ }
3085
3203
  .fds-menu__icon > svg {
3086
3204
  width: 100%;
3087
3205
  height: 100%;
3088
3206
  }
3207
+ .fds-menu__check {
3208
+ color: var(--color-text, #171717);
3209
+ }
3210
+ .fds-menu__avatar {
3211
+ display: inline-flex;
3212
+ flex-shrink: 0;
3213
+ }
3214
+ .fds-menu__text {
3215
+ display: flex;
3216
+ flex-direction: column;
3217
+ flex: 1;
3218
+ min-width: 0;
3219
+ }
3220
+ .fds-menu__title,
3221
+ .fds-menu__description {
3222
+ overflow: hidden;
3223
+ text-overflow: ellipsis;
3224
+ }
3225
+ .fds-menu__description {
3226
+ font-size: var(--font-size-text-xs, 12px);
3227
+ line-height: var(--line-height-text-xs, 18px);
3228
+ color: var(--color-text-tertiary, #737373);
3229
+ }
3230
+ .fds-menu__trailing {
3231
+ display: inline-flex;
3232
+ flex-shrink: 0;
3233
+ font-size: var(--font-size-text-xs, 12px);
3234
+ line-height: var(--line-height-text-xs, 18px);
3235
+ }
3089
3236
 
3090
3237
  /* src/components/Table/table.css */
3091
3238
  .fds-table {
@@ -3276,3 +3423,643 @@
3276
3423
  padding: var(--spacing-5, 20px) var(--spacing-6, 24px) var(--spacing-6, 24px);
3277
3424
  }
3278
3425
  }
3426
+
3427
+ /* src/components/StatusDot/status-dot.css */
3428
+ .fds-status-dot {
3429
+ display: inline-block;
3430
+ flex-shrink: 0;
3431
+ width: 6px;
3432
+ height: 6px;
3433
+ border-radius: var(--radius-full, 9999px);
3434
+ }
3435
+ .fds-status-dot--running {
3436
+ background: var(--color-info-strong, #2563eb);
3437
+ animation: fds-status-dot-pulse 1.6s var(--ease-out, ease-out) infinite;
3438
+ }
3439
+ .fds-status-dot--idle {
3440
+ background: var(--color-border-strong, #d4d4d4);
3441
+ }
3442
+ .fds-status-dot--failed {
3443
+ background: var(--color-destructive, #eb2d2d);
3444
+ }
3445
+ .fds-status-dot--passed {
3446
+ background: var(--color-success, #059669);
3447
+ }
3448
+ @keyframes fds-status-dot-pulse {
3449
+ 0%, 100% {
3450
+ opacity: 1;
3451
+ }
3452
+ 50% {
3453
+ opacity: 0.35;
3454
+ }
3455
+ }
3456
+ @media (prefers-reduced-motion: reduce) {
3457
+ .fds-status-dot--running {
3458
+ animation: none;
3459
+ }
3460
+ }
3461
+
3462
+ /* src/components/ListLabel/list-label.css */
3463
+ .fds-list-label {
3464
+ padding: var(--spacing-2, 8px) var(--spacing-2, 8px) var(--spacing-1, 4px);
3465
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3466
+ font-size: var(--font-size-text-xs, 12px);
3467
+ line-height: var(--line-height-text-xs, 18px);
3468
+ font-weight: var(--font-weight-medium, 500);
3469
+ color: var(--color-text-tertiary, #737373);
3470
+ }
3471
+
3472
+ /* src/components/Divider/divider.css */
3473
+ .fds-divider {
3474
+ margin: 0;
3475
+ border: 0;
3476
+ flex-shrink: 0;
3477
+ background: var(--color-border, #e5e5e5);
3478
+ }
3479
+ .fds-divider--horizontal {
3480
+ height: 1px;
3481
+ width: 100%;
3482
+ }
3483
+ .fds-divider--vertical {
3484
+ width: 1px;
3485
+ align-self: stretch;
3486
+ }
3487
+
3488
+ /* src/components/Tooltip/tooltip.css */
3489
+ .fds-tooltip {
3490
+ position: fixed;
3491
+ z-index: 1100;
3492
+ max-width: 240px;
3493
+ padding: var(--spacing-1, 4px) var(--spacing-2, 8px);
3494
+ border-radius: var(--radius-md, 6px);
3495
+ background: var(--color-primary, #171717);
3496
+ color: var(--color-primary-text, #ffffff);
3497
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3498
+ font-size: var(--font-size-text-xs, 12px);
3499
+ line-height: var(--line-height-text-xs, 18px);
3500
+ font-weight: var(--font-weight-medium, 500);
3501
+ white-space: nowrap;
3502
+ pointer-events: none;
3503
+ box-shadow: var(--shadow-sm);
3504
+ animation: fds-tooltip-in var(--duration-quick, 150ms) var(--ease-out, ease-out);
3505
+ }
3506
+ .fds-tooltip--right {
3507
+ transform: translateY(-50%);
3508
+ }
3509
+ .fds-tooltip--left {
3510
+ transform: translate(-100%, -50%);
3511
+ }
3512
+ .fds-tooltip--top {
3513
+ transform: translate(-50%, -100%);
3514
+ }
3515
+ .fds-tooltip--bottom {
3516
+ transform: translateX(-50%);
3517
+ }
3518
+ @keyframes fds-tooltip-in {
3519
+ from {
3520
+ opacity: 0;
3521
+ }
3522
+ to {
3523
+ opacity: 1;
3524
+ }
3525
+ }
3526
+
3527
+ /* src/components/BrandButton/brand-button.css */
3528
+ .fds-brand-button {
3529
+ position: relative;
3530
+ display: inline-flex;
3531
+ align-items: center;
3532
+ justify-content: center;
3533
+ width: var(--size-control-md, 36px);
3534
+ height: var(--size-control-sm, 32px);
3535
+ padding: 0;
3536
+ border: 0;
3537
+ border-radius: var(--radius-md, 6px);
3538
+ background: transparent;
3539
+ color: var(--color-text, #171717);
3540
+ cursor: pointer;
3541
+ }
3542
+ .fds-brand-button:hover,
3543
+ .fds-brand-button:focus-visible {
3544
+ background: var(--color-surface-hover, #ececec);
3545
+ }
3546
+ .fds-brand-button:focus-visible {
3547
+ outline: 2px solid var(--color-accent, #ea580c);
3548
+ outline-offset: -2px;
3549
+ }
3550
+ .fds-brand-button__mark,
3551
+ .fds-brand-button__hover {
3552
+ display: inline-flex;
3553
+ align-items: center;
3554
+ justify-content: center;
3555
+ }
3556
+ .fds-brand-button__hover {
3557
+ position: absolute;
3558
+ inset: 0;
3559
+ opacity: 0;
3560
+ color: var(--color-text-secondary, #525252);
3561
+ }
3562
+ .fds-brand-button__hover > svg {
3563
+ width: 16px;
3564
+ height: 16px;
3565
+ }
3566
+ .fds-brand-button:hover .fds-brand-button__mark,
3567
+ .fds-brand-button:focus-visible .fds-brand-button__mark {
3568
+ opacity: 0;
3569
+ }
3570
+ .fds-brand-button:hover .fds-brand-button__hover,
3571
+ .fds-brand-button:focus-visible .fds-brand-button__hover {
3572
+ opacity: 1;
3573
+ }
3574
+
3575
+ /* src/components/SidebarItem/sidebar-item.css */
3576
+ .fds-sidebar-item {
3577
+ box-sizing: border-box;
3578
+ display: flex;
3579
+ align-items: center;
3580
+ gap: var(--spacing-2, 8px);
3581
+ width: 100%;
3582
+ height: var(--size-control-sm, 32px);
3583
+ padding: 0 0 0 calc(var(--size-control-md, 36px) / 2 - 8px);
3584
+ overflow: hidden;
3585
+ border: 0;
3586
+ border-radius: var(--radius-md, 6px);
3587
+ background: transparent;
3588
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3589
+ font-size: var(--font-size-text-compact, 13px);
3590
+ line-height: var(--line-height-text-compact, 20px);
3591
+ font-weight: var(--font-weight-medium, 500);
3592
+ color: var(--color-text-secondary, #525252);
3593
+ text-decoration: none;
3594
+ white-space: nowrap;
3595
+ cursor: pointer;
3596
+ transition: background-color var(--duration-instant, 80ms) ease, color var(--duration-instant, 80ms) ease;
3597
+ }
3598
+ .fds-sidebar-item:hover {
3599
+ background: var(--color-surface-hover, #ececec);
3600
+ color: var(--color-text, #171717);
3601
+ }
3602
+ .fds-sidebar-item:focus-visible {
3603
+ outline: 2px solid var(--color-accent, #ea580c);
3604
+ outline-offset: -2px;
3605
+ }
3606
+ .fds-sidebar-item--active,
3607
+ .fds-sidebar-item--active:hover {
3608
+ background: var(--color-surface-raised, #ffffff);
3609
+ color: var(--color-text, #171717);
3610
+ box-shadow: var(--shadow-sm);
3611
+ }
3612
+ .fds-sidebar-item__icon,
3613
+ .fds-sidebar-item__leading {
3614
+ display: inline-flex;
3615
+ align-items: center;
3616
+ justify-content: center;
3617
+ flex-shrink: 0;
3618
+ width: 16px;
3619
+ height: 16px;
3620
+ }
3621
+ .fds-sidebar-item__icon > svg {
3622
+ width: 100%;
3623
+ height: 100%;
3624
+ }
3625
+ .fds-sidebar-item__label {
3626
+ overflow: hidden;
3627
+ text-overflow: ellipsis;
3628
+ transition: opacity var(--duration-quick, 150ms) var(--ease-out, ease-out);
3629
+ }
3630
+ .fds-sidebar-item--icon-only {
3631
+ width: var(--size-control-md, 36px);
3632
+ }
3633
+ .fds-sidebar-item--icon-only .fds-sidebar-item__label {
3634
+ opacity: 0;
3635
+ }
3636
+
3637
+ /* src/components/Sidebar/sidebar.css */
3638
+ .fds-sidebar {
3639
+ box-sizing: border-box;
3640
+ display: flex;
3641
+ flex-direction: column;
3642
+ gap: var(--spacing-3, 12px);
3643
+ flex-shrink: 0;
3644
+ width: 240px;
3645
+ height: 100%;
3646
+ padding: var(--spacing-3, 12px);
3647
+ background: var(--color-surface, #f5f5f5);
3648
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3649
+ transition: width var(--duration-moderate, 280ms) var(--ease-out, ease-out);
3650
+ }
3651
+ .fds-sidebar--collapsed {
3652
+ width: 60px;
3653
+ }
3654
+ .fds-sidebar__header {
3655
+ display: flex;
3656
+ flex-direction: column;
3657
+ gap: var(--spacing-2, 8px);
3658
+ }
3659
+ .fds-sidebar__brand {
3660
+ position: relative;
3661
+ display: flex;
3662
+ align-items: center;
3663
+ justify-content: space-between;
3664
+ height: var(--size-control-sm, 32px);
3665
+ }
3666
+ .fds-sidebar__logo {
3667
+ display: inline-flex;
3668
+ align-items: center;
3669
+ padding-left: var(--spacing-2, 8px);
3670
+ white-space: nowrap;
3671
+ }
3672
+ .fds-sidebar__logo,
3673
+ .fds-sidebar__collapse,
3674
+ .fds-sidebar__expand {
3675
+ transition: opacity var(--duration-quick, 150ms) var(--ease-out, ease-out);
3676
+ }
3677
+ .fds-sidebar__collapse {
3678
+ display: inline-flex;
3679
+ }
3680
+ .fds-sidebar__expand {
3681
+ position: absolute;
3682
+ left: 0;
3683
+ top: 0;
3684
+ opacity: 0;
3685
+ pointer-events: none;
3686
+ }
3687
+ .fds-sidebar--collapsed .fds-sidebar__logo,
3688
+ .fds-sidebar--collapsed .fds-sidebar__collapse {
3689
+ opacity: 0;
3690
+ pointer-events: none;
3691
+ }
3692
+ .fds-sidebar--collapsed .fds-sidebar__expand {
3693
+ opacity: 1;
3694
+ pointer-events: auto;
3695
+ }
3696
+ .fds-sidebar__action {
3697
+ box-sizing: border-box;
3698
+ display: flex;
3699
+ align-items: center;
3700
+ gap: var(--spacing-2, 8px);
3701
+ width: 100%;
3702
+ height: var(--size-control-sm, 32px);
3703
+ padding: 0 0 0 calc(var(--size-control-md, 36px) / 2 - 8px);
3704
+ overflow: hidden;
3705
+ border: 1px solid var(--color-border, #e5e5e5);
3706
+ border-radius: var(--radius-md, 6px);
3707
+ background: var(--color-surface-raised, #ffffff);
3708
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3709
+ font-size: var(--font-size-text-compact, 13px);
3710
+ line-height: var(--line-height-text-compact, 20px);
3711
+ font-weight: var(--font-weight-medium, 500);
3712
+ color: var(--color-text, #171717);
3713
+ white-space: nowrap;
3714
+ cursor: pointer;
3715
+ transition: background-color var(--duration-instant, 80ms) ease, border-color var(--duration-instant, 80ms) ease;
3716
+ }
3717
+ .fds-sidebar__action:hover {
3718
+ background: var(--color-surface-subtle, #fafafa);
3719
+ border-color: var(--color-border-strong, #d4d4d4);
3720
+ }
3721
+ .fds-sidebar__action:active {
3722
+ background: var(--color-surface-hover, #ececec);
3723
+ }
3724
+ .fds-sidebar__action:focus-visible {
3725
+ outline: 2px solid var(--color-accent, #ea580c);
3726
+ outline-offset: 2px;
3727
+ }
3728
+ .fds-sidebar__action-icon {
3729
+ display: inline-flex;
3730
+ flex-shrink: 0;
3731
+ width: 16px;
3732
+ height: 16px;
3733
+ }
3734
+ .fds-sidebar__action-icon > svg {
3735
+ width: 100%;
3736
+ height: 100%;
3737
+ }
3738
+ .fds-sidebar__action-label {
3739
+ transition: opacity var(--duration-quick, 150ms) var(--ease-out, ease-out);
3740
+ }
3741
+ .fds-sidebar--collapsed .fds-sidebar__action-label {
3742
+ opacity: 0;
3743
+ }
3744
+ .fds-sidebar__section {
3745
+ display: flex;
3746
+ flex-direction: column;
3747
+ gap: calc(var(--spacing-1, 4px) / 2);
3748
+ min-width: 0;
3749
+ transition: opacity var(--duration-quick, 150ms) var(--ease-out, ease-out), visibility 0s linear 0s;
3750
+ }
3751
+ .fds-sidebar__section--hidden {
3752
+ opacity: 0;
3753
+ visibility: hidden;
3754
+ transition: opacity var(--duration-quick, 150ms) var(--ease-out, ease-out), visibility 0s linear var(--duration-quick, 150ms);
3755
+ }
3756
+ .fds-sidebar__section .fds-list-label {
3757
+ white-space: nowrap;
3758
+ overflow: hidden;
3759
+ }
3760
+ .fds-sidebar__footer {
3761
+ display: flex;
3762
+ flex-direction: column;
3763
+ gap: calc(var(--spacing-1, 4px) / 2);
3764
+ margin-top: auto;
3765
+ }
3766
+ .fds-sidebar .fds-sidebar-item--icon-only,
3767
+ .fds-sidebar .fds-workspace-switcher--compact,
3768
+ .fds-sidebar .fds-avatar-label-group--compact {
3769
+ width: 100%;
3770
+ }
3771
+ @media (prefers-reduced-motion: reduce) {
3772
+ .fds-sidebar,
3773
+ .fds-sidebar * {
3774
+ transition: none !important;
3775
+ }
3776
+ }
3777
+
3778
+ /* src/components/WorkspaceSwitcher/workspace-switcher.css */
3779
+ .fds-workspace-switcher {
3780
+ box-sizing: border-box;
3781
+ display: flex;
3782
+ align-items: center;
3783
+ gap: var(--spacing-2, 8px);
3784
+ width: 100%;
3785
+ height: var(--size-control-md, 36px);
3786
+ padding: 0 var(--spacing-2, 8px);
3787
+ overflow: hidden;
3788
+ border: 1px solid transparent;
3789
+ border-radius: var(--radius-md, 6px);
3790
+ background: transparent;
3791
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3792
+ font-size: var(--font-size-text-compact, 13px);
3793
+ line-height: var(--line-height-text-compact, 20px);
3794
+ font-weight: var(--font-weight-medium, 500);
3795
+ color: var(--color-text, #171717);
3796
+ text-align: left;
3797
+ cursor: pointer;
3798
+ transition: background-color var(--duration-instant, 80ms) ease;
3799
+ }
3800
+ .fds-workspace-switcher:hover {
3801
+ background: var(--color-surface-hover, #ececec);
3802
+ }
3803
+ .fds-workspace-switcher[aria-expanded=true] {
3804
+ background: var(--color-surface-raised, #ffffff);
3805
+ border-color: var(--color-border, #e5e5e5);
3806
+ box-shadow: var(--shadow-sm);
3807
+ }
3808
+ .fds-workspace-switcher:focus-visible {
3809
+ outline: 2px solid var(--color-accent, #ea580c);
3810
+ outline-offset: -2px;
3811
+ }
3812
+ .fds-workspace-switcher__text {
3813
+ display: flex;
3814
+ align-items: center;
3815
+ gap: var(--spacing-2, 8px);
3816
+ flex: 1;
3817
+ min-width: 0;
3818
+ transition: opacity var(--duration-quick, 150ms) var(--ease-out, ease-out);
3819
+ }
3820
+ .fds-workspace-switcher__name {
3821
+ min-width: 0;
3822
+ overflow: hidden;
3823
+ text-overflow: ellipsis;
3824
+ white-space: nowrap;
3825
+ }
3826
+ .fds-workspace-switcher__plan {
3827
+ flex-shrink: 0;
3828
+ padding: 0 var(--spacing-1, 4px);
3829
+ border: 1px solid var(--color-border, #e5e5e5);
3830
+ border-radius: var(--radius-sm, 4px);
3831
+ font-size: var(--font-size-text-2xs, 11px);
3832
+ line-height: var(--line-height-text-2xs, 16px);
3833
+ font-weight: var(--font-weight-regular, 400);
3834
+ color: var(--color-text-tertiary, #737373);
3835
+ }
3836
+ .fds-workspace-switcher__chevron {
3837
+ flex-shrink: 0;
3838
+ width: 16px;
3839
+ height: 16px;
3840
+ margin-left: auto;
3841
+ color: var(--color-text-tertiary, #737373);
3842
+ }
3843
+ .fds-workspace-switcher--compact {
3844
+ width: var(--size-control-md, 36px);
3845
+ }
3846
+ .fds-workspace-switcher--compact .fds-workspace-switcher__text {
3847
+ opacity: 0;
3848
+ }
3849
+ .fds-workspace-avatar {
3850
+ display: inline-flex;
3851
+ align-items: center;
3852
+ justify-content: center;
3853
+ flex-shrink: 0;
3854
+ width: 20px;
3855
+ height: 20px;
3856
+ border-radius: var(--radius-sm, 4px);
3857
+ background: var(--color-primary, #171717);
3858
+ color: var(--color-primary-text, #ffffff);
3859
+ font-size: var(--font-size-text-2xs, 11px);
3860
+ line-height: 1;
3861
+ font-weight: var(--font-weight-semibold, 600);
3862
+ }
3863
+
3864
+ /* src/components/AvatarLabelGroup/avatar-label-group.css */
3865
+ .fds-avatar-label-group {
3866
+ box-sizing: border-box;
3867
+ display: flex;
3868
+ align-items: center;
3869
+ gap: var(--spacing-2, 8px);
3870
+ width: 100%;
3871
+ min-width: 0;
3872
+ padding: var(--spacing-1, 4px) var(--spacing-1, 4px) var(--spacing-1, 4px) calc((var(--size-control-md, 36px) - 24px) / 2);
3873
+ overflow: hidden;
3874
+ border: 0;
3875
+ border-radius: var(--radius-md, 6px);
3876
+ background: transparent;
3877
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3878
+ text-align: left;
3879
+ cursor: pointer;
3880
+ }
3881
+ .fds-avatar-label-group:hover,
3882
+ .fds-avatar-label-group[aria-expanded=true] {
3883
+ background: var(--color-surface-hover, #ececec);
3884
+ }
3885
+ .fds-avatar-label-group:focus-visible {
3886
+ outline: 2px solid var(--color-accent, #ea580c);
3887
+ outline-offset: -2px;
3888
+ }
3889
+ .fds-avatar-label-group--compact {
3890
+ width: var(--size-control-md, 36px);
3891
+ }
3892
+ .fds-avatar-label-group__text {
3893
+ display: flex;
3894
+ flex-direction: column;
3895
+ min-width: 0;
3896
+ transition: opacity var(--duration-quick, 150ms) var(--ease-out, ease-out);
3897
+ }
3898
+ .fds-avatar-label-group--compact .fds-avatar-label-group__text {
3899
+ opacity: 0;
3900
+ }
3901
+ .fds-avatar-label-group__name,
3902
+ .fds-avatar-label-group__detail {
3903
+ overflow: hidden;
3904
+ text-overflow: ellipsis;
3905
+ white-space: nowrap;
3906
+ }
3907
+ .fds-avatar-label-group__name {
3908
+ font-size: var(--font-size-text-compact, 13px);
3909
+ line-height: var(--line-height-text-compact, 20px);
3910
+ font-weight: var(--font-weight-medium, 500);
3911
+ color: var(--color-text, #171717);
3912
+ }
3913
+ .fds-avatar-label-group__detail {
3914
+ font-size: var(--font-size-text-xs, 12px);
3915
+ line-height: var(--line-height-text-xs, 18px);
3916
+ color: var(--color-text-tertiary, #737373);
3917
+ }
3918
+
3919
+ /* src/components/AppLayout/app-layout.css */
3920
+ .fds-app-layout {
3921
+ display: flex;
3922
+ height: 100vh;
3923
+ height: 100dvh;
3924
+ background: var(--color-surface, #f5f5f5);
3925
+ overflow: hidden;
3926
+ }
3927
+ .fds-app-layout__panel {
3928
+ position: relative;
3929
+ flex: 1;
3930
+ min-width: 0;
3931
+ margin: var(--spacing-2, 8px) var(--spacing-2, 8px) var(--spacing-2, 8px) 0;
3932
+ border: 1px solid var(--color-border, #e5e5e5);
3933
+ border-radius: var(--radius-xl, 12px);
3934
+ background: var(--color-bg, #ffffff);
3935
+ overflow: auto;
3936
+ }
3937
+
3938
+ /* src/components/PageHeader/page-header.css */
3939
+ .fds-page-header {
3940
+ display: flex;
3941
+ flex-direction: column;
3942
+ gap: var(--spacing-4, 16px);
3943
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
3944
+ }
3945
+ .fds-page-header__row {
3946
+ display: flex;
3947
+ align-items: flex-start;
3948
+ justify-content: space-between;
3949
+ gap: var(--spacing-4, 16px);
3950
+ }
3951
+ .fds-page-header__text {
3952
+ display: flex;
3953
+ flex-direction: column;
3954
+ gap: var(--spacing-1, 4px);
3955
+ min-width: 0;
3956
+ }
3957
+ .fds-page-header__breadcrumb {
3958
+ font-size: var(--font-size-text-xs, 12px);
3959
+ line-height: var(--line-height-text-xs, 18px);
3960
+ color: var(--color-text-tertiary, #737373);
3961
+ }
3962
+ .fds-page-header__breadcrumb a {
3963
+ color: inherit;
3964
+ text-decoration: none;
3965
+ }
3966
+ .fds-page-header__breadcrumb a:hover {
3967
+ color: var(--color-text, #171717);
3968
+ }
3969
+ .fds-page-header__title {
3970
+ margin: 0;
3971
+ font-family: var(--font-display, "Rethink Sans", system-ui, sans-serif);
3972
+ font-size: var(--font-size-text-xl, 20px);
3973
+ line-height: var(--line-height-text-xl, 30px);
3974
+ font-weight: var(--font-weight-semibold, 600);
3975
+ color: var(--color-text, #171717);
3976
+ }
3977
+ .fds-page-header__description {
3978
+ margin: 0;
3979
+ font-size: var(--font-size-text-compact, 13px);
3980
+ line-height: var(--line-height-text-compact, 20px);
3981
+ color: var(--color-text-tertiary, #737373);
3982
+ }
3983
+ .fds-page-header__actions {
3984
+ display: flex;
3985
+ align-items: center;
3986
+ gap: var(--spacing-2, 8px);
3987
+ flex-shrink: 0;
3988
+ }
3989
+
3990
+ /* src/components/Toast/toast.css */
3991
+ .fds-toast-region {
3992
+ position: fixed;
3993
+ top: var(--spacing-4, 16px);
3994
+ right: var(--spacing-4, 16px);
3995
+ z-index: 1200;
3996
+ display: flex;
3997
+ flex-direction: column;
3998
+ align-items: flex-end;
3999
+ gap: var(--spacing-2, 8px);
4000
+ pointer-events: none;
4001
+ }
4002
+ .fds-toast-region > * {
4003
+ pointer-events: auto;
4004
+ }
4005
+ .fds-toast {
4006
+ display: inline-flex;
4007
+ align-items: center;
4008
+ gap: var(--spacing-3, 12px);
4009
+ padding: var(--spacing-2, 8px) var(--spacing-2, 8px) var(--spacing-2, 8px) var(--spacing-3, 12px);
4010
+ border-radius: var(--radius-lg, 8px);
4011
+ background: var(--color-primary, #171717);
4012
+ color: var(--color-primary-text, #ffffff);
4013
+ box-shadow: var(--shadow-lg);
4014
+ font-family: var(--font-body, "Rethink Sans", system-ui, sans-serif);
4015
+ font-size: var(--font-size-text-compact, 13px);
4016
+ line-height: var(--line-height-text-compact, 20px);
4017
+ animation: fds-toast-in var(--duration-moderate, 280ms) var(--ease-out, ease-out);
4018
+ }
4019
+ .fds-toast__action {
4020
+ padding: 0;
4021
+ border: 0;
4022
+ background: none;
4023
+ font: inherit;
4024
+ font-weight: var(--font-weight-semibold, 600);
4025
+ color: var(--color-primary-text, #ffffff);
4026
+ text-decoration: underline;
4027
+ text-underline-offset: 2px;
4028
+ cursor: pointer;
4029
+ }
4030
+ .fds-toast__close {
4031
+ display: inline-flex;
4032
+ padding: var(--spacing-1, 4px);
4033
+ border: 0;
4034
+ border-radius: var(--radius-sm, 4px);
4035
+ background: none;
4036
+ color: var(--color-white-alpha-60, rgba(255, 255, 255, 0.6));
4037
+ cursor: pointer;
4038
+ }
4039
+ .fds-toast__close:hover {
4040
+ color: var(--color-primary-text, #ffffff);
4041
+ background: var(--color-white-alpha-10, rgba(255, 255, 255, 0.1));
4042
+ }
4043
+ .fds-toast__close > svg {
4044
+ width: 14px;
4045
+ height: 14px;
4046
+ }
4047
+ .fds-toast button:focus-visible {
4048
+ outline: 2px solid var(--color-accent, #ea580c);
4049
+ outline-offset: 2px;
4050
+ }
4051
+ @keyframes fds-toast-in {
4052
+ from {
4053
+ opacity: 0;
4054
+ transform: translateX(var(--spacing-4, 16px));
4055
+ }
4056
+ to {
4057
+ opacity: 1;
4058
+ transform: none;
4059
+ }
4060
+ }
4061
+ @media (prefers-reduced-motion: reduce) {
4062
+ .fds-toast {
4063
+ animation: none;
4064
+ }
4065
+ }