@xiwebdesign/xicms-core 7.23.0 → 7.25.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 (105) hide show
  1. package/dist/admin/AdminApp.js +2 -1
  2. package/dist/admin/AdminApp.js.map +1 -1
  3. package/dist/admin/CoreVersion.d.ts +6 -0
  4. package/dist/admin/CoreVersion.js +42 -1
  5. package/dist/admin/CoreVersion.js.map +1 -1
  6. package/dist/admin/SuperadminPanel.js +19 -3
  7. package/dist/admin/SuperadminPanel.js.map +1 -1
  8. package/dist/admin/dashboard/DashboardPanel.js +46 -9
  9. package/dist/admin/dashboard/DashboardPanel.js.map +1 -1
  10. package/dist/admin/forms/FormsPanel.d.ts +9 -0
  11. package/dist/admin/forms/FormsPanel.js +102 -16
  12. package/dist/admin/forms/FormsPanel.js.map +1 -1
  13. package/dist/admin/forms/gezien.d.ts +3 -0
  14. package/dist/admin/forms/gezien.js +22 -0
  15. package/dist/admin/forms/gezien.js.map +1 -0
  16. package/dist/admin/lib/kleur.d.ts +32 -0
  17. package/dist/admin/lib/kleur.js +60 -0
  18. package/dist/admin/lib/kleur.js.map +1 -0
  19. package/dist/admin/lib/pagesClient.d.ts +32 -0
  20. package/dist/admin/lib/pagesClient.js +60 -1
  21. package/dist/admin/lib/pagesClient.js.map +1 -1
  22. package/dist/admin/lib/seoHulp.d.ts +28 -0
  23. package/dist/admin/lib/seoHulp.js +33 -0
  24. package/dist/admin/lib/seoHulp.js.map +1 -0
  25. package/dist/admin/media/MediaManager.js +133 -51
  26. package/dist/admin/media/MediaManager.js.map +1 -1
  27. package/dist/admin/pages/PageEditor.d.ts +14 -0
  28. package/dist/admin/pages/PageEditor.js +192 -123
  29. package/dist/admin/pages/PageEditor.js.map +1 -1
  30. package/dist/admin/pages/PagesPanel.js +88 -40
  31. package/dist/admin/pages/PagesPanel.js.map +1 -1
  32. package/dist/admin/settings/SettingsPanel.js +100 -19
  33. package/dist/admin/settings/SettingsPanel.js.map +1 -1
  34. package/dist/admin/shop/OrdersTab.js +171 -3
  35. package/dist/admin/shop/OrdersTab.js.map +1 -1
  36. package/dist/admin/shop/ProductsTab.js +1 -1
  37. package/dist/admin/shop/ProductsTab.js.map +1 -1
  38. package/dist/admin/shop/ShopPanel.js +5 -2
  39. package/dist/admin/shop/ShopPanel.js.map +1 -1
  40. package/dist/admin/stats/StatsPanel.js +30 -2
  41. package/dist/admin/stats/StatsPanel.js.map +1 -1
  42. package/dist/admin/stats/lib.d.ts +14 -1
  43. package/dist/admin/stats/lib.js +46 -2
  44. package/dist/admin/stats/lib.js.map +1 -1
  45. package/dist/admin/visual/VisualEditor.js +80 -4
  46. package/dist/admin/visual/VisualEditor.js.map +1 -1
  47. package/dist/admin.css +1 -1
  48. package/dist/blocks/builtins/FormBlockRender.js +8 -2
  49. package/dist/blocks/builtins/FormBlockRender.js.map +1 -1
  50. package/dist/blocks/builtins/lib/submitForm.d.ts +3 -1
  51. package/dist/blocks/builtins/lib/submitForm.js +2 -2
  52. package/dist/blocks/builtins/lib/submitForm.js.map +1 -1
  53. package/dist/components/EditBar.d.ts +3 -1
  54. package/dist/components/EditBar.js +30 -4
  55. package/dist/components/EditBar.js.map +1 -1
  56. package/dist/components/News.js +8 -4
  57. package/dist/components/News.js.map +1 -1
  58. package/dist/components/PageView.d.ts +5 -0
  59. package/dist/components/PageView.js +24 -2
  60. package/dist/components/PageView.js.map +1 -1
  61. package/dist/components/ResponsiveImage.d.ts +1 -1
  62. package/dist/components/ResponsiveImage.js +3 -1
  63. package/dist/components/ResponsiveImage.js.map +1 -1
  64. package/dist/components/site/SiteNav.d.ts +29 -0
  65. package/dist/components/site/SiteNav.js +82 -0
  66. package/dist/components/site/SiteNav.js.map +1 -0
  67. package/dist/content/types.d.ts +8 -0
  68. package/dist/index.d.ts +3 -1
  69. package/dist/index.js +8 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/media/ImageContext.d.ts +1 -6
  72. package/dist/media/ImageContext.js +6 -1
  73. package/dist/media/ImageContext.js.map +1 -1
  74. package/dist/releaseNotes.d.ts +15 -0
  75. package/dist/releaseNotes.js +28 -0
  76. package/dist/releaseNotes.js.map +1 -0
  77. package/dist/schema/mail.d.ts +20 -0
  78. package/dist/schema/mail.js +14 -0
  79. package/dist/schema/mail.js.map +1 -1
  80. package/dist/schema/settings.d.ts +105 -0
  81. package/dist/schema/settings.js +45 -5
  82. package/dist/schema/settings.js.map +1 -1
  83. package/dist/schema/shop.d.ts +2 -0
  84. package/dist/schema/shop.js +12 -2
  85. package/dist/schema/shop.js.map +1 -1
  86. package/dist/schema/siteConfig.d.ts +9 -0
  87. package/dist/server/blockData.js +6 -2
  88. package/dist/server/blockData.js.map +1 -1
  89. package/dist/server/draft.d.ts +11 -0
  90. package/dist/server/draft.js +20 -1
  91. package/dist/server/draft.js.map +1 -1
  92. package/dist/server/index.d.ts +3 -1
  93. package/dist/server/index.js +7 -1
  94. package/dist/server/index.js.map +1 -1
  95. package/dist/server/pages.js +4 -1
  96. package/dist/server/pages.js.map +1 -1
  97. package/dist/server/previewToken.d.ts +34 -0
  98. package/dist/server/previewToken.js +44 -0
  99. package/dist/server/previewToken.js.map +1 -0
  100. package/dist/server/redirects.d.ts +15 -0
  101. package/dist/server/redirects.js +15 -0
  102. package/dist/server/redirects.js.map +1 -0
  103. package/dist/styles.css +110 -0
  104. package/dist/version.js +1 -1
  105. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+ import "server-only";
