# Welcome, Vapor UI
URL: /docs
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/index.mdx
Vapor는 구름의 세 번째 디자인 시스템으로, 다양한 서브 패키지들로 구성되어 있습니다. 각 서브 패키지는 다음과 같은 역할을 수행합니다.
***
title: Welcome, Vapor UI
description: Vapor는 구름의 세 번째 디자인 시스템으로, 다양한 서브 패키지들로 구성되어 있습니다. 각 서브 패키지는 다음과 같은 역할을 수행합니다.
-------------------------------------------------------------------------------------------
# Icons
URL: /docs/components/icons
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/icons.mdx
Vapor UI 아이콘 라이브러리. 아이콘을 클릭하면 import 문이 복사됩니다.
***
title: Icons
description: Vapor UI 아이콘 라이브러리. 아이콘을 클릭하면 import 문이 복사됩니다.
-----------------------------------------------------------
## 설치
```package-install
@vapor-ui/icons
```
## 사용법
```tsx
import { CheckCircleIcon, SearchOutlineIcon } from '@vapor-ui/icons';
function Example() {
return (
<>
>
);
}
```
### Props
| Prop | Type | Default | Description |
| ------- | ----------------- | -------------- | ----------- |
| `size` | `string` `number` | `24` | 아이콘 크기 (px) |
| `color` | `string` | `currentColor` | 아이콘 색상 |
## 아이콘 스타일
아이콘을 클릭하면 import 문이 자동으로 복사됩니다.
## 아이콘 목록
## Basic Icons
| Icon Name | Import Statement |
| --------------------------------------- | ------------------------------------------------------------------------- |
| `AchievementIcon` | `import { AchievementIcon } from '@vapor-ui/icons'` |
| `AddUserIcon` | `import { AddUserIcon } from '@vapor-ui/icons'` |
| `AfghanistanColorIcon` | `import { AfghanistanColorIcon } from '@vapor-ui/icons'` |
| `AiGoormeeIcon` | `import { AiGoormeeIcon } from '@vapor-ui/icons'` |
| `AiSmartieIcon` | `import { AiSmartieIcon } from '@vapor-ui/icons'` |
| `AirplayIcon` | `import { AirplayIcon } from '@vapor-ui/icons'` |
| `AlbaniaColorIcon` | `import { AlbaniaColorIcon } from '@vapor-ui/icons'` |
| `AlgeriaColorIcon` | `import { AlgeriaColorIcon } from '@vapor-ui/icons'` |
| `AlgorithmIcon` | `import { AlgorithmIcon } from '@vapor-ui/icons'` |
| `AndorraColorIcon` | `import { AndorraColorIcon } from '@vapor-ui/icons'` |
| `AngolaColorIcon` | `import { AngolaColorIcon } from '@vapor-ui/icons'` |
| `AntiguaAndBarbudaColorIcon` | `import { AntiguaAndBarbudaColorIcon } from '@vapor-ui/icons'` |
| `AppleIcon` | `import { AppleIcon } from '@vapor-ui/icons'` |
| `ArgentinaColorIcon` | `import { ArgentinaColorIcon } from '@vapor-ui/icons'` |
| `ArmeniaColorIcon` | `import { ArmeniaColorIcon } from '@vapor-ui/icons'` |
| `ArrowDownCircleIcon` | `import { ArrowDownCircleIcon } from '@vapor-ui/icons'` |
| `AssignmentIcon` | `import { AssignmentIcon } from '@vapor-ui/icons'` |
| `AustraliaColorIcon` | `import { AustraliaColorIcon } from '@vapor-ui/icons'` |
| `AustriaColorIcon` | `import { AustriaColorIcon } from '@vapor-ui/icons'` |
| `AwsIcon` | `import { AwsIcon } from '@vapor-ui/icons'` |
| `AzerbaijanColorIcon` | `import { AzerbaijanColorIcon } from '@vapor-ui/icons'` |
| `AzureIcon` | `import { AzureIcon } from '@vapor-ui/icons'` |
| `BahamasColorIcon` | `import { BahamasColorIcon } from '@vapor-ui/icons'` |
| `BahrainColorIcon` | `import { BahrainColorIcon } from '@vapor-ui/icons'` |
| `BangladeshColorIcon` | `import { BangladeshColorIcon } from '@vapor-ui/icons'` |
| `BarbadosColorIcon` | `import { BarbadosColorIcon } from '@vapor-ui/icons'` |
| `BedIcon` | `import { BedIcon } from '@vapor-ui/icons'` |
| `BelarusColorIcon` | `import { BelarusColorIcon } from '@vapor-ui/icons'` |
| `BelgiumColorIcon` | `import { BelgiumColorIcon } from '@vapor-ui/icons'` |
| `BelizeColorIcon` | `import { BelizeColorIcon } from '@vapor-ui/icons'` |
| `BellOffIcon` | `import { BellOffIcon } from '@vapor-ui/icons'` |
| `BellOnIcon` | `import { BellOnIcon } from '@vapor-ui/icons'` |
| `BeninColorIcon` | `import { BeninColorIcon } from '@vapor-ui/icons'` |
| `BhutanColorIcon` | `import { BhutanColorIcon } from '@vapor-ui/icons'` |
| `BitbucketIcon` | `import { BitbucketIcon } from '@vapor-ui/icons'` |
| `BlogColorIcon` | `import { BlogColorIcon } from '@vapor-ui/icons'` |
| `BlogIcon` | `import { BlogIcon } from '@vapor-ui/icons'` |
| `BoliviaColorIcon` | `import { BoliviaColorIcon } from '@vapor-ui/icons'` |
| `BookIcon` | `import { BookIcon } from '@vapor-ui/icons'` |
| `BookmarkIcon` | `import { BookmarkIcon } from '@vapor-ui/icons'` |
| `BosniaAndHerzegovinaColorIcon` | `import { BosniaAndHerzegovinaColorIcon } from '@vapor-ui/icons'` |
| `BotswanaColorIcon` | `import { BotswanaColorIcon } from '@vapor-ui/icons'` |
| `BottomPlayerIcon` | `import { BottomPlayerIcon } from '@vapor-ui/icons'` |
| `BranchIcon` | `import { BranchIcon } from '@vapor-ui/icons'` |
| `BrazilColorIcon` | `import { BrazilColorIcon } from '@vapor-ui/icons'` |
| `BreakpointIcon` | `import { BreakpointIcon } from '@vapor-ui/icons'` |
| `BruneiColorIcon` | `import { BruneiColorIcon } from '@vapor-ui/icons'` |
| `BuildIcon` | `import { BuildIcon } from '@vapor-ui/icons'` |
| `BulgariaColorIcon` | `import { BulgariaColorIcon } from '@vapor-ui/icons'` |
| `BurkinaFasoColorIcon` | `import { BurkinaFasoColorIcon } from '@vapor-ui/icons'` |
| `BurundiColorIcon` | `import { BurundiColorIcon } from '@vapor-ui/icons'` |
| `CafeIcon` | `import { CafeIcon } from '@vapor-ui/icons'` |
| `CakeIcon` | `import { CakeIcon } from '@vapor-ui/icons'` |
| `CalculatorIcon` | `import { CalculatorIcon } from '@vapor-ui/icons'` |
| `CalendarIcon` | `import { CalendarIcon } from '@vapor-ui/icons'` |
| `CallIcon` | `import { CallIcon } from '@vapor-ui/icons'` |
| `CambodiaColorIcon` | `import { CambodiaColorIcon } from '@vapor-ui/icons'` |
| `CameraIcon` | `import { CameraIcon } from '@vapor-ui/icons'` |
| `CameroonColorIcon` | `import { CameroonColorIcon } from '@vapor-ui/icons'` |
| `CampIcon` | `import { CampIcon } from '@vapor-ui/icons'` |
| `CanadaColorIcon` | `import { CanadaColorIcon } from '@vapor-ui/icons'` |
| `CapeVerdeColorIcon` | `import { CapeVerdeColorIcon } from '@vapor-ui/icons'` |
| `CaptionIcon` | `import { CaptionIcon } from '@vapor-ui/icons'` |
| `CarIcon` | `import { CarIcon } from '@vapor-ui/icons'` |
| `CardsIcon` | `import { CardsIcon } from '@vapor-ui/icons'` |
| `CaretDownIcon` | `import { CaretDownIcon } from '@vapor-ui/icons'` |
| `CaretLeftIcon` | `import { CaretLeftIcon } from '@vapor-ui/icons'` |
| `CaretRightIcon` | `import { CaretRightIcon } from '@vapor-ui/icons'` |
| `CaretUpIcon` | `import { CaretUpIcon } from '@vapor-ui/icons'` |
| `CentralAfricanRepublicColorIcon` | `import { CentralAfricanRepublicColorIcon } from '@vapor-ui/icons'` |
| `CertificateIcon` | `import { CertificateIcon } from '@vapor-ui/icons'` |
| `ChadColorIcon` | `import { ChadColorIcon } from '@vapor-ui/icons'` |
| `ChapterIcon` | `import { ChapterIcon } from '@vapor-ui/icons'` |
| `ChartPieIcon` | `import { ChartPieIcon } from '@vapor-ui/icons'` |
| `ChatgptIcon` | `import { ChatgptIcon } from '@vapor-ui/icons'` |
| `CheckCircleIcon` | `import { CheckCircleIcon } from '@vapor-ui/icons'` |
| `CheckboxIcon` | `import { CheckboxIcon } from '@vapor-ui/icons'` |
| `ChileColorIcon` | `import { ChileColorIcon } from '@vapor-ui/icons'` |
| `ChinaColorIcon` | `import { ChinaColorIcon } from '@vapor-ui/icons'` |
| `ChromeColorIcon` | `import { ChromeColorIcon } from '@vapor-ui/icons'` |
| `ChromeIcon` | `import { ChromeIcon } from '@vapor-ui/icons'` |
| `ClassIcon` | `import { ClassIcon } from '@vapor-ui/icons'` |
| `CodeBlockIcon` | `import { CodeBlockIcon } from '@vapor-ui/icons'` |
| `CodevisorIcon` | `import { CodevisorIcon } from '@vapor-ui/icons'` |
| `CollaborationIcon` | `import { CollaborationIcon } from '@vapor-ui/icons'` |
| `ColombiaColorIcon` | `import { ColombiaColorIcon } from '@vapor-ui/icons'` |
| `ComorosColorIcon` | `import { ComorosColorIcon } from '@vapor-ui/icons'` |
| `ComponentIcon` | `import { ComponentIcon } from '@vapor-ui/icons'` |
| `ContainerIcon` | `import { ContainerIcon } from '@vapor-ui/icons'` |
| `ContainerRunIcon` | `import { ContainerRunIcon } from '@vapor-ui/icons'` |
| `ContainerShareIcon` | `import { ContainerShareIcon } from '@vapor-ui/icons'` |
| `ContainerStopIcon` | `import { ContainerStopIcon } from '@vapor-ui/icons'` |
| `ContainerToImageIcon` | `import { ContainerToImageIcon } from '@vapor-ui/icons'` |
| `ControlCommonIcon` | `import { ControlCommonIcon } from '@vapor-ui/icons'` |
| `CookIslandsColorIcon` | `import { CookIslandsColorIcon } from '@vapor-ui/icons'` |
| `CopyIcon` | `import { CopyIcon } from '@vapor-ui/icons'` |
| `CostaRicaColorIcon` | `import { CostaRicaColorIcon } from '@vapor-ui/icons'` |
| `CouponIcon` | `import { CouponIcon } from '@vapor-ui/icons'` |
| `CourseHistoryIcon` | `import { CourseHistoryIcon } from '@vapor-ui/icons'` |
| `CourseIcon` | `import { CourseIcon } from '@vapor-ui/icons'` |
| `CpuIcon` | `import { CpuIcon } from '@vapor-ui/icons'` |
| `CreditCardIcon` | `import { CreditCardIcon } from '@vapor-ui/icons'` |
| `CroatiaColorIcon` | `import { CroatiaColorIcon } from '@vapor-ui/icons'` |
| `CubaColorIcon` | `import { CubaColorIcon } from '@vapor-ui/icons'` |
| `CursorshareoffIcon` | `import { CursorshareoffIcon } from '@vapor-ui/icons'` |
| `CursorshareonIcon` | `import { CursorshareonIcon } from '@vapor-ui/icons'` |
| `CyprusColorIcon` | `import { CyprusColorIcon } from '@vapor-ui/icons'` |
| `CzechRepublicColorIcon` | `import { CzechRepublicColorIcon } from '@vapor-ui/icons'` |
| `DarkIcon` | `import { DarkIcon } from '@vapor-ui/icons'` |
| `DashboardIcon` | `import { DashboardIcon } from '@vapor-ui/icons'` |
| `DatabaseIcon` | `import { DatabaseIcon } from '@vapor-ui/icons'` |
| `DebugContinueIcon` | `import { DebugContinueIcon } from '@vapor-ui/icons'` |
| `DebugIcon` | `import { DebugIcon } from '@vapor-ui/icons'` |
| `DemocraticRepublicOfTheCongoColorIcon` | `import { DemocraticRepublicOfTheCongoColorIcon } from '@vapor-ui/icons'` |
| `DenmarkColorIcon` | `import { DenmarkColorIcon } from '@vapor-ui/icons'` |
| `DeployPushIcon` | `import { DeployPushIcon } from '@vapor-ui/icons'` |
| `DetailViewIcon` | `import { DetailViewIcon } from '@vapor-ui/icons'` |
| `DiscIcon` | `import { DiscIcon } from '@vapor-ui/icons'` |
| `DiscordColorIcon` | `import { DiscordColorIcon } from '@vapor-ui/icons'` |
| `DiscordIcon` | `import { DiscordIcon } from '@vapor-ui/icons'` |
| `DiscussionIcon` | `import { DiscussionIcon } from '@vapor-ui/icons'` |
| `DiskIcon` | `import { DiskIcon } from '@vapor-ui/icons'` |
| `DislikeIcon` | `import { DislikeIcon } from '@vapor-ui/icons'` |
| `DislikeThumbIcon` | `import { DislikeThumbIcon } from '@vapor-ui/icons'` |
| `DividerIcon` | `import { DividerIcon } from '@vapor-ui/icons'` |
| `DjiboutiColorIcon` | `import { DjiboutiColorIcon } from '@vapor-ui/icons'` |
| `DockerIcon` | `import { DockerIcon } from '@vapor-ui/icons'` |
| `DocktoBottomIcon` | `import { DocktoBottomIcon } from '@vapor-ui/icons'` |
| `DocumentViewerIcon` | `import { DocumentViewerIcon } from '@vapor-ui/icons'` |
| `DominicaColorIcon` | `import { DominicaColorIcon } from '@vapor-ui/icons'` |
| `DominicanRepublicColorIcon` | `import { DominicanRepublicColorIcon } from '@vapor-ui/icons'` |
| `DotIcon` | `import { DotIcon } from '@vapor-ui/icons'` |
| `DownloadIcon` | `import { DownloadIcon } from '@vapor-ui/icons'` |
| `DragIndicatorIcon` | `import { DragIndicatorIcon } from '@vapor-ui/icons'` |
| `EastTimorColorIcon` | `import { EastTimorColorIcon } from '@vapor-ui/icons'` |
| `EcuadorColorIcon` | `import { EcuadorColorIcon } from '@vapor-ui/icons'` |
| `EditIcon` | `import { EditIcon } from '@vapor-ui/icons'` |
| `EgyptColorIcon` | `import { EgyptColorIcon } from '@vapor-ui/icons'` |
| `ElSalvadorColorIcon` | `import { ElSalvadorColorIcon } from '@vapor-ui/icons'` |
| `EquatorialGuineaColorIcon` | `import { EquatorialGuineaColorIcon } from '@vapor-ui/icons'` |
| `EraserIcon` | `import { EraserIcon } from '@vapor-ui/icons'` |
| `EritreaColorIcon` | `import { EritreaColorIcon } from '@vapor-ui/icons'` |
| `ErrorCircleIcon` | `import { ErrorCircleIcon } from '@vapor-ui/icons'` |
| `EstoniaColorIcon` | `import { EstoniaColorIcon } from '@vapor-ui/icons'` |
| `EswatiniColorIcon` | `import { EswatiniColorIcon } from '@vapor-ui/icons'` |
| `EthiopiaColorIcon` | `import { EthiopiaColorIcon } from '@vapor-ui/icons'` |
| `ExamIcon` | `import { ExamIcon } from '@vapor-ui/icons'` |
| `ExamListIcon` | `import { ExamListIcon } from '@vapor-ui/icons'` |
| `ExamReportIcon` | `import { ExamReportIcon } from '@vapor-ui/icons'` |
| `ExploreIcon` | `import { ExploreIcon } from '@vapor-ui/icons'` |
| `ExportIcon` | `import { ExportIcon } from '@vapor-ui/icons'` |
| `ExportImageIcon` | `import { ExportImageIcon } from '@vapor-ui/icons'` |
| `FacebookColorIcon` | `import { FacebookColorIcon } from '@vapor-ui/icons'` |
| `FacebookIcon` | `import { FacebookIcon } from '@vapor-ui/icons'` |
| `FigmaColorIcon` | `import { FigmaColorIcon } from '@vapor-ui/icons'` |
| `FigmaIcon` | `import { FigmaIcon } from '@vapor-ui/icons'` |
| `FijiColorIcon` | `import { FijiColorIcon } from '@vapor-ui/icons'` |
| `FileAddIcon` | `import { FileAddIcon } from '@vapor-ui/icons'` |
| `FileDeleteIcon` | `import { FileDeleteIcon } from '@vapor-ui/icons'` |
| `FileIcon` | `import { FileIcon } from '@vapor-ui/icons'` |
| `FilenewIcon` | `import { FilenewIcon } from '@vapor-ui/icons'` |
| `FilterIcon` | `import { FilterIcon } from '@vapor-ui/icons'` |
| `FinlandColorIcon` | `import { FinlandColorIcon } from '@vapor-ui/icons'` |
| `FirefoxColorIcon` | `import { FirefoxColorIcon } from '@vapor-ui/icons'` |
| `FlagIcon` | `import { FlagIcon } from '@vapor-ui/icons'` |
| `FlaskIcon` | `import { FlaskIcon } from '@vapor-ui/icons'` |
| `FlightIcon` | `import { FlightIcon } from '@vapor-ui/icons'` |
| `FoldIcon` | `import { FoldIcon } from '@vapor-ui/icons'` |
| `FolderIcon` | `import { FolderIcon } from '@vapor-ui/icons'` |
| `FolderNewIcon` | `import { FolderNewIcon } from '@vapor-ui/icons'` |
| `FolderSearchIcon` | `import { FolderSearchIcon } from '@vapor-ui/icons'` |
| `ForkIcon` | `import { ForkIcon } from '@vapor-ui/icons'` |
| `FranceColorIcon` | `import { FranceColorIcon } from '@vapor-ui/icons'` |
| `FunctionIcon` | `import { FunctionIcon } from '@vapor-ui/icons'` |
| `GabonColorIcon` | `import { GabonColorIcon } from '@vapor-ui/icons'` |
| `GambiaColorIcon` | `import { GambiaColorIcon } from '@vapor-ui/icons'` |
| `GameIcon` | `import { GameIcon } from '@vapor-ui/icons'` |
| `GcpIcon` | `import { GcpIcon } from '@vapor-ui/icons'` |
| `GeorgiaColorIcon` | `import { GeorgiaColorIcon } from '@vapor-ui/icons'` |
| `GermanyColorIcon` | `import { GermanyColorIcon } from '@vapor-ui/icons'` |
| `GhanaColorIcon` | `import { GhanaColorIcon } from '@vapor-ui/icons'` |
| `GitIcon` | `import { GitIcon } from '@vapor-ui/icons'` |
| `GithubColorIcon` | `import { GithubColorIcon } from '@vapor-ui/icons'` |
| `GithubIcon` | `import { GithubIcon } from '@vapor-ui/icons'` |
| `GitlabIcon` | `import { GitlabIcon } from '@vapor-ui/icons'` |
| `GoogleCalendarIcon` | `import { GoogleCalendarIcon } from '@vapor-ui/icons'` |
| `GoogleColorIcon` | `import { GoogleColorIcon } from '@vapor-ui/icons'` |
| `GoogleDrawingIcon` | `import { GoogleDrawingIcon } from '@vapor-ui/icons'` |
| `GoogleIcon` | `import { GoogleIcon } from '@vapor-ui/icons'` |
| `GooglePresentationIcon` | `import { GooglePresentationIcon } from '@vapor-ui/icons'` |
| `GoogleSpreadsheetIcon` | `import { GoogleSpreadsheetIcon } from '@vapor-ui/icons'` |
| `GoormduinoIcon` | `import { GoormduinoIcon } from '@vapor-ui/icons'` |
| `GpuIcon` | `import { GpuIcon } from '@vapor-ui/icons'` |
| `GreeceColorIcon` | `import { GreeceColorIcon } from '@vapor-ui/icons'` |
| `GrenadaColorIcon` | `import { GrenadaColorIcon } from '@vapor-ui/icons'` |
| `GroupIcon` | `import { GroupIcon } from '@vapor-ui/icons'` |
| `GuatemalaColorIcon` | `import { GuatemalaColorIcon } from '@vapor-ui/icons'` |
| `GuestIcon` | `import { GuestIcon } from '@vapor-ui/icons'` |
| `GuineaBissauColorIcon` | `import { GuineaBissauColorIcon } from '@vapor-ui/icons'` |
| `GuineaColorIcon` | `import { GuineaColorIcon } from '@vapor-ui/icons'` |
| `GuyanaColorIcon` | `import { GuyanaColorIcon } from '@vapor-ui/icons'` |
| `HaitiColorIcon` | `import { HaitiColorIcon } from '@vapor-ui/icons'` |
| `HeartIcon` | `import { HeartIcon } from '@vapor-ui/icons'` |
| `HelpCircleIcon` | `import { HelpCircleIcon } from '@vapor-ui/icons'` |
| `HelpIcon` | `import { HelpIcon } from '@vapor-ui/icons'` |
| `HighlightViewIcon` | `import { HighlightViewIcon } from '@vapor-ui/icons'` |
| `HomeIcon` | `import { HomeIcon } from '@vapor-ui/icons'` |
| `HondurasColorIcon` | `import { HondurasColorIcon } from '@vapor-ui/icons'` |
| `HourglassIcon` | `import { HourglassIcon } from '@vapor-ui/icons'` |
| `HungaryColorIcon` | `import { HungaryColorIcon } from '@vapor-ui/icons'` |
| `IcelandColorIcon` | `import { IcelandColorIcon } from '@vapor-ui/icons'` |
| `IdCardIcon` | `import { IdCardIcon } from '@vapor-ui/icons'` |
| `IdeShareIcon` | `import { IdeShareIcon } from '@vapor-ui/icons'` |
| `ImageIcon` | `import { ImageIcon } from '@vapor-ui/icons'` |
| `ImagePackIcon` | `import { ImagePackIcon } from '@vapor-ui/icons'` |
| `ImageToContainerIcon` | `import { ImageToContainerIcon } from '@vapor-ui/icons'` |
| `ImportIcon` | `import { ImportIcon } from '@vapor-ui/icons'` |
| `IndiaColorIcon` | `import { IndiaColorIcon } from '@vapor-ui/icons'` |
| `IndonesiaColorIcon` | `import { IndonesiaColorIcon } from '@vapor-ui/icons'` |
| `InfoCircleIcon` | `import { InfoCircleIcon } from '@vapor-ui/icons'` |
| `InstagramColorIcon` | `import { InstagramColorIcon } from '@vapor-ui/icons'` |
| `InstagramIcon` | `import { InstagramIcon } from '@vapor-ui/icons'` |
| `IntelliSenseClassIcon` | `import { IntelliSenseClassIcon } from '@vapor-ui/icons'` |
| `IntelliSenseColorIcon` | `import { IntelliSenseColorIcon } from '@vapor-ui/icons'` |
| `IntelliSenseConstantIcon` | `import { IntelliSenseConstantIcon } from '@vapor-ui/icons'` |
| `IntelliSenseEnumIcon` | `import { IntelliSenseEnumIcon } from '@vapor-ui/icons'` |
| `IntelliSenseEventIcon` | `import { IntelliSenseEventIcon } from '@vapor-ui/icons'` |
| `IntelliSenseFunctionIcon` | `import { IntelliSenseFunctionIcon } from '@vapor-ui/icons'` |
| `IntelliSenseInterfaceIcon` | `import { IntelliSenseInterfaceIcon } from '@vapor-ui/icons'` |
| `IntelliSenseModuleIcon` | `import { IntelliSenseModuleIcon } from '@vapor-ui/icons'` |
| `IntelliSenseNullIcon` | `import { IntelliSenseNullIcon } from '@vapor-ui/icons'` |
| `IntelliSenseOperatorIcon` | `import { IntelliSenseOperatorIcon } from '@vapor-ui/icons'` |
| `IntelliSensePropertyIcon` | `import { IntelliSensePropertyIcon } from '@vapor-ui/icons'` |
| `IntelliSenseSnippetIcon` | `import { IntelliSenseSnippetIcon } from '@vapor-ui/icons'` |
| `IntelliSenseStructureIcon` | `import { IntelliSenseStructureIcon } from '@vapor-ui/icons'` |
| `IntelliSenseTextIcon` | `import { IntelliSenseTextIcon } from '@vapor-ui/icons'` |
| `IntelliSenseUnitIcon` | `import { IntelliSenseUnitIcon } from '@vapor-ui/icons'` |
| `IntelliSenseValueIcon` | `import { IntelliSenseValueIcon } from '@vapor-ui/icons'` |
| `IntellijColorIcon` | `import { IntellijColorIcon } from '@vapor-ui/icons'` |
| `IranColorIcon` | `import { IranColorIcon } from '@vapor-ui/icons'` |
| `IraqColorIcon` | `import { IraqColorIcon } from '@vapor-ui/icons'` |
| `IrelandColorIcon` | `import { IrelandColorIcon } from '@vapor-ui/icons'` |
| `IsraelColorIcon` | `import { IsraelColorIcon } from '@vapor-ui/icons'` |
| `ItalicIcon` | `import { ItalicIcon } from '@vapor-ui/icons'` |
| `ItalyColorIcon` | `import { ItalyColorIcon } from '@vapor-ui/icons'` |
| `IvoryCoastColorIcon` | `import { IvoryCoastColorIcon } from '@vapor-ui/icons'` |
| `JamaicaColorIcon` | `import { JamaicaColorIcon } from '@vapor-ui/icons'` |
| `JapanColorIcon` | `import { JapanColorIcon } from '@vapor-ui/icons'` |
| `JiraIcon` | `import { JiraIcon } from '@vapor-ui/icons'` |
| `JordanColorIcon` | `import { JordanColorIcon } from '@vapor-ui/icons'` |
| `JupyterColorIcon` | `import { JupyterColorIcon } from '@vapor-ui/icons'` |
| `JupyterlabColorIcon` | `import { JupyterlabColorIcon } from '@vapor-ui/icons'` |
| `JupyterlabIcon` | `import { JupyterlabIcon } from '@vapor-ui/icons'` |
| `KakaoIcon` | `import { KakaoIcon } from '@vapor-ui/icons'` |
| `KazakhstanColorIcon` | `import { KazakhstanColorIcon } from '@vapor-ui/icons'` |
| `KenyaColorIcon` | `import { KenyaColorIcon } from '@vapor-ui/icons'` |
| `KeyboardIcon` | `import { KeyboardIcon } from '@vapor-ui/icons'` |
| `KeyboardTabIcon` | `import { KeyboardTabIcon } from '@vapor-ui/icons'` |
| `KidIcon` | `import { KidIcon } from '@vapor-ui/icons'` |
| `KiribatiColorIcon` | `import { KiribatiColorIcon } from '@vapor-ui/icons'` |
| `KosovoColorIcon` | `import { KosovoColorIcon } from '@vapor-ui/icons'` |
| `KrampolineIcon` | `import { KrampolineIcon } from '@vapor-ui/icons'` |
| `KubernatesIcon` | `import { KubernatesIcon } from '@vapor-ui/icons'` |
| `KuwaitColorIcon` | `import { KuwaitColorIcon } from '@vapor-ui/icons'` |
| `KyrgyzstanColorIcon` | `import { KyrgyzstanColorIcon } from '@vapor-ui/icons'` |
| `LaosColorIcon` | `import { LaosColorIcon } from '@vapor-ui/icons'` |
| `LatviaColorIcon` | `import { LatviaColorIcon } from '@vapor-ui/icons'` |
| `LebanonColorIcon` | `import { LebanonColorIcon } from '@vapor-ui/icons'` |
| `LesothoColorIcon` | `import { LesothoColorIcon } from '@vapor-ui/icons'` |
| `LiberiaColorIcon` | `import { LiberiaColorIcon } from '@vapor-ui/icons'` |
| `LibyaColorIcon` | `import { LibyaColorIcon } from '@vapor-ui/icons'` |
| `LiechtensteinColorIcon` | `import { LiechtensteinColorIcon } from '@vapor-ui/icons'` |
| `LightIcon` | `import { LightIcon } from '@vapor-ui/icons'` |
| `LightbulbIcon` | `import { LightbulbIcon } from '@vapor-ui/icons'` |
| `LightningIcon` | `import { LightningIcon } from '@vapor-ui/icons'` |
| `LikeIcon` | `import { LikeIcon } from '@vapor-ui/icons'` |
| `LikeThumbIcon` | `import { LikeThumbIcon } from '@vapor-ui/icons'` |
| `LinkedinIcon` | `import { LinkedinIcon } from '@vapor-ui/icons'` |
| `ListIcon` | `import { ListIcon } from '@vapor-ui/icons'` |
| `ListNumberedIcon` | `import { ListNumberedIcon } from '@vapor-ui/icons'` |
| `LithuaniaColorIcon` | `import { LithuaniaColorIcon } from '@vapor-ui/icons'` |
| `LiveLessonIcon` | `import { LiveLessonIcon } from '@vapor-ui/icons'` |
| `LocationIcon` | `import { LocationIcon } from '@vapor-ui/icons'` |
| `LockIcon` | `import { LockIcon } from '@vapor-ui/icons'` |
| `LuxembourgColorIcon` | `import { LuxembourgColorIcon } from '@vapor-ui/icons'` |
| `MadagascarColorIcon` | `import { MadagascarColorIcon } from '@vapor-ui/icons'` |
| `MagicWandIcon` | `import { MagicWandIcon } from '@vapor-ui/icons'` |
| `MailIcon` | `import { MailIcon } from '@vapor-ui/icons'` |
| `MalawiColorIcon` | `import { MalawiColorIcon } from '@vapor-ui/icons'` |
| `MalaysiaColorIcon` | `import { MalaysiaColorIcon } from '@vapor-ui/icons'` |
| `MaldivesColorIcon` | `import { MaldivesColorIcon } from '@vapor-ui/icons'` |
| `MaliColorIcon` | `import { MaliColorIcon } from '@vapor-ui/icons'` |
| `MaltaColorIcon` | `import { MaltaColorIcon } from '@vapor-ui/icons'` |
| `MarkModeIcon` | `import { MarkModeIcon } from '@vapor-ui/icons'` |
| `MarkdownIcon` | `import { MarkdownIcon } from '@vapor-ui/icons'` |
| `MarshallIslandsColorIcon` | `import { MarshallIslandsColorIcon } from '@vapor-ui/icons'` |
| `MauritaniaColorIcon` | `import { MauritaniaColorIcon } from '@vapor-ui/icons'` |
| `MauritiusColorIcon` | `import { MauritiusColorIcon } from '@vapor-ui/icons'` |
| `MediumIcon` | `import { MediumIcon } from '@vapor-ui/icons'` |
| `MemoIcon` | `import { MemoIcon } from '@vapor-ui/icons'` |
| `MemoryIcon` | `import { MemoryIcon } from '@vapor-ui/icons'` |
| `MessageIcon` | `import { MessageIcon } from '@vapor-ui/icons'` |
| `MethodIcon` | `import { MethodIcon } from '@vapor-ui/icons'` |
| `MexicoColorIcon` | `import { MexicoColorIcon } from '@vapor-ui/icons'` |
| `MicOffIcon` | `import { MicOffIcon } from '@vapor-ui/icons'` |
| `MicOnIcon` | `import { MicOnIcon } from '@vapor-ui/icons'` |
| `MicronesiaColorIcon` | `import { MicronesiaColorIcon } from '@vapor-ui/icons'` |
| `MinusBoxIcon` | `import { MinusBoxIcon } from '@vapor-ui/icons'` |
| `MoldovaColorIcon` | `import { MoldovaColorIcon } from '@vapor-ui/icons'` |
| `MonacoColorIcon` | `import { MonacoColorIcon } from '@vapor-ui/icons'` |
| `MongoliaColorIcon` | `import { MongoliaColorIcon } from '@vapor-ui/icons'` |
| `MontenegroColorIcon` | `import { MontenegroColorIcon } from '@vapor-ui/icons'` |
| `MoroccoColorIcon` | `import { MoroccoColorIcon } from '@vapor-ui/icons'` |
| `MovieIcon` | `import { MovieIcon } from '@vapor-ui/icons'` |
| `MozambiqueColorIcon` | `import { MozambiqueColorIcon } from '@vapor-ui/icons'` |
| `MyanmarColorIcon` | `import { MyanmarColorIcon } from '@vapor-ui/icons'` |
| `MysqlColorIcon` | `import { MysqlColorIcon } from '@vapor-ui/icons'` |
| `MysqlIcon` | `import { MysqlIcon } from '@vapor-ui/icons'` |
| `NamibiaColorIcon` | `import { NamibiaColorIcon } from '@vapor-ui/icons'` |
| `NauruColorIcon` | `import { NauruColorIcon } from '@vapor-ui/icons'` |
| `NaverIcon` | `import { NaverIcon } from '@vapor-ui/icons'` |
| `NaverblogColorIcon` | `import { NaverblogColorIcon } from '@vapor-ui/icons'` |
| `NaverblogIcon` | `import { NaverblogIcon } from '@vapor-ui/icons'` |
| `NepalColorIcon` | `import { NepalColorIcon } from '@vapor-ui/icons'` |
| `NetherlandsColorIcon` | `import { NetherlandsColorIcon } from '@vapor-ui/icons'` |
| `NetworkIcon` | `import { NetworkIcon } from '@vapor-ui/icons'` |
| `NewZealandColorIcon` | `import { NewZealandColorIcon } from '@vapor-ui/icons'` |
| `NextIcon` | `import { NextIcon } from '@vapor-ui/icons'` |
| `NicaraguaColorIcon` | `import { NicaraguaColorIcon } from '@vapor-ui/icons'` |
| `NigerColorIcon` | `import { NigerColorIcon } from '@vapor-ui/icons'` |
| `NigeriaColorIcon` | `import { NigeriaColorIcon } from '@vapor-ui/icons'` |
| `NiueColorIcon` | `import { NiueColorIcon } from '@vapor-ui/icons'` |
| `NoImageIcon` | `import { NoImageIcon } from '@vapor-ui/icons'` |
| `NoUserIcon` | `import { NoUserIcon } from '@vapor-ui/icons'` |
| `NorthMacedoniaColorIcon` | `import { NorthMacedoniaColorIcon } from '@vapor-ui/icons'` |
| `NorwayColorIcon` | `import { NorwayColorIcon } from '@vapor-ui/icons'` |
| `NoticeBoardIcon` | `import { NoticeBoardIcon } from '@vapor-ui/icons'` |
| `NoticeCircleIcon` | `import { NoticeCircleIcon } from '@vapor-ui/icons'` |
| `NotionIcon` | `import { NotionIcon } from '@vapor-ui/icons'` |
| `ObjectIcon` | `import { ObjectIcon } from '@vapor-ui/icons'` |
| `OmanColorIcon` | `import { OmanColorIcon } from '@vapor-ui/icons'` |
| `OpenFileIcon` | `import { OpenFileIcon } from '@vapor-ui/icons'` |
| `OpenFolderIcon` | `import { OpenFolderIcon } from '@vapor-ui/icons'` |
| `OperaColorIcon` | `import { OperaColorIcon } from '@vapor-ui/icons'` |
| `OrganizationIcon` | `import { OrganizationIcon } from '@vapor-ui/icons'` |
| `PakistanColorIcon` | `import { PakistanColorIcon } from '@vapor-ui/icons'` |
| `PalauColorIcon` | `import { PalauColorIcon } from '@vapor-ui/icons'` |
| `PanamaColorIcon` | `import { PanamaColorIcon } from '@vapor-ui/icons'` |
| `PanelOpenIcon` | `import { PanelOpenIcon } from '@vapor-ui/icons'` |
| `PapuaNewGuineaColorIcon` | `import { PapuaNewGuineaColorIcon } from '@vapor-ui/icons'` |
| `ParaguayColorIcon` | `import { ParaguayColorIcon } from '@vapor-ui/icons'` |
| `ParentsIcon` | `import { ParentsIcon } from '@vapor-ui/icons'` |
| `PauseIcon` | `import { PauseIcon } from '@vapor-ui/icons'` |
| `PaycoIcon` | `import { PaycoIcon } from '@vapor-ui/icons'` |
| `PaypalColorIcon` | `import { PaypalColorIcon } from '@vapor-ui/icons'` |
| `PcIcon` | `import { PcIcon } from '@vapor-ui/icons'` |
| `PdfIcon` | `import { PdfIcon } from '@vapor-ui/icons'` |
| `PeruColorIcon` | `import { PeruColorIcon } from '@vapor-ui/icons'` |
| `PhilippinesColorIcon` | `import { PhilippinesColorIcon } from '@vapor-ui/icons'` |
| `PhoneIcon` | `import { PhoneIcon } from '@vapor-ui/icons'` |
| `PinSetIcon` | `import { PinSetIcon } from '@vapor-ui/icons'` |
| `PipetteIcon` | `import { PipetteIcon } from '@vapor-ui/icons'` |
| `PlansIcon` | `import { PlansIcon } from '@vapor-ui/icons'` |
| `PlayIcon` | `import { PlayIcon } from '@vapor-ui/icons'` |
| `PlugInIcon` | `import { PlugInIcon } from '@vapor-ui/icons'` |
| `PlugOutIcon` | `import { PlugOutIcon } from '@vapor-ui/icons'` |
| `PlusBoxIcon` | `import { PlusBoxIcon } from '@vapor-ui/icons'` |
| `PolandColorIcon` | `import { PolandColorIcon } from '@vapor-ui/icons'` |
| `PortforwardingIcon` | `import { PortforwardingIcon } from '@vapor-ui/icons'` |
| `PortugalColorIcon` | `import { PortugalColorIcon } from '@vapor-ui/icons'` |
| `PowerIcon` | `import { PowerIcon } from '@vapor-ui/icons'` |
| `PreIcon` | `import { PreIcon } from '@vapor-ui/icons'` |
| `PresentScreenIcon` | `import { PresentScreenIcon } from '@vapor-ui/icons'` |
| `PreviewIcon` | `import { PreviewIcon } from '@vapor-ui/icons'` |
| `PrintIcon` | `import { PrintIcon } from '@vapor-ui/icons'` |
| `ProductHuntColorIcon` | `import { ProductHuntColorIcon } from '@vapor-ui/icons'` |
| `ProgrammingIcon` | `import { ProgrammingIcon } from '@vapor-ui/icons'` |
| `ProjectIcon` | `import { ProjectIcon } from '@vapor-ui/icons'` |
| `ProjectOpenIcon` | `import { ProjectOpenIcon } from '@vapor-ui/icons'` |
| `ProjectSettingIcon` | `import { ProjectSettingIcon } from '@vapor-ui/icons'` |
| `PropertyIcon` | `import { PropertyIcon } from '@vapor-ui/icons'` |
| `PsychologyIcon` | `import { PsychologyIcon } from '@vapor-ui/icons'` |
| `PublishIcon` | `import { PublishIcon } from '@vapor-ui/icons'` |
| `QatarColorIcon` | `import { QatarColorIcon } from '@vapor-ui/icons'` |
| `QnAIcon` | `import { QnAIcon } from '@vapor-ui/icons'` |
| `QuoteIcon` | `import { QuoteIcon } from '@vapor-ui/icons'` |
| `ReferenceIcon` | `import { ReferenceIcon } from '@vapor-ui/icons'` |
| `RemoteIcon` | `import { RemoteIcon } from '@vapor-ui/icons'` |
| `RemoteOffIcon` | `import { RemoteOffIcon } from '@vapor-ui/icons'` |
| `ReplaceIcon` | `import { ReplaceIcon } from '@vapor-ui/icons'` |
| `RepublicOfTheCongoColorIcon` | `import { RepublicOfTheCongoColorIcon } from '@vapor-ui/icons'` |
| `ResultManagementIcon` | `import { ResultManagementIcon } from '@vapor-ui/icons'` |
| `RomaniaColorIcon` | `import { RomaniaColorIcon } from '@vapor-ui/icons'` |
| `RouteIcon` | `import { RouteIcon } from '@vapor-ui/icons'` |
| `RstudioColorIcon` | `import { RstudioColorIcon } from '@vapor-ui/icons'` |
| `RunIcon` | `import { RunIcon } from '@vapor-ui/icons'` |
| `RussiaColorIcon` | `import { RussiaColorIcon } from '@vapor-ui/icons'` |
| `RwandaColorIcon` | `import { RwandaColorIcon } from '@vapor-ui/icons'` |
| `SaintKittsAndNevisColorIcon` | `import { SaintKittsAndNevisColorIcon } from '@vapor-ui/icons'` |
| `SaintLuciaColorIcon` | `import { SaintLuciaColorIcon } from '@vapor-ui/icons'` |
| `SaintVincentAndTheGrenadinesColorIcon` | `import { SaintVincentAndTheGrenadinesColorIcon } from '@vapor-ui/icons'` |
| `SamoaColorIcon` | `import { SamoaColorIcon } from '@vapor-ui/icons'` |
| `SanMarinoColorIcon` | `import { SanMarinoColorIcon } from '@vapor-ui/icons'` |
| `SaoTomeAndPrincipeColorIcon` | `import { SaoTomeAndPrincipeColorIcon } from '@vapor-ui/icons'` |
| `SaudiArabiaColorIcon` | `import { SaudiArabiaColorIcon } from '@vapor-ui/icons'` |
| `SaveAsIcon` | `import { SaveAsIcon } from '@vapor-ui/icons'` |
| `SaveIcon` | `import { SaveIcon } from '@vapor-ui/icons'` |
| `SavingIcon` | `import { SavingIcon } from '@vapor-ui/icons'` |
| `SbomIcon` | `import { SbomIcon } from '@vapor-ui/icons'` |
| `SchoolIcon` | `import { SchoolIcon } from '@vapor-ui/icons'` |
| `SendIcon` | `import { SendIcon } from '@vapor-ui/icons'` |
| `SenegalColorIcon` | `import { SenegalColorIcon } from '@vapor-ui/icons'` |
| `SentryIcon` | `import { SentryIcon } from '@vapor-ui/icons'` |
| `SerbiaColorIcon` | `import { SerbiaColorIcon } from '@vapor-ui/icons'` |
| `SettingIcon` | `import { SettingIcon } from '@vapor-ui/icons'` |
| `SeychellesColorIcon` | `import { SeychellesColorIcon } from '@vapor-ui/icons'` |
| `ShareIcon` | `import { ShareIcon } from '@vapor-ui/icons'` |
| `ShoppingCartIcon` | `import { ShoppingCartIcon } from '@vapor-ui/icons'` |
| `SideNavIcon` | `import { SideNavIcon } from '@vapor-ui/icons'` |
| `SierraLeoneColorIcon` | `import { SierraLeoneColorIcon } from '@vapor-ui/icons'` |
| `SingaporeColorIcon` | `import { SingaporeColorIcon } from '@vapor-ui/icons'` |
| `SlackColorIcon` | `import { SlackColorIcon } from '@vapor-ui/icons'` |
| `SlackIcon` | `import { SlackIcon } from '@vapor-ui/icons'` |
| `SlotIcon` | `import { SlotIcon } from '@vapor-ui/icons'` |
| `SlovakiaColorIcon` | `import { SlovakiaColorIcon } from '@vapor-ui/icons'` |
| `SloveniaColorIcon` | `import { SloveniaColorIcon } from '@vapor-ui/icons'` |
| `SolomonIslandsColorIcon` | `import { SolomonIslandsColorIcon } from '@vapor-ui/icons'` |
| `SomaliaColorIcon` | `import { SomaliaColorIcon } from '@vapor-ui/icons'` |
| `SoundOffIcon` | `import { SoundOffIcon } from '@vapor-ui/icons'` |
| `SoundOnIcon` | `import { SoundOnIcon } from '@vapor-ui/icons'` |
| `SourcecodeIcon` | `import { SourcecodeIcon } from '@vapor-ui/icons'` |
| `SouthAfricaColorIcon` | `import { SouthAfricaColorIcon } from '@vapor-ui/icons'` |
| `SouthKoreaColorIcon` | `import { SouthKoreaColorIcon } from '@vapor-ui/icons'` |
| `SouthSudanColorIcon` | `import { SouthSudanColorIcon } from '@vapor-ui/icons'` |
| `SpainColorIcon` | `import { SpainColorIcon } from '@vapor-ui/icons'` |
| `SplitIcon` | `import { SplitIcon } from '@vapor-ui/icons'` |
| `SriLankaColorIcon` | `import { SriLankaColorIcon } from '@vapor-ui/icons'` |
| `SshIcon` | `import { SshIcon } from '@vapor-ui/icons'` |
| `StarIcon` | `import { StarIcon } from '@vapor-ui/icons'` |
| `StopIcon` | `import { StopIcon } from '@vapor-ui/icons'` |
| `StorageIcon` | `import { StorageIcon } from '@vapor-ui/icons'` |
| `StorybookColorIcon` | `import { StorybookColorIcon } from '@vapor-ui/icons'` |
| `StorybookIcon` | `import { StorybookIcon } from '@vapor-ui/icons'` |
| `StripeColorIcon` | `import { StripeColorIcon } from '@vapor-ui/icons'` |
| `StripeIcon` | `import { StripeIcon } from '@vapor-ui/icons'` |
| `StruckIcon` | `import { StruckIcon } from '@vapor-ui/icons'` |
| `StudentManagementIcon` | `import { StudentManagementIcon } from '@vapor-ui/icons'` |
| `SudanColorIcon` | `import { SudanColorIcon } from '@vapor-ui/icons'` |
| `SurinameColorIcon` | `import { SurinameColorIcon } from '@vapor-ui/icons'` |
| `SwedenColorIcon` | `import { SwedenColorIcon } from '@vapor-ui/icons'` |
| `SwitzerlandColorIcon` | `import { SwitzerlandColorIcon } from '@vapor-ui/icons'` |
| `SyllabusIcon` | `import { SyllabusIcon } from '@vapor-ui/icons'` |
| `SyriaColorIcon` | `import { SyriaColorIcon } from '@vapor-ui/icons'` |
| `TabletIcon` | `import { TabletIcon } from '@vapor-ui/icons'` |
| `TaegukColorIcon` | `import { TaegukColorIcon } from '@vapor-ui/icons'` |
| `TaegukIcon` | `import { TaegukIcon } from '@vapor-ui/icons'` |
| `TajikistanColorIcon` | `import { TajikistanColorIcon } from '@vapor-ui/icons'` |
| `TakeoffIcon` | `import { TakeoffIcon } from '@vapor-ui/icons'` |
| `TanzaniaColorIcon` | `import { TanzaniaColorIcon } from '@vapor-ui/icons'` |
| `TestIcon` | `import { TestIcon } from '@vapor-ui/icons'` |
| `ThailandColorIcon` | `import { ThailandColorIcon } from '@vapor-ui/icons'` |
| `TimeIcon` | `import { TimeIcon } from '@vapor-ui/icons'` |
| `TogoColorIcon` | `import { TogoColorIcon } from '@vapor-ui/icons'` |
| `TongaColorIcon` | `import { TongaColorIcon } from '@vapor-ui/icons'` |
| `TrashIcon` | `import { TrashIcon } from '@vapor-ui/icons'` |
| `TreeCollapseIcon` | `import { TreeCollapseIcon } from '@vapor-ui/icons'` |
| `TrelloIcon` | `import { TrelloIcon } from '@vapor-ui/icons'` |
| `TrinidadAndTobagoColorIcon` | `import { TrinidadAndTobagoColorIcon } from '@vapor-ui/icons'` |
| `TunisiaColorIcon` | `import { TunisiaColorIcon } from '@vapor-ui/icons'` |
| `TurkeyColorIcon` | `import { TurkeyColorIcon } from '@vapor-ui/icons'` |
| `TurkmenistanColorIcon` | `import { TurkmenistanColorIcon } from '@vapor-ui/icons'` |
| `TuvaluColorIcon` | `import { TuvaluColorIcon } from '@vapor-ui/icons'` |
| `TwoFileIcon` | `import { TwoFileIcon } from '@vapor-ui/icons'` |
| `UgandaColorIcon` | `import { UgandaColorIcon } from '@vapor-ui/icons'` |
| `UkraineColorIcon` | `import { UkraineColorIcon } from '@vapor-ui/icons'` |
| `UnitedArabEmiratesColorIcon` | `import { UnitedArabEmiratesColorIcon } from '@vapor-ui/icons'` |
| `UnitedKingdomColorIcon` | `import { UnitedKingdomColorIcon } from '@vapor-ui/icons'` |
| `UnitedStatesColorIcon` | `import { UnitedStatesColorIcon } from '@vapor-ui/icons'` |
| `UnlockIcon` | `import { UnlockIcon } from '@vapor-ui/icons'` |
| `UploadIcon` | `import { UploadIcon } from '@vapor-ui/icons'` |
| `UppercaseIcon` | `import { UppercaseIcon } from '@vapor-ui/icons'` |
| `UruguayColorIcon` | `import { UruguayColorIcon } from '@vapor-ui/icons'` |
| `UserCheckIcon` | `import { UserCheckIcon } from '@vapor-ui/icons'` |
| `UserIcon` | `import { UserIcon } from '@vapor-ui/icons'` |
| `UserMoveIcon` | `import { UserMoveIcon } from '@vapor-ui/icons'` |
| `UserSearchIcon` | `import { UserSearchIcon } from '@vapor-ui/icons'` |
| `UzbekistanColorIcon` | `import { UzbekistanColorIcon } from '@vapor-ui/icons'` |
| `VanuatuColorIcon` | `import { VanuatuColorIcon } from '@vapor-ui/icons'` |
| `VariableIcon` | `import { VariableIcon } from '@vapor-ui/icons'` |
| `VaticanCityColorIcon` | `import { VaticanCityColorIcon } from '@vapor-ui/icons'` |
| `VenezuelaColorIcon` | `import { VenezuelaColorIcon } from '@vapor-ui/icons'` |
| `VideocamOffIcon` | `import { VideocamOffIcon } from '@vapor-ui/icons'` |
| `VideocamOnIcon` | `import { VideocamOnIcon } from '@vapor-ui/icons'` |
| `VietnamColorIcon` | `import { VietnamColorIcon } from '@vapor-ui/icons'` |
| `ViewModuleIcon` | `import { ViewModuleIcon } from '@vapor-ui/icons'` |
| `ViewOffIcon` | `import { ViewOffIcon } from '@vapor-ui/icons'` |
| `ViewOnIcon` | `import { ViewOnIcon } from '@vapor-ui/icons'` |
| `VscodeColorIcon` | `import { VscodeColorIcon } from '@vapor-ui/icons'` |
| `VscodeIcon` | `import { VscodeIcon } from '@vapor-ui/icons'` |
| `WarningIcon` | `import { WarningIcon } from '@vapor-ui/icons'` |
| `WordMatchIcon` | `import { WordMatchIcon } from '@vapor-ui/icons'` |
| `XIcon` | `import { XIcon } from '@vapor-ui/icons'` |
| `YemenColorIcon` | `import { YemenColorIcon } from '@vapor-ui/icons'` |
| `YoutubeColorIcon` | `import { YoutubeColorIcon } from '@vapor-ui/icons'` |
| `YoutubeIcon` | `import { YoutubeIcon } from '@vapor-ui/icons'` |
| `ZambiaColorIcon` | `import { ZambiaColorIcon } from '@vapor-ui/icons'` |
| `ZimbabweColorIcon` | `import { ZimbabweColorIcon } from '@vapor-ui/icons'` |
## Outline Icons
| Icon Name | Import Statement |
| -------------------------------------- | ------------------------------------------------------------------------ |
| `AccessibilityOutlineIcon` | `import { AccessibilityOutlineIcon } from '@vapor-ui/icons'` |
| `AchievementOutlineIcon` | `import { AchievementOutlineIcon } from '@vapor-ui/icons'` |
| `AddCartOutlineIcon` | `import { AddCartOutlineIcon } from '@vapor-ui/icons'` |
| `AddUserOutlineIcon` | `import { AddUserOutlineIcon } from '@vapor-ui/icons'` |
| `AiGoormeeOutlineIcon` | `import { AiGoormeeOutlineIcon } from '@vapor-ui/icons'` |
| `AiSmartieOutlineIcon` | `import { AiSmartieOutlineIcon } from '@vapor-ui/icons'` |
| `AichatOutlineIcon` | `import { AichatOutlineIcon } from '@vapor-ui/icons'` |
| `AirplayOutlineIcon` | `import { AirplayOutlineIcon } from '@vapor-ui/icons'` |
| `AlgorithmOutlineIcon` | `import { AlgorithmOutlineIcon } from '@vapor-ui/icons'` |
| `AlignCenterOutlineIcon` | `import { AlignCenterOutlineIcon } from '@vapor-ui/icons'` |
| `AlignJustifyOutlineIcon` | `import { AlignJustifyOutlineIcon } from '@vapor-ui/icons'` |
| `AlignLeftOutlineIcon` | `import { AlignLeftOutlineIcon } from '@vapor-ui/icons'` |
| `AlignRightOutlineIcon` | `import { AlignRightOutlineIcon } from '@vapor-ui/icons'` |
| `AnalysisOutlineIcon` | `import { AnalysisOutlineIcon } from '@vapor-ui/icons'` |
| `ArrowDownOutlineIcon` | `import { ArrowDownOutlineIcon } from '@vapor-ui/icons'` |
| `ArrowUpOutlineIcon` | `import { ArrowUpOutlineIcon } from '@vapor-ui/icons'` |
| `AssignmentOutlineIcon` | `import { AssignmentOutlineIcon } from '@vapor-ui/icons'` |
| `AttachFileOutlineIcon` | `import { AttachFileOutlineIcon } from '@vapor-ui/icons'` |
| `AttemptOutlineIcon` | `import { AttemptOutlineIcon } from '@vapor-ui/icons'` |
| `AutoCodeOutlineIcon` | `import { AutoCodeOutlineIcon } from '@vapor-ui/icons'` |
| `BackPageOutlineIcon` | `import { BackPageOutlineIcon } from '@vapor-ui/icons'` |
| `BackUpOutlineIcon` | `import { BackUpOutlineIcon } from '@vapor-ui/icons'` |
| `BedOutlineIcon` | `import { BedOutlineIcon } from '@vapor-ui/icons'` |
| `BellOffOutlineIcon` | `import { BellOffOutlineIcon } from '@vapor-ui/icons'` |
| `BellOnOutlineIcon` | `import { BellOnOutlineIcon } from '@vapor-ui/icons'` |
| `BlankOutlineIcon` | `import { BlankOutlineIcon } from '@vapor-ui/icons'` |
| `BlockOutlineIcon` | `import { BlockOutlineIcon } from '@vapor-ui/icons'` |
| `BoldOutlineIcon` | `import { BoldOutlineIcon } from '@vapor-ui/icons'` |
| `BookOutlineIcon` | `import { BookOutlineIcon } from '@vapor-ui/icons'` |
| `BookmarkOutlineIcon` | `import { BookmarkOutlineIcon } from '@vapor-ui/icons'` |
| `BottomPlayerOutlineIcon` | `import { BottomPlayerOutlineIcon } from '@vapor-ui/icons'` |
| `BranchOutlineIcon` | `import { BranchOutlineIcon } from '@vapor-ui/icons'` |
| `BuildOutlineIcon` | `import { BuildOutlineIcon } from '@vapor-ui/icons'` |
| `BulletlistOutlineIcon` | `import { BulletlistOutlineIcon } from '@vapor-ui/icons'` |
| `CafeOutlineIcon` | `import { CafeOutlineIcon } from '@vapor-ui/icons'` |
| `CakeOutlineIcon` | `import { CakeOutlineIcon } from '@vapor-ui/icons'` |
| `CalculatorOutlineIcon` | `import { CalculatorOutlineIcon } from '@vapor-ui/icons'` |
| `CalendarOutlineIcon` | `import { CalendarOutlineIcon } from '@vapor-ui/icons'` |
| `CallOutlineIcon` | `import { CallOutlineIcon } from '@vapor-ui/icons'` |
| `CameraOutlineIcon` | `import { CameraOutlineIcon } from '@vapor-ui/icons'` |
| `CampOutlineIcon` | `import { CampOutlineIcon } from '@vapor-ui/icons'` |
| `CaptionOutlineIcon` | `import { CaptionOutlineIcon } from '@vapor-ui/icons'` |
| `CarOutlineIcon` | `import { CarOutlineIcon } from '@vapor-ui/icons'` |
| `CardsOutlineIcon` | `import { CardsOutlineIcon } from '@vapor-ui/icons'` |
| `CertificateOutlineIcon` | `import { CertificateOutlineIcon } from '@vapor-ui/icons'` |
| `ChapterOutlineIcon` | `import { ChapterOutlineIcon } from '@vapor-ui/icons'` |
| `ChartOutlineIcon` | `import { ChartOutlineIcon } from '@vapor-ui/icons'` |
| `ChartPieOutlineIcon` | `import { ChartPieOutlineIcon } from '@vapor-ui/icons'` |
| `CheckCartOutlineIcon` | `import { CheckCartOutlineIcon } from '@vapor-ui/icons'` |
| `CheckCircleOutlineIcon` | `import { CheckCircleOutlineIcon } from '@vapor-ui/icons'` |
| `ChecklistOutlineIcon` | `import { ChecklistOutlineIcon } from '@vapor-ui/icons'` |
| `ChevronDoubleLeftOutlineIcon` | `import { ChevronDoubleLeftOutlineIcon } from '@vapor-ui/icons'` |
| `ChevronDoubleRightOutlineIcon` | `import { ChevronDoubleRightOutlineIcon } from '@vapor-ui/icons'` |
| `ChevronDownOutlineIcon` | `import { ChevronDownOutlineIcon } from '@vapor-ui/icons'` |
| `ChevronLeftOutlineIcon` | `import { ChevronLeftOutlineIcon } from '@vapor-ui/icons'` |
| `ChevronRightOutlineIcon` | `import { ChevronRightOutlineIcon } from '@vapor-ui/icons'` |
| `ChevronUpOutlineIcon` | `import { ChevronUpOutlineIcon } from '@vapor-ui/icons'` |
| `CloseOutlineIcon` | `import { CloseOutlineIcon } from '@vapor-ui/icons'` |
| `CodeBlockOutlineIcon` | `import { CodeBlockOutlineIcon } from '@vapor-ui/icons'` |
| `CollaborationOutlineIcon` | `import { CollaborationOutlineIcon } from '@vapor-ui/icons'` |
| `CollapseOutlineIcon` | `import { CollapseOutlineIcon } from '@vapor-ui/icons'` |
| `CommitOutlineIcon` | `import { CommitOutlineIcon } from '@vapor-ui/icons'` |
| `ConfirmOutlineIcon` | `import { ConfirmOutlineIcon } from '@vapor-ui/icons'` |
| `ContainerOutlineIcon` | `import { ContainerOutlineIcon } from '@vapor-ui/icons'` |
| `ContainerRunOutlineIcon` | `import { ContainerRunOutlineIcon } from '@vapor-ui/icons'` |
| `ContainerShareOutlineIcon` | `import { ContainerShareOutlineIcon } from '@vapor-ui/icons'` |
| `ContainerStopOutlineIcon` | `import { ContainerStopOutlineIcon } from '@vapor-ui/icons'` |
| `ControlCommonOutlineIcon` | `import { ControlCommonOutlineIcon } from '@vapor-ui/icons'` |
| `CopyAsMarkdownOutlineIcon` | `import { CopyAsMarkdownOutlineIcon } from '@vapor-ui/icons'` |
| `CopyOutlineIcon` | `import { CopyOutlineIcon } from '@vapor-ui/icons'` |
| `CorrectOutlineIcon` | `import { CorrectOutlineIcon } from '@vapor-ui/icons'` |
| `CouponOutlineIcon` | `import { CouponOutlineIcon } from '@vapor-ui/icons'` |
| `CourseOutlineIcon` | `import { CourseOutlineIcon } from '@vapor-ui/icons'` |
| `CpuOutlineIcon` | `import { CpuOutlineIcon } from '@vapor-ui/icons'` |
| `CreateBranchOutlineIcon` | `import { CreateBranchOutlineIcon } from '@vapor-ui/icons'` |
| `CreditCardOutlineIcon` | `import { CreditCardOutlineIcon } from '@vapor-ui/icons'` |
| `DarkOutlineIcon` | `import { DarkOutlineIcon } from '@vapor-ui/icons'` |
| `DashboardOutlineIcon` | `import { DashboardOutlineIcon } from '@vapor-ui/icons'` |
| `DatabaseOutlineIcon` | `import { DatabaseOutlineIcon } from '@vapor-ui/icons'` |
| `DebugOutlineIcon` | `import { DebugOutlineIcon } from '@vapor-ui/icons'` |
| `DeployOutlineIcon` | `import { DeployOutlineIcon } from '@vapor-ui/icons'` |
| `DeployPushOutlineIcon` | `import { DeployPushOutlineIcon } from '@vapor-ui/icons'` |
| `DetailViewOutlineIcon` | `import { DetailViewOutlineIcon } from '@vapor-ui/icons'` |
| `DiscOutlineIcon` | `import { DiscOutlineIcon } from '@vapor-ui/icons'` |
| `DiscardOutlineIcon` | `import { DiscardOutlineIcon } from '@vapor-ui/icons'` |
| `DiscussionOutlineIcon` | `import { DiscussionOutlineIcon } from '@vapor-ui/icons'` |
| `DislikeOutlineIcon` | `import { DislikeOutlineIcon } from '@vapor-ui/icons'` |
| `DislikeThumbOutlineIcon` | `import { DislikeThumbOutlineIcon } from '@vapor-ui/icons'` |
| `DividerOutlineIcon` | `import { DividerOutlineIcon } from '@vapor-ui/icons'` |
| `DocktoBottomOutlineIcon` | `import { DocktoBottomOutlineIcon } from '@vapor-ui/icons'` |
| `DocumentViewerOutlineIcon` | `import { DocumentViewerOutlineIcon } from '@vapor-ui/icons'` |
| `DollarOutlineIcon` | `import { DollarOutlineIcon } from '@vapor-ui/icons'` |
| `DownloadOutlineIcon` | `import { DownloadOutlineIcon } from '@vapor-ui/icons'` |
| `EditOutlineIcon` | `import { EditOutlineIcon } from '@vapor-ui/icons'` |
| `EnterOutlineIcon` | `import { EnterOutlineIcon } from '@vapor-ui/icons'` |
| `EqualOutlineIcon` | `import { EqualOutlineIcon } from '@vapor-ui/icons'` |
| `EraserOutlineIcon` | `import { EraserOutlineIcon } from '@vapor-ui/icons'` |
| `ErrorCircleOutlineIcon` | `import { ErrorCircleOutlineIcon } from '@vapor-ui/icons'` |
| `ExamListOutlineIcon` | `import { ExamListOutlineIcon } from '@vapor-ui/icons'` |
| `ExamOutlineIcon` | `import { ExamOutlineIcon } from '@vapor-ui/icons'` |
| `ExamReportOutlineIcon` | `import { ExamReportOutlineIcon } from '@vapor-ui/icons'` |
| `ExpandOutlineIcon` | `import { ExpandOutlineIcon } from '@vapor-ui/icons'` |
| `ExploreOutlineIcon` | `import { ExploreOutlineIcon } from '@vapor-ui/icons'` |
| `ExportOutlineIcon` | `import { ExportOutlineIcon } from '@vapor-ui/icons'` |
| `FileAddOutlineIcon` | `import { FileAddOutlineIcon } from '@vapor-ui/icons'` |
| `FileDeleteOutlineIcon` | `import { FileDeleteOutlineIcon } from '@vapor-ui/icons'` |
| `FileEditOutlineIcon` | `import { FileEditOutlineIcon } from '@vapor-ui/icons'` |
| `FileNewOutlineIcon` | `import { FileNewOutlineIcon } from '@vapor-ui/icons'` |
| `FileOutlineIcon` | `import { FileOutlineIcon } from '@vapor-ui/icons'` |
| `FilterOutlineIcon` | `import { FilterOutlineIcon } from '@vapor-ui/icons'` |
| `FlagOutlineIcon` | `import { FlagOutlineIcon } from '@vapor-ui/icons'` |
| `FoldOutlineIcon` | `import { FoldOutlineIcon } from '@vapor-ui/icons'` |
| `FolderNewOutlineIcon` | `import { FolderNewOutlineIcon } from '@vapor-ui/icons'` |
| `FolderOutlineIcon` | `import { FolderOutlineIcon } from '@vapor-ui/icons'` |
| `FolderSearchOutlineIcon` | `import { FolderSearchOutlineIcon } from '@vapor-ui/icons'` |
| `ForkOutlineIcon` | `import { ForkOutlineIcon } from '@vapor-ui/icons'` |
| `FormatColorTextOutlineIcon` | `import { FormatColorTextOutlineIcon } from '@vapor-ui/icons'` |
| `ForwardPageOutlineIcon` | `import { ForwardPageOutlineIcon } from '@vapor-ui/icons'` |
| `FunctionOutlineIcon` | `import { FunctionOutlineIcon } from '@vapor-ui/icons'` |
| `FunctionsOutlineIcon` | `import { FunctionsOutlineIcon } from '@vapor-ui/icons'` |
| `GameOutlineIcon` | `import { GameOutlineIcon } from '@vapor-ui/icons'` |
| `GiftOutlineIcon` | `import { GiftOutlineIcon } from '@vapor-ui/icons'` |
| `GitMergeOutlineIcon` | `import { GitMergeOutlineIcon } from '@vapor-ui/icons'` |
| `GlobalOutlineIcon` | `import { GlobalOutlineIcon } from '@vapor-ui/icons'` |
| `GoogleDrawingOutlineIcon` | `import { GoogleDrawingOutlineIcon } from '@vapor-ui/icons'` |
| `GooglePresentationOutlineIcon` | `import { GooglePresentationOutlineIcon } from '@vapor-ui/icons'` |
| `GoogleSpreadsheetOutlineIcon` | `import { GoogleSpreadsheetOutlineIcon } from '@vapor-ui/icons'` |
| `GroupOutlineIcon` | `import { GroupOutlineIcon } from '@vapor-ui/icons'` |
| `HardBreakOutlineIcon` | `import { HardBreakOutlineIcon } from '@vapor-ui/icons'` |
| `Heading1OutlineIcon` | `import { Heading1OutlineIcon } from '@vapor-ui/icons'` |
| `Heading2OutlineIcon` | `import { Heading2OutlineIcon } from '@vapor-ui/icons'` |
| `Heading3OutlineIcon` | `import { Heading3OutlineIcon } from '@vapor-ui/icons'` |
| `Heading4OutlineIcon` | `import { Heading4OutlineIcon } from '@vapor-ui/icons'` |
| `HeartOutlineIcon` | `import { HeartOutlineIcon } from '@vapor-ui/icons'` |
| `HelpCircleOutlineIcon` | `import { HelpCircleOutlineIcon } from '@vapor-ui/icons'` |
| `HighlightViewOutlineIcon` | `import { HighlightViewOutlineIcon } from '@vapor-ui/icons'` |
| `HistoryOutlineIcon` | `import { HistoryOutlineIcon } from '@vapor-ui/icons'` |
| `HomeOutlineIcon` | `import { HomeOutlineIcon } from '@vapor-ui/icons'` |
| `IdCardOutlineIcon` | `import { IdCardOutlineIcon } from '@vapor-ui/icons'` |
| `ImageOutlineIcon` | `import { ImageOutlineIcon } from '@vapor-ui/icons'` |
| `ImagePackOutlineIcon` | `import { ImagePackOutlineIcon } from '@vapor-ui/icons'` |
| `ImageToContainerOutlineIcon` | `import { ImageToContainerOutlineIcon } from '@vapor-ui/icons'` |
| `ImportOutlineIcon` | `import { ImportOutlineIcon } from '@vapor-ui/icons'` |
| `InOutlineIcon` | `import { InOutlineIcon } from '@vapor-ui/icons'` |
| `IndentDecreaseOutlineIcon` | `import { IndentDecreaseOutlineIcon } from '@vapor-ui/icons'` |
| `IndentIncreaseOutlineIcon` | `import { IndentIncreaseOutlineIcon } from '@vapor-ui/icons'` |
| `InfiniteOutlineIcon` | `import { InfiniteOutlineIcon } from '@vapor-ui/icons'` |
| `InfoCircleOutlineIcon` | `import { InfoCircleOutlineIcon } from '@vapor-ui/icons'` |
| `InputSettingOutlineIcon` | `import { InputSettingOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseEnumOutlineIcon` | `import { IntelliSenseEnumOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseEventOutlineIcon` | `import { IntelliSenseEventOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseFieldOutlineIcon` | `import { IntelliSenseFieldOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseModuleOutlineIcon` | `import { IntelliSenseModuleOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSensePropertyOutlineIcon` | `import { IntelliSensePropertyOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseReferenceOutlineIcon` | `import { IntelliSenseReferenceOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseSnippetOutlineIcon` | `import { IntelliSenseSnippetOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseTypeParameterOutlineIcon` | `import { IntelliSenseTypeParameterOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseUnitOutlineIcon` | `import { IntelliSenseUnitOutlineIcon } from '@vapor-ui/icons'` |
| `IntelliSenseVariableOutlineIcon` | `import { IntelliSenseVariableOutlineIcon } from '@vapor-ui/icons'` |
| `KeyboardOutlineIcon` | `import { KeyboardOutlineIcon } from '@vapor-ui/icons'` |
| `KidOutlineIcon` | `import { KidOutlineIcon } from '@vapor-ui/icons'` |
| `LightOutlineIcon` | `import { LightOutlineIcon } from '@vapor-ui/icons'` |
| `LightbulbOutlineIcon` | `import { LightbulbOutlineIcon } from '@vapor-ui/icons'` |
| `LightningOutlineIcon` | `import { LightningOutlineIcon } from '@vapor-ui/icons'` |
| `LikeOutlineIcon` | `import { LikeOutlineIcon } from '@vapor-ui/icons'` |
| `LikeThumbOutlineIcon` | `import { LikeThumbOutlineIcon } from '@vapor-ui/icons'` |
| `LineSpacingOutlineIcon` | `import { LineSpacingOutlineIcon } from '@vapor-ui/icons'` |
| `LineStyleOutlineIcon` | `import { LineStyleOutlineIcon } from '@vapor-ui/icons'` |
| `LinearScaleOutlineIcon` | `import { LinearScaleOutlineIcon } from '@vapor-ui/icons'` |
| `LinkOffOutlineIcon` | `import { LinkOffOutlineIcon } from '@vapor-ui/icons'` |
| `LinkOutlineIcon` | `import { LinkOutlineIcon } from '@vapor-ui/icons'` |
| `LiveLessonOutlineIcon` | `import { LiveLessonOutlineIcon } from '@vapor-ui/icons'` |
| `LocationOutlineIcon` | `import { LocationOutlineIcon } from '@vapor-ui/icons'` |
| `LockOutlineIcon` | `import { LockOutlineIcon } from '@vapor-ui/icons'` |
| `LongTextOutlineIcon` | `import { LongTextOutlineIcon } from '@vapor-ui/icons'` |
| `MagicWandOutlineIcon` | `import { MagicWandOutlineIcon } from '@vapor-ui/icons'` |
| `MailOutlineIcon` | `import { MailOutlineIcon } from '@vapor-ui/icons'` |
| `ManagementOutlineIcon` | `import { ManagementOutlineIcon } from '@vapor-ui/icons'` |
| `MarkModeOutlineIcon` | `import { MarkModeOutlineIcon } from '@vapor-ui/icons'` |
| `MarkdownOutlineIcon` | `import { MarkdownOutlineIcon } from '@vapor-ui/icons'` |
| `MemoOutlineIcon` | `import { MemoOutlineIcon } from '@vapor-ui/icons'` |
| `MenuOutlineIcon` | `import { MenuOutlineIcon } from '@vapor-ui/icons'` |
| `MergeUpOutlineIcon` | `import { MergeUpOutlineIcon } from '@vapor-ui/icons'` |
| `MessageOutlineIcon` | `import { MessageOutlineIcon } from '@vapor-ui/icons'` |
| `MethodOutlineIcon` | `import { MethodOutlineIcon } from '@vapor-ui/icons'` |
| `MicOffOutlineIcon` | `import { MicOffOutlineIcon } from '@vapor-ui/icons'` |
| `MicOnOutlineIcon` | `import { MicOnOutlineIcon } from '@vapor-ui/icons'` |
| `MinusBoxOutlineIcon` | `import { MinusBoxOutlineIcon } from '@vapor-ui/icons'` |
| `MinusOutlineIcon` | `import { MinusOutlineIcon } from '@vapor-ui/icons'` |
| `MoreCommonOutlineIcon` | `import { MoreCommonOutlineIcon } from '@vapor-ui/icons'` |
| `MovieOutlineIcon` | `import { MovieOutlineIcon } from '@vapor-ui/icons'` |
| `NetfficeOutlineIcon` | `import { NetfficeOutlineIcon } from '@vapor-ui/icons'` |
| `NetworkOutlineIcon` | `import { NetworkOutlineIcon } from '@vapor-ui/icons'` |
| `NextOutlineIcon` | `import { NextOutlineIcon } from '@vapor-ui/icons'` |
| `NoImageOutlineIcon` | `import { NoImageOutlineIcon } from '@vapor-ui/icons'` |
| `NoUserOutlineIcon` | `import { NoUserOutlineIcon } from '@vapor-ui/icons'` |
| `NoticeBoardOutlineIcon` | `import { NoticeBoardOutlineIcon } from '@vapor-ui/icons'` |
| `NoticeCircleOutlineIcon` | `import { NoticeCircleOutlineIcon } from '@vapor-ui/icons'` |
| `NumberlistOutlineIcon` | `import { NumberlistOutlineIcon } from '@vapor-ui/icons'` |
| `OpenFileOutlineIcon` | `import { OpenFileOutlineIcon } from '@vapor-ui/icons'` |
| `OpenFolderOutlineIcon` | `import { OpenFolderOutlineIcon } from '@vapor-ui/icons'` |
| `OpenInNewOutlineIcon` | `import { OpenInNewOutlineIcon } from '@vapor-ui/icons'` |
| `OutOutlineIcon` | `import { OutOutlineIcon } from '@vapor-ui/icons'` |
| `PandasOutlineIcon` | `import { PandasOutlineIcon } from '@vapor-ui/icons'` |
| `PanelOpenOutlineIcon` | `import { PanelOpenOutlineIcon } from '@vapor-ui/icons'` |
| `PauseOutlineIcon` | `import { PauseOutlineIcon } from '@vapor-ui/icons'` |
| `PcOutlineIcon` | `import { PcOutlineIcon } from '@vapor-ui/icons'` |
| `PdfOutlineIcon` | `import { PdfOutlineIcon } from '@vapor-ui/icons'` |
| `PhoneOutlineIcon` | `import { PhoneOutlineIcon } from '@vapor-ui/icons'` |
| `PinSetOutlineIcon` | `import { PinSetOutlineIcon } from '@vapor-ui/icons'` |
| `PlansOutlineIcon` | `import { PlansOutlineIcon } from '@vapor-ui/icons'` |
| `PlayOutlineIcon` | `import { PlayOutlineIcon } from '@vapor-ui/icons'` |
| `PlaylistOutlineIcon` | `import { PlaylistOutlineIcon } from '@vapor-ui/icons'` |
| `PlusBoxOutlineIcon` | `import { PlusBoxOutlineIcon } from '@vapor-ui/icons'` |
| `PlusOutlineIcon` | `import { PlusOutlineIcon } from '@vapor-ui/icons'` |
| `PortforwardingOutlineIcon` | `import { PortforwardingOutlineIcon } from '@vapor-ui/icons'` |
| `PreOutlineIcon` | `import { PreOutlineIcon } from '@vapor-ui/icons'` |
| `PresentScreenOutlineIcon` | `import { PresentScreenOutlineIcon } from '@vapor-ui/icons'` |
| `PresetOutlineIcon` | `import { PresetOutlineIcon } from '@vapor-ui/icons'` |
| `PreviewOutlineIcon` | `import { PreviewOutlineIcon } from '@vapor-ui/icons'` |
| `PriceOutlineIcon` | `import { PriceOutlineIcon } from '@vapor-ui/icons'` |
| `PrintOutlineIcon` | `import { PrintOutlineIcon } from '@vapor-ui/icons'` |
| `ProgrammingOutlineIcon` | `import { ProgrammingOutlineIcon } from '@vapor-ui/icons'` |
| `ProjectOutlineIcon` | `import { ProjectOutlineIcon } from '@vapor-ui/icons'` |
| `ProjectSettingOutlineIcon` | `import { ProjectSettingOutlineIcon } from '@vapor-ui/icons'` |
| `PsychologyOutlineIcon` | `import { PsychologyOutlineIcon } from '@vapor-ui/icons'` |
| `PublishOutlineIcon` | `import { PublishOutlineIcon } from '@vapor-ui/icons'` |
| `PullOutlineIcon` | `import { PullOutlineIcon } from '@vapor-ui/icons'` |
| `QnAOutlineIcon` | `import { QnAOutlineIcon } from '@vapor-ui/icons'` |
| `QrcodeOutlineIcon` | `import { QrcodeOutlineIcon } from '@vapor-ui/icons'` |
| `QuoteOutlineIcon` | `import { QuoteOutlineIcon } from '@vapor-ui/icons'` |
| `ReferenceOutlineIcon` | `import { ReferenceOutlineIcon } from '@vapor-ui/icons'` |
| `RefreshOutlineIcon` | `import { RefreshOutlineIcon } from '@vapor-ui/icons'` |
| `RegexOutlineIcon` | `import { RegexOutlineIcon } from '@vapor-ui/icons'` |
| `ReloadOutlineIcon` | `import { ReloadOutlineIcon } from '@vapor-ui/icons'` |
| `RemoteOffOutlineIcon` | `import { RemoteOffOutlineIcon } from '@vapor-ui/icons'` |
| `RemoteOutlineIcon` | `import { RemoteOutlineIcon } from '@vapor-ui/icons'` |
| `ReplyOutlineIcon` | `import { ReplyOutlineIcon } from '@vapor-ui/icons'` |
| `RestaurantOutlineIcon` | `import { RestaurantOutlineIcon } from '@vapor-ui/icons'` |
| `ResultManagementOutlineIcon` | `import { ResultManagementOutlineIcon } from '@vapor-ui/icons'` |
| `RouteOutlineIcon` | `import { RouteOutlineIcon } from '@vapor-ui/icons'` |
| `RunOutlineIcon` | `import { RunOutlineIcon } from '@vapor-ui/icons'` |
| `SaveAsOutlineIcon` | `import { SaveAsOutlineIcon } from '@vapor-ui/icons'` |
| `SaveOutlineIcon` | `import { SaveOutlineIcon } from '@vapor-ui/icons'` |
| `SavingOutlineIcon` | `import { SavingOutlineIcon } from '@vapor-ui/icons'` |
| `SchoolOutlineIcon` | `import { SchoolOutlineIcon } from '@vapor-ui/icons'` |
| `SearchOutlineIcon` | `import { SearchOutlineIcon } from '@vapor-ui/icons'` |
| `SendOutlineIcon` | `import { SendOutlineIcon } from '@vapor-ui/icons'` |
| `SettingOutlineIcon` | `import { SettingOutlineIcon } from '@vapor-ui/icons'` |
| `ShareOutlineIcon` | `import { ShareOutlineIcon } from '@vapor-ui/icons'` |
| `ShoppingCartOutlineIcon` | `import { ShoppingCartOutlineIcon } from '@vapor-ui/icons'` |
| `ShortTextOutlineIcon` | `import { ShortTextOutlineIcon } from '@vapor-ui/icons'` |
| `ShortcutOutlineIcon` | `import { ShortcutOutlineIcon } from '@vapor-ui/icons'` |
| `SideNavOutlineIcon` | `import { SideNavOutlineIcon } from '@vapor-ui/icons'` |
| `SignalPowerOutlineIcon` | `import { SignalPowerOutlineIcon } from '@vapor-ui/icons'` |
| `SlashOutlineIcon` | `import { SlashOutlineIcon } from '@vapor-ui/icons'` |
| `SoundOffOutlineIcon` | `import { SoundOffOutlineIcon } from '@vapor-ui/icons'` |
| `SoundOnOutlineIcon` | `import { SoundOnOutlineIcon } from '@vapor-ui/icons'` |
| `SpinnerOutlineIcon` | `import { SpinnerOutlineIcon } from '@vapor-ui/icons'` |
| `SplitHorizontalOutlineIcon` | `import { SplitHorizontalOutlineIcon } from '@vapor-ui/icons'` |
| `SplitVerticalOutlineIcon` | `import { SplitVerticalOutlineIcon } from '@vapor-ui/icons'` |
| `StarOutlineIcon` | `import { StarOutlineIcon } from '@vapor-ui/icons'` |
| `StepInOutlineIcon` | `import { StepInOutlineIcon } from '@vapor-ui/icons'` |
| `StepOutOutlineIcon` | `import { StepOutOutlineIcon } from '@vapor-ui/icons'` |
| `StepOverOutlineIcon` | `import { StepOverOutlineIcon } from '@vapor-ui/icons'` |
| `StopOutlineIcon` | `import { StopOutlineIcon } from '@vapor-ui/icons'` |
| `StrikeOutlineIcon` | `import { StrikeOutlineIcon } from '@vapor-ui/icons'` |
| `StruckOutlineIcon` | `import { StruckOutlineIcon } from '@vapor-ui/icons'` |
| `StudentManagementOutlineIcon` | `import { StudentManagementOutlineIcon } from '@vapor-ui/icons'` |
| `SyllabusOutlineIcon` | `import { SyllabusOutlineIcon } from '@vapor-ui/icons'` |
| `TableFilterOutlineIcon` | `import { TableFilterOutlineIcon } from '@vapor-ui/icons'` |
| `TableOutlineIcon` | `import { TableOutlineIcon } from '@vapor-ui/icons'` |
| `TabletOutlineIcon` | `import { TabletOutlineIcon } from '@vapor-ui/icons'` |
| `TerminalConnectOutlineIcon` | `import { TerminalConnectOutlineIcon } from '@vapor-ui/icons'` |
| `TerminalOutlineIcon` | `import { TerminalOutlineIcon } from '@vapor-ui/icons'` |
| `TerminalWindowOutlineIcon` | `import { TerminalWindowOutlineIcon } from '@vapor-ui/icons'` |
| `TestOutlineIcon` | `import { TestOutlineIcon } from '@vapor-ui/icons'` |
| `TextColorOutlineIcon` | `import { TextColorOutlineIcon } from '@vapor-ui/icons'` |
| `TextOutlineIcon` | `import { TextOutlineIcon } from '@vapor-ui/icons'` |
| `TextScanOutlineIcon` | `import { TextScanOutlineIcon } from '@vapor-ui/icons'` |
| `TimeOutlineIcon` | `import { TimeOutlineIcon } from '@vapor-ui/icons'` |
| `TransferOutlineIcon` | `import { TransferOutlineIcon } from '@vapor-ui/icons'` |
| `TranslateOutlineIcon` | `import { TranslateOutlineIcon } from '@vapor-ui/icons'` |
| `TrashOutlineIcon` | `import { TrashOutlineIcon } from '@vapor-ui/icons'` |
| `TriangleOutlineIcon` | `import { TriangleOutlineIcon } from '@vapor-ui/icons'` |
| `UnderlineOutlineIcon` | `import { UnderlineOutlineIcon } from '@vapor-ui/icons'` |
| `UndoOutlineIcon` | `import { UndoOutlineIcon } from '@vapor-ui/icons'` |
| `UnlockOutlineIcon` | `import { UnlockOutlineIcon } from '@vapor-ui/icons'` |
| `UploadOutlineIcon` | `import { UploadOutlineIcon } from '@vapor-ui/icons'` |
| `UserCheckOutlineIcon` | `import { UserCheckOutlineIcon } from '@vapor-ui/icons'` |
| `UserMoveOutlineIcon` | `import { UserMoveOutlineIcon } from '@vapor-ui/icons'` |
| `UserOutlineIcon` | `import { UserOutlineIcon } from '@vapor-ui/icons'` |
| `UserSearchOutlineIcon` | `import { UserSearchOutlineIcon } from '@vapor-ui/icons'` |
| `VideocamOffOutlineIcon` | `import { VideocamOffOutlineIcon } from '@vapor-ui/icons'` |
| `VideocamOnOutlineIcon` | `import { VideocamOnOutlineIcon } from '@vapor-ui/icons'` |
| `ViewExpandOutlineIcon` | `import { ViewExpandOutlineIcon } from '@vapor-ui/icons'` |
| `ViewModuleOutlineIcon` | `import { ViewModuleOutlineIcon } from '@vapor-ui/icons'` |
| `ViewOffOutlineIcon` | `import { ViewOffOutlineIcon } from '@vapor-ui/icons'` |
| `ViewOnOutlineIcon` | `import { ViewOnOutlineIcon } from '@vapor-ui/icons'` |
| `ViewShrinkOutlineIcon` | `import { ViewShrinkOutlineIcon } from '@vapor-ui/icons'` |
| `WarningOutlineIcon` | `import { WarningOutlineIcon } from '@vapor-ui/icons'` |
| `WordSearchOutlineIcon` | `import { WordSearchOutlineIcon } from '@vapor-ui/icons'` |
| `ZoomInOutlineIcon` | `import { ZoomInOutlineIcon } from '@vapor-ui/icons'` |
| `ZoomOutOutlineIcon` | `import { ZoomOutOutlineIcon } from '@vapor-ui/icons'` |
# All Components
URL: /docs/components
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/index.mdx
빠른 개발과 일관된 디자인을 위한 Vapor UI 디자인 시스템을 살펴보세요.
***
title: All Components
description: 빠른 개발과 일관된 디자인을 위한 Vapor UI 디자인 시스템을 살펴보세요.
--------------------------------------------------------
***
## Components
# Introduction
URL: /docs/getting-started
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/getting-started/index.mdx
빠른 개발과 일관된 디자인을 위한 Vapor UI 디자인 시스템을 살펴보세요.
***
title: Introduction
description: 빠른 개발과 일관된 디자인을 위한 Vapor UI 디자인 시스템을 살펴보세요.
--------------------------------------------------------
## Vapor UI 소개
Vapor UI는 개발자 경험과 디자인 일관성을 모두 만족시키는 React 컴포넌트 라이브러리입니다. 구름에서 개발한 세 번째 디자인 시스템으로, 실제 프로덕션에서 검증된 컴포넌트들을 제공합니다.
## 핵심 기능
* **모듈화된 구조**: 필요한 패키지만 선택적으로 설치하여 번들 크기를 최적화합니다.
* **TypeScript 지원**: 모든 컴포넌트에 타입 정의가 포함되어 자동 완성과 타입 검사를 지원합니다.
* **접근성 내장**: WCAG 2.1 AA 수준의 웹 접근성을 기본으로 제공합니다.
* **Tailwind CSS 통합**: Tailwind 유틸리티 클래스로 컴포넌트를 빠르게 커스터마이징할 수 있습니다.
* **다크 모드**: 라이트/다크 테마 자동 전환 시스템을 제공합니다.
## 적합한 프로젝트
Vapor UI는 다음과 같은 프로젝트에서 효과적으로 활용할 수 있습니다.
* 빠른 프로토타이핑이 필요한 스타트업과 신규 프로젝트
* 일관된 디자인 시스템을 구축하려는 중대형 팀
* 접근성을 중요시하는 공공 서비스나 글로벌 서비스
* TypeScript 환경의 모던 React 프로젝트
* 디자인과 개발 간 협업이 중요한 조직
# Codemod
URL: /docs/releases/codemod
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/releases/codemod.md
@vapor-ui/codemod 패키지의 릴리즈 노트입니다.
***
title: Codemod
description: '@vapor-ui/codemod 패키지의 릴리즈 노트입니다.'
------------------------------------------------
# @vapor-ui/codemod
## 1.0.0
### Codemod
* Add v1/migrate transform for @vapor-ui/core v1.0.0 migration ([#454](https://github.com/goorm-dev/vapor-ui/pull/454)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* `trackAnchor` → `disableAnchorTracking` (boolean inversion)
* `loop` → `loopFocus` (Menu, Tabs)
* Move `openOnHover`, `delay`, `closeDelay` from Root to Trigger (Tooltip, Preview Card)
* `hoverable` → `disableHoverablePopup` (Tooltip only, boolean inversion)
## 1.0.0-beta.7
### CLI
* Add Tabs, Text, Textinput transform ([#319](https://github.com/goorm-dev/vapor-ui/pull/319)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* Add Dropdown, IconButton, Nav transformer ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* add avatar, breadcrumb, card transform ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* Add Popover, RadioGroup, Switch Transform ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* Add codemod for icon packages name import ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* add codemod cli packages ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* add cli options ([#351](https://github.com/goorm-dev/vapor-ui/pull/351)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* add button, badge, alert component color props to colorPalette ([#362](https://github.com/goorm-dev/vapor-ui/pull/362)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
## 1.0.0-beta.6
### CLI
* add checkbox, collapsible, dialog transform ([#316](https://github.com/goorm-dev/vapor-ui/pull/316)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* add avatar, breadcrumb, card transform ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* add codemod cli packages ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
## 1.0.0-beta.5
### CLI
* Add codemod for icon packages name import ([#317](https://github.com/goorm-dev/vapor-ui/pull/317)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
# Color Generator
URL: /docs/releases/color-generator
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/releases/color-generator.md
@vapor-ui/color-generator 패키지의 릴리즈 노트입니다.
***
title: Color Generator
description: '@vapor-ui/color-generator 패키지의 릴리즈 노트입니다.'
--------------------------------------------------------
# @vapor-ui/color-generator
## 1.0.0-beta.8
### Tokens
* **BREAKING CHANGE**: rename `color-background-canvas` token to `color-canvas` ([#378](https://github.com/goorm-dev/vapor-ui/pull/378)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
The canvas background token has been renamed for better semantic clarity and consistency:
* Token name: `color-background-canvas` → `color-canvas`
* CSS variable: `--vapor-color-background-canvas` → `--vapor-color-canvas`
**Migration required:**
* Update all references from `color-background-canvas` to `color-canvas`
* Replace CSS variables from `--vapor-color-background-canvas` to `--vapor-color-canvas`
## 1.0.0-beta.7
### Color Generator
* add color-border-normal semantic token that dynamically adapts to background color customization (light: 100 step, dark: 300 step) ([#370](https://github.com/goorm-dev/vapor-ui/pull/370)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
## 1.0.0-beta.6
### Etc.
* feat: update color generator & color palette ([#337](https://github.com/goorm-dev/vapor-ui/pull/337)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
## 1.0.0-beta.5
### Etc.
* feat: create @vapor-ui/color-generator & @vapor-ui/css-generator ([#234](https://github.com/goorm-dev/vapor-ui/pull/234)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* feat: update color tokens ([#261](https://github.com/goorm-dev/vapor-ui/pull/261)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
# Core
URL: /docs/releases/core
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/releases/core.md
@vapor-ui/core 패키지의 릴리즈 노트입니다.
***
title: Core
description: '@vapor-ui/core 패키지의 릴리즈 노트입니다.'
---------------------------------------------
# @vapor-ui/core
## 1.2.0
### All
* add `forwardRef` to `Portal` elements ([#499](https://github.com/goorm-dev/vapor-ui/pull/499)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* support for functional className and style prop across all components ([#517](https://github.com/goorm-dev/vapor-ui/pull/517)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* implemente interaction layer corners using `box-shadow` and add animations to `Checkbox`, \`Radio ([#515](https://github.com/goorm-dev/vapor-ui/pull/515)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* adjust dark `background.hint.100` to improve surface hierarchy on overlay backgrounds ([#518](https://github.com/goorm-dev/vapor-ui/pull/518)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* remove css all property ([#493](https://github.com/goorm-dev/vapor-ui/pull/493)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* remove duplication from deprecated sprinkles ([#494](https://github.com/goorm-dev/vapor-ui/pull/494)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* split sprinkles className and hash with `-` ([#495](https://github.com/goorm-dev/vapor-ui/pull/495)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* bump @base-ui/react v1.2.0 ([#497](https://github.com/goorm-dev/vapor-ui/pull/497)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* bump @base-ui/react version v1.3.0 ([#519](https://github.com/goorm-dev/vapor-ui/pull/519)) - Thanks [@vapor-ui](https://github.com/vapor-ui)!
### Button
* add `@base-ui/react` headless to the `Button` component ([#501](https://github.com/goorm-dev/vapor-ui/pull/501)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Checkbox
* fix: improve checkbox border styles and interaction overlay sizing ([#354](https://github.com/goorm-dev/vapor-ui/pull/354)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Select
* set the width and height of the `Select.TriggerIcon`'s SVG to 100%. ([#504](https://github.com/goorm-dev/vapor-ui/pull/504)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* deprecate `Select.PlaceholderPrimitive` component. Use `data-placeholder` for custom styling. ([#500](https://github.com/goorm-dev/vapor-ui/pull/500)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Switch
* composite missing `className` prop ([#498](https://github.com/goorm-dev/vapor-ui/pull/498)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Toast
* respect the user's reduced motion preference in toast animations ([#525](https://github.com/goorm-dev/vapor-ui/pull/525)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Etc.
* add `:active` pseudo-selector to utility CSS properties ([#535](https://github.com/goorm-dev/vapor-ui/pull/535)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Updated Dependencies
* @vapor-ui/icons\@1.1.0
## 1.1.0
### General changes
* expand utility props and scoping it `$css` ([#476](https://github.com/goorm-dev/vapor-ui/pull/476)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Skeleton
* Add new `Skeleton` component ([#481](https://github.com/goorm-dev/vapor-ui/pull/481)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Etc.
* Change `useMutationObserver` hook to use only ref ([#332](https://github.com/goorm-dev/vapor-ui/pull/332)) - Thanks [@SimYunSup](https://github.com/SimYunSup)!
### Updated Dependencies
* @vapor-ui/icons\@1.0.1
## 1.0.0
### Checkbox / Switch / Radio
* **Breaking Change**: Root element changed from `HTMLButtonElement` to `HTMLSpanElement` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Dialog
* fix(dialog): correct ReactElement type parameters in DialogPopup props ([#438](https://github.com/goorm-dev/vapor-ui/pull/438)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
Fixed incorrect type parameters for `portalElement` and `overlayElement` in `DialogPopup.Props` from `typeof Component` to `Component.Props`.
### Field
* **Breaking Change**: `validationMode` default changed from `onBlur` to `onSubmit` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* **New Feature**: `Field.Item`: New component added for improved accessibility when using Checkbox, Radio, Switch with Field ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### FloatingBar
* feat(FloatingBar): export `EventDetails` type ([#437](https://github.com/goorm-dev/vapor-ui/pull/437)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
Export `ChangeEventDetails` type from `FloatingBarRoot` namespace for docs-extractor compatibility.
### Form
* **Breaking Change**: `onClearErrors` prop removed (now auto-handled internally) ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Menu
* **Breaking Change**: `openOnHover`, `delay`, `closeDelay` props moved from `Menu.Root` to `Menu.Trigger` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### NavigationMenu
* **Breaking Change**: `Link`: `selected` prop renamed to `current` (for Breadcrumb API consistency) ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* **Breaking Change**: `data-selected` attribute changed to `data-active` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Popover
* **Breaking Change**: `openOnHover`, `delay`, `closeDelay` props moved from `Popover.Root` to `Popover.Trigger` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Radio Card
* removed the size prop from the RadioCard component and simplified its styling by removing typography mixins ([#442](https://github.com/goorm-dev/vapor-ui/pull/442)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Tabs
* fix(tabs): correct indicator position when list has padding ([#434](https://github.com/goorm-dev/vapor-ui/pull/434)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
Fix indicator positioning issue when Tabs.List has padding-inline (horizontal) or padding-block (vertical). The indicator now correctly positions itself by explicitly setting `left: 0` (horizontal) or `top: 0` (vertical), ensuring it uses only the CSS variables for positioning regardless of padding.
* **Breaking Change**: `Tabs.Root`: `loop` prop renamed to `loopFocus` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* **Breaking Change**: `activateOnFocus` default changed from `true` to `false` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* **Breaking Change**: `data-selected` attribute changed to `data-active` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Tooltip
* **Breaking Change**: `Tooltip.Root`: `hoverable` prop renamed to `disableHoverablePopup` (logic inverted) ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* **Breaking Change**: `delay`, `closeDelay` props moved from `Tooltip.Root` to `Tooltip.Trigger` ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Etc.
* Migrate to Base UI v1.1.0 ([#453](https://github.com/goorm-dev/vapor-ui/pull/453)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* Updated internal utilities to use official @base-ui/utils package (v0.2.4) ([#443](https://github.com/goorm-dev/vapor-ui/pull/443)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* fix: prevent passing props to Fragment in `createRender` ([#403](https://github.com/goorm-dev/vapor-ui/pull/403)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
Fixed React warning `Invalid prop 'ref' supplied to 'React.Fragment'` by wrapping Fragment returns in a render callback to avoid `cloneElement` props merging.
### Updated Dependencies
* @vapor-ui/icons\@1.0.0
## 1.0.0-beta.12
### Button
* Update secondary button fill variant text color to use foreground.secondary\[200] for improved contrast ([#427](https://github.com/goorm-dev/vapor-ui/pull/427)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Dialog
* adjust to max-width in dialog ([#394](https://github.com/goorm-dev/vapor-ui/pull/394)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Field
* feat(field): add typography and foreground props to Field.Label ([#399](https://github.com/goorm-dev/vapor-ui/pull/399)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Floatingbar
* add new `FloatingBar` component ([#359](https://github.com/goorm-dev/vapor-ui/pull/359)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* clone elements & enhance customizability ([#359](https://github.com/goorm-dev/vapor-ui/pull/359)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Tabs
* Refactor Tabs component structure for better customization ([#429](https://github.com/goorm-dev/vapor-ui/pull/429)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* Changed `Tabs.Trigger` to `Tabs.Button` for clearer semantics
* Extracted `Tabs.ListPrimitive` and `Tabs.IndicatorPrimitive` for enhanced customization
* Added fill and line variant support with updated styles
* Updated type definitions and utility props for better developer experience
### Updated Dependencies
* @vapor-ui/icons\@1.0.0-beta.7
## 1.0.0-beta.11
### Text Input
* Correct background-color of TextInput component ([#387](https://github.com/goorm-dev/vapor-ui/pull/387)) - Thanks [@agetbase](https://github.com/agetbase)!
### Etc.
* clone elements & enhance customizability ([#359](https://github.com/goorm-dev/vapor-ui/pull/359)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Updated Dependencies
* @vapor-ui/hooks\@1.0.0-beta.6
* @vapor-ui/icons\@1.0.0-beta.6
## 1.0.0-beta.10
### Toast
* avoid overflowing when toast width is wider than view port width ([#390](https://github.com/goorm-dev/vapor-ui/pull/390)) - Thanks [@noahchoii](https://github.com/noahchoii)!
## 1.0.0-beta.9
### Toast
* remove toastManager ([#383](https://github.com/goorm-dev/vapor-ui/pull/383)) - Thanks [@noahchoii](https://github.com/noahchoii)!
## 1.0.0-beta.8
### Toast
* add new `Toast` component ([#376](https://github.com/goorm-dev/vapor-ui/pull/376)) - Thanks [@noahchoii](https://github.com/noahchoii)!
## 1.0.0-beta.7
### Menu
* Updated Menu.Item paddingRight from 6px to 12px to match Figma design specification ([#325](https://github.com/goorm-dev/vapor-ui/pull/325)) - Thanks [@agetbase](https://github.com/agetbase)!
* Correct MenuPositionerPrimitive sideOffset from 8px to 4px to match Figma spec ([#342](https://github.com/goorm-dev/vapor-ui/pull/342)) - Thanks [@agetbase](https://github.com/agetbase)!
### Pagination
* add new `Pagination` component ([#329](https://github.com/goorm-dev/vapor-ui/pull/329)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Table
* add new `Table` component ([#294](https://github.com/goorm-dev/vapor-ui/pull/294)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Etc.
* synchronized color tokens with figma ([#340](https://github.com/goorm-dev/vapor-ui/pull/340)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* **BREAKING CHANGE**: Remove `stretch` prop from Button, IconButton, and NavigationMenu components ([#368](https://github.com/goorm-dev/vapor-ui/pull/368)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
The `stretch` prop has been removed to align with Figma's component variant system. In Figma, width control is handled via "Fill Container" (Auto Layout), not as a component variant.
**Migration Guide:**
Replace `stretch` prop with Tailwind's `w-full` utility class:
```tsx
// Before
...
// After
...
```
**Why this change:**
* Maintains Figma-React design system parity (SSOT principle)
* Follows "React Props = Figma Variants" architectural principle
* Aligns with Vapor UI's 4-layer component architecture (Container, Interaction, Contents, Slot)
* Layout concerns should be handled by parent containers, not component props
## 1.0.0-beta.6
It contains the same code as the previous version. Please refer to that version.
## 1.0.0-beta.5
### Button
* update horizontal padding for small size (`050 (4px)` -> `100 (8px)`) ([#323](https://github.com/goorm-dev/vapor-ui/pull/323)) - Thanks [@agetbase](https://github.com/agetbase)!
### Checkbox
* fix checkbox borderRadius sync error ([#267](https://github.com/goorm-dev/vapor-ui/pull/267)) - Thanks [@SimYunSup](https://github.com/SimYunSup)!
### Field
* add default layout styles to field.label ([#289](https://github.com/goorm-dev/vapor-ui/pull/289)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Form
* add new `Form` component ([#256](https://github.com/goorm-dev/vapor-ui/pull/256)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Icon Button
* Fixed a CSS dependency order issue where `IconButton` styles loaded before `Button` styles, causing incorrect style inheritance.
### Radio
* adjust indicator size to account for border ([#291](https://github.com/goorm-dev/vapor-ui/pull/291)) - Thanks [@SimYunSup](https://github.com/SimYunSup)!
### Radio Card
* add new component `RadioCard` ([#284](https://github.com/goorm-dev/vapor-ui/pull/284)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Radio Group
* synchronize the aria-labelledby with the recieved id prop ([#327](https://github.com/goorm-dev/vapor-ui/pull/327)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* replace layout styles into layout component like VStack, HStack ([#288](https://github.com/goorm-dev/vapor-ui/pull/288)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Text Input
* add component layer ([#253](https://github.com/goorm-dev/vapor-ui/pull/253)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Theme
* add ThemeScope component and migrate to data-attribute based theming ([#278](https://github.com/goorm-dev/vapor-ui/pull/278)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Theme Provider
* remove ThemeScript and simplify ThemeProvider ([#240](https://github.com/goorm-dev/vapor-ui/pull/240)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Etc.
* enabled CSS tree shaking ([#298](https://github.com/goorm-dev/vapor-ui/pull/298)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* Component CSS is now automatically imported by each component file.
* add white foreground variant to foreground recipe ([#305](https://github.com/goorm-dev/vapor-ui/pull/305)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* export component with namespace ([#276](https://github.com/goorm-dev/vapor-ui/pull/276)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* migrate to base-ui beta v4 ([#292](https://github.com/goorm-dev/vapor-ui/pull/292)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* change components interface ([#360](https://github.com/goorm-dev/vapor-ui/pull/360)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* missing component exports in entry file ([#248](https://github.com/goorm-dev/vapor-ui/pull/248)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* add uilitiy css props ([#326](https://github.com/goorm-dev/vapor-ui/pull/326)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* rename `CombinedContent` to `Content` ([#247](https://github.com/goorm-dev/vapor-ui/pull/247)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* unify cascade layers under `vapor` namespace ([#334](https://github.com/goorm-dev/vapor-ui/pull/334)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* standardize state attributes for form components ([#282](https://github.com/goorm-dev/vapor-ui/pull/282)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* feat: rename color tokens ([#261](https://github.com/goorm-dev/vapor-ui/pull/261)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* prevent loading font while building CSS ([#265](https://github.com/goorm-dev/vapor-ui/pull/265)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* correct background color of interaction layer in dark mode ([#335](https://github.com/goorm-dev/vapor-ui/pull/335)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Updated Dependencies
* @vapor-ui/icons\@1.0.0-beta.5
## 0.6.0
### Callout
* add flex layout for icons and text alignment ([#181](https://github.com/goorm-dev/vapor-ui/pull/181)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Collapsible
* add new `Collapsible` component ([#197](https://github.com/goorm-dev/vapor-ui/pull/197)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Field
* add new `Field` components ([#224](https://github.com/goorm-dev/vapor-ui/pull/224)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Input Group
* add new `InputGroup` component ([#230](https://github.com/goorm-dev/vapor-ui/pull/230)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Multi Select
* add new `MultiSelect` component ([#225](https://github.com/goorm-dev/vapor-ui/pull/225)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Navigation Menu
* Migrate `Nav` to `NavigationMenu` ([#211](https://github.com/goorm-dev/vapor-ui/pull/211)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Popover
* add new `Popover` component ([#156](https://github.com/goorm-dev/vapor-ui/pull/156)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Select
* add new `Select` component ([#222](https://github.com/goorm-dev/vapor-ui/pull/222)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Sheet
* add new `Sheet` component ([#187](https://github.com/goorm-dev/vapor-ui/pull/187)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* edit spacing style implementation ([#238](https://github.com/goorm-dev/vapor-ui/pull/238)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Tabs
* add new `Tabs` component ([#157](https://github.com/goorm-dev/vapor-ui/pull/157)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Textarea
* Add new `Textarea` component ([#209](https://github.com/goorm-dev/vapor-ui/pull/209)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Tooltip
* eidt tooltip offset ([#212](https://github.com/goorm-dev/vapor-ui/pull/212)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Etc.
* change the overlay component interface ([#195](https://github.com/goorm-dev/vapor-ui/pull/195)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* remove `Label` sub-component from all form elements ([#204](https://github.com/goorm-dev/vapor-ui/pull/204)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* migrate to `Base UI` ([#186](https://github.com/goorm-dev/vapor-ui/pull/186)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* support readonly props in all of form elements ([#208](https://github.com/goorm-dev/vapor-ui/pull/208)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
* fix svg rendering issue on safari ([#237](https://github.com/goorm-dev/vapor-ui/pull/237)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* remove active style when provided readonly ([#246](https://github.com/goorm-dev/vapor-ui/pull/246)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* ensure focus styles take precedence over hover styles ([#200](https://github.com/goorm-dev/vapor-ui/pull/200)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Updated Dependencies
* @vapor-ui/icons\@0.4.0
## 0.5.0
### Avatar
* align CSS variable with build identifiers config ([#176](https://github.com/goorm-dev/vapor-ui/pull/176)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Breadcrumb
* add new `Breadcrumb` component ([#151](https://github.com/goorm-dev/vapor-ui/pull/151)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Button
* add `no-wrap` CSS properties ([#114](https://github.com/goorm-dev/vapor-ui/pull/114)) - Thanks [@jun094](https://github.com/jun094)!
### Menu
* add new `Menu` component ([#147](https://github.com/goorm-dev/vapor-ui/pull/147)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Radio Group
* add background-color(white) to RadioGroup Indicator ([#146](https://github.com/goorm-dev/vapor-ui/pull/146)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Tooltip
* add new `Tooltip` component ([#150](https://github.com/goorm-dev/vapor-ui/pull/150)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Etc.
* enhance vanillaExtractPlugin identifiers ([#161](https://github.com/goorm-dev/vapor-ui/pull/161)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* remove hover state when used touchscreen ([#158](https://github.com/goorm-dev/vapor-ui/pull/158)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* add `VComponentProps` ([#168](https://github.com/goorm-dev/vapor-ui/pull/168)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* add `box-shadow` tokens ([#143](https://github.com/goorm-dev/vapor-ui/pull/143)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* enhance vanillaExtractPlugin identifiers for better debugging ([#149](https://github.com/goorm-dev/vapor-ui/pull/149)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Updated Dependencies
* @vapor-ui/icons\@1.0.0
## 0.4.0
### Badge
* align text to center ([#137](https://github.com/goorm-dev/vapor-ui/pull/137)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Radio Group
* remove incorrectly injected props ([#125](https://github.com/goorm-dev/vapor-ui/pull/125)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Etc.
* change CSS layer names to `theme`, `reset`, `components`, and `utilities` ([#138](https://github.com/goorm-dev/vapor-ui/pull/138)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* add Tailwind CSS v4 preset ([#98](https://github.com/goorm-dev/vapor-ui/pull/98)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* improve DX by overhauling CSS bundling strategy ([#121](https://github.com/goorm-dev/vapor-ui/pull/121)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* add foreground mixin to style entry point ([#142](https://github.com/goorm-dev/vapor-ui/pull/142)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Updated Dependencies
* @vapor-ui/icons\@0.2.0
## 0.3.1
### Theme Provider
* add `primaryColor` props for user custom ([#87](https://github.com/goorm-dev/vapor-ui/pull/87)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
## 0.3.0
### Etc.
* remove sprinkles on each components ([#88](https://github.com/goorm-dev/vapor-ui/pull/88)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* correct CSS layer priority ([#94](https://github.com/goorm-dev/vapor-ui/pull/94)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
## 0.2.1
### Theme Provider
* support RSC ([#82](https://github.com/goorm-dev/vapor-ui/pull/82)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
## 0.2.0
### Callout
* add new `Callout` component ([#67](https://github.com/goorm-dev/vapor-ui/pull/67)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Checkbox
* add new `Checkbox` Component ([#58](https://github.com/goorm-dev/vapor-ui/pull/58)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Dialog
* edit dialog animation style ([#72](https://github.com/goorm-dev/vapor-ui/pull/72)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Radio Group
* add new `RadioGroup` component ([#76](https://github.com/goorm-dev/vapor-ui/pull/76)) - Thanks [@noahchoii](https://github.com/noahchoii)!
### Switch
* add new `Switch` component - Thanks [@noahchoii](https://github.com/noahchoii)!
### Etc.
* remove `@vapor-ui/icons` for resolving storybook build error ([#57](https://github.com/goorm-dev/vapor-ui/pull/57)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* prevent code splitting while tsup build ([#81](https://github.com/goorm-dev/vapor-ui/pull/81)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* resolve circular dependency in vanilla-extract ([#73](https://github.com/goorm-dev/vapor-ui/pull/73)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* optimize build system for component bundling ([#73](https://github.com/goorm-dev/vapor-ui/pull/73)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
## 0.1.0
### Etc.
* create package ([#48](https://github.com/goorm-dev/vapor-ui/pull/48)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
# Css Generator
URL: /docs/releases/css-generator
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/releases/css-generator.md
@vapor-ui/css-generator 패키지의 릴리즈 노트입니다.
***
title: Css Generator
description: '@vapor-ui/css-generator 패키지의 릴리즈 노트입니다.'
------------------------------------------------------
# @vapor-ui/css-generator
## 1.0.0-beta.8
### Tokens
* **BREAKING CHANGE**: rename `color-background-canvas` token to `color-canvas` ([#378](https://github.com/goorm-dev/vapor-ui/pull/378)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
The canvas background token has been renamed for better semantic clarity and consistency:
* Token name: `color-background-canvas` → `color-canvas`
* CSS variable: `--vapor-color-background-canvas` → `--vapor-color-canvas`
**Migration required:**
* Update all references from `color-background-canvas` to `color-canvas`
* Replace CSS variables from `--vapor-color-background-canvas` to `--vapor-color-canvas`
### Updated Dependencies
* @vapor-ui/color-generator\@1.0.0-beta.8
## 1.0.0-beta.7
### Updated Dependencies
* @vapor-ui/color-generator\@1.0.0-beta.7
## 1.0.0-beta.6
### Etc.
* feat: update color generator & color palette ([#337](https://github.com/goorm-dev/vapor-ui/pull/337)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Updated Dependencies
* @vapor-ui/color-generator\@1.0.0-beta.6
## 1.0.0-beta.5
### Theme
* feat(theme): Add ThemeScope component and migrate to data-attribute based theming ([#278](https://github.com/goorm-dev/vapor-ui/pull/278)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Etc.
* feat: create @vapor-ui/color-generator & @vapor-ui/css-generator ([#234](https://github.com/goorm-dev/vapor-ui/pull/234)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
* feat: update color tokens ([#261](https://github.com/goorm-dev/vapor-ui/pull/261)) - Thanks [@ZeroChoi2781](https://github.com/ZeroChoi2781)!
### Updated Dependencies
* @vapor-ui/color-generator\@1.0.0
# ESLint
URL: /docs/releases/eslint-plugin-vapor
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/releases/eslint-plugin-vapor.md
eslint-plugin-vapor 패키지의 릴리즈 노트입니다.
***
title: ESLint
description: 'eslint-plugin-vapor 패키지의 릴리즈 노트입니다.'
--------------------------------------------------
# eslint-plugin-vapor
## 1.0.0
### Eslint Plugin Vapor
* create new `eslint-plugin-vapor` for accessibilities ([#457](https://github.com/goorm-dev/vapor-ui/pull/457)) - Thanks [@noahchoii](https://github.com/noahchoii)!
# Icons
URL: /docs/releases/icons
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/releases/icons.md
@vapor-ui/icons 패키지의 릴리즈 노트입니다.
***
title: Icons
description: '@vapor-ui/icons 패키지의 릴리즈 노트입니다.'
----------------------------------------------
# @vapor-ui/icons
## 1.1.0
### Etc.
* Add new icons from Figma ([#539](https://github.com/goorm-dev/vapor-ui/pull/539)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**New Basic Icons:** `TriangleOutlineIcon`
## 1.0.1
### Etc.
* Check the center alignment of the IntelliSenseEventIcon ([#480](https://github.com/goorm-dev/vapor-ui/pull/480)) - Thanks [@noahchoii](https://github.com/noahchoii)!
**Updated Symbol Icons:** `IntelliSenseEventIcon`, `IntelliSenseEventOutlineIcon`
## 1.0.0
### Etc.
* Sync icons from Figma and remove deleted HeadingOutlineIcon ([#430](https://github.com/goorm-dev/vapor-ui/pull/430)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
* Update icons from Figma ([#449](https://github.com/goorm-dev/vapor-ui/pull/449)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**Updated Symbol Icons:** `VscodeColorIcon`
**New Symbol Icons:** `SouthKoreaColorIcon`, and 195 other country icons
## 1.0.0-beta.7
### Icon Base
* remove iconType ([#231](https://github.com/goorm-dev/vapor-ui/pull/231)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Etc.
* Update icons from Figma ([#406](https://github.com/goorm-dev/vapor-ui/pull/406)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**Updated Basic Icons:** `Heading2OutlineIcon`, `StrikeOutlineIcon`, `ChecklistOutlineIcon`, `Heading3OutlineIcon`, `Heading4OutlineIcon`, `Heading1OutlineIcon`
## 1.0.0-beta.6
### Etc.
* clone elements & enhance customizability ([#359](https://github.com/goorm-dev/vapor-ui/pull/359)) - Thanks [@noahchoii](https://github.com/noahchoii)!
* Add new icons from Figma ([#396](https://github.com/goorm-dev/vapor-ui/pull/396)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**New:** `ChecklistOutlineIcon`, `StrikeOutlineIcon`, `Heading3OutlineIcon`, `Heading2OutlineIcon`, `Heading1OutlineIcon`, `Heading4OutlineIcon`
## 1.0.0-beta.5
### Etc.
* Add new icons from Figma ([#264](https://github.com/goorm-dev/vapor-ui/pull/264)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**New:** `DocktoBottomIcon`, `SideNavIcon`, `SideNavOutlineIcon`, `DocktoBottomOutlineIcon`
**Updated:**
* Basic Icons: `PanelOpenIcon`, `PanelOpenOutlineIcon`
* Update icons from Figma ([#285](https://github.com/goorm-dev/vapor-ui/pull/285)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**Updated:** `TreeCollapseIcon`
## 0.4.0
### Icon Base
* adjust prop precedence for dimensions(width, height, size) ([#182](https://github.com/goorm-dev/vapor-ui/pull/182)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
### Etc.
* Add new icons from Figma ([#207](https://github.com/goorm-dev/vapor-ui/pull/207)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**New:** `MediumIcon`
**Updated:**
* Symbol Icons: `FirefoxColorIcon`
* update icons from Figma ([#217](https://github.com/goorm-dev/vapor-ui/pull/217)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**Updated:** `TerminalWindowOutlineIcon`
## 0.3.0
### Etc.
* add new icons from Figma ([#179](https://github.com/goorm-dev/vapor-ui/pull/179)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**New:** `LinearScaleOutlineIcon`
**Updated:**
* Basic Icons: `PlayIcon`, `ReplaceIcon`, `ClassIcon`, `ArrowUpOutlineIcon`, `ArrowDownOutlineIcon`, `TerminalOutlineIcon`, `ViewShrinkOutlineIcon`, `FolderSearchIcon`, `StarOutlineIcon`, `PriceOutlineIcon`, `HistoryOutlineIcon`, `CardsOutlineIcon`, `ZoomOutOutlineIcon`, `IntelliSensePropertyOutlineIcon`, `CorrectOutlineIcon`, `ChevronDoubleRightOutlineIcon`, `AutoCodeOutlineIcon`, `ChapterOutlineIcon`
* Symbol Icons: `RstudioColorIcon`
* add new icons from Figma ([#198](https://github.com/goorm-dev/vapor-ui/pull/198)) - Thanks [@github-actions](https://github.com/apps/github-actions)!
**New:** `SidenavIcon`
## 0.2.0
### Etc.
* add new icons and update existing icon components ([#119](https://github.com/goorm-dev/vapor-ui/pull/119)) - Thanks [@MaxLee-dev](https://github.com/MaxLee-dev)!
**New Icons Added**
* `AlignJustifyOutlineIcon`, `CopyAsMarkdownOutlineIcon`, `IndentDecreaseOutlineIcon`, `SlotIcon`, `TextScanOutlineIcon`
**Updated**
* Updated approximately 190 existing icons with refined SVG paths and improved rendering
* Minor coordinate adjustments for better visual consistency
* Enhanced clipPath definitions where needed
## 0.1.0
### Minor Changes
* 68b001c: create avatar , badge , box , button , card , dialog , flex , grid , h-stack , icon-button, nav , text-input , text , theme-provider , v-stack
# Avatar
URL: /docs/components/avatar
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/avatar.mdx
Avatar는 사용자가 설정한 프로필 이미지 혹은 텍스트를 UI상에 나타냅니다.
***
title: 'Avatar'
site\_name: 'Avatar - Vapor Core'
description: 'Avatar는 사용자가 설정한 프로필 이미지 혹은 텍스트를 UI상에 나타냅니다.'
-----------------------------------------------------------
```tsx
import { Avatar } from '@vapor-ui/core';
import { VAPOR_LOGO_URL } from '~/constants/image-urls';
export default function DefaultAvatar() {
return ;
}
```
## Property
***
### Shape
Avatar의 모양을 설정합니다.
```tsx
import { Avatar, HStack, Text, VStack } from '@vapor-ui/core';
import { VAPOR_LOGO_URL } from '~/constants/image-urls';
export default function AvatarShape() {
return (
square
circle
);
}
```
### Size
Avatar의 크기를 설정합니다.
```tsx
import { Avatar, HStack, Text, VStack } from '@vapor-ui/core';
import { VAPOR_LOGO_URL } from '~/constants/image-urls';
export default function AvatarSize() {
return (
sm
md
lg
xl
);
}
```
## Examples
***
### Fallback
이미지가 없거나 로드에 실패한 경우, alt 텍스트의 첫 글자가 자동으로 표시됩니다. 배경색은 alt 문자열을 기반으로 결정됩니다.
```tsx
import { Avatar, HStack } from '@vapor-ui/core';
export default function AvatarFallback() {
return (
);
}
```
### Custom Fallback
FallbackPrimitive에 children을 전달하여 커스텀 fallback 콘텐츠를 표시합니다.
```tsx
import { Avatar, HStack, Text, VStack } from '@vapor-ui/core';
export default function AvatarCustomFallback() {
return (
auto initial
custom text
JD
);
}
```
## Props Table
***
### Avatar.Root
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | -------- | ---------------------------------------------------------------------------------------------- |
| `size` | `sm`, `md`, `lg`, `xl` | `md` | 아바타 크기 |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| **alt** | `string` | - | 대체 텍스트, 폴백 이니셜 생성에도 사용 |
| `shape` | `circle`, `square` | `square` | 아바타 모서리 형태 |
| `src` | `string` | - | 이미지 소스 URL |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `delay` | `number` | - | 폴백 표시 전 지연 시간 (밀리초) |
#### Avatar.ImagePrimitive
| Prop | Type | Default | Description |
| ----------------------- | -------------------------------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `onLoadingStatusChange` | `(status: ImageLoadingStatus) => void` | - | 로딩 상태가 변경될 때 호출되는 콜백 |
#### Avatar.FallbackPrimitive
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
# Badge
URL: /docs/components/badge
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/badge.mdx
Badge는 이미지, 컨텐츠 등의 상태 또는 분류를 시각적으로 표시합니다.
***
title: 'Badge'
site\_name: 'Badge - Vapor Core'
description: 'Badge는 이미지, 컨텐츠 등의 상태 또는 분류를 시각적으로 표시합니다.'
--------------------------------------------------------
```tsx
import { Badge } from '@vapor-ui/core';
export default function DefaultBadge() {
return New;
}
```
## Property
***
### ColorPalette
Badge의 색상을 설정합니다.
```tsx
import { Badge, HStack, Text, VStack } from '@vapor-ui/core';
export default function BadgeColor() {
return (
primary
New
hint
New
danger
New
success
New
warning
New
contrast
New
);
}
```
### Shape
Badge의 모양을 설정합니다.
```tsx
import { Badge, HStack, Text, VStack } from '@vapor-ui/core';
export default function BadgeShape() {
return (
square
New
pill
New
);
}
```
### Size
Badge의 크기를 설정합니다.
```tsx
import { Badge, HStack, Text, VStack } from '@vapor-ui/core';
export default function BadgeSize() {
return (
sm
New
md
New
lg
New
);
}
```
## Props Table
***
### Badge
| Prop | Type | Default | Description |
| -------------- | ------------------------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------- |
| `size` | `sm`, `md`, `lg` | `md` | 뱃지 크기 |
| `shape` | `square`, `pill` | `square` | 뱃지 모서리 형태 |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `colorPalette` | `primary`, `success`, `warning`, `danger`, `hint`, `contrast` | `primary` | 뱃지 색상 |
# Breadcrumb
URL: /docs/components/breadcrumb
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/breadcrumb.mdx
사용자가 현재 페이지의 위치를 파악하고 이전 페이지로 쉽게 이동할 수 있도록 도와주는 네비게이션 컴포넌트입니다.
***
title: 'Breadcrumb'
site\_name: 'Breadcrumb - Vapor Core'
description: '사용자가 현재 페이지의 위치를 파악하고 이전 페이지로 쉽게 이동할 수 있도록 도와주는 네비게이션 컴포넌트입니다.'
-----------------------------------------------------------------------------
```tsx
import { Breadcrumb } from '@vapor-ui/core';
export default function DefaultBreadcrumb() {
return (
HomeProducts
Details
);
}
```
## Examples
***
### With Ellipsis
긴 네비게이션 경로에서 중간 단계를 생략 표시로 나타낸 패턴입니다.
```tsx
import { Breadcrumb } from '@vapor-ui/core';
export default function BreadcrumbEllipsis() {
return (
HomeCategorySubcategory
Current Page
);
}
```
### Composition Pattern
Breadcrumb 컴포넌트의 다양한 구성 패턴입니다.
```tsx
import { Breadcrumb, Text, VStack } from '@vapor-ui/core';
import { ChevronRightOutlineIcon, HomeIcon } from '@vapor-ui/icons';
export default function BreadcrumbComposition() {
return (
Basic
HomeProductsDetails
Custom Separator
HomeProductsDetails
With Icon
Home
DashboardSettings
);
}
```
## Property
***
### Current
현재 페이지를 나타내는 링크의 상태를 설정할 수 있습니다.
```tsx
import { Breadcrumb, Text, VStack } from '@vapor-ui/core';
export default function BreadcrumbCurrent() {
return (
Normal Links
HomeProductsDetails
With Current Page
HomeProducts
Details
);
}
```
### Size
Breadcrumb의 크기를 설정합니다.
```tsx
import { Breadcrumb, HStack, Text, VStack } from '@vapor-ui/core';
export default function BreadcrumbSize() {
return (
sm
HomeProducts
Details
md
HomeProducts
Details
lg
HomeProducts
Details
xl
HomeProducts
Details
);
}
```
## Props Table
***
### Breadcrumb.Root
| Prop | Type | Default | Description |
| -------- | ---------------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `size` | `sm`, `md`, `lg`, `xl` | `md` | 브레드크럼 크기 |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
#### Breadcrumb.RootPrimitive
| Prop | Type | Default | Description |
| -------- | ---------------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `size` | `sm`, `md`, `lg`, `xl` | `md` | 브레드크럼 크기 |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
#### Breadcrumb.ListPrimitive
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Breadcrumb.Item
| Prop | Type | Default | Description |
| --------- | --------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `current` | `false`, `true` | - | 현재 페이지 여부 |
#### Breadcrumb.ItemPrimitive
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
#### Breadcrumb.LinkPrimitive
| Prop | Type | Default | Description |
| --------- | --------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `current` | `false`, `true` | `false` | 현재 페이지 여부 |
### Breadcrumb.Separator
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Breadcrumb.Ellipsis
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
#### Breadcrumb.EllipsisPrimitive
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
# Button
URL: /docs/components/button
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/button.mdx
Button은 사용자가 주요 작업을 수행하도록 돕는 핵심 상호작용 요소입니다.
***
title: 'Button'
site\_name: 'Button - Vapor Core'
description: 'Button은 사용자가 주요 작업을 수행하도록 돕는 핵심 상호작용 요소입니다.'
----------------------------------------------------------
```tsx
import { Button } from '@vapor-ui/core';
export default function DefaultButton() {
return ;
}
```
## Property
***
### Variant
Button의 시각적 스타일을 설정합니다.
```tsx
import { Button, HStack, Text, VStack } from '@vapor-ui/core';
export default function ButtonVariant() {
return (
fill
outline
ghost
);
}
```
### ColorPalette
Button의 역할에 따른 색상을 설정합니다.
```tsx
import { Button, HStack, Text, VStack } from '@vapor-ui/core';
export default function ButtonColor() {
return (
primary
secondary
success
warning
danger
contrast
);
}
```
### Disabled
Button의 비활성화 상태를 설정합니다.
```tsx
import { Button, HStack, Text, VStack } from '@vapor-ui/core';
export default function ButtonDisabled() {
return (
enabled
disabled
);
}
```
### Size
Button의 크기를 설정합니다.
```tsx
import { Button, HStack, Text, VStack } from '@vapor-ui/core';
export default function ButtonSize() {
return (
sm
md
lg
xl
);
}
```
## Examples
***
### Button with Icon
Button의 역할을 직관적으로 표현하기 위해 아이콘과 함께 사용합니다.
```tsx
import { Button, HStack } from '@vapor-ui/core';
import { CheckCircleIcon, ChevronRightOutlineIcon } from '@vapor-ui/icons';
export default function ButtonWithIcon() {
return (
);
}
```
## Props Table
***
### Button
| Prop | Type | Default | Description |
| -------------- | ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------------------------------------- |
| `size` | `sm`, `md`, `lg`, `xl` | `md` | 버튼 크기 |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `colorPalette` | `primary`, `secondary`, `success`, `warning`, `danger`, `contrast` | `primary` | 버튼 색상 |
| `variant` | `outline`, `fill`, `ghost` | `fill` | 버튼 스타일 (fill: 채움, outline: 테두리, ghost: 투명) |
# Callout
URL: /docs/components/callout
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/callout.mdx
Callout은 중요한 정보를 시각적으로 강조하여 사용자에게 전달하는 메시지 컴포넌트입니다.
***
title: 'Callout'
site\_name: 'Callout - Vapor Core'
description: 'Callout은 중요한 정보를 시각적으로 강조하여 사용자에게 전달하는 메시지 컴포넌트입니다.'
------------------------------------------------------------------
```tsx
import { Callout } from '@vapor-ui/core';
import { InfoCircleOutlineIcon } from '@vapor-ui/icons';
export default function DefaultCallout() {
return (
Your changes have been saved successfully.
);
}
```
## Examples
***
### Callout with Icon
Callout의 역할을 직관적으로 표현하기 위해 아이콘과 함께 사용합니다.
```tsx
import { Callout, VStack } from '@vapor-ui/core';
import { CheckCircleIcon, HeartIcon, InfoCircleOutlineIcon } from '@vapor-ui/icons';
export default function CalloutWithIcon() {
return (
Task completed successfully
Please review your settings
New notification available
);
}
```
## Property
***
### ColorPalette
Callout의 역할에 따른 색상을 설정합니다.
```tsx
import { Callout, Text, VStack } from '@vapor-ui/core';
export default function CalloutColor() {
return (
primary
Your changes have been saved successfully.
success
Your changes have been saved successfully.
warning
Your changes have been saved successfully.
danger
Your changes have been saved successfully.
hint
Your changes have been saved successfully.
contrast
Your changes have been saved successfully.
);
}
```
## Props Table
***
### Callout.Root
| Prop | Type | Default | Description |
| -------------- | ------------------------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 엘리먼트를 다른 태그로 교체하거나 다른 컴포넌트와 조합할 수 있습니다.
`ReactElement` 또는 렌더링할 엘리먼트를 반환하는 함수를 받습니다. |
| `colorPalette` | `primary`, `success`, `warning`, `danger`, `hint`, `contrast` | `primary` | 색상 스킴을 제어합니다 |
### Callout.Icon
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | --------------------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 엘리먼트를 다른 태그로 교체하거나 다른 컴포넌트와 조합할 수 있습니다.
`ReactElement` 또는 렌더링할 엘리먼트를 반환하는 함수를 받습니다. |
# Card
URL: /docs/components/card
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/card.mdx
Card는 이미지와 텍스트, 일부 기능 버튼을 포함한 컨테이너로 콘텐츠를 제공합니다.
***
title: 'Card'
site\_name: 'Card - Vapor Core'
description: 'Card는 이미지와 텍스트, 일부 기능 버튼을 포함한 컨테이너로 콘텐츠를 제공합니다.'
--------------------------------------------------------------
```tsx
import { Button, Card, HStack, Text, VStack } from '@vapor-ui/core';
export default function DefaultCard() {
return (
} typography="heading5">
Project Settings
Configure your project settings and preferences.
);
}
```
## Examples
***
### Layout
상황에 따라, 일부 영역을 생략하여 Card를 구성할 수 있습니다.
```tsx
import { Card, HStack, Text, VStack } from '@vapor-ui/core';
export default function CardLayout() {
return (
Body only
A simple card with content only.
Body + Footer
Card content goes here.
Updated 2 hours ago
Header + Body
} typography="heading6">
Notifications
You have 3 unread messages.
);
}
```
## Props Table
***
### Card.Root
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Card.Header
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Card.Body
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Card.Footer
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
# Checkbox
URL: /docs/components/checkbox
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/checkbox.mdx
Checkbox는 여러 항목 중 복수 선택을 가능하게 하는 입력 컴포넌트입니다.
***
title: 'Checkbox'
site\_name: 'Checkbox - Vapor Core'
description: 'Checkbox는 여러 항목 중 복수 선택을 가능하게 하는 입력 컴포넌트입니다.'
-----------------------------------------------------------
```tsx
import { Checkbox, HStack, Text } from '@vapor-ui/core';
export default function DefaultCheckbox() {
return (
} typography="body2">
I agree to the terms and conditions
);
}
```
## Property
***
### Indeterminate
Checkbox의 혼합 상태 여부를 설정합니다.
```tsx
import { Checkbox, HStack, Text, VStack } from '@vapor-ui/core';
export default function CheckboxIndeterminate() {
return (
unchecked
} typography="body2">
Select all
indeterminate
} typography="body2">
Select all
checked
} typography="body2">
Select all
);
}
```
### Disabled
Checkbox의 비활성화 상태를 설정합니다.
```tsx
import { Checkbox, HStack, Text, VStack } from '@vapor-ui/core';
export default function CheckboxDisabled() {
return (
disabled
} typography="body2">
Remember me
disabled checked
} typography="body2">
Remember me
);
}
```
### Invalid
Checkbox의 유효하지 않음 상태를 설정합니다.
```tsx
import { Checkbox, HStack, Text, VStack } from '@vapor-ui/core';
export default function CheckboxInvalid() {
return (
invalid
} typography="body2">
Accept terms
invalid checked
} typography="body2">
Accept terms
);
}
```
### Read Only
Checkbox의 읽기 전용 상태를 설정합니다.
```tsx
import { Checkbox, HStack, Text, VStack } from '@vapor-ui/core';
export default function CheckboxReadOnly() {
return (
unchecked
checked
indeterminate
);
}
```
### Size
Checkbox의 크기를 설정합니다.
```tsx
import { Checkbox, HStack, Text, VStack } from '@vapor-ui/core';
export default function CheckboxSize() {
return (
md
} typography="body2">
Remember me
lg
} typography="body2">
Remember me
);
}
```
## Props Table
***
### Checkbox.Root
| Prop | Type | Default | Description |
| ----------------- | ------------------------------------------------------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------- |
| `size` | `md`, `lg` | `md` | 체크박스 크기 |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `id` | `string` | - | input 요소의 고유 식별자 |
| `name` | `string` | `undefined` | 폼 제출 시 필드를 식별하는 이름 |
| `defaultChecked` | `false`, `true` | `false` | 초기 상태에서 체크박스가 선택되었는지 여부
제어되는 체크박스를 렌더링하려면 대신 `checked` 속성을 사용하십시오. |
| `disabled` | `false`, `true` | `false` | 사용자 상호작용을 비활성화할지 여부 |
| `value` | `string` | - | 폼 제출 시 체크박스의 값 |
| `checked` | `false`, `true` | `undefined` | 체크박스가 현재 선택되었는지 여부
제어되지 않는 체크박스를 렌더링하려면 대신 `defaultChecked` 프로퍼티를 사용하십시오. |
| `readOnly` | `false`, `true` | `false` | 사용자가 체크박스를 선택하거나 선택 해제하지 못하도록 할지 여부 |
| `required` | `false`, `true` | `false` | 사용자가 폼을 제출하기 전에 체크박스를 선택해야 하는지 여부 |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `onCheckedChange` | `(checked: boolean, eventDetails: Checkbox.Root.ChangeEventDetails) => void` | - | 체크박스가 선택되거나 해제될 때 호출되는 이벤트 핸들러 |
| `indeterminate` | `false`, `true` | `false` | 체크박스가 indeterminate 상태인지 여부: 선택되었거나 선택되지 않음. |
| `inputRef` | `null`, `(instance: HTMLInputElement \| null) => void`, `RefObject` | - | 숨겨진 `<input>` 요소에 접근하기 위한 ref |
| `parent` | `false`, `true` | `false` | 체크박스가 하위 체크박스 그룹을 제어하는지 여부
[Checkbox Group](https://base-ui.com/react/components/checkbox-group)에서 사용해야 합니다. |
| `nativeButton` | `false`, `true` | `true` | render prop으로 교체할 때 네이티브 `<button>` 요소를 렌더링할지 여부 렌더링되는 요소가 버튼이 아닌 경우(예: `<div>`) `false`로 설정하세요. |
| `invalid` | `false`, `true` | `false` | 유효성 검사 실패 상태 |
### Checkbox.IndicatorPrimitive
| Prop | Type | Default | Description |
| ------------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `keepMounted` | `false`, `true` | `false` | 체크박스가 선택되지 않은 경우에도 Indicator를 DOM에 유지할지 여부 |
# Collapsible
URL: /docs/components/collapsible
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/collapsible.mdx
Collapsible은 콘텐츠를 접었다 펼칠 수 있는 대화형 컴포넌트입니다. 아코디언이나 확장 가능한 섹션을 구현할 때 사용합니다.
***
title: 'Collapsible'
site\_name: 'Collapsible - Vapor Core'
description: 'Collapsible은 콘텐츠를 접었다 펼칠 수 있는 대화형 컴포넌트입니다. 아코디언이나 확장 가능한 섹션을 구현할 때 사용합니다.'
----------------------------------------------------------------------------------------
```tsx
import { Collapsible, Text, VStack } from '@vapor-ui/core';
import { ChevronRightOutlineIcon } from '@vapor-ui/icons';
export default function DefaultCollapsible() {
return (
Settings
AccountNotificationsPrivacy
);
}
```
## Property
***
### Open State
`defaultOpen`으로 초기 열림 상태를 설정하거나, `open`과 `onOpenChange`로 제어 모드로 사용합니다.
```tsx
import { useState } from 'react';
import { Button, Collapsible, HStack, Text, VStack } from '@vapor-ui/core';
export default function CollapsibleOpenState() {
const [open, setOpen] = useState(true);
return (
defaultOpen
FAQ Section
This panel starts open and manages its own state.
controlled
Release Notes
This panel is controlled externally via state.
);
}
```
### Disabled
Collapsible의 비활성화 상태를 설정합니다.
```tsx
import { Collapsible, Text, VStack } from '@vapor-ui/core';
import { ChevronRightOutlineIcon } from '@vapor-ui/icons';
export default function CollapsibleDisabled() {
return (
enabled
Advanced Options
Configure advanced settings for your project.
disabled
Advanced Options
Configure advanced settings for your project.
);
}
```
### Keep Mounted
`keepMounted`를 사용하면 패널이 닫힌 상태에서도 DOM에 유지됩니다.
```tsx
import { Collapsible, HStack, Text, VStack } from '@vapor-ui/core';
import { ChevronRightOutlineIcon } from '@vapor-ui/icons';
export default function CollapsibleKeepMounted() {
return (
default
Help Section
Removed from DOM when closed.
keepMounted
Help Section
Stays in DOM when closed.
);
}
```
## Props Table
***
### Collapsible.Root
| Prop | Type | Default | Description |
| -------------- | ---------------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `disabled` | `false`, `true` | `false` | 사용자 상호작용을 비활성화할지 여부 |
| `open` | `false`, `true` | - | collapsible 패널의 현재 열림 상태
비제어 컴포넌트로 사용하려면 `defaultOpen` prop을 사용하세요. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `defaultOpen` | `false`, `true` | `false` | collapsible 패널의 초기 열림 상태 (비제어 컴포넌트)
제어 컴포넌트로 사용하려면 `open` prop을 사용하세요. |
| `onOpenChange` | `(open: boolean, eventDetails: Collapsible.Root.ChangeEventDetails) => void` | - | 패널이 열리거나 닫힐 때 호출되는 이벤트 핸들러 |
### Collapsible.Trigger
| Prop | Type | Default | Description |
| -------------- | ------------------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `nativeButton` | `false`, `true` | `true` | render prop으로 교체할 때 네이티브 `<button>` 요소를 렌더링할지 여부 렌더링되는 요소가 버튼이 아닌 경우(예: `<div>`) `false`로 설정하세요. |
### Collapsible.Panel
| Prop | Type | Default | Description |
| ------------------ | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `hiddenUntilFound` | `false`, `true` | `false` | 체크박스가 현재 선택되었는지 여부
제어되지 않는 체크박스를 렌더링하려면 대신 `defaultChecked` 프로퍼티를 사용하십시오 |
| `keepMounted` | `false`, `true` | `false` | 요소가 숨겨져 있는 동안 DOM에 유지할지 여부입니다. 이 속성은 `hiddenUntilFound`가 사용될 때 무시됩니다. |
# Dialog
URL: /docs/components/dialog
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/dialog.mdx
Dialog는 페이지 위에 모달 형태로 정보를 표시하거나 작업을 수행하도록 하는 컴포넌트입니다.
***
title: 'Dialog'
site\_name: 'Dialog - Vapor Core'
description: 'Dialog는 페이지 위에 모달 형태로 정보를 표시하거나 작업을 수행하도록 하는 컴포넌트입니다.'
--------------------------------------------------------------------
```tsx
import { Button, Dialog } from '@vapor-ui/core';
export default function DefaultDialog() {
return (
}>클릭
알림
여기에 다이얼로그 본문 내용이 들어갑니다.
확인} />
);
}
```
## Property
***
### Size
Dialog의 크기를 설정합니다.
```tsx
import { Button, Dialog, HStack, Text, VStack } from '@vapor-ui/core';
export default function DialogSize() {
return (
md
Medium Dialog} />
Medium SizeMedium 크기의 다이얼로그입니다.취소} />
확인} />
lg
Large Dialog} />
Large SizeLarge 크기의 다이얼로그입니다.취소} />
확인} />
xl
Extra Large Dialog} />
Extra Large Size
Extra Large 크기의 다이얼로그입니다.
취소} />
확인} />
);
}
```
### Modal Behavior
Dialog의 모달 동작을 설정합니다.
```tsx
import { Button, Dialog, HStack, Text, VStack } from '@vapor-ui/core';
export default function DialogModal() {
return (
modal
Modal Dialog} />
Modal Dialog
포커스가 다이얼로그 내부에 제한됩니다.
확인} />
non-modal
Non-Modal Dialog} />
Non-Modal Dialog
배경의 다른 요소들과 상호작용할 수 있습니다.
확인} />
);
}
```
## Examples
***
### Custom Usage
Dialog 컴포넌트의 다양한 구성 패턴입니다.
```tsx
import { Button, Dialog } from '@vapor-ui/core';
export default function Flexible() {
return (
확인 다이얼로그} />
작업 확인
이 작업을 진행하시겠습니까? 이 작업은 되돌릴 수 없습니다.
취소} />
삭제} />
);
}
```
## Props Table
***
### Dialog.Root
| Prop | Type | Default | Description |
| ---------------------- | ------------------------------------------------------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `children` | `null`, `string`, `number`, `false`, `true`, `ReactElement`, `Iterable`, `ReactPortal` | - | |
| `open` | `false`, `true` | - | Dialog가 현재 열려 있는지 여부. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `defaultOpen` | `false`, `true` | `false` | Dialog가 처음에 열려 있는지 여부입니다.
제어되는 Dialog를 렌더링하려면 대신 `open` prop을 사용하세요. |
| `modal` | `false`, `true`, `trap-focus` | `true` | 대화 상자를 열었을 때 모드 상태로 전환되는지 여부를 결정합니다. - 'true': 사용자 상호작용은 대화 상자에만 제한됩니다: 포커스가 갇히고, 문서 페이지 스크롤이 잠기고, 외부 요소의 포인터 상호작용이 비활성화됩니다. - 'false': 문서의 나머지 부분과의 사용자 상호작용이 허용됩니다. - 'trap 포커스': 포커스는 대화 상자 안에 갇혀 있지만, 문서 페이지 스크롤은 잠겨 있지 않고 외부의 포인터 상호작용은 활성화된 상태로 유지됩니다. |
| `onOpenChange` | `(open: boolean, eventDetails: Dialog.Root.ChangeEventDetails) => void` | - | 대화 상자를 열거나 닫을 때 호출되는 이벤트 핸들러입니다. |
| `onOpenChangeComplete` | `(open: boolean) => void` | - | 대화 상자가 열리거나 닫힐 때 애니메이션이 완료된 후 호출되는 이벤트 핸들러입니다. |
| `actionsRef` | `RefObject` | - | 명령적 행동에 대한 참조. - '언마운트': 지정하면 대화 상자를 닫았을 때 언마운트되지 않습니다. 대신, '언마운트' 기능을 호출하여 수동으로 대화 상자를 언마운트해야 합니다. 대화 상자의 애니메이션이 외부 라이브러리에 의해 제어될 때 유용합니다. |
| `size` | `md`, `lg`, `xl` | `md` | Dialog 크기 |
### Dialog.Popup
| Prop | Type | Default | Description |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `initialFocus` | `false`, `true`, `RefObject`, `(openType: InteractionType) => boolean \| void \| HTMLElement \| null` | - | 대화 상자를 열 때 집중할 요소를 결정합니다. - 'false': 초점을 움직이지 마세요. - 'true': 기본 동작(첫 번째 탭 가능 요소 또는 팝업)에 따라 초점을 이동합니다. - 'RefObject': 초점을 참조 요소로 이동합니다. - 'function': 상호작용 유형('마우스', '터치', '펜' 또는 '키보드')으로 호출됩니다. 요소를 초점 맞추기 위해 'true'을, 기본 동작을 사용하기 위해 'true'을, 아무것도 하지 않기 위해 'false'/'undefined'을 반환합니다. |
| `finalFocus` | `false`, `true`, `RefObject`, `(closeType: InteractionType) => boolean \| void \| HTMLElement \| null` | - | 대화 상자를 닫을 때 집중할 요소를 결정합니다. - 'false': 초점을 움직이지 마세요. - 'true': 기본 동작(트리거 또는 이전에 집중된 요소)에 따라 초점을 이동합니다. - 'RefObject': 초점을 참조 요소로 이동합니다. - 'function': 상호작용 유형('마우스', '터치', '펜' 또는 '키보드')으로 호출됩니다. 요소를 초점 맞추기 위해 'true'을, 기본 동작을 사용하기 위해 'true'을, 아무것도 하지 않기 위해 'false'/'undefined'을 반환합니다. |
| `portalElement` | `ReactElement` | - | |
| `overlayElement` | `ReactElement` | - | |
#### Dialog.PortalPrimitive
| Prop | Type | Default | Description |
| ------------- | ------------------------------------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `children` | `null`, `string`, `number`, `false`, `true`, `ReactElement`, `Iterable`, `ReactPortal` | - | |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `container` | `null`, `HTMLElement`, `ShadowRoot`, `RefObject` | - | 포털 요소를 렌더링할 상위 요소입니다. |
| `keepMounted` | `false`, `true` | `false` | 포털이 숨겨져 있는 동안 DOM에 유지할지 여부입니다. |
#### Dialog.OverlayPrimitive
| Prop | Type | Default | Description |
| ------------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `forceRender` | `false`, `true` | `false` | 중첩되어 있을 때도 백드롭이 강제로 렌더링되는지 여부입니다. |
#### Dialog.PopupPrimitive
| Prop | Type | Default | Description |
| -------------- | --------------------------------------------------------------------------------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `initialFocus` | `false`, `true`, `RefObject`, `(openType: InteractionType) => boolean \| void \| HTMLElement \| null` | - | 대화 상자를 열 때 집중할 요소를 결정합니다. - 'false': 초점을 움직이지 마세요. - 'true': 기본 동작(첫 번째 탭 가능 요소 또는 팝업)에 따라 초점을 이동합니다. - 'RefObject': 초점을 참조 요소로 이동합니다. - 'function': 상호작용 유형('마우스', '터치', '펜' 또는 '키보드')으로 호출됩니다. 요소를 초점 맞추기 위해 'true'을, 기본 동작을 사용하기 위해 'true'을, 아무것도 하지 않기 위해 'false'/'undefined'을 반환합니다. |
| `finalFocus` | `false`, `true`, `RefObject`, `(closeType: InteractionType) => boolean \| void \| HTMLElement \| null` | - | 대화 상자를 닫을 때 집중할 요소를 결정합니다. - 'false': 초점을 움직이지 마세요. - 'true': 기본 동작(트리거 또는 이전에 집중된 요소)에 따라 초점을 이동합니다. - 'RefObject': 초점을 참조 요소로 이동합니다. - 'function': 상호작용 유형('마우스', '터치', '펜' 또는 '키보드')으로 호출됩니다. 요소를 초점 맞추기 위해 'true'을, 기본 동작을 사용하기 위해 'true'을, 아무것도 하지 않기 위해 'false'/'undefined'을 반환합니다. |
### Dialog.Trigger
| Prop | Type | Default | Description |
| -------------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `nativeButton` | `false`, `true` | `true` | 컴포넌트가 `render` 속성을 통해 대체될 때 네이티브 `<button>` 요소를 렌더링할지 여부입니다. 렌더링된 요소가 버튼이 아닌 경우(예: `<div>`) `false`로 설정하세요. |
### Dialog.Close
| Prop | Type | Default | Description |
| -------------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `nativeButton` | `false`, `true` | `true` | 컴포넌트가 `render` 속성을 통해 대체될 때 네이티브 `<button>` 요소를 렌더링할지 여부입니다. 렌더링된 요소가 버튼이 아닌 경우(예: `<div>`) `false`로 설정하세요. |
### Dialog.Title
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Dialog.Description
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Dialog.Header
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Dialog.Body
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Dialog.Footer
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
# Field
URL: /docs/components/field
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/field.mdx
Field는 폼 요소들을 감싸는 컨테이너 컴포넌트로, 라벨, 설명, 에러 메시지, 성공 메시지 등을 제공합니다.
***
title: Field
site\_name: Field - Vapor Core
description: Field는 폼 요소들을 감싸는 컨테이너 컴포넌트로, 라벨, 설명, 에러 메시지, 성공 메시지 등을 제공합니다.
---------------------------------------------------------------------------
```tsx
'use client';
import { Field, TextInput } from '@vapor-ui/core';
export default function DefaultField() {
return (
Email
We'll never share your email.
);
}
```
## Examples
***
### With Description
Field에 대한 추가 설명을 표시합니다.
```tsx
'use client';
import { Field, TextInput, VStack } from '@vapor-ui/core';
export default function FieldDescription() {
return (
Username
Username
This will be your public display name.
);
}
```
### Error and Success
`Field.Error`와 `Field.Success`를 사용하여 유효성 검사 결과를 표시합니다.
```tsx
'use client';
import { Field, TextInput, VStack } from '@vapor-ui/core';
export default function FieldError() {
return (
Email
Please enter a valid email address.
Email
Email is valid.
);
}
```
### Required
필수 Field와 선택 Field를 구분하여 표시합니다.
```tsx
'use client';
import { Field, Text, TextInput, VStack } from '@vapor-ui/core';
export default function FieldRequired() {
return (
필수 입력 필드 *
이 필드는 반드시 입력해야 하는 필수 항목입니다.
이 필드는 필수 입력 항목입니다.입력이 완료되었습니다.
{/* Optional Field */}
선택 입력 필드{' '}
(선택사항)
이 필드는 선택적으로 입력할 수 있습니다.
);
}
```
### Disabled
disabled 속성을 사용하여 비활성화된 Field를 만들 수 있습니다.
```tsx
'use client';
import { Field, Text, TextInput, VStack } from '@vapor-ui/core';
export default function FieldDisabled() {
return (
enabled
Email
Enter your email address.
disabled
Email
Enter your email address.
);
}
```
### With RadioGroup
RadioGroup과 Field를 함께 사용합니다. `Field.Item`을 사용하여 각 Radio 옵션을 라벨과 함께 그룹화할 수 있습니다.
```tsx
'use client';
import { Field, Radio, RadioGroup, VStack } from '@vapor-ui/core';
export default function FieldRadioGroup() {
return (
성별남성여성기타개인정보 보호를 위해 선택사항입니다.
);
}
```
### With Form Elements
TextInput, Checkbox, Switch, Select 등 다양한 폼 요소와 함께 사용합니다.
```tsx
'use client';
import { Checkbox, Field, Select, Switch, TextInput, VStack } from '@vapor-ui/core';
export default function FieldWithInputs() {
return (
Email
Your primary contact email.
Subscribe to newsletter
Get the latest updates in your inbox.
Push notifications
Receive alerts on your device.
국가
{countries.map((country) => (
{country.label}
))}
Select your country of residence.
);
}
const countries = [
{ label: '대한민국', value: 'kr' },
{ label: '미국', value: 'us' },
{ label: '일본', value: 'jp' },
{ label: '중국', value: 'cn' },
];
```
## Property
***
### Validation
`validationMode`를 통해 유효성 검사 타이밍을 설정합니다. `match` prop으로 특정 에러 타입에 대한 메시지를 표시합니다.
```tsx
'use client';
import { Field, TextInput, VStack } from '@vapor-ui/core';
export default function FieldValidation() {
return (
Email
Validated when you leave the field.Email is required.Please enter a valid email.Email looks good.
Password
Validated as you type. Minimum 8 characters.Password is required.Password must be at least 8 characters.Password is strong.
);
}
```
### Disabled
Field의 비활성화 상태를 설정합니다.
```tsx
'use client';
import { Field, Text, TextInput, VStack } from '@vapor-ui/core';
export default function FieldDisabled() {
return (
enabled
Email
Enter your email address.
disabled
Email
Enter your email address.
);
}
```
## Props Table
***
### Field.Root
| Prop | Type | Default | Description |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `name` | `string` | - | 폼 제출 시 필드를 식별하는 이름 `<Field.Control>` 컴포넌트의 `name` prop보다 우선합니다. |
| `disabled` | `false`, `true` | `false` | 사용자 상호작용을 무시할지 여부 `<Field.Control>` 컴포넌트의 `disabled` prop보다 우선합니다. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `validate` | `(value: unknown, formValues: Record) => string \| string[] \| Promise \| null` | - | 커스텀 유효성 검사 함수 값이 유효하지 않으면 에러 메시지 문자열 또는 문자열 배열을 반환하고, 유효하면 `null`을 반환합니다. |
| `validationMode` | `onSubmit`, `onBlur`, `onChange` | `onSubmit` | 필드 유효성 검사 시점
- **onSubmit**: 폼 제출 시 검사 (기본값) - **onBlur**: 컨트롤이 포커스를 잃을 때 검사 - **onChange**: 컨트롤 값이 변경될 때마다 검사 |
| `validationDebounceTime` | `number` | `0` | `validationMode="onChange"` 사용 시 `validate` 콜백 사이의 대기 시간 (밀리초) |
| `invalid` | `false`, `true` | - | 필드를 강제로 유효하지 않은 상태로 표시할지 여부 |
### Field.Label
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Field.Description
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Field.Error
| Prop | Type | Default | Description |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `match` | `false`, `true`, `badInput`, `customError`, `patternMismatch`, `rangeOverflow`, `rangeUnderflow`, `stepMismatch`, `tooLong`, `tooShort`, `typeMismatch`, `valueMissing` | - | 특정 유효성 검사 상태에 대한 오류 메시지를 표시할지 여부
- **false**: 모든 오류 메시지를 표시 - **true**: 모든 오류 메시지를 숨김 - **기타 문자열**: 해당 유효성 검사 상태에 대한 오류 메시지만 표시 |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Field.Success
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `match` | `false`, `true`, `valid` | - | 성공 메시지를 표시할지 여부
- **false**: 모든 성공 메시지를 표시 - **true**: 모든 성공 메시지를 숨김 - **valid**: 필드가 유효한 상태일 때만 성공 메시지를 표시 |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### Field.Item
| Prop | Type | Default | Description |
| ----------- | ------------------------------------ | ------- | ---------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `children` | `ReactNode` | - | Field.Item 내부에 렌더링될 콘텐츠. 일반적으로 Checkbox, Radio, Switch와 Field.Label을 포함합니다. |
# FloatingBar
URL: /docs/components/floating-bar
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/floating-bar.mdx
FloatingBar는 하단에 고정되어 주요 액션을 포함하는 컴포넌트입니다.
***
title: 'FloatingBar'
site\_name: 'FloatingBar - Vapor Core'
description: 'FloatingBar는 하단에 고정되어 주요 액션을 포함하는 컴포넌트입니다.'
---------------------------------------------------------
```tsx
import { FloatingBar } from '@vapor-ui/core';
export default function DefaultFloatingBar() {
return (
Open Floating BarThis is the floating bar content.
);
}
```
## Examples
***
### Actions
FloatingBar는 다양한 액션 요소를 담을 수 있습니다.
```tsx
import { Box, Button, FloatingBar } from '@vapor-ui/core';
export default function FloatingBarWithActions() {
return (
}>Open FloatingBar
);
}
```
### Controlled
FloatingBar는 제어 형태로 사용되어, 여러 상태를 동시에 관리할 수 있습니다.
```tsx
import { useState } from 'react';
import {
Badge,
Box,
Button,
Checkbox,
Field,
FloatingBar,
IconButton,
Text,
VStack,
} from '@vapor-ui/core';
import { CloseOutlineIcon } from '@vapor-ui/icons';
const options = [
{ id: 'item1', label: 'First Item', defaultChecked: false },
{ id: 'item2', label: 'Second Item', defaultChecked: false },
{ id: 'item3', label: 'Third Item', defaultChecked: false },
];
export default function FloatingBarControlled() {
const [selectedItems, setSelectedItems] = useState(() =>
Object.fromEntries(options.map((option) => [option.id, option.defaultChecked])),
);
const selectedCount = Object.values(selectedItems).filter(Boolean).length;
const [open, setOpen] = useState(selectedCount > 0);
const handleItemChange = (itemId: string, isChecked: boolean) => {
setSelectedItems((prev) => {
const newSelectedItems = { ...prev, [itemId]: isChecked };
const newSelectedCount = Object.values(newSelectedItems).filter(Boolean).length;
setOpen(newSelectedCount > 0);
return newSelectedItems;
});
};
const handleSelectAll = () => {
setSelectedItems(Object.fromEntries(options.map((option) => [option.id, true])));
setOpen(true);
};
const handleClearAll = () => {
setSelectedItems(Object.fromEntries(options.map((option) => [option.id, false])));
setOpen(false);
};
return (
<>
} $css={{ marginBottom: '$200' }}>
Select options below to see the FloatingBar.
{options.map((option) => (
handleItemChange(option.id, checked)}
/>
{option.label}
))}
{selectedCount} Selected
}
>
>
);
}
```
## Props Table
***
### FloatingBar.Root
| Prop | Type | Default | Description |
| -------------- | --------------------------------------------------------- | ----------- | ------------------------------------------------------------------------------------ |
| `open` | `boolean` | `undefined` | FloatingBar의 열림 상태를 제어합니다. 이 prop이 제공되면 컴포넌트가 제어 모드로 동작합니다. |
| `defaultOpen` | `boolean` | `false` | FloatingBar의 초기 열림 상태를 설정합니다. 비제어 모드에서만 사용됩니다. |
| `onOpenChange` | `(open: boolean, event?: Event, reason?: string) => void` | `undefined` | FloatingBar의 열림 상태가 변경될 때 호출되는 콜백 함수입니다. open 상태, 이벤트, 그리고 변경 이유를 인자로 받습니다. |
| `modal` | `boolean`, `{ trapFocus?: boolean }` | `true` | FloatingBar가 모달 형태로 동작할지 여부를 설정합니다. true일 때 배경을 클릭하면 FloatingBar가 닫히고 포커스 트랩이 적용됩니다. |
| `openOnHover` | `boolean` | `false` | 마우스 호버 시 FloatingBar를 열지 여부를 설정합니다. |
| `delay` | `number`, `{ open?: number; close?: number }` | `0` | FloatingBar 열기/닫기 지연 시간을 밀리초 단위로 설정합니다. |
### FloatingBar.Trigger
| Prop | Type | Default | Description |
| ---------- | ---------------------------------------------------------------------------------------- | ----------- | --------------------------------------------------------------- |
| `render` | `React.ReactElement`, `(props: TriggerProps, state: TriggerState) => React.ReactElement` | `undefined` | 트리거 요소를 렌더링하는 함수 또는 컴포넌트입니다. 함수로 제공될 경우 props와 state를 인자로 받습니다. |
| `disabled` | `boolean` | `false` | 트리거 요소를 비활성화할지 여부를 설정합니다. |
### FloatingBar.Close
| Prop | Type | Default | Description |
| -------- | ----------------------------------------------------------------- | ----------- | --------------------------- |
| `render` | `React.ReactElement`, `(props: CloseProps) => React.ReactElement` | `undefined` | 닫기 버튼을 렌더링하는 함수 또는 컴포넌트입니다. |
### FloatingBar.Popup
| Prop | Type | Default | Description |
| ------------------- | -------------------- | ----------- | ------------------------------------------------------------------------- |
| `portalElement` | `React.ReactElement` | `undefined` | Portal 컴포넌트에 전달될 React Element입니다. FloatingBar가 렌더링될 위치와 관련된 설정을 제어합니다. |
| `positionerElement` | `React.ReactElement` | `undefined` | Positioner 컴포넌트에 전달될 React Element입니다. FloatingBar의 위치와 정렬에 관한 설정을 제어합니다. |
| `className` | `string` | `undefined` | FloatingBar 컨텐츠에 적용할 CSS 클래스명입니다. |
### FloatingBar.PortalPrimitive
| Prop | Type | Default | Description |
| ------------- | ------------------------------------------ | --------------- | ---------------------------------------------------------------------- |
| `container` | `HTMLElement`, `() => HTMLElement`, `null` | `document.body` | FloatingBar가 렌더링될 컨테이너 요소를 지정합니다. null을 전달하면 포탈을 사용하지 않고 인라인으로 렌더링합니다. |
| `keepMounted` | `boolean` | `false` | FloatingBar가 닫혀있을 때도 DOM에 마운트된 상태를 유지할지 여부를 설정합니다. |
### FloatingBar.PositionerPrimitive
| Prop | Type | Default | Description |
| ----------- | ------------------------------------------------------------------------------------ | ----------- | ---------------------------------------- |
| `className` | `string` | `undefined` | FloatingBar Positioner에 적용할 CSS 클래스명입니다. |
| `style` | `CSSProperties` | `undefined` | FloatingBar Positioner에 적용할 인라인 스타일입니다. |
| `render` | `React.ReactElement`, `(props: PopupProps, state: PopupState) => React.ReactElement` | `undefined` | Positioner 요소를 렌더링하는 함수 또는 컴포넌트입니다. |
### FloatingBar.PopupPrimitive
| Prop | Type | Default | Description |
| ------------------- | -------------------- | ----------- | ------------------------------------------------------------------------- |
| `portalElement` | `React.ReactElement` | `undefined` | Portal 컴포넌트에 전달될 React Element입니다. FloatingBar가 렌더링될 위치와 관련된 설정을 제어합니다. |
| `positionerElement` | `React.ReactElement` | `undefined` | Positioner 컴포넌트에 전달될 React Element입니다. FloatingBar의 위치와 정렬에 관한 설정을 제어합니다. |
| `className` | `string` | `undefined` | FloatingBar 컨텐츠에 적용할 CSS 클래스명입니다. |
# Form
URL: /docs/components/form
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/form.mdx
Form은 사용자 입력을 수집하고 유효성 검사를 수행하는 폼 컨테이너입니다.
***
title: 'Form'
site\_name: 'Form - Vapor Core'
description: 'Form은 사용자 입력을 수집하고 유효성 검사를 수행하는 폼 컨테이너입니다.'
---------------------------------------------------------
```tsx
'use client';
import { Button, Field, Form, TextInput, VStack } from '@vapor-ui/core';
export default function DefaultForm() {
return (
);
}
```
## Examples
***
### Validation
HTML5 기본 유효성 검사를 활용하여 폼 필드를 검증합니다.
```tsx
'use client';
import { Button, Field, Form, TextInput, VStack } from '@vapor-ui/core';
export default function FormValidation() {
return (
);
}
```
### With Field Components
다양한 입력 컴포넌트와 Field를 조합하여 완성된 폼을 구성합니다.
```tsx
'use client';
import { Button, Checkbox, Field, Form, HStack, Select, TextInput, VStack } from '@vapor-ui/core';
export default function FormWithField() {
return (
);
}
```
## Props Table
***
### Form
> ⚠️ Spec file not found: `form.json`
# IconButton
URL: /docs/components/icon-button
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/icon-button.mdx
IconButton은 특정 작업이나 기능을 나타내며, 텍스트 없이 아이콘만으로 명령을 전달하는 버튼입니다.
***
title: 'IconButton'
site\_name: 'IconButton - Vapor Core'
description: 'IconButton은 특정 작업이나 기능을 나타내며, 텍스트 없이 아이콘만으로 명령을 전달하는 버튼입니다.'
--------------------------------------------------------------------------
```tsx
import { IconButton } from '@vapor-ui/core';
import { HeartIcon } from '@vapor-ui/icons';
export default function DefaultIconButton() {
return (
);
}
```
## Property
***
### Size
IconButton의 크기를 설정합니다.
```tsx
import { HStack, IconButton, Text, VStack } from '@vapor-ui/core';
import { HeartIcon } from '@vapor-ui/icons';
export default function IconButtonSize() {
return (
sm
md
lg
xl
);
}
```
### ColorPalette
IconButton의 색상을 설정합니다.
```tsx
import { HStack, IconButton, Text, VStack } from '@vapor-ui/core';
import { HeartIcon } from '@vapor-ui/icons';
export default function IconButtonColor() {
return (
primary
secondary
success
warning
danger
contrast
);
}
```
### Variant
IconButton의 시각적 변형을 설정합니다.
```tsx
import { HStack, IconButton, Text, VStack } from '@vapor-ui/core';
import { HeartIcon } from '@vapor-ui/icons';
export default function IconButtonVariant() {
return (
fill
outline
ghost
);
}
```
### Shape
IconButton의 모양을 설정합니다.
```tsx
import { HStack, IconButton, Text, VStack } from '@vapor-ui/core';
import { HeartIcon } from '@vapor-ui/icons';
export default function IconButtonShape() {
return (
square
circle
);
}
```
### Disabled
IconButton의 비활성화 상태를 설정합니다.
```tsx
import { HStack, IconButton, Text, VStack } from '@vapor-ui/core';
import { HeartIcon } from '@vapor-ui/icons';
export default function IconButtonDisabled() {
return (
fill
outline
ghost
);
}
```
## Props Table
***
### IconButton
| Prop | Type | Default | Description |
| -------------- | ------------------------------------------------------------------ | --------- | ---------------------------------------------------------------------------------------------- |
| `size` | `sm`, `md`, `lg`, `xl` | `md` | 버튼 크기 |
| `shape` | `circle`, `square` | `square` | 버튼 모양 |
| **aria-label** | `string` | - | 현재 요소의 레이블을 정의하는 문자열 값 |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `colorPalette` | `primary`, `secondary`, `success`, `warning`, `danger`, `contrast` | `primary` | 버튼 색상 |
| `variant` | `outline`, `fill`, `ghost` | `fill` | 버튼 스타일 (fill: 채움, outline: 테두리, ghost: 투명) |
# InputGroup
URL: /docs/components/input-group
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/input-group.mdx
InputGroup은 입력 필드(TextInput, Textarea)와 관련 요소들을 그룹화하여 문자 수 카운터와 같은 추가 기능을 제공합니다.
***
title: 'InputGroup'
site\_name: 'InputGroup - Vapor Core'
description: 'InputGroup은 입력 필드(TextInput, Textarea)와 관련 요소들을 그룹화하여 문자 수 카운터와 같은 추가 기능을 제공합니다.'
-----------------------------------------------------------------------------------------------
```tsx
'use client';
import { InputGroup, TextInput, VStack } from '@vapor-ui/core';
export default function DefaultInputGroup() {
return (
);
}
```
## Examples
***
### Custom Counter
커스텀 카운터 UI를 구현합니다.
```tsx
'use client';
import { InputGroup, Text, TextInput, VStack } from '@vapor-ui/core';
export default function InputGroupCustomCounter() {
return (
커스텀 카운터 예시 1
{({ count, maxLength }) => `${count} of ${maxLength} characters`}
커스텀 카운터 예시 2
{({ count, maxLength, value }) => (
maxLength * 0.8 ? 'danger-100' : 'hint-100'
}
>
{count}/{maxLength} {value.length > 50 && '(50자 초과)'}
)}
);
}
```
## Props Table
***
### InputGroup.Root
| Prop | Type | Default | Description |
| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
### InputGroup.Counter
| Prop | Type | Default | Description |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------- |
| `children` | `null`, `string`, `number`, `false`, `true`, `ReactElement`, `Iterable`, `ReactPortal`, `(props: CounterRenderProps) => ReactNode` | - | |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
# Menu
URL: /docs/components/menu
Source: https://raw.githubusercontent.com/goorm-dev/vapor-ui/refs/heads/main/apps/website/content/docs/components/(components)/menu.mdx
드롭다운 Menu와 컨텍스트 Menu를 제공하는 컴포넌트입니다
***
title: 'Menu'
site\_name: 'Menu - Vapor Core'
description: '드롭다운 Menu와 컨텍스트 Menu를 제공하는 컴포넌트입니다'
-------------------------------------------------
```tsx
'use client';
import { Button, Menu } from '@vapor-ui/core';
export default function DefaultMenu() {
return (
메뉴 열기} />
새 파일새 폴더복사붙여넣기삭제
);
}
```
## Property
***
### Disabled
Menu의 비활성화 상태를 설정합니다.
```tsx
'use client';
import { Button, HStack, Menu, Text, VStack } from '@vapor-ui/core';
export default function MenuDisabled() {
return (
disabled item
일반 메뉴} />
활성 아이템 1비활성 아이템활성 아이템 2비활성 아이템 2활성 아이템 3
disabled menu
비활성 메뉴} />
아이템 1아이템 2아이템 3
);
}
```
## Examples
***
### Positioning
Menu의 표시 위치를 설정합니다.
```tsx
'use client';
import { Button, HStack, Menu, Text, VStack } from '@vapor-ui/core';
export default function MenuPositioning() {
return (
top
상단 메뉴} />
상단 아이템 1상단 아이템 2상단 아이템 3
right
우측 메뉴} />
우측 아이템 1우측 아이템 2우측 아이템 3
bottom
하단 메뉴} />
하단 아이템 1하단 아이템 2하단 아이템 3
left
좌측 메뉴} />
좌측 아이템 1좌측 아이템 2좌측 아이템 3
);
}
```
### Groups
Menu 아이템을 그룹화합니다.
```tsx
'use client';
import { Button, Menu } from '@vapor-ui/core';
export default function MenuGroups() {
return (
그룹 메뉴} />
파일새 파일파일 열기파일 저장편집복사붙여넣기잘라내기도구설정도움말
);
}
```
### With Checkbox Items
Checkbox Item을 사용합니다.
```tsx
'use client';
import { useState } from 'react';
import { Button, Menu } from '@vapor-ui/core';
export default function MenuCheckbox() {
const [showToolbar, setShowToolbar] = useState(true);
const [showSidebar, setShowSidebar] = useState(false);
const [showStatusbar, setShowStatusbar] = useState(true);
return (
보기 설정} />
보기 옵션
툴바 표시
사이드바 표시
상태바 표시
);
}
```
### With Radio Items
Radio Item을 사용합니다.
```tsx
'use client';
import { useState } from 'react';
import { Button, Menu } from '@vapor-ui/core';
export default function MenuRadio() {
const [fontSize, setFontSize] = useState('medium');
return (
글꼴 크기} />
글꼴 크기 선택작게 (12px)보통 (14px)크게 (16px)매우 크게 (18px)
);
}
```
### With Submenu
Submenu를 구성할 수 있습니다.
```tsx
'use client';
import { Button, Menu } from '@vapor-ui/core';
export default function MenuSubmenu() {
return (
서브메뉴} />
새 파일파일 열기최근 파일document.txtpresentation.pptxspreadsheet.xlsx더 많은 파일...내보내기PDF로 내보내기이미지로 내보내기HTML로 내보내기종료
);
}
```
## Props Table
***
### Menu.Root
| Prop | Type | Default | Description |
| ---------------------- | -------------------------------------------------------------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `orientation` | `horizontal`, `vertical` | `vertical` | 메뉴의 시각적 방향입니다. 로빙 포커스가 위/아래 또는 왼쪽/오른쪽 화살표 키를 사용하는지 제어합니다. |
| **children** | `undefined`, `null`, `string`, `number`, `false`, `true`, `ReactElement`, `Iterable`, `ReactPortal` | - | |
| `loop` | `false`, `true` | `true` | 키보드 포커스를 첫 번째 항목으로 다시 루프할지 여부 화살표 키를 사용할 때 목록 끝에 도달하면. |
| `disabled` | `false`, `true` | `false` | 컴포넌트가 사용자 상호작용을 무시해야 하는지 여부입니다. |
| `open` | `false`, `true` | - | 메뉴가 현재 열려 있는지 여부입니다. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `defaultOpen` | `false`, `true` | `false` | 메뉴가 처음에 열려 있는지 여부입니다.
제어되는 메뉴를 렌더링하려면 대신 `open` 속성을 사용하세요. |
| `modal` | `false`, `true` | `true` | 메뉴가 열려 있을 때 모달 상태에 들어가는지 여부를 결정합니다. - `true`: 사용자 상호작용이 메뉴로 제한됩니다: 문서 페이지 스크롤이 잠기고 외부 요소에 대한 포인터 상호작용이 비활성화됩니다. - `false`: 문서의 나머지 부분과의 사용자 상호작용이 허용됩니다. |
| `onOpenChange` | `(open: boolean, eventDetails: ChangeEventDetails) => void` | - | 메뉴가 열리거나 닫힐 때 호출되는 이벤트 핸들러입니다. |
| `onOpenChangeComplete` | `(open: boolean) => void` | - | 메뉴가 닫힐 때 애니메이션이 완료된 후 호출되는 이벤트 핸들러입니다. |
| `closeParentOnEsc` | `false`, `true` | `true` | 하위 메뉴에 있을 때, Escape 키를 눌렀을 때 전체 메뉴를 닫을지 현재 하위 메뉴만 닫을지 결정합니다. |
| `actionsRef` | `RefObject` | - | 명령형 작업에 대한 ref입니다. - `unmount`: 지정된 경우, 메뉴가 닫힐 때 마운트 해제되지 않습니다. 대신, `unmount` 함수를 호출하여 메뉴를 수동으로 마운트 해제해야 합니다. 메뉴의 애니메이션이 외부 라이브러리에 의해 제어되는 경우에 유용합니다. |
### Menu.Trigger
| Prop | Type | Default | Description |
| -------------- | ------------------------------------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------- |
| `className` | `string`, `(state: State) => string` | - | 요소에 적용된 CSS 클래스 또는 컴포넌트의 상태에 따라 클래스를 반환하는 함수. |
| `children` | `null`, `string`, `number`, `false`, `true`, `ReactElement`, `Iterable`, `ReactPortal` | - | |
| `disabled` | `false`, `true` | `false` | 구성 요소가 사용자 상호작용을 무시해야 하는지 여부. |
| `render` | `ReactElement` | - | 컴포넌트의 HTML 요소를 다른 태그로 대체하거나 다른 컴포넌트와 조합할 수 있습니다. 렌더링할 요소를 반환하는 `ReactElement` 또는 함수를 인수로 받습니다. |
| `nativeButton` | `false`, `true` | `true` | 구성 요소가 교체할 때 네이티브 '\