@syntrologie/adapt-content 2.14.0 → 2.15.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 (75) hide show
  1. package/dist/runtime.d.ts.map +1 -1
  2. package/dist/runtime.js +22 -4
  3. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.d.ts +84 -0
  4. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.d.ts.map +1 -0
  5. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.js +323 -0
  6. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.d.ts +25 -0
  7. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.d.ts.map +1 -0
  8. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.js +55 -0
  9. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.d.ts +33 -0
  10. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.d.ts.map +1 -0
  11. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.js +118 -0
  12. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.d.ts +32 -0
  13. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.d.ts.map +1 -0
  14. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.js +68 -0
  15. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.d.ts +34 -0
  16. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.d.ts.map +1 -0
  17. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.js +57 -0
  18. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.d.ts +13 -0
  19. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.d.ts.map +1 -0
  20. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.js +31 -0
  21. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.d.ts +7 -0
  22. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.d.ts.map +1 -0
  23. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.js +15 -0
  24. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.d.ts +36 -0
  25. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.d.ts.map +1 -0
  26. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.js +102 -0
  27. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.d.ts +20 -0
  28. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.d.ts.map +1 -0
  29. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.js +48 -0
  30. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.d.ts +16 -0
  31. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.d.ts.map +1 -0
  32. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.js +25 -0
  33. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.d.ts +66 -0
  34. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.d.ts.map +1 -0
  35. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.js +87 -0
  36. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.d.ts +7 -0
  37. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.d.ts.map +1 -0
  38. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.js +15 -0
  39. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts.map +1 -1
  40. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.js +28 -17
  41. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.d.ts +66 -0
  42. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.d.ts.map +1 -0
  43. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.js +528 -0
  44. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.d.ts +41 -0
  45. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.d.ts.map +1 -0
  46. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.js +63 -0
  47. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.d.ts +55 -0
  48. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.d.ts.map +1 -0
  49. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.js +92 -0
  50. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.d.ts +90 -0
  51. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.d.ts.map +1 -0
  52. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.js +242 -0
  53. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.d.ts +12 -0
  54. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.d.ts.map +1 -0
  55. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.js +21 -0
  56. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.d.ts +21 -0
  57. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.d.ts.map +1 -0
  58. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.js +33 -0
  59. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.d.ts +28 -0
  60. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.d.ts.map +1 -0
  61. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.js +121 -0
  62. package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.d.ts +110 -0
  63. package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.d.ts.map +1 -0
  64. package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.js +476 -0
  65. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts +2 -0
  66. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts.map +1 -1
  67. package/node_modules/@syntrologie/shared-editor-ui/dist/index.js +1 -0
  68. package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.d.ts +15 -0
  69. package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.d.ts.map +1 -0
  70. package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.js +14 -0
  71. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts +0 -4
  72. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts.map +1 -1
  73. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.js +17 -1
  74. package/node_modules/@syntrologie/shared-editor-ui/package.json +9 -1
  75. package/package.json +1 -1
