@nestledjs/data-browser 0.1.15 → 0.1.17

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.
@@ -39,7 +39,6 @@ const validateId = (id) => {
39
39
  const sanitized = sanitizeInput(id);
40
40
  if (!sanitized) return null;
41
41
  if (!/^[a-zA-Z0-9_-]+$/.test(sanitized)) {
42
- console.warn(`[Security] Invalid ID format attempted: ${id}`);
43
42
  return null;
44
43
  }
45
44
  return sanitized;
@@ -64,7 +63,6 @@ function AdminDataEditPage() {
64
63
  const properCaseDataType = sanitized.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join("");
65
64
  const model2 = databaseModels.find((m) => m.name === properCaseDataType);
66
65
  if (!model2) {
67
- console.warn(`[Security] Invalid dataType attempted: ${dataType2}`);
68
66
  return null;
69
67
  }
70
68
  return properCaseDataType;
@@ -77,84 +75,84 @@ function AdminDataEditPage() {
77
75
  if (shouldShowUnauthorized) {
78
76
  return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
79
77
  fileName: _jsxFileName,
80
- lineNumber: 118,
78
+ lineNumber: 116,
81
79
  columnNumber: 7
82
80
  } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
83
81
  fileName: _jsxFileName,
84
- lineNumber: 119,
82
+ lineNumber: 117,
85
83
  columnNumber: 9
86
84
  } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
87
85
  fileName: _jsxFileName,
88
- lineNumber: 120,
86
+ lineNumber: 118,
89
87
  columnNumber: 11
90
88
  } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
91
89
  fileName: _jsxFileName,
92
- lineNumber: 121,
90
+ lineNumber: 119,
93
91
  columnNumber: 13
94
92
  } }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-red-400", __self: this, __source: {
95
93
  fileName: _jsxFileName,
96
- lineNumber: 122,
94
+ lineNumber: 120,
97
95
  columnNumber: 15
98
96
  } }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
99
97
  fileName: _jsxFileName,
100
- lineNumber: 123,
98
+ lineNumber: 121,
101
99
  columnNumber: 15
102
100
  } }, "Unauthorized"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
103
101
  fileName: _jsxFileName,
104
- lineNumber: 124,
102
+ lineNumber: 122,
105
103
  columnNumber: 15
106
104
  } }, "Invalid data type, ID, or insufficient permissions."), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
107
105
  fileName: _jsxFileName,
108
- lineNumber: 127,
106
+ lineNumber: 125,
109
107
  columnNumber: 15
110
108
  } }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
111
109
  fileName: _jsxFileName,
112
- lineNumber: 128,
110
+ lineNumber: 126,
113
111
  columnNumber: 17
114
112
  } }, "Return to Data Browser"))))));
115
113
  }
116
114
  if (shouldShowModelNotFound) {
117
115
  return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
118
116
  fileName: _jsxFileName,
119
- lineNumber: 144,
117
+ lineNumber: 142,
120
118
  columnNumber: 7
121
119
  } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
122
120
  fileName: _jsxFileName,
123
- lineNumber: 145,
121
+ lineNumber: 143,
124
122
  columnNumber: 9
125
123
  } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
126
124
  fileName: _jsxFileName,
127
- lineNumber: 146,
125
+ lineNumber: 144,
128
126
  columnNumber: 11
129
127
  } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
130
128
  fileName: _jsxFileName,
131
- lineNumber: 147,
129
+ lineNumber: 145,
132
130
  columnNumber: 13
133
131
  } }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-yellow-400", __self: this, __source: {
134
132
  fileName: _jsxFileName,
135
- lineNumber: 148,
133
+ lineNumber: 146,
136
134
  columnNumber: 15
137
135
  } }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
138
136
  fileName: _jsxFileName,
139
- lineNumber: 149,
137
+ lineNumber: 147,
140
138
  columnNumber: 15
141
139
  } }, "Model Not Found"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
142
140
  fileName: _jsxFileName,
