@opencode-ai/ui 0.0.0-dev-202608201855 → 0.0.0-dev-17751

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 (285) hide show
  1. package/dist/actions/button/button.d.ts +10 -0
  2. package/dist/actions/icon-button/icon-button.d.ts +11 -0
  3. package/dist/actions/split-button/split-button.d.ts +5 -0
  4. package/dist/components/card.d.ts +1 -1
  5. package/dist/components/list.d.ts +1 -1
  6. package/dist/components/scroll-view.d.ts +3 -3
  7. package/dist/context/i18n.d.ts +10 -7
  8. package/dist/{components → data-display/accordion}/accordion.d.ts +6 -6
  9. package/dist/{v2/components/avatar-v2.d.ts → data-display/avatar/avatar.d.ts} +1 -1
  10. package/dist/data-display/badge/badge.d.ts +7 -0
  11. package/dist/{components → data-display/diff-changes}/diff-changes.d.ts +2 -1
  12. package/dist/data-display/keybind/keybind.d.ts +7 -0
  13. package/dist/{v2/components/line-comment-v2.d.ts → data-display/line-comment/line-comment.d.ts} +9 -9
  14. package/dist/{v2/components/project-avatar-v2.d.ts → data-display/project-avatar/project-avatar.d.ts} +1 -1
  15. package/dist/feedback/loader/loader.d.ts +3 -0
  16. package/dist/{components → feedback/progress-circle}/progress-circle.d.ts +2 -0
  17. package/dist/feedback/toast/toast.d.ts +57 -0
  18. package/dist/{components → forms/checkbox}/checkbox.d.ts +2 -2
  19. package/dist/{v2/components/field-v2.d.ts → forms/field/field.d.ts} +4 -10
  20. package/dist/forms/radio/radio.d.ts +16 -0
  21. package/dist/{v2/components/select-v2.d.ts → forms/select/select.d.ts} +4 -6
  22. package/dist/{components → forms/switch}/switch.d.ts +4 -2
  23. package/dist/{v2/components/text-input-v2.d.ts → forms/text-input/text-input.d.ts} +3 -3
  24. package/dist/forms/textarea/textarea.d.ts +7 -0
  25. package/dist/i18n/ar.d.ts +0 -2
  26. package/dist/i18n/bg.d.ts +0 -2
  27. package/dist/i18n/br.d.ts +0 -2
  28. package/dist/i18n/bs.d.ts +0 -2
  29. package/dist/i18n/da.d.ts +0 -2
  30. package/dist/i18n/de.d.ts +0 -2
  31. package/dist/i18n/en.d.ts +209 -1
  32. package/dist/i18n/es.d.ts +0 -2
  33. package/dist/i18n/fr.d.ts +0 -2
  34. package/dist/i18n/he.d.ts +197 -0
  35. package/dist/i18n/ja.d.ts +0 -2
  36. package/dist/i18n/km.d.ts +0 -2
  37. package/dist/i18n/ko.d.ts +0 -2
  38. package/dist/i18n/lo.d.ts +0 -2
  39. package/dist/i18n/mk.d.ts +0 -2
  40. package/dist/i18n/mn.d.ts +0 -2
  41. package/dist/i18n/my.d.ts +0 -2
  42. package/dist/i18n/pl.d.ts +0 -2
  43. package/dist/i18n/ru.d.ts +0 -2
  44. package/dist/i18n/sr.d.ts +0 -2
  45. package/dist/i18n/tg.d.ts +0 -2
  46. package/dist/i18n/th.d.ts +0 -2
  47. package/dist/i18n/tr.d.ts +0 -2
  48. package/dist/i18n/zh.d.ts +0 -2
  49. package/dist/i18n/zht.d.ts +0 -2
  50. package/dist/{components/icon.d.ts → icons/icon/additional-icons.d.ts} +8 -8
  51. package/dist/{v2/components → icons/icon}/icon.d.ts +16 -1
  52. package/dist/layout/divider/divider.d.ts +5 -0
  53. package/dist/navigation/menu/menu.d.ts +59 -0
  54. package/dist/{v2/components/segmented-control-v2.d.ts → navigation/segmented-control/segmented-control.d.ts} +5 -5
  55. package/dist/{components → navigation/tabs}/tabs.d.ts +15 -8
  56. package/dist/{v2/components/dialog-v2.d.ts → overlays/dialog/dialog.d.ts} +1 -2
  57. package/dist/overlays/tooltip/tooltip.d.ts +14 -0
  58. package/dist/{components → typography/text-shimmer}/text-shimmer.d.ts +1 -0
  59. package/dist/typography/wordmark/wordmark.d.ts +2 -0
  60. package/package.json +131 -13
  61. package/src/{v2/components/button-v2.tsx → actions/button/button.tsx} +8 -8
  62. package/src/actions/icon-button/icon-button.tsx +32 -0
  63. package/src/{v2/components/split-button-v2.css → actions/split-button/split-button.css} +1 -6
  64. package/src/{v2/components/split-button-v2.tsx → actions/split-button/split-button.tsx} +4 -4
  65. package/src/components/animated-number.css +29 -11
  66. package/src/components/animated-number.tsx +2 -2
  67. package/src/components/card.css +2 -23
  68. package/src/components/card.tsx +4 -4
  69. package/src/components/collapsible.tsx +1 -1
  70. package/src/components/image-preview.tsx +3 -2
  71. package/src/components/list.css +5 -5
  72. package/src/components/list.tsx +7 -5
  73. package/src/components/popover.tsx +3 -2
  74. package/src/components/provider-icon.tsx +1 -1
  75. package/src/components/scroll-view.tsx +5 -20
  76. package/src/components/sticky-accordion-header.tsx +1 -1
  77. package/src/components/text-field.tsx +12 -4
  78. package/src/context/i18n.tsx +17 -14
  79. package/src/{components → data-display/accordion}/accordion.css +1 -26
  80. package/src/{components → data-display/accordion}/accordion.tsx +14 -14
  81. package/src/{v2/components/avatar-v2.tsx → data-display/avatar/avatar.tsx} +1 -1
  82. package/src/{v2/components/badge-v2.css → data-display/badge/badge.css} +19 -0
  83. package/src/{v2/components/badge-v2.tsx → data-display/badge/badge.tsx} +6 -4
  84. package/src/{components → data-display/diff-changes}/diff-changes.css +22 -19
  85. package/src/{v2/components/diff-changes-v2.tsx → data-display/diff-changes/diff-changes.tsx} +7 -2
  86. package/src/{v2/components/keybind-v2.css → data-display/keybind/keybind.css} +1 -1
  87. package/src/{v2/components/keybind-v2.tsx → data-display/keybind/keybind.tsx} +3 -3
  88. package/src/{v2/components/line-comment-v2.tsx → data-display/line-comment/line-comment.tsx} +17 -15
  89. package/src/{v2/components/project-avatar-v2.tsx → data-display/project-avatar/project-avatar.tsx} +1 -1
  90. package/src/{v2/components/loader-v2.tsx → feedback/loader/loader.tsx} +2 -2
  91. package/src/feedback/progress-circle/progress-circle.css +28 -0
  92. package/src/feedback/progress-circle/progress-circle.tsx +64 -0
  93. package/src/{v2/components/toast-v2.tsx → feedback/toast/toast.tsx} +60 -58
  94. package/src/{components → forms/checkbox}/checkbox.css +1 -7
  95. package/src/{components → forms/checkbox}/checkbox.tsx +13 -13
  96. package/src/{v2/components/field-v2.tsx → forms/field/field.tsx} +9 -11
  97. package/src/{v2/components/radio-v2.tsx → forms/radio/radio.tsx} +30 -20
  98. package/src/{v2/components/select-v2.css → forms/select/select.css} +2 -8
  99. package/src/{v2/components/select-v2.tsx → forms/select/select.tsx} +38 -32
  100. package/src/{v2/components/switch-v2.css → forms/switch/switch.css} +110 -0
  101. package/src/forms/switch/switch.tsx +34 -0
  102. package/src/{v2/components/text-input-v2.tsx → forms/text-input/text-input.tsx} +4 -4
  103. package/src/{v2/components/textarea-v2.tsx → forms/textarea/textarea.tsx} +3 -3
  104. package/src/hooks/create-auto-scroll.tsx +20 -0
  105. package/src/i18n/am.ts +0 -2
  106. package/src/i18n/ar.ts +0 -2
  107. package/src/i18n/az.ts +0 -2
  108. package/src/i18n/bg.ts +0 -2
  109. package/src/i18n/bn.ts +0 -2
  110. package/src/i18n/br.ts +0 -2
  111. package/src/i18n/bs.ts +0 -2
  112. package/src/i18n/ca.ts +0 -2
  113. package/src/i18n/cs.ts +0 -2
  114. package/src/i18n/da.ts +0 -2
  115. package/src/i18n/de.ts +0 -2
  116. package/src/i18n/dv.ts +0 -2
  117. package/src/i18n/dz.ts +0 -2
  118. package/src/i18n/el.ts +0 -2
  119. package/src/i18n/en.ts +18 -4
  120. package/src/i18n/es.ts +0 -2
  121. package/src/i18n/et.ts +0 -2
  122. package/src/i18n/fa.ts +0 -2
  123. package/src/i18n/fi.ts +0 -2
  124. package/src/i18n/fo.ts +0 -2
  125. package/src/i18n/fr.ts +0 -2
  126. package/src/i18n/he.ts +199 -0
  127. package/src/i18n/hi.ts +0 -2
  128. package/src/i18n/hr.ts +0 -2
  129. package/src/i18n/hu.ts +0 -2
  130. package/src/i18n/hy.ts +0 -2
  131. package/src/i18n/id.ts +0 -2
  132. package/src/i18n/is.ts +0 -2
  133. package/src/i18n/it.ts +0 -2
  134. package/src/i18n/ja.ts +0 -2
  135. package/src/i18n/ka.ts +0 -2
  136. package/src/i18n/km.ts +0 -2
  137. package/src/i18n/ko.ts +0 -2
  138. package/src/i18n/lo.ts +0 -2
  139. package/src/i18n/lt.ts +0 -2
  140. package/src/i18n/lv.ts +0 -2
  141. package/src/i18n/mk.ts +0 -2
  142. package/src/i18n/mn.ts +0 -2
  143. package/src/i18n/ms.ts +0 -2
  144. package/src/i18n/my.ts +0 -2
  145. package/src/i18n/ne.ts +0 -2
  146. package/src/i18n/nl.ts +0 -2
  147. package/src/i18n/no.ts +0 -2
  148. package/src/i18n/pa.ts +0 -2
  149. package/src/i18n/pl.ts +0 -2
  150. package/src/i18n/ro.ts +0 -2
  151. package/src/i18n/ru.ts +0 -2
  152. package/src/i18n/si.ts +0 -2
  153. package/src/i18n/sk.ts +0 -2
  154. package/src/i18n/sl.ts +0 -2
  155. package/src/i18n/sq.ts +0 -2
  156. package/src/i18n/sr.ts +0 -2
  157. package/src/i18n/sv.ts +0 -2
  158. package/src/i18n/tg.ts +0 -2
  159. package/src/i18n/th.ts +0 -2
  160. package/src/i18n/tk.ts +0 -2
  161. package/src/i18n/tr.ts +0 -2
  162. package/src/i18n/uk.ts +0 -2
  163. package/src/i18n/ur.ts +0 -2
  164. package/src/i18n/uz.ts +0 -2
  165. package/src/i18n/vi.ts +0 -2
  166. package/src/i18n/zh.ts +0 -2
  167. package/src/i18n/zht.ts +0 -2
  168. package/src/{components/icon.tsx → icons/icon/additional-icons.ts} +8 -74
  169. package/src/icons/icon/icon.css +3 -0
  170. package/src/{v2/components → icons/icon}/icon.tsx +42 -9
  171. package/src/{v2/components/divider-v2.tsx → layout/divider/divider.tsx} +3 -3
  172. package/src/{v2/components/menu-v2.css → navigation/menu/menu.css} +121 -0
  173. package/src/{v2/components/menu-v2.tsx → navigation/menu/menu.tsx} +96 -32
  174. package/src/{v2/components/segmented-control-v2.tsx → navigation/segmented-control/segmented-control.tsx} +9 -8
  175. package/src/{v2/components/tabs-v2.css → navigation/tabs/tabs-current.css} +24 -9
  176. package/src/{components → navigation/tabs}/tabs.css +39 -229
  177. package/src/navigation/tabs/tabs.tsx +194 -0
  178. package/src/{v2/components/dialog-v2.css → overlays/dialog/dialog.css} +3 -0
  179. package/src/{v2/components/dialog-v2.tsx → overlays/dialog/dialog.tsx} +11 -13
  180. package/src/{v2/components/tooltip-v2.css → overlays/tooltip/tooltip.css} +26 -0
  181. package/src/{v2/components/tooltip-v2.tsx → overlays/tooltip/tooltip.tsx} +18 -14
  182. package/src/styles/index.css +4 -20
  183. package/src/styles/tailwind/index.css +15 -1
  184. package/src/{v2/styles → styles/tokens}/theme.css +0 -12
  185. package/src/theme/context.tsx +19 -11
  186. package/src/theme/themes/oc-2.json +1 -1
  187. package/src/{components → typography/text-shimmer}/text-shimmer.css +2 -1
  188. package/src/{components → typography/text-shimmer}/text-shimmer.tsx +1 -0
  189. package/src/{v2/components/wordmark-v2.tsx → typography/wordmark/wordmark.tsx} +1 -1
  190. package/dist/components/avatar.d.ts +0 -9
  191. package/dist/components/button.d.ts +0 -9
  192. package/dist/components/dialog.d.ts +0 -12
  193. package/dist/components/dropdown-menu.d.ts +0 -80
  194. package/dist/components/icon-button.d.ts +0 -10
  195. package/dist/components/keybind.d.ts +0 -6
  196. package/dist/components/radio-group.d.ts +0 -16
  197. package/dist/components/select.d.ts +0 -21
  198. package/dist/components/tag.d.ts +0 -5
  199. package/dist/components/toast.d.ts +0 -56
  200. package/dist/components/tooltip.d.ts +0 -17
  201. package/dist/v2/components/accordion-v2.d.ts +0 -26
  202. package/dist/v2/components/badge-v2.d.ts +0 -6
  203. package/dist/v2/components/button-v2.d.ts +0 -10
  204. package/dist/v2/components/checkbox-v2.d.ts +0 -10
  205. package/dist/v2/components/diff-changes-v2.d.ts +0 -11
  206. package/dist/v2/components/divider-v2.d.ts +0 -5
  207. package/dist/v2/components/icon-button-v2.d.ts +0 -11
  208. package/dist/v2/components/inline-input-v2.d.ts +0 -21
  209. package/dist/v2/components/keybind-v2.d.ts +0 -7
  210. package/dist/v2/components/loader-v2.d.ts +0 -3
  211. package/dist/v2/components/menu-v2.d.ts +0 -52
  212. package/dist/v2/components/progress-circle-v2.d.ts +0 -8
  213. package/dist/v2/components/radio-v2.d.ts +0 -16
  214. package/dist/v2/components/split-button-v2.d.ts +0 -5
  215. package/dist/v2/components/switch-v2.d.ts +0 -7
  216. package/dist/v2/components/tabs-v2.d.ts +0 -34
  217. package/dist/v2/components/text-shimmer-v2.d.ts +0 -9
  218. package/dist/v2/components/textarea-v2.d.ts +0 -7
  219. package/dist/v2/components/toast-v2.d.ts +0 -57
  220. package/dist/v2/components/tooltip-v2.d.ts +0 -13
  221. package/dist/v2/components/wordmark-v2.d.ts +0 -2
  222. package/src/components/avatar.css +0 -49
  223. package/src/components/avatar.tsx +0 -55
  224. package/src/components/button.css +0 -194
  225. package/src/components/button.tsx +0 -33
  226. package/src/components/dialog.css +0 -181
  227. package/src/components/dialog.tsx +0 -72
  228. package/src/components/diff-changes.tsx +0 -115
  229. package/src/components/dropdown-menu.css +0 -135
  230. package/src/components/dropdown-menu.tsx +0 -308
  231. package/src/components/icon-button.css +0 -181
  232. package/src/components/icon-button.tsx +0 -29
  233. package/src/components/icon.css +0 -39
  234. package/src/components/keybind.css +0 -18
  235. package/src/components/keybind.tsx +0 -20
  236. package/src/components/progress-circle.css +0 -16
  237. package/src/components/progress-circle.tsx +0 -64
  238. package/src/components/radio-group.css +0 -187
  239. package/src/components/radio-group.tsx +0 -83
  240. package/src/components/select.css +0 -201
  241. package/src/components/select.tsx +0 -174
  242. package/src/components/switch.css +0 -136
  243. package/src/components/switch.tsx +0 -29
  244. package/src/components/tabs.tsx +0 -126
  245. package/src/components/tag.css +0 -37
  246. package/src/components/tag.tsx +0 -22
  247. package/src/components/toast.css +0 -236
  248. package/src/components/toast.tsx +0 -185
  249. package/src/components/tooltip.css +0 -74
  250. package/src/components/tooltip.tsx +0 -163
  251. package/src/v2/components/accordion-v2.css +0 -139
  252. package/src/v2/components/accordion-v2.tsx +0 -86
  253. package/src/v2/components/checkbox-v2.css +0 -184
  254. package/src/v2/components/checkbox-v2.tsx +0 -65
  255. package/src/v2/components/diff-changes-v2.css +0 -26
  256. package/src/v2/components/icon-button-v2.tsx +0 -37
  257. package/src/v2/components/inline-input-v2.css +0 -225
  258. package/src/v2/components/inline-input-v2.tsx +0 -107
  259. package/src/v2/components/progress-circle-v2.css +0 -13
  260. package/src/v2/components/progress-circle-v2.tsx +0 -52
  261. package/src/v2/components/switch-v2.tsx +0 -28
  262. package/src/v2/components/tabs-v2.tsx +0 -149
  263. package/src/v2/components/text-shimmer-v2.css +0 -125
  264. package/src/v2/components/text-shimmer-v2.tsx +0 -63
  265. /package/dist/{components → forms/inline-input}/inline-input.d.ts +0 -0
  266. /package/dist/{v2/components → navigation}/tab-state-indicator.d.ts +0 -0
  267. /package/src/{v2/components/button-v2.css → actions/button/button.css} +0 -0
  268. /package/src/{v2/components/icon-button-v2.css → actions/icon-button/icon-button.css} +0 -0
  269. /package/src/{v2/components/avatar-v2.css → data-display/avatar/avatar.css} +0 -0
  270. /package/src/{v2/components/line-comment-v2.css → data-display/line-comment/line-comment.css} +0 -0
  271. /package/src/{v2/components/project-avatar-v2.css → data-display/project-avatar/project-avatar.css} +0 -0
  272. /package/src/{v2/components/loader-v2.css → feedback/loader/loader.css} +0 -0
  273. /package/src/{v2/components/toast-v2.css → feedback/toast/toast.css} +0 -0
  274. /package/src/{v2/components/field-v2.css → forms/field/field.css} +0 -0
  275. /package/src/{components → forms/inline-input}/inline-input.css +0 -0
  276. /package/src/{components → forms/inline-input}/inline-input.tsx +0 -0
  277. /package/src/{v2/components/radio-v2.css → forms/radio/radio.css} +0 -0
  278. /package/src/{v2/components/text-input-v2.css → forms/text-input/text-input.css} +0 -0
  279. /package/src/{v2/components/textarea-v2.css → forms/textarea/textarea.css} +0 -0
  280. /package/src/{v2/components/divider-v2.css → layout/divider/divider.css} +0 -0
  281. /package/src/{v2/components/segmented-control-v2.css → navigation/segmented-control/segmented-control.css} +0 -0
  282. /package/src/{v2/components → navigation}/tab-state-indicator.tsx +0 -0
  283. /package/src/{v2/components/file-tree-v2.css → styles/file-tree.css} +0 -0
  284. /package/src/{v2/styles → styles/tokens}/colors.css +0 -0
  285. /package/src/{v2/styles/tailwind.css → styles/tokens/index.css} +0 -0
