@kushagradhawan/kookie-ui 0.1.16 → 0.1.18

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.
Files changed (276) hide show
  1. package/components.css +3730 -1072
  2. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/base-button.js +1 -1
  4. package/dist/cjs/components/_internal/base-button.js.map +3 -3
  5. package/dist/cjs/components/_internal/base-button.props.d.ts +9 -0
  6. package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
  7. package/dist/cjs/components/_internal/base-button.props.js +1 -1
  8. package/dist/cjs/components/_internal/base-button.props.js.map +3 -3
  9. package/dist/cjs/components/_internal/base-menu.props.d.ts +5 -0
  10. package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
  11. package/dist/cjs/components/_internal/base-menu.props.js +1 -1
  12. package/dist/cjs/components/_internal/base-menu.props.js.map +3 -3
  13. package/dist/cjs/components/_internal/base-tab-list.props.d.ts +5 -0
  14. package/dist/cjs/components/_internal/base-tab-list.props.d.ts.map +1 -1
  15. package/dist/cjs/components/_internal/base-tab-list.props.js +1 -1
  16. package/dist/cjs/components/_internal/base-tab-list.props.js.map +3 -3
  17. package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
  18. package/dist/cjs/components/alert-dialog.js +1 -1
  19. package/dist/cjs/components/alert-dialog.js.map +3 -3
  20. package/dist/cjs/components/avatar.d.ts.map +1 -1
  21. package/dist/cjs/components/avatar.js +1 -1
  22. package/dist/cjs/components/avatar.js.map +3 -3
  23. package/dist/cjs/components/avatar.props.d.ts +6 -1
  24. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  25. package/dist/cjs/components/avatar.props.js +1 -1
  26. package/dist/cjs/components/avatar.props.js.map +3 -3
  27. package/dist/cjs/components/badge.d.ts.map +1 -1
  28. package/dist/cjs/components/badge.js +1 -1
  29. package/dist/cjs/components/badge.js.map +3 -3
  30. package/dist/cjs/components/badge.props.d.ts +6 -1
  31. package/dist/cjs/components/badge.props.d.ts.map +1 -1
  32. package/dist/cjs/components/badge.props.js +1 -1
  33. package/dist/cjs/components/badge.props.js.map +2 -2
  34. package/dist/cjs/components/callout.d.ts.map +1 -1
  35. package/dist/cjs/components/callout.js +1 -1
  36. package/dist/cjs/components/callout.js.map +3 -3
  37. package/dist/cjs/components/callout.props.d.ts +5 -0
  38. package/dist/cjs/components/callout.props.d.ts.map +1 -1
  39. package/dist/cjs/components/callout.props.js +1 -1
  40. package/dist/cjs/components/callout.props.js.map +3 -3
  41. package/dist/cjs/components/card.d.ts.map +1 -1
  42. package/dist/cjs/components/card.js +1 -1
  43. package/dist/cjs/components/card.js.map +3 -3
  44. package/dist/cjs/components/card.props.d.ts +11 -2
  45. package/dist/cjs/components/card.props.d.ts.map +1 -1
  46. package/dist/cjs/components/card.props.js +1 -1
  47. package/dist/cjs/components/card.props.js.map +3 -3
  48. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  49. package/dist/cjs/components/context-menu.js +1 -1
  50. package/dist/cjs/components/context-menu.js.map +3 -3
  51. package/dist/cjs/components/dialog.d.ts.map +1 -1
  52. package/dist/cjs/components/dialog.js +1 -1
  53. package/dist/cjs/components/dialog.js.map +3 -3
  54. package/dist/cjs/components/dialog.props.d.ts +5 -0
  55. package/dist/cjs/components/dialog.props.d.ts.map +1 -1
  56. package/dist/cjs/components/dialog.props.js +1 -1
  57. package/dist/cjs/components/dialog.props.js.map +3 -3
  58. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  59. package/dist/cjs/components/dropdown-menu.js +1 -1
  60. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  61. package/dist/cjs/components/image.d.ts +6 -1
  62. package/dist/cjs/components/image.d.ts.map +1 -1
  63. package/dist/cjs/components/image.js +1 -1
  64. package/dist/cjs/components/image.js.map +3 -3
  65. package/dist/cjs/components/popover.d.ts.map +1 -1
  66. package/dist/cjs/components/popover.js +1 -1
  67. package/dist/cjs/components/popover.js.map +3 -3
  68. package/dist/cjs/components/popover.props.d.ts +5 -0
  69. package/dist/cjs/components/popover.props.d.ts.map +1 -1
  70. package/dist/cjs/components/popover.props.js +1 -1
  71. package/dist/cjs/components/popover.props.js.map +3 -3
  72. package/dist/cjs/components/select.d.ts.map +1 -1
  73. package/dist/cjs/components/select.js +1 -1
  74. package/dist/cjs/components/select.js.map +3 -3
  75. package/dist/cjs/components/select.props.d.ts +6 -1
  76. package/dist/cjs/components/select.props.d.ts.map +1 -1
  77. package/dist/cjs/components/select.props.js +1 -1
  78. package/dist/cjs/components/select.props.js.map +2 -2
  79. package/dist/cjs/components/sidebar.d.ts +13 -2
  80. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  81. package/dist/cjs/components/sidebar.js +1 -1
  82. package/dist/cjs/components/sidebar.js.map +3 -3
  83. package/dist/cjs/components/sidebar.props.d.ts +5 -0
  84. package/dist/cjs/components/sidebar.props.d.ts.map +1 -1
  85. package/dist/cjs/components/sidebar.props.js +1 -1
  86. package/dist/cjs/components/sidebar.props.js.map +2 -2
  87. package/dist/cjs/components/tabs.d.ts.map +1 -1
  88. package/dist/cjs/components/tabs.js +1 -1
  89. package/dist/cjs/components/tabs.js.map +3 -3
  90. package/dist/cjs/components/text-area.d.ts.map +1 -1
  91. package/dist/cjs/components/text-area.js +1 -1
  92. package/dist/cjs/components/text-area.js.map +3 -3
  93. package/dist/cjs/components/text-area.props.d.ts +6 -1
  94. package/dist/cjs/components/text-area.props.d.ts.map +1 -1
  95. package/dist/cjs/components/text-area.props.js +1 -1
  96. package/dist/cjs/components/text-area.props.js.map +3 -3
  97. package/dist/cjs/components/text-field.d.ts.map +1 -1
  98. package/dist/cjs/components/text-field.js +2 -2
  99. package/dist/cjs/components/text-field.js.map +3 -3
  100. package/dist/cjs/components/text-field.props.d.ts +6 -1
  101. package/dist/cjs/components/text-field.props.d.ts.map +1 -1
  102. package/dist/cjs/components/text-field.props.js +1 -1
  103. package/dist/cjs/components/text-field.props.js.map +3 -3
  104. package/dist/cjs/components/theme.d.ts.map +1 -1
  105. package/dist/cjs/components/theme.js +1 -1
  106. package/dist/cjs/components/theme.js.map +2 -2
  107. package/dist/cjs/helpers/map-prop-values.js +1 -1
  108. package/dist/cjs/helpers/map-prop-values.js.map +2 -2
  109. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  110. package/dist/esm/components/_internal/base-button.js +1 -1
  111. package/dist/esm/components/_internal/base-button.js.map +3 -3
  112. package/dist/esm/components/_internal/base-button.props.d.ts +9 -0
  113. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
  114. package/dist/esm/components/_internal/base-button.props.js +1 -1
  115. package/dist/esm/components/_internal/base-button.props.js.map +3 -3
  116. package/dist/esm/components/_internal/base-menu.props.d.ts +5 -0
  117. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
  118. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  119. package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
  120. package/dist/esm/components/_internal/base-tab-list.props.d.ts +5 -0
  121. package/dist/esm/components/_internal/base-tab-list.props.d.ts.map +1 -1
  122. package/dist/esm/components/_internal/base-tab-list.props.js +1 -1
  123. package/dist/esm/components/_internal/base-tab-list.props.js.map +3 -3
  124. package/dist/esm/components/alert-dialog.d.ts.map +1 -1
  125. package/dist/esm/components/alert-dialog.js +1 -1
  126. package/dist/esm/components/alert-dialog.js.map +3 -3
  127. package/dist/esm/components/avatar.d.ts.map +1 -1
  128. package/dist/esm/components/avatar.js +1 -1
  129. package/dist/esm/components/avatar.js.map +3 -3
  130. package/dist/esm/components/avatar.props.d.ts +6 -1
  131. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  132. package/dist/esm/components/avatar.props.js +1 -1
  133. package/dist/esm/components/avatar.props.js.map +3 -3
  134. package/dist/esm/components/badge.d.ts.map +1 -1
  135. package/dist/esm/components/badge.js +1 -1
  136. package/dist/esm/components/badge.js.map +3 -3
  137. package/dist/esm/components/badge.props.d.ts +6 -1
  138. package/dist/esm/components/badge.props.d.ts.map +1 -1
  139. package/dist/esm/components/badge.props.js +1 -1
  140. package/dist/esm/components/badge.props.js.map +2 -2
  141. package/dist/esm/components/callout.d.ts.map +1 -1
  142. package/dist/esm/components/callout.js +1 -1
  143. package/dist/esm/components/callout.js.map +3 -3
  144. package/dist/esm/components/callout.props.d.ts +5 -0
  145. package/dist/esm/components/callout.props.d.ts.map +1 -1
  146. package/dist/esm/components/callout.props.js +1 -1
  147. package/dist/esm/components/callout.props.js.map +3 -3
  148. package/dist/esm/components/card.d.ts.map +1 -1
  149. package/dist/esm/components/card.js +1 -1
  150. package/dist/esm/components/card.js.map +3 -3
  151. package/dist/esm/components/card.props.d.ts +11 -2
  152. package/dist/esm/components/card.props.d.ts.map +1 -1
  153. package/dist/esm/components/card.props.js +1 -1
  154. package/dist/esm/components/card.props.js.map +3 -3
  155. package/dist/esm/components/context-menu.d.ts.map +1 -1
  156. package/dist/esm/components/context-menu.js +1 -1
  157. package/dist/esm/components/context-menu.js.map +3 -3
  158. package/dist/esm/components/dialog.d.ts.map +1 -1
  159. package/dist/esm/components/dialog.js +1 -1
  160. package/dist/esm/components/dialog.js.map +3 -3
  161. package/dist/esm/components/dialog.props.d.ts +5 -0
  162. package/dist/esm/components/dialog.props.d.ts.map +1 -1
  163. package/dist/esm/components/dialog.props.js +1 -1
  164. package/dist/esm/components/dialog.props.js.map +3 -3
  165. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  166. package/dist/esm/components/dropdown-menu.js +1 -1
  167. package/dist/esm/components/dropdown-menu.js.map +3 -3
  168. package/dist/esm/components/image.d.ts +6 -1
  169. package/dist/esm/components/image.d.ts.map +1 -1
  170. package/dist/esm/components/image.js +1 -1
  171. package/dist/esm/components/image.js.map +3 -3
  172. package/dist/esm/components/popover.d.ts.map +1 -1
  173. package/dist/esm/components/popover.js +1 -1
  174. package/dist/esm/components/popover.js.map +3 -3
  175. package/dist/esm/components/popover.props.d.ts +5 -0
  176. package/dist/esm/components/popover.props.d.ts.map +1 -1
  177. package/dist/esm/components/popover.props.js +1 -1
  178. package/dist/esm/components/popover.props.js.map +3 -3
  179. package/dist/esm/components/select.d.ts.map +1 -1
  180. package/dist/esm/components/select.js +1 -1
  181. package/dist/esm/components/select.js.map +3 -3
  182. package/dist/esm/components/select.props.d.ts +6 -1
  183. package/dist/esm/components/select.props.d.ts.map +1 -1
  184. package/dist/esm/components/select.props.js +1 -1
  185. package/dist/esm/components/select.props.js.map +2 -2
  186. package/dist/esm/components/sidebar.d.ts +13 -2
  187. package/dist/esm/components/sidebar.d.ts.map +1 -1
  188. package/dist/esm/components/sidebar.js +1 -1
  189. package/dist/esm/components/sidebar.js.map +3 -3
  190. package/dist/esm/components/sidebar.props.d.ts +5 -0
  191. package/dist/esm/components/sidebar.props.d.ts.map +1 -1
  192. package/dist/esm/components/sidebar.props.js +1 -1
  193. package/dist/esm/components/sidebar.props.js.map +2 -2
  194. package/dist/esm/components/tabs.d.ts.map +1 -1
  195. package/dist/esm/components/tabs.js +1 -1
  196. package/dist/esm/components/tabs.js.map +3 -3
  197. package/dist/esm/components/text-area.d.ts.map +1 -1
  198. package/dist/esm/components/text-area.js +1 -1
  199. package/dist/esm/components/text-area.js.map +3 -3
  200. package/dist/esm/components/text-area.props.d.ts +6 -1
  201. package/dist/esm/components/text-area.props.d.ts.map +1 -1
  202. package/dist/esm/components/text-area.props.js +1 -1
  203. package/dist/esm/components/text-area.props.js.map +3 -3
  204. package/dist/esm/components/text-field.d.ts.map +1 -1
  205. package/dist/esm/components/text-field.js +2 -2
  206. package/dist/esm/components/text-field.js.map +3 -3
  207. package/dist/esm/components/text-field.props.d.ts +6 -1
  208. package/dist/esm/components/text-field.props.d.ts.map +1 -1
  209. package/dist/esm/components/text-field.props.js +1 -1
  210. package/dist/esm/components/text-field.props.js.map +3 -3
  211. package/dist/esm/components/theme.d.ts.map +1 -1
  212. package/dist/esm/components/theme.js +1 -1
  213. package/dist/esm/components/theme.js.map +2 -2
  214. package/dist/esm/helpers/map-prop-values.js +1 -1
  215. package/dist/esm/helpers/map-prop-values.js.map +2 -2
  216. package/package.json +1 -1
  217. package/src/components/_internal/base-button.css +518 -110
  218. package/src/components/_internal/base-button.props.ts +5 -0
  219. package/src/components/_internal/base-button.tsx +4 -0
  220. package/src/components/_internal/base-card.css +59 -11
  221. package/src/components/_internal/base-dialog.css +26 -9
  222. package/src/components/_internal/base-menu.css +192 -21
  223. package/src/components/_internal/base-menu.props.ts +7 -0
  224. package/src/components/_internal/base-tab-list.css +56 -5
  225. package/src/components/_internal/base-tab-list.props.ts +3 -0
  226. package/src/components/alert-dialog.tsx +22 -7
  227. package/src/components/animations.css +31 -0
  228. package/src/components/avatar.css +436 -9
  229. package/src/components/avatar.props.tsx +4 -1
  230. package/src/components/avatar.tsx +19 -6
  231. package/src/components/badge.css +222 -7
  232. package/src/components/badge.props.tsx +3 -1
  233. package/src/components/badge.tsx +3 -2
  234. package/src/components/button.css +17 -17
  235. package/src/components/callout.css +75 -6
  236. package/src/components/callout.props.tsx +3 -0
  237. package/src/components/callout.tsx +6 -5
  238. package/src/components/card.css +361 -44
  239. package/src/components/card.props.tsx +7 -2
  240. package/src/components/card.tsx +7 -1
  241. package/src/components/context-menu.tsx +47 -22
  242. package/src/components/dialog.props.tsx +3 -0
  243. package/src/components/dialog.tsx +22 -7
  244. package/src/components/dropdown-menu.css +10 -10
  245. package/src/components/dropdown-menu.tsx +37 -11
  246. package/src/components/icon-button.css +36 -8
  247. package/src/components/image.tsx +92 -73
  248. package/src/components/kbd.css +122 -54
  249. package/src/components/popover.css +22 -3
  250. package/src/components/popover.props.tsx +3 -0
  251. package/src/components/popover.tsx +15 -8
  252. package/src/components/select.css +386 -95
  253. package/src/components/select.props.tsx +7 -1
  254. package/src/components/select.tsx +21 -13
  255. package/src/components/sidebar.css +201 -86
  256. package/src/components/sidebar.props.tsx +15 -3
  257. package/src/components/sidebar.tsx +306 -235
  258. package/src/components/tabs.css +3 -1
  259. package/src/components/tabs.tsx +8 -3
  260. package/src/components/text-area.css +323 -32
  261. package/src/components/text-area.props.tsx +4 -1
  262. package/src/components/text-area.tsx +3 -2
  263. package/src/components/text-field.css +336 -15
  264. package/src/components/text-field.props.tsx +4 -1
  265. package/src/components/text-field.tsx +5 -7
  266. package/src/components/theme.tsx +11 -9
  267. package/src/helpers/map-prop-values.ts +1 -1
  268. package/src/styles/tokens/color.css +19 -5
  269. package/src/styles/tokens/constants.css +118 -0
  270. package/src/styles/tokens/index.css +1 -0
  271. package/src/styles/tokens/radius.css +9 -6
  272. package/src/styles/tokens/shadow.css +10 -10
  273. package/src/styles/tokens/transition.css +33 -1
  274. package/styles.css +3846 -1089
  275. package/tokens/base.css +51 -22
  276. package/tokens.css +133 -34
