@wix/ditto-codegen-public 1.0.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 (170) hide show
  1. package/dist/examples-apps/ai-chatbot/.nvmrc +1 -0
  2. package/dist/examples-apps/ai-chatbot/README.md +21 -0
  3. package/dist/examples-apps/ai-chatbot/package-lock.json +7266 -0
  4. package/dist/examples-apps/ai-chatbot/package.json +35 -0
  5. package/dist/examples-apps/ai-chatbot/src/backend/api/chat/api.ts +62 -0
  6. package/dist/examples-apps/ai-chatbot/src/backend/api/settings/api.ts +39 -0
  7. package/dist/examples-apps/ai-chatbot/src/backend/database.ts +86 -0
  8. package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/ProductChat.module.css +3 -0
  9. package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/ProductChat.tsx +99 -0
  10. package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/page.json +6 -0
  11. package/dist/examples-apps/ai-chatbot/src/dashboard/pages/product/page.tsx +99 -0
  12. package/dist/examples-apps/ai-chatbot/src/dashboard/pages/settings/page.json +6 -0
  13. package/dist/examples-apps/ai-chatbot/src/dashboard/pages/settings/page.tsx +105 -0
  14. package/dist/examples-apps/ai-chatbot/src/dashboard/pages/wix_logo.svg +18 -0
  15. package/dist/examples-apps/ai-chatbot/src/dashboard/utils.ts +27 -0
  16. package/dist/examples-apps/ai-chatbot/src/dashboard/withProviders.tsx +15 -0
  17. package/dist/examples-apps/ai-chatbot/src/env.d.ts +4 -0
  18. package/dist/examples-apps/ai-chatbot/src/types.ts +4 -0
  19. package/dist/examples-apps/ai-chatbot/tsconfig.json +8 -0
  20. package/dist/examples-apps/ai-chatbot/wix.config.json +5 -0
  21. package/dist/examples-apps/chart-widget/.nvmrc +1 -0
  22. package/dist/examples-apps/chart-widget/README.md +21 -0
  23. package/dist/examples-apps/chart-widget/assets/chart-widget/thumbnail.png +0 -0
  24. package/dist/examples-apps/chart-widget/package-lock.json +6329 -0
  25. package/dist/examples-apps/chart-widget/package.json +30 -0
  26. package/dist/examples-apps/chart-widget/src/env.d.ts +4 -0
  27. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/common.ts +20 -0
  28. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element/bar-chart.tsx +53 -0
  29. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element/pie-chart.tsx +40 -0
  30. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element.json +20 -0
  31. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/element.tsx +53 -0
  32. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/panel/chart-type.tsx +47 -0
  33. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/panel/slice.tsx +72 -0
  34. package/dist/examples-apps/chart-widget/src/site/widgets/custom-elements/chart-widget/panel.tsx +90 -0
  35. package/dist/examples-apps/chart-widget/tsconfig.json +8 -0
  36. package/dist/examples-apps/chart-widget/wix.config.json +5 -0
  37. package/dist/examples-apps/custom-products-catalog/.nvmrc +1 -0
  38. package/dist/examples-apps/custom-products-catalog/README.md +21 -0
  39. package/dist/examples-apps/custom-products-catalog/package-lock.json +8694 -0
  40. package/dist/examples-apps/custom-products-catalog/package.json +33 -0
  41. package/dist/examples-apps/custom-products-catalog/src/dashboard/components/create-product.tsx +54 -0
  42. package/dist/examples-apps/custom-products-catalog/src/dashboard/hooks/stores.ts +60 -0
  43. package/dist/examples-apps/custom-products-catalog/src/dashboard/pages/page.json +5 -0
  44. package/dist/examples-apps/custom-products-catalog/src/dashboard/pages/page.tsx +297 -0
  45. package/dist/examples-apps/custom-products-catalog/src/dashboard/pages/wix_logo.svg +18 -0
  46. package/dist/examples-apps/custom-products-catalog/src/dashboard/withProviders.tsx +16 -0
  47. package/dist/examples-apps/custom-products-catalog/src/env.d.ts +4 -0
  48. package/dist/examples-apps/custom-products-catalog/tsconfig.json +8 -0
  49. package/dist/examples-apps/custom-products-catalog/wix.config.json +5 -0
  50. package/dist/examples-apps/inventory-countdown/.nvmrc +1 -0
  51. package/dist/examples-apps/inventory-countdown/README.md +21 -0
  52. package/dist/examples-apps/inventory-countdown/package-lock.json +7457 -0
  53. package/dist/examples-apps/inventory-countdown/package.json +33 -0
  54. package/dist/examples-apps/inventory-countdown/src/assets/stock-counter/site-plugin-logo.svg +27 -0
  55. package/dist/examples-apps/inventory-countdown/src/env.d.ts +4 -0
  56. package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/consts.ts +1 -0
  57. package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/panel.tsx +81 -0
  58. package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/plugin.json +24 -0
  59. package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/plugin.module.css +4 -0
  60. package/dist/examples-apps/inventory-countdown/src/site/plugins/custom-elements/stock-counter/plugin.tsx +132 -0
  61. package/dist/examples-apps/inventory-countdown/tsconfig.json +8 -0
  62. package/dist/examples-apps/inventory-countdown/wix.config.json +5 -0
  63. package/dist/examples-apps/mixpanel-analytics/.nvmrc +1 -0
  64. package/dist/examples-apps/mixpanel-analytics/README.md +21 -0
  65. package/dist/examples-apps/mixpanel-analytics/package-lock.json +6357 -0
  66. package/dist/examples-apps/mixpanel-analytics/package.json +31 -0
  67. package/dist/examples-apps/mixpanel-analytics/src/dashboard/components/ProjectToken.tsx +60 -0
  68. package/dist/examples-apps/mixpanel-analytics/src/dashboard/hooks/wix-embeds.ts +33 -0
  69. package/dist/examples-apps/mixpanel-analytics/src/dashboard/pages/page.json +5 -0
  70. package/dist/examples-apps/mixpanel-analytics/src/dashboard/pages/page.tsx +39 -0
  71. package/dist/examples-apps/mixpanel-analytics/src/dashboard/withProviders.tsx +19 -0
  72. package/dist/examples-apps/mixpanel-analytics/src/env.d.ts +4 -0
  73. package/dist/examples-apps/mixpanel-analytics/src/site/embedded-scripts/mixpanel-analytics/embedded.html +13 -0
  74. package/dist/examples-apps/mixpanel-analytics/src/site/embedded-scripts/mixpanel-analytics/embedded.json +7 -0
  75. package/dist/examples-apps/mixpanel-analytics/tsconfig.json +8 -0
  76. package/dist/examples-apps/mixpanel-analytics/wix.config.json +5 -0
  77. package/dist/examples-apps/my-locations-app/.nvmrc +1 -0
  78. package/dist/examples-apps/my-locations-app/README.md +21 -0
  79. package/dist/examples-apps/my-locations-app/package-lock.json +6351 -0
  80. package/dist/examples-apps/my-locations-app/package.json +31 -0
  81. package/dist/examples-apps/my-locations-app/src/dashboard/pages/page.json +5 -0
  82. package/dist/examples-apps/my-locations-app/src/dashboard/pages/page.tsx +89 -0
  83. package/dist/examples-apps/my-locations-app/src/dashboard/pages/wix_logo.svg +18 -0
  84. package/dist/examples-apps/my-locations-app/src/env.d.ts +4 -0
  85. package/dist/examples-apps/my-locations-app/tsconfig.json +8 -0
  86. package/dist/examples-apps/my-locations-app/wix.config.json +5 -0
  87. package/dist/examples-apps/site-popup/.nvmrc +1 -0
  88. package/dist/examples-apps/site-popup/README.md +21 -0
  89. package/dist/examples-apps/site-popup/package-lock.json +8033 -0
  90. package/dist/examples-apps/site-popup/package.json +34 -0
  91. package/dist/examples-apps/site-popup/postcss.config.js +7 -0
  92. package/dist/examples-apps/site-popup/src/components/activation-configuration.tsx +49 -0
  93. package/dist/examples-apps/site-popup/src/components/close-button.tsx +30 -0
  94. package/dist/examples-apps/site-popup/src/components/date-range-picker.tsx +49 -0
  95. package/dist/examples-apps/site-popup/src/components/image-picker.tsx +33 -0
  96. package/dist/examples-apps/site-popup/src/components/popup/index.css +3 -0
  97. package/dist/examples-apps/site-popup/src/components/popup/index.tsx +71 -0
  98. package/dist/examples-apps/site-popup/src/components/site-popup-settings.tsx +120 -0
  99. package/dist/examples-apps/site-popup/src/dashboard/hooks/wix-embeds.ts +33 -0
  100. package/dist/examples-apps/site-popup/src/dashboard/pages/page.tsx +78 -0
  101. package/dist/examples-apps/site-popup/src/dashboard/withProviders.tsx +19 -0
  102. package/dist/examples-apps/site-popup/src/env.d.ts +4 -0
  103. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/embedded.html +12 -0
  104. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/embedded.json +7 -0
  105. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/params.dev.json +7 -0
  106. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/popup-overlay/index.css +3 -0
  107. package/dist/examples-apps/site-popup/src/site/embedded-scripts/site-popup/popup-overlay/index.tsx +58 -0
  108. package/dist/examples-apps/site-popup/src/types.ts +14 -0
  109. package/dist/examples-apps/site-popup/tailwind.config.js +8 -0
  110. package/dist/examples-apps/site-popup/tsconfig.json +9 -0
  111. package/dist/examples-apps/site-popup/wix.config.json +5 -0
  112. package/dist/examples-apps/spis-examples/.nvmrc +1 -0
  113. package/dist/examples-apps/spis-examples/README.md +21 -0
  114. package/dist/examples-apps/spis-examples/package-lock.json +6903 -0
  115. package/dist/examples-apps/spis-examples/package.json +31 -0
  116. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-additional-fees/additional-fees/plugin.json +5 -0
  117. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-additional-fees/additional-fees/plugin.ts +24 -0
  118. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-discounts-trigger/discount-triggers/plugin.json +5 -0
  119. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-discounts-trigger/discount-triggers/plugin.ts +42 -0
  120. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-shipping-rates/shipping-rates/plugin.json +7 -0
  121. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-shipping-rates/shipping-rates/plugin.ts +34 -0
  122. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-validations/validations/plugin.json +6 -0
  123. package/dist/examples-apps/spis-examples/src/backend/service-plugins/ecom-validations/validations/plugin.ts +24 -0
  124. package/dist/examples-apps/spis-examples/src/backend/service-plugins/gift-cards-provider/gift-cards/plugin.json +5 -0
  125. package/dist/examples-apps/spis-examples/src/backend/service-plugins/gift-cards-provider/gift-cards/plugin.ts +38 -0
  126. package/dist/examples-apps/spis-examples/src/dashboard/pages/page.tsx +59 -0
  127. package/dist/examples-apps/spis-examples/src/dashboard/pages/wix_logo.svg +18 -0
  128. package/dist/examples-apps/spis-examples/src/env.d.ts +4 -0
  129. package/dist/examples-apps/spis-examples/tsconfig.json +8 -0
  130. package/dist/examples-apps/spis-examples/wix.config.json +5 -0
  131. package/dist/examples-apps/top-blog-posts/.nvmrc +1 -0
  132. package/dist/examples-apps/top-blog-posts/README.md +21 -0
  133. package/dist/examples-apps/top-blog-posts/package-lock.json +6406 -0
  134. package/dist/examples-apps/top-blog-posts/package.json +31 -0
  135. package/dist/examples-apps/top-blog-posts/src/dashboard/pages/blog-utils.ts +44 -0
  136. package/dist/examples-apps/top-blog-posts/src/dashboard/pages/page.tsx +129 -0
  137. package/dist/examples-apps/top-blog-posts/src/dashboard/pages/wix_logo.svg +18 -0
  138. package/dist/examples-apps/top-blog-posts/src/env.d.ts +4 -0
  139. package/dist/examples-apps/top-blog-posts/tsconfig.json +8 -0
  140. package/dist/examples-apps/top-blog-posts/wix.config.json +5 -0
  141. package/dist/out.js +1365 -0
  142. package/dist/wix-cli-templates/.nvmrc +1 -0
  143. package/dist/wix-cli-templates/README.md +21 -0
  144. package/dist/wix-cli-templates/package-lock.json +7118 -0
  145. package/dist/wix-cli-templates/package.json +35 -0
  146. package/dist/wix-cli-templates/src/assets/my-widget/thumbnail.png +0 -0
  147. package/dist/wix-cli-templates/src/backend/api/my-api/api.ts +29 -0
  148. package/dist/wix-cli-templates/src/backend/events/my-event/event.ts +16 -0
  149. package/dist/wix-cli-templates/src/backend/my-web-method.web.ts +21 -0
  150. package/dist/wix-cli-templates/src/backend/service-plugins/ecom-additional-fees/my-service-plugin/plugin.ts +9 -0
  151. package/dist/wix-cli-templates/src/backend/service-plugins/ecom-discounts-trigger/my-service-plugin/plugin.ts +14 -0
  152. package/dist/wix-cli-templates/src/backend/service-plugins/ecom-payment-settings/my-service-plugin/plugin.ts +12 -0
  153. package/dist/wix-cli-templates/src/backend/service-plugins/ecom-shipping-rates/my-service-plugin/plugin.ts +9 -0
  154. package/dist/wix-cli-templates/src/backend/service-plugins/ecom-validations/my-service-plugin/plugin.ts +9 -0
  155. package/dist/wix-cli-templates/src/backend/service-plugins/gift-cards-provider/my-service-plugin/plugin.ts +23 -0
  156. package/dist/wix-cli-templates/src/dashboard/modals/my-modal/modal.tsx +40 -0
  157. package/dist/wix-cli-templates/src/dashboard/pages/page.tsx +59 -0
  158. package/dist/wix-cli-templates/src/dashboard/pages/wix_logo.svg +18 -0
  159. package/dist/wix-cli-templates/src/env.d.ts +4 -0
  160. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/embedded.html +2 -0
  161. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/embedded.json +7 -0
  162. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/logger.ts +1 -0
  163. package/dist/wix-cli-templates/src/site/embedded-scripts/my-script/params.dev.json +3 -0
  164. package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/element.json +27 -0
  165. package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/element.module.css +32 -0
  166. package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/element.tsx +36 -0
  167. package/dist/wix-cli-templates/src/site/widgets/custom-elements/my-widget/panel.tsx +54 -0
  168. package/dist/wix-cli-templates/tsconfig.json +8 -0
  169. package/dist/wix-cli-templates/wix.config.json +5 -0
  170. package/package.json +28 -0
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "inventory-countdown",
3
+ "version": "1.0.0",
4
+ "dependencies": {
5
+ "@wix/dashboard": "^1.3.21",
6
+ "@wix/design-system": "^1.0.0",
7
+ "@wix/editor": "^1.308.0",
8
+ "@wix/site-window": "^1.19.0",
9
+ "@wix/stores": "^1.0.239",
10
+ "@wix/wix-ui-icons-common": "^3.0.0",
11
+ "react-to-webcomponent": "^2.0.0"
12
+ },
13
+ "devDependencies": {
14
+ "@types/react": "^16.0.0",
15
+ "@types/react-dom": "^16.0.0",
16
+ "@wix/sdk-types": "^1.0.0",
17
+ "@wix/cli": "^1.0.0",
18
+ "@wix/cli-app": "^1.0.0",
19
+ "react": "16.14.0",
20
+ "react-dom": "16.14.0",
21
+ "typescript": "^5.4.0"
22
+ },
23
+ "scripts": {
24
+ "wix": "wix",
25
+ "build": "wix app build",
26
+ "release": "wix app release",
27
+ "dev": "wix app dev",
28
+ "preview": "wix app preview",
29
+ "generate": "wix app generate",
30
+ "logs": "wix app logs",
31
+ "typecheck": "tsc --noEmit"
32
+ }
33
+ }
@@ -0,0 +1,27 @@
1
+ <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="1000.000000pt" fill="#333853" height="1000.000000pt" viewBox="0 0 1000.000000 1000.000000" preserveAspectRatio="xMidYMid meet">
2
+ <rect width="100%" height="100%" fill="#333853"/>
3
+ <g transform="translate(0.000000,1000.000000) scale(0.100000,-0.100000)" fill="#333853">
4
+ <path fill="#dae9ff" d="M0 5000 l0 -5000 5000 0 5000 0 0 5000 0 5000 -5000 0 -5000 0 0
5
+ -5000z m7694 2520 c220 -56 389 -218 458 -440 l23 -75 0 -2010 0 -2010 -29
6
+ -89 c-71 -216 -235 -371 -452 -426 -76 -20 -122 -20 -2699 -20 -2577 0 -2623
7
+ 0 -2699 20 -220 56 -389 218 -458 440 l-23 75 0 2010 0 2010 29 89 c70 214
8
+ 234 370 448 426 71 18 148 19 2699 19 2582 1 2627 1 2703 -19z"/>
9
+ <path fill="#dae9ff" d="M2450 4995 l0 -1905 1115 0 1115 0 0 1905 0 1905 -1115 0 -1115 0 0
10
+ -1905z m1558 1133 c19 -19 17 -2381 -2 -2397 -9 -8 -81 -11 -237 -9 l-224 3
11
+ -3 910 c-1 508 -6 913 -11 918 -5 5 -119 -26 -270 -73 -144 -45 -269 -80 -279
12
+ -78 -15 3 -17 23 -20 185 -2 171 -1 183 17 195 28 17 972 356 997 357 11 1 25
13
+ -4 32 -11z"/>
14
+ <path fill="#dae9ff" d="M5310 4995 l0 -1905 410 0 410 0 0 134 0 134 168 4 c166 3 168 3 234
15
+ 36 86 42 161 123 183 194 34 115 11 259 -52 329 -57 63 -103 82 -209 87 -132
16
+ 6 -227 -24 -299 -95 -35 -35 -64 -98 -65 -140 l0 -33 -245 0 c-165 0 -245 3
17
+ -245 11 0 43 39 170 77 249 86 179 243 303 458 362 70 19 106 22 290 23 189 0
18
+ 218 -2 294 -23 201 -55 347 -164 421 -316 93 -187 92 -391 -2 -584 -41 -85
19
+ -141 -188 -222 -229 l-59 -30 81 -56 80 -57 261 0 261 0 0 1905 0 1905 -196 0
20
+ c-183 0 -196 -1 -189 -17 31 -71 48 -166 48 -278 1 -106 -2 -129 -26 -198 -31
21
+ -89 -99 -228 -154 -315 -21 -32 -204 -241 -407 -463 l-369 -404 526 -3 527 -2
22
+ 0 -190 0 -190 -825 0 c-652 0 -826 3 -830 13 -2 6 -6 80 -9 162 l-6 150 146
23
+ 155 c217 230 659 710 764 830 108 124 124 152 156 278 62 243 5 412 -152 458
24
+ -74 21 -199 15 -265 -14 -122 -53 -198 -182 -199 -334 l0 -48 -246 0 -247 0 7
25
+ 61 c9 79 48 213 85 289 l28 60 -198 0 -199 0 0 -1905z"/>
26
+ </g>
27
+ </svg>
@@ -0,0 +1,4 @@
1
+ /// <reference types="@wix/cli-app/client" />
2
+ /// <reference types="@wix/sdk-types/client" />
3
+
4
+ // NOTE: This file should not be edited. This is an auto-generated file.
@@ -0,0 +1 @@
1
+ export const CALL_TO_ACTION = "Don't miss your chance";
@@ -0,0 +1,81 @@
1
+ import React, { type FC, useState, useEffect } from 'react';
2
+ import { widget } from '@wix/editor';
3
+ import {
4
+ SidePanel,
5
+ WixDesignSystemProvider,
6
+ Input,
7
+ FieldSet,
8
+ Slider,
9
+ ToggleSwitch,
10
+ FormField,
11
+ } from '@wix/design-system';
12
+ import '@wix/design-system/styles.global.css';
13
+ import { CALL_TO_ACTION } from './consts.js';
14
+
15
+ const Panel: FC = () => {
16
+ const [threshold, setThreshold] = useState<number>(3);
17
+ const [callToAction, setCallToAction] = useState<string>();
18
+ const [showBadge, setShowBadge] = useState<string>();
19
+
20
+ useEffect(() => {
21
+ widget
22
+ .getProp('threshold')
23
+ .then((threshold) => setThreshold(threshold ? Number(threshold) : 3));
24
+ widget.getProp('call-to-action').then(setCallToAction);
25
+ widget.getProp('show-badge').then(setShowBadge);
26
+ }, []);
27
+
28
+ return (
29
+ <WixDesignSystemProvider features={{ newColorsBranding: true }}>
30
+ <SidePanel.Field>
31
+ <FieldSet gap="medium" legend="Threshold" columns="auto 60px">
32
+ <Slider
33
+ onChange={(value) => {
34
+ setThreshold(value as number);
35
+ widget.setProp('threshold', value.toString());
36
+ }}
37
+ min={0}
38
+ max={25}
39
+ value={threshold}
40
+ displayMarks={false}
41
+ />
42
+ <Input
43
+ value={threshold}
44
+ size="small"
45
+ onChange={(event) => {
46
+ setThreshold(Number(event.target.value));
47
+ widget.setProp('threshold', event.target.value);
48
+ }}
49
+ />
50
+ </FieldSet>
51
+ </SidePanel.Field>
52
+ <SidePanel.Field>
53
+ <FormField label="Show Badge" labelPlacement="left" labelWidth="1fr">
54
+ <ToggleSwitch
55
+ size="small"
56
+ checked={showBadge === 'true'}
57
+ onChange={(event) => {
58
+ setShowBadge(event.target.checked.toString());
59
+ widget.setProp('show-badge', event.target.checked.toString());
60
+ }}
61
+ />
62
+ </FormField>
63
+ </SidePanel.Field>
64
+ <SidePanel.Field>
65
+ <FieldSet legend="Call to Action">
66
+ <Input
67
+ value={callToAction}
68
+ placeholder={CALL_TO_ACTION}
69
+ size="small"
70
+ onChange={(event) => {
71
+ setCallToAction(event.target.value);
72
+ widget.setProp('call-to-action', event.target.value || CALL_TO_ACTION);
73
+ }}
74
+ />
75
+ </FieldSet>
76
+ </SidePanel.Field>
77
+ </WixDesignSystemProvider>
78
+ );
79
+ };
80
+
81
+ export default Panel;
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://dev.wix.com/wix-cli/schemas/site-plugin.json",
3
+ "id": "c9e8841d-41ca-4f96-b2ce-b5216ab106f3",
4
+ "referenceComponentId": "6e531d9f-b44e-4a3d-bdbc-67a511be5238",
5
+ "marketData": {
6
+ "name": "Stock Countdown",
7
+ "logoUrl": "../../../../assets/stock-counter/site-plugin-logo.svg"
8
+ },
9
+ "placements": [
10
+ {
11
+ "appDefinitionId": "1380b703-ce81-ff05-f115-39571d94dfcd",
12
+ "widgetId": "13a94f09-2766-3c40-4a32-8edb5acdd8bc",
13
+ "slotId": "product-page-details-5"
14
+ },
15
+ {
16
+ "appDefinitionId": "a0c68605-c2e7-4c8d-9ea1-767f9770e087",
17
+ "widgetId": "6a25b678-53ec-4b37-a190-65fcd1ca1a63",
18
+ "slotId": "product-page-details-5"
19
+ }
20
+ ],
21
+ "installation": {
22
+ "autoAddToSite": true
23
+ }
24
+ }
@@ -0,0 +1,132 @@
1
+ import React, { useEffect, useState, type FC } from 'react';
2
+ import ReactDOM from 'react-dom';
3
+ import reactToWebComponent from 'react-to-webcomponent';
4
+ import { Badge, Box, Text, WixDesignSystemProvider } from '@wix/design-system';
5
+ import { Tag as TagIcon } from '@wix/wix-ui-icons-common';
6
+ import { inventory } from '@wix/stores';
7
+ import { window as siteWindow } from '@wix/site-window';
8
+ import styles from './plugin.module.css';
9
+ import '@wix/design-system/styles.global.css';
10
+ import { CALL_TO_ACTION } from './consts.js';
11
+
12
+ type Props = {
13
+ productId: string;
14
+ threshold: number;
15
+ callToAction: string;
16
+ showBadge: boolean;
17
+ };
18
+
19
+ const IN_STOCK = 'In Stock';
20
+
21
+ type InventoryStock = typeof IN_STOCK | number;
22
+
23
+ function getInventoryStock(productId: string): Promise<InventoryStock> {
24
+ return (
25
+ // For more information about the Inventory API, see https://dev.wix.com/docs/sdk/backend-modules/stores/inventory/query-inventory.
26
+ inventory
27
+ .queryInventory({
28
+ query: {
29
+ // For more information about query filters, see https://dev.wix.com/docs/rest/articles/getting-started/api-query-language#the-filter-section.
30
+ filter: JSON.stringify({ productId: { ['$eq']: productId } }),
31
+ },
32
+ })
33
+ .then((result) => {
34
+ const productInventory = result?.inventoryItems && result.inventoryItems[0];
35
+
36
+ if (!productInventory) {
37
+ return 0;
38
+ }
39
+
40
+ const shouldShowInStock = productInventory.variants?.some(
41
+ (variant) => variant.inStock && variant.quantity === undefined
42
+ );
43
+
44
+ if (shouldShowInStock) {
45
+ return IN_STOCK;
46
+ }
47
+
48
+ return productInventory.variants?.reduce((inStockCount, variant) => {
49
+ inStockCount += variant.quantity || 0;
50
+ return inStockCount;
51
+ }, 0) || 0;
52
+ })
53
+ );
54
+ }
55
+
56
+ // Customize this component to implement custom logic, change the functionality, and customize the appearance.
57
+ const CustomElement: FC<Props> = ({ threshold = 3, productId, showBadge, callToAction }) => {
58
+ const [inventoryStock, setInventoryStock] = useState<InventoryStock>();
59
+
60
+ useEffect(() => {
61
+ siteWindow.viewMode().then((mode) => {
62
+ if (mode === 'Site') {
63
+ getInventoryStock(productId).then(setInventoryStock);
64
+ } else {
65
+ setInventoryStock(threshold >= 1 ? threshold - 1 : IN_STOCK);
66
+ }
67
+ });
68
+ }, [productId, threshold]);
69
+
70
+ if (inventoryStock === undefined) {
71
+ return null;
72
+ }
73
+
74
+ return (
75
+ <WixDesignSystemProvider features={{ newColorsBranding: true }}>
76
+ <Box
77
+ align="left"
78
+ direction="vertical"
79
+ gap="1"
80
+ paddingTop={2}
81
+ className={styles.root}
82
+ >
83
+ {inventoryStock === IN_STOCK || threshold < inventoryStock ? (
84
+ <Box>
85
+ {showBadge && (
86
+ <Badge prefixIcon={<TagIcon />} skin="neutralSuccess">
87
+ {IN_STOCK}
88
+ </Badge>
89
+ )}
90
+ </Box>
91
+ ) : (
92
+ <>
93
+ {showBadge && (
94
+ <Box>
95
+ <Badge
96
+ prefixIcon={<TagIcon />}
97
+ skin="standard"
98
+ uppercase={false}
99
+ >
100
+ Selling fast
101
+ </Badge>
102
+ </Box>
103
+ )}
104
+ <Box direction="vertical">
105
+ <Text>{`Only ${inventoryStock} items left in stock`}</Text>
106
+ <Text size="tiny" light secondary>
107
+ {callToAction || CALL_TO_ACTION}
108
+ </Text>
109
+ </Box>
110
+ </>
111
+ )}
112
+ </Box>
113
+ </WixDesignSystemProvider>
114
+ );
115
+ };
116
+
117
+ const customElement = reactToWebComponent(
118
+ CustomElement,
119
+ React,
120
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
+ ReactDOM as any,
122
+ {
123
+ props: {
124
+ productId: 'string',
125
+ threshold: 'number',
126
+ callToAction: 'string',
127
+ showBadge: 'boolean',
128
+ },
129
+ }
130
+ );
131
+
132
+ export default customElement;
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "@wix/cli-app/tsconfig.app.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "types": ["react"]
6
+ },
7
+ "include": ["src"]
8
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://dev.wix.com/wix-cli/schemas/wix-config.json",
3
+ "appId": "96cab7cf-8633-444a-bba3-377f299060c3",
4
+ "projectId": "inventory-countdown"
5
+ }
@@ -0,0 +1 @@
1
+ 22.10.0
@@ -0,0 +1,21 @@
1
+ # mixpanel-analytics
2
+
3
+ This project was bootstrapped with [Create Wix App](https://www.npmjs.com/package/@wix/create-app).
4
+ Read more about it in the [Wix CLI for Apps
5
+ documentation](https://dev.wix.com/docs/build-apps/developer-tools/cli/get-started/about-the-wix-cli-for-apps).
6
+
7
+ ## Setup 🔧
8
+
9
+ ##### Install dependencies:
10
+
11
+ ```console
12
+ npm install
13
+ ```
14
+
15
+ ## Available Scripts
16
+
17
+ In the project directory, you can run:
18
+
19
+ ```console
20
+ npm run dev
21
+ ```