From efb41cb29af48ee915de635eb633b01f23345bbc Mon Sep 17 00:00:00 2001 From: Nick Rayburn <52075362+nrayburn-tech@users.noreply.github.com> Date: Sat, 14 May 2022 13:58:13 -0500 Subject: [PATCH 001/188] Update FormBoxEmpty types and move file --- .../Database/Triggers/CreateTrigger.tsx | 22 +++++++++---------- .../{to-be-cleaned => ui}/FormBoxEmpty.tsx | 11 +++++++--- 2 files changed, 19 insertions(+), 14 deletions(-) rename studio/components/{to-be-cleaned => ui}/FormBoxEmpty.tsx (67%) diff --git a/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx b/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx index be5299e1298..dd8588c9b26 100644 --- a/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx +++ b/studio/components/interfaces/Database/Triggers/CreateTrigger.tsx @@ -19,7 +19,7 @@ import { useRouter } from 'next/router' import SVG from 'react-inlinesvg' import ChooseFunctionForm from './ChooseFunctionForm' -import FormEmptyBox from 'components/to-be-cleaned/FormBoxEmpty' +import FormEmptyBox from 'components/ui/FormBoxEmpty' import NoTableState from 'components/ui/States/NoTableState' import { useStore } from 'hooks' @@ -695,17 +695,17 @@ const FunctionEmpty: FC = observer(({}) => { - , - ]} + + } >

This is your organization's name within Supabase.