@@ -6,6 +6,7 @@
6
6
  user-select: none;
7
7
  vertical-align: top;
8
8
  line-height: var(--height);
9
+ transition: var(--transition-select);
9
10
 
10
11
  font-family: var(--default-font-family);
11
12
  font-weight: var(--font-weight-regular);
@@ -16,6 +17,11 @@
16
17
  outline: 2px solid var(--focus-8);
17
18
  outline-offset: -1px;
18
19
  }
20
+
21
+ /* Reduced motion support */
22
+ @media (prefers-reduced-motion: reduce) {
23
+ transition: none;
24
+ }
19
25
  }
20
26
 
21
27
  .rt-SelectTriggerInner {
@@ -26,10 +32,9 @@
26
32
 
27
33
  .rt-SelectIcon {
28
34
  flex-shrink: 0;
29
-
30
- :where(.rt-SelectTrigger:not(.rt-variant-ghost)) & {
31
- opacity: 0.9;
32
- }
35
+ margin-left: auto;
36
+ width: var(--trigger-icon-size-default);
37
+ height: var(--trigger-icon-size-default);
33
38
  }
34
39
 
35
40
  .rt-SelectContent {
@@ -39,7 +44,9 @@
39
44
  --scrollarea-scrollbar-horizontal-margin-right: var(--select-content-padding);
40
45
 
41
46
  overflow: hidden;
42
- background-color: var(--color-panel-solid);
47
+ background-color: var(--color-panel);
48
+ backdrop-filter: var(--backdrop-filter-panel);
49
+ box-shadow: var(--shadow-5);
43
50
 
44
51
  &:where([data-side]) {
45
52
  min-width: var(--radix-select-trigger-width);
@@ -124,33 +131,11 @@
124
131
  height: var(--select-trigger-height);
125
132
  }
126
133
  &:where(.rt-variant-ghost) {
127
- box-sizing: content-box;
128
- height: fit-content;
129
- padding: var(--select-trigger-ghost-padding-y) var(--select-trigger-ghost-padding-x);
130
-
131
- /* We reset the defined margin variables to avoid inheriting them from a higher component */
132
- /* If a margin IS defined on the component itself, the utility class will win and reset it */
133
- --margin-top: 0px;
134
- --margin-right: 0px;
135
- --margin-bottom: 0px;
136
- --margin-left: 0px;
137
-
138
- /* Define the overrides to incorporate the negative margins */
139
- --margin-top-override: calc(var(--margin-top) - var(--select-trigger-ghost-padding-y));
140
- --margin-right-override: calc(var(--margin-right) - var(--select-trigger-ghost-padding-x));
141
- --margin-bottom-override: calc(var(--margin-bottom) - var(--select-trigger-ghost-padding-y));
142
- --margin-left-override: calc(var(--margin-left) - var(--select-trigger-ghost-padding-x));
143
-
144
- /* Reset the overrides on direct children */
145
- :where(&) > * {
146
- --margin-top-override: initial;
147
- --margin-right-override: initial;
148
- --margin-bottom-override: initial;
149
- --margin-left-override: initial;
150
- }
134
+ box-sizing: border-box;
135
+ height: var(--select-trigger-height);
136
+ padding: 0 var(--select-trigger-ghost-padding-x);
137
+
151
138
 
152
- margin: var(--margin-top-override) var(--margin-right-override) var(--margin-bottom-override)
153
- var(--margin-left-override);
154
139
  }
155
140
  }
156
141
 
@@ -158,7 +143,7 @@
158
143
  .rt-SelectTrigger {
159
144
  &:where(.rt-r-size-1) {
160
145
  --select-trigger-height: var(--space-5);
161
- gap: var(--space-1);
146
+ gap: var(--component-gap-1);
162
147
  font-size: var(--font-size-1);
163
148
  line-height: var(--line-height-1);
164
149
  letter-spacing: var(--letter-spacing-1);
@@ -169,13 +154,17 @@
169
154
  padding-right: var(--space-2);
170
155
  }
171
156
  &:where(.rt-variant-ghost) {
157
+ gap: var(--component-gap-ghost-1);
172
158
  --select-trigger-ghost-padding-x: var(--space-2);
173
- --select-trigger-ghost-padding-y: var(--space-1);
159
+ }
160
+ & :where(.rt-SelectIcon) {
161
+ width: var(--trigger-icon-size-1);
162
+ height: var(--trigger-icon-size-1);
174
163
  }
175
164
  }
176
165
  &:where(.rt-r-size-2) {
177
166
  --select-trigger-height: var(--space-6);
178
- gap: calc(var(--space-1) * 1.5);
167
+ gap: var(--component-gap-2);
179
168
  font-size: var(--font-size-2);
180
169
  line-height: var(--line-height-2);
181
170
  letter-spacing: var(--letter-spacing-2);
@@ -186,13 +175,17 @@
186
175
  padding-right: var(--space-3);
187
176
  }
188
177
  &:where(.rt-variant-ghost) {
178
+ gap: var(--component-gap-ghost-2);
189
179
  --select-trigger-ghost-padding-x: var(--space-2);
190
- --select-trigger-ghost-padding-y: var(--space-1);
180
+ }
181
+ & :where(.rt-SelectIcon) {
182
+ width: var(--trigger-icon-size-2);
183
+ height: var(--trigger-icon-size-2);
191
184
  }
192
185
  }
