webstudio 0.219.0 → 0.221.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cli.js CHANGED
@@ -29,7 +29,7 @@ import { simple } from "acorn-walk";
29
29
  import reservedIdentifiers from "reserved-identifiers";
30
30
  import { kebabCase, camelCase } from "change-case";
31
31
  import { parseFragment, defaultTreeAdapter } from "parse5";
32
- import { x as x$3 } from "tinyexec";
32
+ import { x as x$2 } from "tinyexec";
33
33
  import makeCLI from "yargs";
34
34
  const GLOBAL_CONFIG_FOLDER = envPaths("webstudio").config;
35
35
  const GLOBAL_CONFIG_FILE_NAME = "webstudio-config.json";
@@ -1286,7 +1286,10 @@ var NestingRule = (_b = class {
1286
1286
  if (declaration.breakpoint !== breakpoint) {
1287
1287
  continue;
1288
1288
  }
1289
- const { selector: nestedSelector } = declaration;
1289
+ let nestedSelector = declaration.selector;
1290
+ if (nestedSelector === ":local-link") {
1291
+ nestedSelector = "[aria-current=page]";
1292
+ }
1290
1293
  const selector = __privateGet(this, _selector) + __privateGet(this, _descendantSuffix) + nestedSelector;
1291
1294
  let style = styleBySelector.get(selector);
1292
1295
  if (style === void 0) {
@@ -1642,9 +1645,6 @@ var generateAtomic = (sheet, options) => {
1642
1645
  var AccordionIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.056 8H14.5V4.101a1.3 1.3 0 0 0-1.3-1.299H2.8a1.3 1.3 0 0 0-1.3 1.3V8H13.056ZM13.056 13.198h.145a1.3 1.3 0 0 0 1.299-1.3V8h-13v3.899a1.3 1.3 0 0 0 1.3 1.299h10.256Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m10.026 4.913.975.976.976-.976M10.026 10.111l.975.976.976-.976"/></svg>`;
1643
1646
  var AddTemplateInstanceIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.5 2H3.333A1.333 1.333 0 0 0 2 3.333V4.5M14 12.667c0 .021 0 .042-.002.063M11.5 14h1.167a1.333 1.333 0 0 0 1.331-1.27m0 0V11.5M2 11.5v1.167A1.333 1.333 0 0 0 3.333 14H4.5M7 14h2M2 7v2M8.461 4.77H14M11.23 2v5.538"/></svg>`;
1644
1647
  var AnimationGroupIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.5 8.3C6.3 7.7 7.8 8 9.3 11c.3-1.8 1.2-4.5 2.1-6M4.208 1.5H2.944A1.444 1.444 0 0 0 1.5 2.944v1.264m13 0V2.944A1.444 1.444 0 0 0 13.056 1.5h-1.264M14.5 13.056c0 .023 0 .046-.002.069M11.792 14.5h1.264a1.444 1.444 0 0 0 1.442-1.375m0 0v-1.333m-12.998 0v1.264A1.444 1.444 0 0 0 2.944 14.5h1.264m2.709-13h2.166m-2.166 13h2.166M1.5 6.917v2.166m13-2.166v2.166"/></svg>`;
1645
- var BlockquoteIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" d="M6.667 8H3.333a.667.667 0 0 1-.666-.667V5a.667.667 0 0 1 .666-.667H6A.667.667 0 0 1 6.667 5v3Zm0 0C6.667 9.667 6 10.667 4 11.667M13.333 8H10a.667.667 0 0 1-.667-.667V5A.667.667 0 0 1 10 4.333h2.667a.667.667 0 0 1 .666.667v3Zm0 0c0 1.667-.666 2.667-2.666 3.667"/></svg>`;
1646
- var BodyIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2ZM2 6h12"/></svg>`;
1647
- var BoldIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4 8h6a2.667 2.667 0 0 1 0 5.333H4.667A.667.667 0 0 1 4 12.667V3.333a.667.667 0 0 1 .667-.666h4.666a2.667 2.667 0 1 1 0 5.333"/></svg>`;
1648
1648
  var BoxIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2Z"/></svg>`;
1649
1649
  var BracesIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5.333 2h-.666a1.333 1.333 0 0 0-1.334 1.333v3.334A1.333 1.333 0 0 1 2 8a1.333 1.333 0 0 1 1.333 1.333v3.334c0 .733.6 1.333 1.334 1.333h.666M10.667 14h.666a1.333 1.333 0 0 0 1.334-1.333V9.333C12.667 8.6 13.267 8 14 8a1.333 1.333 0 0 1-1.333-1.333V3.333A1.333 1.333 0 0 0 11.333 2h-.666"/></svg>`;
1650
1650
  var ButtonElementIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path fill="currentColor" fill-rule="evenodd" d="M1.833 8a3.5 3.5 0 0 1 3.5-3.5h5.334a3.5 3.5 0 1 1 0 7H5.333a3.5 3.5 0 0 1-3.5-3.5Zm3.5-4.5a4.5 4.5 0 0 0 0 9h5.334a4.5 4.5 0 1 0 0-9H5.333ZM5.72 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm4.28-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" clip-rule="evenodd"/></svg>`;
@@ -1656,20 +1656,15 @@ var ContentBlockIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" view
1656
1656
  var ContentIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.667 5.333h4M4.666 8H10m-5.333 2.667h4M2 3.5A1.5 1.5 0 0 1 3.5 2h9A1.5 1.5 0 0 1 14 3.5v9.188c0 .724-.588 1.312-1.313 1.312H3.313A1.312 1.312 0 0 1 2 12.687V3.5Z"/></svg>`;
1657
1657
  var DialogIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path fill="#D2D2D2" d="M13.444 1H2.556C1.696 1 1 1.696 1 2.556v10.888C1 14.304 1.696 15 2.556 15h10.888c.86 0 1.556-.696 1.556-1.556V2.556C15 1.696 14.304 1 13.444 1Z"/><path fill="#fff" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.334 5.667H4.667v4.666h6.667V5.667Z"/></svg>`;
1658
1658
  var EmbedIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12 10.667 14.667 8 12 5.333M4 5.333 1.333 8 4 10.667M9.667 2.667 6.333 13.333"/></svg>`;
1659
- var FormTextAreaIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.522C14 2.682 13.318 2 12.478 2h-9C2.662 2 2 2.662 2 3.478v9.189C2 13.403 2.597 14 3.333 14ZM3.83 6.636V3.943"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m10.496 13.76 1.724-1.725 1.717-1.717"/></svg>`;
1660
1659
  var FormTextFieldIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M3.333 2.667H4a2 2 0 0 1 2 2 2 2 0 0 1 2-2h.667M8.667 13.333H8a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-.667M3.333 10.667h-.666a1.333 1.333 0 0 1-1.334-1.334V6.667a1.333 1.333 0 0 1 1.334-1.334h.666M8.667 5.333h4.666a1.333 1.333 0 0 1 1.334 1.334v2.666a1.333 1.333 0 0 1-1.334 1.334H8.667M6 4.667v6.666"/></svg>`;
1661
- var FormIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.184 5.5h.731a.75.75 0 0 0 .75-.75v-1.5a.75.75 0 0 0-.75-.75H2.085a.75.75 0 0 0-.75.75v1.5c0 .414.336.75.75.75h11.099ZM13.184 10.5h.732a.75.75 0 0 0 .75-.75v-1.5a.75.75 0 0 0-.75-.75H2.084a.75.75 0 0 0-.75.75v1.5c0 .414.336.75.75.75h11.099Z"/><path fill="currentColor" d="M6.613 14.5h.222a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-5.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5H6.613Z"/></svg>`;
1662
1660
  var HeaderIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2ZM4 4h8"/></svg>`;
1663
1661
  var HeadingIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4 8h8M4 13.333V2.667M12 13.333V2.667"/></svg>`;
1664
- var ImageIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6 7.333a1.333 1.333 0 1 0 0-2.666 1.333 1.333 0 0 0 0 2.666ZM14 10l-2.057-2.057a1.333 1.333 0 0 0-1.886 0L4 14"/></svg>`;
1665
1662
  var ItemIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M2 6h.007M5.333 10H14M5.333 6H14"/></svg>`;
1666
1663
  var LabelIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2H3.333C2.597 2 2 2.597 2 3.333v9.334C2 13.403 2.597 14 3.333 14h9.334c.736 0 1.333-.597 1.333-1.333V3.333C14 2.597 13.403 2 12.667 2Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6.476 11.074V4.926m0 6.148h3.77v-.615m-3.77.615h-.722m.722-6.148h.632m-.632 0h-.722"/></svg>`;
1667
- var LinkIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M8.943 11.771 8 12.714A3.333 3.333 0 0 1 3.286 8l.943-.943M7.057 4.229 8 3.286A3.333 3.333 0 1 1 12.714 8l-.943.943M6.114 9.886l3.772-3.772"/></svg>`;
1668
1664
  var ListItemIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" width="100%" height="100%" style="display: block;"><path d="M3.7 6.175a.85.85 0 1 1-1.7 0 .85.85 0 0 1 1.7 0Z"/><path fill-rule="evenodd" d="M5 6.175c0-.345.28-.625.625-.625h7.75a.625.625 0 1 1 0 1.25h-7.75A.625.625 0 0 1 5 6.175ZM5 10.05c0-.345.28-.625.625-.625h7.75a.625.625 0 1 1 0 1.25h-7.75A.625.625 0 0 1 5 10.05Z" clip-rule="evenodd"/></svg>`;
1669
1665
  var ListViewIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path fill="currentColor" fill-rule="evenodd" d="M3.333 2.5a.833.833 0 0 0-.833.833v9.334c0 .46.373.833.833.833h9.334c.46 0 .833-.373.833-.833V3.333a.833.833 0 0 0-.833-.833H3.333ZM1.5 3.333c0-1.012.82-1.833 1.833-1.833h9.334c1.012 0 1.833.82 1.833 1.833v9.334c0 1.012-.82 1.833-1.833 1.833H3.333A1.833 1.833 0 0 1 1.5 12.667V3.333Z" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14 6H2M14 10H2"/></svg>`;
1670
1666
  var ListIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="currentColor" width="100%" height="100%" style="display: block;"><path d="M3.7 4.35a.85.85 0 1 1-1.7 0 .85.85 0 0 1 1.7 0Z"/><path fill-rule="evenodd" d="M5 4.35c0-.346.28-.626.625-.626h7.75a.625.625 0 1 1 0 1.25h-7.75A.625.625 0 0 1 5 4.35Z" clip-rule="evenodd"/><path d="M3.7 8A.85.85 0 1 1 2 8a.85.85 0 0 1 1.7 0Z"/><path fill-rule="evenodd" d="M5 8c0-.345.28-.625.625-.625h7.75a.625.625 0 1 1 0 1.25h-7.75A.625.625 0 0 1 5 8Z" clip-rule="evenodd"/><path d="M3.7 11.65a.85.85 0 1 1-1.7 0 .85.85 0 0 1 1.7 0Z"/><path fill-rule="evenodd" d="M5 11.65c0-.346.28-.626.625-.626h7.75a.625.625 0 1 1 0 1.25h-7.75A.625.625 0 0 1 5 11.65Z" clip-rule="evenodd"/></svg>`;
1671
1667
  var MarkdownEmbedIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.667 5.333h4M4.667 8H10M14 8.75V3.5A1.5 1.5 0 0 0 12.5 2h-9A1.5 1.5 0 0 0 2 3.5v9.191c0 .725.588 1.313 1.313 1.313h4.691"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10 14.314v-4l2 2.03 2-2.03v4"/></svg>`;
1672
- var MinusIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M3.333 8h9.334"/></svg>`;
1673
1668
  var NavigationMenuIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14 7v5.833c0 .645-.597 1.167-1.333 1.167H3.333C2.597 14 2 13.478 2 12.833V7"/><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.978 2.003H2.6a.6.6 0 0 0-.6.6v1.4h11.971v-1.4a.6.6 0 0 0-.6-.6h-2.393Z"/></svg>`;
1674
1669
  var OverlayIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path fill="#D2D2D2" d="M13.444 1H2.556C1.696 1 1 1.696 1 2.556v10.888C1 14.304 1.696 15 2.556 15h10.888c.86 0 1.556-.696 1.556-1.556V2.556C15 1.696 14.304 1 13.444 1Z"/></svg>`;
1675
1670
  var PaintBrushIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6.04 7.933 5.38-5.373a1.9 1.9 0 1 1 2.687 2.687l-5.374 5.386M4.713 9.96c-1.106 0-2 .9-2 2.013 0 .887-1.666 1.014-1.333 1.347.72.733 1.66 1.347 2.667 1.347 1.466 0 2.666-1.2 2.666-2.694a2.007 2.007 0 0 0-2-2.013Z"/></svg>`;
@@ -1682,13 +1677,9 @@ var SelectIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0
1682
1677
  var SettingsIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.987 6H9.32M13.932 6h-12M14 10.5H2"/><rect width="4" height="4" x="1.932" y="8.534" fill="#fff" stroke="currentColor" rx="2"/><rect width="4" height="4" x="10.068" y="4" fill="#fff" stroke="currentColor" rx="2"/></svg>`;
1683
1678
  var SlotComponentIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.5 2H3.333A1.333 1.333 0 0 0 2 3.333V4.5M14 4.5V3.333A1.333 1.333 0 0 0 12.667 2H11.5M14 12.667c0 .021 0 .042-.002.063M11.5 14h1.167a1.333 1.333 0 0 0 1.331-1.27m0 0V11.5M2 11.5v1.167A1.333 1.333 0 0 0 3.333 14H4.5M7 2h2M7 14h2M2 7v2M14 7v2"/></svg>`;
1684
1679
  var StaggerAnimationIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14.222 5H8.778A.778.778 0 0 0 8 5.778v5.444c0 .43.348.778.778.778h5.444c.43 0 .778-.348.778-.778V5.778A.778.778 0 0 0 14.222 5ZM5.444 6H1.556A.556.556 0 0 0 1 6.556v3.888c0 .307.249.556.556.556h3.888A.556.556 0 0 0 6 10.444V6.556A.556.556 0 0 0 5.444 6Z"/></svg>`;
1685
- var SubscriptIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M2.667 3.333 8 8.667M8 3.333 2.667 8.667M13.333 12.667h-2.666c0-1 .293-1.334 1-1.667.706-.333 1.666-.78 1.666-1.667 0-.313-.113-.62-.32-.86a1.407 1.407 0 0 0-1.746-.293c-.28.16-.494.413-.6.713"/></svg>`;
1686
- var SuperscriptIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M2.667 12.667 8 7.333M8 12.667 2.667 7.333M13.333 8h-2.666c0-1 .294-1.333 1-1.667.705-.333 1.666-.777 1.666-1.665 0-.315-.113-.62-.322-.86a1.403 1.403 0 0 0-1.745-.29c-.28.159-.492.409-.6.706"/></svg>`;
1687
1680
  var SwitchIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.667 4H5.333a4 4 0 1 0 0 8h5.334a4 4 0 0 0 0-8Z"/><path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5.333 9.333a1.333 1.333 0 1 0 0-2.666 1.333 1.333 0 0 0 0 2.666Z"/></svg>`;
1688
1681
  var TabsIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.75 5H13M9.75 5H7.401A1.684 1.684 0 0 1 6 4.25v0l-.5-.75-.5-.75L4.5 2m5.25 3-1-1.5-.5-.75-.5-.75M4.5 2H3v0a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 3 14h10v0a1.5 1.5 0 0 0 1.5-1.5v0-6A1.5 1.5 0 0 0 13 5v0M4.5 2h3.25m0 0h2.375v0c.547 0 1.057.273 1.36.728l.015.022.5.75L13 5"/></svg>`;
1689
- var TextAlignLeftIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10 8H2M11.333 12H2M14 4H2"/></svg>`;
1690
1682
  var TextAnimationIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.476 4.3 7.817 3l6.935 1.817-.34 1.3m-6.245 4.386 2.601.682m.517-7.276-1.817 6.935M2 9.938V9h5v.938M3.562 14h1.875M4.5 9v5"/></svg>`;
1691
- var TextItalicIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.667 2.667h-6M9.333 13.333h-6M10 2.667 6 13.333"/></svg>`;
1692
1683
  var TextIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M2.667 4.667v-2h10.666v2M6 13.333h4M8 2.667v10.666"/></svg>`;
1693
1684
  var TooltipIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="#000" stroke-linecap="round" stroke-linejoin="round" d="M14 10a1.333 1.333 0 0 1-1.333 1.333h-8L2 14V3.333A1.333 1.333 0 0 1 3.333 2h9.334A1.333 1.333 0 0 1 14 3.333V10Z"/></svg>`;
1694
1685
  var TriggerIcon = `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="100%" height="100%" style="display: block;"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.915 7.354v-.647a1.294 1.294 0 1 0-2.587 0"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.328 6.707V6.06a1.294 1.294 0 1 0-2.587 0v.647"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6.74 6.383V2.826a1.293 1.293 0 1 0-2.586 0v6.467"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.914 7.353a1.293 1.293 0 0 1 2.587 0v1.94a5.174 5.174 0 0 1-5.174 5.174H8.034c-1.81 0-2.91-.556-3.874-1.513l-2.328-2.328a1.293 1.293 0 0 1 1.83-1.824L4.8 9.94"/></svg>`;
@@ -2484,11 +2475,6 @@ var PresetStyleDecl = z.object({
2484
2475
  property: z.string(),
2485
2476
  value: StyleValue
2486
2477
  });
2487
- z.object({
2488
- props: z.record(PropMeta),
2489
- // Props that will be always visible in properties panel.
2490
- initialProps: z.array(z.string()).optional()
2491
- });
2492
2478
  var componentCategories = [
2493
2479
  "general",
2494
2480
  "typography",
@@ -2499,22 +2485,14 @@ var componentCategories = [
2499
2485
  "localization",
2500
2486
  "radix",
2501
2487
  "xml",
2488
+ "other",
2502
2489
  "hidden",
2503
2490
  "internal"
2504
2491
  ];
2505
- var stateCategories = ["states", "component-states"];
2506
2492
  var ComponentState = z.object({
2507
- category: z.enum(stateCategories).optional(),
2508
2493
  selector: z.string(),
2509
2494
  label: z.string()
2510
2495
  });
2511
- var defaultStates = [
2512
- { selector: ":hover", label: "Hover" },
2513
- { selector: ":active", label: "Active" },
2514
- { selector: ":focus", label: "Focus" },
2515
- { selector: ":focus-visible", label: "Focus Visible" },
2516
- { selector: ":focus-within", label: "Focus Within" }
2517
- ];
2518
2496
  var ComponentContent = z.string();
2519
2497
  var ContentModel = z.object({
2520
2498
  /*
@@ -2533,11 +2511,6 @@ var ContentModel = z.object({
2533
2511
  });
2534
2512
  z.object({
2535
2513
  category: z.enum(componentCategories).optional(),
2536
- /**
2537
- * a property used as textual placeholder when no content specified while in builder
2538
- * also signals to not insert components inside unless dropped explicitly
2539
- */
2540
- placeholder: z.string().optional(),
2541
2514
  contentModel: ContentModel.optional(),
2542
2515
  // when this field is specified component receives
2543
2516
  // prop with index of same components withiin specified ancestor
@@ -2546,18 +2519,21 @@ z.object({
2546
2519
  indexWithinAncestor: z.optional(z.string()),
2547
2520
  label: z.optional(z.string()),
2548
2521
  description: z.string().optional(),
2549
- icon: z.string(),
2522
+ icon: z.string().optional(),
2550
2523
  presetStyle: z.optional(z.record(z.string(), z.array(PresetStyleDecl))),
2551
2524
  states: z.optional(z.array(ComponentState)),
2552
- order: z.number().optional()
2525
+ order: z.number().optional(),
2526
+ // properties and html attributes that will be always visible in properties panel
2527
+ initialProps: z.array(z.string()).optional(),
2528
+ props: z.record(PropMeta).optional()
2553
2529
  });
2554
2530
  var normalize_css_exports = {};
2555
2531
  __export(normalize_css_exports, {
2556
- a: () => a$b,
2532
+ a: () => a$9,
2557
2533
  address: () => address$1,
2558
2534
  article: () => article$1,
2559
2535
  aside: () => aside$1,
2560
- b: () => b$8,
2536
+ b: () => b$6,
2561
2537
  body: () => body$1,
2562
2538
  button: () => button$1,
2563
2539
  checkbox: () => checkbox$1,
@@ -2575,7 +2551,7 @@ __export(normalize_css_exports, {
2575
2551
  header: () => header$1,
2576
2552
  hr: () => hr$1,
2577
2553
  html: () => html,
2578
- i: () => i$8,
2554
+ i: () => i$a,
2579
2555
  img: () => img$1,
2580
2556
  input: () => input$1,
2581
2557
  kbd: () => kbd,
@@ -2586,7 +2562,7 @@ __export(normalize_css_exports, {
2586
2562
  nav: () => nav$1,
2587
2563
  ol: () => ol$1,
2588
2564
  optgroup: () => optgroup,
2589
- p: () => p$b,
2565
+ p: () => p$8,
2590
2566
  pre: () => pre,
2591
2567
  progress: () => progress,
2592
2568
  radio: () => radio$1,
@@ -2642,13 +2618,13 @@ var h3$1 = div$1;
2642
2618
  var h4$1 = div$1;
2643
2619
  var h5$1 = div$1;
2644
2620
  var h6$1 = div$1;
2645
- var i$8 = div$1;
2621
+ var i$a = div$1;
2646
2622
  var img$1 = div$1;
2647
- var a$b = div$1;
2623
+ var a$9 = div$1;
2648
2624
  var li$1 = div$1;
2649
2625
  var ul$1 = div$1;
2650
2626
  var ol$1 = div$1;
2651
- var p$b = div$1;
2627
+ var p$8 = div$1;
2652
2628
  var span$1 = div$1;
2653
2629
  var html = [
2654
2630
  { property: "display", value: { type: "keyword", value: "grid" } },
@@ -2697,30 +2673,21 @@ var body$1 = [
2697
2673
  {
2698
2674
  property: "border-left-width",
2699
2675
  value: { type: "unit", unit: "px", value: 1 }
2700
- }
2701
- ];
2702
- var hr$1 = [
2703
- { property: "height", value: { type: "unit", unit: "number", value: 0 } },
2704
- { property: "color", value: { type: "keyword", value: "inherit" } },
2705
- { property: "box-sizing", value: { type: "keyword", value: "border-box" } },
2706
- {
2707
- property: "border-top-width",
2708
- value: { type: "unit", unit: "px", value: 1 }
2709
- },
2710
- {
2711
- property: "border-right-width",
2712
- value: { type: "unit", unit: "px", value: 1 }
2713
2676
  },
2714
2677
  {
2715
- property: "border-bottom-width",
2716
- value: { type: "unit", unit: "px", value: 1 }
2678
+ property: "-webkit-font-smoothing",
2679
+ value: { type: "keyword", value: "antialiased" }
2717
2680
  },
2718
2681
  {
2719
- property: "border-left-width",
2720
- value: { type: "unit", unit: "px", value: 1 }
2682
+ property: "-moz-osx-font-smoothing",
2683
+ value: { type: "keyword", value: "grayscale" }
2721
2684
  }
2722
2685
  ];
2723
- var b$8 = [
2686
+ var hr$1 = [
2687
+ { property: "height", value: { type: "unit", unit: "number", value: 0 } },
2688
+ { property: "color", value: { type: "keyword", value: "inherit" } }
2689
+ ];
2690
+ var b$6 = [
2724
2691
  {
2725
2692
  property: "font-weight",
2726
2693
  value: { type: "unit", unit: "number", value: 700 }
@@ -2743,7 +2710,7 @@ var b$8 = [
2743
2710
  value: { type: "unit", unit: "px", value: 1 }
2744
2711
  }
2745
2712
  ];
2746
- var strong = b$8;
2713
+ var strong = b$6;
2747
2714
  var code$1 = [
2748
2715
  {
2749
2716
  property: "font-family",
@@ -3152,6 +3119,113 @@ var summary = [
3152
3119
  value: { type: "unit", unit: "px", value: 1 }
3153
3120
  }
3154
3121
  ];
3122
+ var tagProperty$1 = "data-ws-tag";
3123
+ var tags = [
3124
+ "div",
3125
+ "span",
3126
+ "a",
3127
+ "abbr",
3128
+ "address",
3129
+ "area",
3130
+ "article",
3131
+ "aside",
3132
+ "audio",
3133
+ "b",
3134
+ "bdi",
3135
+ "bdo",
3136
+ "blockquote",
3137
+ "body",
3138
+ "br",
3139
+ "button",
3140
+ "canvas",
3141
+ "caption",
3142
+ "cite",
3143
+ "code",
3144
+ "col",
3145
+ "colgroup",
3146
+ "data",
3147
+ "datalist",
3148
+ "dd",
3149
+ "del",
3150
+ "details",
3151
+ "dfn",
3152
+ "dialog",
3153
+ "dl",
3154
+ "dt",
3155
+ "em",
3156
+ "embed",
3157
+ "fieldset",
3158
+ "figcaption",
3159
+ "figure",
3160
+ "footer",
3161
+ "form",
3162
+ "h1",
3163
+ "h2",
3164
+ "h3",
3165
+ "h4",
3166
+ "h5",
3167
+ "h6",
3168
+ "head",
3169
+ "header",
3170
+ "hgroup",
3171
+ "hr",
3172
+ "html",
3173
+ "i",
3174
+ "iframe",
3175
+ "img",
3176
+ "input",
3177
+ "ins",
3178
+ "kbd",
3179
+ "label",
3180
+ "legend",
3181
+ "li",
3182
+ "main",
3183
+ "map",
3184
+ "mark",
3185
+ "menu",
3186
+ "meter",
3187
+ "nav",
3188
+ "object",
3189
+ "ol",
3190
+ "optgroup",
3191
+ "option",
3192
+ "output",
3193
+ "p",
3194
+ "picture",
3195
+ "pre",
3196
+ "progress",
3197
+ "q",
3198
+ "rp",
3199
+ "rt",
3200
+ "ruby",
3201
+ "s",
3202
+ "samp",
3203
+ "search",
3204
+ "section",
3205
+ "select",
3206
+ "slot",
3207
+ "small",
3208
+ "source",
3209
+ "strong",
3210
+ "sub",
3211
+ "summary",
3212
+ "sup",
3213
+ "table",
3214
+ "tbody",
3215
+ "td",
3216
+ "textarea",
3217
+ "tfoot",
3218
+ "th",
3219
+ "thead",
3220
+ "time",
3221
+ "tr",
3222
+ "track",
3223
+ "u",
3224
+ "ul",
3225
+ "var",
3226
+ "video",
3227
+ "wbr"
3228
+ ];
3155
3229
  var rootComponent = "ws:root";
3156
3230
  var rootMeta = {
3157
3231
  label: "Global Root",
@@ -3163,9 +3237,17 @@ var rootMeta = {
3163
3237
  var elementComponent = "ws:element";
3164
3238
  var elementMeta = {
3165
3239
  label: "Element",
3166
- icon: BoxIcon,
3167
3240
  // convert [object Module] to [object Object] to enable structured cloning
3168
- presetStyle: { ...normalize_css_exports }
3241
+ presetStyle: { ...normalize_css_exports },
3242
+ initialProps: [tagProperty$1, "id", "class"],
3243
+ props: {
3244
+ [tagProperty$1]: {
3245
+ type: "string",
3246
+ control: "tag",
3247
+ required: true,
3248
+ options: tags
3249
+ }
3250
+ }
3169
3251
  };
3170
3252
  var collectionComponent = "ws:collection";
3171
3253
  var collectionMeta = {
@@ -3174,6 +3256,14 @@ var collectionMeta = {
3174
3256
  contentModel: {
3175
3257
  category: "instance",
3176
3258
  children: ["instance"]
3259
+ },
3260
+ initialProps: ["data"],
3261
+ props: {
3262
+ data: {
3263
+ required: true,
3264
+ control: "json",
3265
+ type: "json"
3266
+ }
3177
3267
  }
3178
3268
  };
3179
3269
  var descendantComponent = "ws:descendant";
@@ -3185,7 +3275,33 @@ var descendantMeta = {
3185
3275
  children: []
3186
3276
  },
3187
3277
  // @todo infer possible presets
3188
- presetStyle: {}
3278
+ presetStyle: {},
3279
+ initialProps: ["selector"],
3280
+ props: {
3281
+ selector: {
3282
+ required: true,
3283
+ type: "string",
3284
+ control: "select",
3285
+ options: [
3286
+ " p",
3287
+ " h1",
3288
+ " h2",
3289
+ " h3",
3290
+ " h4",
3291
+ " h5",
3292
+ " h6",
3293
+ " :where(strong, b)",
3294
+ " :where(em, i)",
3295
+ " a",
3296
+ " img",
3297
+ " blockquote",
3298
+ " code",
3299
+ " :where(ul, ol)",
3300
+ " li",
3301
+ " hr"
3302
+ ]
3303
+ }
3304
+ }
3189
3305
  };
3190
3306
  var blockComponent = "ws:block";
3191
3307
  var blockTemplateComponent = "ws:block-template";
@@ -4288,6 +4404,7 @@ var generateJsxElement = ({
4288
4404
  context = "jsx",
4289
4405
  scope,
4290
4406
  metas,
4407
+ tagsOverrides,
4291
4408
  instance,
4292
4409
  props,
4293
4410
  dataSources,
@@ -4300,7 +4417,8 @@ var generateJsxElement = ({
4300
4417
  if (instance.component === descendantComponent) {
4301
4418
  return "";
4302
4419
  }
4303
- const hasTags = Object.keys(((_a2 = metas.get(instance.component)) == null ? void 0 : _a2.presetStyle) ?? {}).length > 0;
4420
+ const meta = metas.get(instance.component);
4421
+ const hasTags = Object.keys((meta == null ? void 0 : meta.presetStyle) ?? {}).length > 0;
4304
4422
  let generatedProps = "";
4305
4423
  const index = indexesWithinAncestors.get(instance.id);
4306
4424
  if (index !== void 0) {
@@ -4329,7 +4447,7 @@ ${tagProperty}=${JSON.stringify(instance.tag)}`;
4329
4447
  continue;
4330
4448
  }
4331
4449
  let name2 = prop.name;
4332
- if (instance.component === elementComponent || hasTags) {
4450
+ if (hasTags && !((_a2 = meta == null ? void 0 : meta.props) == null ? void 0 : _a2[prop.name])) {
4333
4451
  name2 = standardAttributesToReactProps[prop.name] ?? prop.name;
4334
4452
  }
4335
4453
  if (prop.name === showAttribute) {
@@ -4391,21 +4509,19 @@ ${name2}={${propValue}}`;
4391
4509
  `;
4392
4510
  } else if (instance.component === blockComponent) {
4393
4511
  generatedElement += children;
4394
- } else if (instance.component === elementComponent) {
4395
- const tagName = instance.tag ?? "div";
4396
- if (instance.children.length === 0) {
4397
- generatedElement += `<${tagName}${generatedProps} />
4398
- `;
4512
+ } else {
4513
+ let componentVariable;
4514
+ if (instance.component === elementComponent) {
4515
+ componentVariable = instance.tag ?? "div";
4516
+ const componentDescriptor = tagsOverrides == null ? void 0 : tagsOverrides[componentVariable];
4517
+ if (componentDescriptor !== void 0) {
4518
+ const [_importSource, importSpecifier] = componentDescriptor.split(":");
4519
+ componentVariable = scope.getName(componentDescriptor, importSpecifier);
4520
+ }
4399
4521
  } else {
4400
- generatedElement += `<${tagName}${generatedProps}>
4401
- `;
4402
- generatedElement += children;
4403
- generatedElement += `</${tagName}>
4404
- `;
4522
+ const [_namespace, shortName] = parseComponentName(instance.component);
4523
+ componentVariable = scope.getName(instance.component, shortName);
4405
4524
  }
4406
- } else {
4407
- const [_namespace, shortName] = parseComponentName(instance.component);
4408
- const componentVariable = scope.getName(instance.component, shortName);
4409
4525
  if (instance.children.length === 0) {
4410
4526
  generatedElement += `<${componentVariable}${generatedProps} />
4411
4527
  `;
@@ -4443,6 +4559,7 @@ ${name2}={${propValue}}`;
4443
4559
  var generateJsxChildren = ({
4444
4560
  scope,
4445
4561
  metas,
4562
+ tagsOverrides,
4446
4563
  children,
4447
4564
  instances,
4448
4565
  props,
@@ -4484,6 +4601,7 @@ var generateJsxChildren = ({
4484
4601
  context: "jsx",
4485
4602
  scope,
4486
4603
  metas,
4604
+ tagsOverrides,
4487
4605
  instance,
4488
4606
  props,
4489
4607
  dataSources,
@@ -4494,6 +4612,7 @@ var generateJsxChildren = ({
4494
4612
  classesMap,
4495
4613
  scope,
4496
4614
  metas,
4615
+ tagsOverrides,
4497
4616
  children: instance.children,
4498
4617
  instances,
4499
4618
  props,
@@ -4517,6 +4636,7 @@ var generateWebstudioComponent = ({
4517
4636
  props,
4518
4637
  dataSources,
4519
4638
  metas,
4639
+ tagsOverrides,
4520
4640
  classesMap
4521
4641
  }) => {
4522
4642
  const instance = instances.get(rootInstanceId);
@@ -4530,6 +4650,7 @@ var generateWebstudioComponent = ({
4530
4650
  context: "expression",
4531
4651
  scope,
4532
4652
  metas,
4653
+ tagsOverrides,
4533
4654
  instance,
4534
4655
  props,
4535
4656
  dataSources,
@@ -4539,6 +4660,7 @@ var generateWebstudioComponent = ({
4539
4660
  children: generateJsxChildren({
4540
4661
  scope,
4541
4662
  metas,
4663
+ tagsOverrides,
4542
4664
  children: instance.children,
4543
4665
  instances,
4544
4666
  props,
@@ -4714,29 +4836,34 @@ const htmlToJsx = (html2) => {
4714
4836
  }
4715
4837
  return result;
4716
4838
  };
4717
- const e$3 = {
4839
+ const o$H = {
4718
4840
  category: "general",
4719
4841
  description: "Slot is a container for content that you want to reference across the project. Changes made to a Slot's children will be reflected in all other instances of that Slot.",
4720
4842
  icon: SlotComponentIcon,
4721
- order: 5
4843
+ order: 4
4722
4844
  };
4723
- const o$2 = {
4724
- icon: ""
4725
- };
4726
- const e$2 = {
4845
+ const t$i = {};
4846
+ const e$x = {
4847
+ className: {
4848
+ required: false,
4849
+ control: "text",
4850
+ type: "string",
4851
+ description: "Classes to which the element belongs"
4852
+ },
4727
4853
  clientOnly: { required: false, control: "boolean", type: "boolean" },
4854
+ code: { required: true, control: "text", type: "string" },
4728
4855
  executeScriptOnCanvas: {
4729
4856
  required: false,
4730
4857
  control: "boolean",
4731
4858
  type: "boolean"
4732
4859
  }
4733
4860
  };
4734
- const r$b = {
4861
+ const a$8 = {
4735
4862
  category: "general",
4736
4863
  label: "HTML Embed",
4737
4864
  description: "Used to add HTML code to the page, such as an SVG or script.",
4738
4865
  icon: EmbedIcon,
4739
- order: 2,
4866
+ order: 3,
4740
4867
  contentModel: {
4741
4868
  category: "instance",
4742
4869
  children: [descendantComponent]
@@ -4752,19 +4879,31 @@ const r$b = {
4752
4879
  value: { type: "keyword", value: "collapse" }
4753
4880
  }
4754
4881
  ]
4755
- }
4756
- };
4757
- ({
4882
+ },
4883
+ initialProps: ["class", "clientOnly", "executeScriptOnCanvas"],
4758
4884
  props: {
4885
+ ...e$x,
4759
4886
  clientOnly: {
4760
- ...e$2.clientOnly
4887
+ ...e$x.clientOnly,
4888
+ description: "Activate it for any scripts that can mutate the DOM or introduce interactivity. This only affects the published site."
4761
4889
  },
4762
4890
  executeScriptOnCanvas: {
4763
- ...e$2.executeScriptOnCanvas
4891
+ ...e$x.executeScriptOnCanvas,
4892
+ label: "Run scripts on canvas",
4893
+ description: "Dangerously allow script execution on canvas without switching to preview mode. This only affects build mode, but may result in unwanted side effects inside builder!"
4894
+ },
4895
+ code: {
4896
+ required: true,
4897
+ control: "code",
4898
+ language: "html",
4899
+ type: "string"
4764
4900
  }
4765
4901
  }
4766
- });
4767
- const a$a = {
4902
+ };
4903
+ const t$h = {
4904
+ code: { required: true, control: "text", type: "string" }
4905
+ };
4906
+ const a$7 = {
4768
4907
  icon: MarkdownEmbedIcon,
4769
4908
  contentModel: {
4770
4909
  category: "instance",
@@ -4781,6 +4920,16 @@ const a$a = {
4781
4920
  value: { type: "keyword", value: "collapse" }
4782
4921
  }
4783
4922
  ]
4923
+ },
4924
+ initialProps: ["class"],
4925
+ props: {
4926
+ ...t$h,
4927
+ code: {
4928
+ required: true,
4929
+ control: "code",
4930
+ language: "markdown",
4931
+ type: "string"
4932
+ }
4784
4933
  }
4785
4934
  };
4786
4935
  var div = [
@@ -4821,13 +4970,13 @@ var h3 = div;
4821
4970
  var h4 = div;
4822
4971
  var h5 = div;
4823
4972
  var h6 = div;
4824
- var i$7 = div;
4973
+ var i$9 = div;
4825
4974
  var img = div;
4826
- var a$9 = div;
4975
+ var a$6 = div;
4827
4976
  var li = div;
4828
4977
  var ul = div;
4829
4978
  var ol = div;
4830
- var p$a = div;
4979
+ var p$7 = div;
4831
4980
  var span = div;
4832
4981
  var body = [
4833
4982
  { property: "margin-top", value: { type: "unit", unit: "number", value: 0 } },
@@ -4859,30 +5008,21 @@ var body = [
4859
5008
  {
4860
5009
  property: "border-left-width",
4861
5010
  value: { type: "unit", unit: "px", value: 1 }
4862
- }
4863
- ];
4864
- var hr = [
4865
- { property: "height", value: { type: "unit", unit: "number", value: 0 } },
4866
- { property: "color", value: { type: "keyword", value: "inherit" } },
4867
- { property: "box-sizing", value: { type: "keyword", value: "border-box" } },
4868
- {
4869
- property: "border-top-width",
4870
- value: { type: "unit", unit: "px", value: 1 }
4871
- },
4872
- {
4873
- property: "border-right-width",
4874
- value: { type: "unit", unit: "px", value: 1 }
4875
5011
  },
4876
5012
  {
4877
- property: "border-bottom-width",
4878
- value: { type: "unit", unit: "px", value: 1 }
5013
+ property: "-webkit-font-smoothing",
5014
+ value: { type: "keyword", value: "antialiased" }
4879
5015
  },
4880
5016
  {
4881
- property: "border-left-width",
4882
- value: { type: "unit", unit: "px", value: 1 }
5017
+ property: "-moz-osx-font-smoothing",
5018
+ value: { type: "keyword", value: "grayscale" }
4883
5019
  }
4884
5020
  ];
4885
- var b$7 = [
5021
+ var hr = [
5022
+ { property: "height", value: { type: "unit", unit: "number", value: 0 } },
5023
+ { property: "color", value: { type: "keyword", value: "inherit" } }
5024
+ ];
5025
+ var b$5 = [
4886
5026
  {
4887
5027
  property: "font-weight",
4888
5028
  value: { type: "unit", unit: "number", value: 700 }
@@ -5138,28 +5278,16 @@ var button = [
5138
5278
  { property: "text-transform", value: { type: "keyword", value: "none" } }
5139
5279
  ];
5140
5280
  var select = button;
5141
- const a$8 = {
5142
- body: [
5143
- ...body,
5144
- {
5145
- property: "-webkit-font-smoothing",
5146
- value: { type: "keyword", value: "antialiased" }
5147
- },
5148
- {
5149
- property: "-moz-osx-font-smoothing",
5150
- value: { type: "keyword", value: "grayscale" }
5151
- }
5152
- ]
5153
- }, n$8 = {
5154
- icon: BodyIcon,
5155
- states: defaultStates,
5156
- presetStyle: a$8
5281
+ const o$G = {};
5282
+ const i$8 = {
5283
+ presetStyle: { body },
5284
+ initialProps: ["id", "class"],
5285
+ props: o$G
5157
5286
  };
5158
- const v$3 = {
5159
- category: "general",
5160
- description: "A container for content. By default this is a Div, but the tag can be changed in settings.",
5161
- icon: BoxIcon,
5162
- states: defaultStates,
5287
+ const t$g = {
5288
+ tag: { required: false, control: "text", type: "string" }
5289
+ };
5290
+ const g$2 = {
5163
5291
  presetStyle: {
5164
5292
  div,
5165
5293
  address,
@@ -5172,11 +5300,34 @@ const v$3 = {
5172
5300
  nav,
5173
5301
  section
5174
5302
  },
5175
- order: 0
5303
+ initialProps: ["tag", "id", "class"],
5304
+ props: {
5305
+ ...t$g,
5306
+ tag: {
5307
+ required: true,
5308
+ control: "tag",
5309
+ type: "string",
5310
+ options: [
5311
+ "div",
5312
+ "header",
5313
+ "footer",
5314
+ "nav",
5315
+ "main",
5316
+ "section",
5317
+ "article",
5318
+ "aside",
5319
+ "address",
5320
+ "figure",
5321
+ "span"
5322
+ ]
5323
+ }
5324
+ }
5325
+ };
5326
+ const t$f = {
5327
+ tag: { required: false, control: "text", type: "string" }
5176
5328
  };
5177
5329
  const n$7 = {
5178
5330
  icon: TextIcon,
5179
- states: defaultStates,
5180
5331
  presetStyle: {
5181
5332
  div: [
5182
5333
  ...div,
@@ -5185,12 +5336,22 @@ const n$7 = {
5185
5336
  value: { type: "unit", unit: "em", value: 1 }
5186
5337
  }
5187
5338
  ]
5339
+ },
5340
+ initialProps: ["tag", "id", "class"],
5341
+ props: {
5342
+ ...t$f,
5343
+ tag: {
5344
+ required: true,
5345
+ control: "tag",
5346
+ type: "string",
5347
+ options: ["div", "cite", "figcaption", "span"]
5348
+ }
5188
5349
  }
5189
5350
  };
5190
- const d$6 = {
5191
- placeholder: "Heading",
5192
- icon: HeadingIcon,
5193
- states: defaultStates,
5351
+ const t$e = {
5352
+ tag: { required: false, control: "text", type: "string" }
5353
+ };
5354
+ const m$9 = {
5194
5355
  presetStyle: {
5195
5356
  h1,
5196
5357
  h2,
@@ -5198,100 +5359,114 @@ const d$6 = {
5198
5359
  h4,
5199
5360
  h5,
5200
5361
  h6
5362
+ },
5363
+ initialProps: ["tag", "id", "class"],
5364
+ props: {
5365
+ ...t$e,
5366
+ tag: {
5367
+ required: true,
5368
+ control: "tag",
5369
+ type: "string",
5370
+ options: ["h1", "h2", "h3", "h4", "h5", "h6"]
5371
+ }
5201
5372
  }
5202
5373
  };
5203
- const p$9 = {
5204
- p: p$a
5205
- }, c$5 = {
5206
- placeholder: "Paragraph",
5207
- icon: TextAlignLeftIcon,
5208
- states: defaultStates,
5209
- presetStyle: p$9
5374
+ const o$F = {};
5375
+ const i$7 = {
5376
+ presetStyle: { p: p$7 },
5377
+ initialProps: ["id", "class"],
5378
+ props: o$F
5210
5379
  };
5211
- const a$7 = {
5380
+ const e$w = {
5381
+ download: {
5382
+ required: false,
5383
+ control: "boolean",
5384
+ type: "boolean",
5385
+ description: "Whether to download the resource instead of navigating to it, and its filename if so"
5386
+ },
5387
+ prefetch: {
5388
+ required: false,
5389
+ control: "select",
5390
+ type: "string",
5391
+ options: ["none", "intent", "render", "viewport"]
5392
+ },
5393
+ preventScrollReset: { required: false, control: "boolean", type: "boolean" },
5394
+ reloadDocument: { required: false, control: "boolean", type: "boolean" },
5395
+ replace: { required: false, control: "boolean", type: "boolean" },
5396
+ target: {
5397
+ required: false,
5398
+ control: "select",
5399
+ type: "string",
5400
+ options: ["_self", "_blank", "_parent", "_top"],
5401
+ description: "Navigable for form submission"
5402
+ }
5403
+ };
5404
+ const t$d = {
5212
5405
  a: [
5213
- ...a$9,
5406
+ ...a$6,
5214
5407
  {
5215
5408
  property: "display",
5216
5409
  value: { type: "keyword", value: "inline-block" }
5217
5410
  }
5218
5411
  ]
5219
- }, n$6 = {
5220
- placeholder: "Link",
5221
- icon: LinkIcon,
5222
- presetStyle: a$7,
5223
- states: [
5224
- ...defaultStates,
5225
- {
5226
- selector: ":visited",
5227
- label: "Visited"
5228
- },
5229
- {
5230
- category: "component-states",
5231
- selector: "[aria-current=page]",
5232
- label: "Current page"
5412
+ }, p$6 = {
5413
+ presetStyle: t$d,
5414
+ states: [{ label: "Current page", selector: "[aria-current=page]" }],
5415
+ initialProps: ["id", "class", "href", "target", "prefetch", "download"],
5416
+ props: {
5417
+ ...e$w,
5418
+ href: {
5419
+ type: "string",
5420
+ control: "url",
5421
+ required: false
5233
5422
  }
5234
- ]
5423
+ }
5235
5424
  };
5236
- const p$8 = n$6;
5237
- const e$1 = {
5238
- span
5239
- }, n$5 = {
5425
+ const a$5 = p$6;
5426
+ const o$E = {};
5427
+ const e$v = {
5240
5428
  label: "Text",
5241
5429
  icon: PaintBrushIcon,
5242
- states: defaultStates,
5243
- presetStyle: e$1
5430
+ presetStyle: { span },
5431
+ initialProps: ["id", "class"],
5432
+ props: o$E
5244
5433
  };
5245
- const s$5 = {
5246
- b: b$7
5247
- }, l$5 = {
5434
+ const o$D = {};
5435
+ const p$5 = {
5248
5436
  label: "Bold Text",
5249
- icon: BoldIcon,
5250
- states: defaultStates,
5251
- presetStyle: s$5
5437
+ presetStyle: { b: b$5 },
5438
+ initialProps: ["id", "class"],
5439
+ props: o$D
5252
5440
  };
5253
- const i$6 = {
5254
- i: [
5255
- ...i$7,
5256
- {
5257
- property: "font-style",
5258
- value: { type: "keyword", value: "italic" }
5259
- }
5260
- ]
5261
- }, m$4 = {
5441
+ const o$C = {};
5442
+ const e$u = {
5262
5443
  label: "Italic Text",
5263
- icon: TextItalicIcon,
5264
- states: defaultStates,
5265
- presetStyle: i$6
5444
+ presetStyle: { i: i$9 },
5445
+ initialProps: ["id", "class"],
5446
+ props: o$C
5266
5447
  };
5267
- const s$4 = {
5268
- sup
5269
- }, c$4 = {
5448
+ const o$B = {};
5449
+ const o$A = {
5270
5450
  label: "Superscript Text",
5271
- icon: SuperscriptIcon,
5272
- states: defaultStates,
5273
- presetStyle: s$4
5451
+ presetStyle: { sup },
5452
+ initialProps: ["id", "class"],
5453
+ props: o$B
5274
5454
  };
5275
- const p$7 = {
5276
- sub
5277
- }, c$3 = {
5455
+ const o$z = {};
5456
+ const s$4 = {
5278
5457
  label: "Subscript Text",
5279
- icon: SubscriptIcon,
5280
- states: defaultStates,
5281
- presetStyle: p$7
5458
+ presetStyle: { sub },
5459
+ initialProps: ["id", "class"],
5460
+ props: o$z
5282
5461
  };
5283
- const l$4 = {
5284
- button
5285
- }, m$3 = {
5286
- icon: ButtonElementIcon,
5287
- presetStyle: l$4,
5288
- states: [
5289
- ...defaultStates,
5290
- { selector: ":disabled", label: "Disabled" },
5291
- { selector: ":enabled", label: "Enabled" }
5292
- ]
5462
+ const o$y = {};
5463
+ const e$t = {
5464
+ presetStyle: { button },
5465
+ initialProps: ["id", "class", "type", "aria-label"],
5466
+ props: o$y
5293
5467
  };
5294
- const r$a = {
5468
+ const o$x = {};
5469
+ const p$4 = {
5295
5470
  input: [
5296
5471
  ...input,
5297
5472
  {
@@ -5299,28 +5474,32 @@ const r$a = {
5299
5474
  value: { type: "keyword", value: "block" }
5300
5475
  }
5301
5476
  ]
5302
- }, c$2 = {
5303
- category: "forms",
5477
+ }, l$4 = {
5304
5478
  label: "Text Input",
5305
- description: "A single-line text input for collecting string data from your users.",
5306
- icon: FormTextFieldIcon,
5307
- presetStyle: r$a,
5308
- order: 3,
5309
- states: [
5310
- ...defaultStates,
5311
- { selector: "::placeholder", label: "Placeholder" },
5312
- { selector: ":valid", label: "Valid" },
5313
- { selector: ":invalid", label: "Invalid" },
5314
- { selector: ":required", label: "Required" },
5315
- { selector: ":optional", label: "Optional" }
5316
- // Additional states will go into submenu
5317
- //{ selector: ":disabled", label: "Disabled" },
5318
- //{ selector: ":enabled", label: "Enabled" },
5319
- //{ selector: ":read-only", label: "Read Only" },
5320
- //{ selector: ":read-write", label: "Read Write" },
5321
- ]
5479
+ presetStyle: p$4,
5480
+ initialProps: [
5481
+ "id",
5482
+ "class",
5483
+ "name",
5484
+ "value",
5485
+ "type",
5486
+ "placeholder",
5487
+ "required",
5488
+ "autofocus"
5489
+ ],
5490
+ props: o$x
5322
5491
  };
5323
- const c$1 = {
5492
+ const e$s = {
5493
+ state: {
5494
+ description: "Use this property to reveal the Success and Error states on the canvas so they can be styled. The Initial state is displayed when the page first opens. The Success and Error states are displayed depending on whether the Form submits successfully or unsuccessfully.",
5495
+ required: false,
5496
+ control: "radio",
5497
+ type: "string",
5498
+ defaultValue: "initial",
5499
+ options: ["initial", "success", "error"]
5500
+ }
5501
+ };
5502
+ const c$3 = {
5324
5503
  label: "Webhook Form",
5325
5504
  icon: WebhookFormIcon,
5326
5505
  presetStyle: {
@@ -5329,23 +5508,41 @@ const c$1 = {
5329
5508
  states: [
5330
5509
  { selector: "[data-state=error]", label: "Error" },
5331
5510
  { selector: "[data-state=success]", label: "Success" }
5332
- ]
5511
+ ],
5512
+ initialProps: ["id", "class", "state", "action"],
5513
+ props: {
5514
+ ...e$s,
5515
+ action: {
5516
+ type: "resource",
5517
+ control: "resource",
5518
+ description: "The URI of a program that processes the information submitted via the form.",
5519
+ required: false
5520
+ }
5521
+ }
5333
5522
  };
5334
- const s$3 = {
5523
+ const o$w = {};
5524
+ const r$e = {
5335
5525
  form: [
5336
5526
  ...form,
5337
5527
  { property: "min-height", value: { type: "unit", unit: "px", value: 20 } }
5338
5528
  ]
5339
- }, n$4 = {
5340
- category: "forms",
5529
+ }, p$3 = {
5341
5530
  label: "Form",
5342
- description: "Create filters, surveys, searches and more.",
5343
- icon: FormIcon,
5344
- states: defaultStates,
5345
- presetStyle: s$3,
5346
- order: 0
5531
+ presetStyle: r$e,
5532
+ initialProps: ["id", "class", "action"],
5533
+ props: o$w
5534
+ };
5535
+ const e$r = {
5536
+ optimize: {
5537
+ description: "Optimize the image for enhanced performance.",
5538
+ required: false,
5539
+ control: "boolean",
5540
+ type: "boolean",
5541
+ defaultValue: true
5542
+ },
5543
+ quality: { required: false, control: "number", type: "number" }
5347
5544
  };
5348
- const a$6 = {
5545
+ const o$v = {
5349
5546
  img: [
5350
5547
  ...img,
5351
5548
  // Otherwise on new image insert onto canvas it can overfit screen size multiple times
@@ -5367,15 +5564,34 @@ const a$6 = {
5367
5564
  value: { type: "keyword", value: "auto" }
5368
5565
  }
5369
5566
  ]
5370
- }, l$3 = {
5567
+ }, i$6 = {
5371
5568
  category: "media",
5372
5569
  description: "Add an image asset to the page. Webstudio automatically converts images to WebP or AVIF format and makes them responsive for best performance.",
5373
- icon: ImageIcon,
5374
- states: defaultStates,
5375
- presetStyle: a$6,
5376
- order: 0
5570
+ presetStyle: o$v,
5571
+ order: 0,
5572
+ initialProps: [
5573
+ "id",
5574
+ "class",
5575
+ "src",
5576
+ "width",
5577
+ "height",
5578
+ "alt",
5579
+ "loading",
5580
+ "optimize"
5581
+ ],
5582
+ props: {
5583
+ ...e$r,
5584
+ // Automatically generated props don't have the right control.
5585
+ src: {
5586
+ type: "string",
5587
+ control: "file",
5588
+ label: "Source",
5589
+ required: false
5590
+ }
5591
+ }
5377
5592
  };
5378
- const r$9 = {
5593
+ const o$u = {};
5594
+ const e$q = {
5379
5595
  blockquote: [
5380
5596
  {
5381
5597
  property: "margin-top",
@@ -5422,13 +5638,21 @@ const r$9 = {
5422
5638
  value: { type: "rgb", r: 226, g: 226, b: 226, alpha: 1 }
5423
5639
  }
5424
5640
  ]
5425
- }, i$5 = {
5426
- placeholder: "Blockquote",
5427
- icon: BlockquoteIcon,
5428
- states: defaultStates,
5429
- presetStyle: r$9
5641
+ }, r$d = {
5642
+ presetStyle: e$q,
5643
+ initialProps: ["id", "class", "cite"],
5644
+ props: o$u
5645
+ };
5646
+ const e$p = {
5647
+ ordered: {
5648
+ 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.",
5649
+ required: false,
5650
+ control: "boolean",
5651
+ type: "boolean",
5652
+ defaultValue: false
5653
+ }
5430
5654
  };
5431
- const a$5 = {
5655
+ const t$c = {
5432
5656
  ol: [
5433
5657
  ...ol,
5434
5658
  {
@@ -5459,20 +5683,19 @@ const a$5 = {
5459
5683
  value: { type: "keyword", value: "40px" }
5460
5684
  }
5461
5685
  ]
5462
- }, d$5 = {
5463
- icon: ListIcon,
5464
- states: defaultStates,
5465
- presetStyle: a$5
5686
+ }, l$3 = {
5687
+ presetStyle: t$c,
5688
+ initialProps: ["id", "class", "ordered", "start", "reversed"],
5689
+ props: e$p
5466
5690
  };
5467
- const a$4 = {
5468
- placeholder: "List item",
5469
- icon: ListItemIcon,
5470
- states: defaultStates,
5471
- presetStyle: {
5472
- li
5473
- }
5691
+ const o$t = {};
5692
+ const p$2 = {
5693
+ presetStyle: { li },
5694
+ initialProps: ["id", "class"],
5695
+ props: o$t
5474
5696
  };
5475
- const p$6 = {
5697
+ const o$s = {};
5698
+ const o$r = {
5476
5699
  hr: [
5477
5700
  ...hr,
5478
5701
  {
@@ -5500,15 +5723,15 @@ const p$6 = {
5500
5723
  value: { type: "keyword", value: "none" }
5501
5724
  }
5502
5725
  ]
5503
- }, n$3 = {
5504
- category: "general",
5505
- description: "Used to visually divide sections of content, helping to improve readability and organization within a webpage.",
5506
- icon: MinusIcon,
5507
- states: defaultStates,
5508
- presetStyle: p$6,
5509
- order: 3
5726
+ }, y$2 = {
5727
+ presetStyle: o$r,
5728
+ initialProps: ["id", "class"],
5729
+ props: o$s
5510
5730
  };
5511
- const p$5 = {
5731
+ const e$o = {
5732
+ code: { required: false, control: "text", type: "string" }
5733
+ };
5734
+ const o$q = {
5512
5735
  code: [
5513
5736
  ...code,
5514
5737
  {
@@ -5536,30 +5759,37 @@ const p$5 = {
5536
5759
  value: { type: "rgb", r: 238, g: 238, b: 238, alpha: 1 }
5537
5760
  }
5538
5761
  ]
5539
- }, i$4 = {
5540
- category: "general",
5541
- description: "Use this component when you want to display code as text on the page.",
5762
+ }, c$2 = {
5542
5763
  icon: BracesIcon,
5543
5764
  contentModel: {
5544
5765
  category: "instance",
5545
5766
  children: []
5546
5767
  },
5547
- states: defaultStates,
5548
- presetStyle: p$5,
5549
- order: 5
5768
+ presetStyle: o$q,
5769
+ initialProps: ["id", "class", "lang", "code"],
5770
+ props: {
5771
+ ...e$o,
5772
+ code: {
5773
+ required: true,
5774
+ control: "codetext",
5775
+ type: "string"
5776
+ }
5777
+ }
5550
5778
  };
5551
- const r$8 = {
5779
+ const o$p = {};
5780
+ const o$o = {
5552
5781
  label: [
5553
5782
  ...label,
5554
5783
  { property: "display", value: { type: "keyword", value: "block" } }
5555
5784
  ]
5556
- }, i$3 = {
5785
+ }, t$b = {
5557
5786
  label: "Input Label",
5558
- icon: LabelIcon,
5559
- states: defaultStates,
5560
- presetStyle: r$8
5787
+ presetStyle: o$o,
5788
+ initialProps: ["id", "class", "for"],
5789
+ props: o$p
5561
5790
  };
5562
- const l$2 = {
5791
+ const o$n = {};
5792
+ const t$a = {
5563
5793
  textarea: [
5564
5794
  ...textarea,
5565
5795
  // resize doesn't work well while on canvas
@@ -5569,32 +5799,33 @@ const l$2 = {
5569
5799
  value: { type: "keyword", value: "block" }
5570
5800
  }
5571
5801
  ]
5572
- }, n$2 = {
5573
- category: "forms",
5802
+ }, l$2 = {
5574
5803
  label: "Text Area",
5575
- description: "A multi-line text input for collecting longer string data from your users.",
5576
- icon: FormTextAreaIcon,
5577
- presetStyle: l$2,
5578
- order: 4,
5804
+ presetStyle: t$a,
5579
5805
  contentModel: {
5580
5806
  category: "instance",
5581
5807
  children: []
5582
5808
  },
5583
- states: [
5584
- ...defaultStates,
5585
- { selector: "::placeholder", label: "Placeholder" },
5586
- { selector: ":valid", label: "Valid" },
5587
- { selector: ":invalid", label: "Invalid" },
5588
- { selector: ":required", label: "Required" },
5589
- { selector: ":optional", label: "Optional" }
5590
- // Additional states will go into submenu
5591
- //{ selector: ":disabled", label: "Disabled" },
5592
- //{ selector: ":enabled", label: "Enabled" },
5593
- //{ selector: ":read-only", label: "Read Only" },
5594
- //{ selector: ":read-write", label: "Read Write" },
5595
- ]
5809
+ initialProps: [
5810
+ "id",
5811
+ "class",
5812
+ "name",
5813
+ "value",
5814
+ "placeholder",
5815
+ "required",
5816
+ "autofocus"
5817
+ ],
5818
+ props: o$n
5596
5819
  };
5597
- const a$3 = {
5820
+ const e$n = {
5821
+ value: {
5822
+ required: false,
5823
+ control: "text",
5824
+ type: "string",
5825
+ description: "Value of the form control"
5826
+ }
5827
+ };
5828
+ const r$c = {
5598
5829
  input: [
5599
5830
  ...radio,
5600
5831
  {
@@ -5602,23 +5833,22 @@ const a$3 = {
5602
5833
  value: { type: "unit", unit: "em", value: 0.5 }
5603
5834
  }
5604
5835
  ]
5605
- }, s$2 = {
5836
+ }, m$8 = {
5606
5837
  label: "Radio",
5607
5838
  icon: RadioCheckedIcon,
5608
- presetStyle: a$3,
5609
- states: [
5610
- ...defaultStates,
5611
- { selector: ":checked", label: "Checked" },
5612
- { selector: ":required", label: "Required" },
5613
- { selector: ":optional", label: "Optional" }
5614
- // Additional states will go into submenu
5615
- //{ selector: ":disabled", label: "Disabled" },
5616
- //{ selector: ":enabled", label: "Enabled" },
5617
- //{ selector: ":read-only", label: "Read Only" },
5618
- //{ selector: ":read-write", label: "Read Write" },
5619
- ]
5839
+ presetStyle: r$c,
5840
+ initialProps: ["id", "class", "name", "value", "required", "checked"],
5841
+ props: e$n
5842
+ };
5843
+ const e$m = {
5844
+ value: {
5845
+ required: false,
5846
+ control: "text",
5847
+ type: "string",
5848
+ description: "Value of the form control"
5849
+ }
5620
5850
  };
5621
- const o$1 = {
5851
+ const t$9 = {
5622
5852
  input: [
5623
5853
  ...checkbox,
5624
5854
  {
@@ -5626,101 +5856,839 @@ const o$1 = {
5626
5856
  value: { type: "unit", unit: "em", value: 0.5 }
5627
5857
  }
5628
5858
  ]
5629
- }, d$4 = {
5859
+ }, m$7 = {
5630
5860
  icon: CheckboxCheckedIcon,
5631
- presetStyle: o$1,
5632
- states: [
5633
- ...defaultStates,
5634
- { selector: ":checked", label: "Checked" },
5635
- { selector: ":required", label: "Required" },
5636
- { selector: ":optional", label: "Optional" },
5637
- { selector: ":disabled", label: "Disabled" },
5638
- { selector: ":enabled", label: "Enabled" },
5639
- { selector: ":read-only", label: "Read Only" },
5640
- { selector: ":read-write", label: "Read Write" }
5641
- ]
5861
+ presetStyle: t$9,
5862
+ initialProps: ["id", "class", "name", "value", "required", "checked"],
5863
+ props: e$m
5642
5864
  };
5643
- const m$2 = {
5644
- icon: VimeoIcon,
5645
- states: defaultStates,
5646
- contentModel: {
5647
- category: "instance",
5648
- children: ["instance"],
5649
- descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
5865
+ const e$l = {
5866
+ autopause: {
5867
+ 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.",
5868
+ required: false,
5869
+ control: "boolean",
5870
+ type: "boolean",
5871
+ defaultValue: true
5650
5872
  },
5651
- presetStyle: {
5652
- div
5653
- }
5654
- };
5655
- const p$4 = {
5656
- icon: YoutubeIcon,
5657
- states: defaultStates,
5658
- contentModel: {
5659
- category: "instance",
5660
- children: ["instance"],
5661
- descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
5873
+ autopip: {
5874
+ description: "Whether to enable the browser to enter picture-in-picture mode automatically when switching tabs or windows, where supported.",
5875
+ required: false,
5876
+ control: "boolean",
5877
+ type: "boolean"
5662
5878
  },
5663
- presetStyle: {
5664
- div
5665
- }
5666
- };
5667
- const p$3 = {
5668
- ...l$3,
5669
- category: "hidden",
5670
- label: "Preview Image",
5671
- contentModel: {
5672
- category: "none",
5673
- children: []
5674
- }
5675
- };
5676
- const m$1 = {
5677
- category: "hidden",
5678
- label: "Play Button",
5679
- icon: ButtonElementIcon,
5680
- states: defaultStates,
5681
- contentModel: {
5682
- category: "none",
5683
- children: ["instance"]
5879
+ autoplay: {
5880
+ description: "Whether to start playback of the video automatically. This feature might not work on all devices.\nSome browsers require the `muted` parameter to be set to `true` for autoplay to work.",
5881
+ required: false,
5882
+ control: "boolean",
5883
+ type: "boolean",
5884
+ defaultValue: false
5684
5885
  },
5685
- presetStyle: {
5686
- button
5687
- }
5688
- };
5689
- const s$1 = {
5690
- icon: BoxIcon,
5691
- states: defaultStates,
5692
- category: "hidden",
5693
- label: "Spinner",
5694
- contentModel: {
5695
- category: "none",
5696
- children: ["instance"]
5886
+ backgroundMode: {
5887
+ description: "Whether the player is in background mode, which hides the playback controls, enables autoplay, and loops the video.",
5888
+ required: false,
5889
+ control: "boolean",
5890
+ type: "boolean"
5697
5891
  },
5698
- presetStyle: {
5699
- div
5700
- }
5892
+ controlsColor: {
5893
+ description: "A color value of the playback controls, which is normally #00ADEF. The embed settings of the video might override this value.",
5894
+ required: false,
5895
+ control: "color",
5896
+ type: "string"
5897
+ },
5898
+ doNotTrack: {
5899
+ description: "Whether to prevent the player from tracking session data, including cookies. Keep in mind that setting this argument to true also blocks video stats.",
5900
+ required: false,
5901
+ control: "boolean",
5902
+ type: "boolean",
5903
+ defaultValue: false
5904
+ },
5905
+ interactiveParams: {
5906
+ description: "Key-value pairs representing dynamic parameters that are utilized on interactive videos with live elements, such as title=my-video,subtitle=interactive.",
5907
+ required: false,
5908
+ control: "text",
5909
+ type: "string"
5910
+ },
5911
+ keyboard: {
5912
+ description: "Whether to enable keyboard input to trigger player events. This setting doesn't affect tab control.",
5913
+ required: false,
5914
+ control: "boolean",
5915
+ type: "boolean",
5916
+ defaultValue: true
5917
+ },
5918
+ loading: {
5919
+ description: "Not a Vimeo attribute: Loading attribute for the iframe allows to eager or lazy load the source",
5920
+ required: false,
5921
+ control: "radio",
5922
+ type: "string",
5923
+ defaultValue: "lazy",
5924
+ options: ["eager", "lazy"]
5925
+ },
5926
+ loop: {
5927
+ description: "Whether to restart the video automatically after reaching the end.",
5928
+ required: false,
5929
+ control: "boolean",
5930
+ type: "boolean",
5931
+ defaultValue: false
5932
+ },
5933
+ muted: {
5934
+ description: "Whether the video is muted upon loading. The true value is required for the autoplay behavior in some browsers.",
5935
+ required: false,
5936
+ control: "boolean",
5937
+ type: "boolean",
5938
+ defaultValue: false
5939
+ },
5940
+ pip: {
5941
+ description: "Whether to include the picture-in-picture button among the player controls and enable the picture-in-picture API.",
5942
+ required: false,
5943
+ control: "boolean",
5944
+ type: "boolean",
5945
+ defaultValue: false
5946
+ },
5947
+ playsinline: {
5948
+ description: "Whether the video plays inline on supported mobile devices. To force the device to play the video in fullscreen mode instead, set this value to false.",
5949
+ required: false,
5950
+ control: "boolean",
5951
+ type: "boolean",
5952
+ defaultValue: false
5953
+ },
5954
+ quality: {
5955
+ description: "For videos on a Vimeo Plus account or higher: the playback quality of the video. Use auto for the best possible quality given available bandwidth and other factors. You can also specify 360p, 540p, 720p, 1080p, 2k, and 4k.",
5956
+ required: false,
5957
+ control: "select",
5958
+ type: "string",
5959
+ defaultValue: "auto",
5960
+ options: ["auto", "360p", "540p", "720p", "1080p", "2k", "4k"]
5961
+ },
5962
+ responsive: {
5963
+ description: "Whether to return a responsive embed code, or one that provides intelligent adjustments based on viewing conditions. We recommend this option for mobile-optimized sites.",
5964
+ required: false,
5965
+ control: "boolean",
5966
+ type: "boolean",
5967
+ defaultValue: true
5968
+ },
5969
+ showByline: {
5970
+ description: "Whether to display the video owner's name.",
5971
+ required: false,
5972
+ control: "boolean",
5973
+ type: "boolean",
5974
+ defaultValue: false
5975
+ },
5976
+ showControls: {
5977
+ description: "Whether to display the player's interactive elements, including the play bar and sharing buttons. Set this option to false for a chromeless experience. To control playback when the play/pause button is hidden, set autoplay to true, use keyboard controls (which remain active), or implement our player SDK.",
5978
+ required: false,
5979
+ control: "boolean",
5980
+ type: "boolean",
5981
+ defaultValue: true
5982
+ },
5983
+ showPortrait: {
5984
+ description: "Whether to display the video owner's portrait. Only works if either title or byline are also enabled",
5985
+ required: false,
5986
+ control: "boolean",
5987
+ type: "boolean",
5988
+ defaultValue: true
5989
+ },
5990
+ showPreview: {
5991
+ description: "Not a Vimeo attribute: Whether the preview image should be loaded from Vimeo API. Ideally don't use it, because it will show up with some delay and will make your project feel slower.",
5992
+ required: false,
5993
+ control: "boolean",
5994
+ type: "boolean",
5995
+ defaultValue: false
5996
+ },
5997
+ showTitle: {
5998
+ description: "Whether the player displays the title overlay.",
5999
+ required: false,
6000
+ control: "boolean",
6001
+ type: "boolean",
6002
+ defaultValue: false
6003
+ },
6004
+ speed: {
6005
+ description: "Whether the player displays speed controls in the preferences menu and enables the playback rate API.",
6006
+ required: false,
6007
+ control: "boolean",
6008
+ type: "boolean",
6009
+ defaultValue: false
6010
+ },
6011
+ texttrack: {
6012
+ description: `The text track to display with the video. Specify the text track by its language code (en), the language code and locale (en-US), or the language code and kind (en.captions). For this argument to work, the video must already have a text track of the given type; see our Help Center or Working with Text Track Uploads for more information.
6013
+ To enable automatically generated closed captions instead, provide the value en-x-autogen. Please note that, at the present time, automatic captions are always in English.`,
6014
+ required: false,
6015
+ control: "text",
6016
+ type: "string"
6017
+ },
6018
+ transparent: {
6019
+ description: "Whether the responsive player and transparent background are enabled.",
6020
+ required: false,
6021
+ control: "boolean",
6022
+ type: "boolean",
6023
+ defaultValue: true
6024
+ },
6025
+ url: {
6026
+ description: "The ID or the URL of the video on Vimeo. You must supply one of these values to identify the video. When the video's privacy setting is Private, you must use the URL, and the URL must include the h parameter. For more information, see Vimeo’s introductory guide.",
6027
+ required: false,
6028
+ control: "text",
6029
+ type: "string"
6030
+ }
6031
+ };
6032
+ const i$5 = [
6033
+ "id",
6034
+ "className",
6035
+ "url",
6036
+ "title",
6037
+ "quality",
6038
+ "loading",
6039
+ "showPreview",
6040
+ "autoplay",
6041
+ "doNotTrack",
6042
+ "loop",
6043
+ "muted",
6044
+ "showPortrait",
6045
+ "showByline",
6046
+ "showTitle",
6047
+ "showControls",
6048
+ "controlsColor",
6049
+ "playsinline"
6050
+ ], s$3 = {
6051
+ icon: VimeoIcon,
6052
+ contentModel: {
6053
+ category: "instance",
6054
+ children: ["instance"],
6055
+ descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6056
+ },
6057
+ presetStyle: { div },
6058
+ initialProps: i$5,
6059
+ props: e$l
5701
6060
  };
5702
- const i$2 = {
6061
+ const e$k = {
6062
+ allowFullscreen: {
6063
+ description: "Whether to allow fullscreen mode.\nOriginal parameter: `fs`",
6064
+ required: false,
6065
+ control: "boolean",
6066
+ type: "boolean",
6067
+ defaultValue: true
6068
+ },
6069
+ autoplay: {
6070
+ description: "Whether the video should autoplay.\nSome browsers require the `muted` parameter to be set to `true` for autoplay to work.",
6071
+ required: false,
6072
+ control: "boolean",
6073
+ type: "boolean",
6074
+ defaultValue: false
6075
+ },
6076
+ captionLanguage: {
6077
+ description: "Specifies the default language that the player will use to display captions.\nThe value is an ISO 639-1 two-letter language code.\nOriginal parameter: `cc_lang_pref`",
6078
+ required: false,
6079
+ control: "text",
6080
+ type: "string"
6081
+ },
6082
+ color: {
6083
+ description: `Specifies the color that will be used in the player's video progress bar to highlight the amount of the video that the viewer has already seen.
6084
+ Valid values are 'red' and 'white'.`,
6085
+ required: false,
6086
+ control: "radio",
6087
+ type: "string",
6088
+ options: ["red", "white"]
6089
+ },
6090
+ disableKeyboard: {
6091
+ description: "Whether to disable keyboard controls.\nOriginal parameter: `disablekb`",
6092
+ required: false,
6093
+ control: "boolean",
6094
+ type: "boolean",
6095
+ defaultValue: false
6096
+ },
6097
+ endTime: {
6098
+ description: "End time of the video in seconds.\nOriginal parameter: `end`",
6099
+ required: false,
6100
+ control: "number",
6101
+ type: "number"
6102
+ },
6103
+ inline: {
6104
+ description: "Whether to play inline on mobile (not fullscreen).",
6105
+ required: false,
6106
+ control: "boolean",
6107
+ type: "boolean",
6108
+ defaultValue: false
6109
+ },
6110
+ keyboard: {
6111
+ description: "Whether to enable keyboard controls.",
6112
+ required: false,
6113
+ control: "boolean",
6114
+ type: "boolean",
6115
+ defaultValue: true
6116
+ },
6117
+ language: {
6118
+ description: "Sets the player's interface language. The value is an ISO 639-1 two-letter language code or a fully specified locale.\nOriginal parameter: `hl`",
6119
+ required: false,
6120
+ control: "text",
6121
+ type: "string"
6122
+ },
6123
+ listId: {
6124
+ description: "ID of the playlist to load.\nOriginal parameter: `list`",
6125
+ required: false,
6126
+ control: "text",
6127
+ type: "string"
6128
+ },
6129
+ listType: {
6130
+ description: "Type of playlist to load.",
6131
+ required: false,
6132
+ control: "radio",
6133
+ type: "string",
6134
+ options: ["playlist", "user_uploads"]
6135
+ },
6136
+ loading: {
6137
+ description: "Loading strategy for iframe",
6138
+ required: false,
6139
+ control: "radio",
6140
+ type: "string",
6141
+ defaultValue: "lazy",
6142
+ options: ["eager", "lazy"]
6143
+ },
6144
+ loop: {
6145
+ description: "Whether the video should loop continuously.",
6146
+ required: false,
6147
+ control: "boolean",
6148
+ type: "boolean",
6149
+ defaultValue: false
6150
+ },
6151
+ muted: {
6152
+ description: "Whether the video should start muted.\nUseful for enabling autoplay in browsers that require videos to be muted.\nOriginal parameter: `mute`",
6153
+ required: false,
6154
+ control: "boolean",
6155
+ type: "boolean",
6156
+ defaultValue: false
6157
+ },
6158
+ origin: {
6159
+ description: "Your domain for API compliance (e.g., `https://yourdomain.com`).",
6160
+ required: false,
6161
+ control: "text",
6162
+ type: "string"
6163
+ },
6164
+ playlist: {
6165
+ description: "This parameter specifies a comma-separated list of video IDs to play",
6166
+ required: false,
6167
+ control: "text",
6168
+ type: "string"
6169
+ },
6170
+ privacyEnhancedMode: {
6171
+ description: `The Privacy Enhanced Mode of the YouTube embedded player prevents the use of views of embedded YouTube content from influencing the viewer’s browsing experience on YouTube.
6172
+ https://support.google.com/youtube/answer/171780?hl=en#zippy=%2Cturn-on-privacy-enhanced-mode`,
6173
+ required: false,
6174
+ control: "boolean",
6175
+ type: "boolean",
6176
+ defaultValue: true
6177
+ },
6178
+ referrer: {
6179
+ description: "Referrer URL for tracking purposes.\nOriginal parameter: `widget_referrer`",
6180
+ required: false,
6181
+ control: "text",
6182
+ type: "string"
6183
+ },
6184
+ showAnnotations: {
6185
+ description: "Whether to show annotations on the video.\nOriginal parameter: `iv_load_policy`",
6186
+ required: false,
6187
+ control: "boolean",
6188
+ type: "boolean",
6189
+ defaultValue: true
6190
+ },
6191
+ showCaptions: {
6192
+ description: "Whether captions should be shown by default.\nOriginal parameter: `cc_load_policy`",
6193
+ required: false,
6194
+ control: "boolean",
6195
+ type: "boolean",
6196
+ defaultValue: false
6197
+ },
6198
+ showControls: {
6199
+ description: "Whether to show player controls.",
6200
+ required: false,
6201
+ control: "boolean",
6202
+ type: "boolean",
6203
+ defaultValue: true
6204
+ },
6205
+ showPreview: { required: false, control: "boolean", type: "boolean" },
6206
+ showRelatedVideos: {
6207
+ description: "Whether to show related videos at the end.\nOriginal parameter: `rel`",
6208
+ required: false,
6209
+ control: "boolean",
6210
+ type: "boolean",
6211
+ defaultValue: true
6212
+ },
6213
+ startTime: {
6214
+ description: "Start time of the video in seconds.\nOriginal parameter: `start`",
6215
+ required: false,
6216
+ control: "number",
6217
+ type: "number"
6218
+ },
6219
+ url: {
6220
+ description: "The YouTube video URL or ID",
6221
+ required: false,
6222
+ control: "text",
6223
+ type: "string"
6224
+ }
6225
+ };
6226
+ const n$6 = [
6227
+ "id",
6228
+ "className",
6229
+ "url",
6230
+ "privacyEnhancedMode",
6231
+ "title",
6232
+ "loading",
6233
+ "showPreview",
6234
+ "autoplay",
6235
+ "showControls",
6236
+ "showRelatedVideos",
6237
+ "keyboard",
6238
+ "loop",
6239
+ "inline",
6240
+ "allowFullscreen",
6241
+ "showCaptions",
6242
+ "showAnnotations",
6243
+ "startTime",
6244
+ "endTime",
6245
+ "disableKeyboard",
6246
+ "referrer",
6247
+ "listType",
6248
+ "listId",
6249
+ "origin",
6250
+ "captionLanguage",
6251
+ "language",
6252
+ "color",
6253
+ "playlist"
6254
+ ], s$2 = {
6255
+ icon: YoutubeIcon,
6256
+ contentModel: {
6257
+ category: "instance",
6258
+ children: ["instance"],
6259
+ descendants: ["VimeoSpinner", "VimeoPlayButton", "VimeoPreviewImage"]
6260
+ },
6261
+ presetStyle: { div },
6262
+ initialProps: n$6,
6263
+ props: e$k
6264
+ };
6265
+ const e$j = {
6266
+ optimize: {
6267
+ description: "Optimize the image for enhanced performance.",
6268
+ required: false,
6269
+ control: "boolean",
6270
+ type: "boolean"
6271
+ },
6272
+ quality: { required: false, control: "number", type: "number" }
6273
+ };
6274
+ const i$4 = {
6275
+ ...i$6,
6276
+ category: "hidden",
6277
+ label: "Preview Image",
6278
+ contentModel: {
6279
+ category: "none",
6280
+ children: []
6281
+ },
6282
+ initialProps: i$6.initialProps,
6283
+ props: {
6284
+ ...e$j,
6285
+ // Automatically generated props don't have the right control.
6286
+ src: {
6287
+ type: "string",
6288
+ control: "file",
6289
+ label: "Source",
6290
+ required: false
6291
+ }
6292
+ }
6293
+ };
6294
+ const o$m = {};
6295
+ const c$1 = {
6296
+ category: "hidden",
6297
+ label: "Play Button",
6298
+ icon: ButtonElementIcon,
6299
+ contentModel: {
6300
+ category: "none",
6301
+ children: ["instance"]
6302
+ },
6303
+ presetStyle: { button },
6304
+ initialProps: ["id", "class"],
6305
+ props: o$m
6306
+ };
6307
+ const o$l = {};
6308
+ const c = {
6309
+ icon: BoxIcon,
6310
+ category: "hidden",
6311
+ label: "Spinner",
6312
+ contentModel: {
6313
+ category: "none",
6314
+ children: ["instance"]
6315
+ },
6316
+ presetStyle: { div },
6317
+ initialProps: ["id", "class"],
6318
+ props: o$l
6319
+ };
6320
+ const e$i = {
6321
+ href: {
6322
+ required: false,
6323
+ control: "text",
6324
+ type: "string",
6325
+ description: "Document base URL"
6326
+ },
6327
+ hreflang: {
6328
+ required: false,
6329
+ control: "text",
6330
+ type: "string",
6331
+ description: "Language of the linked resource"
6332
+ },
6333
+ rel: {
6334
+ required: false,
6335
+ control: "text",
6336
+ type: "string",
6337
+ description: "Relationship between the location in the document containing the hyperlink and the destination resource"
6338
+ },
6339
+ tag: { required: false, control: "text", type: "string", defaultValue: "" },
6340
+ xmlns: { required: false, control: "text", type: "string" },
6341
+ "xmlns:xhtml": { required: false, control: "text", type: "string" }
6342
+ };
6343
+ const m$6 = {
5703
6344
  category: "xml",
5704
6345
  order: 6,
5705
6346
  icon: XmlIcon,
5706
- description: "XML Node"
6347
+ description: "XML Node",
6348
+ initialProps: ["tag"],
6349
+ props: e$i
5707
6350
  };
5708
- const a$2 = {
6351
+ const e$h = {
6352
+ dateStyle: {
6353
+ required: false,
6354
+ control: "radio",
6355
+ type: "string",
6356
+ defaultValue: "short",
6357
+ options: ["long", "short"]
6358
+ },
6359
+ datetime: {
6360
+ required: false,
6361
+ control: "text",
6362
+ type: "string",
6363
+ defaultValue: "dateTime attribute is not set",
6364
+ description: "Machine-readable value"
6365
+ }
6366
+ };
6367
+ const a$4 = {
5709
6368
  category: "xml",
5710
6369
  description: "Converts machine-readable date and time to ISO format.",
5711
6370
  icon: CalendarIcon,
5712
- order: 7
6371
+ order: 7,
6372
+ initialProps: ["datetime", "dateStyle"],
6373
+ props: e$h
5713
6374
  };
5714
- const r$7 = {
5715
- time
5716
- }, s = {
6375
+ const e$g = {
6376
+ country: {
6377
+ required: false,
6378
+ control: "select",
6379
+ type: "string",
6380
+ defaultValue: "GB",
6381
+ options: [
6382
+ "AF",
6383
+ "AL",
6384
+ "DZ",
6385
+ "AS",
6386
+ "AD",
6387
+ "AO",
6388
+ "AI",
6389
+ "AQ",
6390
+ "AG",
6391
+ "AR",
6392
+ "AM",
6393
+ "AW",
6394
+ "AU",
6395
+ "AT",
6396
+ "AZ",
6397
+ "BS",
6398
+ "BH",
6399
+ "BD",
6400
+ "BB",
6401
+ "BY",
6402
+ "BE",
6403
+ "BZ",
6404
+ "BJ",
6405
+ "BM",
6406
+ "BT",
6407
+ "BO",
6408
+ "BA",
6409
+ "BW",
6410
+ "BR",
6411
+ "BN",
6412
+ "BG",
6413
+ "BF",
6414
+ "BI",
6415
+ "CV",
6416
+ "KH",
6417
+ "CM",
6418
+ "CA",
6419
+ "KY",
6420
+ "CF",
6421
+ "TD",
6422
+ "CL",
6423
+ "CN",
6424
+ "CO",
6425
+ "KM",
6426
+ "CG",
6427
+ "CD",
6428
+ "CR",
6429
+ "HR",
6430
+ "CU",
6431
+ "CY",
6432
+ "CZ",
6433
+ "DK",
6434
+ "DJ",
6435
+ "DM",
6436
+ "DO",
6437
+ "EC",
6438
+ "EG",
6439
+ "SV",
6440
+ "GQ",
6441
+ "ER",
6442
+ "EE",
6443
+ "SZ",
6444
+ "ET",
6445
+ "FJ",
6446
+ "FI",
6447
+ "FR",
6448
+ "GA",
6449
+ "GM",
6450
+ "GE",
6451
+ "DE",
6452
+ "GH",
6453
+ "GR",
6454
+ "GD",
6455
+ "GT",
6456
+ "GN",
6457
+ "GW",
6458
+ "GY",
6459
+ "HT",
6460
+ "HN",
6461
+ "HU",
6462
+ "IS",
6463
+ "IN",
6464
+ "ID",
6465
+ "IR",
6466
+ "IQ",
6467
+ "IE",
6468
+ "IL",
6469
+ "IT",
6470
+ "JM",
6471
+ "JP",
6472
+ "JO",
6473
+ "KZ",
6474
+ "KE",
6475
+ "KI",
6476
+ "KP",
6477
+ "KR",
6478
+ "KW",
6479
+ "KG",
6480
+ "LA",
6481
+ "LV",
6482
+ "LB",
6483
+ "LS",
6484
+ "LR",
6485
+ "LY",
6486
+ "LI",
6487
+ "LT",
6488
+ "LU",
6489
+ "MG",
6490
+ "MW",
6491
+ "MY",
6492
+ "MV",
6493
+ "ML",
6494
+ "MT",
6495
+ "MH",
6496
+ "MR",
6497
+ "MU",
6498
+ "MX",
6499
+ "FM",
6500
+ "MD",
6501
+ "MC",
6502
+ "MN",
6503
+ "ME",
6504
+ "MA",
6505
+ "MZ",
6506
+ "MM",
6507
+ "NA",
6508
+ "NR",
6509
+ "NP",
6510
+ "NL",
6511
+ "NZ",
6512
+ "NI",
6513
+ "NE",
6514
+ "NG",
6515
+ "NO",
6516
+ "OM",
6517
+ "PK",
6518
+ "PW",
6519
+ "PA",
6520
+ "PG",
6521
+ "PY",
6522
+ "PE",
6523
+ "PH",
6524
+ "PL",
6525
+ "PT",
6526
+ "QA",
6527
+ "RO",
6528
+ "RU",
6529
+ "RW",
6530
+ "KN",
6531
+ "LC",
6532
+ "VC",
6533
+ "WS",
6534
+ "SM",
6535
+ "ST",
6536
+ "SA",
6537
+ "SN",
6538
+ "RS",
6539
+ "SC",
6540
+ "SL",
6541
+ "SG",
6542
+ "SK",
6543
+ "SI",
6544
+ "SB",
6545
+ "SO",
6546
+ "ZA",
6547
+ "SS",
6548
+ "ES",
6549
+ "LK",
6550
+ "SD",
6551
+ "SR",
6552
+ "SE",
6553
+ "CH",
6554
+ "SY",
6555
+ "TW",
6556
+ "TJ",
6557
+ "TZ",
6558
+ "TH",
6559
+ "TL",
6560
+ "TG",
6561
+ "TO",
6562
+ "TT",
6563
+ "TN",
6564
+ "TR",
6565
+ "TM",
6566
+ "TV",
6567
+ "UG",
6568
+ "UA",
6569
+ "AE",
6570
+ "GB",
6571
+ "US",
6572
+ "UY",
6573
+ "UZ",
6574
+ "VU",
6575
+ "VA",
6576
+ "VE",
6577
+ "VN",
6578
+ "YE",
6579
+ "ZM",
6580
+ "ZW"
6581
+ ]
6582
+ },
6583
+ dateStyle: {
6584
+ required: false,
6585
+ control: "select",
6586
+ type: "string",
6587
+ defaultValue: "medium",
6588
+ options: ["full", "long", "medium", "short", "none"]
6589
+ },
6590
+ language: {
6591
+ required: false,
6592
+ control: "select",
6593
+ type: "string",
6594
+ defaultValue: "en",
6595
+ options: [
6596
+ "hr",
6597
+ "th",
6598
+ "tr",
6599
+ "id",
6600
+ "is",
6601
+ "cy",
6602
+ "fr",
6603
+ "af",
6604
+ "am",
6605
+ "ar",
6606
+ "az",
6607
+ "be",
6608
+ "bg",
6609
+ "bn",
6610
+ "bs",
6611
+ "ca",
6612
+ "cs",
6613
+ "da",
6614
+ "de",
6615
+ "el",
6616
+ "en",
6617
+ "es",
6618
+ "et",
6619
+ "eu",
6620
+ "fa",
6621
+ "fi",
6622
+ "ga",
6623
+ "gl",
6624
+ "gu",
6625
+ "he",
6626
+ "hi",
6627
+ "hu",
6628
+ "hy",
6629
+ "it",
6630
+ "ja",
6631
+ "ka",
6632
+ "kk",
6633
+ "km",
6634
+ "kn",
6635
+ "ko",
6636
+ "ky",
6637
+ "lb",
6638
+ "lt",
6639
+ "lv",
6640
+ "mk",
6641
+ "ml",
6642
+ "mn",
6643
+ "mr",
6644
+ "ms",
6645
+ "mt",
6646
+ "nb",
6647
+ "nl",
6648
+ "nn",
6649
+ "pl",
6650
+ "pt",
6651
+ "ro",
6652
+ "ru",
6653
+ "si",
6654
+ "sk",
6655
+ "sl",
6656
+ "sq",
6657
+ "sr",
6658
+ "sv",
6659
+ "sw",
6660
+ "ta",
6661
+ "te",
6662
+ "uk",
6663
+ "ur",
6664
+ "uz",
6665
+ "vi",
6666
+ "zh"
6667
+ ]
6668
+ },
6669
+ timeStyle: {
6670
+ required: false,
6671
+ control: "select",
6672
+ type: "string",
6673
+ defaultValue: "none",
6674
+ options: ["full", "long", "medium", "short", "none"]
6675
+ }
6676
+ };
6677
+ const r$b = {
5717
6678
  category: "localization",
5718
6679
  description: "Converts machine-readable date and time to a human-readable format.",
5719
- icon: CalendarIcon,
5720
- states: defaultStates,
5721
- presetStyle: r$7
6680
+ contentModel: {
6681
+ category: "instance",
6682
+ children: []
6683
+ },
6684
+ presetStyle: {
6685
+ time
6686
+ },
6687
+ initialProps: ["datetime", "language", "country", "dateStyle", "timeStyle"],
6688
+ props: e$g
5722
6689
  };
5723
- const r$6 = {
6690
+ const o$k = {};
6691
+ const o$j = {
5724
6692
  select: [
5725
6693
  ...select,
5726
6694
  {
@@ -5728,18 +6696,20 @@ const r$6 = {
5728
6696
  value: { type: "keyword", value: "block" }
5729
6697
  }
5730
6698
  ]
5731
- }, c = {
5732
- icon: SelectIcon,
5733
- presetStyle: r$6,
5734
- states: [
5735
- ...defaultStates,
5736
- { selector: "::placeholder", label: "Placeholder" },
5737
- { selector: ":valid", label: "Valid" },
5738
- { selector: ":invalid", label: "Invalid" },
5739
- { selector: ":required", label: "Required" },
5740
- { selector: ":optional", label: "Optional" }
5741
- ]
6699
+ }, p$1 = {
6700
+ presetStyle: o$j,
6701
+ initialProps: [
6702
+ "id",
6703
+ "class",
6704
+ "name",
6705
+ "value",
6706
+ "multiple",
6707
+ "required",
6708
+ "autofocus"
6709
+ ],
6710
+ props: o$k
5742
6711
  };
6712
+ const o$i = {};
5743
6713
  const l$1 = {
5744
6714
  option: [
5745
6715
  {
@@ -5754,10 +6724,9 @@ const l$1 = {
5754
6724
  }
5755
6725
  }
5756
6726
  ]
5757
- }, r$5 = {
6727
+ }, a$3 = {
5758
6728
  category: "hidden",
5759
6729
  description: "An item within a drop-down menu that users can select as their chosen value.",
5760
- icon: ItemIcon,
5761
6730
  presetStyle: l$1,
5762
6731
  states: [
5763
6732
  // Applies when option is being activated (clicked)
@@ -5768,38 +6737,51 @@ const l$1 = {
5768
6737
  { selector: ":default", label: "Default" },
5769
6738
  { selector: ":hover", label: "Hover" },
5770
6739
  { selector: ":disabled", label: "Disabled" }
5771
- ]
6740
+ ],
6741
+ initialProps: ["label", "value", "label", "disabled"],
6742
+ props: o$i
5772
6743
  };
5773
- const r$4 = {
6744
+ const o$h = {};
6745
+ const r$a = {
5774
6746
  icon: HeaderIcon,
5775
6747
  description: "Inserts children into the head of the document",
5776
6748
  contentModel: {
5777
6749
  category: "instance",
5778
6750
  children: ["HeadLink", "HeadMeta", "HeadTitle"]
5779
- }
6751
+ },
6752
+ props: o$h
5780
6753
  };
5781
- const p$2 = {
6754
+ const o$g = {};
6755
+ const t$8 = {
5782
6756
  icon: ResourceIcon,
5783
6757
  contentModel: {
5784
6758
  category: "none",
5785
6759
  children: []
5786
- }
6760
+ },
6761
+ initialProps: ["rel", "hrefLang", "href", "type", "as"],
6762
+ props: o$g
5787
6763
  };
5788
- const p$1 = {
6764
+ const o$f = {};
6765
+ const e$f = {
5789
6766
  icon: WindowInfoIcon,
5790
6767
  contentModel: {
5791
6768
  category: "none",
5792
6769
  children: []
5793
- }
6770
+ },
6771
+ initialProps: ["name", "property", "content"],
6772
+ props: o$f
5794
6773
  };
5795
- const r$3 = {
6774
+ const o$e = {};
6775
+ const r$9 = {
5796
6776
  icon: WindowTitleIcon,
5797
6777
  contentModel: {
5798
6778
  category: "none",
5799
6779
  children: ["text"]
5800
- }
6780
+ },
6781
+ props: o$e
5801
6782
  };
5802
- const i$1 = {
6783
+ const o$d = {};
6784
+ const i$3 = {
5803
6785
  icon: VideoIcon,
5804
6786
  contentModel: {
5805
6787
  category: "instance",
@@ -5812,67 +6794,91 @@ const i$1 = {
5812
6794
  value: { type: "unit", unit: "%", value: 100 }
5813
6795
  }
5814
6796
  ]
6797
+ },
6798
+ initialProps: [
6799
+ "id",
6800
+ "class",
6801
+ "width",
6802
+ "height",
6803
+ "src",
6804
+ "autoPlay",
6805
+ "controls",
6806
+ "loop",
6807
+ "muted",
6808
+ "preload",
6809
+ "playsInline"
6810
+ ],
6811
+ props: {
6812
+ ...o$d,
6813
+ // Automatically generated props don't have the right control.
6814
+ src: {
6815
+ type: "string",
6816
+ control: "file",
6817
+ label: "Source",
6818
+ required: false,
6819
+ accept: ".mp4,.webm,.mpg,.mpeg,.mov"
6820
+ }
5815
6821
  }
5816
6822
  };
5817
6823
  const baseComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5818
6824
  __proto__: null,
5819
- Blockquote: i$5,
5820
- Body: n$8,
5821
- Bold: l$5,
5822
- Box: v$3,
5823
- Button: m$3,
5824
- Checkbox: d$4,
5825
- CodeText: i$4,
5826
- Form: c$1,
5827
- Fragment: o$2,
5828
- HeadLink: p$2,
5829
- HeadMeta: p$1,
5830
- HeadSlot: r$4,
5831
- HeadTitle: r$3,
5832
- Heading: d$6,
5833
- HtmlEmbed: r$b,
5834
- Image: l$3,
5835
- Input: c$2,
5836
- Italic: m$4,
5837
- Label: i$3,
5838
- Link: n$6,
5839
- List: d$5,
5840
- ListItem: a$4,
5841
- MarkdownEmbed: a$a,
5842
- Option: r$5,
5843
- Paragraph: c$5,
5844
- RadioButton: s$2,
5845
- RemixForm: n$4,
5846
- RichTextLink: p$8,
5847
- Select: c,
5848
- Separator: n$3,
5849
- Slot: e$3,
5850
- Span: n$5,
5851
- Subscript: c$3,
5852
- Superscript: c$4,
6825
+ Blockquote: r$d,
6826
+ Body: i$8,
6827
+ Bold: p$5,
6828
+ Box: g$2,
6829
+ Button: e$t,
6830
+ Checkbox: m$7,
6831
+ CodeText: c$2,
6832
+ Form: c$3,
6833
+ Fragment: t$i,
6834
+ HeadLink: t$8,
6835
+ HeadMeta: e$f,
6836
+ HeadSlot: r$a,
6837
+ HeadTitle: r$9,
6838
+ Heading: m$9,
6839
+ HtmlEmbed: a$8,
6840
+ Image: i$6,
6841
+ Input: l$4,
6842
+ Italic: e$u,
6843
+ Label: t$b,
6844
+ Link: p$6,
6845
+ List: l$3,
6846
+ ListItem: p$2,
6847
+ MarkdownEmbed: a$7,
6848
+ Option: a$3,
6849
+ Paragraph: i$7,
6850
+ RadioButton: m$8,
6851
+ RemixForm: p$3,
6852
+ RichTextLink: a$5,
6853
+ Select: p$1,
6854
+ Separator: y$2,
6855
+ Slot: o$H,
6856
+ Span: e$v,
6857
+ Subscript: s$4,
6858
+ Superscript: o$A,
5853
6859
  Text: n$7,
5854
- Textarea: n$2,
5855
- Time: s,
5856
- Video: i$1,
5857
- Vimeo: m$2,
5858
- VimeoPlayButton: m$1,
5859
- VimeoPreviewImage: p$3,
5860
- VimeoSpinner: s$1,
5861
- XmlNode: i$2,
5862
- XmlTime: a$2,
5863
- YouTube: p$4
6860
+ Textarea: l$2,
6861
+ Time: r$b,
6862
+ Video: i$3,
6863
+ Vimeo: s$3,
6864
+ VimeoPlayButton: c$1,
6865
+ VimeoPreviewImage: i$4,
6866
+ VimeoSpinner: c,
6867
+ XmlNode: m$6,
6868
+ XmlTime: a$4,
6869
+ YouTube: s$2
5864
6870
  }, Symbol.toStringTag, { value: "Module" }));
5865
- const n$1 = (t) => new Proxy(
6871
+ const n$5 = (t2) => new Proxy(
5866
6872
  {},
5867
6873
  {
5868
6874
  get(o2, e2) {
5869
- return `${t}${e2}`;
6875
+ return `${t2}${e2}`;
5870
6876
  }
5871
6877
  }
5872
- ), r$2 = n$1(
6878
+ ), r$8 = n$5(
5873
6879
  "@webstudio-is/sdk-components-animation:"
5874
6880
  );
5875
- const a$1 = {
6881
+ const a$2 = {
5876
6882
  category: "animations",
5877
6883
  description: "Animation Group component is designed to animate its children.",
5878
6884
  icon: AnimationGroupIcon,
@@ -5882,13 +6888,67 @@ const a$1 = {
5882
6888
  category: "instance",
5883
6889
  children: [
5884
6890
  "instance",
5885
- r$2.AnimateText,
5886
- r$2.StaggerAnimation,
5887
- r$2.VideoAnimation
6891
+ r$8.AnimateText,
6892
+ r$8.StaggerAnimation,
6893
+ r$8.VideoAnimation
6894
+ ]
6895
+ },
6896
+ initialProps: ["action"],
6897
+ props: {
6898
+ action: {
6899
+ required: false,
6900
+ control: "animationAction",
6901
+ type: "animationAction",
6902
+ description: "Animation Action"
6903
+ }
6904
+ }
6905
+ };
6906
+ const e$e = {
6907
+ className: {
6908
+ required: false,
6909
+ control: "text",
6910
+ type: "string",
6911
+ description: "Classes to which the element belongs"
6912
+ },
6913
+ easing: {
6914
+ description: "Easing function applied within the sliding window.",
6915
+ required: false,
6916
+ control: "select",
6917
+ type: "string",
6918
+ defaultValue: "linear",
6919
+ options: [
6920
+ "linear",
6921
+ "easeIn",
6922
+ "easeInCubic",
6923
+ "easeInQuart",
6924
+ "easeOut",
6925
+ "easeOutCubic",
6926
+ "easeOutQuart",
6927
+ "ease",
6928
+ "easeInOutCubic",
6929
+ "easeInOutQuart"
5888
6930
  ]
6931
+ },
6932
+ slidingWindow: {
6933
+ description: `Size of the sliding window for the animation:
6934
+ - 0: Typewriter effect (no animation).
6935
+ - (0..1]: Animates one part of the text at a time.
6936
+ - (1..n]: Animates multiple parts of the text within the sliding window.`,
6937
+ required: false,
6938
+ control: "number",
6939
+ type: "number",
6940
+ defaultValue: 5
6941
+ },
6942
+ splitBy: {
6943
+ description: "Defines how the text is split for animation (e.g., by character, space, or symbol).",
6944
+ required: false,
6945
+ control: "select",
6946
+ type: "string",
6947
+ defaultValue: "char",
6948
+ options: ["char", "space", 'symbol "#"', 'symbol "~"']
5889
6949
  }
5890
6950
  };
5891
- const a = {
6951
+ const a$1 = {
5892
6952
  category: "animations",
5893
6953
  description: "Text animation allows you to split text by char or by word to animate it.",
5894
6954
  icon: TextAnimationIcon,
@@ -5898,11 +6958,48 @@ const a = {
5898
6958
  category: "none",
5899
6959
  children: ["instance"]
5900
6960
  },
5901
- presetStyle: {
5902
- div
6961
+ presetStyle: { div },
6962
+ initialProps: ["slidingWindow", "easing", "splitBy"],
6963
+ props: e$e
6964
+ };
6965
+ const e$d = {
6966
+ className: {
6967
+ required: false,
6968
+ control: "text",
6969
+ type: "string",
6970
+ description: "Classes to which the element belongs"
6971
+ },
6972
+ easing: {
6973
+ description: "Easing function applied within the sliding window.",
6974
+ required: false,
6975
+ control: "select",
6976
+ type: "string",
6977
+ defaultValue: "linear",
6978
+ options: [
6979
+ "linear",
6980
+ "easeIn",
6981
+ "easeInCubic",
6982
+ "easeInQuart",
6983
+ "easeOut",
6984
+ "easeOutCubic",
6985
+ "easeOutQuart",
6986
+ "ease",
6987
+ "easeInOutCubic",
6988
+ "easeInOutQuart"
6989
+ ]
6990
+ },
6991
+ slidingWindow: {
6992
+ description: `Size of the sliding window for the animation:
6993
+ - 0: Typewriter effect (no animation).
6994
+ - (0..1]: Animates one child at a time.
6995
+ - (1..n]: Animates multiple children within the sliding window.`,
6996
+ required: false,
6997
+ control: "number",
6998
+ type: "number",
6999
+ defaultValue: 1
5903
7000
  }
5904
7001
  };
5905
- const r$1 = {
7002
+ const r$7 = {
5906
7003
  category: "animations",
5907
7004
  description: "Stagger animation allows you to animate children elements with a sliding window.",
5908
7005
  icon: StaggerAnimationIcon,
@@ -5912,63 +7009,75 @@ const r$1 = {
5912
7009
  category: "none",
5913
7010
  children: ["instance"]
5914
7011
  },
5915
- presetStyle: {
5916
- div
5917
- }
7012
+ presetStyle: { div },
7013
+ initialProps: ["slidingWindow", "easing"],
7014
+ props: e$d
7015
+ };
7016
+ const e$c = {
7017
+ timeline: { required: false, control: "boolean", type: "boolean" }
5918
7018
  };
5919
- const p = {
7019
+ const m$5 = {
5920
7020
  icon: PlayIcon,
5921
7021
  label: "Video Animation",
5922
7022
  contentModel: {
5923
7023
  category: "none",
5924
7024
  children: ["instance"]
5925
7025
  },
5926
- presetStyle: {
5927
- div
5928
- }
7026
+ presetStyle: { div },
7027
+ props: e$c,
7028
+ initialProps: ["timeline"]
5929
7029
  };
5930
7030
  const animationComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5931
7031
  __proto__: null,
5932
- AnimateChildren: a$1,
5933
- AnimateText: a,
5934
- StaggerAnimation: r$1,
5935
- VideoAnimation: p
5936
- }, Symbol.toStringTag, { value: "Module" }));
5937
- const remixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5938
- __proto__: null,
5939
- Body: n$8,
5940
- Form: c$1,
5941
- Link: n$6,
5942
- RemixForm: n$4,
5943
- RichTextLink: p$8
7032
+ AnimateChildren: a$2,
7033
+ AnimateText: a$1,
7034
+ StaggerAnimation: r$7,
7035
+ VideoAnimation: m$5
5944
7036
  }, Symbol.toStringTag, { value: "Module" }));
5945
- const r = (t) => new Proxy(
7037
+ const r$6 = (t2) => new Proxy(
5946
7038
  {},
5947
7039
  {
5948
7040
  get(o2, e2) {
5949
- return `${t}${e2}`;
7041
+ return `${t2}${e2}`;
5950
7042
  }
5951
7043
  }
5952
- ), n = r(
7044
+ ), n$4 = r$6(
5953
7045
  "@webstudio-is/sdk-components-react-radix:"
5954
7046
  );
5955
- const g$2 = {
7047
+ const o$c = {
7048
+ disabled: {
7049
+ required: false,
7050
+ control: "boolean",
7051
+ type: "boolean",
7052
+ description: "Whether the form control is disabled"
7053
+ },
7054
+ open: {
7055
+ required: false,
7056
+ control: "boolean",
7057
+ type: "boolean",
7058
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
7059
+ }
7060
+ }, e$b = {}, t$7 = {};
7061
+ const g$1 = {
5956
7062
  icon: CollapsibleIcon,
5957
7063
  contentModel: {
5958
7064
  category: "instance",
5959
7065
  children: ["instance"],
5960
- descendants: [n.CollapsibleTrigger, n.CollapsibleContent]
7066
+ descendants: [n$4.CollapsibleTrigger, n$4.CollapsibleContent]
5961
7067
  },
5962
7068
  presetStyle: {
5963
7069
  div
5964
- }
5965
- }, b$6 = {
7070
+ },
7071
+ initialProps: ["open"],
7072
+ props: o$c
7073
+ }, m$4 = {
5966
7074
  icon: TriggerIcon,
5967
7075
  contentModel: {
5968
7076
  category: "none",
5969
7077
  children: ["instance", "rich-text"]
5970
- }
5971
- }, d$3 = {
7078
+ },
7079
+ props: e$b
7080
+ }, d$1 = {
5972
7081
  icon: ContentIcon,
5973
7082
  contentModel: {
5974
7083
  category: "none",
@@ -5976,18 +7085,34 @@ const g$2 = {
5976
7085
  },
5977
7086
  presetStyle: {
5978
7087
  div
5979
- }
7088
+ },
7089
+ props: t$7
5980
7090
  };
5981
- const o = (r2, t, p2) => ({
7091
+ const o$b = {
7092
+ open: {
7093
+ required: false,
7094
+ control: "boolean",
7095
+ type: "boolean",
7096
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
7097
+ }
7098
+ }, t$6 = {}, e$a = {}, n$3 = {}, s$1 = {}, i$2 = {
7099
+ tag: {
7100
+ required: false,
7101
+ control: "select",
7102
+ type: "string",
7103
+ options: ["h2", "h3", "h1", "h4", "h5", "h6"]
7104
+ }
7105
+ }, p = {};
7106
+ const o$a = (r2, t2, p2) => ({
5982
7107
  property: r2,
5983
- value: { type: "unit", unit: p2, value: t }
5984
- }), e = (r2, t) => ({
7108
+ value: { type: "unit", unit: p2, value: t2 }
7109
+ }), e$9 = (r2, t2) => ({
5985
7110
  property: r2,
5986
- value: { type: "keyword", value: t }
5987
- }), d$2 = (r2, t, p2, l2) => ({
7111
+ value: { type: "keyword", value: t2 }
7112
+ }), d = (r2, t2, p2, l2) => ({
5988
7113
  property: r2,
5989
- value: { type: "rgb", alpha: 1, r: t, g: p2, b: l2 }
5990
- }), b$5 = [
7114
+ value: { type: "rgb", alpha: 1, r: t2, g: p2, b: l2 }
7115
+ }), b$4 = [
5991
7116
  {
5992
7117
  property: "background-color",
5993
7118
  value: { type: "keyword", value: "transparent" }
@@ -5996,223 +7121,478 @@ const o = (r2, t, p2) => ({
5996
7121
  property: "background-image",
5997
7122
  value: { type: "keyword", value: "none" }
5998
7123
  },
5999
- o("border-top-width", 0, "px"),
6000
- o("border-right-width", 0, "px"),
6001
- o("border-bottom-width", 0, "px"),
6002
- o("border-left-width", 0, "px"),
6003
- e("border-top-style", "solid"),
6004
- e("border-right-style", "solid"),
6005
- e("border-bottom-style", "solid"),
6006
- e("border-left-style", "solid"),
6007
- d$2("border-top-color", 226, 232, 240),
6008
- d$2("border-right-color", 226, 232, 240),
6009
- d$2("border-bottom-color", 226, 232, 240),
6010
- d$2("border-left-color", 226, 232, 240),
6011
- o("padding-top", 0, "px"),
6012
- o("padding-right", 0, "px"),
6013
- o("padding-bottom", 0, "px"),
6014
- o("padding-left", 0, "px")
7124
+ o$a("border-top-width", 0, "px"),
7125
+ o$a("border-right-width", 0, "px"),
7126
+ o$a("border-bottom-width", 0, "px"),
7127
+ o$a("border-left-width", 0, "px"),
7128
+ e$9("border-top-style", "solid"),
7129
+ e$9("border-right-style", "solid"),
7130
+ e$9("border-bottom-style", "solid"),
7131
+ e$9("border-left-style", "solid"),
7132
+ d("border-top-color", 226, 232, 240),
7133
+ d("border-right-color", 226, 232, 240),
7134
+ d("border-bottom-color", 226, 232, 240),
7135
+ d("border-left-color", 226, 232, 240),
7136
+ o$a("padding-top", 0, "px"),
7137
+ o$a("padding-right", 0, "px"),
7138
+ o$a("padding-bottom", 0, "px"),
7139
+ o$a("padding-left", 0, "px")
6015
7140
  ];
6016
- const O = {
7141
+ const S$1 = {
6017
7142
  icon: TriggerIcon,
6018
7143
  contentModel: {
6019
7144
  category: "none",
6020
7145
  children: ["instance"]
6021
- }
6022
- }, b$4 = {
7146
+ },
7147
+ props: t$6
7148
+ }, b$3 = {
6023
7149
  icon: OverlayIcon,
6024
7150
  contentModel: {
6025
7151
  category: "none",
6026
7152
  children: ["instance"],
6027
- descendants: [n.DialogContent]
7153
+ descendants: [n$4.DialogContent]
6028
7154
  },
6029
- presetStyle: {
6030
- div
6031
- }
6032
- }, B = {
7155
+ presetStyle: { div },
7156
+ props: e$a
7157
+ }, O = {
6033
7158
  icon: ContentIcon,
6034
7159
  contentModel: {
6035
7160
  category: "none",
6036
7161
  children: ["instance"],
6037
7162
  descendants: [
6038
- n.DialogTitle,
6039
- n.DialogDescription,
6040
- n.DialogClose
7163
+ n$4.DialogTitle,
7164
+ n$4.DialogDescription,
7165
+ n$4.DialogClose
6041
7166
  ]
6042
7167
  },
6043
- presetStyle: {
6044
- div
6045
- }
6046
- }, E = {
7168
+ presetStyle: { div },
7169
+ props: n$3
7170
+ }, B = {
6047
7171
  icon: HeadingIcon,
6048
7172
  contentModel: {
6049
7173
  category: "none",
6050
7174
  children: ["instance", "rich-text"]
6051
7175
  },
6052
- presetStyle: {
6053
- h2
6054
- }
6055
- }, H$1 = {
7176
+ presetStyle: { h2 },
7177
+ props: i$2
7178
+ }, E = {
6056
7179
  icon: TextIcon,
6057
7180
  contentModel: {
6058
7181
  category: "none",
6059
7182
  children: ["instance", "rich-text"]
6060
7183
  },
6061
- presetStyle: {
6062
- p: p$a
6063
- }
6064
- }, R = {
7184
+ presetStyle: { p: p$7 },
7185
+ props: p
7186
+ }, H$1 = {
6065
7187
  icon: ButtonElementIcon,
6066
7188
  label: "Close Button",
6067
7189
  contentModel: {
6068
7190
  category: "none",
6069
7191
  children: ["instance", "rich-text"]
6070
7192
  },
6071
- states: defaultStates,
6072
7193
  presetStyle: {
6073
- button: [b$5, button].flat()
6074
- }
6075
- }, j = {
7194
+ button: [b$4, button].flat()
7195
+ },
7196
+ props: s$1
7197
+ }, P$1 = {
6076
7198
  icon: DialogIcon,
6077
7199
  contentModel: {
6078
7200
  category: "instance",
6079
7201
  children: ["instance"],
6080
- descendants: [n.DialogTrigger, n.DialogOverlay]
6081
- }
7202
+ descendants: [n$4.DialogTrigger, n$4.DialogOverlay]
7203
+ },
7204
+ initialProps: ["open"],
7205
+ props: o$b
6082
7206
  };
6083
- const v$2 = {
7207
+ const e$8 = {
7208
+ open: {
7209
+ required: false,
7210
+ control: "boolean",
7211
+ type: "boolean",
7212
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
7213
+ }
7214
+ }, o$9 = {}, t$5 = {
7215
+ align: {
7216
+ required: false,
7217
+ control: "radio",
7218
+ type: "string",
7219
+ defaultValue: "center",
7220
+ options: ["center", "start", "end"]
7221
+ },
7222
+ alignOffset: {
7223
+ required: false,
7224
+ control: "number",
7225
+ type: "number",
7226
+ description: "The offset in pixels from the “start“ or “end“ alignment options."
7227
+ },
7228
+ arrowPadding: { required: false, control: "number", type: "number" },
7229
+ avoidCollisions: { required: false, control: "boolean", type: "boolean" },
7230
+ hideWhenDetached: {
7231
+ required: false,
7232
+ control: "boolean",
7233
+ type: "boolean",
7234
+ defaultValue: true
7235
+ },
7236
+ side: {
7237
+ required: false,
7238
+ control: "select",
7239
+ type: "string",
7240
+ options: ["top", "right", "bottom", "left"],
7241
+ description: "The preferred alignment against the Trigger. May change when collisions occur."
7242
+ },
7243
+ sideOffset: {
7244
+ required: false,
7245
+ control: "number",
7246
+ type: "number",
7247
+ defaultValue: 4,
7248
+ description: "The distance in pixels between the Content and the Trigger."
7249
+ },
7250
+ sticky: {
7251
+ required: false,
7252
+ control: "radio",
7253
+ type: "string",
7254
+ options: ["partial", "always"]
7255
+ },
7256
+ updatePositionStrategy: {
7257
+ required: false,
7258
+ control: "radio",
7259
+ type: "string",
7260
+ options: ["always", "optimized"]
7261
+ }
7262
+ }, r$5 = {};
7263
+ const C$3 = {
6084
7264
  icon: TriggerIcon,
6085
7265
  contentModel: {
6086
7266
  category: "none",
6087
7267
  children: ["instance"]
6088
- }
6089
- }, d$1 = {
7268
+ },
7269
+ props: o$9
7270
+ }, y$1 = {
6090
7271
  icon: ContentIcon,
6091
7272
  contentModel: {
6092
7273
  category: "none",
6093
- children: ["instance"]
7274
+ children: ["instance"],
7275
+ descendants: [n$4.PopoverClose]
6094
7276
  },
6095
7277
  presetStyle: {
6096
7278
  div
6097
- }
6098
- }, l = {
7279
+ },
7280
+ initialProps: ["side", "sideOffset", "align", "alignOffset"],
7281
+ props: t$5
7282
+ }, h$2 = {
6099
7283
  icon: PopoverIcon,
6100
7284
  contentModel: {
6101
7285
  category: "instance",
6102
7286
  children: ["instance"],
6103
- descendants: [n.PopoverTrigger, n.PopoverContent]
7287
+ descendants: [n$4.PopoverTrigger, n$4.PopoverContent]
7288
+ },
7289
+ initialProps: ["open"],
7290
+ props: e$8
7291
+ }, u = {
7292
+ icon: ButtonElementIcon,
7293
+ label: "Close Button",
7294
+ contentModel: {
7295
+ category: "none",
7296
+ children: ["instance", "rich-text"]
7297
+ },
7298
+ presetStyle: {
7299
+ button: [b$4, button].flat()
7300
+ },
7301
+ props: r$5
7302
+ };
7303
+ const e$7 = {
7304
+ delayDuration: {
7305
+ description: "The delay before the Tooltip shows after the Trigger is hovered, in milliseconds. If no value is specified, the default is 700ms",
7306
+ required: false,
7307
+ control: "number",
7308
+ type: "number"
7309
+ },
7310
+ disableHoverableContent: {
7311
+ description: "When toggled, prevents the Tooltip content from showing when the Trigger is hovered.",
7312
+ required: false,
7313
+ control: "boolean",
7314
+ type: "boolean"
7315
+ },
7316
+ open: {
7317
+ required: false,
7318
+ control: "boolean",
7319
+ type: "boolean",
7320
+ description: "Show or hide the content of this component on the canvas. This will not affect the initial state of the component."
7321
+ }
7322
+ }, o$8 = {}, t$4 = {
7323
+ align: {
7324
+ required: false,
7325
+ control: "radio",
7326
+ type: "string",
7327
+ options: ["center", "start", "end"]
7328
+ },
7329
+ alignOffset: {
7330
+ required: false,
7331
+ control: "number",
7332
+ type: "number",
7333
+ description: "The offset in pixels from the “start“ or “end“ alignment options."
7334
+ },
7335
+ "aria-label": {
7336
+ description: "A more descriptive label for accessibility purpose",
7337
+ required: false,
7338
+ control: "text",
7339
+ type: "string"
7340
+ },
7341
+ arrowPadding: { required: false, control: "number", type: "number" },
7342
+ avoidCollisions: { required: false, control: "boolean", type: "boolean" },
7343
+ hideWhenDetached: {
7344
+ required: false,
7345
+ control: "boolean",
7346
+ type: "boolean",
7347
+ defaultValue: true
7348
+ },
7349
+ side: {
7350
+ required: false,
7351
+ control: "select",
7352
+ type: "string",
7353
+ options: ["top", "right", "bottom", "left"],
7354
+ description: "The preferred alignment against the Trigger. May change when collisions occur."
7355
+ },
7356
+ sideOffset: {
7357
+ required: false,
7358
+ control: "number",
7359
+ type: "number",
7360
+ defaultValue: 4,
7361
+ description: "The distance in pixels between the Content and the Trigger."
7362
+ },
7363
+ sticky: {
7364
+ required: false,
7365
+ control: "radio",
7366
+ type: "string",
7367
+ options: ["partial", "always"]
7368
+ },
7369
+ updatePositionStrategy: {
7370
+ required: false,
7371
+ control: "radio",
7372
+ type: "string",
7373
+ options: ["always", "optimized"]
6104
7374
  }
6105
7375
  };
6106
- const g$1 = {
7376
+ const g = {
6107
7377
  icon: TriggerIcon,
6108
7378
  contentModel: {
6109
7379
  category: "none",
6110
7380
  children: ["instance"]
6111
- }
6112
- }, d = {
7381
+ },
7382
+ props: o$8
7383
+ }, T = {
6113
7384
  icon: ContentIcon,
6114
7385
  contentModel: {
6115
7386
  category: "none",
6116
7387
  children: ["instance"]
6117
7388
  },
6118
- presetStyle: {
6119
- div
6120
- }
6121
- }, m = {
7389
+ presetStyle: { div },
7390
+ initialProps: ["side", "sideOffset", "align", "alignOffset"],
7391
+ props: t$4
7392
+ }, m$3 = {
6122
7393
  icon: TooltipIcon,
6123
7394
  contentModel: {
6124
7395
  category: "instance",
6125
7396
  children: ["instance"],
6126
- descendants: [n.TooltipTrigger, n.TooltipContent]
7397
+ descendants: [n$4.TooltipTrigger, n$4.TooltipContent]
7398
+ },
7399
+ initialProps: ["open", "delayDuration", "disableHoverableContent"],
7400
+ props: e$7
7401
+ };
7402
+ const e$6 = {
7403
+ activationMode: {
7404
+ description: `Whether a tab is activated automatically or manually.
7405
+ @defaultValue automatic`,
7406
+ required: false,
7407
+ control: "radio",
7408
+ type: "string",
7409
+ options: ["automatic", "manual"]
7410
+ },
7411
+ defaultValue: {
7412
+ description: "The value of the tab to select by default, if uncontrolled",
7413
+ required: false,
7414
+ control: "text",
7415
+ type: "string"
7416
+ },
7417
+ dir: {
7418
+ description: "The direction of navigation between toolbar items.",
7419
+ required: false,
7420
+ control: "radio",
7421
+ type: "string",
7422
+ options: ["ltr", "rtl"]
7423
+ },
7424
+ orientation: {
7425
+ description: `The orientation the tabs are layed out.
7426
+ Mainly so arrow navigation is done accordingly (left & right vs. up & down)
7427
+ @defaultValue horizontal`,
7428
+ required: false,
7429
+ control: "radio",
7430
+ type: "string",
7431
+ options: ["horizontal", "vertical"]
7432
+ },
7433
+ value: {
7434
+ description: "The value for the selected tab, if controlled",
7435
+ required: false,
7436
+ control: "text",
7437
+ type: "string"
7438
+ }
7439
+ }, t$3 = {
7440
+ loop: {
7441
+ required: false,
7442
+ control: "boolean",
7443
+ type: "boolean",
7444
+ description: "Whether to loop the media resource"
7445
+ }
7446
+ }, o$7 = {
7447
+ value: {
7448
+ required: false,
7449
+ control: "text",
7450
+ type: "string",
7451
+ description: "Current value of the element"
7452
+ }
7453
+ }, r$4 = {
7454
+ value: {
7455
+ required: false,
7456
+ control: "text",
7457
+ type: "string",
7458
+ description: "Current value of the element"
6127
7459
  }
6128
7460
  };
6129
- const M = {
7461
+ const y = {
6130
7462
  icon: TabsIcon,
6131
7463
  contentModel: {
6132
7464
  category: "instance",
6133
7465
  children: ["instance"],
6134
- descendants: [n.TabsList, n.TabsContent]
7466
+ descendants: [n$4.TabsList, n$4.TabsContent]
6135
7467
  },
6136
- presetStyle: {
6137
- div
6138
- }
6139
- }, x$2 = {
7468
+ presetStyle: { div },
7469
+ props: e$6
7470
+ }, f$3 = {
6140
7471
  icon: HeaderIcon,
6141
7472
  contentModel: {
6142
7473
  category: "none",
6143
7474
  children: ["instance"],
6144
- descendants: [n.TabsTrigger]
7475
+ descendants: [n$4.TabsTrigger]
6145
7476
  },
6146
- presetStyle: {
6147
- div
6148
- }
6149
- }, C$2 = {
7477
+ presetStyle: { div },
7478
+ props: t$3
7479
+ }, x$1 = {
6150
7480
  icon: TriggerIcon,
6151
7481
  label: "Tab Trigger",
6152
- indexWithinAncestor: n.Tabs,
7482
+ indexWithinAncestor: n$4.Tabs,
6153
7483
  contentModel: {
6154
7484
  category: "none",
6155
- children: ["instance", "rich-text"]
6156
- },
6157
- states: [
6158
- ...defaultStates,
6159
- {
6160
- category: "component-states",
6161
- label: "Active",
6162
- selector: "[data-state=active]"
6163
- }
6164
- ],
7485
+ children: ["instance", "rich-text"]
7486
+ },
7487
+ states: [{ label: "Active", selector: "[data-state=active]" }],
6165
7488
  presetStyle: {
6166
- button: [button, b$5].flat()
6167
- }
6168
- }, S$2 = {
7489
+ button: [button, b$4].flat()
7490
+ },
7491
+ props: o$7
7492
+ }, C$2 = {
6169
7493
  label: "Tab Content",
6170
7494
  icon: ContentIcon,
6171
- indexWithinAncestor: n.Tabs,
7495
+ indexWithinAncestor: n$4.Tabs,
6172
7496
  contentModel: {
6173
7497
  category: "none",
6174
7498
  children: ["instance", "rich-text"]
6175
7499
  },
6176
- presetStyle: {
6177
- div
6178
- }
7500
+ presetStyle: { div },
7501
+ props: r$4
6179
7502
  };
6180
- const i = {
7503
+ const o$6 = {};
7504
+ const m$2 = {
6181
7505
  icon: LabelIcon,
6182
- states: defaultStates,
6183
- presetStyle: {
6184
- label
6185
- }
7506
+ presetStyle: { label },
7507
+ initialProps: ["id", "class", "for"],
7508
+ props: o$6
6186
7509
  };
7510
+ const e$5 = {
7511
+ collapsible: {
7512
+ description: "Whether an accordion item can be collapsed after it has been opened.",
7513
+ required: false,
7514
+ control: "boolean",
7515
+ type: "boolean",
7516
+ defaultValue: false
7517
+ },
7518
+ defaultValue: {
7519
+ description: "The value of the item whose content is expanded when the accordion is initially rendered. Use\n`defaultValue` if you do not need to control the state of an accordion.",
7520
+ required: false,
7521
+ control: "text",
7522
+ type: "string"
7523
+ },
7524
+ dir: {
7525
+ description: "The language read direction.",
7526
+ required: false,
7527
+ control: "radio",
7528
+ type: "string",
7529
+ options: ["ltr", "rtl"]
7530
+ },
7531
+ disabled: {
7532
+ description: `Whether or not an accordion is disabled from user interaction.
7533
+ @defaultValue false`,
7534
+ required: false,
7535
+ control: "boolean",
7536
+ type: "boolean"
7537
+ },
7538
+ orientation: {
7539
+ description: "The layout in which the Accordion operates.",
7540
+ required: false,
7541
+ control: "radio",
7542
+ type: "string",
7543
+ defaultValue: "vertical",
7544
+ options: ["horizontal", "vertical"]
7545
+ },
7546
+ value: {
7547
+ description: "The controlled stateful value of the accordion item whose content is expanded.",
7548
+ required: false,
7549
+ control: "text",
7550
+ type: "string"
7551
+ }
7552
+ }, o$5 = {
7553
+ disabled: {
7554
+ description: `Whether or not an accordion item is disabled from user interaction.
7555
+ @defaultValue false`,
7556
+ required: false,
7557
+ control: "boolean",
7558
+ type: "boolean"
7559
+ },
7560
+ value: {
7561
+ required: false,
7562
+ control: "text",
7563
+ type: "string",
7564
+ description: "Current value of the element"
7565
+ }
7566
+ }, t$2 = {}, r$3 = {}, n$2 = {};
6187
7567
  const v$1 = {
6188
7568
  icon: AccordionIcon,
6189
7569
  contentModel: {
6190
7570
  category: "instance",
6191
7571
  children: ["instance"],
6192
- descendants: [n.AccordionItem]
7572
+ descendants: [n$4.AccordionItem]
6193
7573
  },
6194
- presetStyle: {
6195
- div
6196
- }
6197
- }, x$1 = {
7574
+ presetStyle: { div },
7575
+ initialProps: ["value", "collapsible"],
7576
+ props: e$5
7577
+ }, x = {
6198
7578
  label: "Item",
6199
7579
  icon: ItemIcon,
6200
- indexWithinAncestor: n.Accordion,
7580
+ indexWithinAncestor: n$4.Accordion,
6201
7581
  contentModel: {
6202
7582
  category: "none",
6203
7583
  children: ["instance"],
6204
- descendants: [n.AccordionHeader, n.AccordionContent]
7584
+ descendants: [n$4.AccordionHeader, n$4.AccordionContent]
6205
7585
  },
6206
- presetStyle: {
6207
- div
6208
- }
6209
- }, C$1 = {
7586
+ presetStyle: { div },
7587
+ initialProps: ["value"],
7588
+ props: o$5
7589
+ }, f$2 = {
6210
7590
  label: "Item Header",
6211
7591
  icon: HeaderIcon,
6212
7592
  contentModel: {
6213
7593
  category: "none",
6214
7594
  children: ["instance"],
6215
- descendants: [n.AccordionTrigger]
7595
+ descendants: [n$4.AccordionTrigger]
6216
7596
  },
6217
7597
  presetStyle: {
6218
7598
  h3: [
@@ -6226,26 +7606,21 @@ const v$1 = {
6226
7606
  value: { type: "unit", unit: "px", value: 0 }
6227
7607
  }
6228
7608
  ]
6229
- }
6230
- }, H = {
7609
+ },
7610
+ props: t$2
7611
+ }, C$1 = {
6231
7612
  label: "Item Trigger",
6232
7613
  icon: TriggerIcon,
6233
7614
  contentModel: {
6234
7615
  category: "none",
6235
7616
  children: ["instance", "rich-text"]
6236
7617
  },
6237
- states: [
6238
- ...defaultStates,
6239
- {
6240
- category: "component-states",
6241
- label: "Open",
6242
- selector: "[data-state=open]"
6243
- }
6244
- ],
7618
+ states: [{ label: "Open", selector: "[data-state=open]" }],
6245
7619
  presetStyle: {
6246
- button: [button, b$5].flat()
6247
- }
6248
- }, S$1 = {
7620
+ button: [button, b$4].flat()
7621
+ },
7622
+ props: r$3
7623
+ }, H = {
6249
7624
  label: "Item Content",
6250
7625
  icon: ContentIcon,
6251
7626
  contentModel: {
@@ -6254,71 +7629,117 @@ const v$1 = {
6254
7629
  },
6255
7630
  presetStyle: {
6256
7631
  div
6257
- }
7632
+ },
7633
+ props: n$2
6258
7634
  };
6259
- const y$1 = {
7635
+ const e$4 = {
7636
+ defaultValue: { required: false, control: "text", type: "string" },
7637
+ delayDuration: {
7638
+ description: `The duration from when the pointer enters the trigger until the tooltip gets opened.
7639
+ @defaultValue 200`,
7640
+ required: false,
7641
+ control: "number",
7642
+ type: "number"
7643
+ },
7644
+ dir: {
7645
+ required: false,
7646
+ control: "radio",
7647
+ type: "string",
7648
+ options: ["ltr", "rtl"],
7649
+ description: "The text directionality of the element"
7650
+ },
7651
+ skipDelayDuration: {
7652
+ description: `How much time a user has to enter another trigger without incurring a delay again.
7653
+ @defaultValue 300`,
7654
+ required: false,
7655
+ control: "number",
7656
+ type: "number"
7657
+ },
7658
+ value: {
7659
+ required: false,
7660
+ control: "text",
7661
+ type: "string",
7662
+ description: "Current value of the element"
7663
+ }
7664
+ }, t$1 = {}, r$2 = {}, n$1 = {}, o$4 = {
7665
+ value: {
7666
+ required: false,
7667
+ control: "text",
7668
+ type: "string",
7669
+ description: "Current value of the element"
7670
+ }
7671
+ }, i$1 = {
7672
+ active: { required: false, control: "boolean", type: "boolean" }
7673
+ }, a = {};
7674
+ const L = {
6260
7675
  icon: NavigationMenuIcon,
6261
7676
  contentModel: {
6262
7677
  category: "instance",
6263
7678
  children: ["instance"],
6264
- descendants: [n.NavigationMenuList, n.NavigationMenuViewport]
7679
+ descendants: [n$4.NavigationMenuList, n$4.NavigationMenuViewport]
6265
7680
  },
6266
7681
  presetStyle: {
6267
7682
  div
6268
- }
7683
+ },
7684
+ props: e$4
6269
7685
  }, h$1 = {
6270
7686
  icon: ListIcon,
6271
7687
  label: "Menu List",
6272
7688
  contentModel: {
6273
7689
  category: "none",
6274
7690
  children: ["instance"],
6275
- descendants: [n.NavigationMenuItem]
7691
+ descendants: [n$4.NavigationMenuItem]
6276
7692
  },
6277
7693
  presetStyle: {
6278
7694
  div
6279
- }
6280
- }, b$3 = {
7695
+ },
7696
+ props: t$1
7697
+ }, b$2 = {
6281
7698
  icon: ListItemIcon,
6282
7699
  label: "Menu Item",
6283
- indexWithinAncestor: n.NavigationMenu,
7700
+ indexWithinAncestor: n$4.NavigationMenu,
6284
7701
  contentModel: {
6285
7702
  category: "none",
6286
7703
  children: ["instance"],
6287
7704
  descendants: [
6288
- n.NavigationMenuTrigger,
6289
- n.NavigationMenuContent,
6290
- n.NavigationMenuLink
7705
+ n$4.NavigationMenuTrigger,
7706
+ n$4.NavigationMenuContent,
7707
+ n$4.NavigationMenuLink
6291
7708
  ]
6292
7709
  },
6293
7710
  presetStyle: {
6294
7711
  div
6295
- }
6296
- }, k$1 = {
7712
+ },
7713
+ props: o$4
7714
+ }, k$2 = {
6297
7715
  icon: TriggerIcon,
6298
7716
  label: "Menu Trigger",
6299
7717
  contentModel: {
6300
7718
  category: "none",
6301
7719
  children: ["instance"]
6302
- }
7720
+ },
7721
+ props: a
6303
7722
  }, w$1 = {
6304
7723
  icon: ContentIcon,
6305
7724
  label: "Menu Content",
6306
7725
  contentModel: {
6307
7726
  category: "none",
6308
7727
  children: ["instance"],
6309
- descendants: [n.NavigationMenuLink]
7728
+ descendants: [n$4.NavigationMenuLink]
6310
7729
  },
6311
7730
  presetStyle: {
6312
7731
  div
6313
- }
7732
+ },
7733
+ props: n$1
6314
7734
  }, C = {
6315
7735
  icon: BoxIcon,
6316
7736
  label: "Accessible Link Wrapper",
6317
7737
  contentModel: {
6318
7738
  category: "none",
6319
7739
  children: ["instance"]
6320
- }
6321
- }, T = {
7740
+ },
7741
+ props: i$1
7742
+ }, S = {
6322
7743
  icon: ViewportIcon,
6323
7744
  label: "Menu Viewport",
6324
7745
  contentModel: {
@@ -6327,65 +7748,169 @@ const y$1 = {
6327
7748
  },
6328
7749
  presetStyle: {
6329
7750
  div
6330
- }
7751
+ },
7752
+ props: r$2
6331
7753
  };
