@syntrologie/adapt-overlays 2.16.0 → 2.17.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 (226) hide show
  1. package/dist/chunk-VHAA22YE.js +14 -0
  2. package/dist/chunk-VHAA22YE.js.map +7 -0
  3. package/dist/runtime.d.ts +2 -1
  4. package/dist/runtime.d.ts.map +1 -1
  5. package/dist/runtime.js +2596 -354
  6. package/dist/runtime.js.map +7 -0
  7. package/dist/schema.d.ts +90 -21
  8. package/dist/schema.d.ts.map +1 -1
  9. package/dist/schema.js +440 -151
  10. package/dist/schema.js.map +7 -0
  11. package/dist/types.d.ts +1 -1
  12. package/dist/types.d.ts.map +1 -1
  13. package/package.json +5 -22
  14. package/dist/WorkflowTracker.d.ts +0 -10
  15. package/dist/WorkflowTracker.d.ts.map +0 -1
  16. package/dist/WorkflowTracker.js +0 -19
  17. package/dist/WorkflowWidget.d.ts +0 -70
  18. package/dist/WorkflowWidget.d.ts.map +0 -1
  19. package/dist/WorkflowWidget.js +0 -330
  20. package/dist/WorkflowWidgetLit.js +0 -617
  21. package/dist/cdn.d.ts +0 -35
  22. package/dist/cdn.d.ts.map +0 -1
  23. package/dist/cdn.js +0 -39
  24. package/dist/celebrations/__tests__/engine.test.js +0 -130
  25. package/dist/celebrations/__tests__/executor.test.js +0 -102
  26. package/dist/celebrations/__tests__/reduced-motion.test.js +0 -97
  27. package/dist/celebrations/effects/__tests__/confetti.test.js +0 -89
  28. package/dist/celebrations/effects/__tests__/emoji-rain.test.js +0 -88
  29. package/dist/celebrations/effects/__tests__/fireworks.test.js +0 -87
  30. package/dist/celebrations/effects/__tests__/sparkles.test.js +0 -79
  31. package/dist/celebrations/effects/confetti.js +0 -80
  32. package/dist/celebrations/effects/emoji-rain.js +0 -73
  33. package/dist/celebrations/effects/fireworks.js +0 -69
  34. package/dist/celebrations/effects/sparkles.js +0 -83
  35. package/dist/celebrations/engine.js +0 -93
  36. package/dist/celebrations/index.js +0 -73
  37. package/dist/celebrations/types.js +0 -1
  38. package/dist/editor.d.ts +0 -27
  39. package/dist/editor.d.ts.map +0 -1
  40. package/dist/editor.js +0 -22
  41. package/dist/executors/tour.js +0 -335
  42. package/dist/highlight.js +0 -180
  43. package/dist/modal.js +0 -218
  44. package/dist/overlay-editor-state.d.ts +0 -41
  45. package/dist/overlay-editor-state.d.ts.map +0 -1
  46. package/dist/overlay-editor-state.js +0 -131
  47. package/dist/overlay-editor-ui.d.ts +0 -9
  48. package/dist/overlay-editor-ui.d.ts.map +0 -1
  49. package/dist/overlay-editor-ui.js +0 -306
  50. package/dist/runtime-lit.d.ts +0 -94
  51. package/dist/runtime-lit.d.ts.map +0 -1
  52. package/dist/runtime-lit.js +0 -402
  53. package/dist/sanitizer.js +0 -84
  54. package/dist/summarize.js +0 -86
  55. package/dist/tooltip.js +0 -279
  56. package/dist/tour-types.js +0 -7
  57. package/dist/types.js +0 -7
  58. package/dist/workflow-types.js +0 -1
  59. package/node_modules/@syntro/design-system/README.md +0 -335
  60. package/node_modules/@syntro/design-system/dist/assets/syntrologie-logo.svg +0 -21
  61. package/node_modules/@syntro/design-system/dist/assets/syntrologie-logomark.svg +0 -10
  62. package/node_modules/@syntro/design-system/dist/index.d.ts +0 -8
  63. package/node_modules/@syntro/design-system/dist/index.d.ts.map +0 -1
  64. package/node_modules/@syntro/design-system/dist/index.js +0 -7
  65. package/node_modules/@syntro/design-system/dist/tailwind-preset.d.ts +0 -19
  66. package/node_modules/@syntro/design-system/dist/tailwind-preset.d.ts.map +0 -1
  67. package/node_modules/@syntro/design-system/dist/tailwind-preset.js +0 -455
  68. package/node_modules/@syntro/design-system/dist/tokens/colors.css +0 -464
  69. package/node_modules/@syntro/design-system/dist/tokens/colors.d.ts +0 -874
  70. package/node_modules/@syntro/design-system/dist/tokens/colors.d.ts.map +0 -1
  71. package/node_modules/@syntro/design-system/dist/tokens/colors.js +0 -564
  72. package/node_modules/@syntro/design-system/dist/tokens/effects.css +0 -43
  73. package/node_modules/@syntro/design-system/dist/tokens/effects.d.ts +0 -139
  74. package/node_modules/@syntro/design-system/dist/tokens/effects.d.ts.map +0 -1
  75. package/node_modules/@syntro/design-system/dist/tokens/effects.js +0 -121
  76. package/node_modules/@syntro/design-system/dist/tokens/index.d.ts +0 -12
  77. package/node_modules/@syntro/design-system/dist/tokens/index.d.ts.map +0 -1
  78. package/node_modules/@syntro/design-system/dist/tokens/index.js +0 -11
  79. package/node_modules/@syntro/design-system/dist/tokens/panel-shell.d.ts +0 -93
  80. package/node_modules/@syntro/design-system/dist/tokens/panel-shell.d.ts.map +0 -1
  81. package/node_modules/@syntro/design-system/dist/tokens/panel-shell.js +0 -72
  82. package/node_modules/@syntro/design-system/package.json +0 -55
  83. package/node_modules/@syntro/design-system/src/assets/syntrologie-logo.svg +0 -21
  84. package/node_modules/@syntro/design-system/src/assets/syntrologie-logomark.svg +0 -10
  85. package/node_modules/@syntrologie/shared-editor-ui/dist/cn.d.ts +0 -2
  86. package/node_modules/@syntrologie/shared-editor-ui/dist/cn.d.ts.map +0 -1
  87. package/node_modules/@syntrologie/shared-editor-ui/dist/cn.js +0 -3
  88. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts +0 -34
  89. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts.map +0 -1
  90. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.js +0 -161
  91. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.d.ts +0 -84
  92. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.d.ts.map +0 -1
  93. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPickerLit.js +0 -323
  94. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.d.ts +0 -7
  95. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.d.ts.map +0 -1
  96. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.js +0 -9
  97. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.d.ts +0 -25
  98. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.d.ts.map +0 -1
  99. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggleLit.js +0 -55
  100. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.d.ts +0 -23
  101. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.d.ts.map +0 -1
  102. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.js +0 -40
  103. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.d.ts +0 -33
  104. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.d.ts.map +0 -1
  105. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLineLit.js +0 -118
  106. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.d.ts +0 -7
  107. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.d.ts.map +0 -1
  108. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadge.js +0 -22
  109. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.d.ts +0 -32
  110. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.d.ts.map +0 -1
  111. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DetectionBadgeLit.js +0 -68
  112. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.d.ts +0 -8
  113. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.d.ts.map +0 -1
  114. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.js +0 -9
  115. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.d.ts +0 -34
  116. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.d.ts.map +0 -1
  117. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSectionLit.js +0 -57
  118. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.d.ts +0 -7
  119. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.d.ts.map +0 -1
  120. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.js +0 -4
  121. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.d.ts +0 -13
  122. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.d.ts.map +0 -1
  123. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButtonLit.js +0 -31
  124. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.d.ts +0 -7
  125. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.d.ts.map +0 -1
  126. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBody.js +0 -4
  127. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.d.ts +0 -7
  128. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.d.ts.map +0 -1
  129. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorBodyLit.js +0 -15
  130. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.d.ts +0 -13
  131. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.d.ts.map +0 -1
  132. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.js +0 -15
  133. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.d.ts +0 -36
  134. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.d.ts.map +0 -1
  135. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCardLit.js +0 -102
  136. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.d.ts +0 -7
  137. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.d.ts.map +0 -1
  138. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.js +0 -4
  139. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.d.ts +0 -20
  140. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.d.ts.map +0 -1
  141. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooterLit.js +0 -48
  142. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.d.ts +0 -9
  143. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.d.ts.map +0 -1
  144. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeader.js +0 -4
  145. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.d.ts +0 -16
  146. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.d.ts.map +0 -1
  147. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorHeaderLit.js +0 -25
  148. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts +0 -8
  149. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts.map +0 -1
  150. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.js +0 -8
  151. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.d.ts +0 -66
  152. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.d.ts.map +0 -1
  153. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInputLit.js +0 -87
  154. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.d.ts +0 -7
  155. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.d.ts.map +0 -1
  156. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayout.js +0 -4
  157. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.d.ts +0 -7
  158. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.d.ts.map +0 -1
  159. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorLayoutLit.js +0 -15
  160. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts +0 -25
  161. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts.map +0 -1
  162. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.js +0 -390
  163. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.d.ts +0 -66
  164. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.d.ts.map +0 -1
  165. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShellLit.js +0 -528
  166. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts +0 -8
  167. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts.map +0 -1
  168. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.js +0 -8
  169. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.d.ts +0 -41
  170. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.d.ts.map +0 -1
  171. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelectLit.js +0 -63
  172. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts +0 -8
  173. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts.map +0 -1
  174. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.js +0 -17
  175. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.d.ts +0 -55
  176. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.d.ts.map +0 -1
  177. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextareaLit.js +0 -92
  178. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.d.ts +0 -32
  179. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.d.ts.map +0 -1
  180. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.js +0 -85
  181. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.d.ts +0 -90
  182. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.d.ts.map +0 -1
  183. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlightLit.js +0 -242
  184. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.d.ts +0 -6
  185. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.d.ts.map +0 -1
  186. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyState.js +0 -4
  187. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.d.ts +0 -12
  188. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.d.ts.map +0 -1
  189. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EmptyStateLit.js +0 -21
  190. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.d.ts +0 -8
  191. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.d.ts.map +0 -1
  192. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeader.js +0 -5
  193. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.d.ts +0 -21
  194. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.d.ts.map +0 -1
  195. package/node_modules/@syntrologie/shared-editor-ui/dist/components/GroupHeaderLit.js +0 -33
  196. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.d.ts +0 -12
  197. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.d.ts.map +0 -1
  198. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.js +0 -40
  199. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.d.ts +0 -28
  200. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.d.ts.map +0 -1
  201. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourneyLit.js +0 -121
  202. package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.d.ts +0 -110
  203. package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.d.ts.map +0 -1
  204. package/node_modules/@syntrologie/shared-editor-ui/dist/controllers/PanelShellController.js +0 -481
  205. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.d.ts +0 -26
  206. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.d.ts.map +0 -1
  207. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.js +0 -202
  208. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.d.ts +0 -8
  209. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.d.ts.map +0 -1
  210. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useElementRect.js +0 -46
  211. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.d.ts +0 -24
  212. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.d.ts.map +0 -1
  213. package/node_modules/@syntrologie/shared-editor-ui/dist/hooks/useTriggerWhenStatus.js +0 -86
  214. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts +0 -36
  215. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts.map +0 -1
  216. package/node_modules/@syntrologie/shared-editor-ui/dist/index.js +0 -26
  217. package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.d.ts +0 -15
  218. package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.d.ts.map +0 -1
  219. package/node_modules/@syntrologie/shared-editor-ui/dist/lit-elements.js +0 -14
  220. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts +0 -33
  221. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.d.ts.map +0 -1
  222. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/elementChainRecommender.js +0 -68
  223. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.d.ts +0 -22
  224. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.d.ts.map +0 -1
  225. package/node_modules/@syntrologie/shared-editor-ui/dist/utils/selectorGenerator.js +0 -143
  226. package/node_modules/@syntrologie/shared-editor-ui/package.json +0 -55