193
186
  &:where(.rt-r-size-3) {
194
187
  --select-trigger-height: var(--space-7);
195
- gap: var(--space-2);
188
+ gap: var(--component-gap-3);
196
189
  font-size: var(--font-size-3);
197
190
  line-height: var(--line-height-3);
198
191
  letter-spacing: var(--letter-spacing-3);
@@ -203,12 +196,12 @@
203
196
  padding-right: var(--space-4);
204
197
  }
205
198
  &:where(.rt-variant-ghost) {
199
+ gap: var(--component-gap-ghost-3);
206
200
  --select-trigger-ghost-padding-x: var(--space-3);
207
- --select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5);
208
201
  }
209
202
  & :where(.rt-SelectIcon) {
210
- width: 11px;
211
- height: 11px;
203
+ width: var(--trigger-icon-size-3);
204
+ height: var(--trigger-icon-size-3);
212
205
  }
213
206
  }
214
207
  }
@@ -291,25 +284,43 @@
291
284
  * *
292
285
  ***************************************************************************************************/
293
286
 
294
- /* surface */
295
-
296
- .rt-SelectTrigger:where(.rt-variant-surface) {
297
- color: var(--gray-12);
287
+ /* Outline variant - neutral with gray border (previously surface) */
288
+ .rt-SelectTrigger:where(.rt-variant-outline) {
289
+ --select-trigger-border-width: 1px;
290
+
298
291
  background-color: var(--color-surface);
299
- box-shadow: inset 0 0 0 1px var(--gray-a7);
292
+ color: var(--gray-12);
293
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--gray-a6);
294
+
295
+ /* Theme-level translucent override */
296
+ :where([data-panel-background='translucent']) & {
297
+ backdrop-filter: var(--backdrop-filter-components);
298
+ }
300
299
 
300
+ /* Component-level overrides (higher specificity) */
301
+ &:where([data-panel-background='solid']) {
302
+ --color-surface: var(--color-surface-solid);
303
+ backdrop-filter: none;
304
+ }
305
+
306
+ &:where([data-panel-background='translucent']) {
307
+ --color-surface: var(--color-surface-translucent);
308
+ backdrop-filter: var(--backdrop-filter-components);
309
+ }
310
+
311
+ /* Hover effects */
301
312
  @media (hover: hover) {
302
- &:where(:hover) {
303
- box-shadow: inset 0 0 0 1px var(--gray-a8);
313
+ &:where(:hover:not(:focus-visible)) {
314
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--gray-a8);
304
315
  }
305
316
  }
306
317
  &:where([data-state='open']) {
307
- box-shadow: inset 0 0 0 1px var(--gray-a8);
318
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--gray-a8);
308
319
  }