6332
- const w = {
7754
+ const e$3 = {
7755
+ autoComplete: {
7756
+ required: false,
7757
+ control: "text",
7758
+ type: "string",
7759
+ description: "Hint for form autofill feature"
7760
+ },
7761
+ defaultValue: { required: false, control: "text", type: "string" },
7762
+ dir: {
7763
+ required: false,
7764
+ control: "radio",
7765
+ type: "string",
7766
+ options: ["ltr", "rtl"],
7767
+ description: "The text directionality of the element"
7768
+ },
7769
+ disabled: {
7770
+ required: false,
7771
+ control: "boolean",
7772
+ type: "boolean",
7773
+ description: "Whether the form control is disabled"
7774
+ },
7775
+ form: {
7776
+ required: false,
7777
+ control: "text",
7778
+ type: "string",
7779
+ description: "Associates the element with a form element"
7780
+ },
7781
+ name: {
7782
+ required: false,
7783
+ control: "text",
7784
+ type: "string",
7785
+ description: "Name of the element to use for form submission and in the form.elements API"
7786
+ },
7787
+ open: {
7788
+ required: false,
7789
+ control: "boolean",
7790
+ type: "boolean",
7791
+ description: "Whether the dialog box is showing"
7792
+ },
7793
+ required: {
7794
+ required: false,
7795
+ control: "boolean",
7796
+ type: "boolean",
7797
+ description: "Whether the control is required for form submission"
7798
+ },
7799
+ value: {
7800
+ required: false,
7801
+ control: "text",
7802
+ type: "string",
7803
+ description: "Current value of the element"
7804
+ }
7805
+ }, t = {}, o$3 = {
7806
+ placeholder: {
7807
+ required: false,
7808
+ control: "text",
7809
+ type: "string",
7810
+ description: "User-visible label to be placed within the form control"
7811
+ }
7812
+ }, r$1 = {
7813
+ align: {
7814
+ required: false,
7815
+ control: "radio",
7816
+ type: "string",
7817
+ options: ["center", "start", "end"]
7818
+ },
7819
+ alignOffset: { required: false, control: "number", type: "number" },
7820
+ arrowPadding: { required: false, control: "number", type: "number" },
7821
+ avoidCollisions: { required: false, control: "boolean", type: "boolean" },
7822
+ hideWhenDetached: { required: false, control: "boolean", type: "boolean" },
7823
+ sideOffset: { required: false, control: "number", type: "number" },
7824
+ sticky: {
7825
+ required: false,
7826
+ control: "radio",
7827
+ type: "string",
7828
+ options: ["partial", "always"]
7829
+ },
7830
+ updatePositionStrategy: {
7831
+ required: false,
7832
+ control: "radio",
7833
+ type: "string",
7834
+ options: ["always", "optimized"]
7835
+ }
7836
+ }, n = {
7837
+ nonce: {
7838
+ required: false,
7839
+ control: "text",
7840
+ type: "string",
7841
+ description: "Cryptographic nonce used in Content Security Policy checks [CSP]"
7842
+ }
7843
+ }, i = {
7844
+ disabled: {
7845
+ required: false,
7846
+ control: "boolean",
7847
+ type: "boolean",
7848
+ description: "Whether the form control is disabled"
7849
+ },
7850
+ textValue: { required: false, control: "text", type: "string" },
7851
+ value: {
7852
+ required: true,
7853
+ control: "text",
7854
+ type: "string",
7855
+ description: "Current value of the element"
7856
+ }
7857
+ }, l = {}, s = {};
7858
+ const b$1 = {
6333
7859
  icon: SelectIcon,
6334
7860
  contentModel: {
6335
7861
  category: "instance",
6336
7862
  children: ["instance"],
6337
- descendants: [n.SelectTrigger, n.SelectContent]
6338
- }
6339
- }, b$2 = {
7863
+ descendants: [n$4.SelectTrigger, n$4.SelectContent]
7864
+ },
7865
+ initialProps: ["name", "value", "open", "required"],
7866
+ props: e$3
7867
+ }, f$1 = {
6340
7868
  icon: TriggerIcon,
6341
7869
  contentModel: {
6342
7870
  category: "none",
6343
7871
  children: ["instance"],
6344
- descendants: [n.SelectValue]
7872
+ descendants: [n$4.SelectValue]
6345
7873
  },
6346
- presetStyle: {
6347
- button
6348
- }
6349
- }, f = {
7874
+ presetStyle: { button },
7875
+ props: t
7876
+ }, w = {
6350
7877
  label: "Value",
6351
7878
  icon: FormTextFieldIcon,
6352
7879
  contentModel: {
6353
7880
  category: "none",
6354
7881
  children: []
6355
7882
  },
6356
- presetStyle: {
6357
- span
6358
- }
7883
+ presetStyle: { span },
7884
+ initialProps: ["placeholder"],
7885
+ props: o$3
6359
7886
  }, v = {
6360
7887
  icon: ContentIcon,
6361
7888
  contentModel: {
6362
7889
  category: "none",
6363
7890
  children: ["instance"],
6364
- descendants: [n.SelectViewport]
7891
+ descendants: [n$4.SelectViewport]
6365
7892
  },
6366
- presetStyle: {
6367
- div
6368
- }
7893
+ presetStyle: { div },
7894
+ props: r$1
6369
7895
  }, P = {
6370
7896
  icon: ViewportIcon,
6371
7897
  contentModel: {
6372
7898
  category: "none",
6373
7899
  children: ["instance"],
6374
- descendants: [n.SelectItem]
7900
+ descendants: [n$4.SelectItem]
6375
7901
  },
6376
- presetStyle: {
6377
- div
6378
- }
6379
- }, k = {
7902
+ presetStyle: { div },
7903
+ props: n
7904
+ }, k$1 = {
6380
7905
  icon: ItemIcon,
6381
7906
  contentModel: {
6382
7907
  category: "none",
6383
7908
  children: ["instance"],
6384
- descendants: [n.SelectItemIndicator, n.SelectItemText]
7909
+ descendants: [n$4.SelectItemIndicator, n$4.SelectItemText]
6385
7910
  },
6386
- presetStyle: {
6387
- div
6388
- }
7911
+ presetStyle: { div },
7912
+ initialProps: ["value"],
7913
+ props: i
6389
7914
  }, F = {
6390
7915
  label: "Indicator",
6391
7916
  icon: CheckMarkIcon,
@@ -6393,9 +7918,8 @@ const w = {
6393
7918
  category: "none",
6394
7919
  children: ["instance"]
6395
7920
  },
6396
- presetStyle: {
6397
- span
6398
- }
7921
+ presetStyle: { span },
7922
+ props: l
6399
7923
  }, q = {
6400
7924
  label: "Item Text",
6401
7925
  icon: TextIcon,
@@ -6403,185 +7927,250 @@ const w = {
6403
7927
  category: "none",
6404
7928
  children: ["instance", "rich-text"]
6405
7929
  },
6406
- presetStyle: {
6407
- span
6408
- }
7930
+ presetStyle: { span },
7931
+ props: s
6409
7932
  };
