@lawkit/ui 0.1.55 → 0.1.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ export declare const root: import('@vanilla-extract/recipes').RuntimeFn<{
2
+ size: {
3
+ small: {
4
+ fontSize: `var(--${string})`;
5
+ };
6
+ medium: {
7
+ fontSize: `var(--${string})`;
8
+ };
9
+ };
10
+ }>;
11
+ export declare const list: string;
12
+ export declare const item: string;
13
+ export declare const link: string;
14
+ export declare const current: string;
15
+ export declare const separator: string;
@@ -0,0 +1,29 @@
1
+ import { ReactNode, HTMLAttributes, MouseEventHandler } from 'react';
2
+ export type BreadcrumbSize = "small" | "medium";
3
+ export interface BreadcrumbItem {
4
+ /** 표시 텍스트 */
5
+ label: string;
6
+ /** 이동 링크 (마지막 항목에서는 무시) */
7
+ href?: string;
8
+ /** 클릭 핸들러 (라우터 연동 시 e.preventDefault() 사용) */
9
+ onClick?: MouseEventHandler<HTMLAnchorElement>;
10
+ }
11
+ export interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {
12
+ /** 경로 항목 목록 — 마지막 항목이 현재 페이지 */
13
+ items: BreadcrumbItem[];
14
+ /** 구분자 (기본 "/") */
15
+ separator?: ReactNode;
16
+ /** 사이즈 */
17
+ size?: BreadcrumbSize;
18
+ }
19
+ /**
20
+ * **Breadcrumb**
21
+ *
22
+ * 현재 페이지까지의 경로를 보여주는 내비게이션.
23
+ *
24
+ * - `items`: 경로 항목 목록. 마지막 항목은 현재 페이지로 취급되어
25
+ * 링크가 아닌 `aria-current="page"` 텍스트로 렌더링됩니다.
26
+ * - `separator`: 구분자 커스텀 (기본 `/`)
27
+ * - `size`: small(12px) / medium(14px)
28
+ */
29
+ export declare function Breadcrumb({ items, separator, size, className, ...rest }: BreadcrumbProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ export declare const card: import('@vanilla-extract/recipes').RuntimeFn<{
2
+ position: {
3
+ "bottom-right": {
4
+ right: `var(--${string})`;
5
+ };
6
+ "bottom-left": {
7
+ left: `var(--${string})`;
8
+ };
9
+ };
10
+ }>;
@@ -0,0 +1,31 @@
1
+ import { ReactNode, HTMLAttributes } from 'react';
2
+ export type FloatingModalPosition = "bottom-right" | "bottom-left";
3
+ export interface FloatingModalProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
4
+ /** 표시 여부 */
5
+ open: boolean;
6
+ /** 닫기 핸들러 (close 버튼) */
7
+ onClose: () => void;
8
+ /** 헤더 타이틀 */
9
+ title?: ReactNode;
10
+ /** 푸터 콘텐츠 */
11
+ footer?: ReactNode;
12
+ /** 고정 위치 */
13
+ position?: FloatingModalPosition;
14
+ /** 최소화(접기) 토글 버튼 표시 */
15
+ collapsible?: boolean;
16
+ /** Escape 키 닫기 (비차단 특성상 기본 off) */
17
+ closeOnEscape?: boolean;
18
+ /** 본문 */
19
+ children?: ReactNode;
20
+ }
21
+ /**
22
+ * **FloatingModal**
23
+ *
24
+ * 화면 우하단(기본)에 고정으로 떠 있는 비차단 모달.
25
+ * backdrop이 없어 페이지를 계속 조작할 수 있습니다. (예: 업로드 진행, 미니 플레이어)
26
+ *
27
+ * - `position`: bottom-right(기본) / bottom-left
28
+ * - `collapsible`: 헤더의 접기/펼치기 토글
29
+ * - `closeOnEscape`: Escape 닫기 (기본 off — 비차단 특성)
30
+ */
31
+ export declare function FloatingModal({ open, onClose, title, footer, position, collapsible, closeOnEscape, children, className, ...rest }: FloatingModalProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1 @@
1
+ export declare const surface: string;
@@ -0,0 +1,23 @@
1
+ import { ReactNode, HTMLAttributes } from 'react';
2
+ export interface FullScreenModalProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
3
+ /** 모달 표시 여부 */
4
+ open: boolean;
5
+ /** 닫기 핸들러 (Escape, close 버튼) */
6
+ onClose: () => void;
7
+ /** 헤더 타이틀 */
8
+ title?: ReactNode;
9
+ /** 푸터 콘텐츠 */
10
+ footer?: ReactNode;
11
+ /** Escape 키 닫기 비활성 */
12
+ disableEscapeClose?: boolean;
13
+ /** 모달 본문 */
14
+ children?: ReactNode;
15
+ }
16
+ /**
17
+ * **FullScreenModal**
18
+ *
19
+ * 뷰포트 전체를 덮는 모달. Modal과 같은 `open`/`onClose` API를 사용하며,
20
+ * 상단 고정 헤더(타이틀 + 닫기) + 스크롤 바디 + 하단 푸터로 구성됩니다.
21
+ * backdrop 없이 전체가 표면입니다.
22
+ */
23
+ export declare function FullScreenModal({ open, onClose, title, footer, disableEscapeClose, children, className, ...rest }: FullScreenModalProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,47 @@
1
+ export declare const wrapper: string;
2
+ export declare const textarea: import('@vanilla-extract/recipes').RuntimeFn<{
3
+ size: {
4
+ small: {
5
+ padding: `6px var(--${string})`;
6
+ };
7
+ medium: {
8
+ padding: "8px 14px";
9
+ };
10
+ large: {
11
+ padding: "12px 14px";
12
+ };
13
+ };
14
+ state: {
15
+ default: {
16
+ selectors: {
17
+ "&:focus": {
18
+ borderColor: `var(--${string})`;
19
+ boxShadow: `var(--${string})`;
20
+ };
21
+ };
22
+ };
23
+ active: {
24
+ borderColor: `var(--${string})`;
25
+ boxShadow: `var(--${string})`;
26
+ };
27
+ success: {
28
+ borderColor: string;
29
+ };
30
+ warning: {
31
+ borderColor: `var(--${string})`;
32
+ };
33
+ disabled: {
34
+ backgroundColor: `var(--${string})`;
35
+ cursor: "not-allowed";
36
+ };
37
+ };
38
+ resize: {
39
+ none: {
40
+ resize: "none";
41
+ };
42
+ vertical: {
43
+ resize: "vertical";
44
+ };
45
+ };
46
+ }>;
47
+ export declare const count: string;
@@ -0,0 +1,26 @@
1
+ import { TextareaHTMLAttributes } from 'react';
2
+ export type TextareaSize = "small" | "medium" | "large";
3
+ export type TextareaState = "default" | "active" | "success" | "warning" | "disabled";
4
+ export type TextareaResize = "none" | "vertical";
5
+ export interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
6
+ /** 사이즈 */
7
+ textareaSize?: TextareaSize;
8
+ /** 상태 */
9
+ state?: TextareaState;
10
+ /** 리사이즈 제어 */
11
+ resize?: TextareaResize;
12
+ /** 글자수 표시 (maxLength와 함께 사용 시 "n/max" 형식) */
13
+ showCount?: boolean;
14
+ }
15
+ /**
16
+ * **Textarea**
17
+ *
18
+ * 여러 줄 텍스트 입력 필드. Input과 동일한 시각 언어를 공유합니다.
19
+ *
20
+ * - `textareaSize`: small / medium / large (패딩 차이)
21
+ * - `state`: default / active / success / warning / disabled
22
+ * - `resize`: none / vertical (기본 vertical)
23
+ * - `showCount`: 글자수 표시 (`maxLength`와 함께 쓰면 "n/max")
24
+ * - InputGroup(label/helperText)과 함께 사용할 수 있습니다.
25
+ */
26
+ export declare const Textarea: import('react').ForwardRefExoticComponent<TextareaProps & import('react').RefAttributes<HTMLTextAreaElement>>;
@@ -94,6 +94,14 @@ export { Chip } from './components/Chip';
94
94
  export type { ChipProps } from './components/Chip';
95
95
  export { LinkBadge } from './components/LinkBadge';
96
96
  export type { LinkBadgeProps } from './components/LinkBadge';
97
+ export { Breadcrumb } from './components/Breadcrumb';
98
+ export type { BreadcrumbProps, BreadcrumbItem, BreadcrumbSize, } from './components/Breadcrumb';
99
+ export { Textarea } from './components/Textarea';
100
+ export type { TextareaProps, TextareaSize, TextareaState, TextareaResize, } from './components/Textarea';
101
+ export { FloatingModal } from './components/FloatingModal';
102
+ export type { FloatingModalProps, FloatingModalPosition, } from './components/FloatingModal';
103
+ export { FullScreenModal } from './components/FullScreenModal';
104
+ export type { FullScreenModalProps } from './components/FullScreenModal';
97
105
  export { sprinkles } from './styles/sprinkles.css';
98
106
  export { cx } from './lib/cx';
99
107
  export { lightThemeClass, themeVars, createLdsThemeVars } from '../../tokens/src';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lawkit/ui",
3
- "version": "0.1.55",
3
+ "version": "0.1.56",
4
4
  "type": "module",
5
5
  "description": "LDS Design System — React component library with design tokens",
6
6
  "main": "./dist/index.js",