@opencode-ai/ui 0.0.0-dev-202608041127 → 0.0.0-dev-202608041149

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencode-ai/ui",
3
- "version": "0.0.0-dev-202608041127",
3
+ "version": "0.0.0-dev-202608041149",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -60,7 +60,7 @@
60
60
 
61
61
  [data-slot="dropdown-menu-checkbox-item"],
62
62
  [data-slot="dropdown-menu-radio-item"] {
63
- padding-right: 28px;
63
+ padding-inline-end: 28px;
64
64
  }
65
65
 
66
66
  [data-slot="dropdown-menu-sub-trigger"] {
@@ -76,7 +76,7 @@
76
76
  width: 16px;
77
77
  height: 16px;
78
78
  position: absolute;
79
- right: 8px;
79
+ inset-inline-end: 8px;
80
80
  top: 50%;
81
81
  transform: translateY(-50%);
82
82
  }
@@ -154,7 +154,14 @@ export function Icon(props: IconProps) {
154
154
  <div
155
155
  data-component="icon"
156
156
  data-size={local.size || "normal"}
157
- data-directional={local.name === "chevron-left" || local.name === "chevron-right" ? true : undefined}
157
+ data-directional={
158
+ local.name === "arrow-left" ||
159
+ local.name === "arrow-right" ||
160
+ local.name === "chevron-left" ||
161
+ local.name === "chevron-right"
162
+ ? true
163
+ : undefined
164
+ }
158
165
  >
159
166
  <svg
160
167
  data-slot="icon-svg"
@@ -14,7 +14,7 @@
14
14
  opacity: 1;
15
15
  }
16
16
 
17
- &[data-direction="horizontal"] {
17
+ &:where([data-direction="horizontal"]) {
18
18
  inset-block: 0;
19
19
  inset-inline-end: 0;
20
20
  width: 8px;
@@ -33,9 +33,21 @@
33
33
  inset-inline-start: 50%;
34
34
  transform: translateX(-50%);
35
35
  }
36
+
37
+ &:dir(rtl) {
38
+ transform: translateX(-50%);
39
+
40
+ &[data-edge="start"] {
41
+ transform: translateX(50%);
42
+ }
43
+
44
+ &::after {
45
+ transform: translateX(50%);
46
+ }
47
+ }
36
48
  }
37
49
 
