@makeswift/runtime 0.0.21 → 0.1.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 (196) hide show
  1. package/dist/Box.cjs.js +502 -0
  2. package/dist/Box.cjs.js.map +1 -0
  3. package/dist/Box.es.js +496 -0
  4. package/dist/Box.es.js.map +1 -0
  5. package/dist/Button.cjs.js +308 -0
  6. package/dist/Button.cjs.js.map +1 -0
  7. package/dist/Button.es.js +301 -0
  8. package/dist/Button.es.js.map +1 -0
  9. package/dist/Carousel.cjs.js +487 -0
  10. package/dist/Carousel.cjs.js.map +1 -0
  11. package/dist/Carousel.es.js +481 -0
  12. package/dist/Carousel.es.js.map +1 -0
  13. package/dist/Countdown.cjs.js +340 -0
  14. package/dist/Countdown.cjs.js.map +1 -0
  15. package/dist/Countdown.es.js +334 -0
  16. package/dist/Countdown.es.js.map +1 -0
  17. package/dist/Divider.cjs.js +115 -0
  18. package/dist/Divider.cjs.js.map +1 -0
  19. package/dist/Divider.es.js +109 -0
  20. package/dist/Divider.es.js.map +1 -0
  21. package/dist/Embed.cjs.js +129 -0
  22. package/dist/Embed.cjs.js.map +1 -0
  23. package/dist/Embed.es.js +123 -0
  24. package/dist/Embed.es.js.map +1 -0
  25. package/dist/Form.cjs.js +1705 -0
  26. package/dist/Form.cjs.js.map +1 -0
  27. package/dist/Form.es.js +1677 -0
  28. package/dist/Form.es.js.map +1 -0
  29. package/dist/Image.cjs2.js +148 -0
  30. package/dist/Image.cjs2.js.map +1 -0
  31. package/dist/Image.es2.js +141 -0
  32. package/dist/Image.es2.js.map +1 -0
  33. package/dist/Navigation.cjs.js +736 -0
  34. package/dist/Navigation.cjs.js.map +1 -0
  35. package/dist/Navigation.es.js +710 -0
  36. package/dist/Navigation.es.js.map +1 -0
  37. package/dist/Root.cjs.js +143 -0
  38. package/dist/Root.cjs.js.map +1 -0
  39. package/dist/Root.es.js +137 -0
  40. package/dist/Root.es.js.map +1 -0
  41. package/dist/SocialLinks.cjs.js +900 -0
  42. package/dist/SocialLinks.cjs.js.map +1 -0
  43. package/dist/SocialLinks.es.js +874 -0
  44. package/dist/SocialLinks.es.js.map +1 -0
  45. package/dist/Text.cjs.js +475 -0
  46. package/dist/Text.cjs.js.map +1 -0
  47. package/dist/Text.es.js +467 -0
  48. package/dist/Text.es.js.map +1 -0
  49. package/dist/Video.cjs.js +121 -0
  50. package/dist/Video.cjs.js.map +1 -0
  51. package/dist/Video.es.js +114 -0
  52. package/dist/Video.es.js.map +1 -0
  53. package/dist/components.cjs.js +80 -58
  54. package/dist/components.cjs.js.map +1 -1
  55. package/dist/components.es.js +41 -18
  56. package/dist/components.es.js.map +1 -1
  57. package/dist/cssMediaRules.cjs.js +222 -0
  58. package/dist/cssMediaRules.cjs.js.map +1 -0
  59. package/dist/cssMediaRules.es.js +213 -0
  60. package/dist/cssMediaRules.es.js.map +1 -0
  61. package/dist/descriptors.es.js +1 -1
  62. package/dist/index.cjs.js +1411 -7742
  63. package/dist/index.cjs.js.map +1 -1
  64. package/dist/index.cjs2.js +522 -0
  65. package/dist/index.cjs2.js.map +1 -0
  66. package/dist/index.cjs3.js +141 -0
  67. package/dist/index.cjs3.js.map +1 -0
  68. package/dist/index.cjs4.js +18 -0
  69. package/dist/index.cjs4.js.map +1 -0
  70. package/dist/index.es.js +1342 -7698
  71. package/dist/index.es.js.map +1 -1
  72. package/dist/index.es2.js +514 -0
  73. package/dist/index.es2.js.map +1 -0
  74. package/dist/index.es3.js +134 -0
  75. package/dist/index.es3.js.map +1 -0
  76. package/dist/index.es4.js +13 -0
  77. package/dist/index.es4.js.map +1 -0
  78. package/dist/next.cjs.js +19 -201
  79. package/dist/next.cjs.js.map +1 -1
  80. package/dist/next.es.js +12 -192
  81. package/dist/next.es.js.map +1 -1
  82. package/dist/placeholders.cjs.js +13 -0
  83. package/dist/placeholders.cjs.js.map +1 -0
  84. package/dist/placeholders.es.js +12 -0
  85. package/dist/placeholders.es.js.map +1 -0
  86. package/dist/react-builder-preview.cjs.js +23 -33
  87. package/dist/react-builder-preview.cjs.js.map +1 -1
  88. package/dist/react-builder-preview.es.js +13 -23
  89. package/dist/react-builder-preview.es.js.map +1 -1
  90. package/dist/react-page.es.js +1 -1
  91. package/dist/react.cjs.js +16 -28
  92. package/dist/react.cjs.js.map +1 -1
  93. package/dist/react.es.js +8 -20
  94. package/dist/react.es.js.map +1 -1
  95. package/dist/types/components/builtin/Box/Box.d.ts +1 -4
  96. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  97. package/dist/types/components/builtin/Box/animations.d.ts +1 -8
  98. package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
  99. package/dist/types/components/builtin/Box/constants.d.ts +9 -0
  100. package/dist/types/components/builtin/Box/constants.d.ts.map +1 -0
  101. package/dist/types/components/builtin/Box/index.d.ts +2 -2
  102. package/dist/types/components/builtin/Box/index.d.ts.map +1 -1
  103. package/dist/types/components/builtin/Box/register.d.ts +3 -0
  104. package/dist/types/components/builtin/Box/register.d.ts.map +1 -0
  105. package/dist/types/components/builtin/Button/Button.d.ts +1 -4
  106. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  107. package/dist/types/components/builtin/Button/contants.d.ts +2 -0
  108. package/dist/types/components/builtin/Button/contants.d.ts.map +1 -0
  109. package/dist/types/components/builtin/Button/index.d.ts +1 -1
  110. package/dist/types/components/builtin/Button/index.d.ts.map +1 -1
  111. package/dist/types/components/builtin/Button/register.d.ts +3 -0
  112. package/dist/types/components/builtin/Button/register.d.ts.map +1 -0
  113. package/dist/types/components/builtin/Carousel/Carousel.d.ts +0 -3
  114. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  115. package/dist/types/components/builtin/Carousel/index.d.ts +1 -1
  116. package/dist/types/components/builtin/Carousel/index.d.ts.map +1 -1
  117. package/dist/types/components/builtin/Carousel/register.d.ts +3 -0
  118. package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -0
  119. package/dist/types/components/builtin/Countdown/Countdown.d.ts +0 -3
  120. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  121. package/dist/types/components/builtin/Countdown/index.d.ts +1 -1
  122. package/dist/types/components/builtin/Countdown/index.d.ts.map +1 -1
  123. package/dist/types/components/builtin/Countdown/register.d.ts +3 -0
  124. package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -0
  125. package/dist/types/components/builtin/Divider/Divider.d.ts +0 -3
  126. package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
  127. package/dist/types/components/builtin/Divider/index.d.ts +1 -1
  128. package/dist/types/components/builtin/Divider/index.d.ts.map +1 -1
  129. package/dist/types/components/builtin/Divider/register.d.ts +3 -0
  130. package/dist/types/components/builtin/Divider/register.d.ts.map +1 -0
  131. package/dist/types/components/builtin/Embed/Embed.d.ts +0 -3
  132. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  133. package/dist/types/components/builtin/Embed/index.d.ts +1 -1
  134. package/dist/types/components/builtin/Embed/index.d.ts.map +1 -1
  135. package/dist/types/components/builtin/Embed/register.d.ts +3 -0
  136. package/dist/types/components/builtin/Embed/register.d.ts.map +1 -0
  137. package/dist/types/components/builtin/Form/Form.d.ts +1 -10
  138. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  139. package/dist/types/components/builtin/Form/context/FormContext.d.ts +6 -0
  140. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  141. package/dist/types/components/builtin/Form/index.d.ts +1 -1
  142. package/dist/types/components/builtin/Form/index.d.ts.map +1 -1
  143. package/dist/types/components/builtin/Form/register.d.ts +3 -0
  144. package/dist/types/components/builtin/Form/register.d.ts.map +1 -0
  145. package/dist/types/components/builtin/Image/Image.d.ts +0 -3
  146. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  147. package/dist/types/components/builtin/Image/index.d.ts +1 -1
  148. package/dist/types/components/builtin/Image/index.d.ts.map +1 -1
  149. package/dist/types/components/builtin/Image/register.d.ts +3 -0
  150. package/dist/types/components/builtin/Image/register.d.ts.map +1 -0
  151. package/dist/types/components/builtin/Navigation/Navigation.d.ts +0 -3
  152. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  153. package/dist/types/components/builtin/Navigation/index.d.ts +1 -1
  154. package/dist/types/components/builtin/Navigation/index.d.ts.map +1 -1
  155. package/dist/types/components/builtin/Navigation/register.d.ts +3 -0
  156. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -0
  157. package/dist/types/components/builtin/Root/Root.d.ts +0 -2
  158. package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
  159. package/dist/types/components/builtin/Root/index.d.ts +1 -1
  160. package/dist/types/components/builtin/Root/index.d.ts.map +1 -1
  161. package/dist/types/components/builtin/Root/register.d.ts +3 -0
  162. package/dist/types/components/builtin/Root/register.d.ts.map +1 -0
  163. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +0 -3
  164. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
  165. package/dist/types/components/builtin/SocialLinks/index.d.ts +1 -1
  166. package/dist/types/components/builtin/SocialLinks/index.d.ts.map +1 -1
  167. package/dist/types/components/builtin/SocialLinks/register.d.ts +3 -0
  168. package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -0
  169. package/dist/types/components/builtin/Text/Text.d.ts +0 -3
  170. package/dist/types/components/builtin/Text/Text.d.ts.map +1 -1
  171. package/dist/types/components/builtin/Text/index.d.ts +1 -1
  172. package/dist/types/components/builtin/Text/index.d.ts.map +1 -1
  173. package/dist/types/components/builtin/Text/register.d.ts +3 -0
  174. package/dist/types/components/builtin/Text/register.d.ts.map +1 -0
  175. package/dist/types/components/builtin/Video/Video.d.ts +0 -3
  176. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
  177. package/dist/types/components/builtin/Video/index.d.ts +1 -1
  178. package/dist/types/components/builtin/Video/index.d.ts.map +1 -1
  179. package/dist/types/components/builtin/Video/register.d.ts +3 -0
  180. package/dist/types/components/builtin/Video/register.d.ts.map +1 -0
  181. package/dist/types/components/builtin/index.d.ts +1 -2
  182. package/dist/types/components/builtin/index.d.ts.map +1 -1
  183. package/dist/types/components/builtin/register.d.ts +3 -0
  184. package/dist/types/components/builtin/register.d.ts.map +1 -0
  185. package/dist/types/next.d.ts +12 -2
  186. package/dist/types/next.d.ts.map +1 -1
  187. package/dist/useBoxShadow.cjs.js +78 -0
  188. package/dist/useBoxShadow.cjs.js.map +1 -0
  189. package/dist/useBoxShadow.es.js +77 -0
  190. package/dist/useBoxShadow.es.js.map +1 -0
  191. package/dist/useMediaQuery.cjs.js +26 -0
  192. package/dist/useMediaQuery.cjs.js.map +1 -0
  193. package/dist/useMediaQuery.es.js +25 -0
  194. package/dist/useMediaQuery.es.js.map +1 -0
  195. package/next/plugin.js +1 -0
  196. package/package.json +4 -1
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ var React = require("react");
4
+ var styled = require("styled-components");
5
+ var css = require("@emotion/css");
6
+ var next = require("./index.cjs.js");
7
+ var cssMediaRules = require("./cssMediaRules.cjs.js");
8
+ var jsxRuntime = require("react/jsx-runtime");
9
+ require("use-sync-external-store/shim/with-selector");
10
+ require("./react-page.cjs.js");
11
+ require("redux");
12
+ require("redux-thunk");
13
+ require("./actions.cjs.js");
14
+ require("./descriptors.cjs.js");
15
+ require("./style.cjs.js");
16
+ require("./color.cjs.js");
17
+ require("./image.cjs.js");
18
+ require("next/dynamic");
19
+ require("next/document");
20
+ require("slate");
21
+ require("@emotion/server/create-instance");
22
+ require("@apollo/client");
23
+ require("@apollo/client/link/batch-http");
24
+ require("./graphql.cjs.js");
25
+ require("./text-input.cjs.js");
26
+ require("./shape.cjs.js");
27
+ require("color");
28
+ require("react-dom");
29
+ require("html-react-parser");
30
+ require("next/head");
31
+ require("uuid/v4");
32
+ require("corporate-ipsum");
33
+ function _interopDefaultLegacy(e) {
34
+ return e && typeof e === "object" && "default" in e ? e : { "default": e };
35
+ }
36
+ var styled__default = /* @__PURE__ */ _interopDefaultLegacy(styled);
37
+ const Block = styled__default["default"].div`
38
+ display: block;
39
+ padding: 0.5em;
40
+ font-size: 1em;
41
+ `;
42
+ const Label = styled__default["default"].div`
43
+ margin-top: 0.25em;
44
+ `;
45
+ const Segment = styled__default["default"].div`
46
+ flex: 1;
47
+ text-align: center;
48
+ `;
49
+ const Container = styled__default["default"].div.withConfig({
50
+ shouldForwardProp: (prop) => !["margin", "variant", "size", "shape", "gap", "labelColor", "numberFont", "numberColor", "blockColor", "labelFont"].includes(prop)
51
+ })`
52
+ display: flex;
53
+ ${cssMediaRules.cssMargin()}
54
+ ${(p) => cssMediaRules.cssMediaRules([p.size], ([size = "medium"]) => {
55
+ switch (size) {
56
+ case "small":
57
+ return styled.css`
58
+ font-size: 18px;
59
+
60
+ ${Label} {
61
+ font-size: 14px;
62
+ }
63
+ `;
64
+ case "large":
65
+ return styled.css`
66
+ font-size: 32px;
67
+
68
+ ${Label} {
69
+ font-size: 18px;
70
+ }
71
+ `;
72
+ default:
73
+ return styled.css`
74
+ font-size: 24px;
75
+
76
+ ${Label} {
77
+ font-size: 16px;
78
+ }
79
+ `;
80
+ }
81
+ })}
82
+
83
+ ${Segment} {
84
+ ${(p) => cssMediaRules.cssMediaRules([p.gap], ([gap]) => styled.css`
85
+ margin: 0 ${gap == null ? 0 : `${gap.value / 2}${gap.unit}`};
86
+
87
+ &:first-child {
88
+ margin-left: 0;
89
+ }
90
+
91
+ &:last-child {
92
+ margin-right: 0;
93
+ }
94
+ `)}
95
+ }
96
+
97
+ ${Block} {
98
+ ${(p) => cssMediaRules.cssMediaRules([p.shape], ([shape = "rounded"]) => {
99
+ switch (shape) {
100
+ case "pill":
101
+ return styled.css`
102
+ border-radius: 500px;
103
+ `;
104
+ case "rounded":
105
+ return styled.css`
106
+ border-radius: 6px;
107
+ `;
108
+ default:
109
+ return styled.css`
110
+ border-radius: 0;
111
+ `;
112
+ }
113
+ })}
114
+ ${(p) => cssMediaRules.cssMediaRules([p.variant, p.blockColor, p.numberColor, p.numberFont], ([variant = "filled", blockColor = {
115
+ swatch: {
116
+ hue: 0,
117
+ saturation: 0,
118
+ lightness: 0
119
+ },
120
+ alpha: 1
121
+ }, numberColor = {
122
+ swatch: {
123
+ hue: 0,
124
+ saturation: 0,
125
+ lightness: 100
126
+ },
127
+ alpha: 1
128
+ }, numberFont = "sans-serif"]) => {
129
+ switch (variant) {
130
+ case "filled":
131
+ return styled.css`
132
+ font-family: '${numberFont}';
133
+ color: ${next.colorToString(numberColor)};
134
+ background: ${next.colorToString(blockColor)};
135
+ `;
136
+ case "filled-split":
137
+ return styled.css`
138
+ position: relative;
139
+ color: ${next.colorToString(numberColor)};
140
+ font-family: '${numberFont}';
141
+
142
+ > span {
143
+ position: relative;
144
+ z-index: 1;
145
+ }
146
+
147
+ ::before {
148
+ content: '';
149
+ position: absolute;
150
+ top: 0;
151
+ left: 0;
152
+ right: 0;
153
+ bottom: calc(50% + 1px);
154
+ border-top-left-radius: inherit;
155
+ border-top-right-radius: inherit;
156
+ background: ${next.colorToString(blockColor)};
157
+ }
158
+
159
+ ::after {
160
+ content: '';
161
+ position: absolute;
162
+ left: 0;
163
+ right: 0;
164
+ top: calc(50% + 1px);
165
+ bottom: 0;
166
+ border-bottom-left-radius: inherit;
167
+ border-bottom-right-radius: inherit;
168
+ background: ${next.colorToString(blockColor)};
169
+ }
170
+ `;
171
+ case "outline":
172
+ return styled.css`
173
+ font-family: '${numberFont}';
174
+ color: ${next.colorToString(numberColor)};
175
+ background: transparent;
176
+ border: 2px solid ${next.colorToString(blockColor)};
177
+ `;
178
+ case "outline-split":
179
+ return styled.css`
180
+ position: relative;
181
+ font-family: '${numberFont}';
182
+ color: ${next.colorToString(numberColor)};
183
+ border: 2px solid ${next.colorToString(blockColor)};
184
+
185
+ > span {
186
+ position: relative;
187
+ z-index: 1;
188
+ }
189
+
190
+ ::before {
191
+ content: '';
192
+ position: absolute;
193
+ top: 50%;
194
+ left: 0;
195
+ right: 0;
196
+ height: 2px;
197
+ margin-top: -1px;
198
+ background: ${next.colorToString(blockColor)};
199
+ }
200
+ `;
201
+ default:
202
+ return styled.css`
203
+ font-family: '${numberFont}';
204
+ background: transparent;
205
+ color: ${next.colorToString(numberColor)};
206
+ padding-top: 0;
207
+ padding-bottom: 0;
208
+ `;
209
+ }
210
+ })}
211
+ }
212
+
213
+ ${Label} {
214
+ ${(p) => cssMediaRules.cssMediaRules([p.labelColor, p.labelFont], ([labelColor = {
215
+ swatch: {
216
+ hue: 0,
217
+ saturation: 0,
218
+ lightness: 0
219
+ },
220
+ alpha: 1
221
+ }, labelFont = "sans-serif"]) => styled.css`
222
+ font-family: '${labelFont}';
223
+ color: ${next.colorToString(labelColor)};
224
+ `)}
225
+ }
226
+ `;
227
+ const getRemaining = (date) => {
228
+ if (date == null)
229
+ return {
230
+ days: 0,
231
+ hours: 0,
232
+ minutes: 0,
233
+ seconds: 0
234
+ };
235
+ const timeDiff = new Date(date).getTime() - Date.now();
236
+ if (timeDiff <= 0)
237
+ return {
238
+ days: 0,
239
+ hours: 0,
240
+ minutes: 0,
241
+ seconds: 0
242
+ };
243
+ let delta = Math.abs(timeDiff) / 1e3;
244
+ const days = Math.floor(delta / 86400);
245
+ delta -= days * 86400;
246
+ const hours = Math.floor(delta / 3600) % 24;
247
+ delta -= hours * 3600;
248
+ const minutes = Math.floor(delta / 60) % 60;
249
+ delta -= minutes * 60;
250
+ const seconds = parseInt(String(delta % 60), 10);
251
+ return {
252
+ days,
253
+ hours,
254
+ minutes,
255
+ seconds
256
+ };
257
+ };
258
+ const Countdown = React.forwardRef(function Countdown2({
259
+ id,
260
+ margin,
261
+ width,
262
+ date,
263
+ variant,
264
+ size,
265
+ shape,
266
+ gap,
267
+ labelColor,
268
+ labelFont,
269
+ numberColor,
270
+ numberFont,
271
+ blockColor,
272
+ daysLabel,
273
+ hoursLabel,
274
+ minutesLabel,
275
+ secondsLabel
276
+ }, ref) {
277
+ const [{
278
+ days,
279
+ hours,
280
+ minutes,
281
+ seconds
282
+ }, setRemaining] = React.useState(getRemaining(date));
283
+ React.useEffect(() => {
284
+ setRemaining(getRemaining(date));
285
+ const intervalId = setInterval(() => {
286
+ setRemaining(getRemaining(date));
287
+ }, 1e3);
288
+ return () => clearInterval(intervalId);
289
+ }, [date]);
290
+ return /* @__PURE__ */ jsxRuntime.jsxs(Container, {
291
+ ref,
292
+ id,
293
+ className: css.cx(width),
294
+ margin,
295
+ variant,
296
+ size,
297
+ shape,
298
+ labelColor,
299
+ labelFont,
300
+ numberColor,
301
+ numberFont,
302
+ blockColor,
303
+ gap,
304
+ children: [/* @__PURE__ */ jsxRuntime.jsxs(Segment, {
305
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
306
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", {
307
+ children: days
308
+ })
309
+ }), /* @__PURE__ */ jsxRuntime.jsx(Label, {
310
+ children: daysLabel == null ? "Days" : daysLabel
311
+ })]
312
+ }), /* @__PURE__ */ jsxRuntime.jsxs(Segment, {
313
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
314
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", {
315
+ children: hours
316
+ })
317
+ }), /* @__PURE__ */ jsxRuntime.jsx(Label, {
318
+ children: hoursLabel == null ? "Hours" : hoursLabel
319
+ })]
320
+ }), /* @__PURE__ */ jsxRuntime.jsxs(Segment, {
321
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
322
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", {
323
+ children: minutes
324
+ })
325
+ }), /* @__PURE__ */ jsxRuntime.jsx(Label, {
326
+ children: minutesLabel == null ? "Minutes" : minutesLabel
327
+ })]
328
+ }), /* @__PURE__ */ jsxRuntime.jsxs(Segment, {
329
+ children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
330
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", {
331
+ children: seconds
332
+ })
333
+ }), /* @__PURE__ */ jsxRuntime.jsx(Label, {
334
+ children: secondsLabel == null ? "Seconds" : secondsLabel
335
+ })]
336
+ })]
337
+ });
338
+ });
339
+ exports["default"] = Countdown;
340
+ //# sourceMappingURL=Countdown.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Countdown.cjs.js","sources":["../src/components/builtin/Countdown/Countdown.tsx"],"sourcesContent":["import { useState, useEffect, Ref, forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { cx } from '@emotion/css'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { ColorValue as Color } from '../../utils/types'\nimport { cssMediaRules, cssMargin } from '../../utils/cssMediaRules'\nimport {\n ResponsiveValue,\n DateValue,\n ElementIDValue,\n FontValue,\n GapXValue,\n MarginValue,\n ResponsiveIconRadioGroupValue,\n TextInputValue,\n} from '../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\n\ntype Props = {\n id?: ElementIDValue\n date?: DateValue\n variant?: ResponsiveIconRadioGroupValue<\n 'filled' | 'filled-split' | 'outline' | 'outline-split' | 'clear'\n >\n shape?: ResponsiveIconRadioGroupValue<'pill' | 'rounded' | 'square'>\n size?: ResponsiveIconRadioGroupValue<'small' | 'medium' | 'large'>\n gap?: GapXValue\n numberFont?: FontValue\n numberColor?: ResponsiveColor | null\n blockColor?: ResponsiveColor | null\n labelFont?: FontValue\n labelColor?: ResponsiveColor | null\n width?: string\n margin?: MarginValue\n daysLabel?: TextInputValue\n hoursLabel?: TextInputValue\n minutesLabel?: TextInputValue\n secondsLabel?: TextInputValue\n}\n\nconst Block = styled.div`\n display: block;\n padding: 0.5em;\n font-size: 1em;\n`\n\nconst Label = styled.div`\n margin-top: 0.25em;\n`\n\nconst Segment = styled.div`\n flex: 1;\n text-align: center;\n`\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop =>\n ![\n 'margin',\n 'variant',\n 'size',\n 'shape',\n 'gap',\n 'labelColor',\n 'numberFont',\n 'numberColor',\n 'blockColor',\n 'labelFont',\n ].includes(prop),\n})<{\n margin: Props['margin']\n variant: Props['variant']\n size: Props['size']\n shape: Props['shape']\n gap: Props['gap']\n labelColor?: ResponsiveValue<Color> | null\n numberFont?: ResponsiveValue<string>\n numberColor?: ResponsiveValue<Color> | null\n blockColor?: ResponsiveValue<Color> | null\n labelFont?: ResponsiveValue<string>\n}>`\n display: flex;\n ${cssMargin()}\n ${p =>\n cssMediaRules([p.size] as const, ([size = 'medium']) => {\n switch (size) {\n case 'small':\n return css`\n font-size: 18px;\n\n ${Label} {\n font-size: 14px;\n }\n `\n case 'large':\n return css`\n font-size: 32px;\n\n ${Label} {\n font-size: 18px;\n }\n `\n default:\n return css`\n font-size: 24px;\n\n ${Label} {\n font-size: 16px;\n }\n `\n }\n })}\n\n ${Segment} {\n ${p =>\n cssMediaRules(\n [p.gap] as const,\n ([gap]) => css`\n margin: 0 ${gap == null ? 0 : `${gap.value / 2}${gap.unit}`};\n\n &:first-child {\n margin-left: 0;\n }\n\n &:last-child {\n margin-right: 0;\n }\n `,\n )}\n }\n\n ${Block} {\n ${p =>\n cssMediaRules([p.shape] as const, ([shape = 'rounded']) => {\n switch (shape) {\n case 'pill':\n return css`\n border-radius: 500px;\n `\n case 'rounded':\n return css`\n border-radius: 6px;\n `\n default:\n return css`\n border-radius: 0;\n `\n }\n })}\n ${p =>\n cssMediaRules(\n [p.variant, p.blockColor, p.numberColor, p.numberFont] as const,\n ([\n variant = 'filled',\n blockColor = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n numberColor = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 },\n numberFont = 'sans-serif',\n ]) => {\n switch (variant) {\n case 'filled':\n return css`\n font-family: '${numberFont}';\n color: ${colorToString(numberColor)};\n background: ${colorToString(blockColor)};\n `\n case 'filled-split':\n return css`\n position: relative;\n color: ${colorToString(numberColor)};\n font-family: '${numberFont}';\n\n > span {\n position: relative;\n z-index: 1;\n }\n\n ::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: calc(50% + 1px);\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n background: ${colorToString(blockColor)};\n }\n\n ::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: calc(50% + 1px);\n bottom: 0;\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n background: ${colorToString(blockColor)};\n }\n `\n case 'outline':\n return css`\n font-family: '${numberFont}';\n color: ${colorToString(numberColor)};\n background: transparent;\n border: 2px solid ${colorToString(blockColor)};\n `\n case 'outline-split':\n return css`\n position: relative;\n font-family: '${numberFont}';\n color: ${colorToString(numberColor)};\n border: 2px solid ${colorToString(blockColor)};\n\n > span {\n position: relative;\n z-index: 1;\n }\n\n ::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 2px;\n margin-top: -1px;\n background: ${colorToString(blockColor)};\n }\n `\n default:\n return css`\n font-family: '${numberFont}';\n background: transparent;\n color: ${colorToString(numberColor)};\n padding-top: 0;\n padding-bottom: 0;\n `\n }\n },\n )}\n }\n\n ${Label} {\n ${p =>\n cssMediaRules(\n [p.labelColor, p.labelFont] as const,\n ([\n labelColor = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n labelFont = 'sans-serif',\n ]) => css`\n font-family: '${labelFont}';\n color: ${colorToString(labelColor)};\n `,\n )}\n }\n`\n\nconst getRemaining = (date: Props['date'] | undefined) => {\n if (date == null) return { days: 0, hours: 0, minutes: 0, seconds: 0 }\n\n const timeDiff = new Date(date).getTime() - Date.now()\n\n if (timeDiff <= 0) return { days: 0, hours: 0, minutes: 0, seconds: 0 }\n\n let delta = Math.abs(timeDiff) / 1000\n\n const days = Math.floor(delta / 86400)\n delta -= days * 86400\n\n const hours = Math.floor(delta / 3600) % 24\n delta -= hours * 3600\n\n const minutes = Math.floor(delta / 60) % 60\n delta -= minutes * 60\n\n const seconds = parseInt(String(delta % 60), 10)\n\n return { days, hours, minutes, seconds }\n}\n\nconst Countdown = forwardRef(function Countdown(\n {\n id,\n margin,\n width,\n date,\n variant,\n size,\n shape,\n gap,\n labelColor,\n labelFont,\n numberColor,\n numberFont,\n blockColor,\n daysLabel,\n hoursLabel,\n minutesLabel,\n secondsLabel,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const [{ days, hours, minutes, seconds }, setRemaining] = useState(getRemaining(date))\n\n useEffect(() => {\n setRemaining(getRemaining(date))\n\n const intervalId = setInterval(() => {\n setRemaining(getRemaining(date))\n }, 1000)\n\n return () => clearInterval(intervalId)\n }, [date])\n\n return (\n <Container\n ref={ref}\n id={id}\n className={cx(width)}\n margin={margin}\n variant={variant}\n size={size}\n shape={shape}\n labelColor={labelColor}\n labelFont={labelFont}\n numberColor={numberColor}\n numberFont={numberFont}\n blockColor={blockColor}\n gap={gap}\n >\n <Segment>\n <Block>\n <span>{days}</span>\n </Block>\n <Label>{daysLabel == null ? 'Days' : daysLabel}</Label>\n </Segment>\n <Segment>\n <Block>\n <span>{hours}</span>\n </Block>\n <Label>{hoursLabel == null ? 'Hours' : hoursLabel}</Label>\n </Segment>\n <Segment>\n <Block>\n <span>{minutes}</span>\n </Block>\n <Label>{minutesLabel == null ? 'Minutes' : minutesLabel}</Label>\n </Segment>\n <Segment>\n <Block>\n <span>{seconds}</span>\n </Block>\n <Label>{secondsLabel == null ? 'Seconds' : secondsLabel}</Label>\n </Segment>\n </Container>\n )\n})\n\nexport default Countdown\n"],"names":["Block","styled","div","Label","Segment","Container","withConfig","shouldForwardProp","prop","includes","cssMargin","p","cssMediaRules","size","css","gap","value","unit","shape","variant","blockColor","numberColor","numberFont","swatch","hue","saturation","lightness","alpha","colorToString","labelColor","labelFont","getRemaining","date","days","hours","minutes","seconds","timeDiff","Date","getTime","now","delta","Math","abs","floor","parseInt","String","Countdown","forwardRef","id","margin","width","daysLabel","hoursLabel","minutesLabel","secondsLabel","ref","setRemaining","useState","useEffect","intervalId","setInterval","clearInterval","cx","_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,334 @@
1
+ import { forwardRef, useState, useEffect } from "react";
2
+ import styled, { css } from "styled-components";
3
+ import { cx } from "@emotion/css";
4
+ import { o as colorToString } from "./index.es.js";
5
+ import { b as cssMargin, c as cssMediaRules } from "./cssMediaRules.es.js";
6
+ import { jsxs, jsx } from "react/jsx-runtime";
7
+ import "use-sync-external-store/shim/with-selector";
8
+ import "./react-page.es.js";
9
+ import "redux";
10
+ import "redux-thunk";
11
+ import "./actions.es.js";
12
+ import "./descriptors.es.js";
13
+ import "./style.es.js";
14
+ import "./color.es.js";
15
+ import "./image.es.js";
16
+ import "next/dynamic";
17
+ import "next/document";
18
+ import "slate";
19
+ import "@emotion/server/create-instance";
20
+ import "@apollo/client";
21
+ import "@apollo/client/link/batch-http";
22
+ import "./graphql.es.js";
23
+ import "./text-input.es.js";
24
+ import "./shape.es.js";
25
+ import "color";
26
+ import "react-dom";
27
+ import "html-react-parser";
28
+ import "next/head";
29
+ import "uuid/v4";
30
+ import "corporate-ipsum";
31
+ const Block = styled.div`
32
+ display: block;
33
+ padding: 0.5em;
34
+ font-size: 1em;
35
+ `;
36
+ const Label = styled.div`
37
+ margin-top: 0.25em;
38
+ `;
39
+ const Segment = styled.div`
40
+ flex: 1;
41
+ text-align: center;
42
+ `;
43
+ const Container = styled.div.withConfig({
44
+ shouldForwardProp: (prop) => !["margin", "variant", "size", "shape", "gap", "labelColor", "numberFont", "numberColor", "blockColor", "labelFont"].includes(prop)
45
+ })`
46
+ display: flex;
47
+ ${cssMargin()}
48
+ ${(p) => cssMediaRules([p.size], ([size = "medium"]) => {
49
+ switch (size) {
50
+ case "small":
51
+ return css`
52
+ font-size: 18px;
53
+
54
+ ${Label} {
55
+ font-size: 14px;
56
+ }
57
+ `;
58
+ case "large":
59
+ return css`
60
+ font-size: 32px;
61
+
62
+ ${Label} {
63
+ font-size: 18px;
64
+ }
65
+ `;
66
+ default:
67
+ return css`
68
+ font-size: 24px;
69
+
70
+ ${Label} {
71
+ font-size: 16px;
72
+ }
73
+ `;
74
+ }
75
+ })}
76
+
77
+ ${Segment} {
78
+ ${(p) => cssMediaRules([p.gap], ([gap]) => css`
79
+ margin: 0 ${gap == null ? 0 : `${gap.value / 2}${gap.unit}`};
80
+
81
+ &:first-child {
82
+ margin-left: 0;
83
+ }
84
+
85
+ &:last-child {
86
+ margin-right: 0;
87
+ }
88
+ `)}
89
+ }
90
+
91
+ ${Block} {
92
+ ${(p) => cssMediaRules([p.shape], ([shape = "rounded"]) => {
93
+ switch (shape) {
94
+ case "pill":
95
+ return css`
96
+ border-radius: 500px;
97
+ `;
98
+ case "rounded":
99
+ return css`
100
+ border-radius: 6px;
101
+ `;
102
+ default:
103
+ return css`
104
+ border-radius: 0;
105
+ `;
106
+ }
107
+ })}
108
+ ${(p) => cssMediaRules([p.variant, p.blockColor, p.numberColor, p.numberFont], ([variant = "filled", blockColor = {
109
+ swatch: {
110
+ hue: 0,
111
+ saturation: 0,
112
+ lightness: 0
113
+ },
114
+ alpha: 1
115
+ }, numberColor = {
116
+ swatch: {
117
+ hue: 0,
118
+ saturation: 0,
119
+ lightness: 100
120
+ },
121
+ alpha: 1
122
+ }, numberFont = "sans-serif"]) => {
123
+ switch (variant) {
124
+ case "filled":
125
+ return css`
126
+ font-family: '${numberFont}';
127
+ color: ${colorToString(numberColor)};
128
+ background: ${colorToString(blockColor)};
129
+ `;
130
+ case "filled-split":
131
+ return css`
132
+ position: relative;
133
+ color: ${colorToString(numberColor)};
134
+ font-family: '${numberFont}';
135
+
136
+ > span {
137
+ position: relative;
138
+ z-index: 1;
139
+ }
140
+
141
+ ::before {
142
+ content: '';
143
+ position: absolute;
144
+ top: 0;
145
+ left: 0;
146
+ right: 0;
147
+ bottom: calc(50% + 1px);
148
+ border-top-left-radius: inherit;
149
+ border-top-right-radius: inherit;
150
+ background: ${colorToString(blockColor)};
151
+ }
152
+
153
+ ::after {
154
+ content: '';
155
+ position: absolute;
156
+ left: 0;
157
+ right: 0;
158
+ top: calc(50% + 1px);
159
+ bottom: 0;
160
+ border-bottom-left-radius: inherit;
161
+ border-bottom-right-radius: inherit;
162
+ background: ${colorToString(blockColor)};
163
+ }
164
+ `;
165
+ case "outline":
166
+ return css`
167
+ font-family: '${numberFont}';
168
+ color: ${colorToString(numberColor)};
169
+ background: transparent;
170
+ border: 2px solid ${colorToString(blockColor)};
171
+ `;
172
+ case "outline-split":
173
+ return css`
174
+ position: relative;
175
+ font-family: '${numberFont}';
176
+ color: ${colorToString(numberColor)};
177
+ border: 2px solid ${colorToString(blockColor)};
178
+
179
+ > span {
180
+ position: relative;
181
+ z-index: 1;
182
+ }
183
+
184
+ ::before {
185
+ content: '';
186
+ position: absolute;
187
+ top: 50%;
188
+ left: 0;
189
+ right: 0;
190
+ height: 2px;
191
+ margin-top: -1px;
192
+ background: ${colorToString(blockColor)};
193
+ }
194
+ `;
195
+ default:
196
+ return css`
197
+ font-family: '${numberFont}';
198
+ background: transparent;
199
+ color: ${colorToString(numberColor)};
200
+ padding-top: 0;
201
+ padding-bottom: 0;
202
+ `;
203
+ }
204
+ })}
205
+ }
206
+
207
+ ${Label} {
208
+ ${(p) => cssMediaRules([p.labelColor, p.labelFont], ([labelColor = {
209
+ swatch: {
210
+ hue: 0,
211
+ saturation: 0,
212
+ lightness: 0
213
+ },
214
+ alpha: 1
215
+ }, labelFont = "sans-serif"]) => css`
216
+ font-family: '${labelFont}';
217
+ color: ${colorToString(labelColor)};
218
+ `)}
219
+ }
220
+ `;
221
+ const getRemaining = (date) => {
222
+ if (date == null)
223
+ return {
224
+ days: 0,
225
+ hours: 0,
226
+ minutes: 0,
227
+ seconds: 0
228
+ };
229
+ const timeDiff = new Date(date).getTime() - Date.now();
230
+ if (timeDiff <= 0)
231
+ return {
232
+ days: 0,
233
+ hours: 0,
234
+ minutes: 0,
235
+ seconds: 0
236
+ };
237
+ let delta = Math.abs(timeDiff) / 1e3;
238
+ const days = Math.floor(delta / 86400);
239
+ delta -= days * 86400;
240
+ const hours = Math.floor(delta / 3600) % 24;
241
+ delta -= hours * 3600;
242
+ const minutes = Math.floor(delta / 60) % 60;
243
+ delta -= minutes * 60;
244
+ const seconds = parseInt(String(delta % 60), 10);
245
+ return {
246
+ days,
247
+ hours,
248
+ minutes,
249
+ seconds
250
+ };
251
+ };
252
+ const Countdown = forwardRef(function Countdown2({
253
+ id,
254
+ margin,
255
+ width,
256
+ date,
257
+ variant,
258
+ size,
259
+ shape,
260
+ gap,
261
+ labelColor,
262
+ labelFont,
263
+ numberColor,
264
+ numberFont,
265
+ blockColor,
266
+ daysLabel,
267
+ hoursLabel,
268
+ minutesLabel,
269
+ secondsLabel
270
+ }, ref) {
271
+ const [{
272
+ days,
273
+ hours,
274
+ minutes,
275
+ seconds
276
+ }, setRemaining] = useState(getRemaining(date));
277
+ useEffect(() => {
278
+ setRemaining(getRemaining(date));
279
+ const intervalId = setInterval(() => {
280
+ setRemaining(getRemaining(date));
281
+ }, 1e3);
282
+ return () => clearInterval(intervalId);
283
+ }, [date]);
284
+ return /* @__PURE__ */ jsxs(Container, {
285
+ ref,
286
+ id,
287
+ className: cx(width),
288
+ margin,
289
+ variant,
290
+ size,
291
+ shape,
292
+ labelColor,
293
+ labelFont,
294
+ numberColor,
295
+ numberFont,
296
+ blockColor,
297
+ gap,
298
+ children: [/* @__PURE__ */ jsxs(Segment, {
299
+ children: [/* @__PURE__ */ jsx(Block, {
300
+ children: /* @__PURE__ */ jsx("span", {
301
+ children: days
302
+ })
303
+ }), /* @__PURE__ */ jsx(Label, {
304
+ children: daysLabel == null ? "Days" : daysLabel
305
+ })]
306
+ }), /* @__PURE__ */ jsxs(Segment, {
307
+ children: [/* @__PURE__ */ jsx(Block, {
308
+ children: /* @__PURE__ */ jsx("span", {
309
+ children: hours
310
+ })
311
+ }), /* @__PURE__ */ jsx(Label, {
312
+ children: hoursLabel == null ? "Hours" : hoursLabel
313
+ })]
314
+ }), /* @__PURE__ */ jsxs(Segment, {
315
+ children: [/* @__PURE__ */ jsx(Block, {
316
+ children: /* @__PURE__ */ jsx("span", {
317
+ children: minutes
318
+ })
319
+ }), /* @__PURE__ */ jsx(Label, {
320
+ children: minutesLabel == null ? "Minutes" : minutesLabel
321
+ })]
322
+ }), /* @__PURE__ */ jsxs(Segment, {
323
+ children: [/* @__PURE__ */ jsx(Block, {
324
+ children: /* @__PURE__ */ jsx("span", {
325
+ children: seconds
326
+ })
327
+ }), /* @__PURE__ */ jsx(Label, {
328
+ children: secondsLabel == null ? "Seconds" : secondsLabel
329
+ })]
330
+ })]
331
+ });
332
+ });
333
+ export { Countdown as default };
334
+ //# sourceMappingURL=Countdown.es.js.map