143
- lineNumber: 150,
141
+ lineNumber: 148,
144
142
  columnNumber: 15
145
143
  } }, 'The data model for "', validatedDataType, '" could not be found.'), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
146
144
  fileName: _jsxFileName,
147
- lineNumber: 153,
145
+ lineNumber: 151,
148
146
  columnNumber: 15
149
147
  } }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
150
148
  fileName: _jsxFileName,
151
- lineNumber: 154,
149
+ lineNumber: 152,
152
150
  columnNumber: 17
153
151
  } }, "Return to Data Browser"))))));
154
152
  }
155
153
  return /* @__PURE__ */ React.createElement(AdminDataEditPageContent, { model, id: validatedId, basePath, formTheme, __self: this, __source: {
156
154
  fileName: _jsxFileName,
157
- lineNumber: 169,
155
+ lineNumber: 167,
158
156
  columnNumber: 10
159
157
  } });
160
158
  }
@@ -180,7 +178,6 @@ function AdminDataEditPageContent({
180
178
  try {
181
179
  return getAdminDocuments(sdk, model);
182
180
  } catch (error2) {
183
- console.error("[AdminDataEditPage] Error getting documents:", error2);
184
181
  return null;
185
182
  }
186
183
  }, [sdk, model]);
@@ -193,7 +190,6 @@ function AdminDataEditPageContent({
193
190
  }
194
191
  return gql(documents.query);
195
192
  } catch (error2) {
196
- console.error("[AdminDataEditPage] Error parsing QUERY:", error2);
197
193
  return null;
198
194
  }
199
195
  }, [documents]);
@@ -206,7 +202,6 @@ function AdminDataEditPageContent({
206
202
  }
207
203
  return gql(documents.update);
208
204
  } catch (error2) {
209
- console.error("[AdminDataEditPage] Error parsing UPDATE mutation:", error2);
210
205
  return null;
211
206
  }
212
207
  }, [documents]);
@@ -219,7 +214,6 @@ function AdminDataEditPageContent({
219
214
  }
220
215
  return gql(documents.delete);
221
216
  } catch (error2) {
222
- console.error("[AdminDataEditPage] Error parsing DELETE mutation:", error2);
223
217
  return null;
224
218
  }
225
219
  }, [documents]);
@@ -274,113 +268,113 @@ function AdminDataEditPageContent({
274
268
  if (!documents || !QUERY || !UPDATE_MUTATION || !DELETE_MUTATION) {
275
269
  return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
276
270
  fileName: _jsxFileName,
277
- lineNumber: 305,
271
+ lineNumber: 299,
278
272
  columnNumber: 7
279
273
  } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-2xl", __self: this, __source: {
280
274
  fileName: _jsxFileName,
281
- lineNumber: 306,
275
+ lineNumber: 300,
282
276
  columnNumber: 9
283
277
  } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
284
278
  fileName: _jsxFileName,
285
- lineNumber: 307,
279
+ lineNumber: 301,
286
280
  columnNumber: 11
287
281
  } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
288
282
  fileName: _jsxFileName,
289
- lineNumber: 308,
283
+ lineNumber: 302,
290
284
  columnNumber: 13
291
285
  } }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-red-400", __self: this, __source: {
292
286
  fileName: _jsxFileName,
293
- lineNumber: 309,
287
+ lineNumber: 303,
294
288
  columnNumber: 15
295
289
  } }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
296
290
  fileName: _jsxFileName,
297
- lineNumber: 310,
291
+ lineNumber: 304,
298
292
  columnNumber: 15
299
293
  } }, "GraphQL Schema Error"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
300
294
  fileName: _jsxFileName,
301
- lineNumber: 311,
295
+ lineNumber: 305,
302
296
  columnNumber: 15
303
297
  } }, "Unable to load GraphQL documents for this model. Please ensure the API server is running and the GraphQL schema is up to date."), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
304
298
  fileName: _jsxFileName,
305
- lineNumber: 315,
299
+ lineNumber: 309,
306
300
  columnNumber: 15
307
301
  } }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