38
- &[data-direction="vertical"] {
50
+ &:where([data-direction="vertical"]) {
39
51
  inset-inline: 0;
40
52
  inset-block-start: 0;
41
53
  height: 8px;
@@ -33,6 +33,10 @@ export function ResizeHandle(props: ResizeHandleProps) {
33
33
  e.preventDefault()
34
34
  const edge = local.edge ?? (local.direction === "vertical" ? "start" : "end")
35
35
  const start = local.direction === "horizontal" ? e.clientX : e.clientY
36
+ const rtl =
37
+ local.direction === "horizontal" &&
38
+ e.currentTarget instanceof Element &&
39
+ getComputedStyle(e.currentTarget).direction === "rtl"
36
40
  const startSize = local.size
37
41
  const min = local.min
38
42
  const max = local.max
@@ -53,7 +57,7 @@ export function ResizeHandle(props: ResizeHandleProps) {
53
57
  ? edge === "end"
54
58
  ? pos - start
55
59
  : start - pos
56
- : edge === "start"
60
+ : (edge === "start") !== rtl
57
61
  ? start - pos
58
62
  : pos - start
59
63
  current = startSize + delta
@@ -21,7 +21,7 @@
21
21
 
22
22
  .scroll-view__thumb {
23
23
  position: absolute;
24
- right: 0;
24
+ inset-inline-end: 0;
25
25
  top: 0;
26
26
  width: 12px;
27
27
  transition: opacity 200ms ease;
@@ -1,6 +1,7 @@
1
1
  [data-component="select"] {
2
2
  [data-slot="select-select-trigger"] {
3
- padding: 0 4px 0 8px;
3
+ padding-block: 0;
4
+ padding-inline: 8px 4px;
4
5
  box-shadow: none;
5
6
 
6
7
  [data-slot="select-select-trigger-value"] {
@@ -46,7 +47,8 @@
46
47
 
47
48
  &[data-trigger-style="settings"] {
48
49
  [data-slot="select-select-trigger"] {
49
- padding: 6px 6px 6px 12px;
50
+ padding-block: 6px;
51
+ padding-inline: 12px 6px;
50
52
  box-shadow: none;
51
53
  border-radius: 6px;
52
54
  min-width: 160px;
@@ -154,7 +156,7 @@
154
156
  display: flex;
155
157
  align-items: center;
156
158
  justify-content: center;
157
- margin-left: auto;
159
+ margin-inline-start: auto;
158
160
  width: 16px;
159
161
  height: 16px;
160
162
  }
@@ -103,6 +103,10 @@
103
103
  background-color: var(--icon-invert-base);
104
104
  }
105
105
 
106
+ &:dir(rtl)[data-checked] [data-slot="switch-thumb"] {
107
+ transform: translateX(-12px);
108
+ }
109
+
106
110
  &[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-control"] {
107
111
  border-color: var(--border-hover);
108
112
  background-color: var(--surface-hover);
@@ -61,7 +61,7 @@
61
61
  flex-shrink: 0;
62
62
  max-width: 280px;
63
63
  border-bottom: 1px solid var(--border-weak-base);
64
- border-right: 1px solid var(--border-weak-base);
64
+ border-inline-end: 1px solid var(--border-weak-base);
65
65
  background-color: var(--background-base);
66
66
 
67
67
  [data-slot="tabs-trigger"] {
@@ -111,10 +111,10 @@
111
111
  color: var(--text-strong);
112
112
  }
113
113
  &:has([data-slot="tabs-trigger-close-button"]) {
114
- padding-right: 12px;
114
+ padding-inline-end: 12px;
115
115
 
116
116
  [data-slot="tabs-trigger"] {
117
- padding-right: 0;
117
+ padding-inline-end: 0;
118
118
  }
119
119
  }
120
120
  }
@@ -141,8 +141,8 @@
141
141
 
142
142
  [data-slot="tabs-list"] {
143
143
  height: var(--tabs-bar-height);
144
- padding-left: 12px;
145
- padding-right: 0;
144
+ padding-inline-start: 12px;
145
+ padding-inline-end: 0;
146
146
  --tabs-review-gap: 16px;
147
147
  --tabs-review-fade: 16px;
148
148
  gap: var(--tabs-review-gap);
@@ -162,11 +162,15 @@
162
162
  position: absolute;
163
163
  top: 0;
164
164
  bottom: 0;
165
- left: calc(var(--tabs-review-fade) * -1);
165
+ inset-inline-end: 100%;
166
166
  width: var(--tabs-review-fade);
167
167
  pointer-events: none;
168
168
  background: linear-gradient(90deg, transparent, var(--background-stronger));
169
169
  }
170
+
171
+ &:dir(rtl)::before {
172
+ background: linear-gradient(270deg, transparent, var(--background-stronger));
173
+ }
170
174
  }
171
175
  }
172
176
 
@@ -213,9 +217,9 @@
213
217
  }
214
218
 
215
219
  &:has([data-slot="tabs-trigger-close-button"]) {
216
- padding-right: 5px;
220
+ padding-inline-end: 5px;
217
221
  [data-slot="tabs-trigger"] {
218
- padding-right: 0 !important;
222
+ padding-inline-end: 0 !important;
219
223
  }
220
224
  }
221
225
 
@@ -271,7 +275,7 @@
271
275
  #terminal-panel &[data-variant="normal"][data-orientation="horizontal"] {
272
276
  [data-slot="tabs-list"] {
273
277
  height: 52px;
274
- padding-right: 12px;
278
+ padding-inline-end: 12px;
275
279
  gap: 8px;
276
280
  }
277
281
 
@@ -291,7 +295,7 @@
291
295
  }
292
296
 
293
297
  &:has([data-slot="tabs-trigger-close-button"]) {
294
- padding-right: 8px;
298
+ padding-inline-end: 8px;
295
299
  }
296
300
 
297
301
  &:has([data-selected]) {
@@ -378,9 +382,9 @@
378
382
  }
379
383
 
380
384
  &:has([data-slot="tabs-trigger-close-button"]) {
381
- padding-right: 0;
385
+ padding-inline-end: 0;
382
386
  [data-slot="tabs-trigger"] {
383
- padding-right: 0;
387
+ padding-inline-end: 0;
384
388
  }
385
389
  }
386
390
  }
@@ -490,7 +494,7 @@
490
494
  padding: 8px;
491
495
  gap: 4px;
492
496
  background-color: var(--background-base);
493
- border-right: 1px solid var(--border-weak-base);
497
+ border-inline-end: 1px solid var(--border-weak-base);
494
498
 
495
499
  &::after {
496
500
  display: none;
@@ -572,7 +576,7 @@
572
576
  padding: 12px;
573
577
  gap: 0;
574
578
  background-color: var(--background-base);
575
- border-right: 1px solid var(--border-weak-base);
579
+ border-inline-end: 1px solid var(--border-weak-base);
576
580
 
577
581
  &::after {
578
582
  display: none;
@@ -581,7 +585,8 @@
581
585
 
582
586
  [data-slot="tabs-section-title"] {
583
587
  width: 100%;
584
- padding: 0 0 0 4px;
588
+ padding: 0;
589
+ padding-inline-start: 4px;
585
590
  font-family: var(--font-family-sans);
586
591
  font-size: var(--font-size-small);
587
592
  font-weight: var(--font-weight-medium);
@@ -695,6 +700,10 @@ body[data-new-layout] #terminal-panel [data-component="tabs"][data-variant="norm
695
700
  &::before {
696
701
  background: linear-gradient(90deg, transparent, var(--v2-background-bg-base));
697
702
  }
703
+
704
+ &:dir(rtl)::before {
705
+ background: linear-gradient(270deg, transparent, var(--v2-background-bg-base));
706
+ }
698
707
  }
699
708
  }
700
709
  }
@@ -702,7 +711,7 @@ body[data-new-layout] #terminal-panel [data-component="tabs"][data-variant="norm
702
711
  body[data-new-layout] #review-panel [data-component="tabs"][data-variant="normal"][data-orientation="horizontal"] {
703
712
  [data-slot="tabs-list"] {
704
713
  height: 52px;
705
- padding-right: 12px;
714
+ padding-inline-end: 12px;
706
715
  gap: 8px;
707
716
  --tabs-review-fade: 8px;
708
717
  }
@@ -723,10 +732,10 @@ body[data-new-layout] #review-panel [data-component="tabs"][data-variant="normal
723
732
  }
724
733
 
725
734
  &:has([data-slot="tabs-trigger-close-button"]) {
726
- padding-right: 8px;
735
+ padding-inline-end: 8px;
727
736
 
728
737
  [data-slot="tabs-trigger-close-button"] {
729
- margin-left: 2px;
738
+ margin-inline-start: 2px;
730
739
  }
731
740
  }
732
741
 
@@ -754,7 +763,7 @@ body[data-new-layout] #review-panel [data-component="tabs"][data-variant="normal
754
763
  .tab-fileicon-color,
755
764
  .tab-fileicon-mono,
756
765
  [data-slot="icon-svg"] {
757
- margin-left: -2px;
766
+ margin-inline-start: -2px;
758
767
  }
759
768
  }
760
769
 
@@ -792,7 +801,7 @@ body[data-new-layout]
792
801
  .session-review-v2-tabs-bar
793
802
  [data-slot="tabs-list"]
794
803
  > .sticky {
795
- padding-right: 0;
804
+ padding-inline-end: 0;
796
805
 
797
806
  [data-component="icon-button-v2"] {
798
807
  position: relative;
@@ -800,7 +809,7 @@ body[data-new-layout]
800
809
  &::after {
801
810
  content: "";
802
811
  position: absolute;
803
- left: 100%;
812
+ inset-inline-start: 100%;
804
813
  top: 50%;
805
814
  transform: translateY(-50%);
806
815
  width: 20px;
@@ -811,21 +820,35 @@ body[data-new-layout]
811
820
  }
812
821
  }
813
822
 
823
+ body[data-new-layout]
824
+ #review-panel
825
+ [data-component="tabs"]
826
+ .session-review-v2-tabs-bar
827
+ [data-slot="tabs-list"]
828
+ > .sticky:not(.session-review-v2-sidebar-toggle-slot) {
829
+ left: auto;
830
+ right: auto;
831
+ inset-inline-end: 0;
832
+ }
833
+
814
834
  body[data-new-layout]
815
835
  #review-panel
816
836
  [data-component="tabs"]
817
837
  .session-review-v2-tabs-bar
818
838
  [data-slot="tabs-list"]
819
839
  > .session-review-v2-sidebar-toggle-slot.sticky {
820
- padding-right: 0;
840
+ left: auto;
841
+ right: auto;
842
+ inset-inline-start: 0;
843
+ padding-inline-end: 0;
821
844
 
822
845
  &::before {
823
846
  content: "";
824
847
  position: absolute;
825
848
  top: 50%;
826
849
  bottom: auto;
827
- left: auto;
828
- right: 100%;
850
+ inset-inline-start: auto;
851
+ inset-inline-end: 100%;
829
852
  transform: translateY(-50%);
830
853
  width: 12px;
831
854
  height: 28px;
@@ -838,7 +861,8 @@ body[data-new-layout]
838
861
  content: "";
839
862
  position: absolute;
840
863
  top: 50%;
841
- left: 100%;
864
+ inset-inline-start: 100%;
865
+ inset-inline-end: auto;
842
866
  transform: translateY(-50%);
843
867
  width: 8px;
844
868
  height: 28px;
@@ -846,6 +870,10 @@ body[data-new-layout]
846
870
  background: linear-gradient(90deg, var(--v2-background-bg-base), transparent);
847
871
  }
848
872
 
873
+ &:dir(rtl)::after {
874
+ background: linear-gradient(270deg, var(--v2-background-bg-base), transparent);
875
+ }
876
+
849
877
  [data-component="icon-button-v2"]::after {
850
878
  display: none;
851
879
  }
@@ -853,7 +881,7 @@ body[data-new-layout]
853
881
 
854
882
  body[data-new-layout] #review-panel [data-component="tabs"] .session-review-v2-open-in-app-slot {
855
883
  flex-shrink: 0;
856
- margin-left: auto;
884
+ margin-inline-start: auto;
857
885
  }
858
886
 
859
887
  body[data-new-layout] #review-panel [data-component="tabs"] .session-review-v2-open-in-app {
@@ -80,6 +80,7 @@ function TabsTrigger(props: ParentProps<TabsTriggerProps>) {
80
80
  >
81
81
  <Kobalte.Trigger
82
82
  {...rest}
83
+ dir={rest.dir ?? "auto"}
83
84
  data-slot="tabs-trigger"
84
85
  data-value={props.value}
85
86
  classList={{ [split.classes?.button ?? ""]: split.classes?.button }}
@@ -45,7 +45,7 @@
45
45
  align-items: start;
46
46
  justify-content: space-between;
47
47
  width: 100%;
48
- padding-right: 4px;
48
+ padding-inline-end: 4px;
49
49
 
50
50
  border-radius: var(--radius-md);
51
51
  border: 1px solid var(--border-weak-base);
@@ -68,7 +68,7 @@
68
68
  }
69
69
 
70
70
  &:not(:has([data-slot="input-copy-button"])) {
71
- padding-right: 0;
71
+ padding-inline-end: 0;
72
72
  }
73
73
  }
74
74
 
@@ -13,13 +13,13 @@
13
13
  align-items: center;
14
14
  justify-content: flex-start;
15
15
  gap: 6px;
16
- padding-right: 8px;
16
+ padding-inline-end: 8px;
17
17
  overflow: visible;
18
18
  border: none;
19
19
  border-radius: 6px;
20
20
  background-color: transparent;
21
21
  color: var(--v2-text-text-muted);
22
- text-align: left;
22
+ text-align: start;
23
23
  cursor: pointer;
24
24
  scroll-margin-block: 8px;
25
25
  transition:
@@ -87,6 +87,10 @@
87
87
  transform: rotate(-90deg);
88
88
  }
