titlebar-tab-nav.css 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. [data-titlebar-tab] [data-slot="tab-close"] {
  2. position: absolute;
  3. top: 4px;
  4. right: 4px;
  5. display: flex;
  6. height: 20px;
  7. width: 20px;
  8. align-items: center;
  9. justify-content: center;
  10. }
  11. [data-titlebar-tab] {
  12. --tab-base: var(--v2-background-bg-deep);
  13. --tab-overlay: transparent;
  14. background: linear-gradient(var(--tab-overlay), var(--tab-overlay)), var(--tab-base);
  15. }
  16. [data-titlebar-tab]:is(:hover, :has(> [data-slot="tab-link"]:focus-visible)):not([data-state="pressed"]):not(
  17. [data-dragging="true"]
  18. ):not([data-editing="true"]) {
  19. --tab-base: var(--v2-background-bg-layer-02);
  20. --tab-overlay: var(--v2-overlay-simple-overlay-hover);
  21. }
  22. [data-titlebar-tab]:is([data-state="pressed"], [data-dragging="true"], [data-editing="true"]) {
  23. --tab-base: var(--v2-background-bg-layer-02);
  24. --tab-overlay: var(--v2-overlay-simple-overlay-pressed);
  25. }
  26. [data-titlebar-tab]:is(:hover, [data-state="pressed"]) [data-slot="tab-close"] {
  27. background: linear-gradient(var(--tab-overlay), var(--tab-overlay)), var(--tab-base);
  28. }
  29. [data-titlebar-tab][data-editing="true"] [data-slot="tab-close"] {
  30. display: none;
  31. }
  32. [data-titlebar-tab-list] {
  33. gap: 6px;
  34. }
  35. [data-titlebar-tab-slot] {
  36. --tab-separator: var(--v2-background-bg-layer-03);
  37. position: relative;
  38. }
  39. [data-color-scheme="dark"] [data-titlebar-tab-slot] {
  40. --tab-separator: var(--v2-background-bg-layer-02);
  41. }
  42. [data-titlebar-tab-slot]:not(:first-child):not([data-active="true"])::before {
  43. content: "";
  44. position: absolute;
  45. top: 8px;
  46. left: -3.75px;
  47. width: 1.5px;
  48. height: 12px;
  49. border-radius: 9999px;
  50. background: var(--tab-separator);
  51. }
  52. [data-titlebar-tab-slot][data-active="true"] + [data-titlebar-tab-slot]::before {
  53. display: none;
  54. }
  55. [data-titlebar-tab-slot]:not([data-active="true"]):has([data-titlebar-tab]:hover)::before,
  56. [data-titlebar-tab-slot]:not([data-active="true"]):has([data-titlebar-tab]:hover) + [data-titlebar-tab-slot]::before {
  57. display: none;
  58. }
  59. [data-titlebar-tab][data-title-overflow="true"]:not([data-editing="true"]) [data-slot="tab-link"] {
  60. --tab-title-fade-offset: 4px;
  61. -webkit-mask-image: linear-gradient(
  62. to right,
  63. black 0,
  64. black calc(100% - var(--tab-title-fade-offset) - 16px),
  65. transparent calc(100% - var(--tab-title-fade-offset)),
  66. transparent 100%
  67. );
  68. mask-image: linear-gradient(
  69. to right,
  70. black 0,
  71. black calc(100% - var(--tab-title-fade-offset) - 16px),
  72. transparent calc(100% - var(--tab-title-fade-offset)),
  73. transparent 100%
  74. );
  75. }
  76. [data-titlebar-tab][data-title-overflow="true"]:is(:hover, [data-active="true"]):not([data-editing="true"])
  77. [data-slot="tab-link"] {
  78. --tab-title-fade-offset: 24px;
  79. }
  80. [data-titlebar-tab][data-title-overflow="true"]:not(:hover):not([data-active="true"]):not([data-editing="true"])
  81. [data-slot="tab-link"] {
  82. padding-right: 0;
  83. }
  84. [data-titlebar-tab] [data-slot="tab-title"] {
  85. min-width: 0;
  86. }
  87. [data-titlebar-tab][data-editing="true"] [data-slot="tab-title"] {
  88. min-width: 0;
  89. max-width: 100%;
  90. flex: 1 1 auto;
  91. overflow-x: auto;
  92. overflow-y: hidden;
  93. white-space: nowrap;
  94. scrollbar-width: none;
  95. }
  96. [data-titlebar-tab][data-editing="true"] [data-slot="tab-title"]::-webkit-scrollbar {
  97. display: none;
  98. }
  99. @container (max-width: 64px) {
  100. [data-titlebar-tab-link] {
  101. justify-content: center;
  102. gap: 0;
  103. padding-inline: 0;
  104. }
  105. [data-titlebar-tab-title] {
  106. display: none;
  107. }
  108. [data-slot="tab-close"] {
  109. right: auto;
  110. left: 50%;
  111. transform: translateX(-50%);
  112. }
  113. }