# @lotte-innovate/ui-component-test

> Lotte UI Library

Latest version **0.2.90** (published 2025-03-19) · 0 weekly downloads

## Install

```sh
npm install @lotte-innovate/ui-component-test
pnpm add @lotte-innovate/ui-component-test
yarn add @lotte-innovate/ui-component-test
bun add @lotte-innovate/ui-component-test
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.90 |
| Published | 2025-03-19 |
| First published | 2024-09-03 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 54 |
| Unpacked size | 4.3 MB |
| Known vulnerabilities | 0 (+28 in 2 direct dependencies) |
| Install scripts | no |
| Maintainers | minju.ko, choiyeonhee, lui2626, leejoohee |

## Links

- npm: https://www.npmjs.com/package/@lotte-innovate/ui-component-test
- Homepage: https://develop--66849ef80cb87f1ca900f051.chromatic.com/
- npm.io page: https://npm.io/package/@lotte-innovate/ui-component-test

## Dependencies (54)

- [clsx](https://npm.io/package/clsx.md) ^2.1.0
- [next](https://npm.io/package/next.md) ^14.1.4
- [react](https://npm.io/package/react.md) ^18
- [marked](https://npm.io/package/marked.md) ^14.1.3
- [tinymce](https://npm.io/package/tinymce.md) ^6.8.5
- [chart.js](https://npm.io/package/chart.js.md) ^4.4.4
- [date-fns](https://npm.io/package/date-fns.md) ^2.30.0
- [cross-env](https://npm.io/package/cross-env.md) ^7.0.3
- [react-dom](https://npm.io/package/react-dom.md) ^18
- [raw-loader](https://npm.io/package/raw-loader.md) ^4.0.2
- [react-tabs](https://npm.io/package/react-tabs.md) ^6.0.2
- [@babel/runtime](https://npm.io/package/@babel/runtime.md) ^7.24.7
- [@stitches/core](https://npm.io/package/@stitches/core.md) ^1.2.8
- [tailwind-merge](https://npm.io/package/tailwind-merge.md) ^2.2.2
- [@stitches/react](https://npm.io/package/@stitches/react.md) ^1.2.8
- [react-chartjs-2](https://npm.io/package/react-chartjs-2.md) ^5.2.0
- [@radix-ui/colors](https://npm.io/package/@radix-ui/colors.md) ^3.0.0
- [@radix-ui/themes](https://npm.io/package/@radix-ui/themes.md) ^3.1.1
- [react-day-picker](https://npm.io/package/react-day-picker.md) ^8.7.1
- [react-pro-sidebar](https://npm.io/package/react-pro-sidebar.md) ^1.1.0
- [react-complex-tree](https://npm.io/package/react-complex-tree.md) ^2.4.6
- [@lotte-innovate/lui](https://npm.io/package/@lotte-innovate/lui.md) ^0.1.86
- [storybook-dark-mode](https://npm.io/package/storybook-dark-mode.md) ^4.0.2
- [@radix-ui/react-tabs](https://npm.io/package/@radix-ui/react-tabs.md) ^1.1.0
- [@radix-ui/react-icons](https://npm.io/package/@radix-ui/react-icons.md) ^1.3.0
- [@radix-ui/react-label](https://npm.io/package/@radix-ui/react-label.md) ^2.1.0
- [@radix-ui/react-toast](https://npm.io/package/@radix-ui/react-toast.md) ^1.2.1
- [@storybook/addon-a11y](https://npm.io/package/@storybook/addon-a11y.md) ^8.3.5
- [@tanstack/react-table](https://npm.io/package/@tanstack/react-table.md) ^8.20.5
- [@babel/runtime-corejs3](https://npm.io/package/@babel/runtime-corejs3.md) ^7.24.7
- [@radix-ui/react-dialog](https://npm.io/package/@radix-ui/react-dialog.md) ^1.1.1
- [@radix-ui/react-select](https://npm.io/package/@radix-ui/react-select.md) ^2.1.1
- [@radix-ui/react-slider](https://npm.io/package/@radix-ui/react-slider.md) ^1.2.0
- [@radix-ui/react-switch](https://npm.io/package/@radix-ui/react-switch.md) ^1.1.0
- [@storybook/manager-api](https://npm.io/package/@storybook/manager-api.md) ^8.3.5
- [@tinymce/tinymce-react](https://npm.io/package/@tinymce/tinymce-react.md) ^5.1.1
- [@radix-ui/react-menubar](https://npm.io/package/@radix-ui/react-menubar.md) ^1.1.1
- [@radix-ui/react-popover](https://npm.io/package/@radix-ui/react-popover.md) 1.0.7
- [@radix-ui/react-tooltip](https://npm.io/package/@radix-ui/react-tooltip.md) ^1.1.1
- [react-copy-to-clipboard](https://npm.io/package/react-copy-to-clipboard.md) ^5.1.0
- [@radix-ui/react-checkbox](https://npm.io/package/@radix-ui/react-checkbox.md) ^1.0.4
- [class-variance-authority](https://npm.io/package/class-variance-authority.md) ^0.7.0
- [@radix-ui/react-accordion](https://npm.io/package/@radix-ui/react-accordion.md) ^1.2.0
- [@radix-ui/react-separator](https://npm.io/package/@radix-ui/react-separator.md) ^1.1.0
- [chartjs-plugin-datalabels](https://npm.io/package/chartjs-plugin-datalabels.md) ^2.2.0
- [@radix-ui/react-hover-card](https://npm.io/package/@radix-ui/react-hover-card.md) ^1.1.1
- [@radix-ui/react-radio-group](https://npm.io/package/@radix-ui/react-radio-group.md) ^1.1.3
- [@radix-ui/react-dropdown-menu](https://npm.io/package/@radix-ui/react-dropdown-menu.md) ^2.1.1
- [storybook-addon-deep-controls](https://npm.io/package/storybook-addon-deep-controls.md) ^0.7.1
- [react-calendar-datetime-picker](https://npm.io/package/react-calendar-datetime-picker.md) ^1.7.4
- [@radix-ui/react-navigation-menu](https://npm.io/package/@radix-ui/react-navigation-menu.md) ^1.2.0
- [rollup-plugin-peer-deps-external](https://npm.io/package/rollup-plugin-peer-deps-external.md) ^2.2.4
- [@lotte-innovate/ui-component-test](https://npm.io/package/@lotte-innovate/ui-component-test.md) ^0.2.89
- [rollup-plugin-preserve-directives](https://npm.io/package/rollup-plugin-preserve-directives.md) ^0.4.0

## Recent versions

- 0.2.90 (latest) — 2025-03-19
- 0.2.89 — 2025-03-18
- 0.2.88 — 2025-01-23
- 0.2.87-beta.1 — 2025-01-20
- 0.2.87 — 2025-01-20
- 0.2.86 — 2025-01-20
- 0.2.85 — 2025-01-20
- 0.2.84 — 2025-01-20
- 0.2.83 — 2025-01-17
- 0.2.82 — 2025-01-15
- 0.2.81 — 2025-01-15
- 0.2.80 — 2025-01-07
- 0.2.79 — 2025-01-07
- 0.2.78 — 2025-01-07
- 0.2.77 — 2025-01-06
- … 363 more at https://npm.io/package/@lotte-innovate/ui-component-test/versions

## README

# LOTTE UI COMPONENT LIBRARY

<br />

## 목차

- [Introduction](#introduction)
- [Installation](#installation)
- [Setup](#setup)
- [Usage](#usage)
- [Components](#components)
- [Theme](#theme)
- [License](#license)

## Introduction

모든 L-UI 구성 요소를 내보내는 단일 패키지입니다.

일관되고 통일된 컴포넌트를 제공하며 사용자 정의 및 재사용 가능합니다.

이 라이브러리는 React로 구축된 프로젝트를 지원합니다.

## Installation

패키지를 설치하기 위해 아래 명령어를 사용합니다.

```bash
  npm i @lotte-innovate/lui
