avada-components-seoon 1.0.29 → 1.0.30

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/README.md CHANGED
@@ -26,8 +26,13 @@ A smart banner component that promotes other Avada apps to users. It automatical
26
26
  - 🔄 Loading skeleton during data fetching
27
27
  - 📱 Responsive design with Shopify Polaris
28
28
  - 🎨 Modern UI with smooth animations
29
+ - 🔧 **Three configuration methods**: Default, Legacy (with appIds), and Dynamic (with JSON config)
29
30
 
30
- #### Basic Usage
31
+ #### Configuration Methods
32
+
33
+ The component supports three different ways to configure which apps to display:
34
+
35
+ ##### 1. Default Method (Show all apps)
31
36
 
32
37
  ```tsx
33
38
  import { CrossAppBanner } from 'avada-components-seoon';
@@ -37,7 +42,9 @@ function App() {
37
42
  }
38
43
  ```
39
44
 
40
- #### Advanced Usage
45
+ ##### 2. Legacy Method (Explicit appIds)
46
+
47
+ Specify exactly which apps to show in priority order:
41
48
 
42
49
  ```tsx
43
50
  import { CrossAppBanner } from 'avada-components-seoon';
@@ -46,29 +53,107 @@ function App() {
46
53
  return (
47
54
  <CrossAppBanner
48
55
  shopDomain="your-store.myshopify.com"
56
+ appIds={['avada-seo-suite', 'ai-product-copy', 'seoon-blog']}
49
57
  clickInstallCallback={() => {
50
58
  console.log('User clicked install button');
51
- // Track analytics, show confirmation, etc.
52
59
  }}
53
- appIds={['avada-seo-suite', 'ai-product-copy', 'seoon-blog']}
54
- urlJson="https://your-custom-banner-data-url.com/banners.json"
55
60
  />
56
61
  );
57
62
  }
58
63
  ```
59
64
 
65
+ ##### 3. Dynamic Method (JSON Configuration)
66
+
67
+ **Recommended for multi-app environments**: Configure apps dynamically from a JSON file without code changes:
68
+
69
+ ```tsx
70
+ import { CrossAppBanner } from 'avada-components-seoon';
71
+
72
+ function App() {
73
+ return (
74
+ <CrossAppBanner
75
+ shopDomain="your-store.myshopify.com"
76
+ appName="seoon"
77
+ position="homePage"
78
+ urlJson="https://cdn.example.com/bannerSeoApp.json"
79
+ clickInstallCallback={() => {
80
+ console.log('User clicked install button');
81
+ }}
82
+ />
83
+ );
84
+ }
85
+ ```
86
+
87
+ **JSON Configuration Structure:**
88
+
89
+ ```json
90
+ {
91
+ "appSeoon": [
92
+ {
93
+ "title": "Avada SEO Suite",
94
+ "description": "Boost your store's SEO",
95
+ "image": "https://example.com/icon.png",
96
+ "url": "https://apps.shopify.com/avada-seo-suite",
97
+ "actionLabel": "Install Now",
98
+ "key": "seo"
99
+ }
100
+ ],
101
+ "appOutSide": [],
102
+ "settingApp": {
103
+ "seoon": {
104
+ "homePage": ["avada-seo-suite", "seoon-blog"],
105
+ "settingsPage": ["ai-product-copy"]
106
+ }
107
+ }
108
+ }
109
+ ```
110
+
111
+ With this approach, you can manage banner configurations for different apps and pages from a single JSON file.
112
+
113
+ **Key Mapping Reference:**
114
+
115
+ The `key` field in JSON must match these values:
116
+
117
+ | App ID (appIds) | JSON Key (key) |
118
+ | -------------------- | ------------------- |
119
+ | `avada-seo-suite` | `seo` |
120
+ | `seoon-blog` | `blog` |
121
+ | `ai-product-copy` | `aiCopy` |
122
+ | `ap-speed-optimizer` | `plaza` |
123
+ | `joy-loyalty` | `joy-loyalty` |
124
+ | `chatty-ai` | `chatty-ai` |
125
+ | `gem-pages-landing` | `gem-pages-landing` |
126
+
60
127
  #### Props