308
302
  fileName: _jsxFileName,
309
- lineNumber: 316,
303
+ lineNumber: 310,
310
304
  columnNumber: 17
311
305
  } }, "Return to Data Browser"))))));
312
306
  }
313
307
  if (error) {
314
308
  return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
315
309
  fileName: _jsxFileName,
316
- lineNumber: 333,
310
+ lineNumber: 327,
317
311
  columnNumber: 7
318
312
  } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
319
313
  fileName: _jsxFileName,
320
- lineNumber: 334,
314
+ lineNumber: 328,
321
315
  columnNumber: 9
322
316
  } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
323
317
  fileName: _jsxFileName,
324
- lineNumber: 335,
318
+ lineNumber: 329,
325
319
  columnNumber: 11
326
320
  } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
327
321
  fileName: _jsxFileName,
328
- lineNumber: 336,
322
+ lineNumber: 330,
329
323
  columnNumber: 13
330
324
  } }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-red-400", __self: this, __source: {
331
325
  fileName: _jsxFileName,
332
- lineNumber: 337,
326
+ lineNumber: 331,
333
327
  columnNumber: 15
334
328
  } }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
335
329
  fileName: _jsxFileName,
336
- lineNumber: 338,
330
+ lineNumber: 332,
337
331
  columnNumber: 15
338
332
  } }, "Error Loading Data"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
339
333
  fileName: _jsxFileName,
340
- lineNumber: 339,
334
+ lineNumber: 333,
341
335
  columnNumber: 15
342
336
  } }, error.message), /* @__PURE__ */ React.createElement("div", { className: "mt-6 space-y-3", __self: this, __source: {
343
337
  fileName: _jsxFileName,
344
- lineNumber: 340,
338
+ lineNumber: 334,
345
339
  columnNumber: 15
346
340
  } }, /* @__PURE__ */ React.createElement("button", { onClick: () => refetch(), className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
347
341
  fileName: _jsxFileName,
348
- lineNumber: 341,
342
+ lineNumber: 335,
349
343
  columnNumber: 17
350
344
  } }, "Try Again"), /* @__PURE__ */ React.createElement(Link, { to: `${basePath}/${toKebabCase(model.pluralName)}`, className: "w-full flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
351
345
  fileName: _jsxFileName,
352
- lineNumber: 347,
346
+ lineNumber: 341,
353
347
  columnNumber: 17
354
348
  } }, "Back to List"))))));
355
349
  }
356
350
  if (loading) {
357
351
  return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
358
352
  fileName: _jsxFileName,
359
- lineNumber: 364,
353
+ lineNumber: 358,
360
354
  columnNumber: 7
361
355
  } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
362
356
  fileName: _jsxFileName,
363
- lineNumber: 365,
357
+ lineNumber: 359,
364
358
  columnNumber: 9
365
359
  } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
366
360
  fileName: _jsxFileName,
367
- lineNumber: 366,
361
+ lineNumber: 360,
368
362
  columnNumber: 11
369
363
  } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
370
364
  fileName: _jsxFileName,
371
- lineNumber: 367,
365
+ lineNumber: 361,
372
366
  columnNumber: 13
373
367
  } }, /* @__PURE__ */ React.createElement("div", { className: "mx-auto h-12 w-12 border-4 border-green-web border-t-transparent rounded-full animate-spin", __self: this, __source: {
374
368
  fileName: _jsxFileName,
375
- lineNumber: 368,
369
+ lineNumber: 362,
376
370
  columnNumber: 15
377
371
  } }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
378
372
  fileName: _jsxFileName,
379
- lineNumber: 369,
373
+ lineNumber: 363,
380
374
  columnNumber: 15
381
375
  } }, "Loading..."), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
382
376
  fileName: _jsxFileName,
383
- lineNumber: 370,
377
+ lineNumber: 364,
384
378
  columnNumber: 15
385
379
  } }, "Loading ", toReadableText(model.name), " data...")))));
386
380
  }