6410
- const b$1 = {
7933
+ const e$2 = {
7934
+ checked: {
7935
+ required: false,
7936
+ control: "boolean",
7937
+ type: "boolean",
7938
+ description: "Whether the control is checked"
7939
+ },
7940
+ required: {
7941
+ required: false,
7942
+ control: "boolean",
7943
+ type: "boolean",
7944
+ description: "Whether the control is required for form submission"
7945
+ }
7946
+ }, o$2 = {};
7947
+ const m$1 = {
6411
7948
  icon: SwitchIcon,
6412
7949
  contentModel: {
6413
7950
  category: "instance",
6414
7951
  children: ["instance"],
6415
- descendants: [n.SwitchThumb]
7952
+ descendants: [n$4.SwitchThumb]
6416
7953
  },
6417
7954
  states: [
6418
- ...defaultStates,
6419
- {
6420
- label: "Checked",
6421
- selector: "[data-state=checked]",
6422
- category: "component-states"
6423
- },
6424
- {
6425
- label: "Unchecked",
6426
- selector: "[data-state=unchecked]",
6427
- category: "component-states"
6428
- }
7955
+ { label: "Checked", selector: "[data-state=checked]" },
7956
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
6429
7957
  ],
6430
7958
  presetStyle: {
6431
- button: [button, b$5].flat()
6432
- }
6433
- }, S = {
7959
+ button: [button, b$4].flat()
7960
+ },
7961
+ initialProps: ["id", "class", "name", "value", "checked", "required"],
7962
+ props: e$2
7963
+ }, b = {
6434
7964
  icon: TriggerIcon,
6435
7965
  contentModel: {
6436
7966
  category: "none",
6437
7967
  children: ["instance"]
6438
7968
  },
6439
7969
  states: [
6440
- ...defaultStates,
6441
- {
6442
- label: "Checked",
6443
- selector: "[data-state=checked]",
6444
- category: "component-states"
6445
- },
6446
- {
6447
- label: "Unchecked",
6448
- selector: "[data-state=unchecked]",
6449
- category: "component-states"
6450
- }
7970
+ { label: "Checked", selector: "[data-state=checked]" },
7971
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
6451
7972
  ],
6452
7973
  presetStyle: {
6453
7974
  span
6454
- }
7975
+ },
7976
+ props: o$2
6455
7977
  };