```

```bash
  yarn add @lotte-innovate/lui
```

## Setup

패키지를 설치한 후 css 스타일을 프로젝트로 가져옵니다.

프로젝트 App 진입 파일에 다음 줄을 추가해줍니다.

```javascript
import '@lotte-innovate/lui/dist/globals.css';
```

## Usage

React 프로젝트에서 컴포넌트를 사용하는 방법에 대한 예시입니다.

```tsx
import React from 'react';
import { Button } from '@lotte-innovate/lui';

const App = () => {
  return (
    <div>
      <Button onClick={() => alert('Button clicked!')}>Click Me</Button>
    </div>
  );
};

export default App;
```

컴포넌트에서 아이콘을 사용하려면, 다음과 같은 방법으로 아이콘을 가져올 수 있습니다.

```tsx
import React from 'react';
import { IconButton } from '@lotte-innovate/lui';
import { MagnifyingGlassIcon } from '@radix-ui/react-icons';

const App = () => {
  return (
    <div>
      <IconButton>
        <MagnifyingGlassIcon />
      </IconButton>
    </div>
  );
};

export default App;
```

## Components

<br />

<details>
  <summary>컴포넌트 목록</summary>

| 구분                | 종류                                                                                                                          |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Typography 컴포넌트 | Header, Text                                                                                                                  |
| 기본 컴포넌트       | Avatar, Badge, Button, IconButton, Label                                                                                      |
| 입력 컴포넌트       | DatePicker, DatetimePicker, Editor, Slider, TextArea, TextField                                                               |
| 선택 컴포넌트       | Checkbox, CheckboxCards, CheckboxGroup, Radio, RadioCards, RadioGroup, Select, Toggle, ToggleGroup, ToggleSwitch              |
| 네비게이션 컴포넌트 | Breadcrumb, DynamicTabs, GNB, Menubar, NavigationMenu, SNB, Tab Nav, Tabs                                                     |
| 레이아웃 컴포넌트   | AspectRatio, Box, Card, Collapsible, Container, Flex, Footer, Grid, GridLayout, Inset, ScrollArea, Separator, Table, Timeline |
| 피드백 컴포넌트     | AlertDialog, Dialog, HoverCard, Modal, Popover, Toast, Tooltip                                                                |
| 로딩 컴포넌트       | Progress, Skeleton, Spinner                                                                                                   |
| 메뉴 선택 컴포넌트  | ContextMenu, DropdownMenu, SegmentedControl                                                                                   |
| 그 외 컴포넌트      | Accordian, Callout, DataList, SearchBar                                                                                       |

</details>
<details>
	<summary>차트 목록</summary>

| 구분      | 종류          |
| --------- | ------------- |
| 비교 차트 | Bar, Line     |
| 구성 차트 | Pie, Doughnut |
| 분포 차트 | Bubble        |
| 관계 차트 | Radar         |

</details>

<details>
  <summary>공통 Props 목록</summary>

| name       | description                                       | 단계     | option                                        | 테마적용여부 |
| ---------- | ------------------------------------------------- | -------- | --------------------------------------------- | ------------ |
| Color      | 27가지 색상을 라이트/다크/알파/알파다크 모드 제공 | 1~12단계 | blue, crimson, teal, orange, purple, amber... | O            |
| Radius     | 컴포넌트의 둥글기 적용                            | 5단계    | none, small, medium, large, full              | O            |
| Scaling    | 컴포넌트의 비율                                   | 5단계    | 90%, 95%, 100%, 105%, 110%                    | O            |
| Weight     | 컴포넌트의 텍스트 굵기                            | 4단계    | regular, medium, semibold, bold               | O            |
| Appearance | 컴포넌트의 디자인 스타일                          | 6단계    | classic, ghost, outline, soft, solid, surface | X            |
| Size       | 컴포넌트의 크기                                   | 5단계    | x-small, small, medium, large, x-large        | X            |

</details>

<br />

## Theme

각 컴포넌트들은 공통 Props를 개별적으로 적용할 수도 있고, 테마를 통해 컴포넌트의 스타일을 한번에 변경할 수도 있습니다.

L-UI는 테마 컨텍스트를 제공하여 `Color`, `Radius`, `Scaling`, `Weight` 를 모든 컴포넌트에 동일한 스타일을 지정할 수 있습니다.

먼저 App 최상단에 `LuiThemeProvider`를 추가하여 테마 컨텍스트를 제공합니다.

> Next.js와 같은 프레임워크를 사용하는 프로젝트에서 사용 예시

```tsx
import { LuiThemeProvider } from '@lotte-innovate/lui';

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en" className="bg-white">
      <body>
        <LuiThemeProvider>{children}</LuiThemeProvider>
      </body>
    </html>
  );
}
```

> Next.js App router 에서 Layout.tsx 을 사용하는 예시 코드

`ThemeProvider`를 프로젝트의 가장 가까운 `layout.tsx` 파일에 추가해야 합니다.

이렇게 하면 `ThemeProvider`가 해당 레이아웃 내의 모든 컴포넌트에 테마 상태를 제공할 수 있습니다.

```tsx
import React from 'react';
import { LuiThemeProvider } from '@lotte-innovate/lui';

