@kywi-software/core 0.6.1 → 0.6.3

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 (80) hide show
  1. package/README.md +23 -5
  2. package/dist/admin/layout-editor/column-overlay.d.ts +14 -1
  3. package/dist/admin/layout-editor/column-overlay.d.ts.map +1 -1
  4. package/dist/admin/layout-editor/column-overlay.js +5 -2
  5. package/dist/admin/layout-editor/column-overlay.js.map +1 -1
  6. package/dist/admin/layout-editor/editor-canvas.d.ts +34 -1
  7. package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
  8. package/dist/admin/layout-editor/editor-canvas.js +156 -16
  9. package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
  10. package/dist/admin/layout-editor/editor-state.d.ts +57 -2
  11. package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
  12. package/dist/admin/layout-editor/editor-state.js +125 -53
  13. package/dist/admin/layout-editor/editor-state.js.map +1 -1
  14. package/dist/admin/layout-editor/editor.css +487 -44
  15. package/dist/admin/layout-editor/index.d.ts +1 -1
  16. package/dist/admin/layout-editor/index.d.ts.map +1 -1
  17. package/dist/admin/layout-editor/index.js.map +1 -1
  18. package/dist/admin/layout-editor/inline-text.d.ts +44 -0
  19. package/dist/admin/layout-editor/inline-text.d.ts.map +1 -0
  20. package/dist/admin/layout-editor/inline-text.js +67 -0
  21. package/dist/admin/layout-editor/inline-text.js.map +1 -0
  22. package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
  23. package/dist/admin/layout-editor/layout-editor.js +23 -31
  24. package/dist/admin/layout-editor/layout-editor.js.map +1 -1
  25. package/dist/admin/layout-editor/module-overlay.d.ts +32 -1
  26. package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
  27. package/dist/admin/layout-editor/module-overlay.js +108 -6
  28. package/dist/admin/layout-editor/module-overlay.js.map +1 -1
  29. package/dist/admin/layout-editor/node-lookup.d.ts +94 -0
  30. package/dist/admin/layout-editor/node-lookup.d.ts.map +1 -0
  31. package/dist/admin/layout-editor/node-lookup.js +142 -0
  32. package/dist/admin/layout-editor/node-lookup.js.map +1 -0
  33. package/dist/admin/layout-editor/overlay-shell.d.ts +19 -1
  34. package/dist/admin/layout-editor/overlay-shell.d.ts.map +1 -1
  35. package/dist/admin/layout-editor/overlay-shell.js +177 -69
  36. package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
  37. package/dist/admin/layout-editor/props-panel.d.ts +9 -2
  38. package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
  39. package/dist/admin/layout-editor/props-panel.js +13 -5
  40. package/dist/admin/layout-editor/props-panel.js.map +1 -1
  41. package/dist/admin/layout-editor/region-overlay.d.ts +8 -1
  42. package/dist/admin/layout-editor/region-overlay.d.ts.map +1 -1
  43. package/dist/admin/layout-editor/region-overlay.js +4 -1
  44. package/dist/admin/layout-editor/region-overlay.js.map +1 -1
  45. package/dist/admin/layout-editor/section-insert-line.d.ts +7 -1
  46. package/dist/admin/layout-editor/section-insert-line.d.ts.map +1 -1
  47. package/dist/admin/layout-editor/section-insert-line.js +4 -1
  48. package/dist/admin/layout-editor/section-insert-line.js.map +1 -1
  49. package/dist/admin/layout-editor/section-overlay.d.ts +13 -1
  50. package/dist/admin/layout-editor/section-overlay.d.ts.map +1 -1
  51. package/dist/admin/layout-editor/section-overlay.js +24 -12
  52. package/dist/admin/layout-editor/section-overlay.js.map +1 -1
  53. package/dist/admin/layout-editor/section-variant-container-config.d.ts +29 -0
  54. package/dist/admin/layout-editor/section-variant-container-config.d.ts.map +1 -0
  55. package/dist/admin/layout-editor/section-variant-container-config.js +82 -0
  56. package/dist/admin/layout-editor/section-variant-container-config.js.map +1 -0
  57. package/dist/admin/styles/admin.css +5 -2
  58. package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -1
  59. package/dist/admin/surfaces/content/content-edit.js +8 -1
  60. package/dist/admin/surfaces/content/content-edit.js.map +1 -1
  61. package/dist/db/content-queries.d.ts +35 -0
  62. package/dist/db/content-queries.d.ts.map +1 -1
  63. package/dist/db/content-queries.js +175 -36
  64. package/dist/db/content-queries.js.map +1 -1
  65. package/dist/nav/index.d.ts +1 -1
  66. package/dist/nav/index.d.ts.map +1 -1
  67. package/dist/nav/index.js +4 -1
  68. package/dist/nav/index.js.map +1 -1
  69. package/dist/nav/url-resolver.d.ts +27 -0
  70. package/dist/nav/url-resolver.d.ts.map +1 -1
  71. package/dist/nav/url-resolver.js +36 -1
  72. package/dist/nav/url-resolver.js.map +1 -1
  73. package/dist/scope/edit-mode-hooks.d.ts.map +1 -1
  74. package/dist/scope/edit-mode-hooks.js +27 -1
  75. package/dist/scope/edit-mode-hooks.js.map +1 -1
  76. package/dist/scope/inline-editing.d.ts.map +1 -1
  77. package/dist/scope/inline-editing.js +2 -1
  78. package/dist/scope/inline-editing.js.map +1 -1
  79. package/dist/site/styles.css +334 -0
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"edit-mode-hooks.js","sourceRoot":"","sources":["../../src/scope/edit-mode-hooks.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAmB7C,MAAM,UAAU,eAAe,CAC7B,OAAoD,EAAE;IAEtD,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,IAAI,CAAA;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IACtE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IAC3D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC5E,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,YAAoB,EACpB,MAAuD;IAEvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAChD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC1B,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AAC5C,CAAC"}
1
+ {"version":3,"file":"edit-mode-hooks.js","sourceRoot":"","sources":["../../src/scope/edit-mode-hooks.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AACZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAmBxD,MAAM,UAAU,GAAG,WAAW,CAAA;AAE9B,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,0CAA0C;AAC1C,SAAS,iBAAiB,CAAC,UAAmB;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAM;IACzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAA;IACzD,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAM;IACnC,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IACvC,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAoD,EAAE;IAEtD,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,IAAI,CAAA;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IACtE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC5E,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,YAAoB,EACpB,MAAuD;IAEvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAChD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC1B,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AAC5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"inline-editing.d.ts","sourceRoot":"","sources":["../../src/scope/inline-editing.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAIxC,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAA;AAE5D,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,IAAI,EAAE,gBAAgB,CAAA;IACtB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CAYjD;AAID,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAA;IACd,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,SAAS,EACT,QAAQ,GACT,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CAO9C;AAID,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAA;IACnB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;IAChB,0DAA0D;IAC1D,UAAU,EAAE,OAAO,CAAA;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAYD,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,GACV,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAsDlD"}
1
+ {"version":3,"file":"inline-editing.d.ts","sourceRoot":"","sources":["../../src/scope/inline-editing.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAIxC,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAA;AAE5D,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,IAAI,EAAE,gBAAgB,CAAA;IACtB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CAYjD;AAID,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAA;IACd,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,SAAS,EACT,QAAQ,GACT,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CAO9C;AAID,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAA;IACnB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;IAChB,0DAA0D;IAC1D,UAAU,EAAE,OAAO,CAAA;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAYD,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,GACV,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8DlD"}
@@ -49,6 +49,7 @@ export function KywiEditToolbar({ isEditMode, canEdit, canPublish, onToggleEdit,
49
49
  if (!canEdit)
50
50
  return null;
51
51
  const cls = ['kywi-edit-toolbar', className].filter(Boolean).join(' ');
52
- return (_jsx("div", { className: cls, role: "toolbar", "aria-label": "Edit controls", children: isEditMode ? (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "kywi-edit-toolbar-done", onClick: onToggleEdit, children: "Done" }), canPublish && (_jsx("button", { type: "button", className: "kywi-edit-toolbar-publish", onClick: onPublish, children: "Publish" }))] })) : (_jsxs(_Fragment, { children: [pageStatus && (_jsxs("span", { className: "kywi-edit-toolbar-status", children: [_jsx("span", { className: "kywi-edit-toolbar-status-dot" }), pageStatus.charAt(0).toUpperCase() + pageStatus.slice(1)] })), pageTitle && _jsx("span", { className: "kywi-edit-toolbar-title", children: pageTitle }), _jsx("span", { className: "kywi-edit-toolbar-spacer" }), adminHref && (_jsx("a", { className: "kywi-edit-toolbar-link", href: adminHref, children: "Admin" })), _jsx("button", { type: "button", className: "kywi-edit-toolbar-edit", onClick: onToggleEdit, children: "Edit Page" })] })) }));
52
+ return (_jsxs("div", { className: cls, role: "toolbar", "aria-label": "Edit controls", children: [_jsx("span", { className: "kywi-edit-toolbar-mark", "aria-hidden": "true", children: "Kywi" }), isEditMode ? (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "kywi-edit-toolbar-done", onClick: onToggleEdit, children: "Done" }), canPublish && (_jsx("button", { type: "button", className: "kywi-edit-toolbar-publish", onClick: onPublish, children: "Publish" }))] })) : (_jsxs(_Fragment, { children: [pageStatus && (_jsxs("span", { className: "kywi-edit-toolbar-status", children: [_jsx("span", { className: 'kywi-edit-toolbar-status-dot' +
53
+ (pageStatus.toLowerCase() === 'published' ? '' : ' kywi-edit-toolbar-status-dot--draft') }), pageStatus.charAt(0).toUpperCase() + pageStatus.slice(1)] })), pageTitle && _jsx("span", { className: "kywi-edit-toolbar-title", children: pageTitle }), _jsx("span", { className: "kywi-edit-toolbar-spacer" }), adminHref && (_jsx("a", { className: "kywi-edit-toolbar-link", href: adminHref, children: "Go to admin" })), _jsx("button", { type: "button", className: "kywi-edit-toolbar-edit", onClick: onToggleEdit, children: "Edit this page" })] }))] }));
53
54
  }
