diff --git a/ui/src/components/ui/tabs/Tabs.vue b/ui/src/components/ui/tabs/Tabs.vue
index 7505f12..69cb5aa 100644
--- a/ui/src/components/ui/tabs/Tabs.vue
+++ b/ui/src/components/ui/tabs/Tabs.vue
@@ -18,7 +18,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
data-slot="tabs"
:data-orientation="forwarded.orientation || 'horizontal'"
v-bind="forwarded"
- :class="cn('gap-2 group/tabs flex data-horizontal:flex-col', props.class)"
+ :class="cn('gap-2 group/tabs flex data-[orientation=horizontal]:flex-col', props.class)"
>
diff --git a/ui/src/components/ui/tabs/TabsTrigger.vue b/ui/src/components/ui/tabs/TabsTrigger.vue
index 2251c1c..1c3874b 100644
--- a/ui/src/components/ui/tabs/TabsTrigger.vue
+++ b/ui/src/components/ui/tabs/TabsTrigger.vue
@@ -16,10 +16,10 @@ const forwardedProps = useForwardProps(delegatedProps)
{
+ it('matches data-orientation on the tabs group, not boolean data-horizontal', () => {
+ const classes = tabsListVariants()
+ expect(classes).toContain('group-data-[orientation=horizontal]/tabs:h-8')
+ expect(classes).toContain('group-data-[orientation=vertical]/tabs:h-fit')
+ expect(classes).toContain('group-data-[orientation=vertical]/tabs:flex-col')
+ expect(classes).not.toContain('group-data-horizontal/tabs:')
+ expect(classes).not.toContain('group-data-vertical/tabs:')
+ })
+
+ it('stacks the tab list above content for the default horizontal orientation', () => {
+ const Harness = defineComponent({
+ components: { Tabs, TabsList, TabsTrigger, TabsContent },
+ template: `
+
+
+ A
+
+ panel
+
+ `
+ })
+ const wrapper = mount(Harness)
+ const root = wrapper.get('[data-slot="tabs"]')
+ expect(root.attributes('data-orientation')).toBe('horizontal')
+ expect(root.classes()).toContain('data-[orientation=horizontal]:flex-col')
+ expect(root.classes()).not.toContain('data-horizontal:flex-col')
+
+ const list = wrapper.get('[data-slot="tabs-list"]')
+ expect(list.classes()).toContain('group-data-[orientation=horizontal]/tabs:h-8')
+
+ const trigger = wrapper.get('[data-slot="tabs-trigger"]')
+ expect(trigger.classes()).toContain('group-data-[orientation=horizontal]/tabs:after:h-0.5')
+ expect(trigger.classes()).toContain('group-data-[orientation=vertical]/tabs:w-full')
+ expect(wrapper.text()).toContain('panel')
+ })
+})