@exem-ui/react 0.3.4-next.20260528063039 → 0.3.4-next.20260608013540
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/dist/{chunk-IYFBJHXJ.js → chunk-3OTGQNHL.js} +6 -6
- package/dist/{chunk-IYFBJHXJ.js.map → chunk-3OTGQNHL.js.map} +1 -1
- package/dist/{chunk-XOYGUVKA.mjs → chunk-JXUDLY4B.mjs} +6 -6
- package/dist/{chunk-XOYGUVKA.mjs.map → chunk-JXUDLY4B.mjs.map} +1 -1
- package/dist/flat/index.js +5 -5
- package/dist/flat/index.mjs +1 -1
- package/dist/index.js +23 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -21
- package/LICENSE +0 -190
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/segment/Segment.tsx","../src/flat/FlatSegment.tsx","../src/overlayList/overlayListVariants.ts","../src/input/inputVariants.ts","../src/input/selectVariants.ts","../src/input/Select.tsx","../src/flat/FlatSelect.tsx","../src/tooltip/Tooltip.tsx","../src/flat/FlatTooltip.tsx"],"names":["jsx","cn","cva","createContext","useContext","forwardRef","jsxs"],"mappings":"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","file":"chunk-XOYGUVKA.mjs","sourcesContent":["import { cn, cva } from '@exem-ui/core/utils';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport type React from 'react';\nimport { createContext, forwardRef, useContext } from 'react';\n\ntype SegmentSize = 'small' | 'medium' | 'large';\n\ntype SegmentContextValue = {\n size: SegmentSize;\n};\n\ntype SegmentListProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>;\n\ntype SegmentItemProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> & {\n /** 텍스트 왼쪽에 표시할 아이콘 요소 */\n leftIcon?: React.ReactElement<{ className?: string }>;\n};\n\ntype SegmentContentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>;\n\ntype SegmentRootProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & {\n /**\n * 세그먼트 크기\n * @default 'medium'\n */\n size?: SegmentSize;\n};\n\ntype SegmentComponent = React.ForwardRefExoticComponent<\n SegmentRootProps & React.RefAttributes<React.ElementRef<typeof TabsPrimitive.Root>>\n> & {\n List: React.ForwardRefExoticComponent<SegmentListProps>;\n Item: React.ForwardRefExoticComponent<SegmentItemProps>;\n Content: React.ForwardRefExoticComponent<SegmentContentProps>;\n};\n\nconst segmentListVariants = cva(\n 'inline-flex items-center overflow-hidden rounded-medium bg-elevation-elevation-2',\n {\n variants: {\n size: {\n small: 'h-7 gap-0 p-0.5',\n medium: 'h-8 gap-0 p-0.5',\n large: 'h-10 gap-0 p-0.5',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n\nconst segmentItemVariants = cva(\n [\n 'flex flex-1 items-center justify-center rounded-weak',\n 'focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed',\n 'data-[state=active]:bg-component-segmentedOption data-[state=active]:text-text-primary data-[state=active]:shadow-weak',\n 'data-[state=inactive]:text-text-tertiary data-[state=inactive]:disabled:text-text-disabled',\n 'transition-colors duration-200 ease-in-out',\n ],\n {\n variants: {\n size: {\n small: 'h-6 gap-0.5 text-body-3 font-medium',\n medium: 'h-7 gap-1 text-body-2 font-medium',\n large: 'h-9 gap-1.5 text-body-2 font-medium',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n\nconst segmentIconVariants = cva('flex items-center justify-center', {\n variants: {\n size: {\n small: 'size-4',\n medium: 'size-4',\n large: 'size-5',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n\nconst SegmentContext = createContext<SegmentContextValue | undefined>(undefined);\n\nconst useSegmentContext = () => {\n const context = useContext(SegmentContext);\n if (!context) {\n throw new Error('Segment components must be used within a Segment');\n }\n return context;\n};\n\n/**\n * 탭 형태의 세그먼트 컨트롤 컴포넌트입니다.\n * Compound Component 패턴으로 `Segment.List`, `Segment.Item`, `Segment.Content`와 함께 사용합니다.\n *\n * @example\n * ```tsx\n * <Segment defaultValue=\"tab1\" size=\"medium\">\n * <Segment.List>\n * <Segment.Item value=\"tab1\">첫 번째</Segment.Item>\n * <Segment.Item value=\"tab2\">두 번째</Segment.Item>\n * </Segment.List>\n * <Segment.Content value=\"tab1\">첫 번째 내용</Segment.Content>\n * <Segment.Content value=\"tab2\">두 번째 내용</Segment.Content>\n * </Segment>\n * ```\n *\n * @see {@link SegmentRootProps} 루트 props 상세\n * @see {@link SegmentItemProps} 아이템 props 상세\n */\nconst Segment = forwardRef<React.ElementRef<typeof TabsPrimitive.Root>, SegmentRootProps>(\n ({ size = 'medium', children, ...props }, ref) => (\n <SegmentContext.Provider value={{ size }}>\n <TabsPrimitive.Root ref={ref} {...props}>\n {children}\n </TabsPrimitive.Root>\n </SegmentContext.Provider>\n ),\n) as SegmentComponent;\n\nSegment.List = forwardRef<React.ElementRef<typeof TabsPrimitive.List>, SegmentListProps>(\n ({ className, ...props }, ref) => {\n const { size } = useSegmentContext();\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(segmentListVariants({ size }), className)}\n {...props}\n />\n );\n },\n) as SegmentComponent['List'];\n\nSegment.Item = forwardRef<React.ElementRef<typeof TabsPrimitive.Trigger>, SegmentItemProps>(\n ({ className, leftIcon, children, ...props }, ref) => {\n const { size } = useSegmentContext();\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(segmentItemVariants({ size }), className)}\n {...props}\n >\n {leftIcon && <span className={cn(segmentIconVariants({ size }))}>{leftIcon}</span>}\n <span className=\"flex items-center\">{children}</span>\n </TabsPrimitive.Trigger>\n );\n },\n) as SegmentComponent['Item'];\n\nSegment.Content = forwardRef<React.ElementRef<typeof TabsPrimitive.Content>, SegmentContentProps>(\n ({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n ),\n) as SegmentComponent['Content'];\n\nSegment.displayName = 'Segment';\nSegment.List.displayName = 'Segment.List';\nSegment.Content.displayName = 'Segment.Content';\nSegment.Item.displayName = 'Segment.Item';\n\nexport { Segment };\nexport type {\n SegmentComponent,\n SegmentRootProps,\n SegmentItemProps,\n SegmentContentProps,\n SegmentListProps,\n};\n","import type React from 'react';\nimport { Segment, type SegmentRootProps } from '../segment/Segment';\n\ntype FlatSegmentItem = Pick<\n React.ComponentPropsWithoutRef<typeof Segment.Item>,\n 'value' | 'children' | 'disabled' | 'leftIcon' | 'className'\n>;\n\ninterface FlatSegmentProps extends Omit<SegmentRootProps, 'children' | 'asChild'> {\n /** 세그먼트 아이템 배열 */\n items: FlatSegmentItem[];\n /**\n * 전체 비활성화 여부 (개별 아이템의 disabled와 OR 결합)\n * @default false\n */\n disabled?: boolean;\n}\n\n/**\n * Segment 컴포넌트의 간소화된 Flat API입니다.\n * items 배열만 전달하면 Compound Component 없이 간편하게 사용할 수 있습니다.\n *\n * @example\n * ```tsx\n * <FlatSegment\n * defaultValue=\"tab1\"\n * size=\"medium\"\n * items={[\n * { value: 'tab1', children: '첫 번째' },\n * { value: 'tab2', children: '두 번째' },\n * ]}\n * />\n * ```\n *\n * @see {@link FlatSegmentProps} props 상세\n */\nconst FlatSegment = ({ items, disabled, className, ...props }: FlatSegmentProps) => (\n <Segment {...props}>\n <Segment.List className={className}>\n {items.map((item) => (\n <Segment.Item {...item} key={item.value} disabled={disabled || item.disabled} />\n ))}\n </Segment.List>\n </Segment>\n);\n\nFlatSegment.displayName = 'FlatSegment';\n\nexport { FlatSegment };\nexport type { FlatSegmentProps, FlatSegmentItem };\n","import { cn, cva } from '@exem-ui/core/utils';\n\n/**\n * 오버레이 형태로 표시되는 리스트 UI의 공통 스타일 변형(variants)을 정의합니다.\n *\n * Select, Dropdown 등 팝업/드롭다운 형태의 리스트 컴포넌트에서 공통으로 사용되는\n * 기반 스타일 레이어입니다. 각 컴포넌트는 이 variants를 확장하거나 재사용해\n * 자체 스타일을 구성합니다.\n *\n * @example 사용처\n * - `selectVariants.ts` — Select 컴포넌트의 드롭다운 리스트\n * - `dropdownVariants.ts` — Dropdown 컴포넌트의 메뉴 리스트\n *\n * @property content - 오버레이 컨테이너 (z-index, 배경, 테두리, 그림자, 열기/닫기 애니메이션)\n * @property viewport - 아이템 목록 래퍼 (flex 컬럼, 간격, 패딩)\n * @property item - 개별 리스트 아이템 (크기 variant: xsmall | small | medium | large)\n * @property slotSize - 아이콘/체크마크 등 슬롯 영역 크기 (size variant에 따라 조정)\n */\nexport const overlayListVariants = {\n content: cn(\n 'relative z-50 min-w-[8rem] overflow-hidden rounded-medium border border-border-primary bg-background-overlay shadow-weak',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n ),\n\n viewport: cn('flex flex-col gap-0.5 p-1'),\n\n item: cva(\n 'relative flex w-full gap-0.5 cursor-pointer select-none items-center rounded-weak px-2 text-body-2 text-text-primary outline-none hover:bg-elevation-elevation-2 data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled',\n {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'h-6',\n small: 'h-7',\n medium: 'h-8',\n large: 'h-10',\n },\n },\n },\n ),\n itemText: cva('truncate flex items-center flex-1 min-w-0', {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'h-6',\n small: 'h-7',\n medium: 'h-8',\n large: 'h-10',\n },\n },\n }),\n\n slotSize: cva('shrink-0 flex items-center justify-center text-icon-primary', {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'size-4',\n small: 'size-4',\n medium: 'size-4',\n large: 'size-5',\n },\n },\n }),\n};\n","import { cva } from '@exem-ui/core/utils';\n\n// 공통 Input variants\nexport const commonInputVariants = {\n // Container variants - 전체 컴포넌트 래퍼\n container: cva('flex flex-col'),\n\n // Label variants - 라벨 텍스트\n label: cva('inline-block font-regular text-text-primary', {\n variants: {\n size: {\n xsmall: 'mb-[2px] text-body-3',\n small: 'mb-[4px] text-body-2',\n medium: 'mb-[4px] text-body-2',\n large: 'mb-[6px] text-body-1',\n },\n disabled: {\n true: 'text-text-disabled',\n },\n required: {\n true: 'after:ml-0.5 after:text-text-critical after:content-[\"*\"]',\n },\n },\n compoundVariants: [\n {\n required: true,\n disabled: true,\n className: 'after:text-text-disabled',\n },\n ],\n defaultVariants: { size: 'medium' },\n }),\n\n // Description variants - 설명 텍스트\n description: cva('mt-0.5 inline-block text-text-tertiary', {\n variants: {\n size: {\n xsmall: 'text-caption',\n small: 'text-body-3',\n medium: 'text-body-3',\n large: 'text-body-2',\n },\n error: {\n true: 'text-text-critical',\n },\n disabled: {\n true: 'text-text-disabled',\n },\n },\n compoundVariants: [\n {\n error: true,\n disabled: true,\n className: 'text-text-disabled', // disabled 우선 적용\n },\n ],\n defaultVariants: { size: 'medium' },\n }),\n\n // Icon variants - 아이콘 크기\n icon: cva('shrink-0', {\n variants: {\n size: {\n xsmall: 'size-4',\n small: 'size-4',\n medium: 'size-4',\n large: 'size-5',\n },\n },\n defaultVariants: { size: 'medium' },\n }),\n};\n\n// 공통 타입 정의\nexport type Size = 'xsmall' | 'small' | 'medium' | 'large';\nexport type Variant = 'fill' | 'line';\nexport type Icon = React.ReactElement<{ className?: string }>;\n","import { cn, cva } from '@exem-ui/core/utils';\nimport { overlayListVariants } from '../overlayList/overlayListVariants';\nimport { commonInputVariants } from './inputVariants';\n\nexport const selectVariants = {\n container: commonInputVariants.container,\n content: cn(\n overlayListVariants.content,\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n ),\n\n description: commonInputVariants.description,\n\n iconSize: overlayListVariants.slotSize,\n\n item: (props?: Parameters<typeof overlayListVariants.item>[0]) =>\n cn(overlayListVariants.item(props), 'data-[state=checked]:bg-elevation-accent'),\n\n label: commonInputVariants.label,\n\n trigger: cva(\n 'group flex w-full items-center justify-between rounded-medium outline-none disabled:cursor-not-allowed disabled:bg-elevation-elevation-2 disabled:text-text-disabled data-[state=open]:border data-[state=open]:border-border-focused [&>span]:line-clamp-1 [&[data-placeholder]]:text-text-tertiary [&_svg]:text-icon-primary',\n {\n compoundVariants: [\n {\n className:\n 'border-border-accent text-tint-foreground-sky bg-elevation-accent [&[data-placeholder]]:text-tint-foreground-sky [&_svg]:text-tint-foreground-sky',\n focus: true,\n variant: 'line',\n },\n // active + fill: 배경만 accent로 변경\n {\n className:\n 'bg-elevation-accent text-tint-foreground-sky [&[data-placeholder]]:text-tint-foreground-sky [&_svg]:text-tint-foreground-sky',\n active: true,\n variant: 'fill',\n },\n // active + line: 배경 accent + 테두리 accent\n {\n className:\n 'bg-elevation-accent border-border-accent text-tint-foreground-sky [&[data-placeholder]]:text-tint-foreground-sky [&_svg]:text-tint-foreground-sky',\n active: true,\n variant: 'line',\n },\n ],\n defaultVariants: {\n active: false,\n error: false,\n focus: false,\n size: 'medium',\n variant: 'fill',\n },\n variants: {\n active: {\n false: '',\n true: '',\n },\n error: {\n false: '',\n true: 'border !border-border-critical',\n },\n focus: {\n false: '',\n // 현재는 line 타입만 focus 가능\n true: '',\n },\n size: {\n xsmall: 'h-6 px-[4px] text-body-3',\n small: 'h-7 px-[6px] text-body-2',\n medium: 'h-8 px-[8px] text-body-2',\n large: 'h-10 px-[10px] text-body-1',\n },\n variant: {\n fill: 'bg-elevation-elevation-2',\n line: 'border-border-primary border',\n },\n },\n },\n ),\n\n triggerInner: cva('flex w-full items-center', {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'gap-0',\n small: 'gap-[2px]',\n medium: 'gap-[2px]',\n large: 'gap-[4px]',\n },\n },\n }),\n viewport: overlayListVariants.viewport,\n};\n","import { cn } from '@exem-ui/core/utils';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport * as React from 'react';\nimport { createContext, forwardRef, useContext, useId } from 'react';\nimport { ChevronDownIcon } from '../icon';\n\nimport { overlayListVariants } from '../overlayList/overlayListVariants';\nimport type { Icon, Size, Variant } from './inputVariants';\nimport { selectVariants } from './selectVariants';\n\ntype SelectContextValue = {\n size: Size;\n error: boolean;\n focus: boolean;\n active: boolean;\n disabled: boolean;\n id: string;\n variant: Variant;\n};\n\ntype SelectGroupContextValue = {\n isFirstChild: boolean;\n isLastChild: boolean;\n size?: Size;\n variant?: Variant;\n focus?: boolean;\n};\n\n/** Select 라벨 Props */\ntype SelectLabelProps = {\n children: React.ReactNode;\n required?: boolean;\n size?: Size;\n className?: string;\n};\n\n/** Select 트리거 Props */\ntype SelectTriggerProps = {\n children?: React.ReactNode;\n /** 트리거 왼쪽에 표시할 아이콘 */\n leftIcon?: Icon;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, 'children'>;\n\n/** Select Box (Trigger + Value 조합) Props */\ntype SelectBoxProps = {\n placeholder?: string;\n /** 트리거 왼쪽에 표시할 아이콘 */\n leftIcon?: Icon;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, 'children'>;\n\n/** Select 아이템 Props */\ntype SelectItemProps = {\n children?: React.ReactNode;\n /** 아이템 왼쪽에 표시할 아이콘 */\n leftIcon?: Icon;\n /** 아이템 오른쪽에 표시할 아이콘 */\n rightIcon?: Icon;\n size?: Size;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>, 'children'>;\n\ntype SelectEmptyProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\ntype SelectDescriptionProps = {\n children?: React.ReactNode;\n size?: Size;\n className?: string;\n};\n\ntype SelectGroupProps = {\n children: React.ReactNode;\n size?: Size;\n /** 셀렉트 그룹 스타일 변형 */\n variant?: Variant;\n /** 불투명 배경 (elevation-0) 사용 여부. 반투명 배경이 비쳐보이는 것을 방지합니다. */\n hasBackground?: boolean;\n className?: string;\n};\n\n/** Select 루트 Props */\ntype SelectRootProps = {\n children?: React.ReactNode;\n /** 셀렉트 크기 */\n size?: Size;\n /** 셀렉트 스타일 변형 */\n variant?: Variant;\n /** 에러 상태 */\n error?: boolean;\n /** 포커스 상태 (line variant에서만 적용) */\n focus?: boolean;\n /** 활성화 상태 (필터 적용 등 내부 상태가 활성화됨을 표시) */\n active?: boolean;\n /** 비활성화 상태 */\n disabled?: boolean;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root>, 'disabled' | 'children'>;\n\ntype SelectListProps = Omit<\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>,\n 'position'\n>;\n\ntype SelectComponent = React.ForwardRefExoticComponent<\n SelectRootProps & React.RefAttributes<HTMLDivElement>\n> & {\n Label: React.ForwardRefExoticComponent<SelectLabelProps & React.RefAttributes<HTMLLabelElement>>;\n Trigger: React.ForwardRefExoticComponent<\n SelectTriggerProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Trigger>>\n >;\n Box: React.ForwardRefExoticComponent<\n SelectBoxProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Trigger>>\n >;\n Value: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Value> &\n React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Value>>\n >;\n List: React.ForwardRefExoticComponent<\n SelectListProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Content>>\n >;\n Item: React.ForwardRefExoticComponent<\n SelectItemProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Item>>\n >;\n Empty: React.ForwardRefExoticComponent<SelectEmptyProps & React.RefAttributes<HTMLDivElement>>;\n Description: React.ForwardRefExoticComponent<\n SelectDescriptionProps & React.RefAttributes<HTMLDivElement>\n >;\n Group: React.ForwardRefExoticComponent<SelectGroupProps & React.RefAttributes<HTMLDivElement>>;\n};\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nconst useSelectContext = () => {\n const context = useContext(SelectContext);\n if (!context) {\n throw new Error('Select components must be used within a Select');\n }\n return context;\n};\n\nconst SelectGroupContext = createContext<SelectGroupContextValue | null>(null);\n\nconst useSelectGroupContext = () => {\n return useContext(SelectGroupContext);\n};\n\nconst Select = forwardRef<HTMLDivElement, SelectRootProps>(\n (\n {\n children,\n size = 'medium',\n variant = 'fill',\n error = false,\n disabled = false,\n focus = false,\n active = false,\n className,\n ...selectProps\n },\n ref,\n ) => {\n const uniqueId = useId();\n const id = `select-${uniqueId}`;\n\n return (\n <SelectContext.Provider value={{ active, disabled, error, focus, id, size, variant }}>\n <div ref={ref} className={cn(selectVariants.container(), className)}>\n <SelectPrimitive.Root disabled={disabled} {...selectProps}>\n {children}\n </SelectPrimitive.Root>\n </div>\n </SelectContext.Provider>\n );\n },\n) as SelectComponent;\n\nSelect.Value = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Value>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Value>\n>(({ className, children, ...props }, ref) => {\n return (\n <SelectPrimitive.Value ref={ref} className={className} {...props}>\n {children}\n </SelectPrimitive.Value>\n );\n}) as SelectComponent['Value'];\n\nSelect.Trigger = forwardRef<React.ComponentRef<typeof SelectPrimitive.Trigger>, SelectTriggerProps>(\n ({ className, children, leftIcon, ...props }, ref) => {\n const { size, error, id, variant, focus, active } = useSelectContext();\n const groupContext = useSelectGroupContext();\n\n const groupClasses = groupContext\n ? cn('rounded-none border-0', {\n 'rounded-l-medium': groupContext.isFirstChild,\n 'rounded-r-medium': groupContext.isLastChild,\n // line variant: group이 외곽 border를 제공하므로, open 시 border 대신 inset ring 사용\n 'data-[state=open]:border-0 data-[state=open]:ring-1 data-[state=open]:ring-inset data-[state=open]:ring-border-focused':\n variant === 'line',\n })\n : undefined;\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n id={id}\n data-slot=\"select-trigger\"\n className={cn(\n selectVariants.trigger({ active, error, focus, size, variant }),\n groupClasses,\n className,\n )}\n {...props}\n >\n <div className={cn(selectVariants.triggerInner({ size }))}>\n {leftIcon && (\n <span\n className={cn(\n selectVariants.iconSize({ size }),\n 'flex items-center justify-center group-disabled:text-icon-disabled',\n )}\n >\n {leftIcon}\n </span>\n )}\n <div className=\"min-w-0 flex-1 truncate text-left\">{children}</div>\n <ChevronDownIcon\n type=\"regular\"\n className={cn(\n selectVariants.iconSize({ size }),\n 'transition-transform duration-200 group-data-[state=open]:rotate-180',\n 'group-disabled:text-icon-disabled',\n )}\n />\n </div>\n </SelectPrimitive.Trigger>\n );\n },\n) as SelectComponent['Trigger'];\n\nSelect.Box = forwardRef<React.ComponentRef<typeof SelectPrimitive.Trigger>, SelectBoxProps>(\n ({ placeholder, leftIcon, className, ...props }, ref) => {\n return (\n <Select.Trigger ref={ref} leftIcon={leftIcon} className={className} {...props}>\n <Select.Value placeholder={placeholder} />\n </Select.Trigger>\n );\n },\n) as SelectComponent['Box'];\n\nSelect.List = forwardRef<React.ComponentRef<typeof SelectPrimitive.Content>, SelectListProps>(\n ({ className, children, ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n data-slot=\"select-content\"\n className={cn(selectVariants.content, 'max-h-60 ', className)}\n position=\"popper\"\n {...props}\n >\n <SelectPrimitive.Viewport\n data-slot=\"select-viewport\"\n className={cn(\n selectVariants.viewport,\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n ),\n) as SelectComponent['List'];\n\nSelect.Label = forwardRef<HTMLLabelElement, SelectLabelProps>(\n ({ children, required = false, size: sizeProp, className }, ref) => {\n const { size: contextSize, disabled, id } = useSelectContext();\n const groupContext = useSelectGroupContext();\n const size = sizeProp ?? groupContext?.size ?? contextSize;\n\n return (\n <label\n ref={ref}\n htmlFor={id}\n className={cn(selectVariants.label({ disabled, required, size }), className)}\n >\n {children}\n </label>\n );\n },\n) as SelectComponent['Label'];\n\nSelect.Item = forwardRef<React.ComponentRef<typeof SelectPrimitive.Item>, SelectItemProps>(\n ({ className, children, leftIcon, rightIcon, size: sizeProp, ...props }, ref) => {\n const { size: contextSize } = useSelectContext();\n const groupContext = useSelectGroupContext();\n const size = sizeProp ?? groupContext?.size ?? contextSize;\n\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n ref={ref}\n className={cn(selectVariants.item({ size }), className)}\n {...props}\n >\n {leftIcon && <div className={overlayListVariants.slotSize({ size })}>{leftIcon}</div>}\n <div className={overlayListVariants.itemText({ size })}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </div>\n {rightIcon && <div className={overlayListVariants.slotSize({ size })}>{rightIcon}</div>}\n </SelectPrimitive.Item>\n );\n },\n) as SelectComponent['Item'];\n\nSelect.Empty = forwardRef<HTMLDivElement, SelectEmptyProps>(\n ({ children = 'No data', className }, ref) => {\n return (\n <div ref={ref} className={cn('flex min-h-8 items-center justify-center p-2', className)}>\n <p className=\"text-body-2 text-text-disabled\">{children}</p>\n </div>\n );\n },\n) as SelectComponent['Empty'];\n\nSelect.Description = forwardRef<HTMLDivElement, SelectDescriptionProps>(\n ({ children, size: sizeProp, className }, ref) => {\n const { size: contextSize, error, disabled } = useSelectContext();\n const groupContext = useSelectGroupContext();\n const size = sizeProp ?? groupContext?.size ?? contextSize;\n\n if (!children) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"select-description\"\n className={cn(selectVariants.description({ disabled, error, size }), className)}\n >\n <p>{children}</p>\n </div>\n );\n },\n) as SelectComponent['Description'];\n\nSelect.Group = forwardRef<HTMLDivElement, SelectGroupProps>(\n ({ children, size = 'medium', variant = 'fill', hasBackground = false, className }, ref) => {\n const childArray = React.Children.toArray(children);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex w-fit flex-row items-stretch overflow-clip rounded-medium',\n variant === 'line' && 'border border-border-primary',\n hasBackground && 'bg-elevation-elevation-0',\n className,\n )}\n >\n {childArray.map((child, index) => {\n const isFirst = index === 0;\n const isLast = index === childArray.length - 1;\n\n return (\n <React.Fragment key={index}>\n <SelectGroupContext.Provider\n value={{ isFirstChild: isFirst, isLastChild: isLast, size, variant }}\n >\n {child}\n </SelectGroupContext.Provider>\n {!isLast && <div className=\"w-px self-stretch bg-border-primary\" />}\n </React.Fragment>\n );\n })}\n </div>\n );\n },\n) as SelectComponent['Group'];\n\nSelect.displayName = 'Select';\nSelect.Label.displayName = 'Select.Label';\nSelect.Trigger.displayName = 'Select.Trigger';\nSelect.Box.displayName = 'Select.Box';\nSelect.Value.displayName = 'Select.Value';\nSelect.List.displayName = 'Select.List';\nSelect.Item.displayName = 'Select.Item';\nSelect.Empty.displayName = 'Select.Empty';\nSelect.Description.displayName = 'Select.Description';\nSelect.Group.displayName = 'Select.Group';\n\nexport { Select };\nexport type {\n SelectComponent,\n SelectRootProps,\n SelectBoxProps,\n SelectDescriptionProps,\n SelectEmptyProps,\n SelectItemProps,\n SelectLabelProps,\n SelectTriggerProps,\n SelectGroupProps,\n SelectListProps,\n};\n","import type { ComponentProps, RefObject } from 'react';\nimport { useRef, useState } from 'react';\nimport { Select } from '../input/Select';\n\ntype FlatSelectOption = {\n value: string;\n label: string | React.ReactNode;\n /** 아이템 오른쪽에 표시할 슬롯 요소 */\n rightSlot?: React.ReactNode;\n disabled?: boolean;\n};\n\ninterface FlatSelectProps extends React.ComponentProps<typeof Select> {\n /** 선택 가능한 옵션 배열 */\n options: FlatSelectOption[];\n /** 값이 선택되지 않았을 때 표시할 텍스트 */\n placeholder?: string;\n /** 드롭다운 열림/닫힘 상태 변경 핸들러 */\n onOpenChange?: (open: boolean) => void;\n /** 포커스 획득 핸들러 */\n onFocus?: () => void;\n /** 포커스 해제 핸들러 */\n onBlur?: () => void;\n /** 트리거 왼쪽에 표시할 아이콘 */\n leftIcon?: ComponentProps<typeof Select.Trigger>['leftIcon'];\n /** 라벨 텍스트 */\n label?: ComponentProps<typeof Select.Label>['children'];\n /** 필수 입력 여부 */\n required?: ComponentProps<typeof Select.Label>['required'];\n /** 설명 텍스트 */\n description?: ComponentProps<typeof Select.Description>['children'];\n /** 드롭다운 리스트 className */\n listClassName?: string;\n}\n\n/**\n * Select 컴포넌트의 간소화된 Flat API입니다.\n * options 배열만 전달하면 Compound Component 없이 간편하게 사용할 수 있습니다.\n *\n * @example\n * ```tsx\n * <FlatSelect\n * options={[\n * { value: '1', label: '옵션 1' },\n * { value: '2', label: '옵션 2' },\n * ]}\n * placeholder=\"선택하세요\"\n * label=\"항목\"\n * />\n * ```\n *\n * @see {@link FlatSelectProps} props 상세\n */\nfunction FlatSelect({\n options,\n placeholder,\n onBlur,\n onFocus,\n onOpenChange,\n label,\n description,\n required,\n listClassName,\n leftIcon,\n ...props\n}: FlatSelectProps) {\n const { className, ...selectProps } = props;\n const selectRef = useRef<HTMLDivElement>(null);\n const { handleBlur, handleFocus } = useFocusWithin(selectRef, {\n onBlur,\n onFocus,\n });\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n handleFocus();\n }\n onOpenChange?.(open);\n };\n\n return (\n <div ref={selectRef} className={className}>\n <Select {...selectProps} onOpenChange={handleOpenChange}>\n {label && <Select.Label required={required}>{label}</Select.Label>}\n <Select.Trigger onBlur={handleBlur} onFocus={handleFocus} leftIcon={leftIcon}>\n <Select.Value placeholder={placeholder} className=\"truncate\" />\n </Select.Trigger>\n {description && <Select.Description>{description}</Select.Description>}\n <Select.List className={listClassName}>\n {options.length === 0 && <Select.Empty>{placeholder}</Select.Empty>}\n {options.map((option) => (\n <Select.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className=\"flex max-w-full items-center justify-between\"\n >\n <div className=\"block flex-1 truncate\">{option.label}</div>\n {option.rightSlot}\n </Select.Item>\n ))}\n </Select.List>\n </Select>\n </div>\n );\n}\n\nfunction useFocusWithin(\n containerRef: RefObject<HTMLElement | null>,\n callbacks?: { onFocus?: () => void; onBlur?: () => void },\n) {\n const [isFocused, setIsFocused] = useState(false);\n\n const handleBlur = (event: React.FocusEvent) => {\n if (containerRef.current?.contains(event.relatedTarget as Node)) {\n return;\n }\n setIsFocused(false);\n callbacks?.onBlur?.();\n };\n\n const handleFocus = () => {\n if (isFocused) {\n return;\n }\n setIsFocused(true);\n callbacks?.onFocus?.();\n };\n\n return { handleBlur, handleFocus, isFocused };\n}\n\nFlatSelect.displayName = 'FlatSelect';\n\nexport { FlatSelect };\nexport type { FlatSelectProps, FlatSelectOption };\n","import { cn, cva, type VariantProps } from '@exem-ui/core/utils';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport type React from 'react';\nimport { forwardRef } from 'react';\n\ntype TooltipRootProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>;\n\ntype TooltipProviderProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider>;\n\ntype TooltipTriggerProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Trigger>;\n\ntype TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> &\n VariantProps<typeof tooltipContentVariants> & {\n portalContainer?: HTMLElement | null;\n };\n\ntype TooltipTitleProps = React.HTMLAttributes<HTMLDivElement>;\n\ntype TooltipDescriptionProps = React.HTMLAttributes<HTMLDivElement>;\n\ntype TooltipComponent = typeof TooltipPrimitive.Root & {\n Provider: typeof TooltipPrimitive.Provider;\n Trigger: typeof TooltipPrimitive.Trigger;\n Content: React.ForwardRefExoticComponent<\n TooltipContentProps & React.RefAttributes<React.ElementRef<typeof TooltipPrimitive.Content>>\n >;\n Title: React.ForwardRefExoticComponent<TooltipTitleProps & React.RefAttributes<HTMLDivElement>>;\n Description: React.ForwardRefExoticComponent<\n TooltipDescriptionProps & React.RefAttributes<HTMLDivElement>\n >;\n};\n\nconst tooltipContentVariants = cva(\n [\n // Base layout\n 'z-50 flex flex-col items-start overflow-hidden',\n 'rounded-medium',\n 'text-text-static-light',\n 'bg-component-tooltip border border-border-primary',\n 'shadow-medium',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n ],\n {\n variants: {\n size: {\n tiny: 'px-2 py-1 text-body-3',\n small: 'w-[160px] gap-[8px] px-[12px] py-[10px]',\n medium: 'w-[240px] gap-[8px] px-[12px] py-[10px]',\n large: 'w-[320px] gap-[8px] px-[12px] py-[10px]',\n xlarge: 'w-[400px] gap-[8px] px-[12px] py-[10px]',\n },\n },\n defaultVariants: { size: 'small' },\n },\n);\n\nconst tooltipTitleVariants = cva([\n 'text-body-1 font-semibold text-text-static-light',\n 'group-data-[size=tiny]/tooltip-content:text-body-3',\n]);\n\nconst tooltipTextVariants = cva([\n 'text-body-2 font-regular text-text-static-light',\n 'group-data-[size=tiny]/tooltip-content:text-body-3',\n]);\n\nconst Tooltip = TooltipPrimitive.Root as TooltipComponent;\n\nTooltip.Provider = TooltipPrimitive.Provider;\n\nTooltip.Trigger = TooltipPrimitive.Trigger;\n\nTooltip.Content = forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, size, children, portalContainer, ...props }, ref) => (\n <TooltipPrimitive.Portal container={portalContainer}>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n data-size={size}\n className={cn('group/tooltip-content', tooltipContentVariants({ size }), className)}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n)) as TooltipComponent['Content'];\n\nTooltip.Title = forwardRef<HTMLDivElement, TooltipTitleProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn(tooltipTitleVariants(), className)} {...props}>\n {children}\n </div>\n ),\n) as TooltipComponent['Title'];\n\nTooltip.Description = forwardRef<HTMLDivElement, TooltipDescriptionProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn(tooltipTextVariants(), className)} {...props}>\n {children}\n </div>\n ),\n) as TooltipComponent['Description'];\n\nTooltip.displayName = 'Tooltip';\nTooltip.Content.displayName = 'Tooltip.Content';\nTooltip.Title.displayName = 'Tooltip.Title';\nTooltip.Description.displayName = 'Tooltip.Description';\nTooltip.Trigger.displayName = 'Tooltip.Trigger';\nTooltip.Provider.displayName = 'Tooltip.Provider';\n\nexport { Tooltip };\nexport type {\n TooltipComponent,\n TooltipContentProps,\n TooltipDescriptionProps,\n TooltipProviderProps,\n TooltipRootProps,\n TooltipTitleProps,\n TooltipTriggerProps,\n};\n","import type { ComponentProps } from 'react';\nimport { Tooltip } from '../tooltip/Tooltip';\n\ninterface FlatTooltipProps {\n /** 툴팁을 적용할 자식 요소 */\n children: React.ReactNode;\n /** 툴팁 제목 (선택) */\n title?: React.ReactNode;\n /** 툴팁 크기 */\n size: ComponentProps<typeof Tooltip.Content>['size'];\n /** 툴팁 표시 위치 */\n side?: ComponentProps<typeof Tooltip.Content>['side'];\n /** 툴팁 정렬 */\n align?: ComponentProps<typeof Tooltip.Content>['align'];\n /** 사이드 방향 오프셋 (px) */\n sideOffset?: ComponentProps<typeof Tooltip.Content>['sideOffset'];\n /** 정렬 방향 오프셋 (px) */\n alignOffset?: ComponentProps<typeof Tooltip.Content>['alignOffset'];\n /** 툴팁 설명 텍스트 */\n description: React.ReactNode;\n}\n\n/**\n * Tooltip 컴포넌트의 간소화된 Flat API입니다.\n * Compound Component 없이 props만으로 간편하게 사용할 수 있습니다.\n *\n * @example\n * ```tsx\n * <FlatTooltip size=\"small\" description=\"도움말 텍스트\">\n * <button>호버하세요</button>\n * </FlatTooltip>\n *\n * <FlatTooltip size=\"tiny\" title=\"제목\" description=\"설명\">\n * <span>정보</span>\n * </FlatTooltip>\n * ```\n *\n * @see {@link FlatTooltipProps} props 상세\n */\nconst FlatTooltip = ({ children, title, size, description, ...props }: FlatTooltipProps) => {\n return (\n <Tooltip.Provider delayDuration={0} skipDelayDuration={0}>\n <Tooltip>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content size={size} {...props}>\n {title && <Tooltip.Title>{title}</Tooltip.Title>}\n {description && <Tooltip.Description>{description}</Tooltip.Description>}\n </Tooltip.Content>\n </Tooltip>\n </Tooltip.Provider>\n );\n};\n\n/** FlatTooltip 설정 객체 타입 (children 제외) */\ntype TooltipConfig = Omit<ComponentProps<typeof FlatTooltip>, 'children' | 'size'> & {\n /**\n * 툴팁 사용 여부\n * @default true\n */\n use?: boolean;\n size?: ComponentProps<typeof FlatTooltip>['size'];\n};\n\ninterface ConditionalTooltipProps {\n /** 툴팁으로 감쌀 자식 요소 */\n children: React.ReactNode;\n /**\n * 툴팁 설정값\n * - `string`: 기본 tiny 사이즈의 툴팁 description으로 사용\n * - `object`: FlatTooltip props를 직접 전달 (`use: false`로 비활성화 가능)\n */\n tooltip: ComponentProps<typeof FlatTooltip>['description'] | TooltipConfig;\n}\n\n/**\n * 조건부로 FlatTooltip을 적용하는 래퍼 컴포넌트입니다.\n *\n * @description\n * tooltip prop의 타입에 따라 다르게 동작합니다:\n * - `string`: tiny 사이즈의 기본 툴팁으로 렌더링\n * - `object` (`use !== false`): 전달된 props로 FlatTooltip 렌더링\n * - `object` (`use === false`) 또는 기타: children만 반환 (툴팁 없음)\n *\n * @example\n * ```tsx\n * <ConditionalTooltip tooltip=\"도움말 텍스트\">\n * <button>버튼</button>\n * </ConditionalTooltip>\n *\n * <ConditionalTooltip tooltip={{ description: \"설명\", size: \"small\", side: \"top\" }}>\n * <button>버튼</button>\n * </ConditionalTooltip>\n *\n * <ConditionalTooltip tooltip={{ use: false, description: \"\" }}>\n * <button>툴팁 없음</button>\n * </ConditionalTooltip>\n * ```\n *\n * @see {@link ConditionalTooltipProps} props 상세\n */\nfunction ConditionalTooltip({ children, tooltip }: ConditionalTooltipProps) {\n if (typeof tooltip === 'string') {\n return (\n <FlatTooltip size=\"tiny\" description={tooltip}>\n {children}\n </FlatTooltip>\n );\n }\n\n if (tooltip && typeof tooltip === 'object' && 'description' in tooltip && tooltip.use !== false) {\n return (\n <FlatTooltip size={tooltip.size || 'tiny'} {...tooltip}>\n {children}\n </FlatTooltip>\n );\n }\n\n return children;\n}\n\nFlatTooltip.displayName = 'FlatTooltip';\nConditionalTooltip.displayName = 'ConditionalTooltip';\n\nexport { FlatTooltip, ConditionalTooltip };\nexport type { FlatTooltipProps, ConditionalTooltipProps, TooltipConfig };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/segment/Segment.tsx","../src/flat/FlatSegment.tsx","../src/overlayList/overlayListVariants.ts","../src/input/inputVariants.ts","../src/input/selectVariants.ts","../src/input/Select.tsx","../src/flat/FlatSelect.tsx","../src/tooltip/Tooltip.tsx","../src/flat/FlatTooltip.tsx"],"names":["jsx","cn","cva","createContext","useContext","forwardRef","jsxs"],"mappings":"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","file":"chunk-JXUDLY4B.mjs","sourcesContent":["import { cn, cva } from '@exem-ui/core/utils';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport type React from 'react';\nimport { createContext, forwardRef, useContext } from 'react';\n\ntype SegmentSize = 'small' | 'medium' | 'large';\n\ntype SegmentContextValue = {\n size: SegmentSize;\n};\n\ntype SegmentListProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>;\n\ntype SegmentItemProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> & {\n /** 텍스트 왼쪽에 표시할 아이콘 요소 */\n leftIcon?: React.ReactElement<{ className?: string }>;\n};\n\ntype SegmentContentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>;\n\ntype SegmentRootProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & {\n /**\n * 세그먼트 크기\n * @default 'medium'\n */\n size?: SegmentSize;\n};\n\ntype SegmentComponent = React.ForwardRefExoticComponent<\n SegmentRootProps & React.RefAttributes<React.ElementRef<typeof TabsPrimitive.Root>>\n> & {\n List: React.ForwardRefExoticComponent<SegmentListProps>;\n Item: React.ForwardRefExoticComponent<SegmentItemProps>;\n Content: React.ForwardRefExoticComponent<SegmentContentProps>;\n};\n\nconst segmentListVariants = cva(\n 'inline-flex items-center overflow-hidden rounded-medium bg-elevation-elevation-2',\n {\n variants: {\n size: {\n small: 'h-7 gap-0 p-0.5',\n medium: 'h-8 gap-0 p-0.5',\n large: 'h-10 gap-0 p-0.5',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n\nconst segmentItemVariants = cva(\n [\n 'flex flex-1 items-center justify-center rounded-weak',\n 'focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed',\n 'data-[state=active]:bg-component-segmentedOption data-[state=active]:text-text-primary data-[state=active]:shadow-weak',\n 'data-[state=inactive]:text-text-tertiary data-[state=inactive]:disabled:text-text-disabled',\n 'transition-colors duration-200 ease-in-out',\n ],\n {\n variants: {\n size: {\n small: 'h-6 gap-0.5 text-body-3 font-medium',\n medium: 'h-7 gap-1 text-body-2 font-medium',\n large: 'h-9 gap-1.5 text-body-2 font-medium',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n\nconst segmentIconVariants = cva('flex items-center justify-center', {\n variants: {\n size: {\n small: 'size-4',\n medium: 'size-4',\n large: 'size-5',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n\nconst SegmentContext = createContext<SegmentContextValue | undefined>(undefined);\n\nconst useSegmentContext = () => {\n const context = useContext(SegmentContext);\n if (!context) {\n throw new Error('Segment components must be used within a Segment');\n }\n return context;\n};\n\n/**\n * 탭 형태의 세그먼트 컨트롤 컴포넌트입니다.\n * Compound Component 패턴으로 `Segment.List`, `Segment.Item`, `Segment.Content`와 함께 사용합니다.\n *\n * @example\n * ```tsx\n * <Segment defaultValue=\"tab1\" size=\"medium\">\n * <Segment.List>\n * <Segment.Item value=\"tab1\">첫 번째</Segment.Item>\n * <Segment.Item value=\"tab2\">두 번째</Segment.Item>\n * </Segment.List>\n * <Segment.Content value=\"tab1\">첫 번째 내용</Segment.Content>\n * <Segment.Content value=\"tab2\">두 번째 내용</Segment.Content>\n * </Segment>\n * ```\n *\n * @see {@link SegmentRootProps} 루트 props 상세\n * @see {@link SegmentItemProps} 아이템 props 상세\n */\nconst Segment = forwardRef<React.ElementRef<typeof TabsPrimitive.Root>, SegmentRootProps>(\n ({ size = 'medium', children, ...props }, ref) => (\n <SegmentContext.Provider value={{ size }}>\n <TabsPrimitive.Root ref={ref} {...props}>\n {children}\n </TabsPrimitive.Root>\n </SegmentContext.Provider>\n ),\n) as SegmentComponent;\n\nSegment.List = forwardRef<React.ElementRef<typeof TabsPrimitive.List>, SegmentListProps>(\n ({ className, ...props }, ref) => {\n const { size } = useSegmentContext();\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(segmentListVariants({ size }), className)}\n {...props}\n />\n );\n },\n) as SegmentComponent['List'];\n\nSegment.Item = forwardRef<React.ElementRef<typeof TabsPrimitive.Trigger>, SegmentItemProps>(\n ({ className, leftIcon, children, ...props }, ref) => {\n const { size } = useSegmentContext();\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(segmentItemVariants({ size }), className)}\n {...props}\n >\n {leftIcon && <span className={cn(segmentIconVariants({ size }))}>{leftIcon}</span>}\n <span className=\"flex items-center\">{children}</span>\n </TabsPrimitive.Trigger>\n );\n },\n) as SegmentComponent['Item'];\n\nSegment.Content = forwardRef<React.ElementRef<typeof TabsPrimitive.Content>, SegmentContentProps>(\n ({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n ),\n) as SegmentComponent['Content'];\n\nSegment.displayName = 'Segment';\nSegment.List.displayName = 'Segment.List';\nSegment.Content.displayName = 'Segment.Content';\nSegment.Item.displayName = 'Segment.Item';\n\nexport { Segment };\nexport type {\n SegmentComponent,\n SegmentRootProps,\n SegmentItemProps,\n SegmentContentProps,\n SegmentListProps,\n};\n","import type React from 'react';\nimport { Segment, type SegmentRootProps } from '../segment/Segment';\n\ntype FlatSegmentItem = Pick<\n React.ComponentPropsWithoutRef<typeof Segment.Item>,\n 'value' | 'children' | 'disabled' | 'leftIcon' | 'className'\n>;\n\ninterface FlatSegmentProps extends Omit<SegmentRootProps, 'children' | 'asChild'> {\n /** 세그먼트 아이템 배열 */\n items: FlatSegmentItem[];\n /**\n * 전체 비활성화 여부 (개별 아이템의 disabled와 OR 결합)\n * @default false\n */\n disabled?: boolean;\n}\n\n/**\n * Segment 컴포넌트의 간소화된 Flat API입니다.\n * items 배열만 전달하면 Compound Component 없이 간편하게 사용할 수 있습니다.\n *\n * @example\n * ```tsx\n * <FlatSegment\n * defaultValue=\"tab1\"\n * size=\"medium\"\n * items={[\n * { value: 'tab1', children: '첫 번째' },\n * { value: 'tab2', children: '두 번째' },\n * ]}\n * />\n * ```\n *\n * @see {@link FlatSegmentProps} props 상세\n */\nconst FlatSegment = ({ items, disabled, className, ...props }: FlatSegmentProps) => (\n <Segment {...props}>\n <Segment.List className={className}>\n {items.map((item) => (\n <Segment.Item {...item} key={item.value} disabled={disabled || item.disabled} />\n ))}\n </Segment.List>\n </Segment>\n);\n\nFlatSegment.displayName = 'FlatSegment';\n\nexport { FlatSegment };\nexport type { FlatSegmentProps, FlatSegmentItem };\n","import { cn, cva } from '@exem-ui/core/utils';\n\n/**\n * 오버레이 형태로 표시되는 리스트 UI의 공통 스타일 변형(variants)을 정의합니다.\n *\n * Select, Dropdown 등 팝업/드롭다운 형태의 리스트 컴포넌트에서 공통으로 사용되는\n * 기반 스타일 레이어입니다. 각 컴포넌트는 이 variants를 확장하거나 재사용해\n * 자체 스타일을 구성합니다.\n *\n * @example 사용처\n * - `selectVariants.ts` — Select 컴포넌트의 드롭다운 리스트\n * - `dropdownVariants.ts` — Dropdown 컴포넌트의 메뉴 리스트\n *\n * @property content - 오버레이 컨테이너 (z-index, 배경, 테두리, 그림자, 열기/닫기 애니메이션)\n * @property viewport - 아이템 목록 래퍼 (flex 컬럼, 간격, 패딩)\n * @property item - 개별 리스트 아이템 (크기 variant: xsmall | small | medium | large)\n * @property slotSize - 아이콘/체크마크 등 슬롯 영역 크기 (size variant에 따라 조정)\n */\nexport const overlayListVariants = {\n content: cn(\n 'relative z-50 min-w-[8rem] overflow-hidden rounded-medium border border-border-primary bg-background-overlay shadow-weak',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n ),\n\n viewport: cn('flex flex-col gap-0.5 p-1'),\n\n item: cva(\n 'relative flex w-full gap-0.5 cursor-pointer select-none items-center rounded-weak px-2 text-body-2 text-text-primary outline-none hover:bg-elevation-elevation-2 data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled',\n {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'h-6',\n small: 'h-7',\n medium: 'h-8',\n large: 'h-10',\n },\n },\n },\n ),\n itemText: cva('truncate flex items-center flex-1 min-w-0', {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'h-6',\n small: 'h-7',\n medium: 'h-8',\n large: 'h-10',\n },\n },\n }),\n\n slotSize: cva('shrink-0 flex items-center justify-center text-icon-primary', {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'size-4',\n small: 'size-4',\n medium: 'size-4',\n large: 'size-5',\n },\n },\n }),\n};\n","import { cva } from '@exem-ui/core/utils';\n\n// 공통 Input variants\nexport const commonInputVariants = {\n // Container variants - 전체 컴포넌트 래퍼\n container: cva('flex flex-col'),\n\n // Label variants - 라벨 텍스트\n label: cva('inline-block font-regular text-text-primary', {\n variants: {\n size: {\n xsmall: 'mb-[2px] text-body-3',\n small: 'mb-[4px] text-body-2',\n medium: 'mb-[4px] text-body-2',\n large: 'mb-[6px] text-body-1',\n },\n disabled: {\n true: 'text-text-disabled',\n },\n required: {\n true: 'after:ml-0.5 after:text-text-critical after:content-[\"*\"]',\n },\n },\n compoundVariants: [\n {\n required: true,\n disabled: true,\n className: 'after:text-text-disabled',\n },\n ],\n defaultVariants: { size: 'medium' },\n }),\n\n // Description variants - 설명 텍스트\n description: cva('mt-0.5 inline-block text-text-tertiary', {\n variants: {\n size: {\n xsmall: 'text-caption',\n small: 'text-body-3',\n medium: 'text-body-3',\n large: 'text-body-2',\n },\n error: {\n true: 'text-text-critical',\n },\n disabled: {\n true: 'text-text-disabled',\n },\n },\n compoundVariants: [\n {\n error: true,\n disabled: true,\n className: 'text-text-disabled', // disabled 우선 적용\n },\n ],\n defaultVariants: { size: 'medium' },\n }),\n\n // Icon variants - 아이콘 크기\n icon: cva('shrink-0', {\n variants: {\n size: {\n xsmall: 'size-4',\n small: 'size-4',\n medium: 'size-4',\n large: 'size-5',\n },\n },\n defaultVariants: { size: 'medium' },\n }),\n};\n\n// 공통 타입 정의\nexport type Size = 'xsmall' | 'small' | 'medium' | 'large';\nexport type Variant = 'fill' | 'line';\nexport type Icon = React.ReactElement<{ className?: string }>;\n","import { cn, cva } from '@exem-ui/core/utils';\nimport { overlayListVariants } from '../overlayList/overlayListVariants';\nimport { commonInputVariants } from './inputVariants';\n\nexport const selectVariants = {\n container: commonInputVariants.container,\n content: cn(\n overlayListVariants.content,\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n ),\n\n description: commonInputVariants.description,\n\n iconSize: overlayListVariants.slotSize,\n\n item: (props?: Parameters<typeof overlayListVariants.item>[0]) =>\n cn(overlayListVariants.item(props), 'data-[state=checked]:bg-elevation-accent-0'),\n\n label: commonInputVariants.label,\n\n trigger: cva(\n 'group flex w-full items-center justify-between rounded-medium outline-none disabled:cursor-not-allowed disabled:bg-elevation-elevation-2 disabled:text-text-disabled data-[state=open]:border data-[state=open]:border-border-focused [&>span]:line-clamp-1 [&[data-placeholder]]:text-text-tertiary [&_svg]:text-icon-primary',\n {\n compoundVariants: [\n {\n className:\n 'border-border-accent text-tint-foreground-sky bg-elevation-accent-0 [&[data-placeholder]]:text-tint-foreground-sky [&_svg]:text-tint-foreground-sky',\n focus: true,\n variant: 'line',\n },\n // active + fill: 배경만 accent로 변경\n {\n className:\n 'bg-elevation-accent-0 text-tint-foreground-sky [&[data-placeholder]]:text-tint-foreground-sky [&_svg]:text-tint-foreground-sky',\n active: true,\n variant: 'fill',\n },\n // active + line: 배경 accent + 테두리 accent\n {\n className:\n 'bg-elevation-accent-0 border-border-accent text-tint-foreground-sky [&[data-placeholder]]:text-tint-foreground-sky [&_svg]:text-tint-foreground-sky',\n active: true,\n variant: 'line',\n },\n ],\n defaultVariants: {\n active: false,\n error: false,\n focus: false,\n size: 'medium',\n variant: 'fill',\n },\n variants: {\n active: {\n false: '',\n true: '',\n },\n error: {\n false: '',\n true: 'border !border-border-critical',\n },\n focus: {\n false: '',\n // 현재는 line 타입만 focus 가능\n true: '',\n },\n size: {\n xsmall: 'h-6 px-[4px] text-body-3',\n small: 'h-7 px-[6px] text-body-2',\n medium: 'h-8 px-[8px] text-body-2',\n large: 'h-10 px-[10px] text-body-1',\n },\n variant: {\n fill: 'bg-elevation-elevation-2',\n line: 'border-border-primary border',\n },\n },\n },\n ),\n\n triggerInner: cva('flex w-full items-center', {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n xsmall: 'gap-0',\n small: 'gap-[2px]',\n medium: 'gap-[2px]',\n large: 'gap-[4px]',\n },\n },\n }),\n viewport: overlayListVariants.viewport,\n};\n","import { cn } from '@exem-ui/core/utils';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport * as React from 'react';\nimport { createContext, forwardRef, useContext, useId } from 'react';\nimport { ChevronDownIcon } from '../icon';\n\nimport { overlayListVariants } from '../overlayList/overlayListVariants';\nimport type { Icon, Size, Variant } from './inputVariants';\nimport { selectVariants } from './selectVariants';\n\ntype SelectContextValue = {\n size: Size;\n error: boolean;\n focus: boolean;\n active: boolean;\n disabled: boolean;\n id: string;\n variant: Variant;\n};\n\ntype SelectGroupContextValue = {\n isFirstChild: boolean;\n isLastChild: boolean;\n size?: Size;\n variant?: Variant;\n focus?: boolean;\n};\n\n/** Select 라벨 Props */\ntype SelectLabelProps = {\n children: React.ReactNode;\n required?: boolean;\n size?: Size;\n className?: string;\n};\n\n/** Select 트리거 Props */\ntype SelectTriggerProps = {\n children?: React.ReactNode;\n /** 트리거 왼쪽에 표시할 아이콘 */\n leftIcon?: Icon;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, 'children'>;\n\n/** Select Box (Trigger + Value 조합) Props */\ntype SelectBoxProps = {\n placeholder?: string;\n /** 트리거 왼쪽에 표시할 아이콘 */\n leftIcon?: Icon;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, 'children'>;\n\n/** Select 아이템 Props */\ntype SelectItemProps = {\n children?: React.ReactNode;\n /** 아이템 왼쪽에 표시할 아이콘 */\n leftIcon?: Icon;\n /** 아이템 오른쪽에 표시할 아이콘 */\n rightIcon?: Icon;\n size?: Size;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>, 'children'>;\n\ntype SelectEmptyProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\ntype SelectDescriptionProps = {\n children?: React.ReactNode;\n size?: Size;\n className?: string;\n};\n\ntype SelectGroupProps = {\n children: React.ReactNode;\n size?: Size;\n /** 셀렉트 그룹 스타일 변형 */\n variant?: Variant;\n /** 불투명 배경 (elevation-0) 사용 여부. 반투명 배경이 비쳐보이는 것을 방지합니다. */\n hasBackground?: boolean;\n className?: string;\n};\n\n/** Select 루트 Props */\ntype SelectRootProps = {\n children?: React.ReactNode;\n /** 셀렉트 크기 */\n size?: Size;\n /** 셀렉트 스타일 변형 */\n variant?: Variant;\n /** 에러 상태 */\n error?: boolean;\n /** 포커스 상태 (line variant에서만 적용) */\n focus?: boolean;\n /** 활성화 상태 (필터 적용 등 내부 상태가 활성화됨을 표시) */\n active?: boolean;\n /** 비활성화 상태 */\n disabled?: boolean;\n className?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root>, 'disabled' | 'children'>;\n\ntype SelectListProps = Omit<\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>,\n 'position'\n>;\n\ntype SelectComponent = React.ForwardRefExoticComponent<\n SelectRootProps & React.RefAttributes<HTMLDivElement>\n> & {\n Label: React.ForwardRefExoticComponent<SelectLabelProps & React.RefAttributes<HTMLLabelElement>>;\n Trigger: React.ForwardRefExoticComponent<\n SelectTriggerProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Trigger>>\n >;\n Box: React.ForwardRefExoticComponent<\n SelectBoxProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Trigger>>\n >;\n Value: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Value> &\n React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Value>>\n >;\n List: React.ForwardRefExoticComponent<\n SelectListProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Content>>\n >;\n Item: React.ForwardRefExoticComponent<\n SelectItemProps & React.RefAttributes<React.ComponentRef<typeof SelectPrimitive.Item>>\n >;\n Empty: React.ForwardRefExoticComponent<SelectEmptyProps & React.RefAttributes<HTMLDivElement>>;\n Description: React.ForwardRefExoticComponent<\n SelectDescriptionProps & React.RefAttributes<HTMLDivElement>\n >;\n Group: React.ForwardRefExoticComponent<SelectGroupProps & React.RefAttributes<HTMLDivElement>>;\n};\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nconst useSelectContext = () => {\n const context = useContext(SelectContext);\n if (!context) {\n throw new Error('Select components must be used within a Select');\n }\n return context;\n};\n\nconst SelectGroupContext = createContext<SelectGroupContextValue | null>(null);\n\nconst useSelectGroupContext = () => {\n return useContext(SelectGroupContext);\n};\n\nconst Select = forwardRef<HTMLDivElement, SelectRootProps>(\n (\n {\n children,\n size = 'medium',\n variant = 'fill',\n error = false,\n disabled = false,\n focus = false,\n active = false,\n className,\n ...selectProps\n },\n ref,\n ) => {\n const uniqueId = useId();\n const id = `select-${uniqueId}`;\n\n return (\n <SelectContext.Provider value={{ active, disabled, error, focus, id, size, variant }}>\n <div ref={ref} className={cn(selectVariants.container(), className)}>\n <SelectPrimitive.Root disabled={disabled} {...selectProps}>\n {children}\n </SelectPrimitive.Root>\n </div>\n </SelectContext.Provider>\n );\n },\n) as SelectComponent;\n\nSelect.Value = forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Value>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Value>\n>(({ className, children, ...props }, ref) => {\n return (\n <SelectPrimitive.Value ref={ref} className={className} {...props}>\n {children}\n </SelectPrimitive.Value>\n );\n}) as SelectComponent['Value'];\n\nSelect.Trigger = forwardRef<React.ComponentRef<typeof SelectPrimitive.Trigger>, SelectTriggerProps>(\n ({ className, children, leftIcon, ...props }, ref) => {\n const { size, error, id, variant, focus, active } = useSelectContext();\n const groupContext = useSelectGroupContext();\n\n const groupClasses = groupContext\n ? cn('rounded-none border-0', {\n 'rounded-l-medium': groupContext.isFirstChild,\n 'rounded-r-medium': groupContext.isLastChild,\n // line variant: group이 외곽 border를 제공하므로, open 시 border 대신 inset ring 사용\n 'data-[state=open]:border-0 data-[state=open]:ring-1 data-[state=open]:ring-inset data-[state=open]:ring-border-focused':\n variant === 'line',\n })\n : undefined;\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n id={id}\n data-slot=\"select-trigger\"\n className={cn(\n selectVariants.trigger({ active, error, focus, size, variant }),\n groupClasses,\n className,\n )}\n {...props}\n >\n <div className={cn(selectVariants.triggerInner({ size }))}>\n {leftIcon && (\n <span\n className={cn(\n selectVariants.iconSize({ size }),\n 'flex items-center justify-center group-disabled:text-icon-disabled',\n )}\n >\n {leftIcon}\n </span>\n )}\n <div className=\"min-w-0 flex-1 truncate text-left\">{children}</div>\n <ChevronDownIcon\n type=\"regular\"\n className={cn(\n selectVariants.iconSize({ size }),\n 'transition-transform duration-200 group-data-[state=open]:rotate-180',\n 'group-disabled:text-icon-disabled',\n )}\n />\n </div>\n </SelectPrimitive.Trigger>\n );\n },\n) as SelectComponent['Trigger'];\n\nSelect.Box = forwardRef<React.ComponentRef<typeof SelectPrimitive.Trigger>, SelectBoxProps>(\n ({ placeholder, leftIcon, className, ...props }, ref) => {\n return (\n <Select.Trigger ref={ref} leftIcon={leftIcon} className={className} {...props}>\n <Select.Value placeholder={placeholder} />\n </Select.Trigger>\n );\n },\n) as SelectComponent['Box'];\n\nSelect.List = forwardRef<React.ComponentRef<typeof SelectPrimitive.Content>, SelectListProps>(\n ({ className, children, ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n data-slot=\"select-content\"\n className={cn(selectVariants.content, 'max-h-60 ', className)}\n position=\"popper\"\n {...props}\n >\n <SelectPrimitive.Viewport\n data-slot=\"select-viewport\"\n className={cn(\n selectVariants.viewport,\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n ),\n) as SelectComponent['List'];\n\nSelect.Label = forwardRef<HTMLLabelElement, SelectLabelProps>(\n ({ children, required = false, size: sizeProp, className }, ref) => {\n const { size: contextSize, disabled, id } = useSelectContext();\n const groupContext = useSelectGroupContext();\n const size = sizeProp ?? groupContext?.size ?? contextSize;\n\n return (\n <label\n ref={ref}\n htmlFor={id}\n className={cn(selectVariants.label({ disabled, required, size }), className)}\n >\n {children}\n </label>\n );\n },\n) as SelectComponent['Label'];\n\nSelect.Item = forwardRef<React.ComponentRef<typeof SelectPrimitive.Item>, SelectItemProps>(\n ({ className, children, leftIcon, rightIcon, size: sizeProp, ...props }, ref) => {\n const { size: contextSize } = useSelectContext();\n const groupContext = useSelectGroupContext();\n const size = sizeProp ?? groupContext?.size ?? contextSize;\n\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n ref={ref}\n className={cn(selectVariants.item({ size }), className)}\n {...props}\n >\n {leftIcon && <div className={overlayListVariants.slotSize({ size })}>{leftIcon}</div>}\n <div className={overlayListVariants.itemText({ size })}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </div>\n {rightIcon && <div className={overlayListVariants.slotSize({ size })}>{rightIcon}</div>}\n </SelectPrimitive.Item>\n );\n },\n) as SelectComponent['Item'];\n\nSelect.Empty = forwardRef<HTMLDivElement, SelectEmptyProps>(\n ({ children = 'No data', className }, ref) => {\n return (\n <div ref={ref} className={cn('flex min-h-8 items-center justify-center p-2', className)}>\n <p className=\"text-body-2 text-text-disabled\">{children}</p>\n </div>\n );\n },\n) as SelectComponent['Empty'];\n\nSelect.Description = forwardRef<HTMLDivElement, SelectDescriptionProps>(\n ({ children, size: sizeProp, className }, ref) => {\n const { size: contextSize, error, disabled } = useSelectContext();\n const groupContext = useSelectGroupContext();\n const size = sizeProp ?? groupContext?.size ?? contextSize;\n\n if (!children) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"select-description\"\n className={cn(selectVariants.description({ disabled, error, size }), className)}\n >\n <p>{children}</p>\n </div>\n );\n },\n) as SelectComponent['Description'];\n\nSelect.Group = forwardRef<HTMLDivElement, SelectGroupProps>(\n ({ children, size = 'medium', variant = 'fill', hasBackground = false, className }, ref) => {\n const childArray = React.Children.toArray(children);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex w-fit flex-row items-stretch overflow-clip rounded-medium',\n variant === 'line' && 'border border-border-primary',\n hasBackground && 'bg-elevation-elevation-0',\n className,\n )}\n >\n {childArray.map((child, index) => {\n const isFirst = index === 0;\n const isLast = index === childArray.length - 1;\n\n return (\n <React.Fragment key={index}>\n <SelectGroupContext.Provider\n value={{ isFirstChild: isFirst, isLastChild: isLast, size, variant }}\n >\n {child}\n </SelectGroupContext.Provider>\n {!isLast && <div className=\"w-px self-stretch bg-border-primary\" />}\n </React.Fragment>\n );\n })}\n </div>\n );\n },\n) as SelectComponent['Group'];\n\nSelect.displayName = 'Select';\nSelect.Label.displayName = 'Select.Label';\nSelect.Trigger.displayName = 'Select.Trigger';\nSelect.Box.displayName = 'Select.Box';\nSelect.Value.displayName = 'Select.Value';\nSelect.List.displayName = 'Select.List';\nSelect.Item.displayName = 'Select.Item';\nSelect.Empty.displayName = 'Select.Empty';\nSelect.Description.displayName = 'Select.Description';\nSelect.Group.displayName = 'Select.Group';\n\nexport { Select };\nexport type {\n SelectComponent,\n SelectRootProps,\n SelectBoxProps,\n SelectDescriptionProps,\n SelectEmptyProps,\n SelectItemProps,\n SelectLabelProps,\n SelectTriggerProps,\n SelectGroupProps,\n SelectListProps,\n};\n","import type { ComponentProps, RefObject } from 'react';\nimport { useRef, useState } from 'react';\nimport { Select } from '../input/Select';\n\ntype FlatSelectOption = {\n value: string;\n label: string | React.ReactNode;\n /** 아이템 오른쪽에 표시할 슬롯 요소 */\n rightSlot?: React.ReactNode;\n disabled?: boolean;\n};\n\ninterface FlatSelectProps extends React.ComponentProps<typeof Select> {\n /** 선택 가능한 옵션 배열 */\n options: FlatSelectOption[];\n /** 값이 선택되지 않았을 때 표시할 텍스트 */\n placeholder?: string;\n /** 드롭다운 열림/닫힘 상태 변경 핸들러 */\n onOpenChange?: (open: boolean) => void;\n /** 포커스 획득 핸들러 */\n onFocus?: () => void;\n /** 포커스 해제 핸들러 */\n onBlur?: () => void;\n /** 트리거 왼쪽에 표시할 아이콘 */\n leftIcon?: ComponentProps<typeof Select.Trigger>['leftIcon'];\n /** 라벨 텍스트 */\n label?: ComponentProps<typeof Select.Label>['children'];\n /** 필수 입력 여부 */\n required?: ComponentProps<typeof Select.Label>['required'];\n /** 설명 텍스트 */\n description?: ComponentProps<typeof Select.Description>['children'];\n /** 드롭다운 리스트 className */\n listClassName?: string;\n}\n\n/**\n * Select 컴포넌트의 간소화된 Flat API입니다.\n * options 배열만 전달하면 Compound Component 없이 간편하게 사용할 수 있습니다.\n *\n * @example\n * ```tsx\n * <FlatSelect\n * options={[\n * { value: '1', label: '옵션 1' },\n * { value: '2', label: '옵션 2' },\n * ]}\n * placeholder=\"선택하세요\"\n * label=\"항목\"\n * />\n * ```\n *\n * @see {@link FlatSelectProps} props 상세\n */\nfunction FlatSelect({\n options,\n placeholder,\n onBlur,\n onFocus,\n onOpenChange,\n label,\n description,\n required,\n listClassName,\n leftIcon,\n ...props\n}: FlatSelectProps) {\n const { className, ...selectProps } = props;\n const selectRef = useRef<HTMLDivElement>(null);\n const { handleBlur, handleFocus } = useFocusWithin(selectRef, {\n onBlur,\n onFocus,\n });\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n handleFocus();\n }\n onOpenChange?.(open);\n };\n\n return (\n <div ref={selectRef} className={className}>\n <Select {...selectProps} onOpenChange={handleOpenChange}>\n {label && <Select.Label required={required}>{label}</Select.Label>}\n <Select.Trigger onBlur={handleBlur} onFocus={handleFocus} leftIcon={leftIcon}>\n <Select.Value placeholder={placeholder} className=\"truncate\" />\n </Select.Trigger>\n {description && <Select.Description>{description}</Select.Description>}\n <Select.List className={listClassName}>\n {options.length === 0 && <Select.Empty>{placeholder}</Select.Empty>}\n {options.map((option) => (\n <Select.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className=\"flex max-w-full items-center justify-between\"\n >\n <div className=\"block flex-1 truncate\">{option.label}</div>\n {option.rightSlot}\n </Select.Item>\n ))}\n </Select.List>\n </Select>\n </div>\n );\n}\n\nfunction useFocusWithin(\n containerRef: RefObject<HTMLElement | null>,\n callbacks?: { onFocus?: () => void; onBlur?: () => void },\n) {\n const [isFocused, setIsFocused] = useState(false);\n\n const handleBlur = (event: React.FocusEvent) => {\n if (containerRef.current?.contains(event.relatedTarget as Node)) {\n return;\n }\n setIsFocused(false);\n callbacks?.onBlur?.();\n };\n\n const handleFocus = () => {\n if (isFocused) {\n return;\n }\n setIsFocused(true);\n callbacks?.onFocus?.();\n };\n\n return { handleBlur, handleFocus, isFocused };\n}\n\nFlatSelect.displayName = 'FlatSelect';\n\nexport { FlatSelect };\nexport type { FlatSelectProps, FlatSelectOption };\n","import { cn, cva, type VariantProps } from '@exem-ui/core/utils';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport type React from 'react';\nimport { forwardRef } from 'react';\n\ntype TooltipRootProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>;\n\ntype TooltipProviderProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider>;\n\ntype TooltipTriggerProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Trigger>;\n\ntype TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> &\n VariantProps<typeof tooltipContentVariants> & {\n portalContainer?: HTMLElement | null;\n };\n\ntype TooltipTitleProps = React.HTMLAttributes<HTMLDivElement>;\n\ntype TooltipDescriptionProps = React.HTMLAttributes<HTMLDivElement>;\n\ntype TooltipComponent = typeof TooltipPrimitive.Root & {\n Provider: typeof TooltipPrimitive.Provider;\n Trigger: typeof TooltipPrimitive.Trigger;\n Content: React.ForwardRefExoticComponent<\n TooltipContentProps & React.RefAttributes<React.ElementRef<typeof TooltipPrimitive.Content>>\n >;\n Title: React.ForwardRefExoticComponent<TooltipTitleProps & React.RefAttributes<HTMLDivElement>>;\n Description: React.ForwardRefExoticComponent<\n TooltipDescriptionProps & React.RefAttributes<HTMLDivElement>\n >;\n};\n\nconst tooltipContentVariants = cva(\n [\n // Base layout\n 'z-50 flex flex-col items-start overflow-hidden',\n 'rounded-medium',\n 'text-text-static-light',\n 'bg-component-tooltip border border-border-primary',\n 'shadow-medium',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n ],\n {\n variants: {\n size: {\n tiny: 'px-2 py-1 text-body-3',\n small: 'w-[160px] gap-[8px] px-[12px] py-[10px]',\n medium: 'w-[240px] gap-[8px] px-[12px] py-[10px]',\n large: 'w-[320px] gap-[8px] px-[12px] py-[10px]',\n xlarge: 'w-[400px] gap-[8px] px-[12px] py-[10px]',\n },\n },\n defaultVariants: { size: 'small' },\n },\n);\n\nconst tooltipTitleVariants = cva([\n 'text-body-1 font-semibold text-text-static-light',\n 'group-data-[size=tiny]/tooltip-content:text-body-3',\n]);\n\nconst tooltipTextVariants = cva([\n 'text-body-2 font-regular text-text-static-light',\n 'group-data-[size=tiny]/tooltip-content:text-body-3',\n]);\n\nconst Tooltip = TooltipPrimitive.Root as TooltipComponent;\n\nTooltip.Provider = TooltipPrimitive.Provider;\n\nTooltip.Trigger = TooltipPrimitive.Trigger;\n\nTooltip.Content = forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, size, children, portalContainer, ...props }, ref) => (\n <TooltipPrimitive.Portal container={portalContainer}>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n data-size={size}\n className={cn('group/tooltip-content', tooltipContentVariants({ size }), className)}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n)) as TooltipComponent['Content'];\n\nTooltip.Title = forwardRef<HTMLDivElement, TooltipTitleProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn(tooltipTitleVariants(), className)} {...props}>\n {children}\n </div>\n ),\n) as TooltipComponent['Title'];\n\nTooltip.Description = forwardRef<HTMLDivElement, TooltipDescriptionProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn(tooltipTextVariants(), className)} {...props}>\n {children}\n </div>\n ),\n) as TooltipComponent['Description'];\n\nTooltip.displayName = 'Tooltip';\nTooltip.Content.displayName = 'Tooltip.Content';\nTooltip.Title.displayName = 'Tooltip.Title';\nTooltip.Description.displayName = 'Tooltip.Description';\nTooltip.Trigger.displayName = 'Tooltip.Trigger';\nTooltip.Provider.displayName = 'Tooltip.Provider';\n\nexport { Tooltip };\nexport type {\n TooltipComponent,\n TooltipContentProps,\n TooltipDescriptionProps,\n TooltipProviderProps,\n TooltipRootProps,\n TooltipTitleProps,\n TooltipTriggerProps,\n};\n","import type { ComponentProps } from 'react';\nimport { Tooltip } from '../tooltip/Tooltip';\n\ninterface FlatTooltipProps {\n /** 툴팁을 적용할 자식 요소 */\n children: React.ReactNode;\n /** 툴팁 제목 (선택) */\n title?: React.ReactNode;\n /** 툴팁 크기 */\n size: ComponentProps<typeof Tooltip.Content>['size'];\n /** 툴팁 표시 위치 */\n side?: ComponentProps<typeof Tooltip.Content>['side'];\n /** 툴팁 정렬 */\n align?: ComponentProps<typeof Tooltip.Content>['align'];\n /** 사이드 방향 오프셋 (px) */\n sideOffset?: ComponentProps<typeof Tooltip.Content>['sideOffset'];\n /** 정렬 방향 오프셋 (px) */\n alignOffset?: ComponentProps<typeof Tooltip.Content>['alignOffset'];\n /** 툴팁 설명 텍스트 */\n description: React.ReactNode;\n}\n\n/**\n * Tooltip 컴포넌트의 간소화된 Flat API입니다.\n * Compound Component 없이 props만으로 간편하게 사용할 수 있습니다.\n *\n * @example\n * ```tsx\n * <FlatTooltip size=\"small\" description=\"도움말 텍스트\">\n * <button>호버하세요</button>\n * </FlatTooltip>\n *\n * <FlatTooltip size=\"tiny\" title=\"제목\" description=\"설명\">\n * <span>정보</span>\n * </FlatTooltip>\n * ```\n *\n * @see {@link FlatTooltipProps} props 상세\n */\nconst FlatTooltip = ({ children, title, size, description, ...props }: FlatTooltipProps) => {\n return (\n <Tooltip.Provider delayDuration={0} skipDelayDuration={0}>\n <Tooltip>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content size={size} {...props}>\n {title && <Tooltip.Title>{title}</Tooltip.Title>}\n {description && <Tooltip.Description>{description}</Tooltip.Description>}\n </Tooltip.Content>\n </Tooltip>\n </Tooltip.Provider>\n );\n};\n\n/** FlatTooltip 설정 객체 타입 (children 제외) */\ntype TooltipConfig = Omit<ComponentProps<typeof FlatTooltip>, 'children' | 'size'> & {\n /**\n * 툴팁 사용 여부\n * @default true\n */\n use?: boolean;\n size?: ComponentProps<typeof FlatTooltip>['size'];\n};\n\ninterface ConditionalTooltipProps {\n /** 툴팁으로 감쌀 자식 요소 */\n children: React.ReactNode;\n /**\n * 툴팁 설정값\n * - `string`: 기본 tiny 사이즈의 툴팁 description으로 사용\n * - `object`: FlatTooltip props를 직접 전달 (`use: false`로 비활성화 가능)\n */\n tooltip: ComponentProps<typeof FlatTooltip>['description'] | TooltipConfig;\n}\n\n/**\n * 조건부로 FlatTooltip을 적용하는 래퍼 컴포넌트입니다.\n *\n * @description\n * tooltip prop의 타입에 따라 다르게 동작합니다:\n * - `string`: tiny 사이즈의 기본 툴팁으로 렌더링\n * - `object` (`use !== false`): 전달된 props로 FlatTooltip 렌더링\n * - `object` (`use === false`) 또는 기타: children만 반환 (툴팁 없음)\n *\n * @example\n * ```tsx\n * <ConditionalTooltip tooltip=\"도움말 텍스트\">\n * <button>버튼</button>\n * </ConditionalTooltip>\n *\n * <ConditionalTooltip tooltip={{ description: \"설명\", size: \"small\", side: \"top\" }}>\n * <button>버튼</button>\n * </ConditionalTooltip>\n *\n * <ConditionalTooltip tooltip={{ use: false, description: \"\" }}>\n * <button>툴팁 없음</button>\n * </ConditionalTooltip>\n * ```\n *\n * @see {@link ConditionalTooltipProps} props 상세\n */\nfunction ConditionalTooltip({ children, tooltip }: ConditionalTooltipProps) {\n if (typeof tooltip === 'string') {\n return (\n <FlatTooltip size=\"tiny\" description={tooltip}>\n {children}\n </FlatTooltip>\n );\n }\n\n if (tooltip && typeof tooltip === 'object' && 'description' in tooltip && tooltip.use !== false) {\n return (\n <FlatTooltip size={tooltip.size || 'tiny'} {...tooltip}>\n {children}\n </FlatTooltip>\n );\n }\n\n return children;\n}\n\nFlatTooltip.displayName = 'FlatTooltip';\nConditionalTooltip.displayName = 'ConditionalTooltip';\n\nexport { FlatTooltip, ConditionalTooltip };\nexport type { FlatTooltipProps, ConditionalTooltipProps, TooltipConfig };\n"]}
|
package/dist/flat/index.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3OTGQNHL_js = require('../chunk-3OTGQNHL.js');
|
|
4
4
|
require('../chunk-TAZFRRWT.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "ConditionalTooltip", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunk3OTGQNHL_js.ConditionalTooltip; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "FlatSegment", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunk3OTGQNHL_js.FlatSegment; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "FlatSelect", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk3OTGQNHL_js.FlatSelect; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "FlatTooltip", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunk3OTGQNHL_js.FlatTooltip; }
|
|
23
23
|
});
|
|
24
24
|
//# sourceMappingURL=index.js.map
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
package/dist/flat/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ConditionalTooltip, FlatSegment, FlatSelect, FlatTooltip } from '../chunk-
|
|
1
|
+
export { ConditionalTooltip, FlatSegment, FlatSelect, FlatTooltip } from '../chunk-JXUDLY4B.mjs';
|
|
2
2
|
import '../chunk-HV6LIYRO.mjs';
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3OTGQNHL_js = require('./chunk-3OTGQNHL.js');
|
|
4
4
|
var chunkTAZFRRWT_js = require('./chunk-TAZFRRWT.js');
|
|
5
5
|
var utils = require('@exem-ui/core/utils');
|
|
6
6
|
var React = require('react');
|
|
@@ -516,12 +516,12 @@ var colorStyles = {
|
|
|
516
516
|
text: "text-text-static-light group-disabled/button:text-text-inverse-disabled"
|
|
517
517
|
},
|
|
518
518
|
outlined: {
|
|
519
|
-
button: "border border-border-accent hover:bg-elevation-accent disabled:border-border-accent-disabled",
|
|
519
|
+
button: "border border-border-accent hover:bg-elevation-accent-0 disabled:border-border-accent-disabled",
|
|
520
520
|
icon: "text-text-accent group-disabled/button:text-text-accent-disabled",
|
|
521
521
|
text: "text-text-accent group-disabled/button:text-text-accent-disabled"
|
|
522
522
|
},
|
|
523
523
|
invisible: {
|
|
524
|
-
button: "hover:bg-elevation-accent",
|
|
524
|
+
button: "hover:bg-elevation-accent-0",
|
|
525
525
|
icon: "text-text-accent group-disabled/button:text-text-accent-disabled",
|
|
526
526
|
text: "text-text-accent group-disabled/button:text-text-accent-disabled"
|
|
527
527
|
}
|
|
@@ -540,12 +540,12 @@ var colorStyles = {
|
|
|
540
540
|
text: "text-text-static-light group-disabled/button:text-text-inverse-disabled"
|
|
541
541
|
},
|
|
542
542
|
outlined: {
|
|
543
|
-
button: "border border-border-critical hover:bg-elevation-critical disabled:border-border-critical-disabled",
|
|
543
|
+
button: "border border-border-critical hover:bg-elevation-critical-0 disabled:border-border-critical-disabled",
|
|
544
544
|
icon: "text-text-critical group-disabled/button:text-text-critical-disabled",
|
|
545
545
|
text: "text-text-critical group-disabled/button:text-text-critical-disabled"
|
|
546
546
|
},
|
|
547
547
|
invisible: {
|
|
548
|
-
button: "hover:bg-elevation-critical",
|
|
548
|
+
button: "hover:bg-elevation-critical-0",
|
|
549
549
|
icon: "text-text-critical group-disabled/button:text-text-critical-disabled",
|
|
550
550
|
text: "text-text-critical group-disabled/button:text-text-critical-disabled"
|
|
551
551
|
}
|
|
@@ -748,7 +748,7 @@ var IconButton = React.forwardRef(
|
|
|
748
748
|
variant,
|
|
749
749
|
...props
|
|
750
750
|
};
|
|
751
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
751
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3OTGQNHL_js.ConditionalTooltip, { tooltip, children: /* @__PURE__ */ jsxRuntime.jsx(Button, { ref, ...buttonProps }) });
|
|
752
752
|
}
|
|
753
753
|
);
|
|
754
754
|
IconButton.displayName = "IconButton";
|
|
@@ -792,7 +792,7 @@ var ButtonGroup = React.forwardRef(
|
|
|
792
792
|
onClick: item.onClick,
|
|
793
793
|
size
|
|
794
794
|
};
|
|
795
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
795
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3OTGQNHL_js.ConditionalTooltip, { tooltip: item.tooltip, children: variant === "contained" ? /* @__PURE__ */ jsxRuntime.jsx(IconButton, { ...iconBaseProps, color: "assistive", variant: "contained" }) : /* @__PURE__ */ jsxRuntime.jsx(IconButton, { ...iconBaseProps, color: "primary", variant: "outlined" }) }, item.id);
|
|
796
796
|
}
|
|
797
797
|
const buttonBaseProps = {
|
|
798
798
|
className: utils.cn(roundedClasses, dividerClasses, mergeClasses, hoverClasses),
|
|
@@ -800,7 +800,7 @@ var ButtonGroup = React.forwardRef(
|
|
|
800
800
|
onClick: item.onClick,
|
|
801
801
|
size
|
|
802
802
|
};
|
|
803
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
803
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk3OTGQNHL_js.ConditionalTooltip, { tooltip: item.tooltip, children: variant === "contained" ? /* @__PURE__ */ jsxRuntime.jsx(Button, { ...buttonBaseProps, color: "assistive", variant: "contained", children: item.label }) : /* @__PURE__ */ jsxRuntime.jsx(Button, { ...buttonBaseProps, color: "primary", variant: "outlined", children: item.label }) }, item.id);
|
|
804
804
|
})
|
|
805
805
|
}
|
|
806
806
|
);
|
|
@@ -1211,12 +1211,12 @@ function DatePicker({ type = "single", showOutsideDays = true, ...rest }) {
|
|
|
1211
1211
|
}
|
|
1212
1212
|
var dropdownVariants = {
|
|
1213
1213
|
content: utils.cn(
|
|
1214
|
-
|
|
1214
|
+
chunk3OTGQNHL_js.overlayListVariants.content,
|
|
1215
1215
|
"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"
|
|
1216
1216
|
),
|
|
1217
|
-
viewport:
|
|
1218
|
-
item: (props) => utils.cn(
|
|
1219
|
-
slotSize:
|
|
1217
|
+
viewport: chunk3OTGQNHL_js.overlayListVariants.viewport,
|
|
1218
|
+
item: (props) => utils.cn(chunk3OTGQNHL_js.overlayListVariants.item(props), "focus:bg-elevation-elevation-2"),
|
|
1219
|
+
slotSize: chunk3OTGQNHL_js.overlayListVariants.slotSize,
|
|
1220
1220
|
separator: utils.cn("my-0.5 h-px bg-border-primary"),
|
|
1221
1221
|
label: utils.cva("px-2 font-medium text-text-secondary", {
|
|
1222
1222
|
defaultVariants: { size: "medium" },
|
|
@@ -1267,9 +1267,9 @@ Dropdown.Item = React.forwardRef(({ className, children, leftSlot, rightSlot, si
|
|
|
1267
1267
|
className: utils.cn(dropdownVariants.item({ size }), className),
|
|
1268
1268
|
...props,
|
|
1269
1269
|
children: [
|
|
1270
|
-
leftSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
1271
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn(
|
|
1272
|
-
rightSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
1270
|
+
leftSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk3OTGQNHL_js.overlayListVariants.slotSize({ size }), children: leftSlot }),
|
|
1271
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn(chunk3OTGQNHL_js.overlayListVariants.itemText({ size }), "min-w-0 flex-1 truncate"), children }),
|
|
1272
|
+
rightSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk3OTGQNHL_js.overlayListVariants.slotSize({ size }), children: rightSlot })
|
|
1273
1273
|
]
|
|
1274
1274
|
}
|
|
1275
1275
|
);
|
|
@@ -1314,8 +1314,8 @@ var useTextAreaContext = () => {
|
|
|
1314
1314
|
return context;
|
|
1315
1315
|
};
|
|
1316
1316
|
var textAreaVariants = {
|
|
1317
|
-
container:
|
|
1318
|
-
label:
|
|
1317
|
+
container: chunk3OTGQNHL_js.commonInputVariants.container,
|
|
1318
|
+
label: chunk3OTGQNHL_js.commonInputVariants.label,
|
|
1319
1319
|
field: utils.cva(
|
|
1320
1320
|
"scrollbar-overlay block w-full resize-none rounded-medium border transition-colors focus:outline-none",
|
|
1321
1321
|
{
|
|
@@ -1363,7 +1363,7 @@ var textAreaVariants = {
|
|
|
1363
1363
|
},
|
|
1364
1364
|
defaultVariants: { size: "medium" }
|
|
1365
1365
|
}),
|
|
1366
|
-
description:
|
|
1366
|
+
description: chunk3OTGQNHL_js.commonInputVariants.description,
|
|
1367
1367
|
counter: utils.cva("text-nowrap font-regular", {
|
|
1368
1368
|
variants: {
|
|
1369
1369
|
disabled: {
|
|
@@ -1483,8 +1483,8 @@ var useTextFieldContext = () => {
|
|
|
1483
1483
|
return context;
|
|
1484
1484
|
};
|
|
1485
1485
|
var textFieldVariants = {
|
|
1486
|
-
container:
|
|
1487
|
-
label:
|
|
1486
|
+
container: chunk3OTGQNHL_js.commonInputVariants.container,
|
|
1487
|
+
label: chunk3OTGQNHL_js.commonInputVariants.label,
|
|
1488
1488
|
wrapper: utils.cva(
|
|
1489
1489
|
"flex w-full flex-row items-center rounded-medium border transition-colors focus-within:border-border-focused focus-within:outline-none",
|
|
1490
1490
|
{
|
|
@@ -2549,15 +2549,15 @@ var buttonize = (fn) => {
|
|
|
2549
2549
|
|
|
2550
2550
|
Object.defineProperty(exports, "Segment", {
|
|
2551
2551
|
enumerable: true,
|
|
2552
|
-
get: function () { return
|
|
2552
|
+
get: function () { return chunk3OTGQNHL_js.Segment; }
|
|
2553
2553
|
});
|
|
2554
2554
|
Object.defineProperty(exports, "Select", {
|
|
2555
2555
|
enumerable: true,
|
|
2556
|
-
get: function () { return
|
|
2556
|
+
get: function () { return chunk3OTGQNHL_js.Select; }
|
|
2557
2557
|
});
|
|
2558
2558
|
Object.defineProperty(exports, "Tooltip", {
|
|
2559
2559
|
enumerable: true,
|
|
2560
|
-
get: function () { return
|
|
2560
|
+
get: function () { return chunk3OTGQNHL_js.Tooltip; }
|
|
2561
2561
|
});
|
|
2562
2562
|
exports.Avatar = Avatar;
|
|
2563
2563
|
exports.Badge = Badge;
|