@webstudio-is/sdk-components-react-radix 0.87.1 → 0.89.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 (192) hide show
  1. package/lib/__generated__/accordion.props.js +605 -114
  2. package/lib/__generated__/button.props.js +158 -47
  3. package/lib/__generated__/checkbox.props.js +1083 -0
  4. package/lib/__generated__/collapsible.props.js +234 -44
  5. package/lib/__generated__/dialog.props.js +611 -121
  6. package/lib/__generated__/input.props.js +264 -47
  7. package/lib/__generated__/label.props.js +123 -23
  8. package/lib/__generated__/navigation-menu.props.js +2565 -0
  9. package/lib/__generated__/popover.props.js +129 -28
  10. package/lib/__generated__/radio-group.props.js +1627 -0
  11. package/lib/__generated__/select.props.js +3678 -0
  12. package/lib/__generated__/sheet.props.js +591 -121
  13. package/lib/__generated__/switch.props.js +1083 -0
  14. package/lib/__generated__/tabs.props.js +906 -68
  15. package/lib/__generated__/textarea.props.js +177 -31
  16. package/lib/__generated__/tooltip.props.js +131 -29
  17. package/lib/accordion.js +11 -4
  18. package/lib/accordion.ws.js +88 -72
  19. package/lib/checkbox.js +13 -0
  20. package/lib/checkbox.ws.js +153 -0
  21. package/lib/cjs/__generated__/accordion.props.js +605 -114
  22. package/lib/cjs/__generated__/button.props.js +158 -47
  23. package/lib/cjs/__generated__/checkbox.props.js +1103 -0
  24. package/lib/cjs/__generated__/collapsible.props.js +234 -44
  25. package/lib/cjs/__generated__/dialog.props.js +611 -121
  26. package/lib/cjs/__generated__/input.props.js +264 -47
  27. package/lib/cjs/__generated__/label.props.js +123 -23
  28. package/lib/cjs/__generated__/navigation-menu.props.js +2585 -0
  29. package/lib/cjs/__generated__/popover.props.js +129 -28
  30. package/lib/cjs/__generated__/radio-group.props.js +1647 -0
  31. package/lib/cjs/__generated__/select.props.js +3698 -0
  32. package/lib/cjs/__generated__/sheet.props.js +591 -121
  33. package/lib/cjs/__generated__/switch.props.js +1103 -0
  34. package/lib/cjs/__generated__/tabs.props.js +906 -68
  35. package/lib/cjs/__generated__/textarea.props.js +177 -31
  36. package/lib/cjs/__generated__/tooltip.props.js +131 -29
  37. package/lib/cjs/accordion.js +11 -4
  38. package/lib/cjs/accordion.ws.js +86 -71
  39. package/lib/cjs/{textarea.js → checkbox.js} +9 -6
  40. package/lib/cjs/checkbox.ws.js +174 -0
  41. package/lib/cjs/collapsible.ws.js +5 -1
  42. package/lib/cjs/components.js +27 -14
  43. package/lib/cjs/dialog.ws.js +18 -17
  44. package/lib/cjs/hooks.js +5 -1
  45. package/lib/cjs/label.ws.js +2 -1
  46. package/lib/cjs/metas.js +29 -14
  47. package/lib/cjs/navigation-menu.js +107 -0
  48. package/lib/cjs/navigation-menu.ws.js +514 -0
  49. package/lib/cjs/popover.ws.js +13 -9
  50. package/lib/cjs/props-descriptions.js +56 -0
  51. package/lib/cjs/props.js +27 -14
  52. package/lib/cjs/{button.js → radio-group.js} +10 -8
  53. package/lib/cjs/radio-group.ws.js +191 -0
  54. package/lib/cjs/select.js +83 -0
  55. package/lib/cjs/select.ws.js +350 -0
  56. package/lib/cjs/sheet.ws.js +88 -176
  57. package/lib/cjs/{input.js → switch.js} +8 -9
  58. package/lib/cjs/switch.ws.js +173 -0
  59. package/lib/cjs/tabs.js +2 -3
  60. package/lib/cjs/tabs.ws.js +14 -18
  61. package/lib/cjs/theme/styles.js +100 -0
  62. package/lib/cjs/theme/tailwind-classes.js +125 -16
  63. package/lib/cjs/theme/tailwind-colors.js +1 -0
  64. package/lib/cjs/tooltip.ws.js +12 -8
  65. package/lib/collapsible.ws.js +5 -1
  66. package/lib/components.js +44 -22
  67. package/lib/dialog.ws.js +18 -17
  68. package/lib/hooks.js +5 -1
  69. package/lib/label.ws.js +2 -1
  70. package/lib/metas.js +58 -24
  71. package/lib/navigation-menu.js +85 -0
  72. package/lib/navigation-menu.ws.js +501 -0
  73. package/lib/popover.ws.js +13 -9
  74. package/lib/props-descriptions.js +36 -0
  75. package/lib/props.js +56 -24
  76. package/lib/radio-group.js +11 -0
  77. package/lib/radio-group.ws.js +173 -0
  78. package/lib/select.js +75 -0
  79. package/lib/select.ws.js +338 -0
  80. package/lib/sheet.ws.js +89 -194
  81. package/lib/switch.js +7 -0
  82. package/lib/switch.ws.js +145 -0
  83. package/lib/tabs.js +3 -5
  84. package/lib/tabs.ws.js +15 -19
  85. package/lib/theme/styles.js +70 -0
  86. package/lib/theme/tailwind-classes.js +125 -16
  87. package/lib/theme/tailwind-colors.js +1 -0
  88. package/lib/tooltip.ws.js +12 -8
  89. package/lib/types/__generated__/checkbox.props.d.ts +3 -0
  90. package/lib/types/__generated__/navigation-menu.props.d.ts +8 -0
  91. package/lib/types/__generated__/radio-group.props.d.ts +4 -0
  92. package/lib/types/__generated__/select.props.d.ts +9 -0
  93. package/lib/types/__generated__/switch.props.d.ts +3 -0
  94. package/lib/types/checkbox.d.ts +6 -0
  95. package/lib/types/checkbox.stories.d.ts +11 -0
  96. package/lib/types/checkbox.ws.d.ts +5 -0
  97. package/lib/types/components.d.ts +5 -4
  98. package/lib/types/metas.d.ts +6 -4
  99. package/lib/types/navigation-menu.d.ts +15 -0
  100. package/lib/types/navigation-menu.ws.d.ts +15 -0
  101. package/lib/types/props-descriptions.d.ts +29 -0
  102. package/lib/types/props.d.ts +5 -4
  103. package/lib/types/radio-group.d.ts +5 -0
  104. package/lib/types/radio-group.stories.d.ts +9 -0
  105. package/lib/types/radio-group.ws.d.ts +7 -0
  106. package/lib/types/select.d.ts +14 -0
  107. package/lib/types/select.ws.d.ts +17 -0
  108. package/lib/types/sheet.ws.d.ts +2 -15
  109. package/lib/types/switch.d.ts +4 -0
  110. package/lib/types/switch.stories.d.ts +9 -0
  111. package/lib/types/switch.ws.d.ts +5 -0
  112. package/lib/types/tabs.d.ts +3 -12
  113. package/lib/types/theme/radix-common-types.d.ts +3 -2
  114. package/lib/types/theme/styles.d.ts +215 -0
  115. package/lib/types/theme/tailwind-classes.d.ts +16 -6
  116. package/lib/types/theme/tailwind-colors.d.ts +1 -0
  117. package/lib/types/theme/tailwind-theme.d.ts +1 -1
  118. package/package.json +12 -7
  119. package/src/__generated__/accordion.props.ts +675 -108
  120. package/src/__generated__/button.props.ts +177 -45
  121. package/src/__generated__/checkbox.props.ts +1217 -0
  122. package/src/__generated__/collapsible.props.ts +261 -42
  123. package/src/__generated__/dialog.props.ts +682 -115
  124. package/src/__generated__/input.props.ts +292 -44
  125. package/src/__generated__/label.props.ts +137 -22
  126. package/src/__generated__/navigation-menu.props.ts +2882 -0
  127. package/src/__generated__/popover.props.ts +142 -24
  128. package/src/__generated__/radio-group.props.ts +1828 -0
  129. package/src/__generated__/select.props.ts +4130 -0
  130. package/src/__generated__/sheet.props.ts +657 -110
  131. package/src/__generated__/switch.props.ts +1217 -0
  132. package/src/__generated__/tabs.props.ts +1019 -67
  133. package/src/__generated__/textarea.props.ts +195 -30
  134. package/src/__generated__/tooltip.props.ts +145 -25
  135. package/src/accordion.tsx +14 -7
  136. package/src/accordion.ws.ts +87 -70
  137. package/src/{textarea.stories.ts → checkbox.stories.ts} +6 -11
  138. package/src/checkbox.tsx +22 -0
  139. package/src/checkbox.ws.ts +154 -0
  140. package/src/collapsible.ws.ts +6 -1
  141. package/src/components.ts +25 -12
  142. package/src/dialog.ws.tsx +17 -16
  143. package/src/hooks.ts +4 -0
  144. package/src/label.ws.ts +3 -1
  145. package/src/metas.ts +36 -12
  146. package/src/navigation-menu.stories.tsx +21 -0
  147. package/src/navigation-menu.tsx +130 -0
  148. package/src/navigation-menu.ws.ts +524 -0
  149. package/src/popover.ws.tsx +13 -9
  150. package/src/props-descriptions.ts +43 -0
  151. package/src/props.ts +35 -12
  152. package/src/{input.stories.ts → radio-group.stories.ts} +6 -15
  153. package/src/radio-group.tsx +17 -0
  154. package/src/radio-group.ws.ts +178 -0
  155. package/src/select.stories.tsx +21 -0
  156. package/src/select.tsx +112 -0
  157. package/src/select.ws.ts +349 -0
  158. package/src/sheet.ws.tsx +91 -209
  159. package/src/{button.stories.ts → switch.stories.ts} +6 -19
  160. package/src/switch.tsx +10 -0
  161. package/src/switch.ws.ts +146 -0
  162. package/src/tabs.tsx +4 -17
  163. package/src/tabs.ws.ts +19 -19
  164. package/src/theme/radix-common-types.ts +3 -2
  165. package/src/theme/styles.ts +80 -0
  166. package/src/theme/tailwind-classes.ts +150 -14
  167. package/src/theme/tailwind-colors.ts +1 -0
  168. package/src/tooltip.ws.tsx +13 -8
  169. package/lib/button.js +0 -8
  170. package/lib/button.ws.js +0 -133
  171. package/lib/cjs/button.ws.js +0 -160
  172. package/lib/cjs/input.ws.js +0 -103
  173. package/lib/cjs/textarea.ws.js +0 -98
  174. package/lib/input.js +0 -8
  175. package/lib/input.ws.js +0 -75
  176. package/lib/textarea.js +0 -8
  177. package/lib/textarea.ws.js +0 -70
  178. package/lib/types/button.d.ts +0 -7
  179. package/lib/types/button.stories.d.ts +0 -20
  180. package/lib/types/button.ws.d.ts +0 -7
  181. package/lib/types/input.d.ts +0 -2
  182. package/lib/types/input.stories.d.ts +0 -20
  183. package/lib/types/input.ws.d.ts +0 -3
  184. package/lib/types/textarea.d.ts +0 -2
  185. package/lib/types/textarea.stories.d.ts +0 -14
  186. package/lib/types/textarea.ws.d.ts +0 -3
  187. package/src/button.tsx +0 -25
  188. package/src/button.ws.ts +0 -155
  189. package/src/input.tsx +0 -12
  190. package/src/input.ws.ts +0 -78
  191. package/src/textarea.tsx +0 -12
  192. package/src/textarea.ws.ts +0 -74
