webstudio 0.220.0 → 0.222.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) {
@@ -1790,13 +1793,23 @@ var DefaultPagePage = z.string().refine((path) => path !== "", "Can't be empty")
1790
1793
  (path) => path !== "/build" && path.startsWith("/build/") === false,
1791
1794
  "/build prefix is reserved for the system"
1792
1795
  );
1793
- var PagePath = DefaultPagePage.refine(
1796
+ var OldPagePath = z.string().refine((path) => path !== "", "Can't be empty").refine((path) => path !== "/", "Can't be just a /").refine(
1794
1797
  (path) => path === "" || path.startsWith("/"),
1795
1798
  "Must start with a / or a full URL e.g. https://website.org"
1799
+ ).refine((path) => path.endsWith("/") === false, "Can't end with a /").refine((path) => path.includes("//") === false, "Can't contain repeating /").refine(
1800
+ (path) => /^[-_a-zA-Z0-9*:?\\/.]*$/.test(path),
1801
+ // Allow uppercase letters (A-Z)
1802
+ "Only a-z, A-Z, 0-9, -, _, /, :, ?, . and * are allowed"
1803
+ ).refine(
1804
+ (path) => path !== "/s" && path.startsWith("/s/") === false,
1805
+ "/s prefix is reserved for the system"
1806
+ ).refine(
1807
+ (path) => path !== "/build" && path.startsWith("/build/") === false,
1808
+ "/build prefix is reserved for the system"
1796
1809
  );
1797
- DefaultPagePage.refine(
1810
+ var PagePath = DefaultPagePage.refine(
1798
1811
  (path) => path === "" || path.startsWith("/"),
1799
- "Must start with a / and it must be full path e.g. /project/id"
1812
+ "Must start with a / or a full URL e.g. https://website.org"
1800
1813
  );
1801
1814
  var Page = z.object({
1802
1815
  ...commonPageFields,
@@ -1823,7 +1836,7 @@ var ProjectNewRedirectPath = PagePath.or(
1823
1836
  }, "Must be a valid URL")
1824
1837
  );
1825
1838
  var PageRedirect = z.object({
1826
- old: PagePath,
1839
+ old: OldPagePath,
1827
1840
  new: ProjectNewRedirectPath,
1828
1841
  status: z.enum(["301", "302"]).optional()
1829
1842
  });
@@ -2482,22 +2495,14 @@ var componentCategories = [
2482
2495
  "localization",
2483
2496
  "radix",
2484
2497
  "xml",
2498
+ "other",
2485
2499
  "hidden",
2486
2500
  "internal"
2487
2501
  ];
2488
- var stateCategories = ["states", "component-states"];
2489
2502
  var ComponentState = z.object({
2490
- category: z.enum(stateCategories).optional(),
2491
2503
  selector: z.string(),
2492
2504
  label: z.string()
2493
2505
  });
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
2506
  var ComponentContent = z.string();
2502
2507
  var ContentModel = z.object({
2503
2508
  /*
@@ -2534,11 +2539,11 @@ z.object({
2534
2539
  });
2535
2540
  var normalize_css_exports = {};
2536
2541
  __export(normalize_css_exports, {
2537
- a: () => a$d,
2542
+ a: () => a$9,
2538
2543
  address: () => address$1,
2539
2544
  article: () => article$1,
2540
2545
  aside: () => aside$1,
2541
- b: () => b$7,
2546
+ b: () => b$6,
2542
2547
  body: () => body$1,
2543
2548
  button: () => button$1,
2544
2549
  checkbox: () => checkbox$1,
@@ -2556,7 +2561,7 @@ __export(normalize_css_exports, {
2556
2561
  header: () => header$1,
2557
2562
  hr: () => hr$1,
2558
2563
  html: () => html,
2559
- i: () => i$c,
2564
+ i: () => i$a,
2560
2565
  img: () => img$1,
2561
2566
  input: () => input$1,
2562
2567
  kbd: () => kbd,
@@ -2567,7 +2572,7 @@ __export(normalize_css_exports, {
2567
2572
  nav: () => nav$1,
2568
2573
  ol: () => ol$1,
2569
2574
  optgroup: () => optgroup,
2570
- p: () => p$7,
2575
+ p: () => p$8,
2571
2576
  pre: () => pre,
2572
2577
  progress: () => progress,
2573
2578
  radio: () => radio$1,
@@ -2623,13 +2628,13 @@ var h3$1 = div$1;
2623
2628
  var h4$1 = div$1;
2624
2629
  var h5$1 = div$1;
2625
2630
  var h6$1 = div$1;
2626
- var i$c = div$1;
2631
+ var i$a = div$1;
2627
2632
  var img$1 = div$1;
2628
- var a$d = div$1;
2633
+ var a$9 = div$1;
2629
2634
  var li$1 = div$1;
2630
2635
  var ul$1 = div$1;
2631
2636
  var ol$1 = div$1;
2632
- var p$7 = div$1;
2637
+ var p$8 = div$1;
2633
2638
  var span$1 = div$1;
2634
2639
  var html = [
2635
2640
  { property: "display", value: { type: "keyword", value: "grid" } },
@@ -2678,30 +2683,22 @@ var body$1 = [
2678
2683
  {
2679
2684
  property: "border-left-width",
2680
2685
  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
2686
  },
2691
2687
  {
2692
- property: "border-right-width",
2693
- value: { type: "unit", unit: "px", value: 1 }
2688
+ property: "-webkit-font-smoothing",
2689
+ value: { type: "keyword", value: "antialiased" }
2694
2690
  },
2695
2691
  {
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 }
2692
+ property: "-moz-osx-font-smoothing",
2693
+ value: { type: "keyword", value: "grayscale" }
2702
2694
  }
2703
2695
  ];
2704
- var b$7 = [
2696
+ var hr$1 = [
2697
+ { property: "height", value: { type: "unit", unit: "number", value: 0 } },
2698
+ { property: "color", value: { type: "keyword", value: "inherit" } },
2699
+ { property: "box-sizing", value: { type: "keyword", value: "border-box" } }
2700
+ ];
2701
+ var b$6 = [
2705
2702
  {
2706
2703
  property: "font-weight",
2707
2704
  value: { type: "unit", unit: "number", value: 700 }
@@ -2724,7 +2721,7 @@ var b$7 = [
2724
2721
  value: { type: "unit", unit: "px", value: 1 }
2725
2722
  }
2726
2723
  ];
2727
- var strong = b$7;
2724
+ var strong = b$6;
2728
2725
  var code$1 = [
2729
2726
  {
2730
2727
  property: "font-family",
@@ -4854,10 +4851,10 @@ const o$H = {
4854
4851
  category: "general",
4855
4852
  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
4853
  icon: SlotComponentIcon,
4857
- order: 5
4854
+ order: 4
4858
4855
  };
4859
- const t$e = {};
4860
- const e$u = {
4856
+ const t$i = {};
4857
+ const e$x = {
4861
4858
  className: {
4862
4859
  required: false,
4863
4860
  control: "text",
@@ -4872,12 +4869,12 @@ const e$u = {
4872
4869
  type: "boolean"
4873
4870
  }
4874
4871
  };
4875
- const a$c = {
4872
+ const a$8 = {
4876
4873
  category: "general",
4877
4874
  label: "HTML Embed",
4878
4875
  description: "Used to add HTML code to the page, such as an SVG or script.",
4879
4876
  icon: EmbedIcon,
4880
- order: 2,
4877
+ order: 3,
4881
4878
  contentModel: {
4882
4879
  category: "instance",
4883
4880
  children: [descendantComponent]
@@ -4896,13 +4893,13 @@ const a$c = {
4896
4893
  },
4897
4894
  initialProps: ["class", "clientOnly", "executeScriptOnCanvas"],
4898
4895
  props: {
4899
- ...e$u,
4896
+ ...e$x,
4900
4897
  clientOnly: {
4901
- ...e$u.clientOnly,
4898
+ ...e$x.clientOnly,
4902
4899
  description: "Activate it for any scripts that can mutate the DOM or introduce interactivity. This only affects the published site."
4903
4900
  },
4904
4901
  executeScriptOnCanvas: {
4905
- ...e$u.executeScriptOnCanvas,
4902
+ ...e$x.executeScriptOnCanvas,
4906
4903
  label: "Run scripts on canvas",
4907
4904
  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
4905
  },
@@ -4914,16 +4911,10 @@ const a$c = {
4914
4911
  }
4915
4912
  }
4916
4913
  };
4917
- const e$t = {
4918
- className: {
4919
- required: false,
4920
- control: "text",
4921
- type: "string",
4922
- description: "Classes to which the element belongs"
4923
- },
4914
+ const t$h = {
4924
4915
  code: { required: true, control: "text", type: "string" }
4925
4916
  };
4926
- const a$b = {
4917
+ const a$7 = {
4927
4918
  icon: MarkdownEmbedIcon,
4928
4919
  contentModel: {
4929
4920
  category: "instance",
@@ -4943,7 +4934,7 @@ const a$b = {
4943
4934
  },
4944
4935
  initialProps: ["class"],
4945
4936
  props: {
4946
- ...e$t,
4937
+ ...t$h,
4947
4938
  code: {
4948
4939
  required: true,
4949
4940
  control: "code",
@@ -4990,13 +4981,13 @@ var h3 = div;
4990
4981
  var h4 = div;
4991
4982
  var h5 = div;
4992
4983
  var h6 = div;
4993
- var i$b = div;
4984
+ var i$9 = div;
4994
4985
  var img = div;
4995
- var a$a = div;
4986
+ var a$6 = div;
4996
4987
  var li = div;
4997
4988
  var ul = div;
4998
4989
  var ol = div;
4999
- var p$6 = div;
4990
+ var p$7 = div;
5000
4991
  var span = div;
5001
4992
  var body = [
5002
4993
  { property: "margin-top", value: { type: "unit", unit: "number", value: 0 } },
@@ -5028,30 +5019,22 @@ var body = [
5028
5019
  {
5029
5020
  property: "border-left-width",
5030
5021
  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
5022
  },
5041
5023
  {
5042
- property: "border-right-width",
5043
- value: { type: "unit", unit: "px", value: 1 }
5024
+ property: "-webkit-font-smoothing",
5025
+ value: { type: "keyword", value: "antialiased" }
5044
5026
  },
5045
5027
  {
5046
- property: "border-bottom-width",
5047
- value: { type: "unit", unit: "px", value: 1 }
5048
- },
5049
- {
5050
- property: "border-left-width",
5051
- value: { type: "unit", unit: "px", value: 1 }
5028
+ property: "-moz-osx-font-smoothing",
5029
+ value: { type: "keyword", value: "grayscale" }
5052
5030
  }
5053
5031
  ];
5054
- var b$6 = [
5032
+ var hr = [
5033
+ { property: "height", value: { type: "unit", unit: "number", value: 0 } },
5034
+ { property: "color", value: { type: "keyword", value: "inherit" } },
5035
+ { property: "box-sizing", value: { type: "keyword", value: "border-box" } }
5036
+ ];
5037
+ var b$5 = [
5055
5038
  {
5056
5039
  property: "font-weight",
5057
5040
  value: { type: "unit", unit: "number", value: 700 }
@@ -5308,31 +5291,15 @@ var button = [
5308
5291
  ];
5309
5292
  var select = button;
5310
5293
  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,
5294
+ const i$8 = {
5295
+ presetStyle: { body },
5326
5296
  initialProps: ["id", "class"],
5327
5297
  props: o$G
5328
5298
  };
5329
- const t$d = {
5299
+ const t$g = {
5330
5300
  tag: { required: false, control: "text", type: "string" }
5331
5301
  };
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,
5302
+ const g$2 = {
5336
5303
  presetStyle: {
5337
5304
  div,
5338
5305
  address,
@@ -5345,10 +5312,9 @@ const u$1 = {
5345
5312
  nav,
5346
5313
  section
5347
5314
  },
5348
- order: 0,
5349
5315
  initialProps: ["tag", "id", "class"],
5350
5316
  props: {
5351
- ...t$d,
5317
+ ...t$g,
5352
5318
  tag: {
5353
5319
  required: true,
5354
5320
  control: "tag",
@@ -5369,12 +5335,11 @@ const u$1 = {
5369
5335
  }
5370
5336
  }
5371
5337
  };
5372
- const t$c = {
5338
+ const t$f = {
5373
5339
  tag: { required: false, control: "text", type: "string" }
5374
5340
  };
5375
- const n$9 = {
5341
+ const n$7 = {
5376
5342
  icon: TextIcon,
5377
- states: defaultStates,
5378
5343
  presetStyle: {
5379
5344
  div: [
5380
5345
  ...div,
@@ -5386,7 +5351,7 @@ const n$9 = {
5386
5351
  },
5387
5352
  initialProps: ["tag", "id", "class"],
5388
5353
  props: {
5389
- ...t$c,
5354
+ ...t$f,
5390
5355
  tag: {
5391
5356
  required: true,
5392
5357
  control: "tag",
@@ -5395,11 +5360,10 @@ const n$9 = {
5395
5360
  }
5396
5361
  }
5397
5362
  };
5398
- const t$b = {
5363
+ const t$e = {
5399
5364
  tag: { required: false, control: "text", type: "string" }
5400
5365
  };
5401
- const n$8 = {
5402
- states: defaultStates,
5366
+ const m$9 = {
5403
5367
  presetStyle: {
5404
5368
  h1,
5405
5369
  h2,
@@ -5410,7 +5374,7 @@ const n$8 = {
5410
5374
  },
5411
5375
  initialProps: ["tag", "id", "class"],
5412
5376
  props: {
5413
- ...t$b,
5377
+ ...t$e,
5414
5378
  tag: {
5415
5379
  required: true,
5416
5380
  control: "tag",
@@ -5420,13 +5384,12 @@ const n$8 = {
5420
5384
  }
5421
5385
  };
5422
5386
  const o$F = {};
5423
- const i$9 = {
5424
- states: defaultStates,
5425
- presetStyle: { p: p$6 },
5387
+ const i$7 = {
5388
+ presetStyle: { p: p$7 },
5426
5389
  initialProps: ["id", "class"],
5427
5390
  props: o$F
5428
5391
  };
5429
- const e$s = {
5392
+ const e$w = {
5430
5393
  download: {
5431
5394
  required: false,
5432
5395
  control: "boolean",
@@ -5450,31 +5413,20 @@ const e$s = {
5450
5413
  description: "Navigable for form submission"
5451
5414
  }
5452
5415
  };
5453
- const o$E = {
5416
+ const t$d = {
5454
5417
  a: [
5455
- ...a$a,
5418
+ ...a$6,
5456
5419
  {
5457
5420
  property: "display",
5458
5421
  value: { type: "keyword", value: "inline-block" }
5459
5422
  }
5460
5423
  ]
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
- ],
5424
+ }, p$6 = {
5425
+ presetStyle: t$d,
5426
+ states: [{ label: "Current page", selector: "[aria-current=page]" }],
5475
5427
  initialProps: ["id", "class", "href", "target", "prefetch", "download"],
5476
5428
  props: {
5477
- ...e$s,
5429
+ ...e$w,
5478
5430
  href: {
5479
5431
  type: "string",
5480
5432
  control: "url",
@@ -5482,71 +5434,51 @@ const o$E = {
5482
5434
  }
5483
5435
  }
5484
5436
  };
5485
- const a$9 = p$5;
5486
- const o$D = {};
5487
- const m$7 = {
5437
+ const a$5 = p$6;
5438
+ const o$E = {};
5439
+ const e$v = {
5488
5440
  label: "Text",
5489
5441
  icon: PaintBrushIcon,
5490
- states: defaultStates,
5491
5442
  presetStyle: { span },
5492
5443
  initialProps: ["id", "class"],
5493
- props: o$D
5444
+ props: o$E
5494
5445
  };
5495
- const o$C = {};
5496
- const a$8 = {
5446
+ const o$D = {};
5447
+ const p$5 = {
5497
5448
  label: "Bold Text",
5498
- states: defaultStates,
5499
- presetStyle: { b: b$6 },
5449
+ presetStyle: { b: b$5 },
5500
5450
  initialProps: ["id", "class"],
5501
- props: o$C
5451
+ props: o$D
5502
5452
  };
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 = {
5453
+ const o$C = {};
5454
+ const e$u = {
5513
5455
  label: "Italic Text",
5514
- states: defaultStates,
5515
- presetStyle: r$e,
5456
+ presetStyle: { i: i$9 },
5516
5457
  initialProps: ["id", "class"],
5517
- props: o$B
5458
+ props: o$C
5518
5459
  };
5519
- const o$A = {};
5520
- const i$8 = {
5460
+ const o$B = {};
5461
+ const o$A = {
5521
5462
  label: "Superscript Text",
5522
- states: defaultStates,
5523
5463
  presetStyle: { sup },
5524
5464
  initialProps: ["id", "class"],
5525
- props: o$A
5465
+ props: o$B
5526
5466
  };
5527
5467
  const o$z = {};
5528
- const i$7 = {
5468
+ const s$4 = {
5529
5469
  label: "Subscript Text",
5530
- states: defaultStates,
5531
5470
  presetStyle: { sub },
5532
5471
  initialProps: ["id", "class"],
5533
5472
  props: o$z
5534
5473
  };
5535
5474
  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
- ],
5475
+ const e$t = {
5476
+ presetStyle: { button },
5545
5477
  initialProps: ["id", "class", "type", "aria-label"],
5546
5478
  props: o$y
5547
5479
  };
5548
5480
  const o$x = {};
5549
- const r$d = {
5481
+ const p$4 = {
5550
5482
  input: [
5551
5483
  ...input,
5552
5484
  {
@@ -5554,25 +5486,9 @@ const r$d = {
5554
5486
  value: { type: "keyword", value: "block" }
5555
5487
  }
5556
5488
  ]
5557
- }, s$8 = {
5558
- category: "forms",
5489
+ }, l$4 = {
5559
5490
  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
- ],
5491
+ presetStyle: p$4,
5576
5492
  initialProps: [
5577
5493
  "id",
5578
5494
  "class",
@@ -5585,7 +5501,7 @@ const r$d = {
5585
5501
  ],
5586
5502
  props: o$x
5587
5503
  };
5588
- const e$r = {
5504
+ const e$s = {
5589
5505
  state: {
5590
5506
  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
5507
  required: false,
@@ -5595,7 +5511,7 @@ const e$r = {
5595
5511
  options: ["initial", "success", "error"]
5596
5512
  }
5597
5513
  };
5598
- const c$1 = {
5514
+ const c$3 = {
5599
5515
  label: "Webhook Form",
5600
5516
  icon: WebhookFormIcon,
5601
5517
  presetStyle: {
@@ -5607,7 +5523,7 @@ const c$1 = {
5607
5523
  ],
5608
5524
  initialProps: ["id", "class", "state", "action"],
5609
5525
  props: {
5610
- ...e$r,
5526
+ ...e$s,
5611
5527
  action: {
5612
5528
  type: "resource",
5613
5529
  control: "resource",
@@ -5617,22 +5533,18 @@ const c$1 = {
5617
5533
  }
5618
5534
  };
5619
5535
  const o$w = {};
5620
- const o$v = {
5536
+ const r$e = {
5621
5537
  form: [
5622
5538
  ...form,
5623
5539
  { property: "min-height", value: { type: "unit", unit: "px", value: 20 } }
5624
5540
  ]
5625
- }, m$6 = {
5626
- category: "forms",
5541
+ }, p$3 = {
5627
5542
  label: "Form",
5628
- description: "Create filters, surveys, searches and more.",
5629
- states: defaultStates,
5630
- presetStyle: o$v,
5631
- order: 0,
5543
+ presetStyle: r$e,
5632
5544
  initialProps: ["id", "class", "action"],
5633
5545
  props: o$w
5634
5546
  };
5635
- const e$q = {
5547
+ const e$r = {
5636
5548
  optimize: {
5637
5549
  description: "Optimize the image for enhanced performance.",
5638
5550
  required: false,
@@ -5642,7 +5554,7 @@ const e$q = {
5642
5554
  },
5643
5555
  quality: { required: false, control: "number", type: "number" }
5644
5556
  };
5645
- const r$c = {
5557
+ const o$v = {
5646
5558
  img: [
5647
5559
  ...img,
5648
5560
  // Otherwise on new image insert onto canvas it can overfit screen size multiple times
@@ -5664,11 +5576,10 @@ const r$c = {
5664
5576
  value: { type: "keyword", value: "auto" }
5665
5577
  }
5666
5578
  ]
5667
- }, s$7 = {
5579
+ }, i$6 = {
5668
5580
  category: "media",
5669
5581
  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,
5582
+ presetStyle: o$v,
5672
5583
  order: 0,
5673
5584
  initialProps: [
5674
5585
  "id",
@@ -5681,7 +5592,7 @@ const r$c = {
5681
5592
  "optimize"
5682
5593
  ],
5683
5594
  props: {
5684
- ...e$q,
5595
+ ...e$r,
5685
5596
  // Automatically generated props don't have the right control.
5686
5597
  src: {
5687
5598
  type: "string",
@@ -5692,7 +5603,7 @@ const r$c = {
5692
5603
  }
5693
5604
  };
5694
5605
  const o$u = {};
5695
- const p$3 = {
5606
+ const e$q = {
5696
5607
  blockquote: [
5697
5608
  {
5698
5609
  property: "margin-top",
@@ -5739,9 +5650,8 @@ const p$3 = {
5739
5650
  value: { type: "rgb", r: 226, g: 226, b: 226, alpha: 1 }
5740
5651
  }
5741
5652
  ]
5742
- }, a$6 = {
5743
- states: defaultStates,
5744
- presetStyle: p$3,
5653
+ }, r$d = {
5654
+ presetStyle: e$q,
5745
5655
  initialProps: ["id", "class", "cite"],
5746
5656
  props: o$u
5747
5657
  };
@@ -5754,7 +5664,7 @@ const e$p = {
5754
5664
  defaultValue: false
5755
5665
  }
5756
5666
  };
5757
- const o$t = {
5667
+ const t$c = {
5758
5668
  ol: [
5759
5669
  ...ol,
5760
5670
  {
@@ -5785,21 +5695,19 @@ const o$t = {
5785
5695
  value: { type: "keyword", value: "40px" }
5786
5696
  }
5787
5697
  ]
5788
- }, d$4 = {
5789
- states: defaultStates,
5790
- presetStyle: o$t,
5698
+ }, l$3 = {
5699
+ presetStyle: t$c,
5791
5700
  initialProps: ["id", "class", "ordered", "start", "reversed"],
5792
5701
  props: e$p
5793
5702
  };
5794
- const o$s = {};
5703
+ const o$t = {};
5795
5704
  const p$2 = {
5796
- states: defaultStates,
5797
5705
  presetStyle: { li },
5798
5706
  initialProps: ["id", "class"],
5799
- props: o$s
5707
+ props: o$t
5800
5708
  };
5801
- const o$r = {};
5802
- const t$a = {
5709
+ const o$s = {};
5710
+ const o$r = {
5803
5711
  hr: [
5804
5712
  ...hr,
5805
5713
  {
@@ -5828,18 +5736,14 @@ const t$a = {
5828
5736
  }
5829
5737
  ]
5830
5738
  }, 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,
5739
+ presetStyle: o$r,
5836
5740
  initialProps: ["id", "class"],
5837
- props: o$r
5741
+ props: o$s
5838
5742
  };
5839
5743
  const e$o = {
5840
5744
  code: { required: false, control: "text", type: "string" }
5841
5745
  };
5842
- const p$1 = {
5746
+ const o$q = {
5843
5747
  code: [
5844
5748
  ...code,
5845
5749
  {
@@ -5867,17 +5771,13 @@ const p$1 = {
5867
5771
  value: { type: "rgb", r: 238, g: 238, b: 238, alpha: 1 }
5868
5772
  }
5869
5773
  ]
5870
- }, c = {
5871
- category: "general",
5872
- description: "Use this component when you want to display code as text on the page.",
5774
+ }, c$2 = {
5873
5775
  icon: BracesIcon,
5874
5776
  contentModel: {
5875
5777
  category: "instance",
5876
5778
  children: []
5877
5779
  },
5878
- states: defaultStates,
5879
- presetStyle: p$1,
5880
- order: 5,
5780
+ presetStyle: o$q,
5881
5781
  initialProps: ["id", "class", "lang", "code"],
5882
5782
  props: {
5883
5783
  ...e$o,
@@ -5888,21 +5788,20 @@ const p$1 = {
5888
5788
  }
5889
5789
  }
5890
5790
  };
5891
- const o$q = {};
5892
- const o$p = {
5791
+ const o$p = {};
5792
+ const o$o = {
5893
5793
  label: [
5894
5794
  ...label,
5895
5795
  { property: "display", value: { type: "keyword", value: "block" } }
5896
5796
  ]
5897
- }, s$6 = {
5797
+ }, t$b = {
5898
5798
  label: "Input Label",
5899
- states: defaultStates,
5900
- presetStyle: o$p,
5799
+ presetStyle: o$o,
5901
5800
  initialProps: ["id", "class", "for"],
5902
- props: o$q
5801
+ props: o$p
5903
5802
  };
5904
- const o$o = {};
5905
- const t$9 = {
5803
+ const o$n = {};
5804
+ const t$a = {
5906
5805
  textarea: [
5907
5806
  ...textarea,
5908
5807
  // resize doesn't work well while on canvas
@@ -5912,29 +5811,13 @@ const t$9 = {
5912
5811
  value: { type: "keyword", value: "block" }
5913
5812
  }
5914
5813
  ]
5915
- }, s$5 = {
5916
- category: "forms",
5814
+ }, l$2 = {
5917
5815
  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,
5816
+ presetStyle: t$a,
5921
5817
  contentModel: {
5922
5818
  category: "instance",
5923
5819
  children: []
5924
5820
  },
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
5821
  initialProps: [
5939
5822
  "id",
5940
5823
  "class",
@@ -5944,17 +5827,17 @@ const t$9 = {
5944
5827
  "required",
5945
5828
  "autofocus"
5946
5829
  ],
5947
- props: o$o
5830
+ props: o$n
5948
5831
  };
5949
5832
  const e$n = {
5950
5833
  value: {
5951
5834
  required: false,
5952
5835
  control: "text",
5953
5836
  type: "string",
5954
- description: "Current value of the element"
5837
+ description: "Value of the form control"
5955
5838
  }
5956
5839
  };
5957
- const i$5 = {
5840
+ const r$c = {
5958
5841
  input: [
5959
5842
  ...radio,
5960
5843
  {
@@ -5962,21 +5845,10 @@ const i$5 = {
5962
5845
  value: { type: "unit", unit: "em", value: 0.5 }
5963
5846
  }
5964
5847
  ]
5965
- }, s$4 = {
5848
+ }, m$8 = {
5966
5849
  label: "Radio",
5967
5850
  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
- ],
5851
+ presetStyle: r$c,
5980
5852
  initialProps: ["id", "class", "name", "value", "required", "checked"],
5981
5853
  props: e$n
5982
5854
  };
@@ -5985,10 +5857,10 @@ const e$m = {
5985
5857
  required: false,
5986
5858
  control: "text",
5987
5859
  type: "string",
5988
- description: "Current value of the element"
5860
+ description: "Value of the form control"
5989
5861
  }
5990
5862
  };
5991
- const o$n = {
5863
+ const t$9 = {
5992
5864
  input: [
5993
5865
  ...checkbox,
5994
5866
  {
@@ -5996,19 +5868,9 @@ const o$n = {
5996
5868
  value: { type: "unit", unit: "em", value: 0.5 }
5997
5869
  }
5998
5870
  ]
5999
- }, d$3 = {
5871
+ }, m$7 = {
6000
5872
  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
- ],
5873
+ presetStyle: t$9,
6012
5874
  initialProps: ["id", "class", "name", "value", "required", "checked"],
6013
5875
  props: e$m
6014
5876
  };
@@ -6179,7 +6041,7 @@ To enable automatically generated closed captions instead, provide the value en-
6179
6041
  type: "string"
6180
6042
  }
6181
6043
  };
6182
- const r$b = [
6044
+ const i$5 = [
6183
6045
  "id",
6184
6046
  "className",
6185
6047
  "url",
@@ -6197,16 +6059,15 @@ const r$b = [
6197
6059
  "showControls",
6198
6060
  "controlsColor",
6199
6061
  "playsinline"
6200
- ], m$5 = {
6062
+ ], s$3 = {
6201
6063
  icon: VimeoIcon,
6202
- states: defaultStates,
6203
6064
  contentModel: {
6204
6065
  category: "instance",
6205
6066
  children: ["instance"],
6206
6067
  descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6207
6068
  },
6208
6069
  presetStyle: { div },
6209
- initialProps: r$b,
6070
+ initialProps: i$5,
6210
6071
  props: e$l
6211
6072
  };
6212
6073
  const e$k = {
@@ -6374,7 +6235,7 @@ https://support.google.com/youtube/answer/171780?hl=en#zippy=%2Cturn-on-privacy-
6374
6235
  type: "string"
6375
6236
  }
6376
6237
  };
6377
- const n$7 = [
6238
+ const n$6 = [
6378
6239
  "id",
6379
6240
  "className",
6380
6241
  "url",
@@ -6402,16 +6263,15 @@ const n$7 = [
6402
6263
  "language",
6403
6264
  "color",
6404
6265
  "playlist"
6405
- ], d$2 = {
6266
+ ], s$2 = {
6406
6267
  icon: YoutubeIcon,
6407
- states: defaultStates,
6408
6268
  contentModel: {
6409
6269
  category: "instance",
6410
6270
  children: ["instance"],
6411
6271
  descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6412
6272
  },
6413
6273
  presetStyle: { div },
6414
- initialProps: n$7,
6274
+ initialProps: n$6,
6415
6275
  props: e$k
6416
6276
  };
6417
6277
  const e$j = {
@@ -6424,14 +6284,14 @@ const e$j = {
6424
6284
  quality: { required: false, control: "number", type: "number" }
6425
6285
  };
6426
6286
  const i$4 = {
6427
- ...s$7,
6287
+ ...i$6,
6428
6288
  category: "hidden",
6429
6289
  label: "Preview Image",
6430
6290
  contentModel: {
6431
6291
  category: "none",
6432
6292
  children: []
6433
6293
  },
6434
- initialProps: s$7.initialProps,
6294
+ initialProps: i$6.initialProps,
6435
6295
  props: {
6436
6296
  ...e$j,
6437
6297
  // Automatically generated props don't have the right control.
@@ -6444,11 +6304,10 @@ const i$4 = {
6444
6304
  }
6445
6305
  };
6446
6306
  const o$m = {};
6447
- const m$4 = {
6307
+ const c$1 = {
6448
6308
  category: "hidden",
6449
6309
  label: "Play Button",
6450
6310
  icon: ButtonElementIcon,
6451
- states: defaultStates,
6452
6311
  contentModel: {
6453
6312
  category: "none",
6454
6313
  children: ["instance"]
@@ -6458,9 +6317,8 @@ const m$4 = {
6458
6317
  props: o$m
6459
6318
  };
6460
6319
  const o$l = {};
6461
- const s$3 = {
6320
+ const c = {
6462
6321
  icon: BoxIcon,
6463
- states: defaultStates,
6464
6322
  category: "hidden",
6465
6323
  label: "Spinner",
6466
6324
  contentModel: {
@@ -6494,7 +6352,7 @@ const e$i = {
6494
6352
  xmlns: { required: false, control: "text", type: "string" },
6495
6353
  "xmlns:xhtml": { required: false, control: "text", type: "string" }
6496
6354
  };
6497
- const m$3 = {
6355
+ const m$6 = {
6498
6356
  category: "xml",
6499
6357
  order: 6,
6500
6358
  icon: XmlIcon,
@@ -6518,7 +6376,7 @@ const e$h = {
6518
6376
  description: "Machine-readable value"
6519
6377
  }
6520
6378
  };
6521
- const a$5 = {
6379
+ const a$4 = {
6522
6380
  category: "xml",
6523
6381
  description: "Converts machine-readable date and time to ISO format.",
6524
6382
  icon: CalendarIcon,
@@ -6828,14 +6686,13 @@ const e$g = {
6828
6686
  options: ["full", "long", "medium", "short", "none"]
6829
6687
  }
6830
6688
  };
6831
- const n$6 = {
6689
+ const r$b = {
6832
6690
  category: "localization",
6833
6691
  description: "Converts machine-readable date and time to a human-readable format.",
6834
6692
  contentModel: {
6835
6693
  category: "instance",
6836
6694
  children: []
6837
6695
  },
6838
- states: defaultStates,
6839
6696
  presetStyle: {
6840
6697
  time
6841
6698
  },
@@ -6851,16 +6708,8 @@ const o$j = {
6851
6708
  value: { type: "keyword", value: "block" }
6852
6709
  }
6853
6710
  ]
6854
- }, s$2 = {
6711
+ }, p$1 = {
6855
6712
  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
6713
  initialProps: [
6865
6714
  "id",
6866
6715
  "class",
@@ -6887,7 +6736,7 @@ const l$1 = {
6887
6736
  }
6888
6737
  }
6889
6738
  ]
6890
- }, a$4 = {
6739
+ }, a$3 = {
6891
6740
  category: "hidden",
6892
6741
  description: "An item within a drop-down menu that users can select as their chosen value.",
6893
6742
  presetStyle: l$1,
@@ -6901,7 +6750,7 @@ const l$1 = {
6901
6750
  { selector: ":hover", label: "Hover" },
6902
6751
  { selector: ":disabled", label: "Disabled" }
6903
6752
  ],
6904
- initialProps: ["label", "selected", "value", "label", "disabled"],
6753
+ initialProps: ["label", "value", "label", "disabled"],
6905
6754
  props: o$i
6906
6755
  };
6907
6756
  const o$h = {};
@@ -6985,51 +6834,51 @@ const i$3 = {
6985
6834
  };
6986
6835
  const baseComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6987
6836
  __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,
6837
+ Blockquote: r$d,
6838
+ Body: i$8,
6839
+ Bold: p$5,
6840
+ Box: g$2,
6841
+ Button: e$t,
6842
+ Checkbox: m$7,
6843
+ CodeText: c$2,
6844
+ Form: c$3,
6845
+ Fragment: t$i,
6997
6846
  HeadLink: t$8,
6998
6847
  HeadMeta: e$f,
6999
6848
  HeadSlot: r$a,
7000
6849
  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,
6850
+ Heading: m$9,
6851
+ HtmlEmbed: a$8,
6852
+ Image: i$6,
6853
+ Input: l$4,
6854
+ Italic: e$u,
6855
+ Label: t$b,
6856
+ Link: p$6,
6857
+ List: l$3,
7009
6858
  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,
6859
+ MarkdownEmbed: a$7,
6860
+ Option: a$3,
6861
+ Paragraph: i$7,
6862
+ RadioButton: m$8,
6863
+ RemixForm: p$3,
6864
+ RichTextLink: a$5,
6865
+ Select: p$1,
7017
6866
  Separator: y$2,
7018
6867
  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,
6868
+ Span: e$v,
6869
+ Subscript: s$4,
6870
+ Superscript: o$A,
6871
+ Text: n$7,
6872
+ Textarea: l$2,
6873
+ Time: r$b,
7025
6874
  Video: i$3,
7026
- Vimeo: m$5,
7027
- VimeoPlayButton: m$4,
6875
+ Vimeo: s$3,
6876
+ VimeoPlayButton: c$1,
7028
6877
  VimeoPreviewImage: i$4,
7029
- VimeoSpinner: s$3,
7030
- XmlNode: m$3,
7031
- XmlTime: a$5,
7032
- YouTube: d$2
6878
+ VimeoSpinner: c,
6879
+ XmlNode: m$6,
6880
+ XmlTime: a$4,
6881
+ YouTube: s$2
7033
6882
  }, Symbol.toStringTag, { value: "Module" }));
7034
6883
  const n$5 = (t2) => new Proxy(
7035
6884
  {},
@@ -7041,7 +6890,7 @@ const n$5 = (t2) => new Proxy(
7041
6890
  ), r$8 = n$5(
7042
6891
  "@webstudio-is/sdk-components-animation:"
7043
6892
  );
7044
- const a$3 = {
6893
+ const a$2 = {
7045
6894
  category: "animations",
7046
6895
  description: "Animation Group component is designed to animate its children.",
7047
6896
  icon: AnimationGroupIcon,
@@ -7111,7 +6960,7 @@ const e$e = {
7111
6960
  options: ["char", "space", 'symbol "#"', 'symbol "~"']
7112
6961
  }
7113
6962
  };
7114
- const a$2 = {
6963
+ const a$1 = {
7115
6964
  category: "animations",
7116
6965
  description: "Text animation allows you to split text by char or by word to animate it.",
7117
6966
  icon: TextAnimationIcon,
@@ -7179,7 +7028,7 @@ const r$7 = {
7179
7028
  const e$c = {
7180
7029
  timeline: { required: false, control: "boolean", type: "boolean" }
7181
7030
  };
7182
- const m$2 = {
7031
+ const m$5 = {
7183
7032
  icon: PlayIcon,
7184
7033
  label: "Video Animation",
7185
7034
  contentModel: {
@@ -7192,10 +7041,10 @@ const m$2 = {
7192
7041
  };
7193
7042
  const animationComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7194
7043
  __proto__: null,
7195
- AnimateChildren: a$3,
7196
- AnimateText: a$2,
7044
+ AnimateChildren: a$2,
7045
+ AnimateText: a$1,
7197
7046
  StaggerAnimation: r$7,
7198
- VideoAnimation: m$2
7047
+ VideoAnimation: m$5
7199
7048
  }, Symbol.toStringTag, { value: "Module" }));
7200
7049
  const r$6 = (t2) => new Proxy(
7201
7050
  {},
@@ -7221,7 +7070,7 @@ const o$c = {
7221
7070
  description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
7222
7071
  }
7223
7072
  }, e$b = {}, t$7 = {};
7224
- const g$2 = {
7073
+ const g$1 = {
7225
7074
  icon: CollapsibleIcon,
7226
7075
  contentModel: {
7227
7076
  category: "instance",
@@ -7233,7 +7082,7 @@ const g$2 = {
7233
7082
  },
7234
7083
  initialProps: ["open"],
7235
7084
  props: o$c
7236
- }, m$1 = {
7085
+ }, m$4 = {
7237
7086
  icon: TriggerIcon,
7238
7087
  contentModel: {
7239
7088
  category: "none",
@@ -7275,7 +7124,7 @@ const o$a = (r2, t2, p2) => ({
7275
7124
  }), d = (r2, t2, p2, l2) => ({
7276
7125
  property: r2,
7277
7126
  value: { type: "rgb", alpha: 1, r: t2, g: p2, b: l2 }
7278
- }), b$5 = [
7127
+ }), b$4 = [
7279
7128
  {
7280
7129
  property: "background-color",
7281
7130
  value: { type: "keyword", value: "transparent" }
@@ -7301,14 +7150,14 @@ const o$a = (r2, t2, p2) => ({
7301
7150
  o$a("padding-bottom", 0, "px"),
7302
7151
  o$a("padding-left", 0, "px")
7303
7152
  ];
7304
- const O = {
7153
+ const S$1 = {
7305
7154
  icon: TriggerIcon,
7306
7155
  contentModel: {
7307
7156
  category: "none",
7308
7157
  children: ["instance"]
7309
7158
  },
7310
7159
  props: t$6
7311
- }, B = {
7160
+ }, b$3 = {
7312
7161
  icon: OverlayIcon,
7313
7162
  contentModel: {
7314
7163
  category: "none",
@@ -7317,7 +7166,7 @@ const O = {
7317
7166
  },
7318
7167
  presetStyle: { div },
7319
7168
  props: e$a
7320
- }, E = {
7169
+ }, O = {
7321
7170
  icon: ContentIcon,
7322
7171
  contentModel: {
7323
7172
  category: "none",
@@ -7330,7 +7179,7 @@ const O = {
7330
7179
  },
7331
7180
  presetStyle: { div },
7332
7181
  props: n$3
7333
- }, H$1 = {
7182
+ }, B = {
7334
7183
  icon: HeadingIcon,
7335
7184
  contentModel: {
7336
7185
  category: "none",
@@ -7338,33 +7187,33 @@ const O = {
7338
7187
  },
7339
7188
  presetStyle: { h2 },
7340
7189
  props: i$2
7341
- }, R = {
7190
+ }, E = {
7342
7191
  icon: TextIcon,
7343
7192
  contentModel: {
7344
7193
  category: "none",
7345
7194
  children: ["instance", "rich-text"]
7346
7195
  },
7347
- presetStyle: { p: p$6 },
7196
+ presetStyle: { p: p$7 },
7348
7197
  props: p
7349
- }, j = {
7198
+ }, H$1 = {
7350
7199
  icon: ButtonElementIcon,
7351
7200
  label: "Close Button",
7352
7201
  contentModel: {
7353
7202
  category: "none",
7354
7203
  children: ["instance", "rich-text"]
7355
7204
  },
7356
- states: defaultStates,
7357
7205
  presetStyle: {
7358
- button: [b$5, button].flat()
7206
+ button: [b$4, button].flat()
7359
7207
  },
7360
7208
  props: s$1
7361
- }, k$3 = {
7209
+ }, P$1 = {
7362
7210
  icon: DialogIcon,
7363
7211
  contentModel: {
7364
7212
  category: "instance",
7365
7213
  children: ["instance"],
7366
7214
  descendants: [n$4.DialogTrigger, n$4.DialogOverlay]
7367
7215
  },
7216
+ initialProps: ["open"],
7368
7217
  props: o$b
7369
7218
  };
7370
7219
  const e$8 = {
@@ -7423,14 +7272,14 @@ const e$8 = {
7423
7272
  options: ["always", "optimized"]
7424
7273
  }
7425
7274
  }, r$5 = {};
7426
- const y$1 = {
7275
+ const C$3 = {
7427
7276
  icon: TriggerIcon,
7428
7277
  contentModel: {
7429
7278
  category: "none",
7430
7279
  children: ["instance"]
7431
7280
  },
7432
7281
  props: o$9
7433
- }, h$2 = {
7282
+ }, y$1 = {
7434
7283
  icon: ContentIcon,
7435
7284
  contentModel: {
7436
7285
  category: "none",
@@ -7442,7 +7291,7 @@ const y$1 = {
7442
7291
  },
7443
7292
  initialProps: ["side", "sideOffset", "align", "alignOffset"],
7444
7293
  props: t$5
7445
- }, b$4 = {
7294
+ }, h$2 = {
7446
7295
  icon: PopoverIcon,
7447
7296
  contentModel: {
7448
7297
  category: "instance",
@@ -7451,16 +7300,15 @@ const y$1 = {
7451
7300
  },
7452
7301
  initialProps: ["open"],
7453
7302
  props: e$8
7454
- }, I = {
7303
+ }, u = {
7455
7304
  icon: ButtonElementIcon,
7456
7305
  label: "Close Button",
7457
7306
  contentModel: {
7458
7307
  category: "none",
7459
7308
  children: ["instance", "rich-text"]
7460
7309
  },
7461
- states: defaultStates,
7462
7310
  presetStyle: {
7463
- button: [b$5, button].flat()
7311
+ button: [b$4, button].flat()
7464
7312
  },
7465
7313
  props: r$5
7466
7314
  };
@@ -7537,7 +7385,7 @@ const e$7 = {
7537
7385
  options: ["always", "optimized"]
7538
7386
  }
7539
7387
  };
7540
- const g$1 = {
7388
+ const g = {
7541
7389
  icon: TriggerIcon,
7542
7390
  contentModel: {
7543
7391
  category: "none",
@@ -7553,7 +7401,7 @@ const g$1 = {
7553
7401
  presetStyle: { div },
7554
7402
  initialProps: ["side", "sideOffset", "align", "alignOffset"],
7555
7403
  props: t$4
7556
- }, m = {
7404
+ }, m$3 = {
7557
7405
  icon: TooltipIcon,
7558
7406
  contentModel: {
7559
7407
  category: "instance",
@@ -7595,10 +7443,10 @@ Mainly so arrow navigation is done accordingly (left & right vs. up & down)
7595
7443
  options: ["horizontal", "vertical"]
7596
7444
  },
7597
7445
  value: {
7446
+ description: "The value for the selected tab, if controlled",
7598
7447
  required: false,
7599
7448
  control: "text",
7600
- type: "string",
7601
- description: "Current value of the element"
7449
+ type: "string"
7602
7450
  }
7603
7451
  }, t$3 = {
7604
7452
  loop: {
@@ -7622,7 +7470,7 @@ Mainly so arrow navigation is done accordingly (left & right vs. up & down)
7622
7470
  description: "Current value of the element"
7623
7471
  }
7624
7472
  };
7625
- const x$2 = {
7473
+ const y = {
7626
7474
  icon: TabsIcon,
7627
7475
  contentModel: {
7628
7476
  category: "instance",
@@ -7631,7 +7479,7 @@ const x$2 = {
7631
7479
  },
7632
7480
  presetStyle: { div },
7633
7481
  props: e$6
7634
- }, C$2 = {
7482
+ }, f$3 = {
7635
7483
  icon: HeaderIcon,
7636
7484
  contentModel: {
7637
7485
  category: "none",
@@ -7640,7 +7488,7 @@ const x$2 = {
7640
7488
  },
7641
7489
  presetStyle: { div },
7642
7490
  props: t$3
7643
- }, S$2 = {
7491
+ }, x$1 = {
7644
7492
  icon: TriggerIcon,
7645
7493
  label: "Tab Trigger",
7646
7494
  indexWithinAncestor: n$4.Tabs,
@@ -7648,19 +7496,12 @@ const x$2 = {
7648
7496
  category: "none",
7649
7497
  children: ["instance", "rich-text"]
7650
7498
  },
7651
- states: [
7652
- ...defaultStates,
7653
- {
7654
- category: "component-states",
7655
- label: "Active",
7656
- selector: "[data-state=active]"
7657
- }
7658
- ],
7499
+ states: [{ label: "Active", selector: "[data-state=active]" }],
7659
7500
  presetStyle: {
7660
- button: [button, b$5].flat()
7501
+ button: [button, b$4].flat()
7661
7502
  },
7662
7503
  props: o$7
7663
- }, u = {
7504
+ }, C$2 = {
7664
7505
  label: "Tab Content",
7665
7506
  icon: ContentIcon,
7666
7507
  indexWithinAncestor: n$4.Tabs,
@@ -7672,12 +7513,9 @@ const x$2 = {
7672
7513
  props: r$4
7673
7514
  };
7674
7515
  const o$6 = {};
7675
- const a$1 = {
7516
+ const m$2 = {
7676
7517
  icon: LabelIcon,
7677
- states: defaultStates,
7678
- presetStyle: {
7679
- label
7680
- },
7518
+ presetStyle: { label },
7681
7519
  initialProps: ["id", "class", "for"],
7682
7520
  props: o$6
7683
7521
  };
@@ -7738,7 +7576,7 @@ const e$5 = {
7738
7576
  description: "Current value of the element"
7739
7577
  }
7740
7578
  }, t$2 = {}, r$3 = {}, n$2 = {};
7741
- const x$1 = {
7579
+ const v$1 = {
7742
7580
  icon: AccordionIcon,
7743
7581
  contentModel: {
7744
7582
  category: "instance",
@@ -7748,7 +7586,7 @@ const x$1 = {
7748
7586
  presetStyle: { div },
7749
7587
  initialProps: ["value", "collapsible"],
7750
7588
  props: e$5
7751
- }, S$1 = {
7589
+ }, x = {
7752
7590
  label: "Item",
7753
7591
  icon: ItemIcon,
7754
7592
  indexWithinAncestor: n$4.Accordion,
@@ -7760,7 +7598,7 @@ const x$1 = {
7760
7598
  presetStyle: { div },
7761
7599
  initialProps: ["value"],
7762
7600
  props: o$5
7763
- }, C$1 = {
7601
+ }, f$2 = {
7764
7602
  label: "Item Header",
7765
7603
  icon: HeaderIcon,
7766
7604
  contentModel: {
@@ -7782,26 +7620,19 @@ const x$1 = {
7782
7620
  ]
7783
7621
  },
7784
7622
  props: t$2
7785
- }, H = {
7623
+ }, C$1 = {
7786
7624
  label: "Item Trigger",
7787
7625
  icon: TriggerIcon,
7788
7626
  contentModel: {
7789
7627
  category: "none",
7790
7628
  children: ["instance", "rich-text"]
7791
7629
  },
7792
- states: [
7793
- ...defaultStates,
7794
- {
7795
- category: "component-states",
7796
- label: "Open",
7797
- selector: "[data-state=open]"
7798
- }
7799
- ],
7630
+ states: [{ label: "Open", selector: "[data-state=open]" }],
7800
7631
  presetStyle: {
7801
- button: [button, b$5].flat()
7632
+ button: [button, b$4].flat()
7802
7633
  },
7803
7634
  props: r$3
7804
- }, M = {
7635
+ }, H = {
7805
7636
  label: "Item Content",
7806
7637
  icon: ContentIcon,
7807
7638
  contentModel: {
@@ -7875,7 +7706,7 @@ const L = {
7875
7706
  div
7876
7707
  },
7877
7708
  props: t$1
7878
- }, b$3 = {
7709
+ }, b$2 = {
7879
7710
  icon: ListItemIcon,
7880
7711
  label: "Menu Item",
7881
7712
  indexWithinAncestor: n$4.NavigationMenu,
@@ -8036,7 +7867,7 @@ const e$3 = {
8036
7867
  description: "Current value of the element"
8037
7868
  }
8038
7869
  }, l = {}, s = {};
8039
- const b$2 = {
7870
+ const b$1 = {
8040
7871
  icon: SelectIcon,
8041
7872
  contentModel: {
8042
7873
  category: "instance",
@@ -8045,7 +7876,7 @@ const b$2 = {
8045
7876
  },
8046
7877
  initialProps: ["name", "value", "open", "required"],
8047
7878
  props: e$3
8048
- }, f = {
7879
+ }, f$1 = {
8049
7880
  icon: TriggerIcon,
8050
7881
  contentModel: {
8051
7882
  category: "none",
@@ -8125,7 +7956,7 @@ const e$2 = {
8125
7956
  description: "Whether the control is required for form submission"
8126
7957
  }
8127
7958
  }, o$2 = {};
8128
- const b$1 = {
7959
+ const m$1 = {
8129
7960
  icon: SwitchIcon,
8130
7961
  contentModel: {
8131
7962
  category: "instance",
@@ -8133,41 +7964,23 @@ const b$1 = {
8133
7964
  descendants: [n$4.SwitchThumb]
8134
7965
  },
8135
7966
  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
- }
7967
+ { label: "Checked", selector: "[data-state=checked]" },
7968
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8147
7969
  ],
8148
7970
  presetStyle: {
8149
- button: [button, b$5].flat()
7971
+ button: [button, b$4].flat()
8150
7972
  },
8151
7973
  initialProps: ["id", "class", "name", "value", "checked", "required"],
8152
7974
  props: e$2
8153
- }, k = {
7975
+ }, b = {
8154
7976
  icon: TriggerIcon,
8155
7977
  contentModel: {
8156
7978
  category: "none",
8157
7979
  children: ["instance"]
8158
7980
  },
8159
7981
  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
- }
7982
+ { label: "Checked", selector: "[data-state=checked]" },
7983
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8171
7984
  ],
8172
7985
  presetStyle: {
8173
7986
  span
@@ -8188,7 +8001,7 @@ const e$1 = {
8188
8001
  description: "Whether the control is required for form submission"
8189
8002
  }
8190
8003
  }, o$1 = {};
8191
- const b = {
8004
+ const m = {
8192
8005
  icon: CheckboxCheckedIcon,
8193
8006
  contentModel: {
8194
8007
  category: "instance",
@@ -8196,30 +8009,20 @@ const b = {
8196
8009
  descendants: [n$4.CheckboxIndicator]
8197
8010
  },
8198
8011
  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
- }
8012
+ { label: "Checked", selector: "[data-state=checked]" },
8013
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8210
8014
  ],
8211
8015
  presetStyle: {
8212
- button: [button, b$5].flat()
8016
+ button: [button, b$4].flat()
8213
8017
  },
8214
8018
  initialProps: ["id", "class", "name", "value", "required", "checked"],
8215
8019
  props: e$1
8216
- }, x = {
8020
+ }, k = {
8217
8021
  icon: TriggerIcon,
8218
8022
  contentModel: {
8219
8023
  category: "none",
8220
8024
  children: ["instance", "rich-text"]
8221
8025
  },
8222
- states: defaultStates,
8223
8026
  presetStyle: {
8224
8027
  span
8225
8028
  },
@@ -8290,7 +8093,7 @@ const e = {
8290
8093
  description: "Current value of the element"
8291
8094
  }
8292
8095
  }, r = {};
8293
- const y = {
8096
+ const G = {
8294
8097
  icon: RadioGroupIcon,
8295
8098
  contentModel: {
8296
8099
  category: "instance",
@@ -8298,43 +8101,32 @@ const y = {
8298
8101
  descendants: [n$4.RadioGroupItem]
8299
8102
  },
8300
8103
  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
- }
8104
+ { label: "Checked", selector: "[data-state=checked]" },
8105
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
8312
8106
  ],
8313
8107
  presetStyle: {
8314
8108
  div
8315
8109
  },
8316
8110
  initialProps: ["id", "class", "name", "value", "required"],
8317
8111
  props: e
8318
- }, g = {
8112
+ }, h = {
8319
8113
  icon: ItemIcon,
8320
8114
  contentModel: {
8321
8115
  category: "none",
8322
8116
  children: ["instance"],
8323
8117
  descendants: [n$4.RadioGroupIndicator]
8324
8118
  },
8325
- states: defaultStates,
8326
8119
  presetStyle: {
8327
- button: [button, b$5].flat()
8120
+ button: [button, b$4].flat()
8328
8121
  },
8329
8122
  initialProps: ["value"],
8330
8123
  props: o
8331
- }, h = {
8124
+ }, f = {
8332
8125
  icon: TriggerIcon,
8333
8126
  contentModel: {
8334
8127
  category: "none",
8335
8128
  children: ["instance"]
8336
8129
  },
8337
- states: defaultStates,
8338
8130
  presetStyle: {
8339
8131
  span
8340
8132
  },
@@ -8342,55 +8134,55 @@ const y = {
8342
8134
  };
8343
8135
  const radixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8344
8136
  __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,
8137
+ Accordion: v$1,
8138
+ AccordionContent: H,
8139
+ AccordionHeader: f$2,
8140
+ AccordionItem: x,
8141
+ AccordionTrigger: C$1,
8142
+ Checkbox: m,
8143
+ CheckboxIndicator: k,
8144
+ Collapsible: g$1,
8353
8145
  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,
8146
+ CollapsibleTrigger: m$4,
8147
+ Dialog: P$1,
8148
+ DialogClose: H$1,
8149
+ DialogContent: O,
8150
+ DialogDescription: E,
8151
+ DialogOverlay: b$3,
8152
+ DialogTitle: B,
8153
+ DialogTrigger: S$1,
8154
+ Label: m$2,
8363
8155
  NavigationMenu: L,
8364
8156
  NavigationMenuContent: w$1,
8365
- NavigationMenuItem: b$3,
8157
+ NavigationMenuItem: b$2,
8366
8158
  NavigationMenuLink: C,
8367
8159
  NavigationMenuList: h$1,
8368
8160
  NavigationMenuTrigger: k$2,
8369
8161
  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,
8162
+ Popover: h$2,
8163
+ PopoverClose: u,
8164
+ PopoverContent: y$1,
8165
+ PopoverTrigger: C$3,
8166
+ RadioGroup: G,
8167
+ RadioGroupIndicator: f,
8168
+ RadioGroupItem: h,
8169
+ Select: b$1,
8378
8170
  SelectContent: v,
8379
8171
  SelectItem: k$1,
8380
8172
  SelectItemIndicator: F,
8381
8173
  SelectItemText: q,
8382
- SelectTrigger: f,
8174
+ SelectTrigger: f$1,
8383
8175
  SelectValue: w,
8384
8176
  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,
8177
+ Switch: m$1,
8178
+ SwitchThumb: b,
8179
+ Tabs: y,
8180
+ TabsContent: C$2,
8181
+ TabsList: f$3,
8182
+ TabsTrigger: x$1,
8183
+ Tooltip: m$3,
8392
8184
  TooltipContent: T,
8393
- TooltipTrigger: g$1
8185
+ TooltipTrigger: g
8394
8186
  }, Symbol.toStringTag, { value: "Module" }));
8395
8187
  const createFramework$2 = async () => {
8396
8188
  const routeTemplatesDir = join("app", "route-templates");
@@ -8436,6 +8228,9 @@ const createFramework$2 = async () => {
8436
8228
  metas,
8437
8229
  components,
8438
8230
  tags: {
8231
+ textarea: `${base}:Textarea`,
8232
+ input: `${base}:Input`,
8233
+ select: `${base}:Select`,
8439
8234
  body: `${remix}:Body`,
8440
8235
  a: `${remix}:Link`,
8441
8236
  form: `${remix}:RemixForm`
@@ -8514,6 +8309,9 @@ const createFramework$1 = async () => {
8514
8309
  metas,
8515
8310
  components,
8516
8311
  tags: {
8312
+ textarea: `${base}:Textarea`,
8313
+ input: `${base}:Input`,
8314
+ select: `${base}:Select`,
8517
8315
  body: `${reactRouter}:Body`,
8518
8316
  a: `${reactRouter}:Link`,
8519
8317
  form: `${reactRouter}:RemixForm`
@@ -8589,7 +8387,11 @@ const createFramework = async () => {
8589
8387
  return {
8590
8388
  metas,
8591
8389
  components,
8592
- tags: {},
8390
+ tags: {
8391
+ textarea: `${base}:Textarea`,
8392
+ input: `${base}:Input`,
8393
+ select: `${base}:Select`
8394
+ },
8593
8395
  html: ({ pagePath }) => {
8594
8396
  if (isPathnamePattern(pagePath)) {
8595
8397
  return [];
@@ -9253,7 +9055,7 @@ const initFlow = async (options) => {
9253
9055
  if (shouldInstallDeps === true) {
9254
9056
  const install = spinner();
9255
9057
  install.start("Installing dependencies");
9256
- await x$3("npm", ["install"]);
9058
+ await x$2("npm", ["install"]);
9257
9059
  install.stop("Installed dependencies");
9258
9060
  }
9259
9061
  log.message();
@@ -9284,7 +9086,7 @@ const getDeploymentInstructions = (deployTarget) => {
9284
9086
  }
9285
9087
  };
9286
9088
  const name = "webstudio";
9287
- const version = "0.220.0";
9089
+ const version = "0.222.0";
9288
9090
  const description = "Webstudio CLI";
9289
9091
  const author = "Webstudio <github@webstudio.is>";
9290
9092
  const homepage = "https://webstudio.is";