PromucFlow_constructor/app/client/src/pages/Applications/EmbedSnippet/Snippet.tsx
Valera Melnikov 42debc6d11
chore: rename ADS package (#35583)
## Description
Rename `design-system` package to `@appsmith/ads`

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10319507327>
> Commit: 65d9664dd75b750496458a6e1652e0da858e1fc6
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10319507327&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Fri, 09 Aug 2024 13:47:50 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
2024-08-09 17:20:29 +03:00

95 lines
2.3 KiB
TypeScript

import React from "react";
import copy from "copy-to-clipboard";
import { createMessage, IN_APP_EMBED_SETTING } from "ee/constants/messages";
import styled from "styled-components";
import { Icon, Text, toast } from "@appsmith/ads";
const StyledText = styled(Text)``;
const EmbedSnippetContainer = styled.div`
display: flex;
align-items: flex-start;
justify-content: space-between;
background-color: var(--ads-v2-color-bg-subtle);
border-radius: var(--ads-v2-border-radius);
padding: 0.5rem;
gap: 1.5rem;
`;
interface EmbedCodeSnippetProps {
snippet: string;
isAppSettings?: boolean;
}
interface SnippetProps {
onCopy: () => void;
snippet: string;
}
function AppSettings(props: SnippetProps) {
return (
<>
<div className="flex justify-between">
<Text>{createMessage(IN_APP_EMBED_SETTING.embedSnippetTitle)}</Text>
<Icon
className="cursor-pointer"
name="duplicate"
onClick={props.onCopy}
size="md"
/>
</div>
<EmbedSnippetContainer data-testid="t--embed-snippet">
<StyledText
className="break-all max-h-32 overflow-y-auto"
kind="action-m"
>
{props.snippet}
</StyledText>
</EmbedSnippetContainer>
</>
);
}
function ShareModal(props: SnippetProps) {
return (
<>
<Text>{createMessage(IN_APP_EMBED_SETTING.embedSnippetTitle)}</Text>
<EmbedSnippetContainer data-testid="t--embed-snippet">
<StyledText
className="break-all max-h-32 overflow-y-auto"
kind="action-m"
>
{props.snippet}
</StyledText>
<Icon
className="cursor-pointer"
name="duplicate"
onClick={props.onCopy}
size="md"
/>
</EmbedSnippetContainer>
</>
);
}
function EmbedCodeSnippet(props: EmbedCodeSnippetProps) {
const onCopy = () => {
copy(props.snippet);
toast.show(createMessage(IN_APP_EMBED_SETTING.copiedEmbedCode), {
kind: "success",
});
};
return (
<div className="flex flex-col gap-2">
{props.isAppSettings ? (
<AppSettings onCopy={onCopy} snippet={props.snippet} />
) : (
<ShareModal onCopy={onCopy} snippet={props.snippet} />
)}
</div>
);
}
export default EmbedCodeSnippet;