dropdown-menu.css 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. [data-component="dropdown-menu-content"],
  2. [data-component="dropdown-menu-sub-content"] {
  3. min-width: 8rem;
  4. overflow: hidden;
  5. border-radius: var(--radius-md);
  6. border: 1px solid color-mix(in oklch, var(--border-base) 50%, transparent);
  7. background-clip: padding-box;
  8. background-color: var(--surface-raised-stronger-non-alpha);
  9. padding: 4px;
  10. box-shadow: var(--shadow-md);
  11. z-index: 50;
  12. transform-origin: var(--kb-menu-content-transform-origin);
  13. &:focus,
  14. &:focus-visible {
  15. outline: none;
  16. }
  17. &[data-closed] {
  18. animation: dropdown-menu-close 0.15s ease-out;
  19. }
  20. &[data-expanded] {
  21. animation: dropdown-menu-open 0.15s ease-out;
  22. }
  23. }
  24. [data-component="dropdown-menu-content"],
  25. [data-component="dropdown-menu-sub-content"] {
  26. [data-slot="dropdown-menu-item"],
  27. [data-slot="dropdown-menu-checkbox-item"],
  28. [data-slot="dropdown-menu-radio-item"],
  29. [data-slot="dropdown-menu-sub-trigger"] {
  30. position: relative;
  31. display: flex;
  32. align-items: center;
  33. gap: 8px;
  34. padding: 4px 8px;
  35. border-radius: var(--radius-sm);
  36. cursor: default;
  37. user-select: none;
  38. outline: none;
  39. font-family: var(--font-family-sans);
  40. font-size: var(--font-size-small);
  41. font-weight: var(--font-weight-medium);
  42. line-height: var(--line-height-large);
  43. letter-spacing: var(--letter-spacing-normal);
  44. color: var(--text-strong);
  45. &[data-highlighted] {
  46. background: var(--surface-raised-base-hover);
  47. }
  48. &[data-disabled] {
  49. color: var(--text-weak);
  50. pointer-events: none;
  51. }
  52. }
  53. [data-slot="dropdown-menu-checkbox-item"],
  54. [data-slot="dropdown-menu-radio-item"] {
  55. padding-right: 28px;
  56. }
  57. [data-slot="dropdown-menu-sub-trigger"] {
  58. &[data-expanded] {
  59. background: var(--surface-raised-base-hover);
  60. }
  61. }
  62. [data-slot="dropdown-menu-item-indicator"] {
  63. display: flex;
  64. align-items: center;
  65. justify-content: center;
  66. width: 16px;
  67. height: 16px;
  68. position: absolute;
  69. right: 8px;
  70. top: 50%;
  71. transform: translateY(-50%);
  72. }
  73. [data-slot="dropdown-menu-item-label"] {
  74. flex: 1;
  75. }
  76. [data-slot="dropdown-menu-item-description"] {
  77. font-size: var(--font-size-x-small);
  78. color: var(--text-weak);
  79. }
  80. [data-slot="dropdown-menu-separator"] {
  81. height: 1px;
  82. margin: 4px -4px;
  83. border-top-color: var(--border-weak-base);
  84. }
  85. [data-slot="dropdown-menu-group-label"] {
  86. display: block;
  87. padding: 4px 8px;
  88. font-family: var(--font-family-sans);
  89. font-size: var(--font-size-x-small);
  90. font-weight: var(--font-weight-medium);
  91. line-height: var(--line-height-large);
  92. letter-spacing: var(--letter-spacing-normal);
  93. color: var(--text-weak);
  94. }
  95. [data-slot="dropdown-menu-arrow"] {
  96. fill: var(--surface-raised-stronger-non-alpha);
  97. }
  98. }
  99. @keyframes dropdown-menu-open {
  100. from {
  101. opacity: 0;
  102. transform: scale(0.96);
  103. }
  104. to {
  105. opacity: 1;
  106. transform: scale(1);
  107. }
  108. }
  109. @keyframes dropdown-menu-close {
  110. from {
  111. opacity: 1;
  112. transform: scale(1);
  113. }
  114. to {
  115. opacity: 0;
  116. transform: scale(0.96);
  117. }
  118. }