@infosoftas/s4-orders-js-sdk 0.1.20 → 0.1.21-1

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 (56) hide show
  1. package/README.md +471 -444
  2. package/build/postcss-scope-tailwind.cjs +66 -0
  3. package/components.json +21 -0
  4. package/package.json +15 -6
  5. package/src/App.css +409 -0
  6. package/src/App.tsx +639 -594
  7. package/src/bundle.ts +4 -0
  8. package/src/components/Alert/Alert.tsx +23 -22
  9. package/src/components/Button/Button.tsx +18 -22
  10. package/src/components/EHFForm/EHFForm.tsx +253 -235
  11. package/src/components/FormFields/AddressField.tsx +55 -62
  12. package/src/components/FormFields/EmailField.tsx +53 -58
  13. package/src/components/FormFields/InputField.tsx +52 -53
  14. package/src/components/FormFields/NameField.tsx +52 -53
  15. package/src/components/FormFields/PhoneField.tsx +53 -58
  16. package/src/components/FormFields/TermsCheckbox.tsx +70 -58
  17. package/src/components/FormFields/ToggleFiled.tsx +52 -63
  18. package/src/components/FormFields/fieldValidators.ts +71 -0
  19. package/src/components/OIOForm/OIOForm.tsx +130 -69
  20. package/src/components/OrderDenialModal/OrderDenialModal.tsx +102 -89
  21. package/src/components/OrderForm/ContactDetailsSection.tsx +71 -0
  22. package/src/components/OrderForm/OrderForm.tsx +173 -232
  23. package/src/components/OrderForm/PaymentMethodContent.tsx +62 -0
  24. package/src/components/OrderForm/PaymentMethodSection.tsx +79 -0
  25. package/src/components/OrderForm/SubmitConfirmationDialog.tsx +55 -0
  26. package/src/components/OrderForm/orderFormState.ts +171 -0
  27. package/src/components/OrderForm/useSlotElement.tsx +89 -0
  28. package/src/components/ui/alert-dialog.tsx +185 -0
  29. package/src/components/ui/alert.tsx +75 -0
  30. package/src/components/ui/button.tsx +55 -0
  31. package/src/components/ui/card.tsx +99 -0
  32. package/src/components/ui/checkbox.tsx +28 -0
  33. package/src/components/ui/field.tsx +238 -0
  34. package/src/components/ui/input.tsx +19 -0
  35. package/src/components/ui/label.tsx +19 -0
  36. package/src/components/ui/radio-group.tsx +37 -0
  37. package/src/components/ui/separator.tsx +24 -0
  38. package/src/components/ui/skeleton.tsx +13 -0
  39. package/src/components/ui/spinner.tsx +10 -0
  40. package/src/components/ui/switch.tsx +29 -0
  41. package/src/components/ui/textarea.tsx +17 -0
  42. package/src/constants/index.ts +0 -2
  43. package/src/custom.d.ts +4 -4
  44. package/src/lib/utils.ts +1 -0
  45. package/src/types/general.ts +136 -122
  46. package/tsconfig.json +37 -38
  47. package/src/App.scss +0 -23
  48. package/src/assets/styles/forms.scss +0 -164
  49. package/src/assets/styles/general.scss +0 -46
  50. package/src/assets/styles/variables.scss +0 -29
  51. package/src/components/Alert/alert.scss +0 -21
  52. package/src/components/Button/button.scss +0 -48
  53. package/src/components/Loader/Loader.tsx +0 -22
  54. package/src/components/Loader/loader.scss +0 -37
  55. package/src/components/OrderDenialModal/orderDenialModal.scss +0 -42
  56. package/src/components/OrderForm/orderForm.scss +0 -10