diff --git a/studio/pages/org/[slug]/settings.tsx b/studio/pages/org/[slug]/settings.tsx index 5c25e938271..137aea7c95f 100644 --- a/studio/pages/org/[slug]/settings.tsx +++ b/studio/pages/org/[slug]/settings.tsx @@ -27,7 +27,7 @@ import { AccountLayoutWithoutAuth } from 'components/layouts' import { BillingSettings, InvoicesSettings } from 'components/interfaces/Organization' import Table from 'components/to-be-cleaned/Table' -import Panel from 'components/to-be-cleaned/Panel' +import Panel from 'components/ui/Panel' import { confirmAlert } from 'components/to-be-cleaned/ModalsDeprecated/ConfirmModal' import InviteMemberModal from 'components/to-be-cleaned/ModalsDeprecated/InviteMemberModal' import TextConfirmModal from 'components/ui/Modals/TextConfirmModal' @@ -250,11 +250,11 @@ const OrgDeletePanel = observer(() => { if (!PageState.isOrgOwner) return null return ( Danger Zone - , - ]} + + } > = ({ projectRef }) => {
Connection info - , + // Connection info - ]} + } > Date: Sat, 14 May 2022 14:05:47 -0500 Subject: [PATCH 003/188] Update SqlEditor types and move file --- .../Policies/PolicyEditor/PolicyDefinition.tsx | 10 +++++----- .../Authentication/Policies/PolicyEditor/index.tsx | 4 ++-- .../Authentication/Policies/PolicyReview.tsx | 2 +- .../Policies/PolicyTemplates/TemplatePreview.tsx | 2 +- .../Database/Functions/CreateFunction.tsx | 4 +--- .../Database/Triggers/ChooseFunctionForm.tsx | 3 +-- .../components/{to-be-cleaned => ui}/SqlEditor.tsx | 13 +++++++++++-- 7 files changed, 22 insertions(+), 16 deletions(-) rename studio/components/{to-be-cleaned => ui}/SqlEditor.tsx (91%) diff --git a/studio/components/interfaces/Authentication/Policies/PolicyEditor/PolicyDefinition.tsx b/studio/components/interfaces/Authentication/Policies/PolicyEditor/PolicyDefinition.tsx index bb3e3033939..b43bc9a4b56 100644 --- a/studio/components/interfaces/Authentication/Policies/PolicyEditor/PolicyDefinition.tsx +++ b/studio/components/interfaces/Authentication/Policies/PolicyEditor/PolicyDefinition.tsx @@ -1,14 +1,14 @@ import { FC, useEffect } from 'react' import { usePrevious } from 'hooks' -import SqlEditor from 'components/to-be-cleaned/SqlEditor' +import SqlEditor from 'components/ui/SqlEditor' interface Props { operation: string definition: string check: string - onUpdatePolicyUsing: (using: string | null) => void - onUpdatePolicyCheck: (check: string | null) => void + onUpdatePolicyUsing: (using: string | undefined) => void + onUpdatePolicyCheck: (check: string | undefined) => void } const PolicyDefinition: FC = ({ @@ -24,8 +24,8 @@ const PolicyDefinition: FC = ({ const previousOperation = usePrevious(operation) || '' useEffect(() => { - if (showUsing(previousOperation) && !showUsing(operation)) onUpdatePolicyUsing(null) - if (showCheck(previousOperation) && !showCheck(operation)) onUpdatePolicyCheck(null) + if (showUsing(previousOperation) && !showUsing(operation)) onUpdatePolicyUsing(undefined) + if (showCheck(previousOperation) && !showCheck(operation)) onUpdatePolicyCheck(undefined) }, [operation]) return ( diff --git a/studio/components/interfaces/Authentication/Policies/PolicyEditor/index.tsx b/studio/components/interfaces/Authentication/Policies/PolicyEditor/index.tsx index 454a6f7da33..df32f24a78d 100644 --- a/studio/components/interfaces/Authentication/Policies/PolicyEditor/index.tsx +++ b/studio/components/interfaces/Authentication/Policies/PolicyEditor/index.tsx @@ -68,10 +68,10 @@ const PolicyEditor: FC = ({ operation={operation} definition={definition} check={check} - onUpdatePolicyUsing={(definition: string | null) => + onUpdatePolicyUsing={(definition: string | undefined) => onUpdatePolicyFormFields({ definition }) } - onUpdatePolicyCheck={(check: string | null) => onUpdatePolicyFormFields({ check })} + onUpdatePolicyCheck={(check: string | undefined) => onUpdatePolicyFormFields({ check })} />
diff --git a/studio/components/interfaces/Authentication/Policies/PolicyReview.tsx b/studio/components/interfaces/Authentication/Policies/PolicyReview.tsx index 0422d3f43be..c4b26e5cfb2 100644 --- a/studio/components/interfaces/Authentication/Policies/PolicyReview.tsx +++ b/studio/components/interfaces/Authentication/Policies/PolicyReview.tsx @@ -1,7 +1,7 @@ import { Button, Modal } from '@supabase/ui' import { isEmpty } from 'lodash' import { FC, useState } from 'react' -import SqlEditor from 'components/to-be-cleaned/SqlEditor' +import SqlEditor from 'components/ui/SqlEditor' import { PolicyForReview } from './Policies.types' interface Props { diff --git a/studio/components/interfaces/Authentication/Policies/PolicyTemplates/TemplatePreview.tsx b/studio/components/interfaces/Authentication/Policies/PolicyTemplates/TemplatePreview.tsx index 73be091036f..97b59f24ad2 100644 --- a/studio/components/interfaces/Authentication/Policies/PolicyTemplates/TemplatePreview.tsx +++ b/studio/components/interfaces/Authentication/Policies/PolicyTemplates/TemplatePreview.tsx @@ -1,6 +1,6 @@ import { FC } from 'react' import { isEmpty } from 'lodash' -import SqlEditor from 'components/to-be-cleaned/SqlEditor' +import SqlEditor from 'components/ui/SqlEditor' import { PolicyTemplate } from './PolicyTemplates.constants' interface Props { diff --git a/studio/components/interfaces/Database/Functions/CreateFunction.tsx b/studio/components/interfaces/Database/Functions/CreateFunction.tsx index 890ada8f14d..bd8fe31ba9e 100644 --- a/studio/components/interfaces/Database/Functions/CreateFunction.tsx +++ b/studio/components/interfaces/Database/Functions/CreateFunction.tsx @@ -18,7 +18,7 @@ import { makeAutoObservable } from 'mobx' import { useStore } from 'hooks' import Panel from 'components/ui/Panel' -import SqlEditor from 'components/to-be-cleaned/SqlEditor' +import SqlEditor from 'components/ui/SqlEditor' import { POSTGRES_DATA_TYPES } from 'components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.constants' class CreateFunctionFormState { @@ -721,10 +721,8 @@ const InputDefinition: FC = observer(({}) => {

- {/* @ts-ignore */} { _localState!.onFormChange({ key: 'definition', diff --git a/studio/components/interfaces/Database/Triggers/ChooseFunctionForm.tsx b/studio/components/interfaces/Database/Triggers/ChooseFunctionForm.tsx index d5aaf807f6b..3113202cc41 100644 --- a/studio/components/interfaces/Database/Triggers/ChooseFunctionForm.tsx +++ b/studio/components/interfaces/Database/Triggers/ChooseFunctionForm.tsx @@ -12,7 +12,7 @@ import { Typography, } from '@supabase/ui' import { Dictionary } from '@supabase/grid' -import SqlEditor from 'components/to-be-cleaned/SqlEditor' +import SqlEditor from 'components/ui/SqlEditor' import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState' import InformationBox from 'components/ui/InformationBox' @@ -203,7 +203,6 @@ const Function: React.FC = ({ id, completeStatement, name, onClic leaveTo="transform opacity-0" >
- {/* @ts-ignore */}
diff --git a/studio/components/to-be-cleaned/SqlEditor.tsx b/studio/components/ui/SqlEditor.tsx similarity index 91% rename from studio/components/to-be-cleaned/SqlEditor.tsx rename to studio/components/ui/SqlEditor.tsx index 5b45b142c41..c7a83688f3a 100644 --- a/studio/components/to-be-cleaned/SqlEditor.tsx +++ b/studio/components/ui/SqlEditor.tsx @@ -1,9 +1,18 @@ -import Editor, { useMonaco } from '@monaco-editor/react' +import Editor, { OnChange, useMonaco } from '@monaco-editor/react' import { FC, useEffect, useRef } from 'react' import { Typography } from '@supabase/ui' import { useStore } from 'hooks' -const SqlEditor: FC = ({ +interface Props { + contextmenu?: boolean; + defaultValue?: string; + language?: string; + onInputChange?: OnChange; + queryId?: string; + readOnly?: boolean; +} + +const SqlEditor: FC = ({ queryId, language = 'pgsql', defaultValue = '', From a9a65d2b5c8324f941ee3e34901bd430b7c84e9a Mon Sep 17 00:00:00 2001 From: Nick Rayburn <52075362+nrayburn-tech@users.noreply.github.com> Date: Sat, 14 May 2022 14:41:31 -0500 Subject: [PATCH 004/188] Remove deprecated and unused TooltipListener --- .../to-be-cleaned/TooltipListener.tsx | 80 ------------------- studio/hooks/deprecated.ts | 2 - 2 files changed, 82 deletions(-) delete mode 100644 studio/components/to-be-cleaned/TooltipListener.tsx diff --git a/studio/components/to-be-cleaned/TooltipListener.tsx b/studio/components/to-be-cleaned/TooltipListener.tsx deleted file mode 100644 index 313344b74ee..00000000000 --- a/studio/components/to-be-cleaned/TooltipListener.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { useRef, useEffect } from 'react' -import { renderToString } from 'react-dom/server' - -import { makeRandomString } from 'lib/helpers' -import KeyMap from './KeyMap' - -/** - * Hook for listening to hover action on the target element and show tooltip. - * A tooltip contains a title and an optional keyMap shortcut. - * - * @param {String} title - * @param {String} position top/top-left/bottom/bottom-left/left/right. default value: bottom - * @param {String} keyMap element key shortcuts - * @param {String} className custom class name - * @param {Boolean} nowrap disable title wrap text - * - * @returns {Object} Ref for the target element - */ - -export default function TooltipListener({ - title = '', - position = 'bottom', - keyMap = null, - className = '', - nowrap = false, -}) { - const ref = useRef(null) - const tooltipId = `tooltip-${makeRandomString(5)}` - const tooltip = document.createElement('div') - tooltip.id = tooltipId - tooltip.className = `tooltips ${position} absolute p-2 m-1 bg-black border border-solid dark:border-dark rounded-lg rounded text-center ${className} z-50` - tooltip.innerHTML = `${title} ${renderToString( -
- {/* force dark mode on KeyMap */} - -
- )}` - - function handleMouseOver() { - const elem = document.getElementById(tooltipId) - if (!elem) { - ref.current.style.position = 'relative' - ref.current.appendChild(tooltip) - } - } - - function handleMouseLeave() { - removeTooltip() - } - - function handleMouseClick() { - removeTooltip() - } - - function removeTooltip() { - const elem = document.getElementById(tooltipId) - if (elem) { - ref.current.style.position = 'static' - ref.current.removeChild(elem) - } - } - - useEffect(() => { - if (!ref.current) return - - ref.current.addEventListener('mouseover', handleMouseOver) - ref.current.addEventListener('mouseleave', handleMouseLeave) - ref.current.addEventListener('click', handleMouseClick) - - return () => { - ref.current.removeEventListener('mouseover', handleMouseOver) - ref.current.removeEventListener('mouseleave', handleMouseLeave) - ref.current.removeEventListener('click', handleMouseClick) - } - }, [ref.current]) - - return ref -} diff --git a/studio/hooks/deprecated.ts b/studio/hooks/deprecated.ts index 5e91c0fb2c4..3af4fad3b05 100644 --- a/studio/hooks/deprecated.ts +++ b/studio/hooks/deprecated.ts @@ -1,6 +1,5 @@ import { useRef, useEffect, useState } from 'react' import { includes } from 'lodash' -import TooltipListener from 'components/to-be-cleaned/TooltipListener' /** * Hook for listening to clicks outside of the target element. @@ -157,7 +156,6 @@ export { clickOutsideListener, useKeyboardShortcuts, isMounted, - TooltipListener, useWindowDimensions, usePrevious, } From 1a48de2cf76fe4ce50828acbba203aabc39a2d73 Mon Sep 17 00:00:00 2001 From: Nick Rayburn <52075362+nrayburn-tech@users.noreply.github.com> Date: Sat, 14 May 2022 14:53:00 -0500 Subject: [PATCH 005/188] Update Usage types and move file --- .../interfaces/Home/ProjectUsage.tsx | 2 +- .../{to-be-cleaned => ui}/Usage.tsx | 124 +++++++++++------- .../project/[ref]/settings/billing/index.tsx | 7 +- .../pages/project/[ref]/settings/database.tsx | 4 +- 4 files changed, 81 insertions(+), 56 deletions(-) rename studio/components/{to-be-cleaned => ui}/Usage.tsx (69%) diff --git a/studio/components/interfaces/Home/ProjectUsage.tsx b/studio/components/interfaces/Home/ProjectUsage.tsx index a0110d67924..a24898e965b 100644 --- a/studio/components/interfaces/Home/ProjectUsage.tsx +++ b/studio/components/interfaces/Home/ProjectUsage.tsx @@ -16,7 +16,7 @@ import { import Panel from 'components/ui/Panel' import ChartHandler from 'components/to-be-cleaned/Charts/ChartHandler' -import { ProjectUsageMinimal } from 'components/to-be-cleaned/Usage' +import { ProjectUsageMinimal } from 'components/ui/Usage' import { useFlag } from 'hooks' import { get } from 'lib/common/fetch' diff --git a/studio/components/to-be-cleaned/Usage.tsx b/studio/components/ui/Usage.tsx similarity index 69% rename from studio/components/to-be-cleaned/Usage.tsx rename to studio/components/ui/Usage.tsx index ef03f7914ca..64a49e0284a 100644 --- a/studio/components/to-be-cleaned/Usage.tsx +++ b/studio/components/ui/Usage.tsx @@ -1,12 +1,25 @@ -import React, { FC, useEffect, useState } from 'react' +import React, { FC, useEffect } from 'react' import useSWR from 'swr' import { Loading, Typography } from '@supabase/ui' import { useProjectSubscription, useStore } from 'hooks' import { API_URL, PRICING_TIER_PRODUCT_IDS } from 'lib/constants' -import { get, post } from 'lib/common/fetch' +import { get } from 'lib/common/fetch' import SparkBar from 'components/ui/SparkBar' +interface ApiUsageStats { + authUsers: string | null; + bucketSize: string | null; + dbSize: string | null; + dbTables: string | null; +} +interface UsageStats { + authUsers: number; + bucketSize: number; + dbSize: number; + dbTables: number; +} + const GB = 1000000000 const MB = 1000000 @@ -32,13 +45,13 @@ const usageLimits = { title: 'Database space', tiers: { free: { - description: (stats: any) => - `${(((stats?.dbSize || 0) / (500 * MB)) * 100).toFixed(2)} %`, - render: (stats: any) => { - const bytes: any = stats?.dbSize ? new Number(stats?.dbSize) : 0 + description: (stats: UsageStats) => + `${((stats.dbSize / (500 * MB)) * 100).toFixed(2)} %`, + render: (stats: UsageStats) => { + const bytes: number = stats.dbSize; const usage = { - gb: bytes / GB || 0, - mb: bytes / MB || 0, + gb: bytes / GB, + mb: bytes / MB, } return ( ) }, }, pro: { - description: (stats: any) => - `${(((stats?.dbSize || 0) / (8000 * MB)) * 100).toFixed(2)} %`, - render: (stats: any) => { - const bytes: any = stats?.dbSize ? new Number(stats?.dbSize) : 0 + description: (stats: UsageStats) => + `${((stats.dbSize / (8000 * MB)) * 100).toFixed(2)} %`, + render: (stats: UsageStats) => { + const bytes: number = stats.dbSize const usage = { - gb: bytes / GB || 0, - mb: bytes / MB || 0, + gb: bytes / GB, + mb: bytes / MB, } return ( ) @@ -85,29 +98,29 @@ const usageLimits = { title: 'Users', tiers: { free: { - description: (stats: any) => `${(((stats?.authUsers || 0) / 10000) * 100).toFixed(2)}%`, - render: (stats: any) => ( + description: (stats: UsageStats) => `${((stats.authUsers / 10000) * 100).toFixed(2)}%`, + render: (stats: UsageStats) => ( ), }, pro: { - description: (stats: any) => - `${(((stats?.authUsers || 0) / 100000) * 100).toFixed(2)}%`, - render: (stats: any) => ( + description: (stats: UsageStats) => + `${((stats.authUsers / 100000) * 100).toFixed(2)}%`, + render: (stats: UsageStats) => ( ), }, @@ -117,11 +130,11 @@ const usageLimits = { title: 'Auth confirmation emails', tiers: { free: { - description: () => `${new Number(1000).toLocaleString()}/month`, + description: () => `${Number(1000).toLocaleString()}/month`, render: null, }, pro: { - description: () => `${new Number(30000).toLocaleString()}/month`, + description: () => `${Number(30000).toLocaleString()}/month`, render: null, }, }, @@ -136,38 +149,34 @@ const usageLimits = { title: 'Storage space', tiers: { free: { - description: (stats: any) => - `${(((stats?.bucketSize || 0) / (1 * GB)) * 100).toFixed(2)}%`, - render: (stats: any) => ( + description: (stats: UsageStats) => + `${((stats.bucketSize / (1 * GB)) * 100).toFixed(2)}%`, + render: (stats: UsageStats) => ( ), }, pro: { - description: (stats: any) => - `${(((stats?.bucketSize || 0) / (100 * GB)) * 100).toFixed(2)}%`, - render: (stats: any) => ( + description: (stats: UsageStats) => + `${((stats.bucketSize / (100 * GB)) * 100).toFixed(2)}%`, + render: (stats: UsageStats) => ( ), }, @@ -177,11 +186,11 @@ const usageLimits = { title: 'Transfer limits', tiers: { free: { - description: () => `${new Number(2).toLocaleString()} GB`, + description: () => `${Number(2).toLocaleString()} GB`, render: () => {}, }, pro: { - description: () => `${new Number(200).toLocaleString()} GB`, + description: () => `${Number(200).toLocaleString()} GB`, render: () => {}, }, }, @@ -190,7 +199,12 @@ const usageLimits = { }, } -const ProjectUsage: FC = ({ projectRef, subscription_id }) => { +interface ProjectUsageProps { + projectRef?: string; + subscription_id?: string; +} + +const ProjectUsage: FC = ({ projectRef, subscription_id }) => { const { ui } = useStore() const { data: stats, error: usageError } = useSWR(`${API_URL}/projects/${projectRef}/usage`, get) const { subscription, isLoading: loading, error } = useProjectSubscription(projectRef) @@ -268,9 +282,19 @@ const ProjectUsage: FC = ({ projectRef, subscription_id }) => { export default ProjectUsage -export const ProjectUsageMinimal: FC = ({ projectRef, subscription_id, filter }) => { - const { data: stats, error: usageError } = useSWR(`${API_URL}/projects/${projectRef}/usage`, get) +interface ProjectUsageMinimalProps extends ProjectUsageProps { + filter: string; +} + +export const ProjectUsageMinimal: FC = ({ projectRef, subscription_id, filter }) => { + const { data: apiStats, error: usageError } = useSWR(`${API_URL}/projects/${projectRef}/usage`, get) const { subscription, isLoading: loading, error } = useProjectSubscription(projectRef) + const stats: UsageStats = { + authUsers: Number(apiStats?.authUsers), + bucketSize: Number(apiStats?.bucketSize), + dbSize: Number(apiStats?.dbSize), + dbTables: Number(apiStats?.dbTables) + } if (subscription?.tier?.supabase_prod_id === PRICING_TIER_PRODUCT_IDS.PAYG) { return <> diff --git a/studio/pages/project/[ref]/settings/billing/index.tsx b/studio/pages/project/[ref]/settings/billing/index.tsx index 7239867bb1a..dbe40bbb4c6 100644 --- a/studio/pages/project/[ref]/settings/billing/index.tsx +++ b/studio/pages/project/[ref]/settings/billing/index.tsx @@ -9,9 +9,10 @@ import { SettingsLayout } from 'components/layouts' import LoadingUI from 'components/ui/Loading' import { PAYGUsage, Subscription, Invoices } from 'components/interfaces/Billing' -import ProjectUsage from 'components/to-be-cleaned/Usage' +import ProjectUsage from 'components/ui/Usage' import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' import { PaygStats } from 'components/interfaces/Billing/PAYGUsage/PAYGUsage.types' +import { Project } from '../../../../../types' type ProjectBillingProps = {} & any const ProjectBilling: FC = ({ store }) => { @@ -32,7 +33,7 @@ const ProjectBilling: FC = ({ store }) => { export default withAuth(observer(ProjectBilling)) type SettingsProps = { - project: any + project?: Project } const Settings: FC = ({ project }) => { const { ui } = useStore() @@ -108,7 +109,7 @@ const Settings: FC = ({ project }) => { {paygStats && }
) : ( - + )}

Invoices

diff --git a/studio/pages/project/[ref]/settings/database.tsx b/studio/pages/project/[ref]/settings/database.tsx index 41e0f78b40b..808f9aaa6b1 100644 --- a/studio/pages/project/[ref]/settings/database.tsx +++ b/studio/pages/project/[ref]/settings/database.tsx @@ -18,7 +18,7 @@ import { API_URL, DEFAULT_MINIMUM_PASSWORD_STRENGTH, TIME_PERIODS_INFRA } from ' import { SettingsLayout } from 'components/layouts' import PasswordStrengthBar from 'components/ui/PasswordStrengthBar' import Panel from 'components/ui/Panel' -import { ProjectUsageMinimal } from 'components/to-be-cleaned/Usage' +import { ProjectUsageMinimal } from 'components/ui/Usage' import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' import ChartHandler from 'components/to-be-cleaned/Charts/ChartHandler' @@ -50,7 +50,7 @@ export default withAuth(observer(ProjectSettings)) const Usage: FC = ({ project }) => { const [dateRange, setDateRange] = useState(undefined) const router = useRouter() - const { ref } = router.query + const ref = router.query.ref as string; return ( <> From 5245b10889a4edc0e45d9a8eefae09d1149a3484 Mon Sep 17 00:00:00 2001 From: adamt55 <62301395+adamt55@users.noreply.github.com> Date: Sun, 15 May 2022 19:29:14 +0200 Subject: [PATCH 006/188] Update index.js Added an additional div to render login page correctly in the center --- examples/todo-list/nextjs-todo-list/pages/index.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/todo-list/nextjs-todo-list/pages/index.js b/examples/todo-list/nextjs-todo-list/pages/index.js index 273d9e302c6..beb5413e63d 100644 --- a/examples/todo-list/nextjs-todo-list/pages/index.js +++ b/examples/todo-list/nextjs-todo-list/pages/index.js @@ -9,12 +9,14 @@ export default function IndexPage() {
{!user ? (
- +
+ +
) : (
Date: Tue, 24 May 2022 17:20:16 +0530 Subject: [PATCH 007/188] Proposed changes to Fix Issue #4195 --- web/spec/supabase.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/web/spec/supabase.yml b/web/spec/supabase.yml index 48cc578f9fc..18f3607fe01 100644 --- a/web/spec/supabase.yml +++ b/web/spec/supabase.yml @@ -1391,6 +1391,7 @@ pages: .on('UPDATE', handleRecordUpdated) .subscribe() ``` + **Note** ``eq`` is a filter that can return events that match the filter, but as of now only works with Integers removeSubscription(): title: 'removeSubscription()' From d79bce0886938b8d28f47f24ecabf6aaa7bb71f4 Mon Sep 17 00:00:00 2001 From: Nick Rayburn <52075362+nrayburn-tech@users.noreply.github.com> Date: Tue, 24 May 2022 19:54:37 -0500 Subject: [PATCH 008/188] Revert "Remove deprecated and unused TooltipListener" This reverts commit a9a65d2b5c8324f941ee3e34901bd430b7c84e9a. --- .../to-be-cleaned/TooltipListener.tsx | 80 +++++++++++++++++++ studio/hooks/deprecated.ts | 2 + 2 files changed, 82 insertions(+) create mode 100644 studio/components/to-be-cleaned/TooltipListener.tsx diff --git a/studio/components/to-be-cleaned/TooltipListener.tsx b/studio/components/to-be-cleaned/TooltipListener.tsx new file mode 100644 index 00000000000..313344b74ee --- /dev/null +++ b/studio/components/to-be-cleaned/TooltipListener.tsx @@ -0,0 +1,80 @@ +import { useRef, useEffect } from 'react' +import { renderToString } from 'react-dom/server' + +import { makeRandomString } from 'lib/helpers' +import KeyMap from './KeyMap' + +/** + * Hook for listening to hover action on the target element and show tooltip. + * A tooltip contains a title and an optional keyMap shortcut. + * + * @param {String} title + * @param {String} position top/top-left/bottom/bottom-left/left/right. default value: bottom + * @param {String} keyMap element key shortcuts + * @param {String} className custom class name + * @param {Boolean} nowrap disable title wrap text + * + * @returns {Object} Ref for the target element + */ + +export default function TooltipListener({ + title = '', + position = 'bottom', + keyMap = null, + className = '', + nowrap = false, +}) { + const ref = useRef(null) + const tooltipId = `tooltip-${makeRandomString(5)}` + const tooltip = document.createElement('div') + tooltip.id = tooltipId + tooltip.className = `tooltips ${position} absolute p-2 m-1 bg-black border border-solid dark:border-dark rounded-lg rounded text-center ${className} z-50` + tooltip.innerHTML = `${title} ${renderToString( +
+ {/* force dark mode on KeyMap */} + +
+ )}` + + function handleMouseOver() { + const elem = document.getElementById(tooltipId) + if (!elem) { + ref.current.style.position = 'relative' + ref.current.appendChild(tooltip) + } + } + + function handleMouseLeave() { + removeTooltip() + } + + function handleMouseClick() { + removeTooltip() + } + + function removeTooltip() { + const elem = document.getElementById(tooltipId) + if (elem) { + ref.current.style.position = 'static' + ref.current.removeChild(elem) + } + } + + useEffect(() => { + if (!ref.current) return + + ref.current.addEventListener('mouseover', handleMouseOver) + ref.current.addEventListener('mouseleave', handleMouseLeave) + ref.current.addEventListener('click', handleMouseClick) + + return () => { + ref.current.removeEventListener('mouseover', handleMouseOver) + ref.current.removeEventListener('mouseleave', handleMouseLeave) + ref.current.removeEventListener('click', handleMouseClick) + } + }, [ref.current]) + + return ref +} diff --git a/studio/hooks/deprecated.ts b/studio/hooks/deprecated.ts index 3af4fad3b05..5e91c0fb2c4 100644 --- a/studio/hooks/deprecated.ts +++ b/studio/hooks/deprecated.ts @@ -1,5 +1,6 @@ import { useRef, useEffect, useState } from 'react' import { includes } from 'lodash' +import TooltipListener from 'components/to-be-cleaned/TooltipListener' /** * Hook for listening to clicks outside of the target element. @@ -156,6 +157,7 @@ export { clickOutsideListener, useKeyboardShortcuts, isMounted, + TooltipListener, useWindowDimensions, usePrevious, } From f5650f1816405eed8d201450715279ce6b24d039 Mon Sep 17 00:00:00 2001 From: Nick Rayburn <52075362+nrayburn-tech@users.noreply.github.com> Date: Tue, 24 May 2022 20:21:01 -0500 Subject: [PATCH 009/188] Fix imports after merge conflict --- .../interfaces/Database/Pooling/ConnectionPooling.tsx | 4 ++-- .../Storage/StoragePolicies/StoragePoliciesBucketRow.js | 2 +- .../Storage/StoragePolicies/StoragePoliciesEditor.js | 2 +- .../Storage/StoragePolicies/StoragePoliciesPlaceholder.js | 2 +- .../Storage/StoragePolicies/StoragePoliciesReview.js | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx b/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx index 554ee0674f6..fce56c5dabe 100644 --- a/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx +++ b/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx @@ -4,7 +4,7 @@ import { Typography } from '@supabase/ui' import { useStore } from 'hooks' import { pluckObjectFields } from 'lib/helpers' import Loading from 'components/ui/Loading' -import Panel from 'components/to-be-cleaned/Panel' +import Panel from 'components/ui/Panel' import Divider from 'components/ui/Divider' import { AutoField } from 'uniforms-bootstrap4' import { API_URL } from 'lib/constants' @@ -215,4 +215,4 @@ export const PgbouncerConfig: FC = observer(({ projectRef, bouncerI
) -}) \ No newline at end of file +}) diff --git a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js index 5a711ed12bb..e426c63bee9 100644 --- a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js +++ b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js @@ -9,7 +9,7 @@ import { IconMoreVertical, } from '@supabase/ui' import { isEmpty } from 'lodash' -import Panel from 'components/to-be-cleaned/Panel' +import Panel from 'components/ui/Panel' const PolicyRow = ({ policy, diff --git a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js index 48a527dbb6c..c87c50c9a83 100644 --- a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js +++ b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js @@ -3,7 +3,7 @@ import { get } from 'lodash' import { STORAGE_CLIENT_LIBRARY_MAPPINGS } from '../Storage.constants' import { deriveAllowedClientLibraryMethods } from '../Storage.utils' -import SqlEditor from 'components/to-be-cleaned/SqlEditor' +import SqlEditor from 'components/ui/SqlEditor' import { PolicyName, PolicyRoles } from 'components/interfaces/Authentication/Policies/PolicyEditor' const PolicyDefinition = ({ definition = '', onUpdatePolicyDefinition = () => {} }) => { diff --git a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesPlaceholder.js b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesPlaceholder.js index d874c2336ca..721a723a88e 100644 --- a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesPlaceholder.js +++ b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesPlaceholder.js @@ -1,5 +1,5 @@ import { IconArchive } from '@supabase/ui' -import Panel from 'components/to-be-cleaned/Panel' +import Panel from 'components/ui/Panel' const StoragePoliciesPlaceholder = ({ guiHeight }) => ( { return ( From e3ce921cb0a0c7fb843e992836e56b1035264de6 Mon Sep 17 00:00:00 2001 From: YD Date: Wed, 25 May 2022 04:41:55 +0000 Subject: [PATCH 010/188] updates oauth logins img --- web/static/img/supabase-oauth-logins.png | Bin 105731 -> 97566 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/web/static/img/supabase-oauth-logins.png b/web/static/img/supabase-oauth-logins.png index 2e2aa3db2be8e18f84d314e071799af25ec857e7..29c000c455010507965b68e7a4144c9854c67bc2 100644 GIT binary patch literal 97566 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%0Apz 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໫>UPBl*<>vi= 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 z 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%0A)fC> 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 HUHN|ia)MwH From 9bc4fcc7f90539a037f47a02a88381737bf51907 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 26 May 2022 15:26:17 +0800 Subject: [PATCH 011/188] Resolve: https://sentry.io/organizations/supabase/issues/3256047662 --- studio/components/interfaces/Settings/Logs/LogEventChart.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/studio/components/interfaces/Settings/Logs/LogEventChart.tsx b/studio/components/interfaces/Settings/Logs/LogEventChart.tsx index d7a39fb4458..0e75648e455 100644 --- a/studio/components/interfaces/Settings/Logs/LogEventChart.tsx +++ b/studio/components/interfaces/Settings/Logs/LogEventChart.tsx @@ -21,6 +21,8 @@ const LogEventChart: React.FC = ({ data, onBarClick }) => { attribute="count" label="Events" onBarClick={(v: any) => { + if (!v) return + const timestamp = v.activePayload[0].payload.timestamp // 60s before onBarClick((Number(timestamp) + 60) * 1000 * 1000) From 58dfc02a7914332cda07a168c5b60751d4f712e9 Mon Sep 17 00:00:00 2001 From: dshukertjr <18113850+dshukertjr@users.noreply.github.com> Date: Fri, 27 May 2022 10:56:44 +0900 Subject: [PATCH 012/188] feat: replace hubspot api call with forms api --- .../functions/hubspot-notification/index.ts | 230 ++++++------------ 1 file changed, 72 insertions(+), 158 deletions(-) diff --git a/apps/www/supabase/functions/hubspot-notification/index.ts b/apps/www/supabase/functions/hubspot-notification/index.ts index aa1c18a981a..8eeb695922c 100644 --- a/apps/www/supabase/functions/hubspot-notification/index.ts +++ b/apps/www/supabase/functions/hubspot-notification/index.ts @@ -1,177 +1,91 @@ -import { serve } from 'https://deno.land/std@0.131.0/http/server.ts' +import { serve } from "https://deno.land/std@0.131.0/http/server.ts"; -const FUNCTION_SECRET = Deno.env.get('FUNCTION_SECRET') -const HUBSPOT_API_KEY = Deno.env.get('HUBSPOT_API_KEY') -const OWNER_ID = Deno.env.get('OWNER_ID') -const ENTERPRISE_PIPELINE = Deno.env.get('ENTERPRISE_PIPELINE') -const PARTNERS_PIPELINE = Deno.env.get('PARTNERS_PIPELINE') -const ENTERPRISE_DEAL_STAGE = Deno.env.get('ENTERPRISE_DEAL_STAGE') -const PARTNERS_DEAL_STAGE = Deno.env.get('PARTNERS_DEAL_STAGE') +const FUNCTION_SECRET = Deno.env.get("FUNCTION_SECRET"); +const HUBSPOT_PORTAL = Deno.env.get("HUBSPOT_PORTAL"); +const PARTNER_FORM_ID = Deno.env.get("PARTNER_FORM_ID"); +const ENTERPRISE_FORM_ID = Deno.env.get("ENTERPRISE_FORM_ID"); serve(async (req) => { - const requestSecret = req.headers.get('x-function-secret') + const requestSecret = req.headers.get("x-function-secret"); if (FUNCTION_SECRET !== requestSecret) { - return new Response('Unauthorized', { status: 401 }) + return new Response("Unauthorized", { status: 401 }); } - const input = await req.json() + const input = await req.json(); - const firstName = input.record.contact_first_name || input.record.first - const lastName = input.record.contact_last_name || input.record.last - const company = input.record.company_name || input.record.company - const email = input.record.contact_email || input.record.email - const phone = input.record.contact_phone || input.record.phone + const supabase_table_id = input.record.id; + const country = input.record.country; + const form_note = input.record.details; + const company = input.record.company_name || input.record.company; + const company_size = input.record.company_size || input.record.size; + const email = input.record.contact_email || input.record.email; + const phone = input.record.contact_phone || input.record.phone; + const lastName = input.record.contact_last_name || input.record.last; + const firstName = input.record.contact_first_name || input.record.first; + const jobtitle = input.record.title; + const website = input.record.website; + const partner_gallery_type = input.record.type; - const contactResponse = await fetch( - `https://api.hubapi.com/crm/v3/objects/contacts?hapikey=${HUBSPOT_API_KEY}`, + let formData: object = { + supabase_table_id, + country, + form_note, + company, + company_size, + email, + phone, + lastName, + firstName, + }; + + if (input.table === "partner_contacts") { + formData = { + ...formData, + jobtitle, + website, + partner_gallery_type, + }; + } + + const fields: { objectTypeId: "0-1"; name: string; value: string }[] = []; + for (const [key, value] of Object.entries(formData)) { + fields.push({ objectTypeId: "0-1", name: key, value: value }); + } + + const formId = input.table === "partner_contacts" + ? PARTNER_FORM_ID + : ENTERPRISE_FORM_ID; + + // Using HubSpot's submit data to a form API + // https://legacydocs.hubspot.com/docs/methods/forms/submit_form + const formResponse = await fetch( + `https://api.hsforms.com/submissions/v3/integration/submit/${HUBSPOT_PORTAL}/${formId}`, { - method: 'POST', + method: "POST", headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', + Accept: "application/json", + "Content-Type": "application/json", }, body: JSON.stringify({ - properties: { - company, - email, - firstname: firstName, - lastname: lastName, - phone, - }, + fields, }), - } - ) + }, + ); - const body = await contactResponse.json() + // Will create a deal using HubSpot's workflow tool instead of via API - let contactId: string | null = null - - if (contactResponse.ok) { - contactId = body.id - } else { - if (body.status === 'error' && body.category === 'CONFLICT') { - // fetch existing contact - const contactAssociateResponse = await fetch( - `https://api.hubapi.com/crm/v3/objects/contacts/${email}?idProperty=email&hapikey=${HUBSPOT_API_KEY}` - ) - - const body = await contactAssociateResponse.json() - - if (contactAssociateResponse.ok) { - contactId = body.id - } else { - console.log(`Failed to fetch contact`, body) - return new Response(`Failed to fetch contact`, { status: 500 }) - } - } else { - console.log(`Failed to create contact`, body) - return new Response(`Failed to create contact`, { status: 500 }) - } - } - - const noteContent = Object.entries(input.record).reduce( - (acc, [key, value]) => acc + `${key}: ${value || 'NOT_PROVIDED'}
`, - '' - ) - - // Add note - const noteResponse = await fetch( - `https://api.hubapi.com/crm/v3/objects/notes?hapikey=${HUBSPOT_API_KEY}`, - { - method: 'POST', - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - properties: { - hs_timestamp: Date.now(), - hs_note_body: noteContent, - hubspot_owner_id: OWNER_ID, - }, - }), - } - ) - - const noteBody = await noteResponse.json() - - if (!noteResponse.ok) { - console.log(`Failed to add note`, noteBody) - return new Response(`Failed to add note`, { status: 500 }) - } - - const noteId = noteBody.id - - // Associate note with contact - const noteAssociateResponse = await fetch( - `https://api.hubapi.com/crm/v3/objects/notes/${noteId}/associations/contacts/${contactId}/note_to_contact?hapikey=${HUBSPOT_API_KEY}`, - { - method: 'PUT', - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - } - ) - - if (!noteAssociateResponse.ok) { - console.log(`Failed to associate note`, await noteAssociateResponse.json()) - return new Response(`Failed to associate note`, { status: 500 }) - } - - // Create deal - const dealCloseDate = new Date() - dealCloseDate.setDate(dealCloseDate.getDate() + 28) // 28 days - - const dealResponse = await fetch( - `https://api.hubapi.com/crm/v3/objects/deals?hapikey=${HUBSPOT_API_KEY}`, - { - method: 'POST', - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - properties: { - closedate: dealCloseDate.toISOString(), - dealname: company || `${firstName} ${lastName}`, - dealstage: - input.table === 'enterprise_contacts' ? ENTERPRISE_DEAL_STAGE : PARTNERS_DEAL_STAGE, - hubspot_owner_id: OWNER_ID, - pipeline: input.table === 'enterprise_contacts' ? ENTERPRISE_PIPELINE : PARTNERS_PIPELINE, - }, - }), - } - ) - - const dealBody = await dealResponse.json() - - if (!dealResponse.ok) { - console.log(`Failed to create deal`, dealBody) - return new Response(`Failed to create deal: ` + dealBody.message, { status: 500 }) - } - - const dealId = dealBody.id - - // Associate contact with a deal - const dealAssociateResponse = await fetch( - `https://api.hubapi.com/crm/v3/objects/contacts/${contactId}/associations/deals/${dealId}/contact_to_deal?hapikey=${HUBSPOT_API_KEY}`, - { - method: 'PUT', - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - } - ) - - if (!dealAssociateResponse.ok) { - console.log(`Failed to associate contact with deal`, await dealAssociateResponse.json()) - return new Response(`Failed to associate contact with deal`, { status: 500 }) + if (!formResponse.ok) { + console.log( + `Failed to submit form data to HubSpot`, + await formResponse.json(), + ); + return new Response(`Failed to submit form data to HubSpot`, { + status: 500, + }); } return new Response(JSON.stringify({ done: true }), { - headers: { 'Content-Type': 'application/json' }, - }) -}) + headers: { "Content-Type": "application/json" }, + }); +}); From 7fb43171f43b4cdd34579d321060b8aad7f2e421 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Mon, 30 May 2022 19:06:16 +1000 Subject: [PATCH 013/188] Adds some differnces between local and platform fix: https://github.com/supabase/supabase/issues/6965 --- web/docs/guides/local-development.mdx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/web/docs/guides/local-development.mdx b/web/docs/guides/local-development.mdx index c6c5a6eba8c..ec99bbdb8e2 100644 --- a/web/docs/guides/local-development.mdx +++ b/web/docs/guides/local-development.mdx @@ -234,8 +234,21 @@ supabase db push ### Deploying Edge Functions -Coming soon! +You can deploy any Edge Functions using [`functions deploy`](/docs/reference/cli/supabase-functions-deploy): +```sh +supabase functions deploy +``` + +## Limitations + +The local development environment is not as feature-complete as the Plaform. Here are some of the differences: + +- The Storage interface is coming soon. +- The Functions interface is coming soon. +- Logs are not supported though the interface (however you can accesss them via the docker containers). +- You cannot update your project settings via the Dashboard - this can be done using the CLI instead. + ## Next steps - Got a question? [Ask in our Discussions](https://github.com/supabase/supabase/discussions). From 5a58500b952c6f7007c677980e1a1a81376b757a Mon Sep 17 00:00:00 2001 From: dshukertjr <18113850+dshukertjr@users.noreply.github.com> Date: Mon, 30 May 2022 18:54:11 +0900 Subject: [PATCH 014/188] fix: run prettier --- .../functions/hubspot-notification/index.ts | 77 +++++++++---------- 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/apps/www/supabase/functions/hubspot-notification/index.ts b/apps/www/supabase/functions/hubspot-notification/index.ts index 8eeb695922c..e26d917cfee 100644 --- a/apps/www/supabase/functions/hubspot-notification/index.ts +++ b/apps/www/supabase/functions/hubspot-notification/index.ts @@ -1,31 +1,31 @@ -import { serve } from "https://deno.land/std@0.131.0/http/server.ts"; +import { serve } from 'https://deno.land/std@0.131.0/http/server.ts' -const FUNCTION_SECRET = Deno.env.get("FUNCTION_SECRET"); -const HUBSPOT_PORTAL = Deno.env.get("HUBSPOT_PORTAL"); -const PARTNER_FORM_ID = Deno.env.get("PARTNER_FORM_ID"); -const ENTERPRISE_FORM_ID = Deno.env.get("ENTERPRISE_FORM_ID"); +const FUNCTION_SECRET = Deno.env.get('FUNCTION_SECRET') +const HUBSPOT_PORTAL = Deno.env.get('HUBSPOT_PORTAL') +const PARTNER_FORM_ID = Deno.env.get('PARTNER_FORM_ID') +const ENTERPRISE_FORM_ID = Deno.env.get('ENTERPRISE_FORM_ID') serve(async (req) => { - const requestSecret = req.headers.get("x-function-secret"); + const requestSecret = req.headers.get('x-function-secret') if (FUNCTION_SECRET !== requestSecret) { - return new Response("Unauthorized", { status: 401 }); + return new Response('Unauthorized', { status: 401 }) } - const input = await req.json(); + const input = await req.json() - const supabase_table_id = input.record.id; - const country = input.record.country; - const form_note = input.record.details; - const company = input.record.company_name || input.record.company; - const company_size = input.record.company_size || input.record.size; - const email = input.record.contact_email || input.record.email; - const phone = input.record.contact_phone || input.record.phone; - const lastName = input.record.contact_last_name || input.record.last; - const firstName = input.record.contact_first_name || input.record.first; - const jobtitle = input.record.title; - const website = input.record.website; - const partner_gallery_type = input.record.type; + const supabase_table_id = input.record.id + const country = input.record.country + const form_note = input.record.details + const company = input.record.company_name || input.record.company + const company_size = input.record.company_size || input.record.size + const email = input.record.contact_email || input.record.email + const phone = input.record.contact_phone || input.record.phone + const lastName = input.record.contact_last_name || input.record.last + const firstName = input.record.contact_first_name || input.record.first + const jobtitle = input.record.title + const website = input.record.website + const partner_gallery_type = input.record.type let formData: object = { supabase_table_id, @@ -37,55 +37,50 @@ serve(async (req) => { phone, lastName, firstName, - }; + } - if (input.table === "partner_contacts") { + if (input.table === 'partner_contacts') { formData = { ...formData, jobtitle, website, partner_gallery_type, - }; + } } - const fields: { objectTypeId: "0-1"; name: string; value: string }[] = []; + const fields: { objectTypeId: '0-1'; name: string; value: string }[] = [] for (const [key, value] of Object.entries(formData)) { - fields.push({ objectTypeId: "0-1", name: key, value: value }); + fields.push({ objectTypeId: '0-1', name: key, value: value }) } - const formId = input.table === "partner_contacts" - ? PARTNER_FORM_ID - : ENTERPRISE_FORM_ID; + const formId = input.table === 'partner_contacts' ? PARTNER_FORM_ID : ENTERPRISE_FORM_ID // Using HubSpot's submit data to a form API // https://legacydocs.hubspot.com/docs/methods/forms/submit_form const formResponse = await fetch( `https://api.hsforms.com/submissions/v3/integration/submit/${HUBSPOT_PORTAL}/${formId}`, { - method: "POST", + method: 'POST', headers: { - Accept: "application/json", - "Content-Type": "application/json", + Accept: 'application/json', + 'Content-Type': 'application/json', }, body: JSON.stringify({ fields, }), - }, - ); + } + ) // Will create a deal using HubSpot's workflow tool instead of via API if (!formResponse.ok) { - console.log( - `Failed to submit form data to HubSpot`, - await formResponse.json(), - ); + console.log(`Failed to submit form data to HubSpot`, await formResponse.json()) return new Response(`Failed to submit form data to HubSpot`, { status: 500, - }); + }) } return new Response(JSON.stringify({ done: true }), { - headers: { "Content-Type": "application/json" }, - }); -}); + headers: { 'Content-Type': 'application/json' }, + }) +}) From 8b207e52dcf3549fbebf0c4a6f6f584d83cc202a Mon Sep 17 00:00:00 2001 From: Animesh Pathak <53110238+Sonichigo@users.noreply.github.com> Date: Tue, 31 May 2022 11:31:26 +0530 Subject: [PATCH 015/188] Fixed --- web/spec/supabase.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/spec/supabase.yml b/web/spec/supabase.yml index 18f3607fe01..e0303365f62 100644 --- a/web/spec/supabase.yml +++ b/web/spec/supabase.yml @@ -1391,7 +1391,7 @@ pages: .on('UPDATE', handleRecordUpdated) .subscribe() ``` - **Note** ``eq`` is a filter that can return events that match the filter, but as of now only works with Integers + **Note** ``eq`` is a filter that can return events that match the filter. removeSubscription(): title: 'removeSubscription()' From a160b18624af08898fb52b0e84a0aee81d799f27 Mon Sep 17 00:00:00 2001 From: Rohan Deb Sarkar Date: Tue, 31 May 2022 17:04:37 +0530 Subject: [PATCH 016/188] Update `Investors.tsx` --- apps/www/data/Investors.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/www/data/Investors.tsx b/apps/www/data/Investors.tsx index 5c07bf3cfd6..a149f1efb4a 100644 --- a/apps/www/data/Investors.tsx +++ b/apps/www/data/Investors.tsx @@ -1,6 +1,6 @@ type Investor = { name: string - round: 'SEED' | 'A' + round: 'SEED' | 'A' | 'B' title: string img: string lead: boolean @@ -36,6 +36,15 @@ const data: Investor[] = [ twitter: null, linkedIn: null, }, + { + name: 'Felicis', + round: 'B', + title: 'Felicis', + img: '/images/logos/felicis.png', + lead: true, + twitter: null, + linkedIn: null, + }, { name: 'Tom Preston-Werner', round: 'A', From 709f100ee0a4b8809b18b087a37f1b2f19c7d37f Mon Sep 17 00:00:00 2001 From: Rohan Deb Sarkar Date: Tue, 31 May 2022 17:07:56 +0530 Subject: [PATCH 017/188] Update `company.tsx` --- apps/www/pages/company.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/pages/company.tsx b/apps/www/pages/company.tsx index d53bc0720e6..a1a0d716e5f 100644 --- a/apps/www/pages/company.tsx +++ b/apps/www/pages/company.tsx @@ -247,7 +247,7 @@ const Investors = () => { <>

- We've raised over $36 million in funding, backed by some of the world's leading + We've raised over $116 million in funding, backed by some of the world's leading investors.

From 05091312503fee73d2385ac0aec86c9cf9e9eba2 Mon Sep 17 00:00:00 2001 From: rohandebsarkar Date: Tue, 31 May 2022 17:27:07 +0530 Subject: [PATCH 018/188] Adjust size --- apps/www/pages/company.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/pages/company.tsx b/apps/www/pages/company.tsx index a1a0d716e5f..3fc9c95c4d9 100644 --- a/apps/www/pages/company.tsx +++ b/apps/www/pages/company.tsx @@ -256,7 +256,7 @@ const Investors = () => { />
-
+
{InvestorData.filter((x) => x.lead === true).map((x) => (
Date: Tue, 31 May 2022 18:54:02 +0530 Subject: [PATCH 019/188] Add new funding article by TechCrunch --- apps/www/data/Press.ts | 6 ++++++ apps/www/pages/company.tsx | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/www/data/Press.ts b/apps/www/data/Press.ts index 771acc990f7..43f1e2aeb27 100644 --- a/apps/www/data/Press.ts +++ b/apps/www/data/Press.ts @@ -6,6 +6,12 @@ type PressItem = { } const data: PressItem[] = [ + { + type: 'article', + href: 'https://techcrunch.com/2022/05/10/supabase-raises-80m-series-b-for-its-open-source-firebase-alternative/', + title: 'Supabase raises $80M Series B for its open source Firebase alternative', + publisher: 'TechCrunch', + }, { type: 'article', href: 'https://techcrunch.com/2021/09/09/supabase-raises-30m-for-its-open-source-insta-backend', diff --git a/apps/www/pages/company.tsx b/apps/www/pages/company.tsx index 3fc9c95c4d9..7563952bb65 100644 --- a/apps/www/pages/company.tsx +++ b/apps/www/pages/company.tsx @@ -311,7 +311,7 @@ const Press = () => {
-
+
{PressData.filter((x) => x.type == 'article').map((x) => ( From 21d6c8fd3b1065616d18ab69b9c9091de63fb995 Mon Sep 17 00:00:00 2001 From: Isaiah Hamilton <70828596+Isaiah-Hamilton@users.noreply.github.com> Date: Tue, 31 May 2022 12:27:58 -0400 Subject: [PATCH 020/188] chore: revert "add npm and yarn tabs" This reverts commit babec26f7ecd6d3e7c1d5ab633b8e06d4c2883ad. --- web/docs/guides/with-angular.mdx | 36 ------------ web/docs/guides/with-expo.mdx | 42 ++------------ web/docs/guides/with-ionic-angular.mdx | 56 ------------------- web/docs/guides/with-ionic-react.mdx | 38 ------------- web/docs/guides/with-ionic-vue.mdx | 56 ------------------- web/docs/guides/with-nextjs.mdx | 36 ------------ web/docs/guides/with-react.mdx | 57 +------------------ web/docs/guides/with-solidjs.mdx | 36 ------------ web/docs/guides/with-svelte.mdx | 76 +------------------------- web/docs/guides/with-sveltekit.mdx | 55 ------------------- web/docs/guides/with-vue-3.mdx | 56 ------------------- 11 files changed, 8 insertions(+), 536 deletions(-) diff --git a/web/docs/guides/with-angular.mdx b/web/docs/guides/with-angular.mdx index c8fd74e257d..85813443df4 100644 --- a/web/docs/guides/with-angular.mdx +++ b/web/docs/guides/with-angular.mdx @@ -167,28 +167,10 @@ cd supabase-angular Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in the `environment.ts` file. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). These variables will be exposed on the browser, and that's completely fine since we have [Row Level Security](/docs/guides/auth#row-level-security) enabled on our Database. @@ -475,28 +457,10 @@ export class AppComponent implements OnInit { Once that's done, run this in a terminal window: - - - ```bash npm run start ``` - - - -```bash -yarn start -``` - - - - And then open the browser to [localhost:4200](http://localhost:4200) and you should see the completed app. diff --git a/web/docs/guides/with-expo.mdx b/web/docs/guides/with-expo.mdx index 97131643fd0..c21df8f75e0 100644 --- a/web/docs/guides/with-expo.mdx +++ b/web/docs/guides/with-expo.mdx @@ -153,28 +153,14 @@ cd supabaseReactNative Then let's install the additional dependencies: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash -npm install @supabase/supabase-js react-native-elements react-native-safe-area-context @react-native-async-storage/async-storage react-native-url-polyfill +yarn add @supabase/supabase-js +yarn add react-native-elements +yarn add react-native-safe-area-context +yarn add @react-native-async-storage/async-storage +yarn add react-native-url-polyfill ``` - - - -```bash -yarn add @supabase/supabase-js react-native-elements react-native-safe-area-context @react-native-async-storage/async-storage react-native-url-polyfill -``` - - - - Now let's create a helper file to initialize the Supabase client. We need the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). These variables will be exposed on the browser, and that's completely fine since we have @@ -453,28 +439,10 @@ export default function App() { Once that's done, run this in a terminal window: - - - -```bash -npm run start -``` - - - - ```bash yarn start ``` - - - And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. ## Bonus: Profile photos diff --git a/web/docs/guides/with-ionic-angular.mdx b/web/docs/guides/with-ionic-angular.mdx index dde8870916f..0db3b062917 100644 --- a/web/docs/guides/with-ionic-angular.mdx +++ b/web/docs/guides/with-ionic-angular.mdx @@ -160,56 +160,18 @@ Let's start building the Angular app from scratch. We can use the [Ionic CLI](https://ionicframework.com/docs/cli) to initialize an app called `supabase-ionic-angular`: - - - ```bash npm install -g @ionic/cli ionic start supabase-ionic-angular blank --type angular cd supabase-ionic-angular ``` - - - -```bash -yarn add -g @ionic/cli -ionic start supabase-ionic-angular blank --type angular -cd supabase-ionic-angular -``` - - - - Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in the `environment.ts` file. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). These variables will be exposed on the browser, and that's completely fine since we have [Row Level Security](/docs/guides/auth#row-level-security) enabled on our Database. @@ -573,28 +535,10 @@ Let's create an avatar for the user so that they can upload a profile photo. First install two packages in order to interact with the user's camera. - - - ```bash npm install @ionic/pwa-elements @capacitor/camera ``` - - - -```bash -yarn add @ionic/pwa-elements @capacitor/camera -``` - - - - [CapacitorJS](https://capacitorjs.com) is a cross platform native runtime from Ionic that enables web apps to be deployed through the app store and provides access to native deavice API. Ionic PWA elements is a companion package that will polyfill certain browser APIs that provide no user interface with custom Ionic UI. diff --git a/web/docs/guides/with-ionic-react.mdx b/web/docs/guides/with-ionic-react.mdx index a04a9f92648..15d8d0950f9 100644 --- a/web/docs/guides/with-ionic-react.mdx +++ b/web/docs/guides/with-ionic-react.mdx @@ -160,56 +160,18 @@ Let's start building the React app from scratch. We can use the [Ionic CLI](https://ionicframework.com/docs/cli) to initialize an app called `supabase-ionic-react`: - - - ```bash npm install -g @ionic/cli ionic start supabase-ionic-react blank --type react cd supabase-ionic-react ``` - - - -```bash -yarn add -g @ionic/cli -ionic start supabase-ionic-react blank --type react -cd supabase-ionic-react -``` - - - - Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env`. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). diff --git a/web/docs/guides/with-ionic-vue.mdx b/web/docs/guides/with-ionic-vue.mdx index b2d1ef7c7ad..05a60fb475c 100644 --- a/web/docs/guides/with-ionic-vue.mdx +++ b/web/docs/guides/with-ionic-vue.mdx @@ -160,56 +160,18 @@ Let's start building the Vue app from scratch. We can use the [Ionic CLI](https://ionicframework.com/docs/cli) to initialize an app called `supabase-ionic-vue`: - - - ```bash npm install -g @ionic/cli ionic start supabase-ionic-vue blank --type vue cd supabase-ionic-vue ``` - - - -```bash -yarn add -g @ionic/cli -ionic start supabase-ionic-vue blank --type vue -cd supabase-ionic-vue -``` - - - - Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env`. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). @@ -587,28 +549,10 @@ Every Supabase project is configured with [Storage](/docs/guides/storage) for ma First install two packages in order to interact with the user's camera. - - - ```bash npm install @ionic/pwa-elements @capacitor/camera ``` - - - -```bash -yarn add @ionic/pwa-elements @capacitor/camera -``` - - - - [CapacitorJS](https://capacitorjs.com) is a cross platform native runtime from Ionic that enables web apps to be deployed through the app store and provides access to native deavice API. Ionic PWA elements is a companion package that will polyfill certain browser APIs that provide no user interface with custom Ionic UI. diff --git a/web/docs/guides/with-nextjs.mdx b/web/docs/guides/with-nextjs.mdx index f12a79fd8eb..55455c1a7e4 100644 --- a/web/docs/guides/with-nextjs.mdx +++ b/web/docs/guides/with-nextjs.mdx @@ -177,28 +177,10 @@ cd supabase-nextjs Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env.local`. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). @@ -434,28 +416,10 @@ export default function Home() { Once that's done, run this in a terminal window: - - - ```bash npm run dev ``` - - - -```bash -yarn dev -``` - - - - And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. diff --git a/web/docs/guides/with-react.mdx b/web/docs/guides/with-react.mdx index cf82aa974cb..d59a74686e8 100644 --- a/web/docs/guides/with-react.mdx +++ b/web/docs/guides/with-react.mdx @@ -167,54 +167,17 @@ Let's start building the React app from scratch. We can use [Create React App](https://create-react-app.dev/docs/getting-started/) to initialize an app called `supabase-react`: - - - ```bash npx create-react-app supabase-react --use-npm cd supabase-react ``` - - - -```bash -npx create-react-app supabase-react -cd supabase-react -``` - - - - Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env`. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). @@ -444,28 +407,10 @@ export default function App() { Once that's done, run this in a terminal window: - - - ```bash npm start ``` - - - -```bash -yarn start -``` - - - - And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. ![Supabase React](/img/supabase-react-demo.png) @@ -476,7 +421,7 @@ Every Supabase project is configured with [Storage](/docs/guides/storage) for ma ### Add @reach/visually-hidden -The upload widget uses one additional npm library. You can install it like so: `npm install @reach/visually-hidden` or `yarn add @reach/visually-hidden`. +The upload widget uses one additional npm library. You can install it like so: `npm install @reach/visually-hidden`. ### Create an upload widget diff --git a/web/docs/guides/with-solidjs.mdx b/web/docs/guides/with-solidjs.mdx index cc5b32aeb98..bd54f96c916 100644 --- a/web/docs/guides/with-solidjs.mdx +++ b/web/docs/guides/with-solidjs.mdx @@ -173,28 +173,10 @@ cd supabase-solid Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env`. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). @@ -425,28 +407,10 @@ export default () => { Once that's done, run this in a terminal window: - - - ```bash npm start ``` - - - -```bash -yarn start -``` - - - - And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. ![Supabase SolidJS](/img/supabase-solidjs-demo.png) diff --git a/web/docs/guides/with-svelte.mdx b/web/docs/guides/with-svelte.mdx index db36791555d..5eea641007b 100644 --- a/web/docs/guides/with-svelte.mdx +++ b/web/docs/guides/with-svelte.mdx @@ -159,28 +159,10 @@ cd supabase-svelte Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env`. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). @@ -192,52 +174,16 @@ SVELTE_APP_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY Our app is almost functional, to make svelte work with supabase and .env files we first need to change the `rollup.config.js` file a bit. Supabase imports `json` files, to convert .json files to ES6 modules we need the `@rollup/plugin-json` install it by running: - - - ```bash -npm install --save-dev @rollup/plugin-json + npm install --save-dev @rollup/plugin-json ``` - - - -```bash -yarn add --save-dev @rollup/plugin-json -``` - - - - Furthermore, to use the .env with svelte we need another rollup plugin. Install: - - - ```bash -npm install --save-dev dotenv @rollup/plugin-replace + npm install --save-dev dotenv @rollup/plugin-replace ``` - - - -```bash -yarn add --save-dev dotenv @rollup/plugin-replace -``` - - - - and add these plugins to the `rollup.config.js` file. ```js title="rollup.config.js" @@ -475,28 +421,10 @@ Now that we have all the components in place, let's update `App.svelte`: Once that's done, run this in a terminal window: - - - ```bash npm run dev ``` - - - -```bash -yarn dev -``` - - - - And then open the browser to [localhost:5000](http://localhost:5000) and you should see the completed app. > ⚠️ WARNING: Svelte uses by default `port 5000`, Supabase uses `port 3000`. To change the redirection port for supabase go to: `Authentication > Settings` and change the `Site Url` to `localhost:5000` diff --git a/web/docs/guides/with-sveltekit.mdx b/web/docs/guides/with-sveltekit.mdx index 677d5526e1b..54e29557966 100644 --- a/web/docs/guides/with-sveltekit.mdx +++ b/web/docs/guides/with-sveltekit.mdx @@ -153,54 +153,17 @@ Let's start building the Svelte app from scratch. We can use the [SvelteKit Skeleton Project](https://kit.svelte.dev/docs) to initialize an app called `supabase-sveltekit`: - - - ```bash npm init svelte@next supabase-sveltekit cd supabase-sveltekit ``` - - - -```bash -yarn init svelte@next supabase-sveltekit -cd supabase-sveltekit -``` - - - - Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env`. All we need are the `SUPABASE_URL` and the `SUPABASE_KEY` key that you copied [earlier](#get-the-api-keys). @@ -421,28 +384,10 @@ Now that we have all the components in place, let's update `src/routes/index.sve Once that's done, run this in a terminal window: - - - ```bash npm run dev ``` - - - -```bash -yarn dev -``` - - - - And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. > ⚠️ WARNING: Svelte uses by default `port 5000`, Supabase uses `port 3000`. To change the redirection port for supabase go to: `Authentication > Settings` and change the `Site Url` to `localhost:5000` diff --git a/web/docs/guides/with-vue-3.mdx b/web/docs/guides/with-vue-3.mdx index ff3d51ca259..ca13fb64eee 100644 --- a/web/docs/guides/with-vue-3.mdx +++ b/web/docs/guides/with-vue-3.mdx @@ -152,14 +152,6 @@ Let's start building the Vue 3 app from scratch. We can quickly use [Vite with Vue 3 Template](https://vitejs.dev/guide/#scaffolding-your-first-vite-project) to initialize an app called `supabase-vue-3`: - - - ```bash # npm 6.x npm init @vitejs/app supabase-vue-3 --template vue @@ -170,42 +162,12 @@ npm init @vitejs/app supabase-vue-3 -- --template vue cd supabase-vue-3 ``` - - - -```bash -yarn init @vitejs/app supabase-vue-3 --template vue - -cd supabase-vue-3 -``` - - - - Then let's install the only additional dependency: [supabase-js](https://github.com/supabase/supabase-js) - - - ```bash npm install @supabase/supabase-js ``` - - - -```bash -yarn add @supabase/supabase-js -``` - - - - And finally we want to save the environment variables in a `.env`. All we need are the API URL and the `anon` key that you copied [earlier](#get-the-api-keys). @@ -487,28 +449,10 @@ export default { Once that's done, run this in a terminal window: - - - ```bash npm run dev ``` - - - -```bash -yarn dev -``` - - - - And then open the browser to [localhost:3000](http://localhost:3000) and you should see the completed app. ![Supabase Vue 3](/img/supabase-vue-3-demo.png) From e392a09ae50d67c94a76c30c6de803714e664c48 Mon Sep 17 00:00:00 2001 From: Luke Bechtel Date: Tue, 31 May 2022 13:45:58 -0400 Subject: [PATCH 021/188] Change name of "read access to everyone" policy to be more accurate. --- .../Policies/PolicyEditorModal/PolicyEditorModal.constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/studio/components/interfaces/Authentication/Policies/PolicyEditorModal/PolicyEditorModal.constants.ts b/studio/components/interfaces/Authentication/Policies/PolicyEditorModal/PolicyEditorModal.constants.ts index 990ad6e0a5e..abb39491cce 100644 --- a/studio/components/interfaces/Authentication/Policies/PolicyEditorModal/PolicyEditorModal.constants.ts +++ b/studio/components/interfaces/Authentication/Policies/PolicyEditorModal/PolicyEditorModal.constants.ts @@ -26,7 +26,7 @@ ON ${schema}.${table} FOR SELECT USING ( true );`.trim(), - name: 'Enable access to all users', + name: 'Enable read access to all users', definition: 'true', check: '', command: 'SELECT', From 1cbd19174b309311c54da246ec5b2e22728b36fc Mon Sep 17 00:00:00 2001 From: Isaiah Hamilton <70828596+Isaiah-Hamilton@users.noreply.github.com> Date: Tue, 31 May 2022 20:48:51 -0400 Subject: [PATCH 022/188] chore: update footer ui --- apps/temp-docs/components/Footer.tsx | 48 +++++++++++++++++----------- apps/temp-docs/data/footer.json | 8 ++--- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/apps/temp-docs/components/Footer.tsx b/apps/temp-docs/components/Footer.tsx index 01b64edd282..3e45bdb567f 100644 --- a/apps/temp-docs/components/Footer.tsx +++ b/apps/temp-docs/components/Footer.tsx @@ -1,4 +1,3 @@ -import { Typography } from '@supabase/ui' import Link from 'next/link' import footer from '../data/footer.json' import { useTheme } from './Providers' @@ -16,7 +15,7 @@ const Footer = () => {
- + {
- + Twitter - + GitHub Discord @@ -60,6 +68,7 @@ const Footer = () => { Youtube @@ -78,21 +87,22 @@ const Footer = () => { diff --git a/apps/temp-docs/data/footer.json b/apps/temp-docs/data/footer.json index e79f7497c06..fec05bdd3d1 100644 --- a/apps/temp-docs/data/footer.json +++ b/apps/temp-docs/data/footer.json @@ -4,7 +4,7 @@ "links": [ { "text": "Blog", - "url": "https://supabase.com/blog" + "url": "/blog" }, { "text": "Open Source", @@ -25,7 +25,7 @@ "links": [ { "text": "Brand Assets", - "url": "https://supabase.com/brand-assets" + "url": "/brand-assets" }, { "text": "Docs", @@ -33,7 +33,7 @@ }, { "text": "Pricing", - "url": "https://supabase.com/pricing" + "url": "/pricing" }, { "text": "Support", @@ -62,7 +62,7 @@ }, { "text": "RSS", - "url": "https://supabase.com/rss.xml" + "url": "/rss.xml" }, { "text": "Discord", From 5d494141ffb7a33d3a95a0c73f8add2760082172 Mon Sep 17 00:00:00 2001 From: Isaiah Hamilton <70828596+Isaiah-Hamilton@users.noreply.github.com> Date: Tue, 31 May 2022 21:05:02 -0400 Subject: [PATCH 023/188] chore: rename tailwind.css to main.css --- apps/temp-community-forum/src/pages/_app.tsx | 2 +- apps/temp-community-tutorials/src/pages/_app.tsx | 2 +- apps/temp-docs/pages/_app.tsx | 2 +- apps/temp-docs/styles/{tailwind.css => main.css} | 4 ++++ 4 files changed, 7 insertions(+), 3 deletions(-) rename apps/temp-docs/styles/{tailwind.css => main.css} (80%) diff --git a/apps/temp-community-forum/src/pages/_app.tsx b/apps/temp-community-forum/src/pages/_app.tsx index 2d0cd5807e9..9e7c3835d77 100644 --- a/apps/temp-community-forum/src/pages/_app.tsx +++ b/apps/temp-community-forum/src/pages/_app.tsx @@ -1,6 +1,6 @@ import React from 'react' import Main from '.' -import '../styles/tailwind.css' +import '../styles/main.css' const Index = () => { return
diff --git a/apps/temp-community-tutorials/src/pages/_app.tsx b/apps/temp-community-tutorials/src/pages/_app.tsx index 2d0cd5807e9..9e7c3835d77 100644 --- a/apps/temp-community-tutorials/src/pages/_app.tsx +++ b/apps/temp-community-tutorials/src/pages/_app.tsx @@ -1,6 +1,6 @@ import React from 'react' import Main from '.' -import '../styles/tailwind.css' +import '../styles/main.css' const Index = () => { return
diff --git a/apps/temp-docs/pages/_app.tsx b/apps/temp-docs/pages/_app.tsx index c320ed68e31..227ea70b7a0 100644 --- a/apps/temp-docs/pages/_app.tsx +++ b/apps/temp-docs/pages/_app.tsx @@ -1,7 +1,7 @@ import React from 'react' import type { AppProps } from 'next/app' import { ThemeProvider } from '../components/Providers' -import '../styles/tailwind.css' +import '../styles/main.css' function MyApp({ Component, pageProps }: AppProps) { return ( diff --git a/apps/temp-docs/styles/tailwind.css b/apps/temp-docs/styles/main.css similarity index 80% rename from apps/temp-docs/styles/tailwind.css rename to apps/temp-docs/styles/main.css index 10ab1376922..ebe6a15f652 100644 --- a/apps/temp-docs/styles/tailwind.css +++ b/apps/temp-docs/styles/main.css @@ -10,3 +10,7 @@ body { background-color: #6ee7b7; color: #333 !important; } + +.thin-scrollbar { + scrollbar-width: thin; +} From 63c1ec649709842c138e84be9b6daf23c2ad97ed Mon Sep 17 00:00:00 2001 From: Isaiah Hamilton <70828596+Isaiah-Hamilton@users.noreply.github.com> Date: Tue, 31 May 2022 21:59:24 -0400 Subject: [PATCH 024/188] chore: update sidebar ui --- apps/temp-docs/components/nav/SideBar.tsx | 69 +++++++++++------------ apps/temp-docs/styles/Home.module.css | 15 ----- 2 files changed, 32 insertions(+), 52 deletions(-) diff --git a/apps/temp-docs/components/nav/SideBar.tsx b/apps/temp-docs/components/nav/SideBar.tsx index 227bec9256a..4a6622409ad 100644 --- a/apps/temp-docs/components/nav/SideBar.tsx +++ b/apps/temp-docs/components/nav/SideBar.tsx @@ -1,60 +1,55 @@ import { Menu } from '@supabase/ui' import Link from 'next/link' import { useRouter } from 'next/router' -import styles from '../../styles/Home.module.css' -import ThemeToggle from '../ThemeToggle' const SideBar = ({ menuItems }: { menuItems: any }) => { const { asPath } = useRouter() return ( -
+
{Object.keys(menuItems).map((key) => { return (
- {menuItems[key].map((item: { link: string; text: string; sections: Array }) => ( - - {Array.isArray(item.sections) ? ( - <> - - {item.sections.map((section) => ( - + {menuItems[key].map( + (item: { link: string; text: string; sections: Array }) => ( + + {Array.isArray(item.sections) ? ( + <> + + {item.sections.map((section) => ( + + + + {section.text} + + + + ))} + + ) : ( + + - {section.text} + {item.text} - - ))} - - ) : ( - - - - {item.text} - - - - )} - - ))} + + + )} + + ) + )}
) })}
-
- - - -
) diff --git a/apps/temp-docs/styles/Home.module.css b/apps/temp-docs/styles/Home.module.css index 3a4ada61b1c..6d7be21e752 100644 --- a/apps/temp-docs/styles/Home.module.css +++ b/apps/temp-docs/styles/Home.module.css @@ -124,18 +124,3 @@ flex-direction: column; } } - -.navbar { - height: 60px; -} -.sidebar { - width: 300px; -} - -.navLinks li { - margin-left: 2.5em; -} -.navRight > * { - margin-left: 1em; - margin-right: 1em; -} From 81def21306741cb32da6271bf1d120aca1b06174 Mon Sep 17 00:00:00 2001 From: Isaiah Hamilton <70828596+Isaiah-Hamilton@users.noreply.github.com> Date: Tue, 31 May 2022 22:43:16 -0400 Subject: [PATCH 025/188] chore: update linkCard ui --- apps/temp-docs/components/LinkCard.tsx | 31 +++++++++++++++----------- apps/temp-docs/styles/main.css | 4 ++++ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/apps/temp-docs/components/LinkCard.tsx b/apps/temp-docs/components/LinkCard.tsx index 664876d0673..8d2edcd90b1 100644 --- a/apps/temp-docs/components/LinkCard.tsx +++ b/apps/temp-docs/components/LinkCard.tsx @@ -1,27 +1,32 @@ +import Link from 'next/link' import { ReactElement } from 'react' export default function LinkCard({ title, description, icon, + link, }: { title: string description: string icon: ReactElement + link: string }) { return ( -
- {description ? ( - <> -

{title}

-

{description}

- - ) : ( -
- {icon} -

{title}

-
- )} -
+ + + {description ? ( + <> +

{title}

+

{description}

+ + ) : ( +
+ {icon} +

{title}

+
+ )} +
+ ) } diff --git a/apps/temp-docs/styles/main.css b/apps/temp-docs/styles/main.css index ebe6a15f652..e9228cb9acf 100644 --- a/apps/temp-docs/styles/main.css +++ b/apps/temp-docs/styles/main.css @@ -11,6 +11,10 @@ body { color: #333 !important; } +a { + text-decoration: none !important; +} + .thin-scrollbar { scrollbar-width: thin; } From 6877887cb74f98c3d0bf71f61a6edfdb76d33a68 Mon Sep 17 00:00:00 2001 From: Isaiah Hamilton <70828596+Isaiah-Hamilton@users.noreply.github.com> Date: Tue, 31 May 2022 20:31:26 -0400 Subject: [PATCH 026/188] chore: update navbar ui chore: update navbar ui --- apps/temp-docs/components/ThemeToggle.tsx | 9 ++++-- apps/temp-docs/components/nav/NavBar.tsx | 39 ++++++++++++----------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/apps/temp-docs/components/ThemeToggle.tsx b/apps/temp-docs/components/ThemeToggle.tsx index f188036c825..fc88fd28ef4 100644 --- a/apps/temp-docs/components/ThemeToggle.tsx +++ b/apps/temp-docs/components/ThemeToggle.tsx @@ -13,9 +13,12 @@ function DarkModeToggle() { } return ( - ) } diff --git a/apps/temp-docs/components/nav/NavBar.tsx b/apps/temp-docs/components/nav/NavBar.tsx index 85a1b12b900..1e22048f779 100644 --- a/apps/temp-docs/components/nav/NavBar.tsx +++ b/apps/temp-docs/components/nav/NavBar.tsx @@ -10,8 +10,8 @@ import { } from '@supabase/ui' import Image from 'next/image' import Link from 'next/link' -import styles from '../../styles/Home.module.css' import { useTheme } from '../Providers' +import ThemeToggle from '../ThemeToggle' const NavBar = ({ currentPage }: { currentPage: string }) => { const [mounted, setMounted] = useState(false) @@ -32,16 +32,14 @@ const NavBar = ({ currentPage }: { currentPage: string }) => { ] return ( -