89
89
 
90
+ [data-component="file-tree-v2"]:dir(rtl) [data-slot="file-tree-v2-chevron"]:not([data-expanded]) svg {
91
+ transform: rotate(90deg);
92
+ }
93
+
90
94
  [data-component="file-tree-v2"] [data-slot="file-tree-v2-row"][data-selected] [data-slot="file-tree-v2-chevron"] {
91
95
  color: var(--v2-text-text-base);
92
96
  }
@@ -52,7 +52,8 @@
52
52
  display: flex;
53
53
  flex-direction: row;
54
54
  align-items: stretch;
55
- padding: 0 6px 0 0;
55
+ padding-block: 0;
56
+ padding-inline: 0 6px;
56
57
  gap: 8px;
57
58
  width: 280px;
58
59
  height: 28px;
@@ -74,7 +75,8 @@
74
75
 
75
76
  [data-component="select-v2"][data-appearance="large"] {
76
77
  height: 32px;
77
- padding: 0 8px 0 0;
78
+ padding-block: 0;
79
+ padding-inline: 0 8px;
78
80
  }
79
81
 
80
82
  [data-component="select-v2"]:where(:hover):not([data-disabled], [data-invalid]):not(:focus-within):not(
@@ -126,12 +128,13 @@
126
128
  overflow: hidden;
127
129
  text-overflow: ellipsis;
128
130
  white-space: nowrap;
129
- padding: 0 0 0 8px;
131
+ padding-block: 0;
132
+ padding-inline: 8px 0;
130
133
  margin: 0;
131
134
  border: 0;
132
135
  background: transparent;
133
136
  outline: none;
134
- text-align: left;
137
+ text-align: start;
135
138
  font-style: normal;
136
139
  font-weight: 440;
137
140
  font-size: 13px;
@@ -188,7 +191,8 @@
188
191
  width: fit-content;
189
192
  max-width: 100%;
190
193
  height: 24px;
191
- padding: 4px 4px 4px 8px;
194
+ padding-block: 4px;
195
+ padding-inline: 8px 4px;
192
196
  gap: 4px;
193
197
  border-radius: 4px;
194
198
  background: transparent;
@@ -278,6 +282,13 @@
278
282
  color: var(--menu-v2-accent);
279
283
  }