@@ -1,306 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * Adaptive Overlays - Editor UI Component
4
- *
5
- * Main editor component, tabs, forms, tour drill-in, item editing, save/publish.
6
- * All React/JSX lives here; pure logic is imported from overlay-editor-state.
7
- */
8
- import { DetectionBadge, DismissedSection, EditorBody, EditorCard, EditorHeader, EditorInput, EditorLayout, EditorTextarea, EmptyState, GroupHeader, } from '@syntrologie/shared-editor-ui';
9
- import { MessageSquare, Route, Sparkles, Square, Tag, Zap } from 'lucide-react';
10
- import { useCallback, useEffect, useRef, useState } from 'react';
11
- import { filterConfig, flattenItems, getStepIcon, getStepLabel, parseOverlayItemKey, resolveAnchorRoute, resolveAnchorSelector, savePendingHighlight, } from './overlay-editor-state';
12
- // ============================================================================
13
- // Section Icons
14
- // ============================================================================
15
- const SECTION_ICON_MAP = {
16
- tooltips: MessageSquare,
17
- highlights: Sparkles,
18
- badges: Tag,
19
- pulses: Zap,
20
- modals: Square,
21
- tours: Route,
22
- };
23
- /** Renders the appropriate Lucide icon for a section type */
24
- function SectionIcon({ section, className }) {
25
- const IconComponent = SECTION_ICON_MAP[section];
26
- return _jsx(IconComponent, { size: 16, className: className });
27
- }
28
- // ============================================================================
29
- // Anchor Detection Hook
30
- // ============================================================================
31
- function useAnchorDetection(items, config) {
32
- const [detectionMap, setDetectionMap] = useState(new Map());
33
- const itemsRef = useRef(items);
34
- const configRef = useRef(config);
35
- itemsRef.current = items;
36
- configRef.current = config;
37
- useEffect(() => {
38
- const runDetection = () => {
39
- const map = new Map();
40
- for (const item of itemsRef.current) {
41
- let selectorToCheck = item.anchorId;
42
- // For tours, detect the first step's anchor
43
- if (item.isTour && !selectorToCheck) {
44
- const tours = configRef.current.tours || [];
45
- const tour = tours[item.index];
46
- if (tour && tour.steps.length > 0) {
47
- const firstStep = tour.steps[0];
48
- const action = firstStep.action;
49
- selectorToCheck = resolveAnchorSelector(action?.anchorId);
50
- }
51
- }
52
- if (!selectorToCheck) {
53
- map.set(item.key, { found: false, element: null });
54
- continue;
55
- }
56
- try {
57
- const el = document.querySelector(selectorToCheck);
58
- map.set(item.key, { found: el !== null, element: el });
59
- }
60
- catch {
61
- map.set(item.key, { found: false, element: null });
62
- }
63
- }
64
- setDetectionMap(map);
65
- };
66
- runDetection();
67
- const interval = setInterval(runDetection, 2000);
68
- return () => clearInterval(interval);
69
- }, []);
70
- return detectionMap;
71
- }
72
- // ============================================================================
73
- // OverlaysEditor Component
74
- // ============================================================================
75
- export function OverlaysEditor({ config, onChange, editor }) {
76
- const typedConfig = config;
77
- const [dismissedKeys, setDismissedKeys] = useState(() => editor.getDismissedKeys?.() ?? new Set());
78
- const [expandedTour, setExpandedTour] = useState(null);
79
- const [editingKey, setEditingKey] = useState(null);
80
- const [_previewMode, setPreviewMode] = useState('after');
81
- // Sync dismissed keys back to navigation context on every change
82
- useEffect(() => {
83
- editor.setDismissedKeys?.(dismissedKeys);
84
- }, [dismissedKeys, editor]);
85
- // React to global before/after toggle from the panel
86
- // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally omitted — adding config/typedConfig/previewConfig would cause infinite re-renders since previewConfig triggers state updates
87
- useEffect(() => {
88
- const mode = editor.previewMode;
89
- if (!mode)
90
- return;
91
- if (mode === 'before') {
92
- // Remove all overlay changes — push a config with every item filtered out
93
- const allKeys = new Set(flattenItems(typedConfig).map((item) => item.key));
94
- const empty = filterConfig(typedConfig, allKeys);
95
- editor.previewConfig(empty);
96
- }
97
- else {
98
- // Restore the full config
99
- editor.previewConfig(config);
100
- }
101
- }, [editor.previewMode]);
102
- // Consume initialEditKey from accordion navigation on mount
103
- const initialConsumed = useRef(false);
104
- useEffect(() => {
105
- if (editor.initialEditKey != null && !initialConsumed.current) {
106
- initialConsumed.current = true;
107
- const allFlat = flattenItems(typedConfig);
108
- const targetIdx = Number(editor.initialEditKey);
109
- if (targetIdx >= 0 && targetIdx < allFlat.length) {
110
- const target = allFlat[targetIdx];
111
- if (target.isTour) {
112
- setExpandedTour(target.key);
113
- }
114
- else {
115
- setEditingKey(target.key);
116
- if (target.anchorId) {
117
- editor.highlightElement(target.anchorId);
118
- }
119
- }
120
- }
121
- editor.clearInitialState?.();
122
- }
123
- else if (editor.initialCreate && !initialConsumed.current) {
124
- initialConsumed.current = true;
125
- editor.clearInitialState?.();
126
- }
127
- }, [editor, typedConfig]);
128
- const allItems = flattenItems(typedConfig);
129
- const activeItems = allItems.filter((item) => !dismissedKeys.has(item.key));
130
- const dismissedItems = allItems.filter((item) => dismissedKeys.has(item.key));
131
- const overlayItems = activeItems.filter((item) => !item.isTour);
132
- const tourItems = activeItems.filter((item) => item.isTour);
133
- const totalItems = activeItems.length;
134
- const [_hoveredKey, setHoveredKey] = useState(null);
135
- const detectionMap = useAnchorDetection(allItems, typedConfig);
136
- const foundCount = activeItems.filter((item) => detectionMap.get(item.key)?.found).length;
137
- const handleDismiss = useCallback((key) => {
138
- setDismissedKeys((prev) => {
139
- const next = new Set(prev);
140
- next.add(key);
141
- return next;
142
- });
143
- if (expandedTour === key)
144
- setExpandedTour(null);
145
- if (editingKey === key)
146
- setEditingKey(null);
147
- }, [expandedTour, editingKey]);
148
- const handleRestore = useCallback((key) => {
149
- setDismissedKeys((prev) => {
150
- const next = new Set(prev);
151
- next.delete(key);
152
- return next;
153
- });
154
- }, []);
155
- const handleCardClick = useCallback((item) => {
156
- if (item.isTour) {
157
- setExpandedTour((prev) => (prev === item.key ? null : item.key));
158
- }
159
- else {
160
- if (item.anchorId) {
161
- editor.highlightElement(item.anchorId);
162
- }
163
- setEditingKey(item.key);
164
- }
165
- }, [editor]);
166
- const handleBackToList = useCallback(() => {
167
- setEditingKey(null);
168
- setPreviewMode('after');
169
- editor.previewConfig(config);
170
- editor.clearHighlight();
171
- }, [editor, config]);
172
- // Register back handler in panel header when editing
173
- useEffect(() => {
174
- editor.setBackHandler?.(editingKey !== null ? handleBackToList : null);
175
- return () => editor.setBackHandler?.(null);
176
- }, [editingKey, handleBackToList, editor]);
177
- const _handleBeforeAfter = useCallback((mode) => {
178
- setPreviewMode(mode);
179
- if (mode === 'before') {
180
- const filtered = filterConfig(typedConfig, new Set([editingKey]));
181
- editor.previewConfig(filtered);
182
- }
183
- else {
184
- editor.previewConfig(config);
185
- }
186
- }, [typedConfig, editingKey, editor, config]);
187
- const handleFieldChange = useCallback((section, index, updater) => {
188
- const arr = (typedConfig[section] || []).slice();
189
- const item = { ...arr[index] };
190
- arr[index] = updater(item);
191
- const updated = { ...typedConfig, [section]: arr };
192
- onChange(updated);
193
- editor.setDirty(true);
194
- }, [typedConfig, onChange, editor]);
195
- const _handlePublish = useCallback(() => {
196
- if (dismissedKeys.size > 0) {
197
- const filtered = filterConfig(typedConfig, dismissedKeys);
198
- onChange(filtered);
199
- }
200
- editor.publish();
201
- }, [dismissedKeys, typedConfig, onChange, editor]);
202
- const handleBadgeClick = useCallback(async (item) => {
203
- const detection = detectionMap.get(item.key);
204
- if (detection?.found && item.anchorId) {
205
- editor.highlightElement(item.anchorId);
206
- }
207
- else {
208
- const route = resolveAnchorRoute(item.rawAnchorId);
209
- if (route) {
210
- if (item.anchorId)
211
- savePendingHighlight(item.anchorId);
212
- await editor.navigateTo(route);
213
- if (item.anchorId)
214
- editor.highlightElement(item.anchorId);
215
- }
216
- else if (item.anchorId) {
217
- editor.highlightElement(item.anchorId);
218
- }
219
- }
220
- }, [editor, detectionMap]);
221
- const handleCardHover = useCallback((item) => {
222
- setHoveredKey(item.key);
223
- if (item.anchorId) {
224
- editor.highlightElement(item.anchorId);
225
- }
226
- }, [editor]);
227
- const handleCardLeave = useCallback(() => {
228
- setHoveredKey(null);
229
- editor.clearHighlight();
230
- }, [editor]);
231
- // ---- Edit form renderers per overlay type ----
232
- const renderEditFields = (section, index) => {
233
- const arr = typedConfig[section] || [];
234
- const item = arr[index];
235
- if (!item)
236
- return null;
237
- const anchorId = resolveAnchorSelector(item.anchorId);
238
- switch (section) {
239
- case 'tooltips': {
240
- const content = item.content || {};
241
- return (_jsxs("div", { className: "se-py-1", children: [_jsx("div", { className: "se-text-[11px] se-font-mono se-text-slate-grey-8 se-py-1 se-px-2 se-bg-white/[0.04] se-rounded se-mb-3", children: anchorId }), _jsx(EditorInput, { label: "Title", value: content.title || '', onChange: (e) => handleFieldChange(section, index, (it) => ({
242
- ...it,
243
- content: { ...it.content, title: e.target.value },
244
- })) }), _jsx(EditorTextarea, { label: "Body", value: content.body || '', onChange: (e) => handleFieldChange(section, index, (it) => ({
245
- ...it,
246
- content: { ...it.content, body: e.target.value },
247
- })) })] }));
248
- }
249
- case 'highlights':
250
- return (_jsxs("div", { className: "se-py-1", children: [_jsx("div", { className: "se-text-[11px] se-font-mono se-text-slate-grey-8 se-py-1 se-px-2 se-bg-white/[0.04] se-rounded se-mb-3", children: anchorId }), _jsx(EditorInput, { label: "Color", value: item.style?.color || '', onChange: (e) => handleFieldChange(section, index, (it) => ({
251
- ...it,
252
- style: {
253
- ...(it.style || {}),
254
- color: e.target.value,
255
- },
256
- })) })] }));
257
- case 'badges':
258
- return (_jsxs("div", { className: "se-py-1", children: [_jsx("div", { className: "se-text-[11px] se-font-mono se-text-slate-grey-8 se-py-1 se-px-2 se-bg-white/[0.04] se-rounded se-mb-3", children: anchorId }), _jsx(EditorInput, { label: "Content", value: item.content || '', onChange: (e) => handleFieldChange(section, index, (it) => ({
259
- ...it,
260
- content: e.target.value,
261
- })) })] }));
262
- case 'pulses':
263
- return (_jsxs("div", { className: "se-py-1", children: [_jsx("div", { className: "se-text-[11px] se-font-mono se-text-slate-grey-8 se-py-1 se-px-2 se-bg-white/[0.04] se-rounded se-mb-3", children: anchorId }), _jsx(EditorInput, { label: "Duration (ms)", type: "number", value: item.duration || '', onChange: (e) => handleFieldChange(section, index, (it) => ({
264
- ...it,
265
- duration: Number(e.target.value) || undefined,
266
- })) })] }));
267
- case 'modals': {
268
- const content = item.content || {};
269
- return (_jsxs("div", { className: "se-py-1", children: [_jsx(EditorInput, { label: "Title", value: content.title || '', onChange: (e) => handleFieldChange(section, index, (it) => ({
270
- ...it,
271
- content: { ...it.content, title: e.target.value },
272
- })) }), _jsx(EditorTextarea, { label: "Body", value: content.body || '', onChange: (e) => handleFieldChange(section, index, (it) => ({
273
- ...it,
274
- content: { ...it.content, body: e.target.value },
275
- })) })] }));
276
- }
277
- default:
278
- return null;
279
- }
280
- };
281
- const renderTourDrillIn = (tourIdx) => {
282
- const tours = typedConfig.tours || [];
283
- const tour = tours[tourIdx];
284
- if (!tour)
285
- return null;
286
- return (_jsxs("div", { className: "se-p-3 se-rounded-lg se-border se-border-white/[0.08] se-bg-white/[0.02] se-mt-1 se-mb-2", children: [_jsxs("div", { className: "se-text-[13px] se-font-semibold se-text-slate-grey-10 se-mb-2", children: ['\u{1f3af}', " Tour: ", tour.tourId] }), _jsxs("label", { className: "se-flex se-items-center se-gap-2 se-text-xs se-text-[#d1d5db] se-mb-2", children: [_jsx("input", { type: "checkbox", checked: tour.autoStart || false, readOnly: true }), "Auto-start tour"] }), tour.steps.map((step, stepIdx) => (_jsxs("div", { className: "se-flex se-items-center se-gap-2 se-py-1.5 se-px-2 se-rounded se-border se-border-white/[0.04] se-mb-1 se-text-xs se-text-[#d1d5db]", children: [_jsxs("span", { className: "se-text-[11px] se-font-bold se-text-slate-grey-7 se-min-w-[18px]", children: [stepIdx + 1, "."] }), _jsx("span", { children: getStepIcon(step) }), _jsxs("div", { className: "se-flex-1 se-overflow-hidden", children: [_jsx("div", { children: getStepLabel(step) }), step.route && (_jsx("div", { className: "se-text-[10px] se-text-slate-grey-7 se-font-mono", children: step.route }))] })] }, step.id || stepIdx))), tour.steps.length === 0 && (_jsx("div", { className: "se-text-xs se-text-slate-grey-7 se-py-2", children: "No steps in this tour." })), _jsx("button", { type: "button", className: "se-py-1 se-px-2.5 se-rounded se-border se-border-white/10 se-bg-transparent se-text-slate-grey-8 se-text-[11px] se-cursor-pointer se-mt-2", onClick: () => setExpandedTour(null), children: "\u2190 Back to list" })] }));
287
- };
288
- const renderCard = (item) => {
289
- const detection = detectionMap.get(item.key);
290
- return (_jsxs("div", { children: [_jsxs(EditorCard, { itemKey: item.key, onClick: () => handleCardClick(item), className: "se-flex se-items-center se-gap-2", onMouseEnter: () => handleCardHover(item), onMouseLeave: handleCardLeave, children: [_jsx(DetectionBadge, { found: detection?.found ?? false, onClick: () => handleBadgeClick(item) }), _jsx("span", { className: "se-shrink-0 se-flex se-items-center -se-ml-1", onClick: (e) => {
291
- e.stopPropagation();
292
- handleCardClick(item);
293
- }, children: _jsx(SectionIcon, { section: item.section }) }), _jsx("span", { className: "se-flex-1 se-overflow-hidden se-text-ellipsis se-whitespace-nowrap", onClick: () => handleCardClick(item), children: item.summary }), _jsx("button", { type: "button", className: "se-py-0.5 se-px-1.5 se-rounded se-border-none se-bg-transparent se-text-slate-grey-7 se-text-sm se-cursor-pointer se-shrink-0 se-leading-none", onClick: (e) => {
294
- e.stopPropagation();
295
- handleDismiss(item.key);
296
- }, title: "Dismiss", children: "\u00D7" })] }), item.isTour && expandedTour === item.key && renderTourDrillIn(item.index)] }, item.key));
297
- };
298
- return (_jsxs(EditorLayout, { children: [_jsx(EditorHeader, { title: "Review Changes", subtitle: `${totalItems} item${totalItems !== 1 ? 's' : ''}${totalItems > 0 ? ` (${foundCount} found on this page)` : ''}`, onBack: () => editor.navigateHome() }), _jsx(EditorBody, { children: editingKey !== null ? ((() => {
299
- const ref = parseOverlayItemKey(editingKey);
300
- const editItem = allItems.find((it) => it.key === editingKey);
301
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "se-flex se-items-center se-gap-2 se-mb-3 se-text-[13px] se-font-semibold se-text-slate-grey-10", children: [_jsx("span", { children: editItem && _jsx(SectionIcon, { section: editItem.section }) }), _jsx("span", { children: editItem?.summary })] }), renderEditFields(ref.section, ref.index)] }));
302
- })()) : (_jsxs(_Fragment, { children: [allItems.length === 0 && _jsx(EmptyState, { message: "No overlays configured." }), overlayItems.length > 0 && (_jsxs(_Fragment, { children: [_jsx(GroupHeader, { label: "OVERLAYS", count: overlayItems.length }), overlayItems.map(renderCard)] })), tourItems.length > 0 && (_jsxs(_Fragment, { children: [_jsx(GroupHeader, { label: "TOURS", count: tourItems.length, className: overlayItems.length > 0 ? 'se-mt-4' : '' }), tourItems.map(renderCard)] })), dismissedItems.length > 0 && (_jsx(DismissedSection, { count: dismissedItems.length, children: dismissedItems.map((item) => (_jsxs("div", { className: "se-flex se-items-center se-gap-2 se-py-1.5 se-px-2.5 se-rounded-md se-border se-border-white/[0.03] se-bg-transparent se-mb-0.5 se-cursor-pointer se-text-xs se-text-slate-grey-6 se-opacity-60", children: [_jsx("span", { className: "se-shrink-0 se-flex se-items-center -se-ml-1", children: _jsx(SectionIcon, { section: item.section }) }), _jsx("span", { className: "se-flex-1 se-overflow-hidden se-text-ellipsis se-whitespace-nowrap se-line-through", children: item.summary }), _jsx("button", { type: "button", className: "se-py-0.5 se-px-1.5 se-rounded se-border-none se-bg-transparent se-text-blue-5 se-text-[11px] se-cursor-pointer se-shrink-0 se-leading-none", onClick: (e) => {
303
- e.stopPropagation();
304
- handleRestore(item.key);
305
- }, children: "Restore" })] }, item.key))) }))] })) })] }));
306
- }
@@ -1,94 +0,0 @@
1
- /**
2
- * Adaptive Overlays - Runtime Module (Lit)
3
- *
4
- * Visual overlay actions: highlight, pulse, badge, tooltip, celebrations.
5
- * Uses the Lit web component mountable instead of the React one.
6
- */
7
- import { executeTour } from './executors/tour';
8
- import { executeModal } from './modal';
9
- import type { ActionExecutor, BadgeAction, HighlightAction, PulseAction, TooltipAction } from './types';
10
- export { executeModal, executeTour };
11
- export type { TourAction, TourStep, WorkflowMeta } from './tour-types';
12
- /**
13
- * Execute a highlight action
14
- */
15
- export declare const executeHighlight: ActionExecutor<HighlightAction>;
16
- /**
17
- * Execute a pulse action
18
- */
19
- export declare const executePulse: ActionExecutor<PulseAction>;
20
- /**
21
- * Execute a badge action
22
- */
23
- export declare const executeBadge: ActionExecutor<BadgeAction>;
24
- /**
25
- * Execute a tooltip action
26
- */
27
- export declare const executeTooltip: ActionExecutor<TooltipAction>;
28
- /**
29
- * All executors provided by this app.
30
- * These are registered with the runtime's ExecutorRegistry.
31
- */
32
- export declare const executors: readonly [{
33
- readonly kind: "overlays:highlight";
34
- readonly executor: ActionExecutor<HighlightAction>;
35
- }, {
36
- readonly kind: "overlays:pulse";
37
- readonly executor: ActionExecutor<PulseAction>;
38
- }, {
39
- readonly kind: "overlays:badge";
40
- readonly executor: ActionExecutor<BadgeAction>;
41
- }, {
42
- readonly kind: "overlays:tooltip";
43
- readonly executor: ActionExecutor<TooltipAction>;
44
- }, {
45
- readonly kind: "overlays:modal";
46
- readonly executor: ActionExecutor<import("./types").ModalAction>;
47
- }, {
48
- readonly kind: "overlays:tour";
49
- readonly executor: ActionExecutor<import("./tour-types").TourAction>;
50
- }, {
51
- readonly kind: "overlays:celebrate";
52
- readonly executor: ActionExecutor<import("./types").CelebrateAction>;
53
- }];
54
- /**
55
- * App runtime manifest (Lit variant).
56
- */
57
- export declare const runtime: {
58
- id: string;
59
- version: string;
60
- name: string;
61
- description: string;
62
- executors: readonly [{
63
- readonly kind: "overlays:highlight";
64
- readonly executor: ActionExecutor<HighlightAction>;
65
- }, {
66
- readonly kind: "overlays:pulse";
67
- readonly executor: ActionExecutor<PulseAction>;
68
- }, {
69
- readonly kind: "overlays:badge";
70
- readonly executor: ActionExecutor<BadgeAction>;
71
- }, {
72
- readonly kind: "overlays:tooltip";
73
- readonly executor: ActionExecutor<TooltipAction>;
74
- }, {
75
- readonly kind: "overlays:modal";
76
- readonly executor: ActionExecutor<import("./types").ModalAction>;
77
- }, {
78
- readonly kind: "overlays:tour";
79
- readonly executor: ActionExecutor<import("./tour-types").TourAction>;
80
- }, {
81
- readonly kind: "overlays:celebrate";
82
- readonly executor: ActionExecutor<import("./types").CelebrateAction>;
83
- }];
84
- widgets: {
85
- id: string;
86
- component: import("./WorkflowWidgetLit").MountableWidget;
87
- metadata: {
88
- name: string;
89
- icon: string;
90
- description: string;
91
- };
92
- }[];
93
- };
94
- //# sourceMappingURL=runtime-lit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-lit.d.ts","sourceRoot":"","sources":["../src/runtime-lit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EAEX,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAGrC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMvE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,eAAe,CAsE5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,WAAW,CA0GpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,WAAW,CAoGpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,aAAa,CAwFxD,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;EAQZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBnB,CAAC"}