@valencets/cms 0.2.2 → 0.4.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 (82) hide show
  1. package/dist/admin/admin-routes.d.ts +1 -0
  2. package/dist/admin/admin-routes.d.ts.map +1 -1
  3. package/dist/admin/admin-routes.js +88 -16
  4. package/dist/admin/admin-routes.js.map +1 -1
  5. package/dist/admin/edit-view.d.ts +1 -1
  6. package/dist/admin/edit-view.d.ts.map +1 -1
  7. package/dist/admin/edit-view.js +3 -2
  8. package/dist/admin/edit-view.js.map +1 -1
  9. package/dist/admin/editor/admin-client.js +2 -0
  10. package/dist/admin/editor/admin-client.js.map +1 -1
  11. package/dist/admin/editor/blocks-client.d.ts +2 -0
  12. package/dist/admin/editor/blocks-client.d.ts.map +1 -0
  13. package/dist/admin/editor/blocks-client.js +100 -0
  14. package/dist/admin/editor/blocks-client.js.map +1 -0
  15. package/dist/admin/editor/lexical-entry.d.ts.map +1 -1
  16. package/dist/admin/editor/lexical-entry.js +21 -36
  17. package/dist/admin/editor/lexical-entry.js.map +1 -1
  18. package/dist/admin/field-renderers.d.ts.map +1 -1
  19. package/dist/admin/field-renderers.js +34 -1
  20. package/dist/admin/field-renderers.js.map +1 -1
  21. package/dist/admin/flash.js +2 -2
  22. package/dist/admin/flash.js.map +1 -1
  23. package/dist/admin/layout.d.ts +2 -0
  24. package/dist/admin/layout.d.ts.map +1 -1
  25. package/dist/admin/layout.js +66 -2
  26. package/dist/admin/layout.js.map +1 -1
  27. package/dist/admin/list-view.d.ts +18 -3
  28. package/dist/admin/list-view.d.ts.map +1 -1
  29. package/dist/admin/list-view.js +137 -11
  30. package/dist/admin/list-view.js.map +1 -1
  31. package/dist/admin-client.js +11 -11
  32. package/dist/api/local-api.d.ts +11 -2
  33. package/dist/api/local-api.d.ts.map +1 -1
  34. package/dist/api/local-api.js +15 -0
  35. package/dist/api/local-api.js.map +1 -1
  36. package/dist/api/rest-api.d.ts.map +1 -1
  37. package/dist/api/rest-api.js +77 -3
  38. package/dist/api/rest-api.js.map +1 -1
  39. package/dist/auth/auth-routes.d.ts +2 -1
  40. package/dist/auth/auth-routes.d.ts.map +1 -1
  41. package/dist/auth/auth-routes.js +22 -7
  42. package/dist/auth/auth-routes.js.map +1 -1
  43. package/dist/config/cms-config.d.ts +2 -0
  44. package/dist/config/cms-config.d.ts.map +1 -1
  45. package/dist/config/cms-config.js +1 -1
  46. package/dist/config/cms-config.js.map +1 -1
  47. package/dist/db/column-map.d.ts.map +1 -1
  48. package/dist/db/column-map.js +2 -1
  49. package/dist/db/column-map.js.map +1 -1
  50. package/dist/db/query-builder.d.ts +1 -0
  51. package/dist/db/query-builder.d.ts.map +1 -1
  52. package/dist/db/query-builder.js +52 -9
  53. package/dist/db/query-builder.js.map +1 -1
  54. package/dist/db/query-types.d.ts +4 -0
  55. package/dist/db/query-types.d.ts.map +1 -1
  56. package/dist/db/search-migration.d.ts +5 -0
  57. package/dist/db/search-migration.d.ts.map +1 -0
  58. package/dist/db/search-migration.js +67 -0
  59. package/dist/db/search-migration.js.map +1 -0
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/schema/collection.d.ts +2 -0
  64. package/dist/schema/collection.d.ts.map +1 -1
  65. package/dist/schema/collection.js.map +1 -1
  66. package/dist/schema/field-types.d.ts +16 -1
  67. package/dist/schema/field-types.d.ts.map +1 -1
  68. package/dist/schema/field-types.js +2 -1
  69. package/dist/schema/field-types.js.map +1 -1
  70. package/dist/schema/fields.d.ts +2 -1
  71. package/dist/schema/fields.d.ts.map +1 -1
  72. package/dist/schema/fields.js +3 -0
  73. package/dist/schema/fields.js.map +1 -1
  74. package/dist/schema/index.d.ts +1 -1
  75. package/dist/schema/index.d.ts.map +1 -1
  76. package/dist/schema/index.js.map +1 -1
  77. package/dist/schema/infer.d.ts +5 -2
  78. package/dist/schema/infer.d.ts.map +1 -1
  79. package/dist/validation/zod-generator.d.ts.map +1 -1
  80. package/dist/validation/zod-generator.js +31 -1
  81. package/dist/validation/zod-generator.js.map +1 -1
  82. package/package.json +8 -4
