@lawkit/ui 0.1.72 → 0.1.74

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.
@@ -63,4 +63,16 @@ export declare const themeVars: {
63
63
  raised: `var(--${string})`;
64
64
  modal: `var(--${string})`;
65
65
  };
66
+ duration: {
67
+ fast: `var(--${string})`;
68
+ base: `var(--${string})`;
69
+ slow: `var(--${string})`;
70
+ slower: `var(--${string})`;
71
+ };
72
+ easing: {
73
+ standard: `var(--${string})`;
74
+ linear: `var(--${string})`;
75
+ decelerate: `var(--${string})`;
76
+ emphasized: `var(--${string})`;
77
+ };
66
78
  };
@@ -0,0 +1,6 @@
1
+ export declare const defaultDurationTokens: {
2
+ readonly fast: "100ms";
3
+ readonly base: "150ms";
4
+ readonly slow: "200ms";
5
+ readonly slower: "300ms";
6
+ };
@@ -0,0 +1,6 @@
1
+ export declare const defaultEasingTokens: {
2
+ readonly standard: "ease";
3
+ readonly linear: "linear";
4
+ readonly decelerate: "ease-out";
5
+ readonly emphasized: "ease-in-out";
6
+ };
@@ -4,6 +4,8 @@ export type { LdsSpacingTokens } from './foundation/spacing-scale';
4
4
  export { spacingScale, defaultSpacingTokens } from './foundation/spacing-scale';
5
5
  export { defaultRadiusTokens } from './foundation/radius-scale';
6
6
  export { defaultShadowTokens } from './foundation/shadow-scale';
7
+ export { defaultDurationTokens } from './foundation/duration-scale';
8
+ export { defaultEasingTokens } from './foundation/easing-scale';
7
9
  export { fontFamilyTokens, fontSizeScale, lineHeightScale, fontWeightScale, letterSpacingScale } from './foundation/typography-scale';
8
10
  export { semanticColorRoles } from './semantic/color-roles';
9
11
  export { textStyles } from './semantic/text-styles';
@@ -20,5 +20,17 @@ export declare const defaultThemeValues: {
20
20
  readonly raised: "0 6px 16px rgba(17, 24, 39, 0.08)";
21
21
  readonly modal: "0 4px 15px rgba(44, 63, 88, 0.35)";
22
22
  };
23
+ duration: {
24
+ readonly fast: "100ms";
25
+ readonly base: "150ms";
26
+ readonly slow: "200ms";
27
+ readonly slower: "300ms";
28
+ };
29
+ easing: {
30
+ readonly standard: "ease";
31
+ readonly linear: "linear";
32
+ readonly decelerate: "ease-out";
33
+ readonly emphasized: "ease-in-out";
34
+ };
23
35
  };
24
36
  export declare const lightThemeClass: string;
