@kjun-ui/native 0.12.2 → 0.14.0

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.
Files changed (58) hide show
  1. package/dist/index.cjs +2822 -2219
  2. package/dist/index.js +2236 -1635
  3. package/dist/index.web.cjs +2839 -2236
  4. package/dist/index.web.js +2238 -1637
  5. package/dist/styles.css +102 -3
  6. package/dist/types/packages/native/src/button.d.cts +2 -0
  7. package/dist/types/packages/native/src/button.d.ts +2 -0
  8. package/dist/types/packages/native/src/card.d.cts +9 -2
  9. package/dist/types/packages/native/src/card.d.ts +9 -2
  10. package/dist/types/packages/native/src/choice-controls.d.cts +3 -1
  11. package/dist/types/packages/native/src/choice-controls.d.ts +3 -1
  12. package/dist/types/packages/native/src/data-state.d.cts +3 -0
  13. package/dist/types/packages/native/src/data-state.d.ts +3 -0
  14. package/dist/types/packages/native/src/date-picker.d.cts +3 -1
  15. package/dist/types/packages/native/src/date-picker.d.ts +3 -1
  16. package/dist/types/packages/native/src/display-primitives.d.cts +2 -1
  17. package/dist/types/packages/native/src/display-primitives.d.ts +2 -1
  18. package/dist/types/packages/native/src/fab.d.cts +14 -0
  19. package/dist/types/packages/native/src/fab.d.ts +14 -0
  20. package/dist/types/packages/native/src/feedback.d.cts +5 -1
  21. package/dist/types/packages/native/src/feedback.d.ts +5 -1
  22. package/dist/types/packages/native/src/field-surface.d.cts +1 -0
  23. package/dist/types/packages/native/src/field-surface.d.ts +1 -0
  24. package/dist/types/packages/native/src/financial-display.d.cts +8 -8
  25. package/dist/types/packages/native/src/financial-display.d.ts +8 -8
  26. package/dist/types/packages/native/src/fonts.d.cts +14 -0
  27. package/dist/types/packages/native/src/fonts.d.ts +14 -0
  28. package/dist/types/packages/native/src/index.d.cts +2 -0
  29. package/dist/types/packages/native/src/index.d.ts +2 -0
  30. package/dist/types/packages/native/src/input.d.cts +3 -1
  31. package/dist/types/packages/native/src/input.d.ts +3 -1
  32. package/dist/types/packages/native/src/internal.d.cts +4 -0
  33. package/dist/types/packages/native/src/internal.d.ts +4 -0
  34. package/dist/types/packages/native/src/list.d.cts +17 -2
  35. package/dist/types/packages/native/src/list.d.ts +17 -2
  36. package/dist/types/packages/native/src/media.d.cts +4 -2
  37. package/dist/types/packages/native/src/media.d.ts +4 -2
  38. package/dist/types/packages/native/src/provider.d.cts +14 -2
  39. package/dist/types/packages/native/src/provider.d.ts +14 -2
  40. package/dist/types/shared/package-runtime/feedback-dialog.d.cts +2 -1
  41. package/dist/types/shared/package-runtime/feedback-dialog.d.ts +2 -1
  42. package/dist/types/shared/package-runtime/layout-primitives.d.cts +1 -1
  43. package/dist/types/shared/package-runtime/layout-primitives.d.ts +1 -1
  44. package/dist/types/shared/package-runtime/messages/en.d.cts +2 -0
  45. package/dist/types/shared/package-runtime/messages/en.d.ts +2 -0
  46. package/dist/types/shared/package-runtime/messages/index.d.cts +26 -0
  47. package/dist/types/shared/package-runtime/messages/index.d.ts +26 -0
  48. package/dist/types/shared/package-runtime/messages/ko.d.cts +116 -0
  49. package/dist/types/shared/package-runtime/messages/ko.d.ts +116 -0
  50. package/dist/types/shared/package-runtime/messages-context.d.cts +124 -0
  51. package/dist/types/shared/package-runtime/messages-context.d.ts +124 -0
  52. package/dist/types/shared/package-runtime/options.d.cts +4 -2
  53. package/dist/types/shared/package-runtime/options.d.ts +4 -2
  54. package/dist/types/shared/package-runtime/progress-circle.d.cts +11 -0
  55. package/dist/types/shared/package-runtime/progress-circle.d.ts +11 -0
  56. package/dist/types/shared/package-runtime/relative-time.d.cts +1 -1
  57. package/dist/types/shared/package-runtime/relative-time.d.ts +1 -1
  58. package/package.json +3 -3