309
320
  &:where(:disabled) {
310
321
  color: var(--gray-a11);
311
322
  background-color: var(--gray-a2);
312
- box-shadow: inset 0 0 0 1px var(--gray-a6);
323
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--gray-a6);
313
324
  }
314
325
  &:where([data-placeholder]) {
315
326
  & :where(.rt-SelectTriggerInner) {
@@ -318,42 +329,76 @@
318
329
  }
319
330
  }
320
331
 
321
- /* classic */
332
+ /* Classic variant - 3D inset form input */
333
+ .rt-SelectTrigger:where(.rt-variant-classic) {
334
+ --select-trigger-border-width: 0px;
335
+
336
+ position: relative;
337
+ /* Subtle inset positioning */
338
+ top: calc(var(--classic-elevation-offset) / 3); /* More pronounced than before */
322
339
 
323
- /* prettier-ignore */
324
- :where(.radix-themes) {
325
- --select-trigger-classic-shadow: var(--shadow-2);
326
- --select-trigger-classic-hover-shadow: var(--shadow-2);
327
- --select-trigger-classic-disabled-shadow: none;
328
- }
340
+ background-color: var(--color-surface);
341
+ color: var(--gray-12);
329
342
 
330
- /* prettier-ignore */
331
- :is(.dark, .dark-theme),
332
- :is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {
333
- --select-trigger-classic-shadow: var(--shadow-2);
334
- --select-trigger-classic-hover-shadow: var(--shadow-2);
335
- --select-trigger-classic-disabled-shadow: none;
336
- }
343
+ /* 3D inset effect - more pronounced but still subtle */
344
+ /* prettier-ignore */
345
+ box-shadow:
346
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / 1.5) var(--gray-a3),
347
+ inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a1),
348
+ inset 0 calc(var(--classic-border-width) * 2) calc(var(--classic-shadow-blur-medium) / 3) var(--gray-a2),
349
+ 0 0 0 var(--classic-border-width) var(--gray-a5);
350
+
351
+ /* Theme-level translucent override */
352
+ :where([data-panel-background='translucent']) & {
353
+ backdrop-filter: var(--backdrop-filter-components);
354
+ }
337
355
 