@@ -388,39 +382,39 @@ function AdminDataEditPageContent({
388
382
  if (!item) {
389
383
  return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
390
384
  fileName: _jsxFileName,
391
- lineNumber: 385,
385
+ lineNumber: 379,
392
386
  columnNumber: 7
393
387
  } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
394
388
  fileName: _jsxFileName,
395
- lineNumber: 386,
389
+ lineNumber: 380,
396
390
  columnNumber: 9
397
391
  } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
398
392
  fileName: _jsxFileName,
399
- lineNumber: 387,
393
+ lineNumber: 381,
400
394
  columnNumber: 11
401
395
  } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
402
396
  fileName: _jsxFileName,
403
- lineNumber: 388,
397
+ lineNumber: 382,
404
398
  columnNumber: 13
405
399
  } }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-yellow-400", __self: this, __source: {
406
400
  fileName: _jsxFileName,
407
- lineNumber: 389,
401
+ lineNumber: 383,
408
402
  columnNumber: 15
409
403
  } }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
410
404
  fileName: _jsxFileName,
411
- lineNumber: 390,
405
+ lineNumber: 384,
412
406
  columnNumber: 15
413
407
  } }, "Not Found"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
414
408
  fileName: _jsxFileName,
415
- lineNumber: 391,
409
+ lineNumber: 385,
416
410
  columnNumber: 15
417
411
  } }, "The ", toReadableText(model.name), " you're looking for doesn't exist or has been deleted."), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
418
412
  fileName: _jsxFileName,
419
- lineNumber: 395,
413
+ lineNumber: 389,
420
414
  columnNumber: 15
421
415
  } }, /* @__PURE__ */ React.createElement(Link, { to: `${basePath}/${toKebabCase(model.pluralName)}`, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
422
416
  fileName: _jsxFileName,
423
- lineNumber: 396,
417
+ lineNumber: 390,
424
418
  columnNumber: 17
425
419
  } }, "Back to List"))))));
426
420
  }
@@ -456,7 +450,6 @@ function AdminDataEditPageContent({
456
450
  value = isoString.substring(0, 16);
457
451
  }
458
452
  } catch (e) {
459
- console.warn(`Failed to convert date value for field ${field.name}:`, e);
460
453
  value = "";
461
454
  }
