mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
fix(studio): legal page buttons (#42149)
* basics * adjustments * format * rabbit * format
This commit is contained in:
1 parent
191f45001b
commit
5586be6fdb
7 files changed
+154
-140
No files matched your search
@@ -15,17 +15,21 @@ interface CustomDocumentProps {
|
||||
export const CustomDocument = ({ doc }: CustomDocumentProps) => {
|
||||
return (
|
||||
<ScaffoldContainer id={doc.id}>
|
||||
<ScaffoldSection>
|
||||
<ScaffoldSectionDetail className="sticky top-12 flex flex-col gap-y-8">
|
||||
<ScaffoldSection className="py-12">
|
||||
<ScaffoldSectionDetail>
|
||||
<p className="text-base m-0">{doc.name}</p>
|
||||
<p className="text-sm text-foreground-light m-0">{doc.description}</p>
|
||||
<div className="space-y-2 text-sm text-foreground-light [&_p]:m-0">
|
||||
<p>{doc.description}</p>
|
||||
</div>
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent className="flex items-center justify-center h-full">
|
||||
<Button asChild type="default" iconRight={<ExternalLink />}>
|
||||
<a download href={doc.action.url} target="_blank" rel="noreferrer noopener">
|
||||
{doc.action.text}
|
||||
</a>
|
||||
</Button>
|
||||
<ScaffoldSectionContent>
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button asChild type="default" iconRight={<ExternalLink />}>
|
||||
<a download href={doc.action.url} target="_blank" rel="noreferrer noopener">
|
||||
{doc.action.text}
|
||||
</a>
|
||||
</Button>
|
||||
</div>
|
||||
</ScaffoldSectionContent>
|
||||
</ScaffoldSection>
|
||||
</ScaffoldContainer>
|
||||
|
||||
@@ -37,10 +37,10 @@ export const DPA = () => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<ScaffoldSection>
|
||||
<ScaffoldSectionDetail className="sticky space-y-6 top-12">
|
||||
<p className="text-base m-0">Data Processing Addendum (DPA)</p>
|
||||
<div className="space-y-2 text-sm text-foreground-light m-0">
|
||||
<ScaffoldSection className="py-12">
|
||||
<ScaffoldSectionDetail>
|
||||
<h4 className="mb-5">Data Processing Addendum (DPA)</h4>
|
||||
<div className="space-y-2 text-sm text-foreground-light [&_p]:m-0">
|
||||
<p>
|
||||
All organizations can sign our Data Processing Addendum ("DPA") as part of their GDPR
|
||||
compliance.
|
||||
@@ -62,18 +62,20 @@ export const DPA = () => {
|
||||
</p>
|
||||
</div>
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent className="flex items-center justify-center h-full">
|
||||
<Button
|
||||
onClick={() => {
|
||||
setIsOpen(true)
|
||||
sendEvent({
|
||||
action: 'dpa_request_button_clicked',
|
||||
})
|
||||
}}
|
||||
type="default"
|
||||
>
|
||||
Request DPA
|
||||
</Button>
|
||||
<ScaffoldSectionContent>
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button
|
||||
onClick={() => {
|
||||
setIsOpen(true)
|
||||
sendEvent({
|
||||
action: 'dpa_request_button_clicked',
|
||||
})
|
||||
}}
|
||||
type="default"
|
||||
>
|
||||
Request DPA
|
||||
</Button>
|
||||
</div>
|
||||
</ScaffoldSectionContent>
|
||||
</ScaffoldSection>
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { SupportLink } from 'components/interfaces/Support/SupportLink'
|
||||
import { ScaffoldContainer, ScaffoldDivider, ScaffoldSection } from 'components/layouts/Scaffold'
|
||||
import {
|
||||
ScaffoldContainer,
|
||||
ScaffoldDivider,
|
||||
ScaffoldSection,
|
||||
ScaffoldSectionDetail,
|
||||
} from 'components/layouts/Scaffold'
|
||||
import { InlineLinkClassName } from 'components/ui/InlineLink'
|
||||
import { useCustomContent } from 'hooks/custom-content/useCustomContent'
|
||||
import { Fragment } from 'react'
|
||||
@@ -57,11 +62,13 @@ export const Documents = () => {
|
||||
<ScaffoldDivider />
|
||||
|
||||
<ScaffoldContainer>
|
||||
<ScaffoldSection>
|
||||
<p className="sticky space-y-6 top-12 text-sm text-foreground-light m-0 whitespace-nowrap">
|
||||
<SupportLink className={InlineLinkClassName}>Submit a support request</SupportLink> if
|
||||
you require additional documents for financial or tax reasons, such as a W-9 form.
|
||||
</p>
|
||||
<ScaffoldSection className="py-12">
|
||||
<ScaffoldSectionDetail className="col-span-full">
|
||||
<p className="text-sm text-foreground-light m-0">
|
||||
<SupportLink className={InlineLinkClassName}>Submit a support request</SupportLink> if
|
||||
you require additional documents for financial or tax reasons, such as a W-9 form.
|
||||
</p>
|
||||
</ScaffoldSectionDetail>
|
||||
</ScaffoldSection>
|
||||
</ScaffoldContainer>
|
||||
</>
|
||||
|
||||
@@ -14,45 +14,43 @@ export const HIPAA = () => {
|
||||
const { mutate: sendEvent } = useSendEventMutation()
|
||||
|
||||
return (
|
||||
<>
|
||||
<ScaffoldSection>
|
||||
<ScaffoldSectionDetail className="sticky space-y-6 top-12">
|
||||
<p className="text-base m-0">HIPAA</p>
|
||||
<div className="space-y-2 text-sm text-foreground-light m-0">
|
||||
<p>
|
||||
This is only for HIPAA requests. Please ignore this if you already have HIPAA enabled.
|
||||
</p>
|
||||
<p>
|
||||
Organizations on the Team Plan or above are eligible for a paid HIPAA compliance
|
||||
add-on. You can submit a request here and we will get back to you on the pricing and
|
||||
process for your use case.
|
||||
</p>
|
||||
<p>
|
||||
Organizations on the Free or Pro Plan can also submit a request for HIPAA. Note that
|
||||
you are still required to upgrade to the Team Plan after your request is approved.
|
||||
</p>
|
||||
</div>
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent>
|
||||
<div className="flex items-center justify-center h-full">
|
||||
<Button asChild type="default" iconRight={<ExternalLink />}>
|
||||
<a
|
||||
href="https://forms.supabase.com/hipaa2"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
onClick={() =>
|
||||
sendEvent({
|
||||
action: 'hipaa_request_button_clicked',
|
||||
groups: { organization: organization?.slug ?? 'Unknown' },
|
||||
})
|
||||
}
|
||||
>
|
||||
Request HIPAA
|
||||
</a>
|
||||
</Button>
|
||||
</div>
|
||||
</ScaffoldSectionContent>
|
||||
</ScaffoldSection>
|
||||
</>
|
||||
<ScaffoldSection className="py-12">
|
||||
<ScaffoldSectionDetail>
|
||||
<h4 className="mb-5">HIPAA</h4>
|
||||
<div className="space-y-2 text-sm text-foreground-light [&_p]:m-0">
|
||||
<p>
|
||||
This is only for HIPAA requests. Please ignore this if you already have HIPAA enabled.
|
||||
</p>
|
||||
<p>
|
||||
Organizations on the Team Plan or above are eligible for a paid HIPAA compliance add-on.
|
||||
You can submit a request here and we will get back to you on the pricing and process for
|
||||
your use case.
|
||||
</p>
|
||||
<p>
|
||||
Organizations on the Free or Pro Plan can also submit a request for HIPAA. Note that you
|
||||
are still required to upgrade to the Team Plan after your request is approved.
|
||||
</p>
|
||||
</div>
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent>
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button asChild type="default" iconRight={<ExternalLink />}>
|
||||
<a
|
||||
href="https://forms.supabase.com/hipaa2"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
onClick={() =>
|
||||
sendEvent({
|
||||
action: 'hipaa_request_button_clicked',
|
||||
groups: { organization: organization?.slug ?? 'Unknown' },
|
||||
})
|
||||
}
|
||||
>
|
||||
Request HIPAA
|
||||
</a>
|
||||
</Button>
|
||||
</div>
|
||||
</ScaffoldSectionContent>
|
||||
</ScaffoldSection>
|
||||
)
|
||||
}
|
||||
@@ -56,10 +56,10 @@ export const SOC2 = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<ScaffoldSection>
|
||||
<ScaffoldSectionDetail className="sticky space-y-6 top-12">
|
||||
<p className="text-base m-0">SOC2 Type 2</p>
|
||||
<div className="space-y-2 text-sm text-foreground-light m-0">
|
||||
<ScaffoldSection className="py-12">
|
||||
<ScaffoldSectionDetail>
|
||||
<h4 className="mb-5">SOC2 Type 2</h4>
|
||||
<div className="space-y-2 text-sm text-foreground-light [&_p]:m-0">
|
||||
<p>
|
||||
Organizations on Team Plan or above have access to our most recent SOC2 Type 2 report.
|
||||
</p>
|
||||
@@ -67,19 +67,21 @@ export const SOC2 = () => {
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent>
|
||||
{isLoadingPermissions || isLoadingEntitlement ? (
|
||||
<div className="flex items-center justify-center h-full">
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<ShimmeringLoader className="w-24" />
|
||||
</div>
|
||||
) : !canReadSubscriptions ? (
|
||||
<NoPermission resourceText="access our SOC2 Type 2 report" />
|
||||
) : !hasAccessToSoc2Report ? (
|
||||
<div className="flex items-center justify-center h-full">
|
||||
<Link href={`/org/${slug}/billing?panel=subscriptionPlan&source=soc2`}>
|
||||
<Button type="default">Upgrade to Team</Button>
|
||||
</Link>
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button asChild type="default">
|
||||
<Link href={`/org/${slug}/billing?panel=subscriptionPlan&source=soc2`}>
|
||||
Upgrade to Team
|
||||
</Link>
|
||||
</Button>
|
||||
</div>
|
||||
) : (
|
||||
<div className="flex items-center justify-center h-full">
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button
|
||||
type="default"
|
||||
icon={<Download />}
|
||||
|
||||
+35
-36
@@ -54,46 +54,45 @@ export const SecurityQuestionnaire = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<ScaffoldSection>
|
||||
<ScaffoldSectionDetail className="sticky space-y-6 top-12">
|
||||
<p className="text-base m-0">Standard Security Questionnaire</p>
|
||||
<div className="space-y-2 text-sm text-foreground-light m-0">
|
||||
<p>
|
||||
Organizations on Team Plan or above have access to our standard security
|
||||
questionnaire.
|
||||
</p>
|
||||
<ScaffoldSection className="py-12">
|
||||
<ScaffoldSectionDetail>
|
||||
<h4 className="mb-5">Standard Security Questionnaire</h4>
|
||||
<div className="space-y-2 text-sm text-foreground-light [&_p]:m-0">
|
||||
<p>
|
||||
Organizations on Team Plan or above have access to our standard security questionnaire.
|
||||
</p>
|
||||
</div>
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent>
|
||||
{isLoadingPermissions || isLoadingEntitlement ? (
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<ShimmeringLoader className="w-24" />
|
||||
</div>
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent>
|
||||
{isLoadingPermissions || isLoadingEntitlement ? (
|
||||
<div className="flex items-center justify-center h-full">
|
||||
<ShimmeringLoader className="w-24" />
|
||||
</div>
|
||||
) : !canReadSubscriptions ? (
|
||||
<NoPermission resourceText="access our security questionnaire" />
|
||||
) : !hasAccessToQuestionnaire ? (
|
||||
<div className="flex items-center justify-center h-full">
|
||||
) : !canReadSubscriptions ? (
|
||||
<NoPermission resourceText="access our security questionnaire" />
|
||||
) : !hasAccessToQuestionnaire ? (
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button asChild type="default">
|
||||
<Link
|
||||
href={`/org/${slug}/billing?panel=subscriptionPlan&source=securityQuestionnaire`}
|
||||
>
|
||||
<Button type="default">Upgrade to Team</Button>
|
||||
Upgrade to Team
|
||||
</Link>
|
||||
</div>
|
||||
) : (
|
||||
<div className="flex items-center justify-center h-full">
|
||||
<Button
|
||||
type="default"
|
||||
icon={<Download />}
|
||||
onClick={handleDownloadClick}
|
||||
disabled={!slug}
|
||||
>
|
||||
Download Questionnaire
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
</ScaffoldSectionContent>
|
||||
</ScaffoldSection>
|
||||
</>
|
||||
</Button>
|
||||
</div>
|
||||
) : (
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button
|
||||
type="default"
|
||||
icon={<Download />}
|
||||
onClick={handleDownloadClick}
|
||||
disabled={!slug}
|
||||
>
|
||||
Download Questionnaire
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
</ScaffoldSectionContent>
|
||||
</ScaffoldSection>
|
||||
)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ExternalLink } from 'lucide-react'
|
||||
import { Download } from 'lucide-react'
|
||||
|
||||
import {
|
||||
ScaffoldSection,
|
||||
@@ -14,34 +14,36 @@ export const TIA = () => {
|
||||
const { mutate: sendEvent } = useSendEventMutation()
|
||||
|
||||
return (
|
||||
<ScaffoldSection>
|
||||
<ScaffoldSectionDetail className="sticky space-y-6 top-12">
|
||||
<p className="text-base m-0">Transfer Impact Assessment (TIA)</p>
|
||||
<div className="space-y-2 text-sm text-foreground-light m-0">
|
||||
<ScaffoldSection className="py-12">
|
||||
<ScaffoldSectionDetail>
|
||||
<h4 className="mb-5">Transfer Impact Assessment (TIA)</h4>
|
||||
<div className="space-y-2 text-sm text-foreground-light [&_p]:m-0">
|
||||
<p>
|
||||
All organizations can access and use our TIA as part of their GDPR-compliant data
|
||||
transfer process.
|
||||
</p>
|
||||
</div>
|
||||
</ScaffoldSectionDetail>
|
||||
<ScaffoldSectionContent className="flex items-center justify-center h-full">
|
||||
<Button asChild type="default" iconRight={<ExternalLink />}>
|
||||
<a
|
||||
href="https://supabase.com/downloads/docs/Supabase+TIA+250314.pdf"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
download={true}
|
||||
onClick={() =>
|
||||
sendEvent({
|
||||
action: 'document_view_button_clicked',
|
||||
properties: { documentName: 'TIA' },
|
||||
groups: { organization: organization?.slug ?? 'Unknown' },
|
||||
})
|
||||
}
|
||||
>
|
||||
View TIA
|
||||
</a>
|
||||
</Button>
|
||||
<ScaffoldSectionContent>
|
||||
<div className="@lg:flex items-center justify-center h-full">
|
||||
<Button asChild type="default" iconRight={<Download />}>
|
||||
<a
|
||||
href="https://supabase.com/downloads/docs/Supabase+TIA+250314.pdf"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
download={true}
|
||||
onClick={() =>
|
||||
sendEvent({
|
||||
action: 'document_view_button_clicked',
|
||||
properties: { documentName: 'TIA' },
|
||||
groups: { organization: organization?.slug ?? 'Unknown' },
|
||||
})
|
||||
}
|
||||
>
|
||||
Download TIA
|
||||
</a>
|
||||
</Button>
|
||||
</div>
|
||||
</ScaffoldSectionContent>
|
||||
</ScaffoldSection>
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user