338
- .rt-SelectTrigger:where(.rt-variant-classic) {
339
- color: var(--gray-12);
340
- background: linear-gradient(to bottom, var(--color-surface), var(--gray-1));
341
- box-shadow: var(--select-trigger-classic-shadow);
356
+ /* Component-level overrides for surface variant */
357
+ &:where([data-panel-background='solid']) {
358
+ --color-surface: var(--color-surface-solid);
359
+ backdrop-filter: none;
360
+ }
342
361
 
362
+ &:where([data-panel-background='translucent']) {
363
+ --color-surface: var(--color-surface-translucent);
364
+ backdrop-filter: var(--backdrop-filter-components);
365
+ }
366
+
367
+ /* Hover effects - slightly reduced inset */
343
368
  @media (hover: hover) {
344
- &:where(:hover) {
345
- background: linear-gradient(to bottom, var(--gray-1), var(--gray-2));
346
- box-shadow: var(--select-trigger-classic-hover-shadow);
369
+ &:where(:hover:not(:focus-visible)) {
370
+ /* prettier-ignore */
371
+ box-shadow:
372
+ inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a2),
373
+ inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a1),
374
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a2),
375
+ 0 0 0 var(--classic-border-width) var(--gray-a6);
347
376
  }
348
377
  }
349
378
  &:where([data-state='open']) {
350
- background: linear-gradient(to bottom, var(--gray-1), var(--gray-2));
351
- box-shadow: var(--select-trigger-classic-hover-shadow);
379
+ /* prettier-ignore */
380
+ box-shadow:
381
+ inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a2),
382
+ inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a1),
383
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a2),
384
+ 0 0 0 var(--classic-border-width) var(--gray-a6);
385
+ }
386
+
387
+ /* Focus state - accent ring with minimal inset */
388
+ &:where(:focus-visible) {
389
+ /* prettier-ignore */
390
+ box-shadow:
391
+ inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 3) var(--gray-a1),
392
+ 0 0 0 2px var(--focus-8);
352
393
  }
