@kjun-ui/native 0.12.2 → 0.13.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 (46) hide show
  1. package/dist/index.cjs +2691 -2201
  2. package/dist/index.js +2099 -1612
  3. package/dist/index.web.cjs +2708 -2218
  4. package/dist/index.web.js +2101 -1614
  5. package/dist/styles.css +30 -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/choice-controls.d.cts +3 -1
  9. package/dist/types/packages/native/src/choice-controls.d.ts +3 -1
  10. package/dist/types/packages/native/src/data-state.d.cts +3 -0
  11. package/dist/types/packages/native/src/data-state.d.ts +3 -0
  12. package/dist/types/packages/native/src/date-picker.d.cts +3 -1
  13. package/dist/types/packages/native/src/date-picker.d.ts +3 -1
  14. package/dist/types/packages/native/src/fab.d.cts +14 -0
  15. package/dist/types/packages/native/src/fab.d.ts +14 -0
  16. package/dist/types/packages/native/src/field-surface.d.cts +1 -0
  17. package/dist/types/packages/native/src/field-surface.d.ts +1 -0
  18. package/dist/types/packages/native/src/financial-display.d.cts +8 -8
  19. package/dist/types/packages/native/src/financial-display.d.ts +8 -8
  20. package/dist/types/packages/native/src/fonts.d.cts +14 -0
  21. package/dist/types/packages/native/src/fonts.d.ts +14 -0
  22. package/dist/types/packages/native/src/index.d.cts +2 -0
  23. package/dist/types/packages/native/src/index.d.ts +2 -0
  24. package/dist/types/packages/native/src/input.d.cts +3 -1
  25. package/dist/types/packages/native/src/input.d.ts +3 -1
  26. package/dist/types/packages/native/src/internal.d.cts +4 -0
  27. package/dist/types/packages/native/src/internal.d.ts +4 -0
  28. package/dist/types/packages/native/src/list.d.cts +5 -1
  29. package/dist/types/packages/native/src/list.d.ts +5 -1
  30. package/dist/types/packages/native/src/provider.d.cts +14 -2
  31. package/dist/types/packages/native/src/provider.d.ts +14 -2
  32. package/dist/types/shared/package-runtime/feedback-dialog.d.cts +2 -1
  33. package/dist/types/shared/package-runtime/feedback-dialog.d.ts +2 -1
  34. package/dist/types/shared/package-runtime/messages/en.d.cts +2 -0
  35. package/dist/types/shared/package-runtime/messages/en.d.ts +2 -0
  36. package/dist/types/shared/package-runtime/messages/index.d.cts +26 -0
  37. package/dist/types/shared/package-runtime/messages/index.d.ts +26 -0
  38. package/dist/types/shared/package-runtime/messages/ko.d.cts +116 -0
  39. package/dist/types/shared/package-runtime/messages/ko.d.ts +116 -0
  40. package/dist/types/shared/package-runtime/messages-context.d.cts +124 -0
  41. package/dist/types/shared/package-runtime/messages-context.d.ts +124 -0
  42. package/dist/types/shared/package-runtime/options.d.cts +4 -2
  43. package/dist/types/shared/package-runtime/options.d.ts +4 -2
  44. package/dist/types/shared/package-runtime/relative-time.d.cts +1 -1
  45. package/dist/types/shared/package-runtime/relative-time.d.ts +1 -1
  46. package/package.json +3 -3