@@ -0,0 +1,349 @@
1
+ import {
2
+ SelectIcon,
3
+ TriggerIcon,
4
+ FormTextFieldIcon,
5
+ ContentIcon,
6
+ ItemIcon,
7
+ ViewportIcon,
8
+ TextIcon,
9
+ CheckMarkIcon,
10
+ } from "@webstudio-is/icons/svg";
11
+ import type {
12
+ EmbedTemplateInstance,
13
+ PresetStyle,
14
+ WsComponentMeta,
15
+ WsComponentPropsMeta,
16
+ WsEmbedTemplate,
17
+ } from "@webstudio-is/react-sdk";
18
+ import { button, div, span } from "@webstudio-is/react-sdk/css-normalize";
19
+ import * as tc from "./theme/tailwind-classes";
20
+ import {
21
+ propsSelect,
22
+ propsSelectContent,
23
+ propsSelectItem,
24
+ propsSelectItemIndicator,
25
+ propsSelectItemText,
26
+ propsSelectTrigger,
27
+ propsSelectValue,
28
+ propsSelectViewport,
29
+ } from "./__generated__/select.props";
30
+
31
+ const presetStyle = {
32
+ div,
33
+ } satisfies PresetStyle<"div">;
34
+
35
+ const createSelectItem = ({
36
+ props,
37
+ children,
38
+ }: {
39
+ props?: EmbedTemplateInstance["props"];
40
+ children: WsEmbedTemplate;
41
+ }): EmbedTemplateInstance => ({
42
+ type: "instance",
43
+ component: "SelectItem",
44
+ props,
45
+ // relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none
46
+ // focus:bg-accent focus:text-accent-foreground
47
+ // data-[disabled]:pointer-events-none data-[disabled]:opacity-50
48
+ styles: [
49
+ tc.relative(),
50
+ tc.flex(),
51
+ tc.w("full"),
52
+ tc.cursor("default"),
53
+ tc.select("none"),
54
+ tc.items("center"),
55
+ tc.rounded("md"),
56
+ tc.py(1.5),
57
+ tc.pl(8),
58
+ tc.pr(2),
59
+ tc.text("sm"),
60
+ tc.outline("none"),
61
+ tc.focus([tc.bg("accent"), tc.text("accentForeground")].flat()),
62
+ tc.state(
63
+ [tc.pointerEvents("none"), tc.opacity(50)].flat(),
64
+ "[data-disabled]"
65
+ ),
66
+ ].flat(),
67
+ children: [
68
+ {
69
+ type: "instance",
70
+ component: "SelectItemIndicator",
71
+ // absolute left-2 flex h-3.5 w-3.5 items-center justify-center
72
+ styles: [
73
+ tc.absolute(),
74
+ tc.left(2),
75
+ tc.flex(),
76
+ tc.h(3.5),
77
+ tc.w(3.5),
78
+ tc.items("center"),
79
+ tc.justify("center"),
80
+ ].flat(),
81
+ children: [
82
+ {
83
+ type: "instance",
84
+ component: "HtmlEmbed",
85
+ label: "Indicator Icon",
86
+ props: [
87
+ {
88
+ type: "string",
89
+ name: "code",
90
+ value: CheckMarkIcon,
91
+ },
92
+ ],
93
+ children: [],
94
+ },
95
+ ],
96
+ },
97
+ {
98
+ type: "instance",
99
+ component: "SelectItemText",
100
+ children,
101
+ },
102
+ ],
103
+ });
104
+
105
+ export const metaSelect: WsComponentMeta = {
106
+ category: "radix",
107
+ order: 10,
108
+ type: "container",
109
+ icon: SelectIcon,
110
+ stylable: false,
111
+ description:
112
+ "Use within a form to give your users a list of options to choose from.",
113
+ template: [
114
+ {
115
+ type: "instance",
116
+ component: "Select",
117
+ dataSources: {
118
+ selectValue: { type: "variable", initialValue: "" },
119
+ selectOpen: { type: "variable", initialValue: false },
120
+ },
121
+ props: [
122
+ {
123
+ name: "value",
124
+ type: "dataSource",
125
+ dataSourceName: "selectValue",
126
+ },
127
+ {
128
+ name: "onValueChange",
129
+ type: "action",
130
+ value: [
131
+ { type: "execute", args: ["value"], code: `selectValue = value` },
132
+ ],
133
+ },
134
+ {
135
+ name: "open",
136
+ type: "dataSource",
137
+ dataSourceName: "selectOpen",
138
+ },
139
+ {
140
+ name: "onOpenChange",
141
+ type: "action",
142
+ value: [
143
+ { type: "execute", args: ["open"], code: `selectOpen = open` },
144
+ ],
145
+ },
146
+ ],
147
+ children: [
148
+ {
149
+ type: "instance",
150
+ component: "SelectTrigger",
151
+ // flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background
152
+ // placeholder:text-muted-foreground
153
+ // focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2
154
+ // disabled:cursor-not-allowed disabled:opacity-50
155
+ styles: [
156
+ tc.flex(),
157
+ tc.h(10),
158
+ tc.w("full"),
159
+ tc.items("center"),
160
+ tc.justify("between"),
161
+ tc.rounded("md"),
162
+ tc.border(),
163
+ tc.border("input"),
164
+ tc.bg("background"),
165
+ tc.px(3),
166
+ tc.py(2),
167
+ tc.text("sm"),
168
+ tc.state([tc.text("mutedForeground")].flat(), "::placeholder"),
169
+ tc.focus(
170
+ [tc.outline("none"), tc.ring("ring", 2, "background", 2)].flat()
171
+ ),
172
+ tc.disabled([tc.cursor("not-allowed"), tc.opacity(50)].flat()),
173
+ ].flat(),
174
+ children: [
175
+ {
176
+ type: "instance",
177
+ component: "SelectValue",
178
+ props: [{ name: "placeholder", type: "string", value: "Theme" }],
179
+ children: [],
180
+ },
181
+ ],
182
+ },
183
+ {
184
+ type: "instance",
185
+ component: "SelectContent",
186
+ // relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md
187
+ // data-[state=open]:animate-in
188
+ // data-[state=closed]:animate-out data-[state=closed]:fade-out-0
189
+ // data-[state=open]:fade-in-0
190
+ // data-[state=closed]:zoom-out-95
191
+ // data-[state=open]:zoom-in-95
192
+ // data-[side=bottom]:slide-in-from-top-2
193
+ // data-[side=left]:slide-in-from-right-2
194
+ // data-[side=right]:slide-in-from-left-2
195
+ // data-[side=top]:slide-in-from-bottom-2
196
+ // position=popper
197
+ // data-[side=bottom]:translate-y-1
198
+ // data-[side=left]:-translate-x-1
199
+ // data-[side=right]:translate-x-1
200
+ // data-[side=top]:-translate-y-1
201
+ styles: [
202
+ tc.relative(),
203
+ tc.z(50),
204
+ tc.property("minWidth", "8rem"),
205
+ tc.overflow("hidden"),
206
+ tc.rounded("md"),
207
+ tc.border(),
208
+ tc.bg("popover"),
209
+ tc.text("popoverForeground"),
210
+ tc.shadow("md"),
211
+ ].flat(),
212
+ children: [
213
+ {
214
+ type: "instance",
215
+ component: "SelectViewport",
216
+ // p-1
217
+ // position=popper
218
+ // h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]
219
+ styles: [
220
+ tc.p(1),
221
+ tc.property("height", "--radix-select-trigger-height"),
222
+ tc.w("full"),
223
+ tc.property("minWidth", "--radix-select-trigger-width"),
224
+ ].flat(),
225
+ children: [
226
+ createSelectItem({
227
+ props: [{ name: "value", type: "string", value: "light" }],
228
+ children: [{ type: "text", value: "Light" }],
229
+ }),
230
+ createSelectItem({
231
+ props: [{ name: "value", type: "string", value: "dark" }],
232
+ children: [{ type: "text", value: "Dark" }],
233
+ }),
234
+ createSelectItem({
235
+ props: [{ name: "value", type: "string", value: "system" }],
236
+ children: [{ type: "text", value: "System" }],
237
+ }),
238
+ ],
239
+ },
240
+ ],
241
+ },
242
+ ],
243
+ },
244
+ ],
245
+ };
246
+
247
+ export const metaSelectTrigger: WsComponentMeta = {
248
+ category: "hidden",
249
+ type: "container",
250
+ icon: TriggerIcon,
251
+ detachable: false,
252
+ presetStyle: {
253
+ button,
254
+ },
255
+ };
256
+
257
+ export const metaSelectValue: WsComponentMeta = {
258
+ category: "hidden",
259
+ type: "container",
260
+ label: "Value",
261
+ icon: FormTextFieldIcon,
262
+ detachable: false,
263
+ presetStyle: {
264
+ span,
265
+ },
266
+ };
267
+
268
+ export const metaSelectContent: WsComponentMeta = {
269
+ category: "hidden",
270
+ type: "container",
271
+ icon: ContentIcon,
272
+ detachable: false,
273
+ presetStyle,
274
+ };
275
+
276
+ export const metaSelectViewport: WsComponentMeta = {
277
+ category: "hidden",
278
+ type: "container",
279
+ icon: ViewportIcon,
280
+ detachable: false,
281
+ presetStyle,
282
+ };
283
+
284
+ export const metaSelectItem: WsComponentMeta = {
285
+ category: "hidden",
286
+ type: "container",
287
+ icon: ItemIcon,
288
+ requiredAncestors: ["SelectViewport"],
289
+ presetStyle,
290
+ };
291
+
292
+ export const metaSelectItemIndicator: WsComponentMeta = {
293
+ category: "hidden",
294
+ type: "container",
295
+ label: "Indicator",
296
+ icon: CheckMarkIcon,
297
+ detachable: false,
298
+ requiredAncestors: ["SelectItem"],
299
+ presetStyle: {
300
+ span,
301
+ },
302
+ };
303
+
304
+ export const metaSelectItemText: WsComponentMeta = {
305
+ category: "hidden",
306
+ type: "container",
307
+ label: "Item Text",
308
+ icon: TextIcon,
309
+ detachable: false,
310
+ requiredAncestors: ["SelectItem"],
311
+ presetStyle: {
312
+ span,
313
+ },
314
+ };
315
+
316
+ export const propsMetaSelect: WsComponentPropsMeta = {
317
+ props: propsSelect,
318
+ initialProps: ["value", "open", "name", "required"],
319
+ };
320
+
321
+ export const propsMetaSelectTrigger: WsComponentPropsMeta = {
322
+ props: propsSelectTrigger,
323
+ };
324
+
325
+ export const propsMetaSelectValue: WsComponentPropsMeta = {
326
+ props: propsSelectValue,
327
+ initialProps: ["placeholder"],
328
+ };
329
+
330
+ export const propsMetaSelectContent: WsComponentPropsMeta = {
331
+ props: propsSelectContent,
332
+ };
333
+
334
+ export const propsMetaSelectViewport: WsComponentPropsMeta = {
335
+ props: propsSelectViewport,
336
+ };
337
+
338
+ export const propsMetaSelectItem: WsComponentPropsMeta = {
339
+ props: propsSelectItem,
340
+ initialProps: ["value"],
341
+ };
342
+
343
+ export const propsMetaSelectItemIndicator: WsComponentPropsMeta = {
344
+ props: propsSelectItemIndicator,
345
+ };
346
+
347
+ export const propsMetaSelectItemText: WsComponentPropsMeta = {
348
+ props: propsSelectItemText,
349
+ };