61
128
 
62
- | Prop | Type | Required | Default | Description |
63
- | ---------------------- | ------------- | -------- | ----------- | ---------------------------------------------------------------- |
64
- | `shopDomain` | `string` | Yes | - | The Shopify domain of the store (e.g., 'my-store.myshopify.com') |
65
- | `clickInstallCallback` | `() => void` | No | - | Callback function triggered when user clicks the install button |
66
- | `appIds` | `AppIdKeys[]` | No | All apps | Array of app IDs to display in priority order |
67
- | `urlJson` | `string` | No | Default URL | Custom URL to fetch banner data from |
129
+ The component accepts different prop combinations depending on the configuration method:
130
+
131
+ **Common Props (all methods):**
132
+
133
+ | Prop | Type | Required | Default | Description |
134
+ | ---------------------- | ------------ | -------- | ------- | ---------------------------------------------------------------- |
135
+ | `shopDomain` | `string` | Yes | - | The Shopify domain of the store (e.g., 'my-store.myshopify.com') |
136
+ | `clickInstallCallback` | `() => void` | No | - | Callback function triggered when user clicks the install button |
137
+ | `urlJson` | `string` | No | - | URL to fetch banner data from |
138
+
139
+ **Legacy Method Props:**
140
+
141
+ | Prop | Type | Required | Description |
142
+ | -------- | ------------- | -------- | --------------------------------------------- |
143
+ | `appIds` | `AppIdKeys[]` | Yes | Array of app IDs to display in priority order |
144
+
145
+ **Dynamic Method Props:**
146
+
147
+ | Prop | Type | Required | Description |
148
+ | ---------- | -------- | -------- | -------------------------------------------------------------------- |
149
+ | `appName` | `string` | Yes | App name to lookup in JSON config (e.g., 'seoon', 'email-marketing') |
150
+ | `position` | `string` | Yes | Page position identifier (e.g., 'homePage', 'settingsPage') |
151
+
152
+ > **Note:** You can only use **one** configuration method at a time. TypeScript will prevent you from mixing methods.
68
153
 
69
154
  #### Available App IDs
70
155
 
71
- You can specify which apps to promote using the `appIds` prop:
156
+ You can specify which apps to promote using the `appIds` prop (Legacy Method):
72
157
 
73
158
  ```tsx
74
159
  // SEOon Suite Apps
@@ -90,14 +175,46 @@ const OTHER_APPS = [
90
175
  <CrossAppBanner shopDomain="store.myshopify.com" appIds={['avada-seo-suite', 'ai-product-copy']} />;
91
176
  ```
92
177
 
178
+ #### Which Method Should You Use?
179
+
180
+ **Use Default Method when:**
181
+
182
+ - You want to show all available apps
183
+ - Simple implementation with no customization needed
184
+ - Quick integration for testing
185
+
186
+ **Use Legacy Method when:**
187
+
188
+ - You need app-specific customization in code
189
+ - Different apps need different configurations
190
+ - You prefer code-based configuration over JSON
191
+
192
+ **Use Dynamic Method when:** ⭐ **Recommended**
193
+
194
+ - Managing multiple apps from your organization
195
+ - Need to update configurations without redeploying code
196
+ - Different pages/sections need different app promotions
197
+ - Want centralized configuration management
198
+ - A/B testing different app combinations
199
+
93
200
  #### How It Works
94
201
 
95
- 1. **Priority Check**: The component checks each app in the `appIds` array in order
96
- 2. **Installation Status**: For each app, it verifies if it's already installed on the store
202
+ ##### Default & Legacy Methods:
203
+
204
+ 1. **App Selection**: Uses provided `appIds` or defaults to all available apps
205
+ 2. **Installation Check**: Checks each app in priority order
97
206
  3. **Display Logic**: Shows the first non-installed, non-dismissed app
98
207
  4. **Loading State**: Displays a skeleton loader while fetching data
