@prosdevlab/experience-sdk-plugins 0.2.0 → 0.3.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosdevlab/experience-sdk-plugins",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Official plugins for Experience SDK",
5
5
  "private": false,
6
6
  "type": "module",
@@ -86,15 +86,15 @@ export const bannerPlugin: PluginFunction = (plugin, instance, config) => {
86
86
  left: 0;
87
87
  right: 0;
88
88
  width: 100%;
89
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
90
- font-size: 14px;
91
- line-height: 1.5;
89
+ font-family: var(--xp-banner-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
90
+ font-size: var(--xp-banner-font-size, 14px);
91
+ line-height: var(--xp-banner-line-height, 1.5);
92
92
  box-sizing: border-box;
93
- z-index: 10000;
94
- background: #ffffff;
95
- color: #111827;
96
- border-bottom: 1px solid #e5e7eb;
97
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
93
+ z-index: var(--xp-banner-z-index, 10000);
94
+ background: var(--xp-banner-bg, #ffffff);
95
+ color: var(--xp-banner-color, #111827);
96
+ border-bottom: var(--xp-banner-border-width, 1px) solid var(--xp-banner-border-color, #e5e7eb);
97
+ box-shadow: var(--xp-banner-shadow, 0 1px 3px 0 rgba(0, 0, 0, 0.05));
98
98
  }
99
99
 
100
100
  .xp-banner--top {
@@ -104,17 +104,17 @@ export const bannerPlugin: PluginFunction = (plugin, instance, config) => {
104
104
  .xp-banner--bottom {
105
105
  bottom: 0;
106
106
  border-bottom: none;
107
- border-top: 1px solid #e5e7eb;
108
- box-shadow: 0 -1px 3px 0 rgba(0, 0, 0, 0.05);
107
+ border-top: var(--xp-banner-border-width, 1px) solid var(--xp-banner-border-color, #e5e7eb);
108
+ box-shadow: var(--xp-banner-shadow-bottom, 0 -1px 3px 0 rgba(0, 0, 0, 0.05));
109
109
  }
110
110
 
111
111
  .xp-banner__container {
112
112
  display: flex;
113
113
  align-items: center;
114
- gap: 16px;
115
- max-width: 1280px;
114
+ gap: var(--xp-banner-gap, 16px);
115
+ max-width: var(--xp-banner-max-width, 1280px);
116
116
  margin: 0 auto;
117
- padding: 14px 24px;
117
+ padding: var(--xp-banner-padding, 14px 24px);
118
118
  }
119
119
 
120
120
  .xp-banner__content {
@@ -122,36 +122,37 @@ export const bannerPlugin: PluginFunction = (plugin, instance, config) => {
122
122
  min-width: 0;
123
123
  display: flex;
124
124
  flex-direction: column;
125
- gap: 4px;
125
+ gap: var(--xp-banner-content-gap, 4px);
126
126
  }
127
127
 
128
128
  .xp-banner__title {
129
- font-weight: 600;
129
+ font-weight: var(--xp-banner-title-weight, 600);
130
130
  margin: 0;
131
- font-size: 15px;
132
- line-height: 1.4;
131
+ font-size: var(--xp-banner-title-size, 15px);
132
+ line-height: var(--xp-banner-title-line-height, 1.4);
133
+ color: var(--xp-banner-title-color, inherit);
133
134
  }
134
135
 
135
136
  .xp-banner__message {
136
137
  margin: 0;
137
- font-size: 14px;
138
- line-height: 1.5;
139
- color: #6b7280;
138
+ font-size: var(--xp-banner-message-size, 14px);
139
+ line-height: var(--xp-banner-message-line-height, 1.5);
140
+ color: var(--xp-banner-message-color, #6b7280);
140
141
  }
141
142
 
142
143
  .xp-banner__buttons {
143
144
  display: flex;
144
145
  align-items: center;
145
- gap: 8px;
146
+ gap: var(--xp-banner-buttons-gap, 8px);
146
147
  flex-shrink: 0;
147
148
  }
148
149
 
149
150
  .xp-banner__button {
150
- padding: 8px 16px;
151
+ padding: var(--xp-banner-button-padding, 8px 16px);
151
152
  border: none;
152
- border-radius: 6px;
153
- font-size: 14px;
154
- font-weight: 500;
153
+ border-radius: var(--xp-banner-button-radius, 6px);
154
+ font-size: var(--xp-banner-button-font-size, 14px);
155
+ font-weight: var(--xp-banner-button-font-weight, 500);
155
156
  cursor: pointer;
156
157
  transition: all 0.2s;
157
158
  text-decoration: none;
@@ -162,64 +163,64 @@ export const bannerPlugin: PluginFunction = (plugin, instance, config) => {
162
163
  }
163
164
 
164
165
  .xp-banner__button--primary {
165
- background: #2563eb;
166
- color: #ffffff;
166
+ background: var(--xp-banner-button-primary-bg, #2563eb);
167
+ color: var(--xp-banner-button-primary-color, #ffffff);
167
168
  }
168
169
 
169
170
  .xp-banner__button--primary:hover {
170
- background: #1d4ed8;
171
+ background: var(--xp-banner-button-primary-bg-hover, #1d4ed8);
171
172
  }
172
173
 
173
174
  .xp-banner__button--secondary {
174
- background: #f3f4f6;
175
- color: #374151;
176
- border: 1px solid #e5e7eb;
175
+ background: var(--xp-banner-button-secondary-bg, #f3f4f6);
176
+ color: var(--xp-banner-button-secondary-color, #374151);
177
+ border: var(--xp-banner-border-width, 1px) solid var(--xp-banner-button-secondary-border, #e5e7eb);
177
178
  }
178
179
 
179
180
  .xp-banner__button--secondary:hover {
180
- background: #e5e7eb;
181
+ background: var(--xp-banner-button-secondary-bg-hover, #e5e7eb);
181
182
  }
182
183
 
183
184
  .xp-banner__button--link {
184
185
  background: transparent;
185
- color: #2563eb;
186
- padding: 6px 12px;
187
- font-weight: 400;
186
+ color: var(--xp-banner-button-link-color, #2563eb);
187
+ padding: var(--xp-banner-button-link-padding, 6px 12px);
188
+ font-weight: var(--xp-banner-button-link-font-weight, 400);
188
189
  }
189
190
 
190
191
  .xp-banner__button--link:hover {
191
- background: #f3f4f6;
192
+ background: var(--xp-banner-button-link-bg-hover, #f3f4f6);
192
193
  text-decoration: underline;
193
194
  }
194
195
 
195
196
  .xp-banner__close {
196
197
  background: transparent;
197
198
  border: none;
198
- color: #9ca3af;
199
- font-size: 20px;
199
+ color: var(--xp-banner-close-color, #9ca3af);
200
+ font-size: var(--xp-banner-close-size, 20px);
200
201
  line-height: 1;
201
202
  cursor: pointer;
202
- padding: 4px;
203
+ padding: var(--xp-banner-close-padding, 4px);
203
204
  margin: 0;
204
205
  transition: color 0.2s;
205
206
  flex-shrink: 0;
206
- width: 28px;
207
- height: 28px;
207
+ width: var(--xp-banner-close-width, 28px);
208
+ height: var(--xp-banner-close-height, 28px);
208
209
  display: flex;
209
210
  align-items: center;
210
211
  justify-content: center;
211
- border-radius: 4px;
212
+ border-radius: var(--xp-banner-close-radius, 4px);
212
213
  }
213
214
 
214
215
  .xp-banner__close:hover {
215
- color: #111827;
216
- background: #f3f4f6;
216
+ color: var(--xp-banner-close-color-hover, #111827);
217
+ background: var(--xp-banner-close-bg-hover, #f3f4f6);
217
218
  }
218
219
 
219
220
  @media (max-width: 640px) {
220
221
  .xp-banner__container {
221
222
  flex-wrap: wrap;
222
- padding: 14px 16px;
223
+ padding: var(--xp-banner-padding-mobile, 14px 16px);
223
224
  position: relative;
224
225
  }
225
226
 
@@ -244,55 +245,55 @@ export const bannerPlugin: PluginFunction = (plugin, instance, config) => {
244
245
  }
245
246
  }
246
247
 
247
- /* Dark mode support */
248
+ /* Dark mode support - override CSS variables */
248
249
  @media (prefers-color-scheme: dark) {
249
250
  .xp-banner {
250
- background: #111827;
251
- color: #f9fafb;
252
- border-bottom-color: #1f2937;
251
+ background: var(--xp-banner-bg-dark, #111827);
252
+ color: var(--xp-banner-color-dark, #f9fafb);
253
+ border-bottom-color: var(--xp-banner-border-color-dark, #1f2937);
253
254
  }
254
255
 
255
256
  .xp-banner--bottom {
256
- border-top-color: #1f2937;
257
+ border-top-color: var(--xp-banner-border-color-dark, #1f2937);
257
258
  }
258
259
 
259
260
  .xp-banner__message {
260
- color: #9ca3af;
261
+ color: var(--xp-banner-message-color-dark, #9ca3af);
261
262
  }
262
263
 
263
264
  .xp-banner__button--primary {
264
- background: #3b82f6;
265
+ background: var(--xp-banner-button-primary-bg-dark, #3b82f6);
265
266
  }
266
267
 
267
268
  .xp-banner__button--primary:hover {
268
- background: #2563eb;
269
+ background: var(--xp-banner-button-primary-bg-hover-dark, #2563eb);
269
270
  }
270
271
 
271
272
  .xp-banner__button--secondary {
272
- background: #1f2937;
273
- color: #f9fafb;
274
- border-color: #374151;
273
+ background: var(--xp-banner-button-secondary-bg-dark, #1f2937);
274
+ color: var(--xp-banner-button-secondary-color-dark, #f9fafb);
275
+ border-color: var(--xp-banner-button-secondary-border-dark, #374151);
275
276
  }
276
277
 
277
278
  .xp-banner__button--secondary:hover {
278
- background: #374151;
279
+ background: var(--xp-banner-button-secondary-bg-hover-dark, #374151);
279
280
  }
280
281
 
281
282
  .xp-banner__button--link {
282
- color: #60a5fa;
283
+ color: var(--xp-banner-button-link-color-dark, #60a5fa);
283
284
  }
284
285
 
285
286
  .xp-banner__button--link:hover {
286
- background: #1f2937;
287
+ background: var(--xp-banner-button-link-bg-hover-dark, #1f2937);
287
288
  }
288
289
 
289
290
  .xp-banner__close {
290
- color: #6b7280;
291
+ color: var(--xp-banner-close-color-dark, #6b7280);
291
292
  }
292
293
 
293
294
  .xp-banner__close:hover {
294
- color: #f9fafb;
295
- background: #1f2937;
295
+ color: var(--xp-banner-close-color-hover-dark, #f9fafb);
296
+ background: var(--xp-banner-close-bg-hover-dark, #1f2937);
296
297
  }
297
298
  }
298
299
  `;
@@ -365,8 +365,7 @@ export const exitIntentPlugin: PluginFunction = (plugin, instance, config) => {
365
365
  initialize();
366
366
 
367
367
  // Cleanup on instance destroy
368
- const destroyHandler = () => {
368
+ instance.on('sdk:destroy', () => {
369
369
  cleanup();
370
- };
371
- instance.on('destroy', destroyHandler);
370
+ });
372
371
  };
package/src/index.ts CHANGED
@@ -10,6 +10,8 @@ export * from './banner';
10
10
  export * from './debug';
11
11
  export * from './exit-intent';
12
12
  export * from './frequency';
13
+ export * from './inline';
14
+ export * from './modal';
13
15
  export * from './page-visits';
14
16
  export * from './scroll-depth';
15
17
  export * from './time-delay';
@@ -0,0 +1,3 @@
1
+ export { inlinePlugin } from './inline';
2
+ export { insertContent, removeContent } from './insertion';
3
+ export type { InlineContent, InlinePlugin, InlinePluginConfig, InsertionPosition } from './types';