@faststore/core 2.1.8 → 2.1.9

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 (154) hide show
  1. package/.turbo/turbo-build.log +8 -8
  2. package/cms/faststore/sections.json +131 -7
  3. package/package.json +10 -8
  4. package/src/components/sections/BannerNewsletter/BannerNewsletter.tsx +27 -19
  5. package/src/components/sections/Newsletter/Newsletter.tsx +68 -122
  6. package/src/components/ui/Newsletter/Newsletter.tsx +198 -0
  7. package/src/components/ui/Newsletter/index.ts +2 -0
  8. package/.next/BUILD_ID +0 -1
  9. package/.next/build-manifest.json +0 -123
  10. package/.next/cache/.tsbuildinfo +0 -1
  11. package/.next/cache/config.json +0 -7
  12. package/.next/cache/eslint/.cache_1gneedd +0 -1
  13. package/.next/cache/next-server.js.nft.json +0 -1
  14. package/.next/cache/webpack/client-production/0.pack +0 -0
  15. package/.next/cache/webpack/client-production/index.pack +0 -0
  16. package/.next/cache/webpack/server-production/0.pack +0 -0
  17. package/.next/cache/webpack/server-production/index.pack +0 -0
  18. package/.next/export-marker.json +0 -1
  19. package/.next/images-manifest.json +0 -1
  20. package/.next/next-server.js.nft.json +0 -1
  21. package/.next/package.json +0 -1
  22. package/.next/prerender-manifest.json +0 -1
  23. package/.next/react-loadable-manifest.json +0 -44
  24. package/.next/required-server-files.json +0 -1
  25. package/.next/routes-manifest.json +0 -1
  26. package/.next/server/chunks/123.js +0 -58
  27. package/.next/server/chunks/143.js +0 -106
  28. package/.next/server/chunks/183.js +0 -90
  29. package/.next/server/chunks/184.js +0 -61
  30. package/.next/server/chunks/205.js +0 -722
  31. package/.next/server/chunks/247.js +0 -61
  32. package/.next/server/chunks/253.js +0 -535
  33. package/.next/server/chunks/269.js +0 -516
  34. package/.next/server/chunks/287.js +0 -58
  35. package/.next/server/chunks/289.js +0 -242
  36. package/.next/server/chunks/312.js +0 -697
  37. package/.next/server/chunks/350.js +0 -143
  38. package/.next/server/chunks/378.js +0 -326
  39. package/.next/server/chunks/487.js +0 -9142
  40. package/.next/server/chunks/502.js +0 -626
  41. package/.next/server/chunks/513.js +0 -257
  42. package/.next/server/chunks/576.js +0 -90
  43. package/.next/server/chunks/597.js +0 -211
  44. package/.next/server/chunks/650.js +0 -9142
  45. package/.next/server/chunks/676.js +0 -32
  46. package/.next/server/chunks/701.js +0 -87
  47. package/.next/server/chunks/74.js +0 -3949
  48. package/.next/server/chunks/825.js +0 -4039
  49. package/.next/server/chunks/854.js +0 -72
  50. package/.next/server/chunks/859.js +0 -959
  51. package/.next/server/chunks/886.js +0 -120
  52. package/.next/server/chunks/907.js +0 -1957
  53. package/.next/server/chunks/98.js +0 -124
  54. package/.next/server/chunks/font-manifest.json +0 -1
  55. package/.next/server/font-manifest.json +0 -1
  56. package/.next/server/middleware-build-manifest.js +0 -1
  57. package/.next/server/middleware-manifest.json +0 -6
  58. package/.next/server/middleware-react-loadable-manifest.js +0 -1
  59. package/.next/server/pages/404.js +0 -386
  60. package/.next/server/pages/404.js.nft.json +0 -1
  61. package/.next/server/pages/500.js +0 -388
  62. package/.next/server/pages/500.js.nft.json +0 -1
  63. package/.next/server/pages/[...slug].js +0 -778
  64. package/.next/server/pages/[...slug].js.nft.json +0 -1
  65. package/.next/server/pages/[slug]/p.js +0 -2366
  66. package/.next/server/pages/[slug]/p.js.nft.json +0 -1
  67. package/.next/server/pages/_app.js +0 -281
  68. package/.next/server/pages/_app.js.nft.json +0 -1
  69. package/.next/server/pages/_document.js +0 -340
  70. package/.next/server/pages/_document.js.nft.json +0 -1
  71. package/.next/server/pages/_error.js +0 -164
  72. package/.next/server/pages/_error.js.nft.json +0 -1
  73. package/.next/server/pages/account.js +0 -363
  74. package/.next/server/pages/account.js.nft.json +0 -1
  75. package/.next/server/pages/api/graphql.js +0 -365
  76. package/.next/server/pages/api/graphql.js.nft.json +0 -1
  77. package/.next/server/pages/api/preview.js +0 -119
  78. package/.next/server/pages/api/preview.js.nft.json +0 -1
  79. package/.next/server/pages/checkout.js +0 -363
  80. package/.next/server/pages/checkout.js.nft.json +0 -1
  81. package/.next/server/pages/en-US/404.html +0 -81
  82. package/.next/server/pages/en-US/404.json +0 -1
  83. package/.next/server/pages/en-US/500.html +0 -81
  84. package/.next/server/pages/en-US/500.json +0 -1
  85. package/.next/server/pages/en-US/account.html +0 -81
  86. package/.next/server/pages/en-US/account.json +0 -1
  87. package/.next/server/pages/en-US/checkout.html +0 -81
  88. package/.next/server/pages/en-US/checkout.json +0 -1
  89. package/.next/server/pages/en-US/login.html +0 -81
  90. package/.next/server/pages/en-US/login.json +0 -1
  91. package/.next/server/pages/en-US/s.html +0 -81
  92. package/.next/server/pages/en-US/s.json +0 -1
  93. package/.next/server/pages/en-US.html +0 -81
  94. package/.next/server/pages/en-US.json +0 -1
  95. package/.next/server/pages/index.js +0 -1018
  96. package/.next/server/pages/index.js.nft.json +0 -1
  97. package/.next/server/pages/login.js +0 -368
  98. package/.next/server/pages/login.js.nft.json +0 -1
  99. package/.next/server/pages/s.js +0 -466
  100. package/.next/server/pages/s.js.nft.json +0 -1
  101. package/.next/server/pages-manifest.json +0 -16
  102. package/.next/server/webpack-api-runtime.js +0 -229
  103. package/.next/server/webpack-runtime.js +0 -229
  104. package/.next/static/chunks/143.dd8a556e6957baa1.js +0 -1
  105. package/.next/static/chunks/234-7d72b0ee52936c13.js +0 -1
  106. package/.next/static/chunks/495.0ecd099878b2a36d.js +0 -1
  107. package/.next/static/chunks/502.ec90d1859d393d34.js +0 -1
  108. package/.next/static/chunks/597.f8d0595b113c70af.js +0 -1
  109. package/.next/static/chunks/64.7ea3677ac3a10e00.js +0 -1
  110. package/.next/static/chunks/651.7142f31ce1e052b3.js +0 -1
  111. package/.next/static/chunks/682-5cfea9ed52851ed1.js +0 -1
  112. package/.next/static/chunks/738-a5ff304828f20cbf.js +0 -1
  113. package/.next/static/chunks/741.52f7fb873418346f.js +0 -1
  114. package/.next/static/chunks/791-727eda8f766aa791.js +0 -1
  115. package/.next/static/chunks/98.97381d2021f86cd9.js +0 -1
  116. package/.next/static/chunks/framework-dfd14d7ce6600b03.js +0 -1
  117. package/.next/static/chunks/main-fd466221927468fd.js +0 -1
  118. package/.next/static/chunks/pages/404-c3b320b915df45bb.js +0 -1
  119. package/.next/static/chunks/pages/500-d37a3a2e931f6995.js +0 -1
  120. package/.next/static/chunks/pages/[...slug]-d4e0a671c6248369.js +0 -1
  121. package/.next/static/chunks/pages/[slug]/p-2ad8b84fd5d98814.js +0 -1
  122. package/.next/static/chunks/pages/_app-79d333aa6001a806.js +0 -1
  123. package/.next/static/chunks/pages/_error-a7a0c1d9bfbb4f38.js +0 -1
  124. package/.next/static/chunks/pages/account-86a1b6e7db03bab6.js +0 -1
  125. package/.next/static/chunks/pages/checkout-c77dbc66c0b35ec3.js +0 -1
  126. package/.next/static/chunks/pages/index-2912eeade1da43bf.js +0 -1
  127. package/.next/static/chunks/pages/login-bbf85bc59afce37c.js +0 -1
  128. package/.next/static/chunks/pages/s-dd486933e8ba7fbf.js +0 -1
  129. package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
  130. package/.next/static/chunks/webpack-c5cf5350bcb7f6f4.js +0 -1
  131. package/.next/static/css/0f8ce5203de8ae6f.css +0 -1
  132. package/.next/static/css/104f0f3ce3be32c6.css +0 -1
  133. package/.next/static/css/23a9d5dfc051ec6e.css +0 -1
  134. package/.next/static/css/287f5ba239375052.css +0 -1
  135. package/.next/static/css/2e00f7ba49c754b3.css +0 -1
  136. package/.next/static/css/6e41f1b6078c14c1.css +0 -1
  137. package/.next/static/css/7d822a137c54a781.css +0 -1
  138. package/.next/static/css/c7fc1f563fa33060.css +0 -1
  139. package/.next/static/css/d4a0d9df8c6df555.css +0 -1
  140. package/.next/static/css/e02cdad8fc000339.css +0 -1
  141. package/.next/static/m-KBQyrPnRowl0kHU2Zwh/_buildManifest.js +0 -1
  142. package/.next/static/m-KBQyrPnRowl0kHU2Zwh/_ssgManifest.js +0 -1
  143. package/.next/trace +0 -72
  144. package/public/~partytown/debug/partytown-atomics.js +0 -556
  145. package/public/~partytown/debug/partytown-media.js +0 -374
  146. package/public/~partytown/debug/partytown-sandbox-sw.js +0 -543
  147. package/public/~partytown/debug/partytown-sw.js +0 -59
  148. package/public/~partytown/debug/partytown-ww-atomics.js +0 -1789
  149. package/public/~partytown/debug/partytown-ww-sw.js +0 -1781
  150. package/public/~partytown/debug/partytown.js +0 -72
  151. package/public/~partytown/partytown-atomics.js +0 -2
  152. package/public/~partytown/partytown-media.js +0 -2
  153. package/public/~partytown/partytown-sw.js +0 -2
  154. package/public/~partytown/partytown.js +0 -2
