@webstudio-is/sdk-components-react-radix 0.87.0 → 0.88.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/__generated__/accordion.props.js +0 -5
- package/lib/__generated__/button.props.js +0 -21
- package/lib/__generated__/checkbox.props.js +850 -0
- package/lib/__generated__/collapsible.props.js +0 -2
- package/lib/__generated__/dialog.props.js +0 -11
- package/lib/__generated__/label.props.js +0 -1
- package/lib/__generated__/navigation-menu.props.js +2104 -0
- package/lib/__generated__/popover.props.js +0 -3
- package/lib/__generated__/radio-group.props.js +1282 -0
- package/lib/__generated__/select.props.js +2962 -0
- package/lib/__generated__/sheet.props.js +0 -11
- package/lib/__generated__/switch.props.js +850 -0
- package/lib/__generated__/tabs.props.js +428 -5
- package/lib/__generated__/tooltip.props.js +0 -2
- package/lib/accordion.js +11 -4
- package/lib/accordion.ws.js +87 -72
- package/lib/checkbox.js +13 -0
- package/lib/checkbox.ws.js +151 -0
- package/lib/cjs/__generated__/accordion.props.js +0 -5
- package/lib/cjs/__generated__/button.props.js +0 -21
- package/lib/cjs/__generated__/checkbox.props.js +870 -0
- package/lib/cjs/__generated__/collapsible.props.js +0 -2
- package/lib/cjs/__generated__/dialog.props.js +0 -11
- package/lib/cjs/__generated__/label.props.js +0 -1
- package/lib/cjs/__generated__/navigation-menu.props.js +2124 -0
- package/lib/cjs/__generated__/popover.props.js +0 -3
- package/lib/cjs/__generated__/radio-group.props.js +1302 -0
- package/lib/cjs/__generated__/select.props.js +2982 -0
- package/lib/cjs/__generated__/sheet.props.js +0 -11
- package/lib/cjs/__generated__/switch.props.js +870 -0
- package/lib/cjs/__generated__/tabs.props.js +428 -5
- package/lib/cjs/__generated__/tooltip.props.js +0 -2
- package/lib/cjs/accordion.js +11 -4
- package/lib/cjs/accordion.ws.js +85 -71
- package/lib/cjs/{textarea.js → checkbox.js} +9 -6
- package/lib/cjs/checkbox.ws.js +172 -0
- package/lib/cjs/collapsible.ws.js +4 -1
- package/lib/cjs/components.js +27 -14
- package/lib/cjs/dialog.ws.js +17 -17
- package/lib/cjs/hooks.js +5 -1
- package/lib/cjs/label.ws.js +1 -1
- package/lib/cjs/metas.js +29 -14
- package/lib/cjs/navigation-menu.js +107 -0
- package/lib/cjs/navigation-menu.ws.js +513 -0
- package/lib/cjs/popover.ws.js +12 -9
- package/lib/cjs/props.js +27 -14
- package/lib/cjs/{button.js → radio-group.js} +10 -8
- package/lib/cjs/radio-group.ws.js +188 -0
- package/lib/cjs/select.js +81 -0
- package/lib/cjs/select.ws.js +349 -0
- package/lib/cjs/sheet.ws.js +87 -176
- package/lib/cjs/{input.js → switch.js} +8 -9
- package/lib/cjs/switch.ws.js +171 -0
- package/lib/cjs/tabs.js +2 -3
- package/lib/cjs/tabs.ws.js +13 -18
- package/lib/cjs/theme/styles.js +100 -0
- package/lib/cjs/theme/tailwind-classes.js +125 -16
- package/lib/cjs/theme/tailwind-colors.js +1 -0
- package/lib/cjs/tooltip.ws.js +11 -8
- package/lib/collapsible.ws.js +4 -1
- package/lib/components.js +44 -22
- package/lib/dialog.ws.js +17 -17
- package/lib/hooks.js +5 -1
- package/lib/label.ws.js +1 -1
- package/lib/metas.js +58 -24
- package/lib/navigation-menu.js +85 -0
- package/lib/navigation-menu.ws.js +500 -0
- package/lib/popover.ws.js +12 -9
- package/lib/props.js +56 -24
- package/lib/radio-group.js +11 -0
- package/lib/radio-group.ws.js +170 -0
- package/lib/select.js +73 -0
- package/lib/select.ws.js +337 -0
- package/lib/sheet.ws.js +88 -194
- package/lib/switch.js +7 -0
- package/lib/switch.ws.js +143 -0
- package/lib/tabs.js +3 -5
- package/lib/tabs.ws.js +14 -19
- package/lib/theme/styles.js +70 -0
- package/lib/theme/tailwind-classes.js +125 -16
- package/lib/theme/tailwind-colors.js +1 -0
- package/lib/tooltip.ws.js +11 -8
- package/lib/types/__generated__/checkbox.props.d.ts +3 -0
- package/lib/types/__generated__/navigation-menu.props.d.ts +8 -0
- package/lib/types/__generated__/radio-group.props.d.ts +4 -0
- package/lib/types/__generated__/select.props.d.ts +9 -0
- package/lib/types/__generated__/switch.props.d.ts +3 -0
- package/lib/types/checkbox.d.ts +6 -0
- package/lib/types/checkbox.stories.d.ts +11 -0
- package/lib/types/checkbox.ws.d.ts +5 -0
- package/lib/types/components.d.ts +5 -4
- package/lib/types/metas.d.ts +6 -4
- package/lib/types/navigation-menu.d.ts +15 -0
- package/lib/types/navigation-menu.ws.d.ts +15 -0
- package/lib/types/props.d.ts +5 -4
- package/lib/types/radio-group.d.ts +5 -0
- package/lib/types/radio-group.stories.d.ts +9 -0
- package/lib/types/radio-group.ws.d.ts +7 -0
- package/lib/types/select.d.ts +12 -0
- package/lib/types/select.ws.d.ts +17 -0
- package/lib/types/sheet.ws.d.ts +2 -15
- package/lib/types/switch.d.ts +4 -0
- package/lib/types/switch.stories.d.ts +9 -0
- package/lib/types/switch.ws.d.ts +5 -0
- package/lib/types/tabs.d.ts +3 -12
- package/lib/types/theme/radix-common-types.d.ts +3 -2
- package/lib/types/theme/styles.d.ts +215 -0
- package/lib/types/theme/tailwind-classes.d.ts +16 -6
- package/lib/types/theme/tailwind-colors.d.ts +1 -0
- package/lib/types/theme/tailwind-theme.d.ts +1 -1
- package/package.json +12 -7
- package/src/__generated__/accordion.props.ts +0 -5
- package/src/__generated__/button.props.ts +0 -21
- package/src/__generated__/checkbox.props.ts +948 -0
- package/src/__generated__/collapsible.props.ts +0 -2
- package/src/__generated__/dialog.props.ts +0 -11
- package/src/__generated__/label.props.ts +0 -1
- package/src/__generated__/navigation-menu.props.ts +2349 -0
- package/src/__generated__/popover.props.ts +0 -3
- package/src/__generated__/radio-group.props.ts +1429 -0
- package/src/__generated__/select.props.ts +3304 -0
- package/src/__generated__/sheet.props.ts +0 -11
- package/src/__generated__/switch.props.ts +948 -0
- package/src/__generated__/tabs.props.ts +477 -4
- package/src/__generated__/tooltip.props.ts +0 -2
- package/src/accordion.tsx +14 -7
- package/src/accordion.ws.ts +85 -70
- package/src/{textarea.stories.ts → checkbox.stories.ts} +6 -11
- package/src/checkbox.tsx +22 -0
- package/src/checkbox.ws.ts +151 -0
- package/src/collapsible.ws.ts +4 -1
- package/src/components.ts +25 -12
- package/src/dialog.ws.tsx +15 -16
- package/src/hooks.ts +4 -0
- package/src/label.ws.ts +1 -1
- package/src/metas.ts +36 -12
- package/src/navigation-menu.stories.tsx +21 -0
- package/src/navigation-menu.tsx +130 -0
- package/src/navigation-menu.ws.ts +523 -0
- package/src/popover.ws.tsx +12 -9
- package/src/props.ts +35 -12
- package/src/{input.stories.ts → radio-group.stories.ts} +6 -15
- package/src/radio-group.tsx +17 -0
- package/src/radio-group.ws.ts +174 -0
- package/src/select.stories.tsx +21 -0
- package/src/select.tsx +107 -0
- package/src/select.ws.ts +347 -0
- package/src/sheet.ws.tsx +89 -209
- package/src/{button.stories.ts → switch.stories.ts} +6 -19
- package/src/switch.tsx +10 -0
- package/src/switch.ws.ts +143 -0
- package/src/tabs.tsx +4 -17
- package/src/tabs.ws.ts +17 -19
- package/src/theme/radix-common-types.ts +3 -2
- package/src/theme/styles.ts +80 -0
- package/src/theme/tailwind-classes.ts +150 -14
- package/src/theme/tailwind-colors.ts +1 -0
- package/src/tooltip.ws.tsx +11 -8
- package/lib/button.js +0 -8
- package/lib/button.ws.js +0 -133
- package/lib/cjs/button.ws.js +0 -160
- package/lib/cjs/input.ws.js +0 -103
- package/lib/cjs/textarea.ws.js +0 -98
- package/lib/input.js +0 -8
- package/lib/input.ws.js +0 -75
- package/lib/textarea.js +0 -8
- package/lib/textarea.ws.js +0 -70
- package/lib/types/button.d.ts +0 -7
- package/lib/types/button.stories.d.ts +0 -20
- package/lib/types/button.ws.d.ts +0 -7
- package/lib/types/input.d.ts +0 -2
- package/lib/types/input.stories.d.ts +0 -20
- package/lib/types/input.ws.d.ts +0 -3
- package/lib/types/textarea.d.ts +0 -2
- package/lib/types/textarea.stories.d.ts +0 -14
- package/lib/types/textarea.ws.d.ts +0 -3
- package/src/button.tsx +0 -25
- package/src/button.ws.ts +0 -155
- package/src/input.tsx +0 -12
- package/src/input.ws.ts +0 -78
- package/src/textarea.tsx +0 -12
- package/src/textarea.ws.ts +0 -74
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ContentIcon,
|
|
3
|
+
ListIcon,
|
|
4
|
+
ListItemIcon,
|
|
5
|
+
TriggerIcon,
|
|
6
|
+
BoxIcon,
|
|
7
|
+
ChevronDownIcon,
|
|
8
|
+
ViewportIcon,
|
|
9
|
+
NavigationMenuIcon
|
|
10
|
+
} from "@webstudio-is/icons/svg";
|
|
11
|
+
import { div } from "@webstudio-is/react-sdk/css-normalize";
|
|
12
|
+
import * as tc from "./theme/tailwind-classes";
|
|
13
|
+
import { getButtonStyles } from "./theme/styles";
|
|
14
|
+
import {
|
|
15
|
+
propsNavigationMenu,
|
|
16
|
+
propsNavigationMenuItem,
|
|
17
|
+
propsNavigationMenuTrigger,
|
|
18
|
+
propsNavigationMenuContent,
|
|
19
|
+
propsNavigationMenuLink,
|
|
20
|
+
propsNavigationMenuList,
|
|
21
|
+
propsNavigationMenuViewport
|
|
22
|
+
} from "./__generated__/navigation-menu.props";
|
|
23
|
+
const presetStyle = {
|
|
24
|
+
div
|
|
25
|
+
};
|
|
26
|
+
const components = [
|
|
27
|
+
{
|
|
28
|
+
title: "Sheet",
|
|
29
|
+
href: "/docs/components/sheet",
|
|
30
|
+
description: "Extends the Dialog component to display content that complements the main content of the screen."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
title: "Navigation Menu",
|
|
34
|
+
href: "/docs/components/navigation-menu",
|
|
35
|
+
description: "A collection of links for navigating websites."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: "Tabs",
|
|
39
|
+
href: "/docs/components/tabs",
|
|
40
|
+
description: "A set of layered sections of content\u2014known as tab panels\u2014that are displayed one at a time."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: "Accordion",
|
|
44
|
+
href: "/docs/components/accordion",
|
|
45
|
+
description: "A vertically stacked set of interactive headings that each reveal a section of content."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
title: "Dialog",
|
|
49
|
+
href: "/docs/components/dialog",
|
|
50
|
+
description: "A window overlaid on either the primary window or another dialog window, rendering the content underneath inert."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
title: "Collapsible",
|
|
54
|
+
href: "/docs/components/collapsible",
|
|
55
|
+
description: "An interactive component which expands/collapses a panel."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
title: "Popover",
|
|
59
|
+
href: "/docs/components/popover",
|
|
60
|
+
description: "Displays rich content in a portal, triggered by a button."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
title: "Tooltip",
|
|
64
|
+
href: "/docs/components/tooltip",
|
|
65
|
+
description: "A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
title: "Button",
|
|
69
|
+
href: "/docs/components/button",
|
|
70
|
+
description: "Displays a button or a component that looks like a button."
|
|
71
|
+
}
|
|
72
|
+
];
|
|
73
|
+
const navItem = (props) => [
|
|
74
|
+
{
|
|
75
|
+
type: "instance",
|
|
76
|
+
component: "NavigationMenuLink",
|
|
77
|
+
children: [
|
|
78
|
+
{
|
|
79
|
+
type: "instance",
|
|
80
|
+
component: "Link",
|
|
81
|
+
// block select-none space-y-1 rounded-md p-3 leading-none
|
|
82
|
+
// no-underline outline-none transition-colors
|
|
83
|
+
// hover:bg-accent hover:text-accent-foreground
|
|
84
|
+
// focus:bg-accent focus:text-accent-foreground
|
|
85
|
+
styles: [
|
|
86
|
+
tc.text("inherit"),
|
|
87
|
+
tc.flex(),
|
|
88
|
+
tc.flex("col"),
|
|
89
|
+
tc.select("none"),
|
|
90
|
+
tc.gap(1),
|
|
91
|
+
tc.rounded("md"),
|
|
92
|
+
tc.p(3),
|
|
93
|
+
tc.leading("none"),
|
|
94
|
+
tc.noUnderline(),
|
|
95
|
+
tc.outline("none"),
|
|
96
|
+
tc.hover([tc.bg("accent"), tc.text("accentForeground")].flat()),
|
|
97
|
+
tc.focus([tc.bg("accent"), tc.text("accentForeground")].flat())
|
|
98
|
+
].flat(),
|
|
99
|
+
props: [
|
|
100
|
+
{
|
|
101
|
+
name: "href",
|
|
102
|
+
type: "string",
|
|
103
|
+
value: `https://ui.shadcn.com${props.href}`
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
children: [
|
|
107
|
+
{
|
|
108
|
+
type: "instance",
|
|
109
|
+
component: "Text",
|
|
110
|
+
// text-sm font-medium leading-none
|
|
111
|
+
styles: [
|
|
112
|
+
tc.text("sm"),
|
|
113
|
+
tc.font("medium"),
|
|
114
|
+
tc.leading("none")
|
|
115
|
+
].flat(),
|
|
116
|
+
children: [
|
|
117
|
+
{
|
|
118
|
+
type: "text",
|
|
119
|
+
value: props.title
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: "instance",
|
|
125
|
+
component: "Paragraph",
|
|
126
|
+
// line-clamp-2 text-sm leading-snug text-muted-foreground
|
|
127
|
+
styles: [
|
|
128
|
+
tc.m(0),
|
|
129
|
+
tc.lineClamp(2),
|
|
130
|
+
tc.text("sm"),
|
|
131
|
+
tc.leading("snug"),
|
|
132
|
+
tc.text("mutedForeground")
|
|
133
|
+
].flat(),
|
|
134
|
+
children: [
|
|
135
|
+
{
|
|
136
|
+
type: "text",
|
|
137
|
+
value: props.description
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
];
|
|
146
|
+
const navItemsList = (props) => [
|
|
147
|
+
{
|
|
148
|
+
type: "instance",
|
|
149
|
+
component: "Box",
|
|
150
|
+
label: "Flex Column",
|
|
151
|
+
styles: [tc.w(64), tc.flex(), tc.gap(4), tc.flex("col")].flat(),
|
|
152
|
+
children: Array.from(
|
|
153
|
+
Array(props.count),
|
|
154
|
+
(_, index) => navItem(components[index + props.offset])
|
|
155
|
+
).flat()
|
|
156
|
+
}
|
|
157
|
+
];
|
|
158
|
+
const menuItemLink = (props) => [
|
|
159
|
+
{
|
|
160
|
+
type: "instance",
|
|
161
|
+
component: "NavigationMenuItem",
|
|
162
|
+
children: [
|
|
163
|
+
{
|
|
164
|
+
type: "instance",
|
|
165
|
+
component: "NavigationMenuLink",
|
|
166
|
+
children: [
|
|
167
|
+
{
|
|
168
|
+
type: "instance",
|
|
169
|
+
component: "Link",
|
|
170
|
+
styles: [
|
|
171
|
+
getButtonStyles("ghost", "sm"),
|
|
172
|
+
tc.noUnderline(),
|
|
173
|
+
tc.text("current")
|
|
174
|
+
].flat(),
|
|
175
|
+
children: [{ type: "text", value: props.title }]
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
];
|
|
182
|
+
const menuItem = (props) => [
|
|
183
|
+
{
|
|
184
|
+
type: "instance",
|
|
185
|
+
component: "NavigationMenuItem",
|
|
186
|
+
children: [
|
|
187
|
+
{
|
|
188
|
+
type: "instance",
|
|
189
|
+
component: "NavigationMenuTrigger",
|
|
190
|
+
children: [
|
|
191
|
+
{
|
|
192
|
+
type: "instance",
|
|
193
|
+
component: "Button",
|
|
194
|
+
styles: [
|
|
195
|
+
getButtonStyles("ghost", "sm"),
|
|
196
|
+
tc.property("--navigation-menu-trigger-icon-transform", "0deg"),
|
|
197
|
+
tc.state(
|
|
198
|
+
[
|
|
199
|
+
tc.property(
|
|
200
|
+
"--navigation-menu-trigger-icon-transform",
|
|
201
|
+
"180deg"
|
|
202
|
+
)
|
|
203
|
+
],
|
|
204
|
+
"[data-state=open]"
|
|
205
|
+
)
|
|
206
|
+
].flat(),
|
|
207
|
+
children: [
|
|
208
|
+
{
|
|
209
|
+
type: "instance",
|
|
210
|
+
component: "Text",
|
|
211
|
+
children: [{ type: "text", value: props.title }]
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
type: "instance",
|
|
215
|
+
component: "Box",
|
|
216
|
+
label: "Icon Container",
|
|
217
|
+
// h-4 w-4 shrink-0 transition-transform duration-200
|
|
218
|
+
styles: [
|
|
219
|
+
tc.ml(1),
|
|
220
|
+
tc.property(
|
|
221
|
+
"rotate",
|
|
222
|
+
"--navigation-menu-trigger-icon-transform"
|
|
223
|
+
),
|
|
224
|
+
tc.h(4),
|
|
225
|
+
tc.w(4),
|
|
226
|
+
tc.shrink(0),
|
|
227
|
+
tc.transition("all"),
|
|
228
|
+
tc.duration(200)
|
|
229
|
+
].flat(),
|
|
230
|
+
children: [
|
|
231
|
+
{
|
|
232
|
+
type: "instance",
|
|
233
|
+
component: "HtmlEmbed",
|
|
234
|
+
label: "Chevron Icon",
|
|
235
|
+
props: [
|
|
236
|
+
{
|
|
237
|
+
type: "string",
|
|
238
|
+
name: "code",
|
|
239
|
+
value: ChevronDownIcon
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
children: []
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
]
|
|
247
|
+
}
|
|
248
|
+
]
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
type: "instance",
|
|
252
|
+
component: "NavigationMenuContent",
|
|
253
|
+
// left-0 top-0 absolute w-max
|
|
254
|
+
styles: [
|
|
255
|
+
tc.left(0),
|
|
256
|
+
tc.top(0),
|
|
257
|
+
tc.absolute(),
|
|
258
|
+
tc.w("max"),
|
|
259
|
+
tc.p(4)
|
|
260
|
+
].flat(),
|
|
261
|
+
children: [
|
|
262
|
+
{
|
|
263
|
+
type: "instance",
|
|
264
|
+
component: "Box",
|
|
265
|
+
label: "Content",
|
|
266
|
+
styles: [tc.flex(), tc.gap(4), tc.p(props.padding)].flat(),
|
|
267
|
+
children: props.children
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
];
|
|
274
|
+
const metaNavigationMenu = {
|
|
275
|
+
category: "radix",
|
|
276
|
+
order: 2,
|
|
277
|
+
type: "container",
|
|
278
|
+
icon: NavigationMenuIcon,
|
|
279
|
+
presetStyle,
|
|
280
|
+
template: [
|
|
281
|
+
{
|
|
282
|
+
type: "instance",
|
|
283
|
+
component: "NavigationMenu",
|
|
284
|
+
dataSources: {
|
|
285
|
+
menuValue: { type: "variable", initialValue: "" }
|
|
286
|
+
},
|
|
287
|
+
props: [
|
|
288
|
+
{ type: "dataSource", name: "value", dataSourceName: "menuValue" },
|
|
289
|
+
{
|
|
290
|
+
name: "onValueChange",
|
|
291
|
+
type: "action",
|
|
292
|
+
value: [
|
|
293
|
+
{
|
|
294
|
+
type: "execute",
|
|
295
|
+
args: ["value"],
|
|
296
|
+
code: `menuValue = value`
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
}
|
|
300
|
+
],
|
|
301
|
+
// relative
|
|
302
|
+
// Omiting this: z-10 flex max-w-max flex-1 items-center justify-center
|
|
303
|
+
styles: [tc.relative(), tc.maxW("max")].flat(),
|
|
304
|
+
children: [
|
|
305
|
+
{
|
|
306
|
+
type: "instance",
|
|
307
|
+
component: "NavigationMenuList",
|
|
308
|
+
styles: [
|
|
309
|
+
// ul defaults in tailwind
|
|
310
|
+
tc.p(0),
|
|
311
|
+
tc.m(0),
|
|
312
|
+
// shadcdn styles
|
|
313
|
+
tc.flex(),
|
|
314
|
+
tc.flex(1),
|
|
315
|
+
tc.list("none"),
|
|
316
|
+
tc.items("center"),
|
|
317
|
+
tc.justify("center"),
|
|
318
|
+
tc.gap(1)
|
|
319
|
+
].flat(),
|
|
320
|
+
children: [
|
|
321
|
+
...menuItem({
|
|
322
|
+
title: "About",
|
|
323
|
+
padding: 2,
|
|
324
|
+
children: [
|
|
325
|
+
{
|
|
326
|
+
type: "instance",
|
|
327
|
+
component: "Box",
|
|
328
|
+
styles: [
|
|
329
|
+
tc.bg("border"),
|
|
330
|
+
tc.p(4),
|
|
331
|
+
tc.w(48),
|
|
332
|
+
tc.rounded("md")
|
|
333
|
+
].flat(),
|
|
334
|
+
children: [
|
|
335
|
+
{
|
|
336
|
+
type: "text",
|
|
337
|
+
value: ""
|
|
338
|
+
}
|
|
339
|
+
]
|
|
340
|
+
},
|
|
341
|
+
...navItemsList({ count: 3, offset: 0 })
|
|
342
|
+
]
|
|
343
|
+
}),
|
|
344
|
+
...menuItem({
|
|
345
|
+
title: "Components",
|
|
346
|
+
padding: 0,
|
|
347
|
+
children: [
|
|
348
|
+
...navItemsList({ count: 3, offset: 3 }),
|
|
349
|
+
...navItemsList({ count: 3, offset: 6 })
|
|
350
|
+
]
|
|
351
|
+
}),
|
|
352
|
+
...menuItemLink({ title: "Standalone" })
|
|
353
|
+
]
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
type: "instance",
|
|
357
|
+
component: "Box",
|
|
358
|
+
label: "Viewport Container",
|
|
359
|
+
// absolute left-0 top-full flex justify-center
|
|
360
|
+
styles: [
|
|
361
|
+
tc.absolute(),
|
|
362
|
+
tc.left(0),
|
|
363
|
+
tc.top("full"),
|
|
364
|
+
tc.flex(),
|
|
365
|
+
tc.justify("center")
|
|
366
|
+
].flat(),
|
|
367
|
+
children: [
|
|
368
|
+
{
|
|
369
|
+
type: "instance",
|
|
370
|
+
component: "NavigationMenuViewport",
|
|
371
|
+
/*
|
|
372
|
+
origin-top-center relative mt-1.5 w-full
|
|
373
|
+
overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg
|
|
374
|
+
h-[var(--radix-navigation-menu-viewport-height)]
|
|
375
|
+
w-[var(--radix-navigation-menu-viewport-width)]
|
|
376
|
+
// anims
|
|
377
|
+
[animation-duration:150ms!important] [transition-duration:150ms!important]
|
|
378
|
+
data-[state=open]:animate-in data-[state=closed]:animate-out
|
|
379
|
+
data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90
|
|
380
|
+
*/
|
|
381
|
+
styles: [
|
|
382
|
+
tc.relative(),
|
|
383
|
+
tc.mt(1.5),
|
|
384
|
+
tc.overflow("hidden"),
|
|
385
|
+
tc.rounded("md"),
|
|
386
|
+
tc.border(),
|
|
387
|
+
tc.bg("popover"),
|
|
388
|
+
tc.text("popoverForeground"),
|
|
389
|
+
tc.shadow("lg"),
|
|
390
|
+
tc.property(
|
|
391
|
+
"height",
|
|
392
|
+
"--radix-navigation-menu-viewport-height"
|
|
393
|
+
),
|
|
394
|
+
tc.property("width", "--radix-navigation-menu-viewport-width")
|
|
395
|
+
].flat(),
|
|
396
|
+
children: []
|
|
397
|
+
}
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
]
|
|
403
|
+
};
|
|
404
|
+
const metaNavigationMenuList = {
|
|
405
|
+
category: "hidden",
|
|
406
|
+
detachable: false,
|
|
407
|
+
type: "container",
|
|
408
|
+
icon: ListIcon,
|
|
409
|
+
requiredAncestors: ["NavigationMenu"],
|
|
410
|
+
presetStyle,
|
|
411
|
+
label: "Menu List"
|
|
412
|
+
};
|
|
413
|
+
const metaNavigationMenuItem = {
|
|
414
|
+
category: "hidden",
|
|
415
|
+
type: "container",
|
|
416
|
+
icon: ListItemIcon,
|
|
417
|
+
requiredAncestors: ["NavigationMenu"],
|
|
418
|
+
presetStyle,
|
|
419
|
+
indexWithinAncestor: "NavigationMenu",
|
|
420
|
+
label: "Menu Item"
|
|
421
|
+
};
|
|
422
|
+
const metaNavigationMenuTrigger = {
|
|
423
|
+
category: "hidden",
|
|
424
|
+
detachable: false,
|
|
425
|
+
stylable: false,
|
|
426
|
+
type: "container",
|
|
427
|
+
icon: TriggerIcon,
|
|
428
|
+
requiredAncestors: ["NavigationMenuItem"],
|
|
429
|
+
presetStyle,
|
|
430
|
+
label: "Menu Trigger"
|
|
431
|
+
};
|
|
432
|
+
const metaNavigationMenuContent = {
|
|
433
|
+
category: "hidden",
|
|
434
|
+
detachable: false,
|
|
435
|
+
type: "container",
|
|
436
|
+
icon: ContentIcon,
|
|
437
|
+
requiredAncestors: ["NavigationMenuItem"],
|
|
438
|
+
indexWithinAncestor: "NavigationMenu",
|
|
439
|
+
presetStyle,
|
|
440
|
+
label: "Menu Content"
|
|
441
|
+
};
|
|
442
|
+
const metaNavigationMenuLink = {
|
|
443
|
+
category: "hidden",
|
|
444
|
+
detachable: true,
|
|
445
|
+
type: "container",
|
|
446
|
+
stylable: false,
|
|
447
|
+
icon: BoxIcon,
|
|
448
|
+
// https://github.com/webstudio-is/webstudio-builder/issues/2193
|
|
449
|
+
// requiredAncestors: ["NavigationMenuContent", "NavigationMenuItem"],
|
|
450
|
+
// Temporary restrict to NavigationMenu
|
|
451
|
+
requiredAncestors: ["NavigationMenu"],
|
|
452
|
+
presetStyle,
|
|
453
|
+
label: "Accessible Link Wrapper"
|
|
454
|
+
};
|
|
455
|
+
const metaNavigationMenuViewport = {
|
|
456
|
+
category: "hidden",
|
|
457
|
+
detachable: true,
|
|
458
|
+
type: "container",
|
|
459
|
+
icon: ViewportIcon,
|
|
460
|
+
requiredAncestors: ["NavigationMenu"],
|
|
461
|
+
presetStyle,
|
|
462
|
+
label: "Menu Viewport"
|
|
463
|
+
};
|
|
464
|
+
const propsMetaNavigationMenu = {
|
|
465
|
+
props: propsNavigationMenu
|
|
466
|
+
};
|
|
467
|
+
const propsMetaNavigationMenuItem = {
|
|
468
|
+
props: propsNavigationMenuItem
|
|
469
|
+
};
|
|
470
|
+
const propsMetaNavigationMenuTrigger = {
|
|
471
|
+
props: propsNavigationMenuTrigger
|
|
472
|
+
};
|
|
473
|
+
const propsMetaNavigationMenuContent = {
|
|
474
|
+
props: propsNavigationMenuContent
|
|
475
|
+
};
|
|
476
|
+
const propsMetaNavigationMenuLink = {
|
|
477
|
+
props: propsNavigationMenuLink
|
|
478
|
+
};
|
|
479
|
+
const propsMetaNavigationMenuList = {
|
|
480
|
+
props: propsNavigationMenuList
|
|
481
|
+
};
|
|
482
|
+
const propsMetaNavigationMenuViewport = {
|
|
483
|
+
props: propsNavigationMenuViewport
|
|
484
|
+
};
|
|
485
|
+
export {
|
|
486
|
+
metaNavigationMenu,
|
|
487
|
+
metaNavigationMenuContent,
|
|
488
|
+
metaNavigationMenuItem,
|
|
489
|
+
metaNavigationMenuLink,
|
|
490
|
+
metaNavigationMenuList,
|
|
491
|
+
metaNavigationMenuTrigger,
|
|
492
|
+
metaNavigationMenuViewport,
|
|
493
|
+
propsMetaNavigationMenu,
|
|
494
|
+
propsMetaNavigationMenuContent,
|
|
495
|
+
propsMetaNavigationMenuItem,
|
|
496
|
+
propsMetaNavigationMenuLink,
|
|
497
|
+
propsMetaNavigationMenuList,
|
|
498
|
+
propsMetaNavigationMenuTrigger,
|
|
499
|
+
propsMetaNavigationMenuViewport
|
|
500
|
+
};
|
package/lib/popover.ws.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { PopoverIcon, TriggerIcon, ContentIcon } from "@webstudio-is/icons/svg";
|
|
2
2
|
import {
|
|
3
3
|
} from "@webstudio-is/react-sdk";
|
|
4
|
+
import { div } from "@webstudio-is/react-sdk/css-normalize";
|
|
4
5
|
import * as tc from "./theme/tailwind-classes";
|
|
6
|
+
import { getButtonStyles } from "./theme/styles";
|
|
5
7
|
import {
|
|
6
8
|
propsPopover,
|
|
7
9
|
propsPopoverContent,
|
|
8
10
|
propsPopoverTrigger
|
|
9
11
|
} from "./__generated__/popover.props";
|
|
10
|
-
import { div } from "@webstudio-is/react-sdk/css-normalize";
|
|
11
|
-
import { template as buttonTemplate } from "./button.ws";
|
|
12
12
|
const presetStyle = {
|
|
13
13
|
div
|
|
14
14
|
};
|
|
@@ -28,9 +28,9 @@ const metaPopoverContent = {
|
|
|
28
28
|
};
|
|
29
29
|
const metaPopover = {
|
|
30
30
|
category: "radix",
|
|
31
|
+
order: 6,
|
|
31
32
|
type: "container",
|
|
32
33
|
icon: PopoverIcon,
|
|
33
|
-
order: 15,
|
|
34
34
|
stylable: false,
|
|
35
35
|
template: [
|
|
36
36
|
{
|
|
@@ -57,15 +57,18 @@ const metaPopover = {
|
|
|
57
57
|
{
|
|
58
58
|
type: "instance",
|
|
59
59
|
component: "PopoverTrigger",
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
children: [
|
|
61
|
+
{
|
|
62
|
+
type: "instance",
|
|
63
|
+
component: "Button",
|
|
64
|
+
styles: getButtonStyles("outline"),
|
|
65
|
+
children: [{ type: "text", value: "Button" }]
|
|
66
|
+
}
|
|
67
|
+
]
|
|
64
68
|
},
|
|
65
69
|
{
|
|
66
70
|
type: "instance",
|
|
67
71
|
component: "PopoverContent",
|
|
68
|
-
props: [],
|
|
69
72
|
/**
|
|
70
73
|
* z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none
|
|
71
74
|
**/
|
|
@@ -94,7 +97,7 @@ const metaPopover = {
|
|
|
94
97
|
};
|
|
95
98
|
const propsMetaPopover = {
|
|
96
99
|
props: propsPopover,
|
|
97
|
-
initialProps: ["open"
|
|
100
|
+
initialProps: ["open"]
|
|
98
101
|
};
|
|
99
102
|
const propsMetaPopoverTrigger = {
|
|
100
103
|
props: propsPopoverTrigger
|
package/lib/props.js
CHANGED
|
@@ -22,25 +22,13 @@ import {
|
|
|
22
22
|
propsMetaTooltipTrigger,
|
|
23
23
|
propsMetaTooltipContent
|
|
24
24
|
} from "./tooltip.ws";
|
|
25
|
-
import {
|
|
26
|
-
propsMetaSheet,
|
|
27
|
-
propsMetaSheetTrigger,
|
|
28
|
-
propsMetaSheetOverlay,
|
|
29
|
-
propsMetaSheetContent,
|
|
30
|
-
propsMetaSheetClose,
|
|
31
|
-
propsMetaSheetTitle,
|
|
32
|
-
propsMetaSheetDescription
|
|
33
|
-
} from "./sheet.ws";
|
|
34
25
|
import {
|
|
35
26
|
propsMetaTabs,
|
|
36
27
|
propsMetaTabsList,
|
|
37
28
|
propsMetaTabsTrigger,
|
|
38
29
|
propsMetaTabsContent
|
|
39
30
|
} from "./tabs.ws";
|
|
40
|
-
import { propsMeta } from "./
|
|
41
|
-
import { propsMeta as propsMeta2 } from "./input.ws";
|
|
42
|
-
import { propsMeta as propsMeta3 } from "./textarea.ws";
|
|
43
|
-
import { propsMeta as propsMeta4 } from "./label.ws";
|
|
31
|
+
import { propsMeta } from "./label.ws";
|
|
44
32
|
import {
|
|
45
33
|
propsMetaAccordion,
|
|
46
34
|
propsMetaAccordionItem,
|
|
@@ -48,13 +36,46 @@ import {
|
|
|
48
36
|
propsMetaAccordionTrigger,
|
|
49
37
|
propsMetaAccordionContent
|
|
50
38
|
} from "./accordion.ws";
|
|
39
|
+
import {
|
|
40
|
+
propsMetaNavigationMenu,
|
|
41
|
+
propsMetaNavigationMenuList,
|
|
42
|
+
propsMetaNavigationMenuItem,
|
|
43
|
+
propsMetaNavigationMenuTrigger,
|
|
44
|
+
propsMetaNavigationMenuContent,
|
|
45
|
+
propsMetaNavigationMenuLink,
|
|
46
|
+
propsMetaNavigationMenuViewport
|
|
47
|
+
} from "./navigation-menu.ws";
|
|
48
|
+
import {
|
|
49
|
+
propsMetaSelect,
|
|
50
|
+
propsMetaSelectTrigger,
|
|
51
|
+
propsMetaSelectValue,
|
|
52
|
+
propsMetaSelectViewport,
|
|
53
|
+
propsMetaSelectContent,
|
|
54
|
+
propsMetaSelectItem,
|
|
55
|
+
propsMetaSelectItemIndicator,
|
|
56
|
+
propsMetaSelectItemText
|
|
57
|
+
} from "./select.ws";
|
|
58
|
+
import {
|
|
59
|
+
propsMetaSwitch,
|
|
60
|
+
propsMetaSwitchThumb
|
|
61
|
+
} from "./switch.ws";
|
|
62
|
+
import {
|
|
63
|
+
propsMetaCheckbox,
|
|
64
|
+
propsMetaCheckboxIndicator
|
|
65
|
+
} from "./checkbox.ws";
|
|
66
|
+
import {
|
|
67
|
+
propsMetaRadioGroup,
|
|
68
|
+
propsMetaRadioGroupItem,
|
|
69
|
+
propsMetaRadioGroupIndicator
|
|
70
|
+
} from "./radio-group.ws";
|
|
51
71
|
export {
|
|
52
72
|
propsMetaAccordion as Accordion,
|
|
53
73
|
propsMetaAccordionContent as AccordionContent,
|
|
54
74
|
propsMetaAccordionHeader as AccordionHeader,
|
|
55
75
|
propsMetaAccordionItem as AccordionItem,
|
|
56
76
|
propsMetaAccordionTrigger as AccordionTrigger,
|
|
57
|
-
|
|
77
|
+
propsMetaCheckbox as Checkbox,
|
|
78
|
+
propsMetaCheckboxIndicator as CheckboxIndicator,
|
|
58
79
|
propsMetaCollapsible as Collapsible,
|
|
59
80
|
propsMetaCollapsibleContent as CollapsibleContent,
|
|
60
81
|
propsMetaCollapsibleTrigger as CollapsibleTrigger,
|
|
@@ -65,23 +86,34 @@ export {
|
|
|
65
86
|
propsMetaDialogOverlay as DialogOverlay,
|
|
66
87
|
propsMetaDialogTitle as DialogTitle,
|
|
67
88
|
propsMetaDialogTrigger as DialogTrigger,
|
|
68
|
-
|
|
69
|
-
|
|
89
|
+
propsMeta as Label,
|
|
90
|
+
propsMetaNavigationMenu as NavigationMenu,
|
|
91
|
+
propsMetaNavigationMenuContent as NavigationMenuContent,
|
|
92
|
+
propsMetaNavigationMenuItem as NavigationMenuItem,
|
|
93
|
+
propsMetaNavigationMenuLink as NavigationMenuLink,
|
|
94
|
+
propsMetaNavigationMenuList as NavigationMenuList,
|
|
95
|
+
propsMetaNavigationMenuTrigger as NavigationMenuTrigger,
|
|
96
|
+
propsMetaNavigationMenuViewport as NavigationMenuViewport,
|
|
70
97
|
propsMetaPopover as Popover,
|
|
71
98
|
propsMetaPopoverContent as PopoverContent,
|
|
72
99
|
propsMetaPopoverTrigger as PopoverTrigger,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
propsMetaRadioGroup as RadioGroup,
|
|
101
|
+
propsMetaRadioGroupIndicator as RadioGroupIndicator,
|
|
102
|
+
propsMetaRadioGroupItem as RadioGroupItem,
|
|
103
|
+
propsMetaSelect as Select,
|
|
104
|
+
propsMetaSelectContent as SelectContent,
|
|
105
|
+
propsMetaSelectItem as SelectItem,
|
|
106
|
+
propsMetaSelectItemIndicator as SelectItemIndicator,
|
|
107
|
+
propsMetaSelectItemText as SelectItemText,
|
|
108
|
+
propsMetaSelectTrigger as SelectTrigger,
|
|
109
|
+
propsMetaSelectValue as SelectValue,
|
|
110
|
+
propsMetaSelectViewport as SelectViewport,
|
|
111
|
+
propsMetaSwitch as Switch,
|
|
112
|
+
propsMetaSwitchThumb as SwitchThumb,
|
|
80
113
|
propsMetaTabs as Tabs,
|
|
81
114
|
propsMetaTabsContent as TabsContent,
|
|
82
115
|
propsMetaTabsList as TabsList,
|
|
83
116
|
propsMetaTabsTrigger as TabsTrigger,
|
|
84
|
-
propsMeta3 as Textarea,
|
|
85
117
|
propsMetaTooltip as Tooltip,
|
|
86
118
|
propsMetaTooltipContent as TooltipContent,
|
|
87
119
|
propsMetaTooltipTrigger as TooltipTrigger
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
} from "react";
|
|
3
|
+
import { Root, Item, Indicator } from "@radix-ui/react-radio-group";
|
|
4
|
+
const RadioGroup = Root;
|
|
5
|
+
const RadioGroupItem = Item;
|
|
6
|
+
const RadioGroupIndicator = Indicator;
|
|
7
|
+
export {
|
|
8
|
+
RadioGroup,
|
|
9
|
+
RadioGroupIndicator,
|
|
10
|
+
RadioGroupItem
|
|
11
|
+
};
|