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