webstudio 0.200.0 → 0.202.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
@@ -77,7 +77,16 @@ const PROJECT_TEMPLATES = [
77
77
  label: "Vanilla",
78
78
  expand: ["defaults"]
79
79
  },
80
- { value: "vercel", label: "Vercel", expand: ["defaults", "vercel"] },
80
+ {
81
+ value: "docker",
82
+ label: "Docker",
83
+ expand: ["react-router-docker"]
84
+ },
85
+ {
86
+ value: "vercel",
87
+ label: "Vercel",
88
+ expand: ["defaults", "vercel"]
89
+ },
81
90
  {
82
91
  value: "netlify-functions",
83
92
  label: "Netlify Functions",
@@ -88,7 +97,10 @@ const PROJECT_TEMPLATES = [
88
97
  label: "Netlify Edge Functions",
89
98
  expand: ["defaults", "netlify-edge-functions"]
90
99
  },
91
- { value: "ssg", label: "Static Site Generation (SSG)" },
100
+ {
101
+ value: "ssg",
102
+ label: "Static Site Generation (SSG)"
103
+ },
92
104
  {
93
105
  value: "ssg-netlify",
94
106
  label: "Static Site Generation (SSG) Netlify",
@@ -105,11 +117,6 @@ const INTERNAL_TEMPLATES = [
105
117
  value: "cloudflare",
106
118
  label: "Cloudflare",
107
119
  expand: ["defaults", "cloudflare"]
108
- },
109
- {
110
- value: "react-router-docker",
111
- label: "Dokcer",
112
- expand: ["react-router-docker"]
113
120
  }
114
121
  ];
115
122
  const isFileExists = async (filePath) => {
@@ -1949,7 +1956,6 @@ z.object({
1949
1956
  // important to automatically enumerate collections without
1950
1957
  // naming every item manually
1951
1958
  indexWithinAncestor: z.optional(z.string()),
1952
- stylable: z.optional(z.boolean()),
1953
1959
  label: z.optional(z.string()),
1954
1960
  description: z.string().optional(),
1955
1961
  icon: z.string(),
@@ -2338,14 +2344,15 @@ const collectionComponent = "ws:collection";
2338
2344
  const collectionMeta = {
2339
2345
  type: "container",
2340
2346
  label: "Collection",
2341
- icon: ListViewIcon,
2342
- stylable: false
2347
+ icon: ListViewIcon
2343
2348
  };
2344
2349
  const descendantComponent = "ws:descendant";
2345
2350
  const descendantMeta = {
2346
2351
  type: "control",
2347
2352
  label: "Descendant",
2348
2353
  icon: PaintBrushIcon,
2354
+ // @todo infer possible presets
2355
+ presetStyle: {},
2349
2356
  constraints: {
2350
2357
  relation: "parent",
2351
2358
  component: { $in: ["HtmlEmbed", "MarkdownEmbed"] }
@@ -2356,7 +2363,6 @@ const blockTemplateComponent = "ws:block-template";
2356
2363
  const blockTemplateMeta = {
2357
2364
  type: "container",
2358
2365
  icon: AddTemplateInstanceIcon,
2359
- stylable: false,
2360
2366
  constraints: {
2361
2367
  relation: "parent",
2362
2368
  component: { $eq: blockComponent }
@@ -2375,8 +2381,7 @@ const blockMeta = {
2375
2381
  relation: "child",
2376
2382
  component: { $eq: blockTemplateComponent }
2377
2383
  }
2378
- ],
2379
- stylable: false
2384
+ ]
2380
2385
  };
2381
2386
  const coreMetas = {
2382
2387
  [rootComponent]: rootMeta,
@@ -2492,6 +2497,7 @@ const generateExpression = ({
2492
2497
  usedDataSources == null ? void 0 : usedDataSources.set(dep.id, dep);
2493
2498
  return scope.getName(dep.id, dep.name);
2494
2499
  }
2500
+ return "undefined";
2495
2501
  }
2496
2502
  });
2497
2503
  };
@@ -3796,13 +3802,11 @@ const meta$I = {
3796
3802
  type: "container",
3797
3803
  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.",
3798
3804
  icon: SlotComponentIcon,
3799
- stylable: false,
3800
3805
  order: 5
3801
3806
  };
3802
3807
  const meta$H = {
3803
3808
  type: "container",
3804
- icon: "",
3805
- stylable: false
3809
+ icon: ""
3806
3810
  };
3807
3811
  const props = {
3808
3812
  className: { required: false, control: "text", type: "string" },
@@ -3814,7 +3818,7 @@ const props = {
3814
3818
  type: "boolean"
3815
3819
  }
3816
3820
  };
3817
- const presetStyle$E = {
3821
+ const presetStyle$y = {
3818
3822
  div: [
3819
3823
  {
3820
3824
  property: "display",
@@ -3832,7 +3836,7 @@ const meta$G = {
3832
3836
  label: "HTML Embed",
3833
3837
  description: "Used to add HTML code to the page, such as an SVG or script.",
3834
3838
  icon: EmbedIcon,
3835
- presetStyle: presetStyle$E,
3839
+ presetStyle: presetStyle$y,
3836
3840
  order: 2
3837
3841
  };
3838
3842
  ({
@@ -3872,7 +3876,7 @@ const meta$F = {
3872
3876
  ]
3873
3877
  }
3874
3878
  };
3875
- const presetStyle$D = {
3879
+ const presetStyle$x = {
3876
3880
  body: [
3877
3881
  ...body,
3878
3882
  {
@@ -3889,9 +3893,9 @@ const meta$E = {
3889
3893
  type: "container",
3890
3894
  icon: BodyIcon,
3891
3895
  states: defaultStates,
3892
- presetStyle: presetStyle$D
3896
+ presetStyle: presetStyle$x
3893
3897
  };
3894
- const presetStyle$C = {
3898
+ const presetStyle$w = {
3895
3899
  div,
3896
3900
  address,
3897
3901
  article,
@@ -3909,10 +3913,10 @@ const meta$D = {
3909
3913
  description: "A container for content. By default this is a Div, but the tag can be changed in settings.",
3910
3914
  icon: BoxIcon,
3911
3915
  states: defaultStates,
3912
- presetStyle: presetStyle$C,
3916
+ presetStyle: presetStyle$w,
3913
3917
  order: 0
3914
3918
  };
3915
- const presetStyle$B = {
3919
+ const presetStyle$v = {
3916
3920
  div: [
3917
3921
  ...div,
3918
3922
  {
@@ -3925,9 +3929,9 @@ const meta$C = {
3925
3929
  type: "container",
3926
3930
  icon: TextIcon,
3927
3931
  states: defaultStates,
3928
- presetStyle: presetStyle$B
3932
+ presetStyle: presetStyle$v
3929
3933
  };
3930
- const presetStyle$A = {
3934
+ const presetStyle$u = {
3931
3935
  h1,
3932
3936
  h2,
3933
3937
  h3,
@@ -3943,9 +3947,9 @@ const meta$B = {
3943
3947
  component: { $neq: "Heading" }
3944
3948
  },
3945
3949
  states: defaultStates,
3946
- presetStyle: presetStyle$A
3950
+ presetStyle: presetStyle$u
3947
3951
  };
3948
- const presetStyle$z = {
3952
+ const presetStyle$t = {
3949
3953
  p
3950
3954
  };
3951
3955
  const meta$A = {
@@ -3956,9 +3960,9 @@ const meta$A = {
3956
3960
  component: { $neq: "Paragraph" }
3957
3961
  },
3958
3962
  states: defaultStates,
3959
- presetStyle: presetStyle$z
3963
+ presetStyle: presetStyle$t
3960
3964
  };
3961
- const presetStyle$y = {
3965
+ const presetStyle$s = {
3962
3966
  a: [
3963
3967
  ...a,
3964
3968
  {
@@ -3974,7 +3978,7 @@ const meta$z = {
3974
3978
  relation: "ancestor",
3975
3979
  component: { $nin: ["Button", "Link"] }
3976
3980
  },
3977
- presetStyle: presetStyle$y,
3981
+ presetStyle: presetStyle$s,
3978
3982
  states: [
3979
3983
  ...defaultStates,
3980
3984
  {
@@ -3992,7 +3996,7 @@ const meta$y = {
3992
3996
  ...meta$z,
3993
3997
  type: "rich-text-child"
3994
3998
  };
3995
- const presetStyle$x = {
3999
+ const presetStyle$r = {
3996
4000
  span
3997
4001
  };
3998
4002
  const meta$x = {
@@ -4000,9 +4004,9 @@ const meta$x = {
4000
4004
  label: "Text",
4001
4005
  icon: PaintBrushIcon,
4002
4006
  states: defaultStates,
4003
- presetStyle: presetStyle$x
4007
+ presetStyle: presetStyle$r
4004
4008
  };
4005
- const presetStyle$w = {
4009
+ const presetStyle$q = {
4006
4010
  b
4007
4011
  };
4008
4012
  const meta$w = {
@@ -4010,9 +4014,9 @@ const meta$w = {
4010
4014
  label: "Bold Text",
4011
4015
  icon: BoldIcon,
4012
4016
  states: defaultStates,
4013
- presetStyle: presetStyle$w
4017
+ presetStyle: presetStyle$q
4014
4018
  };
4015
- const presetStyle$v = {
4019
+ const presetStyle$p = {
4016
4020
  i: [
4017
4021
  ...i,
4018
4022
  {
@@ -4026,9 +4030,9 @@ const meta$v = {
4026
4030
  label: "Italic Text",
4027
4031
  icon: TextItalicIcon,
4028
4032
  states: defaultStates,
4029
- presetStyle: presetStyle$v
4033
+ presetStyle: presetStyle$p
4030
4034
  };
4031
- const presetStyle$u = {
4035
+ const presetStyle$o = {
4032
4036
  sup
4033
4037
  };
4034
4038
  const meta$u = {
@@ -4036,9 +4040,9 @@ const meta$u = {
4036
4040
  label: "Superscript Text",
4037
4041
  icon: SuperscriptIcon,
4038
4042
  states: defaultStates,
4039
- presetStyle: presetStyle$u
4043
+ presetStyle: presetStyle$o
4040
4044
  };
4041
- const presetStyle$t = {
4045
+ const presetStyle$n = {
4042
4046
  sub
4043
4047
  };
4044
4048
  const meta$t = {
@@ -4046,9 +4050,9 @@ const meta$t = {
4046
4050
  label: "Subscript Text",
4047
4051
  icon: SubscriptIcon,
4048
4052
  states: defaultStates,
4049
- presetStyle: presetStyle$t
4053
+ presetStyle: presetStyle$n
4050
4054
  };
4051
- const presetStyle$s = {
4055
+ const presetStyle$m = {
4052
4056
  button
4053
4057
  };
4054
4058
  const meta$s = {
@@ -4058,14 +4062,14 @@ const meta$s = {
4058
4062
  relation: "ancestor",
4059
4063
  component: { $nin: ["Button", "Link"] }
4060
4064
  },
4061
- presetStyle: presetStyle$s,
4065
+ presetStyle: presetStyle$m,
4062
4066
  states: [
4063
4067
  ...defaultStates,
4064
4068
  { selector: ":disabled", label: "Disabled" },
4065
4069
  { selector: ":enabled", label: "Enabled" }
4066
4070
  ]
4067
4071
  };
4068
- const presetStyle$r = {
4072
+ const presetStyle$l = {
4069
4073
  input: [
4070
4074
  ...input,
4071
4075
  {
@@ -4084,7 +4088,7 @@ const meta$r = {
4084
4088
  label: "Text Input",
4085
4089
  description: "A single-line text input for collecting string data from your users.",
4086
4090
  icon: FormTextFieldIcon,
4087
- presetStyle: presetStyle$r,
4091
+ presetStyle: presetStyle$l,
4088
4092
  order: 3,
4089
4093
  states: [
4090
4094
  ...defaultStates,
@@ -4116,7 +4120,7 @@ const meta$q = {
4116
4120
  { selector: "[data-state=success]", label: "Success" }
4117
4121
  ]
4118
4122
  };
4119
- const presetStyle$q = {
4123
+ const presetStyle$k = {
4120
4124
  form: [
4121
4125
  ...form,
4122
4126
  { property: "minHeight", value: { type: "unit", unit: "px", value: 20 } }
@@ -4133,10 +4137,10 @@ const meta$p = {
4133
4137
  description: "Create filters, surveys, searches and more.",
4134
4138
  icon: FormIcon,
4135
4139
  states: defaultStates,
4136
- presetStyle: presetStyle$q,
4140
+ presetStyle: presetStyle$k,
4137
4141
  order: 0
4138
4142
  };
4139
- const presetStyle$p = {
4143
+ const presetStyle$j = {
4140
4144
  img: [
4141
4145
  ...img,
4142
4146
  // Otherwise on new image insert onto canvas it can overfit screen size multiple times
@@ -4165,10 +4169,10 @@ const meta$o = {
4165
4169
  description: "Add an image asset to the page. Webstudio automatically converts images to WebP or AVIF format and makes them responsive for best performance.",
4166
4170
  icon: ImageIcon,
4167
4171
  states: defaultStates,
4168
- presetStyle: presetStyle$p,
4172
+ presetStyle: presetStyle$j,
4169
4173
  order: 0
4170
4174
  };
4171
- const presetStyle$o = {
4175
+ const presetStyle$i = {
4172
4176
  blockquote: [
4173
4177
  {
4174
4178
  property: "marginTop",
@@ -4220,9 +4224,9 @@ const meta$n = {
4220
4224
  type: "container",
4221
4225
  icon: BlockquoteIcon,
4222
4226
  states: defaultStates,
4223
- presetStyle: presetStyle$o
4227
+ presetStyle: presetStyle$i
4224
4228
  };
4225
- const presetStyle$n = {
4229
+ const presetStyle$h = {
4226
4230
  ol: [
4227
4231
  ...ol,
4228
4232
  {
@@ -4258,9 +4262,9 @@ const meta$m = {
4258
4262
  type: "container",
4259
4263
  icon: ListIcon,
4260
4264
  states: defaultStates,
4261
- presetStyle: presetStyle$n
4265
+ presetStyle: presetStyle$h
4262
4266
  };
4263
- const presetStyle$m = {
4267
+ const presetStyle$g = {
4264
4268
  li
4265
4269
  };
4266
4270
  const meta$l = {
@@ -4274,9 +4278,9 @@ const meta$l = {
4274
4278
  },
4275
4279
  icon: ListItemIcon,
4276
4280
  states: defaultStates,
4277
- presetStyle: presetStyle$m
4281
+ presetStyle: presetStyle$g
4278
4282
  };
4279
- const presetStyle$l = {
4283
+ const presetStyle$f = {
4280
4284
  hr: [
4281
4285
  ...hr,
4282
4286
  {
@@ -4311,10 +4315,10 @@ const meta$k = {
4311
4315
  description: "Used to visually divide sections of content, helping to improve readability and organization within a webpage.",
4312
4316
  icon: MinusIcon,
4313
4317
  states: defaultStates,
4314
- presetStyle: presetStyle$l,
4318
+ presetStyle: presetStyle$f,
4315
4319
  order: 3
4316
4320
  };
4317
- const presetStyle$k = {
4321
+ const presetStyle$e = {
4318
4322
  code: [
4319
4323
  ...code,
4320
4324
  {
@@ -4353,10 +4357,10 @@ const meta$j = {
4353
4357
  component: { $neq: "CodeText" }
4354
4358
  },
4355
4359
  states: defaultStates,
4356
- presetStyle: presetStyle$k,
4360
+ presetStyle: presetStyle$e,
4357
4361
  order: 5
4358
4362
  };
4359
- const presetStyle$j = {
4363
+ const presetStyle$d = {
4360
4364
  label: [
4361
4365
  ...label,
4362
4366
  { property: "display", value: { type: "keyword", value: "block" } }
@@ -4371,9 +4375,9 @@ const meta$i = {
4371
4375
  label: "Input Label",
4372
4376
  icon: LabelIcon,
4373
4377
  states: defaultStates,
4374
- presetStyle: presetStyle$j
4378
+ presetStyle: presetStyle$d
4375
4379
  };
4376
- const presetStyle$i = {
4380
+ const presetStyle$c = {
4377
4381
  textarea: [
4378
4382
  ...textarea,
4379
4383
  // resize doesn't work well while on canvas
@@ -4390,7 +4394,7 @@ const meta$h = {
4390
4394
  label: "Text Area",
4391
4395
  description: "A multi-line text input for collecting longer string data from your users.",
4392
4396
  icon: FormTextAreaIcon,
4393
- presetStyle: presetStyle$i,
4397
+ presetStyle: presetStyle$c,
4394
4398
  order: 4,
4395
4399
  constraints: {
4396
4400
  relation: "ancestor",
@@ -4410,7 +4414,7 @@ const meta$h = {
4410
4414
  //{ selector: ":read-write", label: "Read Write" },
4411
4415
  ]
4412
4416
  };
4413
- const presetStyle$h = {
4417
+ const presetStyle$b = {
4414
4418
  input: [
4415
4419
  ...radio,
4416
4420
  {
@@ -4427,7 +4431,7 @@ const meta$g = {
4427
4431
  type: "control",
4428
4432
  label: "Radio",
4429
4433
  icon: RadioCheckedIcon,
4430
- presetStyle: presetStyle$h,
4434
+ presetStyle: presetStyle$b,
4431
4435
  states: [
4432
4436
  ...defaultStates,
4433
4437
  { selector: ":checked", label: "Checked" },
@@ -4440,7 +4444,7 @@ const meta$g = {
4440
4444
  //{ selector: ":read-write", label: "Read Write" },
4441
4445
  ]
4442
4446
  };
4443
- const presetStyle$g = {
4447
+ const presetStyle$a = {
4444
4448
  input: [
4445
4449
  ...checkbox,
4446
4450
  {
@@ -4456,7 +4460,7 @@ const meta$f = {
4456
4460
  },
4457
4461
  type: "control",
4458
4462
  icon: CheckboxCheckedIcon,
4459
- presetStyle: presetStyle$g,
4463
+ presetStyle: presetStyle$a,
4460
4464
  states: [
4461
4465
  ...defaultStates,
4462
4466
  { selector: ":checked", label: "Checked" },
@@ -4468,27 +4472,27 @@ const meta$f = {
4468
4472
  { selector: ":read-write", label: "Read Write" }
4469
4473
  ]
4470
4474
  };
4471
- const presetStyle$f = {
4475
+ const presetStyle$9 = {
4472
4476
  div
4473
4477
  };
4474
4478
  const meta$e = {
4475
4479
  type: "container",
4476
4480
  icon: VimeoIcon,
4477
4481
  states: defaultStates,
4478
- presetStyle: presetStyle$f,
4482
+ presetStyle: presetStyle$9,
4479
4483
  constraints: {
4480
4484
  relation: "ancestor",
4481
4485
  component: { $nin: ["Button", "Link", "Heading"] }
4482
4486
  }
4483
4487
  };
4484
- const presetStyle$e = {
4488
+ const presetStyle$8 = {
4485
4489
  div
4486
4490
  };
4487
4491
  const meta$d = {
4488
4492
  type: "container",
4489
4493
  icon: YoutubeIcon,
4490
4494
  states: defaultStates,
4491
- presetStyle: presetStyle$e,
4495
+ presetStyle: presetStyle$8,
4492
4496
  constraints: {
4493
4497
  relation: "ancestor",
4494
4498
  component: { $nin: ["Button", "Link", "Heading"] }
@@ -4503,7 +4507,7 @@ const meta$c = {
4503
4507
  component: { $in: ["Vimeo", "YouTube"] }
4504
4508
  }
4505
4509
  };
4506
- const presetStyle$d = {
4510
+ const presetStyle$7 = {
4507
4511
  button
4508
4512
  };
4509
4513
  const meta$b = {
@@ -4521,10 +4525,10 @@ const meta$b = {
4521
4525
  ],
4522
4526
  label: "Play Button",
4523
4527
  icon: ButtonElementIcon,
4524
- presetStyle: presetStyle$d,
4528
+ presetStyle: presetStyle$7,
4525
4529
  states: defaultStates
4526
4530
  };
4527
- const presetStyle$c = {
4531
+ const presetStyle$6 = {
4528
4532
  div
4529
4533
  };
4530
4534
  const meta$a = {
@@ -4535,7 +4539,7 @@ const meta$a = {
4535
4539
  },
4536
4540
  icon: BoxIcon,
4537
4541
  states: defaultStates,
4538
- presetStyle: presetStyle$c,
4542
+ presetStyle: presetStyle$6,
4539
4543
  category: "hidden",
4540
4544
  label: "Spinner"
4541
4545
  };
@@ -4544,7 +4548,6 @@ const meta$9 = {
4544
4548
  order: 6,
4545
4549
  type: "container",
4546
4550
  icon: XmlIcon,
4547
- stylable: false,
4548
4551
  description: "XML Node"
4549
4552
  };
4550
4553
  const meta$8 = {
@@ -4552,10 +4555,9 @@ const meta$8 = {
4552
4555
  type: "container",
4553
4556
  description: "Converts machine-readable date and time to ISO format.",
4554
4557
  icon: CalendarIcon,
4555
- stylable: false,
4556
4558
  order: 7
4557
4559
  };
4558
- const presetStyle$b = {
4560
+ const presetStyle$5 = {
4559
4561
  time
4560
4562
  };
4561
4563
  const meta$7 = {
@@ -4564,9 +4566,9 @@ const meta$7 = {
4564
4566
  description: "Converts machine-readable date and time to a human-readable format.",
4565
4567
  icon: CalendarIcon,
4566
4568
  states: defaultStates,
4567
- presetStyle: presetStyle$b
4569
+ presetStyle: presetStyle$5
4568
4570
  };
4569
- const presetStyle$a = {
4571
+ const presetStyle$4 = {
4570
4572
  select: [
4571
4573
  ...select,
4572
4574
  {
@@ -4582,7 +4584,7 @@ const meta$6 = {
4582
4584
  },
4583
4585
  type: "container",
4584
4586
  icon: SelectIcon,
4585
- presetStyle: presetStyle$a,
4587
+ presetStyle: presetStyle$4,
4586
4588
  states: [
4587
4589
  ...defaultStates,
4588
4590
  { selector: "::placeholder", label: "Placeholder" },
@@ -4592,7 +4594,7 @@ const meta$6 = {
4592
4594
  { selector: ":optional", label: "Optional" }
4593
4595
  ]
4594
4596
  };
4595
- const presetStyle$9 = {
4597
+ const presetStyle$3 = {
4596
4598
  option: [
4597
4599
  {
4598
4600
  property: "backgroundColor",
@@ -4616,7 +4618,7 @@ const meta$5 = {
4616
4618
  type: "control",
4617
4619
  description: "An item within a drop-down menu that users can select as their chosen value.",
4618
4620
  icon: ItemIcon,
4619
- presetStyle: presetStyle$9,
4621
+ presetStyle: presetStyle$3,
4620
4622
  states: [
4621
4623
  // Applies when option is being activated (clicked)
4622
4624
  { selector: ":active", label: "Active" },
@@ -4631,7 +4633,6 @@ const meta$5 = {
4631
4633
  const meta$4 = {
4632
4634
  icon: HeaderIcon,
4633
4635
  type: "container",
4634
- stylable: false,
4635
4636
  description: "Inserts children into the head of the document",
4636
4637
  constraints: [
4637
4638
  {
@@ -4648,7 +4649,6 @@ const meta$3 = {
4648
4649
  category: "hidden",
4649
4650
  icon: ResourceIcon,
4650
4651
  type: "container",
4651
- stylable: false,
4652
4652
  constraints: {
4653
4653
  relation: "parent",
4654
4654
  component: { $eq: "HeadSlot" }
@@ -4658,7 +4658,6 @@ const meta$2 = {
4658
4658
  category: "hidden",
4659
4659
  icon: WindowInfoIcon,
4660
4660
  type: "container",
4661
- stylable: false,
4662
4661
  constraints: {
4663
4662
  relation: "parent",
4664
4663
  component: { $eq: "HeadSlot" }
@@ -4668,7 +4667,6 @@ const meta$1 = {
4668
4667
  category: "hidden",
4669
4668
  icon: WindowTitleIcon,
4670
4669
  type: "container",
4671
- stylable: false,
4672
4670
  constraints: {
4673
4671
  relation: "parent",
4674
4672
  component: { $eq: "HeadSlot" }
@@ -4732,9 +4730,6 @@ const remixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object
4732
4730
  RemixForm: meta$p,
4733
4731
  RichTextLink: meta$y
4734
4732
  }, Symbol.toStringTag, { value: "Module" }));
4735
- const presetStyle$8 = {
4736
- div
4737
- };
4738
4733
  const metaCollapsible = {
4739
4734
  type: "container",
4740
4735
  constraints: [
@@ -4747,13 +4742,14 @@ const metaCollapsible = {
4747
4742
  component: { $eq: "CollapsibleContent" }
4748
4743
  }
4749
4744
  ],
4750
- presetStyle: presetStyle$8,
4745
+ presetStyle: {
4746
+ div
4747
+ },
4751
4748
  icon: CollapsibleIcon
4752
4749
  };
4753
4750
  const metaCollapsibleTrigger = {
4754
4751
  type: "container",
4755
4752
  icon: TriggerIcon,
4756
- stylable: false,
4757
4753
  constraints: {
4758
4754
  relation: "ancestor",
4759
4755
  component: { $eq: "Collapsible" }
@@ -4761,7 +4757,9 @@ const metaCollapsibleTrigger = {
4761
4757
  };
4762
4758
  const metaCollapsibleContent = {
4763
4759
  type: "container",
4764
- presetStyle: presetStyle$8,
4760
+ presetStyle: {
4761
+ div
4762
+ },
4765
4763
  icon: ContentIcon,
4766
4764
  constraints: {
4767
4765
  relation: "ancestor",
@@ -4806,19 +4804,9 @@ const buttonReset = [
4806
4804
  unit("paddingBottom", 0, "px"),
4807
4805
  unit("paddingLeft", 0, "px")
4808
4806
  ];
4809
- const presetStyle$7 = {
4810
- div
4811
- };
4812
- const titlePresetStyle = {
4813
- h2
4814
- };
4815
- const descriptionPresetStyle = {
4816
- p
4817
- };
4818
4807
  const metaDialogTrigger = {
4819
4808
  type: "container",
4820
4809
  icon: TriggerIcon,
4821
- stylable: false,
4822
4810
  constraints: {
4823
4811
  relation: "ancestor",
4824
4812
  component: { $eq: "Dialog" }
@@ -4826,7 +4814,9 @@ const metaDialogTrigger = {
4826
4814
  };
4827
4815
  const metaDialogOverlay = {
4828
4816
  type: "container",
4829
- presetStyle: presetStyle$7,
4817
+ presetStyle: {
4818
+ div
4819
+ },
4830
4820
  icon: OverlayIcon,
4831
4821
  constraints: [
4832
4822
  {
@@ -4841,7 +4831,9 @@ const metaDialogOverlay = {
4841
4831
  };
4842
4832
  const metaDialogContent = {
4843
4833
  type: "container",
4844
- presetStyle: presetStyle$7,
4834
+ presetStyle: {
4835
+ div
4836
+ },
4845
4837
  icon: ContentIcon,
4846
4838
  constraints: [
4847
4839
  {
@@ -4868,7 +4860,9 @@ const metaDialogContent = {
4868
4860
  };
4869
4861
  const metaDialogTitle = {
4870
4862
  type: "container",
4871
- presetStyle: titlePresetStyle,
4863
+ presetStyle: {
4864
+ h2
4865
+ },
4872
4866
  icon: HeadingIcon,
4873
4867
  constraints: {
4874
4868
  relation: "ancestor",
@@ -4877,7 +4871,9 @@ const metaDialogTitle = {
4877
4871
  };
4878
4872
  const metaDialogDescription = {
4879
4873
  type: "container",
4880
- presetStyle: descriptionPresetStyle,
4874
+ presetStyle: {
4875
+ p
4876
+ },
4881
4877
  icon: TextIcon,
4882
4878
  constraints: {
4883
4879
  relation: "ancestor",
@@ -4899,6 +4895,7 @@ const metaDialogClose = {
4899
4895
  };
4900
4896
  const metaDialog = {
4901
4897
  type: "container",
4898
+ icon: DialogIcon,
4902
4899
  constraints: [
4903
4900
  {
4904
4901
  relation: "descendant",
@@ -4908,17 +4905,11 @@ const metaDialog = {
4908
4905
  relation: "descendant",
4909
4906
  component: { $eq: "DialogOverlay" }
4910
4907
  }
4911
- ],
4912
- icon: DialogIcon,
4913
- stylable: false
4914
- };
4915
- const presetStyle$6 = {
4916
- div
4908
+ ]
4917
4909
  };
4918
4910
  const metaPopoverTrigger = {
4919
4911
  type: "container",
4920
4912
  icon: TriggerIcon,
4921
- stylable: false,
4922
4913
  constraints: {
4923
4914
  relation: "ancestor",
4924
4915
  component: { $eq: "Popover" }
@@ -4926,7 +4917,9 @@ const metaPopoverTrigger = {
4926
4917
  };
4927
4918
  const metaPopoverContent = {
4928
4919
  type: "container",
4929
- presetStyle: presetStyle$6,
4920
+ presetStyle: {
4921
+ div
4922
+ },
4930
4923
  icon: ContentIcon,
4931
4924
  constraints: {
4932
4925
  relation: "ancestor",
@@ -4935,6 +4928,7 @@ const metaPopoverContent = {
4935
4928
  };
4936
4929
  const metaPopover = {
4937
4930
  type: "container",
4931
+ icon: PopoverIcon,
4938
4932
  constraints: [
4939
4933
  {
4940
4934
  relation: "descendant",
@@ -4944,17 +4938,11 @@ const metaPopover = {
4944
4938
  relation: "descendant",
4945
4939
  component: { $eq: "PopoverContent" }
4946
4940
  }
4947
- ],
4948
- icon: PopoverIcon,
4949
- stylable: false
4950
- };
4951
- const presetStyle$5 = {
4952
- div
4941
+ ]
4953
4942
  };
4954
4943
  const metaTooltipTrigger = {
4955
4944
  type: "container",
4956
4945
  icon: TriggerIcon,
4957
- stylable: false,
4958
4946
  constraints: {
4959
4947
  relation: "ancestor",
4960
4948
  component: { $eq: "Tooltip" }
@@ -4963,7 +4951,9 @@ const metaTooltipTrigger = {
4963
4951
  const metaTooltipContent = {
4964
4952
  type: "container",
4965
4953
  icon: ContentIcon,
4966
- presetStyle: presetStyle$5,
4954
+ presetStyle: {
4955
+ div
4956
+ },
4967
4957
  constraints: {
4968
4958
  relation: "ancestor",
4969
4959
  component: { $eq: "Tooltip" }
@@ -4981,10 +4971,9 @@ const metaTooltip = {
4981
4971
  component: { $eq: "TooltipContent" }
4982
4972
  }
4983
4973
  ],
4984
- icon: TooltipIcon,
4985
- stylable: false
4974
+ icon: TooltipIcon
4986
4975
  };
4987
- const presetStyle$4 = {
4976
+ const presetStyle$2 = {
4988
4977
  div
4989
4978
  };
4990
4979
  const metaTabs = {
@@ -5004,7 +4993,7 @@ const metaTabs = {
5004
4993
  component: { $eq: "TabsContent" }
5005
4994
  }
5006
4995
  ],
5007
- presetStyle: presetStyle$4
4996
+ presetStyle: presetStyle$2
5008
4997
  };
5009
4998
  const metaTabsList = {
5010
4999
  type: "container",
@@ -5013,7 +5002,7 @@ const metaTabsList = {
5013
5002
  relation: "ancestor",
5014
5003
  component: { $eq: "Tabs" }
5015
5004
  },
5016
- presetStyle: presetStyle$4
5005
+ presetStyle: presetStyle$2
5017
5006
  };
5018
5007
  const metaTabsTrigger = {
5019
5008
  type: "container",
@@ -5051,24 +5040,24 @@ const metaTabsContent = {
5051
5040
  component: { $eq: "Tabs" }
5052
5041
  },
5053
5042
  indexWithinAncestor: "Tabs",
5054
- presetStyle: presetStyle$4
5043
+ presetStyle: presetStyle$2
5055
5044
  };
5056
- const presetStyle$3 = {
5045
+ const presetStyle$1 = {
5057
5046
  label
5058
5047
  };
5059
5048
  const meta = {
5060
5049
  type: "container",
5061
5050
  icon: LabelIcon,
5062
- presetStyle: presetStyle$3,
5051
+ presetStyle: presetStyle$1,
5063
5052
  states: defaultStates
5064
5053
  };
5065
- const presetStyle$2 = {
5054
+ const presetStyle = {
5066
5055
  div
5067
5056
  };
5068
5057
  const metaAccordion = {
5069
5058
  type: "container",
5070
5059
  icon: AccordionIcon,
5071
- presetStyle: presetStyle$2,
5060
+ presetStyle,
5072
5061
  constraints: [
5073
5062
  {
5074
5063
  relation: "descendant",
@@ -5095,7 +5084,7 @@ const metaAccordionItem = {
5095
5084
  }
5096
5085
  ],
5097
5086
  indexWithinAncestor: "Accordion",
5098
- presetStyle: presetStyle$2
5087
+ presetStyle
5099
5088
  };
5100
5089
  const metaAccordionHeader = {
5101
5090
  type: "container",
@@ -5153,15 +5142,14 @@ const metaAccordionContent = {
5153
5142
  relation: "ancestor",
5154
5143
  component: { $eq: "AccordionItem" }
5155
5144
  },
5156
- presetStyle: presetStyle$2
5157
- };
5158
- const presetStyle$1 = {
5159
- div
5145
+ presetStyle
5160
5146
  };
5161
5147
  const metaNavigationMenu = {
5162
5148
  type: "container",
5163
5149
  icon: NavigationMenuIcon,
5164
- presetStyle: presetStyle$1,
5150
+ presetStyle: {
5151
+ div
5152
+ },
5165
5153
  constraints: [
5166
5154
  {
5167
5155
  relation: "descendant",
@@ -5186,7 +5174,9 @@ const metaNavigationMenuList = {
5186
5174
  component: { $eq: "NavigationMenuItem" }
5187
5175
  }
5188
5176
  ],
5189
- presetStyle: presetStyle$1,
5177
+ presetStyle: {
5178
+ div
5179
+ },
5190
5180
  label: "Menu List"
5191
5181
  };
5192
5182
  const metaNavigationMenuItem = {
@@ -5196,19 +5186,19 @@ const metaNavigationMenuItem = {
5196
5186
  relation: "ancestor",
5197
5187
  component: { $eq: "NavigationMenuList" }
5198
5188
  },
5199
- presetStyle: presetStyle$1,
5189
+ presetStyle: {
5190
+ div
5191
+ },
5200
5192
  indexWithinAncestor: "NavigationMenu",
5201
5193
  label: "Menu Item"
5202
5194
  };
5203
5195
  const metaNavigationMenuTrigger = {
5204
- stylable: false,
5205
5196
  type: "container",
5206
5197
  icon: TriggerIcon,
5207
5198
  constraints: {
5208
5199
  relation: "ancestor",
5209
5200
  component: { $eq: "NavigationMenuItem" }
5210
5201
  },
5211
- presetStyle: presetStyle$1,
5212
5202
  label: "Menu Trigger"
5213
5203
  };
5214
5204
  const metaNavigationMenuContent = {
@@ -5219,12 +5209,13 @@ const metaNavigationMenuContent = {
5219
5209
  component: { $eq: "NavigationMenuItem" }
5220
5210
  },
5221
5211
  indexWithinAncestor: "NavigationMenu",
5222
- presetStyle: presetStyle$1,
5212
+ presetStyle: {
5213
+ div
5214
+ },
5223
5215
  label: "Menu Content"
5224
5216
  };
5225
5217
  const metaNavigationMenuLink = {
5226
5218
  type: "container",
5227
- stylable: false,
5228
5219
  icon: BoxIcon,
5229
5220
  constraints: [
5230
5221
  {
@@ -5236,7 +5227,6 @@ const metaNavigationMenuLink = {
5236
5227
  component: { $in: ["NavigationMenuContent", "NavigationMenuItem"] }
5237
5228
  }
5238
5229
  ],
5239
- presetStyle: presetStyle$1,
5240
5230
  label: "Accessible Link Wrapper"
5241
5231
  };
5242
5232
  const metaNavigationMenuViewport = {
@@ -5246,14 +5236,14 @@ const metaNavigationMenuViewport = {
5246
5236
  relation: "ancestor",
5247
5237
  component: { $eq: "NavigationMenu" }
5248
5238
  },
5249
- presetStyle: presetStyle$1,
5239
+ presetStyle: {
5240
+ div
5241
+ },
5250
5242
  label: "Menu Viewport"
5251
5243
  };
5252
- const presetStyle = {
5253
- div
5254
- };
5255
5244
  const metaSelect = {
5256
5245
  type: "container",
5246
+ icon: SelectIcon,
5257
5247
  constraints: [
5258
5248
  {
5259
5249
  relation: "descendant",
@@ -5263,9 +5253,7 @@ const metaSelect = {
5263
5253
  relation: "descendant",
5264
5254
  component: { $eq: "SelectContent" }
5265
5255
  }
5266
- ],
5267
- icon: SelectIcon,
5268
- stylable: false
5256
+ ]
5269
5257
  };
5270
5258
  const metaSelectTrigger = {
5271
5259
  type: "container",
@@ -5299,7 +5287,9 @@ const metaSelectValue = {
5299
5287
  const metaSelectContent = {
5300
5288
  type: "container",
5301
5289
  icon: ContentIcon,
5302
- presetStyle,
5290
+ presetStyle: {
5291
+ div
5292
+ },
5303
5293
  constraints: [
5304
5294
  {
5305
5295
  relation: "ancestor",
@@ -5314,7 +5304,9 @@ const metaSelectContent = {
5314
5304
  const metaSelectViewport = {
5315
5305
  type: "container",
5316
5306
  icon: ViewportIcon,
5317
- presetStyle,
5307
+ presetStyle: {
5308
+ div
5309
+ },
5318
5310
  constraints: [
5319
5311
  {
5320
5312
  relation: "ancestor",
@@ -5343,7 +5335,9 @@ const metaSelectItem = {
5343
5335
  component: { $eq: "SelectItemText" }
5344
5336
  }
5345
5337
  ],
5346
- presetStyle
5338
+ presetStyle: {
5339
+ div
5340
+ }
5347
5341
  };
5348
5342
  const metaSelectItemIndicator = {
5349
5343
  type: "container",
@@ -5885,6 +5879,11 @@ const copyTemplates = async (template) => {
5885
5879
  const importFrom = (importee, importer) => {
5886
5880
  return relative(dirname(importer), importee).replaceAll("\\", "/");
5887
5881
  };
5882
+ const npmrc = `force=true
5883
+ loglevel=error
5884
+ audit=false
5885
+ fund=false
5886
+ `;
5888
5887
  const prebuild = async (options) => {
5889
5888
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
5890
5889
  if (options.template.length === 0) {
@@ -5912,7 +5911,7 @@ Please check webstudio --help for more details`
5912
5911
  await rm(generatedDir, { recursive: true, force: true });
5913
5912
  const routesDir = join(appRoot, "routes");
5914
5913
  await rm(routesDir, { recursive: true, force: true });
5915
- await writeFile(join(cwd(), ".npmrc"), "force=true");
5914
+ await writeFile(join(cwd(), ".npmrc"), npmrc);
5916
5915
  for (const template of options.template) {
5917
5916
  await copyTemplates(template);
5918
5917
  }
@@ -6473,7 +6472,7 @@ const getDeploymentInstructions = (deployTarget) => {
6473
6472
  }
6474
6473
  };
6475
6474
  const name = "webstudio";
6476
- const version = "0.200.0";
6475
+ const version = "0.202.0";
6477
6476
  const description = "Webstudio CLI";
6478
6477
  const author = "Webstudio <github@webstudio.is>";
6479
6478
  const homepage = "https://webstudio.is";
@@ -6504,7 +6503,7 @@ const engines = {
6504
6503
  node: ">=20.12"
6505
6504
  };
6506
6505
  const dependencies = {
6507
- "@clack/prompts": "^0.9.0",
6506
+ "@clack/prompts": "^0.9.1",
6508
6507
  "@emotion/hash": "^0.9.2",
6509
6508
  acorn: "^8.14.0",
6510
6509
  "acorn-walk": "^8.3.4",
@@ -6525,7 +6524,8 @@ const dependencies = {
6525
6524
  const devDependencies = {
6526
6525
  "@netlify/remix-adapter": "^2.5.1",
6527
6526
  "@netlify/remix-edge-adapter": "3.4.2",
6528
- "@react-router/dev": "^7.1.1",
6527
+ "@react-router/dev": "^7.1.3",
6528
+ "@react-router/fs-routes": "^7.1.3",
6529
6529
  "@remix-run/cloudflare": "^2.15.2",
6530
6530
  "@remix-run/cloudflare-pages": "^2.15.2",
6531
6531
  "@remix-run/dev": "^2.15.2",
@@ -6546,13 +6546,13 @@ const devDependencies = {
6546
6546
  "@webstudio-is/sdk-components-react-remix": "workspace:*",
6547
6547
  "@webstudio-is/sdk-components-react-router": "workspace:*",
6548
6548
  "@webstudio-is/tsconfig": "workspace:*",
6549
- h3: "^1.13.1",
6549
+ h3: "^1.14.0",
6550
6550
  ipx: "^3.0.1",
6551
6551
  prettier: "3.4.2",
6552
6552
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
6553
- "react-router": "^7.1.1",
6553
+ "react-router": "^7.1.3",
6554
6554
  "ts-expect": "^1.3.0",
6555
- vike: "^0.4.210",
6555
+ vike: "^0.4.219",
6556
6556
  vite: "^5.4.11",
6557
6557
  vitest: "^3.0.2",
6558
6558
  wrangler: "^3.63.2"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webstudio",
3
- "version": "0.200.0",
3
+ "version": "0.202.0",
4
4
  "description": "Webstudio CLI",
5
5
  "author": "Webstudio <github@webstudio.is>",
6
6
  "homepage": "https://webstudio.is",
@@ -26,7 +26,7 @@
26
26
  "node": ">=20.12"
27
27
  },
28
28
  "dependencies": {
29
- "@clack/prompts": "^0.9.0",
29
+ "@clack/prompts": "^0.9.1",
30
30
  "@emotion/hash": "^0.9.2",
31
31
  "acorn": "^8.14.0",
32
32
  "acorn-walk": "^8.3.4",
@@ -47,7 +47,8 @@
47
47
  "devDependencies": {
48
48
  "@netlify/remix-adapter": "^2.5.1",
49
49
  "@netlify/remix-edge-adapter": "3.4.2",
50
- "@react-router/dev": "^7.1.1",
50
+ "@react-router/dev": "^7.1.3",
51
+ "@react-router/fs-routes": "^7.1.3",
51
52
  "@remix-run/cloudflare": "^2.15.2",
52
53
  "@remix-run/cloudflare-pages": "^2.15.2",
53
54
  "@remix-run/dev": "^2.15.2",
@@ -58,25 +59,25 @@
58
59
  "@types/react-dom": "^18.2.25",
59
60
  "@types/yargs": "^17.0.33",
60
61
  "@vitejs/plugin-react": "^4.3.4",
61
- "h3": "^1.13.1",
62
+ "h3": "^1.14.0",
62
63
  "ipx": "^3.0.1",
63
64
  "prettier": "3.4.2",
64
65
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
65
- "react-router": "^7.1.1",
66
+ "react-router": "^7.1.3",
66
67
  "ts-expect": "^1.3.0",
67
- "vike": "^0.4.210",
68
+ "vike": "^0.4.219",
68
69
  "vite": "^5.4.11",
69
70
  "vitest": "^3.0.2",
70
71
  "wrangler": "^3.63.2",
71
- "@webstudio-is/http-client": "0.200.0",
72
- "@webstudio-is/react-sdk": "0.200.0",
73
- "@webstudio-is/image": "0.200.0",
74
- "@webstudio-is/sdk": "0.200.0",
75
- "@webstudio-is/sdk-components-animation": "0.200.0",
76
- "@webstudio-is/sdk-components-react": "0.200.0",
77
- "@webstudio-is/sdk-components-react-radix": "0.200.0",
78
- "@webstudio-is/sdk-components-react-remix": "0.200.0",
79
- "@webstudio-is/sdk-components-react-router": "0.200.0",
72
+ "@webstudio-is/http-client": "0.202.0",
73
+ "@webstudio-is/image": "0.202.0",
74
+ "@webstudio-is/react-sdk": "0.202.0",
75
+ "@webstudio-is/sdk": "0.202.0",
76
+ "@webstudio-is/sdk-components-animation": "0.202.0",
77
+ "@webstudio-is/sdk-components-react-radix": "0.202.0",
78
+ "@webstudio-is/sdk-components-react": "0.202.0",
79
+ "@webstudio-is/sdk-components-react-remix": "0.202.0",
80
+ "@webstudio-is/sdk-components-react-router": "0.202.0",
80
81
  "@webstudio-is/tsconfig": "1.0.7"
81
82
  },
82
83
  "scripts": {
@@ -11,14 +11,14 @@
11
11
  "@remix-run/node": "2.15.2",
12
12
  "@remix-run/react": "2.15.2",
13
13
  "@remix-run/server-runtime": "2.15.2",
14
- "@webstudio-is/image": "0.200.0",
15
- "@webstudio-is/react-sdk": "0.200.0",
16
- "@webstudio-is/sdk": "0.200.0",
17
- "@webstudio-is/sdk-components-react": "0.200.0",
18
- "@webstudio-is/sdk-components-animation": "0.200.0",
19
- "@webstudio-is/sdk-components-react-radix": "0.200.0",
20
- "@webstudio-is/sdk-components-react-remix": "0.200.0",
21
- "isbot": "^5.1.19",
14
+ "@webstudio-is/image": "0.202.0",
15
+ "@webstudio-is/react-sdk": "0.202.0",
16
+ "@webstudio-is/sdk": "0.202.0",
17
+ "@webstudio-is/sdk-components-react": "0.202.0",
18
+ "@webstudio-is/sdk-components-animation": "0.202.0",
19
+ "@webstudio-is/sdk-components-react-radix": "0.202.0",
20
+ "@webstudio-is/sdk-components-react-remix": "0.202.0",
21
+ "isbot": "^5.1.21",
22
22
  "react": "18.3.0-canary-14898b6a9-20240318",
23
23
  "react-dom": "18.3.0-canary-14898b6a9-20240318"
24
24
  },
@@ -1,23 +1,19 @@
1
- FROM node:22-alpine AS development-dependencies-env
2
- COPY . /app
3
- WORKDIR /app
4
- RUN npm install
5
-
6
- FROM node:22-alpine AS production-dependencies-env
7
- COPY ./package.json package-lock.json /app/
1
+ FROM node:22-alpine AS dependencies-env
2
+ COPY .npmrc package.json /app/
8
3
  WORKDIR /app
9
4
  RUN npm install --omit=dev
10
5
 
11
- FROM node:22-alpine AS build-env
6
+ FROM dependencies-env AS build-env
12
7
  COPY . /app/
13
- COPY --from=development-dependencies-env /app/node_modules /app/node_modules
14
8
  WORKDIR /app
9
+ RUN npm install
15
10
  RUN npm run build
16
11
 
17
12
  FROM node:22-alpine
18
- COPY ./package.json package-lock.json /app/
19
- COPY --from=production-dependencies-env /app/node_modules /app/node_modules
13
+ COPY .npmrc package.json /app/
14
+ COPY --from=dependencies-env /app/node_modules /app/node_modules
20
15
  COPY --from=build-env /app/build /app/build
16
+ COPY --from=build-env /app/public /app/public
21
17
  WORKDIR /app
22
18
  # there is a DOMAINS env with comma separated allowed domains for image processing
23
19
  CMD ["npm", "run", "start"]
@@ -0,0 +1,4 @@
1
+ import { type RouteConfig } from "@react-router/dev/routes";
2
+ import { flatRoutes } from "@react-router/fs-routes";
3
+
4
+ export default flatRoutes() satisfies RouteConfig;
@@ -5,24 +5,27 @@
5
5
  "scripts": {
6
6
  "build": "react-router build",
7
7
  "dev": "react-router dev",
8
+ "start": "react-router-serve ./build/server/index.js",
8
9
  "typecheck": "tsc"
9
10
  },
10
11
  "dependencies": {
11
- "@react-router/dev": "^7.1.1",
12
- "@react-router/fs-routes": "^7.1.1",
13
- "@react-router/node": "^7.1.1",
14
- "@webstudio-is/image": "0.200.0",
15
- "@webstudio-is/react-sdk": "0.200.0",
16
- "@webstudio-is/sdk": "0.200.0",
17
- "@webstudio-is/sdk-components-animation": "0.200.0",
18
- "@webstudio-is/sdk-components-react-radix": "0.200.0",
19
- "@webstudio-is/sdk-components-react-router": "0.200.0",
20
- "@webstudio-is/sdk-components-react": "0.200.0",
21
- "h3": "^1.13.1",
12
+ "@react-router/dev": "^7.1.3",
13
+ "@react-router/fs-routes": "^7.1.3",
14
+ "@react-router/node": "^7.1.3",
15
+ "@react-router/serve": "^7.1.3",
16
+ "@webstudio-is/image": "0.202.0",
17
+ "@webstudio-is/react-sdk": "0.202.0",
18
+ "@webstudio-is/sdk": "0.202.0",
19
+ "@webstudio-is/sdk-components-animation": "0.202.0",
20
+ "@webstudio-is/sdk-components-react-radix": "0.202.0",
21
+ "@webstudio-is/sdk-components-react-router": "0.202.0",
22
+ "@webstudio-is/sdk-components-react": "0.202.0",
23
+ "h3": "^1.14.0",
22
24
  "ipx": "^3.0.1",
23
- "isbot": "^5.1.19",
25
+ "isbot": "^5.1.21",
24
26
  "react": "18.3.0-canary-14898b6a9-20240318",
25
27
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
28
+ "react-router": "^7.1.3",
26
29
  "vite": "^5.4.11"
27
30
  },
28
31
  "devDependencies": {
@@ -8,15 +8,15 @@
8
8
  "typecheck": "tsc"
9
9
  },
10
10
  "dependencies": {
11
- "@webstudio-is/image": "0.200.0",
12
- "@webstudio-is/react-sdk": "0.200.0",
13
- "@webstudio-is/sdk": "0.200.0",
14
- "@webstudio-is/sdk-components-react": "0.200.0",
15
- "@webstudio-is/sdk-components-animation": "0.200.0",
16
- "@webstudio-is/sdk-components-react-radix": "0.200.0",
11
+ "@webstudio-is/image": "0.202.0",
12
+ "@webstudio-is/react-sdk": "0.202.0",
13
+ "@webstudio-is/sdk": "0.202.0",
14
+ "@webstudio-is/sdk-components-react": "0.202.0",
15
+ "@webstudio-is/sdk-components-animation": "0.202.0",
16
+ "@webstudio-is/sdk-components-react-radix": "0.202.0",
17
17
  "react": "18.3.0-canary-14898b6a9-20240318",
18
18
  "react-dom": "18.3.0-canary-14898b6a9-20240318",
19
- "vike": "^0.4.210"
19
+ "vike": "^0.4.219"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/react": "^18.2.70",