@webstudio-is/sdk-components-react 0.81.0 → 0.83.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 (172) hide show
  1. package/LICENSE +661 -21
  2. package/lib/__generated__/blockquote.props.js +30 -5
  3. package/lib/__generated__/body.props.js +30 -5
  4. package/lib/__generated__/bold.props.js +30 -5
  5. package/lib/__generated__/box.props.js +30 -5
  6. package/lib/__generated__/button.props.js +30 -5
  7. package/lib/__generated__/checkbox.props.js +31 -6
  8. package/lib/__generated__/code-text.props.js +30 -5
  9. package/lib/__generated__/form.props.js +30 -5
  10. package/lib/__generated__/heading.props.js +30 -5
  11. package/lib/__generated__/image.props.js +31 -5
  12. package/lib/__generated__/input.props.js +30 -5
  13. package/lib/__generated__/italic.props.js +30 -5
  14. package/lib/__generated__/label.props.js +30 -5
  15. package/lib/__generated__/link.props.js +30 -5
  16. package/lib/__generated__/list-item.props.js +30 -5
  17. package/lib/__generated__/list.props.js +30 -5
  18. package/lib/__generated__/paragraph.props.js +30 -5
  19. package/lib/__generated__/radio-button.props.js +31 -6
  20. package/lib/__generated__/radix-dialog.props.js +2120 -0
  21. package/lib/__generated__/{link-block.props.js → radix-popover.props.js} +151 -114
  22. package/lib/__generated__/radix-tooltip.props.js +473 -0
  23. package/lib/__generated__/rich-text-link.props.js +30 -5
  24. package/lib/__generated__/separator.props.js +30 -5
  25. package/lib/__generated__/span.props.js +30 -5
  26. package/lib/__generated__/subscript.props.js +30 -5
  27. package/lib/__generated__/superscript.props.js +30 -5
  28. package/lib/__generated__/text.props.js +30 -5
  29. package/lib/__generated__/textarea.props.js +30 -5
  30. package/lib/__generated__/vimeo-play-button.props.js +30 -5
  31. package/lib/__generated__/vimeo-preview-image.props.js +30 -5
  32. package/lib/__generated__/vimeo-spinner.props.js +30 -5
  33. package/lib/__generated__/vimeo.props.js +30 -5
  34. package/lib/body.ws.js +11 -1
  35. package/lib/cjs/__generated__/blockquote.props.js +30 -5
  36. package/lib/cjs/__generated__/body.props.js +30 -5
  37. package/lib/cjs/__generated__/bold.props.js +30 -5
  38. package/lib/cjs/__generated__/box.props.js +30 -5
  39. package/lib/cjs/__generated__/button.props.js +30 -5
  40. package/lib/cjs/__generated__/checkbox.props.js +31 -6
  41. package/lib/cjs/__generated__/code-text.props.js +30 -5
  42. package/lib/cjs/__generated__/form.props.js +30 -5
  43. package/lib/cjs/__generated__/heading.props.js +30 -5
  44. package/lib/cjs/__generated__/image.props.js +31 -5
  45. package/lib/cjs/__generated__/input.props.js +30 -5
  46. package/lib/cjs/__generated__/italic.props.js +30 -5
  47. package/lib/cjs/__generated__/label.props.js +30 -5
  48. package/lib/cjs/__generated__/link.props.js +30 -5
  49. package/lib/cjs/__generated__/list-item.props.js +30 -5
  50. package/lib/cjs/__generated__/list.props.js +30 -5
  51. package/lib/cjs/__generated__/paragraph.props.js +30 -5
  52. package/lib/cjs/__generated__/radio-button.props.js +31 -6
  53. package/lib/cjs/__generated__/radix-dialog.props.js +2140 -0
  54. package/lib/cjs/__generated__/{link-block.props.js → radix-popover.props.js} +154 -117
  55. package/lib/cjs/__generated__/radix-tooltip.props.js +493 -0
  56. package/lib/cjs/__generated__/rich-text-link.props.js +30 -5
  57. package/lib/cjs/__generated__/separator.props.js +30 -5
  58. package/lib/cjs/__generated__/span.props.js +30 -5
  59. package/lib/cjs/__generated__/subscript.props.js +30 -5
  60. package/lib/cjs/__generated__/superscript.props.js +30 -5
  61. package/lib/cjs/__generated__/text.props.js +30 -5
  62. package/lib/cjs/__generated__/textarea.props.js +30 -5
  63. package/lib/cjs/__generated__/vimeo-play-button.props.js +30 -5
  64. package/lib/cjs/__generated__/vimeo-preview-image.props.js +30 -5
  65. package/lib/cjs/__generated__/vimeo-spinner.props.js +30 -5
  66. package/lib/cjs/__generated__/vimeo.props.js +30 -5
  67. package/lib/cjs/body.ws.js +11 -1
  68. package/lib/cjs/components.js +16 -0
  69. package/lib/cjs/image.js +12 -2
  70. package/lib/cjs/label.ws.js +1 -1
  71. package/lib/cjs/metas.js +16 -0
  72. package/lib/cjs/props.js +16 -0
  73. package/lib/cjs/radix-dialog.js +61 -0
  74. package/lib/cjs/radix-dialog.ws.js +300 -0
  75. package/lib/cjs/radix-popover.js +59 -0
  76. package/lib/cjs/radix-popover.ws.js +139 -0
  77. package/lib/cjs/radix-tooltip.js +51 -0
  78. package/lib/cjs/radix-tooltip.ws.js +140 -0
  79. package/lib/cjs/theme/radix-common-types.js +16 -0
  80. package/lib/cjs/theme/tailwind-classes.js +439 -0
  81. package/lib/cjs/theme/tailwind-colors.js +33 -0
  82. package/lib/cjs/theme/tailwind-theme.js +46 -0
  83. package/lib/cjs/vimeo-play-button.ws.js +1 -0
  84. package/lib/cjs/vimeo-preview-image.ws.js +1 -0
  85. package/lib/cjs/vimeo.ws.js +1 -0
  86. package/lib/components.js +24 -0
  87. package/lib/image.js +12 -2
  88. package/lib/label.ws.js +2 -2
  89. package/lib/metas.js +32 -0
  90. package/lib/props.js +32 -0
  91. package/lib/radix-dialog.js +36 -0
  92. package/lib/radix-dialog.ws.js +279 -0
  93. package/lib/radix-popover.js +34 -0
  94. package/lib/radix-popover.ws.js +114 -0
  95. package/lib/radix-tooltip.js +26 -0
  96. package/lib/radix-tooltip.ws.js +115 -0
  97. package/lib/theme/radix-common-types.js +0 -0
  98. package/lib/theme/tailwind-classes.js +419 -0
  99. package/lib/theme/tailwind-colors.js +13 -0
  100. package/lib/theme/tailwind-theme.js +16 -0
  101. package/lib/types/__generated__/radix-dialog.props.d.ts +8 -0
  102. package/lib/types/__generated__/radix-popover.props.d.ts +4 -0
  103. package/lib/types/__generated__/radix-tooltip.props.d.ts +4 -0
  104. package/lib/types/components.d.ts +3 -0
  105. package/lib/types/metas.d.ts +3 -0
  106. package/lib/types/props.d.ts +3 -0
  107. package/lib/types/radix-dialog.d.ts +26 -0
  108. package/lib/types/radix-dialog.ws.d.ts +23 -0
  109. package/lib/types/radix-popover.d.ts +22 -0
  110. package/lib/types/radix-popover.ws.d.ts +15 -0
  111. package/lib/types/radix-tooltip.d.ts +22 -0
  112. package/lib/types/radix-tooltip.ws.d.ts +15 -0
  113. package/lib/types/theme/radix-common-types.d.ts +84 -0
  114. package/lib/types/theme/tailwind-classes.d.ts +69 -0
  115. package/lib/types/theme/tailwind-colors.d.ts +19 -0
  116. package/lib/types/theme/tailwind-theme.d.ts +72 -0
  117. package/lib/types/vimeo-preview-image.d.ts +6 -1
  118. package/lib/vimeo-play-button.ws.js +1 -0
  119. package/lib/vimeo-preview-image.js +1 -1
  120. package/lib/vimeo-preview-image.ws.js +2 -0
  121. package/lib/vimeo.ws.js +1 -0
  122. package/package.json +18 -13
  123. package/src/LICENSE +661 -21
  124. package/src/__generated__/blockquote.props.ts +34 -5
  125. package/src/__generated__/body.props.ts +34 -5
  126. package/src/__generated__/bold.props.ts +34 -5
  127. package/src/__generated__/box.props.ts +34 -5
  128. package/src/__generated__/button.props.ts +34 -5
  129. package/src/__generated__/checkbox.props.ts +35 -6
  130. package/src/__generated__/code-text.props.ts +34 -5
  131. package/src/__generated__/form.props.ts +34 -5
  132. package/src/__generated__/heading.props.ts +34 -5
  133. package/src/__generated__/image.props.ts +35 -5
  134. package/src/__generated__/input.props.ts +34 -5
  135. package/src/__generated__/italic.props.ts +34 -5
  136. package/src/__generated__/label.props.ts +34 -5
  137. package/src/__generated__/link.props.ts +34 -5
  138. package/src/__generated__/list-item.props.ts +34 -5
  139. package/src/__generated__/list.props.ts +34 -5
  140. package/src/__generated__/paragraph.props.ts +34 -5
  141. package/src/__generated__/radio-button.props.ts +35 -6
  142. package/src/__generated__/radix-dialog.props.ts +2363 -0
  143. package/src/__generated__/{link-block.props.ts → radix-popover.props.ts} +153 -114
  144. package/src/__generated__/radix-tooltip.props.ts +521 -0
  145. package/src/__generated__/rich-text-link.props.ts +34 -5
  146. package/src/__generated__/separator.props.ts +34 -5
  147. package/src/__generated__/span.props.ts +34 -5
  148. package/src/__generated__/subscript.props.ts +34 -5
  149. package/src/__generated__/superscript.props.ts +34 -5
  150. package/src/__generated__/text.props.ts +34 -5
  151. package/src/__generated__/textarea.props.ts +34 -5
  152. package/src/__generated__/vimeo-play-button.props.ts +34 -5
  153. package/src/__generated__/vimeo-preview-image.props.ts +34 -5
  154. package/src/__generated__/vimeo-spinner.props.ts +34 -5
  155. package/src/__generated__/vimeo.props.ts +34 -5
  156. package/src/body.ws.tsx +11 -1
  157. package/src/components.ts +11 -0
  158. package/src/image.tsx +9 -2
  159. package/src/label.ws.tsx +2 -2
  160. package/src/metas.ts +21 -0
  161. package/src/props.ts +19 -0
  162. package/src/radix-dialog.tsx +91 -0
  163. package/src/radix-dialog.ws.tsx +291 -0
  164. package/src/radix-popover.tsx +89 -0
  165. package/src/radix-popover.ws.tsx +124 -0
  166. package/src/radix-tooltip.tsx +84 -0
  167. package/src/radix-tooltip.ws.tsx +125 -0
  168. package/src/theme/radix-common-types.ts +495 -0
  169. package/src/theme/tailwind-classes.ts +570 -0
  170. package/src/theme/tailwind-colors.ts +47 -0
  171. package/src/theme/tailwind-theme.ts +24 -0
  172. package/lib/types/__generated__/link-block.props.d.ts +0 -2