@@ -0,0 +1,66 @@
1
+ const postcss = require('postcss');
2
+
3
+ const DEFAULT_SCOPE = '.sdk-scope';
4
+ const DEFAULT_LAYERS = ['utilities'];
5
+
6
+ const plugin = (opts = {}) => {
7
+ const scope = opts.scope || DEFAULT_SCOPE;
8
+ const layers = opts.layers || DEFAULT_LAYERS;
9
+ const required = opts.required !== false;
10
+
11
+ return {
12
+ postcssPlugin: 'scope-tailwind',
13
+
14
+ OnceExit(root, { result }) {
15
+ const wrapped = [];
16
+
17
+ root.walkAtRules('layer', (atRule) => {
18
+ const name = atRule.params.trim();
19
+ if (!layers.includes(name)) return;
20
+ if (!atRule.nodes || atRule.nodes.length === 0) return;
21
+ if (
22
+ atRule.nodes.length === 1 &&
23
+ atRule.first.type === 'atrule' &&
24
+ atRule.first.name === 'scope'
25
+ ) {
26
+ return;
27
+ }
28
+
29
+ const scoped = postcss.atRule({
30
+ name: 'scope',
31
+ params: `(${scope})`,
32
+ nodes: [],
33
+ raws: { before: '\n', after: '\n', between: ' ' },
34
+ });
35
+
36
+ const children = atRule.nodes;
37
+ atRule.removeAll();
38
+ scoped.append(children);
39
+ atRule.append(scoped);
40
+
41
+ wrapped.push(name);
42
+ });
43
+
44
+ if (required && wrapped.length === 0) {
45
+ throw root.error(
46
+ `scope-tailwind: none of the layers [${layers.join(
47
+ ', '
48
+ )}] were found, so nothing was scoped. Tailwind's utilities ` +
49
+ `would ship as global selectors and could restyle the ` +
50
+ `host page. Check that this plugin runs after ` +
51
+ `@tailwindcss/postcss.`
52
+ );
53
+ }
54
+
55
+ result.messages.push({
56
+ type: 'scope-tailwind',
57
+ plugin: 'scope-tailwind',
58
+ scopedLayers: wrapped,
59
+ });
60
+ },
61
+ };
62
+ };
63
+
64
+ plugin.postcss = true;
65
+
66
+ module.exports = plugin;
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "base-luma",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/App.css",
9
+ "baseColor": "zinc",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/lib/utils",
16
+ "ui": "@/components/ui",
17
+ "lib": "@/lib",
18
+ "hooks": "@/hooks"
19
+ },
20
+ "iconLibrary": "lucide"
21
+ }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@infosoftas/s4-orders-js-sdk",
3
- "version": "0.1.20",
3
+ "version": "0.1.21-1",
4
4
  "scripts": {
5
- "build": "rimraf lib && webpack --mode production",
5
+ "build": "webpack --mode production",
6
6
  "release": "release-it"
7
7
  },
8
8
  "eslintConfig": {
@@ -11,26 +11,35 @@
11
11
  ]
12
12
  },
13
13
  "dependencies": {
14
+ "@base-ui/react": "^1.0.0",
15
+ "@hookform/resolvers": "^5.9.1",
16
+ "class-variance-authority": "^0.7.1",
17
+ "cn": "^0.4.0",
18
+ "lucide-react": "^1.47.0",
14
19
  "react": "^19.2.8",
15
20
  "react-dom": "^19.2.8",
16
- "react-hook-form": "^7.85.0"
21
+ "react-hook-form": "^7.85.0",
22
+ "shadcn": "^4.21.0",
23
+ "tw-animate-css": "^1.4.0",
24
+ "zod": "^4.6.5"
17
25
  },