2
+ import { zoekRedirect } from "../schema/settings.js";
3
+ import { getPublicSiteSettings } from "./pages.js";
4
+ async function resolveRedirect(siteId, path) {
5
+ try {
6
+ const settings = await getPublicSiteSettings(siteId);
7
+ return zoekRedirect(path, settings?.redirects);
8
+ } catch {
9
+ return null;
10
+ }
11
+ }
12
+ export {
13
+ resolveRedirect
14
+ };
15
+ //# sourceMappingURL=redirects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/redirects.ts"],"sourcesContent":["import \"server-only\";\n\nimport { zoekRedirect } from \"../schema/settings\";\nimport { getPublicSiteSettings } from \"./pages\";\n\n/**\n * Doorverwijzing voor een pad (7.24) — voor de catch-all van de klantsite.\n *\n * Wijzigt een klant het pad van een pagina, dan bewaart het beheer automatisch `oud → nieuw` in\n * `settings.redirects` (publiek, dus bundle-first/tagged gecached zoals de rest van de settings).\n * De route roept dit aan vlak vóór `notFound()`:\n *\n * const doel = await resolveRedirect(siteConfig.siteId, path);\n * if (doel) permanentRedirect(doel);\n *\n * Kost niets extra: de publieke settings staan toch al in de servercache voor thema/nav/footer.\n * Alleen intern (paden), nooit naar buiten — zie RedirectSchema.\n */\nexport async function resolveRedirect(siteId: string, path: string): Promise<string | null> {\n try {\n const settings = await getPublicSiteSettings(siteId);\n return zoekRedirect(path, settings?.redirects);\n } catch {\n return null; // een hik in de settings mag nooit een 500 worden op een gewone pagina\n }\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AAetC,eAAsB,gBAAgB,QAAgB,MAAsC;AAC1F,MAAI;AACF,UAAM,WAAW,MAAM,sBAAsB,MAAM;AACnD,WAAO,aAAa,MAAM,UAAU,SAAS;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}
package/dist/styles.css CHANGED
@@ -3426,3 +3426,113 @@
3426
3426
  font-size: 0.8rem;
3427
3427
  opacity: 0.9;
3428
3428
  }
