@webstudio-is/react-sdk 0.60.0 → 0.62.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.
Files changed (233) hide show
  1. package/lib/app/custom-components/__generated__/form.props.js +412 -0
  2. package/lib/app/custom-components/__generated__/image.props.js +442 -0
  3. package/lib/app/custom-components/__generated__/link-block.props.js +432 -0
  4. package/lib/app/custom-components/__generated__/link.props.js +432 -0
  5. package/lib/app/custom-components/__generated__/rich-text-link.props.js +432 -0
  6. package/lib/app/custom-components/form.js +54 -0
  7. package/lib/app/custom-components/form.ws.js +81 -0
  8. package/lib/app/custom-components/index.js +10 -4
  9. package/lib/cjs/app/custom-components/__generated__/form.props.js +432 -0
  10. package/lib/cjs/app/custom-components/__generated__/image.props.js +462 -0
  11. package/lib/cjs/app/custom-components/__generated__/link-block.props.js +452 -0
  12. package/lib/cjs/app/custom-components/__generated__/link.props.js +452 -0
  13. package/lib/cjs/app/custom-components/__generated__/rich-text-link.props.js +452 -0
  14. package/lib/cjs/app/custom-components/form.js +70 -0
  15. package/lib/cjs/app/custom-components/form.ws.js +101 -0
  16. package/lib/cjs/app/custom-components/index.js +12 -6
  17. package/lib/cjs/components/__generated__/checkbox-field.props.js +419 -0
  18. package/lib/cjs/components/__generated__/checkbox.props.js +459 -0
  19. package/lib/cjs/components/__generated__/error-message.props.js +418 -0
  20. package/lib/cjs/components/__generated__/input.props.js +8 -3
  21. package/lib/cjs/components/__generated__/label.props.js +420 -0
  22. package/lib/cjs/components/__generated__/radio-button-field.props.js +419 -0
  23. package/lib/cjs/components/__generated__/radio-button.props.js +459 -0
  24. package/lib/cjs/components/__generated__/success-message.props.js +418 -0
  25. package/lib/cjs/components/__generated__/textarea.props.js +432 -0
  26. package/lib/cjs/components/blockquote.ws.js +36 -48
  27. package/lib/cjs/components/body.ws.js +20 -17
  28. package/lib/cjs/components/button.ws.js +8 -3
  29. package/lib/cjs/components/checkbox-field.js +29 -0
  30. package/lib/cjs/components/checkbox-field.ws.js +53 -0
  31. package/lib/cjs/components/checkbox.js +29 -0
  32. package/lib/cjs/components/checkbox.ws.js +55 -0
  33. package/lib/cjs/components/code.ws.js +20 -28
  34. package/lib/cjs/components/component-meta.js +3 -1
  35. package/lib/cjs/components/components-utils.js +9 -1
  36. package/lib/cjs/components/components.js +17 -1
  37. package/lib/cjs/components/error-message.js +29 -0
  38. package/lib/cjs/components/error-message.ws.js +40 -0
  39. package/lib/cjs/components/form.js +1 -1
  40. package/lib/cjs/components/form.ws.js +35 -9
  41. package/lib/cjs/components/heading.ws.js +1 -1
  42. package/lib/cjs/components/image.ws.js +8 -9
  43. package/lib/cjs/components/index.js +43 -2
  44. package/lib/cjs/components/input.ws.js +15 -3
  45. package/lib/cjs/components/italic.ws.js +5 -5
  46. package/lib/cjs/components/label.js +29 -0
  47. package/lib/cjs/components/label.ws.js +54 -0
  48. package/lib/cjs/components/link-block.ws.js +6 -6
  49. package/lib/cjs/components/link.ws.js +9 -10
  50. package/lib/cjs/components/list-item.ws.js +2 -1
  51. package/lib/cjs/components/list.ws.js +22 -22
  52. package/lib/cjs/components/paragraph.ws.js +1 -1
  53. package/lib/cjs/components/radio-button-field.js +29 -0
  54. package/lib/cjs/components/radio-button-field.ws.js +53 -0
  55. package/lib/cjs/components/radio-button.js +29 -0
  56. package/lib/cjs/components/radio-button.ws.js +55 -0
  57. package/lib/cjs/components/separator.ws.js +20 -20
  58. package/lib/cjs/components/success-message.js +29 -0
  59. package/lib/cjs/components/success-message.ws.js +40 -0
  60. package/lib/cjs/components/text-block.ws.js +6 -7
  61. package/lib/cjs/components/textarea.js +29 -0
  62. package/lib/cjs/components/textarea.ws.js +56 -0
  63. package/lib/cjs/css/css.js +6 -9
  64. package/lib/cjs/css/normalize.js +168 -185
  65. package/lib/cjs/css/presets.js +14 -34
  66. package/lib/cjs/css/style-rules.js +17 -0
  67. package/lib/cjs/embed-template.js +160 -0
  68. package/lib/cjs/index.js +1 -0
  69. package/lib/components/__generated__/checkbox-field.props.js +399 -0
  70. package/lib/components/__generated__/checkbox.props.js +439 -0
  71. package/lib/components/__generated__/error-message.props.js +398 -0
  72. package/lib/components/__generated__/input.props.js +8 -3
  73. package/lib/components/__generated__/label.props.js +400 -0
  74. package/lib/components/__generated__/radio-button-field.props.js +399 -0
  75. package/lib/components/__generated__/radio-button.props.js +439 -0
  76. package/lib/components/__generated__/success-message.props.js +398 -0
  77. package/lib/components/__generated__/textarea.props.js +412 -0
  78. package/lib/components/blockquote.ws.js +36 -48
  79. package/lib/components/body.ws.js +20 -17
  80. package/lib/components/button.ws.js +8 -3
  81. package/lib/components/checkbox-field.js +9 -0
  82. package/lib/components/checkbox-field.ws.js +33 -0
  83. package/lib/components/checkbox.js +9 -0
  84. package/lib/components/checkbox.ws.js +35 -0
  85. package/lib/components/code.ws.js +20 -28
  86. package/lib/components/component-meta.js +3 -1
  87. package/lib/components/components-utils.js +9 -1
  88. package/lib/components/components.js +17 -1
  89. package/lib/components/error-message.js +9 -0
  90. package/lib/components/error-message.ws.js +20 -0
  91. package/lib/components/form.js +1 -1
  92. package/lib/components/form.ws.js +35 -9
  93. package/lib/components/heading.ws.js +1 -1
  94. package/lib/components/image.ws.js +8 -9
  95. package/lib/components/index.js +43 -2
  96. package/lib/components/input.ws.js +15 -3
  97. package/lib/components/italic.ws.js +5 -5
  98. package/lib/components/label.js +9 -0
  99. package/lib/components/label.ws.js +34 -0
  100. package/lib/components/link-block.ws.js +7 -7
  101. package/lib/components/link.ws.js +9 -10
  102. package/lib/components/list-item.ws.js +2 -1
  103. package/lib/components/list.ws.js +22 -22
  104. package/lib/components/paragraph.ws.js +1 -1
  105. package/lib/components/radio-button-field.js +9 -0
  106. package/lib/components/radio-button-field.ws.js +33 -0
  107. package/lib/components/radio-button.js +9 -0
  108. package/lib/components/radio-button.ws.js +35 -0
  109. package/lib/components/separator.ws.js +20 -20
  110. package/lib/components/success-message.js +9 -0
  111. package/lib/components/success-message.ws.js +20 -0
  112. package/lib/components/text-block.ws.js +6 -7
  113. package/lib/components/textarea.js +9 -0
  114. package/lib/components/textarea.ws.js +36 -0
  115. package/lib/css/css.js +8 -11
  116. package/lib/css/normalize.js +168 -185
  117. package/lib/css/presets.js +14 -34
  118. package/lib/css/style-rules.js +17 -0
  119. package/lib/embed-template.js +140 -0
  120. package/lib/index.js +1 -0
  121. package/lib/types/app/custom-components/__generated__/form.props.d.ts +2 -0
  122. package/lib/types/app/custom-components/__generated__/image.props.d.ts +2 -0
  123. package/lib/types/app/custom-components/__generated__/link-block.props.d.ts +2 -0
  124. package/lib/types/app/custom-components/__generated__/link.props.d.ts +2 -0
  125. package/lib/types/app/custom-components/__generated__/rich-text-link.props.d.ts +2 -0
  126. package/lib/types/app/custom-components/form.d.ts +5 -0
  127. package/lib/types/app/custom-components/form.ws.d.ts +3 -0
  128. package/lib/types/app/custom-components/index.d.ts +6 -1
  129. package/lib/types/components/__generated__/checkbox-field.props.d.ts +2 -0
  130. package/lib/types/components/__generated__/checkbox.props.d.ts +2 -0
  131. package/lib/types/components/__generated__/error-message.props.d.ts +2 -0
  132. package/lib/types/components/__generated__/label.props.d.ts +2 -0
  133. package/lib/types/components/__generated__/radio-button-field.props.d.ts +2 -0
  134. package/lib/types/components/__generated__/radio-button.props.d.ts +2 -0
  135. package/lib/types/components/__generated__/success-message.props.d.ts +2 -0
  136. package/lib/types/components/__generated__/textarea.props.d.ts +2 -0
  137. package/lib/types/components/box.stories.d.ts +2 -2
  138. package/lib/types/components/checkbox-field.d.ts +3 -0
  139. package/lib/types/components/checkbox-field.ws.d.ts +3 -0
  140. package/lib/types/components/checkbox.d.ts +3 -0
  141. package/lib/types/components/checkbox.ws.d.ts +3 -0
  142. package/lib/types/components/component-meta.d.ts +23 -5
  143. package/lib/types/components/components-utils.d.ts +5 -20
  144. package/lib/types/components/components.d.ts +8 -0
  145. package/lib/types/components/error-message.d.ts +3 -0
  146. package/lib/types/components/error-message.ws.d.ts +3 -0
  147. package/lib/types/components/index.d.ts +1 -0
  148. package/lib/types/components/input.d.ts +3 -1
  149. package/lib/types/components/input.stories.d.ts +6 -2
  150. package/lib/types/components/label.d.ts +3 -0
  151. package/lib/types/components/label.ws.d.ts +3 -0
  152. package/lib/types/components/radio-button-field.d.ts +3 -0
  153. package/lib/types/components/radio-button-field.ws.d.ts +3 -0
  154. package/lib/types/components/radio-button.d.ts +3 -0
  155. package/lib/types/components/radio-button.ws.d.ts +3 -0
  156. package/lib/types/components/success-message.d.ts +3 -0
  157. package/lib/types/components/success-message.ws.d.ts +3 -0
  158. package/lib/types/components/textarea.d.ts +3 -0
  159. package/lib/types/components/textarea.ws.d.ts +3 -0
  160. package/lib/types/css/normalize.d.ts +8977 -2286
  161. package/lib/types/css/presets.d.ts +2 -38
  162. package/lib/types/css/style-rules.d.ts +11 -9
  163. package/lib/types/embed-template.d.ts +1725 -0
  164. package/lib/types/embed-template.test.d.ts +1 -0
  165. package/lib/types/index.d.ts +1 -0
  166. package/package.json +15 -14
  167. package/src/app/custom-components/__generated__/form.props.ts +457 -0
  168. package/src/app/custom-components/__generated__/image.props.ts +487 -0
  169. package/src/app/custom-components/__generated__/link-block.props.ts +477 -0
  170. package/src/app/custom-components/__generated__/link.props.ts +477 -0
  171. package/src/app/custom-components/__generated__/rich-text-link.props.ts +477 -0
  172. package/src/app/custom-components/form.tsx +94 -0
  173. package/src/app/custom-components/form.ws.tsx +86 -0
  174. package/src/app/custom-components/index.ts +9 -4
  175. package/src/components/__generated__/checkbox-field.props.ts +444 -0
  176. package/src/components/__generated__/checkbox.props.ts +484 -0
  177. package/src/components/__generated__/error-message.props.ts +443 -0
  178. package/src/components/__generated__/input.props.ts +8 -3
  179. package/src/components/__generated__/label.props.ts +445 -0
  180. package/src/components/__generated__/radio-button-field.props.ts +444 -0
  181. package/src/components/__generated__/radio-button.props.ts +484 -0
  182. package/src/components/__generated__/success-message.props.ts +443 -0
  183. package/src/components/__generated__/textarea.props.ts +457 -0
  184. package/src/components/blockquote.ws.tsx +42 -52
  185. package/src/components/body.ws.tsx +26 -23
  186. package/src/components/bold.ws.tsx +6 -3
  187. package/src/components/box.ws.ts +6 -3
  188. package/src/components/button.ws.tsx +13 -5
  189. package/src/components/checkbox-field.tsx +10 -0
  190. package/src/components/checkbox-field.ws.tsx +38 -0
  191. package/src/components/checkbox.tsx +13 -0
  192. package/src/components/checkbox.ws.tsx +40 -0
  193. package/src/components/code.ws.tsx +26 -32
  194. package/src/components/component-meta.ts +6 -3
  195. package/src/components/components-utils.ts +16 -10
  196. package/src/components/components.ts +8 -0
  197. package/src/components/error-message.tsx +10 -0
  198. package/src/components/error-message.ws.tsx +24 -0
  199. package/src/components/form.tsx +5 -1
  200. package/src/components/form.ws.tsx +39 -10
  201. package/src/components/heading.ws.tsx +7 -4
  202. package/src/components/image.ws.tsx +14 -12
  203. package/src/components/index.ts +47 -0
  204. package/src/components/input.tsx +3 -1
  205. package/src/components/input.ws.tsx +19 -4
  206. package/src/components/italic.ws.tsx +11 -8
  207. package/src/components/label.tsx +10 -0
  208. package/src/components/label.ws.tsx +39 -0
  209. package/src/components/link-block.ws.tsx +13 -10
  210. package/src/components/link.ws.tsx +15 -13
  211. package/src/components/list-item.ws.tsx +8 -4
  212. package/src/components/list.ws.tsx +28 -25
  213. package/src/components/paragraph.ws.tsx +7 -4
  214. package/src/components/radio-button-field.tsx +10 -0
  215. package/src/components/radio-button-field.ws.tsx +38 -0
  216. package/src/components/radio-button.tsx +13 -0
  217. package/src/components/radio-button.ws.tsx +40 -0
  218. package/src/components/separator.ws.tsx +26 -25
  219. package/src/components/span.ws.tsx +6 -3
  220. package/src/components/subscript.ws.tsx +6 -3
  221. package/src/components/success-message.tsx +10 -0
  222. package/src/components/success-message.ws.tsx +24 -0
  223. package/src/components/superscript.ws.tsx +6 -3
  224. package/src/components/text-block.ws.tsx +12 -11
  225. package/src/components/textarea.tsx +13 -0
  226. package/src/components/textarea.ws.tsx +41 -0
  227. package/src/css/css.ts +8 -11
  228. package/src/css/normalize.ts +166 -188
  229. package/src/css/presets.ts +15 -37
  230. package/src/css/style-rules.ts +24 -0
  231. package/src/embed-template.test.ts +210 -0
  232. package/src/embed-template.ts +187 -0
  233. package/src/index.ts +1 -0
