refactor(website): redesign (#9286)

This commit is contained in:
Noel
2023-03-28 19:02:36 +02:00
committed by GitHub
parent d1ebe4a52c
commit 47da24ff5c
25 changed files with 64 additions and 79 deletions

View File

@@ -2,10 +2,7 @@ import { FiLink } from '@react-icons/all-files/fi/FiLink';
export function Anchor({ href }: { href: string }) {
return (
<a
className="focus:ring-width-2 focus:ring-blurple hidden rounded outline-0 focus:ring md:inline-block"
href={href}
>
<a className="focus:ring-width-2 focus:ring-blurple mr-1 inline-block rounded outline-0 focus:ring" href={href}>
<FiLink size={20} />
</a>
);

View File

@@ -50,7 +50,7 @@ export function CmdKDialog() {
() =>
searchResults?.map((item, idx) => (
<Command.Item
className="dark:border-dark-100 dark:hover:bg-dark-300 dark:active:bg-dark-200 [&[aria-selected]]:ring-blurple [&[aria-selected]]:ring-width-4 my-1 flex transform-gpu cursor-pointer select-none appearance-none flex-row place-content-center rounded bg-transparent px-4 py-2 text-base font-semibold leading-none text-black outline-0 hover:bg-neutral-100 active:translate-y-px active:bg-neutral-200 dark:text-white [&[aria-selected]]:ring"
className="dark:border-dark-100 dark:hover:bg-dark-300 dark:active:bg-dark-200 [&[aria-selected]]:ring-blurple [&[aria-selected]]:ring-width-2 my-1 flex transform-gpu cursor-pointer select-none appearance-none flex-row place-content-center rounded bg-transparent px-4 py-2 text-base font-semibold leading-none text-black outline-0 hover:bg-neutral-100 active:translate-y-px active:bg-neutral-200 dark:text-white [&[aria-selected]]:ring"
key={`${item.id}-${idx}`}
onSelect={() => {
router.push(item.path);
@@ -114,12 +114,12 @@ export function CmdKDialog() {
return (
<Dialog className="fixed top-1/4 left-1/2 z-50 -translate-x-1/2" state={dialog!}>
<Command
className="dark:bg-dark-300 min-w-xs sm:min-w-lg max-w-xs rounded bg-white sm:max-w-lg"
className="dark:bg-dark/50 min-w-xs sm:min-w-lg dark:border-dark-100 border-light-900 max-w-xs rounded border bg-white/50 shadow backdrop-blur-md sm:max-w-lg"
label="Command Menu"
shouldFilter={false}
>
<Command.Input
className="dark:bg-dark-300 caret-blurple placeholder:text-dark-300/75 focus:ring-width-2 focus:ring-blurple w-full rounded border-0 bg-white p-4 text-lg outline-0 outline-0 focus:ring dark:placeholder:text-white/75"
className="dark:bg-dark/50 caret-blurple placeholder:text-dark-300/75 dark:border-dark-100 border-light-900 rounded-b-0 w-full rounded border-0 border-b bg-white/50 p-4 text-lg outline-0 dark:placeholder:text-white/75"
onValueChange={setSearch}
placeholder="Quick search..."
value={search}

View File

@@ -3,7 +3,7 @@ import vercelLogo from '~/assets/powered-by-vercel.svg';
export default function Footer() {
return (
<footer className="dark:bg-dark-800 h-76 lg:pl-84 bg-light-600 xl:pr-84 fixed bottom-0 left-0 right-0 md:h-52 md:pl-4 md:pr-16">
<footer className="dark:bg-dark-800 bg-light-600 md:pl-12 md:pr-12">
<div className="mx-auto flex max-w-6xl flex-col place-items-center gap-12 pt-12 lg:place-content-center">
<div className="flex w-full flex-col place-content-between place-items-center gap-12 md:flex-row md:gap-0">
<a

View File

@@ -64,9 +64,9 @@ export default function Header() {
);
return (
<header className="dark:bg-dark-400 dark:border-dark-100 bg-light-600 border-light-800 fixed top-0 left-0 z-20 w-full border-b">
<header className="dark:bg-dark/50 dark:border-dark-100 border-light-900 sticky top-4 z-20 rounded-md border bg-white/50 shadow backdrop-blur-md">
<div className="block h-16 px-6">
<div className="flex h-full flex-row place-content-between place-items-center">
<div className="flex h-full flex-row place-content-between place-items-center gap-8">
<Button
aria-label="Menu"
className="focus:ring-width-2 focus:ring-blurple flex h-6 w-6 transform-gpu cursor-pointer select-none appearance-none flex-row place-items-center rounded border-0 bg-transparent p-0 text-sm font-semibold leading-none no-underline outline-0 focus:ring active:translate-y-px lg:hidden"
@@ -74,21 +74,21 @@ export default function Header() {
>
<VscMenu size={24} />
</Button>
<div className="hidden md:flex md:flex-row md:overflow-hidden">{breadcrumbs}</div>
<div className="flex flex-row place-items-center gap-4">
<Button
as="div"
className="dark:bg-dark-800 focus:ring-width-2 focus:ring-blurple rounded bg-white px-4 py-2.5 outline-0 focus:ring"
onClick={() => dialog?.toggle()}
>
<div className="flex flex-row place-items-center gap-4">
<VscSearch size={18} />
<span className="opacity-65">Search...</span>
<div className="md:opacity-65 hidden md:flex md:flex-row md:place-items-center md:gap-2">
<FiCommand size={18} /> K
</div>
<div className="hidden lg:flex lg:flex-row lg:overflow-hidden">{breadcrumbs}</div>
<Button
as="div"
className="dark:bg-dark-800 focus:ring-width-2 focus:ring-blurple w-56 grow rounded bg-white px-4 py-2.5 outline-0 focus:ring sm:grow-0"
onClick={() => dialog?.toggle()}
>
<div className="flex flex-row place-items-center gap-4 md:justify-between">
<VscSearch size={18} />
<span className="opacity-65">Search...</span>
<div className="md:opacity-65 hidden md:flex md:flex-row md:place-items-center md:gap-2">
<FiCommand size={18} /> K
</div>
</Button>
</div>
</Button>
<div className="flex flex-row place-items-center gap-4">
<Button
aria-label="GitHub"
as="a"

View File

@@ -14,12 +14,13 @@ export function Nav({ members }: { members: SidebarSectionItemData[] }) {
return (
<nav
className={`dark:bg-dark-600 dark:border-dark-100 border-light-800 fixed top-[65px] left-0 bottom-0 z-20 h-[calc(100vh_-_65px)] w-full border-r bg-white ${
className={`dark:bg-dark/75 dark:border-dark-100 border-light-900 top-22 fixed bottom-4 left-4 right-4 z-20 mx-auto max-w-5xl rounded-md border bg-white/75 shadow backdrop-blur-md ${
opened ? 'block' : 'hidden'
} lg:w-76 lg:max-w-76 lg:block`}
} lg:min-w-xs lg:sticky lg:block lg:h-full lg:w-full lg:max-w-xs`}
>
<Scrollbars
autoHide
className="[&>div]:overscroll-none"
hideTracksWhenNotNeeded
renderThumbVertical={(props) => <div {...props} className="dark:bg-dark-100 bg-light-900 z-30 rounded" />}
renderTrackVertical={(props) => (
@@ -27,7 +28,7 @@ export function Nav({ members }: { members: SidebarSectionItemData[] }) {
)}
universal
>
<div className="flex flex-col gap-3 px-3 pt-3">
<div className="flex flex-col gap-4 p-3">
<PackageSelect />
<VersionSelect />
</div>

View File

@@ -4,7 +4,7 @@ export function Panel({ children }: PropsWithChildren) {
return (
<>
{children}
<div className="border-light-900 dark:border-dark-100 -mx-8 border-t-2" />
<div className="border-light-900 dark:border-dark-100 border-t-2" />
</>
);
}

View File

@@ -25,10 +25,9 @@ export function Property({
return (
<div className="scroll-mt-30 flex flex-col gap-4" id={item.displayName}>
<div className="md:-ml-8.5 flex flex-col gap-2 md:flex-row md:place-items-center">
<Anchor href={`#${item.displayName}`} />
<div className="flex flex-col gap-2 md:-ml-9">
{isDeprecated || item.isReadonly || item.isOptional ? (
<div className="flex flex-row gap-1">
<div className="flex flex-row gap-1 md:ml-7">
{isDeprecated ? (
<div className="flex h-5 flex-row place-content-center place-items-center rounded-full bg-red-500 px-3 text-center text-xs font-semibold uppercase text-white">
Deprecated
@@ -47,6 +46,7 @@ export function Property({
</div>
) : null}
<div className="flex flex-row flex-wrap place-items-center gap-1">
<Anchor href={`#${item.displayName}`} />
<h4 className="break-all font-mono text-lg font-bold">
{item.displayName}
{item.isOptional ? '?' : ''}

View File

@@ -28,7 +28,7 @@ export function PropertyList({ item }: { item: ApiItemContainerMixin }) {
item={prop.item as ApiPropertyItem}
separator={PropertySeparatorType.Type}
/>
<div className="border-light-900 dark:border-dark-100 -mx-8 border-t-2" />
<div className="border-light-900 dark:border-dark-100 border-t-2" />
</Fragment>
);
}),

View File

@@ -89,7 +89,7 @@ export function Sidebar({ members }: { members: SidebarSectionItemData[] }) {
const groupItems = useMemo(() => groupMembers(members), [members]);
return (
<div className="flex flex-col gap-3 p-3 pb-32 lg:pb-12">
<div className="flex flex-col gap-3 p-3">
{(Object.keys(groupItems) as (keyof GroupedMembers)[])
.filter((group) => groupItems[group].length)
.map((group, idx) => (

View File

@@ -25,7 +25,7 @@ export function MemberContainerDocumentation({
{hasProperties(item) ? <PropertiesSection item={item} /> : null}
{hasMethods(item) ? <MethodsSection item={item} /> : null}
<Outline members={serializeMembers(item)} />
{/* <Outline members={serializeMembers(item)} /> */}
</Documentation>
);
}

View File

@@ -8,7 +8,7 @@ export function DocumentationSection(opts: PropsWithChildren<SectionOptions & {
return (
<Section {...props}>
{children}
{separator ? <div className="border-light-900 dark:border-dark-100 -mx-8 mt-6 border-t-2" /> : null}
{separator ? <div className="border-light-900 dark:border-dark-100 mt-6 border-t-2" /> : null}
</Section>
);
}

View File

@@ -31,7 +31,7 @@ export function MethodsSection({ item }: { item: ApiItemContainerMixin }) {
}`}
>
<Method inheritedFrom={inherited as ApiDeclaredItem & ApiItemContainerMixin} method={method} />
<div className="border-light-900 dark:border-dark-100 -mx-8 border-t-2" />
<div className="border-light-900 dark:border-dark-100 border-t-2" />
</Fragment>
)),
[members],

View File

@@ -74,7 +74,7 @@ export function TSDoc({ item, tsdoc }: { item: ApiItem; tsdoc: DocNode }): JSX.E
case DocNodeKind.FencedCode: {
const { language, code } = tsdoc as DocFencedCode;
return <SyntaxHighlighter code={code} key={idx} lang={language ?? 'typescript'} />;
return <SyntaxHighlighter code={code.trim()} key={idx} lang={language ?? 'typescript'} />;
}
case DocNodeKind.Comment: {

View File

@@ -22,7 +22,7 @@ export function Class({ clazz }: { clazz: ApiClass }) {
{clazz.typeParameters.length ? <TypeParameterSection item={clazz} /> : null}
{constructor ? <ConstructorSection item={constructor} /> : null}
<Members item={clazz} />
<Outline members={serializeMembers(clazz)} />
{/* <Outline members={serializeMembers(clazz)} /> */}
</Documentation>
);
}

View File

@@ -14,7 +14,7 @@ export function Interface({ item }: { item: ApiInterface }) {
<HierarchyText item={item} type="Extends" />
{item.typeParameters.length ? <TypeParameterSection item={item} /> : null}
<Members item={item} />
<Outline members={serializeMembers(item)} />
{/* <Outline members={serializeMembers(item)} /> */}
</Documentation>
);
}

View File

@@ -1,13 +1,11 @@
import type { ApiVariable } from '@microsoft/api-extractor-model';
import { Documentation } from '../documentation/Documentation';
import { ObjectHeader } from '../documentation/ObjectHeader';
import { SummarySection } from '../documentation/section/SummarySection';
export function Variable({ item }: { item: ApiVariable }) {
return (
<Documentation>
<ObjectHeader item={item} />
<SummarySection item={item} />
</Documentation>
);
}

View File

@@ -4,14 +4,12 @@ import { Panel } from '../../Panel';
import { Documentation } from '../../documentation/Documentation';
import { ObjectHeader } from '../../documentation/ObjectHeader';
import { DocumentationSection } from '../../documentation/section/DocumentationSection';
import { SummarySection } from '../../documentation/section/SummarySection';
import { EnumMember } from './EnumMember';
export function Enum({ item }: { item: ApiEnum }) {
return (
<Documentation>
<ObjectHeader item={item} />
<SummarySection item={item} />
<DocumentationSection icon={<VscSymbolEnum size={20} />} padded title="Members">
<div className="flex flex-col gap-4">
{item.members.map((member, idx) => (

View File

@@ -26,12 +26,11 @@ export function MethodHeader({ method }: { method: ApiMethod | ApiMethodSignatur
return (
<div className="scroll-mt-30 flex flex-col" id={key}>
<div className="flex flex-col gap-2 md:-ml-9 md:flex-row md:place-items-center">
<Anchor href={`#${key}`} />
<div className="flex flex-col gap-2 md:-ml-9">
{isDeprecated ||
(method.kind === ApiItemKind.Method && (method as ApiMethod).isProtected) ||
(method.kind === ApiItemKind.Method && (method as ApiMethod).isStatic) ? (
<div className="flex flex-row gap-1">
<div className="flex flex-row gap-1 md:ml-7">
{isDeprecated ? (
<div className="flex h-5 flex-row place-content-center place-items-center rounded-full bg-red-500 px-3 text-center text-xs font-semibold uppercase text-white">
Deprecated
@@ -49,7 +48,8 @@ export function MethodHeader({ method }: { method: ApiMethod | ApiMethodSignatur
) : null}
</div>
) : null}
<div className="flex flex-row flex-wrap gap-1">
<div className="flex flex-row flex-wrap place-items-center gap-1">
<Anchor href={`#${key}`} />
<h4 className="break-all font-mono text-lg font-bold">{getShorthandName(method)}</h4>
<h4 className="font-mono text-lg font-bold">:</h4>
<h4 className="break-all font-mono text-lg font-bold">