@@ -0,0 +1,118 @@
1
+ import { html, LitElement } from 'lit';
2
+ /**
3
+ * ConditionStatusLineLit — inline triggerWhen diagnostic on EditorCard.
4
+ *
5
+ * Shows a compact one-line status for items with triggerWhen conditions.
6
+ * Click to expand per-condition detail (multi-condition case).
7
+ *
8
+ * Attributes:
9
+ * status — JSON-serialized TriggerWhenStatus (set via property, not attribute)
10
+ *
11
+ * Usage:
12
+ * const el = document.createElement('se-condition-status-line');
13
+ * el.status = { visible: true, isFallback: false, conditions: [...] };
14
+ */
15
+ export class ConditionStatusLineLit extends LitElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.status = null;
19
+ this._expanded = false;
20
+ }
21
+ createRenderRoot() {
22
+ return this;
23
+ }
24
+ _renderProgressBar(current, target) {
25
+ const pct = Math.min(100, Math.round((current / Math.max(target, 1)) * 100));
26
+ const fillClass = pct >= 100 ? 'se-bg-green-4' : 'se-bg-blue-4';
27
+ return html `
28
+ <span
29
+ class="se-inline-block se-w-12 se-h-1.5 se-rounded-full se-bg-white/20 se-align-middle se-ml-1"
30
+ title="${current}/${target} (${pct}%)"
31
+ >
32
+ <span
33
+ class="se-block se-h-full se-rounded-full se-transition-all ${fillClass}"
34
+ style="width: ${pct}%"
35
+ ></span>
36
+ </span>
37
+ `;
38
+ }
39
+ _renderConditionRow(cs) {
40
+ return html `
41
+ <div class="se-flex se-items-center se-gap-1 se-pl-3 se-text-[12px] se-font-medium se-text-text-secondary">
42
+ ${cs.passed
43
+ ? html `<svg class="se-w-3 se-h-3 se-text-green-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>`
44
+ : html `<svg class="se-w-3 se-h-3 se-text-red-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>`}
45
+ <span>${cs.type}:</span>
46
+ <span class="se-text-text-secondary">${cs.formatted.label}</span>
47
+ ${cs.formatted.progress
48
+ ? html `
49
+ ${this._renderProgressBar(cs.formatted.progress.current, cs.formatted.progress.target)}
50
+ <span class="se-text-text-secondary se-ml-0.5">
51
+ ${cs.formatted.progress.current}/${cs.formatted.progress.target}
52
+ </span>
53
+ `
54
+ : ''}
55
+ </div>
56
+ `;
57
+ }
58
+ render() {
59
+ if (!this.status)
60
+ return html ``;
61
+ const { visible, conditions } = this.status;
62
+ const passedCount = conditions.filter((c) => c.passed).length;
63
+ const totalCount = conditions.length;
64
+ const isSingle = totalCount === 1;
65
+ const iconColor = visible ? 'se-text-green-4' : 'se-text-yellow-5';
66
+ // Check icon (visible) or Clock icon (not visible)
67
+ const statusIcon = visible
68
+ ? html `<svg class="se-w-3 se-h-3 ${iconColor}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>`
69
+ : html `<svg class="se-w-3 se-h-3 ${iconColor}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>`;
70
+ if (isSingle) {
71
+ const cs = conditions[0];
72
+ return html `
73
+ <div class="se-text-[12px] se-font-medium se-text-text-secondary se-mt-0.5 se-flex se-items-center se-gap-1">
74
+ ${statusIcon}
75
+ <span>${cs.type}:</span>
76
+ <span class="se-text-text-secondary">${cs.formatted.label}</span>
77
+ ${cs.formatted.progress
78
+ ? html `
79
+ ${this._renderProgressBar(cs.formatted.progress.current, cs.formatted.progress.target)}
80
+ <span class="se-text-text-secondary se-ml-0.5">
81
+ ${cs.formatted.progress.current}/${cs.formatted.progress.target}
82
+ </span>
83
+ `
84
+ : ''}
85
+ </div>
86
+ `;
87
+ }
88
+ // Multi-condition: summary + expandable detail
89
+ return html `
90
+ <div class="se-mt-0.5">
91
+ <button
92
+ type="button"
93
+ class="se-flex se-items-center se-gap-1 se-text-[12px] se-font-medium se-text-text-secondary se-bg-transparent se-border-none se-cursor-pointer se-p-0 hover:se-text-text-primary"
94
+ @click=${(e) => {
95
+ e.stopPropagation();
96
+ this._expanded = !this._expanded;
97
+ }}
98
+ >
99
+ ${statusIcon}
100
+ <span>${passedCount} of ${totalCount} conditions met</span>
101
+ <span class="se-text-[11px] se-ml-0.5">${this._expanded ? '▲' : '▼'}</span>
102
+ </button>
103
+ ${this._expanded
104
+ ? html `
105
+ <div class="se-mt-0.5 se-space-y-0.5">
106
+ ${conditions.map((cs) => this._renderConditionRow(cs))}
107
+ </div>
108
+ `
109
+ : ''}
110
+ </div>
111
+ `;
112
+ }
113
+ }
114
+ ConditionStatusLineLit.properties = {
115
+ status: { type: Object },
116
+ _expanded: { type: Boolean, state: true },
117
+ };
118
+ customElements.define('se-condition-status-line', ConditionStatusLineLit);
@@ -0,0 +1,32 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * DetectionBadgeLit — badge showing element detection status.
4
+ *
5
+ * Attributes:
6
+ * found — boolean, whether the element was found on the page
7
+ * clickable — boolean, whether clicking should be enabled (renders as button)
8
+ *
9
+ * Events:
10
+ * badge-click — CustomEvent<void>, bubbles, composed (only when clickable=true)
11
+ *
12
+ * Usage:
13
+ * <se-detection-badge found></se-detection-badge>
14
+ * <se-detection-badge found clickable></se-detection-badge>
15
+ */
16
+ export declare class DetectionBadgeLit extends LitElement {
17
+ static properties: {
18
+ found: {
19
+ type: BooleanConstructor;
20
+ };
21
+ clickable: {
22
+ type: BooleanConstructor;
23
+ };
24
+ };
25
+ found: boolean;
26
+ clickable: boolean;
27
+ createRenderRoot(): this;
28
+ private get _title();
29
+ private _handleClick;
30
+ render(): import("lit-html").TemplateResult<1>;
31
+ }
32
+ //# sourceMappingURL=DetectionBadgeLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetectionBadgeLit.d.ts","sourceRoot":"","sources":["../../src/components/DetectionBadgeLit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,UAAU;;;;;;;MAGxB;IAEF,KAAK,UAAS;IACd,SAAS,UAAS;IAET,gBAAgB;IAIzB,OAAO,KAAK,MAAM,GAKjB;IAED,OAAO,CAAC,YAAY;IAUX,MAAM;CA6BhB"}
@@ -0,0 +1,68 @@
1
+ import { html, LitElement } from 'lit';
2
+ /**
3
+ * DetectionBadgeLit — badge showing element detection status.
4
+ *
5
+ * Attributes:
6
+ * found — boolean, whether the element was found on the page
7
+ * clickable — boolean, whether clicking should be enabled (renders as button)
8
+ *
9
+ * Events:
10
+ * badge-click — CustomEvent<void>, bubbles, composed (only when clickable=true)
11
+ *
12
+ * Usage:
13
+ * <se-detection-badge found></se-detection-badge>
14
+ * <se-detection-badge found clickable></se-detection-badge>
15
+ */
16
+ export class DetectionBadgeLit extends LitElement {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.found = false;
20
+ this.clickable = false;
21
+ }
22
+ createRenderRoot() {
23
+ return this;
24
+ }
25
+ get _title() {
26
+ if (this.clickable) {
27
+ return this.found ? 'Click to scroll to element' : 'Click to navigate to page';
28
+ }
29
+ return this.found ? 'Found on this page' : 'Not found on this page';
30
+ }
31
+ _handleClick(e) {
32
+ e.stopPropagation();
33
+ this.dispatchEvent(new CustomEvent('badge-click', {
34
+ bubbles: true,
35
+ composed: true,
36
+ }));
37
+ }
38
+ render() {
39
+ const textColor = this.found ? 'se-text-green-4' : 'se-text-text-tertiary';
40
+ const dotColor = this.found ? 'se-bg-green-4' : 'se-bg-text-tertiary';
41
+ const dot = html `<span data-indicator class="se-w-1.5 se-h-1.5 se-rounded-full ${dotColor}"></span>`;
42
+ const baseClasses = `se-inline-flex se-items-center se-gap-1 se-text-xs se-font-medium se-shrink-0 ${textColor}`;
43
+ if (this.clickable) {
44
+ return html `
45
+ <button
46
+ type="button"
47
+ class="${baseClasses} se-cursor-pointer hover:se-opacity-80 se-border-none se-bg-transparent se-p-0"
48
+ title=${this._title}
49
+ @click=${this._handleClick}
50
+ >
51
+ ${dot}
52
+ GoTo
53
+ </button>
54
+ `;
55
+ }
56
+ return html `
57
+ <span class=${baseClasses} title=${this._title}>
58
+ ${dot}
59
+ GoTo
60
+ </span>
61
+ `;
62
+ }
63
+ }
64
+ DetectionBadgeLit.properties = {
65
+ found: { type: Boolean },
66
+ clickable: { type: Boolean },
67
+ };
68
+ customElements.define('se-detection-badge', DetectionBadgeLit);
@@ -0,0 +1,34 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * DismissedSectionLit — collapsible section for dismissed items.
4
+ *
5
+ * Attributes:
6
+ * count — number of dismissed items shown in the header label
7
+ *
8
+ * Slots:
9
+ * default — dismissed item content shown when expanded
10
+ *
11
+ * Usage:
12
+ * <se-dismissed-section count="3">
13
+ * <div>item 1</div>
14
+ * <div>item 2</div>
15
+ * </se-dismissed-section>
16
+ */
17
+ export declare class DismissedSectionLit extends LitElement {
18
+ static properties: {
19
+ count: {
20
+ type: NumberConstructor;
21
+ };
22
+ _isOpen: {
23
+ type: BooleanConstructor;
24
+ state: boolean;
25
+ };
26
+ };
27
+ count: number;
28
+ private _isOpen;
29
+ createRenderRoot(): this;
30
+ private _toggle;
31
+ private _handleKeyDown;
32
+ render(): import("lit-html").TemplateResult<1>;
33
+ }
34
+ //# sourceMappingURL=DismissedSectionLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DismissedSectionLit.d.ts","sourceRoot":"","sources":["../../src/components/DismissedSectionLit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,OAAgB,UAAU;;;;;;;;MAGxB;IAEF,KAAK,SAAK;IACV,OAAO,CAAC,OAAO,CAAS;IAEf,gBAAgB;IAIzB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAMb,MAAM;CAmBhB"}
@@ -0,0 +1,57 @@
1
+ import { html, LitElement } from 'lit';
2
+ /**
3
+ * DismissedSectionLit — collapsible section for dismissed items.
4
+ *
5
+ * Attributes:
6
+ * count — number of dismissed items shown in the header label
7
+ *
8
+ * Slots:
9
+ * default — dismissed item content shown when expanded
10
+ *
11
+ * Usage:
12
+ * <se-dismissed-section count="3">
13
+ * <div>item 1</div>
14
+ * <div>item 2</div>
15
+ * </se-dismissed-section>
16
+ */
17
+ export class DismissedSectionLit extends LitElement {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.count = 0;
21
+ this._isOpen = false;
22
+ }
23
+ createRenderRoot() {
24
+ return this;
25
+ }
26
+ _toggle() {
27
+ this._isOpen = !this._isOpen;
28
+ }
29
+ _handleKeyDown(e) {
30
+ if (e.key === 'Enter' || e.key === ' ') {
31
+ this._toggle();
32
+ }
33
+ }
34
+ render() {
35
+ const arrow = this._isOpen ? '▾' : '▸';
36
+ return html `
37
+ <div class="se-mt-4 se-cursor-pointer se-select-none">
38
+ <div
39
+ role="button"
40
+ tabindex="0"
41
+ class="se-text-xs se-font-semibold se-text-text-secondary se-flex se-items-center se-gap-1.5 se-cursor-pointer"
42
+ @click=${this._toggle}
43
+ @keydown=${this._handleKeyDown}
44
+ >
45
+ <span>${arrow}</span>
46
+ <span>Dismissed (${this.count})</span>
47
+ </div>
48
+ ${this._isOpen ? html `<div class="se-mt-1.5"><slot></slot></div>` : ''}
49
+ </div>
50
+ `;
51
+ }
52
+ }
53
+ DismissedSectionLit.properties = {
54
+ count: { type: Number },
55
+ _isOpen: { type: Boolean, state: true },
56
+ };
57
+ customElements.define('se-dismissed-section', DismissedSectionLit);
@@ -0,0 +1,13 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class EditBackButtonLit extends LitElement {
3
+ static properties: {
4
+ label: {
5
+ type: StringConstructor;
6
+ };
7
+ };
8
+ label: string;
9
+ createRenderRoot(): this;
10
+ private _handleClick;
11
+ render(): import("lit-html").TemplateResult<1>;
12
+ }
13
+ //# sourceMappingURL=EditBackButtonLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditBackButtonLit.d.ts","sourceRoot":"","sources":["../../src/components/EditBackButtonLit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,UAAU;;;;MAExB;IAEF,KAAK,SAAY;IAER,gBAAgB;IAIzB,OAAO,CAAC,YAAY;IASX,MAAM;CAWhB"}
@@ -0,0 +1,31 @@
1
+ import { html, LitElement } from 'lit';
2
+ export class EditBackButtonLit extends LitElement {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.label = '← List';
6
+ }
7
+ createRenderRoot() {
8
+ return this;
9
+ }
10
+ _handleClick() {
11
+ this.dispatchEvent(new CustomEvent('back-click', {
12
+ bubbles: true,
13
+ composed: true,
14
+ }));
15
+ }
16
+ render() {
17
+ return html `
18
+ <button
19
+ type="button"
20
+ class="se-h-10 se-px-4 se-py-2 se-rounded-md se-bg-btn-neutral se-text-btn-neutral-text se-border se-border-btn-neutral-border hover:se-text-btn-neutral-text-hover se-text-sm se-font-medium se-cursor-pointer se-mt-2 se-inline-flex se-items-center se-justify-center focus-visible:se-shadow-focus-primary focus-visible:se-outline-none"
21
+ @click=${this._handleClick}
22
+ >
23
+ ${this.label}
24
+ </button>
25
+ `;
26
+ }
27
+ }
28
+ EditBackButtonLit.properties = {
29
+ label: { type: String },
30
+ };
31
+ customElements.define('se-edit-back-button', EditBackButtonLit);
@@ -0,0 +1,7 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class EditorBodyLit extends LitElement {
3
+ static properties: {};
4
+ createRenderRoot(): this;
5
+ render(): import("lit-html").TemplateResult<1>;
6
+ }
7
+ //# sourceMappingURL=EditorBodyLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorBodyLit.d.ts","sourceRoot":"","sources":["../../src/components/EditorBodyLit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,UAAU,KAAM;IAEvB,gBAAgB;IAIhB,MAAM;CAOhB"}
@@ -0,0 +1,15 @@
1
+ import { html, LitElement } from 'lit';
2
+ export class EditorBodyLit extends LitElement {
3
+ createRenderRoot() {
4
+ return this;
5
+ }
6
+ render() {
7
+ return html `
8
+ <div class="se-flex-1 se-overflow-auto se-p-6">
9
+ <slot></slot>
10
+ </div>
11
+ `;
12
+ }
13
+ }
14
+ EditorBodyLit.properties = {};
15
+ customElements.define('se-editor-body', EditorBodyLit);
@@ -0,0 +1,36 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * EditorCardLit — card wrapper for editor item lists.
4
+ *
5
+ * Uses shadow DOM so <slot> projects children into the styled wrapper div.
6
+ * Dispatches card-mouseenter, card-mouseleave, card-click custom events
7
+ * with composed: true so they cross the shadow boundary.
8
+ */
9
+ export declare class EditorCardLit extends LitElement {
10
+ static properties: {
11
+ itemKey: {
12
+ type: StringConstructor;
13
+ attribute: string;
14
+ };
15
+ cardClass: {
16
+ type: StringConstructor;
17
+ attribute: string;
18
+ };
19
+ validated: {
20
+ type: BooleanConstructor;
21
+ };
22
+ clickable: {
23
+ type: BooleanConstructor;
24
+ };
25
+ };
26
+ itemKey: string;
27
+ cardClass: string | undefined;
28
+ validated: boolean;
29
+ clickable: boolean;
30
+ private _handleClick;
31
+ private _handleKeyDown;
32
+ private _handleMouseEnter;
33
+ private _handleMouseLeave;
34
+ render(): import("lit-html").TemplateResult<1>;
35
+ }
36
+ //# sourceMappingURL=EditorCardLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorCardLit.d.ts","sourceRoot":"","sources":["../../src/components/EditorCardLit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,UAAU;;;;;;;;;;;;;;;MAKxB;IAEF,OAAO,SAAM;IACb,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,UAAS;IAClB,SAAS,UAAS;IAElB,OAAO,CAAC,YAAY,CASlB;IAEF,OAAO,CAAC,cAAc,CAMpB;IAEF,OAAO,CAAC,iBAAiB,CAQvB;IAEF,OAAO,CAAC,iBAAiB,CAQvB;IAEO,MAAM;CAiDhB"}
@@ -0,0 +1,102 @@
1
+ import { html, LitElement } from 'lit';
2
+ /**
3
+ * EditorCardLit — card wrapper for editor item lists.
4
+ *
5
+ * Uses shadow DOM so <slot> projects children into the styled wrapper div.
6
+ * Dispatches card-mouseenter, card-mouseleave, card-click custom events
7
+ * with composed: true so they cross the shadow boundary.
8
+ */
9
+ export class EditorCardLit extends LitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.itemKey = '';
13
+ this.validated = false;
14
+ this.clickable = false;
15
+ this._handleClick = () => {
16
+ if (!this.clickable)
17
+ return;
18
+ this.dispatchEvent(new CustomEvent('card-click', {
19
+ detail: { itemKey: this.itemKey },
20
+ bubbles: true,
21
+ composed: true,
22
+ }));
23
+ };
24
+ this._handleKeyDown = (e) => {
25
+ if (!this.clickable)
26
+ return;
27
+ if (e.key === 'Enter' || e.key === ' ') {
28
+ e.preventDefault();
29
+ this._handleClick();
30
+ }
31
+ };
32
+ this._handleMouseEnter = () => {
33
+ this.dispatchEvent(new CustomEvent('card-mouseenter', {
34
+ detail: { itemKey: this.itemKey },
35
+ bubbles: true,
36
+ composed: true,
37
+ }));
38
+ };
39
+ this._handleMouseLeave = () => {
40
+ this.dispatchEvent(new CustomEvent('card-mouseleave', {
41
+ detail: { itemKey: this.itemKey },
42
+ bubbles: true,
43
+ composed: true,
44
+ }));
45
+ };
46
+ }
47
+ render() {
48
+ const base = 'py-2 px-2.5 rounded-lg border shadow-sm mb-1 text-sm';
49
+ const borderCls = this.validated ? 'border-green-500/50' : 'border-white/10';
50
+ const bgCls = 'bg-white/[0.02]';
51
+ const colorCls = 'text-slate-200';
52
+ const interactiveCls = this.clickable
53
+ ? 'cursor-pointer hover:border-white/20 hover:bg-white/[0.04] transition-colors'
54
+ : '';
55
+ return html `
56
+ <style>
57
+ :host { display: block; }
58
+ .card {
59
+ padding: 8px 10px;
60
+ border-radius: 8px;
61
+ border: 1px solid rgba(255,255,255,0.1);
62
+ background: rgba(255,255,255,0.02);
63
+ box-shadow: 0 1px 2px rgba(0,0,0,0.1);
64
+ margin-bottom: 4px;
65
+ font-size: 14px;
66
+ color: #e2e8f0;
67
+ }
68
+ .card.validated {
69
+ border-color: rgba(34,197,94,0.5);
70
+ box-shadow: 0 0 8px rgba(34,197,94,0.15);
71
+ }
72
+ .card.clickable {
73
+ cursor: pointer;
74
+ transition: border-color 0.15s, background 0.15s;
75
+ }
76
+ .card.clickable:hover {
77
+ border-color: rgba(255,255,255,0.2);
78
+ background: rgba(255,255,255,0.04);
79
+ }
80
+ </style>
81
+ <div
82
+ class="card ${this.validated ? 'validated' : ''} ${this.clickable ? 'clickable' : ''}"
83
+ data-item-key=${this.itemKey}
84
+ role=${this.clickable ? 'button' : ''}
85
+ tabindex=${this.clickable ? '0' : ''}
86
+ @click=${this._handleClick}
87
+ @keydown=${this._handleKeyDown}
88
+ @mouseenter=${this._handleMouseEnter}
89
+ @mouseleave=${this._handleMouseLeave}
90
+ >
91
+ <slot></slot>
92
+ </div>
93
+ `;
94
+ }
95
+ }
96
+ EditorCardLit.properties = {
97
+ itemKey: { type: String, attribute: 'item-key' },
98
+ cardClass: { type: String, attribute: 'card-class' },
99
+ validated: { type: Boolean },
100
+ clickable: { type: Boolean },
101
+ };
102
+ customElements.define('se-editor-card', EditorCardLit);
@@ -0,0 +1,20 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class EditorFooterLit extends LitElement {
3
+ static properties: {
4
+ saveLabel: {
5
+ type: StringConstructor;
6
+ attribute: string;
7
+ };
8
+ publishLabel: {
9
+ type: StringConstructor;
10
+ attribute: string;
11
+ };
12
+ };
13
+ saveLabel: string;
14
+ publishLabel: string;
15
+ createRenderRoot(): this;
16
+ private _handleSave;
17
+ private _handlePublish;
18
+ render(): import("lit-html").TemplateResult<1>;
19
+ }
20
+ //# sourceMappingURL=EditorFooterLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorFooterLit.d.ts","sourceRoot":"","sources":["../../src/components/EditorFooterLit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,UAAU;;;;;;;;;MAGxB;IAEF,SAAS,SAAgB;IACzB,YAAY,SAAa;IAEhB,gBAAgB;IAIzB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,cAAc;IASb,MAAM;CAoBhB"}
@@ -0,0 +1,48 @@
1
+ import { html, LitElement } from 'lit';
2
+ export class EditorFooterLit extends LitElement {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.saveLabel = 'Save Draft';
6
+ this.publishLabel = 'Publish';
7
+ }
8
+ createRenderRoot() {
9
+ return this;
10
+ }
11
+ _handleSave() {
12
+ this.dispatchEvent(new CustomEvent('save', {
13
+ bubbles: true,
14
+ composed: true,
15
+ }));
16
+ }
17
+ _handlePublish() {
18
+ this.dispatchEvent(new CustomEvent('publish', {
19
+ bubbles: true,
20
+ composed: true,
21
+ }));
22
+ }
23
+ render() {
24
+ return html `
25
+ <div class="se-py-3 se-px-4 se-border-t se-border-border-primary se-flex se-gap-2">
26
+ <button
27
+ type="button"
28
+ class="se-flex-1 se-h-10 se-px-4 se-py-2 se-rounded-md se-bg-btn-neutral se-text-btn-neutral-text se-border se-border-btn-neutral-border hover:se-text-btn-neutral-text-hover se-text-sm se-font-medium se-cursor-pointer se-inline-flex se-items-center se-justify-center focus-visible:se-shadow-focus-primary focus-visible:se-outline-none"
29
+ @click=${this._handleSave}
30
+ >
31
+ ${this.saveLabel}
32
+ </button>
33
+ <button
34
+ type="button"
35
+ class="se-flex-1 se-h-10 se-px-4 se-py-2 se-rounded-md se-border-none se-bg-btn-primary se-text-btn-primary-text hover:se-bg-btn-primary-hover se-text-sm se-font-medium se-cursor-pointer se-inline-flex se-items-center se-justify-center focus-visible:se-shadow-focus-primary focus-visible:se-outline-none"
36
+ @click=${this._handlePublish}
37
+ >
38
+ ${this.publishLabel}
39
+ </button>
40
+ </div>
41
+ `;
42
+ }
43
+ }
44
+ EditorFooterLit.properties = {
45
+ saveLabel: { type: String, attribute: 'save-label' },
46
+ publishLabel: { type: String, attribute: 'publish-label' },
47
+ };
48
+ customElements.define('se-editor-footer', EditorFooterLit);
@@ -0,0 +1,16 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class EditorHeaderLit extends LitElement {
3
+ static properties: {
4
+ title: {
5
+ type: StringConstructor;
6
+ };
7
+ subtitle: {
8
+ type: StringConstructor;
9
+ };
10
+ };
11
+ title: string;
12
+ subtitle: string | undefined;
13
+ createRenderRoot(): this;
14
+ render(): import("lit-html").TemplateResult<1>;
15
+ }
16
+ //# sourceMappingURL=EditorHeaderLit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorHeaderLit.d.ts","sourceRoot":"","sources":["../../src/components/EditorHeaderLit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAEvC,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,UAAU;;;;;;;MAGxB;IAEF,KAAK,SAAM;IACX,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpB,gBAAgB;IAIhB,MAAM;CAYhB"}
@@ -0,0 +1,25 @@
1
+ import { html, LitElement } from 'lit';
2
+ export class EditorHeaderLit extends LitElement {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.title = '';
6
+ }
7
+ createRenderRoot() {
8
+ return this;
9
+ }
10
+ render() {
11
+ return html `
12
+ <div class="se-px-4 se-pt-3 se-pb-2">
13
+ <h2 class="se-m-0 se-text-base se-font-semibold se-text-text-primary">${this.title}</h2>
14
+ ${this.subtitle
15
+ ? html `<p class="se-mt-0.5 se-mb-0 se-text-xs se-text-text-secondary">${this.subtitle}</p>`
16
+ : ''}
17
+ </div>
18
+ `;
19
+ }
20
+ }
21
+ EditorHeaderLit.properties = {
22
+ title: { type: String },
23
+ subtitle: { type: String },
24
+ };
25
+ customElements.define('se-editor-header', EditorHeaderLit);