@@ -1,3 +1,4 @@
1
+ export declare const EXIT_MS: number;
1
2
  export declare const card: import('@vanilla-extract/recipes').RuntimeFn<{
2
3
  position: {
3
4
  "bottom-right": {
@@ -7,4 +8,11 @@ export declare const card: import('@vanilla-extract/recipes').RuntimeFn<{
7
8
  left: `var(--${string})`;
8
9
  };
9
10
  };
11
+ closing: {
12
+ true: {
13
+ opacity: number;
14
+ transform: "translateY(16px)";
15
+ };
16
+ false: {};
17
+ };
10
18
  }>;
@@ -1 +1,10 @@
1
- export declare const surface: string;
1
+ export declare const EXIT_MS: number;
2
+ export declare const surface: import('@vanilla-extract/recipes').RuntimeFn<{
3
+ closing: {
4
+ true: {
5
+ opacity: number;
6
+ transform: "translateY(24px)";
7
+ };
8
+ false: {};
9
+ };
10
+ }>;
@@ -8,7 +8,9 @@ export interface FullScreenModalProps extends Omit<HTMLAttributes<HTMLDivElement
8
8
  title?: ReactNode;
9
9
  /** 푸터 콘텐츠 */
10
10
  footer?: ReactNode;
11
- /** Escape 키 닫기 비활성 */
11
+ /** Escape 키 닫기 (기본 true) — Drawer/FloatingModal과 같은 이름입니다 */
12
+ closeOnEscape?: boolean;
13
+ /** @deprecated `closeOnEscape={false}`를 대신 쓰세요 */
12
14
  disableEscapeClose?: boolean;
13
15
  /** 모달 본문 */
14
16
  children?: ReactNode;
@@ -20,4 +22,4 @@ export interface FullScreenModalProps extends Omit<HTMLAttributes<HTMLDivElement
20
22
  * 상단 고정 헤더(타이틀 + 닫기) + 스크롤 바디 + 하단 푸터로 구성됩니다.
21
23
  * backdrop 없이 전체가 표면입니다.
22
24
  */
23
- export declare function FullScreenModal({ open, onClose, title, footer, disableEscapeClose, children, className, ...rest }: FullScreenModalProps): import("react/jsx-runtime").JSX.Element | null;
25
+ export declare function FullScreenModal({ open, onClose, title, footer, closeOnEscape, disableEscapeClose, children, className, ...rest }: FullScreenModalProps): import("react/jsx-runtime").JSX.Element | null;
@@ -1,4 +1,12 @@
1
- export declare const overlay: string;
1
+ export declare const EXIT_MS: number;
2
+ export declare const overlay: import('@vanilla-extract/recipes').RuntimeFn<{
3
+ closing: {
4
+ true: {
5
+ opacity: number;
6
+ };
7
+ false: {};
8
+ };
9
+ }>;
2
10
  export declare const card: import('@vanilla-extract/recipes').RuntimeFn<{
3
11
  size: {
4
12
  small: {
@@ -14,6 +22,13 @@ export declare const card: import('@vanilla-extract/recipes').RuntimeFn<{
14
22
  maxWidth: number;
15
23
  };
16
24
  };
25
+ closing: {
26
+ true: {
27
+ opacity: number;
28
+ transform: "scale(0.96)";
29
+ };
30
+ false: {};
31
+ };
17
32
  }>;
18
33
  export declare const header: string;
19
34
  export declare const headerTitle: string;
@@ -13,7 +13,9 @@ export interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"
13
13
  footer?: ReactNode;
14
14
  /** backdrop 클릭 닫기 비활성 */
15
15
  disableBackdropClose?: boolean;
16
- /** Escape 키 닫기 비활성 */
16
+ /** Escape 키 닫기 (기본 true) — Drawer/FloatingModal과 같은 이름입니다 */
17
+ closeOnEscape?: boolean;
18
+ /** @deprecated `closeOnEscape={false}`를 대신 쓰세요 */
17
19
  disableEscapeClose?: boolean;
18
20
  /** 모달 본문 */
19
21
  children?: ReactNode;
@@ -31,4 +33,4 @@ export declare function ModalFooter({ children, className, }: {
31
33
  children: ReactNode;
32
34
  className?: string;
33
35
  }): import("react/jsx-runtime").JSX.Element;
34
- export declare function Modal({ open, onClose, size, title, footer, disableBackdropClose, disableEscapeClose, children, className, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
36
+ export declare function Modal({ open, onClose, size, title, footer, disableBackdropClose, closeOnEscape, disableEscapeClose, children, className, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
@@ -1,5 +1,21 @@
1
- export declare const overlay: string;
2
- export declare const card: string;
1
+ export declare const EXIT_MS: number;
2
+ export declare const overlay: import('@vanilla-extract/recipes').RuntimeFn<{
3
+ closing: {
4
+ true: {
5
+ opacity: number;
6
+ };
7
+ false: {};
8
+ };
9
+ }>;
10
+ export declare const card: import('@vanilla-extract/recipes').RuntimeFn<{
11
+ closing: {
12
+ true: {
13
+ opacity: number;
14
+ transform: "scale(0.96)";
15
+ };
16
+ false: {};
17
+ };
18
+ }>;
3
19
  export declare const iconWrapper: import('@vanilla-extract/recipes').RuntimeFn<{
4
20
  intent: {
5
21
  warning: {
@@ -1,9 +1,9 @@
1
1
  /**
2
- * body 스크롤락 획득/복원 훅.
2
+ * body 스크롤락 획득/복원 훅. 참조 카운트 방식.
3
3
  *
4
- * 기존 Modal/SweetAlert/FullScreenModal/Drawer의 패턴 그대로:
5
- * 활성화 시 `document.body.style.overflow`를 `"hidden"`으로 바꾸고,
6
- * 해제 이전 인라인 값으로 복원한다.
7
- * (중첩 안쪽 오버레이가 바깥의 `"hidden"`을 이전 값으로 복원 — 기존 동작 동일)
4
+ * 여러 오버레이가 동시에 활성화돼 있어도 마지막 락이 해제될 때만
5
+ * `document.body.style.overflow`를 원래 값으로 복원한다.
6
+ * (예: Modal 위에 SweetAlert 확인창을 띄운 뒤 Modal이 먼저 닫혀도,
7
+ * SweetAlert가 아직 열려 있으면 스크롤이 풀리지 않는다.)
8
8
  */
9
9
  export declare function useScrollLock(enabled: boolean): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lawkit/ui",
3
- "version": "0.1.72",
3
+ "version": "0.1.74",
4
4
  "type": "module",
5
5
  "description": "LDS Design System — React component library with design tokens",
6
6
  "main": "./dist/index.js",