webstudio 0.220.0 → 0.221.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.
package/lib/cli.js CHANGED
@@ -29,7 +29,7 @@ import { simple } from "acorn-walk";
29
29
  import reservedIdentifiers from "reserved-identifiers";
30
30
  import { kebabCase, camelCase } from "change-case";
31
31
  import { parseFragment, defaultTreeAdapter } from "parse5";
32
- import { x as x$3 } from "tinyexec";
32
+ import { x as x$2 } from "tinyexec";
33
33
  import makeCLI from "yargs";
34
34
  const GLOBAL_CONFIG_FOLDER = envPaths("webstudio").config;
35
35
  const GLOBAL_CONFIG_FILE_NAME = "webstudio-config.json";
@@ -1286,7 +1286,10 @@ var NestingRule = (_b = class {
1286
1286
  if (declaration.breakpoint !== breakpoint) {
1287
1287
  continue;
1288
1288
  }
1289
- const { selector: nestedSelector } = declaration;
1289
+ let nestedSelector = declaration.selector;
1290
+ if (nestedSelector === ":local-link") {
1291
+ nestedSelector = "[aria-current=page]";
1292
+ }
1290
1293
  const selector = __privateGet(this, _selector) + __privateGet(this, _descendantSuffix) + nestedSelector;
1291
1294
  let style = styleBySelector.get(selector);
1292
1295
  if (style === void 0) {
@@ -2482,22 +2485,14 @@ var componentCategories = [
2482
2485
  "localization",
2483
2486
  "radix",
2484
2487
  "xml",
2488
+ "other",
2485
2489
  "hidden",
2486
2490
  "internal"
2487
2491
  ];
2488
- var stateCategories = ["states", "component-states"];
2489
2492
  var ComponentState = z.object({
2490
- category: z.enum(stateCategories).optional(),
2491
2493
  selector: z.string(),
2492
2494
  label: z.string()
2493
2495
  });
2494
- var defaultStates = [
2495
- { selector: ":hover", label: "Hover" },
2496
- { selector: ":active", label: "Active" },
2497
- { selector: ":focus", label: "Focus" },
2498
- { selector: ":focus-visible", label: "Focus Visible" },
2499
- { selector: ":focus-within", label: "Focus Within" }
2500
- ];
2501
2496
  var ComponentContent = z.string();
2502
2497
  var ContentModel = z.object({
2503
2498
  /*
@@ -2534,11 +2529,11 @@ z.object({
2534
2529
  });
2535
2530
  var normalize_css_exports = {};
2536
2531
  __export(normalize_css_exports, {
2537
- a: () => a$d,
2532
+ a: () => a$9,
2538
2533
  address: () => address$1,
2539
2534
  article: () => article$1,
2540
2535
  aside: () => aside$1,
2541
- b: () => b$7,
2536
+ b: () => b$6,
2542
2537
  body: () => body$1,
2543
2538
  button: () => button$1,
2544
2539
  checkbox: () => checkbox$1,
@@ -2556,7 +2551,7 @@ __export(normalize_css_exports, {
2556
2551
  header: () => header$1,
2557
2552
  hr: () => hr$1,
2558
2553
  html: () => html,
2559
- i: () => i$c,
2554
+ i: () => i$a,
2560
2555
  img: () => img$1,
2561
2556
  input: () => input$1,
2562
2557
  kbd: () => kbd,
@@ -2567,7 +2562,7 @@ __export(normalize_css_exports, {
2567
2562
  nav: () => nav$1,
2568
2563
  ol: () => ol$1,
2569
2564
  optgroup: () => optgroup,
2570
- p: () => p$7,
2565
+ p: () => p$8,
2571
2566
  pre: () => pre,
2572
2567
  progress: () => progress,
2573
2568
  radio: () => radio$1,
@@ -2623,13 +2618,13 @@ var h3$1 = div$1;
2623
2618
  var h4$1 = div$1;
2624
2619
  var h5$1 = div$1;
2625
2620
  var h6$1 = div$1;
2626
- var i$c = div$1;
2621
+ var i$a = div$1;
2627
2622
  var img$1 = div$1;
2628
- var a$d = div$1;
2623
+ var a$9 = div$1;
2629
2624
  var li$1 = div$1;
2630
2625
  var ul$1 = div$1;
2631
2626
  var ol$1 = div$1;
2632
- var p$7 = div$1;
2627
+ var p$8 = div$1;
2633
2628
  var span$1 = div$1;
2634
2629
  var html = [
2635
2630
  { property: "display", value: { type: "keyword", value: "grid" } },
@@ -2678,30 +2673,21 @@ var body$1 = [
2678
2673
  {
2679
2674
  property: "border-left-width",
2680
2675
  value: { type: "unit", unit: "px", value: 1 }
2681
- }
2682
- ];
2683
- var hr$1 = [
2684
- { property: "height", value: { type: "unit", unit: "number", value: 0 } },
2685
- { property: "color", value: { type: "keyword", value: "inherit" } },
2686
- { property: "box-sizing", value: { type: "keyword", value: "border-box" } },
2687
- {
2688
- property: "border-top-width",
2689
- value: { type: "unit", unit: "px", value: 1 }
2690
2676
  },
2691
2677
  {
2692
- property: "border-right-width",
2693
- value: { type: "unit", unit: "px", value: 1 }
2678
+ property: "-webkit-font-smoothing",
2679
+ value: { type: "keyword", value: "antialiased" }
2694
2680
  },
2695
2681
  {
2696
- property: "border-bottom-width",
2697
- value: { type: "unit", unit: "px", value: 1 }
2698
- },
2699
- {
2700
- property: "border-left-width",
2701
- value: { type: "unit", unit: "px", value: 1 }
2682
+ property: "-moz-osx-font-smoothing",
2683
+ value: { type: "keyword", value: "grayscale" }
2702
2684
  }
2703
2685
  ];
2704
- var b$7 = [
2686
+ var hr$1 = [
2687
+ { property: "height", value: { type: "unit", unit: "number", value: 0 } },
2688
+ { property: "color", value: { type: "keyword", value: "inherit" } }
2689
+ ];
2690
+ var b$6 = [
2705
2691
  {
2706
2692
  property: "font-weight",
2707
2693
  value: { type: "unit", unit: "number", value: 700 }
@@ -2724,7 +2710,7 @@ var b$7 = [
2724
2710
  value: { type: "unit", unit: "px", value: 1 }
2725
2711
  }
2726
2712
  ];
2727
- var strong = b$7;
2713
+ var strong = b$6;
2728
2714
  var code$1 = [
2729
2715
  {
2730
2716
  property: "font-family",
@@ -4854,10 +4840,10 @@ const o$H = {
4854
4840
  category: "general",
4855
4841
  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.",
4856
4842
  icon: SlotComponentIcon,
4857
- order: 5
4843
+ order: 4
4858
4844
  };
4859
- const t$e = {};
4860
- const e$u = {
4845
+ const t$i = {};
4846
+ const e$x = {
4861
4847
  className: {
4862
4848
  required: false,
4863
4849
  control: "text",
@@ -4872,12 +4858,12 @@ const e$u = {
4872
4858
  type: "boolean"
4873
4859
  }
4874
4860
  };
4875
- const a$c = {
4861
+ const a$8 = {
4876
4862
  category: "general",
4877
4863
  label: "HTML Embed",
4878
4864
  description: "Used to add HTML code to the page, such as an SVG or script.",
4879
4865
  icon: EmbedIcon,
4880
- order: 2,
4866
+ order: 3,
4881
4867
  contentModel: {
4882
4868
  category: "instance",
4883
4869
  children: [descendantComponent]
@@ -4896,13 +4882,13 @@ const a$c = {
4896
4882
  },
4897
4883
  initialProps: ["class", "clientOnly", "executeScriptOnCanvas"],
4898
4884
  props: {
4899
- ...e$u,
4885
+ ...e$x,
4900
4886
  clientOnly: {
4901
- ...e$u.clientOnly,
4887
+ ...e$x.clientOnly,
4902
4888
  description: "Activate it for any scripts that can mutate the DOM or introduce interactivity. This only affects the published site."
4903
4889
  },
4904
4890
  executeScriptOnCanvas: {
4905
- ...e$u.executeScriptOnCanvas,
4891
+ ...e$x.executeScriptOnCanvas,
4906
4892
  label: "Run scripts on canvas",
4907
4893
  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!"
4908
4894
  },
@@ -4914,16 +4900,10 @@ const a$c = {
4914
4900
  }
4915
4901
  }
4916
4902
  };
4917
- const e$t = {
4918
- className: {
4919
- required: false,
4920
- control: "text",
4921
- type: "string",
4922
- description: "Classes to which the element belongs"
4923
- },
4903
+ const t$h = {
4924
4904
  code: { required: true, control: "text", type: "string" }
4925
4905
  };
4926
- const a$b = {
4906
+ const a$7 = {
4927
4907
  icon: MarkdownEmbedIcon,
4928
4908
  contentModel: {
4929
4909
  category: "instance",
@@ -4943,7 +4923,7 @@ const a$b = {
4943
4923
  },
4944
4924
  initialProps: ["class"],
4945
4925
  props: {
4946
- ...e$t,
4926
+ ...t$h,
4947
4927
  code: {
4948
4928
  required: true,
4949
4929
  control: "code",
@@ -4990,13 +4970,13 @@ var h3 = div;
4990
4970
  var h4 = div;
4991
4971
  var h5 = div;
4992
4972
  var h6 = div;
4993
- var i$b = div;
4973
+ var i$9 = div;
4994
4974
  var img = div;
4995
- var a$a = div;
4975
+ var a$6 = div;
4996
4976
  var li = div;
4997
4977
  var ul = div;
4998
4978
  var ol = div;
4999
- var p$6 = div;
4979
+ var p$7 = div;
5000
4980
  var span = div;
5001
4981
  var body = [
5002
4982
  { property: "margin-top", value: { type: "unit", unit: "number", value: 0 } },
@@ -5028,30 +5008,21 @@ var body = [
5028
5008
  {
5029
5009
  property: "border-left-width",
5030
5010
  value: { type: "unit", unit: "px", value: 1 }
5031
- }
5032
- ];
5033
- var hr = [
5034
- { property: "height", value: { type: "unit", unit: "number", value: 0 } },
5035
- { property: "color", value: { type: "keyword", value: "inherit" } },
5036
- { property: "box-sizing", value: { type: "keyword", value: "border-box" } },
5037
- {
5038
- property: "border-top-width",
5039
- value: { type: "unit", unit: "px", value: 1 }
5040
- },
5041
- {
5042
- property: "border-right-width",
5043
- value: { type: "unit", unit: "px", value: 1 }
5044
5011
  },
5045
5012
  {
5046
- property: "border-bottom-width",
5047
- value: { type: "unit", unit: "px", value: 1 }
5013
+ property: "-webkit-font-smoothing",
5014
+ value: { type: "keyword", value: "antialiased" }
5048
5015
  },
5049
5016
  {
5050
- property: "border-left-width",
5051
- value: { type: "unit", unit: "px", value: 1 }
5017
+ property: "-moz-osx-font-smoothing",
5018
+ value: { type: "keyword", value: "grayscale" }
5052
5019
  }
5053
5020
  ];
5054
- var b$6 = [
5021
+ var hr = [
5022
+ { property: "height", value: { type: "unit", unit: "number", value: 0 } },
5023
+ { property: "color", value: { type: "keyword", value: "inherit" } }
5024
+ ];
5025
+ var b$5 = [
5055
5026
  {
5056
5027
  property: "font-weight",
5057
5028
  value: { type: "unit", unit: "number", value: 700 }
@@ -5308,31 +5279,15 @@ var button = [
5308
5279
  ];
5309
5280
  var select = button;
5310
5281
  const o$G = {};
5311
- const r$f = {
5312
- body: [
5313
- ...body,
5314
- {
5315
- property: "-webkit-font-smoothing",
5316
- value: { type: "keyword", value: "antialiased" }
5317
- },
5318
- {
5319
- property: "-moz-osx-font-smoothing",
5320
- value: { type: "keyword", value: "grayscale" }
5321
- }
5322
- ]
5323
- }, i$a = {
5324
- states: defaultStates,
5325
- presetStyle: r$f,
5282
+ const i$8 = {
5283
+ presetStyle: { body },
5326
5284
  initialProps: ["id", "class"],
5327
5285
  props: o$G
5328
5286
  };
5329
- const t$d = {
5287
+ const t$g = {
5330
5288
  tag: { required: false, control: "text", type: "string" }
5331
5289
  };
5332
- const u$1 = {
5333
- category: "general",
5334
- description: "A container for content. By default this is a Div, but the tag can be changed in settings.",
5335
- states: defaultStates,
5290
+ const g$2 = {
5336
5291
  presetStyle: {
5337
5292
  div,
5338
5293
  address,
@@ -5345,10 +5300,9 @@ const u$1 = {
5345
5300
  nav,
5346
5301
  section
5347
5302
  },
5348
- order: 0,
5349
5303
  initialProps: ["tag", "id", "class"],
5350
5304
  props: {
5351
- ...t$d,
5305
+ ...t$g,
5352
5306
  tag: {
5353
5307
  required: true,
5354
5308
  control: "tag",
@@ -5369,12 +5323,11 @@ const u$1 = {
5369
5323
  }
5370
5324
  }
5371
5325
  };
5372
- const t$c = {
5326
+ const t$f = {
5373
5327
  tag: { required: false, control: "text", type: "string" }
5374
5328
  };
5375
- const n$9 = {
5329
+ const n$7 = {
5376
5330
  icon: TextIcon,
5377
- states: defaultStates,
5378
5331
  presetStyle: {
5379
5332
  div: [
5380
5333
  ...div,
@@ -5386,7 +5339,7 @@ const n$9 = {
5386
5339
  },
5387
5340
  initialProps: ["tag", "id", "class"],
5388
5341
  props: {
5389
- ...t$c,
5342
+ ...t$f,
5390
5343
  tag: {
5391
5344
  required: true,
5392
5345
  control: "tag",
@@ -5395,11 +5348,10 @@ const n$9 = {
5395
5348
  }
5396
5349
  }
5397
5350
  };
5398
- const t$b = {
5351
+ const t$e = {
5399
5352
  tag: { required: false, control: "text", type: "string" }
5400
5353
  };
5401
- const n$8 = {
5402
- states: defaultStates,
5354
+ const m$9 = {
5403
5355
  presetStyle: {
5404
5356
  h1,
5405
5357
  h2,
@@ -5410,7 +5362,7 @@ const n$8 = {
5410
5362
  },
5411
5363
  initialProps: ["tag", "id", "class"],
5412
5364
  props: {
5413
- ...t$b,
5365
+ ...t$e,
5414
5366
  tag: {
5415
5367
  required: true,
5416
5368
  control: "tag",
@@ -5420,13 +5372,12 @@ const n$8 = {
5420
5372
  }
5421
5373
  };
5422
5374
  const o$F = {};
5423
- const i$9 = {
5424
- states: defaultStates,
5425
- presetStyle: { p: p$6 },
5375
+ const i$7 = {
5376
+ presetStyle: { p: p$7 },
5426
5377
  initialProps: ["id", "class"],
5427
5378
  props: o$F
5428
5379
  };
5429
- const e$s = {
5380
+ const e$w = {
5430
5381
  download: {
5431
5382
  required: false,
5432
5383
  control: "boolean",
@@ -5450,31 +5401,20 @@ const e$s = {
5450
5401
  description: "Navigable for form submission"
5451
5402
  }
5452
5403
  };
5453
- const o$E = {
5404
+ const t$d = {
5454
5405
  a: [
5455
- ...a$a,
5406
+ ...a$6,
5456
5407
  {
5457
5408
  property: "display",
5458
5409
  value: { type: "keyword", value: "inline-block" }
5459
5410
  }
5460
5411
  ]
5461
- }, p$5 = {
5462
- presetStyle: o$E,
5463
- states: [
5464
- ...defaultStates,
5465
- {
5466
- selector: ":visited",
5467
- label: "Visited"
5468
- },
5469
- {
5470
- category: "component-states",
5471
- selector: "[aria-current=page]",
5472
- label: "Current page"
5473
- }
5474
- ],
5412
+ }, p$6 = {
5413
+ presetStyle: t$d,
5414
+ states: [{ label: "Current page", selector: "[aria-current=page]" }],
5475
5415
  initialProps: ["id", "class", "href", "target", "prefetch", "download"],
5476
5416
  props: {
5477
- ...e$s,
5417
+ ...e$w,
5478
5418
  href: {
5479
5419
  type: "string",
5480
5420
  control: "url",
@@ -5482,71 +5422,51 @@ const o$E = {
5482
5422
  }
5483
5423
  }
5484
5424
  };
5485
- const a$9 = p$5;
5486
- const o$D = {};
5487
- const m$7 = {
5425
+ const a$5 = p$6;
5426
+ const o$E = {};
5427
+ const e$v = {
5488
5428
  label: "Text",
5489
5429
  icon: PaintBrushIcon,
5490
- states: defaultStates,
5491
5430
  presetStyle: { span },
5492
5431
  initialProps: ["id", "class"],
5493
- props: o$D
5432
+ props: o$E
5494
5433
  };
5495
- const o$C = {};
5496
- const a$8 = {
5434
+ const o$D = {};
5435
+ const p$5 = {
5497
5436
  label: "Bold Text",
5498
- states: defaultStates,
5499
- presetStyle: { b: b$6 },
5437
+ presetStyle: { b: b$5 },
5500
5438
  initialProps: ["id", "class"],
5501
- props: o$C
5439
+ props: o$D
5502
5440
  };
5503
- const o$B = {};
5504
- const r$e = {
5505
- i: [
5506
- ...i$b,
5507
- {
5508
- property: "font-style",
5509
- value: { type: "keyword", value: "italic" }
5510
- }
5511
- ]
5512
- }, p$4 = {
5441
+ const o$C = {};
5442
+ const e$u = {
5513
5443
  label: "Italic Text",
5514
- states: defaultStates,
5515
- presetStyle: r$e,
5444
+ presetStyle: { i: i$9 },
5516
5445
  initialProps: ["id", "class"],
5517
- props: o$B
5446
+ props: o$C
5518
5447
  };
5519
- const o$A = {};
5520
- const i$8 = {
5448
+ const o$B = {};
5449
+ const o$A = {
5521
5450
  label: "Superscript Text",
5522
- states: defaultStates,
5523
5451
  presetStyle: { sup },
5524
5452
  initialProps: ["id", "class"],
5525
- props: o$A
5453
+ props: o$B
5526
5454
  };
5527
5455
  const o$z = {};
5528
- const i$7 = {
5456
+ const s$4 = {
5529
5457
  label: "Subscript Text",
5530
- states: defaultStates,
5531
5458
  presetStyle: { sub },
5532
5459
  initialProps: ["id", "class"],
5533
5460
  props: o$z
5534
5461
  };
5535
5462
  const o$y = {};
5536
- const a$7 = {
5537
- button
5538
- }, i$6 = {
5539
- presetStyle: a$7,
5540
- states: [
5541
- ...defaultStates,
5542
- { selector: ":disabled", label: "Disabled" },
5543
- { selector: ":enabled", label: "Enabled" }
5544
- ],
5463
+ const e$t = {
5464
+ presetStyle: { button },
5545
5465
  initialProps: ["id", "class", "type", "aria-label"],
5546
5466
  props: o$y
5547
5467
  };
5548
5468
  const o$x = {};
5549
- const r$d = {
5469
+ const p$4 = {
5550
5470
  input: [
5551
5471
  ...input,
5552
5472
  {
@@ -5554,25 +5474,9 @@ const r$d = {
5554
5474
  value: { type: "keyword", value: "block" }
5555
5475
  }
5556
5476
  ]
5557
- }, s$8 = {
5558
- category: "forms",
5477
+ }, l$4 = {
5559
5478
  label: "Text Input",
5560
- description: "A single-line text input for collecting string data from your users.",
5561
- presetStyle: r$d,
5562
- order: 3,
5563
- states: [
5564
- ...defaultStates,
5565
- { selector: "::placeholder", label: "Placeholder" },
5566
- { selector: ":valid", label: "Valid" },
5567
- { selector: ":invalid", label: "Invalid" },
5568
- { selector: ":required", label: "Required" },
5569
- { selector: ":optional", label: "Optional" }
5570
- // Additional states will go into submenu
5571
- //{ selector: ":disabled", label: "Disabled" },
5572
- //{ selector: ":enabled", label: "Enabled" },
5573
- //{ selector: ":read-only", label: "Read Only" },
5574
- //{ selector: ":read-write", label: "Read Write" },
5575
- ],
5479
+ presetStyle: p$4,
5576
5480
  initialProps: [
5577
5481
  "id",
5578
5482
  "class",
@@ -5585,7 +5489,7 @@ const r$d = {
5585
5489
  ],
5586
5490
  props: o$x
5587
5491
  };
5588
- const e$r = {
5492
+ const e$s = {
5589
5493
  state: {
5590
5494
  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.",
5591
5495
  required: false,
@@ -5595,7 +5499,7 @@ const e$r = {
5595
5499
  options: ["initial", "success", "error"]
5596
5500
  }
5597
5501
  };
5598
- const c$1 = {
5502
+ const c$3 = {
5599
5503
  label: "Webhook Form",
5600
5504
  icon: WebhookFormIcon,
5601
5505
  presetStyle: {
@@ -5607,7 +5511,7 @@ const c$1 = {
5607
5511
  ],
5608
5512
  initialProps: ["id", "class", "state", "action"],
5609
5513
  props: {
5610
- ...e$r,
5514
+ ...e$s,
5611
5515
  action: {
5612
5516
  type: "resource",
5613
5517
  control: "resource",
@@ -5617,22 +5521,18 @@ const c$1 = {
5617
5521
  }
5618
5522
  };
5619
5523
  const o$w = {};
5620
- const o$v = {
5524
+ const r$e = {
5621
5525
  form: [
5622
5526
  ...form,
5623
5527
  { property: "min-height", value: { type: "unit", unit: "px", value: 20 } }
5624
5528
  ]
5625
- }, m$6 = {
5626
- category: "forms",
5529
+ }, p$3 = {
5627
5530
  label: "Form",
5628
- description: "Create filters, surveys, searches and more.",
5629
- states: defaultStates,
5630
- presetStyle: o$v,
5631
- order: 0,
5531
+ presetStyle: r$e,
5632
5532
  initialProps: ["id", "class", "action"],
5633
5533
  props: o$w
5634
5534
  };
5635
- const e$q = {
5535
+ const e$r = {
5636
5536
  optimize: {
5637
5537
  description: "Optimize the image for enhanced performance.",
5638
5538
  required: false,
@@ -5642,7 +5542,7 @@ const e$q = {
5642
5542
  },
5643
5543
  quality: { required: false, control: "number", type: "number" }
5644
5544
  };
5645
- const r$c = {
5545
+ const o$v = {
5646
5546
  img: [
5647
5547
  ...img,
5648
5548
  // Otherwise on new image insert onto canvas it can overfit screen size multiple times
@@ -5664,11 +5564,10 @@ const r$c = {
5664
5564
  value: { type: "keyword", value: "auto" }
5665
5565
  }
5666
5566
  ]
5667
- }, s$7 = {
5567
+ }, i$6 = {
5668
5568
  category: "media",
5669
5569
  description: "Add an image asset to the page. Webstudio automatically converts images to WebP or AVIF format and makes them responsive for best performance.",
5670
- states: defaultStates,
5671
- presetStyle: r$c,
5570
+ presetStyle: o$v,
5672
5571
  order: 0,
5673
5572
  initialProps: [
5674
5573
  "id",
@@ -5681,7 +5580,7 @@ const r$c = {
5681
5580
  "optimize"
5682
5581
  ],
5683
5582
  props: {
5684
- ...e$q,
5583
+ ...e$r,
5685
5584
  // Automatically generated props don't have the right control.
5686
5585
  src: {
5687
5586
  type: "string",
@@ -5692,7 +5591,7 @@ const r$c = {
5692
5591
  }
5693
5592
  };
5694
5593
  const o$u = {};
5695
- const p$3 = {
5594
+ const e$q = {
5696
5595
  blockquote: [
5697
5596
  {
5698
5597
  property: "margin-top",
@@ -5739,9 +5638,8 @@ const p$3 = {
5739
5638
  value: { type: "rgb", r: 226, g: 226, b: 226, alpha: 1 }
5740
5639
  }
5741
5640
  ]
5742
- }, a$6 = {
5743
- states: defaultStates,
5744
- presetStyle: p$3,
5641
+ }, r$d = {
5642
+ presetStyle: e$q,
5745
5643
  initialProps: ["id", "class", "cite"],
5746
5644
  props: o$u
5747
5645
  };
@@ -5754,7 +5652,7 @@ const e$p = {
5754
5652
  defaultValue: false
5755
5653
  }
5756
5654
  };
5757
- const o$t = {
5655
+ const t$c = {
5758
5656
  ol: [
5759
5657
  ...ol,
5760
5658
  {
@@ -5785,21 +5683,19 @@ const o$t = {
5785
5683
  value: { type: "keyword", value: "40px" }
5786
5684
  }
5787
5685
  ]
5788
- }, d$4 = {
5789
- states: defaultStates,
5790
- presetStyle: o$t,
5686
+ }, l$3 = {
5687
+ presetStyle: t$c,
5791
5688
  initialProps: ["id", "class", "ordered", "start", "reversed"],
5792
5689
  props: e$p
5793
5690
  };
5794
- const o$s = {};
5691
+ const o$t = {};
5795
5692
  const p$2 = {
5796
- states: defaultStates,
5797
5693
  presetStyle: { li },
5798
5694
  initialProps: ["id", "class"],
5799
- props: o$s
5695
+ props: o$t
5800
5696
  };
5801
- const o$r = {};
5802
- const t$a = {
5697
+ const o$s = {};
5698
+ const o$r = {
5803
5699
  hr: [
5804
5700
  ...hr,
5805
5701
  {
@@ -5828,18 +5724,14 @@ const t$a = {
5828
5724
  }
5829
5725
  ]
5830
5726
  }, y$2 = {
5831
- category: "general",
5832
- description: "Used to visually divide sections of content, helping to improve readability and organization within a webpage.",
5833
- states: defaultStates,
5834
- presetStyle: t$a,
5835
- order: 3,
5727
+ presetStyle: o$r,
5836
5728
  initialProps: ["id", "class"],
5837
- props: o$r
5729
+ props: o$s
5838
5730
  };
5839
5731
  const e$o = {
5840
5732
  code: { required: false, control: "text", type: "string" }
5841
5733
  };
5842
- const p$1 = {
5734
+ const o$q = {
5843
5735
  code: [
5844
5736
  ...code,
5845
5737
  {
@@ -5867,17 +5759,13 @@ const p$1 = {
5867
5759
  value: { type: "rgb", r: 238, g: 238, b: 238, alpha: 1 }
5868
5760
  }
5869
5761
  ]
5870
- }, c = {
5871
- category: "general",
5872
- description: "Use this component when you want to display code as text on the page.",
5762
+ }, c$2 = {
5873
5763
  icon: BracesIcon,
5874
5764
  contentModel: {
5875
5765
  category: "instance",
5876
5766
  children: []
5877
5767
  },
5878
- states: defaultStates,
5879
- presetStyle: p$1,
5880
- order: 5,
5768
+ presetStyle: o$q,
5881
5769
  initialProps: ["id", "class", "lang", "code"],
5882
5770
  props: {
5883
5771
  ...e$o,
@@ -5888,21 +5776,20 @@ const p$1 = {
5888
5776
  }
5889
5777
  }
5890
5778
  };
5891
- const o$q = {};
5892
- const o$p = {
5779
+ const o$p = {};
5780
+ const o$o = {
5893
5781
  label: [
5894
5782
  ...label,
5895
5783
  { property: "display", value: { type: "keyword", value: "block" } }
5896
5784
  ]
5897
- }, s$6 = {
5785
+ }, t$b = {
5898
5786
  label: "Input Label",
5899
- states: defaultStates,
5900
- presetStyle: o$p,
5787
+ presetStyle: o$o,
5901
5788
  initialProps: ["id", "class", "for"],
5902
- props: o$q
5789
+ props: o$p
5903
5790
  };
5904
- const o$o = {};
5905
- const t$9 = {
5791
+ const o$n = {};
5792
+ const t$a = {
5906
5793
  textarea: [
5907
5794
  ...textarea,
5908
5795
  // resize doesn't work well while on canvas
@@ -5912,29 +5799,13 @@ const t$9 = {
5912
5799
  value: { type: "keyword", value: "block" }
5913
5800
  }
5914
5801
  ]
5915
- }, s$5 = {
5916
- category: "forms",
5802
+ }, l$2 = {
5917
5803
  label: "Text Area",
5918
- description: "A multi-line text input for collecting longer string data from your users.",
5919
- presetStyle: t$9,
5920
- order: 4,
5804
+ presetStyle: t$a,
5921
5805
  contentModel: {
5922
5806
  category: "instance",
5923
5807
  children: []
5924
5808
  },
5925
- states: [
5926
- ...defaultStates,
5927
- { selector: "::placeholder", label: "Placeholder" },
5928
- { selector: ":valid", label: "Valid" },
5929
- { selector: ":invalid", label: "Invalid" },
5930
- { selector: ":required", label: "Required" },
5931
- { selector: ":optional", label: "Optional" }
5932
- // Additional states will go into submenu
5933
- //{ selector: ":disabled", label: "Disabled" },
5934
- //{ selector: ":enabled", label: "Enabled" },
5935
- //{ selector: ":read-only", label: "Read Only" },
5936
- //{ selector: ":read-write", label: "Read Write" },
5937
- ],
5938
5809
  initialProps: [
5939
5810
  "id",
5940
5811
  "class",
@@ -5944,17 +5815,17 @@ const t$9 = {
5944
5815
  "required",
5945
5816
  "autofocus"
5946
5817
  ],
5947
- props: o$o
5818
+ props: o$n
5948
5819
  };
5949
5820
  const e$n = {
5950
5821
  value: {
5951
5822
  required: false,
5952
5823
  control: "text",
5953
5824
  type: "string",
5954
- description: "Current value of the element"
5825
+ description: "Value of the form control"
5955
5826
  }
5956
5827
  };
5957
- const i$5 = {
5828
+ const r$c = {
5958
5829
  input: [
5959
5830
  ...radio,
5960
5831
  {
@@ -5962,21 +5833,10 @@ const i$5 = {
5962
5833
  value: { type: "unit", unit: "em", value: 0.5 }
5963
5834
  }
5964
5835
  ]
5965
- }, s$4 = {
5836
+ }, m$8 = {
5966
5837
  label: "Radio",
5967
5838
  icon: RadioCheckedIcon,
5968
- presetStyle: i$5,
5969
- states: [
5970
- ...defaultStates,
5971
- { selector: ":checked", label: "Checked" },
5972
- { selector: ":required", label: "Required" },
5973
- { selector: ":optional", label: "Optional" }
5974
- // Additional states will go into submenu
5975
- //{ selector: ":disabled", label: "Disabled" },
5976
- //{ selector: ":enabled", label: "Enabled" },
5977
- //{ selector: ":read-only", label: "Read Only" },
5978
- //{ selector: ":read-write", label: "Read Write" },
5979
- ],
5839
+ presetStyle: r$c,
5980
5840
  initialProps: ["id", "class", "name", "value", "required", "checked"],
5981
5841
  props: e$n
5982
5842
  };
@@ -5985,10 +5845,10 @@ const e$m = {
5985
5845
  required: false,
5986
5846
  control: "text",
5987
5847
  type: "string",
5988
- description: "Current value of the element"
5848
+ description: "Value of the form control"
5989
5849
  }
5990
5850
  };
5991
- const o$n = {
5851
+ const t$9 = {
5992
5852
  input: [
5993
5853
  ...checkbox,
5994
5854
  {
@@ -5996,19 +5856,9 @@ const o$n = {
5996
5856
  value: { type: "unit", unit: "em", value: 0.5 }
5997
5857
  }
5998
5858
  ]
5999
- }, d$3 = {
5859
+ }, m$7 = {
6000
5860
  icon: CheckboxCheckedIcon,
6001
- presetStyle: o$n,
6002
- states: [
6003
- ...defaultStates,
6004
- { selector: ":checked", label: "Checked" },
6005
- { selector: ":required", label: "Required" },
6006
- { selector: ":optional", label: "Optional" },
6007
- { selector: ":disabled", label: "Disabled" },
6008
- { selector: ":enabled", label: "Enabled" },
6009
- { selector: ":read-only", label: "Read Only" },
6010
- { selector: ":read-write", label: "Read Write" }
6011
- ],
5861
+ presetStyle: t$9,
6012
5862
  initialProps: ["id", "class", "name", "value", "required", "checked"],
6013
5863
  props: e$m
6014
5864
  };
@@ -6179,7 +6029,7 @@ To enable automatically generated closed captions instead, provide the value en-
6179
6029
  type: "string"
6180
6030
  }
6181
6031
  };
6182
- const r$b = [
6032
+ const i$5 = [
6183
6033
  "id",
6184
6034
  "className",
6185
6035
  "url",
@@ -6197,16 +6047,15 @@ const r$b = [
6197
6047
  "showControls",
6198
6048
  "controlsColor",
6199
6049
  "playsinline"
6200
- ], m$5 = {
6050
+ ], s$3 = {
6201
6051
  icon: VimeoIcon,
6202
- states: defaultStates,
6203
6052
  contentModel: {
6204
6053
  category: "instance",
6205
6054
  children: ["instance"],
6206
6055
  descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6207
6056
  },
6208
6057
  presetStyle: { div },
6209
- initialProps: r$b,
6058
+ initialProps: i$5,
6210
6059
  props: e$l
6211
6060
  };
6212
6061
  const e$k = {
@@ -6374,7 +6223,7 @@ https://support.google.com/youtube/answer/171780?hl=en#zippy=%2Cturn-on-privacy-
6374
6223
  type: "string"
6375
6224
  }
6376
6225
  };
6377
- const n$7 = [
6226
+ const n$6 = [
6378
6227
  "id",
6379
6228
  "className",
6380
6229
  "url",
@@ -6402,16 +6251,15 @@ const n$7 = [
6402
6251
  "language",
6403
6252
  "color",
6404
6253
  "playlist"
6405
- ], d$2 = {
6254
+ ], s$2 = {
6406
6255
  icon: YoutubeIcon,
6407
- states: defaultStates,
6408
6256
  contentModel: {
6409
6257
  category: "instance",
6410
6258
  children: ["instance"],
6411
6259
  descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6412
6260
  },
6413
6261
  presetStyle: { div },
6414
- initialProps: n$7,
6262
+ initialProps: n$6,
6415
6263
  props: e$k
6416
6264
  };
6417
6265
  const e$j = {
@@ -6424,14 +6272,14 @@ const e$j = {
6424
6272
  quality: { required: false, control: "number", type: "number" }
6425
6273
  };
6426
6274
  const i$4 = {
6427
- ...s$7,
6275
+ ...i$6,
6428
6276
  category: "hidden",
6429
6277
  label: "Preview Image",
6430
6278
  contentModel: {
6431
6279
  category: "none",
6432
6280
  children: []
6433
6281
  },
6434
- initialProps: s$7.initialProps,
6282
+ initialProps: i$6.initialProps,
6435
6283
  props: {
6436
6284
  ...e$j,
6437
6285
  // Automatically generated props don't have the right control.
@@ -6444,11 +6292,10 @@ const i$4 = {
6444
6292
  }
6445
6293
  };
6446
6294
  const o$m = {};
6447
- const m$4 = {
6295
+ const c$1 = {
6448
6296
  category: "hidden",
6449
6297
  label: "Play Button",
6450
6298
  icon: ButtonElementIcon,
6451
- states: defaultStates,
6452
6299
  contentModel: {
6453
6300
  category: "none",
6454
6301
  children: ["instance"]
@@ -6458,9 +6305,8 @@ const m$4 = {
6458
6305
  props: o$m
6459
6306
  };
6460
6307
  const o$l = {};
6461
- const s$3 = {
6308
+ const c = {
6462
6309
  icon: BoxIcon,
6463
- states: defaultStates,
6464
6310
  category: "hidden",
6465
6311
  label: "Spinner",
6466
6312
  contentModel: {
@@ -6494,7 +6340,7 @@ const e$i = {
6494
6340
  xmlns: { required: false, control: "text", type: "string" },
6495
6341
  "xmlns:xhtml": { required: false, control: "text", type: "string" }
6496
6342
  };
6497
- const m$3 = {
6343
+ const m$6 = {
6498
6344
  category: "xml",
6499
6345
  order: 6,
6500
6346
  icon: XmlIcon,
@@ -6518,7 +6364,7 @@ const e$h = {
6518
6364
  description: "Machine-readable value"
6519
6365
  }
6520
6366
  };
6521
- const a$5 = {
6367
+ const a$4 = {
6522
6368
  category: "xml",
6523
6369
  description: "Converts machine-readable date and time to ISO format.",
6524
6370
  icon: CalendarIcon,
@@ -6828,14 +6674,13 @@ const e$g = {
6828
6674
  options: ["full", "long", "medium", "short", "none"]
6829
6675
  }
6830
6676
  };
6831
- const n$6 = {
6677
+ const r$b = {
6832
6678
  category: "localization",
6833
6679
  description: "Converts machine-readable date and time to a human-readable format.",
6834
6680
  contentModel: {
6835
6681
  category: "instance",
6836
6682
  children: []
6837
6683
  },
6838
- states: defaultStates,
6839
6684
  presetStyle: {
6840
6685
  time
6841
6686
  },
@@ -6851,16 +6696,8 @@ const o$j = {
6851
6696
  value: { type: "keyword", value: "block" }
6852
6697
  }
6853
6698
  ]
6854
- }, s$2 = {
6699
+ }, p$1 = {
6855
6700
  presetStyle: o$j,
6856
- states: [
6857
- ...defaultStates,
6858
- { selector: "::placeholder", label: "Placeholder" },
6859
- { selector: ":valid", label: "Valid" },
6860
- { selector: ":invalid", label: "Invalid" },
6861
- { selector: ":required", label: "Required" },
6862
- { selector: ":optional", label: "Optional" }
6863
- ],
6864
6701
  initialProps: [
6865
6702
  "id",
6866
6703
  "class",
@@ -6887,7 +6724,7 @@ const l$1 = {
6887
6724
  }
6888
6725
  }
6889
6726
  ]
6890
- }, a$4 = {
6727
+ }, a$3 = {
6891
6728
  category: "hidden",
6892
6729
  description: "An item within a drop-down menu that users can select as their chosen value.",
6893
6730
  presetStyle: l$1,
@@ -6901,7 +6738,7 @@ const l$1 = {
6901
6738
  { selector: ":hover", label: "Hover" },
6902
6739
  { selector: ":disabled", label: "Disabled" }
6903
6740
  ],
6904
- initialProps: ["label", "selected", "value", "label", "disabled"],
6741
+ initialProps: ["label", "value", "label", "disabled"],
6905
6742
  props: o$i
6906
6743
  };
6907
6744
  const o$h = {};
@@ -6985,51 +6822,51 @@ const i$3 = {
6985
6822
  };
6986
6823
  const baseComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6987
6824
  __proto__: null,
6988
- Blockquote: a$6,
6989
- Body: i$a,
6990
- Bold: a$8,
6991
- Box: u$1,
6992
- Button: i$6,
6993
- Checkbox: d$3,
6994
- CodeText: c,
6995
- Form: c$1,
6996
- Fragment: t$e,
6825
+ Blockquote: r$d,
6826
+ Body: i$8,
6827
+ Bold: p$5,
6828
+ Box: g$2,
6829
+ Button: e$t,
6830
+ Checkbox: m$7,
6831
+ CodeText: c$2,
6832
+ Form: c$3,
6833
+ Fragment: t$i,
6997
6834
  HeadLink: t$8,
6998
6835
  HeadMeta: e$f,
6999
6836
  HeadSlot: r$a,
7000
6837
  HeadTitle: r$9,
7001
- Heading: n$8,
7002
- HtmlEmbed: a$c,
7003
- Image: s$7,
7004
- Input: s$8,
7005
- Italic: p$4,
7006
- Label: s$6,
7007
- Link: p$5,
7008
- List: d$4,
6838
+ Heading: m$9,
6839
+ HtmlEmbed: a$8,
6840
+ Image: i$6,
6841
+ Input: l$4,
6842
+ Italic: e$u,
6843
+ Label: t$b,
6844
+ Link: p$6,
6845
+ List: l$3,
7009
6846
  ListItem: p$2,
7010
- MarkdownEmbed: a$b,
7011
- Option: a$4,
7012
- Paragraph: i$9,
7013
- RadioButton: s$4,
7014
- RemixForm: m$6,
7015
- RichTextLink: a$9,
7016
- Select: s$2,
6847
+ MarkdownEmbed: a$7,
6848
+ Option: a$3,
6849
+ Paragraph: i$7,
6850
+ RadioButton: m$8,
6851
+ RemixForm: p$3,
6852
+ RichTextLink: a$5,
6853
+ Select: p$1,
7017
6854
  Separator: y$2,
7018
6855
  Slot: o$H,
7019
- Span: m$7,
7020
- Subscript: i$7,
7021
- Superscript: i$8,
7022
- Text: n$9,
7023
- Textarea: s$5,
7024
- Time: n$6,
6856
+ Span: e$v,
6857
+ Subscript: s$4,
6858
+ Superscript: o$A,
6859
+ Text: n$7,
6860
+ Textarea: l$2,
6861
+ Time: r$b,
7025
6862
  Video: i$3,
7026
- Vimeo: m$5,
7027
- VimeoPlayButton: m$4,
6863
+ Vimeo: s$3,
6864
+ VimeoPlayButton: c$1,
7028
6865
  VimeoPreviewImage: i$4,
7029
- VimeoSpinner: s$3,
7030
- XmlNode: m$3,
7031
- XmlTime: a$5,
7032
- YouTube: d$2
6866
+ VimeoSpinner: c,
6867
+ XmlNode: m$6,
6868
+ XmlTime: a$4,
6869
+ YouTube: s$2
7033
6870
  }, Symbol.toStringTag, { value: "Module" }));
7034
6871
  const n$5 = (t2) => new Proxy(
7035
6872
  {},
@@ -7041,7 +6878,7 @@ const n$5 = (t2) => new Proxy(
7041
6878
  ), r$8 = n$5(
7042
6879
  "@webstudio-is/sdk-components-animation:"
7043
6880
  );
7044
- const a$3 = {
6881
+ const a$2 = {
7045
6882
  category: "animations",
7046
6883
  description: "Animation Group component is designed to animate its children.",
7047
6884
  icon: AnimationGroupIcon,
@@ -7111,7 +6948,7 @@ const e$e = {
7111
6948
  options: ["char", "space", 'symbol "#"', 'symbol "~"']
7112
6949
  }
7113
6950
  };
7114
- const a$2 = {
6951
+ const a$1 = {
7115
6952
  category: "animations",
7116
6953
  description: "Text animation allows you to split text by char or by word to animate it.",
7117
6954
  icon: TextAnimationIcon,
@@ -7179,7 +7016,7 @@ const r$7 = {
7179
7016
  const e$c = {
7180
7017
  timeline: { required: false, control: "boolean", type: "boolean" }
7181
7018
  };
7182
- const m$2 = {
7019
+ const m$5 = {
7183
7020
  icon: PlayIcon,
7184
7021
  label: "Video Animation",
7185
7022
  contentModel: {
@@ -7192,10 +7029,10 @@ const m$2 = {
7192
7029
  };
7193
7030
  const animationComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7194
7031
  __proto__: null,
7195
- AnimateChildren: a$3,
7196
- AnimateText: a$2,
7032
+ AnimateChildren: a$2,
7033
+ AnimateText: a$1,
7197
7034
  StaggerAnimation: r$7,
7198
- VideoAnimation: m$2
7035
+ VideoAnimation: m$5
7199
7036
  }, Symbol.toStringTag, { value: "Module" }));
7200
7037
  const r$6 = (t2) => new Proxy(
7201
7038
  {},
@@ -7221,7 +7058,7 @@ const o$c = {
7221
7058
  description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
7222
7059
  }
7223
7060
  }, e$b = {}, t$7 = {};
7224
- const g$2 = {
7061
+ const g$1 = {
7225
7062
  icon: CollapsibleIcon,
7226
7063
  contentModel: {
7227
7064
  category: "instance",
@@ -7233,7 +7070,7 @@ const g$2 = {
7233
7070
  },
7234
7071
  initialProps: ["open"],
7235
7072
  props: o$c
7236
- }, m$1 = {
7073
+ }, m$4 = {
7237
7074
  icon: TriggerIcon,
7238
7075
  contentModel: {
7239
7076
  category: "none",
@@ -7275,7 +7112,7 @@ const o$a = (r2, t2, p2) => ({
7275
7112
  }), d = (r2, t2, p2, l2) => ({
7276
7113
  property: r2,
7277
7114
  value: { type: "rgb", alpha: 1, r: t2, g: p2, b: l2 }
7278
- }), b$5 = [
7115
+ }), b$4 = [
7279
7116
  {
7280
7117
  property: "background-color",
7281
7118
  value: { type: "keyword", value: "transparent" }
@@ -7301,14 +7138,14 @@ const o$a = (r2, t2, p2) => ({
7301
7138
  o$a("padding-bottom", 0, "px"),
7302
7139
  o$a("padding-left", 0, "px")
7303
7140
  ];
7304
- const O = {
7141
+ const S$1 = {
7305
7142
  icon: TriggerIcon,
7306
7143
  contentModel: {
7307
7144
  category: "none",
7308
7145
  children: ["instance"]
7309
7146
  },
7310
7147
  props: t$6
7311
- }, B = {
7148
+ }, b$3 = {
7312
7149
  icon: OverlayIcon,
7313
7150
  contentModel: {
7314
7151
  category: "none",
@@ -7317,7 +7154,7 @@ const O = {
7317
7154
  },
7318
7155
  presetStyle: { div },
7319
7156
  props: e$a
7320
- }, E = {
7157
+ }, O = {
7321
7158
  icon: ContentIcon,
7322
7159
  contentModel: {
7323
7160
  category: "none",
@@ -7330,7 +7167,7 @@ const O = {
7330
7167
  },
7331
7168
  presetStyle: { div },
7332
7169
  props: n$3
7333
- }, H$1 = {
7170
+ }, B = {
7334
7171
  icon: HeadingIcon,
7335
7172
  contentModel: {
7336
7173
  category: "none",
@@ -7338,33 +7175,33 @@ const O = {
7338
7175
  },
7339
7176
  presetStyle: { h2 },
7340
7177
  props: i$2
7341
- }, R = {
7178
+ }, E = {
7342
7179
  icon: TextIcon,
7343
7180
  contentModel: {
7344
7181
  category: "none",
7345
7182
  children: ["instance", "rich-text"]
7346
7183
  },
7347
- presetStyle: { p: p$6 },
7184
+ presetStyle: { p: p$7 },
7348
7185
  props: p
7349
- }, j = {
7186
+ }, H$1 = {
7350
7187
  icon: ButtonElementIcon,
7351
7188
  label: "Close Button",
7352
7189
  contentModel: {
7353
7190
  category: "none",
7354
7191
  children: ["instance", "rich-text"]
7355
7192
  },
7356
- states: defaultStates,
7357
7193
  presetStyle: {
7358
- button: [b$5, button].flat()
7194
+ button: [b$4, button].flat()
7359
7195
  },
7360
7196
  props: s$1
7361
- }, k$3 = {
7197
+ }, P$1 = {
7362
7198
  icon: DialogIcon,
7363
7199
  contentModel: {
7364
7200
  category: "instance",
7365
7201
  children: ["instance"],
7366
7202
  descendants: [n$4.DialogTrigger, n$4.DialogOverlay]
7367
7203
  },
7204
+ initialProps: ["open"],
7368
7205
  props: o$b
7369
7206
  };
7370
7207
  const e$8 = {
@@ -7423,14 +7260,14 @@ const e$8 = {
7423
7260
  options: ["always", "optimized"]
7424
7261
  }
7425
7262
  }, r$5 = {};
7426
- const y$1 = {
7263
+ const C$3 = {
7427
7264
  icon: TriggerIcon,
7428
7265
  contentModel: {
7429
7266
  category: "none",
7430
7267
  children: ["instance"]
7431
7268
  },
7432
7269
  props: o$9
7433
- }, h$2 = {
7270
+ }, y$1 = {
7434
7271
  icon: ContentIcon,
7435
7272
  contentModel: {
7436
7273
  category: "none",
@@ -7442,7 +7279,7 @@ const y$1 = {
7442
7279
  },
7443
7280
  initialProps: ["side", "sideOffset", "align", "alignOffset"],
7444
7281
  props: t$5
7445
- }, b$4 = {
7282
+ }, h$2 = {
7446
7283
  icon: PopoverIcon,
7447
7284
  contentModel: {
7448
7285
  category: "instance",
@@ -7451,16 +7288,15 @@ const y$1 = {
7451
7288
  },
7452
7289
  initialProps: ["open"],
7453
7290
  props: e$8
7454
- }, I = {
7291
+ }, u = {
7455
7292
  icon: ButtonElementIcon,
7456
7293
  label: "Close Button",
7457
7294
  contentModel: {
7458
7295
  category: "none",
7459
7296
  children: ["instance", "rich-text"]
7460
7297
  },
7461
- states: defaultStates,
7462
7298
  presetStyle: {
7463
- button: [b$5, button].flat()
7299
+ button: [b$4, button].flat()
7464
7300
  },
7465
7301
  props: r$5
7466
7302
  };
@@ -7537,7 +7373,7 @@ const e$7 = {
7537
7373
  options: ["always", "optimized"]
7538
7374
  }
7539
7375
  };
7540
- const g$1 = {
7376
+ const g = {
7541
7377
  icon: TriggerIcon,
7542
7378
  contentModel: {
7543
7379
  category: "none",
@@ -7553,7 +7389,7 @@ const g$1 = {
7553
7389
  presetStyle: { div },
7554
7390
  initialProps: ["side", "sideOffset", "align", "alignOffset"],
7555
7391
  props: t$4
7556
- }, m = {
7392
+ }, m$3 = {
7557
7393
  icon: TooltipIcon,
7558
7394
  contentModel: {
7559
7395
  category: "instance",
@@ -7595,10 +7431,10 @@ Mainly so arrow navigation is done accordingly (left & right vs. up & down)
7595
7431
  options: ["horizontal", "vertical"]
7596
7432
  },
7597
7433
  value: {
7434
+ description: "The value for the selected tab, if controlled",
7598
7435
  required: false,
7599
7436
  control: "text",
7600
- type: "string",
7601
- description: "Current value of the element"
7437
+ type: "string"
7602
7438
  }
7603
7439
  }, t$3 = {
7604
7440
  loop: {
@@ -7622,7 +7458,7 @@ Mainly so arrow navigation is done accordingly (left & right vs. up & down)
7622
7458
  description: "Current value of the element"
7623
7459
  }
7624
7460
  };
7625
- const x$2 = {
7461
+ const y = {
7626
7462
  icon: TabsIcon,
7627
7463
  contentModel: {
7628
7464
  category: "instance",
@@ -7631,7 +7467,7 @@ const x$2 = {
7631
7467
  },
7632
7468
  presetStyle: { div },
7633
7469
  props: e$6
7634
- }, C$2 = {
7470
+ }, f$3 = {
7635
7471
  icon: HeaderIcon,
7636
7472
  contentModel: {
7637
7473
  category: "none",
@@ -7640,7 +7476,7 @@ const x$2 = {
7640
7476
  },
7641
7477
  presetStyle: { div },
7642
7478
  props: t$3
7643
- }, S$2 = {
7479
+ }, x$1 = {
7644
7480
  icon: TriggerIcon,
7645
7481
  label: "Tab Trigger",
7646
7482
  indexWithinAncestor: n$4.Tabs,
@@ -7648,19 +7484,12 @@ const x$2 = {
7648
7484
  category: "none",
7649
7485
  children: ["instance", "rich-text"]
7650
7486
  },
7651
- states: [
7652
- ...defaultStates,
7653
- {
7654
- category: "component-states",
7655
- label: "Active",
7656
- selector: "[data-state=active]"
7657
- }
7658
- ],
7487
+ states: [{ label: "Active", selector: "[data-state=active]" }],
7659
7488
  presetStyle: {
7660
- button: [button, b$5].flat()
7489
+ button: [button, b$4].flat()
7661
7490
  },
7662
7491
  props: o$7
7663
- }, u = {
7492
+ }, C$2 = {
7664
7493
  label: "Tab Content",
7665
7494
  icon: ContentIcon,
7666
7495
  indexWithinAncestor: n$4.Tabs,
@@ -7672,12 +7501,9 @@ const x$2 = {
7672
7501
  props: r$4
7673
7502
  };
7674
7503
  const o$6 = {};
7675
- const a$1 = {
7504
+ const m$2 = {
7676
7505
  icon: LabelIcon,
7677
- states: defaultStates,
7678
- presetStyle: {
7679
- label
7680
- },
7506
+ presetStyle: { label },
7681
7507
  initialProps: ["id", "class", "for"],
7682
7508
  props: o$6
7683
7509
  };
@@ -7738,7 +7564,7 @@ const e$5 = {
7738
7564
  description: "Current value of the element"
7739
7565
  }
7740
7566
  }, t$2 = {}, r$3 = {}, n$2 = {};
7741
- const x$1 = {
7567
+ const v$1 = {
7742
7568
  icon: AccordionIcon,
7743
7569
  contentModel: {
7744
7570
  category: "instance",
@@ -7748,7 +7574,7 @@ const x$1 = {
7748
7574
  presetStyle: { div },
7749
7575
  initialProps: ["value", "collapsible"],
7750
7576
  props: e$5
7751
- }, S$1 = {
7577
+ }, x = {
7752
7578
  label: "Item",
7753
7579
  icon: ItemIcon,
7754
7580
  indexWithinAncestor: n$4.Accordion,
@@ -7760,7 +7586,7 @@ const x$1 = {
7760
7586
  presetStyle: { div },
7761
7587
  initialProps: ["value"],
7762
7588
  props: o$5
7763
- }, C$1 = {
7589
+ }, f$2 = {
7764
7590
  label: "Item Header",
7765
7591
  icon: HeaderIcon,
7766
7592
  contentModel: {
@@ -7782,26 +7608,19 @@ const x$1 = {
7782
7608
  ]
7783
7609
  },
7784
7610
  props: t$2
7785
- }, H = {
7611
+ }, C$1 = {
7786
7612
  label: "Item Trigger",
7787
7613
  icon: TriggerIcon,
7788
7614
  contentModel: {
7789
7615
  category: "none",
7790
7616
  children: ["instance", "rich-text"]
7791
7617
  },
7792
- states: [
7793
- ...defaultStates,
7794
- {
7795
- category: "component-states",
7796
- label: "Open",
7797
- selector: "[data-state=open]"
7798
- }
7799
- ],
7618
+ states: [{ label: "Open", selector: "[data-state=open]" }],
7800
7619
  presetStyle: {
7801
- button: [button, b$5].flat()
7620
+ button: [button, b$4].flat()
7802
7621
  },
7803
7622
  props: r$3
7804
- }, M = {
7623
+ }, H = {
7805
7624
  label: "Item Content",
7806
7625
  icon: ContentIcon,
7807
7626
  contentModel: {
@@ -7875,7 +7694,7 @@ const L = {
7875
7694
  div
7876
7695
  },
7877
7696
  props: t$1
7878
- }, b$3 = {
7697
+ }, b$2 = {
7879
7698
  icon: ListItemIcon,
7880
7699
  label: "Menu Item",
7881
7700
  indexWithinAncestor: n$4.NavigationMenu,
@@ -8036,7 +7855,7 @@ const e$3 = {
8036
7855
  description: "Current value of the element"
8037
7856
  }
8038
7857
  }, l = {}, s = {};
8039
- const b$2 = {
7858
+ const b$1 = {
8040
7859
  icon: SelectIcon,
8041
7860
  contentModel: {
8042
7861
  category: "instance",
@@ -8045,7 +7864,7 @@ const b$2 = {
8045
7864
  },
8046
7865
  initialProps: ["name", "value", "open", "required"],
8047
7866
  props: e$3
8048
- }, f = {
7867
+ }, f$1 = {
8049
7868
  icon: TriggerIcon,
8050
7869
  contentModel: {
8051
7870
  category: "none",
@@ -8125,7 +7944,7 @@ const e$2 = {
8125
7944
  description: "Whether the control is required for form submission"
8126
7945
  }
8127
7946
  }, o$2 = {};
8128
- const b$1 = {
7947
+ const m$1 = {
8129
7948
  icon: SwitchIcon,
8130
7949
  contentModel: {
8131
7950
  category: "instance",
@@ -8133,41 +7952,23 @@ const b$1 = {
8133
7952
  descendants: [n$4.SwitchThumb]
8134
7953
  },
8135
7954
  states: [
8136
- ...defaultStates,
8137
- {
8138
- label: "Checked",
8139
- selector: "[data-state=checked]",
8140
- category: "component-states"
8141
- },
8142
- {
8143
- label: "Unchecked",
8144
- selector: "[data-state=unchecked]",
8145
- category: "component-states"
8146
- }
7955
+ { label: "Checked", selector: "[data-state=checked]" },
7956
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8147
7957
  ],
8148
7958
  presetStyle: {
8149
- button: [button, b$5].flat()
7959
+ button: [button, b$4].flat()
8150
7960
  },
8151
7961
  initialProps: ["id", "class", "name", "value", "checked", "required"],
8152
7962
  props: e$2
8153
- }, k = {
7963
+ }, b = {
8154
7964
  icon: TriggerIcon,
8155
7965
  contentModel: {
8156
7966
  category: "none",
8157
7967
  children: ["instance"]
8158
7968
  },
8159
7969
  states: [
8160
- ...defaultStates,
8161
- {
8162
- label: "Checked",
8163
- selector: "[data-state=checked]",
8164
- category: "component-states"
8165
- },
8166
- {
8167
- label: "Unchecked",
8168
- selector: "[data-state=unchecked]",
8169
- category: "component-states"
8170
- }
7970
+ { label: "Checked", selector: "[data-state=checked]" },
7971
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8171
7972
  ],
8172
7973
  presetStyle: {
8173
7974
  span
@@ -8188,7 +7989,7 @@ const e$1 = {
8188
7989
  description: "Whether the control is required for form submission"
8189
7990
  }
8190
7991
  }, o$1 = {};
8191
- const b = {
7992
+ const m = {
8192
7993
  icon: CheckboxCheckedIcon,
8193
7994
  contentModel: {
8194
7995
  category: "instance",
@@ -8196,30 +7997,20 @@ const b = {
8196
7997
  descendants: [n$4.CheckboxIndicator]
8197
7998
  },
8198
7999
  states: [
8199
- ...defaultStates,
8200
- {
8201
- label: "Checked",
8202
- selector: "[data-state=checked]",
8203
- category: "component-states"
8204
- },
8205
- {
8206
- label: "Unchecked",
8207
- selector: "[data-state=unchecked]",
8208
- category: "component-states"
8209
- }
8000
+ { label: "Checked", selector: "[data-state=checked]" },
8001
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8210
8002
  ],
8211
8003
  presetStyle: {
8212
- button: [button, b$5].flat()
8004
+ button: [button, b$4].flat()
8213
8005
  },
8214
8006
  initialProps: ["id", "class", "name", "value", "required", "checked"],
8215
8007
  props: e$1
8216
- }, x = {
8008
+ }, k = {
8217
8009
  icon: TriggerIcon,
8218
8010
  contentModel: {
8219
8011
  category: "none",
8220
8012
  children: ["instance", "rich-text"]
8221
8013
  },
8222
- states: defaultStates,
8223
8014
  presetStyle: {
8224
8015
  span
8225
8016
  },
@@ -8290,7 +8081,7 @@ const e = {
8290
8081
  description: "Current value of the element"
8291
8082
  }
8292
8083
  }, r = {};
8293
- const y = {
8084
+ const G = {
8294
8085
  icon: RadioGroupIcon,
8295
8086
  contentModel: {
8296
8087
  category: "instance",
@@ -8298,43 +8089,32 @@ const y = {
8298
8089
  descendants: [n$4.RadioGroupItem]
8299
8090
  },
8300
8091
  states: [
8301
- ...defaultStates,
8302
- {
8303
- label: "Checked",
8304
- selector: "[data-state=checked]",
8305
- category: "component-states"
8306
- },
8307
- {
8308
- label: "Unchecked",
8309
- selector: "[data-state=unchecked]",
8310
- category: "component-states"
8311
- }
8092
+ { label: "Checked", selector: "[data-state=checked]" },
8093
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8312
8094
  ],
8313
8095
  presetStyle: {
8314
8096
  div
8315
8097
  },
8316
8098
  initialProps: ["id", "class", "name", "value", "required"],
8317
8099
  props: e
8318
- }, g = {
8100
+ }, h = {
8319
8101
  icon: ItemIcon,
8320
8102
  contentModel: {
8321
8103
  category: "none",
8322
8104
  children: ["instance"],
8323
8105
  descendants: [n$4.RadioGroupIndicator]
8324
8106
  },
8325
- states: defaultStates,
8326
8107
  presetStyle: {
8327
- button: [button, b$5].flat()
8108
+ button: [button, b$4].flat()
8328
8109
  },
8329
8110
  initialProps: ["value"],
8330
8111
  props: o
8331
- }, h = {
8112
+ }, f = {
8332
8113
  icon: TriggerIcon,
8333
8114
  contentModel: {
8334
8115
  category: "none",
8335
8116
  children: ["instance"]
8336
8117
  },
8337
- states: defaultStates,
8338
8118
  presetStyle: {
8339
8119
  span
8340
8120
  },
@@ -8342,55 +8122,55 @@ const y = {
8342
8122
  };
8343
8123
  const radixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8344
8124
  __proto__: null,
8345
- Accordion: x$1,
8346
- AccordionContent: M,
8347
- AccordionHeader: C$1,
8348
- AccordionItem: S$1,
8349
- AccordionTrigger: H,
8350
- Checkbox: b,
8351
- CheckboxIndicator: x,
8352
- Collapsible: g$2,
8125
+ Accordion: v$1,
8126
+ AccordionContent: H,
8127
+ AccordionHeader: f$2,
8128
+ AccordionItem: x,
8129
+ AccordionTrigger: C$1,
8130
+ Checkbox: m,
8131
+ CheckboxIndicator: k,
8132
+ Collapsible: g$1,
8353
8133
  CollapsibleContent: d$1,
8354
- CollapsibleTrigger: m$1,
8355
- Dialog: k$3,
8356
- DialogClose: j,
8357
- DialogContent: E,
8358
- DialogDescription: R,
8359
- DialogOverlay: B,
8360
- DialogTitle: H$1,
8361
- DialogTrigger: O,
8362
- Label: a$1,
8134
+ CollapsibleTrigger: m$4,
8135
+ Dialog: P$1,
8136
+ DialogClose: H$1,
8137
+ DialogContent: O,
8138
+ DialogDescription: E,
8139
+ DialogOverlay: b$3,
8140
+ DialogTitle: B,
8141
+ DialogTrigger: S$1,
8142
+ Label: m$2,
8363
8143
  NavigationMenu: L,
8364
8144
  NavigationMenuContent: w$1,
8365
- NavigationMenuItem: b$3,
8145
+ NavigationMenuItem: b$2,
8366
8146
  NavigationMenuLink: C,
8367
8147
  NavigationMenuList: h$1,
8368
8148
  NavigationMenuTrigger: k$2,
8369
8149
  NavigationMenuViewport: S,
8370
- Popover: b$4,
8371
- PopoverClose: I,
8372
- PopoverContent: h$2,
8373
- PopoverTrigger: y$1,
8374
- RadioGroup: y,
8375
- RadioGroupIndicator: h,
8376
- RadioGroupItem: g,
8377
- Select: b$2,
8150
+ Popover: h$2,
8151
+ PopoverClose: u,
8152
+ PopoverContent: y$1,
8153
+ PopoverTrigger: C$3,
8154
+ RadioGroup: G,
8155
+ RadioGroupIndicator: f,
8156
+ RadioGroupItem: h,
8157
+ Select: b$1,
8378
8158
  SelectContent: v,
8379
8159
  SelectItem: k$1,
8380
8160
  SelectItemIndicator: F,
8381
8161
  SelectItemText: q,
8382
- SelectTrigger: f,
8162
+ SelectTrigger: f$1,
8383
8163
  SelectValue: w,
8384
8164
  SelectViewport: P,
8385
- Switch: b$1,
8386
- SwitchThumb: k,
8387
- Tabs: x$2,
8388
- TabsContent: u,
8389
- TabsList: C$2,
8390
- TabsTrigger: S$2,
8391
- Tooltip: m,
8165
+ Switch: m$1,
8166
+ SwitchThumb: b,
8167
+ Tabs: y,
8168
+ TabsContent: C$2,
8169
+ TabsList: f$3,
8170
+ TabsTrigger: x$1,
8171
+ Tooltip: m$3,
8392
8172
  TooltipContent: T,
8393
- TooltipTrigger: g$1
8173
+ TooltipTrigger: g
8394
8174
  }, Symbol.toStringTag, { value: "Module" }));
8395
8175
  const createFramework$2 = async () => {
8396
8176
  const routeTemplatesDir = join("app", "route-templates");
@@ -8436,6 +8216,9 @@ const createFramework$2 = async () => {
8436
8216
  metas,
8437
8217
  components,
8438
8218
  tags: {
8219
+ textarea: `${base}:Textarea`,
8220
+ input: `${base}:Input`,
8221
+ select: `${base}:Select`,
8439
8222
  body: `${remix}:Body`,
8440
8223
  a: `${remix}:Link`,
8441
8224
  form: `${remix}:RemixForm`
@@ -8514,6 +8297,9 @@ const createFramework$1 = async () => {
8514
8297
  metas,
8515
8298
  components,
8516
8299
  tags: {
8300
+ textarea: `${base}:Textarea`,
8301
+ input: `${base}:Input`,
8302
+ select: `${base}:Select`,
8517
8303
  body: `${reactRouter}:Body`,
8518
8304
  a: `${reactRouter}:Link`,
8519
8305
  form: `${reactRouter}:RemixForm`
@@ -8589,7 +8375,11 @@ const createFramework = async () => {
8589
8375
  return {
8590
8376
  metas,
8591
8377
  components,
8592
- tags: {},
8378
+ tags: {
8379
+ textarea: `${base}:Textarea`,
8380
+ input: `${base}:Input`,
8381
+ select: `${base}:Select`
8382
+ },
8593
8383
  html: ({ pagePath }) => {
8594
8384
  if (isPathnamePattern(pagePath)) {
8595
8385
  return [];
@@ -9253,7 +9043,7 @@ const initFlow = async (options) => {
9253
9043
  if (shouldInstallDeps === true) {
9254
9044
  const install = spinner();
9255
9045
  install.start("Installing dependencies");
9256
- await x$3("npm", ["install"]);
9046
+ await x$2("npm", ["install"]);
9257
9047
  install.stop("Installed dependencies");
9258
9048
  }
9259
9049
  log.message();
@@ -9284,7 +9074,7 @@ const getDeploymentInstructions = (deployTarget) => {
9284
9074
  }
9285
9075
  };
9286
9076
  const name = "webstudio";
9287
- const version = "0.220.0";
9077
+ const version = "0.221.0";
9288
9078
  const description = "Webstudio CLI";
9289
9079
  const author = "Webstudio <github@webstudio.is>";
9290
9080
  const homepage = "https://webstudio.is";