18
26
  "devDependencies": {
19
27
  "@babel/core": "^8.0.1",
20
28
  "@babel/preset-env": "^8.0.2",
21
29
  "@babel/preset-react": "^8.0.1",
22
30
  "@babel/preset-typescript": "^8.0.1",
31
+ "@tailwindcss/postcss": "^4.1.14",
23
32
  "@types/react": "^19.2.18",
24
33
  "@types/react-dom": "^19.2.4",
25
34
  "babel-loader": "^10.0.0",
26
35
  "copy-webpack-plugin": "^14.0.0",
27
36
  "css-loader": "^7.1.2",
28
37
  "mini-css-extract-plugin": "^2.9.4",
38
+ "postcss": "^8.5.6",
39
+ "postcss-loader": "^8.2.0",
29
40
  "release-it": "^21.0.2",
30
- "rimraf": "^6.1.2",
31
- "sass": "^1.102.0",
32
- "sass-loader": "^17.0.0",
33
41
  "style-loader": "^4.0.0",
42
+ "tailwindcss": "^4.1.14",
34
43
  "ts-loader": "^9.6.2",
35
44
  "typescript": "^6.0.2",
36
45
  "webpack": "^5.109.2",
package/src/App.css ADDED
@@ -0,0 +1,409 @@
1
+ @layer theme, base, components, utilities;
2
+ @import 'tailwindcss/theme.css' layer(theme);
3
+ @import 'tailwindcss/utilities.css' layer(utilities);
4
+ @import url('tw-animate-css');
5
+ @import 'shadcn/tailwind.css';
6
+
7
+ @custom-variant dark (&:is(.dark *));
8
+
9
+ .sdk-scope {
10
+ --background: oklch(0.975 0.002 286.32);
11
+ --foreground: oklch(0.141 0.005 285.823);
12
+ --card: oklch(1 0 0);
13
+ --card-foreground: oklch(0.141 0.005 285.823);
14
+ --popover: oklch(1 0 0);
15
+ --popover-foreground: oklch(0.141 0.005 285.823);
16
+ --primary: oklch(0.527 0.154 150.069);
17
+ --primary-foreground: oklch(0.982 0.018 155.826);
18
+ --secondary: oklch(0.967 0.001 286.375);
19
+ --secondary-foreground: oklch(0.21 0.006 285.885);
20
+ --muted: oklch(0.967 0.001 286.375);
21
+ --muted-foreground: oklch(0.552 0.016 285.938);
22
+ --accent: oklch(0.967 0.001 286.375);
23
+ --accent-foreground: oklch(0.21 0.006 285.885);
24
+ --destructive: oklch(0.577 0.245 27.325);
25
+ --warning: var(--color-amber-700);
26
+ --success: var(--color-green-600);
27
+ --border: oklch(0.92 0.004 286.32);
28
+ --input: oklch(0.92 0.004 286.32);
29
+ --ring: oklch(0.705 0.015 286.067);
30
+ --chart-1: oklch(0.871 0.006 286.286);
31
+ --chart-2: oklch(0.552 0.016 285.938);
32
+ --chart-3: oklch(0.442 0.017 285.786);
33
+ --chart-4: oklch(0.37 0.013 285.805);
34
+ --chart-5: oklch(0.274 0.006 286.033);
35
+ --radius: 0.625rem;
36
+ --sidebar: oklch(0.985 0 0);
37
+ --sidebar-foreground: oklch(0.141 0.005 285.823);
38
+ --sidebar-primary: oklch(0.627 0.194 149.214);
39
+ --sidebar-primary-foreground: oklch(0.982 0.018 155.826);
40
+ --sidebar-accent: oklch(0.967 0.001 286.375);
41
+ --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
42
+ --sidebar-border: oklch(0.92 0.004 286.32);
43
+ --sidebar-ring: oklch(0.705 0.015 286.067);
44
+ }
45
+
46
+ .sdk-scope:is(.dark *),
47
+ .sdk-scope.dark {
48
+ --background: oklch(0.17 0.006 285.885);
49
+ --foreground: oklch(0.985 0 0);
50
+ --card: oklch(0.21 0.006 285.885);
51
+ --card-foreground: oklch(0.985 0 0);
52
+ --popover: oklch(0.21 0.006 285.885);
53
+ --popover-foreground: oklch(0.985 0 0);
54
+ --primary: oklch(0.448 0.119 151.328);
55
+ --primary-foreground: oklch(0.982 0.018 155.826);
56
+ --secondary: oklch(0.274 0.006 286.033);
57
+ --secondary-foreground: oklch(0.985 0 0);
58
+ --muted: oklch(0.274 0.006 286.033);
59
+ --muted-foreground: oklch(0.705 0.015 286.067);
60
+ --accent: oklch(0.274 0.006 286.033);
61
+ --accent-foreground: oklch(0.985 0 0);
62
+ --destructive: oklch(0.704 0.191 22.216);
63
+ --warning: var(--color-amber-400);
64
+ --success: var(--color-green-400);
65
+ --border: oklch(1 0 0 / 10%);
66
+ --input: oklch(1 0 0 / 15%);
67
+ --ring: oklch(0.552 0.016 285.938);
68
+ --chart-1: oklch(0.871 0.006 286.286);
69
+ --chart-2: oklch(0.552 0.016 285.938);
70
+ --chart-3: oklch(0.442 0.017 285.786);
71
+ --chart-4: oklch(0.37 0.013 285.805);
72
+ --chart-5: oklch(0.274 0.006 286.033);
73
+ --sidebar: oklch(0.21 0.006 285.885);
74
+ --sidebar-foreground: oklch(0.985 0 0);
75
+ --sidebar-primary: oklch(0.723 0.219 149.579);
76
+ --sidebar-primary-foreground: oklch(0.982 0.018 155.826);
77
+ --sidebar-accent: oklch(0.274 0.006 286.033);
78
+ --sidebar-accent-foreground: oklch(0.985 0 0);
79
+ --sidebar-border: oklch(1 0 0 / 10%);
80
+ --sidebar-ring: oklch(0.552 0.016 285.938);
81
+ }
82
+
83
+ @theme inline {
84
+ --font-sans: inherit;
85
+ --font-heading: inherit;
86
+ --color-sidebar-ring: var(--sidebar-ring);
87
+ --color-sidebar-border: var(--sidebar-border);
88
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
89
+ --color-sidebar-accent: var(--sidebar-accent);
90
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
91
+ --color-sidebar-primary: var(--sidebar-primary);
92
+ --color-sidebar-foreground: var(--sidebar-foreground);
93
+ --color-sidebar: var(--sidebar);
94
+ --color-chart-5: var(--chart-5);
95
+ --color-chart-4: var(--chart-4);
96
+ --color-chart-3: var(--chart-3);
97
+ --color-chart-2: var(--chart-2);
98
+ --color-chart-1: var(--chart-1);
99
+ --color-ring: var(--ring);
100
+ --color-input: var(--input);
101
+ --color-border: var(--border);
102
+ --color-destructive: var(--destructive);
103
+ --color-warning: var(--warning);
104
+ --color-success: var(--success);
105
+ --color-accent-foreground: var(--accent-foreground);
106
+ --color-accent: var(--accent);
107
+ --color-muted-foreground: var(--muted-foreground);
108
+ --color-muted: var(--muted);
109
+ --color-secondary-foreground: var(--secondary-foreground);
110
+ --color-secondary: var(--secondary);
111
+ --color-primary-foreground: var(--primary-foreground);
112
+ --color-primary: var(--primary);
113
+ --color-popover-foreground: var(--popover-foreground);
114
+ --color-popover: var(--popover);
115
+ --color-card-foreground: var(--card-foreground);
116
+ --color-card: var(--card);
117
+ --color-foreground: var(--foreground);
118
+ --color-background: var(--background);
119
+ --radius-sm: calc(var(--radius) * 0.6);
120
+ --radius-md: calc(var(--radius) * 0.8);
121
+ --radius-lg: var(--radius);
122
+ --radius-xl: calc(var(--radius) * 1.4);
123
+ --radius-2xl: calc(var(--radius) * 1.8);
124
+ --radius-3xl: calc(var(--radius) * 2.2);
125
+ --radius-4xl: calc(var(--radius) * 2.6);
126
+ }
127
+
128
+ @layer base {
129
+ .sdk-scope,
130
+ .sdk-scope *,
131
+ .sdk-scope ::after,
132
+ .sdk-scope ::before,
133
+ .sdk-scope ::backdrop,
134
+ .sdk-scope ::file-selector-button {
135
+ box-sizing: border-box;
136
+ margin: 0;
137
+ padding: 0;
138
+ border: 0 solid;
139
+ }
140
+
141
+ .sdk-scope {
142
+ line-height: 1.5;
143
+ -webkit-text-size-adjust: 100%;
144
+ tab-size: 4;
145
+ font-family: --theme(
146
+ --default-font-family,
147
+ -apple-system,
148
+ BlinkMacSystemFont,
149
+ 'Segoe UI',
150
+ Roboto,
151
+ 'Helvetica Neue',
152
+ 'Noto Sans',
153
+ Arial,
154
+ sans-serif,
155
+ 'Apple Color Emoji',
156
+ 'Segoe UI Emoji',
157
+ 'Segoe UI Symbol',
158
+ 'Noto Color Emoji'
159
+ );
160
+ font-feature-settings: --theme(--default-font-feature-settings, normal);
161
+ font-variation-settings: --theme(--default-font-variation-settings, normal);
162
+ -webkit-tap-highlight-color: transparent;
163
+ }
164
+
165
+ .sdk-scope hr {
166
+ height: 0;
167
+ color: inherit;
168
+ border-top-width: 1px;
169
+ }
170
+
171
+ .sdk-scope abbr:where([title]) {
172
+ -webkit-text-decoration: underline dotted;
173
+ text-decoration: underline dotted;
174
+ }
175
+
176
+ .sdk-scope h1,
177
+ .sdk-scope h2,
178
+ .sdk-scope h3,
179
+ .sdk-scope h4,
180
+ .sdk-scope h5,
181
+ .sdk-scope h6 {
182
+ font-size: inherit;
183
+ font-weight: inherit;
184
+ }
185
+
186
+ .sdk-scope a {
187
+ color: inherit;
188
+ -webkit-text-decoration: inherit;
189
+ text-decoration: inherit;
190
+ }
191
+
192
+ .sdk-scope b,
193
+ .sdk-scope strong {
194
+ font-weight: bolder;
195
+ }
196
+
197
+ .sdk-scope code,
198
+ .sdk-scope kbd,
199
+ .sdk-scope samp,
200
+ .sdk-scope pre {
201
+ font-family: --theme(
202
+ --default-mono-font-family,
203
+ ui-monospace,
204
+ SFMono-Regular,
205
+ Menlo,
206
+ Monaco,
207
+ Consolas,
208
+ 'Liberation Mono',
209
+ 'Courier New',
210
+ monospace
211
+ );
212
+ font-feature-settings: --theme(--default-mono-font-feature-settings, normal);
213
+ font-variation-settings: --theme(--default-mono-font-variation-settings, normal);
214
+ font-size: 1em;
215
+ }
216
+
217
+ .sdk-scope small {
218
+ font-size: 80%;
219
+ }
220
+
221
+ .sdk-scope sub,
222
+ .sdk-scope sup {
223
+ font-size: 75%;
224
+ line-height: 0;
225
+ position: relative;
226
+ vertical-align: baseline;
227
+ }
228
+
229
+ .sdk-scope sub {
230
+ bottom: -0.25em;
231
+ }
232
+
233
+ .sdk-scope sup {
234
+ top: -0.5em;
235
+ }
236
+
237
+ .sdk-scope table {
238
+ text-indent: 0;
239
+ border-color: inherit;
240
+ border-collapse: collapse;
241
+ }
242
+
243
+ .sdk-scope :-moz-focusring:where(:not(iframe)) {
244
+ outline: auto;
245
+ }
246
+
247
+ .sdk-scope progress {
248
+ vertical-align: baseline;
249
+ }
250
+
251
+ .sdk-scope summary {
252
+ display: list-item;
253
+ }
254
+
255
+ .sdk-scope ol,
256
+ .sdk-scope ul,
257
+ .sdk-scope menu {
258
+ list-style: none;
259
+ }
260
+
261
+ .sdk-scope img,
262
+ .sdk-scope svg,
263
+ .sdk-scope video,
264
+ .sdk-scope canvas,
265
+ .sdk-scope audio,
266
+ .sdk-scope iframe,
267
+ .sdk-scope embed,
268
+ .sdk-scope object {
269
+ display: block;
270
+ vertical-align: middle;
271
+ }
272
+
273
+ .sdk-scope img,
274
+ .sdk-scope video {
275
+ max-width: 100%;
276
+ height: auto;
277
+ }
278
+
279
+ .sdk-scope button,
280
+ .sdk-scope input,
281
+ .sdk-scope select,
282
+ .sdk-scope optgroup,
283
+ .sdk-scope textarea,
284
+ .sdk-scope ::file-selector-button {
285
+ font: inherit;
286
+ font-feature-settings: inherit;
287
+ font-variation-settings: inherit;
288
+ letter-spacing: inherit;
289
+ color: inherit;
290
+ border-radius: 0;
291
+ background-color: transparent;
292
+ opacity: 1;
293
+ }
294
+
295
+ .sdk-scope :where(select:is([multiple], [size])) optgroup {
296
+ font-weight: bolder;
297
+ }
298
+
299
+ .sdk-scope :where(select:is([multiple], [size])) optgroup option {
300
+ padding-inline-start: 20px;
301
+ }
302
+
303
+ .sdk-scope ::file-selector-button {
304
+ margin-inline-end: 4px;
305
+ }
306
+
307
+ .sdk-scope ::placeholder {
308
+ opacity: 1;
309
+ }
310
+
311
+ @supports (not (-webkit-appearance: -apple-pay-button)) or
312
+ (contain-intrinsic-size: 1px) {
313
+ .sdk-scope ::placeholder {
314
+ color: color-mix(in oklab, currentcolor 50%, transparent);
315
+ }
316
+ }
317
+
318
+ .sdk-scope textarea {
319
+ resize: vertical;
320
+ }
321
+
322
+ .sdk-scope ::-webkit-search-decoration {
323
+ -webkit-appearance: none;
324
+ }
325
+
326
+ .sdk-scope ::-webkit-date-and-time-value {
327
+ min-height: 1lh;
328
+ text-align: inherit;
329
+ }
330
+
331
+ .sdk-scope ::-webkit-datetime-edit {
332
+ display: inline-flex;
333
+ }
334
+
335
+ .sdk-scope ::-webkit-datetime-edit-fields-wrapper {
336
+ padding: 0;
337
+ }
338
+
339
+ .sdk-scope ::-webkit-datetime-edit,
340
+ .sdk-scope ::-webkit-datetime-edit-year-field,
341
+ .sdk-scope ::-webkit-datetime-edit-month-field,
342
+ .sdk-scope ::-webkit-datetime-edit-day-field,
343
+ .sdk-scope ::-webkit-datetime-edit-hour-field,
344
+ .sdk-scope ::-webkit-datetime-edit-minute-field,
345
+ .sdk-scope ::-webkit-datetime-edit-second-field,
346
+ .sdk-scope ::-webkit-datetime-edit-millisecond-field,
347
+ .sdk-scope ::-webkit-datetime-edit-meridiem-field {
348
+ padding-block: 0;
349
+ }
350
+
351
+ .sdk-scope ::-webkit-calendar-picker-indicator {
352
+ line-height: 1;
353
+ }
354
+
355
+ .sdk-scope :-moz-ui-invalid {
356
+ box-shadow: none;
357
+ }
358
+
359
+ .sdk-scope button,
360
+ .sdk-scope input:where([type='button'], [type='reset'], [type='submit']),
361
+ .sdk-scope ::file-selector-button {
362
+ appearance: button;
363
+ }
364
+
365
+ .sdk-scope ::-webkit-inner-spin-button,
366
+ .sdk-scope ::-webkit-outer-spin-button {
367
+ height: auto;
368
+ }
369
+
370
+ .sdk-scope [hidden]:where(:not([hidden='until-found'])) {
371
+ display: none !important;
372
+ }
373
+
374
+ .sdk-scope {
375
+ font-family: inherit;
376
+ @apply text-foreground;
377
+ }
378
+
379
+ .sdk-scope,
380
+ .sdk-scope * {
381
+ @apply border-border outline-ring/50;
382
+ }
383
+
384
+ .sdk-scope button:not(:disabled),
385
+ .sdk-scope [role='button']:not(:disabled) {
386
+ cursor: pointer;
387
+ }
388
+ }
389
+
390
+ .sdk-order-container {
391
+ *,
392
+ *::before,
393
+ *::after {
394
+ box-sizing: border-box;
395
+ }
396
+
397
+ .sdk-iframe-wrapper {
398
+ display: flex;
399
+ flex-direction: column;
400
+ align-items: center;
401
+ }
402
+
403
+ iframe {
404
+ max-width: 640px;
405
+ border: none;
406
+ background: transparent;
407
+ border-radius: calc(var(--radius) * 2);
408
+ }
409
+ }