@@ -10,7 +10,7 @@ import {
10
10
  type ParentProps,
11
11
  } from "solid-js"
12
12
  import type { ComponentProps } from "solid-js"
13
- import "./segmented-control-v2.css"
13
+ import "./segmented-control.css"
14
14
 
15
15
  type OnChange = (value: string | null) => void
16
16
 
@@ -26,11 +26,11 @@ const SegmentedControlContext = createContext<SegmentedControlContextValue>()
26
26
 
27
27
  function useSegmentedControlContext() {
28
28
  const ctx = useContext(SegmentedControlContext)
29
- if (!ctx) throw new Error("SegmentedControlItemV2 must be used inside SegmentedControlV2")
29
+ if (!ctx) throw new Error("SegmentedControlItem must be used inside SegmentedControl")
30
30
  return ctx
31
31
  }
32
32
 
33
- export type SegmentedControlV2Props = Omit<ComponentProps<"div">, "onChange"> &
33
+ export type SegmentedControlProps = Omit<ComponentProps<"div">, "onChange"> &
34
34
  ParentProps<{
35
35
  /** Selected value when controlled (including `null` when empty). Omit key for uncontrolled. */
36
36
  value?: string | null
@@ -42,7 +42,7 @@ export type SegmentedControlV2Props = Omit<ComponentProps<"div">, "onChange"> &
42
42
  disabled?: boolean
43
43
  }>