@@ -16,6 +16,8 @@ export interface KjunFormGroupProps {
16
16
  label?: string;
17
17
  id?: string;
18
18
  required?: boolean;
19
+ /** Marks the field as optional with the "(선택)" / "(optional)" message; required wins when both are set. */
20
+ optional?: boolean;
19
21
  error?: string;
20
22
  hint?: string;
21
23
  /** Hides the label visually while it still names the field. */
@@ -23,7 +25,7 @@ export interface KjunFormGroupProps {
23
25
  children: ReactNode;
24
26
  style?: StyleProp<ViewStyle>;
25
27
  }
26
- export declare function KjunFormGroup({ label, id, required, error, hint, labelHidden, children, style, }: KjunFormGroupProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function KjunFormGroup({ label, id, required, optional, error, hint, labelHidden, children, style, }: KjunFormGroupProps): import("react/jsx-runtime").JSX.Element;
27
29
  export interface KjunInputProps extends Omit<TextInputProps, "value" | "onChange"> {
28
30
  value: string | number;
29
31
  size?: InputSize;
@@ -16,6 +16,8 @@ export interface KjunFormGroupProps {
16
16
  label?: string;
17
17
  id?: string;
18
18
  required?: boolean;
19
+ /** Marks the field as optional with the "(선택)" / "(optional)" message; required wins when both are set. */
20
+ optional?: boolean;
19
21
  error?: string;
20
22
  hint?: string;
21
23
  /** Hides the label visually while it still names the field. */
@@ -23,7 +25,7 @@ export interface KjunFormGroupProps {
23
25
  children: ReactNode;
24
26
  style?: StyleProp<ViewStyle>;
25
27
  }
26
- export declare function KjunFormGroup({ label, id, required, error, hint, labelHidden, children, style, }: KjunFormGroupProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function KjunFormGroup({ label, id, required, optional, error, hint, labelHidden, children, style, }: KjunFormGroupProps): import("react/jsx-runtime").JSX.Element;
27
29
  export interface KjunInputProps extends Omit<TextInputProps, "value" | "onChange"> {
28
30
  value: string | number;
29
31
  size?: InputSize;
@@ -1,6 +1,10 @@
1
1
  import { type ReactNode } from "react";
2
2
  import { type ColorValue, type TextProps } from "react-native";
3
+ /** Resolves a text style's family to the face for its weight when the Provider has weight maps. */
4
+ export declare function useResolveFont(): <S extends TextProps["style"]>(style: S) => import("react-native").StyleProp<import("react-native").TextStyle> | S;
3
5
  export declare function KText({ style, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
6
+ /** A Text without KJUN's default type, for spans that inherit their parent's; it still resolves weight faces. */
7
+ export declare function FontText(props: TextProps): import("react/jsx-runtime").JSX.Element;
4
8
  export declare function content(value: ReactNode, style?: TextProps["style"]): bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
5
9
  export declare const finePointer: () => boolean;
6
10
  export declare function useReducedMotion(): boolean;
@@ -1,6 +1,10 @@
1
1
  import { type ReactNode } from "react";
2
2
  import { type ColorValue, type TextProps } from "react-native";
3
+ /** Resolves a text style's family to the face for its weight when the Provider has weight maps. */
4
+ export declare function useResolveFont(): <S extends TextProps["style"]>(style: S) => import("react-native").StyleProp<import("react-native").TextStyle> | S;
3
5
  export declare function KText({ style, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
6
+ /** A Text without KJUN's default type, for spans that inherit their parent's; it still resolves weight faces. */
7
+ export declare function FontText(props: TextProps): import("react/jsx-runtime").JSX.Element;
4
8
  export declare function content(value: ReactNode, style?: TextProps["style"]): bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
5
9
  export declare const finePointer: () => boolean;
6
10
  export declare function useReducedMotion(): boolean;
@@ -8,14 +8,29 @@ export interface KjunListRowProps {
8
8
  actions?: ReactNode;
9
9
  href?: string;
10
10
  disabled?: boolean;
11
+ /** Draws the title in the danger role, for rows such as "Delete account". */
12
+ destructive?: boolean;
13
+ /** Ends the row with a decorative chevron that marks it as navigation. */
14
+ chevron?: boolean;
11
15
  onPress?: (event: GestureResponderEvent) => void;
12
16
  }
13
- export declare function KjunListRow({ title, description, leading, trailing, actions, href, disabled, onPress }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function KjunListRow({ title, description, leading, trailing, actions, href, disabled, destructive, chevron, onPress }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
14
18
  export interface KjunListSectionProps {
15
19
  title?: string;
16
20
  description?: string;
17
21
  actions?: ReactNode;
18
22
  children: ReactNode;
19
23
  ariaLabel?: string;
24
+ /** Paints the surface background (default true); false lets the page background show through. */
25
+ surface?: boolean;
26
+ /** Draws dividers between rows (default true). */
27
+ divider?: boolean;
28
+ /** "compact" rows keep the 16px inset but are 44 tall (the touch minimum) instead of 56. */
29
+ density?: "default" | "compact";
20
30
  }
21
- export declare function KjunListSection({ title, description, actions, children, ariaLabel }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function KjunListSection({ title, description, actions, children, ariaLabel, surface, divider, density }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
32
+ export interface KjunListItemProps {
33
+ children: ReactNode;
34
+ }
35
+ /** Non-row content inside a KjunListSection (a theme switcher, a note) on the rows' inset and dividers. */
36
+ export declare function KjunListItem({ children }: KjunListItemProps): import("react/jsx-runtime").JSX.Element;
@@ -8,14 +8,29 @@ export interface KjunListRowProps {
8
8
  actions?: ReactNode;
9
9
  href?: string;
10
10
  disabled?: boolean;
11
+ /** Draws the title in the danger role, for rows such as "Delete account". */
12
+ destructive?: boolean;
13
+ /** Ends the row with a decorative chevron that marks it as navigation. */
14
+ chevron?: boolean;
11
15
  onPress?: (event: GestureResponderEvent) => void;
12
16
  }
13
- export declare function KjunListRow({ title, description, leading, trailing, actions, href, disabled, onPress }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function KjunListRow({ title, description, leading, trailing, actions, href, disabled, destructive, chevron, onPress }: KjunListRowProps): import("react/jsx-runtime").JSX.Element;
14
18
  export interface KjunListSectionProps {
15
19
  title?: string;
16
20
  description?: string;
17
21
  actions?: ReactNode;
18
22
  children: ReactNode;
19
23
  ariaLabel?: string;
24
+ /** Paints the surface background (default true); false lets the page background show through. */
25
+ surface?: boolean;
26
+ /** Draws dividers between rows (default true). */
27
+ divider?: boolean;
28
+ /** "compact" rows keep the 16px inset but are 44 tall (the touch minimum) instead of 56. */
29
+ density?: "default" | "compact";
20
30
  }
21
- export declare function KjunListSection({ title, description, actions, children, ariaLabel }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function KjunListSection({ title, description, actions, children, ariaLabel, surface, divider, density }: KjunListSectionProps): import("react/jsx-runtime").JSX.Element;
32
+ export interface KjunListItemProps {
33
+ children: ReactNode;
34
+ }
35
+ /** Non-row content inside a KjunListSection (a theme switcher, a note) on the rows' inset and dividers. */
36
+ export declare function KjunListItem({ children }: KjunListItemProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from "react";
2
- import { type ImageSourcePropType } from "react-native";
2
+ import { type ColorValue, type ImageSourcePropType } from "react-native";
3
3
  export interface KjunImageProps {
4
4
  src?: string;
5
5
  source?: ImageSourcePropType;
@@ -20,8 +20,10 @@ export interface KjunAvatarProps {
20
20
  decorative?: boolean;
21
21
  size?: "sm" | "md" | "lg";
22
22
  shape?: "circle" | "square";
23
+ color?: ColorValue;
24
+ textColor?: ColorValue;
23
25
  fallback?: ReactNode;
24
26
  onLoad?: () => void;
25
27
  onError?: () => void;
26
28
  }
27
- export declare function KjunAvatar({ src, source, name, alt, decorative, size, shape, fallback, onLoad, onError }: KjunAvatarProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare function KjunAvatar({ src, source, name, alt, decorative, size, shape, color, textColor, fallback, onLoad, onError }: KjunAvatarProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from "react";
2
- import { type ImageSourcePropType } from "react-native";
2
+ import { type ColorValue, type ImageSourcePropType } from "react-native";
3
3
  export interface KjunImageProps {
4
4
  src?: string;
5
5
  source?: ImageSourcePropType;
@@ -20,8 +20,10 @@ export interface KjunAvatarProps {
20
20
  decorative?: boolean;
21
21
  size?: "sm" | "md" | "lg";
22
22
  shape?: "circle" | "square";
23
+ color?: ColorValue;
24
+ textColor?: ColorValue;
23
25
  fallback?: ReactNode;
24
26
  onLoad?: () => void;
25
27
  onError?: () => void;
26
28
  }
27
- export declare function KjunAvatar({ src, source, name, alt, decorative, size, shape, fallback, onLoad, onError }: KjunAvatarProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare function KjunAvatar({ src, source, name, alt, decorative, size, shape, color, textColor, fallback, onLoad, onError }: KjunAvatarProps): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,5 @@
1
+ import { type KjunFontFaces, type KjunFontFamily } from "./fonts.cjs";
2
+ import type { KjunMessages } from "../../../shared/package-runtime/messages/index.cjs";
1
3
  import type { KjunIconRegistry } from "@kjun-ui/icons";
2
4
  import { type KjunColors, type ResolvedKjunColors, type KjunDomainColors } from "@kjun-ui/tokens";
3
5
  import { type ReactNode } from "react";
@@ -6,15 +8,25 @@ interface KjunStyles {
6
8
  colors: ResolvedKjunColors<ColorValue>;
7
9
  fontFamily?: string;
8
10
  numericFontFamily?: string;
11
+ /** Weight maps by face name, from fontFamily / numericFontFamily maps. */
12
+ fontFaces?: KjunFontFaces;
9
13
  domainColors?: KjunDomainColors<ColorValue>;
10
14
  }
11
15
  export declare function useKjunStyles(): KjunStyles;
12
- export interface KjunProviderProps extends Omit<KjunStyles, "colors"> {
16
+ export interface KjunProviderProps extends Omit<KjunStyles, "colors" | "fontFamily" | "numericFontFamily" | "fontFaces"> {
17
+ /** A family name, or names by weight ({ 400: "Pretendard-Regular", 700: "Pretendard-Bold" }) for Android and Expo. */
18
+ fontFamily?: KjunFontFamily;
19
+ /** Same as fontFamily, for numbers. */
20
+ numericFontFamily?: KjunFontFamily;
13
21
  icons?: KjunIconRegistry;
22
+ /** BCP 47 tag (e.g. "en-US") for KJUN copy and Intl formats; without it KJUN stays Korean. */
23
+ locale?: string;
24
+ /** Replaces part of KJUN's copy, e.g. with the app's own translations. */
25
+ messages?: Partial<KjunMessages>;
14
26
  colors: KjunColors<ColorValue>;
15
27
  children: ReactNode;
16
28
  style?: StyleProp<ViewStyle>;
17
29
  }
18
- export declare function KjunProvider({ icons, colors, fontFamily, numericFontFamily, domainColors, children, style, }: KjunProviderProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function KjunProvider({ icons, locale, messages, colors, fontFamily, numericFontFamily, domainColors, children, style, }: KjunProviderProps): import("react/jsx-runtime").JSX.Element;
19
31
  export declare function useKjunDomainColors(): Readonly<Record<"priceUp" | "priceUpLight" | "priceUpBg" | "priceUpBgStrong" | "priceDown" | "priceDownLight" | "priceDownBg" | "priceDownBgStrong" | "priceNeutral" | "priceNeutralBg" | "favorite" | "favoriteHover" | "interest", ColorValue>>;
20
32
  export {};
@@ -1,3 +1,5 @@
1
+ import { type KjunFontFaces, type KjunFontFamily } from "./fonts.js";
2
+ import type { KjunMessages } from "../../../shared/package-runtime/messages/index.js";
1
3
  import type { KjunIconRegistry } from "@kjun-ui/icons";
2
4
  import { type KjunColors, type ResolvedKjunColors, type KjunDomainColors } from "@kjun-ui/tokens";
3
5
  import { type ReactNode } from "react";
@@ -6,15 +8,25 @@ interface KjunStyles {
6
8
  colors: ResolvedKjunColors<ColorValue>;
7
9
  fontFamily?: string;
8
10
  numericFontFamily?: string;
11
+ /** Weight maps by face name, from fontFamily / numericFontFamily maps. */
12
+ fontFaces?: KjunFontFaces;
9
13
  domainColors?: KjunDomainColors<ColorValue>;
10
14
  }
11
15
  export declare function useKjunStyles(): KjunStyles;
12
- export interface KjunProviderProps extends Omit<KjunStyles, "colors"> {
16
+ export interface KjunProviderProps extends Omit<KjunStyles, "colors" | "fontFamily" | "numericFontFamily" | "fontFaces"> {
17
+ /** A family name, or names by weight ({ 400: "Pretendard-Regular", 700: "Pretendard-Bold" }) for Android and Expo. */
18
+ fontFamily?: KjunFontFamily;
19
+ /** Same as fontFamily, for numbers. */
20
+ numericFontFamily?: KjunFontFamily;
13
21
  icons?: KjunIconRegistry;
22
+ /** BCP 47 tag (e.g. "en-US") for KJUN copy and Intl formats; without it KJUN stays Korean. */
23
+ locale?: string;
24
+ /** Replaces part of KJUN's copy, e.g. with the app's own translations. */
25
+ messages?: Partial<KjunMessages>;
14
26
  colors: KjunColors<ColorValue>;
15
27
  children: ReactNode;
16
28
  style?: StyleProp<ViewStyle>;
17
29
  }
18
- export declare function KjunProvider({ icons, colors, fontFamily, numericFontFamily, domainColors, children, style, }: KjunProviderProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function KjunProvider({ icons, locale, messages, colors, fontFamily, numericFontFamily, domainColors, children, style, }: KjunProviderProps): import("react/jsx-runtime").JSX.Element;
19
31
  export declare function useKjunDomainColors(): Readonly<Record<"priceUp" | "priceUpLight" | "priceUpBg" | "priceUpBgStrong" | "priceDown" | "priceDownLight" | "priceDownBg" | "priceDownBgStrong" | "priceNeutral" | "priceNeutralBg" | "favorite" | "favoriteHover" | "interest", ColorValue>>;
20
32
  export {};
@@ -1,5 +1,6 @@
1
+ import { type KjunMessages } from "./messages/index.cjs";
1
2
  import type { createFeedbackController, ConfirmOptions, FeedbackRequest, PromptOptions } from "@kjun-ui/tokens";
2
- export declare function useFeedbackDialog(controller: ReturnType<typeof createFeedbackController>, request: FeedbackRequest): {
3
+ export declare function useFeedbackDialog(controller: ReturnType<typeof createFeedbackController>, request: FeedbackRequest, messages?: KjunMessages): {
3
4
  options: PromptOptions & ConfirmOptions;
4
5
  value: string;
5
6
  error: string;
@@ -1,5 +1,6 @@
1
+ import { type KjunMessages } from "./messages/index.js";
1
2
  import type { createFeedbackController, ConfirmOptions, FeedbackRequest, PromptOptions } from "@kjun-ui/tokens";
2
- export declare function useFeedbackDialog(controller: ReturnType<typeof createFeedbackController>, request: FeedbackRequest): {
3
+ export declare function useFeedbackDialog(controller: ReturnType<typeof createFeedbackController>, request: FeedbackRequest, messages?: KjunMessages): {
3
4
  options: PromptOptions & ConfirmOptions;
4
5
  value: string;
5
6
  error: string;
@@ -1,5 +1,5 @@
1
1
  export type TextVariant = "pageTitle" | "sectionTitle" | "cardTitle" | "body" | "label" | "meta" | "caption" | "numberSm" | "numberMd" | "numberLg" | "displaySm" | "displayMd" | "displayLg";
2
- export type TextTone = "default" | "secondary" | "tertiary" | "disabled";
2
+ export type TextTone = "default" | "secondary" | "tertiary" | "disabled" | "brand" | "danger" | "success" | "warning" | "inverse";
3
3
  export type TextAlign = "start" | "center" | "end";
4
4
  export type TextTag = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "div";
5
5
  export type StackGap = "none" | "sm" | "md" | "lg" | "section-sm" | "section-md" | "section-lg";
@@ -1,5 +1,5 @@
1
1
  export type TextVariant = "pageTitle" | "sectionTitle" | "cardTitle" | "body" | "label" | "meta" | "caption" | "numberSm" | "numberMd" | "numberLg" | "displaySm" | "displayMd" | "displayLg";
2
- export type TextTone = "default" | "secondary" | "tertiary" | "disabled";
2
+ export type TextTone = "default" | "secondary" | "tertiary" | "disabled" | "brand" | "danger" | "success" | "warning" | "inverse";
3
3
  export type TextAlign = "start" | "center" | "end";
4
4
  export type TextTag = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "div";
5
5
  export type StackGap = "none" | "sm" | "md" | "lg" | "section-sm" | "section-md" | "section-lg";
@@ -0,0 +1,2 @@
1
+ import type { KjunMessages } from "./ko.cjs";
2
+ export declare const kjunMessagesEn: KjunMessages;
@@ -0,0 +1,2 @@
1
+ import type { KjunMessages } from "./ko.js";
2
+ export declare const kjunMessagesEn: KjunMessages;
@@ -0,0 +1,26 @@
1
+ import { kjunMessagesEn } from "./en.cjs";
2
+ import { kjunMessagesKo, type KjunMessages } from "./ko.cjs";
3
+ export { kjunMessagesEn, kjunMessagesKo, type KjunMessages };
4
+ /** What KjunProvider resolved: the copy to render and the locale handed to Intl (undefined keeps each call site's old default). */
5
+ export interface KjunMessageScope {
6
+ intl?: string;
7
+ language?: string;
8
+ messages: KjunMessages;
9
+ overrides: Partial<KjunMessages>;
10
+ }
11
+ export declare const defaultMessageScope: KjunMessageScope;
12
+ /** "en_US" becomes "en-US"; a tag Intl rejects keeps its language for the copy but no Intl locale, and never throws. */
13
+ export declare function normalizeLocale(locale?: string): {
14
+ intl?: string;
15
+ language?: string;
16
+ };
17
+ /** Props > messages > the locale's pack (ko, en, otherwise en) > Korean. A nested scope in another language drops the outer overrides. */
18
+ export declare function resolveMessageScope(parent: KjunMessageScope | undefined, locale?: string, messages?: Partial<KjunMessages>): KjunMessageScope;
19
+ export declare function formatRelativeTime(value: string | number | Date, now?: number, scope?: KjunMessageScope): string;
20
+ /** A "YYYY-MM-DD" value for display; without a locale it keeps KJUN's "2026. 10. 23." form. */
21
+ export declare function formatDateValue(iso: string, scope?: KjunMessageScope): string;
22
+ /** Calendar heading and Sunday-first weekday names; month is 0-based. */
23
+ export declare function calendarLabels(year: number, month: number, scope?: KjunMessageScope): {
24
+ title: string;
25
+ weekdays: string[];
26
+ };
@@ -0,0 +1,26 @@
1
+ import { kjunMessagesEn } from "./en.js";
2
+ import { kjunMessagesKo, type KjunMessages } from "./ko.js";
3
+ export { kjunMessagesEn, kjunMessagesKo, type KjunMessages };
4
+ /** What KjunProvider resolved: the copy to render and the locale handed to Intl (undefined keeps each call site's old default). */
5
+ export interface KjunMessageScope {
6
+ intl?: string;
7
+ language?: string;
8
+ messages: KjunMessages;
9
+ overrides: Partial<KjunMessages>;
10
+ }
11
+ export declare const defaultMessageScope: KjunMessageScope;
12
+ /** "en_US" becomes "en-US"; a tag Intl rejects keeps its language for the copy but no Intl locale, and never throws. */
13
+ export declare function normalizeLocale(locale?: string): {
14
+ intl?: string;
15
+ language?: string;
16
+ };
17
+ /** Props > messages > the locale's pack (ko, en, otherwise en) > Korean. A nested scope in another language drops the outer overrides. */
18
+ export declare function resolveMessageScope(parent: KjunMessageScope | undefined, locale?: string, messages?: Partial<KjunMessages>): KjunMessageScope;
19
+ export declare function formatRelativeTime(value: string | number | Date, now?: number, scope?: KjunMessageScope): string;
20
+ /** A "YYYY-MM-DD" value for display; without a locale it keeps KJUN's "2026. 10. 23." form. */
21
+ export declare function formatDateValue(iso: string, scope?: KjunMessageScope): string;
22
+ /** Calendar heading and Sunday-first weekday names; month is 0-based. */
23
+ export declare function calendarLabels(year: number, month: number, scope?: KjunMessageScope): {
24
+ title: string;
25
+ weekdays: string[];
26
+ };
@@ -0,0 +1,116 @@
1
+ export declare const kjunMessagesKo: {
2
+ cancel: string;
3
+ confirm: string;
4
+ save: string;
5
+ close: string;
6
+ closeNotification: string;
7
+ confirmTitle: string;
8
+ promptTitle: string;
9
+ invalidInput: string;
10
+ dialog: string;
11
+ panel: string;
12
+ details: string;
13
+ menu: string;
14
+ remove: (label: string) => string;
15
+ user: string;
16
+ loading: string;
17
+ loadingEllipsis: string;
18
+ refreshing: string;
19
+ chartLoading: string;
20
+ noData: string;
21
+ noItems: string;
22
+ noResults: string;
23
+ errorTitle: string;
24
+ retry: string;
25
+ somethingWentWrong: string;
26
+ retryHint: string;
27
+ refreshError: (error: string) => string;
28
+ progress: string;
29
+ search: string;
30
+ searching: string;
31
+ searchOrSelect: string;
32
+ searchFailed: string;
33
+ minChars: (count: number) => string;
34
+ select: string;
35
+ optional: string;
36
+ clearSelection: string;
37
+ searchOptions: string;
38
+ selectedCount: (count: number) => string;
39
+ loadMore: string;
40
+ clearInput: string;
41
+ clearValue: (label: string) => string;
42
+ datePlaceholder: string;
43
+ clearDate: string;
44
+ calendarTitle: (year: number, month: number) => string;
45
+ weekdays: string;
46
+ previousMonth: string;
47
+ nextMonth: string;
48
+ time: string;
49
+ hour: string;
50
+ minute: string;
51
+ second: string;
52
+ value: string;
53
+ minimum: string;
54
+ maximum: string;
55
+ increase: string;
56
+ decrease: string;
57
+ increaseQuantity: string;
58
+ decreaseQuantity: string;
59
+ quantity: string;
60
+ relativeTimeFallback: (amount: number, unit: string) => string;
61
+ copy: string;
62
+ copied: string;
63
+ copyFailed: string;
64
+ refresh: string;
65
+ externalLink: string;
66
+ newWindow: string;
67
+ dataTable: string;
68
+ selectRow: (row: number) => string;
69
+ selectAll: string;
70
+ selectAllPartial: string;
71
+ deselectAll: string;
72
+ selectionActions: string;
73
+ selectedItems: (count: number) => string;
74
+ searchTable: string;
75
+ expandRow: string;
76
+ collapse: string;
77
+ showDetails: string;
78
+ ascending: string;
79
+ descending: string;
80
+ tabs: string;
81
+ breadcrumb: string;
82
+ mainNavigation: string;
83
+ pagination: string;
84
+ itemsPerPage: string;
85
+ perPage: (count: number) => string;
86
+ pageRange: (from: number, to: number, total: string) => string;
87
+ page: (page: number) => string;
88
+ firstPage: string;
89
+ previousPage: string;
90
+ nextPage: string;
91
+ lastPage: string;
92
+ marketData: string;
93
+ metrics: string;
94
+ watchToggle: (name: string, active: boolean) => string;
95
+ favoriteToggle: (name: string, active: boolean) => string;
96
+ lastUpdated: string;
97
+ unitLabel: string;
98
+ totalCount: (count: number, unit: string) => string;
99
+ closePrice: string;
100
+ delayed: string;
101
+ noRealtimeQuote: string;
102
+ realtimeDelayed: string;
103
+ arbitrage: string;
104
+ deviationWarning: (threshold: number) => string;
105
+ statusQueued: string;
106
+ statusStarting: string;
107
+ statusRunning: string;
108
+ statusStopping: string;
109
+ statusStopped: string;
110
+ statusCompleted: string;
111
+ statusCompletedWithErrors: string;
112
+ statusFailed: string;
113
+ statusUnknown: string;
114
+ statusNoRuns: string;
115
+ };
116
+ export type KjunMessages = typeof kjunMessagesKo;
@@ -0,0 +1,116 @@
1
+ export declare const kjunMessagesKo: {
2
+ cancel: string;
3
+ confirm: string;
4
+ save: string;
5
+ close: string;
6
+ closeNotification: string;
7
+ confirmTitle: string;
8
+ promptTitle: string;
9
+ invalidInput: string;
10
+ dialog: string;
11
+ panel: string;
12
+ details: string;
13
+ menu: string;
14
+ remove: (label: string) => string;
15
+ user: string;
16
+ loading: string;
17
+ loadingEllipsis: string;
18
+ refreshing: string;
19
+ chartLoading: string;
20
+ noData: string;
21
+ noItems: string;
22
+ noResults: string;
23
+ errorTitle: string;
24
+ retry: string;
25
+ somethingWentWrong: string;
26
+ retryHint: string;
27
+ refreshError: (error: string) => string;
28
+ progress: string;
29
+ search: string;
30
+ searching: string;
31
+ searchOrSelect: string;
32
+ searchFailed: string;
33
+ minChars: (count: number) => string;
34
+ select: string;
35
+ optional: string;
36
+ clearSelection: string;
37
+ searchOptions: string;
38
+ selectedCount: (count: number) => string;
39
+ loadMore: string;
40
+ clearInput: string;
41
+ clearValue: (label: string) => string;
42
+ datePlaceholder: string;
43
+ clearDate: string;
44
+ calendarTitle: (year: number, month: number) => string;
45
+ weekdays: string;
46
+ previousMonth: string;
47
+ nextMonth: string;
48
+ time: string;
49
+ hour: string;
50
+ minute: string;
51
+ second: string;
52
+ value: string;
53
+ minimum: string;
54
+ maximum: string;
55
+ increase: string;
56
+ decrease: string;
57
+ increaseQuantity: string;
58
+ decreaseQuantity: string;
59
+ quantity: string;
60
+ relativeTimeFallback: (amount: number, unit: string) => string;
61
+ copy: string;
62
+ copied: string;
63
+ copyFailed: string;
64
+ refresh: string;
65
+ externalLink: string;
66
+ newWindow: string;
67
+ dataTable: string;
68
+ selectRow: (row: number) => string;
69
+ selectAll: string;
70
+ selectAllPartial: string;
71
+ deselectAll: string;
72
+ selectionActions: string;
73
+ selectedItems: (count: number) => string;
74
+ searchTable: string;
75
+ expandRow: string;
76
+ collapse: string;
77
+ showDetails: string;
78
+ ascending: string;
79
+ descending: string;
80
+ tabs: string;
81
+ breadcrumb: string;
82
+ mainNavigation: string;
83
+ pagination: string;
84
+ itemsPerPage: string;
85
+ perPage: (count: number) => string;
86
+ pageRange: (from: number, to: number, total: string) => string;
87
+ page: (page: number) => string;
88
+ firstPage: string;
89
+ previousPage: string;
90
+ nextPage: string;
91
+ lastPage: string;
92
+ marketData: string;
93
+ metrics: string;
94
+ watchToggle: (name: string, active: boolean) => string;
95
+ favoriteToggle: (name: string, active: boolean) => string;
96
+ lastUpdated: string;
97
+ unitLabel: string;
98
+ totalCount: (count: number, unit: string) => string;
99
+ closePrice: string;
100
+ delayed: string;
101
+ noRealtimeQuote: string;
102
+ realtimeDelayed: string;
103
+ arbitrage: string;
104
+ deviationWarning: (threshold: number) => string;
105
+ statusQueued: string;
106
+ statusStarting: string;
107
+ statusRunning: string;
108
+ statusStopping: string;
109
+ statusStopped: string;
110
+ statusCompleted: string;
111
+ statusCompletedWithErrors: string;
112
+ statusFailed: string;
113
+ statusUnknown: string;
114
+ statusNoRuns: string;
115
+ };
116
+ export type KjunMessages = typeof kjunMessagesKo;