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
IconButtonIconButton
TagCoreTagTag.Root + Tag.Icon + Tag.Text + Tag.RemoveButton
StatusBadgeCoreStatusBadgeStatusBadge.Root + StatusBadge.Dot + StatusBadge.Icon + StatusBadge.Text + StatusBadge.Loader
IconBadgeCoreIconBadgeIconBadge
DotCoreDotDot
LoaderCoreLoaderLoader
SkeletonSkeleton + Skeleton.Typo + Skeleton.Avatar
LinkCoreLinkLink.Root + Link.Icon + Link.Text
SwitchCoreToggleSwitch.Root + Switch.Thumb
CheckboxCoreCheckboxCheckbox
RadioCoreRadioRadio + Radio.Group
LabelLabel.Root + Label.Text
SegmentedControlCoreSegmentedControlSegmentedControl.Group + SegmentedControl.Item + SegmentedControl.Icon
TextInputCoreTextInputTextInput.Root + TextInput.Input + TextInput.Icon + TextInput.Text
TextAreaCoreTextAreaTextArea.Root + TextArea.Input
FieldField.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
PopoverPopover.Root + Popover.Trigger + Popover.Content + Popover.Arrow + Popover.Close + Popover.Handle
MenuMenu.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
DrawerDrawer.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
TableCoreTable🔜
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 시스템