|
1 | 1 | # @prosdevlab/experience-sdk |
2 | 2 |
|
| 3 | +## 0.3.0 |
| 4 | + |
| 5 | +### Minor Changes |
| 6 | + |
| 7 | +- 2fc279c: **Phase 2: Presentation Layer - Modal & Inline Plugins** |
| 8 | + |
| 9 | + This release introduces two powerful new rendering plugins with built-in form support, completing the presentation layer for the Experience SDK. |
| 10 | + |
| 11 | + ## 🎉 New Features |
| 12 | + |
| 13 | + ### Modal Plugin |
| 14 | + |
| 15 | + - **Rich Content Modals**: Display announcements, promotions, and interactive content |
| 16 | + - **Built-in Forms**: Email capture, surveys, and feedback forms with validation |
| 17 | + - **Size Variants**: Small, medium, large, and extra-large sizes |
| 18 | + - **Hero Images**: Full-width images for visual impact |
| 19 | + - **Responsive Design**: Mobile fullscreen mode for optimal UX |
| 20 | + - **Keyboard Navigation**: Focus trap, Escape key, Tab navigation |
| 21 | + - **Animations**: Smooth fade-in/fade-out transitions |
| 22 | + - **Form States**: Success, error, and loading states |
| 23 | + - **API Methods**: `show()`, `remove()`, `isShowing()`, `showFormState()`, `resetForm()`, `getFormData()` |
| 24 | + |
| 25 | + ### Inline Plugin |
| 26 | + |
| 27 | + - **DOM Insertion**: Embed content anywhere in your page |
| 28 | + - **5 Insertion Methods**: `replace`, `append`, `prepend`, `before`, `after` |
| 29 | + - **CSS Selector Targeting**: Use any valid selector to target elements |
| 30 | + - **Dismissal with Persistence**: Users can dismiss and it persists in localStorage |
| 31 | + - **No Layout Disruption**: Seamlessly integrates with existing page structure |
| 32 | + - **API Methods**: `show()`, `remove()`, `isShowing()` |
| 33 | + |
| 34 | + ### Forms (Built into Modal) |
| 35 | + |
| 36 | + - **Field Types**: text, email, url, tel, number, textarea, select, checkbox, radio |
| 37 | + - **Validation**: Required, email, URL, pattern, custom validation, min/max length |
| 38 | + - **Real-time Feedback**: Validates on blur, shows errors inline |
| 39 | + - **Submission Handling**: Emits `experiences:modal:form:submit` event |
| 40 | + - **Success/Error States**: Built-in UI for post-submission states |
| 41 | + - **Pure Functions**: Validation and rendering logic easily extractable |
| 42 | + |
| 43 | + ## 🎨 Theming & Customization |
| 44 | + |
| 45 | + ### CSS Variables |
| 46 | + |
| 47 | + All plugins now support CSS variable theming: |
| 48 | + |
| 49 | + - **Modal**: `--xp-modal-*` variables for backdrop, dialog, title, content, buttons |
| 50 | + - **Forms**: `--xp-form-*` variables for inputs, labels, errors, submit button |
| 51 | + - **Banner**: `--xp-banner-*` variables (refactored from inline styles) |
| 52 | + - **Inline**: `--xp-inline-*` variables for custom styling |
| 53 | + |
| 54 | + See the [Theming Guide](https://prosdevlab.github.io/experience-sdk/guides/theming) for full reference. |
| 55 | + |
| 56 | + ## 🔧 API Improvements |
| 57 | + |
| 58 | + ### Runtime |
| 59 | + |
| 60 | + - **Auto-registration**: Modal and inline plugins are automatically registered |
| 61 | + - **Plugin API Access**: Expose plugin APIs via singleton (`experiences.modal.show()`) |
| 62 | + - **Trigger Event Handling**: Explicit listeners for each trigger type (exit intent, scroll depth, time delay) |
| 63 | + |
| 64 | + ### Display Conditions |
| 65 | + |
| 66 | + Seamless integration with existing display condition plugins: |
| 67 | + |
| 68 | + - **Exit Intent + Modal**: Capture emails before users leave |
| 69 | + - **Scroll Depth + Inline**: Progressive feature discovery |
| 70 | + - **Time Delay + Modal**: Time-sensitive promotions |
| 71 | + - **Page Visits + Banner**: Returning user messages |
| 72 | + |
| 73 | + ## 📦 Bundle Size |
| 74 | + |
| 75 | + - **Core SDK**: 13.4 KB gzipped (under 15 KB target ✅) |
| 76 | + - **All Plugins**: ~26 KB gzipped total (smaller than competitors like Pathfora at ~47 KB) |
| 77 | + - **Excellent Compression**: CSS-in-JS with CSS variables maintains small footprint |
| 78 | + |
| 79 | + ## 🧪 Testing |
| 80 | + |
| 81 | + - **432 tests passing** (unit, integration, browser tests) |
| 82 | + - **Modal Plugin**: 56 tests for core functionality, forms, keyboard nav, accessibility |
| 83 | + - **Inline Plugin**: 24 tests for DOM insertion, dismissal, persistence |
| 84 | + - **Form Validation**: 35 tests for all field types and edge cases |
| 85 | + - **Integration Tests**: 10 tests for plugin interactions |
| 86 | + - **Exit Intent**: 21 tests with timing and sensitivity validation |
| 87 | + |
| 88 | + ## 📚 Documentation |
| 89 | + |
| 90 | + - **Modal Plugin Reference**: Complete API docs with examples |
| 91 | + - **Inline Plugin Reference**: Full insertion method documentation |
| 92 | + - **Theming Guide**: CSS variable reference with examples |
| 93 | + - **Use Case Examples**: 4 complete implementation guides in playground |
| 94 | + |
| 95 | + ## 🚀 Playground Enhancements |
| 96 | + |
| 97 | + - **Layout Gallery Hub**: Visual directory for banner, modal, and inline layouts |
| 98 | + - **Navigation System**: Breadcrumbs and sub-navigation tabs |
| 99 | + - **Use Case Examples**: |
| 100 | + - Exit Intent Email Capture (exit intent + modal forms) |
| 101 | + - Feature Discovery Journey (scroll depth + inline + modal) |
| 102 | + - Time-Delayed Promotions (time delay + hero image modal) |
| 103 | + - Promotions & Announcements (banner examples) |
| 104 | + - **Interactive Demos**: Live examples with SDK integration |
| 105 | + |
| 106 | + ## ⚠️ Breaking Changes |
| 107 | + |
| 108 | + None. This is a **minor** release with backward compatibility. |
| 109 | + |
| 110 | + ## 🔜 Next Steps (Phase 3+) |
| 111 | + |
| 112 | + - Browser tests for form focus management |
| 113 | + - Composable form plugin (separate from modal) |
| 114 | + - Additional layout plugins (tooltip, slideout, sticky bar) |
| 115 | + - Multi-instance support with `instanceId` tracking |
| 116 | + |
| 117 | + *** |
| 118 | + |
| 119 | + **Migration Guide**: No migration needed. Simply upgrade and start using the new plugins! |
| 120 | + |
| 121 | + **Full Changelog**: See [Phase 2 Spec](https://github.com/prosdevlab/experience-sdk/blob/main/specs/phase-2-presentation-layer/spec.md) |
| 122 | + |
| 123 | +### Patch Changes |
| 124 | + |
| 125 | +- Updated dependencies [2fc279c] |
| 126 | + - @prosdevlab/experience-sdk-plugins@0.3.0 |
| 127 | + |
3 | 128 | ## 0.2.0 |
4 | 129 |
|
5 | 130 | ### Minor Changes |
|
0 commit comments