@@ -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;
@@ -0,0 +1,124 @@
1
+ import { type ReactNode } from "react";
2
+ import { type KjunMessages, type KjunMessageScope } from "./messages/index.cjs";
3
+ export declare const KjunMessageContext: import("react").Context<KjunMessageScope>;
4
+ export declare function KjunMessagesProvider({ locale, messages, children }: {
5
+ locale?: string;
6
+ messages?: Partial<KjunMessages>;
7
+ children: ReactNode;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export declare const useKjunMessageScope: () => KjunMessageScope;
10
+ export declare const useKjunMessages: () => {
11
+ cancel: string;
12
+ confirm: string;
13
+ save: string;
14
+ close: string;
15
+ closeNotification: string;
16
+ confirmTitle: string;
17
+ promptTitle: string;
18
+ invalidInput: string;
19
+ dialog: string;
20
+ panel: string;
21
+ details: string;
22
+ menu: string;
23
+ remove: (label: string) => string;
24
+ user: string;
25
+ loading: string;
26
+ loadingEllipsis: string;
27
+ refreshing: string;
28
+ chartLoading: string;
29
+ noData: string;
30
+ noItems: string;
31
+ noResults: string;
32
+ errorTitle: string;
33
+ retry: string;
34
+ somethingWentWrong: string;
35
+ retryHint: string;
36
+ refreshError: (error: string) => string;
37
+ progress: string;
38
+ search: string;
39
+ searching: string;
40
+ searchOrSelect: string;
41
+ searchFailed: string;
42
+ minChars: (count: number) => string;
43
+ select: string;
44
+ optional: string;
45
+ clearSelection: string;
46
+ searchOptions: string;
47
+ selectedCount: (count: number) => string;
48
+ loadMore: string;
49
+ clearInput: string;
50
+ clearValue: (label: string) => string;
51
+ datePlaceholder: string;
52
+ clearDate: string;
53
+ calendarTitle: (year: number, month: number) => string;
54
+ weekdays: string;
55
+ previousMonth: string;
56
+ nextMonth: string;
57
+ time: string;
58
+ hour: string;
59
+ minute: string;
60
+ second: string;
61
+ value: string;
62
+ minimum: string;
63
+ maximum: string;
64
+ increase: string;
65
+ decrease: string;
66
+ increaseQuantity: string;
67
+ decreaseQuantity: string;
68
+ quantity: string;
69
+ relativeTimeFallback: (amount: number, unit: string) => string;
70
+ copy: string;
71
+ copied: string;
72
+ copyFailed: string;
73
+ refresh: string;
74
+ externalLink: string;
75
+ newWindow: string;
76
+ dataTable: string;
77
+ selectRow: (row: number) => string;
78
+ selectAll: string;
79
+ selectAllPartial: string;
80
+ deselectAll: string;
81
+ selectionActions: string;
82
+ selectedItems: (count: number) => string;
83
+ searchTable: string;
84
+ expandRow: string;
85
+ collapse: string;
86
+ showDetails: string;
87
+ ascending: string;
88
+ descending: string;
89
+ tabs: string;
90
+ breadcrumb: string;
91
+ mainNavigation: string;
92
+ pagination: string;
93
+ itemsPerPage: string;
94
+ perPage: (count: number) => string;
95
+ pageRange: (from: number, to: number, total: string) => string;
96
+ page: (page: number) => string;
97
+ firstPage: string;
98
+ previousPage: string;
99
+ nextPage: string;
100
+ lastPage: string;
101
+ marketData: string;
102
+ metrics: string;
103
+ watchToggle: (name: string, active: boolean) => string;
104
+ favoriteToggle: (name: string, active: boolean) => string;
105
+ lastUpdated: string;
106
+ unitLabel: string;
107
+ totalCount: (count: number, unit: string) => string;
108
+ closePrice: string;
109
+ delayed: string;
110
+ noRealtimeQuote: string;
111
+ realtimeDelayed: string;
112
+ arbitrage: string;
113
+ deviationWarning: (threshold: number) => string;
114
+ statusQueued: string;
115
+ statusStarting: string;
116
+ statusRunning: string;
117
+ statusStopping: string;
118
+ statusStopped: string;
119
+ statusCompleted: string;
120
+ statusCompletedWithErrors: string;
121
+ statusFailed: string;
122
+ statusUnknown: string;
123
+ statusNoRuns: string;
124
+ };
@@ -0,0 +1,124 @@
1
+ import { type ReactNode } from "react";
2
+ import { type KjunMessages, type KjunMessageScope } from "./messages/index.js";
3
+ export declare const KjunMessageContext: import("react").Context<KjunMessageScope>;
4
+ export declare function KjunMessagesProvider({ locale, messages, children }: {
5
+ locale?: string;
6
+ messages?: Partial<KjunMessages>;
7
+ children: ReactNode;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export declare const useKjunMessageScope: () => KjunMessageScope;
10
+ export declare const useKjunMessages: () => {
11
+ cancel: string;
12
+ confirm: string;
13
+ save: string;
14
+ close: string;
15
+ closeNotification: string;
16
+ confirmTitle: string;
17
+ promptTitle: string;
18
+ invalidInput: string;
19
+ dialog: string;
20
+ panel: string;
21
+ details: string;
22
+ menu: string;
23
+ remove: (label: string) => string;
24
+ user: string;
25
+ loading: string;
26
+ loadingEllipsis: string;
27
+ refreshing: string;
28
+ chartLoading: string;
29
+ noData: string;
30
+ noItems: string;
31
+ noResults: string;
32
+ errorTitle: string;
33
+ retry: string;
34
+ somethingWentWrong: string;
35
+ retryHint: string;
36
+ refreshError: (error: string) => string;
37
+ progress: string;
38
+ search: string;
39
+ searching: string;
40
+ searchOrSelect: string;
41
+ searchFailed: string;
42
+ minChars: (count: number) => string;
43
+ select: string;
44
+ optional: string;
45
+ clearSelection: string;
46
+ searchOptions: string;
47
+ selectedCount: (count: number) => string;
48
+ loadMore: string;
49
+ clearInput: string;
50
+ clearValue: (label: string) => string;
51
+ datePlaceholder: string;
52
+ clearDate: string;
53
+ calendarTitle: (year: number, month: number) => string;
54
+ weekdays: string;
55
+ previousMonth: string;
56
+ nextMonth: string;
57
+ time: string;
58
+ hour: string;
59
+ minute: string;
60
+ second: string;
61
+ value: string;
62
+ minimum: string;
63
+ maximum: string;
64
+ increase: string;
65
+ decrease: string;
66
+ increaseQuantity: string;
67
+ decreaseQuantity: string;
68
+ quantity: string;
69
+ relativeTimeFallback: (amount: number, unit: string) => string;
70
+ copy: string;
71
+ copied: string;
72
+ copyFailed: string;
73
+ refresh: string;
74
+ externalLink: string;
75
+ newWindow: string;
76
+ dataTable: string;
77
+ selectRow: (row: number) => string;
78
+ selectAll: string;
79
+ selectAllPartial: string;
80
+ deselectAll: string;
81
+ selectionActions: string;
82
+ selectedItems: (count: number) => string;
83
+ searchTable: string;
84
+ expandRow: string;
85
+ collapse: string;
86
+ showDetails: string;
87
+ ascending: string;
88
+ descending: string;
89
+ tabs: string;
90
+ breadcrumb: string;
91
+ mainNavigation: string;
92
+ pagination: string;
93
+ itemsPerPage: string;
94
+ perPage: (count: number) => string;
95
+ pageRange: (from: number, to: number, total: string) => string;
96
+ page: (page: number) => string;
97
+ firstPage: string;
98
+ previousPage: string;
99
+ nextPage: string;
100
+ lastPage: string;
101
+ marketData: string;
102
+ metrics: string;
103
+ watchToggle: (name: string, active: boolean) => string;
104
+ favoriteToggle: (name: string, active: boolean) => string;
105
+ lastUpdated: string;
106
+ unitLabel: string;
107
+ totalCount: (count: number, unit: string) => string;
108
+ closePrice: string;
109
+ delayed: string;
110
+ noRealtimeQuote: string;
111
+ realtimeDelayed: string;
112
+ arbitrage: string;
113
+ deviationWarning: (threshold: number) => string;
114
+ statusQueued: string;
115
+ statusStarting: string;
116
+ statusRunning: string;
117
+ statusStopping: string;
118
+ statusStopped: string;
119
+ statusCompleted: string;
120
+ statusCompletedWithErrors: string;
121
+ statusFailed: string;
122
+ statusUnknown: string;
123
+ statusNoRuns: string;
124
+ };
@@ -9,8 +9,8 @@ export declare function optionKey(option: SelectOption, key: string, index: numb
9
9
  export declare function optionSelected(value: OptionValue | OptionValue[] | null, option: SelectOption, key: string): boolean;
10
10
  export declare function nextOptionValue(value: OptionValue | OptionValue[] | null, option: SelectOption, key: string, multiple: boolean): OptionValue | OptionValue[];
11
11
  /** 0 label starts with the query, 1 label contains it, 2 a searchKeys field contains it, -1 no match; an empty query matches as 0. */
12
- export declare function optionMatchRank(option: SelectOption, query: string, labelKey: string, searchKeys?: readonly string[]): 0 | 1 | -1 | 2;
13
- export declare function selectOptions<T extends SelectOption>({ options, value, labelKey, valueKey, query, pageSize, limit, loading, multiple, filterFn, searchKeys, }: {
12
+ export declare function optionMatchRank(option: SelectOption, query: string, labelKey: string, searchKeys?: readonly string[]): 1 | -1 | 0 | 2;
13
+ export declare function selectOptions<T extends SelectOption>({ options, value, labelKey, valueKey, query, pageSize, limit, loading, multiple, filterFn, searchKeys, selectedCount, }: {
14
14
  options: T[];
15
15
  value: OptionValue | OptionValue[] | null;
16
16
  labelKey: string;
@@ -22,6 +22,8 @@ export declare function selectOptions<T extends SelectOption>({ options, value,
22
22
  multiple: boolean;
23
23
  filterFn?: (option: T, query: string) => boolean;
24
24
  searchKeys?: readonly string[];
25
+ /** Trigger label for several selected options; platforms pass KjunProvider's messages.selectedCount. */
26
+ selectedCount?: (count: number) => string;
25
27
  }): {
26
28
  selected: (option: T) => boolean;
27
29
  matching: {
@@ -9,8 +9,8 @@ export declare function optionKey(option: SelectOption, key: string, index: numb
9
9
  export declare function optionSelected(value: OptionValue | OptionValue[] | null, option: SelectOption, key: string): boolean;
10
10
  export declare function nextOptionValue(value: OptionValue | OptionValue[] | null, option: SelectOption, key: string, multiple: boolean): OptionValue | OptionValue[];
11
11
  /** 0 label starts with the query, 1 label contains it, 2 a searchKeys field contains it, -1 no match; an empty query matches as 0. */
12
- export declare function optionMatchRank(option: SelectOption, query: string, labelKey: string, searchKeys?: readonly string[]): 0 | 1 | -1 | 2;
13
- export declare function selectOptions<T extends SelectOption>({ options, value, labelKey, valueKey, query, pageSize, limit, loading, multiple, filterFn, searchKeys, }: {
12
+ export declare function optionMatchRank(option: SelectOption, query: string, labelKey: string, searchKeys?: readonly string[]): 1 | -1 | 0 | 2;
13
+ export declare function selectOptions<T extends SelectOption>({ options, value, labelKey, valueKey, query, pageSize, limit, loading, multiple, filterFn, searchKeys, selectedCount, }: {
14
14
  options: T[];
15
15
  value: OptionValue | OptionValue[] | null;
16
16
  labelKey: string;
@@ -22,6 +22,8 @@ export declare function selectOptions<T extends SelectOption>({ options, value,
22
22
  multiple: boolean;
23
23
  filterFn?: (option: T, query: string) => boolean;
24
24
  searchKeys?: readonly string[];
25
+ /** Trigger label for several selected options; platforms pass KjunProvider's messages.selectedCount. */
26
+ selectedCount?: (count: number) => string;
25
27
  }): {
26
28
  selected: (option: T) => boolean;
27
29
  matching: {
@@ -1 +1 @@
1
- export declare function formatRelativeTime(value: string | number | Date, now?: number): string;
1
+ export { formatRelativeTime } from "./messages/index.cjs";
@@ -1 +1 @@
1
- export declare function formatRelativeTime(value: string | number | Date, now?: number): string;
1
+ export { formatRelativeTime } from "./messages/index.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kjun-ui/native",
3
- "version": "0.12.2",
3
+ "version": "0.13.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://ui.kjun.dev",
6
6
  "repository": {
@@ -47,8 +47,8 @@
47
47
  "./package.json": "./package.json"
48
48
  },
49
49
  "dependencies": {
50
- "@kjun-ui/tokens": "0.12.2",
51
- "@kjun-ui/icons": "0.12.2"
50
+ "@kjun-ui/tokens": "0.13.0",
51
+ "@kjun-ui/icons": "0.13.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "react": "^19.2.3",