@@ -0,0 +1,35 @@
1
+ import { RadioCheckedIcon } from "@webstudio-is/icons";
2
+ import { input } from "../css/normalize";
3
+ import { props } from "./__generated__/radio-button.props";
4
+ const presetStyle = {
5
+ input: [
6
+ ...input,
7
+ {
8
+ property: "marginRight",
9
+ value: { type: "unit", unit: "em", value: 0.5 }
10
+ }
11
+ ]
12
+ };
13
+ const meta = {
14
+ type: "control",
15
+ label: "Radio Button",
16
+ Icon: RadioCheckedIcon,
17
+ presetStyle,
18
+ states: [
19
+ { selector: ":checked", label: "Checked" },
20
+ { selector: ":required", label: "Required" },
21
+ { selector: ":optional", label: "Optional" },
22
+ { selector: ":disabled", label: "Disabled" },
23
+ { selector: ":enabled", label: "Enabled" },
24
+ { selector: ":read-only", label: "Read Only" },
25
+ { selector: ":read-write", label: "Read Write" }
26
+ ]
27
+ };
28
+ const propsMeta = {
29
+ props,
30
+ initialProps: ["name"]
31
+ };
32
+ export {
33
+ meta,
34
+ propsMeta
35
+ };
@@ -2,33 +2,33 @@ import { DashIcon } from "@webstudio-is/icons";
2
2
  import { props } from "./__generated__/separator.props";
