Fixes for www.

This commit is contained in:
Ivan Vasilov committed 2025-12-15 13:55:14 +01:00
1 parent f83e54dbbf
commit 5fe10a1594
29 files changed
+130 -131

No files matched your search

@@ -1,12 +1,12 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import SectionContainer from '~/components/Layouts/SectionContainer'
import UsersGrowthChart from '~/components/UsersGrowthChart'
interface Props {
id: string
heading: string | JSX.Element
subheading: string | JSX.Element
heading: string | ReactElement
subheading: string | ReactElement
highlights: Highlight[]
}
+8 -8
View File
@@ -1,14 +1,14 @@
import React, { FC } from 'react'
import { TextLink } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
import type { LucideIcon } from 'lucide-react'
import { FC, ReactElement } from 'react'
import { TextLink } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
export interface SecuritySectionProps {
id: string
label: string | JSX.Element
heading: string | JSX.Element
subheading: string | JSX.Element
label: string | ReactElement
heading: string | ReactElement
subheading: string | ReactElement
features: FeatureProps[]
cta: {
label: string
@@ -19,7 +19,7 @@ export interface SecuritySectionProps {
export type Story = {
url: string
heading: string
subheading: string | JSX.Element
subheading: string | ReactElement
}
type FeatureProps = {
+3 -3
View File
@@ -1,4 +1,4 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import { cn } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
@@ -7,8 +7,8 @@ import type { LucideIcon } from 'lucide-react'
interface Props {
id: string
label?: string | JSX.Element
heading: string | JSX.Element
label?: string | ReactElement
heading: string | ReactElement
features: Feature[]
}
+7 -8
View File
@@ -1,20 +1,19 @@
import 'swiper/css'
import React, { FC } from 'react'
import { Swiper, SwiperSlide } from 'swiper/react'
import type { LucideIcon } from 'lucide-react'
import Image from 'next/image'
import Link from 'next/link'
import { FC, ReactElement } from 'react'
import { Swiper, SwiperSlide } from 'swiper/react'
import { TextLink } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
import Panel from '~/components/Panel'
import type { LucideIcon } from 'lucide-react'
import Image from 'next/image'
interface Props {
id: string
label?: string | JSX.Element
heading?: string | JSX.Element
label?: string | ReactElement
heading?: string | ReactElement
stories?: Story[]
highlights?: Highlight[]
}
@@ -24,7 +23,7 @@ export type Story = {
url: string
target?: '_blank' | string
heading?: string
subheading?: string | JSX.Element
subheading?: string | ReactElement
}
type Highlight = {
+4 -4
View File
@@ -1,9 +1,9 @@
import { useEffect, useState } from 'react'
import { AnimatePresence, motion, useAnimation } from 'framer-motion'
import { ReactElement, useEffect, useState } from 'react'
import { cn } from 'ui'
interface TabProps {
label: string | JSX.Element
label: string | ReactElement
isActive: boolean
onClick: VoidFunction
}
@@ -22,9 +22,9 @@ const Tab = ({ isActive, label, onClick }: TabProps) => (
)
interface Tab {
label: string | JSX.Element
label: string | ReactElement
paragraph?: string
panel: JSX.Element
panel: ReactElement
}
interface Props {
+3 -3
View File
@@ -1,11 +1,11 @@
import createGlobe from 'cobe'
import { useCallback, useEffect, useRef } from 'react'
import { useTheme } from 'next-themes'
import { debounce } from 'lib/helpers'
import { useTheme } from 'next-themes'
import { useCallback, useEffect, useRef } from 'react'
const Globe = () => {
const { resolvedTheme } = useTheme()
const canvasRef = useRef<any>()
const canvasRef = useRef<any>(null)
let rotation: number = 0
let width: number = 0
@@ -1,21 +1,21 @@
import 'swiper/css'
import 'swiper/css/a11y'
import 'swiper/css/navigation'
import 'swiper/css/controller'
import React, { useEffect, useRef, useState } from 'react'
import { useTheme } from 'next-themes'
import Image from 'next/image'
import Link from 'next/link'
import { Button, cn } from 'ui'
import { useTheme } from 'next-themes'
import React, { useEffect, useRef, useState } from 'react'
import 'swiper/css'
import 'swiper/css/a11y'
import 'swiper/css/controller'
import 'swiper/css/navigation'
import { A11y, Controller, Navigation } from 'swiper/modules'
import { Swiper, SwiperClass, SwiperRef, SwiperSlide } from 'swiper/react'
import { Controller, Navigation, A11y } from 'swiper/modules'
import { Button, cn } from 'ui'
import SectionContainer from 'components/Layouts/SectionContainer'
import { mainDays, WeekDayProps } from './data'
import { useWindowSize } from 'react-use'
import { useBreakpoint } from 'common'
import { DayLink } from './lw15.components'
import SectionContainer from 'components/Layouts/SectionContainer'
import { ChevronLeft, ChevronRight } from 'lucide-react'
import { useWindowSize } from 'react-use'
import { mainDays, WeekDayProps } from './data'
import { DayLink } from './lw15.components'
const LW15MainStage = ({ className }: { className?: string }) => {
const { resolvedTheme } = useTheme()
@@ -181,7 +181,7 @@ const CardBG = ({ day }: { day: WeekDayProps }) => (
interface Props {
className?: string
slides: WeekDayProps[]
swiperRef: React.RefObject<SwiperRef>
swiperRef: React.RefObject<SwiperRef | null>
setControlledSwiper: (swiper: SwiperClass) => void
controlledSwiper: SwiperClass | null
}
@@ -5,8 +5,8 @@ import { useTheme } from 'next-themes'
import Link from 'next/link'
import { useEffect, useRef, useState } from 'react'
import { Button } from 'ui'
import useConfData from '../hooks/use-conf-data'
import { LW15_TWEET_TEXT, LW15_URL } from '~/lib/constants'
import useConfData from '../hooks/use-conf-data'
import supabase from '../supabase'
export default function LW15TicketShare() {
@@ -17,7 +17,7 @@ export default function LW15TicketShare() {
const [_imgReady, setImgReady] = useState(false)
const [_loading, setLoading] = useState(false)
const isLessThanMd = useBreakpoint()
const downloadLink = useRef<HTMLAnchorElement>()
const downloadLink = useRef<HTMLAnchorElement>(null)
const link = `${LW15_URL}/tickets/${username}?lw=15&t=${dayjs(new Date()).format('DHHmmss')}`
const permalink = encodeURIComponent(link)
const text = LW15_TWEET_TEXT
@@ -38,7 +38,7 @@ export default function LW15TicketShare() {
setLoading(false)
if (downloadLink.current) {
downloadLink.current.click()
downloadLink.current = undefined
downloadLink.current = null
}
}
}, [downloadUrl])
@@ -1,9 +1,8 @@
import React, { FC } from 'react'
import type { LucideIcon } from 'lucide-react'
import { FC, type ReactElement } from 'react'
import { cn, TextLink } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
import CodeWindow from '~/components/CodeWindow'
import SectionContainer from '~/components/Layouts/SectionContainer'
const codeSnippet = `
select
@@ -15,9 +14,9 @@ select
`
interface Props {
id: string
label: string | JSX.Element
heading: string | JSX.Element
subheading: string | JSX.Element
label: string | ReactElement
heading: string | ReactElement
subheading: string | ReactElement
className?: string
cta?: {
label: string
@@ -1,8 +1,8 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import { cn, TextLink } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
import CodeWindow from '~/components/CodeWindow'
import SectionContainer from '~/components/Layouts/SectionContainer'
const codeSnippet = `const queues = createClient(supabaseUrl, supabaseKey, {
db: { schema: "pgmq_public" },
@@ -21,9 +21,9 @@ const message = await queues.rpc("pop", {
interface Props {
id: string
label: string | JSX.Element
heading: string | JSX.Element
subheading: string | JSX.Element
label: string | ReactElement
heading: string | ReactElement
subheading: string | ReactElement
className?: string
cta?: {
label: string
@@ -1,8 +1,8 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import { cn, TextLink } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
import CodeWindow from '~/components/CodeWindow'
import SectionContainer from '~/components/Layouts/SectionContainer'
const codeSnippet = `
select pgmq.create('my_special_queue');
@@ -16,9 +16,9 @@ select * from pgmq.pop('my_special_queue');
`
interface Props {
id: string
label: string | JSX.Element
heading: string | JSX.Element
subheading: string | JSX.Element
label: string | ReactElement
heading: string | ReactElement
subheading: string | ReactElement
className?: string
cta?: {
label: string
@@ -1,8 +1,8 @@
import classNames from 'classnames'
import { Fragment, useMemo, useState } from 'react'
import { ChevronUp } from 'lucide-react'
import { Fragment, ReactElement, useMemo, useState } from 'react'
import { Collapsible } from 'ui'
import { Check } from './PricingIcons'
import { ChevronUp } from 'lucide-react'
interface PricingAddOnTableProps {
pricing: {
@@ -16,7 +16,7 @@ interface PricingAddOnTableProps {
}[]
}[]
}
icon: JSX.Element
icon: ReactElement
}
const PricingAddOnTable = ({ icon, pricing }: PricingAddOnTableProps) => {
@@ -1,5 +1,5 @@
import React from 'react'
import { useTheme } from 'next-themes'
import React, { useRef } from 'react'
function getRandomNumber(min: number, max: number) {
var range = max - min
@@ -10,7 +10,7 @@ function getRandomNumber(min: number, max: number) {
const DeployGlobally = ({ isHovered }: { isHovered: boolean }) => {
const { resolvedTheme } = useTheme()
const ref = React.useRef<any>()
const ref = useRef<any>(null)
const states = ['1', '2', '3']
const colors = {
green: resolvedTheme?.includes('dark') ? '#1CF7C3' : '#00B99F',
@@ -1,11 +1,11 @@
import React, { useEffect, useRef } from 'react'
import { useTheme } from 'next-themes'
import { DEFAULT_EASE } from '~/lib/animations'
import { LazyMotion, domAnimation, m } from 'framer-motion'
import { useTheme } from 'next-themes'
import { useEffect, useRef } from 'react'
import { DEFAULT_EASE } from '~/lib/animations'
const PGvectorImg = ({ isHovered }: { isHovered: boolean }) => {
const { resolvedTheme } = useTheme()
const svgRef = useRef<any>()
const svgRef = useRef<any>(null)
const colors = {
circles1: resolvedTheme?.includes('dark') ? '#105C3B' : '#008B4F',
@@ -1,11 +1,11 @@
import React, { useEffect, useRef } from 'react'
import { useTheme } from 'next-themes'
import { useEffect, useRef } from 'react'
import { DEFAULT_EASE } from '~/lib/animations'
const SecureAndScalableImg = ({ isHovered }: { isHovered: boolean }) => {
const { resolvedTheme } = useTheme()
const shieldsRef = useRef<any>()
const mainRef = useRef<any>()
const shieldsRef = useRef<any>(null)
const mainRef = useRef<any>(null)
const colors = {
shieldsStroke: resolvedTheme?.includes('dark') ? '#494949' : '#D5D5D5',
@@ -2,7 +2,7 @@ import { LazyMotion, domAnimation, m, useInView } from 'framer-motion'
import { ArrowUpRight } from 'lucide-react'
import Link from 'next/link'
import { ReactNode, useRef } from 'react'
import { ReactMarkdown } from 'react-markdown/lib/react-markdown'
import ReactMarkdown from 'react-markdown'
import { Button, cn } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
import { INITIAL_BOTTOM, getAnimation } from '~/lib/animations'
@@ -1,13 +1,13 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import { cn, TextLink } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
interface Props {
id: string
label: string | JSX.Element
heading: string | JSX.Element
subheading: string | JSX.Element
label: string | ReactElement
heading: string | ReactElement
subheading: string | ReactElement
image?: any
className?: string
cta?: {
@@ -1,7 +1,7 @@
import { ArrowUpRight } from 'lucide-react'
import Link from 'next/link'
import { ReactNode } from 'react'
import { ReactMarkdown } from 'react-markdown/lib/react-markdown'
import ReactMarkdown from 'react-markdown'
import { Button, cn } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
+3 -3
View File
@@ -1,5 +1,5 @@
import Link from 'next/link'
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import { cn } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
@@ -17,9 +17,9 @@ interface Props {
type Quote = {
text: string
author: string
logo?: string | JSX.Element
logo?: string | ReactElement
role: string
avatar?: string | JSX.Element
avatar?: string | ReactElement
link?: string
}
@@ -1,10 +1,10 @@
import 'swiper/css'
import React, { useState, useEffect, useRef } from 'react'
import { LazyMotion, domAnimation, m, useAnimation, useInView } from 'framer-motion'
import { cn } from 'ui'
import { Swiper, SwiperSlide } from 'swiper/react'
import { useBreakpoint } from 'common'
import { LazyMotion, domAnimation, m, useAnimation, useInView } from 'framer-motion'
import React, { ReactElement, useEffect, useRef, useState } from 'react'
import { Swiper, SwiperSlide } from 'swiper/react'
import { cn } from 'ui'
interface TabProps {
label: string | React.ReactNode
@@ -68,7 +68,7 @@ const Tab = ({ isActive, label, paragraph, onClick, progress, intervalDuration }
interface Tab {
label: string | React.ReactNode
paragraph?: string | React.ReactNode
panel?: JSX.Element
panel?: ReactElement
code?: string
}
@@ -1,14 +1,14 @@
import 'swiper/css'
import { AnimatePresence, motion, useAnimation } from 'framer-motion'
import { ArrowUpRight } from 'lucide-react'
import Image from 'next/image'
import Link from 'next/link'
import { ReactNode, useEffect, useState } from 'react'
import { ReactElement, ReactNode, useEffect, useState } from 'react'
import { Swiper, SwiperSlide } from 'swiper/react'
import { Button } from 'ui'
import CodeBlock from '~/components/CodeBlock/CodeBlock'
import SectionContainer from '~/components/Layouts/SectionContainer'
import { ArrowUpRight } from 'lucide-react'
interface TabProps {
label: string
@@ -58,7 +58,7 @@ const Tab = ({ isActive, label, paragraph, onClick, progress, intervalDuration }
interface Tab {
label: string
paragraph?: string
panel?: JSX.Element
panel?: ReactElement
colabUrl: string
code?: string
}
@@ -1,12 +1,12 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import SectionContainer from '~/components/Layouts/SectionContainer'
import UsersGrowthChart from '~/components/UsersGrowthChart'
export interface ResultsSectionProps {
id: string
heading: string | JSX.Element
subheading: string | JSX.Element
heading: string | ReactElement
subheading: string | ReactElement
highlights: Highlight[]
}
+3 -3
View File
@@ -1,13 +1,13 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import SectionContainer from '~/components/Layouts/SectionContainer'
import Panel from '../Panel'
import type { Testimonials } from '~/data/solutions/solutions.utils'
import Panel from '../Panel'
export type Story = {
url: string
heading: string
subheading: string | JSX.Element
subheading: string | ReactElement
}
const EnterpriseSecurity: FC<Testimonials> = (props) => {
@@ -1,12 +1,12 @@
import React, { FC } from 'react'
import { FC, ReactElement } from 'react'
import SectionContainer from '~/components/Layouts/SectionContainer'
import UsersGrowthChart from '~/components/UsersGrowthChart'
export interface PerfectTimingProps {
id: string
heading: string | JSX.Element
subheading: string | JSX.Element
heading: string | ReactElement
subheading: string | ReactElement
highlights: Highlight[]
}
+2 -1
View File
@@ -1,3 +1,4 @@
import { ReactElement } from 'react'
import { products } from 'shared-data'
import { PRODUCT_NAMES, PRODUCT_SHORTNAMES } from 'shared-data/products'
@@ -5,7 +6,7 @@ export type ProductType = {
[key: string]: {
name: string
icon: string
description: string | JSX.Element
description: string | ReactElement
description_short: string
label: string
url: string
@@ -1,7 +1,7 @@
import { useBreakpoint } from 'common'
import { LucideIcon } from 'lucide-react'
import Link from 'next/link'
import type { ComponentType, SVGProps } from 'react'
import type { ComponentType, ReactElement, SVGProps } from 'react'
import { cn } from 'ui'
import z from 'zod'
@@ -43,9 +43,9 @@ export interface Metadata {
export interface HeroSection {
id: string
title: string
h1: JSX.Element
subheader: JSX.Element[]
image: JSX.Element
h1: ReactElement
subheader: ReactElement[]
image: ReactElement
className?: string
sectionContainerClassName?: string
icon?: string
@@ -66,7 +66,7 @@ export interface Quote {
icon?: string
author: string
authorTitle?: string
quote: JSX.Element
quote: ReactElement
avatar: string
}
@@ -77,8 +77,8 @@ export interface Quotes {
export interface Highlight {
icon?: IconType
heading: string | JSX.Element
subheading: string | JSX.Element
heading: string | ReactElement
subheading: string | ReactElement
url?: string
}
@@ -86,16 +86,16 @@ export interface Feature {
id?: string
icon?: string
iconNoStroke?: boolean
heading: string | JSX.Element
subheading: string | JSX.Element
img?: JSX.Element
heading: string | ReactElement
subheading: string | ReactElement
img?: ReactElement
}
export interface FeaturesSection {
id: string
label?: string
heading: JSX.Element
subheading?: string | JSX.Element
heading: ReactElement
subheading?: string | ReactElement
features: Feature[]
className?: string
// {
@@ -106,7 +106,7 @@ export interface FeaturesSection {
export interface Testimonials {
id: string
label: string
heading: JSX.Element
heading: ReactElement
videos: {
[key: string]: {
url: string
@@ -117,7 +117,7 @@ export interface Testimonials {
export interface CTASection {
id: string
label: string
heading: JSX.Element | string
heading: ReactElement | string
subheading: string
cta: {
label: string
+13 -13
View File
@@ -1,7 +1,7 @@
import { useBreakpoint } from 'common'
import { LucideIcon } from 'lucide-react'
import Link from 'next/link'
import type { ComponentType, SVGProps } from 'react'
import type { ComponentType, ReactElement, SVGProps } from 'react'
import { cn } from 'ui'
export type HeroIcon = ComponentType<SVGProps<SVGSVGElement>>
@@ -15,9 +15,9 @@ export interface Metadata {
export interface HeroSection {
id: string
title: string
h1: JSX.Element
subheader: JSX.Element[]
image: JSX.Element | undefined
h1: ReactElement
subheader: ReactElement[]
image: ReactElement | undefined
className?: string
sectionContainerClassName?: string
icon?: string
@@ -38,7 +38,7 @@ export interface Quote {
icon?: string
author: string
authorTitle?: string
quote: JSX.Element
quote: ReactElement
avatar: string
}
@@ -49,8 +49,8 @@ export interface Quotes {
export interface Highlight {
icon?: IconType
heading: string | JSX.Element
subheading: string | JSX.Element
heading: string | ReactElement
subheading: string | ReactElement
url?: string
}
@@ -58,15 +58,15 @@ export interface Feature {
id?: string
icon?: IconType | string
iconNoStroke?: boolean
heading: string | JSX.Element
subheading: string | JSX.Element
img?: JSX.Element
heading: string | ReactElement
subheading: string | ReactElement
img?: ReactElement
}
export interface FeaturesSection {
id: string
label?: string
heading: JSX.Element
heading: ReactElement
subheading?: string
features: Feature[]
// {
@@ -77,7 +77,7 @@ export interface FeaturesSection {
export interface Testimonials {
id: string
label: string
heading: JSX.Element
heading: ReactElement
videos: {
[key: string]: {
url: string
@@ -88,7 +88,7 @@ export interface Testimonials {
export interface CTASection {
id: string
label: string
heading: JSX.Element | string
heading: ReactElement | string
subheading: string
cta: {
label: string
+3 -3
View File
@@ -4,7 +4,7 @@ import { NextSeo } from 'next-seo'
import dynamic from 'next/dynamic'
import Link from 'next/link'
import { useRouter } from 'next/router'
import { useEffect, useState } from 'react'
import { ReactElement, useEffect, useState } from 'react'
import { Button } from 'ui'
import DotGrid from '~/components/AIDemo/DotGrid'
import { AIDemoPanel } from '~/components/AIDemo/Panel'
@@ -17,9 +17,9 @@ const SectionContainer = dynamic(() => import('~/components/Layouts/SectionConta
interface Message {
id: string
role: 'user' | 'assistant'
content: string | JSX.Element
content: string | ReactElement
createdAt: Date
render?: JSX.Element
render?: ReactElement
}
const welcomeMessages = [
@@ -38,7 +38,7 @@ function mdxComponents(callback: Dispatch<SetStateAction<string | null>>) {
img: (
props: React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>
) => {
return <img {...props} onClick={() => callback(props.src!)} />
return <img {...props} onClick={() => callback(props.src! as string)} />
},
}