44
44
 
45
- export function SegmentedControlV2(props: SegmentedControlV2Props) {
45
+ export function SegmentedControl(props: SegmentedControlProps) {
46
46
  const isControlled = createMemo(() => Object.hasOwn(props as object, "value"))
47
47
  const merged = mergeProps({ allowDeselect: false, disabled: false }, props)
48
48
  const [local, rest] = splitProps(merged, [
@@ -119,7 +119,7 @@ export function SegmentedControlV2(props: SegmentedControlV2Props) {
119
119
  )
120
120
  }
121
121
 
122
- export type SegmentedControlItemV2Props = Omit<ComponentProps<"button">, "type" | "children"> &
122
+ export type SegmentedControlItemProps = Omit<ComponentProps<"button">, "type" | "children"> &
123
123
  ParentProps<{
124
124
  value: string
125
125
  children: JSX.Element
@@ -132,7 +132,7 @@ function invokeButtonHandler<E extends Event>(
132
132
  if (typeof handler === "function") (handler as (ev: typeof e) => void)(e)
133
133
  }
134
134
 
135
- export function SegmentedControlItemV2(props: SegmentedControlItemV2Props) {
135
+ export function SegmentedControlItem(props: SegmentedControlItemProps) {
136
136
  const merged = mergeProps({ disabled: false }, props)
137
137
  const [local, rest] = splitProps(merged, [
138
138
  "class",
@@ -159,13 +159,14 @@ export function SegmentedControlItemV2(props: SegmentedControlItemV2Props) {
159
159
  invokeButtonHandler(local.onKeyDown, e)
160
160
  if (e.defaultPrevented || disabled()) return
161
161
  const t = e.currentTarget
162
+ const horizontal = t.closest(`[data-slot="segmented-control-v2"]`)?.matches(":dir(rtl)") ? -1 : 1
162
163
 
163
164
  if (e.key === "ArrowRight") {
164
165
  e.preventDefault()
165
- ctx.focusNext(t, 1)
166
+ ctx.focusNext(t, horizontal)
166
167
  } else if (e.key === "ArrowLeft") {
167
168
  e.preventDefault()
168
- ctx.focusNext(t, -1)
169
+ ctx.focusNext(t, -horizontal as 1 | -1)
169
170
  }
170
171
 
171
172
  // accessibility stuff
@@ -68,22 +68,29 @@
68
68
  box-shadow: none;
69
69
  }
70
70
 
71
- [data-component="tabs-v2"] [data-slot="tabs-v2-close-button"] {
72
- width: 20px;
73
- height: 20px;
71
+ [data-slot="tabs-v2-trigger-close-button"] {
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
74
75
  margin-inline-start: -5px;
75
76
  flex: none;
77
+ }
78
+
79
+ [data-slot="tabs-v2-trigger-close-button"] [data-slot="tabs-close-button"] {
80
+ width: 20px;
81
+ height: 20px;
82
+ padding: 0;
76
83
  display: flex;
77
84
  align-items: center;
78
85
  justify-content: center;
79
86
  color: var(--v2-text-text-faint);
80
87
  }
81
88
 
82
- [data-component="tabs-v2"] [data-slot="tabs-v2-close-button"]:hover {
89
+ [data-slot="tabs-v2-trigger-close-button"] [data-slot="tabs-close-button"]:hover {
83
90
  color: var(--v2-text-text-muted);
84
91
  }
85
92
 
86
- [data-component="tabs-v2"] [data-component="icon-button"] {
93
+ [data-component="tabs-v2"] [data-component="icon-button-v2"] {
87
94
  margin: 0;
88
95
  }
89
96
 
@@ -175,7 +182,7 @@
175
182
  border: 0.5px solid var(--v2-border-border-muted);
176
183
  }
177
184
 
178
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-list"] {
185
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] > [data-slot="tabs-v2-list"] {
179
186
  flex-direction: column;
180
187
  width: 240px;
181
188
  min-width: 200px;
@@ -186,7 +193,9 @@
186
193
  border-inline-end: 1px solid var(--v2-border-border-base);
187
194
  }
188
195
 
189
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-section-title"] {
196
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
197
+ > [data-slot="tabs-v2-list"]
198
+ [data-slot="tabs-v2-section-title"] {
190
199
  width: 100%;
191
200
  padding-inline-start: 4px;
192
201
  color: var(--v2-text-text-muted);
@@ -195,7 +204,9 @@
195
204
  user-select: none;
196
205
  }
197
206
 
198
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-trigger-wrapper"] {
207
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
208
+ > [data-slot="tabs-v2-list"]
209
+ [data-slot="tabs-v2-trigger-wrapper"] {
199
210
  width: 100%;
200
211
  height: 28px;
201
212
  border-radius: 4px;
@@ -203,7 +214,9 @@
203
214
  color: var(--v2-text-text-muted);
204
215
  }
205
216
 
206
- [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-trigger"] {
217
+ [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
218
+ > [data-slot="tabs-v2-list"]
219
+ [data-slot="tabs-v2-trigger"] {
207
220
  width: 100%;
208
221
  height: 100%;
209
222
  justify-content: flex-start;
@@ -212,12 +225,14 @@
212
225
  }
213
226
 
214
227
  [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
228
+ > [data-slot="tabs-v2-list"]
215
229
  [data-slot="tabs-v2-trigger-wrapper"]:hover:not(:disabled):not(:has([data-selected])) {
216
230
  background-color: var(--v2-background-bg-layer-03);
217
231
  color: var(--v2-text-text-base);
218
232
  }
219
233
 
220
234
  [data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"]
235
+ > [data-slot="tabs-v2-list"]
221
236
  [data-slot="tabs-v2-trigger-wrapper"]:has([data-selected]) {
222
237
  background-color: var(--v2-background-bg-layer-03);
223
238
  color: var(--v2-text-text-base);
@@ -18,15 +18,13 @@
18
18
  display: flex;
19
19
  align-items: center;
20
20
  overflow-x: auto;
21
-
22
- /* Hide scrollbar */
23
21
  scrollbar-width: none;
24
22
  -ms-overflow-style: none;
23
+
25
24
  &::-webkit-scrollbar {
26
25
  display: none;
27
26
  }
28
27
 
29
- /* After element to fill remaining space */
30
28
  &::after {
31
29
  content: "";
32
30
  display: block;
@@ -48,15 +46,12 @@
48
46
  align-items: center;
49
47
  gap: 12px;
50
48
  color: var(--text-base);
51
-
52
- /* text-14-medium */
53
49
  font-family: var(--font-family-sans);
54
50
  font-size: 14px;
55
51
  font-style: normal;
56
52
  font-weight: var(--font-weight-medium);
57
- line-height: var(--line-height-large); /* 142.857% */
53
+ line-height: var(--line-height-large);
58
54
  letter-spacing: var(--letter-spacing-normal);
59
-
60
55
  white-space: nowrap;
61
56
  flex-shrink: 0;
62
57
  max-width: 280px;
@@ -86,6 +81,13 @@
86
81
  justify-content: center;
87
82
  }
88
83
 
84
+ [data-slot="tabs-close-button"] {
85
+ padding: 0;
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ }
90
+
89
91
  [data-component="icon-button"] {
90
92
  margin: -0.25rem;
91
93
  }
@@ -94,14 +96,17 @@
94
96
  pointer-events: none;
95
97
  color: var(--text-weaker);
96
98
  }
99
+
97
100
  &:focus-visible {
98
101
  outline: none;
99
102
  box-shadow: none;
100
103
  }
104
+
101
105
  &:has([data-selected]) {
102
106
  color: var(--text-strong);
103
107
  background-color: transparent;
104
108
  border-bottom-color: transparent;
109
+
105
110
  [data-slot="tabs-trigger-close-button"] {
106
111
  opacity: 1;
107
112
  }
@@ -110,6 +115,7 @@
110
115
  &:hover:not(:disabled):not([data-selected]) {
111
116
  color: var(--text-strong);
112
117
  }
118
+
113
119
  &:has([data-slot="tabs-trigger-close-button"]) {
114
120
  padding-inline-end: 12px;
115
121
 
@@ -122,10 +128,9 @@
122
128
  [data-slot="tabs-content"] {
123
129
  overflow-y: auto;
124
130
  flex: 1;
125
-
126
- /* Hide scrollbar */
127
131
  scrollbar-width: none;
128
132
  -ms-overflow-style: none;
133
+
129
134
  &::-webkit-scrollbar {
130
135
  display: none;
131
136
  }
@@ -218,6 +223,7 @@
218
223
 
219
224
  &:has([data-slot="tabs-trigger-close-button"]) {
220
225
  padding-inline-end: 5px;
226
+
221
227
  [data-slot="tabs-trigger"] {
222
228
  padding-inline-end: 0 !important;
223
229
  }
@@ -239,10 +245,6 @@
239
245
  background-color: var(--surface-base-hover);
240
246
  }
241
247
 
242
- /*
243
- File tabs: use monochrome icon by default.
244
- Full-color icon is shown on hover/selected.
245
- */
246
248
  [data-slot="tabs-trigger"] {
247
249
  .tab-fileicon-color,
248
250
  .tab-fileicon-mono {
@@ -329,9 +331,6 @@
329
331
  border: none;
330
332
  background-color: transparent;
331
333
  }
332
- &:empty::after {
333
- display: none;
334
- }
335
334
  }
336
335
 
337
336
  [data-slot="tabs-trigger-wrapper"] {
@@ -342,13 +341,11 @@
342
341
  border-bottom-style: solid;
343
342
  border-bottom-color: transparent;
344
343
  gap: 4px;
345
-
346
- /* text-14-regular */
347
344
  font-family: var(--font-family-sans);
348
345
  font-size: var(--font-size-base);
349
346
  font-style: normal;
350
347
  font-weight: var(--font-weight-regular);
351
- line-height: var(--line-height-x-large); /* 171.429% */
348
+ line-height: var(--line-height-x-large);
352
349
  letter-spacing: var(--letter-spacing-normal);
353
350
 
354
351
  [data-slot="tabs-trigger"] {
@@ -359,18 +356,6 @@
359
356
  border-bottom-color: transparent;
360
357
  }
361
358
 
362
- [data-slot="tabs-trigger-close-button"] {
363
- display: flex;
364
- align-items: center;
365
- justify-content: center;
366
- }
367
-
368
- [data-component="icon-button"] {
369
- width: 16px;
370
- height: 16px;
371
- margin: 0;
372
- }
373
-
374
359
  &:has([data-selected]) {
375
360
  color: var(--text-strong);
376
361
  background-color: transparent;
@@ -383,14 +368,12 @@
383
368
 
384
369
  &:has([data-slot="tabs-trigger-close-button"]) {
385
370
  padding-inline-end: 0;
371
+
386
372
  [data-slot="tabs-trigger"] {
387
373
  padding-inline-end: 0;
388
374
  }
389
375
  }
390
376
  }
391
-
392
- /* [data-slot="tabs-content"] { */
393
- /* } */
394
377
  }
395
378
 
396
379
  &[data-variant="pill"][data-orientation="horizontal"] {
@@ -413,8 +396,6 @@
413
396
  border-radius: var(--radius-sm);
414
397
  background-color: transparent;
415
398
  gap: 0;
416
-
417
- /* text-13-medium */
418
399
  font-family: var(--font-family-sans);
419
400
  font-size: var(--font-size-small);
420
401
  font-style: normal;
@@ -434,17 +415,13 @@
434
415
  color: var(--text-strong);
435
416
  }
436
417
 
437
- &:active:not(:disabled) {
418
+ &:active:not(:disabled),
419
+ &:has([data-selected]) {
438
420
  background-color: var(--surface-base-active);
439
421
  }
440
422
 
441
423
  &:has([data-selected]) {
442
- background-color: var(--surface-base-active);
443
424
  color: var(--text-strong);
444
-
445
- &:hover:not(:disabled) {
446
- background-color: var(--surface-base-active);
447
- }
448
425
  }
449
426
  }
450
427
  }
@@ -481,170 +458,6 @@
481
458
  }
482
459
  }
483
460
  }
484
-
485
- &[data-orientation="vertical"] {
486
- flex-direction: row;
487
-
488
- [data-slot="tabs-list"] {
489
- flex-direction: column;
490
- width: auto;
491
- height: 100%;
492
- overflow-x: hidden;
493
- overflow-y: auto;
494
- padding: 8px;
495
- gap: 4px;
496
- background-color: var(--background-base);
497
- border-inline-end: 1px solid var(--border-weak-base);
498
-
499
- &::after {
500
- display: none;
501
- }
502
- }
503
-
504
- [data-slot="tabs-trigger-wrapper"] {
505
- width: 100%;
506
- height: 32px;
507
- border: none;
508
- border-radius: 8px;
509
- background-color: transparent;
510
-
511
- [data-slot="tabs-trigger"] {
512
- height: 100%;
513
- padding: 0 8px;
514
- gap: 8px;
515
- justify-content: flex-start;
516
- }
517
-
518
- &:hover:not(:disabled) {
519
- background-color: var(--surface-base-hover);
520
- }
521
-
522
- &:has([data-selected]) {
523
- background-color: var(--surface-base-active);
524
- color: var(--text-strong);
525
- }
526
- }
527
-
528
- [data-slot="tabs-content"] {
529
- overflow-x: auto;
530
- overflow-y: auto;
531
- }
532
-
533
- &[data-variant="alt"] {
534
- [data-slot="tabs-list"] {
535
- padding: 8px;
536
- gap: 4px;
537
- border: none;
538
-
539
- &::after {
540
- display: none;
541
- }
542
- }
543
-
544
- [data-slot="tabs-trigger-wrapper"] {
545
- height: 32px;
546
- border: none;
547
- border-radius: 8px;
548
-
549
- [data-slot="tabs-trigger"] {
550
- border: none;
551
- padding: 0 8px;
552
- gap: 8px;
553
- justify-content: flex-start;
554
- }
555
-
556
- &:hover:not(:disabled) {
557
- background-color: var(--surface-base-hover);
558
- }
559
-
560
- &:has([data-selected]) {
561
- background-color: var(--surface-base-hover);
562
- color: var(--text-strong);
563
- }
564
- }
565
- }
566
-
567
- &[data-variant="settings"] {
568
- [data-slot="tabs-list"] {
569
- width: 150px;
570
- min-width: 150px;
571
-
572
- @media (min-width: 640px) {
573
- width: 200px;
574
- min-width: 200px;
575
- }
576
- padding: 12px;
577
- gap: 0;
578
- background-color: var(--background-base);
579
- border-inline-end: 1px solid var(--border-weak-base);
580
-
581
- &::after {
582
- display: none;
583
- }
584
- }
585
-
586
- [data-slot="tabs-section-title"] {
587
- width: 100%;
588
- padding: 0;
589
- padding-inline-start: 4px;
590
- font-family: var(--font-family-sans);
591
- font-size: var(--font-size-small);
592
- font-weight: var(--font-weight-medium);
593
- color: var(--text-weak);
594
- }
595
-
596
- [data-slot="tabs-trigger-wrapper"] {
597
- height: 32px;
598
- border: none;
599
- border-radius: var(--radius-md);
600
-
601
- /* text-14-medium */
602
- font-family: var(--font-family-sans);
603
- font-size: var(--font-size-base);
604
- font-weight: var(--font-weight-medium);
605
- line-height: var(--line-height-large);
606
-
607
- [data-slot="tabs-trigger"] {
608
- border: none;
609
- padding: 0 8px;
610
- gap: 12px;
611
- justify-content: flex-start;
612
- width: 100%;
613
- height: 100%;
614
- }
615
-
616
- [data-component="icon"] {
617
- color: var(--icon-base);
618
- }
619
-
620
- &:hover:not(:disabled) {
621
- background-color: var(--surface-base-hover);
622
- }
623
-
624
- &:has([data-slot="tabs-trigger"]:focus-visible) {
625
- background-color: var(--surface-base-hover);
626
- box-shadow: var(--shadow-xs-border-focus);
627
- }
628
-
629
- &:has([data-selected]) {
630
- background-color: var(--surface-base-active);
631
- color: var(--text-strong);
632
-
633
- [data-component="icon"] {
634
- color: var(--icon-strong-base);
635
- }
636
-
637
- &:hover:not(:disabled) {
638
- background-color: var(--surface-base-active);
639
- }
640
- }
641
- }
642
-
643
- [data-slot="tabs-content"] {
644
- background-color: var(--surface-stronger-non-alpha);
645
- }
646
- }
647
- }
648
461
  }
649
462
 
650
463
  [data-component="tabs-drag-preview"] {
@@ -685,10 +498,10 @@
685
498
  position: relative;
686
499
  }
687
500
 
688
- body[data-new-layout] #review-panel [data-component="tabs"],
689
- body[data-new-layout] #terminal-panel [data-component="tabs"],
690
- body[data-new-layout] #review-panel [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"],
691
- body[data-new-layout] #terminal-panel [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"] {
501
+ :root body #review-panel [data-component="tabs"],
502
+ :root body #terminal-panel [data-component="tabs"],
503
+ :root body #review-panel [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"],
504
+ :root body #terminal-panel [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"] {
692
505
  background-color: var(--v2-background-bg-base);
693
506
 
694
507
  [data-slot="tabs-list"] {
@@ -708,7 +521,7 @@ body[data-new-layout] #terminal-panel [data-component="tabs"][data-variant="norm
708
521
  }
709
522
  }
710
523
 
711
- body[data-new-layout] #review-panel [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"] {
524
+ :root body #review-panel [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"] {
712
525
  [data-slot="tabs-list"] {
713
526
  height: 52px;
714
527
  padding-inline-end: 12px;
@@ -765,16 +578,15 @@ body[data-new-layout] #review-panel [data-component="tabs"][data-variant="normal
765
578
  [data-slot="icon-svg"] {
766
579
  margin-inline-start: -2px;
767
580
  }
768
- }
769
581
 
770
- /* Preview/temporary tabs: beat trigger + .text-14-medium upright defaults */
771
- [data-slot="tabs-trigger"] .italic {
772
- font-style: italic !important;
773
- font-variation-settings: "slnt" -10 !important;
582
+ .italic {
583
+ font-style: italic !important;
584
+ font-variation-settings: "slnt" -10 !important;
585
+ }
774
586
  }
775
587
  }
776
588
 
777
- body[data-new-layout] #review-panel [data-component="tabs"] .session-review-v2-tabs-bar {
589
+ :root body #review-panel [data-component="tabs"] .session-review-v2-tabs-bar {
778
590
  width: 100%;
779
591
  min-width: 0;
780
592
  gap: 8px;
@@ -783,8 +595,9 @@ body[data-new-layout] #review-panel [data-component="tabs"] .session-review-v2-t
783
595
  background-color: var(--v2-background-bg-base);
784
596
  }
785
597
 
786
- body[data-new-layout] #review-panel [data-component="tabs"] .session-review-v2-tabs-bar [data-slot="tabs-list"],
787
- body[data-new-layout]
598
+ :root body #review-panel [data-component="tabs"] .session-review-v2-tabs-bar [data-slot="tabs-list"],
599
+ :root
600
+ body
788
601
  #review-panel
789
602
  [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"]
790
603
  .session-review-v2-tabs-bar
@@ -795,12 +608,7 @@ body[data-new-layout]
795
608
  border-bottom: none;
796
609
  }
797
610
 
798
- body[data-new-layout]
799
- #review-panel
800
- [data-component="tabs"]
801
- .session-review-v2-tabs-bar
802
- [data-slot="tabs-list"]
803
- > .sticky {
611
+ :root body #review-panel [data-component="tabs"] .session-review-v2-tabs-bar [data-slot="tabs-list"] > .sticky {
804
612
  padding-inline-end: 0;
805
613
 
806
614
  [data-component="icon-button-v2"] {
@@ -820,7 +628,8 @@ body[data-new-layout]
820
628
  }
821
629
  }
822
630
 
823
- body[data-new-layout]
631
+ :root
632
+ body
824
633
  #review-panel
825
634
  [data-component="tabs"]
826
635
  .session-review-v2-tabs-bar
@@ -831,7 +640,8 @@ body[data-new-layout]
831
640
  inset-inline-end: 0;
832
641
  }
833
642
 
834
- body[data-new-layout]
643
+ :root
644
+ body
835
645
  #review-panel
836
646
  [data-component="tabs"]
837
647
  .session-review-v2-tabs-bar
@@ -879,11 +689,11 @@ body[data-new-layout]
879
689
  }
880
690
  }
881
691
 
882
- body[data-new-layout] #review-panel [data-component="tabs"] .session-review-v2-open-in-app-slot {
692
+ :root body #review-panel [data-component="tabs"] .session-review-v2-open-in-app-slot {
883
693
  flex-shrink: 0;
884
694
  margin-inline-start: auto;
885
695
  }
886
696
 
887
- body[data-new-layout] #review-panel [data-component="tabs"] .session-review-v2-open-in-app {
697
+ :root body #review-panel [data-component="tabs"] .session-review-v2-open-in-app {
888
698
  flex-shrink: 0;
889
699
  }