@spark-ui/components 10.7.6 → 10.8.0
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/CHANGELOG.md +14 -0
- package/dist/carousel/index.d.mts +5 -2
- package/dist/carousel/index.d.ts +5 -2
- package/dist/carousel/index.js +9 -3
- package/dist/carousel/index.js.map +1 -1
- package/dist/carousel/index.mjs +9 -3
- package/dist/carousel/index.mjs.map +1 -1
- package/dist/progress-tracker/index.js +43 -29
- package/dist/progress-tracker/index.js.map +1 -1
- package/dist/progress-tracker/index.mjs +43 -29
- package/dist/progress-tracker/index.mjs.map +1 -1
- package/dist/switch/index.js +2 -2
- package/dist/switch/index.js.map +1 -1
- package/dist/switch/index.mjs +2 -2
- package/dist/switch/index.mjs.map +1 -1
- package/dist/tabs/index.js +1 -0
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/index.mjs +1 -0
- package/dist/tabs/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/tabs/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tabs/Tabs.tsx","../../src/tabs/TabsContext.tsx","../../src/tabs/TabsRoot.styles.ts","../../src/tabs/TabsContent.tsx","../../src/tabs/TabsContent.styles.ts","../../src/tabs/TabsList.tsx","../../src/tabs/TabsList.styles.ts","../../src/tabs/useResizeObserver.ts","../../src/tabs/TabsTrigger.tsx","../../src/tabs/TabsTrigger.styles.ts","../../src/tabs/index.ts"],"sourcesContent":["import { Tabs as RadixTabs } from 'radix-ui'\nimport { type PropsWithChildren, Ref } from 'react'\n\nimport { TabsContext } from './TabsContext'\nimport { rootStyles } from './TabsRoot.styles'\nimport type { TabsTriggerVariantsProps } from './TabsTrigger.styles'\n\nexport interface TabsProps\n extends Omit<RadixTabs.TabsProps, 'activationMode'>,\n PropsWithChildren<TabsTriggerVariantsProps> {\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * Whether to keep inactive tabs content in the DOM.\n * @default false\n */\n forceMount?: boolean\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * @deprecated\n */\nexport type TabsRootProps = TabsProps\n\nexport const Tabs = ({\n intent = 'basic',\n size = 'md',\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#root\n */\n asChild = false,\n forceMount = false,\n orientation = 'horizontal',\n children,\n className,\n ref,\n ...rest\n}: TabsProps) => {\n return (\n <TabsContext.Provider\n value={{\n intent,\n size,\n orientation,\n forceMount,\n }}\n >\n <RadixTabs.Root\n ref={ref}\n asChild={asChild}\n orientation={orientation}\n className={rootStyles({ className })}\n data-spark-component=\"tabs\"\n activationMode=\"automatic\"\n {...rest}\n >\n {children}\n </RadixTabs.Root>\n </TabsContext.Provider>\n )\n}\n\nTabs.displayName = 'Tabs'\n","import { Tabs as RadixTabs } from 'radix-ui'\nimport { createContext, useContext } from 'react'\n\nimport type { TabsTriggerVariantsProps } from './TabsTrigger.styles'\n\nexport type TabsContextInterface = TabsTriggerVariantsProps &\n Pick<RadixTabs.TabsProps, 'orientation'> & { forceMount?: boolean }\n\nexport const TabsContext = createContext<TabsContextInterface>({} as TabsContextInterface)\n\nexport const useTabsContext = () => {\n const context = useContext(TabsContext)\n\n if (!context) {\n throw Error('useTabsContext must be used within a TabsContext Provider')\n }\n\n return context\n}\n","import { cva } from 'class-variance-authority'\n\nexport const rootStyles = cva([\n 'flex',\n 'data-[orientation=horizontal]:flex-col',\n 'data-[orientation=vertical]:flex-row',\n 'max-w-full',\n])\n","import { Tabs as RadixTabs } from 'radix-ui'\nimport { type PropsWithChildren, Ref } from 'react'\n\nimport { contentStyles } from './TabsContent.styles'\nimport { useTabsContext } from './TabsContext'\n\nexport interface TabsContentProps\n extends PropsWithChildren<Omit<RadixTabs.TabsContentProps, 'forceMount'>> {\n /**\n * A unique value that associates the content with a trigger.\n */\n value: string\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * Used to force mounting when more control is needed. Useful when controlling animation with React animation libraries.\n */\n forceMount?: true\n ref?: Ref<HTMLDivElement>\n}\n\nexport const TabsContent = ({\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#content\n */\n children,\n asChild = false,\n className,\n ref,\n ...rest\n}: TabsContentProps) => {\n const { forceMount } = useTabsContext()\n\n return (\n <RadixTabs.Content\n data-spark-component=\"tabs-content\"\n ref={ref}\n forceMount={forceMount || rest.forceMount}\n className={contentStyles({ className, forceMount })}\n asChild={asChild}\n {...rest}\n >\n {children}\n </RadixTabs.Content>\n )\n}\n\nTabsContent.displayName = 'Tabs.Content'\n","import { cva } from 'class-variance-authority'\n\nexport const contentStyles = cva(['w-full p-lg', 'focus-visible:u-outline-inset'], {\n variants: {\n forceMount: {\n true: 'data-[state=inactive]:hidden',\n false: '',\n },\n },\n})\n","/* eslint-disable max-lines-per-function */\nimport { ArrowVerticalLeft } from '@spark-ui/icons/ArrowVerticalLeft'\nimport { ArrowVerticalRight } from '@spark-ui/icons/ArrowVerticalRight'\nimport { Tabs as RadixTabs } from 'radix-ui'\nimport { type ReactElement, Ref, useEffect, useRef, useState } from 'react'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTabsContext } from './TabsContext'\nimport { listStyles, navigationArrowStyles, wrapperStyles } from './TabsList.styles'\nimport { useResizeObserver } from './useResizeObserver'\n\nexport interface TabsListProps extends Omit<RadixTabs.TabsListProps, 'children'> {\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * When true, keyboard navigation will loop from last tab to first, and vice versa.\n * @default false\n */\n loop?: boolean\n children: ReactElement[] | ReactElement\n ref?: Ref<HTMLDivElement>\n}\n\ntype ArrowState = 'visible' | 'hidden' | 'disabled'\n\nexport const TabsList = ({\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#list\n */\n asChild = false,\n loop = false,\n children,\n className,\n ref,\n ...rest\n}: TabsListProps) => {\n const wrapperRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef(null)\n const listRef = ref || innerRef\n const { orientation } = useTabsContext()\n\n const { width } = useResizeObserver(wrapperRef)\n\n const [arrows, setArrows] = useState<Record<'prev' | 'next', ArrowState>>({\n prev: 'hidden',\n next: 'hidden',\n })\n\n useEffect(() => {\n /**\n * Show/hide arrows\n */\n if (typeof listRef === 'function' || !listRef.current) {\n return\n }\n\n if (orientation !== 'horizontal') {\n setArrows({ prev: 'hidden', next: 'hidden' })\n } else {\n setArrows({\n prev: listRef.current.scrollWidth > listRef.current.clientWidth ? 'visible' : 'hidden',\n next: listRef.current.scrollWidth > listRef.current.clientWidth ? 'visible' : 'hidden',\n })\n }\n }, [orientation, listRef, width])\n\n useEffect(() => {\n /**\n * Enable/disable arrows\n */\n if (typeof listRef === 'function' || !listRef.current || arrows.prev === 'hidden' || loop) {\n return\n }\n\n const toggleArrowsVisibility = (target: HTMLDivElement) => {\n setArrows({\n prev: target.scrollLeft > 0 ? 'visible' : 'disabled',\n next: target.scrollLeft + target.clientWidth < target.scrollWidth ? 'visible' : 'disabled',\n })\n }\n\n const currentList = listRef.current\n\n toggleArrowsVisibility(currentList)\n\n currentList.addEventListener('scroll', ({ target }) =>\n toggleArrowsVisibility(target as HTMLDivElement)\n )\n\n return () =>\n currentList.removeEventListener('scroll', ({ target }) =>\n toggleArrowsVisibility(target as HTMLDivElement)\n )\n }, [listRef, arrows.prev, loop])\n\n const handlePrevClick = () => {\n if (typeof listRef === 'function' || !listRef.current) {\n return\n }\n\n const shouldLoopForward = loop && listRef.current.scrollLeft <= 0\n\n listRef.current.scrollTo({\n left: shouldLoopForward\n ? listRef.current.scrollLeft + listRef.current.scrollWidth - listRef.current.clientWidth\n : listRef.current.scrollLeft - listRef.current.clientWidth,\n behavior: 'smooth',\n })\n }\n\n const handleNextClick = () => {\n if (typeof listRef === 'function' || !listRef.current) {\n return\n }\n\n const shouldLoopBackward =\n loop &&\n listRef.current.scrollLeft + listRef.current.clientWidth >= listRef.current.scrollWidth\n\n listRef.current.scrollTo({\n left: shouldLoopBackward ? 0 : listRef.current.scrollLeft + listRef.current.clientWidth,\n behavior: 'smooth',\n })\n }\n\n return (\n <div className={wrapperStyles({ className })} ref={wrapperRef}>\n {arrows.prev !== 'hidden' && (\n <Button\n shape=\"square\"\n intent=\"surface\"\n size=\"sm\"\n className={navigationArrowStyles()}\n onClick={handlePrevClick}\n disabled={arrows.prev === 'disabled'}\n aria-label=\"Scroll left\"\n >\n <Icon>\n <ArrowVerticalLeft />\n </Icon>\n </Button>\n )}\n\n <RadixTabs.List\n data-spark-component=\"tabs-list\"\n ref={listRef}\n className={listStyles()}\n asChild={asChild}\n loop={loop}\n {...rest}\n >\n {children}\n </RadixTabs.List>\n\n {arrows.next !== 'hidden' && (\n <Button\n shape=\"square\"\n intent=\"surface\"\n size=\"sm\"\n className={navigationArrowStyles()}\n onClick={handleNextClick}\n disabled={arrows.next === 'disabled'}\n aria-label=\"Scroll right\"\n >\n <Icon>\n <ArrowVerticalRight />\n </Icon>\n </Button>\n )}\n </div>\n )\n}\n\nTabsList.displayName = 'Tabs.List'\n","import { cva } from 'class-variance-authority'\n\nexport const wrapperStyles = cva(['relative flex'])\n\nexport const listStyles = cva([\n 'flex w-full',\n 'data-[orientation=horizontal]:flex-row',\n 'data-[orientation=vertical]:flex-col',\n 'overflow-y-hidden u-no-scrollbar data-[orientation=vertical]:overflow-x-hidden',\n 'after:flex after:shrink after:grow after:border-outline',\n 'data-[orientation=horizontal]:after:border-b-sm',\n 'data-[orientation=vertical]:after:border-r-sm',\n])\n\nexport const navigationArrowStyles = cva([\n 'h-auto! flex-none',\n 'border-b-sm border-outline',\n 'outline-hidden',\n 'focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset!',\n])\n","import { type RefObject, useEffect, useRef, useState } from 'react'\n\ninterface Size {\n width?: number\n height?: number\n}\n\ntype ResizeCallback = (entry?: ResizeObserverEntry) => void\n\nexport const useResizeObserver = <T extends HTMLElement>(\n target: RefObject<T | null> | T | null,\n onResize?: ResizeCallback\n): Size => {\n const [size, setSize] = useState<Size>({ width: undefined, height: undefined })\n const resizeObserverRef = useRef<ResizeObserver>(null)\n const resizeCallbackRef = useRef<ResizeCallback | undefined>(onResize)\n\n useEffect(() => {\n resizeCallbackRef.current = onResize\n }, [onResize])\n\n useEffect(() => {\n const targetElm = target && 'current' in target ? target.current : target\n if (!targetElm || resizeObserverRef.current) {\n return\n }\n\n resizeObserverRef.current = new ResizeObserver(([entry]) => {\n const { inlineSize: width, blockSize: height } = entry?.borderBoxSize?.[0] ?? {}\n resizeCallbackRef.current?.(entry)\n\n setSize({ width, height })\n })\n\n resizeObserverRef.current.observe(targetElm as unknown as HTMLElement)\n\n return () => {\n resizeObserverRef.current &&\n resizeObserverRef.current.unobserve(targetElm as unknown as HTMLElement)\n }\n }, [target, resizeObserverRef, resizeCallbackRef])\n\n return size\n}\n","import { Tabs as RadixTabs } from 'radix-ui'\nimport { type FocusEvent, Ref } from 'react'\n\nimport { useTabsContext } from './TabsContext'\nimport { triggerVariants } from './TabsTrigger.styles'\n\nexport interface TabsTriggerProps extends RadixTabs.TabsTriggerProps {\n /**\n * A unique value that associates the trigger with a content.\n */\n value: string\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * When true, prevents the user from interacting with the tab.\n * @default false\n */\n disabled?: boolean\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const TabsTrigger = ({\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#trigger\n */\n asChild = false,\n value,\n disabled = false,\n children,\n className,\n ref,\n ...rest\n}: TabsTriggerProps) => {\n const { intent, size } = useTabsContext()\n\n const scrollToFocusedElement = ({ target }: FocusEvent<HTMLButtonElement>) =>\n target.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n })\n\n return (\n <RadixTabs.Trigger\n data-spark-component=\"tabs-trigger\"\n ref={ref}\n className={triggerVariants({ intent, size, className })}\n asChild={asChild}\n disabled={disabled}\n value={value}\n onFocus={scrollToFocusedElement}\n {...rest}\n >\n {children}\n </RadixTabs.Trigger>\n )\n}\n\nTabsTrigger.displayName = 'Tabs.Trigger'\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nexport const triggerVariants = cva(\n [\n 'px-md',\n 'relative flex flex-none items-center',\n 'border-outline',\n 'hover:not-disabled:bg-surface-hovered',\n 'after:absolute',\n 'data-[state=inactive]:not-disabled:cursor-pointer',\n 'data-[orientation=horizontal]:border-b-sm data-[orientation=horizontal]:after:inset-x-0 data-[orientation=horizontal]:after:bottom-[-1px] data-[orientation=horizontal]:after:h-sz-2',\n 'data-[orientation=vertical]:border-r-sm data-[orientation=vertical]:after:inset-y-0 data-[orientation=vertical]:after:right-[-1px] data-[orientation=vertical]:after:w-sz-2',\n 'focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset',\n 'disabled:cursor-not-allowed disabled:opacity-dim-3',\n 'gap-md [&>*:first-child]:ml-md [&>*:last-child]:mr-md',\n '[&>svg:last-child:first-child]:mx-auto',\n ],\n {\n variants: {\n /**\n * Change the color scheme of the tabs\n * @default basic\n */\n intent: makeVariants<'intent', ['main', 'support', 'basic']>({\n main: ['data-[state=active]:text-main data-[state=active]:after:bg-main'],\n support: ['data-[state=active]:text-support data-[state=active]:after:bg-support'],\n basic: ['data-[state=active]:text-basic data-[state=active]:after:bg-basic'],\n }),\n /**\n * Change the size of the tabs\n * @default md\n */\n size: {\n xs: ['h-sz-32 min-w-sz-32 text-caption'],\n sm: ['h-sz-36 min-w-sz-36 text-body-2'],\n md: ['h-sz-40 min-w-sz-40 text-body-1'],\n },\n },\n defaultVariants: {\n intent: 'basic',\n size: 'md',\n },\n }\n)\n\nexport type TabsTriggerVariantsProps = VariantProps<typeof triggerVariants>\n","import { Tabs as Root } from './Tabs'\nimport { TabsContent as Content } from './TabsContent'\nimport { TabsList as List } from './TabsList'\nimport { TabsTrigger as Trigger } from './TabsTrigger'\n\nexport const Tabs: typeof Root & {\n List: typeof List\n Trigger: typeof Trigger\n Content: typeof Content\n} = Object.assign(Root, {\n List,\n Trigger,\n Content,\n})\n\nTabs.displayName = 'Tabs'\nList.displayName = 'Tabs.List'\nTrigger.displayName = 'Tabs.Trigger'\nContent.displayName = 'Tabs.Content'\n\nexport { type TabsContentProps } from './TabsContent'\nexport { type TabsListProps } from './TabsList'\nexport { type TabsProps, type TabsRootProps } from './Tabs'\nexport { type TabsTriggerProps } from './TabsTrigger'\n"],"mappings":"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","names":["RadixTabs","cva","jsx","RadixTabs","RadixTabs","useEffect","useRef","useState","cva","jsx","useRef","useState","useEffect","RadixTabs","RadixTabs","cva","jsx","RadixTabs","Tabs"]}
|
|
1
|
+
{"version":3,"sources":["../../src/tabs/Tabs.tsx","../../src/tabs/TabsContext.tsx","../../src/tabs/TabsRoot.styles.ts","../../src/tabs/TabsContent.tsx","../../src/tabs/TabsContent.styles.ts","../../src/tabs/TabsList.tsx","../../src/tabs/TabsList.styles.ts","../../src/tabs/useResizeObserver.ts","../../src/tabs/TabsTrigger.tsx","../../src/tabs/TabsTrigger.styles.ts","../../src/tabs/index.ts"],"sourcesContent":["import { Tabs as RadixTabs } from 'radix-ui'\nimport { type PropsWithChildren, Ref } from 'react'\n\nimport { TabsContext } from './TabsContext'\nimport { rootStyles } from './TabsRoot.styles'\nimport type { TabsTriggerVariantsProps } from './TabsTrigger.styles'\n\nexport interface TabsProps\n extends Omit<RadixTabs.TabsProps, 'activationMode'>,\n PropsWithChildren<TabsTriggerVariantsProps> {\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * Whether to keep inactive tabs content in the DOM.\n * @default false\n */\n forceMount?: boolean\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * @deprecated\n */\nexport type TabsRootProps = TabsProps\n\nexport const Tabs = ({\n intent = 'basic',\n size = 'md',\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#root\n */\n asChild = false,\n forceMount = false,\n orientation = 'horizontal',\n children,\n className,\n ref,\n ...rest\n}: TabsProps) => {\n return (\n <TabsContext.Provider\n value={{\n intent,\n size,\n orientation,\n forceMount,\n }}\n >\n <RadixTabs.Root\n ref={ref}\n asChild={asChild}\n orientation={orientation}\n className={rootStyles({ className })}\n data-spark-component=\"tabs\"\n activationMode=\"automatic\"\n {...rest}\n >\n {children}\n </RadixTabs.Root>\n </TabsContext.Provider>\n )\n}\n\nTabs.displayName = 'Tabs'\n","import { Tabs as RadixTabs } from 'radix-ui'\nimport { createContext, useContext } from 'react'\n\nimport type { TabsTriggerVariantsProps } from './TabsTrigger.styles'\n\nexport type TabsContextInterface = TabsTriggerVariantsProps &\n Pick<RadixTabs.TabsProps, 'orientation'> & { forceMount?: boolean }\n\nexport const TabsContext = createContext<TabsContextInterface>({} as TabsContextInterface)\n\nexport const useTabsContext = () => {\n const context = useContext(TabsContext)\n\n if (!context) {\n throw Error('useTabsContext must be used within a TabsContext Provider')\n }\n\n return context\n}\n","import { cva } from 'class-variance-authority'\n\nexport const rootStyles = cva([\n 'flex',\n 'data-[orientation=horizontal]:flex-col',\n 'data-[orientation=vertical]:flex-row',\n 'max-w-full',\n])\n","import { Tabs as RadixTabs } from 'radix-ui'\nimport { type PropsWithChildren, Ref } from 'react'\n\nimport { contentStyles } from './TabsContent.styles'\nimport { useTabsContext } from './TabsContext'\n\nexport interface TabsContentProps\n extends PropsWithChildren<Omit<RadixTabs.TabsContentProps, 'forceMount'>> {\n /**\n * A unique value that associates the content with a trigger.\n */\n value: string\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * Used to force mounting when more control is needed. Useful when controlling animation with React animation libraries.\n */\n forceMount?: true\n ref?: Ref<HTMLDivElement>\n}\n\nexport const TabsContent = ({\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#content\n */\n children,\n asChild = false,\n className,\n ref,\n ...rest\n}: TabsContentProps) => {\n const { forceMount } = useTabsContext()\n\n return (\n <RadixTabs.Content\n data-spark-component=\"tabs-content\"\n ref={ref}\n forceMount={forceMount || rest.forceMount}\n className={contentStyles({ className, forceMount })}\n asChild={asChild}\n {...rest}\n >\n {children}\n </RadixTabs.Content>\n )\n}\n\nTabsContent.displayName = 'Tabs.Content'\n","import { cva } from 'class-variance-authority'\n\nexport const contentStyles = cva(['w-full p-lg', 'focus-visible:u-outline-inset'], {\n variants: {\n forceMount: {\n true: 'data-[state=inactive]:hidden',\n false: '',\n },\n },\n})\n","/* eslint-disable max-lines-per-function */\nimport { ArrowVerticalLeft } from '@spark-ui/icons/ArrowVerticalLeft'\nimport { ArrowVerticalRight } from '@spark-ui/icons/ArrowVerticalRight'\nimport { Tabs as RadixTabs } from 'radix-ui'\nimport { type ReactElement, Ref, useEffect, useRef, useState } from 'react'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport { useTabsContext } from './TabsContext'\nimport { listStyles, navigationArrowStyles, wrapperStyles } from './TabsList.styles'\nimport { useResizeObserver } from './useResizeObserver'\n\nexport interface TabsListProps extends Omit<RadixTabs.TabsListProps, 'children'> {\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * When true, keyboard navigation will loop from last tab to first, and vice versa.\n * @default false\n */\n loop?: boolean\n children: ReactElement[] | ReactElement\n ref?: Ref<HTMLDivElement>\n}\n\ntype ArrowState = 'visible' | 'hidden' | 'disabled'\n\nexport const TabsList = ({\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#list\n */\n asChild = false,\n loop = false,\n children,\n className,\n ref,\n ...rest\n}: TabsListProps) => {\n const wrapperRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef(null)\n const listRef = ref || innerRef\n const { orientation } = useTabsContext()\n\n const { width } = useResizeObserver(wrapperRef)\n\n const [arrows, setArrows] = useState<Record<'prev' | 'next', ArrowState>>({\n prev: 'hidden',\n next: 'hidden',\n })\n\n useEffect(() => {\n /**\n * Show/hide arrows\n */\n if (typeof listRef === 'function' || !listRef.current) {\n return\n }\n\n if (orientation !== 'horizontal') {\n setArrows({ prev: 'hidden', next: 'hidden' })\n } else {\n setArrows({\n prev: listRef.current.scrollWidth > listRef.current.clientWidth ? 'visible' : 'hidden',\n next: listRef.current.scrollWidth > listRef.current.clientWidth ? 'visible' : 'hidden',\n })\n }\n }, [orientation, listRef, width])\n\n useEffect(() => {\n /**\n * Enable/disable arrows\n */\n if (typeof listRef === 'function' || !listRef.current || arrows.prev === 'hidden' || loop) {\n return\n }\n\n const toggleArrowsVisibility = (target: HTMLDivElement) => {\n setArrows({\n prev: target.scrollLeft > 0 ? 'visible' : 'disabled',\n next: target.scrollLeft + target.clientWidth < target.scrollWidth ? 'visible' : 'disabled',\n })\n }\n\n const currentList = listRef.current\n\n toggleArrowsVisibility(currentList)\n\n currentList.addEventListener('scroll', ({ target }) =>\n toggleArrowsVisibility(target as HTMLDivElement)\n )\n\n return () =>\n currentList.removeEventListener('scroll', ({ target }) =>\n toggleArrowsVisibility(target as HTMLDivElement)\n )\n }, [listRef, arrows.prev, loop])\n\n const handlePrevClick = () => {\n if (typeof listRef === 'function' || !listRef.current) {\n return\n }\n\n const shouldLoopForward = loop && listRef.current.scrollLeft <= 0\n\n listRef.current.scrollTo({\n left: shouldLoopForward\n ? listRef.current.scrollLeft + listRef.current.scrollWidth - listRef.current.clientWidth\n : listRef.current.scrollLeft - listRef.current.clientWidth,\n behavior: 'smooth',\n })\n }\n\n const handleNextClick = () => {\n if (typeof listRef === 'function' || !listRef.current) {\n return\n }\n\n const shouldLoopBackward =\n loop &&\n listRef.current.scrollLeft + listRef.current.clientWidth >= listRef.current.scrollWidth\n\n listRef.current.scrollTo({\n left: shouldLoopBackward ? 0 : listRef.current.scrollLeft + listRef.current.clientWidth,\n behavior: 'smooth',\n })\n }\n\n return (\n <div className={wrapperStyles({ className })} ref={wrapperRef}>\n {arrows.prev !== 'hidden' && (\n <Button\n shape=\"square\"\n intent=\"surface\"\n size=\"sm\"\n className={navigationArrowStyles()}\n onClick={handlePrevClick}\n disabled={arrows.prev === 'disabled'}\n aria-label=\"Scroll left\"\n >\n <Icon>\n <ArrowVerticalLeft />\n </Icon>\n </Button>\n )}\n\n <RadixTabs.List\n data-spark-component=\"tabs-list\"\n ref={listRef}\n className={listStyles()}\n asChild={asChild}\n loop={loop}\n {...rest}\n >\n {children}\n </RadixTabs.List>\n\n {arrows.next !== 'hidden' && (\n <Button\n shape=\"square\"\n intent=\"surface\"\n size=\"sm\"\n className={navigationArrowStyles()}\n onClick={handleNextClick}\n disabled={arrows.next === 'disabled'}\n aria-label=\"Scroll right\"\n >\n <Icon>\n <ArrowVerticalRight />\n </Icon>\n </Button>\n )}\n </div>\n )\n}\n\nTabsList.displayName = 'Tabs.List'\n","import { cva } from 'class-variance-authority'\n\nexport const wrapperStyles = cva(['relative flex'])\n\nexport const listStyles = cva([\n 'flex w-full',\n 'data-[orientation=horizontal]:flex-row',\n 'data-[orientation=vertical]:flex-col',\n 'overflow-y-hidden u-no-scrollbar data-[orientation=vertical]:overflow-x-hidden',\n 'after:flex after:shrink after:grow after:border-outline',\n 'data-[orientation=horizontal]:after:border-b-sm',\n 'data-[orientation=vertical]:after:border-r-sm',\n])\n\nexport const navigationArrowStyles = cva([\n 'h-auto! flex-none',\n 'border-b-sm border-outline',\n 'outline-hidden',\n 'focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset!',\n])\n","import { type RefObject, useEffect, useRef, useState } from 'react'\n\ninterface Size {\n width?: number\n height?: number\n}\n\ntype ResizeCallback = (entry?: ResizeObserverEntry) => void\n\nexport const useResizeObserver = <T extends HTMLElement>(\n target: RefObject<T | null> | T | null,\n onResize?: ResizeCallback\n): Size => {\n const [size, setSize] = useState<Size>({ width: undefined, height: undefined })\n const resizeObserverRef = useRef<ResizeObserver>(null)\n const resizeCallbackRef = useRef<ResizeCallback | undefined>(onResize)\n\n useEffect(() => {\n resizeCallbackRef.current = onResize\n }, [onResize])\n\n useEffect(() => {\n const targetElm = target && 'current' in target ? target.current : target\n if (!targetElm || resizeObserverRef.current) {\n return\n }\n\n resizeObserverRef.current = new ResizeObserver(([entry]) => {\n const { inlineSize: width, blockSize: height } = entry?.borderBoxSize?.[0] ?? {}\n resizeCallbackRef.current?.(entry)\n\n setSize({ width, height })\n })\n\n resizeObserverRef.current.observe(targetElm as unknown as HTMLElement)\n\n return () => {\n resizeObserverRef.current &&\n resizeObserverRef.current.unobserve(targetElm as unknown as HTMLElement)\n }\n }, [target, resizeObserverRef, resizeCallbackRef])\n\n return size\n}\n","import { Tabs as RadixTabs } from 'radix-ui'\nimport { type FocusEvent, Ref } from 'react'\n\nimport { useTabsContext } from './TabsContext'\nimport { triggerVariants } from './TabsTrigger.styles'\n\nexport interface TabsTriggerProps extends RadixTabs.TabsTriggerProps {\n /**\n * A unique value that associates the trigger with a content.\n */\n value: string\n /**\n * Change the component to the HTML tag or custom component of the only child. This will merge the original component props with the props of the supplied element/component and change the underlying DOM node.\n * @default false\n */\n asChild?: boolean\n /**\n * When true, prevents the user from interacting with the tab.\n * @default false\n */\n disabled?: boolean\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const TabsTrigger = ({\n /**\n * Default Radix Primitive values\n * see https://www.radix-ui.com/docs/primitives/components/tabs#trigger\n */\n asChild = false,\n value,\n disabled = false,\n children,\n className,\n ref,\n ...rest\n}: TabsTriggerProps) => {\n const { intent, size } = useTabsContext()\n\n const scrollToFocusedElement = ({ target }: FocusEvent<HTMLButtonElement>) =>\n target.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n })\n\n return (\n <RadixTabs.Trigger\n data-spark-component=\"tabs-trigger\"\n ref={ref}\n className={triggerVariants({ intent, size, className })}\n asChild={asChild}\n disabled={disabled}\n value={value}\n onFocus={scrollToFocusedElement}\n {...rest}\n >\n {children}\n </RadixTabs.Trigger>\n )\n}\n\nTabsTrigger.displayName = 'Tabs.Trigger'\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nexport const triggerVariants = cva(\n [\n 'px-md',\n 'relative flex flex-none items-center',\n 'border-outline',\n 'hover:not-disabled:bg-surface-hovered',\n 'after:absolute',\n 'data-[state=active]:font-bold',\n 'data-[state=inactive]:not-disabled:cursor-pointer',\n 'data-[orientation=horizontal]:border-b-sm data-[orientation=horizontal]:after:inset-x-0 data-[orientation=horizontal]:after:bottom-[-1px] data-[orientation=horizontal]:after:h-sz-2',\n 'data-[orientation=vertical]:border-r-sm data-[orientation=vertical]:after:inset-y-0 data-[orientation=vertical]:after:right-[-1px] data-[orientation=vertical]:after:w-sz-2',\n 'focus-visible:border-none focus-visible:bg-surface-hovered focus-visible:u-outline-inset',\n 'disabled:cursor-not-allowed disabled:opacity-dim-3',\n 'gap-md [&>*:first-child]:ml-md [&>*:last-child]:mr-md',\n '[&>svg:last-child:first-child]:mx-auto',\n ],\n {\n variants: {\n /**\n * Change the color scheme of the tabs\n * @default basic\n */\n intent: makeVariants<'intent', ['main', 'support', 'basic']>({\n main: ['data-[state=active]:text-main data-[state=active]:after:bg-main'],\n support: ['data-[state=active]:text-support data-[state=active]:after:bg-support'],\n basic: ['data-[state=active]:text-basic data-[state=active]:after:bg-basic'],\n }),\n /**\n * Change the size of the tabs\n * @default md\n */\n size: {\n xs: ['h-sz-32 min-w-sz-32 text-caption'],\n sm: ['h-sz-36 min-w-sz-36 text-body-2'],\n md: ['h-sz-40 min-w-sz-40 text-body-1'],\n },\n },\n defaultVariants: {\n intent: 'basic',\n size: 'md',\n },\n }\n)\n\nexport type TabsTriggerVariantsProps = VariantProps<typeof triggerVariants>\n","import { Tabs as Root } from './Tabs'\nimport { TabsContent as Content } from './TabsContent'\nimport { TabsList as List } from './TabsList'\nimport { TabsTrigger as Trigger } from './TabsTrigger'\n\nexport const Tabs: typeof Root & {\n List: typeof List\n Trigger: typeof Trigger\n Content: typeof Content\n} = Object.assign(Root, {\n List,\n Trigger,\n Content,\n})\n\nTabs.displayName = 'Tabs'\nList.displayName = 'Tabs.List'\nTrigger.displayName = 'Tabs.Trigger'\nContent.displayName = 'Tabs.Content'\n\nexport { type TabsContentProps } from './TabsContent'\nexport { type TabsListProps } from './TabsList'\nexport { type TabsProps, type TabsRootProps } from './Tabs'\nexport { type TabsTriggerProps } from './TabsTrigger'\n"],"mappings":"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","names":["RadixTabs","cva","jsx","RadixTabs","RadixTabs","useEffect","useRef","useState","cva","jsx","useRef","useState","useEffect","RadixTabs","RadixTabs","cva","jsx","RadixTabs","Tabs"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spark-ui/components",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.8.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Spark (Leboncoin design system) components.",
|
|
6
6
|
"exports": {
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
"@react-aria/toast": "^3.0.0-beta.18",
|
|
50
50
|
"@react-stately/numberfield": "3.9.11",
|
|
51
51
|
"@react-stately/toast": "^3.0.0-beta.7",
|
|
52
|
-
"@spark-ui/hooks": "^10.
|
|
53
|
-
"@spark-ui/icons": "^10.
|
|
54
|
-
"@spark-ui/internal-utils": "^10.
|
|
52
|
+
"@spark-ui/hooks": "^10.8.0",
|
|
53
|
+
"@spark-ui/icons": "^10.8.0",
|
|
54
|
+
"@spark-ui/internal-utils": "^10.8.0",
|
|
55
55
|
"@zag-js/accordion": "1.14.0",
|
|
56
56
|
"@zag-js/collapsible": "1.14.0",
|
|
57
57
|
"@zag-js/pagination": "1.14.0",
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
"url": "https://github.com/leboncoin/spark-web/issues?q=is%3Aopen+label%3A%22Component%3A+button%22"
|
|
81
81
|
},
|
|
82
82
|
"homepage": "https://sparkui.vercel.app",
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "5bc493cee87733716465a31a36946f9ecd58a008"
|
|
84
84
|
}
|