3
3
  import { hr } from "../css/normalize";
4
4
  const presetStyle = {
5
- hr: {
5
+ hr: [
6
6
  ...hr,
7
- height: {
8
- type: "keyword",
9
- value: "1px"
7
+ {
8
+ property: "height",
9
+ value: { type: "keyword", value: "1px" }
10
10
  },
11
- backgroundColor: {
12
- type: "keyword",
13
- value: "gray"
11
+ {
12
+ property: "backgroundColor",
13
+ value: { type: "keyword", value: "gray" }
14
14
  },
15
- borderTopStyle: {
16
- type: "keyword",
17
- value: "none"
15
+ {
16
+ property: "borderTopStyle",
17
+ value: { type: "keyword", value: "none" }
18
18
  },
19
- borderRightStyle: {
20
- type: "keyword",
21
- value: "none"
19
+ {
20
+ property: "borderRightStyle",
21
+ value: { type: "keyword", value: "none" }
22
22
  },
23
- borderLeftStyle: {
24
- type: "keyword",
25
- value: "none"
23
+ {
24
+ property: "borderLeftStyle",
25
+ value: { type: "keyword", value: "none" }
26
26
  },
27
- borderBottomStyle: {
28
- type: "keyword",
29
- value: "none"
27
+ {
28
+ property: "borderBottomStyle",
29
+ value: { type: "keyword", value: "none" }
30
30
  }
31
- }
31
+ ]
32
32
  };
33
33
  const meta = {
34
34
  category: "general",
@@ -0,0 +1,9 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ const defaultTag = "div";
4
+ const SuccessMessage = forwardRef((props, ref) => /* @__PURE__ */ jsx("div", { ...props, ref }));
5
+ SuccessMessage.displayName = "SuccessMessage";
6
+ export {
7
+ SuccessMessage,
8
+ defaultTag
9
+ };
@@ -0,0 +1,20 @@
1
+ import { BoxIcon } from "@webstudio-is/icons";
2
+ import { props } from "./__generated__/success-message.props";
3
+ import { div } from "../css/normalize";
4
+ const presetStyle = {
5
+ div
6
+ };
7
+ const meta = {
8
+ type: "container",
9
+ label: "Success Message",
10
+ Icon: BoxIcon,
11
+ presetStyle
12
+ };
13
+ const propsMeta = {
14
+ props,
15
+ initialProps: []
16
+ };
17
+ export {
18
+ meta,
19
+ propsMeta
20
+ };
@@ -2,14 +2,13 @@ import { TextBlockIcon } from "@webstudio-is/icons";
2
2
  import { props } from "./__generated__/text-block.props";
3
3
  import { div } from "../css/normalize";
4
4
  const presetStyle = {
5
- div: {
5
+ div: [
6
6
  ...div,
7
- minHeight: {
8
- type: "unit",
9
- unit: "em",
10
- value: 1
7
+ {
8
+ property: "minHeight",
9
+ value: { type: "unit", unit: "em", value: 1 }
11
10
  }
12
- }
11
+ ]
13
12
  };
14
13
  const meta = {
15
14
  category: "typography",
@@ -17,7 +16,7 @@ const meta = {
17
16
  label: "Text Block",
18
17
  Icon: TextBlockIcon,
19
18
  presetStyle,
20
- children: ["Block of text you can edit"]
19
+ children: [{ type: "text", value: "Block of text you can edit" }]
21
20
  };
22
21
  const propsMeta = {
23
22
  props
@@ -0,0 +1,9 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ const defaultTag = "textarea";
4
+ const Textarea = forwardRef(({ children: _children, ...props }, ref) => /* @__PURE__ */ jsx("textarea", { ...props, ref }));
5
+ Textarea.displayName = "Textarea";
6
+ export {
7
+ Textarea,
8
+ defaultTag
9
+ };
@@ -0,0 +1,36 @@
1
+ import { FormTextAreaIcon } from "@webstudio-is/icons";
2
+ import { textarea } from "../css/normalize";
3
+ import { props } from "./__generated__/textarea.props";
4
+ const presetStyle = {
5
+ textarea: [
6
+ ...textarea,
7
+ // resize doesn't work well while on canvas
8
+ { property: "resize", value: { type: "keyword", value: "none" } }
9
+ ]
10
+ };
11
+ const meta = {
12
+ category: "forms",
13
+ type: "control",
14
+ label: "Text Area",
15
+ Icon: FormTextAreaIcon,
16
+ presetStyle,
17
+ states: [
18
+ { selector: "::placeholder", label: "Placeholder" },
19
+ { selector: ":valid", label: "Valid" },
20
+ { selector: ":invalid", label: "Invalid" },
21
+ { selector: ":required", label: "Required" },
22
+ { selector: ":optional", label: "Optional" },
23
+ { selector: ":disabled", label: "Disabled" },
24
+ { selector: ":enabled", label: "Enabled" },
25
+ { selector: ":read-only", label: "Read Only" },
26
+ { selector: ":read-write", label: "Read Write" }
27
+ ]
28
+ };
29
+ const propsMeta = {
30
+ props,
31
+ initialProps: ["name", "placeholder", "required", "autoFocus"]
32
+ };
33
+ export {
34
+ meta,
35
+ propsMeta
36
+ };
package/lib/css/css.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { createCssEngine } from "@webstudio-is/css-engine";
2
2
  import { getComponentNames } from "../components/components-utils";
3
3
  import { getComponentMeta } from "../components";
4
- import { componentAttribute, idAttribute } from "../tree";
4
+ import { idAttribute } from "../tree";
5
5
  import { addGlobalRules } from "./global-rules";
6
- import { getStyleRules } from "./style-rules";
6
+ import { getPresetStyleRules, getStyleRules } from "./style-rules";
7
7
  const createImageValueTransformer = (assets, options) => (styleValue) => {
8
8
  if (styleValue.type === "image" && styleValue.value.type === "asset") {
9
9
  const asset = assets.get(styleValue.value.value);
@@ -40,15 +40,12 @@ const generateCssText = (data, options) => {
40
40
  for (const component of getComponentNames()) {
41
41
  const meta = getComponentMeta(component);
42
42
  const presetStyle = meta?.presetStyle;
43
- if (presetStyle !== void 0) {
44
- for (const [tag, style] of Object.entries(presetStyle)) {
45
- engine.addStyleRule(
46
- `${tag}:where([${componentAttribute}=${component}])`,
47
- {
48
- style
49
- }
50
- );
51
- }
43
+ if (presetStyle === void 0) {
44
+ continue;
45
+ }
46
+ const rules = getPresetStyleRules(component, presetStyle);
47
+ for (const [selector, style] of rules) {
48
+ engine.addStyleRule(selector, { style });
52
49
  }
53
50
  }
54
51
  const styleRules = getStyleRules(styles, styleSourceSelections);