@@ -0,0 +1,198 @@
1
+ import { Button as UIButton, InputField as UIInputField } from '@faststore/ui'
2
+ import { ComponentPropsWithRef, FormEvent } from 'react'
3
+ import { forwardRef, useRef } from 'react'
4
+ import { convertFromRaw } from 'draft-js'
5
+ import { stateToHTML } from 'draft-js-export-html'
6
+ import { Icon, useUI } from '@faststore/ui'
7
+ import { useNewsletter } from 'src/sdk/newsletter/useNewsletter'
8
+
9
+ const cmsToHtml = (content) => {
10
+ if (!content) {
11
+ return ''
12
+ }
13
+ const rawDraftContentState = JSON.parse(content)
14
+ const html = stateToHTML(convertFromRaw(rawDraftContentState), {
15
+ entityStyleFn: (entity) => {
16
+ const entityType = entity.get('type').toLowerCase()
17
+ if (entityType === 'link') {
18
+ const data = entity.getData()
19
+ return {
20
+ element: 'a',
21
+ attributes: {
22
+ 'data-fs-link': 'true',
23
+ 'data-fs-link-variant': 'inline',
24
+ 'data-fs-link-inverse': 'true',
25
+ 'data-fs-link-size': 'regular',
26
+ 'data-testid': 'fs-link',
27
+ href: data.url,
28
+ },
29
+ }
30
+ }
31
+ },
32
+ })
33
+
34
+ return html
35
+ }
36
+
37
+ export type SubscribeMessage = {
38
+ title: string
39
+ message: string
40
+ icon: string
41
+ }
42
+
43
+ export interface NewsletterProps
44
+ extends Omit<ComponentPropsWithRef<'form'>, 'title' | 'onSubmit'> {
45
+ /**
46
+ * Icon for the section.
47
+ */
48
+ icon: {
49
+ icon: string
50
+ alt: string
51
+ }
52
+ /**
53
+ * Title for the section.
54
+ */
55
+ title: string
56
+ /**
57
+ * A description for the section.
58
+ */
59
+ description?: string
60
+ /**
61
+ * The Privacy Policy disclaimer.
62
+ */
63
+ privacyPolicy?: string
64
+ /**
65
+ * The email input label.
66
+ */
67
+ emailInputLabel?: string
68
+ /**
69
+ * The name input visibility.
70
+ */
71
+ displayNameInput?: boolean
72
+ /**
73
+ * The name input label.
74
+ */
75
+ nameInputLabel?: string
76
+ /**
77
+ * The subscribe button label.
78
+ */
79
+ subscribeButtonLabel?: string
80
+ /**
81
+ * The subscribe button loading label.
82
+ */
83
+ subscribeButtonLoadingLabel?: string
84
+ /**
85
+ * The card Variant
86
+ */
87
+ card: Boolean
88
+
89
+ toastSubscribe: SubscribeMessage
90
+
91
+ toastSubscribeError: SubscribeMessage
92
+ }
93
+
94
+ const Newsletter = forwardRef<HTMLFormElement, NewsletterProps>(
95
+ function Newsletter(
96
+ {
97
+ icon,
98
+ title,
99
+ description,
100
+ privacyPolicy,
101
+ emailInputLabel,
102
+ displayNameInput,
103
+ nameInputLabel,
104
+ subscribeButtonLabel,
105
+ subscribeButtonLoadingLabel,
106
+ card,
107
+ toastSubscribe,
108
+ toastSubscribeError,
109
+ ...otherProps
110
+ },
111
+ ref
112
+ ) {
113
+ const { subscribeUser, loading, data } = useNewsletter()
114
+ const nameInputRef = useRef<HTMLInputElement>(null)
115
+ const emailInputRef = useRef<HTMLInputElement>(null)
116
+
117
+ const { pushToast } = useUI()
118
+
119
+ const handleSubmit = (event: FormEvent) => {
120
+ event.preventDefault()
121
+ subscribeUser({
122
+ data: {
123
+ name: nameInputRef.current?.value ?? '',
124
+ email: emailInputRef.current?.value ?? '',
125
+ },
126
+ })
127
+
128
+ if (data?.subscribeToNewsletter?.id) {
129
+ pushToast({
130
+ ...toastSubscribe,
131
+ status: 'INFO',
132
+ icon: <Icon name={toastSubscribe.icon} width={30} height={30} />,
133
+ })
134
+ } else {
135
+ pushToast({
136
+ ...toastSubscribeError,
137
+ status: 'ERROR',
138
+ icon: <Icon name={toastSubscribeError.icon} width={30} height={30} />,
139
+ })
140
+ }
141
+
142
+ const formElement = event.currentTarget as HTMLFormElement
143
+
144
+ formElement.reset()
145
+ }
146
+
147
+ return (
148
+ <div data-fs-newsletter={card ? 'card' : ''}>
149
+ <form
150
+ data-fs-newsletter-form
151
+ ref={ref}
152
+ onSubmit={handleSubmit}
153
+ {...otherProps}
154
+ className="layout__content"
155
+ >
156
+ <header data-fs-newsletter-header>
157
+ <h3>
158
+ <Icon name={icon.icon} width={32} height={32} />
159
+ {title}
160
+ </h3>
161
+ {description && <span> {description}</span>}
162
+ </header>
163
+
164
+ <div data-fs-newsletter-controls>
165
+ <>
166
+ {displayNameInput ? (
167
+ <UIInputField
168
+ inputRef={nameInputRef}
169
+ id="newsletter-name"
170
+ label={nameInputLabel}
171
+ required
172
+ />
173
+ ) : null}
174
+ <UIInputField
175
+ inputRef={emailInputRef}
176
+ id="newsletter-email"
177
+ label={emailInputLabel}
178
+ type="email"
179
+ required
180
+ />
181
+ <span
182
+ data-fs-newsletter-addendum
183
+ dangerouslySetInnerHTML={{
184
+ __html: cmsToHtml(privacyPolicy),
185
+ }}
186
+ ></span>
187
+ <UIButton variant="secondary" inverse type="submit">
188
+ {loading ? subscribeButtonLoadingLabel : subscribeButtonLabel}
189
+ </UIButton>
190
+ </>
191
+ </div>
192
+ </form>
193
+ </div>
194
+ )
195
+ }
196
+ )
197
+
198
+ export default Newsletter
@@ -0,0 +1,2 @@
1
+ export { default } from './Newsletter'
2
+ export type { NewsletterProps } from './Newsletter'
package/.next/BUILD_ID DELETED
@@ -1 +0,0 @@
1
- m-KBQyrPnRowl0kHU2Zwh
@@ -1,123 +0,0 @@
1
- {
2
- "polyfillFiles": [
3
- "static/chunks/polyfills-c67a75d1b6f99dc8.js"
4
- ],
5
- "devFiles": [],
6
- "ampDevFiles": [],
7
- "lowPriorityFiles": [
8
- "static/m-KBQyrPnRowl0kHU2Zwh/_buildManifest.js",
9
- "static/m-KBQyrPnRowl0kHU2Zwh/_ssgManifest.js"
10
- ],
11
- "rootMainFiles": [],
12
- "pages": {
13
- "/": [
14
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
15
- "static/chunks/framework-dfd14d7ce6600b03.js",
16
- "static/chunks/main-fd466221927468fd.js",
17
- "static/chunks/738-a5ff304828f20cbf.js",
18
- "static/css/23a9d5dfc051ec6e.css",
19
- "static/chunks/682-5cfea9ed52851ed1.js",
20
- "static/css/287f5ba239375052.css",
21
- "static/chunks/234-7d72b0ee52936c13.js",
22
- "static/css/c7fc1f563fa33060.css",
23
- "static/chunks/pages/index-2912eeade1da43bf.js"
24
- ],
25
- "/404": [
26
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
27
- "static/chunks/framework-dfd14d7ce6600b03.js",
28
- "static/chunks/main-fd466221927468fd.js",
29
- "static/chunks/738-a5ff304828f20cbf.js",
30
- "static/css/23a9d5dfc051ec6e.css",
31
- "static/chunks/682-5cfea9ed52851ed1.js",
32
- "static/css/e02cdad8fc000339.css",
33
- "static/chunks/pages/404-c3b320b915df45bb.js"
34
- ],
35
- "/500": [
36
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
37
- "static/chunks/framework-dfd14d7ce6600b03.js",
38
- "static/chunks/main-fd466221927468fd.js",
39
- "static/chunks/738-a5ff304828f20cbf.js",
40
- "static/css/23a9d5dfc051ec6e.css",
41
- "static/chunks/682-5cfea9ed52851ed1.js",
42
- "static/css/e02cdad8fc000339.css",
43
- "static/chunks/pages/500-d37a3a2e931f6995.js"
44
- ],
45
- "/[...slug]": [
46
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
47
- "static/chunks/framework-dfd14d7ce6600b03.js",
48
- "static/chunks/main-fd466221927468fd.js",
49
- "static/chunks/738-a5ff304828f20cbf.js",
50
- "static/css/23a9d5dfc051ec6e.css",
51
- "static/chunks/682-5cfea9ed52851ed1.js",
52
- "static/css/d4a0d9df8c6df555.css",
53
- "static/chunks/791-727eda8f766aa791.js",
54
- "static/css/6e41f1b6078c14c1.css",
55
- "static/chunks/pages/[...slug]-d4e0a671c6248369.js"
56
- ],
57
- "/[slug]/p": [
58
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
59
- "static/chunks/framework-dfd14d7ce6600b03.js",
60
- "static/chunks/main-fd466221927468fd.js",
61
- "static/chunks/738-a5ff304828f20cbf.js",
62
- "static/css/23a9d5dfc051ec6e.css",
63
- "static/chunks/682-5cfea9ed52851ed1.js",
64
- "static/css/287f5ba239375052.css",
65
- "static/chunks/234-7d72b0ee52936c13.js",
66
- "static/css/0f8ce5203de8ae6f.css",
67
- "static/chunks/pages/[slug]/p-2ad8b84fd5d98814.js"
68
- ],
69
- "/_app": [
70
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
71
- "static/chunks/framework-dfd14d7ce6600b03.js",
72
- "static/chunks/main-fd466221927468fd.js",
73
- "static/css/104f0f3ce3be32c6.css",
74
- "static/chunks/pages/_app-79d333aa6001a806.js"
75
- ],
76
- "/_error": [
77
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
78
- "static/chunks/framework-dfd14d7ce6600b03.js",
79
- "static/chunks/main-fd466221927468fd.js",
80
- "static/chunks/pages/_error-a7a0c1d9bfbb4f38.js"
81
- ],
82
- "/account": [
83
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
84
- "static/chunks/framework-dfd14d7ce6600b03.js",
85
- "static/chunks/main-fd466221927468fd.js",
86
- "static/chunks/738-a5ff304828f20cbf.js",
87
- "static/css/23a9d5dfc051ec6e.css",
88
- "static/chunks/682-5cfea9ed52851ed1.js",
89
- "static/chunks/pages/account-86a1b6e7db03bab6.js"
90
- ],
91
- "/checkout": [
92
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
93
- "static/chunks/framework-dfd14d7ce6600b03.js",
94
- "static/chunks/main-fd466221927468fd.js",
95
- "static/chunks/738-a5ff304828f20cbf.js",
96
- "static/css/23a9d5dfc051ec6e.css",
97
- "static/chunks/682-5cfea9ed52851ed1.js",
98
- "static/chunks/pages/checkout-c77dbc66c0b35ec3.js"
99
- ],
100
- "/login": [
101
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
102
- "static/chunks/framework-dfd14d7ce6600b03.js",
103
- "static/chunks/main-fd466221927468fd.js",
104
- "static/chunks/738-a5ff304828f20cbf.js",
105
- "static/css/23a9d5dfc051ec6e.css",
106
- "static/chunks/682-5cfea9ed52851ed1.js",
107
- "static/css/e02cdad8fc000339.css",
108
- "static/chunks/pages/login-bbf85bc59afce37c.js"
109
- ],
110
- "/s": [
111
- "static/chunks/webpack-c5cf5350bcb7f6f4.js",
112
- "static/chunks/framework-dfd14d7ce6600b03.js",
113
- "static/chunks/main-fd466221927468fd.js",
114
- "static/chunks/738-a5ff304828f20cbf.js",
115
- "static/css/23a9d5dfc051ec6e.css",
116
- "static/chunks/682-5cfea9ed52851ed1.js",
117
- "static/css/d4a0d9df8c6df555.css",
118
- "static/chunks/791-727eda8f766aa791.js",
119
- "static/chunks/pages/s-dd486933e8ba7fbf.js"
120
- ]
121
- },
122
- "ampFirstPages": []
123
- }