6456
- const b = {
7978
+ const e$1 = {
7979
+ checked: {
7980
+ required: false,
7981
+ control: "boolean",
7982
+ type: "boolean",
7983
+ description: "Whether the control is checked"
7984
+ },
7985
+ required: {
7986
+ required: false,
7987
+ control: "boolean",
7988
+ type: "boolean",
7989
+ description: "Whether the control is required for form submission"
7990
+ }
7991
+ }, o$1 = {};
7992
+ const m = {
6457
7993
  icon: CheckboxCheckedIcon,
6458
7994
  contentModel: {
6459
7995
  category: "instance",
6460
7996
  children: ["instance"],
6461
- descendants: [n.CheckboxIndicator]
7997
+ descendants: [n$4.CheckboxIndicator]
6462
7998
  },
6463
7999
  states: [
6464
- ...defaultStates,
6465
- {
6466
- label: "Checked",
6467
- selector: "[data-state=checked]",
6468
- category: "component-states"
6469
- },
6470
- {
6471
- label: "Unchecked",
6472
- selector: "[data-state=unchecked]",
6473
- category: "component-states"
6474
- }
8000
+ { label: "Checked", selector: "[data-state=checked]" },
8001
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
6475
8002
  ],
6476
8003
  presetStyle: {
6477
- button: [button, b$5].flat()
6478
- }
6479
- }, x = {
8004
+ button: [button, b$4].flat()
8005
+ },
8006
+ initialProps: ["id", "class", "name", "value", "required", "checked"],
8007
+ props: e$1
8008
+ }, k = {
6480
8009
  icon: TriggerIcon,
6481
8010
  contentModel: {
6482
8011
  category: "none",
6483
8012
  children: ["instance", "rich-text"]
6484
8013
  },
6485
- states: defaultStates,
6486
8014
  presetStyle: {
6487
8015
  span
6488
- }
8016
+ },
8017
+ props: o$1
6489
8018
  };
