najm-kit 2.9.0 → 2.11.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.
- package/CHANGELOG.md +263 -174
- package/README.md +665 -351
- package/dist/{formFill-BcH-m9Kf.d.ts → NNotFoundState-D1CLLLxc.d.ts} +84 -2
- package/dist/NajmUIProvider-cNCb8Tpn.d.ts +327 -0
- package/dist/adapters/app.d.ts +7 -2
- package/dist/adapters/app.mjs +6 -3
- package/dist/adapters/next.d.ts +27 -2
- package/dist/adapters/next.mjs +2 -2
- package/dist/chunk-2GFWF46W.mjs +650 -0
- package/dist/{chunk-IRFFSAO2.mjs → chunk-CE7MVEJ2.mjs} +26 -2
- package/dist/chunk-EEBLEDNI.mjs +480 -0
- package/dist/chunk-K7T7X6PX.mjs +117 -0
- package/dist/{chunk-JUYT2ISO.mjs → chunk-XZL32HFR.mjs} +2 -112
- package/dist/index.d.ts +134 -94
- package/dist/index.mjs +480 -365
- package/dist/json.mjs +2 -2
- package/dist/theme.css +5 -5
- package/package.json +3 -1
- package/dist/NajmUIProvider-CI_73GEp.d.ts +0 -161
- package/dist/chunk-GHMR45H3.mjs +0 -333
- package/dist/chunk-USZUOJMK.mjs +0 -257
package/dist/chunk-USZUOJMK.mjs
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { NajmDesignProvider, cn } from './chunk-KVZACF4G.mjs';
|
|
2
|
-
import * as React2 from 'react';
|
|
3
|
-
import React2__default from 'react';
|
|
4
|
-
import { jsx } from 'react/jsx-runtime';
|
|
5
|
-
|
|
6
|
-
var NTableDefaultsContext = React2__default.createContext({});
|
|
7
|
-
function NTableDefaultsProvider({
|
|
8
|
-
children,
|
|
9
|
-
value
|
|
10
|
-
}) {
|
|
11
|
-
return /* @__PURE__ */ jsx(NTableDefaultsContext.Provider, { value, children });
|
|
12
|
-
}
|
|
13
|
-
function useNTableDefaults() {
|
|
14
|
-
return React2__default.useContext(NTableDefaultsContext);
|
|
15
|
-
}
|
|
16
|
-
function useResolvedPaginationLabels(own) {
|
|
17
|
-
const defaults = useNTableDefaults();
|
|
18
|
-
const inherited = defaults.paginationLabels;
|
|
19
|
-
return React2__default.useMemo(
|
|
20
|
-
() => ({ ...inherited, ...own }),
|
|
21
|
-
[inherited, own]
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
var NajmPreferencesContext = React2.createContext(null);
|
|
25
|
-
var DEFAULT_TIME_ZONE = "UTC";
|
|
26
|
-
function isValidTimeZone(value) {
|
|
27
|
-
try {
|
|
28
|
-
new Intl.DateTimeFormat(void 0, { timeZone: value });
|
|
29
|
-
return true;
|
|
30
|
-
} catch {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
function defaultNormalizeTimeZone(value) {
|
|
35
|
-
return isValidTimeZone(value) ? value : DEFAULT_TIME_ZONE;
|
|
36
|
-
}
|
|
37
|
-
function applyTheme(theme) {
|
|
38
|
-
if (typeof document === "undefined") return;
|
|
39
|
-
document.documentElement.classList.toggle("dark", theme === "dark");
|
|
40
|
-
}
|
|
41
|
-
function applyTimeZone(timeZone) {
|
|
42
|
-
if (typeof document === "undefined") return;
|
|
43
|
-
document.documentElement.dataset.timeZone = timeZone;
|
|
44
|
-
}
|
|
45
|
-
function NajmPreferencesProvider({
|
|
46
|
-
children,
|
|
47
|
-
initialTheme = "light",
|
|
48
|
-
initialTimeZone = DEFAULT_TIME_ZONE,
|
|
49
|
-
onThemeChange,
|
|
50
|
-
onTimeZoneChange,
|
|
51
|
-
normalizeTimeZone = defaultNormalizeTimeZone
|
|
52
|
-
}) {
|
|
53
|
-
const [theme, setThemeState] = React2.useState(initialTheme);
|
|
54
|
-
const [timeZone, setTimeZoneState] = React2.useState(
|
|
55
|
-
() => normalizeTimeZone(initialTimeZone)
|
|
56
|
-
);
|
|
57
|
-
const onThemeChangeRef = React2.useRef(onThemeChange);
|
|
58
|
-
const onTimeZoneChangeRef = React2.useRef(onTimeZoneChange);
|
|
59
|
-
const normalizeRef = React2.useRef(normalizeTimeZone);
|
|
60
|
-
React2.useEffect(() => {
|
|
61
|
-
onThemeChangeRef.current = onThemeChange;
|
|
62
|
-
onTimeZoneChangeRef.current = onTimeZoneChange;
|
|
63
|
-
normalizeRef.current = normalizeTimeZone;
|
|
64
|
-
});
|
|
65
|
-
React2.useEffect(() => {
|
|
66
|
-
applyTheme(theme);
|
|
67
|
-
applyTimeZone(timeZone);
|
|
68
|
-
}, []);
|
|
69
|
-
const setTheme = React2.useCallback(async (next) => {
|
|
70
|
-
setThemeState(next);
|
|
71
|
-
applyTheme(next);
|
|
72
|
-
await onThemeChangeRef.current?.(next);
|
|
73
|
-
}, []);
|
|
74
|
-
const setTimeZone = React2.useCallback(async (next) => {
|
|
75
|
-
const normalized = normalizeRef.current(next);
|
|
76
|
-
setTimeZoneState(normalized);
|
|
77
|
-
applyTimeZone(normalized);
|
|
78
|
-
await onTimeZoneChangeRef.current?.(normalized);
|
|
79
|
-
}, []);
|
|
80
|
-
const value = React2.useMemo(
|
|
81
|
-
() => ({ theme, setTheme, timeZone, setTimeZone }),
|
|
82
|
-
[theme, setTheme, timeZone, setTimeZone]
|
|
83
|
-
);
|
|
84
|
-
return /* @__PURE__ */ jsx(NajmPreferencesContext.Provider, { value, children });
|
|
85
|
-
}
|
|
86
|
-
function useNajmPreferencesContext() {
|
|
87
|
-
return React2.useContext(NajmPreferencesContext);
|
|
88
|
-
}
|
|
89
|
-
function usePreferencesOrThrow(hook) {
|
|
90
|
-
const value = React2.useContext(NajmPreferencesContext);
|
|
91
|
-
if (!value) {
|
|
92
|
-
throw new Error(
|
|
93
|
-
`${hook} must be rendered under a NajmUIProvider or NajmPreferencesProvider.`
|
|
94
|
-
);
|
|
95
|
-
}
|
|
96
|
-
return value;
|
|
97
|
-
}
|
|
98
|
-
function useNajmTheme() {
|
|
99
|
-
const { theme, setTheme } = usePreferencesOrThrow("useNajmTheme");
|
|
100
|
-
return React2.useMemo(() => ({ theme, setTheme }), [theme, setTheme]);
|
|
101
|
-
}
|
|
102
|
-
function useNajmTimeZone() {
|
|
103
|
-
const { timeZone, setTimeZone } = usePreferencesOrThrow("useNajmTimeZone");
|
|
104
|
-
return React2.useMemo(
|
|
105
|
-
() => ({ timeZone, setTimeZone }),
|
|
106
|
-
[timeZone, setTimeZone]
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// src/providers/paginationLabels.ts
|
|
111
|
-
var DEFAULT_PAGINATION_KEY_PREFIX = "common.pagination";
|
|
112
|
-
function buildPaginationLabels(t, prefix = DEFAULT_PAGINATION_KEY_PREFIX) {
|
|
113
|
-
const key = (field) => `${prefix}.${field}`;
|
|
114
|
-
return {
|
|
115
|
-
rowsPerPage: t(key("rowsPerPage")),
|
|
116
|
-
pagination: t(key("pagination")),
|
|
117
|
-
firstPage: t(key("firstPage")),
|
|
118
|
-
previousPage: t(key("previousPage")),
|
|
119
|
-
nextPage: t(key("nextPage")),
|
|
120
|
-
lastPage: t(key("lastPage")),
|
|
121
|
-
goToPage: (page) => t(key("goToPage"), { page }),
|
|
122
|
-
currentPage: (page) => t(key("currentPage"), { page }),
|
|
123
|
-
pageOf: (page, pageCount) => t(key("pageOf"), { page, pageCount }),
|
|
124
|
-
pageOfUnknown: (page) => t(key("pageOfUnknown"), { page }),
|
|
125
|
-
rowsSelected: (selected, total) => t(key("rowsSelected"), { selected, total })
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
var EMPTY_DESIGN = Object.freeze({
|
|
129
|
-
version: 1,
|
|
130
|
-
theme: {},
|
|
131
|
-
components: {}
|
|
132
|
-
});
|
|
133
|
-
var NajmDesignEditorContext = React2.createContext(null);
|
|
134
|
-
function useNajmDesignEditor() {
|
|
135
|
-
return React2.useContext(NajmDesignEditorContext);
|
|
136
|
-
}
|
|
137
|
-
function cloneDesign(design) {
|
|
138
|
-
return structuredClone(design);
|
|
139
|
-
}
|
|
140
|
-
function NajmDesignEditorProvider({
|
|
141
|
-
children,
|
|
142
|
-
design,
|
|
143
|
-
initialDesign
|
|
144
|
-
}) {
|
|
145
|
-
const [state, setState] = React2.useState(() => ({
|
|
146
|
-
committed: initialDesign ?? design ?? EMPTY_DESIGN,
|
|
147
|
-
draft: null
|
|
148
|
-
}));
|
|
149
|
-
const beginDraft = React2.useCallback(() => {
|
|
150
|
-
setState(
|
|
151
|
-
(current) => current.draft ? current : { ...current, draft: cloneDesign(current.committed) }
|
|
152
|
-
);
|
|
153
|
-
}, []);
|
|
154
|
-
const setDraft = React2.useCallback((next) => {
|
|
155
|
-
setState((current) => ({ ...current, draft: cloneDesign(next) }));
|
|
156
|
-
}, []);
|
|
157
|
-
const cancelDraft = React2.useCallback(() => {
|
|
158
|
-
setState(
|
|
159
|
-
(current) => current.draft === null ? current : { ...current, draft: null }
|
|
160
|
-
);
|
|
161
|
-
}, []);
|
|
162
|
-
const setCommitted = React2.useCallback((next) => {
|
|
163
|
-
setState({ committed: next, draft: null });
|
|
164
|
-
}, []);
|
|
165
|
-
const value = React2.useMemo(() => {
|
|
166
|
-
if (design) {
|
|
167
|
-
return {
|
|
168
|
-
design,
|
|
169
|
-
committed: design,
|
|
170
|
-
draft: null,
|
|
171
|
-
hasDraft: false,
|
|
172
|
-
beginDraft: noop,
|
|
173
|
-
setDraft: noop,
|
|
174
|
-
cancelDraft: noop,
|
|
175
|
-
setCommitted: noop
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
design: state.draft ?? state.committed,
|
|
180
|
-
committed: state.committed,
|
|
181
|
-
draft: state.draft,
|
|
182
|
-
hasDraft: state.draft !== null,
|
|
183
|
-
beginDraft,
|
|
184
|
-
setDraft,
|
|
185
|
-
cancelDraft,
|
|
186
|
-
setCommitted
|
|
187
|
-
};
|
|
188
|
-
}, [design, state, beginDraft, setDraft, cancelDraft, setCommitted]);
|
|
189
|
-
return /* @__PURE__ */ jsx(NajmDesignEditorContext.Provider, { value, children });
|
|
190
|
-
}
|
|
191
|
-
function noop() {
|
|
192
|
-
}
|
|
193
|
-
function NajmUICore({
|
|
194
|
-
children,
|
|
195
|
-
className,
|
|
196
|
-
t,
|
|
197
|
-
paginationKeyPrefix = DEFAULT_PAGINATION_KEY_PREFIX,
|
|
198
|
-
tableDefaults
|
|
199
|
-
}) {
|
|
200
|
-
const { theme } = useNajmTheme();
|
|
201
|
-
const design = useNajmDesignEditor()?.design ?? EMPTY_DESIGN;
|
|
202
|
-
const defaults = React2.useMemo(() => {
|
|
203
|
-
const translated = t ? buildPaginationLabels(t, paginationKeyPrefix) : void 0;
|
|
204
|
-
const overrides = tableDefaults?.paginationLabels;
|
|
205
|
-
const paginationLabels = translated || overrides ? { ...translated, ...overrides } : void 0;
|
|
206
|
-
return { ...tableDefaults, paginationLabels };
|
|
207
|
-
}, [t, paginationKeyPrefix, tableDefaults]);
|
|
208
|
-
return /* @__PURE__ */ jsx(
|
|
209
|
-
NajmDesignProvider,
|
|
210
|
-
{
|
|
211
|
-
config: design,
|
|
212
|
-
mode: theme,
|
|
213
|
-
className: cn("min-h-full", className),
|
|
214
|
-
children: /* @__PURE__ */ jsx(NTableDefaultsProvider, { value: defaults, children })
|
|
215
|
-
}
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
function NajmUIProvider({
|
|
219
|
-
children,
|
|
220
|
-
design,
|
|
221
|
-
initialDesign,
|
|
222
|
-
className,
|
|
223
|
-
t,
|
|
224
|
-
paginationKeyPrefix,
|
|
225
|
-
tableDefaults,
|
|
226
|
-
initialTheme,
|
|
227
|
-
initialTimeZone,
|
|
228
|
-
onThemeChange,
|
|
229
|
-
onTimeZoneChange,
|
|
230
|
-
normalizeTimeZone
|
|
231
|
-
}) {
|
|
232
|
-
const outerPreferences = useNajmPreferencesContext();
|
|
233
|
-
const core = /* @__PURE__ */ jsx(NajmDesignEditorProvider, { design, initialDesign, children: /* @__PURE__ */ jsx(
|
|
234
|
-
NajmUICore,
|
|
235
|
-
{
|
|
236
|
-
className,
|
|
237
|
-
t,
|
|
238
|
-
paginationKeyPrefix,
|
|
239
|
-
tableDefaults,
|
|
240
|
-
children
|
|
241
|
-
}
|
|
242
|
-
) });
|
|
243
|
-
if (outerPreferences) return core;
|
|
244
|
-
return /* @__PURE__ */ jsx(
|
|
245
|
-
NajmPreferencesProvider,
|
|
246
|
-
{
|
|
247
|
-
initialTheme,
|
|
248
|
-
initialTimeZone,
|
|
249
|
-
onThemeChange,
|
|
250
|
-
onTimeZoneChange,
|
|
251
|
-
normalizeTimeZone,
|
|
252
|
-
children: core
|
|
253
|
-
}
|
|
254
|
-
);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
export { DEFAULT_PAGINATION_KEY_PREFIX, DEFAULT_TIME_ZONE, EMPTY_DESIGN, NTableDefaultsProvider, NajmDesignEditorProvider, NajmPreferencesProvider, NajmUIProvider, buildPaginationLabels, useNTableDefaults, useNajmDesignEditor, useNajmPreferencesContext, useNajmTheme, useNajmTimeZone, useResolvedPaginationLabels };
|