webstudio 0.270.0 → 0.272.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.
@@ -0,0 +1,3297 @@
1
+ import { S as SlotComponentIcon, d as descendantComponent, E as EmbedIcon, M as MarkdownEmbedIcon, b as body, s as section, n as nav, m as main, h as header, f as footer, a as figure, c as aside, e as article, j as address, k as div, T as TextIcon, l as h6, o as h5, p as h4, q as h3, r as h2, t as h1, u as p, v as a, w as span, P as PaintBrushIcon, x as b, y as i, z as sup, A as sub, B as button, C as input, D as form, W as WebhookFormIcon, F as img, G as ul, H as ol, I as li, J as hr, K as code, L as BracesIcon, N as label, O as textarea, Q as radio, R as RadioCheckedIcon, U as checkbox, V as CheckboxCheckedIcon, X as VimeoIcon, Y as YoutubeIcon, Z as ButtonElementIcon, _ as BoxIcon, $ as XmlIcon, a0 as CalendarIcon, a1 as time, a2 as select, a3 as HeaderIcon, a4 as ResourceIcon, a5 as WindowInfoIcon, a6 as WindowTitleIcon, a7 as VideoIcon, a8 as AnimationGroupIcon, a9 as TextAnimationIcon, aa as StaggerAnimationIcon, ab as PlayIcon, ac as CollapsibleIcon, ad as TriggerIcon, ae as ContentIcon, af as DialogIcon, ag as OverlayIcon, ah as HeadingIcon, ai as PopoverIcon, aj as TooltipIcon, ak as TabsIcon, al as LabelIcon, am as AccordionIcon, an as ItemIcon, ao as NavigationMenuIcon, ap as ListIcon, aq as ListItemIcon, ar as ViewportIcon, as as SelectIcon, at as FormTextFieldIcon, au as CheckMarkIcon, av as SwitchIcon, aw as RadioGroupIcon } from "./cli-BUDhVJgP.js";
2
+ const meta$N = {
3
+ category: "general",
4
+ description: "Slot is a container for content that you want to reference across the project. Changes made to a Slot's children will be reflected in all other instances of that Slot.",
5
+ icon: SlotComponentIcon,
6
+ order: 4
7
+ };
8
+ const meta$M = {};
9
+ const props$J = {
10
+ className: {
11
+ required: false,
12
+ control: "text",
13
+ type: "string",
14
+ description: ""
15
+ },
16
+ clientOnly: { required: false, control: "boolean", type: "boolean" },
17
+ code: { required: true, control: "text", type: "string" },
18
+ executeScriptOnCanvas: {
19
+ required: false,
20
+ control: "boolean",
21
+ type: "boolean"
22
+ }
23
+ };
24
+ const meta$L = {
25
+ category: "general",
26
+ label: "HTML Embed",
27
+ description: "Used to add HTML code to the page, such as an SVG or script.",
28
+ icon: EmbedIcon,
29
+ order: 3,
30
+ contentModel: {
31
+ category: "instance",
32
+ children: [descendantComponent]
33
+ },
34
+ presetStyle: {
35
+ div: [
36
+ {
37
+ property: "display",
38
+ value: { type: "keyword", value: "contents" }
39
+ },
40
+ {
41
+ property: "white-space-collapse",
42
+ value: { type: "keyword", value: "collapse" }
43
+ }
44
+ ]
45
+ },
46
+ initialProps: ["class", "clientOnly", "executeScriptOnCanvas"],
47
+ props: {
48
+ ...props$J,
49
+ clientOnly: {
50
+ ...props$J.clientOnly,
51
+ description: "Activate it for any scripts that can mutate the DOM or introduce interactivity. This only affects the published site."
52
+ },
53
+ executeScriptOnCanvas: {
54
+ ...props$J.executeScriptOnCanvas,
55
+ label: "Run scripts on canvas",
56
+ description: "Dangerously allow script execution on canvas without switching to preview mode. This only affects build mode, but may result in unwanted side effects inside builder!"
57
+ },
58
+ code: {
59
+ required: true,
60
+ control: "code",
61
+ language: "html",
62
+ type: "string"
63
+ }
64
+ }
65
+ };
66
+ const props$I = {
67
+ code: { required: true, control: "text", type: "string" }
68
+ };
69
+ const meta$K = {
70
+ icon: MarkdownEmbedIcon,
71
+ contentModel: {
72
+ category: "instance",
73
+ children: [descendantComponent]
74
+ },
75
+ presetStyle: {
76
+ div: [
77
+ {
78
+ property: "display",
79
+ value: { type: "keyword", value: "contents" }
80
+ },
81
+ {
82
+ property: "white-space-collapse",
83
+ value: { type: "keyword", value: "collapse" }
84
+ }
85
+ ]
86
+ },
87
+ initialProps: ["class"],
88
+ props: {
89
+ ...props$I,
90
+ code: {
91
+ required: true,
92
+ control: "code",
93
+ language: "markdown",
94
+ type: "string",
95
+ contentMode: true
96
+ }
97
+ }
98
+ };
99
+ const props$H = {};
100
+ const meta$J = {
101
+ presetStyle: { body },
102
+ initialProps: ["id", "class"],
103
+ props: props$H
104
+ };
105
+ const props$G = {
106
+ tag: { required: false, control: "text", type: "string" }
107
+ };
108
+ const meta$I = {
109
+ presetStyle: {
110
+ div,
111
+ address,
112
+ article,
113
+ aside,
114
+ figure,
115
+ footer,
116
+ header,
117
+ main,
118
+ nav,
119
+ section
120
+ },
121
+ initialProps: ["tag", "id", "class"],
122
+ props: {
123
+ ...props$G,
124
+ tag: {
125
+ required: true,
126
+ control: "tag",
127
+ type: "string",
128
+ options: [
129
+ "div",
130
+ "header",
131
+ "footer",
132
+ "nav",
133
+ "main",
134
+ "section",
135
+ "article",
136
+ "aside",
137
+ "address",
138
+ "figure",
139
+ "span"
140
+ ]
141
+ }
142
+ }
143
+ };
144
+ const props$F = {
145
+ tag: { required: false, control: "text", type: "string" }
146
+ };
147
+ const meta$H = {
148
+ icon: TextIcon,
149
+ presetStyle: {
150
+ div: [
151
+ ...div,
152
+ {
153
+ property: "min-height",
154
+ value: { type: "unit", unit: "em", value: 1 }
155
+ }
156
+ ]
157
+ },
158
+ initialProps: ["tag", "id", "class"],
159
+ props: {
160
+ ...props$F,
161
+ tag: {
162
+ required: true,
163
+ control: "tag",
164
+ type: "string",
165
+ options: ["div", "cite", "figcaption", "span"]
166
+ }
167
+ }
168
+ };
169
+ const props$E = {
170
+ tag: { required: false, control: "text", type: "string" }
171
+ };
172
+ const meta$G = {
173
+ presetStyle: {
174
+ h1,
175
+ h2,
176
+ h3,
177
+ h4,
178
+ h5,
179
+ h6
180
+ },
181
+ initialProps: ["tag", "id", "class"],
182
+ props: {
183
+ ...props$E,
184
+ tag: {
185
+ required: true,
186
+ control: "tag",
187
+ type: "string",
188
+ options: ["h1", "h2", "h3", "h4", "h5", "h6"]
189
+ }
190
+ }
191
+ };
192
+ const props$D = {};
193
+ const meta$F = {
194
+ presetStyle: { p },
195
+ initialProps: ["id", "class"],
196
+ props: props$D
197
+ };
198
+ const props$C = {
199
+ download: {
200
+ required: false,
201
+ control: "boolean",
202
+ type: "boolean",
203
+ description: "Whether to download the resource instead of navigating to it, and its filename if so"
204
+ },
205
+ prefetch: {
206
+ required: false,
207
+ control: "select",
208
+ type: "string",
209
+ options: ["none", "intent", "render", "viewport"]
210
+ },
211
+ preventScrollReset: { required: false, control: "boolean", type: "boolean" },
212
+ reloadDocument: { required: false, control: "boolean", type: "boolean" },
213
+ replace: { required: false, control: "boolean", type: "boolean" },
214
+ target: {
215
+ required: false,
216
+ control: "select",
217
+ type: "string",
218
+ options: ["_self", "_blank", "_parent", "_top"],
219
+ description: "Navigable for form submission"
220
+ }
221
+ };
222
+ const presetStyle$d = {
223
+ a: [
224
+ ...a,
225
+ {
226
+ property: "display",
227
+ value: { type: "keyword", value: "inline-block" }
228
+ }
229
+ ]
230
+ };
231
+ const meta$E = {
232
+ presetStyle: presetStyle$d,
233
+ states: [{ label: "Current page", selector: "[aria-current=page]" }],
234
+ initialProps: ["id", "class", "href", "target", "prefetch", "download"],
235
+ props: {
236
+ ...props$C,
237
+ href: {
238
+ type: "string",
239
+ control: "url",
240
+ required: false,
241
+ contentMode: true
242
+ }
243
+ }
244
+ };
245
+ const meta$D = meta$E;
246
+ const props$B = {};
247
+ const meta$C = {
248
+ label: "Text",
249
+ icon: PaintBrushIcon,
250
+ presetStyle: { span },
251
+ initialProps: ["id", "class"],
252
+ props: props$B
253
+ };
254
+ const props$A = {};
255
+ const meta$B = {
256
+ label: "Bold Text",
257
+ presetStyle: { b },
258
+ initialProps: ["id", "class"],
259
+ props: props$A
260
+ };
261
+ const props$z = {};
262
+ const meta$A = {
263
+ label: "Italic Text",
264
+ presetStyle: { i },
265
+ initialProps: ["id", "class"],
266
+ props: props$z
267
+ };
268
+ const props$y = {};
269
+ const meta$z = {
270
+ label: "Superscript Text",
271
+ presetStyle: { sup },
272
+ initialProps: ["id", "class"],
273
+ props: props$y
274
+ };
275
+ const props$x = {};
276
+ const meta$y = {
277
+ label: "Subscript Text",
278
+ presetStyle: { sub },
279
+ initialProps: ["id", "class"],
280
+ props: props$x
281
+ };
282
+ const props$w = {};
283
+ const meta$x = {
284
+ presetStyle: { button },
285
+ initialProps: ["id", "class", "type", "aria-label"],
286
+ props: props$w
287
+ };
288
+ const props$v = {};
289
+ const presetStyle$c = {
290
+ input: [
291
+ ...input,
292
+ {
293
+ property: "display",
294
+ value: { type: "keyword", value: "block" }
295
+ }
296
+ ]
297
+ };
298
+ const meta$w = {
299
+ label: "Text Input",
300
+ presetStyle: presetStyle$c,
301
+ initialProps: [
302
+ "id",
303
+ "class",
304
+ "name",
305
+ "value",
306
+ "type",
307
+ "placeholder",
308
+ "required",
309
+ "autofocus"
310
+ ],
311
+ props: props$v
312
+ };
313
+ const props$u = {
314
+ state: {
315
+ description: "Use this property to reveal the Success and Error states on the canvas so they can be styled. The Initial state is displayed when the page first opens. The Success and Error states are displayed depending on whether the Form submits successfully or unsuccessfully.",
316
+ required: false,
317
+ control: "radio",
318
+ type: "string",
319
+ defaultValue: "initial",
320
+ options: ["initial", "success", "error"]
321
+ }
322
+ };
323
+ const meta$v = {
324
+ label: "Webhook Form",
325
+ icon: WebhookFormIcon,
326
+ presetStyle: {
327
+ form
328
+ },
329
+ states: [
330
+ { selector: "[data-state=error]", label: "Error" },
331
+ { selector: "[data-state=success]", label: "Success" }
332
+ ],
333
+ initialProps: ["id", "class", "state", "action"],
334
+ props: {
335
+ ...props$u,
336
+ action: {
337
+ type: "resource",
338
+ control: "resource",
339
+ description: "The URI of a program that processes the information submitted via the form.",
340
+ required: false
341
+ }
342
+ }
343
+ };
344
+ const props$t = {};
345
+ const presetStyle$b = {
346
+ form: [
347
+ ...form,
348
+ { property: "min-height", value: { type: "unit", unit: "px", value: 20 } }
349
+ ]
350
+ };
351
+ const meta$u = {
352
+ label: "Form",
353
+ presetStyle: presetStyle$b,
354
+ initialProps: ["id", "class", "action"],
355
+ props: props$t
356
+ };
357
+ const props$s = {
358
+ optimize: {
359
+ description: "Optimize the image for enhanced performance.",
360
+ required: false,
361
+ control: "boolean",
362
+ type: "boolean",
363
+ defaultValue: true
364
+ },
365
+ quality: { required: false, control: "number", type: "number" }
366
+ };
367
+ const presetStyle$a = {
368
+ img: [
369
+ ...img,
370
+ // Otherwise on new image insert onto canvas it can overfit screen size multiple times
371
+ {
372
+ property: "max-width",
373
+ value: { type: "unit", unit: "%", value: 100 }
374
+ },
375
+ // inline | inline-block is not suitable because without line-height: 0 on the parent you get unsuitable spaces/margins
376
+ // see https://stackoverflow.com/questions/24771194/is-the-margin-of-inline-block-4px-is-static-for-all-browsers
377
+ {
378
+ property: "display",
379
+ value: { type: "keyword", value: "block" }
380
+ },
381
+ // Set image height to "auto" to reduce layout shift, improving compatibility across browsers like Safari.
382
+ // Unlike "fit-content," "auto" preserves the aspect ratio when the width exceeds max-width. (in Safari)
383
+ // See https://web.dev/articles/optimize-cls#best_practice_for_setting_image_dimensions
384
+ {
385
+ property: "height",
386
+ value: { type: "keyword", value: "auto" }
387
+ }
388
+ ]
389
+ };
390
+ const meta$t = {
391
+ category: "media",
392
+ description: "Add an image asset to the page. Webstudio automatically converts images to WebP or AVIF format and makes them responsive for best performance.",
393
+ presetStyle: presetStyle$a,
394
+ order: 0,
395
+ initialProps: [
396
+ "id",
397
+ "class",
398
+ "src",
399
+ "width",
400
+ "height",
401
+ "alt",
402
+ "loading",
403
+ "optimize"
404
+ ],
405
+ props: {
406
+ ...props$s,
407
+ // Automatically generated props don't have the right control.
408
+ src: {
409
+ type: "string",
410
+ control: "file",
411
+ label: "Source",
412
+ required: false,
413
+ accept: "image/*",
414
+ contentMode: true
415
+ },
416
+ width: {
417
+ type: "number",
418
+ control: "number",
419
+ required: false,
420
+ contentMode: true
421
+ },
422
+ height: {
423
+ type: "number",
424
+ control: "number",
425
+ required: false,
426
+ contentMode: true
427
+ },
428
+ alt: {
429
+ type: "string",
430
+ control: "text",
431
+ required: false,
432
+ contentMode: true
433
+ }
434
+ }
435
+ };
436
+ const props$r = {};
437
+ const presetStyle$9 = {
438
+ blockquote: [
439
+ {
440
+ property: "margin-top",
441
+ value: { type: "unit", value: 0, unit: "number" }
442
+ },
443
+ {
444
+ property: "margin-right",
445
+ value: { type: "unit", value: 0, unit: "number" }
446
+ },
447
+ {
448
+ property: "margin-bottom",
449
+ value: { type: "unit", value: 10, unit: "px" }
450
+ },
451
+ {
452
+ property: "margin-left",
453
+ value: { type: "unit", value: 0, unit: "number" }
454
+ },
455
+ {
456
+ property: "padding-top",
457
+ value: { type: "unit", value: 10, unit: "px" }
458
+ },
459
+ {
460
+ property: "padding-bottom",
461
+ value: { type: "unit", value: 10, unit: "px" }
462
+ },
463
+ {
464
+ property: "padding-left",
465
+ value: { type: "unit", value: 20, unit: "px" }
466
+ },
467
+ {
468
+ property: "padding-right",
469
+ value: { type: "unit", value: 20, unit: "px" }
470
+ },
471
+ {
472
+ property: "border-left-width",
473
+ value: { type: "unit", value: 5, unit: "px" }
474
+ },
475
+ {
476
+ property: "border-left-style",
477
+ value: { type: "keyword", value: "solid" }
478
+ },
479
+ {
480
+ property: "border-left-color",
481
+ value: { type: "rgb", r: 226, g: 226, b: 226, alpha: 1 }
482
+ }
483
+ ]
484
+ };
485
+ const meta$s = {
486
+ presetStyle: presetStyle$9,
487
+ initialProps: ["id", "class", "cite"],
488
+ props: props$r
489
+ };
490
+ const props$q = {
491
+ ordered: {
492
+ description: "Shows numbers instead of bullets when toggled. See the “List Style Type” property under the “List Item” section in the Style panel for more options.",
493
+ required: false,
494
+ control: "boolean",
495
+ type: "boolean",
496
+ defaultValue: false
497
+ }
498
+ };
499
+ const presetStyle$8 = {
500
+ ol: [
501
+ ...ol,
502
+ {
503
+ property: "margin-top",
504
+ value: { type: "keyword", value: "0" }
505
+ },
506
+ {
507
+ property: "margin-bottom",
508
+ value: { type: "keyword", value: "10px" }
509
+ },
510
+ {
511
+ property: "padding-left",
512
+ value: { type: "keyword", value: "40px" }
513
+ }
514
+ ],
515
+ ul: [
516
+ ...ul,
517
+ {
518
+ property: "margin-top",
519
+ value: { type: "keyword", value: "0" }
520
+ },
521
+ {
522
+ property: "margin-bottom",
523
+ value: { type: "keyword", value: "10px" }
524
+ },
525
+ {
526
+ property: "padding-left",
527
+ value: { type: "keyword", value: "40px" }
528
+ }
529
+ ]
530
+ };
531
+ const meta$r = {
532
+ presetStyle: presetStyle$8,
533
+ initialProps: ["id", "class", "ordered", "start", "reversed"],
534
+ props: props$q
535
+ };
536
+ const props$p = {};
537
+ const meta$q = {
538
+ presetStyle: { li },
539
+ initialProps: ["id", "class"],
540
+ props: props$p
541
+ };
542
+ const props$o = {};
543
+ const presetStyle$7 = {
544
+ hr: [
545
+ ...hr,
546
+ {
547
+ property: "height",
548
+ value: { type: "keyword", value: "1px" }
549
+ },
550
+ {
551
+ property: "background-color",
552
+ value: { type: "keyword", value: "gray" }
553
+ },
554
+ {
555
+ property: "border-top-style",
556
+ value: { type: "keyword", value: "none" }
557
+ },
558
+ {
559
+ property: "border-right-style",
560
+ value: { type: "keyword", value: "none" }
561
+ },
562
+ {
563
+ property: "border-left-style",
564
+ value: { type: "keyword", value: "none" }
565
+ },
566
+ {
567
+ property: "border-bottom-style",
568
+ value: { type: "keyword", value: "none" }
569
+ }
570
+ ]
571
+ };
572
+ const meta$p = {
573
+ presetStyle: presetStyle$7,
574
+ initialProps: ["id", "class"],
575
+ props: props$o
576
+ };
577
+ const props$n = {
578
+ code: { required: false, control: "text", type: "string" }
579
+ };
580
+ const presetStyle$6 = {
581
+ code: [
582
+ ...code,
583
+ {
584
+ property: "display",
585
+ value: { type: "keyword", value: "block" }
586
+ },
587
+ {
588
+ property: "white-space-collapse",
589
+ value: { type: "keyword", value: "preserve" }
590
+ },
591
+ {
592
+ property: "text-wrap-mode",
593
+ value: { type: "keyword", value: "wrap" }
594
+ },
595
+ {
596
+ property: "padding-left",
597
+ value: { type: "unit", value: 0.2, unit: "em" }
598
+ },
599
+ {
600
+ property: "padding-right",
601
+ value: { type: "unit", value: 0.2, unit: "em" }
602
+ },
603
+ {
604
+ property: "background-color",
605
+ value: { type: "rgb", r: 238, g: 238, b: 238, alpha: 1 }
606
+ }
607
+ ]
608
+ };
609
+ const meta$o = {
610
+ icon: BracesIcon,
611
+ contentModel: {
612
+ category: "instance",
613
+ children: []
614
+ },
615
+ presetStyle: presetStyle$6,
616
+ initialProps: ["id", "class", "lang", "code"],
617
+ props: {
618
+ ...props$n,
619
+ code: {
620
+ required: true,
621
+ control: "codetext",
622
+ type: "string"
623
+ }
624
+ }
625
+ };
626
+ const props$m = {};
627
+ const presetStyle$5 = {
628
+ label: [
629
+ ...label,
630
+ { property: "display", value: { type: "keyword", value: "block" } }
631
+ ]
632
+ };
633
+ const meta$n = {
634
+ label: "Input Label",
635
+ presetStyle: presetStyle$5,
636
+ initialProps: ["id", "class", "for"],
637
+ props: props$m
638
+ };
639
+ const props$l = {};
640
+ const presetStyle$4 = {
641
+ textarea: [
642
+ ...textarea,
643
+ // resize doesn't work well while on canvas
644
+ { property: "resize", value: { type: "keyword", value: "none" } },
645
+ {
646
+ property: "display",
647
+ value: { type: "keyword", value: "block" }
648
+ }
649
+ ]
650
+ };
651
+ const meta$m = {
652
+ label: "Text Area",
653
+ presetStyle: presetStyle$4,
654
+ contentModel: {
655
+ category: "instance",
656
+ children: []
657
+ },
658
+ initialProps: [
659
+ "id",
660
+ "class",
661
+ "name",
662
+ "value",
663
+ "placeholder",
664
+ "required",
665
+ "autofocus"
666
+ ],
667
+ props: props$l
668
+ };
669
+ const props$k = {
670
+ value: {
671
+ required: false,
672
+ control: "text",
673
+ type: "string",
674
+ description: "Value of the form control"
675
+ }
676
+ };
677
+ const presetStyle$3 = {
678
+ input: [
679
+ ...radio,
680
+ {
681
+ property: "margin-right",
682
+ value: { type: "unit", unit: "em", value: 0.5 }
683
+ }
684
+ ]
685
+ };
686
+ const meta$l = {
687
+ label: "Radio",
688
+ icon: RadioCheckedIcon,
689
+ presetStyle: presetStyle$3,
690
+ initialProps: ["id", "class", "name", "value", "required", "checked"],
691
+ props: props$k
692
+ };
693
+ const props$j = {
694
+ value: {
695
+ required: false,
696
+ control: "text",
697
+ type: "string",
698
+ description: "Value of the form control"
699
+ }
700
+ };
701
+ const presetStyle$2 = {
702
+ input: [
703
+ ...checkbox,
704
+ {
705
+ property: "margin-right",
706
+ value: { type: "unit", unit: "em", value: 0.5 }
707
+ }
708
+ ]
709
+ };
710
+ const meta$k = {
711
+ icon: CheckboxCheckedIcon,
712
+ presetStyle: presetStyle$2,
713
+ initialProps: ["id", "class", "name", "value", "required", "checked"],
714
+ props: props$j
715
+ };
716
+ const props$i = {
717
+ autopause: {
718
+ description: "Whether to pause the current video when another Vimeo video on the same page starts to play. Set this value to false to permit simultaneous playback of all the videos on the page. This option has no effect if you've disabled cookies in your browser, either through browser settings or with an extension or plugin.",
719
+ required: false,
720
+ control: "boolean",
721
+ type: "boolean",
722
+ defaultValue: true
723
+ },
724
+ autopip: {
725
+ description: "Whether to enable the browser to enter picture-in-picture mode automatically when switching tabs or windows, where supported.",
726
+ required: false,
727
+ control: "boolean",
728
+ type: "boolean"
729
+ },
730
+ autoplay: {
731
+ description: "Whether to start playback of the video automatically. This feature might not work on all devices.\nSome browsers require the `muted` parameter to be set to `true` for autoplay to work.",
732
+ required: false,
733
+ control: "boolean",
734
+ type: "boolean",
735
+ defaultValue: false
736
+ },
737
+ backgroundMode: {
738
+ description: "Whether the player is in background mode, which hides the playback controls, enables autoplay, and loops the video.",
739
+ required: false,
740
+ control: "boolean",
741
+ type: "boolean"
742
+ },
743
+ controlsColor: {
744
+ description: "A color value of the playback controls, which is normally #00ADEF. The embed settings of the video might override this value.",
745
+ required: false,
746
+ control: "color",
747
+ type: "string"
748
+ },
749
+ doNotTrack: {
750
+ description: "Whether to prevent the player from tracking session data, including cookies. Keep in mind that setting this argument to true also blocks video stats.",
751
+ required: false,
752
+ control: "boolean",
753
+ type: "boolean",
754
+ defaultValue: false
755
+ },
756
+ interactiveParams: {
757
+ description: "Key-value pairs representing dynamic parameters that are utilized on interactive videos with live elements, such as title=my-video,subtitle=interactive.",
758
+ required: false,
759
+ control: "text",
760
+ type: "string"
761
+ },
762
+ keyboard: {
763
+ description: "Whether to enable keyboard input to trigger player events. This setting doesn't affect tab control.",
764
+ required: false,
765
+ control: "boolean",
766
+ type: "boolean",
767
+ defaultValue: true
768
+ },
769
+ loading: {
770
+ description: "Not a Vimeo attribute: Loading attribute for the iframe allows to eager or lazy load the source",
771
+ required: false,
772
+ control: "radio",
773
+ type: "string",
774
+ defaultValue: "lazy",
775
+ options: ["eager", "lazy"]
776
+ },
777
+ loop: {
778
+ description: "Whether to restart the video automatically after reaching the end.",
779
+ required: false,
780
+ control: "boolean",
781
+ type: "boolean",
782
+ defaultValue: false
783
+ },
784
+ muted: {
785
+ description: "Whether the video is muted upon loading. The true value is required for the autoplay behavior in some browsers.",
786
+ required: false,
787
+ control: "boolean",
788
+ type: "boolean",
789
+ defaultValue: false
790
+ },
791
+ pip: {
792
+ description: "Whether to include the picture-in-picture button among the player controls and enable the picture-in-picture API.",
793
+ required: false,
794
+ control: "boolean",
795
+ type: "boolean",
796
+ defaultValue: false
797
+ },
798
+ playsinline: {
799
+ description: "Whether the video plays inline on supported mobile devices. To force the device to play the video in fullscreen mode instead, set this value to false.",
800
+ required: false,
801
+ control: "boolean",
802
+ type: "boolean",
803
+ defaultValue: false
804
+ },
805
+ quality: {
806
+ description: "For videos on a Vimeo Plus account or higher: the playback quality of the video. Use auto for the best possible quality given available bandwidth and other factors. You can also specify 360p, 540p, 720p, 1080p, 2k, and 4k.",
807
+ required: false,
808
+ control: "select",
809
+ type: "string",
810
+ defaultValue: "auto",
811
+ options: ["auto", "360p", "540p", "720p", "1080p", "2k", "4k"]
812
+ },
813
+ responsive: {
814
+ description: "Whether to return a responsive embed code, or one that provides intelligent adjustments based on viewing conditions. We recommend this option for mobile-optimized sites.",
815
+ required: false,
816
+ control: "boolean",
817
+ type: "boolean",
818
+ defaultValue: true
819
+ },
820
+ showByline: {
821
+ description: "Whether to display the video owner's name.",
822
+ required: false,
823
+ control: "boolean",
824
+ type: "boolean",
825
+ defaultValue: false
826
+ },
827
+ showControls: {
828
+ description: "Whether to display the player's interactive elements, including the play bar and sharing buttons. Set this option to false for a chromeless experience. To control playback when the play/pause button is hidden, set autoplay to true, use keyboard controls (which remain active), or implement our player SDK.",
829
+ required: false,
830
+ control: "boolean",
831
+ type: "boolean",
832
+ defaultValue: true
833
+ },
834
+ showPortrait: {
835
+ description: "Whether to display the video owner's portrait. Only works if either title or byline are also enabled",
836
+ required: false,
837
+ control: "boolean",
838
+ type: "boolean",
839
+ defaultValue: true
840
+ },
841
+ showPreview: {
842
+ description: "Not a Vimeo attribute: Whether the preview image should be loaded from Vimeo API. Ideally don't use it, because it will show up with some delay and will make your project feel slower.",
843
+ required: false,
844
+ control: "boolean",
845
+ type: "boolean",
846
+ defaultValue: false
847
+ },
848
+ showTitle: {
849
+ description: "Whether the player displays the title overlay.",
850
+ required: false,
851
+ control: "boolean",
852
+ type: "boolean",
853
+ defaultValue: false
854
+ },
855
+ speed: {
856
+ description: "Whether the player displays speed controls in the preferences menu and enables the playback rate API.",
857
+ required: false,
858
+ control: "boolean",
859
+ type: "boolean",
860
+ defaultValue: false
861
+ },
862
+ texttrack: {
863
+ description: "The text track to display with the video. Specify the text track by its language code (en), the language code and locale (en-US), or the language code and kind (en.captions). For this argument to work, the video must already have a text track of the given type; see our Help Center or Working with Text Track Uploads for more information.\nTo enable automatically generated closed captions instead, provide the value en-x-autogen. Please note that, at the present time, automatic captions are always in English.",
864
+ required: false,
865
+ control: "text",
866
+ type: "string"
867
+ },
868
+ transparent: {
869
+ description: "Whether the responsive player and transparent background are enabled.",
870
+ required: false,
871
+ control: "boolean",
872
+ type: "boolean",
873
+ defaultValue: true
874
+ },
875
+ url: {
876
+ description: "The ID or the URL of the video on Vimeo. You must supply one of these values to identify the video. When the video's privacy setting is Private, you must use the URL, and the URL must include the h parameter. For more information, see Vimeo’s introductory guide.",
877
+ required: false,
878
+ control: "text",
879
+ type: "string"
880
+ }
881
+ };
882
+ const initialProps$1 = [
883
+ "id",
884
+ "className",
885
+ "url",
886
+ "title",
887
+ "quality",
888
+ "loading",
889
+ "showPreview",
890
+ "autoplay",
891
+ "doNotTrack",
892
+ "loop",
893
+ "muted",
894
+ "showPortrait",
895
+ "showByline",
896
+ "showTitle",
897
+ "showControls",
898
+ "controlsColor",
899
+ "playsinline"
900
+ ];
901
+ const meta$j = {
902
+ icon: VimeoIcon,
903
+ contentModel: {
904
+ category: "instance",
905
+ children: ["instance"],
906
+ descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
907
+ },
908
+ presetStyle: { div },
909
+ initialProps: initialProps$1,
910
+ props: {
911
+ ...props$i,
912
+ url: {
913
+ ...props$i.url,
914
+ contentMode: true
915
+ }
916
+ }
917
+ };
918
+ const props$h = {
919
+ allowFullscreen: {
920
+ description: "Whether to allow fullscreen mode.\nOriginal parameter: `fs`",
921
+ required: false,
922
+ control: "boolean",
923
+ type: "boolean",
924
+ defaultValue: true
925
+ },
926
+ autoplay: {
927
+ description: "Whether the video should autoplay.\nSome browsers require the `muted` parameter to be set to `true` for autoplay to work.",
928
+ required: false,
929
+ control: "boolean",
930
+ type: "boolean",
931
+ defaultValue: false
932
+ },
933
+ captionLanguage: {
934
+ description: "Specifies the default language that the player will use to display captions.\nThe value is an ISO 639-1 two-letter language code.\nOriginal parameter: `cc_lang_pref`",
935
+ required: false,
936
+ control: "text",
937
+ type: "string"
938
+ },
939
+ color: {
940
+ description: "Specifies the color that will be used in the player's video progress bar to highlight the amount of the video that the viewer has already seen.\nValid values are 'red' and 'white'.",
941
+ required: false,
942
+ control: "radio",
943
+ type: "string",
944
+ options: ["red", "white"]
945
+ },
946
+ disableKeyboard: {
947
+ description: "Whether to disable keyboard controls.\nOriginal parameter: `disablekb`",
948
+ required: false,
949
+ control: "boolean",
950
+ type: "boolean",
951
+ defaultValue: false
952
+ },
953
+ endTime: {
954
+ description: "End time of the video in seconds.\nOriginal parameter: `end`",
955
+ required: false,
956
+ control: "number",
957
+ type: "number"
958
+ },
959
+ inline: {
960
+ description: "Whether to play inline on mobile (not fullscreen).",
961
+ required: false,
962
+ control: "boolean",
963
+ type: "boolean",
964
+ defaultValue: false
965
+ },
966
+ keyboard: {
967
+ description: "Whether to enable keyboard controls.",
968
+ required: false,
969
+ control: "boolean",
970
+ type: "boolean",
971
+ defaultValue: true
972
+ },
973
+ language: {
974
+ description: "Sets the player's interface language. The value is an ISO 639-1 two-letter language code or a fully specified locale.\nOriginal parameter: `hl`",
975
+ required: false,
976
+ control: "text",
977
+ type: "string"
978
+ },
979
+ listId: {
980
+ description: "ID of the playlist to load.\nOriginal parameter: `list`",
981
+ required: false,
982
+ control: "text",
983
+ type: "string"
984
+ },
985
+ listType: {
986
+ description: "Type of playlist to load.",
987
+ required: false,
988
+ control: "radio",
989
+ type: "string",
990
+ options: ["playlist", "user_uploads"]
991
+ },
992
+ loading: {
993
+ description: "Loading strategy for iframe",
994
+ required: false,
995
+ control: "radio",
996
+ type: "string",
997
+ defaultValue: "lazy",
998
+ options: ["eager", "lazy"]
999
+ },
1000
+ loop: {
1001
+ description: "Whether the video should loop continuously.",
1002
+ required: false,
1003
+ control: "boolean",
1004
+ type: "boolean",
1005
+ defaultValue: false
1006
+ },
1007
+ muted: {
1008
+ description: "Whether the video should start muted.\nUseful for enabling autoplay in browsers that require videos to be muted.\nOriginal parameter: `mute`",
1009
+ required: false,
1010
+ control: "boolean",
1011
+ type: "boolean",
1012
+ defaultValue: false
1013
+ },
1014
+ origin: {
1015
+ description: "Your domain for API compliance (e.g., `https://yourdomain.com`).",
1016
+ required: false,
1017
+ control: "text",
1018
+ type: "string"
1019
+ },
1020
+ playlist: {
1021
+ description: "This parameter specifies a comma-separated list of video IDs to play",
1022
+ required: false,
1023
+ control: "text",
1024
+ type: "string"
1025
+ },
1026
+ privacyEnhancedMode: {
1027
+ description: "The Privacy Enhanced Mode of the YouTube embedded player prevents the use of views of embedded YouTube content from influencing the viewer’s browsing experience on YouTube.\nhttps://support.google.com/youtube/answer/171780?hl=en#zippy=%2Cturn-on-privacy-enhanced-mode",
1028
+ required: false,
1029
+ control: "boolean",
1030
+ type: "boolean",
1031
+ defaultValue: true
1032
+ },
1033
+ referrer: {
1034
+ description: "Referrer URL for tracking purposes.\nOriginal parameter: `widget_referrer`",
1035
+ required: false,
1036
+ control: "text",
1037
+ type: "string"
1038
+ },
1039
+ showAnnotations: {
1040
+ description: "Whether to show annotations on the video.\nOriginal parameter: `iv_load_policy`",
1041
+ required: false,
1042
+ control: "boolean",
1043
+ type: "boolean",
1044
+ defaultValue: true
1045
+ },
1046
+ showCaptions: {
1047
+ description: "Whether captions should be shown by default.\nOriginal parameter: `cc_load_policy`",
1048
+ required: false,
1049
+ control: "boolean",
1050
+ type: "boolean",
1051
+ defaultValue: false
1052
+ },
1053
+ showControls: {
1054
+ description: "Whether to show player controls.",
1055
+ required: false,
1056
+ control: "boolean",
1057
+ type: "boolean",
1058
+ defaultValue: true
1059
+ },
1060
+ showPreview: { required: false, control: "boolean", type: "boolean" },
1061
+ showRelatedVideos: {
1062
+ description: "Whether to show related videos at the end.\nOriginal parameter: `rel`",
1063
+ required: false,
1064
+ control: "boolean",
1065
+ type: "boolean",
1066
+ defaultValue: true
1067
+ },
1068
+ startTime: {
1069
+ description: "Start time of the video in seconds.\nOriginal parameter: `start`",
1070
+ required: false,
1071
+ control: "number",
1072
+ type: "number"
1073
+ },
1074
+ url: {
1075
+ description: "The YouTube video URL or ID",
1076
+ required: false,
1077
+ control: "text",
1078
+ type: "string"
1079
+ }
1080
+ };
1081
+ const initialProps = [
1082
+ "id",
1083
+ "className",
1084
+ "url",
1085
+ "privacyEnhancedMode",
1086
+ "title",
1087
+ "loading",
1088
+ "showPreview",
1089
+ "autoplay",
1090
+ "showControls",
1091
+ "showRelatedVideos",
1092
+ "keyboard",
1093
+ "loop",
1094
+ "inline",
1095
+ "allowFullscreen",
1096
+ "showCaptions",
1097
+ "showAnnotations",
1098
+ "startTime",
1099
+ "endTime",
1100
+ "disableKeyboard",
1101
+ "referrer",
1102
+ "listType",
1103
+ "listId",
1104
+ "origin",
1105
+ "captionLanguage",
1106
+ "language",
1107
+ "color",
1108
+ "playlist"
1109
+ ];
1110
+ const meta$i = {
1111
+ icon: YoutubeIcon,
1112
+ contentModel: {
1113
+ category: "instance",
1114
+ children: ["instance"],
1115
+ descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
1116
+ },
1117
+ presetStyle: { div },
1118
+ initialProps,
1119
+ props: {
1120
+ ...props$h,
1121
+ url: {
1122
+ ...props$h.url,
1123
+ contentMode: true
1124
+ }
1125
+ }
1126
+ };
1127
+ const props$g = {
1128
+ optimize: {
1129
+ description: "Optimize the image for enhanced performance.",
1130
+ required: false,
1131
+ control: "boolean",
1132
+ type: "boolean"
1133
+ },
1134
+ quality: { required: false, control: "number", type: "number" }
1135
+ };
1136
+ const meta$h = {
1137
+ ...meta$t,
1138
+ category: "hidden",
1139
+ label: "Preview Image",
1140
+ contentModel: {
1141
+ category: "none",
1142
+ children: []
1143
+ },
1144
+ initialProps: meta$t.initialProps,
1145
+ props: {
1146
+ ...props$g,
1147
+ // Automatically generated props don't have the right control.
1148
+ src: {
1149
+ type: "string",
1150
+ control: "file",
1151
+ label: "Source",
1152
+ required: false,
1153
+ contentMode: true
1154
+ }
1155
+ }
1156
+ };
1157
+ const props$f = {};
1158
+ const meta$g = {
1159
+ category: "hidden",
1160
+ label: "Play Button",
1161
+ icon: ButtonElementIcon,
1162
+ contentModel: {
1163
+ category: "none",
1164
+ children: ["instance"]
1165
+ },
1166
+ presetStyle: { button },
1167
+ initialProps: ["id", "class"],
1168
+ props: props$f
1169
+ };
1170
+ const props$e = {};
1171
+ const meta$f = {
1172
+ icon: BoxIcon,
1173
+ category: "hidden",
1174
+ label: "Spinner",
1175
+ contentModel: {
1176
+ category: "none",
1177
+ children: ["instance"]
1178
+ },
1179
+ presetStyle: { div },
1180
+ initialProps: ["id", "class"],
1181
+ props: props$e
1182
+ };
1183
+ const props$d = {
1184
+ href: {
1185
+ required: false,
1186
+ control: "text",
1187
+ type: "string",
1188
+ description: "Address of the hyperlink"
1189
+ },
1190
+ hreflang: {
1191
+ required: false,
1192
+ control: "text",
1193
+ type: "string",
1194
+ description: "Language of the linked resource"
1195
+ },
1196
+ rel: {
1197
+ required: false,
1198
+ control: "text",
1199
+ type: "string",
1200
+ description: "Relationship between the location in the document containing the hyperlink and the destination resource"
1201
+ },
1202
+ tag: { required: false, control: "text", type: "string", defaultValue: "" },
1203
+ xmlns: { required: false, control: "text", type: "string" },
1204
+ "xmlns:xhtml": { required: false, control: "text", type: "string" }
1205
+ };
1206
+ const meta$e = {
1207
+ category: "xml",
1208
+ order: 6,
1209
+ icon: XmlIcon,
1210
+ description: "XML Node",
1211
+ initialProps: ["tag"],
1212
+ props: props$d
1213
+ };
1214
+ const props$c = {
1215
+ dateStyle: {
1216
+ required: false,
1217
+ control: "radio",
1218
+ type: "string",
1219
+ defaultValue: "short",
1220
+ options: ["long", "short"]
1221
+ },
1222
+ datetime: {
1223
+ required: false,
1224
+ control: "text",
1225
+ type: "string",
1226
+ defaultValue: "dateTime attribute is not set",
1227
+ description: "Machine-readable value"
1228
+ }
1229
+ };
1230
+ const meta$d = {
1231
+ category: "xml",
1232
+ description: "Converts machine-readable date and time to ISO format.",
1233
+ icon: CalendarIcon,
1234
+ order: 7,
1235
+ initialProps: ["datetime", "dateStyle"],
1236
+ props: props$c
1237
+ };
1238
+ const props$b = {
1239
+ country: {
1240
+ required: false,
1241
+ control: "select",
1242
+ type: "string",
1243
+ defaultValue: "GB",
1244
+ options: [
1245
+ "AF",
1246
+ "AL",
1247
+ "DZ",
1248
+ "AS",
1249
+ "AD",
1250
+ "AO",
1251
+ "AI",
1252
+ "AQ",
1253
+ "AG",
1254
+ "AR",
1255
+ "AM",
1256
+ "AW",
1257
+ "AU",
1258
+ "AT",
1259
+ "AZ",
1260
+ "BS",
1261
+ "BH",
1262
+ "BD",
1263
+ "BB",
1264
+ "BY",
1265
+ "BE",
1266
+ "BZ",
1267
+ "BJ",
1268
+ "BM",
1269
+ "BT",
1270
+ "BO",
1271
+ "BA",
1272
+ "BW",
1273
+ "BR",
1274
+ "BN",
1275
+ "BG",
1276
+ "BF",
1277
+ "BI",
1278
+ "CV",
1279
+ "KH",
1280
+ "CM",
1281
+ "CA",
1282
+ "KY",
1283
+ "CF",
1284
+ "TD",
1285
+ "CL",
1286
+ "CN",
1287
+ "CO",
1288
+ "KM",
1289
+ "CG",
1290
+ "CD",
1291
+ "CR",
1292
+ "HR",
1293
+ "CU",
1294
+ "CY",
1295
+ "CZ",
1296
+ "DK",
1297
+ "DJ",
1298
+ "DM",
1299
+ "DO",
1300
+ "EC",
1301
+ "EG",
1302
+ "SV",
1303
+ "GQ",
1304
+ "ER",
1305
+ "EE",
1306
+ "SZ",
1307
+ "ET",
1308
+ "FJ",
1309
+ "FI",
1310
+ "FR",
1311
+ "GA",
1312
+ "GM",
1313
+ "GE",
1314
+ "DE",
1315
+ "GH",
1316
+ "GR",
1317
+ "GD",
1318
+ "GT",
1319
+ "GN",
1320
+ "GW",
1321
+ "GY",
1322
+ "HT",
1323
+ "HN",
1324
+ "HU",
1325
+ "IS",
1326
+ "IN",
1327
+ "ID",
1328
+ "IR",
1329
+ "IQ",
1330
+ "IE",
1331
+ "IL",
1332
+ "IT",
1333
+ "JM",
1334
+ "JP",
1335
+ "JO",
1336
+ "KZ",
1337
+ "KE",
1338
+ "KI",
1339
+ "KP",
1340
+ "KR",
1341
+ "KW",
1342
+ "KG",
1343
+ "LA",
1344
+ "LV",
1345
+ "LB",
1346
+ "LS",
1347
+ "LR",
1348
+ "LY",
1349
+ "LI",
1350
+ "LT",
1351
+ "LU",
1352
+ "MG",
1353
+ "MW",
1354
+ "MY",
1355
+ "MV",
1356
+ "ML",
1357
+ "MT",
1358
+ "MH",
1359
+ "MR",
1360
+ "MU",
1361
+ "MX",
1362
+ "FM",
1363
+ "MD",
1364
+ "MC",
1365
+ "MN",
1366
+ "ME",
1367
+ "MA",
1368
+ "MZ",
1369
+ "MM",
1370
+ "NA",
1371
+ "NR",
1372
+ "NP",
1373
+ "NL",
1374
+ "NZ",
1375
+ "NI",
1376
+ "NE",
1377
+ "NG",
1378
+ "NO",
1379
+ "OM",
1380
+ "PK",
1381
+ "PW",
1382
+ "PA",
1383
+ "PG",
1384
+ "PY",
1385
+ "PE",
1386
+ "PH",
1387
+ "PL",
1388
+ "PT",
1389
+ "QA",
1390
+ "RO",
1391
+ "RU",
1392
+ "RW",
1393
+ "KN",
1394
+ "LC",
1395
+ "VC",
1396
+ "WS",
1397
+ "SM",
1398
+ "ST",
1399
+ "SA",
1400
+ "SN",
1401
+ "RS",
1402
+ "SC",
1403
+ "SL",
1404
+ "SG",
1405
+ "SK",
1406
+ "SI",
1407
+ "SB",
1408
+ "SO",
1409
+ "ZA",
1410
+ "SS",
1411
+ "ES",
1412
+ "LK",
1413
+ "SD",
1414
+ "SR",
1415
+ "SE",
1416
+ "CH",
1417
+ "SY",
1418
+ "TW",
1419
+ "TJ",
1420
+ "TZ",
1421
+ "TH",
1422
+ "TL",
1423
+ "TG",
1424
+ "TO",
1425
+ "TT",
1426
+ "TN",
1427
+ "TR",
1428
+ "TM",
1429
+ "TV",
1430
+ "UG",
1431
+ "UA",
1432
+ "AE",
1433
+ "GB",
1434
+ "US",
1435
+ "UY",
1436
+ "UZ",
1437
+ "VU",
1438
+ "VA",
1439
+ "VE",
1440
+ "VN",
1441
+ "YE",
1442
+ "ZM",
1443
+ "ZW"
1444
+ ]
1445
+ },
1446
+ dateStyle: {
1447
+ required: false,
1448
+ control: "select",
1449
+ type: "string",
1450
+ defaultValue: "medium",
1451
+ options: ["full", "long", "medium", "short", "none"]
1452
+ },
1453
+ datetime: {
1454
+ required: false,
1455
+ control: "text",
1456
+ type: "string",
1457
+ defaultValue: "dateTime attribute is not set",
1458
+ description: "Machine-readable value"
1459
+ },
1460
+ format: {
1461
+ description: 'Custom format template. Overrides Date Style and Time Style.\n\nTokens: YYYY/YY (year), MMMM/MMM/MM/M (month), DDDD/DDD/DD/D (day), HH/H (hours), mm/m (minutes), ss/s (seconds)\n\nExamples:\n- "YYYY-MM-DD" → 2025-11-03\n- "DDDD, MMMM D" → Monday, November 3\n- "DDD, D. MMM YYYY" → Mon, 3. Nov 2025\n\nDay and month names use the selected language.',
1462
+ required: false,
1463
+ control: "text",
1464
+ type: "string"
1465
+ },
1466
+ language: {
1467
+ required: false,
1468
+ control: "select",
1469
+ type: "string",
1470
+ defaultValue: "en",
1471
+ options: [
1472
+ "hr",
1473
+ "th",
1474
+ "tr",
1475
+ "id",
1476
+ "is",
1477
+ "cy",
1478
+ "fr",
1479
+ "af",
1480
+ "am",
1481
+ "ar",
1482
+ "az",
1483
+ "be",
1484
+ "bg",
1485
+ "bn",
1486
+ "bs",
1487
+ "ca",
1488
+ "cs",
1489
+ "da",
1490
+ "de",
1491
+ "el",
1492
+ "en",
1493
+ "es",
1494
+ "et",
1495
+ "eu",
1496
+ "fa",
1497
+ "fi",
1498
+ "ga",
1499
+ "gl",
1500
+ "gu",
1501
+ "he",
1502
+ "hi",
1503
+ "hu",
1504
+ "hy",
1505
+ "it",
1506
+ "ja",
1507
+ "ka",
1508
+ "kk",
1509
+ "km",
1510
+ "kn",
1511
+ "ko",
1512
+ "ky",
1513
+ "lb",
1514
+ "lt",
1515
+ "lv",
1516
+ "mk",
1517
+ "ml",
1518
+ "mn",
1519
+ "mr",
1520
+ "ms",
1521
+ "mt",
1522
+ "nb",
1523
+ "nl",
1524
+ "nn",
1525
+ "pl",
1526
+ "pt",
1527
+ "ro",
1528
+ "ru",
1529
+ "si",
1530
+ "sk",
1531
+ "sl",
1532
+ "sq",
1533
+ "sr",
1534
+ "sv",
1535
+ "sw",
1536
+ "ta",
1537
+ "te",
1538
+ "uk",
1539
+ "ur",
1540
+ "uz",
1541
+ "vi",
1542
+ "zh"
1543
+ ]
1544
+ },
1545
+ timeStyle: {
1546
+ required: false,
1547
+ control: "select",
1548
+ type: "string",
1549
+ defaultValue: "none",
1550
+ options: ["full", "long", "medium", "short", "none"]
1551
+ },
1552
+ timeZone: {
1553
+ description: 'Time zone used to format the date.\n\nUse "UTC" for deterministic UTC output, "visitor" to use the browser time\nzone after hydration, or an IANA time zone like "Europe/Berlin".',
1554
+ required: false,
1555
+ control: "text",
1556
+ type: "string",
1557
+ defaultValue: "UTC"
1558
+ }
1559
+ };
1560
+ const meta$c = {
1561
+ category: "localization",
1562
+ description: "Converts machine-readable date and time to a human-readable format.",
1563
+ contentModel: {
1564
+ category: "instance",
1565
+ children: []
1566
+ },
1567
+ presetStyle: {
1568
+ time
1569
+ },
1570
+ initialProps: [
1571
+ "datetime",
1572
+ "language",
1573
+ "country",
1574
+ "dateStyle",
1575
+ "timeStyle",
1576
+ "timeZone",
1577
+ "format"
1578
+ ],
1579
+ props: {
1580
+ ...props$b,
1581
+ datetime: {
1582
+ type: "string",
1583
+ control: "text",
1584
+ required: false,
1585
+ contentMode: true
1586
+ },
1587
+ language: {
1588
+ ...props$b.language,
1589
+ contentMode: true
1590
+ },
1591
+ country: {
1592
+ ...props$b.country,
1593
+ contentMode: true
1594
+ },
1595
+ dateStyle: {
1596
+ ...props$b.dateStyle,
1597
+ contentMode: true
1598
+ },
1599
+ timeStyle: {
1600
+ ...props$b.timeStyle,
1601
+ contentMode: true
1602
+ },
1603
+ timeZone: {
1604
+ required: false,
1605
+ control: "timeZone",
1606
+ type: "string",
1607
+ defaultValue: "UTC",
1608
+ options: ["UTC", "visitor"],
1609
+ description: 'Timezone used to display the date. Use "visitor" to display each visitor’s browser timezone after the page loads, or select/type an IANA timezone like "Europe/Berlin".',
1610
+ contentMode: true
1611
+ },
1612
+ format: {
1613
+ ...props$b.format,
1614
+ contentMode: true
1615
+ }
1616
+ }
1617
+ };
1618
+ const props$a = {};
1619
+ const presetStyle$1 = {
1620
+ select: [
1621
+ ...select,
1622
+ {
1623
+ property: "display",
1624
+ value: { type: "keyword", value: "block" }
1625
+ }
1626
+ ]
1627
+ };
1628
+ const meta$b = {
1629
+ presetStyle: presetStyle$1,
1630
+ initialProps: [
1631
+ "id",
1632
+ "class",
1633
+ "name",
1634
+ "value",
1635
+ "multiple",
1636
+ "required",
1637
+ "autofocus"
1638
+ ],
1639
+ props: props$a
1640
+ };
1641
+ const props$9 = {};
1642
+ const presetStyle = {
1643
+ option: [
1644
+ {
1645
+ property: "background-color",
1646
+ state: ":checked",
1647
+ value: {
1648
+ type: "rgb",
1649
+ alpha: 1,
1650
+ r: 209,
1651
+ g: 209,
1652
+ b: 209
1653
+ }
1654
+ }
1655
+ ]
1656
+ };
1657
+ const meta$a = {
1658
+ category: "hidden",
1659
+ description: "An item within a drop-down menu that users can select as their chosen value.",
1660
+ presetStyle,
1661
+ states: [
1662
+ // Applies when option is being activated (clicked)
1663
+ { selector: ":active", label: "Active" },
1664
+ // Applies to the currently selected option
1665
+ { selector: ":checked", label: "Checked" },
1666
+ // For <option> elements: The :default pseudo-class selects the <option> that has the selected attribute when the page loads. This is true even if the user later selects a different option.
1667
+ { selector: ":default", label: "Default" },
1668
+ { selector: ":hover", label: "Hover" },
1669
+ { selector: ":disabled", label: "Disabled" }
1670
+ ],
1671
+ initialProps: ["label", "value", "label", "disabled"],
1672
+ props: props$9
1673
+ };
1674
+ const props$8 = {};
1675
+ const meta$9 = {
1676
+ icon: HeaderIcon,
1677
+ description: "Inserts children into the head of the document",
1678
+ contentModel: {
1679
+ category: "instance",
1680
+ children: ["HeadLink", "HeadMeta", "HeadTitle"]
1681
+ },
1682
+ props: props$8
1683
+ };
1684
+ const props$7 = {};
1685
+ const meta$8 = {
1686
+ icon: ResourceIcon,
1687
+ contentModel: {
1688
+ category: "none",
1689
+ children: []
1690
+ },
1691
+ initialProps: ["rel", "hrefLang", "href", "type", "as"],
1692
+ props: props$7
1693
+ };
1694
+ const props$6 = {};
1695
+ const meta$7 = {
1696
+ icon: WindowInfoIcon,
1697
+ contentModel: {
1698
+ category: "none",
1699
+ children: []
1700
+ },
1701
+ initialProps: ["name", "property", "content"],
1702
+ props: props$6
1703
+ };
1704
+ const props$5 = {};
1705
+ const meta$6 = {
1706
+ icon: WindowTitleIcon,
1707
+ contentModel: {
1708
+ category: "none",
1709
+ children: ["text"]
1710
+ },
1711
+ props: props$5
1712
+ };
1713
+ const props$4 = {};
1714
+ const meta$5 = {
1715
+ icon: VideoIcon,
1716
+ contentModel: {
1717
+ category: "instance",
1718
+ children: []
1719
+ },
1720
+ presetStyle: {
1721
+ video: [
1722
+ {
1723
+ property: "max-width",
1724
+ value: { type: "unit", unit: "%", value: 100 }
1725
+ }
1726
+ ]
1727
+ },
1728
+ initialProps: [
1729
+ "id",
1730
+ "class",
1731
+ "width",
1732
+ "height",
1733
+ "src",
1734
+ "autoPlay",
1735
+ "controls",
1736
+ "loop",
1737
+ "muted",
1738
+ "preload",
1739
+ "playsInline"
1740
+ ],
1741
+ props: {
1742
+ ...props$4,
1743
+ // Automatically generated props don't have the right control.
1744
+ src: {
1745
+ type: "string",
1746
+ control: "file",
1747
+ label: "Source",
1748
+ required: false,
1749
+ accept: ".mp4,.webm,.mpg,.mpeg,.mov",
1750
+ contentMode: true
1751
+ },
1752
+ width: {
1753
+ type: "number",
1754
+ control: "number",
1755
+ required: false,
1756
+ contentMode: true
1757
+ },
1758
+ height: {
1759
+ type: "number",
1760
+ control: "number",
1761
+ required: false,
1762
+ contentMode: true
1763
+ }
1764
+ }
1765
+ };
1766
+ const baseComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1767
+ __proto__: null,
1768
+ Blockquote: meta$s,
1769
+ Body: meta$J,
1770
+ Bold: meta$B,
1771
+ Box: meta$I,
1772
+ Button: meta$x,
1773
+ Checkbox: meta$k,
1774
+ CodeText: meta$o,
1775
+ Form: meta$v,
1776
+ Fragment: meta$M,
1777
+ HeadLink: meta$8,
1778
+ HeadMeta: meta$7,
1779
+ HeadSlot: meta$9,
1780
+ HeadTitle: meta$6,
1781
+ Heading: meta$G,
1782
+ HtmlEmbed: meta$L,
1783
+ Image: meta$t,
1784
+ Input: meta$w,
1785
+ Italic: meta$A,
1786
+ Label: meta$n,
1787
+ Link: meta$E,
1788
+ List: meta$r,
1789
+ ListItem: meta$q,
1790
+ MarkdownEmbed: meta$K,
1791
+ Option: meta$a,
1792
+ Paragraph: meta$F,
1793
+ RadioButton: meta$l,
1794
+ RemixForm: meta$u,
1795
+ RichTextLink: meta$D,
1796
+ Select: meta$b,
1797
+ Separator: meta$p,
1798
+ Slot: meta$N,
1799
+ Span: meta$C,
1800
+ Subscript: meta$y,
1801
+ Superscript: meta$z,
1802
+ Text: meta$H,
1803
+ Textarea: meta$m,
1804
+ Time: meta$c,
1805
+ Video: meta$5,
1806
+ Vimeo: meta$j,
1807
+ VimeoPlayButton: meta$g,
1808
+ VimeoPreviewImage: meta$h,
1809
+ VimeoSpinner: meta$f,
1810
+ XmlNode: meta$e,
1811
+ XmlTime: meta$d,
1812
+ YouTube: meta$i
1813
+ }, Symbol.toStringTag, { value: "Module" }));
1814
+ const createMetaProxy$1 = (prefix) => {
1815
+ return new Proxy(
1816
+ {},
1817
+ {
1818
+ get(_target, prop) {
1819
+ return `${prefix}${prop}`;
1820
+ }
1821
+ }
1822
+ );
1823
+ };
1824
+ const animation = createMetaProxy$1(
1825
+ "@webstudio-is/sdk-components-animation:"
1826
+ );
1827
+ const meta$4 = {
1828
+ category: "animations",
1829
+ description: "Animation Group component is designed to animate its children.",
1830
+ icon: AnimationGroupIcon,
1831
+ order: 0,
1832
+ label: "Animation Group",
1833
+ contentModel: {
1834
+ category: "instance",
1835
+ children: [
1836
+ "instance",
1837
+ animation.AnimateText,
1838
+ animation.StaggerAnimation,
1839
+ animation.VideoAnimation
1840
+ ]
1841
+ },
1842
+ initialProps: ["action"],
1843
+ props: {
1844
+ action: {
1845
+ required: false,
1846
+ control: "animationAction",
1847
+ type: "animationAction",
1848
+ description: "Animation Action"
1849
+ }
1850
+ }
1851
+ };
1852
+ const props$3 = {
1853
+ className: {
1854
+ required: false,
1855
+ control: "text",
1856
+ type: "string",
1857
+ description: "Classes to which the element belongs"
1858
+ },
1859
+ easing: {
1860
+ description: "Easing function applied within the sliding window.",
1861
+ required: false,
1862
+ control: "select",
1863
+ type: "string",
1864
+ defaultValue: "linear",
1865
+ options: [
1866
+ "linear",
1867
+ "easeIn",
1868
+ "easeInCubic",
1869
+ "easeInQuart",
1870
+ "easeOut",
1871
+ "easeOutCubic",
1872
+ "easeOutQuart",
1873
+ "ease",
1874
+ "easeInOutCubic",
1875
+ "easeInOutQuart"
1876
+ ]
1877
+ },
1878
+ slidingWindow: {
1879
+ description: "Size of the sliding window for the animation:\n- 0: Typewriter effect (no animation).\n- (0..1]: Animates one part of the text at a time.\n- (1..n]: Animates multiple parts of the text within the sliding window.",
1880
+ required: false,
1881
+ control: "number",
1882
+ type: "number",
1883
+ defaultValue: 5
1884
+ },
1885
+ splitBy: {
1886
+ description: "Defines how the text is split for animation (e.g., by character, space, or symbol).",
1887
+ required: false,
1888
+ control: "select",
1889
+ type: "string",
1890
+ defaultValue: "char",
1891
+ options: ["char", "space", 'symbol "#"', 'symbol "~"']
1892
+ }
1893
+ };
1894
+ const meta$3 = {
1895
+ category: "animations",
1896
+ description: "Text animation allows you to split text by char or by word to animate it.",
1897
+ icon: TextAnimationIcon,
1898
+ order: 1,
1899
+ label: "Text Animation",
1900
+ contentModel: {
1901
+ category: "none",
1902
+ children: ["instance"]
1903
+ },
1904
+ presetStyle: { div },
1905
+ initialProps: ["slidingWindow", "easing", "splitBy"],
1906
+ props: props$3
1907
+ };
1908
+ const props$2 = {
1909
+ className: {
1910
+ required: false,
1911
+ control: "text",
1912
+ type: "string",
1913
+ description: "Classes to which the element belongs"
1914
+ },
1915
+ easing: {
1916
+ description: "Easing function applied within the sliding window.",
1917
+ required: false,
1918
+ control: "select",
1919
+ type: "string",
1920
+ defaultValue: "linear",
1921
+ options: [
1922
+ "linear",
1923
+ "easeIn",
1924
+ "easeInCubic",
1925
+ "easeInQuart",
1926
+ "easeOut",
1927
+ "easeOutCubic",
1928
+ "easeOutQuart",
1929
+ "ease",
1930
+ "easeInOutCubic",
1931
+ "easeInOutQuart"
1932
+ ]
1933
+ },
1934
+ slidingWindow: {
1935
+ description: "Size of the sliding window for the animation:\n- 0: Typewriter effect (no animation).\n- (0..1]: Animates one child at a time.\n- (1..n]: Animates multiple children within the sliding window.",
1936
+ required: false,
1937
+ control: "number",
1938
+ type: "number",
1939
+ defaultValue: 1
1940
+ }
1941
+ };
1942
+ const meta$2 = {
1943
+ category: "animations",
1944
+ description: "Stagger animation allows you to animate children elements with a sliding window.",
1945
+ icon: StaggerAnimationIcon,
1946
+ order: 4,
1947
+ label: "Stagger Animation",
1948
+ contentModel: {
1949
+ category: "none",
1950
+ children: ["instance"]
1951
+ },
1952
+ presetStyle: { div },
1953
+ initialProps: ["slidingWindow", "easing"],
1954
+ props: props$2
1955
+ };
1956
+ const props$1 = {
1957
+ timeline: { required: false, control: "boolean", type: "boolean" }
1958
+ };
1959
+ const meta$1 = {
1960
+ icon: PlayIcon,
1961
+ label: "Video Animation",
1962
+ contentModel: {
1963
+ category: "none",
1964
+ children: ["instance"]
1965
+ },
1966
+ presetStyle: { div },
1967
+ props: props$1,
1968
+ initialProps: ["timeline"]
1969
+ };
1970
+ const animationComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1971
+ __proto__: null,
1972
+ AnimateChildren: meta$4,
1973
+ AnimateText: meta$3,
1974
+ StaggerAnimation: meta$2,
1975
+ VideoAnimation: meta$1
1976
+ }, Symbol.toStringTag, { value: "Module" }));
1977
+ const createMetaProxy = (prefix) => {
1978
+ return new Proxy(
1979
+ {},
1980
+ {
1981
+ get(_target, prop) {
1982
+ return `${prefix}${prop}`;
1983
+ }
1984
+ }
1985
+ );
1986
+ };
1987
+ const radix = createMetaProxy(
1988
+ "@webstudio-is/sdk-components-react-radix:"
1989
+ );
1990
+ const propsCollapsible = {
1991
+ disabled: {
1992
+ required: false,
1993
+ control: "boolean",
1994
+ type: "boolean",
1995
+ description: "Whether the form control is disabled"
1996
+ },
1997
+ open: {
1998
+ required: false,
1999
+ control: "boolean",
2000
+ type: "boolean",
2001
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
2002
+ }
2003
+ };
2004
+ const propsCollapsibleTrigger = {};
2005
+ const propsCollapsibleContent = {};
2006
+ const metaCollapsible = {
2007
+ icon: CollapsibleIcon,
2008
+ contentModel: {
2009
+ category: "instance",
2010
+ children: ["instance"],
2011
+ descendants: [radix.CollapsibleTrigger, radix.CollapsibleContent]
2012
+ },
2013
+ states: [
2014
+ { label: "Open", selector: '[data-state="open"]' },
2015
+ { label: "Closed", selector: '[data-state="closed"]' }
2016
+ ],
2017
+ presetStyle: {
2018
+ div
2019
+ },
2020
+ initialProps: ["open"],
2021
+ props: propsCollapsible
2022
+ };
2023
+ const metaCollapsibleTrigger = {
2024
+ icon: TriggerIcon,
2025
+ contentModel: {
2026
+ category: "none",
2027
+ children: ["instance", "rich-text"]
2028
+ },
2029
+ states: [
2030
+ { label: "Open", selector: '[data-state="open"]' },
2031
+ { label: "Closed", selector: '[data-state="closed"]' }
2032
+ ],
2033
+ props: propsCollapsibleTrigger
2034
+ };
2035
+ const metaCollapsibleContent = {
2036
+ icon: ContentIcon,
2037
+ contentModel: {
2038
+ category: "none",
2039
+ children: ["instance", "rich-text"]
2040
+ },
2041
+ states: [
2042
+ { label: "Open", selector: '[data-state="open"]' },
2043
+ { label: "Closed", selector: '[data-state="closed"]' }
2044
+ ],
2045
+ presetStyle: {
2046
+ div
2047
+ },
2048
+ props: propsCollapsibleContent
2049
+ };
2050
+ const propsDialog = {
2051
+ open: {
2052
+ required: false,
2053
+ control: "boolean",
2054
+ type: "boolean",
2055
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
2056
+ }
2057
+ };
2058
+ const propsDialogTrigger = {};
2059
+ const propsDialogOverlay = {};
2060
+ const propsDialogContent = {};
2061
+ const propsDialogClose = {};
2062
+ const propsDialogTitle = {
2063
+ tag: {
2064
+ required: false,
2065
+ control: "select",
2066
+ type: "string",
2067
+ options: ["h2", "h3", "h1", "h4", "h5", "h6"]
2068
+ }
2069
+ };
2070
+ const propsDialogDescription = {};
2071
+ const unit = (property, value, unit2) => ({
2072
+ property,
2073
+ value: { type: "unit", unit: unit2, value }
2074
+ });
2075
+ const keyword = (property, value) => ({
2076
+ property,
2077
+ value: { type: "keyword", value }
2078
+ });
2079
+ const rgb = (property, r, g, b2) => ({
2080
+ property,
2081
+ value: { type: "rgb", alpha: 1, r, g, b: b2 }
2082
+ });
2083
+ const buttonReset = [
2084
+ {
2085
+ property: "background-color",
2086
+ value: { type: "keyword", value: "transparent" }
2087
+ },
2088
+ {
2089
+ property: "background-image",
2090
+ value: { type: "keyword", value: "none" }
2091
+ },
2092
+ unit("border-top-width", 0, "px"),
2093
+ unit("border-right-width", 0, "px"),
2094
+ unit("border-bottom-width", 0, "px"),
2095
+ unit("border-left-width", 0, "px"),
2096
+ keyword("border-top-style", "solid"),
2097
+ keyword("border-right-style", "solid"),
2098
+ keyword("border-bottom-style", "solid"),
2099
+ keyword("border-left-style", "solid"),
2100
+ rgb("border-top-color", 226, 232, 240),
2101
+ rgb("border-right-color", 226, 232, 240),
2102
+ rgb("border-bottom-color", 226, 232, 240),
2103
+ rgb("border-left-color", 226, 232, 240),
2104
+ unit("padding-top", 0, "px"),
2105
+ unit("padding-right", 0, "px"),
2106
+ unit("padding-bottom", 0, "px"),
2107
+ unit("padding-left", 0, "px")
2108
+ ];
2109
+ const metaDialogTrigger = {
2110
+ icon: TriggerIcon,
2111
+ contentModel: {
2112
+ category: "none",
2113
+ children: ["instance"]
2114
+ },
2115
+ states: [
2116
+ { label: "Open", selector: '[data-state="open"]' },
2117
+ { label: "Closed", selector: '[data-state="closed"]' }
2118
+ ],
2119
+ props: propsDialogTrigger
2120
+ };
2121
+ const metaDialogOverlay = {
2122
+ icon: OverlayIcon,
2123
+ contentModel: {
2124
+ category: "none",
2125
+ children: ["instance"],
2126
+ descendants: [radix.DialogContent]
2127
+ },
2128
+ states: [
2129
+ { label: "Open", selector: '[data-state="open"]' },
2130
+ { label: "Closed", selector: '[data-state="closed"]' }
2131
+ ],
2132
+ presetStyle: { div },
2133
+ props: propsDialogOverlay
2134
+ };
2135
+ const metaDialogContent = {
2136
+ icon: ContentIcon,
2137
+ contentModel: {
2138
+ category: "none",
2139
+ children: ["instance"],
2140
+ descendants: [
2141
+ radix.DialogTitle,
2142
+ radix.DialogDescription,
2143
+ radix.DialogClose
2144
+ ]
2145
+ },
2146
+ states: [
2147
+ { label: "Open", selector: '[data-state="open"]' },
2148
+ { label: "Closed", selector: '[data-state="closed"]' }
2149
+ ],
2150
+ presetStyle: { div },
2151
+ props: propsDialogContent
2152
+ };
2153
+ const metaDialogTitle = {
2154
+ icon: HeadingIcon,
2155
+ contentModel: {
2156
+ category: "none",
2157
+ children: ["instance", "rich-text"]
2158
+ },
2159
+ presetStyle: { h2 },
2160
+ props: propsDialogTitle
2161
+ };
2162
+ const metaDialogDescription = {
2163
+ icon: TextIcon,
2164
+ contentModel: {
2165
+ category: "none",
2166
+ children: ["instance", "rich-text"]
2167
+ },
2168
+ presetStyle: { p },
2169
+ props: propsDialogDescription
2170
+ };
2171
+ const metaDialogClose = {
2172
+ icon: ButtonElementIcon,
2173
+ label: "Close Button",
2174
+ contentModel: {
2175
+ category: "none",
2176
+ children: ["instance", "rich-text"]
2177
+ },
2178
+ presetStyle: {
2179
+ button: [buttonReset, button].flat()
2180
+ },
2181
+ props: propsDialogClose
2182
+ };
2183
+ const metaDialog = {
2184
+ icon: DialogIcon,
2185
+ contentModel: {
2186
+ category: "instance",
2187
+ children: ["instance"],
2188
+ descendants: [radix.DialogTrigger, radix.DialogOverlay]
2189
+ },
2190
+ initialProps: ["open"],
2191
+ props: propsDialog
2192
+ };
2193
+ const propsPopover = {
2194
+ open: {
2195
+ required: false,
2196
+ control: "boolean",
2197
+ type: "boolean",
2198
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
2199
+ }
2200
+ };
2201
+ const propsPopoverTrigger = {};
2202
+ const propsPopoverContent = {
2203
+ align: {
2204
+ required: false,
2205
+ control: "radio",
2206
+ type: "string",
2207
+ defaultValue: "center",
2208
+ options: ["center", "start", "end"]
2209
+ },
2210
+ alignOffset: {
2211
+ required: false,
2212
+ control: "number",
2213
+ type: "number",
2214
+ description: "The offset in pixels from the “start“ or “end“ alignment options."
2215
+ },
2216
+ arrowPadding: { required: false, control: "number", type: "number" },
2217
+ avoidCollisions: { required: false, control: "boolean", type: "boolean" },
2218
+ hideWhenDetached: {
2219
+ required: false,
2220
+ control: "boolean",
2221
+ type: "boolean",
2222
+ defaultValue: true
2223
+ },
2224
+ side: {
2225
+ required: false,
2226
+ control: "select",
2227
+ type: "string",
2228
+ options: ["top", "right", "bottom", "left"],
2229
+ description: "The preferred alignment against the Trigger. May change when collisions occur."
2230
+ },
2231
+ sideOffset: {
2232
+ required: false,
2233
+ control: "number",
2234
+ type: "number",
2235
+ defaultValue: 4,
2236
+ description: "The distance in pixels between the Content and the Trigger."
2237
+ },
2238
+ sticky: {
2239
+ required: false,
2240
+ control: "radio",
2241
+ type: "string",
2242
+ options: ["partial", "always"]
2243
+ },
2244
+ updatePositionStrategy: {
2245
+ required: false,
2246
+ control: "radio",
2247
+ type: "string",
2248
+ options: ["always", "optimized"]
2249
+ }
2250
+ };
2251
+ const propsPopoverClose = {};
2252
+ const metaPopoverTrigger = {
2253
+ icon: TriggerIcon,
2254
+ contentModel: {
2255
+ category: "none",
2256
+ children: ["instance"]
2257
+ },
2258
+ states: [
2259
+ { label: "Open", selector: '[data-state="open"]' },
2260
+ { label: "Closed", selector: '[data-state="closed"]' }
2261
+ ],
2262
+ props: propsPopoverTrigger
2263
+ };
2264
+ const metaPopoverContent = {
2265
+ icon: ContentIcon,
2266
+ contentModel: {
2267
+ category: "none",
2268
+ children: ["instance"],
2269
+ descendants: [radix.PopoverClose]
2270
+ },
2271
+ states: [
2272
+ { label: "Open", selector: '[data-state="open"]' },
2273
+ { label: "Closed", selector: '[data-state="closed"]' }
2274
+ ],
2275
+ presetStyle: {
2276
+ div
2277
+ },
2278
+ initialProps: ["side", "sideOffset", "align", "alignOffset"],
2279
+ props: propsPopoverContent
2280
+ };
2281
+ const metaPopover = {
2282
+ icon: PopoverIcon,
2283
+ contentModel: {
2284
+ category: "instance",
2285
+ children: ["instance"],
2286
+ descendants: [radix.PopoverTrigger, radix.PopoverContent]
2287
+ },
2288
+ initialProps: ["open"],
2289
+ props: propsPopover
2290
+ };
2291
+ const metaPopoverClose = {
2292
+ icon: ButtonElementIcon,
2293
+ label: "Close Button",
2294
+ contentModel: {
2295
+ category: "none",
2296
+ children: ["instance", "rich-text"]
2297
+ },
2298
+ presetStyle: {
2299
+ button: [buttonReset, button].flat()
2300
+ },
2301
+ props: propsPopoverClose
2302
+ };
2303
+ const propsTooltip = {
2304
+ delayDuration: {
2305
+ description: "The delay before the Tooltip shows after the Trigger is hovered, in milliseconds. If no value is specified, the default is 700ms",
2306
+ required: false,
2307
+ control: "number",
2308
+ type: "number"
2309
+ },
2310
+ disableHoverableContent: {
2311
+ description: "When toggled, prevents the Tooltip content from showing when the Trigger is hovered.",
2312
+ required: false,
2313
+ control: "boolean",
2314
+ type: "boolean"
2315
+ },
2316
+ open: {
2317
+ required: false,
2318
+ control: "boolean",
2319
+ type: "boolean",
2320
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
2321
+ }
2322
+ };
2323
+ const propsTooltipTrigger = {};
2324
+ const propsTooltipContent = {
2325
+ align: {
2326
+ required: false,
2327
+ control: "radio",
2328
+ type: "string",
2329
+ options: ["center", "start", "end"]
2330
+ },
2331
+ alignOffset: {
2332
+ required: false,
2333
+ control: "number",
2334
+ type: "number",
2335
+ description: "The offset in pixels from the “start“ or “end“ alignment options."
2336
+ },
2337
+ "aria-label": {
2338
+ description: "A more descriptive label for accessibility purpose",
2339
+ required: false,
2340
+ control: "text",
2341
+ type: "string"
2342
+ },
2343
+ arrowPadding: { required: false, control: "number", type: "number" },
2344
+ avoidCollisions: { required: false, control: "boolean", type: "boolean" },
2345
+ hideWhenDetached: {
2346
+ required: false,
2347
+ control: "boolean",
2348
+ type: "boolean",
2349
+ defaultValue: true
2350
+ },
2351
+ side: {
2352
+ required: false,
2353
+ control: "select",
2354
+ type: "string",
2355
+ options: ["top", "right", "bottom", "left"],
2356
+ description: "The preferred alignment against the Trigger. May change when collisions occur."
2357
+ },
2358
+ sideOffset: {
2359
+ required: false,
2360
+ control: "number",
2361
+ type: "number",
2362
+ defaultValue: 4,
2363
+ description: "The distance in pixels between the Content and the Trigger."
2364
+ },
2365
+ sticky: {
2366
+ required: false,
2367
+ control: "radio",
2368
+ type: "string",
2369
+ options: ["partial", "always"]
2370
+ },
2371
+ updatePositionStrategy: {
2372
+ required: false,
2373
+ control: "radio",
2374
+ type: "string",
2375
+ options: ["always", "optimized"]
2376
+ }
2377
+ };
2378
+ const metaTooltipTrigger = {
2379
+ icon: TriggerIcon,
2380
+ contentModel: {
2381
+ category: "none",
2382
+ children: ["instance"]
2383
+ },
2384
+ states: [
2385
+ { label: "Closed", selector: '[data-state="closed"]' },
2386
+ { label: "Delayed open", selector: '[data-state="delayed-open"]' },
2387
+ { label: "Instant open", selector: '[data-state="instant-open"]' }
2388
+ ],
2389
+ props: propsTooltipTrigger
2390
+ };
2391
+ const metaTooltipContent = {
2392
+ icon: ContentIcon,
2393
+ contentModel: {
2394
+ category: "none",
2395
+ children: ["instance"]
2396
+ },
2397
+ states: [
2398
+ { label: "Closed", selector: '[data-state="closed"]' },
2399
+ { label: "Delayed open", selector: '[data-state="delayed-open"]' },
2400
+ { label: "Instant open", selector: '[data-state="instant-open"]' }
2401
+ ],
2402
+ presetStyle: { div },
2403
+ initialProps: ["side", "sideOffset", "align", "alignOffset"],
2404
+ props: propsTooltipContent
2405
+ };
2406
+ const metaTooltip = {
2407
+ icon: TooltipIcon,
2408
+ contentModel: {
2409
+ category: "instance",
2410
+ children: ["instance"],
2411
+ descendants: [radix.TooltipTrigger, radix.TooltipContent]
2412
+ },
2413
+ initialProps: ["open", "delayDuration", "disableHoverableContent"],
2414
+ props: propsTooltip
2415
+ };
2416
+ const propsTabs = {
2417
+ activationMode: {
2418
+ description: "Whether a tab is activated automatically or manually.\n@defaultValue automatic",
2419
+ required: false,
2420
+ control: "radio",
2421
+ type: "string",
2422
+ options: ["automatic", "manual"]
2423
+ },
2424
+ defaultValue: {
2425
+ description: "The value of the tab to select by default, if uncontrolled",
2426
+ required: false,
2427
+ control: "text",
2428
+ type: "string"
2429
+ },
2430
+ dir: {
2431
+ description: "The direction of navigation between toolbar items.",
2432
+ required: false,
2433
+ control: "radio",
2434
+ type: "string",
2435
+ options: ["ltr", "rtl"]
2436
+ },
2437
+ orientation: {
2438
+ description: "The orientation the tabs are layed out.\nMainly so arrow navigation is done accordingly (left & right vs. up & down)\n@defaultValue horizontal",
2439
+ required: false,
2440
+ control: "radio",
2441
+ type: "string",
2442
+ options: ["horizontal", "vertical"]
2443
+ },
2444
+ value: {
2445
+ description: "The value for the selected tab, if controlled",
2446
+ required: false,
2447
+ control: "text",
2448
+ type: "string"
2449
+ }
2450
+ };
2451
+ const propsTabsList = {
2452
+ loop: {
2453
+ required: false,
2454
+ control: "boolean",
2455
+ type: "boolean",
2456
+ description: "Whether to loop the media resource"
2457
+ }
2458
+ };
2459
+ const propsTabsTrigger = {
2460
+ value: {
2461
+ required: false,
2462
+ control: "text",
2463
+ type: "string",
2464
+ description: "Current value of the element"
2465
+ }
2466
+ };
2467
+ const propsTabsContent = {
2468
+ value: {
2469
+ required: false,
2470
+ control: "text",
2471
+ type: "string",
2472
+ description: "Current value of the element"
2473
+ }
2474
+ };
2475
+ const metaTabs = {
2476
+ icon: TabsIcon,
2477
+ contentModel: {
2478
+ category: "instance",
2479
+ children: ["instance"],
2480
+ descendants: [radix.TabsList, radix.TabsContent]
2481
+ },
2482
+ presetStyle: { div },
2483
+ props: propsTabs
2484
+ };
2485
+ const metaTabsList = {
2486
+ icon: HeaderIcon,
2487
+ contentModel: {
2488
+ category: "none",
2489
+ children: ["instance"],
2490
+ descendants: [radix.TabsTrigger]
2491
+ },
2492
+ presetStyle: { div },
2493
+ props: propsTabsList
2494
+ };
2495
+ const metaTabsTrigger = {
2496
+ icon: TriggerIcon,
2497
+ label: "Tab Trigger",
2498
+ indexWithinAncestor: radix.Tabs,
2499
+ contentModel: {
2500
+ category: "none",
2501
+ children: ["instance", "rich-text"]
2502
+ },
2503
+ states: [
2504
+ { label: "Active", selector: '[data-state="active"]' },
2505
+ { label: "Inactive", selector: '[data-state="inactive"]' }
2506
+ ],
2507
+ presetStyle: {
2508
+ button: [button, buttonReset].flat()
2509
+ },
2510
+ props: propsTabsTrigger
2511
+ };
2512
+ const metaTabsContent = {
2513
+ label: "Tab Content",
2514
+ icon: ContentIcon,
2515
+ indexWithinAncestor: radix.Tabs,
2516
+ contentModel: {
2517
+ category: "none",
2518
+ children: ["instance", "rich-text"]
2519
+ },
2520
+ states: [
2521
+ { label: "Active", selector: '[data-state="active"]' },
2522
+ { label: "Inactive", selector: '[data-state="inactive"]' }
2523
+ ],
2524
+ presetStyle: { div },
2525
+ props: propsTabsContent
2526
+ };
2527
+ const props = {};
2528
+ const meta = {
2529
+ icon: LabelIcon,
2530
+ presetStyle: { label },
2531
+ initialProps: ["id", "class", "for"],
2532
+ props
2533
+ };
2534
+ const propsAccordion = {
2535
+ collapsible: {
2536
+ description: "Whether an accordion item can be collapsed after it has been opened.",
2537
+ required: false,
2538
+ control: "boolean",
2539
+ type: "boolean",
2540
+ defaultValue: false
2541
+ },
2542
+ defaultValue: {
2543
+ description: "The value of the item whose content is expanded when the accordion is initially rendered. Use\n`defaultValue` if you do not need to control the state of an accordion.",
2544
+ required: false,
2545
+ control: "text",
2546
+ type: "string"
2547
+ },
2548
+ dir: {
2549
+ description: "The language read direction.",
2550
+ required: false,
2551
+ control: "radio",
2552
+ type: "string",
2553
+ options: ["ltr", "rtl"]
2554
+ },
2555
+ disabled: {
2556
+ description: "Whether or not an accordion is disabled from user interaction.\n@defaultValue false",
2557
+ required: false,
2558
+ control: "boolean",
2559
+ type: "boolean"
2560
+ },
2561
+ orientation: {
2562
+ description: "The layout in which the Accordion operates.",
2563
+ required: false,
2564
+ control: "radio",
2565
+ type: "string",
2566
+ defaultValue: "vertical",
2567
+ options: ["horizontal", "vertical"]
2568
+ },
2569
+ value: {
2570
+ description: "The controlled stateful value of the accordion item whose content is expanded.",
2571
+ required: false,
2572
+ control: "text",
2573
+ type: "string"
2574
+ }
2575
+ };
2576
+ const propsAccordionItem = {
2577
+ disabled: {
2578
+ description: "Whether or not an accordion item is disabled from user interaction.\n@defaultValue false",
2579
+ required: false,
2580
+ control: "boolean",
2581
+ type: "boolean"
2582
+ },
2583
+ value: {
2584
+ required: false,
2585
+ control: "text",
2586
+ type: "string",
2587
+ description: "Current value of the element"
2588
+ }
2589
+ };
2590
+ const propsAccordionHeader = {};
2591
+ const propsAccordionTrigger = {};
2592
+ const propsAccordionContent = {
2593
+ forceMount: {
2594
+ description: "Used to force mounting when more control is needed. Useful when controlling animation with React animation libraries or keeping content available in the DOM.",
2595
+ required: false,
2596
+ control: "boolean",
2597
+ type: "boolean"
2598
+ }
2599
+ };
2600
+ const metaAccordion = {
2601
+ icon: AccordionIcon,
2602
+ contentModel: {
2603
+ category: "instance",
2604
+ children: ["instance"],
2605
+ descendants: [radix.AccordionItem]
2606
+ },
2607
+ presetStyle: { div },
2608
+ initialProps: ["value", "collapsible"],
2609
+ props: propsAccordion
2610
+ };
2611
+ const metaAccordionItem = {
2612
+ label: "Item",
2613
+ icon: ItemIcon,
2614
+ indexWithinAncestor: radix.Accordion,
2615
+ contentModel: {
2616
+ category: "none",
2617
+ children: ["instance"],
2618
+ descendants: [radix.AccordionHeader, radix.AccordionContent]
2619
+ },
2620
+ states: [
2621
+ { label: "Open", selector: '[data-state="open"]' },
2622
+ { label: "Closed", selector: '[data-state="closed"]' }
2623
+ ],
2624
+ presetStyle: { div },
2625
+ initialProps: ["value"],
2626
+ props: propsAccordionItem
2627
+ };
2628
+ const metaAccordionHeader = {
2629
+ label: "Item Header",
2630
+ icon: HeaderIcon,
2631
+ contentModel: {
2632
+ category: "none",
2633
+ children: ["instance"],
2634
+ descendants: [radix.AccordionTrigger]
2635
+ },
2636
+ states: [
2637
+ { label: "Open", selector: '[data-state="open"]' },
2638
+ { label: "Closed", selector: '[data-state="closed"]' }
2639
+ ],
2640
+ presetStyle: {
2641
+ h3: [
2642
+ ...h3,
2643
+ {
2644
+ property: "margin-top",
2645
+ value: { type: "unit", unit: "px", value: 0 }
2646
+ },
2647
+ {
2648
+ property: "margin-bottom",
2649
+ value: { type: "unit", unit: "px", value: 0 }
2650
+ }
2651
+ ]
2652
+ },
2653
+ props: propsAccordionHeader
2654
+ };
2655
+ const metaAccordionTrigger = {
2656
+ label: "Item Trigger",
2657
+ icon: TriggerIcon,
2658
+ contentModel: {
2659
+ category: "none",
2660
+ children: ["instance", "rich-text"]
2661
+ },
2662
+ states: [
2663
+ { label: "Open", selector: '[data-state="open"]' },
2664
+ { label: "Closed", selector: '[data-state="closed"]' }
2665
+ ],
2666
+ presetStyle: {
2667
+ button: [button, buttonReset].flat()
2668
+ },
2669
+ props: propsAccordionTrigger
2670
+ };
2671
+ const metaAccordionContent = {
2672
+ label: "Item Content",
2673
+ icon: ContentIcon,
2674
+ contentModel: {
2675
+ category: "none",
2676
+ children: ["instance", "rich-text"]
2677
+ },
2678
+ states: [
2679
+ { label: "Open", selector: '[data-state="open"]' },
2680
+ { label: "Closed", selector: '[data-state="closed"]' }
2681
+ ],
2682
+ presetStyle: {
2683
+ div
2684
+ },
2685
+ props: propsAccordionContent
2686
+ };
2687
+ const propsNavigationMenu = {
2688
+ defaultValue: { required: false, control: "text", type: "string" },
2689
+ delayDuration: {
2690
+ description: "The duration from when the pointer enters the trigger until the tooltip gets opened.\n@defaultValue 200",
2691
+ required: false,
2692
+ control: "number",
2693
+ type: "number"
2694
+ },
2695
+ dir: {
2696
+ required: false,
2697
+ control: "radio",
2698
+ type: "string",
2699
+ options: ["ltr", "rtl"],
2700
+ description: "The text directionality of the element"
2701
+ },
2702
+ skipDelayDuration: {
2703
+ description: "How much time a user has to enter another trigger without incurring a delay again.\n@defaultValue 300",
2704
+ required: false,
2705
+ control: "number",
2706
+ type: "number"
2707
+ },
2708
+ value: {
2709
+ required: false,
2710
+ control: "text",
2711
+ type: "string",
2712
+ description: "Current value of the element"
2713
+ }
2714
+ };
2715
+ const propsNavigationMenuList = {};
2716
+ const propsNavigationMenuViewport = {};
2717
+ const propsNavigationMenuContent = {};
2718
+ const propsNavigationMenuItem = {
2719
+ value: {
2720
+ required: false,
2721
+ control: "text",
2722
+ type: "string",
2723
+ description: "Current value of the element"
2724
+ }
2725
+ };
2726
+ const propsNavigationMenuLink = {
2727
+ active: { required: false, control: "boolean", type: "boolean" }
2728
+ };
2729
+ const propsNavigationMenuTrigger = {};
2730
+ const metaNavigationMenu = {
2731
+ icon: NavigationMenuIcon,
2732
+ contentModel: {
2733
+ category: "instance",
2734
+ children: ["instance"],
2735
+ descendants: [radix.NavigationMenuList, radix.NavigationMenuViewport]
2736
+ },
2737
+ presetStyle: {
2738
+ div
2739
+ },
2740
+ props: propsNavigationMenu
2741
+ };
2742
+ const metaNavigationMenuList = {
2743
+ icon: ListIcon,
2744
+ label: "Menu List",
2745
+ contentModel: {
2746
+ category: "none",
2747
+ children: ["instance"],
2748
+ descendants: [radix.NavigationMenuItem]
2749
+ },
2750
+ presetStyle: {
2751
+ div
2752
+ },
2753
+ props: propsNavigationMenuList
2754
+ };
2755
+ const metaNavigationMenuItem = {
2756
+ icon: ListItemIcon,
2757
+ label: "Menu Item",
2758
+ indexWithinAncestor: radix.NavigationMenu,
2759
+ contentModel: {
2760
+ category: "none",
2761
+ children: ["instance"],
2762
+ descendants: [
2763
+ radix.NavigationMenuTrigger,
2764
+ radix.NavigationMenuContent,
2765
+ radix.NavigationMenuLink
2766
+ ]
2767
+ },
2768
+ presetStyle: {
2769
+ div
2770
+ },
2771
+ props: propsNavigationMenuItem
2772
+ };
2773
+ const metaNavigationMenuTrigger = {
2774
+ icon: TriggerIcon,
2775
+ label: "Menu Trigger",
2776
+ contentModel: {
2777
+ category: "none",
2778
+ children: ["instance"]
2779
+ },
2780
+ states: [
2781
+ { label: "Open", selector: '[data-state="open"]' },
2782
+ { label: "Closed", selector: '[data-state="closed"]' }
2783
+ ],
2784
+ props: propsNavigationMenuTrigger
2785
+ };
2786
+ const metaNavigationMenuContent = {
2787
+ icon: ContentIcon,
2788
+ label: "Menu Content",
2789
+ contentModel: {
2790
+ category: "none",
2791
+ children: ["instance"],
2792
+ descendants: [radix.NavigationMenuLink]
2793
+ },
2794
+ states: [
2795
+ { label: "Open", selector: '[data-state="open"]' },
2796
+ { label: "Closed", selector: '[data-state="closed"]' }
2797
+ ],
2798
+ presetStyle: {
2799
+ div
2800
+ },
2801
+ props: propsNavigationMenuContent
2802
+ };
2803
+ const metaNavigationMenuLink = {
2804
+ icon: BoxIcon,
2805
+ label: "Accessible Link Wrapper",
2806
+ contentModel: {
2807
+ category: "none",
2808
+ children: ["instance"]
2809
+ },
2810
+ props: propsNavigationMenuLink
2811
+ };
2812
+ const metaNavigationMenuViewport = {
2813
+ icon: ViewportIcon,
2814
+ label: "Menu Viewport",
2815
+ contentModel: {
2816
+ category: "none",
2817
+ children: ["instance"]
2818
+ },
2819
+ states: [
2820
+ { label: "Open", selector: '[data-state="open"]' },
2821
+ { label: "Closed", selector: '[data-state="closed"]' }
2822
+ ],
2823
+ presetStyle: {
2824
+ div
2825
+ },
2826
+ props: propsNavigationMenuViewport
2827
+ };
2828
+ const propsSelect = {
2829
+ autoComplete: {
2830
+ required: false,
2831
+ control: "text",
2832
+ type: "string",
2833
+ description: "Hint for form autofill feature"
2834
+ },
2835
+ defaultValue: { required: false, control: "text", type: "string" },
2836
+ dir: {
2837
+ required: false,
2838
+ control: "radio",
2839
+ type: "string",
2840
+ options: ["ltr", "rtl"],
2841
+ description: "The text directionality of the element"
2842
+ },
2843
+ disabled: {
2844
+ required: false,
2845
+ control: "boolean",
2846
+ type: "boolean",
2847
+ description: "Whether the form control is disabled"
2848
+ },
2849
+ form: {
2850
+ required: false,
2851
+ control: "text",
2852
+ type: "string",
2853
+ description: "Associates the element with a form element"
2854
+ },
2855
+ name: {
2856
+ required: false,
2857
+ control: "text",
2858
+ type: "string",
2859
+ description: "Name of the element to use for form submission and in the form.elements API"
2860
+ },
2861
+ open: {
2862
+ required: false,
2863
+ control: "boolean",
2864
+ type: "boolean",
2865
+ description: "Whether the dialog box is showing"
2866
+ },
2867
+ required: {
2868
+ required: false,
2869
+ control: "boolean",
2870
+ type: "boolean",
2871
+ description: "Whether the control is required for form submission"
2872
+ },
2873
+ value: {
2874
+ required: false,
2875
+ control: "text",
2876
+ type: "string",
2877
+ description: "Current value of the element"
2878
+ }
2879
+ };
2880
+ const propsSelectTrigger = {};
2881
+ const propsSelectValue = {
2882
+ placeholder: {
2883
+ required: false,
2884
+ control: "text",
2885
+ type: "string",
2886
+ description: "User-visible label to be placed within the form control"
2887
+ }
2888
+ };
2889
+ const propsSelectContent = {
2890
+ align: {
2891
+ required: false,
2892
+ control: "radio",
2893
+ type: "string",
2894
+ options: ["center", "start", "end"]
2895
+ },
2896
+ alignOffset: { required: false, control: "number", type: "number" },
2897
+ arrowPadding: { required: false, control: "number", type: "number" },
2898
+ avoidCollisions: { required: false, control: "boolean", type: "boolean" },
2899
+ hideWhenDetached: { required: false, control: "boolean", type: "boolean" },
2900
+ sideOffset: { required: false, control: "number", type: "number" },
2901
+ sticky: {
2902
+ required: false,
2903
+ control: "radio",
2904
+ type: "string",
2905
+ options: ["partial", "always"]
2906
+ },
2907
+ updatePositionStrategy: {
2908
+ required: false,
2909
+ control: "radio",
2910
+ type: "string",
2911
+ options: ["always", "optimized"]
2912
+ }
2913
+ };
2914
+ const propsSelectViewport = {
2915
+ nonce: {
2916
+ required: false,
2917
+ control: "text",
2918
+ type: "string",
2919
+ description: "Cryptographic nonce used in Content Security Policy checks [CSP]"
2920
+ }
2921
+ };
2922
+ const propsSelectItem = {
2923
+ disabled: {
2924
+ required: false,
2925
+ control: "boolean",
2926
+ type: "boolean",
2927
+ description: "Whether the form control is disabled"
2928
+ },
2929
+ textValue: { required: false, control: "text", type: "string" },
2930
+ value: {
2931
+ required: true,
2932
+ control: "text",
2933
+ type: "string",
2934
+ description: "Current value of the element"
2935
+ }
2936
+ };
2937
+ const propsSelectItemIndicator = {};
2938
+ const propsSelectItemText = {};
2939
+ const metaSelect = {
2940
+ icon: SelectIcon,
2941
+ contentModel: {
2942
+ category: "instance",
2943
+ children: ["instance"],
2944
+ descendants: [radix.SelectTrigger, radix.SelectContent]
2945
+ },
2946
+ initialProps: ["name", "value", "open", "required"],
2947
+ props: propsSelect
2948
+ };
2949
+ const metaSelectTrigger = {
2950
+ icon: TriggerIcon,
2951
+ contentModel: {
2952
+ category: "none",
2953
+ children: ["instance"],
2954
+ descendants: [radix.SelectValue]
2955
+ },
2956
+ states: [
2957
+ { label: "Open", selector: '[data-state="open"]' },
2958
+ { label: "Closed", selector: '[data-state="closed"]' }
2959
+ ],
2960
+ presetStyle: { button },
2961
+ props: propsSelectTrigger
2962
+ };
2963
+ const metaSelectValue = {
2964
+ label: "Value",
2965
+ icon: FormTextFieldIcon,
2966
+ contentModel: {
2967
+ category: "none",
2968
+ children: []
2969
+ },
2970
+ presetStyle: { span },
2971
+ initialProps: ["placeholder"],
2972
+ props: propsSelectValue
2973
+ };
2974
+ const metaSelectContent = {
2975
+ icon: ContentIcon,
2976
+ contentModel: {
2977
+ category: "none",
2978
+ children: ["instance"],
2979
+ descendants: [radix.SelectViewport]
2980
+ },
2981
+ states: [
2982
+ { label: "Open", selector: '[data-state="open"]' },
2983
+ { label: "Closed", selector: '[data-state="closed"]' }
2984
+ ],
2985
+ presetStyle: { div },
2986
+ props: propsSelectContent
2987
+ };
2988
+ const metaSelectViewport = {
2989
+ icon: ViewportIcon,
2990
+ contentModel: {
2991
+ category: "none",
2992
+ children: ["instance"],
2993
+ descendants: [radix.SelectItem]
2994
+ },
2995
+ presetStyle: { div },
2996
+ props: propsSelectViewport
2997
+ };
2998
+ const metaSelectItem = {
2999
+ icon: ItemIcon,
3000
+ contentModel: {
3001
+ category: "none",
3002
+ children: ["instance"],
3003
+ descendants: [radix.SelectItemIndicator, radix.SelectItemText]
3004
+ },
3005
+ states: [
3006
+ { label: "Checked", selector: '[data-state="checked"]' },
3007
+ { label: "Unchecked", selector: '[data-state="unchecked"]' }
3008
+ ],
3009
+ presetStyle: { div },
3010
+ initialProps: ["value"],
3011
+ props: propsSelectItem
3012
+ };
3013
+ const metaSelectItemIndicator = {
3014
+ label: "Indicator",
3015
+ icon: CheckMarkIcon,
3016
+ contentModel: {
3017
+ category: "none",
3018
+ children: ["instance"]
3019
+ },
3020
+ presetStyle: { span },
3021
+ props: propsSelectItemIndicator
3022
+ };
3023
+ const metaSelectItemText = {
3024
+ label: "Item Text",
3025
+ icon: TextIcon,
3026
+ contentModel: {
3027
+ category: "none",
3028
+ children: ["instance", "rich-text"]
3029
+ },
3030
+ presetStyle: { span },
3031
+ props: propsSelectItemText
3032
+ };
3033
+ const propsSwitch = {
3034
+ checked: {
3035
+ required: false,
3036
+ control: "boolean",
3037
+ type: "boolean",
3038
+ description: "Whether the control is checked"
3039
+ },
3040
+ required: {
3041
+ required: false,
3042
+ control: "boolean",
3043
+ type: "boolean",
3044
+ description: "Whether the control is required for form submission"
3045
+ }
3046
+ };
3047
+ const propsSwitchThumb = {};
3048
+ const metaSwitch = {
3049
+ icon: SwitchIcon,
3050
+ contentModel: {
3051
+ category: "instance",
3052
+ children: ["instance"],
3053
+ descendants: [radix.SwitchThumb]
3054
+ },
3055
+ states: [
3056
+ { label: "Checked", selector: '[data-state="checked"]' },
3057
+ { label: "Unchecked", selector: '[data-state="unchecked"]' }
3058
+ ],
3059
+ presetStyle: {
3060
+ button: [button, buttonReset].flat()
3061
+ },
3062
+ initialProps: ["id", "class", "name", "value", "checked", "required"],
3063
+ props: propsSwitch
3064
+ };
3065
+ const metaSwitchThumb = {
3066
+ icon: TriggerIcon,
3067
+ contentModel: {
3068
+ category: "none",
3069
+ children: ["instance"]
3070
+ },
3071
+ states: [
3072
+ { label: "Checked", selector: '[data-state="checked"]' },
3073
+ { label: "Unchecked", selector: '[data-state="unchecked"]' }
3074
+ ],
3075
+ presetStyle: {
3076
+ span
3077
+ },
3078
+ props: propsSwitchThumb
3079
+ };
3080
+ const propsCheckbox = {
3081
+ checked: {
3082
+ required: false,
3083
+ control: "boolean",
3084
+ type: "boolean",
3085
+ description: "Whether the control is checked"
3086
+ },
3087
+ required: {
3088
+ required: false,
3089
+ control: "boolean",
3090
+ type: "boolean",
3091
+ description: "Whether the control is required for form submission"
3092
+ }
3093
+ };
3094
+ const propsCheckboxIndicator = {};
3095
+ const metaCheckbox = {
3096
+ icon: CheckboxCheckedIcon,
3097
+ contentModel: {
3098
+ category: "instance",
3099
+ children: ["instance"],
3100
+ descendants: [radix.CheckboxIndicator]
3101
+ },
3102
+ states: [
3103
+ { label: "Checked", selector: '[data-state="checked"]' },
3104
+ { label: "Unchecked", selector: '[data-state="unchecked"]' },
3105
+ { label: "Indeterminate", selector: '[data-state="indeterminate"]' }
3106
+ ],
3107
+ presetStyle: {
3108
+ button: [button, buttonReset].flat()
3109
+ },
3110
+ initialProps: ["id", "class", "name", "value", "required", "checked"],
3111
+ props: propsCheckbox
3112
+ };
3113
+ const metaCheckboxIndicator = {
3114
+ icon: TriggerIcon,
3115
+ contentModel: {
3116
+ category: "none",
3117
+ children: ["instance", "rich-text"]
3118
+ },
3119
+ states: [
3120
+ { label: "Checked", selector: '[data-state="checked"]' },
3121
+ { label: "Unchecked", selector: '[data-state="unchecked"]' },
3122
+ { label: "Indeterminate", selector: '[data-state="indeterminate"]' }
3123
+ ],
3124
+ presetStyle: {
3125
+ span
3126
+ },
3127
+ props: propsCheckboxIndicator
3128
+ };
3129
+ const propsRadioGroup = {
3130
+ defaultValue: { required: false, control: "text", type: "string" },
3131
+ dir: {
3132
+ required: false,
3133
+ control: "radio",
3134
+ type: "string",
3135
+ options: ["ltr", "rtl"],
3136
+ description: "The text directionality of the element"
3137
+ },
3138
+ disabled: {
3139
+ required: false,
3140
+ control: "boolean",
3141
+ type: "boolean",
3142
+ description: "Whether the form control is disabled"
3143
+ },
3144
+ loop: {
3145
+ required: false,
3146
+ control: "boolean",
3147
+ type: "boolean",
3148
+ description: "Whether to loop the media resource"
3149
+ },
3150
+ name: {
3151
+ required: false,
3152
+ control: "text",
3153
+ type: "string",
3154
+ description: "Name of the element to use for form submission and in the form.elements API"
3155
+ },
3156
+ orientation: {
3157
+ required: false,
3158
+ control: "radio",
3159
+ type: "string",
3160
+ options: ["horizontal", "vertical"]
3161
+ },
3162
+ required: {
3163
+ required: false,
3164
+ control: "boolean",
3165
+ type: "boolean",
3166
+ description: "Whether the control is required for form submission"
3167
+ },
3168
+ value: {
3169
+ required: false,
3170
+ control: "text",
3171
+ type: "string",
3172
+ description: "Current value of the element"
3173
+ }
3174
+ };
3175
+ const propsRadioGroupItem = {
3176
+ checked: {
3177
+ required: false,
3178
+ control: "boolean",
3179
+ type: "boolean",
3180
+ description: "Whether the control is checked"
3181
+ },
3182
+ required: {
3183
+ required: false,
3184
+ control: "boolean",
3185
+ type: "boolean",
3186
+ description: "Whether the control is required for form submission"
3187
+ },
3188
+ value: {
3189
+ required: true,
3190
+ control: "text",
3191
+ type: "string",
3192
+ description: "Current value of the element"
3193
+ }
3194
+ };
3195
+ const propsRadioGroupIndicator = {};
3196
+ const metaRadioGroup = {
3197
+ icon: RadioGroupIcon,
3198
+ contentModel: {
3199
+ category: "instance",
3200
+ children: ["instance"],
3201
+ descendants: [radix.RadioGroupItem]
3202
+ },
3203
+ presetStyle: {
3204
+ div
3205
+ },
3206
+ initialProps: ["id", "class", "name", "value", "required"],
3207
+ props: propsRadioGroup
3208
+ };
3209
+ const metaRadioGroupItem = {
3210
+ icon: ItemIcon,
3211
+ contentModel: {
3212
+ category: "none",
3213
+ children: ["instance"],
3214
+ descendants: [radix.RadioGroupIndicator]
3215
+ },
3216
+ states: [
3217
+ { label: "Checked", selector: '[data-state="checked"]' },
3218
+ { label: "Unchecked", selector: '[data-state="unchecked"]' }
3219
+ ],
3220
+ presetStyle: {
3221
+ button: [button, buttonReset].flat()
3222
+ },
3223
+ initialProps: ["value"],
3224
+ props: propsRadioGroupItem
3225
+ };
3226
+ const metaRadioGroupIndicator = {
3227
+ icon: TriggerIcon,
3228
+ contentModel: {
3229
+ category: "none",
3230
+ children: ["instance"]
3231
+ },
3232
+ states: [
3233
+ { label: "Checked", selector: '[data-state="checked"]' },
3234
+ { label: "Unchecked", selector: '[data-state="unchecked"]' }
3235
+ ],
3236
+ presetStyle: {
3237
+ span
3238
+ },
3239
+ props: propsRadioGroupIndicator
3240
+ };
3241
+ const radixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3242
+ __proto__: null,
3243
+ Accordion: metaAccordion,
3244
+ AccordionContent: metaAccordionContent,
3245
+ AccordionHeader: metaAccordionHeader,
3246
+ AccordionItem: metaAccordionItem,
3247
+ AccordionTrigger: metaAccordionTrigger,
3248
+ Checkbox: metaCheckbox,
3249
+ CheckboxIndicator: metaCheckboxIndicator,
3250
+ Collapsible: metaCollapsible,
3251
+ CollapsibleContent: metaCollapsibleContent,
3252
+ CollapsibleTrigger: metaCollapsibleTrigger,
3253
+ Dialog: metaDialog,
3254
+ DialogClose: metaDialogClose,
3255
+ DialogContent: metaDialogContent,
3256
+ DialogDescription: metaDialogDescription,
3257
+ DialogOverlay: metaDialogOverlay,
3258
+ DialogTitle: metaDialogTitle,
3259
+ DialogTrigger: metaDialogTrigger,
3260
+ Label: meta,
3261
+ NavigationMenu: metaNavigationMenu,
3262
+ NavigationMenuContent: metaNavigationMenuContent,
3263
+ NavigationMenuItem: metaNavigationMenuItem,
3264
+ NavigationMenuLink: metaNavigationMenuLink,
3265
+ NavigationMenuList: metaNavigationMenuList,
3266
+ NavigationMenuTrigger: metaNavigationMenuTrigger,
3267
+ NavigationMenuViewport: metaNavigationMenuViewport,
3268
+ Popover: metaPopover,
3269
+ PopoverClose: metaPopoverClose,
3270
+ PopoverContent: metaPopoverContent,
3271
+ PopoverTrigger: metaPopoverTrigger,
3272
+ RadioGroup: metaRadioGroup,
3273
+ RadioGroupIndicator: metaRadioGroupIndicator,
3274
+ RadioGroupItem: metaRadioGroupItem,
3275
+ Select: metaSelect,
3276
+ SelectContent: metaSelectContent,
3277
+ SelectItem: metaSelectItem,
3278
+ SelectItemIndicator: metaSelectItemIndicator,
3279
+ SelectItemText: metaSelectItemText,
3280
+ SelectTrigger: metaSelectTrigger,
3281
+ SelectValue: metaSelectValue,
3282
+ SelectViewport: metaSelectViewport,
3283
+ Switch: metaSwitch,
3284
+ SwitchThumb: metaSwitchThumb,
3285
+ Tabs: metaTabs,
3286
+ TabsContent: metaTabsContent,
3287
+ TabsList: metaTabsList,
3288
+ TabsTrigger: metaTabsTrigger,
3289
+ Tooltip: metaTooltip,
3290
+ TooltipContent: metaTooltipContent,
3291
+ TooltipTrigger: metaTooltipTrigger
3292
+ }, Symbol.toStringTag, { value: "Module" }));
3293
+ export {
3294
+ animationComponentMetas as a,
3295
+ baseComponentMetas as b,
3296
+ radixComponentMetas as r
3297
+ };