6490
- const y = {
8019
+ const e = {
8020
+ defaultValue: { required: false, control: "text", type: "string" },
8021
+ dir: {
8022
+ required: false,
8023
+ control: "radio",
8024
+ type: "string",
8025
+ options: ["ltr", "rtl"],
8026
+ description: "The text directionality of the element"
8027
+ },
8028
+ disabled: {
8029
+ required: false,
8030
+ control: "boolean",
8031
+ type: "boolean",
8032
+ description: "Whether the form control is disabled"
8033
+ },
8034
+ loop: {
8035
+ required: false,
8036
+ control: "boolean",
8037
+ type: "boolean",
8038
+ description: "Whether to loop the media resource"
8039
+ },
8040
+ name: {
8041
+ required: false,
8042
+ control: "text",
8043
+ type: "string",
8044
+ description: "Name of the element to use for form submission and in the form.elements API"
8045
+ },
8046
+ orientation: {
8047
+ required: false,
8048
+ control: "radio",
8049
+ type: "string",
8050
+ options: ["horizontal", "vertical"]
8051
+ },
8052
+ required: {
8053
+ required: false,
8054
+ control: "boolean",
8055
+ type: "boolean",
8056
+ description: "Whether the control is required for form submission"
8057
+ },
8058
+ value: {
8059
+ required: false,
8060
+ control: "text",
8061
+ type: "string",
8062
+ description: "Current value of the element"
8063
+ }
8064
+ }, o = {
8065
+ checked: {
8066
+ required: false,
8067
+ control: "boolean",
8068
+ type: "boolean",
8069
+ description: "Whether the control is checked"
8070
+ },
8071
+ required: {
8072
+ required: false,
8073
+ control: "boolean",
8074
+ type: "boolean",
8075
+ description: "Whether the control is required for form submission"
8076
+ },
8077
+ value: {
8078
+ required: true,
8079
+ control: "text",
8080
+ type: "string",
8081
+ description: "Current value of the element"
8082
+ }
8083
+ }, r = {};
8084
+ const G = {
6491
8085
  icon: RadioGroupIcon,
6492
8086
  contentModel: {
6493
8087
  category: "instance",
6494
8088
  children: ["instance"],
6495
- descendants: [n.RadioGroupItem]
8089
+ descendants: [n$4.RadioGroupItem]
6496
8090
  },
6497
8091
  states: [
6498
- ...defaultStates,
6499
- {
6500
- label: "Checked",
6501
- selector: "[data-state=checked]",
6502
- category: "component-states"
6503
- },
6504
- {
6505
- label: "Unchecked",
6506
- selector: "[data-state=unchecked]",
6507
- category: "component-states"
6508
- }
8092
+ { label: "Checked", selector: "[data-state=checked]" },
8093
+ { label: "Unchecked", selector: "[data-state=unchecked]" }
6509
8094
  ],
6510
8095
  presetStyle: {
6511
8096
  div
6512
- }
6513
- }, g = {
8097
+ },
8098
+ initialProps: ["id", "class", "name", "value", "required"],
8099
+ props: e
8100
+ }, h = {
6514
8101
  icon: ItemIcon,
6515
8102
  contentModel: {
6516
8103
  category: "none",
6517
8104
  children: ["instance"],
6518
- descendants: [n.RadioGroupIndicator]
8105
+ descendants: [n$4.RadioGroupIndicator]
6519
8106
  },
6520
- states: defaultStates,
6521
8107
  presetStyle: {
6522
- button: [button, b$5].flat()
6523
- }
6524
- }, h = {
8108
+ button: [button, b$4].flat()
8109
+ },
8110
+ initialProps: ["value"],
8111
+ props: o
8112
+ }, f = {
6525
8113
  icon: TriggerIcon,
6526
8114
  contentModel: {
6527
8115
  category: "none",
6528
8116
  children: ["instance"]
6529
8117
  },
6530
- states: defaultStates,
6531
8118
  presetStyle: {
6532
8119
  span
6533
- }
8120
+ },
8121
+ props: r
6534
8122
  };