package/lib/props.js CHANGED
@@ -30,6 +30,25 @@ import { propsMeta as propsMeta29 } from "./vimeo.ws";
30
30
  import { propsMeta as propsMeta30 } from "./vimeo-preview-image.ws";
31
31
  import { propsMeta as propsMeta31 } from "./vimeo-play-button.ws";
32
32
  import { propsMeta as propsMeta32 } from "./vimeo-spinner.ws";
33
+ import {
34
+ propsMetaTooltip,
35
+ propsMetaTooltipContent,
36
+ propsMetaTooltipTrigger
37
+ } from "./radix-tooltip.ws";
38
+ import {
39
+ propsMetaPopover,
40
+ propsMetaPopoverContent,
41
+ propsMetaPopoverTrigger
42
+ } from "./radix-popover.ws";
43
+ import {
44
+ propsMetaDialog,
45
+ propsMetaDialogContent,
46
+ propsMetaDialogTrigger,
47
+ propsMetaDialogOverlay,
48
+ propsMetaDialogClose,
49
+ propsMetaDialogDescription,
50
+ propsMetaDialogTitle
51
+ } from "./radix-dialog.ws";
33
52
  export {
34
53
  propsMeta20 as Blockquote,
35
54
  propsMeta4 as Body,
@@ -38,6 +57,13 @@ export {
38
57
  propsMeta16 as Button,
39
58
  propsMeta28 as Checkbox,
40
59
  propsMeta24 as CodeText,
60
+ propsMetaDialog as Dialog,
61
+ propsMetaDialogClose as DialogClose,
62
+ propsMetaDialogContent as DialogContent,
63
+ propsMetaDialogDescription as DialogDescription,
64
+ propsMetaDialogOverlay as DialogOverlay,
65
+ propsMetaDialogTitle as DialogTitle,
66
+ propsMetaDialogTrigger as DialogTrigger,
41
67
  propsMeta18 as Form,
42
68
  propsMeta2 as Fragment,
43
69
  propsMeta7 as Heading,
@@ -50,6 +76,9 @@ export {
50
76
  propsMeta21 as List,
51
77
  propsMeta22 as ListItem,
52
78
  propsMeta8 as Paragraph,
79
+ propsMetaPopover as Popover,
80
+ propsMetaPopoverContent as PopoverContent,
81
+ propsMetaPopoverTrigger as PopoverTrigger,
53
82
  propsMeta27 as RadioButton,
54
83
  propsMeta10 as RichTextLink,
55
84
  propsMeta23 as Separator,
@@ -59,6 +88,9 @@ export {
59
88
  propsMeta14 as Superscript,
60
89
  propsMeta6 as Text,
61
90
  propsMeta26 as Textarea,
91
+ propsMetaTooltip as Tooltip,
92
+ propsMetaTooltipContent as TooltipContent,
93
+ propsMetaTooltipTrigger as TooltipTrigger,
62
94
  propsMeta29 as Vimeo,
63
95
  propsMeta31 as VimeoPlayButton,
64
96
  propsMeta30 as VimeoPreviewImage,
@@ -0,0 +1,36 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
3
+ import {
4
+ splitPropsWithWebstudioAttributes
5
+ } from "@webstudio-is/react-sdk";
6
+ import {
7
+ forwardRef,
8
+ Children
9
+ } from "react";
10
+ const DisplayContentsStyle = { display: "contents" };
11
+ const Dialog = forwardRef(({ open: openProp, isOpen, ...props }, ref) => {
12
+ const [webstudioAttributes, restProps] = splitPropsWithWebstudioAttributes(props);
13
+ const open = openProp ?? (isOpen === "open" ? true : isOpen === "closed" ? false : void 0);
14
+ return /* @__PURE__ */ jsx("div", { ref, style: DisplayContentsStyle, ...webstudioAttributes, children: /* @__PURE__ */ jsx(DialogPrimitive.Root, { open, ...restProps }) });
15
+ });
16
+ const DialogTrigger = forwardRef(({ children, ...props }, ref) => {
17
+ const firstChild = Children.toArray(children)[0];
18
+ const [webstudioAttributes, restProps] = splitPropsWithWebstudioAttributes(props);
19
+ return /* @__PURE__ */ jsx("div", { ref, style: DisplayContentsStyle, ...webstudioAttributes, children: /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { asChild: true, ...restProps, children: firstChild ?? /* @__PURE__ */ jsx("button", { children: "Add button or link" }) }) });
20
+ });
21
+ const DialogOverlay = forwardRef((props, ref) => {
22
+ return /* @__PURE__ */ jsx(DialogPrimitive.DialogPortal, { children: /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { ref, ...props }) });
23
+ });
24
+ const DialogContent = DialogPrimitive.Content;
25
+ const DialogClose = DialogPrimitive.Close;
26
+ const DialogTitle = DialogPrimitive.Title;
27
+ const DialogDescription = DialogPrimitive.Description;
28
+ export {
29
+ Dialog,
30
+ DialogClose,
31
+ DialogContent,
32
+ DialogDescription,
33
+ DialogOverlay,
34
+ DialogTitle,
35
+ DialogTrigger
36
+ };
@@ -0,0 +1,279 @@
1
+ import { RadioCheckedIcon } from "@webstudio-is/icons/svg";
2
+ import {
3
+ } from "@webstudio-is/react-sdk";
4
+ import * as tc from "./theme/tailwind-classes";
5
+ import {
6
+ propsDialog,
7
+ propsDialogContent,
8
+ propsDialogTrigger,
9
+ propsDialogOverlay,
10
+ propsDialogClose,
11
+ propsDialogTitle,
12
+ propsDialogDescription
13
+ } from "./__generated__/radix-dialog.props";
14
+ const metaDialogTrigger = {
15
+ category: "hidden",
16
+ invalidAncestors: [],
17
+ type: "container",
18
+ label: "DialogTrigger",
19
+ icon: RadioCheckedIcon,
20
+ stylable: false,
21
+ detachable: false
22
+ };
23
+ const metaDialogContent = {
24
+ category: "hidden",
25
+ invalidAncestors: [],
26
+ type: "container",
27
+ label: "DialogContent",
28
+ icon: RadioCheckedIcon,
29
+ detachable: false
30
+ };
31
+ const metaDialogOverlay = {
32
+ category: "hidden",
33
+ invalidAncestors: [],
34
+ type: "container",
35
+ label: "DialogOverlay",
36
+ icon: RadioCheckedIcon,
37
+ detachable: false
38
+ };
39
+ const metaDialogTitle = {
40
+ category: "hidden",
41
+ invalidAncestors: [],
42
+ type: "container",
43
+ label: "DialogTitle",
44
+ icon: RadioCheckedIcon
45
+ };
46
+ const metaDialogDescription = {
47
+ category: "hidden",
48
+ invalidAncestors: [],
49
+ type: "container",
50
+ label: "DialogDescription",
51
+ icon: RadioCheckedIcon
52
+ };
53
+ const metaDialogClose = {
54
+ category: "hidden",
55
+ invalidAncestors: [],
56
+ type: "container",
57
+ label: "DialogClose",
58
+ icon: RadioCheckedIcon
59
+ };
60
+ const metaDialog = {
61
+ category: "radix",
62
+ invalidAncestors: [],
63
+ type: "container",
64
+ label: "Dialog",
65
+ icon: RadioCheckedIcon,
66
+ order: 15,
67
+ stylable: false,
68
+ template: [
69
+ {
70
+ type: "instance",
71
+ component: "Dialog",
72
+ label: "Dialog",
73
+ props: [
74
+ {
75
+ name: "isOpen",
76
+ // We don't have support for boolean or undefined, instead of binding on open we bind on a string
77
+ type: "string",
78
+ value: "initial",
79
+ dataSourceRef: {
80
+ type: "variable",
81
+ name: "isOpen"
82
+ }
83
+ }
84
+ ],
85
+ children: [
86
+ {
87
+ type: "instance",
88
+ component: "DialogTrigger",
89
+ props: [],
90
+ children: [
91
+ {
92
+ type: "instance",
93
+ component: "Button",
94
+ children: [{ type: "text", value: "Button" }]
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ type: "instance",
100
+ component: "DialogOverlay",
101
+ label: "Dialog Overlay",
102
+ props: [],
103
+ /**
104
+ * fixed inset-0 z-50 bg-background/80 backdrop-blur-sm
105
+ * flex
106
+ **/
107
+ styles: [
108
+ tc.fixed(),
109
+ tc.inset(0),
110
+ tc.z(50),
111
+ tc.bg("background", 80),
112
+ tc.backdropBlur("sm"),
113
+ // To allow positioning Content
114
+ tc.flex()
115
+ ].flat(),
116
+ children: [
117
+ {
118
+ type: "instance",
119
+ component: "DialogContent",
120
+ label: "Dialog Content",
121
+ props: [],
122
+ /**
123
+ * fixed w-full z-50
124
+ * grid gap-4 max-w-lg
125
+ * m-auto
126
+ * border bg-background p-6 shadow-lg
127
+ **/
128
+ styles: [
129
+ tc.w("full"),
130
+ tc.z(50),
131
+ tc.flex(),
132
+ tc.flex("col"),
133
+ tc.gap(4),
134
+ tc.m("auto"),
135
+ tc.maxW("lg"),
136
+ tc.border(),
137
+ tc.bg("background"),
138
+ tc.p(6),
139
+ tc.shadow("lg"),
140
+ tc.relative()
141
+ ].flat(),
142
+ children: [
143
+ {
144
+ type: "instance",
145
+ component: "Box",
146
+ label: "Dialog Header",
147
+ props: [],
148
+ styles: [tc.flex(), tc.flex("col"), tc.gap(1)].flat(),
149
+ children: [
150
+ {
151
+ type: "instance",
152
+ component: "DialogTitle",
153
+ label: "Dialog Title",
154
+ props: [],
155
+ /**
156
+ * text-lg leading-none tracking-tight
157
+ **/
158
+ styles: [
159
+ tc.my(0),
160
+ tc.leading("none"),
161
+ tc.text("lg"),
162
+ tc.tracking("tight")
163
+ ].flat(),
164
+ children: [
165
+ {
166
+ type: "text",
167
+ value: "Dialog Title"
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ type: "instance",
173
+ component: "DialogDescription",
174
+ label: "Dialog Description",
175
+ props: [],
176
+ /**
177
+ * text-sm text-muted-foreground
178
+ **/
179
+ styles: [
180
+ tc.my(0),
181
+ tc.text("sm"),
182
+ tc.text("mutedForeground")
183
+ ].flat(),
184
+ children: [
185
+ {
186
+ type: "text",
187
+ value: "dialog description text you can edit"
188
+ }
189
+ ]
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ type: "instance",
195
+ component: "Text",
196
+ children: [{ type: "text", value: "The text you can edit" }]
197
+ },
198
+ {
199
+ type: "instance",
200
+ component: "DialogClose",
201
+ label: "Dialog Close",
202
+ props: [],
203
+ /**
204
+ * absolute right-4 top-4
205
+ * rounded-sm opacity-70
206
+ * ring-offset-background
207
+ * hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2
208
+ * flex items-center justify-center h-4 w-4
209
+ **/
210
+ styles: [
211
+ tc.absolute(),
212
+ tc.right(4),
213
+ tc.top(4),
214
+ tc.rounded("sm"),
215
+ tc.opacity(70),
216
+ tc.flex(),
217
+ tc.items("center"),
218
+ tc.justify("center"),
219
+ tc.h(4),
220
+ tc.w(4),
221
+ tc.border(0),
222
+ tc.bg("transparent"),
223
+ tc.outline("none"),
224
+ tc.hover(tc.opacity(100)),
225
+ tc.focus(tc.ring("ring", 2, "background", 2))
226
+ ].flat(),
227
+ children: [{ type: "text", value: "\u2715" }]
228
+ }
229
+ ]
230
+ }
231
+ ]
232
+ }
233
+ ]
234
+ }
235
+ ]
236
+ };
237
+ const propsMetaDialog = {
238
+ props: propsDialog,
239
+ initialProps: ["isOpen", "modal"]
240
+ };
241
+ const propsMetaDialogTrigger = {
242
+ props: propsDialogTrigger
243
+ };
244
+ const propsMetaDialogContent = {
245
+ props: propsDialogContent,
246
+ initialProps: []
247
+ };
248
+ const propsMetaDialogOverlay = {
249
+ props: propsDialogOverlay,
250
+ initialProps: []
251
+ };
252
+ const propsMetaDialogClose = {
253
+ props: propsDialogClose,
254
+ initialProps: []
255
+ };
256
+ const propsMetaDialogTitle = {
257
+ props: propsDialogTitle,
258
+ initialProps: []
259
+ };
260
+ const propsMetaDialogDescription = {
261
+ props: propsDialogDescription,
262
+ initialProps: []
263
+ };
264
+ export {
265
+ metaDialog,
266
+ metaDialogClose,
267
+ metaDialogContent,
268
+ metaDialogDescription,
269
+ metaDialogOverlay,
270
+ metaDialogTitle,
271
+ metaDialogTrigger,
272
+ propsMetaDialog,
273
+ propsMetaDialogClose,
274
+ propsMetaDialogContent,
275
+ propsMetaDialogDescription,
276
+ propsMetaDialogOverlay,
277
+ propsMetaDialogTitle,
278
+ propsMetaDialogTrigger
279
+ };
@@ -0,0 +1,34 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
3
+ import {
4
+ splitPropsWithWebstudioAttributes
5
+ } from "@webstudio-is/react-sdk";
6
+ import {
7
+ forwardRef,
8
+ Children
9
+ } from "react";
10
+ const DisplayContentsStyle = { display: "contents" };
11
+ const Popover = forwardRef(({ open: openProp, isOpen, ...props }, ref) => {
12
+ const [webstudioAttributes, restProps] = splitPropsWithWebstudioAttributes(props);
13
+ const open = openProp ?? (isOpen === "open" ? true : isOpen === "closed" ? false : void 0);
14
+ return /* @__PURE__ */ jsx("div", { ref, style: DisplayContentsStyle, ...webstudioAttributes, children: /* @__PURE__ */ jsx(PopoverPrimitive.Root, { open, ...restProps }) });
15
+ });
16
+ const PopoverTrigger = forwardRef(({ children, ...props }, ref) => {
17
+ const firstChild = Children.toArray(children)[0];
18
+ const [webstudioAttributes, restProps] = splitPropsWithWebstudioAttributes(props);
19
+ return /* @__PURE__ */ jsx("div", { ref, style: DisplayContentsStyle, ...webstudioAttributes, children: /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { asChild: true, ...restProps, children: firstChild ?? /* @__PURE__ */ jsx("button", { children: "Add button or link" }) }) });
20
+ });
21
+ const PopoverContent = forwardRef(({ sideOffset = 4, align = "center", ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
22
+ PopoverPrimitive.Content,
23
+ {
24
+ ref,
25
+ align: "center",
26
+ sideOffset,
27
+ ...props
28
+ }
29
+ ) }));
30
+ export {
31
+ Popover,
32
+ PopoverContent,
33
+ PopoverTrigger
34
+ };
@@ -0,0 +1,114 @@
1
+ import { RadioCheckedIcon } from "@webstudio-is/icons/svg";
2
+ import {
3
+ } from "@webstudio-is/react-sdk";
4
+ import * as tc from "./theme/tailwind-classes";
5
+ import {
6
+ propsPopover,
7
+ propsPopoverContent,
8
+ propsPopoverTrigger
9
+ } from "./__generated__/radix-popover.props";
10
+ const metaPopoverTrigger = {
11
+ category: "hidden",
12
+ invalidAncestors: [],
13
+ type: "container",
14
+ label: "PopoverTrigger",
15
+ icon: RadioCheckedIcon,
16
+ stylable: false,
17
+ detachable: false
18
+ };
19
+ const metaPopoverContent = {
20
+ category: "hidden",
21
+ invalidAncestors: [],
22
+ type: "container",
23
+ label: "PopoverContent",
24
+ icon: RadioCheckedIcon,
25
+ detachable: false
26
+ };
27
+ const metaPopover = {
28
+ category: "radix",
29
+ invalidAncestors: [],
30
+ type: "container",
31
+ label: "Popover",
32
+ icon: RadioCheckedIcon,
33
+ order: 15,
34
+ stylable: false,
35
+ template: [
36
+ {
37
+ type: "instance",
38
+ component: "Popover",
39
+ label: "Popover",
40
+ props: [
41
+ {
42
+ name: "isOpen",
43
+ // We don't have support for boolean or undefined, instead of binding on open we bind on a string
44
+ type: "string",
45
+ value: "initial",
46
+ dataSourceRef: {
47
+ type: "variable",
48
+ name: "isOpen"
49
+ }
50
+ }
51
+ ],
52
+ children: [
53
+ {
54
+ type: "instance",
55
+ component: "PopoverTrigger",
56
+ props: [],
57
+ children: [
58
+ {
59
+ type: "instance",
60
+ component: "Button",
61
+ children: [{ type: "text", value: "Button" }]
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ type: "instance",
67
+ component: "PopoverContent",
68
+ label: "Popover Content",
69
+ props: [],
70
+ /**
71
+ * z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none
72
+ **/
73
+ styles: [
74
+ tc.z(50),
75
+ tc.w(72),
76
+ tc.rounded("md"),
77
+ tc.border(),
78
+ tc.bg("popover"),
79
+ tc.p(4),
80
+ tc.text("popoverForeground"),
81
+ tc.shadow("md"),
82
+ tc.outline("none")
83
+ ].flat(),
84
+ children: [
85
+ {
86
+ type: "instance",
87
+ component: "Text",
88
+ children: [{ type: "text", value: "The text you can edit" }]
89
+ }
90
+ ]
91
+ }
92
+ ]
93
+ }
94
+ ]
95
+ };
96
+ const propsMetaPopover = {
97
+ props: propsPopover,
98
+ initialProps: ["isOpen", "modal"]
99
+ };
100
+ const propsMetaPopoverTrigger = {
101
+ props: propsPopoverTrigger
102
+ };
103
+ const propsMetaPopoverContent = {
104
+ props: propsPopoverContent,
105
+ initialProps: ["side", "sideOffset", "align", "alignOffset"]
106
+ };
107
+ export {
108
+ metaPopover,
109
+ metaPopoverContent,
110
+ metaPopoverTrigger,
111
+ propsMetaPopover,
112
+ propsMetaPopoverContent,
113
+ propsMetaPopoverTrigger
114
+ };
@@ -0,0 +1,26 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3
+ import {
4
+ splitPropsWithWebstudioAttributes
5
+ } from "@webstudio-is/react-sdk";
6
+ import {
7
+ forwardRef,
8
+ Children
9
+ } from "react";
10
+ const DisplayContentsStyle = { display: "contents" };
11
+ const Tooltip = forwardRef(({ open: openProp, isOpen, ...props }, ref) => {
12
+ const [webstudioAttributes, restProps] = splitPropsWithWebstudioAttributes(props);
13
+ const open = openProp ?? (isOpen === "open" ? true : isOpen === "closed" ? false : void 0);
14
+ return /* @__PURE__ */ jsx("div", { ref, style: DisplayContentsStyle, ...webstudioAttributes, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { open, ...restProps }) });
15
+ });
16
+ const TooltipTrigger = forwardRef(({ children, ...props }, ref) => {
17
+ const firstChild = Children.toArray(children)[0];
18
+ const [webstudioAttributes, restProps] = splitPropsWithWebstudioAttributes(props);
19
+ return /* @__PURE__ */ jsx("div", { ref, style: DisplayContentsStyle, ...webstudioAttributes, children: /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { asChild: true, ...restProps, children: firstChild ?? /* @__PURE__ */ jsx("button", { children: "Add button or link" }) }) });
20
+ });
21
+ const TooltipContent = forwardRef(({ sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Content, { ref, sideOffset, ...props }) }));
22
+ export {
23
+ Tooltip,
24
+ TooltipContent,
25
+ TooltipTrigger
26
+ };
@@ -0,0 +1,115 @@
1
+ import { RadioCheckedIcon } from "@webstudio-is/icons/svg";
2
+ import {
3
+ } from "@webstudio-is/react-sdk";
4
+ import * as tc from "./theme/tailwind-classes";
5
+ import {
6
+ propsTooltip,
7
+ propsTooltipContent,
8
+ propsTooltipTrigger
9
+ } from "./__generated__/radix-tooltip.props";
10
+ const metaTooltipTrigger = {
11
+ category: "hidden",
12
+ detachable: false,
13
+ invalidAncestors: [],
14
+ type: "container",
15
+ label: "TooltipTrigger",
16
+ icon: RadioCheckedIcon,
17
+ stylable: false
18
+ };
19
+ const metaTooltipContent = {
20
+ category: "hidden",
21
+ detachable: false,
22
+ invalidAncestors: [],
23
+ type: "container",
24
+ label: "TooltipContent",
25
+ icon: RadioCheckedIcon
26
+ };
27
+ const metaTooltip = {
28
+ category: "radix",
29
+ invalidAncestors: [],
30
+ type: "container",
31
+ label: "Tooltip",
32
+ icon: RadioCheckedIcon,
33
+ order: 15,
34
+ stylable: false,
35
+ template: [
36
+ {
37
+ type: "instance",
38
+ component: "Tooltip",
39
+ label: "Tooltip",
40
+ props: [
41
+ {
42
+ name: "isOpen",
43
+ // We don't have support for boolean or undefined, instead of binding on open we bind on a string
44
+ type: "string",
45
+ value: "initial",
46
+ dataSourceRef: {
47
+ type: "variable",
48
+ name: "isOpen"
49
+ }
50
+ }
51
+ ],
52
+ children: [
53
+ {
54
+ type: "instance",
55
+ component: "TooltipTrigger",
56
+ props: [],
57
+ children: [
58
+ {
59
+ type: "instance",
60
+ component: "Button",
61
+ children: [{ type: "text", value: "Button" }]
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ type: "instance",
67
+ component: "TooltipContent",
68
+ label: "Tooltip Content",
69
+ props: [],
70
+ /**
71
+ * z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md
72
+ **/
73
+ styles: [
74
+ tc.z(50),
75
+ tc.overflow("hidden"),
76
+ tc.rounded("md"),
77
+ tc.border(),
78
+ tc.bg("popover"),
79
+ tc.px(3),
80
+ tc.py(1.5),
81
+ tc.text("sm"),
82
+ tc.text("popoverForeground"),
83
+ tc.shadow("md")
84
+ ].flat(),
85
+ children: [
86
+ {
87
+ type: "instance",
88
+ component: "Text",
89
+ children: [{ type: "text", value: "The text you can edit" }]
90
+ }
91
+ ]
92
+ }
93
+ ]
94
+ }
95
+ ]
96
+ };
97
+ const propsMetaTooltip = {
98
+ props: propsTooltip,
99
+ initialProps: ["isOpen", "delayDuration", "disableHoverableContent"]
100
+ };
101
+ const propsMetaTooltipTrigger = {
102
+ props: propsTooltipTrigger
103
+ };
104
+ const propsMetaTooltipContent = {
105
+ props: propsTooltipContent,
106
+ initialProps: ["side", "sideOffset", "align", "alignOffset"]
107
+ };
108
+ export {
109
+ metaTooltip,
110
+ metaTooltipContent,
111
+ metaTooltipTrigger,
112
+ propsMetaTooltip,
113
+ propsMetaTooltipContent,
114
+ propsMetaTooltipTrigger
115
+ };
File without changes