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신규 
ButtonCoreButtonButton.Root + Button.Icon + Button.Text✅
IconButton—IconButton✅
TagCoreTagTag.Root + Tag.Icon + Tag.Text + Tag.RemoveButton✅
Chip—Chip.Group + Chip.Root + Chip.Icon + Chip.Label + Chip.Indicator + Chip.RemoveButton✅
StatusBadgeCoreStatusBadgeStatusBadge.Root + StatusBadge.Dot + StatusBadge.Icon + StatusBadge.Text + StatusBadge.Loader✅
IconBadgeCoreIconBadgeIconBadge✅
DotCoreDotDot✅
LoaderCoreLoaderLoader✅
Skeleton—Skeleton + Skeleton.Typo + Skeleton.Avatar✅
LinkCoreLinkLink.Root + Link.Icon + Link.Text✅
SwitchCoreToggleSwitch.Root + Switch.Thumb✅
CheckboxCoreCheckboxCheckbox✅
RadioCoreRadioRadio + Radio.Group✅
Label—Label.Root + Label.Text✅
SegmentedControlCoreSegmentedControlSegmentedControl.Group + SegmentedControl.Item + SegmentedControl.Icon✅
TextInputCoreTextInputTextInput.Root + TextInput.Input + TextInput.Icon + TextInput.Text✅
TextAreaCoreTextAreaTextArea.Root + TextArea.Input✅
Field—Field.Root + Field.Label + Field.Description + Field.Message + Field.Count✅
SelectCoreSelectSelect.Root + Select.Trigger + Select.Popup + Select.Item + …✅
DropdownCoreDropdownDropdown.Trigger + Dropdown.Popup + Dropdown.Item + Dropdown.ItemCheckbox + Dropdown.ItemRadio + …✅
TabsCoreTabsTabs.Root + Tabs.List + Tabs.Tab + Tabs.Panel✅
TooltipCoreTooltipTooltip.Root + Tooltip.Trigger + Tooltip.Content + Tooltip.Arrow + Tooltip.Title + Tooltip.Description✅
Popover—Popover.Root + Popover.Trigger + Popover.Content + Popover.Arrow + Popover.Close + Popover.Handle✅
Menu—Menu.Root + Menu.Trigger + Menu.Content + Menu.Item + Menu.ItemCheckbox + Menu.ItemRadio + …✅
AvatarCoreAvatarAvatar.Root + Avatar.Image + Avatar.Fallback + Avatar.Indicator + Avatar.Group✅
SectionMessageCoreSectionMessageSectionMessage.Root + SectionMessage.Icon + SectionMessage.Title + SectionMessage.Description + SectionMessage.Content + SectionMessage.Action + SectionMessage.CloseButton✅
ModalCoreModalModal.Root + Modal.Trigger + Modal.Overlay + Modal.Popup + Modal.Title + Modal.Body + Modal.Actions + Modal.Close✅
Drawer—Drawer.Root + Drawer.Trigger + Drawer.Overlay + Drawer.Popup + Drawer.Header + Drawer.Title + Drawer.Description + Drawer.Body + Drawer.Footer + Drawer.Close + …✅
ToastCoreToastToast.Provider + Toast.Viewport + Toast.Root + Toast.Icon + Toast.Content + Toast.Title + Toast.Description + Toast.Action + Toast.Close + useToastManager()✅
PaginationCorePaginationPagination.Root + Pagination.Items + Pagination.PrevTrigger + Pagination.NextTrigger + …✅
SideNavigationCoreSideNavigation——
Data GridCoreTableDataGrid.Root + DataGrid.Header + DataGrid.Body + … (별도 패키지 @featuring-corp/data-grid)✅
CalendarCoreCalendarCalendar.Root + Calendar.Trigger + Calendar.Footer + Calendar.Close✅

패턴 비교

신규 패턴 (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 시스템