99
- 5. **Dismissal**: Users can dismiss the banner, and it won't show again on that page
100
- 6. **Persistence**: Dismissed state is saved in localStorage per page
208
+ 5. **Dismissal**: Users can dismiss the banner (saved in localStorage)
209
+
210
+ ##### Dynamic Method:
211
+
212
+ 1. **Fetch Configuration**: Loads JSON from `urlJson`
213
+ 2. **Lookup Config**: Finds apps using `settingApp[appName][position]`
214
+ 3. **Get App List**: Retrieves the configured app IDs for that location
215
+ 4. **Installation Check**: Checks each app in the configured order
216
+ 5. **Display Logic**: Shows the first non-installed, non-dismissed app
217
+ 6. **Flexibility**: Change displayed apps by updating the JSON file (no code changes needed)
101
218
 
102
219
  #### Styling
103
220
 
@@ -155,21 +272,33 @@ function App() {
155
272
 
156
273
  ## TypeScript Support
157
274
 
158
- This package is written in TypeScript and includes full type definitions. You'll get complete type safety when using the components:
275
+ This package is written in TypeScript and includes full type definitions with strict type safety:
159
276
 
160
277
  ```tsx
161
278
  import { CrossAppBanner, type CrossAppBannerProps, type AppIdKeys } from 'avada-components-seoon';
162
279
 
163
- // Props will be type-checked
164
- const props: CrossAppBannerProps = {
280
+ // Legacy method - type checked
281
+ const legacyProps: CrossAppBannerProps = {
165
282
  shopDomain: 'my-store.myshopify.com',
166
283
  appIds: ['avada-seo-suite', 'ai-product-copy'],
167
284
  clickInstallCallback: () => console.log('Clicked'),
168
285
  };
169
286
 
170
- function App() {
171
- return <CrossAppBanner {...props} />;
172
- }
287
+ // Dynamic method - type checked
288
+ const dynamicProps: CrossAppBannerProps = {
289
+ shopDomain: 'my-store.myshopify.com',
290
+ appName: 'seoon',
291
+ position: 'homePage',
292
+ urlJson: 'https://cdn.example.com/banner.json',
293
+ };
294
+
295
+ // TypeScript will prevent invalid combinations
296
+ const invalidProps: CrossAppBannerProps = {
297
+ shopDomain: 'my-store.myshopify.com',
298
+ appIds: ['avada-seo-suite'],
299
+ appName: 'seoon', // ❌ Error: Cannot use both methods
300
+ position: 'homePage',
301
+ };
173
302
 
174
303
  // Use type helpers
175
304
  const myApps: AppIdKeys[] = ['avada-seo-suite', 'seoon-blog'];
@@ -177,21 +306,59 @@ const myApps: AppIdKeys[] = ['avada-seo-suite', 'seoon-blog'];
177
306
 
178
307
  ## Examples
179
308
 
180
- ### Show Only Specific Apps
309
+ ### Example 1: Default Configuration
310
+
311
+ Show all available apps with default priority:
312
+
313
+ ```tsx
314
+ <CrossAppBanner shopDomain="store.myshopify.com" />
315
+ ```
316
+
317
+ ### Example 2: Legacy Method - Specific Apps
318
+
319
+ Show only specific apps in a custom order:
181
320
 
182
321
  ```tsx
183
322
  <CrossAppBanner shopDomain="store.myshopify.com" appIds={['avada-seo-suite', 'ai-product-copy']} />
184
323
  ```
185
324
 
186
- ### With Analytics Tracking
325
+ ### Example 3: Dynamic Method - Different Pages
326
+
327
+ Configure different banners for different pages using JSON:
328
+
329
+ ```tsx
330
+ // Home page
331
+ <CrossAppBanner
332
+ shopDomain="store.myshopify.com"
333
+ appName="seoon"
334
+ position="homePage"
335
+ urlJson="https://cdn.example.com/bannerSeoApp.json"
336
+ />
337
+
338
+ // Settings page
339
+ <CrossAppBanner
340
+ shopDomain="store.myshopify.com"
341
+ appName="seoon"
342
+ position="settingsPage"
343
+ urlJson="https://cdn.example.com/bannerSeoApp.json"
344
+ />
345
+ ```
346
+
347
+ ### Example 4: With Analytics Tracking
348
+
349
+ Track user interactions:
187
350
 
188
351
  ```tsx
189
352
  <CrossAppBanner
190
353
  shopDomain="store.myshopify.com"
354
+ appName="seoon"
355
+ position="homePage"
356
+ urlJson="https://cdn.example.com/bannerSeoApp.json"
191
357
  clickInstallCallback={() => {
192
358
  // Track to Google Analytics
193
359
  gtag('event', 'cross_app_banner_click', {
194
- app_name: 'cross-promotion',
360
+ app_name: 'seoon',
361
+ position: 'homePage',
195
362
  });
196
363
 
197
364
  // Track to custom analytics
@@ -200,10 +367,41 @@ const myApps: AppIdKeys[] = ['avada-seo-suite', 'seoon-blog'];
200
367
  />
201
368
  ```
202
369
 
203
- ### Custom Banner Data Source
370
+ ### Example 5: Multi-App Environment
371
+
372
+ Use dynamic configuration for multiple apps:
373
+
374
+ ```json
375
+ {
376
+ "settingApp": {
377
+ "seoon": {
378
+ "homePage": ["avada-seo-suite", "seoon-blog"],
379
+ "settingsPage": ["ai-product-copy"]
380
+ },
381
+ "email-marketing": {
382
+ "homePage": ["joy-loyalty", "chatty-ai"],
383
+ "campaignPage": ["gem-pages-landing"]
384
+ }
385
+ }
386
+ }
387
+ ```
204
388
 
205
389
  ```tsx
206
- <CrossAppBanner shopDomain="store.myshopify.com" urlJson="https://cdn.example.com/custom-banners.json" />
390
+ // In SEO app
391
+ <CrossAppBanner
392
+ shopDomain="store.myshopify.com"
393
+ appName="seoon"
394
+ position="homePage"
395
+ urlJson="https://cdn.example.com/bannerSeoApp.json"
396
+ />
397
+
398
+ // In Email Marketing app
399
+ <CrossAppBanner
400
+ shopDomain="store.myshopify.com"
401
+ appName="email-marketing"
402
+ position="homePage"
403
+ urlJson="https://cdn.example.com/bannerSeoApp.json"
404
+ />
207
405
  ```
208
406
 
209
407
  ## Contributing
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,EACL,mBAAmB,EAGnB,uBAAuB,EAIxB,MAAM,SAAS,CAAC;AASjB,OAAO,cAAc,CAAC;AAEtB,eAAO,MAAM,cAAc,EAAE,uBAoH5B,CAAC;;AAEF,wBAA0C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,EACL,mBAAmB,EAGnB,uBAAuB,EAIxB,MAAM,SAAS,CAAC;AASjB,OAAO,cAAc,CAAC;AAEtB,eAAO,MAAM,cAAc,EAAE,uBAsI5B,CAAC;;AAEF,wBAA0C"}
@@ -8,13 +8,25 @@ import { createInitialDismissedState, createInitialInstalledState, getStorageKey
8
8
  import { BannerLoadingSkeleton } from './BannerLoadingSkeleton';
9
9
  import { BannerCard } from './BannerCard';
10
10
  import './index.scss';
11
- export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds = APP_ID_KEYS, urlJson = '', }) => {
11
+ export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds: propAppIds, urlJson = '', appName, position, }) => {
12
12
  const { bannerData, isLoadingBannerData } = useFetchBannerData({ url: urlJson });
13
+ const getAppIdsFromConfig = () => {
14
+ if (appName && position && bannerData?.settingApp?.[appName]?.[position]) {
15
+ return bannerData.settingApp[appName][position];
16
+ }
17
+ return propAppIds ?? APP_ID_KEYS;
18
+ };
19
+ const [resolvedAppIds, setResolvedAppIds] = useState(propAppIds ?? APP_ID_KEYS);
13
20
  const [isBannerDismissed, setIsBannerDismissed] = useState(false);
14
21
  const [dismissedApps, setDismissedApps] = useState(createInitialDismissedState());
15
22
  const [currentPriorityIndex, setCurrentPriorityIndex] = useState(0);
16
23
  const [installedApps, setInstalledApps] = useState(createInitialInstalledState());
17
24
  const [foundNonInstalledApp, setFoundNonInstalledApp] = useState(false);
25
+ useEffect(() => {
26
+ const newAppIds = getAppIdsFromConfig();
27
+ setResolvedAppIds(newAppIds);
28
+ }, [bannerData, appName, position, propAppIds]);
29
+ const appIds = resolvedAppIds;
18
30
  const hasOutsideSeoApps = appIds.some(appId => APP_ID_KEYS_OUT_SIDE_SEO.includes(appId));
19
31
  // Load dismissed apps from localStorage
20
32
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"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"}
@@ -42,17 +42,38 @@ export interface CheckInstalledResponse {
42
42
  userType?: string;
43
43
  appId?: AppIdKeys;
44
44
  }
45
- export interface CrossAppBannerProps {
45
+ interface BaseCrossAppBannerProps {
46
46
  /** The shop domain to check app installation status */
47
47
  shopDomain: string;
48
48
  /** Callback function when user clicks install button */
49
49
  clickInstallCallback?: () => void;
50
50
  /** Custom content for the install button */
51
51
  buttonContent?: string;
52
- /** List of app IDs to check in priority order */
53
- appIds?: AppIdKeys[];
52
+ /** URL to fetch banner JSON configuration */
54
53
  urlJson?: string;
55
54
  }
55
+ /** Legacy configuration with explicit appIds */
56
+ interface LegacyCrossAppBannerProps extends BaseCrossAppBannerProps {
57
+ /** List of app IDs to check in priority order */
58
+ appIds: AppIdKeys[];
59
+ appName?: never;
60
+ position?: never;
61
+ }
62
+ /** New configuration with dynamic appName + position from JSON */
63
+ interface DynamicCrossAppBannerProps extends BaseCrossAppBannerProps {
64
+ /** App name for dynamic configuration (e.g., 'seoon', 'email-marketing') */
65
+ appName: string;
66
+ /** Position/page name for dynamic configuration (e.g., 'homePage', 'settingsPage') */
67
+ position: string;
68
+ appIds?: never;
69
+ }
70
+ /** Default configuration (no appIds, no appName/position) */
71
+ interface DefaultCrossAppBannerProps extends BaseCrossAppBannerProps {
72
+ appIds?: never;
73
+ appName?: never;
74
+ position?: never;
75
+ }
76
+ export type CrossAppBannerProps = LegacyCrossAppBannerProps | DynamicCrossAppBannerProps | DefaultCrossAppBannerProps;
56
77
  /**
57
78
  * CrossAppBanner Component Type
58
79
  *
@@ -61,23 +82,27 @@ export interface CrossAppBannerProps {
61
82
  *
62
83
  * @example
63
84
  * ```tsx
64
- * // Basic usage
85
+ * // Default usage (uses all apps from APP_ID_KEYS)
65
86
  * <CrossAppBanner
66
87
  * shopDomain="your-store.myshopify.com"
67
88
  * />
68
89
  *
69
- * // With custom callbacks
90
+ * // Legacy method: with explicit appIds
70
91
  * <CrossAppBanner
71
92
  * shopDomain="your-store.myshopify.com"
93
+ * appIds={['avada-seo-suite', 'ai-product-copy']}
72
94
  * clickInstallCallback={() => console.log('Install clicked')}
73
95
  * />
74
96
  *
75
- * // With specific apps to check
97
+ * // New method: with dynamic config from JSON
76
98
  * <CrossAppBanner
77
99
  * shopDomain="your-store.myshopify.com"
78
- * appIds={['avada-seo-suite', 'ai-product-copy']}
100
+ * appName="seoon"
101
+ * position="homePage"
102
+ * urlJson="https://example.com/banner.json"
79
103
  * />
80
104
  * ```
81
105
  */
82
106
  export type CrossAppBannerComponent = React.FC<CrossAppBannerProps>;
107
+ export {};
83
108
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,oBAAoB,CAAC;AACzC,eAAO,MAAM,QAAQ,eAAe,CAAC;AACrC,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,WAAW,UAQvB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,wBAAwB,UAAuD,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,eAAe,GACtB,OAAO,UAAU,GACjB,OAAO,qBAAqB,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAQlD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,oBAAoB,CAAC;AACzC,eAAO,MAAM,QAAQ,eAAe,CAAC;AACrC,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,WAAW,UAQvB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,wBAAwB,UAAuD,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,eAAe,GACtB,OAAO,UAAU,GACjB,OAAO,qBAAqB,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAQlD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,UAAU,uBAAuB;IAC/B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,gDAAgD;AAChD,UAAU,yBAA0B,SAAQ,uBAAuB;IACjE,iDAAiD;IACjD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,kEAAkE;AAClE,UAAU,0BAA2B,SAAQ,uBAAuB;IAClE,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,6DAA6D;AAC7D,UAAU,0BAA2B,SAAQ,uBAAuB;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAC3B,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC"}
@@ -9,6 +9,11 @@ export interface AppBannerItem {
9
9
  export interface BannerSeoAppData {
10
10
  appSeoon: AppBannerItem[];
11
11
  appOutSide: AppBannerItem[];
12
+ settingApp?: {
13
+ [appName: string]: {
14
+ [position: string]: string[];
15
+ };
16
+ };
12
17
  }
13
18
  interface UseFetchBannerDataOptions {
14
19
  url?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchBannerData.d.ts","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;CAChE;AAID,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,GAAQ,EACR,QAAe,GAChB,GAAE,yBAA8B,GAAG,wBAAwB,CA6B3D"}
1
+ {"version":3,"file":"useFetchBannerData.d.ts","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE;QACX,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SAC9B,CAAC;KACH,CAAC;CACH;AAED,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;CAChE;AAID,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,GAAQ,EACR,QAAe,GAChB,GAAE,yBAA8B,GAAG,wBAAwB,CA8B3D"}
@@ -18,8 +18,9 @@ export default function useFetchBannerData({ url = '', initLoad = true, } = {})
18
18
  dedupingInterval: TEN_MINUTES,
19
19
  focusThrottleInterval: TEN_MINUTES,
20
20
  });
21
+ console.log(data);
21
22
  return {
22
- bannerData: data ?? { appSeoon: [], appOutSide: [] },
23
+ bannerData: data ?? { appSeoon: [], appOutSide: [], settingApp: {} },
23
24
  isLoadingBannerData: isLoading,
24
25
  fetchError: error,
25
26
  refetchBannerData: () => mutate(),
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchBannerData.js","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,KAAK,CAAC;AA4BzB,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,IAAI,MACc,EAAE;IAC/B,MAAM,MAAM,GAAG,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5C,MAAM,OAAO,GAAG,KAAK,EAAE,QAAgB,EAA6B,EAAE;QACpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,YAAY,GAAqB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAmB,MAAM,EAAE,OAAO,EAAE;QACnF,iBAAiB,EAAE,KAAK;QACxB,qBAAqB,EAAE,KAAK;QAC5B,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,WAAW;QAC7B,qBAAqB,EAAE,WAAW;KACnC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACpD,mBAAmB,EAAE,SAAS;QAC9B,UAAU,EAAE,KAAK;QACjB,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useFetchBannerData.js","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,KAAK,CAAC;AAiCzB,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,IAAI,MACc,EAAE;IAC/B,MAAM,MAAM,GAAG,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5C,MAAM,OAAO,GAAG,KAAK,EAAE,QAAgB,EAA6B,EAAE;QACpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,YAAY,GAAqB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAmB,MAAM,EAAE,OAAO,EAAE;QACnF,iBAAiB,EAAE,KAAK;QACxB,qBAAqB,EAAE,KAAK;QAC5B,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,WAAW;QAC7B,qBAAqB,EAAE,WAAW;KACnC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO;QACL,UAAU,EAAE,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACpE,mBAAmB,EAAE,SAAS;QAC9B,UAAU,EAAE,KAAK;QACjB,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;KAClC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "avada-components-seoon",
3
- "version": "1.0.29",
3
+ "version": "1.0.30",
4
4
  "type": "module",
5
5
  "description": "A collection of React components built with Shopify Polaris",
6
6
  "main": "dist/index.js",