Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion packages/sdk-components-react-radix/src/components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ export {
DialogTitle,
DialogDescription,
} from "./dialog";
export { Popover, PopoverTrigger, PopoverContent } from "./popover";
export {
Popover,
PopoverTrigger,
PopoverContent,
PopoverClose,
} from "./popover";
export { Tooltip, TooltipTrigger, TooltipContent } from "./tooltip";
export { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs";
export { Label } from "./label";
Expand Down
1 change: 1 addition & 0 deletions packages/sdk-components-react-radix/src/metas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export {
metaPopover as Popover,
metaPopoverTrigger as PopoverTrigger,
metaPopoverContent as PopoverContent,
metaPopoverClose as PopoverClose,
} from "./popover.ws";
export {
metaTooltip as Tooltip,
Expand Down
35 changes: 35 additions & 0 deletions packages/sdk-components-react-radix/src/popover.template.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { LargeXIcon } from "@webstudio-is/icons/svg";
import {
$,
css,
Expand All @@ -14,6 +15,8 @@ import {
spacing,
width,
zIndex,
height,
opacity,
} from "./shared/theme";

/**
Expand Down Expand Up @@ -52,6 +55,38 @@ export const meta: TemplateMeta = {
`}
>
<$.Text>{new PlaceholderValue("The text you can edit")}</$.Text>
<radix.PopoverClose
ws:label="Close Button"
/**
* absolute right-4 top-4
* rounded-sm opacity-70
* ring-offset-background
* hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2
* flex items-center justify-center h-4 w-4
**/
ws:style={css`
position: absolute;
right: ${spacing[4]};
top: ${spacing[4]};
border-radius: ${borderRadius.sm};
display: flex;
align-items: center;
justify-content: center;
height: ${height[4]};
width: ${height[4]};
border: 0;
background-color: transparent;
outline: none;
&:hover {
opacity: ${opacity[100]};
}
&:focus-visible {
box-shadow: ${boxShadow.ring};
}
`}
>
<$.HtmlEmbed ws:label="Close Icon" code={LargeXIcon} />
</radix.PopoverClose>
</radix.PopoverContent>
</radix.Popover>
),
Expand Down
2 changes: 2 additions & 0 deletions packages/sdk-components-react-radix/src/popover.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ export const PopoverContent = forwardRef<
)
);

export const PopoverClose = PopoverPrimitive.Close;

/* BUILDER HOOKS */

const namespace = "@webstudio-is/sdk-components-react-radix";
Expand Down
36 changes: 33 additions & 3 deletions packages/sdk-components-react-radix/src/popover.ws.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
import { PopoverIcon, TriggerIcon, ContentIcon } from "@webstudio-is/icons/svg";
import type { WsComponentMeta, WsComponentPropsMeta } from "@webstudio-is/sdk";
import { div } from "@webstudio-is/sdk/normalize.css";
import {
PopoverIcon,
TriggerIcon,
ContentIcon,
ButtonElementIcon,
} from "@webstudio-is/icons/svg";
import {
defaultStates,
type WsComponentMeta,
type WsComponentPropsMeta,
} from "@webstudio-is/sdk";
import { button, div } from "@webstudio-is/sdk/normalize.css";
import { radix } from "./shared/meta";
import {
propsPopover,
propsPopoverContent,
propsPopoverTrigger,
propsPopoverClose,
} from "./__generated__/popover.props";
import { buttonReset } from "./shared/preset-styles";

// @todo add [data-state] to button and link
export const metaPopoverTrigger: WsComponentMeta = {
Expand All @@ -22,6 +33,7 @@ export const metaPopoverContent: WsComponentMeta = {
contentModel: {
category: "none",
children: ["instance"],
descendants: [radix.PopoverClose],
},
presetStyle: {
div,
Expand All @@ -37,6 +49,19 @@ export const metaPopover: WsComponentMeta = {
},
};

export const metaPopoverClose: WsComponentMeta = {
icon: ButtonElementIcon,
label: "Close Button",
contentModel: {
category: "none",
children: ["instance", "rich-text"],
},
states: defaultStates,
presetStyle: {
button: [buttonReset, button].flat(),
},
};

export const propsMetaPopover: WsComponentPropsMeta = {
props: propsPopover,
initialProps: ["open"],
Expand All @@ -50,3 +75,8 @@ export const propsMetaPopoverContent: WsComponentPropsMeta = {
props: propsPopoverContent,
initialProps: ["side", "sideOffset", "align", "alignOffset"],
};

export const propsMetaPopoverClose: WsComponentPropsMeta = {
props: propsPopoverClose,
initialProps: [],
};
1 change: 1 addition & 0 deletions packages/sdk-components-react-radix/src/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export {
propsMetaPopover as Popover,
propsMetaPopoverTrigger as PopoverTrigger,
propsMetaPopoverContent as PopoverContent,
propsMetaPopoverClose as PopoverClose,
} from "./popover.ws";
export {
propsMetaTooltip as Tooltip,
Expand Down