3429
+
3430
+
3431
+ /* ── Hoofdnavigatie (SiteNav, 7.24) ───────────────────────────────────────────
3432
+ * Unstyled-by-default: alleen de structuur die een submenu nodig heeft. Kleuren/afstanden komen
3433
+ * uit de site zelf (.site-header nav a in de template) of uit een eigen `.xicms-nav`-laag. */
3434
+ .xicms-nav__list,
3435
+ .xicms-nav__sub {
3436
+ list-style: none;
3437
+ margin: 0;
3438
+ padding: 0;
3439
+ }
3440
+ .xicms-nav__list {
3441
+ display: flex;
3442
+ flex-wrap: wrap;
3443
+ align-items: center;
3444
+ gap: 1rem;
3445
+ }
3446
+ .xicms-nav__item {
3447
+ position: relative;
3448
+ }
3449
+ .xicms-nav__pair {
3450
+ display: inline-flex;
3451
+ align-items: center;
3452
+ gap: 0.15rem;
3453
+ }
3454
+ .xicms-nav__toggle {
3455
+ appearance: none;
3456
+ display: inline-grid;
3457
+ place-items: center;
3458
+ width: 1.6rem;
3459
+ height: 1.6rem;
3460
+ border: 0;
3461
+ border-radius: 999px;
3462
+ background: transparent;
3463
+ color: inherit;
3464
+ cursor: pointer;
3465
+ transition: transform 0.15s, background 0.15s;
3466
+ }
3467
+ .xicms-nav__toggle:hover,
3468
+ .xicms-nav__toggle:focus-visible {
3469
+ background: color-mix(in srgb, currentColor 10%, transparent);
3470
+ outline: none;
3471
+ }
3472
+ .xicms-nav__toggle:focus-visible {
3473
+ box-shadow: 0 0 0 2px var(--xicms-primary, #4f46e5);
3474
+ }
3475
+ .xicms-nav__item--sub.is-open > .xicms-nav__pair .xicms-nav__toggle {
3476
+ transform: rotate(180deg);
3477
+ }
3478
+ .xicms-nav__sub {
3479
+ position: absolute;
3480
+ top: calc(100% + 0.5rem);
3481
+ left: 0;
3482
+ z-index: 30;
3483
+ min-width: 12rem;
3484
+ display: grid;
3485
+ gap: 0.15rem;
3486
+ padding: 0.4rem;
3487
+ border-radius: var(--xicms-radius-md, 12px);
3488
+ background: var(--color-background-card, var(--color-background-body, #fff));
3489
+ color: var(--color-text-primary, #0f172a);
3490
+ border: 1px solid var(--color-border, rgba(0, 0, 0, 0.08));
3491
+ box-shadow: 0 12px 32px rgba(15, 23, 42, 0.14);
3492
+ }
3493
+ .xicms-nav__sub[hidden] {
3494
+ display: none;
3495
+ }
3496
+ .xicms-nav__sublink {
3497
+ display: block;
3498
+ padding: 0.45rem 0.7rem;
3499
+ border-radius: 8px;
3500
+ text-decoration: none;
3501
+ color: inherit;
3502
+ white-space: nowrap;
3503
+ }
3504
+ .xicms-nav__sublink:hover,
3505
+ .xicms-nav__sublink:focus-visible {
3506
+ background: color-mix(in srgb, var(--xicms-primary, #4f46e5) 10%, transparent);
3507
+ outline: none;
3508
+ }
3509
+ /* Smal scherm: het submenu klapt in de flow uit i.p.v. te zweven — zwevend valt hij buiten beeld
3510
+ * of onder een hamburger-laag van de site. */
3511
+ @media (max-width: 720px) {
3512
+ .xicms-nav__sub {
3513
+ position: static;
3514
+ box-shadow: none;
3515
+ border: 0;
3516
+ padding: 0.2rem 0 0.2rem 0.8rem;
3517
+ background: transparent;
3518
+ min-width: 0;
3519
+ }
3520
+ }
3521
+
3522
+ /* ── "Nog niet live"-stip op de beheerbalk (7.24) ────────────────────────────
3523
+ * Een werkversie die afwijkt van wat er live staat, kreeg buiten de editor nergens een signaal.
3524
+ * Dit stipje op "Bewerken" zegt: hier ligt nog iets dat niemand ziet. */
3525
+ .xicms-editbar__btn.heeft-wijzigingen {
3526
+ position: relative;
3527
+ }
3528
+ .xicms-editbar__btn.heeft-wijzigingen::after {
3529
+ content: "";
3530
+ position: absolute;
3531
+ top: 4px;
3532
+ right: 6px;
3533
+ width: 8px;
3534
+ height: 8px;
3535
+ border-radius: 999px;
3536
+ background: #f59e0b;
3537
+ box-shadow: 0 0 0 2px #0f172a;
3538
+ }
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const CORE_VERSION = true ? "7.23.0" : "0.0.0-dev";
1
+ const CORE_VERSION = true ? "7.25.0" : "0.0.0-dev";
2
2
  const CORE_PACKAGE = "@xiwebdesign/xicms-core";
3
3
  function isNieuwer(beschikbaar, huidig) {
4
4
  const delen = (v) => v.split("-")[0].split(".").map((n) => Number.parseInt(n, 10) || 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiwebdesign/xicms-core",
3
- "version": "7.23.0",
3
+ "version": "7.25.0",
4
4
  "description": "XiCMS engine: gestructureerde content, pagina's, draft/publish, admin (TipTap+Radix), SEO en beveiliging voor klantsites.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {