@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 3.76 kB
Source Map (JSON)
{"version":3,"file":"atoms.mjs","names":["BaseUITabs"],"sources":["../../../src/base-ui/Tabs/atoms.tsx"],"sourcesContent":["'use client';\n\nimport { Tabs as BaseUITabs } from '@base-ui/react/tabs';\nimport { cx } from 'antd-style';\nimport { createContext, type FC, use, useMemo } from 'react';\n\nimport { indicatorVariants, listVariants, styles, tabVariants } from './style';\nimport type {\n TabsIndicatorProps,\n TabsListProps,\n TabsPanelProps,\n TabsRootProps,\n TabsSize,\n TabsTabProps,\n TabsVariant,\n} from './type';\n\ninterface TabsContextValue {\n size: TabsSize;\n variant: TabsVariant;\n}\n\nconst TabsContext = createContext<TabsContextValue>({ size: 'middle', variant: 'rounded' });\n\nexport const useTabsContext = () => use(TabsContext);\n\ntype TabsRootInternalProps = TabsRootProps & {\n size?: TabsSize;\n variant?: TabsVariant;\n};\n\nexport const TabsRoot: FC<TabsRootInternalProps> = ({\n children,\n size = 'middle',\n variant = 'rounded',\n ...rest\n}) => {\n const contextValue = useMemo(() => ({ size, variant }), [size, variant]);\n\n return (\n <TabsContext value={contextValue}>\n <BaseUITabs.Root {...rest}>{children}</BaseUITabs.Root>\n </TabsContext>\n );\n};\n\nTabsRoot.displayName = 'TabsRoot';\n\nexport const TabsList: FC<TabsListProps> = ({ className, variant: variantProp, ...rest }) => {\n const ctx = useTabsContext();\n const variant = variantProp ?? ctx.variant;\n\n return <BaseUITabs.List className={cx(listVariants({ variant }), className)} {...rest} />;\n};\n\nTabsList.displayName = 'TabsList';\n\nexport const TabsTab: FC<TabsTabProps> = ({\n className,\n size: sizeProp,\n variant: variantProp,\n ...rest\n}) => {\n const ctx = useTabsContext();\n const size = sizeProp ?? ctx.size;\n const variant = variantProp ?? ctx.variant;\n\n return <BaseUITabs.Tab className={cx(tabVariants({ size, variant }), className)} {...rest} />;\n};\n\nTabsTab.displayName = 'TabsTab';\n\nexport const TabsPanel: FC<TabsPanelProps> = ({ className, ...rest }) => {\n return <BaseUITabs.Panel className={cx(styles.panel, className)} {...rest} />;\n};\n\nTabsPanel.displayName = 'TabsPanel';\n\nexport const TabsIndicator: FC<TabsIndicatorProps> = ({\n className,\n variant: variantProp,\n ...rest\n}) => {\n const ctx = useTabsContext();\n const variant = variantProp ?? ctx.variant;\n\n return (\n <BaseUITabs.Indicator\n renderBeforeHydration\n className={cx(indicatorVariants({ variant }), className)}\n {...rest}\n />\n );\n};\n\nTabsIndicator.displayName = 'TabsIndicator';\n\nexport { styles as tabsStyles } from './style';\n"],"mappings":";;;;;;;AAsBA,MAAM,cAAc,cAAgC;CAAE,MAAM;CAAU,SAAS;CAAW,CAAC;AAE3F,MAAa,uBAAuB,IAAI,YAAY;AAOpD,MAAa,YAAuC,EAClD,UACA,OAAO,UACP,UAAU,WACV,GAAG,WACC;AAGJ,QACE,oBAAC,aAAD;EAAa,OAHM,eAAe;GAAE;GAAM;GAAS,GAAG,CAAC,MAAM,QAAQ,CAGrC;YAC9B,oBAACA,KAAW,MAAZ;GAAiB,GAAI;GAAO;GAA2B,CAAA;EAC3C,CAAA;;AAIlB,SAAS,cAAc;AAEvB,MAAa,YAA+B,EAAE,WAAW,SAAS,aAAa,GAAG,WAAW;CAC3F,MAAM,MAAM,gBAAgB;CAC5B,MAAM,UAAU,eAAe,IAAI;AAEnC,QAAO,oBAACA,KAAW,MAAZ;EAAiB,WAAW,GAAG,aAAa,EAAE,SAAS,CAAC,EAAE,UAAU;EAAE,GAAI;EAAQ,CAAA;;AAG3F,SAAS,cAAc;AAEvB,MAAa,WAA6B,EACxC,WACA,MAAM,UACN,SAAS,aACT,GAAG,WACC;CACJ,MAAM,MAAM,gBAAgB;CAC5B,MAAM,OAAO,YAAY,IAAI;CAC7B,MAAM,UAAU,eAAe,IAAI;AAEnC,QAAO,oBAACA,KAAW,KAAZ;EAAgB,WAAW,GAAG,YAAY;GAAE;GAAM;GAAS,CAAC,EAAE,UAAU;EAAE,GAAI;EAAQ,CAAA;;AAG/F,QAAQ,cAAc;AAEtB,MAAa,aAAiC,EAAE,WAAW,GAAG,WAAW;AACvE,QAAO,oBAACA,KAAW,OAAZ;EAAkB,WAAW,GAAG,OAAO,OAAO,UAAU;EAAE,GAAI;EAAQ,CAAA;;AAG/E,UAAU,cAAc;AAExB,MAAa,iBAAyC,EACpD,WACA,SAAS,aACT,GAAG,WACC;CACJ,MAAM,MAAM,gBAAgB;CAC5B,MAAM,UAAU,eAAe,IAAI;AAEnC,QACE,oBAACA,KAAW,WAAZ;EACE,uBAAA;EACA,WAAW,GAAG,kBAAkB,EAAE,SAAS,CAAC,EAAE,UAAU;EACxD,GAAI;EACJ,CAAA;;AAIN,cAAc,cAAc"}