462
455
  } else {
@@ -470,7 +463,6 @@ function AdminDataEditPageContent({
470
463
  value = Boolean(value);
471
464
  }
472
465
  if (value !== null && typeof value === "object") {
473
- console.warn(`Field ${field.name} has object value, converting to string:`, value);
474
466
  if (typeof value === "object" && "id" in value) {
475
467
  value = value.id;
476
468
  } else {
@@ -482,7 +474,6 @@ function AdminDataEditPageContent({
482
474
  });
483
475
  for (const [key, value] of Object.entries(initialValues)) {
484
476
  if (value === void 0) {
485
- console.warn(`[AdminDataEditPage] Found undefined value for field ${key}, converting to empty string`);
486
477
  initialValues[key] = "";
487
478
  continue;
488
479
  }
@@ -492,7 +483,6 @@ function AdminDataEditPageContent({
492
483
  if (typeof value !== "object") {
493
484
  continue;
494
485
  }
495
- console.warn(`[AdminDataEditPage] Found non-primitive value for field ${key}, converting:`, value);
496
486
  if ("id" in value && typeof value.id === "string") {
497
487
  initialValues[key] = value.id;
498
488
  } else if (value instanceof Date) {
@@ -502,13 +492,6 @@ function AdminDataEditPageContent({
502
492
  initialValues[key] = "";
503
493
  }
504
494
  }
505
- console.log("[AdminDataEditPage] Final initialValues:", initialValues);
506
- console.log("[AdminDataEditPage] Value types:", Object.entries(initialValues).map(([key, val]) => ({
507
- key,
508
- type: typeof val,
509
- isDate: val instanceof Date,
510
- value: val
511
- })));
512
495
  }
513
496
  const handleSubmit = async (formData) => {
514
497
  try {
@@ -523,7 +506,6 @@ function AdminDataEditPageContent({
523
506
  }
524
507
  });
525
508
  if (result.errors) {
526
- console.error("GraphQL errors:", result.errors);
527
509
  setSubmissionState({
528
510
  status: "error",
529
511
  message: result.errors.map((err) => err.message).join(", ")
@@ -536,7 +518,6 @@ function AdminDataEditPageContent({
536
518
  });
537
519
  await refetch();
538
520
  } catch (error2) {
539
- console.error("Error updating record:", error2);
540
521
  setSubmissionState({
541
522
  status: "error",
542
523
  message: error2 instanceof Error ? error2.message : "An unexpected error occurred"
@@ -554,7 +535,6 @@ function AdminDataEditPageContent({
554
535
  }
555
536
  });
556
537
  if (result.errors) {
557
- console.error("GraphQL errors:", result.errors);
558
538
  setDeleteState({
559
539
  status: "error",
560
540
  message: result.errors.map((err) => err.message).join(", ")
@@ -569,7 +549,6 @@ function AdminDataEditPageContent({
569
549
  navigate(`${basePath}/${toKebabCase(model.pluralName)}`);
570
550
  }, 1500);
571
551
  } catch (error2) {
572
- console.error("Error deleting record:", error2);
573
552
  setDeleteState({
574
553
  status: "error",
575
554
  message: error2 instanceof Error ? error2.message : "An unexpected error occurred"
@@ -578,175 +557,175 @@ function AdminDataEditPageContent({
578
557
  };
579
558
  return /* @__PURE__ */ React.createElement("div", { className: "space-y-6", __self: this, __source: {
580
559
  fileName: _jsxFileName,
581
- lineNumber: 614,
560
+ lineNumber: 591,
582
561
  columnNumber: 5
583
562
  } }, /* @__PURE__ */ React.createElement("div", { className: "mb-8", __self: this, __source: {
584
563
  fileName: _jsxFileName,
585
- lineNumber: 616,
564
+ lineNumber: 593,
586
565
  columnNumber: 7
587
566
  } }, /* @__PURE__ */ React.createElement("nav", { className: "flex mb-6", "aria-label": "Breadcrumb", __self: this, __source: {
588
567
  fileName: _jsxFileName,
589
- lineNumber: 617,
568
+ lineNumber: 594,
590
569
  columnNumber: 11
591
570
  } }, /* @__PURE__ */ React.createElement("ol", { className: "flex items-center space-x-4", __self: this, __source: {
592
571
  fileName: _jsxFileName,
593
- lineNumber: 618,
572
+ lineNumber: 595,
594
573
  columnNumber: 13
595
574
  } }, /* @__PURE__ */ React.createElement("li", { __self: this, __source: {
596
575
  fileName: _jsxFileName,
597
- lineNumber: 619,
576
+ lineNumber: 596,
598
577
  columnNumber: 15
599
578
  } }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400", __self: this, __source: {
600
579
  fileName: _jsxFileName,
601
- lineNumber: 620,
580
+ lineNumber: 597,
602
581
  columnNumber: 17
603
582
  } }, "Data Browser")), /* @__PURE__ */ React.createElement("li", { __self: this, __source: {
604
583
  fileName: _jsxFileName,
605
- lineNumber: 624,
584
+ lineNumber: 601,
606
585
  columnNumber: 15
607
586
  } }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
608
587
  fileName: _jsxFileName,
609
- lineNumber: 625,
588
+ lineNumber: 602,
610
589
  columnNumber: 17
611
590
  } }, /* @__PURE__ */ React.createElement("svg", { className: "flex-shrink-0 h-5 w-5 text-gray-300 dark:text-gray-600", fill: "currentColor", viewBox: "0 0 20 20", __self: this, __source: {
612
591
  fileName: _jsxFileName,
613
- lineNumber: 626,
592
+ lineNumber: 603,
614
593
  columnNumber: 19
615
594
  } }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd", __self: this, __source: {
616
595
  fileName: _jsxFileName,
617
- lineNumber: 631,
596
+ lineNumber: 608,
618
597
  columnNumber: 21
619
598
  } })), /* @__PURE__ */ React.createElement(Link, { to: `${basePath}/${toKebabCase(model.pluralName)}`, className: "ml-4 text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400", __self: this, __source: {
620
599
  fileName: _jsxFileName,
621
- lineNumber: 637,
600
+ lineNumber: 614,
622
601
  columnNumber: 19
623
602
  } }, toReadableText(model.pluralName)))), /* @__PURE__ */ React.createElement("li", { __self: this, __source: {
624
603
  fileName: _jsxFileName,
625
- lineNumber: 645,
604
+ lineNumber: 622,
626
605
  columnNumber: 15
627
606
  } }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
628
607
  fileName: _jsxFileName,
629
- lineNumber: 646,
608
+ lineNumber: 623,
630
609
  columnNumber: 17
631
610
  } }, /* @__PURE__ */ React.createElement("svg", { className: "flex-shrink-0 h-5 w-5 text-gray-300 dark:text-gray-600", fill: "currentColor", viewBox: "0 0 20 20", __self: this, __source: {
632
611
  fileName: _jsxFileName,
633
- lineNumber: 647,
612
+ lineNumber: 624,
634
613
  columnNumber: 19
635
614
  } }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd", __self: this, __source: {
636
615
  fileName: _jsxFileName,
637
- lineNumber: 652,
616
+ lineNumber: 629,
638
617
  columnNumber: 21
639
618
  } })), /* @__PURE__ */ React.createElement("span", { className: "ml-4 text-gray-500 dark:text-gray-400", __self: this, __source: {
640
619
  fileName: _jsxFileName,
641
- lineNumber: 658,
620
+ lineNumber: 635,
642
621
  columnNumber: 19
643
622
  } }, "Edit"))))), /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between", __self: this, __source: {
644
623
  fileName: _jsxFileName,
645
- lineNumber: 663,
624
+ lineNumber: 640,
646
625
  columnNumber: 11
647
626
  } }, /* @__PURE__ */ React.createElement("h1", { className: "text-3xl font-bold text-gray-900 dark:text-gray-100", __self: this, __source: {
648
627
  fileName: _jsxFileName,
649
- lineNumber: 664,
628
+ lineNumber: 641,
650
629
  columnNumber: 13
651
630
  } }, "Edit ", toReadableText(model.name)), /* @__PURE__ */ React.createElement("button", { onClick: () => setShowDeleteConfirm(true), disabled: deleteState.status === "loading", className: "inline-flex items-center px-3 py-2 border border-red-300 shadow-sm text-sm leading-4 font-medium rounded-md text-red-700 bg-white hover:bg-red-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 disabled:opacity-50 disabled:cursor-not-allowed", __self: this, __source: {
652
631
  fileName: _jsxFileName,
653
- lineNumber: 665,
632
+ lineNumber: 642,
654
633
  columnNumber: 13
655
634
  } }, /* @__PURE__ */ React.createElement(TrashIcon, { className: "h-4 w-4 mr-2", __self: this, __source: {
656
635
  fileName: _jsxFileName,
657
- lineNumber: 670,
636
+ lineNumber: 647,
658
637
  columnNumber: 15
659
638
  } }), "Delete"))), showDeleteConfirm && /* @__PURE__ */ React.createElement("div", { className: "fixed inset-0 bg-gray-600 dark:bg-gray-900 bg-opacity-50 dark:bg-opacity-75 overflow-y-auto h-full w-full z-50 flex items-center justify-center", __self: this, __source: {
660
639
  fileName: _jsxFileName,
661
- lineNumber: 678,
640
+ lineNumber: 655,
662
641
  columnNumber: 11
663
642
  } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 p-6 rounded-lg shadow-xl max-w-md w-full mx-4", __self: this, __source: {
664
643
  fileName: _jsxFileName,
665
- lineNumber: 679,
644
+ lineNumber: 656,
666
645
  columnNumber: 13
667
646
  } }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
668
647
  fileName: _jsxFileName,
669
- lineNumber: 680,
648
+ lineNumber: 657,
670
649
  columnNumber: 15
671
650
  } }, /* @__PURE__ */ React.createElement("div", { className: "flex-shrink-0", __self: this, __source: {
672
651
  fileName: _jsxFileName,
673
- lineNumber: 681,
652
+ lineNumber: 658,
674
653
  columnNumber: 17
675
654
  } }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "h-6 w-6 text-red-600", __self: this, __source: {
676
655
  fileName: _jsxFileName,
677
- lineNumber: 682,
656
+ lineNumber: 659,
678
657
  columnNumber: 19
679
658
  } })), /* @__PURE__ */ React.createElement("div", { className: "ml-3", __self: this, __source: {
680
659
  fileName: _jsxFileName,
681
- lineNumber: 684,
660
+ lineNumber: 661,
682
661
  columnNumber: 17
683
662
  } }, /* @__PURE__ */ React.createElement("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
684
663
  fileName: _jsxFileName,
685
- lineNumber: 685,
664
+ lineNumber: 662,
686
665
  columnNumber: 19
687
666
  } }, "Delete ", toReadableText(model.name)), /* @__PURE__ */ React.createElement("div", { className: "mt-2", __self: this, __source: {
688
667
  fileName: _jsxFileName,
689
- lineNumber: 688,
668
+ lineNumber: 665,
690
669
  columnNumber: 19
691
670
  } }, /* @__PURE__ */ React.createElement("p", { className: "text-sm text-gray-500 dark:text-gray-400", __self: this, __source: {
692
671
  fileName: _jsxFileName,
693
- lineNumber: 689,
672
+ lineNumber: 666,
694
673
  columnNumber: 21
695
674
  } }, "Are you sure you want to delete this", " ", toReadableText(model.name).toLowerCase(), "? This action cannot be undone.")))), /* @__PURE__ */ React.createElement("div", { className: "mt-5 sm:mt-4 sm:flex sm:flex-row-reverse", __self: this, __source: {
696
675
  fileName: _jsxFileName,
697
- lineNumber: 696,
676
+ lineNumber: 673,
698
677
  columnNumber: 15
699
678
  } }, /* @__PURE__ */ React.createElement("button", { onClick: handleDelete, disabled: deleteState.status === "loading", className: "w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed", __self: this, __source: {
700
679
  fileName: _jsxFileName,
701
- lineNumber: 697,
680
+ lineNumber: 674,
702
681
  columnNumber: 17
703
682
  } }, deleteState.status === "loading" ? "Deleting..." : "Delete"), /* @__PURE__ */ React.createElement("button", { onClick: () => setShowDeleteConfirm(false), disabled: deleteState.status === "loading", className: "mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web sm:mt-0 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed", __self: this, __source: {
704
683
  fileName: _jsxFileName,
705
- lineNumber: 704,
684
+ lineNumber: 681,
706
685
  columnNumber: 17
707
686
  } }, "Cancel")))), (submissionState.status !== "idle" || deleteState.status !== "idle") && /* @__PURE__ */ React.createElement("div", { className: `mb-6 rounded-md p-4 ${submissionState.status === "success" || deleteState.status === "success" ? "bg-green-50 border border-green-200" : submissionState.status === "error" || deleteState.status === "error" ? "bg-red-50 border border-red-200" : "bg-blue-50 border border-blue-200"}`, __self: this, __source: {
708
687
  fileName: _jsxFileName,
709
- lineNumber: 718,
688
+ lineNumber: 695,
710
689
  columnNumber: 11
711
690
  } }, /* @__PURE__ */ React.createElement("div", { className: "flex", __self: this, __source: {
712
691
  fileName: _jsxFileName,
713
- lineNumber: 727,
692
+ lineNumber: 704,
714
693
  columnNumber: 13
715
694
  } }, /* @__PURE__ */ React.createElement("div", { className: "flex-shrink-0", __self: this, __source: {
716
695
  fileName: _jsxFileName,
717
- lineNumber: 728,
696
+ lineNumber: 705,
718
697
  columnNumber: 15
719
698
  } }, submissionState.status === "success" || deleteState.status === "success" ? /* @__PURE__ */ React.createElement(CheckCircleIcon, { className: "h-5 w-5 text-green-400", __self: this, __source: {
720
699
  fileName: _jsxFileName,
721
- lineNumber: 730,
700
+ lineNumber: 707,
722
701
  columnNumber: 19
723
702
  } }) : submissionState.status === "error" || deleteState.status === "error" ? /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "h-5 w-5 text-red-400", __self: this, __source: {
724
703
  fileName: _jsxFileName,
725
- lineNumber: 732,
704
+ lineNumber: 709,
726
705
  columnNumber: 19
727
706
  } }) : /* @__PURE__ */ React.createElement("div", { className: "h-5 w-5 border-2 border-blue-400 border-t-transparent rounded-full animate-spin", __self: this, __source: {
728
707
  fileName: _jsxFileName,
729
- lineNumber: 734,
708
+ lineNumber: 711,
730
709
  columnNumber: 19
731
710
  } })), /* @__PURE__ */ React.createElement("div", { className: "ml-3", __self: this, __source: {
732
711
  fileName: _jsxFileName,
733
- lineNumber: 737,
712
+ lineNumber: 714,
734
713
  columnNumber: 15
735
714
  } }, /* @__PURE__ */ React.createElement("p", { className: `text-sm font-medium ${submissionState.status === "success" || deleteState.status === "success" ? "text-green-800" : submissionState.status === "error" || deleteState.status === "error" ? "text-red-800" : "text-blue-800"}`, __self: this, __source: {
736
715
  fileName: _jsxFileName,
737
- lineNumber: 738,
716
+ lineNumber: 715,
738
717
  columnNumber: 17
739
718
  } }, submissionState.status === "loading" ? `Updating ${toReadableText(model.name)}...` : deleteState.status === "loading" ? `Deleting ${toReadableText(model.name)}...` : submissionState.message || deleteState.message)))), /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 shadow-sm rounded-lg", __self: this, __source: {
