dropdown-menu.css 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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-sub-trigger"] {
  54. &[data-expanded] {
  55. background: var(--surface-raised-base-hover);
  56. }
  57. }
  58. [data-slot="dropdown-menu-item-indicator"] {
  59. display: flex;
  60. align-items: center;
  61. justify-content: center;
  62. width: 16px;
  63. height: 16px;
  64. }
  65. [data-slot="dropdown-menu-item-label"] {
  66. flex: 1;
  67. }
  68. [data-slot="dropdown-menu-item-description"] {
  69. font-size: var(--font-size-x-small);
  70. color: var(--text-weak);
  71. }
  72. [data-slot="dropdown-menu-separator"] {
  73. height: 1px;
  74. margin: 4px -4px;
  75. border-top-color: var(--border-weak-base);
  76. }
  77. [data-slot="dropdown-menu-group-label"] {
  78. padding: 4px 8px;
  79. font-family: var(--font-family-sans);
  80. font-size: var(--font-size-x-small);
  81. font-weight: var(--font-weight-medium);
  82. line-height: var(--line-height-large);
  83. letter-spacing: var(--letter-spacing-normal);
  84. color: var(--text-weak);
  85. }
  86. [data-slot="dropdown-menu-arrow"] {
  87. fill: var(--surface-raised-stronger-non-alpha);
  88. }
  89. }
  90. @keyframes dropdown-menu-open {
  91. from {
  92. opacity: 0;
  93. transform: scale(0.96);
  94. }
  95. to {
  96. opacity: 1;
  97. transform: scale(1);
  98. }
  99. }
  100. @keyframes dropdown-menu-close {
  101. from {
  102. opacity: 1;
  103. transform: scale(1);
  104. }
  105. to {
  106. opacity: 0;
  107. transform: scale(0.96);
  108. }
  109. }