webstudio 0.225.0 → 0.226.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
@@ -1822,19 +1822,14 @@ var ProjectMeta = z.object({
1822
1822
  faviconAssetId: z.string().optional(),
1823
1823
  code: z.string().optional()
1824
1824
  });
1825
- var ProjectNewRedirectPath = PagePath.or(
1826
- z.string().refine((data) => {
1827
- if (data === "/") {
1828
- return true;
1829
- }
1830
- try {
1831
- new URL(data);
1832
- return true;
1833
- } catch {
1834
- return false;
1835
- }
1836
- }, "Must be a valid URL")
1837
- );
1825
+ var ProjectNewRedirectPath = z.string().refine((data) => {
1826
+ try {
1827
+ new URL(data, "http://url.com");
1828
+ return true;
1829
+ } catch {
1830
+ return false;
1831
+ }
1832
+ }, "Must be a valid URL");
1838
1833
  var PageRedirect = z.object({
1839
1834
  old: OldPagePath,
1840
1835
  new: ProjectNewRedirectPath,
@@ -2539,7 +2534,7 @@ z.object({
2539
2534
  });
2540
2535
  var normalize_css_exports = {};
2541
2536
  __export(normalize_css_exports, {
2542
- a: () => a$9,
2537
+ a: () => a$7,
2543
2538
  address: () => address$1,
2544
2539
  article: () => article$1,
2545
2540
  aside: () => aside$1,
@@ -2561,7 +2556,7 @@ __export(normalize_css_exports, {
2561
2556
  header: () => header$1,
2562
2557
  hr: () => hr$1,
2563
2558
  html: () => html,
2564
- i: () => i$a,
2559
+ i: () => i$b,
2565
2560
  img: () => img$1,
2566
2561
  input: () => input$1,
2567
2562
  kbd: () => kbd,
@@ -2572,7 +2567,7 @@ __export(normalize_css_exports, {
2572
2567
  nav: () => nav$1,
2573
2568
  ol: () => ol$1,
2574
2569
  optgroup: () => optgroup,
2575
- p: () => p$8,
2570
+ p: () => p$9,
2576
2571
  pre: () => pre,
2577
2572
  progress: () => progress,
2578
2573
  radio: () => radio$1,
@@ -2628,13 +2623,13 @@ var h3$1 = div$1;
2628
2623
  var h4$1 = div$1;
2629
2624
  var h5$1 = div$1;
2630
2625
  var h6$1 = div$1;
2631
- var i$a = div$1;
2626
+ var i$b = div$1;
2632
2627
  var img$1 = div$1;
2633
- var a$9 = div$1;
2628
+ var a$7 = div$1;
2634
2629
  var li$1 = div$1;
2635
2630
  var ul$1 = div$1;
2636
2631
  var ol$1 = div$1;
2637
- var p$8 = div$1;
2632
+ var p$9 = div$1;
2638
2633
  var span$1 = div$1;
2639
2634
  var html = [
2640
2635
  { property: "display", value: { type: "keyword", value: "grid" } },
@@ -4968,7 +4963,7 @@ const o$H = {
4968
4963
  order: 4
4969
4964
  };
4970
4965
  const t$i = {};
4971
- const e$x = {
4966
+ const e$u = {
4972
4967
  className: {
4973
4968
  required: false,
4974
4969
  control: "text",
@@ -4983,7 +4978,7 @@ const e$x = {
4983
4978
  type: "boolean"
4984
4979
  }
4985
4980
  };
4986
- const a$8 = {
4981
+ const a$6 = {
4987
4982
  category: "general",
4988
4983
  label: "HTML Embed",
4989
4984
  description: "Used to add HTML code to the page, such as an SVG or script.",
@@ -5007,13 +5002,13 @@ const a$8 = {
5007
5002
  },
5008
5003
  initialProps: ["class", "clientOnly", "executeScriptOnCanvas"],
5009
5004
  props: {
5010
- ...e$x,
5005
+ ...e$u,
5011
5006
  clientOnly: {
5012
- ...e$x.clientOnly,
5007
+ ...e$u.clientOnly,
5013
5008
  description: "Activate it for any scripts that can mutate the DOM or introduce interactivity. This only affects the published site."
5014
5009
  },
5015
5010
  executeScriptOnCanvas: {
5016
- ...e$x.executeScriptOnCanvas,
5011
+ ...e$u.executeScriptOnCanvas,
5017
5012
  label: "Run scripts on canvas",
5018
5013
  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!"
5019
5014
  },
@@ -5028,7 +5023,7 @@ const a$8 = {
5028
5023
  const t$h = {
5029
5024
  code: { required: true, control: "text", type: "string" }
5030
5025
  };
5031
- const a$7 = {
5026
+ const a$5 = {
5032
5027
  icon: MarkdownEmbedIcon,
5033
5028
  contentModel: {
5034
5029
  category: "instance",
@@ -5095,13 +5090,13 @@ var h3 = div;
5095
5090
  var h4 = div;
5096
5091
  var h5 = div;
5097
5092
  var h6 = div;
5098
- var i$9 = div;
5093
+ var i$a = div;
5099
5094
  var img = div;
5100
- var a$6 = div;
5095
+ var a$4 = div;
5101
5096
  var li = div;
5102
5097
  var ul = div;
5103
5098
  var ol = div;
5104
- var p$7 = div;
5099
+ var p$8 = div;
5105
5100
  var span = div;
5106
5101
  var body = [
5107
5102
  { property: "margin-top", value: { type: "unit", unit: "number", value: 0 } },
@@ -5405,7 +5400,7 @@ var button = [
5405
5400
  ];
5406
5401
  var select = button;
5407
5402
  const o$G = {};
5408
- const i$8 = {
5403
+ const i$9 = {
5409
5404
  presetStyle: { body },
5410
5405
  initialProps: ["id", "class"],
5411
5406
  props: o$G
@@ -5413,7 +5408,7 @@ const i$8 = {
5413
5408
  const t$g = {
5414
5409
  tag: { required: false, control: "text", type: "string" }
5415
5410
  };
5416
- const g$2 = {
5411
+ const g$3 = {
5417
5412
  presetStyle: {
5418
5413
  div,
5419
5414
  address,
@@ -5452,7 +5447,7 @@ const g$2 = {
5452
5447
  const t$f = {
5453
5448
  tag: { required: false, control: "text", type: "string" }
5454
5449
  };
5455
- const n$7 = {
5450
+ const n$6 = {
5456
5451
  icon: TextIcon,
5457
5452
  presetStyle: {
5458
5453
  div: [
@@ -5498,12 +5493,12 @@ const m$9 = {
5498
5493
  }
5499
5494
  };
5500
5495
  const o$F = {};
5501
- const i$7 = {
5502
- presetStyle: { p: p$7 },
5496
+ const i$8 = {
5497
+ presetStyle: { p: p$8 },
5503
5498
  initialProps: ["id", "class"],
5504
5499
  props: o$F
5505
5500
  };
5506
- const e$w = {
5501
+ const e$t = {
5507
5502
  download: {
5508
5503
  required: false,
5509
5504
  control: "boolean",
@@ -5529,18 +5524,18 @@ const e$w = {
5529
5524
  };
5530
5525
  const t$d = {
5531
5526
  a: [
5532
- ...a$6,
5527
+ ...a$4,
5533
5528
  {
5534
5529
  property: "display",
5535
5530
  value: { type: "keyword", value: "inline-block" }
5536
5531
  }
5537
5532
  ]
5538
- }, p$6 = {
5533
+ }, p$7 = {
5539
5534
  presetStyle: t$d,
5540
5535
  states: [{ label: "Current page", selector: "[aria-current=page]" }],
5541
5536
  initialProps: ["id", "class", "href", "target", "prefetch", "download"],
5542
5537
  props: {
5543
- ...e$w,
5538
+ ...e$t,
5544
5539
  href: {
5545
5540
  type: "string",
5546
5541
  control: "url",
@@ -5548,9 +5543,9 @@ const t$d = {
5548
5543
  }
5549
5544
  }
5550
5545
  };
5551
- const a$5 = p$6;
5546
+ const a$3 = p$7;
5552
5547
  const o$E = {};
5553
- const e$v = {
5548
+ const e$s = {
5554
5549
  label: "Text",
5555
5550
  icon: PaintBrushIcon,
5556
5551
  presetStyle: { span },
@@ -5558,16 +5553,16 @@ const e$v = {
5558
5553
  props: o$E
5559
5554
  };
5560
5555
  const o$D = {};
5561
- const p$5 = {
5556
+ const p$6 = {
5562
5557
  label: "Bold Text",
5563
5558
  presetStyle: { b: b$5 },
5564
5559
  initialProps: ["id", "class"],
5565
5560
  props: o$D
5566
5561
  };
5567
5562
  const o$C = {};
5568
- const e$u = {
5563
+ const e$r = {
5569
5564
  label: "Italic Text",
5570
- presetStyle: { i: i$9 },
5565
+ presetStyle: { i: i$a },
5571
5566
  initialProps: ["id", "class"],
5572
5567
  props: o$C
5573
5568
  };
@@ -5586,13 +5581,13 @@ const s$4 = {
5586
5581
  props: o$z
5587
5582
  };
5588
5583
  const o$y = {};
5589
- const e$t = {
5584
+ const e$q = {
5590
5585
  presetStyle: { button },
5591
5586
  initialProps: ["id", "class", "type", "aria-label"],
5592
5587
  props: o$y
5593
5588
  };
5594
5589
  const o$x = {};
5595
- const p$4 = {
5590
+ const p$5 = {
5596
5591
  input: [
5597
5592
  ...input,
5598
5593
  {
@@ -5600,9 +5595,9 @@ const p$4 = {
5600
5595
  value: { type: "keyword", value: "block" }
5601
5596
  }
5602
5597
  ]
5603
- }, l$4 = {
5598
+ }, l$5 = {
5604
5599
  label: "Text Input",
5605
- presetStyle: p$4,
5600
+ presetStyle: p$5,
5606
5601
  initialProps: [
5607
5602
  "id",
5608
5603
  "class",
@@ -5615,7 +5610,7 @@ const p$4 = {
5615
5610
  ],
5616
5611
  props: o$x
5617
5612
  };
5618
- const e$s = {
5613
+ const e$p = {
5619
5614
  state: {
5620
5615
  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.",
5621
5616
  required: false,
@@ -5625,7 +5620,7 @@ const e$s = {
5625
5620
  options: ["initial", "success", "error"]
5626
5621
  }
5627
5622
  };
5628
- const c$3 = {
5623
+ const c$4 = {
5629
5624
  label: "Webhook Form",
5630
5625
  icon: WebhookFormIcon,
5631
5626
  presetStyle: {
@@ -5637,7 +5632,7 @@ const c$3 = {
5637
5632
  ],
5638
5633
  initialProps: ["id", "class", "state", "action"],
5639
5634
  props: {
5640
- ...e$s,
5635
+ ...e$p,
5641
5636
  action: {
5642
5637
  type: "resource",
5643
5638
  control: "resource",
@@ -5647,18 +5642,18 @@ const c$3 = {
5647
5642
  }
5648
5643
  };
5649
5644
  const o$w = {};
5650
- const r$e = {
5645
+ const r$c = {
5651
5646
  form: [
5652
5647
  ...form,
5653
5648
  { property: "min-height", value: { type: "unit", unit: "px", value: 20 } }
5654
5649
  ]
5655
- }, p$3 = {
5650
+ }, p$4 = {
5656
5651
  label: "Form",
5657
- presetStyle: r$e,
5652
+ presetStyle: r$c,
5658
5653
  initialProps: ["id", "class", "action"],
5659
5654
  props: o$w
5660
5655
  };
5661
- const e$r = {
5656
+ const e$o = {
5662
5657
  optimize: {
5663
5658
  description: "Optimize the image for enhanced performance.",
5664
5659
  required: false,
@@ -5690,7 +5685,7 @@ const o$v = {
5690
5685
  value: { type: "keyword", value: "auto" }
5691
5686
  }
5692
5687
  ]
5693
- }, i$6 = {
5688
+ }, i$7 = {
5694
5689
  category: "media",
5695
5690
  description: "Add an image asset to the page. Webstudio automatically converts images to WebP or AVIF format and makes them responsive for best performance.",
5696
5691
  presetStyle: o$v,
@@ -5706,7 +5701,7 @@ const o$v = {
5706
5701
  "optimize"
5707
5702
  ],
5708
5703
  props: {
5709
- ...e$r,
5704
+ ...e$o,
5710
5705
  // Automatically generated props don't have the right control.
5711
5706
  src: {
5712
5707
  type: "string",
@@ -5717,7 +5712,7 @@ const o$v = {
5717
5712
  }
5718
5713
  };
5719
5714
  const o$u = {};
5720
- const e$q = {
5715
+ const e$n = {
5721
5716
  blockquote: [
5722
5717
  {
5723
5718
  property: "margin-top",
@@ -5764,12 +5759,12 @@ const e$q = {
5764
5759
  value: { type: "rgb", r: 226, g: 226, b: 226, alpha: 1 }
5765
5760
  }
5766
5761
  ]
5767
- }, r$d = {
5768
- presetStyle: e$q,
5762
+ }, r$b = {
5763
+ presetStyle: e$n,
5769
5764
  initialProps: ["id", "class", "cite"],
5770
5765
  props: o$u
5771
5766
  };
5772
- const e$p = {
5767
+ const e$m = {
5773
5768
  ordered: {
5774
5769
  description: "Shows numbers instead of bullets when toggled. See the “List Style Type” property under the “List Item” section in the Style panel for more options.",
5775
5770
  required: false,
@@ -5809,13 +5804,13 @@ const t$c = {
5809
5804
  value: { type: "keyword", value: "40px" }
5810
5805
  }
5811
5806
  ]
5812
- }, l$3 = {
5807
+ }, l$4 = {
5813
5808
  presetStyle: t$c,
5814
5809
  initialProps: ["id", "class", "ordered", "start", "reversed"],
5815
- props: e$p
5810
+ props: e$m
5816
5811
  };
5817
5812
  const o$t = {};
5818
- const p$2 = {
5813
+ const p$3 = {
5819
5814
  presetStyle: { li },
5820
5815
  initialProps: ["id", "class"],
5821
5816
  props: o$t
@@ -5854,7 +5849,7 @@ const o$r = {
5854
5849
  initialProps: ["id", "class"],
5855
5850
  props: o$s
5856
5851
  };
5857
- const e$o = {
5852
+ const e$l = {
5858
5853
  code: { required: false, control: "text", type: "string" }
5859
5854
  };
5860
5855
  const o$q = {
@@ -5885,7 +5880,7 @@ const o$q = {
5885
5880
  value: { type: "rgb", r: 238, g: 238, b: 238, alpha: 1 }
5886
5881
  }
5887
5882
  ]
5888
- }, c$2 = {
5883
+ }, c$3 = {
5889
5884
  icon: BracesIcon,
5890
5885
  contentModel: {
5891
5886
  category: "instance",
@@ -5894,7 +5889,7 @@ const o$q = {
5894
5889
  presetStyle: o$q,
5895
5890
  initialProps: ["id", "class", "lang", "code"],
5896
5891
  props: {
5897
- ...e$o,
5892
+ ...e$l,
5898
5893
  code: {
5899
5894
  required: true,
5900
5895
  control: "codetext",
@@ -5925,7 +5920,7 @@ const t$a = {
5925
5920
  value: { type: "keyword", value: "block" }
5926
5921
  }
5927
5922
  ]
5928
- }, l$2 = {
5923
+ }, l$3 = {
5929
5924
  label: "Text Area",
5930
5925
  presetStyle: t$a,
5931
5926
  contentModel: {
@@ -5943,7 +5938,7 @@ const t$a = {
5943
5938
  ],
5944
5939
  props: o$n
5945
5940
  };
5946
- const e$n = {
5941
+ const e$k = {
5947
5942
  value: {
5948
5943
  required: false,
5949
5944
  control: "text",
@@ -5951,7 +5946,7 @@ const e$n = {
5951
5946
  description: "Value of the form control"
5952
5947
  }
5953
5948
  };
5954
- const r$c = {
5949
+ const r$a = {
5955
5950
  input: [
5956
5951
  ...radio,
5957
5952
  {
@@ -5962,11 +5957,11 @@ const r$c = {
5962
5957
  }, m$8 = {
5963
5958
  label: "Radio",
5964
5959
  icon: RadioCheckedIcon,
5965
- presetStyle: r$c,
5960
+ presetStyle: r$a,
5966
5961
  initialProps: ["id", "class", "name", "value", "required", "checked"],
5967
- props: e$n
5962
+ props: e$k
5968
5963
  };
5969
- const e$m = {
5964
+ const e$j = {
5970
5965
  value: {
5971
5966
  required: false,
5972
5967
  control: "text",
@@ -5986,9 +5981,9 @@ const t$9 = {
5986
5981
  icon: CheckboxCheckedIcon,
5987
5982
  presetStyle: t$9,
5988
5983
  initialProps: ["id", "class", "name", "value", "required", "checked"],
5989
- props: e$m
5984
+ props: e$j
5990
5985
  };
5991
- const e$l = {
5986
+ const e$i = {
5992
5987
  autopause: {
5993
5988
  description: "Whether to pause the current video when another Vimeo video on the same page starts to play. Set this value to false to permit simultaneous playback of all the videos on the page. This option has no effect if you've disabled cookies in your browser, either through browser settings or with an extension or plugin.",
5994
5989
  required: false,
@@ -6155,7 +6150,7 @@ To enable automatically generated closed captions instead, provide the value en-
6155
6150
  type: "string"
6156
6151
  }
6157
6152
  };
6158
- const i$5 = [
6153
+ const i$6 = [
6159
6154
  "id",
6160
6155
  "className",
6161
6156
  "url",
@@ -6181,10 +6176,10 @@ const i$5 = [
6181
6176
  descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6182
6177
  },
6183
6178
  presetStyle: { div },
6184
- initialProps: i$5,
6185
- props: e$l
6179
+ initialProps: i$6,
6180
+ props: e$i
6186
6181
  };
6187
- const e$k = {
6182
+ const e$h = {
6188
6183
  allowFullscreen: {
6189
6184
  description: "Whether to allow fullscreen mode.\nOriginal parameter: `fs`",
6190
6185
  required: false,
@@ -6349,7 +6344,7 @@ https://support.google.com/youtube/answer/171780?hl=en#zippy=%2Cturn-on-privacy-
6349
6344
  type: "string"
6350
6345
  }
6351
6346
  };
6352
- const n$6 = [
6347
+ const n$5 = [
6353
6348
  "id",
6354
6349
  "className",
6355
6350
  "url",
@@ -6385,10 +6380,10 @@ const n$6 = [
6385
6380
  descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6386
6381
  },
6387
6382
  presetStyle: { div },
6388
- initialProps: n$6,
6389
- props: e$k
6383
+ initialProps: n$5,
6384
+ props: e$h
6390
6385
  };
6391
- const e$j = {
6386
+ const e$g = {
6392
6387
  optimize: {
6393
6388
  description: "Optimize the image for enhanced performance.",
6394
6389
  required: false,
@@ -6397,17 +6392,17 @@ const e$j = {
6397
6392
  },
6398
6393
  quality: { required: false, control: "number", type: "number" }
6399
6394
  };
6400
- const i$4 = {
6401
- ...i$6,
6395
+ const i$5 = {
6396
+ ...i$7,
6402
6397
  category: "hidden",
6403
6398
  label: "Preview Image",
6404
6399
  contentModel: {
6405
6400
  category: "none",
6406
6401
  children: []
6407
6402
  },
6408
- initialProps: i$6.initialProps,
6403
+ initialProps: i$7.initialProps,
6409
6404
  props: {
6410
- ...e$j,
6405
+ ...e$g,
6411
6406
  // Automatically generated props don't have the right control.
6412
6407
  src: {
6413
6408
  type: "string",
@@ -6418,7 +6413,7 @@ const i$4 = {
6418
6413
  }
6419
6414
  };
6420
6415
  const o$m = {};
6421
- const c$1 = {
6416
+ const c$2 = {
6422
6417
  category: "hidden",
6423
6418
  label: "Play Button",
6424
6419
  icon: ButtonElementIcon,
@@ -6431,7 +6426,7 @@ const c$1 = {
6431
6426
  props: o$m
6432
6427
  };
6433
6428
  const o$l = {};
6434
- const c = {
6429
+ const c$1 = {
6435
6430
  icon: BoxIcon,
6436
6431
  category: "hidden",
6437
6432
  label: "Spinner",
@@ -6443,7 +6438,7 @@ const c = {
6443
6438
  initialProps: ["id", "class"],
6444
6439
  props: o$l
6445
6440
  };
6446
- const e$i = {
6441
+ const e$f = {
6447
6442
  href: {
6448
6443
  required: false,
6449
6444
  control: "text",
@@ -6472,9 +6467,9 @@ const m$6 = {
6472
6467
  icon: XmlIcon,
6473
6468
  description: "XML Node",
6474
6469
  initialProps: ["tag"],
6475
- props: e$i
6470
+ props: e$f
6476
6471
  };
6477
- const e$h = {
6472
+ const e$e = {
6478
6473
  dateStyle: {
6479
6474
  required: false,
6480
6475
  control: "radio",
@@ -6490,15 +6485,15 @@ const e$h = {
6490
6485
  description: "Machine-readable value"
6491
6486
  }
6492
6487
  };
6493
- const a$4 = {
6488
+ const a$2 = {
6494
6489
  category: "xml",
6495
6490
  description: "Converts machine-readable date and time to ISO format.",
6496
6491
  icon: CalendarIcon,
6497
6492
  order: 7,
6498
6493
  initialProps: ["datetime", "dateStyle"],
6499
- props: e$h
6494
+ props: e$e
6500
6495
  };
6501
- const e$g = {
6496
+ const e$d = {
6502
6497
  country: {
6503
6498
  required: false,
6504
6499
  control: "select",
@@ -6800,7 +6795,7 @@ const e$g = {
6800
6795
  options: ["full", "long", "medium", "short", "none"]
6801
6796
  }
6802
6797
  };
6803
- const r$b = {
6798
+ const r$9 = {
6804
6799
  category: "localization",
6805
6800
  description: "Converts machine-readable date and time to a human-readable format.",
6806
6801
  contentModel: {
@@ -6811,7 +6806,7 @@ const r$b = {
6811
6806
  time
6812
6807
  },
6813
6808
  initialProps: ["datetime", "language", "country", "dateStyle", "timeStyle"],
6814
- props: e$g
6809
+ props: e$d
6815
6810
  };
6816
6811
  const o$k = {};
6817
6812
  const o$j = {
@@ -6822,7 +6817,7 @@ const o$j = {
6822
6817
  value: { type: "keyword", value: "block" }
6823
6818
  }
6824
6819
  ]
6825
- }, p$1 = {
6820
+ }, p$2 = {
6826
6821
  presetStyle: o$j,
6827
6822
  initialProps: [
6828
6823
  "id",
@@ -6836,7 +6831,7 @@ const o$j = {
6836
6831
  props: o$k
6837
6832
  };
6838
6833
  const o$i = {};
6839
- const l$1 = {
6834
+ const l$2 = {
6840
6835
  option: [
6841
6836
  {
6842
6837
  property: "background-color",
@@ -6850,10 +6845,10 @@ const l$1 = {
6850
6845
  }
6851
6846
  }
6852
6847
  ]
6853
- }, a$3 = {
6848
+ }, a$1 = {
6854
6849
  category: "hidden",
6855
6850
  description: "An item within a drop-down menu that users can select as their chosen value.",
6856
- presetStyle: l$1,
6851
+ presetStyle: l$2,
6857
6852
  states: [
6858
6853
  // Applies when option is being activated (clicked)
6859
6854
  { selector: ":active", label: "Active" },
@@ -6868,7 +6863,7 @@ const l$1 = {
6868
6863
  props: o$i
6869
6864
  };
6870
6865
  const o$h = {};
6871
- const r$a = {
6866
+ const r$8 = {
6872
6867
  icon: HeaderIcon,
6873
6868
  description: "Inserts children into the head of the document",
6874
6869
  contentModel: {
@@ -6888,7 +6883,7 @@ const t$8 = {
6888
6883
  props: o$g
6889
6884
  };
6890
6885
  const o$f = {};
6891
- const e$f = {
6886
+ const e$c = {
6892
6887
  icon: WindowInfoIcon,
6893
6888
  contentModel: {
6894
6889
  category: "none",
@@ -6898,7 +6893,7 @@ const e$f = {
6898
6893
  props: o$f
6899
6894
  };
6900
6895
  const o$e = {};
6901
- const r$9 = {
6896
+ const r$7 = {
6902
6897
  icon: WindowTitleIcon,
6903
6898
  contentModel: {
6904
6899
  category: "none",
@@ -6907,7 +6902,7 @@ const r$9 = {
6907
6902
  props: o$e
6908
6903
  };
6909
6904
  const o$d = {};
6910
- const i$3 = {
6905
+ const i$4 = {
6911
6906
  icon: VideoIcon,
6912
6907
  contentModel: {
6913
6908
  category: "instance",
@@ -6948,217 +6943,68 @@ const i$3 = {
6948
6943
  };
6949
6944
  const baseComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6950
6945
  __proto__: null,
6951
- Blockquote: r$d,
6952
- Body: i$8,
6953
- Bold: p$5,
6954
- Box: g$2,
6955
- Button: e$t,
6946
+ Blockquote: r$b,
6947
+ Body: i$9,
6948
+ Bold: p$6,
6949
+ Box: g$3,
6950
+ Button: e$q,
6956
6951
  Checkbox: m$7,
6957
- CodeText: c$2,
6958
- Form: c$3,
6952
+ CodeText: c$3,
6953
+ Form: c$4,
6959
6954
  Fragment: t$i,
6960
6955
  HeadLink: t$8,
6961
- HeadMeta: e$f,
6962
- HeadSlot: r$a,
6963
- HeadTitle: r$9,
6956
+ HeadMeta: e$c,
6957
+ HeadSlot: r$8,
6958
+ HeadTitle: r$7,
6964
6959
  Heading: m$9,
6965
- HtmlEmbed: a$8,
6966
- Image: i$6,
6967
- Input: l$4,
6968
- Italic: e$u,
6960
+ HtmlEmbed: a$6,
6961
+ Image: i$7,
6962
+ Input: l$5,
6963
+ Italic: e$r,
6969
6964
  Label: t$b,
6970
- Link: p$6,
6971
- List: l$3,
6972
- ListItem: p$2,
6973
- MarkdownEmbed: a$7,
6974
- Option: a$3,
6975
- Paragraph: i$7,
6965
+ Link: p$7,
6966
+ List: l$4,
6967
+ ListItem: p$3,
6968
+ MarkdownEmbed: a$5,
6969
+ Option: a$1,
6970
+ Paragraph: i$8,
6976
6971
  RadioButton: m$8,
6977
- RemixForm: p$3,
6978
- RichTextLink: a$5,
6979
- Select: p$1,
6972
+ RemixForm: p$4,
6973
+ RichTextLink: a$3,
6974
+ Select: p$2,
6980
6975
  Separator: y$2,
6981
6976
  Slot: o$H,
6982
- Span: e$v,
6977
+ Span: e$s,
6983
6978
  Subscript: s$4,
6984
6979
  Superscript: o$A,
6985
- Text: n$7,
6986
- Textarea: l$2,
6987
- Time: r$b,
6988
- Video: i$3,
6980
+ Text: n$6,
6981
+ Textarea: l$3,
6982
+ Time: r$9,
6983
+ Video: i$4,
6989
6984
  Vimeo: s$3,
6990
- VimeoPlayButton: c$1,
6991
- VimeoPreviewImage: i$4,
6992
- VimeoSpinner: c,
6985
+ VimeoPlayButton: c$2,
6986
+ VimeoPreviewImage: i$5,
6987
+ VimeoSpinner: c$1,
6993
6988
  XmlNode: m$6,
6994
- XmlTime: a$4,
6989
+ XmlTime: a$2,
6995
6990
  YouTube: s$2
6996
6991
  }, Symbol.toStringTag, { value: "Module" }));
6997
- const n$5 = (t2) => new Proxy(
6998
- {},
6999
- {
7000
- get(o2, e2) {
7001
- return `${t2}${e2}`;
7002
- }
7003
- }
7004
- ), r$8 = n$5(
7005
- "@webstudio-is/sdk-components-animation:"
7006
- );
7007
- const a$2 = {
7008
- category: "animations",
7009
- description: "Animation Group component is designed to animate its children.",
7010
- icon: AnimationGroupIcon,
7011
- order: 0,
7012
- label: "Animation Group",
7013
- contentModel: {
7014
- category: "instance",
7015
- children: [
7016
- "instance",
7017
- r$8.AnimateText,
7018
- r$8.StaggerAnimation,
7019
- r$8.VideoAnimation
7020
- ]
7021
- },
7022
- initialProps: ["action"],
7023
- props: {
7024
- action: {
7025
- required: false,
7026
- control: "animationAction",
7027
- type: "animationAction",
7028
- description: "Animation Action"
7029
- }
7030
- }
7031
- };
7032
- const e$e = {
7033
- className: {
7034
- required: false,
7035
- control: "text",
7036
- type: "string",
7037
- description: "Classes to which the element belongs"
7038
- },
7039
- easing: {
7040
- description: "Easing function applied within the sliding window.",
7041
- required: false,
7042
- control: "select",
7043
- type: "string",
7044
- defaultValue: "linear",
7045
- options: [
7046
- "linear",
7047
- "easeIn",
7048
- "easeInCubic",
7049
- "easeInQuart",
7050
- "easeOut",
7051
- "easeOutCubic",
7052
- "easeOutQuart",
7053
- "ease",
7054
- "easeInOutCubic",
7055
- "easeInOutQuart"
7056
- ]
7057
- },
7058
- slidingWindow: {
7059
- description: `Size of the sliding window for the animation:
6992
+ //! SPDX-License-Identifier: LicenseRef-Webstudio,Inc-Proprietary
6993
+ const l$1 = (n2) => new Proxy({}, { get(w2, t2) {
6994
+ return `${n2}${t2}`;
6995
+ } }), i$3 = l$1("@webstudio-is/sdk-components-animation:"), c = { category: "animations", description: "Animation Group component is designed to animate its children.", icon: AnimationGroupIcon, order: 0, label: "Animation Group", contentModel: { category: "instance", children: ["instance", i$3.AnimateText, i$3.StaggerAnimation, i$3.VideoAnimation] }, initialProps: ["action"], props: { action: { required: false, control: "animationAction", type: "animationAction", description: "Animation Action" } } }, d$2 = { className: { required: false, control: "text", type: "string", description: "Classes to which the element belongs" }, easing: { description: "Easing function applied within the sliding window.", required: false, control: "select", type: "string", defaultValue: "linear", options: ["linear", "easeIn", "easeInCubic", "easeInQuart", "easeOut", "easeOutCubic", "easeOutQuart", "ease", "easeInOutCubic", "easeInOutQuart"] }, slidingWindow: { description: `Size of the sliding window for the animation:
7060
6996
  - 0: Typewriter effect (no animation).
7061
6997
  - (0..1]: Animates one part of the text at a time.
7062
- - (1..n]: Animates multiple parts of the text within the sliding window.`,
7063
- required: false,
7064
- control: "number",
7065
- type: "number",
7066
- defaultValue: 5
7067
- },
7068
- splitBy: {
7069
- description: "Defines how the text is split for animation (e.g., by character, space, or symbol).",
7070
- required: false,
7071
- control: "select",
7072
- type: "string",
7073
- defaultValue: "char",
7074
- options: ["char", "space", 'symbol "#"', 'symbol "~"']
7075
- }
7076
- };
7077
- const a$1 = {
7078
- category: "animations",
7079
- description: "Text animation allows you to split text by char or by word to animate it.",
7080
- icon: TextAnimationIcon,
7081
- order: 1,
7082
- label: "Text Animation",
7083
- contentModel: {
7084
- category: "none",
7085
- children: ["instance"]
7086
- },
7087
- presetStyle: { div },
7088
- initialProps: ["slidingWindow", "easing", "splitBy"],
7089
- props: e$e
7090
- };
7091
- const e$d = {
7092
- className: {
7093
- required: false,
7094
- control: "text",
7095
- type: "string",
7096
- description: "Classes to which the element belongs"
7097
- },
7098
- easing: {
7099
- description: "Easing function applied within the sliding window.",
7100
- required: false,
7101
- control: "select",
7102
- type: "string",
7103
- defaultValue: "linear",
7104
- options: [
7105
- "linear",
7106
- "easeIn",
7107
- "easeInCubic",
7108
- "easeInQuart",
7109
- "easeOut",
7110
- "easeOutCubic",
7111
- "easeOutQuart",
7112
- "ease",
7113
- "easeInOutCubic",
7114
- "easeInOutQuart"
7115
- ]
7116
- },
7117
- slidingWindow: {
7118
- description: `Size of the sliding window for the animation:
6998
+ - (1..n]: Animates multiple parts of the text within the sliding window.`, required: false, control: "number", type: "number", defaultValue: 5 }, splitBy: { description: "Defines how the text is split for animation (e.g., by character, space, or symbol).", required: false, control: "select", type: "string", defaultValue: "char", options: ["char", "space", 'symbol "#"', 'symbol "~"'] } }, p$1 = { category: "animations", description: "Text animation allows you to split text by char or by word to animate it.", icon: TextAnimationIcon, order: 1, label: "Text Animation", contentModel: { category: "none", children: ["instance"] }, presetStyle: { div }, initialProps: ["slidingWindow", "easing", "splitBy"], props: d$2 }, m$5 = { className: { required: false, control: "text", type: "string", description: "Classes to which the element belongs" }, easing: { description: "Easing function applied within the sliding window.", required: false, control: "select", type: "string", defaultValue: "linear", options: ["linear", "easeIn", "easeInCubic", "easeInQuart", "easeOut", "easeOutCubic", "easeOutQuart", "ease", "easeInOutCubic", "easeInOutQuart"] }, slidingWindow: { description: `Size of the sliding window for the animation:
7119
6999
  - 0: Typewriter effect (no animation).
7120
7000
  - (0..1]: Animates one child at a time.
7121
- - (1..n]: Animates multiple children within the sliding window.`,
7122
- required: false,
7123
- control: "number",
7124
- type: "number",
7125
- defaultValue: 1
7126
- }
7127
- };
7128
- const r$7 = {
7129
- category: "animations",
7130
- description: "Stagger animation allows you to animate children elements with a sliding window.",
7131
- icon: StaggerAnimationIcon,
7132
- order: 4,
7133
- label: "Stagger Animation",
7134
- contentModel: {
7135
- category: "none",
7136
- children: ["instance"]
7137
- },
7138
- presetStyle: { div },
7139
- initialProps: ["slidingWindow", "easing"],
7140
- props: e$d
7141
- };
7142
- const e$c = {
7143
- timeline: { required: false, control: "boolean", type: "boolean" }
7144
- };
7145
- const m$5 = {
7146
- icon: PlayIcon,
7147
- label: "Video Animation",
7148
- contentModel: {
7149
- category: "none",
7150
- children: ["instance"]
7151
- },
7152
- presetStyle: { div },
7153
- props: e$c,
7154
- initialProps: ["timeline"]
7155
- };
7001
+ - (1..n]: Animates multiple children within the sliding window.`, required: false, control: "number", type: "number", defaultValue: 1 } }, u$1 = { category: "animations", description: "Stagger animation allows you to animate children elements with a sliding window.", icon: StaggerAnimationIcon, order: 4, label: "Stagger Animation", contentModel: { category: "none", children: ["instance"] }, presetStyle: { div }, initialProps: ["slidingWindow", "easing"], props: m$5 }, g$2 = { timeline: { required: false, control: "boolean", type: "boolean" } }, h$3 = { icon: PlayIcon, label: "Video Animation", contentModel: { category: "none", children: ["instance"] }, presetStyle: { div }, props: g$2, initialProps: ["timeline"] };
7156
7002
  const animationComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7157
7003
  __proto__: null,
7158
- AnimateChildren: a$2,
7159
- AnimateText: a$1,
7160
- StaggerAnimation: r$7,
7161
- VideoAnimation: m$5
7004
+ AnimateChildren: c,
7005
+ AnimateText: p$1,
7006
+ StaggerAnimation: u$1,
7007
+ VideoAnimation: h$3
7162
7008
  }, Symbol.toStringTag, { value: "Module" }));
7163
7009
  const r$6 = (t2) => new Proxy(
7164
7010
  {},
@@ -7307,7 +7153,7 @@ const S$1 = {
7307
7153
  category: "none",
7308
7154
  children: ["instance", "rich-text"]
7309
7155
  },
7310
- presetStyle: { p: p$7 },
7156
+ presetStyle: { p: p$8 },
7311
7157
  props: p
7312
7158
  }, H$1 = {
7313
7159
  icon: ButtonElementIcon,
@@ -9200,7 +9046,7 @@ const getDeploymentInstructions = (deployTarget) => {
9200
9046
  }
9201
9047
  };
9202
9048
  const name = "webstudio";
9203
- const version = "0.225.0";
9049
+ const version = "0.226.0";
9204
9050
  const description = "Webstudio CLI";
9205
9051
  const author = "Webstudio <github@webstudio.is>";
9206
9052
  const homepage = "https://webstudio.is";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webstudio",
3
- "version": "0.225.0",
3
+ "version": "0.226.0",
4
4
  "description": "Webstudio CLI",
5
5
  "author": "Webstudio <github@webstudio.is>",
6
6
  "homepage": "https://webstudio.is",
@@ -70,16 +70,16 @@
70
70
  "vite": "^6.3.4",
71
71
  "vitest": "^3.1.2",
72
72
  "wrangler": "^3.63.2",
73
- "@webstudio-is/css-engine": "0.225.0",
74
- "@webstudio-is/http-client": "0.225.0",
75
- "@webstudio-is/image": "0.225.0",
76
- "@webstudio-is/react-sdk": "0.225.0",
77
- "@webstudio-is/sdk": "0.225.0",
78
- "@webstudio-is/sdk-components-animation": "0.225.0",
79
- "@webstudio-is/sdk-components-react": "0.225.0",
80
- "@webstudio-is/sdk-components-react-radix": "0.225.0",
81
- "@webstudio-is/sdk-components-react-remix": "0.225.0",
82
- "@webstudio-is/sdk-components-react-router": "0.225.0",
73
+ "@webstudio-is/http-client": "0.226.0",
74
+ "@webstudio-is/css-engine": "0.226.0",
75
+ "@webstudio-is/image": "0.226.0",
76
+ "@webstudio-is/react-sdk": "0.226.0",
77
+ "@webstudio-is/sdk-components-animation": "0.226.0",
78
+ "@webstudio-is/sdk": "0.226.0",
79
+ "@webstudio-is/sdk-components-react": "0.226.0",
80
+ "@webstudio-is/sdk-components-react-radix": "0.226.0",
81
+ "@webstudio-is/sdk-components-react-remix": "0.226.0",
82
+ "@webstudio-is/sdk-components-react-router": "0.226.0",
83
83
  "@webstudio-is/tsconfig": "1.0.7"
84
84
  },
85
85
  "scripts": {
@@ -37,7 +37,7 @@ import {
37
37
  getRemixParams,
38
38
  contactEmail,
39
39
  } from "__SERVER__";
40
- import { assetBaseUrl, imageLoader } from "__CONSTANTS__";
40
+ import * as constants from "__CONSTANTS__";
41
41
  import css from "__CSS__?url";
42
42
  import { sitemap } from "__SITEMAP__";
43
43
 
@@ -151,8 +151,8 @@ export const links: LinksFunction = () => {
151
151
  if (favIconAsset) {
152
152
  result.push({
153
153
  rel: "icon",
154
- href: imageLoader({
155
- src: `${assetBaseUrl}${favIconAsset}`,
154
+ href: constants.imageLoader({
155
+ src: `${constants.assetBaseUrl}${favIconAsset}`,
156
156
  // width,height must be multiple of 48 https://developers.google.com/search/docs/appearance/favicon-in-search
157
157
  width: 144,
158
158
  height: 144,
@@ -167,7 +167,7 @@ export const links: LinksFunction = () => {
167
167
  for (const asset of pageFontAssets) {
168
168
  result.push({
169
169
  rel: "preload",
170
- href: `${assetBaseUrl}${asset}`,
170
+ href: `${constants.assetBaseUrl}${asset}`,
171
171
  as: "font",
172
172
  crossOrigin: "anonymous",
173
173
  });
@@ -176,7 +176,7 @@ export const links: LinksFunction = () => {
176
176
  for (const backgroundImageAsset of pageBackgroundImageAssets) {
177
177
  result.push({
178
178
  rel: "preload",
179
- href: `${assetBaseUrl}${backgroundImageAsset}`,
179
+ href: `${constants.assetBaseUrl}${backgroundImageAsset}`,
180
180
  as: "image",
181
181
  });
182
182
  }
@@ -271,8 +271,7 @@ const Outlet = () => {
271
271
  return (
272
272
  <ReactSdkContext.Provider
273
273
  value={{
274
- imageLoader,
275
- assetBaseUrl,
274
+ ...constants,
276
275
  resources,
277
276
  breakpoints,
278
277
  onError: console.error,
@@ -285,8 +284,8 @@ const Outlet = () => {
285
284
  pageMeta={pageMeta}
286
285
  host={host}
287
286
  siteName={siteName}
288
- imageLoader={imageLoader}
289
- assetBaseUrl={assetBaseUrl}
287
+ imageLoader={constants.imageLoader}
288
+ assetBaseUrl={constants.assetBaseUrl}
290
289
  />
291
290
  <PageSettingsTitle>{pageMeta.title}</PageSettingsTitle>
292
291
  <PageSettingsCanonicalLink href={url} />
@@ -11,13 +11,13 @@
11
11
  "@remix-run/node": "2.16.5",
12
12
  "@remix-run/react": "2.16.5",
13
13
  "@remix-run/server-runtime": "2.16.5",
14
- "@webstudio-is/image": "0.225.0",
15
- "@webstudio-is/react-sdk": "0.225.0",
16
- "@webstudio-is/sdk": "0.225.0",
17
- "@webstudio-is/sdk-components-react": "0.225.0",
18
- "@webstudio-is/sdk-components-animation": "0.225.0",
19
- "@webstudio-is/sdk-components-react-radix": "0.225.0",
20
- "@webstudio-is/sdk-components-react-remix": "0.225.0",
14
+ "@webstudio-is/image": "0.226.0",
15
+ "@webstudio-is/react-sdk": "0.226.0",
16
+ "@webstudio-is/sdk": "0.226.0",
17
+ "@webstudio-is/sdk-components-react": "0.226.0",
18
+ "@webstudio-is/sdk-components-animation": "0.226.0",
19
+ "@webstudio-is/sdk-components-react-radix": "0.226.0",
20
+ "@webstudio-is/sdk-components-react-remix": "0.226.0",
21
21
  "isbot": "^5.1.25",
22
22
  "react": "18.3.0-canary-14898b6a9-20240318",
23
23
  "react-dom": "18.3.0-canary-14898b6a9-20240318"
@@ -36,7 +36,7 @@ import {
36
36
  getRemixParams,
37
37
  contactEmail,
38
38
  } from "__SERVER__";
39
- import { assetBaseUrl, imageLoader } from "__CONSTANTS__";
39
+ import * as constants from "__CONSTANTS__";
40
40
  import css from "__CSS__?url";
41
41
  import { sitemap } from "__SITEMAP__";
42
42
 
@@ -150,8 +150,8 @@ export const links: LinksFunction = () => {
150
150
  if (favIconAsset) {
151
151
  result.push({
152
152
  rel: "icon",
153
- href: imageLoader({
154
- src: `${assetBaseUrl}${favIconAsset}`,
153
+ href: constants.imageLoader({
154
+ src: `${constants.assetBaseUrl}${favIconAsset}`,
155
155
  // width,height must be multiple of 48 https://developers.google.com/search/docs/appearance/favicon-in-search
156
156
  width: 144,
157
157
  height: 144,
@@ -166,7 +166,7 @@ export const links: LinksFunction = () => {
166
166
  for (const asset of pageFontAssets) {
167
167
  result.push({
168
168
  rel: "preload",
169
- href: `${assetBaseUrl}${asset}`,
169
+ href: `${constants.assetBaseUrl}${asset}`,
170
170
  as: "font",
171
171
  crossOrigin: "anonymous",
172
172
  });
@@ -175,7 +175,7 @@ export const links: LinksFunction = () => {
175
175
  for (const backgroundImageAsset of pageBackgroundImageAssets) {
176
176
  result.push({
177
177
  rel: "preload",
178
- href: `${assetBaseUrl}${backgroundImageAsset}`,
178
+ href: `${constants.assetBaseUrl}${backgroundImageAsset}`,
179
179
  as: "image",
180
180
  });
181
181
  }
@@ -270,8 +270,7 @@ const Outlet = () => {
270
270
  return (
271
271
  <ReactSdkContext.Provider
272
272
  value={{
273
- imageLoader,
274
- assetBaseUrl,
273
+ ...constants,
275
274
  resources,
276
275
  breakpoints,
277
276
  onError: console.error,
@@ -284,8 +283,8 @@ const Outlet = () => {
284
283
  pageMeta={pageMeta}
285
284
  host={host}
286
285
  siteName={siteName}
287
- imageLoader={imageLoader}
288
- assetBaseUrl={assetBaseUrl}
286
+ imageLoader={constants.imageLoader}
287
+ assetBaseUrl={constants.assetBaseUrl}
289
288
  />
290
289
  <PageSettingsTitle>{pageMeta.title}</PageSettingsTitle>
291
290
  </ReactSdkContext.Provider>
@@ -10,13 +10,13 @@
10
10
  "dependencies": {
11
11
  "@react-router/dev": "^7.5.3",
12
12
  "@react-router/fs-routes": "^7.5.3",
13
- "@webstudio-is/image": "0.225.0",
14
- "@webstudio-is/react-sdk": "0.225.0",
15
- "@webstudio-is/sdk": "0.225.0",
16
- "@webstudio-is/sdk-components-animation": "0.225.0",
17
- "@webstudio-is/sdk-components-react-radix": "0.225.0",
18
- "@webstudio-is/sdk-components-react-router": "0.225.0",
19
- "@webstudio-is/sdk-components-react": "0.225.0",
13
+ "@webstudio-is/image": "0.226.0",
14
+ "@webstudio-is/react-sdk": "0.226.0",
15
+ "@webstudio-is/sdk": "0.226.0",
16
+ "@webstudio-is/sdk-components-animation": "0.226.0",
17
+ "@webstudio-is/sdk-components-react-radix": "0.226.0",
18
+ "@webstudio-is/sdk-components-react-router": "0.226.0",
19
+ "@webstudio-is/sdk-components-react": "0.226.0",
20
20
  "isbot": "^5.1.25",
21
21
  "react": "18.3.0-canary-14898b6a9-20240318",
22
22
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
@@ -4,6 +4,19 @@
4
4
  */
5
5
  export const assetBaseUrl = "/assets/";
6
6
 
7
+ /**
8
+ * URL.canParse(props.src)
9
+ * @type {(url: string) => boolean}
10
+ */
11
+ const UrlCanParse = (url) => {
12
+ try {
13
+ new URL(url);
14
+ return true;
15
+ } catch {
16
+ return false;
17
+ }
18
+ };
19
+
7
20
  /**
8
21
  * @type {import("@webstudio-is/image").ImageLoader}
9
22
  */
@@ -12,7 +25,7 @@ export const imageLoader = (props) => {
12
25
  return props.src;
13
26
  }
14
27
  // handle absolute urls
15
- const path = URL.canParse(props.src) ? `/${props.src}` : props.src;
28
+ const path = UrlCanParse(props.src) ? `/${props.src}` : props.src;
16
29
  // https://github.com/unjs/ipx?tab=readme-ov-file#modifiers
17
30
  return `/_image/w_${props.width},q_${props.quality}${path}`;
18
31
  };
@@ -8,12 +8,12 @@
8
8
  "typecheck": "tsc"
9
9
  },
10
10
  "dependencies": {
11
- "@webstudio-is/image": "0.225.0",
12
- "@webstudio-is/react-sdk": "0.225.0",
13
- "@webstudio-is/sdk": "0.225.0",
14
- "@webstudio-is/sdk-components-react": "0.225.0",
15
- "@webstudio-is/sdk-components-animation": "0.225.0",
16
- "@webstudio-is/sdk-components-react-radix": "0.225.0",
11
+ "@webstudio-is/image": "0.226.0",
12
+ "@webstudio-is/react-sdk": "0.226.0",
13
+ "@webstudio-is/sdk": "0.226.0",
14
+ "@webstudio-is/sdk-components-react": "0.226.0",
15
+ "@webstudio-is/sdk-components-animation": "0.226.0",
16
+ "@webstudio-is/sdk-components-react-radix": "0.226.0",
17
17
  "react": "18.3.0-canary-14898b6a9-20240318",
18
18
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
19
19
  "vike": "^0.4.229"