740
719
  fileName: _jsxFileName,
741
- lineNumber: 759,
720
+ lineNumber: 736,
742
721
  columnNumber: 9
743
722
  } }, /* @__PURE__ */ React.createElement("div", { className: "px-6 py-8", __self: this, __source: {
744
723
  fileName: _jsxFileName,
745
- lineNumber: 760,
724
+ lineNumber: 737,
746
725
  columnNumber: 11
747
726
  } }, /* @__PURE__ */ React.createElement(Form, { id: `edit-${model.name.toLowerCase()}-form`, fields: formFields, submit: handleSubmit, disabled: submissionState.status === "loading" || deleteState.status === "loading", defaultValues: initialValues, theme: formTheme, __self: this, __source: {
748
727
  fileName: _jsxFileName,
749
- lineNumber: 761,
728
+ lineNumber: 738,
750
729
  columnNumber: 13
751
730
  } }))));
752
731
  }
@@ -755,7 +734,7 @@ function AdminDataEditErrorBoundary({
755
734
  }) {
756
735
  return /* @__PURE__ */ React.createElement(ErrorBoundary, { error, __self: this, __source: {
757
736
  fileName: _jsxFileName,
758
- lineNumber: 776,
737
+ lineNumber: 753,
759
738
  columnNumber: 10
760
739
  } });
761
740
  }
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { Link } from "react-router";
3
- import { getPluralName } from "@nestledjs/helpers";
3
+ import { getPluralName } from "../utils/get-plural-names.js";
4
4
  import { useAdminDataContext } from "../context/AdminDataContext.js";
5
5
  import { kebabCase, spacedWords } from "../utils/string-utils.js";
6
6
  var _jsxFileName = "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataIndexPage.tsx";