├── .env.example ├── .dockerignore ├── .prettierrc ├── public ├── favicon.ico └── assets │ ├── fonts │ ├── WhitneyBold.woff │ ├── WhitneyBook.woff │ ├── WhitneyLight.woff │ ├── WhitneyMedium.woff │ ├── ABCGintoNordTrial.woff │ ├── WhitneyBookItalic.woff │ ├── WhitneySemibold.woff │ ├── WhitneyLightItalic.woff │ ├── WhitneyMediumItalic.woff │ └── WhitneySemiboldItalic.woff │ ├── images │ ├── sample-summary-preview.png │ ├── theme-change.svg │ ├── missing-wumpus.svg │ ├── clyde-triangle.svg │ └── summaries-banner.svg │ └── icons │ ├── hamburger.svg │ ├── arrow-single-left.svg │ ├── arrow-single-right.svg │ ├── privacypolicy.svg │ ├── arrow-double-right.svg │ ├── arrow-double-left.svg │ ├── documentation.svg │ ├── features.svg │ ├── Discord-Logo-White.svg │ ├── site-logo-white.svg │ └── summaries.svg ├── .eslintrc.json ├── lib ├── api-models │ ├── author.ts │ ├── currentUser.ts │ ├── partialEvent.ts │ ├── event.ts │ └── summary.ts ├── constants.ts ├── relativeDate.ts └── api.ts ├── next-env.d.ts ├── renovate.json ├── pages ├── _middleware.tsx ├── documentation.tsx ├── _document.tsx ├── index.tsx ├── logout.tsx ├── 404.tsx ├── login.tsx ├── _app.tsx ├── summaries.tsx └── events │ └── [id].tsx ├── next.config.js ├── components ├── util │ ├── Icon.tsx │ ├── Logo.tsx │ ├── ThemeToggle.tsx │ ├── Metric.tsx │ ├── Panel.tsx │ ├── Spinner.tsx │ ├── ToggleableArrow.tsx │ ├── GracefulImage.tsx │ ├── Table.tsx │ └── form │ │ └── Searchbar.tsx ├── page │ ├── summary │ │ ├── CardList.tsx │ │ ├── Card.tsx │ │ └── DatePicker.tsx │ └── events │ │ ├── SidebarEventCard.tsx │ │ ├── EventSidebar.tsx │ │ ├── EventHeader.tsx │ │ └── Summary.tsx ├── layout │ ├── Scrollbar.tsx │ ├── account │ │ ├── AccountHeader.tsx │ │ ├── LoginButton.tsx │ │ └── AccountButton.tsx │ ├── footer │ │ └── Footer.tsx │ └── Sidebar.tsx ├── typography │ ├── Header.tsx │ ├── Link.tsx │ ├── Text.tsx │ └── Markdown.tsx └── context │ └── AuthContext.tsx ├── tsconfig.json ├── .gitignore ├── .github └── workflows │ ├── docker.yml │ └── codeql-analysis.yml ├── package.json ├── stitches.config.ts ├── Dockerfile ├── README.md ├── styles └── global.css └── LICENSE /.env.example: -------------------------------------------------------------------------------- 1 | NODE_ENV=development -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .next/ -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "useTabs": false 4 | } 5 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals", 3 | "rules": { 4 | "react/no-children-prop": 0 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /public/assets/fonts/WhitneyBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneyBold.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneyBook.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneyBook.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneyLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneyLight.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneyMedium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneyMedium.woff -------------------------------------------------------------------------------- /public/assets/fonts/ABCGintoNordTrial.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/ABCGintoNordTrial.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneyBookItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneyBookItalic.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneySemibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneySemibold.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneyLightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneyLightItalic.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneyMediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneyMediumItalic.woff -------------------------------------------------------------------------------- /public/assets/fonts/WhitneySemiboldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/fonts/WhitneySemiboldItalic.woff -------------------------------------------------------------------------------- /public/assets/images/sample-summary-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/discord-docs/ddocs/HEAD/public/assets/images/sample-summary-preview.png -------------------------------------------------------------------------------- /lib/api-models/author.ts: -------------------------------------------------------------------------------- 1 | export default interface Author { 2 | username: string; 3 | discriminator: string; 4 | avatar: string; 5 | id: string; 6 | } 7 | -------------------------------------------------------------------------------- /lib/api-models/currentUser.ts: -------------------------------------------------------------------------------- 1 | export default interface CurrentUser { 2 | id: string; 3 | username: string; 4 | discriminator: string; 5 | avatar: string; 6 | isAuthor: boolean; 7 | } 8 | -------------------------------------------------------------------------------- /lib/api-models/partialEvent.ts: -------------------------------------------------------------------------------- 1 | export default interface PartialEvent { 2 | id: string; 3 | title: string; 4 | description?: string; 5 | thumbnail?: string; 6 | heldAt: string; 7 | } 8 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /public/assets/icons/hamburger.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/api-models/event.ts: -------------------------------------------------------------------------------- 1 | import Author from "./author"; 2 | import PartialEvent from "./partialEvent"; 3 | import Summary from "./summary"; 4 | 5 | export default interface Event extends PartialEvent { 6 | author: Author; 7 | contributors: Author[]; 8 | summaries: Summary[]; 9 | lastRevised: string; 10 | } 11 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["config:base"], 3 | "lockFileMaintenance": { "enabled": true }, 4 | "prHourlyLimit": 2, 5 | "labels": ["dependencies"], 6 | "packageRules": [ 7 | { 8 | "matchUpdateTypes": ["minor", "patch", "pin", "digest"], 9 | "automerge": true 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /pages/_middleware.tsx: -------------------------------------------------------------------------------- 1 | import { NextResponse, NextRequest } from "next/server"; 2 | 3 | export async function middleware(req: NextRequest, ev: NextResponse) { 4 | const { pathname } = req.nextUrl; 5 | if (pathname === "/") { 6 | return NextResponse.redirect(new URL("/summaries", req.url)); 7 | } 8 | return NextResponse.next(); 9 | } 10 | -------------------------------------------------------------------------------- /pages/documentation.tsx: -------------------------------------------------------------------------------- 1 | import type { NextPage } from "next"; 2 | 3 | const Documentation: NextPage = () => { 4 | return ( 5 | <> 6 |