394
+
353
395
  &:where(:disabled) {
354
396
  color: var(--gray-a11);
355
- background: var(--gray-a2);
356
- box-shadow: var(--select-trigger-classic-disabled-shadow);
397
+ background-color: var(--gray-a2);
398
+ /* prettier-ignore */
399
+ box-shadow:
400
+ inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a1),
401
+ inset 0 0 0 var(--classic-border-width) var(--gray-a6);
357
402
  }
358
403
  &:where([data-placeholder]) {
359
404
  & :where(.rt-SelectTriggerInner) {
@@ -362,12 +407,71 @@
362
407
  }
363
408
  }
364
409
 
365
- /* soft / ghost */
366
-
367
- .rt-SelectTrigger:where(.rt-variant-soft),
368
- .rt-SelectTrigger:where(.rt-variant-ghost) {
410
+ /* Soft variant - branded with accent colors */
411
+ .rt-SelectTrigger:where(.rt-variant-soft) {
412
+ --select-trigger-border-width: 0px;
413
+
414
+ /* Use solid accent for solid panels, alpha accent for translucent panels */
415
+ background-color: var(--accent-3);
369
416
  color: var(--accent-12);
370
417
 
418
+ /* Theme-level translucent override */
419
+ :where([data-panel-background='translucent']) & {
420
+ background-color: var(--accent-a3);
421
+ color: var(--accent-a12);
422
+ backdrop-filter: var(--backdrop-filter-components);
423
+ }
424
+
425
+ /* Component-level overrides (higher specificity) */
426
+ &:where([data-panel-background='solid']) {
427
+ background-color: var(--accent-3);
428
+ color: var(--accent-12);
429
+ backdrop-filter: none;
430
+ }
431
+
432
+ &:where([data-panel-background='translucent']) {
433
+ background-color: var(--accent-a3);
434
+ color: var(--accent-a12);
435
+ backdrop-filter: var(--backdrop-filter-components);
436
+ }
437
+
438
+ @media (hover: hover) {
439
+ &:where(:hover:not(:focus-visible)) {
440
+ /* Base state: solid accent for solid panels */
441
+ background-color: var(--accent-4);
442
+
443
+ /* Theme-level translucent override for hover */
444
+ :where([data-panel-background='translucent']) & {
445
+ background-color: var(--accent-a4);
446
+ }
447
+
448
+ /* Component-level overrides for hover */
449
+ &:where([data-panel-background='solid']) {
450
+ background-color: var(--accent-4);
451
+ backdrop-filter: none;
452
+ }
453
+
454
+ &:where([data-panel-background='translucent']) {
455
+ background-color: var(--accent-a4);
456
+ backdrop-filter: var(--backdrop-filter-components);
457
+ }
458
+ }
459
+ }
460
+ &:where([data-state='open']) {
461
+ background-color: var(--accent-4);
462
+
463
+ :where([data-panel-background='translucent']) & {
464
+ background-color: var(--accent-a4);
465
+ }
466
+ }
467
+ &:where(:focus-visible) {
468
+ outline-color: var(--accent-8);
469
+ }
470
+ &:where(:disabled) {
471
+ color: var(--gray-a11);
472
+ background-color: var(--gray-a3);
473
+ backdrop-filter: none;
474
+ }
371
475
  &:where([data-placeholder]) {
372
476
  & :where(.rt-SelectTriggerInner) {
373
477
  color: var(--accent-12);
@@ -376,40 +480,183 @@
376
480
  }
377
481
  }
378
482
 
379
- .rt-SelectTrigger:where(.rt-variant-soft) {
380
- background-color: var(--accent-a3);
483
+ /* Surface variant - transparent with accent border (previously outline) */
484
+ .rt-SelectTrigger:where(.rt-variant-surface) {
485
+ --select-trigger-border-width: 1px;
486
+
487
+ background-color: transparent;
488
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-7);
489
+ color: var(--gray-12);
490
+ transition: var(--transition-background-blur);
491
+
492
+ /* Theme-level panel awareness (NO backdrop filter for true transparency) */
493
+ :where([data-panel-background='translucent']) & {
494
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-a7);
495
+ }
381
496
 
497
+ /* Component-level overrides */
498
+ &:where([data-panel-background='solid']) {
499
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-7);
500
+ }
501
+
502
+ &:where([data-panel-background='translucent']) {
503
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-a7);
504
+ }
505
+
506
+ /* Hover effects */
382
507
  @media (hover: hover) {
383
- &:where(:hover) {
384
- background-color: var(--accent-a4);
508
+ &:where(:hover:not(:focus-visible)) {
509
+ /* Base state: solid accent for solid panels */
510
+ background-color: var(--accent-2);
511
+
512
+ /* Theme-level translucent override for hover */
513
+ :where([data-panel-background='translucent']) & {
514
+ background-color: var(--accent-a2);
515
+ backdrop-filter: var(--backdrop-filter-components);
516
+ }
517
+
518
+ /* Component-level overrides for hover */
519
+ &:where([data-panel-background='solid']) {
520
+ background-color: var(--accent-2);
521
+ backdrop-filter: none;
522
+ }
523
+
524
+ &:where([data-panel-background='translucent']) {
525
+ background-color: var(--accent-a2);
526
+ backdrop-filter: var(--backdrop-filter-components);
527
+ }
385
528
  }
386
529
  }
530
+
531
+ /* Interaction states get light background */
387
532
  &:where([data-state='open']) {
388
- background-color: var(--accent-a4);
533
+ /* Base state: solid accent for solid panels */
534
+ background-color: var(--accent-2);
535
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-8);
536
+
537
+ /* Theme-level translucent override */
538
+ :where([data-panel-background='translucent']) & {
539
+ background-color: var(--accent-a2);
540
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-a8);
541
+ backdrop-filter: var(--backdrop-filter-components);
542
+ }
543
+
544
+ /* Component-level overrides */
545
+ &:where([data-panel-background='solid']) {
546
+ background-color: var(--accent-2);
547
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-8);
548
+ backdrop-filter: none;
549
+ }
550
+
551
+ &:where([data-panel-background='translucent']) {
552
+ background-color: var(--accent-a2);
553
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-a8);
554
+ backdrop-filter: var(--backdrop-filter-components);
555
+ }
389
556
  }
