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