tabs
ora-ui/tabsFreeComponent
ora-ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by ora-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ora-ui.com/r/tabs.jsonSource
1'use client';23import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';4import * as React from 'react';56import { cn } from '@/registry/lib/utils';78type TabsVariant = 'soft' | 'solid';910const TabsContext = React.createContext<{ variant: TabsVariant }>({ variant: 'soft' });1112function Tabs({ className, ...props }: TabsPrimitive.Root.Props) {13 return (14 <TabsPrimitive.Root15 data-slot="tabs"16 className={cn(17 'flex flex-col gap-2 data-[orientation=vertical]:flex-row data-[orientation=vertical]:items-start',18 className19 )}20 {...props}21 />22 );23}2425function TabsSurface({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {26 return (27 <div28 data-slot="tabs-surface"29 className={cn('w-fit rounded-md bg-hover/50 p-1 dark:bg-surface-2', className)}30 {...props}31 />32 );33}3435function TabsList({36 className,37 variant = 'soft',38 track = true,39 transition = false,40 children,41 ...props42}: TabsPrimitive.List.Props & {43 variant?: TabsVariant;44 track?: boolean;45 transition?: boolean;46}) {47 const isSoft = variant === 'soft';4849 return (50 <TabsContext.Provider value={{ variant }}>51 <TabsPrimitive.List52 data-slot="tabs-list"53 data-variant={variant}54 className={cn(55 'relative flex w-fit items-center',56 'data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-start',57 isSoft && 'gap-0.5',58 className59 )}60 {...props}61 >62 {children}63 <TabsPrimitive.Indicator64 data-slot="tabs-indicator"65 data-variant={variant}66 className={cn(67 'pointer-events-none absolute',68 transition &&69 'motion-safe:transition-[translate,width,height] motion-safe:duration-200 motion-safe:ease-in-out',70 [71 // Anchor to bottom-left; translate to exact tab position for both orientations72 'bottom-0 left-0 z-0 rounded-sm',73 'h-(--active-tab-height) w-(--active-tab-width)',74 'translate-x-(--active-tab-left) -translate-y-(--active-tab-bottom)',75 isSoft ? 'bg-active' : 'bg-fill',76 ]77 )}78 />79 </TabsPrimitive.List>80 </TabsContext.Provider>81 );82}8384function TabsTab({ className, ...props }: TabsPrimitive.Tab.Props) {85 const { variant } = React.useContext(TabsContext);86 const isSoft = variant === 'soft';87 return (88 <TabsPrimitive.Tab89// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from ora-ui
All 31 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | ora-ui | Components | Free | 2 deps | |
| alert-dialogalert-dialog | ora-ui | Components | Free | 1 dep | |
| avataravatar | ora-ui | Components | Free | 1 dep | |
| avatar-groupavatar-group | ora-ui | Components | Free | no deps | |
| badgebadge | ora-ui | Components | Free | 2 deps | |
| buttonbutton | ora-ui | Components | Free | 2 deps | |
| button-groupbutton-group | ora-ui | Components | Free | 2 deps | |
| checkboxcheckbox | ora-ui | Components | Free | 3 deps |
