najm-kit 2.11.23 → 2.12.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 +21 -12
- package/README.md +28 -1
- package/dist/NIcon-D73-C51g.d.ts +21 -0
- package/dist/{NNotFoundState-BmGDW2Bx.d.ts → NNotFoundState-Z2n2gbhS.d.ts} +1 -16
- package/dist/{NajmUIProvider-BwL5HFIV.d.ts → NajmUIProvider-C9IJW1ya.d.ts} +2 -19
- package/dist/adapters/app.d.ts +6 -4
- package/dist/adapters/app.mjs +9 -6
- package/dist/adapters/next.d.ts +2 -1
- package/dist/adapters/next.mjs +5 -3
- package/dist/chunk-5UY7U2ED.mjs +9 -0
- package/dist/chunk-A34LRQYI.mjs +7 -0
- package/dist/chunk-BFFTC7LD.mjs +66 -0
- package/dist/{chunk-5ZTOCWRA.mjs → chunk-F32O3WRX.mjs} +7 -197
- package/dist/chunk-FZX3DONZ.mjs +200 -0
- package/dist/chunk-GYPQLOQ5.mjs +2202 -0
- package/dist/{chunk-BDQK6ECA.mjs → chunk-LMW4DM5L.mjs} +43 -101
- package/dist/{chunk-DKHIQFXX.mjs → chunk-QDFLHSWO.mjs} +1 -1
- package/dist/{chunk-5JVFMOLI.mjs → chunk-QJ22WAQY.mjs} +2 -28
- package/dist/{chunk-LK3SMYUP.mjs → chunk-TZRTOQCC.mjs} +1 -6
- package/dist/chunk-VZXMMC72.mjs +31 -0
- package/dist/{chunk-M5VGBZ7R.mjs → chunk-WHGRN7PP.mjs} +2 -1
- package/dist/formFill-CQkTA0JS.d.ts +17 -0
- package/dist/index.d.ts +20 -436
- package/dist/index.mjs +338 -1950
- package/dist/json.mjs +5 -3
- package/dist/location/google.d.ts +14 -0
- package/dist/location/google.mjs +184 -0
- package/dist/location/index.d.ts +33 -0
- package/dist/location/index.mjs +9 -0
- package/dist/location/leaflet.d.ts +13 -0
- package/dist/location/leaflet.mjs +168 -0
- package/dist/theme.css +23 -2
- package/dist/types-BQBx0RZd.d.ts +578 -0
- package/package.json +30 -3
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { resolveFeedbackDefaultsValue, NFeedbackDefaultsProvider } from './chunk-BFFTC7LD.mjs';
|
|
2
|
+
import { NajmDesignProvider } from './chunk-TZRTOQCC.mjs';
|
|
3
|
+
import { cn } from './chunk-5UY7U2ED.mjs';
|
|
4
|
+
import * as React2 from 'react';
|
|
5
|
+
import React2__default from 'react';
|
|
4
6
|
import { jsx } from 'react/jsx-runtime';
|
|
5
7
|
import { DirectionProvider } from '@radix-ui/react-direction';
|
|
6
8
|
|
|
@@ -74,7 +76,7 @@ function statusTextClass(status, statusMap, fallback) {
|
|
|
74
76
|
const color = findStatusColor(status, statusMap) ?? fallback;
|
|
75
77
|
return color ? colorTextClass(color) : "";
|
|
76
78
|
}
|
|
77
|
-
var NTableDefaultsContext =
|
|
79
|
+
var NTableDefaultsContext = React2__default.createContext({});
|
|
78
80
|
function NTableDefaultsProvider({
|
|
79
81
|
children,
|
|
80
82
|
value
|
|
@@ -82,12 +84,12 @@ function NTableDefaultsProvider({
|
|
|
82
84
|
return /* @__PURE__ */ jsx(NTableDefaultsContext.Provider, { value, children });
|
|
83
85
|
}
|
|
84
86
|
function useNTableDefaults() {
|
|
85
|
-
return
|
|
87
|
+
return React2__default.useContext(NTableDefaultsContext);
|
|
86
88
|
}
|
|
87
89
|
function useResolvedPaginationLabels(own) {
|
|
88
90
|
const defaults = useNTableDefaults();
|
|
89
91
|
const inherited = defaults.paginationLabels;
|
|
90
|
-
return
|
|
92
|
+
return React2__default.useMemo(
|
|
91
93
|
() => ({ ...inherited, ...own }),
|
|
92
94
|
[inherited, own]
|
|
93
95
|
);
|
|
@@ -95,72 +97,12 @@ function useResolvedPaginationLabels(own) {
|
|
|
95
97
|
function useResolvedToolbarLabels(own) {
|
|
96
98
|
const defaults = useNTableDefaults();
|
|
97
99
|
const inherited = defaults.toolbarLabels;
|
|
98
|
-
return
|
|
100
|
+
return React2__default.useMemo(
|
|
99
101
|
() => ({ ...inherited, ...own }),
|
|
100
102
|
[inherited, own]
|
|
101
103
|
);
|
|
102
104
|
}
|
|
103
|
-
var
|
|
104
|
-
loadingLabel: "Loading...",
|
|
105
|
-
emptyTitle: "No data",
|
|
106
|
-
errorTitle: "Something went wrong",
|
|
107
|
-
retryLabel: "Try again",
|
|
108
|
-
forbiddenTitle: "Access denied",
|
|
109
|
-
forbiddenDescription: "You do not have permission to view this page.",
|
|
110
|
-
notFoundTitle: "Page not found",
|
|
111
|
-
notFoundDescription: "The requested page could not be found."
|
|
112
|
-
};
|
|
113
|
-
var NFeedbackDefaultsContext = React3.createContext(null);
|
|
114
|
-
function NFeedbackDefaultsProvider({
|
|
115
|
-
value,
|
|
116
|
-
children
|
|
117
|
-
}) {
|
|
118
|
-
return /* @__PURE__ */ jsx(NFeedbackDefaultsContext.Provider, { value, children });
|
|
119
|
-
}
|
|
120
|
-
function useNFeedbackDefaults() {
|
|
121
|
-
return React3.useContext(NFeedbackDefaultsContext);
|
|
122
|
-
}
|
|
123
|
-
var DEFAULT_FEEDBACK_KEY_PREFIX = "common.feedback";
|
|
124
|
-
function useResolvedFeedbackLabels() {
|
|
125
|
-
const ctx = useNFeedbackDefaults();
|
|
126
|
-
return React3.useMemo(() => resolveFeedbackLabels(ctx), [ctx]);
|
|
127
|
-
}
|
|
128
|
-
function resolveFeedbackLabels(ctx) {
|
|
129
|
-
const defaults = ctx?.defaults;
|
|
130
|
-
const t = ctx?.t;
|
|
131
|
-
const labels = defaults?.labels;
|
|
132
|
-
const labelKeys = defaults?.labelKeys;
|
|
133
|
-
const prefix = defaults?.prefix ?? DEFAULT_FEEDBACK_KEY_PREFIX;
|
|
134
|
-
const translated = (key) => {
|
|
135
|
-
if (!t) return void 0;
|
|
136
|
-
const value = t(key);
|
|
137
|
-
return value === key ? void 0 : value;
|
|
138
|
-
};
|
|
139
|
-
const pick = (field, hasFallback) => {
|
|
140
|
-
const literal = labels?.[field];
|
|
141
|
-
if (literal !== void 0) return literal;
|
|
142
|
-
const key = labelKeys?.[field];
|
|
143
|
-
const fromCatalog = translated(key ?? `${prefix}.${field}`);
|
|
144
|
-
if (fromCatalog !== void 0) return fromCatalog;
|
|
145
|
-
if (hasFallback) return ENGLISH_FEEDBACK_LABELS[field];
|
|
146
|
-
return void 0;
|
|
147
|
-
};
|
|
148
|
-
return {
|
|
149
|
-
loadingLabel: pick("loadingLabel", true) ?? ENGLISH_FEEDBACK_LABELS.loadingLabel,
|
|
150
|
-
emptyTitle: pick("emptyTitle", true) ?? ENGLISH_FEEDBACK_LABELS.emptyTitle,
|
|
151
|
-
errorTitle: pick("errorTitle", true) ?? ENGLISH_FEEDBACK_LABELS.errorTitle,
|
|
152
|
-
errorMessage: pick("errorMessage", false),
|
|
153
|
-
retryLabel: pick("retryLabel", true) ?? ENGLISH_FEEDBACK_LABELS.retryLabel,
|
|
154
|
-
forbiddenTitle: pick("forbiddenTitle", true) ?? ENGLISH_FEEDBACK_LABELS.forbiddenTitle,
|
|
155
|
-
forbiddenDescription: pick("forbiddenDescription", true) ?? ENGLISH_FEEDBACK_LABELS.forbiddenDescription,
|
|
156
|
-
notFoundTitle: pick("notFoundTitle", true) ?? ENGLISH_FEEDBACK_LABELS.notFoundTitle,
|
|
157
|
-
notFoundDescription: pick("notFoundDescription", true) ?? ENGLISH_FEEDBACK_LABELS.notFoundDescription
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
function resolveFeedbackDefaultsValue(defaults, t) {
|
|
161
|
-
return { defaults: defaults ?? {}, t };
|
|
162
|
-
}
|
|
163
|
-
var NajmPreferencesContext = React3.createContext(null);
|
|
105
|
+
var NajmPreferencesContext = React2.createContext(null);
|
|
164
106
|
var DEFAULT_TIME_ZONE = "UTC";
|
|
165
107
|
function isValidTimeZone(value) {
|
|
166
108
|
try {
|
|
@@ -189,44 +131,44 @@ function NajmPreferencesProvider({
|
|
|
189
131
|
onTimeZoneChange,
|
|
190
132
|
normalizeTimeZone = defaultNormalizeTimeZone
|
|
191
133
|
}) {
|
|
192
|
-
const [theme, setThemeState] =
|
|
193
|
-
const [timeZone, setTimeZoneState] =
|
|
134
|
+
const [theme, setThemeState] = React2.useState(initialTheme);
|
|
135
|
+
const [timeZone, setTimeZoneState] = React2.useState(
|
|
194
136
|
() => normalizeTimeZone(initialTimeZone)
|
|
195
137
|
);
|
|
196
|
-
const onThemeChangeRef =
|
|
197
|
-
const onTimeZoneChangeRef =
|
|
198
|
-
const normalizeRef =
|
|
199
|
-
|
|
138
|
+
const onThemeChangeRef = React2.useRef(onThemeChange);
|
|
139
|
+
const onTimeZoneChangeRef = React2.useRef(onTimeZoneChange);
|
|
140
|
+
const normalizeRef = React2.useRef(normalizeTimeZone);
|
|
141
|
+
React2.useEffect(() => {
|
|
200
142
|
onThemeChangeRef.current = onThemeChange;
|
|
201
143
|
onTimeZoneChangeRef.current = onTimeZoneChange;
|
|
202
144
|
normalizeRef.current = normalizeTimeZone;
|
|
203
145
|
});
|
|
204
|
-
|
|
146
|
+
React2.useEffect(() => {
|
|
205
147
|
applyTheme(theme);
|
|
206
148
|
applyTimeZone(timeZone);
|
|
207
149
|
}, []);
|
|
208
|
-
const setTheme =
|
|
150
|
+
const setTheme = React2.useCallback(async (next) => {
|
|
209
151
|
setThemeState(next);
|
|
210
152
|
applyTheme(next);
|
|
211
153
|
await onThemeChangeRef.current?.(next);
|
|
212
154
|
}, []);
|
|
213
|
-
const setTimeZone =
|
|
155
|
+
const setTimeZone = React2.useCallback(async (next) => {
|
|
214
156
|
const normalized = normalizeRef.current(next);
|
|
215
157
|
setTimeZoneState(normalized);
|
|
216
158
|
applyTimeZone(normalized);
|
|
217
159
|
await onTimeZoneChangeRef.current?.(normalized);
|
|
218
160
|
}, []);
|
|
219
|
-
const value =
|
|
161
|
+
const value = React2.useMemo(
|
|
220
162
|
() => ({ theme, setTheme, timeZone, setTimeZone }),
|
|
221
163
|
[theme, setTheme, timeZone, setTimeZone]
|
|
222
164
|
);
|
|
223
165
|
return /* @__PURE__ */ jsx(NajmPreferencesContext.Provider, { value, children });
|
|
224
166
|
}
|
|
225
167
|
function useNajmPreferencesContext() {
|
|
226
|
-
return
|
|
168
|
+
return React2.useContext(NajmPreferencesContext);
|
|
227
169
|
}
|
|
228
170
|
function usePreferencesOrThrow(hook) {
|
|
229
|
-
const value =
|
|
171
|
+
const value = React2.useContext(NajmPreferencesContext);
|
|
230
172
|
if (!value) {
|
|
231
173
|
throw new Error(
|
|
232
174
|
`${hook} must be rendered under a NajmUIProvider or NajmPreferencesProvider.`
|
|
@@ -236,11 +178,11 @@ function usePreferencesOrThrow(hook) {
|
|
|
236
178
|
}
|
|
237
179
|
function useNajmTheme() {
|
|
238
180
|
const { theme, setTheme } = usePreferencesOrThrow("useNajmTheme");
|
|
239
|
-
return
|
|
181
|
+
return React2.useMemo(() => ({ theme, setTheme }), [theme, setTheme]);
|
|
240
182
|
}
|
|
241
183
|
function useNajmTimeZone() {
|
|
242
184
|
const { timeZone, setTimeZone } = usePreferencesOrThrow("useNajmTimeZone");
|
|
243
|
-
return
|
|
185
|
+
return React2.useMemo(
|
|
244
186
|
() => ({ timeZone, setTimeZone }),
|
|
245
187
|
[timeZone, setTimeZone]
|
|
246
188
|
);
|
|
@@ -285,10 +227,10 @@ function buildToolbarLabels(t, prefix) {
|
|
|
285
227
|
};
|
|
286
228
|
}
|
|
287
229
|
function useDocumentDirection(override) {
|
|
288
|
-
const [direction, setDirection] =
|
|
230
|
+
const [direction, setDirection] = React2.useState(
|
|
289
231
|
override ?? "ltr"
|
|
290
232
|
);
|
|
291
|
-
|
|
233
|
+
React2.useEffect(() => {
|
|
292
234
|
if (override) {
|
|
293
235
|
setDirection(override);
|
|
294
236
|
return;
|
|
@@ -307,9 +249,9 @@ var EMPTY_DESIGN = Object.freeze({
|
|
|
307
249
|
theme: {},
|
|
308
250
|
components: {}
|
|
309
251
|
});
|
|
310
|
-
var NajmDesignEditorContext =
|
|
252
|
+
var NajmDesignEditorContext = React2.createContext(null);
|
|
311
253
|
function useNajmDesignEditor() {
|
|
312
|
-
return
|
|
254
|
+
return React2.useContext(NajmDesignEditorContext);
|
|
313
255
|
}
|
|
314
256
|
function cloneDesign(design) {
|
|
315
257
|
return structuredClone(design);
|
|
@@ -319,29 +261,29 @@ function NajmDesignEditorProvider({
|
|
|
319
261
|
design,
|
|
320
262
|
initialDesign
|
|
321
263
|
}) {
|
|
322
|
-
const [state, setState] =
|
|
264
|
+
const [state, setState] = React2.useState(() => ({
|
|
323
265
|
committed: initialDesign ?? design ?? EMPTY_DESIGN,
|
|
324
266
|
draft: null
|
|
325
267
|
}));
|
|
326
|
-
const beginDraft =
|
|
268
|
+
const beginDraft = React2.useCallback(() => {
|
|
327
269
|
setState(
|
|
328
270
|
(current) => current.draft ? current : { ...current, draft: cloneDesign(current.committed) }
|
|
329
271
|
);
|
|
330
272
|
}, []);
|
|
331
|
-
const setDraft =
|
|
273
|
+
const setDraft = React2.useCallback((next) => {
|
|
332
274
|
setState((current) => ({ ...current, draft: cloneDesign(next) }));
|
|
333
275
|
}, []);
|
|
334
|
-
const cancelDraft =
|
|
276
|
+
const cancelDraft = React2.useCallback(() => {
|
|
335
277
|
setState(
|
|
336
278
|
(current) => current.draft === null ? current : { ...current, draft: null }
|
|
337
279
|
);
|
|
338
280
|
}, []);
|
|
339
|
-
const setCommitted =
|
|
281
|
+
const setCommitted = React2.useCallback((next) => {
|
|
340
282
|
setState(
|
|
341
283
|
(current) => current.committed === next && current.draft === null ? current : { committed: next, draft: null }
|
|
342
284
|
);
|
|
343
285
|
}, []);
|
|
344
|
-
const value =
|
|
286
|
+
const value = React2.useMemo(() => {
|
|
345
287
|
if (design) {
|
|
346
288
|
return {
|
|
347
289
|
design,
|
|
@@ -369,20 +311,20 @@ function NajmDesignEditorProvider({
|
|
|
369
311
|
}
|
|
370
312
|
function noop() {
|
|
371
313
|
}
|
|
372
|
-
var NBadgeDefaultsContext =
|
|
314
|
+
var NBadgeDefaultsContext = React2.createContext(null);
|
|
373
315
|
function NBadgeDefaultsProvider({
|
|
374
316
|
defaults,
|
|
375
317
|
t,
|
|
376
318
|
children
|
|
377
319
|
}) {
|
|
378
|
-
const value =
|
|
320
|
+
const value = React2.useMemo(
|
|
379
321
|
() => ({ defaults, t }),
|
|
380
322
|
[defaults, t]
|
|
381
323
|
);
|
|
382
324
|
return /* @__PURE__ */ jsx(NBadgeDefaultsContext.Provider, { value, children });
|
|
383
325
|
}
|
|
384
326
|
function useNBadgeDefaults() {
|
|
385
|
-
return
|
|
327
|
+
return React2.useContext(NBadgeDefaultsContext);
|
|
386
328
|
}
|
|
387
329
|
function resolveBadgeStatusLabel(status, defaults, t) {
|
|
388
330
|
if (!defaults) return void 0;
|
|
@@ -411,7 +353,7 @@ function NajmUICore({
|
|
|
411
353
|
const { theme } = useNajmTheme();
|
|
412
354
|
const direction = useDocumentDirection(dir);
|
|
413
355
|
const design = useNajmDesignEditor()?.design ?? EMPTY_DESIGN;
|
|
414
|
-
const defaults =
|
|
356
|
+
const defaults = React2.useMemo(() => {
|
|
415
357
|
const translated = t ? buildPaginationLabels(t, paginationKeyPrefix) : void 0;
|
|
416
358
|
const overrides = tableDefaults?.paginationLabels;
|
|
417
359
|
const paginationLabels = translated || overrides ? { ...translated, ...overrides } : void 0;
|
|
@@ -420,7 +362,7 @@ function NajmUICore({
|
|
|
420
362
|
const toolbarLabels = translatedToolbar || toolbarOverrides ? { ...translatedToolbar, ...toolbarOverrides } : void 0;
|
|
421
363
|
return { ...tableDefaults, paginationLabels, toolbarLabels };
|
|
422
364
|
}, [t, paginationKeyPrefix, toolbarKeyPrefix, tableDefaults]);
|
|
423
|
-
const feedbackValue =
|
|
365
|
+
const feedbackValue = React2.useMemo(
|
|
424
366
|
() => resolveFeedbackDefaultsValue(feedbackDefaults, t),
|
|
425
367
|
[feedbackDefaults, t]
|
|
426
368
|
);
|
|
@@ -505,7 +447,7 @@ function selectImageSource(sources, failed) {
|
|
|
505
447
|
var NO_FAILURES = [];
|
|
506
448
|
function useImageChain(sources) {
|
|
507
449
|
const key = JSON.stringify(sources);
|
|
508
|
-
const [state, setState] =
|
|
450
|
+
const [state, setState] = React2.useState(() => ({
|
|
509
451
|
key,
|
|
510
452
|
failed: NO_FAILURES,
|
|
511
453
|
loaded: null
|
|
@@ -514,13 +456,13 @@ function useImageChain(sources) {
|
|
|
514
456
|
const current = state.key === key ? state : fresh;
|
|
515
457
|
if (state.key !== key) setState(fresh);
|
|
516
458
|
const active = selectImageSource(sources, current.failed);
|
|
517
|
-
const markLoaded =
|
|
459
|
+
const markLoaded = React2.useCallback(() => {
|
|
518
460
|
if (active === void 0) return;
|
|
519
461
|
setState(
|
|
520
462
|
(prev) => prev.key !== key || prev.loaded === active ? prev : { ...prev, loaded: active }
|
|
521
463
|
);
|
|
522
464
|
}, [key, active]);
|
|
523
|
-
const markFailed =
|
|
465
|
+
const markFailed = React2.useCallback(() => {
|
|
524
466
|
if (active === void 0) return;
|
|
525
467
|
setState((prev) => {
|
|
526
468
|
if (prev.key !== key || prev.failed.includes(active)) return prev;
|
|
@@ -540,4 +482,4 @@ function useImageChain(sources) {
|
|
|
540
482
|
};
|
|
541
483
|
}
|
|
542
484
|
|
|
543
|
-
export {
|
|
485
|
+
export { DEFAULT_PAGINATION_KEY_PREFIX, DEFAULT_TIME_ZONE, DEFAULT_TOOLBAR_KEY_PREFIX, EMPTY_DESIGN, NAJM_COLOR_TEXT_CLASSES, NAJM_STATUS_COLORS, NTableDefaultsProvider, NajmDesignEditorProvider, NajmPreferencesProvider, NajmUIProvider, buildPaginationLabels, buildToolbarLabels, colorTextClass, findStatusColor, mergeBadgeMaps, normalizeImageSources, normalizeStatusToken, resolveBadgeStatusLabel, resolveStatusColor, statusTextClass, useDocumentDirection, useImageChain, useNBadgeDefaults, useNTableDefaults, useNajmDesignEditor, useNajmPreferencesContext, useNajmTheme, useNajmTimeZone, useResolvedPaginationLabels, useResolvedToolbarLabels };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useImageChain, normalizeImageSources, NajmUIProvider } from './chunk-
|
|
1
|
+
import { useImageChain, normalizeImageSources, NajmUIProvider } from './chunk-LMW4DM5L.mjs';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { useRouter } from 'next/navigation';
|
|
4
4
|
import NextImage from 'next/image';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-5UY7U2ED.mjs';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { createContext, useContext } from 'react';
|
|
4
3
|
import { OverlayScrollbars } from 'overlayscrollbars';
|
|
5
4
|
import { OverlayScrollbarsComponent } from 'overlayscrollbars-react';
|
|
6
5
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -88,30 +87,5 @@ function NajmScroll({ className, axis = "y", autoHide = "never", viewportRef, ev
|
|
|
88
87
|
}
|
|
89
88
|
);
|
|
90
89
|
}
|
|
91
|
-
var TableStoreContext = createContext(null);
|
|
92
|
-
var useTableStore = { use: {} };
|
|
93
|
-
var handler = {
|
|
94
|
-
get: (_, prop) => () => {
|
|
95
|
-
const store = useContext(TableStoreContext);
|
|
96
|
-
if (!store) throw new Error("useTableStore must be used within NTable");
|
|
97
|
-
return store.use[prop]();
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
useTableStore.use = new Proxy({}, handler);
|
|
101
|
-
function formatJsonValue(value) {
|
|
102
|
-
if (typeof value === "string") return value;
|
|
103
|
-
try {
|
|
104
|
-
return JSON.stringify(value ?? null, null, 2) ?? String(value);
|
|
105
|
-
} catch {
|
|
106
|
-
return String(value);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
function NTableJson() {
|
|
110
|
-
const viewMode = useTableStore.use.viewMode();
|
|
111
|
-
const renderJson = useTableStore.use.renderJson();
|
|
112
|
-
const jsonValue = useTableStore.use.jsonValue();
|
|
113
|
-
if (viewMode !== "json") return null;
|
|
114
|
-
return /* @__PURE__ */ jsx("div", { className: "flex-1 flex flex-col min-h-0 overflow-hidden", children: renderJson?.() ?? /* @__PURE__ */ jsx(NajmScroll, { axis: "both", className: "h-full min-h-0 rounded-md border border-border bg-muted/40", children: /* @__PURE__ */ jsx("pre", { className: "p-4 font-mono text-xs leading-relaxed text-foreground", children: formatJsonValue(jsonValue) }) }) });
|
|
115
|
-
}
|
|
116
90
|
|
|
117
|
-
export {
|
|
91
|
+
export { NajmScroll, useNajmScrollViewport };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Slot } from '@radix-ui/react-slot';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
|
-
import { clsx } from 'clsx';
|
|
5
|
-
import { twMerge } from 'tailwind-merge';
|
|
6
4
|
|
|
7
5
|
// src/theme/presets/modes.ts
|
|
8
6
|
var lightMode = {
|
|
@@ -303,9 +301,6 @@ function NajmThemeProvider({
|
|
|
303
301
|
}
|
|
304
302
|
) }) }) }) });
|
|
305
303
|
}
|
|
306
|
-
function cn(...inputs) {
|
|
307
|
-
return twMerge(clsx(inputs));
|
|
308
|
-
}
|
|
309
304
|
var NajmDesignContext = React.createContext({
|
|
310
305
|
components: {}
|
|
311
306
|
});
|
|
@@ -368,4 +363,4 @@ function NajmDesignProvider({
|
|
|
368
363
|
) : children }) });
|
|
369
364
|
}
|
|
370
365
|
|
|
371
|
-
export { NajmDesignProvider, NajmThemeContainerCtx, NajmThemeProvider,
|
|
366
|
+
export { NajmDesignProvider, NajmThemeContainerCtx, NajmThemeProvider, composePreset, resolvePreset, useNajmAppearance, useNajmComponentStyle, useNajmDesign, useNajmThemeMode };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { NajmScroll } from './chunk-QJ22WAQY.mjs';
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var TableStoreContext = createContext(null);
|
|
6
|
+
var useTableStore = { use: {} };
|
|
7
|
+
var handler = {
|
|
8
|
+
get: (_, prop) => () => {
|
|
9
|
+
const store = useContext(TableStoreContext);
|
|
10
|
+
if (!store) throw new Error("useTableStore must be used within NTable");
|
|
11
|
+
return store.use[prop]();
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
useTableStore.use = new Proxy({}, handler);
|
|
15
|
+
function formatJsonValue(value) {
|
|
16
|
+
if (typeof value === "string") return value;
|
|
17
|
+
try {
|
|
18
|
+
return JSON.stringify(value ?? null, null, 2) ?? String(value);
|
|
19
|
+
} catch {
|
|
20
|
+
return String(value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function NTableJson() {
|
|
24
|
+
const viewMode = useTableStore.use.viewMode();
|
|
25
|
+
const renderJson = useTableStore.use.renderJson();
|
|
26
|
+
const jsonValue = useTableStore.use.jsonValue();
|
|
27
|
+
if (viewMode !== "json") return null;
|
|
28
|
+
return /* @__PURE__ */ jsx("div", { className: "flex-1 flex flex-col min-h-0 overflow-hidden", children: renderJson?.() ?? /* @__PURE__ */ jsx(NajmScroll, { axis: "both", className: "h-full min-h-0 rounded-md border border-border bg-muted/40", children: /* @__PURE__ */ jsx("pre", { className: "p-4 font-mono text-xs leading-relaxed text-foreground", children: formatJsonValue(jsonValue) }) }) });
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { NTableJson, TableStoreContext, useTableStore };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { useNajmComponentStyle
|
|
1
|
+
import { useNajmComponentStyle } from './chunk-TZRTOQCC.mjs';
|
|
2
|
+
import { cn } from './chunk-5UY7U2ED.mjs';
|
|
2
3
|
import { resolveVariantAlias, resolveRadiusValue } from './chunk-TFHWLE7N.mjs';
|
|
3
4
|
import * as React2 from 'react';
|
|
4
5
|
import React2__default from 'react';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ZodTypeAny, TypeOf } from 'zod';
|
|
2
|
+
|
|
3
|
+
type FormFillOverride = unknown | readonly unknown[] | ((fieldName: string) => unknown);
|
|
4
|
+
type FormFillOverrides = Record<string, FormFillOverride>;
|
|
5
|
+
interface FormDevToolsOptions {
|
|
6
|
+
enabled?: boolean;
|
|
7
|
+
shortcut?: string;
|
|
8
|
+
}
|
|
9
|
+
interface FormDevToolsConfig<T extends ZodTypeAny = ZodTypeAny> extends FormDevToolsOptions {
|
|
10
|
+
fill?: () => Partial<TypeOf<T>>;
|
|
11
|
+
overrides?: FormFillOverrides;
|
|
12
|
+
}
|
|
13
|
+
type FormDevTools<T extends ZodTypeAny = ZodTypeAny> = boolean | FormDevToolsConfig<T>;
|
|
14
|
+
/** Build form-shaped test values from a Zod object schema. */
|
|
15
|
+
declare function buildFormFill<TSchema extends ZodTypeAny>(schema: TSchema, overrides?: FormFillOverrides): Partial<TypeOf<TSchema>>;
|
|
16
|
+
|
|
17
|
+
export { type FormDevToolsOptions as F, type FormDevTools as a, type FormDevToolsConfig as b, type FormFillOverride as c, type FormFillOverrides as d, buildFormFill as e };
|