6535
8123
  const radixComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6536
8124
  __proto__: null,
6537
8125
  Accordion: v$1,
6538
- AccordionContent: S$1,
6539
- AccordionHeader: C$1,
6540
- AccordionItem: x$1,
6541
- AccordionTrigger: H,
6542
- Checkbox: b,
6543
- CheckboxIndicator: x,
6544
- Collapsible: g$2,
6545
- CollapsibleContent: d$3,
6546
- CollapsibleTrigger: b$6,
6547
- Dialog: j,
6548
- DialogClose: R,
6549
- DialogContent: B,
6550
- DialogDescription: H$1,
6551
- DialogOverlay: b$4,
6552
- DialogTitle: E,
6553
- DialogTrigger: O,
6554
- Label: i,
6555
- NavigationMenu: y$1,
8126
+ AccordionContent: H,
8127
+ AccordionHeader: f$2,
8128
+ AccordionItem: x,
8129
+ AccordionTrigger: C$1,
8130
+ Checkbox: m,
8131
+ CheckboxIndicator: k,
8132
+ Collapsible: g$1,
8133
+ CollapsibleContent: d$1,
8134
+ CollapsibleTrigger: m$4,
8135
+ Dialog: P$1,
8136
+ DialogClose: H$1,
8137
+ DialogContent: O,
8138
+ DialogDescription: E,
8139
+ DialogOverlay: b$3,
8140
+ DialogTitle: B,
8141
+ DialogTrigger: S$1,
8142
+ Label: m$2,
8143
+ NavigationMenu: L,
6556
8144
  NavigationMenuContent: w$1,