54
55
  //# sourceMappingURL=inline-editing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inline-editing.js","sourceRoot":"","sources":["../../src/scope/inline-editing.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inline-editing.js","sourceRoot":"","sources":["../../src/scope/inline-editing.tsx"],"names":[],"mappings":"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"}
@@ -382,3 +382,337 @@
382
382
  outline-offset: 3px;
383
383
  }
384
384
  [data-kywi-editing] [data-kywi-editable] { position: relative; cursor: text; }
385
+
386
+ /* ── Personalization UI ──────────────────────────────────────────────────────
387
+ * Default scaffolding for the client runtime's own surfaces (@kywi-software/js):
388
+ * the self-ID widget, the transparency bar, the personalization badge, and the
389
+ * variant-container loading state. Same contract as the rest of this file —
390
+ * neutral, token-driven, respectable out of the box, restyled by overriding
391
+ * `--kywi-*` tokens rather than rewriting rules. A theme that wants a bespoke
392
+ * widget can override any of these; nothing here is `!important`. */
393
+
394
+ /* Self-ID widget — shared card. Six display modes (inline / modal / slide-in /
395
+ * hello_bar_top / hello_bar_bottom / drawer) position and lay out the same
396
+ * card+form markup differently. */
397
+ .kywi-selfid-widget {
398
+ box-sizing: border-box;
399
+ position: relative;
400
+ width: 100%;
401
+ max-width: 24rem;
402
+ padding: var(--kywi-spacing-lg, 1.5rem);
403
+ background: var(--kywi-color-surface, #f8fafc);
404
+ color: var(--kywi-color-text, #0f172a);
405
+ border: 1px solid var(--kywi-color-border, #e2e8f0);
406
+ border-radius: var(--kywi-border-radius-lg, 16px);
407
+ box-shadow: 0 10px 30px -12px rgba(15, 23, 42, 0.25);
408
+ font-family: var(--kywi-font-family-base, system-ui, sans-serif);
409
+ }
410
+ .kywi-selfid-inline { margin: var(--kywi-spacing-lg, 1.5rem) auto; }
411
+ .kywi-selfid-slide-in {
412
+ position: fixed;
413
+ right: var(--kywi-spacing-lg, 1.5rem);
414
+ bottom: var(--kywi-spacing-lg, 1.5rem);
415
+ z-index: 60;
416
+ animation: kywi-selfid-in 240ms ease-out both;
417
+ }
418
+ .kywi-selfid-modal {
419
+ position: fixed;
420
+ top: 50%;
421
+ left: 50%;
422
+ transform: translate(-50%, -50%);
423
+ z-index: 60;
424
+ animation: kywi-selfid-in 200ms ease-out both;
425
+ }
426
+ .kywi-selfid-modal::before {
427
+ content: "";
428
+ position: fixed;
429
+ inset: 0;
430
+ z-index: -1;
431
+ background: rgba(15, 23, 42, 0.45);
432
+ }
433
+ @keyframes kywi-selfid-in {
434
+ from { opacity: 0; transform: translateY(8px); }
435
+ to { opacity: 1; transform: translateY(0); }
436
+ }
437
+ .kywi-selfid-modal { animation-name: kywi-selfid-in-modal; }
438
+ @keyframes kywi-selfid-in-modal {
439
+ from { opacity: 0; transform: translate(-50%, -46%); }
440
+ to { opacity: 1; transform: translate(-50%, -50%); }
441
+ }
442
+
443
+ /* Hello bars — full-width, fixed to the top/bottom viewport edge. The
444
+ * headline/subheadline/form lay out horizontally (the form's fields flow
445
+ * inline too), stacking vertically once the bar can't fit everything on one
446
+ * line. */
447
+ .kywi-selfid-hello-bar-top,
448
+ .kywi-selfid-hello-bar-bottom {
449
+ position: fixed;
450
+ left: 0;
451
+ right: 0;
452
+ z-index: 60;
453
+ width: 100%;
454
+ max-width: none;
455
+ display: flex;
456
+ align-items: center;
457
+ flex-wrap: wrap;
458
+ gap: var(--kywi-spacing-md, 1rem);
459
+ border-radius: 0;
460
+ padding: var(--kywi-spacing-md, 1rem) var(--kywi-spacing-lg, 1.5rem);
461
+ }
462
+ .kywi-selfid-hello-bar-top {
463
+ top: 0;
464
+ border-width: 0 0 1px;
465
+ animation: kywi-selfid-in-bar-top 240ms ease-out both;
466
+ }
467
+ .kywi-selfid-hello-bar-bottom {
468
+ bottom: 0;
469
+ border-width: 1px 0 0;
470
+ animation: kywi-selfid-in-bar-bottom 240ms ease-out both;
471
+ }
472
+ .kywi-selfid-hello-bar-top .kywi-selfid-headline,
473
+ .kywi-selfid-hello-bar-top .kywi-selfid-subheadline,
474
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-headline,
475
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-subheadline {
476
+ flex: 0 0 auto;
477
+ margin: 0;
478
+ }
479
+ .kywi-selfid-hello-bar-top .kywi-selfid-form,
480
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-form {
481
+ flex: 1 1 auto;
482
+ flex-direction: row;
483
+ flex-wrap: wrap;
484
+ align-items: center;
485
+ }
486
+ .kywi-selfid-hello-bar-top .kywi-selfid-field,
487
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-field {
488
+ flex: 0 1 auto;
489
+ flex-direction: row;
490
+ align-items: center;
491
+ gap: var(--kywi-spacing-xs, 0.25rem);
492
+ }
493
+ .kywi-selfid-hello-bar-top .kywi-selfid-field select,
494
+ .kywi-selfid-hello-bar-top .kywi-selfid-field input,
495
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-field select,
496
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-field input {
497
+ width: auto;
498
+ }
499
+ .kywi-selfid-hello-bar-top .kywi-selfid-actions,
500
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-actions {
501
+ flex: 0 0 auto;
502
+ }
503
+ @media (max-width: 640px) {
504
+ .kywi-selfid-hello-bar-top,
505
+ .kywi-selfid-hello-bar-bottom {
506
+ align-items: stretch;
507
+ }
508
+ .kywi-selfid-hello-bar-top .kywi-selfid-form,
509
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-form {
510
+ flex-direction: column;
511
+ align-items: stretch;
512
+ }
513
+ .kywi-selfid-hello-bar-top .kywi-selfid-field,
514
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-field {
515
+ flex-direction: column;
516
+ align-items: stretch;
517
+ }
518
+ .kywi-selfid-hello-bar-top .kywi-selfid-field select,
519
+ .kywi-selfid-hello-bar-top .kywi-selfid-field input,
520
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-field select,
521
+ .kywi-selfid-hello-bar-bottom .kywi-selfid-field input {
522
+ width: 100%;
523
+ }
524
+ }
525
+ @keyframes kywi-selfid-in-bar-top {
526
+ from { opacity: 0; transform: translateY(-100%); }
527
+ to { opacity: 1; transform: translateY(0); }
528
+ }
529
+ @keyframes kywi-selfid-in-bar-bottom {
530
+ from { opacity: 0; transform: translateY(100%); }
531
+ to { opacity: 1; transform: translateY(0); }
532
+ }
533
+
534
+ /* Drawer — panel sliding in from the right edge of the viewport. */
535
+ .kywi-selfid-drawer {
536
+ position: fixed;
537
+ top: 0;
538
+ right: 0;
539
+ bottom: 0;
540
+ z-index: 60;
541
+ width: 100%;
542
+ max-width: 24rem;
543
+ height: 100%;
544
+ overflow-y: auto;
545
+ border-radius: 0;
546
+ border-width: 0 0 0 1px;
547
+ animation: kywi-selfid-in-drawer 240ms ease-out both;
548
+ }
549
+ @keyframes kywi-selfid-in-drawer {
550
+ from { opacity: 0; transform: translateX(100%); }
551
+ to { opacity: 1; transform: translateX(0); }
552
+ }
553
+
554
+ @media (prefers-reduced-motion: reduce) {
555
+ .kywi-selfid-slide-in,
556
+ .kywi-selfid-modal,
557
+ .kywi-selfid-hello-bar-top,
558
+ .kywi-selfid-hello-bar-bottom,
559
+ .kywi-selfid-drawer {
560
+ animation: none;
561
+ }
562
+ }
563
+
564
+ /* Dismiss control — shown on hello_bar_top/bottom and drawer modes, which have
565
+ * no headline/subheadline "skip" affordance of their own. */
566
+ .kywi-selfid-dismiss {
567
+ position: absolute;
568
+ top: var(--kywi-spacing-sm, 0.5rem);
569
+ right: var(--kywi-spacing-sm, 0.5rem);
570
+ width: 1.75rem;
571
+ height: 1.75rem;
572
+ display: inline-flex;
573
+ align-items: center;
574
+ justify-content: center;
575
+ font-size: 1.15rem;
576
+ line-height: 1;
577
+ cursor: pointer;
578
+ color: var(--kywi-color-muted, #64748b);
579
+ background: none;
580
+ border: none;
581
+ border-radius: var(--kywi-border-radius-sm, 6px);
582
+ }
583
+ .kywi-selfid-dismiss:hover {
584
+ color: var(--kywi-color-text, #0f172a);
585
+ background: var(--kywi-color-border, #e2e8f0);
586
+ }
587
+
588
+ .kywi-selfid-headline {
589
+ margin: 0 0 var(--kywi-spacing-xs, 0.25rem);
590
+ font-family: var(--kywi-font-family-heading, var(--kywi-font-family-base, system-ui, sans-serif));
591
+ font-size: 1.125rem;
592
+ line-height: 1.3;
593
+ color: var(--kywi-color-heading, var(--kywi-color-text, #0f172a));
594
+ }
595
+ .kywi-selfid-subheadline {
596
+ margin: 0 0 var(--kywi-spacing-md, 1rem);
597
+ font-size: 0.9rem;
598
+ color: var(--kywi-color-muted, #64748b);
599
+ }
600
+ .kywi-selfid-form { display: flex; flex-direction: column; gap: var(--kywi-spacing-md, 1rem); }
601
+ .kywi-selfid-field { display: flex; flex-direction: column; gap: var(--kywi-spacing-xs, 0.25rem); }
602
+ .kywi-selfid-field label { font-size: 0.8rem; font-weight: 600; color: var(--kywi-color-muted, #64748b); }
603
+ .kywi-selfid-field select,
604
+ .kywi-selfid-field input {
605
+ box-sizing: border-box;
606
+ width: 100%;
607
+ padding: 0.55rem 0.7rem;
608
+ font: inherit;
609
+ color: var(--kywi-color-text, #0f172a);
610
+ background: var(--kywi-color-background, #ffffff);
611
+ border: 1px solid var(--kywi-color-border, #e2e8f0);
612
+ border-radius: var(--kywi-border-radius-md, 10px);
613
+ }
614
+ .kywi-selfid-field select:focus,
615
+ .kywi-selfid-field input:focus {
616
+ outline: 2px solid var(--kywi-color-primary, #2563eb);
617
+ outline-offset: 1px;
618
+ border-color: var(--kywi-color-primary, #2563eb);
619
+ }
620
+ .kywi-selfid-actions { display: flex; align-items: center; gap: var(--kywi-spacing-sm, 0.5rem); }
621
+ .kywi-selfid-submit {
622
+ padding: 0.55rem 1.1rem;
623
+ font: inherit;
624
+ font-weight: 600;
625
+ cursor: pointer;
626
+ color: var(--kywi-color-primary-contrast, #ffffff);
627
+ background: var(--kywi-color-primary, #2563eb);
628
+ border: 1px solid transparent;
629
+ border-radius: var(--kywi-border-radius-md, 10px);
630
+ }
631
+ .kywi-selfid-submit:hover { filter: brightness(1.07); }
632
+ .kywi-selfid-skip {
633
+ padding: 0.55rem 0.6rem;
634
+ font: inherit;
635
+ cursor: pointer;
636
+ color: var(--kywi-color-muted, #64748b);
637
+ background: none;
638
+ border: none;
639
+ text-decoration: underline;
640
+ text-underline-offset: 2px;
641
+ }
642
+ .kywi-selfid-skip:hover { color: var(--kywi-color-text, #0f172a); }
643
+
644
+ /* Transparency bar — pinned to the bottom edge, one line. */
645
+ .kywi-transparency-bar {
646
+ position: fixed;
647
+ left: 0;
648
+ right: 0;
649
+ bottom: 0;
650
+ z-index: 55;
651
+ display: flex;
652
+ align-items: center;
653
+ justify-content: center;
654
+ gap: var(--kywi-spacing-md, 1rem);
655
+ padding: var(--kywi-spacing-sm, 0.5rem) var(--kywi-spacing-lg, 1.5rem);
656
+ font-family: var(--kywi-font-family-base, system-ui, sans-serif);
657
+ font-size: 0.85rem;
658
+ color: var(--kywi-color-text, #0f172a);
659
+ background: var(--kywi-color-surface, #f8fafc);
660
+ border-top: 1px solid var(--kywi-color-border, #e2e8f0);
661
+ }
662
+ .kywi-transparency-text { margin: 0; }
663
+ .kywi-transparency-opt-out {
664
+ padding: 0.3rem 0.75rem;
665
+ font: inherit;
666
+ cursor: pointer;
667
+ color: var(--kywi-color-text, #0f172a);
668
+ background: var(--kywi-color-background, #ffffff);
669
+ border: 1px solid var(--kywi-color-border, #e2e8f0);
670
+ border-radius: var(--kywi-border-radius-sm, 6px);
671
+ }
672
+ .kywi-transparency-opt-out:hover { border-color: var(--kywi-color-primary, #2563eb); }
673
+
674
+ /* Personalization badge — small inline pill. */
675
+ .kywi-personalization-badge {
676
+ display: inline-flex;
677
+ align-items: center;
678
+ gap: var(--kywi-spacing-sm, 0.5rem);
679
+ padding: 0.35rem 0.7rem;
680
+ font-size: 0.8rem;
681
+ color: var(--kywi-color-muted, #64748b);
682
+ background: var(--kywi-color-surface, #f8fafc);
683
+ border: 1px solid var(--kywi-color-border, #e2e8f0);
684
+ border-radius: 999px;
685
+ }
686
+ .kywi-badge-opt-out {
687
+ padding: 0.15rem 0.55rem;
688
+ font: inherit;
689
+ cursor: pointer;
690
+ color: var(--kywi-color-text, #0f172a);
691
+ background: var(--kywi-color-background, #ffffff);
692
+ border: 1px solid var(--kywi-color-border, #e2e8f0);
693
+ border-radius: var(--kywi-border-radius-sm, 6px);
694
+ }
695
+ .kywi-badge-opt-out:hover { border-color: var(--kywi-color-primary, #2563eb); }
696
+
697
+ /* Variant container — arms manage their own visibility (inline display).
698
+ * Only the loading state needs styling: a low skeleton shimmer while the client
699
+ * resolves which arm to show. */
700
+ .kywi-variant-loading { position: relative; min-height: 2rem; }
701
+ .kywi-variant-skeleton {
702
+ position: absolute;
703
+ inset: 0;
704
+ border-radius: var(--kywi-border-radius-md, 10px);
705
+ background: linear-gradient(90deg,
706
+ var(--kywi-color-surface, #f8fafc) 25%,
707
+ var(--kywi-color-border, #e2e8f0) 50%,
708
+ var(--kywi-color-surface, #f8fafc) 75%);
709
+ background-size: 200% 100%;
710
+ animation: kywi-variant-shimmer 1.4s ease-in-out infinite;
711
+ }
712
+ @keyframes kywi-variant-shimmer {
713
+ from { background-position: 200% 0; }
714
+ to { background-position: -200% 0; }
715
+ }
716
+ @media (prefers-reduced-motion: reduce) {
717
+ .kywi-variant-skeleton { animation: none; }
718
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kywi-software/core",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "description": "Kywi CMS core — schema generator, REST API, and admin UI for Next.js.",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",