557
+
390
558
  &:where(:focus-visible) {
391
- /* Use gray outline when component color is gray */
392
- outline-color: var(--accent-8);
559
+ /* Base state: solid accent for solid panels */
560
+ background-color: var(--accent-2);
561
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-8);
562
+
563
+ /* Theme-level translucent override */
564
+ :where([data-panel-background='translucent']) & {
565
+ background-color: var(--accent-a2);
566
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-a8);
567
+ backdrop-filter: var(--backdrop-filter-components);
568
+ }
569
+
570
+ /* Component-level overrides */
571
+ &:where([data-panel-background='solid']) {
572
+ background-color: var(--accent-2);
573
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-8);
574
+ backdrop-filter: none;
575
+ }
576
+
577
+ &:where([data-panel-background='translucent']) {
578
+ background-color: var(--accent-a2);
579
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-a8);
580
+ backdrop-filter: var(--backdrop-filter-components);
581
+ }
393
582
  }
583
+
394
584
  &:where(:disabled) {
395
- color: var(--gray-a11);
396
- background-color: var(--gray-a3);
585
+ background-color: var(--gray-a2);
586
+ box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--gray-a6);
587
+ color: var(--gray-a8);
588
+ }
589
+ &:where([data-placeholder]) {
590
+ & :where(.rt-SelectTriggerInner) {
591
+ color: var(--gray-a10);
592
+ }
397
593
  }
398
594
  }
399
595
 
596
+ /* Ghost variant - transparent until interaction */
400
597
  .rt-SelectTrigger:where(.rt-variant-ghost) {
598
+ --select-trigger-border-width: 0px;
599
+
600
+ background-color: transparent;
601
+ color: var(--accent-12);
602
+
603
+ /* Theme-level translucent override */
604
+ :where([data-panel-background='translucent']) & {
605
+ color: var(--accent-a12);
606
+ }
607
+
608
+ /* Component-level overrides (higher specificity) */
609
+ &:where([data-panel-background='solid']) {
610
+ color: var(--accent-12);
611
+ }
612
+
613
+ &:where([data-panel-background='translucent']) {
614
+ color: var(--accent-a12);
615
+ }
616
+
401
617
  @media (hover: hover) {
402
- &:where(:hover) {
403
- background-color: var(--accent-a3);
618
+ &:where(:hover:not(:focus-visible)) {
619
+ /* Base state: solid accent for solid panels */
620
+ background-color: var(--accent-2);
621
+
622
+ /* Theme-level translucent override for hover */
623
+ :where([data-panel-background='translucent']) & {
624
+ background-color: var(--accent-a2);
625
+ backdrop-filter: var(--backdrop-filter-components);
626
+ }
627
+
628
+ /* Component-level overrides for hover */
629
+ &:where([data-panel-background='solid']) {
630
+ background-color: var(--accent-2);
631
+ backdrop-filter: none;
632
+ }
633
+
634
+ &:where([data-panel-background='translucent']) {
635
+ background-color: var(--accent-a2);
636
+ backdrop-filter: var(--backdrop-filter-components);
637
+ }
404
638
  }
405
639
  }
406
640
  &:where([data-state='open']) {
407
- background-color: var(--accent-a3);
641
+ background-color: var(--accent-2);
642
+
643
+ :where([data-panel-background='translucent']) & {
644
+ background-color: var(--accent-a2);
645
+ backdrop-filter: var(--backdrop-filter-components);
646
+ }
647
+ }
648
+ &:where(:focus-visible) {
649
+ outline-color: var(--accent-8);
408
650
  }
409
651
  &:where(:disabled) {
410
652
  color: var(--gray-a11);
411
653
  background-color: transparent;
412
654
  }
655
+ &:where([data-placeholder]) {
656
+ & :where(.rt-SelectTriggerInner) {
657
+ color: var(--gray-a10);
658
+ }
659
+ }
413
660
  }
414
661
 
415
662
  /* all disabled */
@@ -427,10 +674,9 @@
427
674
  * *
428
675
  ***************************************************************************************************/
429
676
 
430
- .rt-SelectContent {
431
- box-shadow: var(--shadow-5);
677
+ .rt-SelectItem:where([data-accent-color]) {
678
+ color: var(--accent-a11);
432
679
  }
433
-
434
680
  .rt-SelectItem:where([data-disabled]) {
435
681
  color: var(--gray-a8);
436
682
  }
@@ -439,16 +685,56 @@
439
685
  background-color: var(--gray-a6);
440
686
  }
441
687
 
688
+ /* Ensure gray text appears muted in non-highlighted state */
689
+ .rt-SelectItem :where(.rt-Text[data-accent-color='gray'], [data-accent-color='gray']) {
690
+ color: var(--gray-a10);
691
+ }
692
+
442
693
  /* solid */
443
694
 
444
695
  .rt-SelectContent:where(.rt-variant-solid) {
445
696
  & :where(.rt-SelectItem[data-highlighted]) {
446
697
  background-color: var(--accent-9);
447
698
  color: var(--accent-contrast);
699
+
700
+ /* Force all text elements to inherit hover color, including those with color="gray" */
701
+ & :where(.rt-Text) {
702
+ color: inherit !important;
703
+ }
704
+
705
+ /* Also target any element with data-accent-color="gray" */
706
+ & :where([data-accent-color='gray']) {
707
+ color: inherit !important;
708
+ }
448
709
  }
449
- &:where(.rt-high-contrast) :where(.rt-SelectItem[data-highlighted]) {
450
- background-color: var(--accent-12);
451
- color: var(--accent-1);
710
+ &:where(.rt-high-contrast) {
711
+ & :where(.rt-SelectItem[data-highlighted]) {
712
+ background-color: var(--accent-12);
713
+ color: var(--accent-1);
714
+
715
+ /* Force all text elements to inherit hover color in high contrast mode */
716
+ & :where(.rt-Text) {
717
+ color: inherit !important;
718
+ }
719
+
720
+ /* Also target any element with data-accent-color="gray" in high contrast */
721
+ & :where([data-accent-color='gray']) {
722
+ color: inherit !important;
723
+ }
724
+
725
+ &:where([data-accent-color]) {
726
+ background-color: var(--accent-9);
727
+ color: var(--accent-contrast);
728
+
729
+ & :where(.rt-Text) {
730
+ color: inherit !important;
731
+ }
732
+
733
+ & :where([data-accent-color='gray']) {
734
+ color: inherit !important;
735
+ }
736
+ }
737
+ }
452
738
  }
453
739
  }
454
740
 
@@ -457,5 +743,10 @@
457
743
  .rt-SelectContent:where(.rt-variant-soft) {
458
744
  & :where(.rt-SelectItem[data-highlighted]) {
459
745
  background-color: var(--accent-a4);
746
+
747
+ /* In soft variant, improve contrast for gray text while maintaining hierarchy */
748
+ & :where(.rt-Text[data-accent-color='gray'], [data-accent-color='gray']) {
749
+ color: var(--gray-11) !important;
750
+ }
460
751
  }
461
752
  }
@@ -12,15 +12,21 @@ const selectRootPropDefs = {
12
12
  size: PropDef<(typeof sizes)[number]>;
13
13
  };
14
14
 
15
- const triggerVariants = ['classic', 'surface', 'soft', 'ghost'] as const;
15
+ const triggerVariants = ['classic', 'surface', 'soft', 'outline', 'ghost'] as const;
16
16
 
17
17
  const selectTriggerPropDefs = {
18
18
  variant: { type: 'enum', className: 'rt-variant', values: triggerVariants, default: 'surface' },
19
+ panelBackground: {
20
+ type: 'enum',
21
+ className: 'rt-panel-background',
22
+ values: ['solid', 'translucent'],
23
+ },
19
24
  ...colorPropDef,
20
25
  ...radiusPropDef,
21
26
  placeholder: { type: 'string' },
22
27
  } satisfies {
23
28
  variant: PropDef<(typeof triggerVariants)[number]>;
29
+ panelBackground: PropDef<'solid' | 'translucent'>;
24
30
  placeholder: PropDef<string>;
25
31
  };
26
32