6557
- NavigationMenuItem: b$3,
8145
+ NavigationMenuItem: b$2,
6558
8146
  NavigationMenuLink: C,
6559
8147
  NavigationMenuList: h$1,
6560
- NavigationMenuTrigger: k$1,
6561
- NavigationMenuViewport: T,
6562
- Popover: l,
6563
- PopoverContent: d$1,
6564
- PopoverTrigger: v$2,
6565
- RadioGroup: y,
6566
- RadioGroupIndicator: h,
6567
- RadioGroupItem: g,
6568
- Select: w,
8148
+ NavigationMenuTrigger: k$2,
8149
+ NavigationMenuViewport: S,
8150
+ Popover: h$2,
8151
+ PopoverClose: u,
8152
+ PopoverContent: y$1,
8153
+ PopoverTrigger: C$3,
8154
+ RadioGroup: G,
8155
+ RadioGroupIndicator: f,
8156
+ RadioGroupItem: h,
8157
+ Select: b$1,
6569
8158
  SelectContent: v,
6570
- SelectItem: k,
8159
+ SelectItem: k$1,
6571
8160
  SelectItemIndicator: F,
6572
8161
  SelectItemText: q,
6573
- SelectTrigger: b$2,
6574
- SelectValue: f,
8162
+ SelectTrigger: f$1,
8163
+ SelectValue: w,
6575
8164
  SelectViewport: P,