const Layout = ({ children }: { children: React.ReactNode }) => {
  return <LuiThemeProvider>{children}</LuiThemeProvider>;
};

export default Layout;
```

> 클라이언트 사이드 프로젝트에서 사용 예시

```tsx
import { LuiThemeProvider } from '@lotte-innovate/lui';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <LuiThemeProvider>
    <App />
  </LuiThemeProvider>,
);
```

테마를 변경하려면 `useTheme`훅을 사용합니다.

`useTheme`훅은 현재 테마와 테마를 업데이트할 수 있는 함수를 제공합니다.

```tsx
import { useTheme, Button } from '@lotte-innovate/lui';

const ThemeChanger = () => {
  const { theme, updateTheme } = useTheme();

  // 초기 값 설정 시
  theme.themeRadius = 'none';
  theme.themeColor = 'olive';
  theme.themeScaling = '90%';
  theme.themeWeight = 'regular';

  // 테마 변경 시
  useEffect(() => {
    updateTheme({ themeRadius: 'full', themeColor: 'amber', themeScaling: '110%' });
  }, []);

  return (
    <div>
      <Button>버튼</Button>
    </div>
  );
};
```

테마가 적용되었지만 일부 컴포넌트는 스타일을 다르게 하고 싶은 경우, 각 컴포넌트에 직접 Props를 전달하여 스타일을 재정의할 수 있습니다.

```tsx
import { useTheme, Button } from '@lotte-innovate/lui';

const ThemeChanger = () => {
  const { theme } = useTheme();

  theme.themeRadius: 'full';
  theme.themeColor: 'blue';

  return (
    <div>
      <Button>테마 적용 버튼</Button>
      <Button radius="none" color="crimson">테마 미적용 버튼</Button>
    </div>
  );
};
```

<br />

## License

@lotte-innovate

---
_Source: https://npm.io/package/@lotte-innovate/ui-component-test · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