@@ -1 +1 @@
1
- {"version":3,"file":"field-renderers.d.ts","sourceRoot":"","sources":["../../src/admin/field-renderers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAG3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,CAAA;CACxD;AAuID,wBAAgB,gBAAgB,CAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAKlG"}
1
+ {"version":3,"file":"field-renderers.d.ts","sourceRoot":"","sources":["../../src/admin/field-renderers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAG3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,CAAA;CACxD;AAwKD,wBAAgB,gBAAgB,CAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAKlG"}
@@ -17,7 +17,8 @@ const RENDERER_MAP = {
17
17
  json: renderJsonTextarea,
18
18
  color: renderColorInput,
19
19
  multiselect: renderMultiselect,
20
- array: renderArrayField
20
+ array: renderArrayField,
21
+ blocks: renderBlocksField
21
22
  };
22
23
  function renderTextInput(f, value) {
23
24
  const req = f.required ? ' required' : '';
@@ -117,6 +118,38 @@ function renderMultiselect(f, value) {
117
118
  function renderArrayField(f, value) {
118
119
  return `<div class="array-field"><label class="form-field"><span>${escapeHtml(f.label ?? f.name)}</span></label><input type="hidden" name="${escapeHtml(f.name)}" value="${escapeHtml(value)}"><div class="array-rows" data-field="${escapeHtml(f.name)}"></div><button type="button" class="array-add" data-field="${escapeHtml(f.name)}">+ Add row</button></div>`;
119
120
  }
121
+ /** JSON.parse boundary for blocks field value — sync equivalent of safeJsonParse. */
122
+ function parseBlocksJson(value) {
123
+ if (!value)
124
+ return [];
125
+ try {
126
+ return JSON.parse(value);
127
+ }
128
+ catch {
129
+ return [];
130
+ }
131
+ }
132
+ function renderBlocksField(f, value) {
133
+ const blocks = parseBlocksJson(value);
134
+ const blockDefs = 'blocks' in f ? f.blocks : [];
135
+ const blockOptions = blockDefs.map(b => {
136
+ const label = b.labels?.singular ?? b.slug;
137
+ return '<option value="' + escapeHtml(b.slug) + '">' + escapeHtml(label) + '</option>';
138
+ }).join('');
139
+ const blockFieldsets = blocks.map((block, i) => {
140
+ const def = blockDefs.find(b => b.slug === block.blockType);
141
+ if (!def)
142
+ return '';
143
+ const legend = def.labels?.singular ?? def.slug;
144
+ const fieldInputs = def.fields.map(child => {
145
+ const childVal = block[child.name] ?? '';
146
+ return renderFieldInput(child, childVal);
147
+ }).join('\n');
148
+ return '<fieldset class="blocks-item" data-block-index="' + i + '" data-block-type="' + escapeHtml(block.blockType ?? '') + '"><legend>' + escapeHtml(legend) + '</legend>' + fieldInputs + '<button type="button" class="blocks-remove">Remove</button></fieldset>';
149
+ }).join('\n');
150
+ const configJson = escapeHtml(JSON.stringify(blockDefs.map(b => ({ slug: b.slug, fields: b.fields.map(bf => ({ type: bf.type, name: bf.name })), labels: b.labels }))));
151
+ return '<div class="blocks-field" data-blocks-config="' + configJson + '"><label class="form-field"><span>' + escapeHtml(f.label ?? f.name) + '</span></label><input type="hidden" name="' + escapeHtml(f.name) + '" value="' + escapeHtml(value) + '">' + blockFieldsets + '<div class="blocks-add"><select class="blocks-type-select">' + blockOptions + '</select><button type="button" class="blocks-add-btn">+ Add block</button></div></div>';
152
+ }
120
153
  export function renderFieldInput(f, value, context) {
121
154
  const renderer = RENDERER_MAP[f.type];
122
155
  if (!renderer)
@@ -1 +1 @@
1
- {"version":3,"file":"field-renderers.js","sourceRoot":"","sources":["../../src/admin/field-renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field-renderers.js","sourceRoot":"","sources":["../../src/admin/field-renderers.ts"],"names":[],"mappings":"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"}
@@ -19,10 +19,10 @@ function parseFlash(encoded) {
19
19
  }
20
20
  function setFlashCookie(res, msg) {
21
21
  const value = serializeFlash(msg);
22
- res.setHeader('Set-Cookie', `cms_flash=${value}; Path=/admin; HttpOnly; SameSite=Strict; Max-Age=30`);
22
+ res.setHeader('Set-Cookie', `cms_flash=${value}; Path=/admin; HttpOnly; SameSite=Strict; Secure; Max-Age=30`);
23
23
  }
24
24
  function clearFlashCookie(res) {
25
- res.setHeader('Set-Cookie', 'cms_flash=; Path=/admin; HttpOnly; SameSite=Strict; Max-Age=0');
25
+ res.setHeader('Set-Cookie', 'cms_flash=; Path=/admin; HttpOnly; SameSite=Strict; Secure; Max-Age=0');
26
26
  }
27
27
  function readFlash(cookieHeader) {
28
28
  const raw = parseCookie(cookieHeader, 'cms_flash');
@@ -1 +1 @@
1
- {"version":3,"file":"flash.js","sourceRoot":"","sources":["../../src/admin/flash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO/C,SAAS,cAAc,CAAE,GAAiB;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,UAAU,CAAE,OAAe;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmC,CAAA;QACjE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAC/F,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;QAChD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAE,GAAmB,EAAE,GAAiB;IAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IACjC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,KAAK,sDAAsD,CAAC,CAAA;AACvG,CAAC;AAED,SAAS,gBAAgB,CAAE,GAAmB;IAC5C,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,+DAA+D,CAAC,CAAA;AAC9F,CAAC;AAED,SAAS,SAAS,CAAE,YAAoB;IACtC,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAClD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"flash.js","sourceRoot":"","sources":["../../src/admin/flash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO/C,SAAS,cAAc,CAAE,GAAiB;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,UAAU,CAAE,OAAe;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmC,CAAA;QACjE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAC/F,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;QAChD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAE,GAAmB,EAAE,GAAiB;IAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IACjC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,KAAK,8DAA8D,CAAC,CAAA;AAC/G,CAAC;AAED,SAAS,gBAAgB,CAAE,GAAmB;IAC5C,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,uEAAuE,CAAC,CAAA;AACtG,CAAC;AAED,SAAS,SAAS,CAAE,YAAoB;IACtC,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAClD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAA"}
@@ -5,6 +5,8 @@ interface LayoutArgs {
5
5
  readonly content: string;
6
6
  readonly collections: readonly CollectionConfig[];
7
7
  readonly toast?: FlashMessage | undefined;
8
+ readonly nonce?: string | undefined;
9
+ readonly headTags?: readonly string[] | undefined;
8
10
  }
9
11
  export declare function renderLayout(args: LayoutArgs): string;
10
12
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/admin/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,UAAU,UAAU;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAC1C;AAED,wBAAgB,YAAY,CAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CA4gBtD"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/admin/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,UAAU,UAAU;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CAClD;AAED,wBAAgB,YAAY,CAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CA2kBtD"}
@@ -1,3 +1,4 @@
1
+ import { CSP_NONCE_PLACEHOLDER } from '@valencets/core/server';
1
2
  import { escapeHtml } from './escape.js';
2
3
  import { renderToast } from './toast.js';
3
4
  export function renderLayout(args) {
@@ -13,6 +14,7 @@ export function renderLayout(args) {
13
14
  <meta charset="utf-8">
14
15
  <meta name="viewport" content="width=device-width, initial-scale=1">
15
16
  <title>${escapeHtml(args.title)} — Valence CMS</title>
17
+ ${(args.headTags ?? []).join('\n ')}
16
18
  <style>
17
19
  /* --- Primitive tokens (inlined from @valencets/ui) --- */
18
20
  :root {
@@ -414,6 +416,68 @@ export function renderLayout(args) {
414
416
  color: var(--val-color-text);
415
417
  }
416
418
 
419
+
420
+ /* --- Blocks field --- */
421
+ .blocks-field {
422
+ display: flex;
423
+ flex-direction: column;
424
+ gap: 0.75rem;
425
+ }
426
+ .blocks-item {
427
+ border: 1px solid var(--val-color-border);
428
+ border-radius: var(--val-radius-lg);
429
+ padding: 1rem;
430
+ display: flex;
431
+ flex-direction: column;
432
+ gap: 0.75rem;
433
+ }
434
+ .blocks-item legend {
435
+ font-size: var(--val-text-sm);
436
+ font-weight: var(--val-weight-semibold);
437
+ color: var(--val-color-text-muted);
438
+ padding: 0 0.5rem;
439
+ }
440
+ .blocks-remove {
441
+ align-self: flex-end;
442
+ background: none;
443
+ border: 1px solid var(--val-color-error);
444
+ border-radius: var(--val-radius-md);
445
+ padding: 0.25rem 0.5rem;
446
+ color: var(--val-color-error);
447
+ font-size: var(--val-text-xs);
448
+ cursor: pointer;
449
+ }
450
+ .blocks-remove:hover {
451
+ background: var(--val-color-error);
452
+ color: oklch(1 0 0);
453
+ }
454
+ .blocks-add {
455
+ display: flex;
456
+ gap: 0.5rem;
457
+ align-items: center;
458
+ }
459
+ .blocks-type-select {
460
+ background: var(--val-color-bg-muted);
461
+ border: 1px solid var(--val-color-border);
462
+ border-radius: var(--val-radius-md);
463
+ padding: 0.375rem 0.75rem;
464
+ color: var(--val-color-text);
465
+ font-size: var(--val-text-sm);
466
+ }
467
+ .blocks-add-btn {
468
+ background: var(--val-color-bg-muted);
469
+ border: 1px dashed var(--val-color-border);
470
+ border-radius: var(--val-radius-md);
471
+ padding: 0.375rem 0.75rem;
472
+ color: var(--val-color-text-muted);
473
+ font-size: var(--val-text-sm);
474
+ cursor: pointer;
475
+ }
476
+ .blocks-add-btn:hover {
477
+ border-color: var(--val-blue-500);
478
+ color: var(--val-color-text);
479
+ }
480
+
417
481
  /* --- Edit meta + revisions --- */
418
482
  .edit-meta {
419
483
  margin-top: 1rem;
@@ -509,7 +573,7 @@ ${navItems}
509
573
  ${args.content}
510
574
  </main>
511
575
  ${toastHtml
512
- ? `<script>
576
+ ? `<script${args.nonce ? ` nonce="${args.nonce}"` : ' nonce="' + CSP_NONCE_PLACEHOLDER + '"'}>
513
577
  (function () {
514
578
  var t = document.querySelector('.toast')
515
579
  if (!t) return
@@ -519,7 +583,7 @@ ${navItems}
519
583
  })()
520
584
  </script>`
521
585
  : ''}
522
- <script src="/admin/_assets/admin-client.js" defer></script>
586
+ <script src="/admin/_assets/admin-client.js"${args.nonce ? ` nonce="${args.nonce}"` : ' nonce="' + CSP_NONCE_PLACEHOLDER + '"'} defer></script>
523
587
  </body>
524
588
  </html>`;
525
589
  }
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/admin/layout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AASxC,MAAM,UAAU,YAAY,CAAE,IAAgB;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QACpD,OAAO,uBAAuB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAA;IACvE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,MAAM,QAAQ,GAAG,aAAa,GAAG,uJAAuJ,CAAA;IAExL,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE3D,OAAO;;;;;WAKE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwe/B,QAAQ;;;;MAIJ,SAAS;UACL,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;MAC1B,IAAI,CAAC,OAAO;;IAEd,SAAS;QACT,CAAC,CAAC;;;;;;;;YAQM;QACR,CAAC,CAAC,EAAE;;;QAGA,CAAA;AACR,CAAC"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/admin/layout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAWxC,MAAM,UAAU,YAAY,CAAE,IAAgB;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;QACpD,OAAO,uBAAuB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAA;IACvE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,MAAM,QAAQ,GAAG,aAAa,GAAG,uJAAuJ,CAAA;IAExL,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE3D,OAAO;;;;;WAKE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsiBpC,QAAQ;;;;MAIJ,SAAS;UACL,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;MAC1B,IAAI,CAAC,OAAO;;IAEd,SAAS;QACT,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,qBAAqB,GAAG,GAAG;;;;;;;;YAQpF;QACR,CAAC,CAAC,EAAE;gDACwC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,qBAAqB,GAAG,GAAG;;QAExH,CAAA;AACR,CAAC"}
@@ -1,8 +1,23 @@
1
1
  import type { CollectionConfig } from '../schema/collection.js';
2
- interface DocRow {
2
+ export interface DocumentRow {
3
3
  readonly id: string;
4
4
  readonly [key: string]: string | number | boolean | null;
5
5
  }
6
- export declare function renderListView(col: CollectionConfig, docs: readonly DocRow[]): string;
7
- export {};
6
+ export interface ListViewPagination {
7
+ readonly totalDocs: number;
8
+ readonly page: number;
9
+ readonly totalPages: number;
10
+ readonly hasNextPage: boolean;
11
+ readonly hasPrevPage: boolean;
12
+ }
13
+ export interface ListViewArgs {
14
+ readonly col: CollectionConfig;
15
+ readonly docs: readonly DocumentRow[];
16
+ readonly pagination?: ListViewPagination | undefined;
17
+ readonly query?: string | undefined;
18
+ readonly sort?: string | undefined;
19
+ readonly dir?: 'asc' | 'desc' | undefined;
20
+ readonly filters?: Record<string, string> | undefined;
21
+ }
22
+ export declare function renderListView(args: ListViewArgs): string;
8
23
  //# sourceMappingURL=list-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-view.d.ts","sourceRoot":"","sources":["../../src/admin/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,UAAU,MAAM;IACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CACzD;AAED,wBAAgB,cAAc,CAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAyBtF"}
1
+ {"version":3,"file":"list-view.d.ts","sourceRoot":"","sources":["../../src/admin/list-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAI/D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CACzD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,CAAA;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;CACtD;AAgID,wBAAgB,cAAc,CAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAyB1D"}
@@ -1,25 +1,151 @@
1
1
  import { escapeHtml } from './escape.js';
2
- export function renderListView(col, docs) {
3
- const label = escapeHtml(col.labels?.plural ?? col.slug);
4
- if (docs.length === 0) {
5
- return `<div class="empty-state"><p>No ${label} found.</p><a href="/admin/${escapeHtml(col.slug)}/new">Create one</a></div>`;
2
+ function baseParams(args) {
3
+ const p = {};
4
+ if (args.query)
5
+ p.q = args.query;
6
+ if (args.sort)
7
+ p.sort = args.sort;
8
+ if (args.dir)
9
+ p.dir = args.dir;
10
+ if (args.filters) {
11
+ for (const [k, v] of Object.entries(args.filters)) {
12
+ if (v)
13
+ p[k] = v;
14
+ }
15
+ }
16
+ return p;
17
+ }
18
+ function buildQuery(base, overrides) {
19
+ const merged = { ...base };
20
+ for (const [k, v] of Object.entries(overrides)) {
21
+ if (v !== '')
22
+ merged[k] = v;
23
+ else
24
+ delete merged[k];
25
+ }
26
+ return new URLSearchParams(merged).toString();
27
+ }
28
+ function renderSearchBar(args) {
29
+ const val = escapeHtml(args.query ?? '');
30
+ return `<form method="GET" class="list-search">
31
+ <input type="search" name="q" value="${val}" placeholder="Search\u2026" class="form-input">
32
+ <button type="submit" class="btn btn-primary">Search</button>
33
+ </form>`;
34
+ }
35
+ function sortLink(args, fieldName, label) {
36
+ const isActive = args.sort === fieldName;
37
+ const nextDir = isActive && args.dir === 'asc' ? 'desc' : 'asc';
38
+ const arrow = isActive ? (args.dir === 'asc' ? ' \u25b2' : ' \u25bc') : '';
39
+ const base = baseParams(args);
40
+ const qs = buildQuery(base, { sort: fieldName, dir: nextDir });
41
+ return `<a href="?${qs}">${escapeHtml(label)}${arrow}</a>`;
42
+ }
43
+ function renderSelectFilter(args, f) {
44
+ const name = `filter_${f.name}`;
45
+ const current = args.filters?.[name] ?? '';
46
+ const options = f.options.map(o => {
47
+ const sel = current === o.value ? ' selected' : '';
48
+ return `<option value="${escapeHtml(o.value)}"${sel}>${escapeHtml(o.label)}</option>`;
49
+ }).join('');
50
+ return `<label class="list-filter-label">${escapeHtml(f.label ?? f.name)}
51
+ <select name="${name}" class="form-select" onchange="this.form.submit()">
52
+ <option value="">All</option>
53
+ ${options}
54
+ </select>
55
+ </label>`;
56
+ }
57
+ function renderBooleanFilter(args, f) {
58
+ const name = `filter_${f.name}`;
59
+ const current = args.filters?.[name] ?? '';
60
+ const base = baseParams(args);
61
+ const allQs = buildQuery(base, { [name]: '' });
62
+ const trueQs = buildQuery(base, { [name]: 'true' });
63
+ const falseQs = buildQuery(base, { [name]: 'false' });
64
+ const allClass = current === '' ? ' filter-active' : '';
65
+ const trueClass = current === 'true' ? ' filter-active' : '';
66
+ const falseClass = current === 'false' ? ' filter-active' : '';
67
+ const label = escapeHtml(f.label ?? f.name);
68
+ return `<span class="list-filter-label">${label}:
69
+ <a href="?${allQs}" class="filter-link${allClass}">All</a>
70
+ <a href="?${trueQs}" class="filter-link${trueClass}">Yes</a>
71
+ <a href="?${falseQs}" class="filter-link${falseClass}">No</a>
72
+ </span>`;
73
+ }
74
+ function renderFilters(args) {
75
+ const parts = [];
76
+ for (const f of args.col.fields) {
77
+ if (f.type === 'select')
78
+ parts.push(renderSelectFilter(args, f));
79
+ if (f.type === 'boolean')
80
+ parts.push(renderBooleanFilter(args, f));
81
+ }
82
+ if (parts.length === 0)
83
+ return '';
84
+ return `<form method="GET" class="list-filters">${parts.join('\n')}</form>`;
85
+ }
86
+ function paginationLink(label, page, args, disabled) {
87
+ if (disabled) {
88
+ return `<span class="pagination-link" aria-disabled="true">${escapeHtml(label)}</span>`;
6
89
  }
90
+ const base = baseParams(args);
91
+ const qs = buildQuery(base, { page: String(page) });
92
+ return `<a href="?${qs}" class="pagination-link">${escapeHtml(label)}</a>`;
93
+ }
94
+ function renderPagination(args) {
95
+ const p = args.pagination;
96
+ if (p === undefined || p.totalPages <= 1)
97
+ return '';
98
+ const first = paginationLink('First', 1, args, !p.hasPrevPage);
99
+ const prev = paginationLink('Prev', p.page - 1, args, !p.hasPrevPage);
100
+ const next = paginationLink('Next', p.page + 1, args, !p.hasNextPage);
101
+ const last = paginationLink('Last', p.totalPages, args, !p.hasNextPage);
102
+ return `<nav class="pagination">
103
+ ${first}
104
+ ${prev}
105
+ <span class="pagination-info">Page ${p.page} of ${p.totalPages}</span>
106
+ ${next}
107
+ ${last}
108
+ </nav>`;
109
+ }
110
+ function renderTable(args) {
111
+ const { col, docs } = args;
7
112
  const displayFields = col.fields.slice(0, 3);
8
- const headerCells = displayFields.map(f => `<th>${escapeHtml(f.label ?? f.name)}</th>`).join('');
113
+ const headerCells = displayFields.map(f => {
114
+ const label = f.label ?? f.name;
115
+ return `<th>${sortLink(args, f.name, label)}</th>`;
116
+ }).join('');
9
117
  const rows = docs.map(doc => {
10
118
  const cells = displayFields.map(f => `<td>${escapeHtml(String(doc[f.name] ?? ''))}</td>`).join('');
11
119
  const safeId = escapeHtml(doc.id);
12
120
  const safeSlug = escapeHtml(col.slug);
13
121
  return `<tr><td><a href="/admin/${safeSlug}/${safeId}/edit">${safeId.slice(0, 8)}\u2026</a></td>${cells}<td class="actions-cell"><a href="/admin/${safeSlug}/${safeId}/edit" class="action-link">Edit</a></td></tr>`;
14
122
  }).join('\n');
15
- return `
16
- <div class="list-header">
17
- <span></span>
18
- <a href="/admin/${escapeHtml(col.slug)}/new" class="btn btn-primary">New ${escapeHtml(col.labels?.singular ?? col.slug)}</a>
19
- </div>
20
- <table>
123
+ return `<table>
21
124
  <thead><tr><th>ID</th>${headerCells}<th>Actions</th></tr></thead>
22
125
  <tbody>${rows}</tbody>
23
126
  </table>`;
24
127
  }
128
+ export function renderListView(args) {
129
+ const { col, docs } = args;
130
+ const label = escapeHtml(col.labels?.plural ?? col.slug);
131
+ const safeSlug = escapeHtml(col.slug);
132
+ const singularLabel = escapeHtml(col.labels?.singular ?? col.slug);
133
+ if (docs.length === 0 && !args.query && !args.filters) {
134
+ return `<div class="empty-state"><p>No ${label} found.</p><a href="/admin/${safeSlug}/new">Create one</a></div>`;
135
+ }
136
+ const searchBar = renderSearchBar(args);
137
+ const filters = renderFilters(args);
138
+ const table = docs.length === 0
139
+ ? `<div class="empty-state"><p>No ${label} found.</p></div>`
140
+ : renderTable(args);
141
+ const pagination = renderPagination(args);
142
+ return `
143
+ <div class="list-header">
144
+ ${searchBar}
145
+ <a href="/admin/${safeSlug}/new" class="btn btn-primary">New ${singularLabel}</a>
146
+ </div>
147
+ ${filters}
148
+ ${table}
149
+ ${pagination}`;
150
+ }
25
151
  //# sourceMappingURL=list-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-view.js","sourceRoot":"","sources":["../../src/admin/list-view.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAOxC,MAAM,UAAU,cAAc,CAAE,GAAqB,EAAE,IAAuB;IAC5E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;IAExD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,kCAAkC,KAAK,8BAA8B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAA;IAC9H,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC1B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClG,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,2BAA2B,QAAQ,IAAI,MAAM,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,KAAK,4CAA4C,QAAQ,IAAI,MAAM,+CAA+C,CAAA;IACtN,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;;;oBAGW,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,qCAAqC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC;;;0BAG/F,WAAW;WAC1B,IAAI;SACN,CAAA;AACT,CAAC"}
1
+ {"version":3,"file":"list-view.js","sourceRoot":"","sources":["../../src/admin/list-view.ts"],"names":[],"mappings":"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"}