Featuring Design System

Components

@featuring-corp/components — React UI 컴포넌트, Layout Primitives, CSS Preset

@featuring-corp/components

Layout Primitives, UI 컴포넌트, CSS Preset을 제공하는 React 컴포넌트 패키지입니다.

설치

npm install @featuring-corp/components

CSS Preset

// 앱 진입점 — Reset + Normalize + 브랜드 토큰 + CSS Layer 순서
import '@featuring-corp/components/preset/featuring';

컴포넌트 분류

분류설명
LayoutBox, Flex, HStack, VStack, Center, Grid, Typo — $css prop + render prop 기반
ComponentsButton, Tag, Link, Toggle, Checkbox, Radio 등 — Context 기반 상태 공유, $css/render 지원
LegacyCore* 컴포넌트 — forwardRef + clsx + recipe 기반 (마이그레이션 대상)
UtilsuseRender, mergeProps — Base UI 유틸리티

마이그레이션 현황

기존 Core* 패턴에서 $css + render + Context 기반 패턴으로 순차적으로 마이그레이션하고 있습니다.

컴포넌트상태Legacy신규
Button✅ 완료CoreButtonButton.Root + Button.Icon + Button.Text
IconButton✅ 완료IconButton
Tag✅ 완료CoreTagTag.Root + Tag.Icon + Tag.Text + Tag.RemoveButton
StatusBadge✅ 완료CoreStatusBadgeStatusBadge.Root + StatusBadge.Icon + StatusBadge.Text
IconBadge✅ 완료CoreIconBadgeIconBadge
Dot✅ 완료CoreDotDot
Loader✅ 완료CoreLoaderLoader
Link✅ 완료CoreLinkLink.Root + Link.Icon + Link.Text
Switch✅ 완료CoreToggleSwitch.Root + Switch.Thumb (base-ui Switch 기반)
Checkbox✅ 완료CoreCheckboxCheckbox.Root + Checkbox.Input + Checkbox.Label
Radio✅ 완료CoreRadioRadio.Group + Radio.Root + Radio.Input + Radio.Label
SegmentedControl✅ 완료CoreSegmentedControlSegmentedControl.Group + SegmentedControl.Item
TextInput🔜 예정CoreTextInput
Select🔜 예정CoreSelect
Modal🔜 예정CoreModal
Tabs✅ 완료CoreTabsTabs.Root + Tabs.List + Tabs.Tab + Tabs.Panel
Toast🔜 예정CoreToast
Tooltip🔜 예정CoreTooltip
Dropdown🔜 예정CoreDropdown

패턴 비교

신규 패턴 (Button, Tag)

import { Button } from '@featuring-corp/components';

<Button.Root variant="primary" size="md" $css={{ width: '100%' }}>
  <Button.Icon><IconSearchOutline /></Button.Icon>
  <Button.Text>Search</Button.Text>
</Button.Root>
  • $css prop — 토큰 기반 atomic CSS
  • render prop — 시맨틱 HTML 변경 (<a>, <Link> 등)
  • Context — 부모→자식 상태 공유 (size, loading, disabled)
  • className/style — state callback 지원

Legacy 패턴 (Core*)

import { CoreButton } from '@featuring-corp/components';

<CoreButton buttonType="primary" size="md">
  Search
</CoreButton>
  • forwardRef + clsx
  • Recipe 기반 variants
  • Legacy sprinkles 시스템