6576
- Switch: b$1,
6577
- SwitchThumb: S,
6578
- Tabs: M,
6579
- TabsContent: S$2,
6580
- TabsList: x$2,
6581
- TabsTrigger: C$2,
6582
- Tooltip: m,
6583
- TooltipContent: d,
6584
- TooltipTrigger: g$1
8165
+ Switch: m$1,
8166
+ SwitchThumb: b,
8167
+ Tabs: y,
8168
+ TabsContent: C$2,
8169
+ TabsList: f$3,
8170
+ TabsTrigger: x$1,
8171
+ Tooltip: m$3,
8172
+ TooltipContent: T,
8173
+ TooltipTrigger: g
6585
8174
  }, Symbol.toStringTag, { value: "Module" }));
6586
8175
  const createFramework$2 = async () => {
6587
8176
  const routeTemplatesDir = join("app", "route-templates");
@@ -6602,35 +8191,38 @@ const createFramework$2 = async () => {
6602
8191
  "utf8"
6603
8192
  );
6604
8193
  await rm(routeTemplatesDir, { recursive: true, force: true });
6605
- const radixComponentNamespacedMetas = {};
8194
+ const base = "@webstudio-is/sdk-components-react";
8195
+ const remix = "@webstudio-is/sdk-components-react-remix";
8196
+ const reactRadix = "@webstudio-is/sdk-components-react-radix";
8197
+ const animation = "@webstudio-is/sdk-components-animation";
8198
+ const components = {};
8199
+ const metas = {};
8200
+ for (const [name2, meta] of Object.entries(baseComponentMetas)) {
8201
+ components[name2] = `${base}:${name2}`;
8202
+ metas[name2] = meta;
8203
+ }
8204
+ for (const name2 of ["Body", "Link", "RichTextLink", "Form", "RemixForm"]) {
8205
+ components[name2] = `${remix}:${name2}`;
8206
+ }
6606
8207
  for (const [name2, meta] of Object.entries(radixComponentMetas)) {
6607
- const namespace = "@webstudio-is/sdk-components-react-radix";
6608
- radixComponentNamespacedMetas[`${namespace}:${name2}`] = meta;
8208
+ components[`${reactRadix}:${name2}`] = `${reactRadix}:${name2}`;
8209
+ metas[`${reactRadix}:${name2}`] = meta;
6609
8210
  }
6610
- const animationComponentNamespacedMetas = {};
6611
8211
  for (const [name2, meta] of Object.entries(animationComponentMetas)) {
6612
- const namespace = "@webstudio-is/sdk-components-animation";
6613
- animationComponentNamespacedMetas[`${namespace}:${name2}`] = meta;
8212
+ components[`${animation}:${name2}`] = `${animation}:${name2}`;
8213
+ metas[`${animation}:${name2}`] = meta;
6614
8214
  }
6615
8215
  return {
6616
- components: [
6617
- {
6618
- source: "@webstudio-is/sdk-components-react",
6619
- metas: baseComponentMetas
6620
- },
6621
- {
6622
- source: "@webstudio-is/sdk-components-animation",
6623
- metas: animationComponentNamespacedMetas
6624
- },
6625
- {
6626
- source: "@webstudio-is/sdk-components-react-radix",
6627
- metas: radixComponentNamespacedMetas
6628
- },
6629
- {
6630
- source: "@webstudio-is/sdk-components-react-remix",
6631
- metas: remixComponentMetas
6632
- }
6633
- ],
8216
+ metas,
8217
+ components,
8218
+ tags: {
8219
+ textarea: `${base}:Textarea`,
8220
+ input: `${base}:Input`,
8221
+ select: `${base}:Select`,
8222
+ body: `${remix}:Body`,
8223
+ a: `${remix}:Link`,
8224
+ form: `${remix}:RemixForm`
8225
+ },
6634
8226
  html: ({ pagePath }) => [
6635
8227
  {
6636
8228
  file: join("app", "routes", `${generateRemixRoute(pagePath)}.tsx`),
@@ -6661,14 +8253,6 @@ const createFramework$2 = async () => {
6661
8253
  ]
6662
8254
  };
6663
8255
  };
6664
- const reactRouterComponentMetas = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6665
- __proto__: null,
6666
- Body: n$8,
6667
- Form: c$1,
6668
- Link: n$6,
6669
- RemixForm: n$4,
6670
- RichTextLink: p$8
6671
- }, Symbol.toStringTag, { value: "Module" }));
6672
8256
  const createFramework$1 = async () => {
6673
8257
  const routeTemplatesDir = join("app", "route-templates");
6674
8258
  const htmlTemplate = await readFile(
@@ -6688,35 +8272,38 @@ const createFramework$1 = async () => {
6688
8272
  "utf8"
6689
8273
  );
6690
8274
  await rm(routeTemplatesDir, { recursive: true, force: true });
6691
- const radixComponentNamespacedMetas = {};
8275
+ const base = "@webstudio-is/sdk-components-react";
8276
+ const reactRouter = "@webstudio-is/sdk-components-react-router";
8277
+ const reactRadix = "@webstudio-is/sdk-components-react-radix";
8278
+ const animation = "@webstudio-is/sdk-components-animation";
8279
+ const components = {};
8280
+ const metas = {};
8281
+ for (const [name2, meta] of Object.entries(baseComponentMetas)) {
8282
+ components[name2] = `${base}:${name2}`;
8283
+ metas[name2] = meta;
8284
+ }
8285
+ for (const name2 of ["Body", "Link", "RichTextLink", "Form", "RemixForm"]) {
8286
+ components[name2] = `${reactRouter}:${name2}`;
8287
+ }
6692
8288
  for (const [name2, meta] of Object.entries(radixComponentMetas)) {
6693
- const namespace = "@webstudio-is/sdk-components-react-radix";
6694
- radixComponentNamespacedMetas[`${namespace}:${name2}`] = meta;
8289
+ components[`${reactRadix}:${name2}`] = `${reactRadix}:${name2}`;
8290
+ metas[`${reactRadix}:${name2}`] = meta;
6695
8291
  }
6696
- const animationComponentNamespacedMetas = {};
6697
8292
  for (const [name2, meta] of Object.entries(animationComponentMetas)) {
6698
- const namespace = "@webstudio-is/sdk-components-animation";
6699
- animationComponentNamespacedMetas[`${namespace}:${name2}`] = meta;
8293
+ components[`${animation}:${name2}`] = `${animation}:${name2}`;
8294
+ metas[`${animation}:${name2}`] = meta;
6700
8295
  }
6701
8296
  return {
6702
- components: [
6703
- {
6704
- source: "@webstudio-is/sdk-components-react",
6705
- metas: baseComponentMetas
6706
- },
6707
- {
6708
- source: "@webstudio-is/sdk-components-animation",
6709
- metas: animationComponentNamespacedMetas
6710
- },
6711
- {
6712
- source: "@webstudio-is/sdk-components-react-radix",
6713
- metas: radixComponentNamespacedMetas
6714
- },
6715
- {
6716
- source: "@webstudio-is/sdk-components-react-router",
6717
- metas: reactRouterComponentMetas
6718
- }
6719
- ],
8297
+ metas,
8298
+ components,
8299
+ tags: {
8300
+ textarea: `${base}:Textarea`,
8301
+ input: `${base}:Input`,
8302
+ select: `${base}:Select`,
8303
+ body: `${reactRouter}:Body`,
8304
+ a: `${reactRouter}:Link`,
8305
+ form: `${reactRouter}:RemixForm`
8306
+ },
6720
8307
  html: ({ pagePath }) => [
6721
8308
  {
6722
8309
  file: join("app", "routes", `${generateRemixRoute(pagePath)}.tsx`),
@@ -6768,31 +8355,31 @@ const createFramework = async () => {
6768
8355
  "utf8"
6769
8356
  );
6770
8357
  await rm(routeTemplatesDir, { recursive: true, force: true });
6771
- const radixComponentNamespacedMetas = {};
8358
+ const base = "@webstudio-is/sdk-components-react";
8359
+ const reactRadix = "@webstudio-is/sdk-components-react-radix";
8360
+ const animation = "@webstudio-is/sdk-components-animation";
8361
+ const components = {};
8362
+ const metas = {};
8363
+ for (const [name2, meta] of Object.entries(baseComponentMetas)) {
8364
+ components[name2] = `${base}:${name2}`;
8365
+ metas[name2] = meta;
8366
+ }
6772
8367
  for (const [name2, meta] of Object.entries(radixComponentMetas)) {
6773
- const namespace = "@webstudio-is/sdk-components-react-radix";
6774
- radixComponentNamespacedMetas[`${namespace}:${name2}`] = meta;
8368
+ components[`${reactRadix}:${name2}`] = `${reactRadix}:${name2}`;
8369
+ metas[`${reactRadix}:${name2}`] = meta;
6775
8370
  }
6776
- const animationComponentNamespacedMetas = {};
6777
8371
  for (const [name2, meta] of Object.entries(animationComponentMetas)) {
6778
- const namespace = "@webstudio-is/sdk-components-animation";
6779
- animationComponentNamespacedMetas[`${namespace}:${name2}`] = meta;
8372
+ components[`${animation}:${name2}`] = `${animation}:${name2}`;
8373
+ metas[`${animation}:${name2}`] = meta;
6780
8374
  }
6781
8375
  return {
6782
- components: [
6783
- {
6784
- source: "@webstudio-is/sdk-components-react",
6785
- metas: baseComponentMetas
6786
- },
6787
- {
6788
- source: "@webstudio-is/sdk-components-animation",
6789
- metas: animationComponentNamespacedMetas
6790
- },
6791
- {
6792
- source: "@webstudio-is/sdk-components-react-radix",
6793
- metas: radixComponentNamespacedMetas
6794
- }
6795
- ],
8376
+ metas,
8377
+ components,
8378
+ tags: {
8379
+ textarea: `${base}:Textarea`,
8380
+ input: `${base}:Input`,
8381
+ select: `${base}:Select`
8382
+ },
6796
8383
  html: ({ pagePath }) => {
6797
8384
  if (isPathnamePattern(pagePath)) {
6798
8385
  return [];
@@ -6910,7 +8497,7 @@ audit=false
6910
8497
  fund=false
6911
8498
  `;
6912
8499
  const prebuild = async (options) => {
6913
- var _a2, _b2, _c2, _d2, _e2, _f2, _g, _h, _i, _j, _k, _l;
8500
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g, _h, _i, _j, _k;
6914
8501
  if (options.template.length === 0) {
6915
8502
  log.error(
6916
8503
  `Template is not provided
@@ -6956,14 +8543,6 @@ Please check webstudio --help for more details`
6956
8543
  `Project data is missing, please make sure you the project is synced.`
6957
8544
  );
6958
8545
  }
6959
- const metas = /* @__PURE__ */ new Map();
6960
- const componentSources = /* @__PURE__ */ new Map();
6961
- for (const entry of framework.components) {
6962
- for (const [componentName, meta] of Object.entries(entry.metas)) {
6963
- metas.set(componentName, meta);
6964
- componentSources.set(componentName, entry.source);
6965
- }
6966
- }
6967
8546
  const usedMetas = new Map(
6968
8547
  Object.entries(coreMetas)
6969
8548
  );
@@ -6989,7 +8568,7 @@ Please check webstudio --help for more details`
6989
8568
  for (const [_instanceId, instance] of siteData.build.instances) {
6990
8569
  if (pageInstanceSet.has(instance.id)) {
6991
8570
  instances.push([instance.id, instance]);
6992
- const meta = metas.get(instance.component);
8571
+ const meta = framework.metas[instance.component];
6993
8572
  if (meta) {
6994
8573
  usedMetas.set(instance.component, meta);
6995
8574
  }
@@ -7127,31 +8706,31 @@ Please check webstudio --help for more details`
7127
8706
  instances.delete(instance.id);
7128
8707
  }
7129
8708
  }
7130
- const pageComponents = /* @__PURE__ */ new Set();
8709
+ const imports2 = /* @__PURE__ */ new Map();
7131
8710
  for (const instance of instances.values()) {
7132
- pageComponents.add(instance.component);
7133
- }
7134
- const namespaces = /* @__PURE__ */ new Map();
7135
- for (const component of pageComponents) {
7136
- const namespace = componentSources.get(component);
7137
- if (namespace === void 0) {
8711
+ let descriptor = framework.components[instance.component];
8712
+ let id = instance.component;
8713
+ if (instance.component === elementComponent && instance.tag) {
8714
+ descriptor = framework.tags[instance.tag];
8715
+ id = descriptor;
8716
+ }
8717
+ if (descriptor === void 0) {
7138
8718
  continue;
7139
8719
  }
7140
- if (namespaces.has(namespace) === false) {
7141
- namespaces.set(
7142
- namespace,
7143
- /* @__PURE__ */ new Set()
7144
- );
8720
+ const [importSource, importSpecifier] = descriptor.split(":");
8721
+ let specifiers = imports2.get(importSource);
8722
+ if (specifiers === void 0) {
8723
+ specifiers = /* @__PURE__ */ new Map();
8724
+ imports2.set(importSource, specifiers);
7145
8725
  }
7146
- const [_namespace, shortName] = parseComponentName(component);
7147
- (_i = namespaces.get(namespace)) == null ? void 0 : _i.add([shortName, component]);
8726
+ specifiers.set(id, importSpecifier);
7148
8727
  }
7149
- let componentImports = "";
7150
- for (const [namespace, componentsSet] of namespaces.entries()) {
7151
- const specifiers = Array.from(componentsSet).map(
7152
- ([shortName, component]) => `${shortName} as ${scope.getName(component, shortName)}`
8728
+ let importsString = "";
8729
+ for (const [importSource, specifiers] of imports2) {
8730
+ const specifiersString = Array.from(specifiers).map(
8731
+ ([id, importSpecifier]) => `${importSpecifier} as ${scope.getName(id, importSpecifier)}`
7153
8732
  ).join(", ");
7154
- componentImports += `import { ${specifiers} } from "${namespace}";
8733
+ importsString += `import { ${specifiersString} } from "${importSource}";
7155
8734
  `;
7156
8735
  }
7157
8736
  const pageFontAssets = fontAssetsByPage[page.id];
@@ -7188,14 +8767,15 @@ Please check webstudio --help for more details`
7188
8767
  props,
7189
8768
  dataSources,
7190
8769
  classesMap: classes,
7191
- metas: usedMetas
8770
+ metas: usedMetas,
8771
+ tagsOverrides: framework.tags
7192
8772
  });
7193
8773
  const projectMeta = siteData.build.pages.meta;
7194
8774
  const contactEmail = (
7195
8775
  // fallback to user email when contact email is empty string
7196
- (projectMeta == null ? void 0 : projectMeta.contactEmail) || ((_j = siteData.user) == null ? void 0 : _j.email) || void 0
8776
+ (projectMeta == null ? void 0 : projectMeta.contactEmail) || ((_i = siteData.user) == null ? void 0 : _i.email) || void 0
7197
8777
  );
7198
- const favIconAsset = (_k = assets.get((projectMeta == null ? void 0 : projectMeta.faviconAssetId) ?? "")) == null ? void 0 : _k.name;
8778
+ const favIconAsset = (_j = assets.get((projectMeta == null ? void 0 : projectMeta.faviconAssetId) ?? "")) == null ? void 0 : _j.name;
7199
8779
  const pagePath = getPagePath(page.id, siteData.build.pages);
7200
8780
  const breakpoints = siteData.build.breakpoints.map(([_, value]) => ({
7201
8781
  id: value.id,
@@ -7208,7 +8788,7 @@ Please check webstudio --help for more details`
7208
8788
 
7209
8789
  import { Fragment, useState } from "react";
7210
8790
  import { useResource, useVariableState } from "@webstudio-is/react-sdk/runtime";
7211
- ${componentImports}
8791
+ ${importsString}
7212
8792
 
7213
8793
  export const projectId = "${siteData.build.projectId}";
7214
8794
 
@@ -7319,7 +8899,7 @@ Please check webstudio --help for more details`
7319
8899
  )};
7320
8900
  `
7321
8901
  );
7322
- const redirects = (_l = siteData.build.pages) == null ? void 0 : _l.redirects;
8902
+ const redirects = (_k = siteData.build.pages) == null ? void 0 : _k.redirects;
7323
8903
  if (redirects !== void 0 && redirects.length > 0) {
7324
8904
  for (const redirect of redirects) {
7325
8905
  const generatedBasename = generateRemixRoute(redirect.old);
@@ -7463,7 +9043,7 @@ const initFlow = async (options) => {
7463
9043
  if (shouldInstallDeps === true) {
7464
9044
  const install = spinner();
7465
9045
  install.start("Installing dependencies");
7466
- await x$3("npm", ["install"]);
9046
+ await x$2("npm", ["install"]);
7467
9047
  install.stop("Installed dependencies");
7468
9048
  }
7469
9049
  log.message();
@@ -7494,7 +9074,7 @@ const getDeploymentInstructions = (deployTarget) => {
7494
9074
  }
7495
9075
  };
7496
9076
  const name = "webstudio";
7497
- const version = "0.219.0";
9077
+ const version = "0.221.0";
7498
9078
  const description = "Webstudio CLI";
7499
9079
  const author = "Webstudio <github@webstudio.is>";
7500
9080
  const homepage = "https://webstudio.is";