280
284
 
285
+ [data-slot="select-v2-listbox"]
286
+ [data-component="menu-v2-item"][data-selected]
287
+ [data-slot="menu-v2-item-indicator"]
288
+ svg {
289
+ visibility: visible;
290
+ }
291
+
281
292
  [data-slot="select-v2-listbox"]
282
293
  [data-component="menu-v2-item"]:not([data-selected])
283
294
  [data-slot="menu-v2-item-indicator"]
@@ -121,6 +121,10 @@
121
121
  var(--v2-grey-300);
122
122
  }
123
123
 
124
+ &:dir(rtl)[data-checked] [data-slot="switch-thumb"] {
125
+ transform: translateX(-8px);
126
+ }
127
+
124
128
  &[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-control"] {
125
129
  background:
126
130
  linear-gradient(
@@ -135,6 +139,10 @@
135
139
  transform: translateX(7px);
136
140
  }
137
141
 
142
+ &:dir(rtl)[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
143
+ transform: translateX(-7px);
144
+ }
145
+
138
146
  &[data-disabled] {
139
147
  cursor: not-allowed;
140
148
  }
@@ -3,7 +3,8 @@
3
3
  display: flex;
4
4
  flex-direction: row;
5
5
  align-items: stretch;
6
- padding: 0 8px 0 0;
6
+ padding-block: 0;
7
+ padding-inline: 0 8px;
7
8
  gap: 8px;
8
9
  width: 280px;
9
10
  height: 28px;
@@ -64,7 +65,7 @@
64
65
  flex: none;
65
66
  align-items: center;
66
67
  justify-content: center;
67
- padding-left: 8px;
68
+ padding-inline-start: 8px;
68
69
  color: var(--v2-icon-icon-muted);
69
70
  }
70
71
 
@@ -74,7 +75,7 @@
74
75
  }
75
76
 
76
77
  [data-component="text-input-v2"][data-leading-icon] [data-slot="text-input-v2-input"] {
77
- padding-left: 0;
78
+ padding-inline-start: 0;
78
79
  }
79
80
 
80
81
  [data-component="text-input-v2"] [data-slot="text-input-v2-input"] {
@@ -82,7 +83,8 @@
82
83
  width: 100%;
83
84
  min-width: 0;
84
85
  height: 100%;
85
- padding: 0 0 0 8px;
86
+ padding-block: 0;
87
+ padding-inline: 8px 0;
86
88
  margin: 0;
87
89
  border: 0;
88
90
  background: transparent;
@@ -165,7 +167,7 @@
165
167
  height: 28px;
166
168
  padding: 0;
167
169
  border-radius: 6px;
168
- margin-right: -8px;
170
+ margin-inline-end: -8px;
169
171
  }
170
172
 
171
173
  [data-component="text-input-v2"][data-invalid]:not([data-disabled]) [data-slot="text-input-v2-input"] {