Placeholder

7 | 8 | ); 9 | }; 10 | 11 | export function getStaticProps() { 12 | return { 13 | props: { 14 | title: "Documentation", 15 | }, 16 | }; 17 | } 18 | 19 | export default Documentation; 20 | -------------------------------------------------------------------------------- /public/assets/icons/arrow-single-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/assets/icons/arrow-single-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/api-models/summary.ts: -------------------------------------------------------------------------------- 1 | export default interface Summary { 2 | id: string; 3 | title: string; 4 | content?: string; 5 | type: "feature" | "qnaanswer"; 6 | isNew: boolean; 7 | thumbnail?: string; 8 | featureType?: 9 | | "plannedq1" 10 | | "plannedq2" 11 | | "plannedq3" 12 | | "plannedq4" 13 | | "unknown" 14 | | "closedbeta" 15 | | "workinprogress" 16 | | "released"; 17 | } 18 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | module.exports = { 3 | reactStrictMode: true, 4 | swcMinify: true, 5 | webpack(config) { 6 | config.module.rules.push({ 7 | test: /\.svg$/, 8 | use: ["@svgr/webpack"], 9 | }); 10 | 11 | return config; 12 | }, 13 | experimental: { 14 | outputStandalone: true, 15 | }, 16 | images: { 17 | domains: ["s3-alpha-sig.figma.com", "localhost"], 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /public/assets/images/theme-change.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/assets/icons/privacypolicy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /components/util/Icon.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { FC, useEffect, useState } from "react"; 3 | 4 | interface IconProps extends React.SVGAttributes { 5 | icon: string; 6 | } 7 | 8 | const Icon: FC = ({ icon, ...props }) => { 9 | const [component, setComponent] = useState(null); 10 | 11 | useEffect(() => { 12 | import(`../../public/assets/icons/${icon}.svg`).then((module) => { 13 | setComponent((module.default as any)(props)); 14 | }); 15 | }, [icon]); 16 | 17 | return component; 18 | }; 19 | 20 | export default Icon; 21 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2021", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true 17 | }, 18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 19 | "exclude": ["node_modules"] 20 | } 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | 36 | # typescript 37 | *.tsbuildinfo 38 | 39 | .idea 40 | .env -------------------------------------------------------------------------------- /pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NextDocument, { Html, Head, Main, NextScript } from "next/document"; 3 | import { getCssText } from "../stitches.config"; 4 | 5 | export default class Document extends NextDocument { 6 | render() { 7 | return ( 8 | 9 | 10 |