├── .nvmrc ├── .env.production ├── vercel.json ├── .github ├── FUNDING.yml └── renovate.json ├── .prettierrc ├── .yarnrc.yml ├── assets ├── Inter-Medium.ttf └── Inter-ExtraBold.ttf ├── postcss.config.js ├── public ├── favicons │ ├── favicon.ico │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── favicon-180x180.png │ └── favicon-192x192.png ├── backgrounds │ ├── neuron.png │ ├── join-hands.png │ ├── discord.svg │ ├── join-mobile.svg │ ├── join.svg │ └── top-border.svg ├── examples │ └── asymetry.jpg ├── icons │ ├── plus.svg │ ├── arrow-light.svg │ ├── arrow-dark.svg │ ├── calendar-light.svg │ ├── plus-outline-light.svg │ ├── calendar-dark.svg │ ├── plus-outline-dark.svg │ ├── email.svg │ ├── twitter.svg │ ├── github.svg │ ├── discord.svg │ └── discord-logotype.svg └── logos │ ├── logo-primary.svg │ ├── logo-secondary.svg │ ├── logomark-primary.svg │ └── logomark-secondary.svg ├── content ├── events │ ├── ptsd-awareness-day.mdx │ ├── insomnia-awareness-day.mdx │ ├── world-schizophrenia-day.mdx │ ├── world-dyslexia-day.mdx │ ├── adhd-awareness-month.mdx │ ├── post-traumatic-stress-disorder-month.mdx │ ├── word-autism-awareness-day.mdx │ ├── dyscalculia-awareness-day.mdx │ ├── borderline-personality-disorder-awareness-month.mdx │ ├── mental-health-awareness-month.mdx │ ├── world-mental-health-day.mdx │ ├── ocd-awareness-week.mdx │ ├── world-bipolar-day.mdx │ ├── insomnia-awareness-night.mdx │ ├── dissociative-identity-disorder-awareness.mdx │ ├── stress-awareness-month.mdx │ └── dyslexia-awareness-month.mdx └── pages │ ├── dyscalculia.mdx │ ├── dyslexia.mdx │ ├── insomnia.mdx │ ├── ocd.mdx │ ├── adhd.mdx │ ├── did.mdx │ ├── autism.mdx │ ├── anxiety.mdx │ └── bipolar.mdx ├── next-sitemap.config.js ├── app ├── components │ ├── Main.tsx │ ├── Text.tsx │ ├── TopBar.tsx │ ├── Header.tsx │ ├── LinkGrid.tsx │ ├── ContentImage.tsx │ ├── List.tsx │ ├── ExternalLink.tsx │ ├── PrefersReducedMotion.tsx │ ├── ContentInset.tsx │ ├── InternalLink.tsx │ ├── DocLinkBanner.tsx │ ├── Bounce.tsx │ ├── Button.tsx │ ├── IconButton.tsx │ ├── Typography.tsx │ ├── LinkGridItem.tsx │ ├── Navbar.tsx │ ├── DonateDropdown.tsx │ └── Footer.tsx ├── sitemap.xml │ └── route.ts ├── [slug] │ ├── components │ │ ├── QuoteGroup.tsx │ │ ├── Definition.tsx │ │ ├── icons │ │ │ ├── check.svg │ │ │ └── cross.svg │ │ ├── Quote.tsx │ │ ├── Mdx.tsx │ │ ├── WrongRight.tsx │ │ └── DefinitionItem.tsx │ ├── not-found.tsx │ ├── useHeight.ts │ └── page.tsx ├── not-found.tsx ├── calendar │ ├── Tag.tsx │ ├── icons │ │ └── new.svg │ ├── components │ │ └── EventItem.tsx │ ├── page.tsx │ └── [slug] │ │ └── page.tsx ├── useReducedMotion.ts ├── global.css ├── useOnClickOutside.ts ├── api │ └── og │ │ ├── join │ │ └── route.tsx │ │ ├── start │ │ └── route.tsx │ │ └── default │ │ └── route.tsx ├── layout.tsx ├── page.tsx └── join │ └── page.tsx ├── .vscode └── settings.json ├── next-env.d.ts ├── proxy.ts ├── .gitignore ├── tsconfig.json ├── CONTRIBUTING.md ├── LICENSE ├── eslint.config.mjs ├── next.config.mjs ├── tailwind.config.js ├── package.json ├── README.md ├── contentlayer.config.js └── CODE_OF_CONDUCT.md /.nvmrc: -------------------------------------------------------------------------------- 1 | 24.12.0 2 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | # .env.production 2 | NEXT_PUBLIC_VERCEL_URL=${VERCEL_URL} -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "github": { 3 | "silent": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: alvarlagerlof 2 | custom: https://www.buymeacoffee.com/alvar 3 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "importOrder": ["^[./]"], 3 | "importOrderSeparation": true 4 | } 5 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-4.12.0.cjs 4 | -------------------------------------------------------------------------------- /assets/Inter-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/assets/Inter-Medium.ttf -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /assets/Inter-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/assets/Inter-ExtraBold.ttf -------------------------------------------------------------------------------- /public/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/favicons/favicon.ico -------------------------------------------------------------------------------- /public/backgrounds/neuron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/backgrounds/neuron.png -------------------------------------------------------------------------------- /public/examples/asymetry.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/examples/asymetry.jpg -------------------------------------------------------------------------------- /public/backgrounds/join-hands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/backgrounds/join-hands.png -------------------------------------------------------------------------------- /public/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/favicons/favicon-96x96.png -------------------------------------------------------------------------------- /public/favicons/favicon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/favicons/favicon-180x180.png -------------------------------------------------------------------------------- /public/favicons/favicon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alvarlagerlof/neurodiversity/HEAD/public/favicons/favicon-192x192.png -------------------------------------------------------------------------------- /content/events/ptsd-awareness-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: PTSD Awareness Day 3 | startDate: June 27 4 | length: day 5 | condition: 6 | name: PTSD 7 | --- 8 | -------------------------------------------------------------------------------- /next-sitemap.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | siteUrl: "https://neurodiversity.wiki", 3 | exclude: ["/next-banner-layouts/*", "/500"], 4 | }; 5 | -------------------------------------------------------------------------------- /app/components/Main.tsx: -------------------------------------------------------------------------------- 1 | export function Main({ children }: { children: React.ReactNode }) { 2 | return
{children}
; 3 | } 4 | -------------------------------------------------------------------------------- /app/components/Text.tsx: -------------------------------------------------------------------------------- 1 | export function Text({ children }: { children: React.ReactNode }) { 2 | return

{children}

; 3 | } 4 | -------------------------------------------------------------------------------- /content/events/insomnia-awareness-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Insomnia Awareness Day 3 | startDate: March 11 4 | length: day 5 | condition: 6 | name: Insomnia 7 | --- 8 | -------------------------------------------------------------------------------- /app/components/TopBar.tsx: -------------------------------------------------------------------------------- 1 | export function TopBar() { 2 | return ( 3 |
4 | ); 5 | } 6 | -------------------------------------------------------------------------------- /content/events/world-schizophrenia-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: World Schizophrenia Day 3 | startDate: May 24 4 | length: day 5 | condition: 6 | name: schizophrenia 7 | --- 8 | -------------------------------------------------------------------------------- /app/sitemap.xml/route.ts: -------------------------------------------------------------------------------- 1 | export async function GET() { 2 | return new Response(`User-agent: * 3 | Allow: / 4 | 5 | Sitemap: https://neurodiversity.wiki/sitemap.xml`); 6 | } 7 | -------------------------------------------------------------------------------- /content/events/world-dyslexia-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: World Dyslexia Day 3 | startDate: Oct 4 4 | length: day 5 | condition: 6 | name: Dyslexia 7 | linkedPage: dyslexia 8 | --- 9 | -------------------------------------------------------------------------------- /content/events/adhd-awareness-month.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: ADHD Awareness Month 3 | startDate: October 1 4 | length: month 5 | condition: 6 | name: ADHD 7 | linkedPage: adhd 8 | --- 9 | -------------------------------------------------------------------------------- /content/events/post-traumatic-stress-disorder-month.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Post Traumatic Stress Disorder (PTSD) Month 3 | startDate: June 1 4 | length: month 5 | condition: 6 | name: PTSD 7 | --- 8 | -------------------------------------------------------------------------------- /content/events/word-autism-awareness-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: World Autism Awareness Day 3 | startDate: April 2 4 | length: day 5 | condition: 6 | name: Autism 7 | linkedPage: autism 8 | --- 9 | -------------------------------------------------------------------------------- /content/events/dyscalculia-awareness-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: World Dyscalculia Day 3 | startDate: March 3 4 | length: day 5 | condition: 6 | name: Dyscalculia 7 | linkedPage: dyscalculia 8 | --- 9 | -------------------------------------------------------------------------------- /public/icons/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /content/events/borderline-personality-disorder-awareness-month.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Borderline Personality Disorder Awareness Month 3 | startDate: May 1 4 | length: month 5 | condition: 6 | name: Borderline Personality Disorder 7 | --- 8 | -------------------------------------------------------------------------------- /app/components/Header.tsx: -------------------------------------------------------------------------------- 1 | export function Header({ children }: { children: React.ReactNode }) { 2 | return ( 3 |
4 | {children} 5 |
6 | ); 7 | } 8 | -------------------------------------------------------------------------------- /public/icons/arrow-light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/[slug]/components/QuoteGroup.tsx: -------------------------------------------------------------------------------- 1 | export function QuoteGroup({ children }: { children: React.ReactNode }) { 2 | return ( 3 | 6 | ); 7 | } 8 | -------------------------------------------------------------------------------- /app/components/LinkGrid.tsx: -------------------------------------------------------------------------------- 1 | export function LinkGrid({ children }: { children: React.ReactNode }) { 2 | return ( 3 | 6 | ); 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib", 3 | "typescript.enablePromptUseWorkspaceTsdk": true, 4 | "files.exclude": { 5 | ".contentlayer/.cache/**": true, 6 | ".contentlayer/generated/**": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /public/icons/arrow-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/[slug]/components/Definition.tsx: -------------------------------------------------------------------------------- 1 | export function Definition({ children }: { children: React.ReactNode }) { 2 | return ( 3 |
4 | {children} 5 |
6 | ); 7 | } 8 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | import "./.next/types/routes.d.ts"; 4 | 5 | // NOTE: This file should not be edited 6 | // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. 7 | -------------------------------------------------------------------------------- /app/[slug]/components/icons/check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { Text } from "./components/Text"; 2 | import { Typography } from "./components/Typography"; 3 | 4 | export default function PageNotFound() { 5 | return ( 6 | <> 7 | 404 8 | Page not found 9 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /app/[slug]/not-found.tsx: -------------------------------------------------------------------------------- 1 | import { Text } from "../components/Text"; 2 | import { Typography } from "../components/Typography"; 3 | 4 | export default function PageNotFound() { 5 | return ( 6 | <> 7 | 404 8 | Page not found 9 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /content/events/mental-health-awareness-month.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Mental Health Awareness Month 3 | startDate: May 1 4 | length: month 5 | organization: 6 | name: Mental Health America 7 | website: https://www.mhanational.org/mental-health-month 8 | logo: https://www.mhanational.org/themes/gavias_colin/logo-white.png 9 | --- 10 | -------------------------------------------------------------------------------- /content/events/world-mental-health-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: World Mental Health Day 3 | startDate: October 10 4 | length: day 5 | organization: 6 | name: World Health Organization 7 | website: https://www.who.int/campaigns/world-mental-health-day 8 | logo: https://www.iswa.org/wp-content/uploads/2021/12/logo-who2.jpg 9 | --- 10 | -------------------------------------------------------------------------------- /public/icons/calendar-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /public/icons/plus-outline-light.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/icons/calendar-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /public/icons/plus-outline-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /content/events/ocd-awareness-week.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: OCD Awareness Week 3 | startDate: October 10 4 | length: week 5 | organization: 6 | name: OCD Foundation 7 | website: https://iocdf.org/programs/ocdweek/ 8 | logo: https://iocdf.org/wp-content/uploads/2010/10/logo-og.png 9 | condition: 10 | name: OCD 11 | linkedPage: ocd 12 | --- 13 | -------------------------------------------------------------------------------- /app/components/ContentImage.tsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | export function ContentImage(props) { 4 | return ( 5 | // eslint-disable-next-line jsx-a11y/alt-text 6 | 12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /public/icons/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /content/events/world-bipolar-day.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: World Bipolar Day 3 | startDate: March 30 4 | length: day 5 | condition: 6 | name: Bipolar 7 | linkedPage: bipolar 8 | organization: 9 | name: International Bipolar Foundation 10 | website: https://www.isbd.org/world-bipolar-day 11 | logo: https://ibpf.org/wp-content/uploads/2022/04/IBPF_LOGO.png 12 | --- 13 | -------------------------------------------------------------------------------- /app/[slug]/components/icons/cross.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/calendar/Tag.tsx: -------------------------------------------------------------------------------- 1 | export function Tag({ 2 | children, 3 | className, 4 | }: { 5 | children: React.ReactNode; 6 | className?: string; 7 | }) { 8 | return ( 9 |

15 | {children} 16 |

17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /content/events/insomnia-awareness-night.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Insomnia Awareness Night 3 | startDate: June 21 4 | length: day 5 | condition: 6 | name: Insomnia 7 | organization: 8 | name: AASM 9 | website: https://sleepeducation.org/get-involved/campaigns/insomnia-awareness-night 10 | logo: https://j2vjt3dnbra3ps7ll1clb4q2-wpengine.netdna-ssl.com/wp-content/uploads/2019/07/2019_aasm_logo.svg 11 | --- 12 | -------------------------------------------------------------------------------- /app/components/List.tsx: -------------------------------------------------------------------------------- 1 | function Ordered({ children }: { children: React.ReactNode }) { 2 | return
    {children}
; 3 | } 4 | 5 | function Unordered({ children }: { children: React.ReactNode }) { 6 | return
    {children}
; 7 | } 8 | 9 | const List = { 10 | Ordered, 11 | Unordered, 12 | }; 13 | 14 | export { List }; 15 | -------------------------------------------------------------------------------- /content/events/dissociative-identity-disorder-awareness.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Dissociative Identity Disorder Awareness Day 3 | startDate: March 5 4 | length: day 5 | condition: 6 | name: Dissociative Identity Disorder 7 | linkedPage: did 8 | organization: 9 | name: ISSTD 10 | website: https://news.isst-d.org/did-awareness-day-march-5/ 11 | logo: https://www.isst-d.org/wp-content/themes/isstd/assets/img/logo.svg?t=1548192155 12 | --- 13 | -------------------------------------------------------------------------------- /content/events/stress-awareness-month.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Stress Awareness Month 3 | startDate: April 1 4 | length: month 5 | organization: 6 | name: National Institutes of Health 7 | website: https://hr.nih.gov/working-nih/civil/national-stress-awareness-month#:~:text=April%20is%20National%20Stress%20Awareness,or%20emotional%20strain%20or%20tension. 8 | logo: https://i0.wp.com/atascaderonews.com/wp-content/uploads/NIH-logo.jpeg?fit=600%2C216&ssl=1 9 | --- 10 | -------------------------------------------------------------------------------- /app/[slug]/components/Quote.tsx: -------------------------------------------------------------------------------- 1 | export function Quote({ children }: { children: React.ReactNode }) { 2 | return ( 3 |
4 | 5 | “ 6 | 7 | {/* Needed because mdx parses content as p, adding mb-4 */} 8 | {children} 9 |
10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /proxy.ts: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server"; 2 | import type { NextRequest } from "next/server"; 3 | 4 | export function proxy(request: NextRequest) { 5 | if (request.headers.get("Host") == "www.notocd.com") { 6 | return new NextResponse(null, { 7 | status: 301, 8 | headers: { 9 | Location: "https://neurodiversity.wiki/ocd?utm_source=notocd.com", 10 | }, 11 | }); 12 | } 13 | 14 | return NextResponse.next(); 15 | } 16 | -------------------------------------------------------------------------------- /app/components/ExternalLink.tsx: -------------------------------------------------------------------------------- 1 | interface ExternalLinkProps { 2 | href: string; 3 | children: React.ReactNode; 4 | } 5 | 6 | export function ExternalLink({ href, children }: ExternalLinkProps) { 7 | return ( 8 | 14 | {children} 15 | 16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /app/components/PrefersReducedMotion.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useReducedMotion } from "app/useReducedMotion"; 4 | import { useEffect } from "react"; 5 | import { Globals } from "react-spring"; 6 | 7 | export function PrefersReducedMotion() { 8 | const prefersReducedMotion = useReducedMotion(); 9 | 10 | useEffect(() => { 11 | Globals.assign({ 12 | skipAnimation: prefersReducedMotion, 13 | }); 14 | }, [prefersReducedMotion]); 15 | 16 | return null; 17 | } 18 | -------------------------------------------------------------------------------- /content/events/dyslexia-awareness-month.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Dyslexia Awareness Month 3 | startDate: October 1 4 | length: month 5 | condition: 6 | name: Dyslexia 7 | linkedPage: dyslexia 8 | organization: 9 | name: The International Dyslexia Association 10 | website: https://dyslexiaida.org/october-is-dyslexia-awareness-month-2/ 11 | logo: https://1xwltg429wbz1nv5201c3cao-wpengine.netdna-ssl.com/wp-content/uploads/2019/10/cropped-IDA-Logo-Horizontal-NEW-e1570635042229-1.png 12 | --- 13 | -------------------------------------------------------------------------------- /app/components/ContentInset.tsx: -------------------------------------------------------------------------------- 1 | interface ContentInsetProps { 2 | size: "wide" | "normal"; 3 | children: React.ReactNode; 4 | } 5 | 6 | export function ContentInset({ size, children }: ContentInsetProps) { 7 | const classes = { 8 | wide: "max-w-4xl w-full sm:w-11/12", 9 | normal: "max-w-3xl w-full sm:w-10/12", 10 | }; 11 | 12 | return ( 13 |
14 |
{children}
15 |
16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /app/components/InternalLink.tsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | interface InternalLinkProps { 4 | href: string; 5 | external?: boolean; 6 | children: React.ReactNode; 7 | } 8 | 9 | export function InternalLink({ 10 | href, 11 | external = false, 12 | children, 13 | }: InternalLinkProps) { 14 | return ( 15 | 21 | {children} 22 | 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /app/components/DocLinkBanner.tsx: -------------------------------------------------------------------------------- 1 | import { ExternalLink } from "./ExternalLink"; 2 | import { Typography } from "./Typography"; 3 | 4 | export function DocLinkBanner({ url }: { url: string }) { 5 | return ( 6 | <> 7 |
11 |
12 | 13 | The contents of this page is based on a Google doc. Feel free to{" "} 14 | suggest changes. 15 | 16 |
17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /public/icons/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.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 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env.local 30 | .env.development.local 31 | .env.test.local 32 | .env.production.local 33 | 34 | # vercel 35 | .vercel 36 | /public/sitemap.xml 37 | /public/sitemap-0.xml 38 | /public/robots.txt 39 | 40 | 41 | .contentlayer -------------------------------------------------------------------------------- /app/useReducedMotion.ts: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from "react"; 2 | 3 | const QUERY = "(prefers-reduced-motion: no-preference)"; 4 | 5 | export function useReducedMotion() { 6 | const [prefersReducedMotion, setPrefersReducedMotion] = useState(true); 7 | 8 | useEffect(() => { 9 | const mediaQueryList = window.matchMedia(QUERY); 10 | 11 | setPrefersReducedMotion(!window.matchMedia(QUERY).matches); 12 | 13 | const listener = (event) => { 14 | setPrefersReducedMotion(!event.matches); 15 | }; 16 | 17 | mediaQueryList.addListener(listener); 18 | 19 | return () => { 20 | mediaQueryList.removeListener(listener); 21 | }; 22 | }, []); 23 | return prefersReducedMotion; 24 | } 25 | -------------------------------------------------------------------------------- /public/icons/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/components/Bounce.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useState } from "react"; 4 | import { useSpring, animated } from "react-spring"; 5 | 6 | interface BounceProps { 7 | amount: number; 8 | className?: string; 9 | children: React.ReactNode; 10 | } 11 | 12 | export function Bounce({ amount, className, children }: BounceProps) { 13 | const [isHovering, setIsHovering] = useState(false); 14 | 15 | const styles = useSpring({ 16 | config: { mass: 1, tension: 180, friction: 12 }, 17 | transform: isHovering ? `scale(${amount})` : "scale(1)", 18 | display: "inline-block", 19 | }); 20 | 21 | return ( 22 | setIsHovering(true)} 24 | onMouseLeave={() => setIsHovering(false)} 25 | style={styles} 26 | className={className} 27 | > 28 | {children} 29 | 30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /app/[slug]/useHeight.ts: -------------------------------------------------------------------------------- 1 | import { useState, useEffect, useLayoutEffect } from "react"; 2 | 3 | const useIsomorphicLayoutEffect = 4 | typeof window !== "undefined" ? useLayoutEffect : useEffect; 5 | 6 | export function useHeight(ref) { 7 | const [height, setHeight] = useState(0); 8 | 9 | useIsomorphicLayoutEffect(() => { 10 | if (ref.current) { 11 | const measure = () => { 12 | window.requestAnimationFrame(() => { 13 | setHeight(ref.current.getBoundingClientRect().height); 14 | }); 15 | }; 16 | 17 | measure(); 18 | 19 | window.addEventListener("resize", measure); 20 | window.addEventListener("scroll", measure); 21 | 22 | return () => { 23 | window.removeEventListener("resize", measure); 24 | window.removeEventListener("scroll", measure); 25 | }; 26 | } 27 | }, [ref]); 28 | 29 | return height; 30 | } 31 | -------------------------------------------------------------------------------- /app/global.css: -------------------------------------------------------------------------------- 1 | @import 'tailwindcss'; 2 | 3 | @config '../tailwind.config.js'; 4 | 5 | /* 6 | The default border color has changed to `currentColor` in Tailwind CSS v4, 7 | so we've added these compatibility styles to make sure everything still 8 | looks the same as it did with Tailwind CSS v3. 9 | 10 | If we ever want to remove these styles, we need to add an explicit border 11 | color utility to any element that depends on these defaults. 12 | */ 13 | @layer base { 14 | *, 15 | ::after, 16 | ::before, 17 | ::backdrop, 18 | ::file-selector-button { 19 | border-color: var(--color-gray-200, currentColor); 20 | } 21 | } 22 | 23 | * { 24 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 25 | } 26 | 27 | *::selection { 28 | background: var(--color-highlight-light); 29 | } 30 | 31 | @media (prefers-color-scheme: dark) { 32 | *::selection { 33 | background: var(--color-highlight-dark); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "timezone": "Europe/Stockholm", 4 | "rangeStrategy": "pin", 5 | "platformAutomerge": true, 6 | "lockFileMaintenance": { 7 | "enabled": true, 8 | "automerge": true, 9 | "automergeType": "pr" 10 | }, 11 | "schedule": ["every weekend"], 12 | "vulnerabilityAlerts": { 13 | "schedule": null 14 | }, 15 | "rebaseWhen": "conflicted", 16 | "packageRules": [ 17 | { 18 | "matchUpdateTypes": ["minor", "patch", "pin", "digest"], 19 | "automerge": true 20 | }, 21 | { 22 | "matchUpdateTypes": ["major"] 23 | }, 24 | { 25 | "matchPackagePatterns": ["contentlayer"], 26 | "groupName": "contentlayer packages" 27 | }, 28 | { 29 | "matchPackagePatterns": ["react", "react-dom"], 30 | "groupName": "react" 31 | }, 32 | { 33 | "matchPackagePatterns": ["next"], 34 | "groupName": "next" 35 | } 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "target": "es5", 5 | "lib": [ 6 | "dom", 7 | "dom.iterable", 8 | "esnext" 9 | ], 10 | "allowJs": true, 11 | "skipLibCheck": true, 12 | "strict": false, 13 | "forceConsistentCasingInFileNames": true, 14 | "noEmit": true, 15 | "esModuleInterop": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "jsx": "react-jsx", 21 | "incremental": true, 22 | "plugins": [ 23 | { 24 | "name": "next" 25 | } 26 | ], 27 | "paths": { 28 | "contentlayer/generated": [ 29 | "./.contentlayer/generated" 30 | ] 31 | }, 32 | "strictNullChecks": true 33 | }, 34 | "include": [ 35 | "next-env.d.ts", 36 | "**/*.ts", 37 | "**/*.tsx", 38 | ".next/types/**/*.ts", 39 | ".contentlayer/generated", 40 | "next.config.mjs", 41 | ".next/dev/types/**/*.ts" 42 | ], 43 | "exclude": [ 44 | "node_modules" 45 | ] 46 | } 47 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to this repository 2 | 3 | ## Introduction 4 | 5 | - This site is built with Next.js, TailwindCSS and MDX 6 | - Check out the existing issues for ways to contribute 7 | - Please make sure you format your code with the styles specified in `.prettierrc`. If you run prettier it should do this for you. 8 | 9 | ## Have a new feature request or see a bug? 10 | 11 | Create a new issue! On the issue we can discuss the problem and assign the work. 12 | 13 | ## Runinng locally 14 | 15 | ```bash 16 | yarn install 17 | yarn dev 18 | ``` 19 | 20 | Open [http://localhost:3000](http://localhost:3000) in your browser to see the site. 21 | 22 | ### Branch naming guidelines 23 | 24 | - feature/{change}: For new features/improvements 25 | - fix/{change}: For fixes 26 | 27 | ## Ready to contribute? 28 | 29 | 1. Create an issue or comment on one to claim it 30 | 2. Create a fork of the repo 31 | 3. Make a new branch following the branch naming guidelines above 32 | 4. Work on your fork, then open a pull request. Tag the issue in your pull request 33 | 5. Your PR will be reviewed, and if it is approved it will be merged into `main` 34 | -------------------------------------------------------------------------------- /app/useOnClickOutside.ts: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | 3 | export function useOnClickOutside(ref, handler) { 4 | useEffect( 5 | () => { 6 | const listener = (event) => { 7 | // Do nothing if clicking ref's element or descendent elements 8 | if (!ref.current || ref.current.contains(event.target)) { 9 | return; 10 | } 11 | handler(event); 12 | }; 13 | document.addEventListener("mousedown", listener); 14 | document.addEventListener("touchstart", listener); 15 | return () => { 16 | document.removeEventListener("mousedown", listener); 17 | document.removeEventListener("touchstart", listener); 18 | }; 19 | }, 20 | // Add ref and handler to effect dependencies 21 | // It's worth noting that because passed in handler is a new ... 22 | // ... function on every render that will cause this effect ... 23 | // ... callback/cleanup to run every render. It's not a big deal ... 24 | // ... but to optimize you can wrap handler in useCallback before ... 25 | // ... passing it into this hook. 26 | [ref, handler], 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Alvar Lagerlöf 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /public/logos/logo-primary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/logos/logo-secondary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { dirname } from "path"; 2 | import { fileURLToPath } from "url"; 3 | import { FlatCompat } from "@eslint/eslintrc"; 4 | 5 | import * as mdx from "eslint-plugin-mdx"; 6 | 7 | const __filename = fileURLToPath(import.meta.url); 8 | const __dirname = dirname(__filename); 9 | 10 | const compat = new FlatCompat({ 11 | baseDirectory: __dirname, 12 | }); 13 | 14 | const eslintConfig = [ 15 | ...compat.extends("next/core-web-vitals", "next/typescript"), 16 | { 17 | rules: { 18 | "react/no-unescaped-entities": "off", 19 | }, 20 | }, 21 | { 22 | ...mdx.flat, 23 | // optional, if you want to lint code blocks at the same 24 | processor: mdx.createRemarkProcessor({ 25 | lintCodeBlocks: true, 26 | // optional, if you want to disable language mapper, set it to `false` 27 | // if you want to override the default language mapper inside, you can provide your own 28 | languageMapper: {}, 29 | }), 30 | }, 31 | { 32 | ...mdx.flatCodeBlocks, 33 | rules: { 34 | ...mdx.flatCodeBlocks.rules, 35 | // if you want to override some rules for code blocks 36 | "no-var": "error", 37 | "prefer-const": "error", 38 | }, 39 | }, 40 | ]; 41 | 42 | export default eslintConfig; 43 | -------------------------------------------------------------------------------- /app/[slug]/components/Mdx.tsx: -------------------------------------------------------------------------------- 1 | import { MDXRemote } from "next-mdx-remote/rsc"; 2 | 3 | import { ContentImage } from "../../components/ContentImage"; 4 | import { DocLinkBanner } from "../../components/DocLinkBanner"; 5 | import { ExternalLink } from "../../components/ExternalLink"; 6 | import { Header } from "../../components/Header"; 7 | import { List } from "../../components/List"; 8 | import { Main } from "../../components/Main"; 9 | import { Text } from "../../components/Text"; 10 | import { Typography } from "../../components/Typography"; 11 | import { Definition } from "./Definition"; 12 | import { DefinitionItem } from "./DefinitionItem"; 13 | import { Quote } from "./Quote"; 14 | import { QuoteGroup } from "./QuoteGroup"; 15 | import { WrongRight } from "./WrongRight"; 16 | 17 | const components = { 18 | h1: Typography.Title, 19 | h2: Typography.Heading, 20 | ul: List.Unordered, 21 | ol: List.Ordered, 22 | a: ExternalLink, 23 | p: Text, 24 | blockquote: Quote, 25 | img: ContentImage, 26 | Quote, 27 | Header, 28 | Main, 29 | QuoteGroup, 30 | WrongRight, 31 | Definition, 32 | DefinitionItem, 33 | DocLinkBanner, 34 | ContentImage, 35 | }; 36 | 37 | export async function MDX({ source }: { source: string }) { 38 | return ; 39 | } 40 | -------------------------------------------------------------------------------- /app/components/Button.tsx: -------------------------------------------------------------------------------- 1 | import { ElementType, forwardRef } from "react"; 2 | import type { JSX } from "react"; 3 | 4 | import { Bounce } from "./Bounce"; 5 | 6 | interface ButtonProps { 7 | as?: ElementType; 8 | className?: string; 9 | variant?: "primary" | "secondary"; 10 | children: React.ReactNode; 11 | [x: string]: unknown; 12 | } 13 | 14 | const Button = forwardRef( 15 | ( 16 | { 17 | as = "button", 18 | className = "", 19 | variant = "primary", 20 | children, 21 | ...props 22 | }: ButtonProps, 23 | ref, 24 | ) => { 25 | const Tag = as as keyof JSX.IntrinsicElements; 26 | 27 | const baseStyle = `py-2 px-5 rounded-full font-medium ${className} `; 28 | const variants = { 29 | primary: `${baseStyle} bg-button-primary-light dark:bg-button-primary-dark text-text-dark`, 30 | secondary: `${baseStyle} bg-button-secondary-light dark:bg-button-secondary-dark text-text-light`, 31 | }; 32 | 33 | return ( 34 |
35 | 36 | 37 | {children} 38 | 39 | 40 |
41 | ); 42 | }, 43 | ); 44 | 45 | Button.displayName = "Button"; 46 | 47 | export { Button }; 48 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | import { withContentlayer } from "next-contentlayer"; 3 | 4 | const config = withContentlayer({ 5 | pageExtensions: ["js", "jsx", "mdx", "tsx", "ts"], 6 | async redirects() { 7 | return [ 8 | { 9 | source: "/asd", 10 | destination: "/autism", 11 | permanent: false, 12 | }, 13 | { 14 | source: "/aspergers", 15 | destination: "/autism", 16 | permanent: false, 17 | }, 18 | { 19 | source: "/bp", 20 | destination: "/bipolar", 21 | permanent: false, 22 | }, 23 | { 24 | source: "/mpd", 25 | destination: "/did", 26 | permanent: false, 27 | }, 28 | { 29 | source: "/anxietydisorder", 30 | destination: "/anxiety", 31 | permanent: false, 32 | }, 33 | { 34 | source: "/sleeplessness", 35 | destination: "/insomnia", 36 | permanent: false, 37 | }, 38 | ]; 39 | }, 40 | async rewrites() { 41 | return [ 42 | { 43 | source: "/js/script.outbound-links.js", 44 | destination: "https://plausible.io/js/script.outbound-links.js", 45 | }, 46 | { 47 | source: "/api/event", 48 | destination: "https://plausible.io/api/event", 49 | }, 50 | ]; 51 | }, 52 | }); 53 | 54 | export default config; 55 | -------------------------------------------------------------------------------- /public/backgrounds/discord.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | mode: "jit", 3 | content: [ 4 | "./pages/**/*.{js,ts,jsx,tsx}", 5 | "./components/**/*.{js,ts,jsx,tsx}", 6 | "./app/**/*.{js,ts,jsx,tsx}", 7 | ], 8 | darkMode: "media", 9 | theme: { 10 | backgroundImage: { 11 | join: "url('/backgrounds/join.svg')", 12 | "join-mobile": "url('/backgrounds/join-mobile.svg')", 13 | "top-bar": "url('/backgrounds/top-border.svg')", 14 | discord: "url('/backgrounds/discord.svg')", 15 | }, 16 | extend: { 17 | colors: { 18 | "primary-light": "#860091", 19 | "primary-dark": "#9a00a8", 20 | "secondary-light": "#FFEEE5", 21 | "secondary-dark": "#1a1817", 22 | "button-primary-light": "#860091", 23 | "button-primary-dark": "#9a00a8", 24 | "button-secondary-light": "#e9d0c3", 25 | "button-secondary-dark": "#e9d0c3", 26 | "highlight-light": "rgba(194, 65, 25, 0.2)", 27 | "highlight-dark": "rgba(194, 65, 25, 0.2)", 28 | "card-light": "white", 29 | "card-dark": "#2b2927", 30 | "divider-light": "black", 31 | "divider-dark": "#5d5d5d", 32 | "background-light": "#FFEEE5", 33 | "background-dark": "#181411", 34 | "text-light": "black", 35 | "text-dark": "white", 36 | "text-body-light": "#191919", 37 | "text-body-dark": "#c1c1c1", 38 | }, 39 | }, 40 | }, 41 | plugins: [], 42 | }; 43 | -------------------------------------------------------------------------------- /app/[slug]/components/WrongRight.tsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | 3 | import { Typography } from "../../components/Typography"; 4 | import check from "./icons/check.svg"; 5 | import cross from "./icons/cross.svg"; 6 | 7 | interface WrongRightProps { 8 | title: string; 9 | wrong: React.ReactNode; 10 | right: React.ReactNode; 11 | } 12 | 13 | export function WrongRight({ title, wrong, right }: WrongRightProps) { 14 | return ( 15 |
16 |
17 | 18 | {title} is not: 19 | 20 | {wrong} 21 |
22 | 23 |
24 | 25 | {title} is: 26 | 27 | {right} 28 |
29 |
30 | ); 31 | } 32 | 33 | interface IconHeadingProps { 34 | variant: "cross" | "check"; 35 | alt: string; 36 | children: React.ReactNode; 37 | } 38 | 39 | function IconHeading({ variant, alt, children }: IconHeadingProps) { 40 | return ( 41 |
42 | {alt} 48 | {children} 49 |
50 | ); 51 | } 52 | -------------------------------------------------------------------------------- /app/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | import { allPages } from "contentlayer/generated"; 2 | import { Metadata } from "next"; 3 | import { notFound } from "next/navigation"; 4 | 5 | import { MDX } from "./components/Mdx"; 6 | 7 | export async function generateMetadata(props: { 8 | params: Promise<{ slug: string }>; 9 | }): Promise { 10 | const params = await props.params; 11 | const page = allPages.find((page) => page.slug === params.slug); 12 | 13 | if (!page || !page.meta) notFound(); 14 | 15 | return { 16 | title: `${page.meta.title} - Neurodiversity.wiki`, 17 | description: `${page.meta.description} Learn more here.`, 18 | openGraph: { 19 | title: `${page.meta.title} - Neurodiversity.wiki`, 20 | description: `${page.meta.description} Learn more here.`, 21 | images: `https://${ 22 | process.env.NEXT_PUBLIC_VERCEL_URL 23 | }/api/og/default?title=${encodeURIComponent( 24 | `${page.meta.title}`, 25 | )}&description=${encodeURIComponent( 26 | `${page.meta.description} Learn more here.`, 27 | )}`, 28 | }, 29 | }; 30 | } 31 | 32 | export default async function Page(props: { 33 | params: Promise<{ slug: string }>; 34 | }) { 35 | const params = await props.params; 36 | const page = allPages.find((page) => page.slug === params.slug); 37 | 38 | if (!page) notFound(); 39 | 40 | return ; 41 | } 42 | 43 | export async function generateStaticParams() { 44 | return allPages.map((page) => ({ 45 | slug: page.slug, 46 | })); 47 | } 48 | -------------------------------------------------------------------------------- /app/api/og/join/route.tsx: -------------------------------------------------------------------------------- 1 | import { ImageResponse } from "@vercel/og"; 2 | 3 | export const runtime = "edge"; 4 | 5 | export async function GET() { 6 | try { 7 | const interMediumFont = fetch( 8 | new URL("../../../../assets/Inter-Medium.ttf", import.meta.url), 9 | ).then((res) => res.arrayBuffer()); 10 | 11 | const description = 12 | "We're a small team working to educate the public through our crowd-sourced wiki. Join us to help contribute."; 13 | 14 | const interMediumFontData = await interMediumFont; 15 | 16 | return new ImageResponse( 17 | ( 18 |
19 | 24 | 30 |

31 | {description} 32 |

33 |
34 | ), 35 | { 36 | width: 1200, 37 | height: 630, 38 | fonts: [ 39 | { 40 | name: "Inter", 41 | data: interMediumFontData, 42 | style: "normal", 43 | weight: 500, 44 | }, 45 | ], 46 | }, 47 | ); 48 | } catch { 49 | return new Response(`Failed to generate the image`, { 50 | status: 500, 51 | }); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "neurodiversity", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev --webpack", 7 | "build": "next build --webpack", 8 | "postbuild": "next-sitemap", 9 | "start": "next start", 10 | "lint": "next lint" 11 | }, 12 | "browser": { 13 | "fs": false, 14 | "os": false, 15 | "path": false 16 | }, 17 | "dependencies": { 18 | "@vercel/og": "0.8.6", 19 | "contentlayer": "0.3.4", 20 | "markdown-wasm": "1.2.0", 21 | "next": "16.1.0", 22 | "next-contentlayer": "0.3.4", 23 | "next-mdx-remote": "5.0.0", 24 | "next-sitemap": "4.2.3", 25 | "react": "19.2.3", 26 | "react-dom": "19.2.3", 27 | "react-spring": "npm:@react-spring/web@10.0.3", 28 | "react-use-keypress": "1.4.0" 29 | }, 30 | "devDependencies": { 31 | "@eslint/eslintrc": "3.3.3", 32 | "@tailwindcss/postcss": "4.1.18", 33 | "@trivago/prettier-plugin-sort-imports": "6.0.0", 34 | "@types/marked": "6.0.0", 35 | "@types/react": "19.2.7", 36 | "eslint": "9.39.2", 37 | "eslint-config-next": "16.1.0", 38 | "eslint-config-prettier": "10.1.8", 39 | "eslint-plugin-import": "2.32.0", 40 | "eslint-plugin-mdx": "3.6.2", 41 | "eslint-plugin-prettier": "5.5.4", 42 | "fs": "0.0.1-security", 43 | "fs-extra": "11.3.3", 44 | "git-repo-info": "2.1.1", 45 | "gray-matter": "4.0.3", 46 | "luxon": "3.7.2", 47 | "marked": "17.0.1", 48 | "postcss": "8.5.6", 49 | "prettier": "3.7.4", 50 | "tailwindcss": "4.1.18", 51 | "typescript": "5.9.3" 52 | }, 53 | "resolutions": { 54 | "@types/react": "19.2.7" 55 | }, 56 | "packageManager": "yarn@4.12.0" 57 | } 58 | -------------------------------------------------------------------------------- /app/calendar/icons/new.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/components/IconButton.tsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import { ElementType, forwardRef } from "react"; 3 | import type { JSX } from "react"; 4 | 5 | import { Bounce } from "./Bounce"; 6 | 7 | interface IconButtonProps { 8 | as?: ElementType; 9 | className?: string; 10 | variant?: "primary" | "secondary"; 11 | src: string; 12 | alt: string; 13 | badge: boolean; 14 | [x: string]: unknown; 15 | } 16 | 17 | const IconButton = forwardRef( 18 | ( 19 | { 20 | as = "button", 21 | className = "", 22 | variant = "primary", 23 | badge = false, 24 | src, 25 | alt, 26 | ...props 27 | }: IconButtonProps, 28 | ref, 29 | ) => { 30 | const Tag = as as keyof JSX.IntrinsicElements; 31 | 32 | const baseStyle = `rounded-full block p-[7px] ${className}`; 33 | const variants = { 34 | primary: `${baseStyle} bg-primary`, 35 | secondary: `${baseStyle} bg-button-secondary-light dark:bg-button-secondary-dark`, 36 | }; 37 | 38 | return ( 39 |
40 | 41 | 42 | {alt} 43 | {badge && ( 44 |
49 | )} 50 | 51 | 52 |
53 | ); 54 | }, 55 | ); 56 | 57 | IconButton.displayName = "IconButton"; 58 | 59 | export { IconButton }; 60 | -------------------------------------------------------------------------------- /app/api/og/start/route.tsx: -------------------------------------------------------------------------------- 1 | import { ImageResponse } from "@vercel/og"; 2 | 3 | export const runtime = "edge"; 4 | 5 | export async function GET() { 6 | try { 7 | const interMediumFont = fetch( 8 | new URL("../../../../assets/Inter-Medium.ttf", import.meta.url), 9 | ).then((res) => res.arrayBuffer()); 10 | 11 | const description = 12 | "Learn about Autism, OCD, Bipolar, ADHD, Dyslexia and more on this crowdsourced guide."; 13 | 14 | const interMediumFontData = await interMediumFont; 15 | 16 | return new ImageResponse( 17 | ( 18 |
19 |
20 | 25 |

{description}

26 |
27 | 28 |
29 | 36 |
37 |
38 | ), 39 | { 40 | width: 1200, 41 | height: 630, 42 | fonts: [ 43 | { 44 | name: "Inter", 45 | data: interMediumFontData, 46 | style: "normal", 47 | weight: 500, 48 | }, 49 | ], 50 | }, 51 | ); 52 | } catch { 53 | return new Response(`Failed to generate the image`, { 54 | status: 500, 55 | }); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/components/Typography.tsx: -------------------------------------------------------------------------------- 1 | import { ElementType } from "react"; 2 | import type { JSX } from "react"; 3 | 4 | interface BaseProps { 5 | children: React.ReactNode; 6 | className?: string; 7 | as?: ElementType; 8 | } 9 | 10 | function Base({ children, className, as, ...props }: BaseProps) { 11 | const Tag = as as keyof JSX.IntrinsicElements; 12 | 13 | return ( 14 | 15 | {children} 16 | 17 | ); 18 | } 19 | 20 | function Title({ children, className = "", as = "h1", ...props }: BaseProps) { 21 | return ( 22 | 27 | {children} 28 | 29 | ); 30 | } 31 | 32 | function Subtitle({ 33 | children, 34 | className = "", 35 | as = "h2", 36 | ...props 37 | }: BaseProps) { 38 | return ( 39 | 44 | {children} 45 | 46 | ); 47 | } 48 | 49 | function Heading({ children, className = "", as = "h3", ...props }: BaseProps) { 50 | return ( 51 | 56 | {children} 57 | 58 | ); 59 | } 60 | 61 | function Body({ children, className = "", as = "p", ...props }: BaseProps) { 62 | return ( 63 | 68 | {children} 69 | 70 | ); 71 | } 72 | 73 | const Typography = { 74 | Title, 75 | Subtitle, 76 | Heading, 77 | Body, 78 | }; 79 | 80 | export { Typography }; 81 | -------------------------------------------------------------------------------- /public/backgrounds/join-mobile.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/components/LinkGridItem.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import Image from "next/image"; 4 | import Link from "next/link"; 5 | import { useRef } from "react"; 6 | 7 | import arrowDark from "../../public/icons/arrow-dark.svg"; 8 | import arrowLight from "../../public/icons/arrow-light.svg"; 9 | import { Bounce } from "./Bounce"; 10 | import { Typography } from "./Typography"; 11 | 12 | interface Props { 13 | href: string; 14 | title: string; 15 | description: string; 16 | } 17 | 18 | export function LinkGridItem({ href, title, description }: Props) { 19 | const link = useRef(null); 20 | 21 | return ( 22 |
  • 23 | 24 |
    { 26 | if (link.current && link.current !== e.target) { 27 | link.current.click(); 28 | } 29 | }} 30 | className={` 31 | h-full w-full flex flex-row items-start space-x-2 rounded-xl p-4 bg-white dark:bg-card-dark ring-primary transition 32 | shadow 33 | hover:shadow-md 34 | outline-hidden focus-visible:ring-3 cursor-pointer`} 35 | > 36 | 42 | 48 | 49 |
    50 | 51 | 52 | {title} 53 | 54 | 55 | {description} 56 |
    57 |
    58 |
    59 |
  • 60 | ); 61 | } 62 | -------------------------------------------------------------------------------- /public/backgrounds/join.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /public/icons/discord.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/backgrounds/top-border.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Logo](public/favicons/favicon-192x192.png) 2 | 3 | # Neurodiversity Wiki 4 | 5 | This website is a simple wiki about neurological conditions. As the site states: 6 | 7 | > Neurodiversity is a word that refers to the ways brains differ. These differences are grouped into conditions. This website helps you understand some common ones. 8 | 9 | ## Why? 10 | 11 | Neurodiversity Wiki is a crowdsourced website that aims to spread awareness about neurological conditions. We define neurodiversity as all the ways in which our brains work differently. 12 | 13 | There are millions of neurodiverse people in the world. Yet knowledge about most neurological conditions is often none or close to it. The lack of knowledge leads to stigmatization, insensitive jokes, misconceptions, and ableism. When understanding increases, there’s a chance that the former decreases. More people would also be comfortable telling others about themselves and asking for help. 14 | 15 | This website tackles the information problem by providing short and easy-to-read information. We believe that content should be short, and to the point. To maximize potential reach, it shouldn’t be a blog post, be written in medical language, be too long, be local to one country, or be buried deep behind marketing. We couldn’t find a website that fulfilled these goals, so we made one. 16 | 17 | ## Who are we? 18 | 19 | We’re a group of neurodiverse people who are collaborating on content aiming to spread knowledge and understanding about neurodiversity and various neurological conditions. We’re writing from our life experiences to help more people understand us. 20 | 21 | ## Want to join us? 22 | 23 | We’re a community looking for awesome people to join us. Neurodiverse people, writers, developers, designers and more are all welcome. 24 | 25 | [Joining the Discord server](https://discord.gg/48kqk6KcZ8) is the simplest way to help out. More options are listed on the [join page](https://neurodiversity.wiki/join) 26 | 27 | ## Contributing 28 | 29 | See [CONTRIBUTING.md](/CONTRIBUTING.md) for ways to get started. 30 | 31 | ## License 32 | 33 | [MIT](/LICENSE) 34 | -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata, Viewport } from "next"; 2 | import { Inter } from "next/font/google"; 3 | import Script from "next/script"; 4 | 5 | import { ContentInset } from "./components/ContentInset"; 6 | import { Footer } from "./components/Footer"; 7 | import { Navbar } from "./components/Navbar"; 8 | import { PrefersReducedMotion } from "./components/PrefersReducedMotion"; 9 | import { TopBar } from "./components/TopBar"; 10 | import "./global.css"; 11 | 12 | const inter = Inter({ 13 | subsets: ["latin"], 14 | }); 15 | 16 | export const revalidate = 120; 17 | 18 | export const metadata: Metadata = { 19 | twitter: { 20 | card: "summary_large_image", 21 | site: "@alvarlagerlof", 22 | creator: "@alvarlagerlof", 23 | }, 24 | openGraph: { 25 | type: "website", 26 | siteName: "neurodiversity.wiki", 27 | }, 28 | icons: [ 29 | { url: "/favicons/favicon.ico" }, 30 | { url: "/favicons/favicon-16x16.png", sizes: "16x16" }, 31 | { url: "/favicons/favicon-32x32.png", sizes: "32x32" }, 32 | { url: "/favicons/favicon-192x192.png", sizes: "192x192" }, 33 | ], 34 | }; 35 | 36 | export const viewport: Viewport = { 37 | themeColor: "#860091", 38 | }; 39 | 40 | export default function RootLayout({ children }: React.PropsWithChildren) { 41 | return ( 42 | 43 | 44 | 49 | 50 | 51 |
    52 |
    53 | 54 | 55 |
    56 | 57 |
    {children}
    58 |
    59 |
    60 |
    61 |
    62 |
    63 | 64 | 65 | ); 66 | } 67 | -------------------------------------------------------------------------------- /app/api/og/default/route.tsx: -------------------------------------------------------------------------------- 1 | import { ImageResponse } from "@vercel/og"; 2 | import { NextRequest } from "next/server"; 3 | 4 | export const runtime = "edge"; 5 | 6 | export async function GET(req: NextRequest) { 7 | try { 8 | const interMediumFont = fetch( 9 | new URL("../../../../assets/Inter-Medium.ttf", import.meta.url), 10 | ).then((res) => res.arrayBuffer()); 11 | 12 | const interExtraBoldFont = fetch( 13 | new URL("../../../../assets/Inter-ExtraBold.ttf", import.meta.url), 14 | ).then((res) => res.arrayBuffer()); 15 | 16 | const { searchParams } = new URL(req.url); 17 | 18 | const title = searchParams.has("title") 19 | ? searchParams.get("title")?.slice(0, 100) 20 | : "Neurodiversity Wiki"; 21 | 22 | const description = searchParams.has("description") 23 | ? searchParams.get("description")?.slice(0, 100) 24 | : "Learn about conditions like OCD, Autism, Bipolar, Anxiety, Dyslexia and more"; 25 | 26 | const interMediumFontData = await interMediumFont; 27 | const interExtraBoldFontData = await interExtraBoldFont; 28 | 29 | return new ImageResponse( 30 | ( 31 |
    32 | 37 |
    38 |

    30 41 | ? "text-[100px] font-extrabold leading-[6rem]" 42 | : "text-[80px] font-extrabold leading-[5.2rem]" 43 | } 44 | > 45 | {title} 46 |

    47 |

    48 | {description} 49 |

    50 |
    51 |
    52 | ), 53 | { 54 | width: 1200, 55 | height: 630, 56 | fonts: [ 57 | { 58 | name: "Inter", 59 | data: interMediumFontData, 60 | style: "normal", 61 | weight: 500, 62 | }, 63 | { 64 | name: "Inter", 65 | data: interExtraBoldFontData, 66 | style: "normal", 67 | weight: 800, 68 | }, 69 | ], 70 | }, 71 | ); 72 | } catch { 73 | return new Response(`Failed to generate the image`, { 74 | status: 500, 75 | }); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /app/[slug]/components/DefinitionItem.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useState, useRef } from "react"; 4 | import { useSpring, animated } from "react-spring"; 5 | 6 | import { useHeight } from "../useHeight"; 7 | 8 | interface DefinitionItem { 9 | summary: string; 10 | children: React.ReactNode; 11 | } 12 | 13 | export function DefinitionItem({ summary, children }: DefinitionItem) { 14 | const [isOpen, setIsOpen] = useState(false); 15 | 16 | const toggle = () => { 17 | setIsOpen((prev) => !prev); 18 | }; 19 | 20 | return ( 21 |
    22 |
    23 | 31 |
    32 |
    33 | {children} 34 |
    35 |
    36 | ); 37 | } 38 | 39 | function Icon({ isOpen: isOpen }: { isOpen: boolean }) { 40 | const styles = useSpring({ 41 | config: { mass: 1, tension: 180, friction: 12 }, 42 | transform: isOpen ? "rotate(45deg)" : "rotate(0deg)", 43 | }); 44 | 45 | return ( 46 | <> 47 | 56 | 65 | 66 | ); 67 | } 68 | 69 | interface ContentProps { 70 | isOpen: boolean; 71 | children: React.ReactNode; 72 | } 73 | 74 | function Content({ isOpen, children }: ContentProps) { 75 | const ref = useRef(null); 76 | const height = useHeight(ref); 77 | 78 | const styles = useSpring({ 79 | config: { mass: 1, tension: 200, friction: 26 }, 80 | height: isOpen ? height : 0, 81 | opacity: isOpen ? 1 : 0, 82 | }); 83 | 84 | return ( 85 | 91 |
    92 | {children} 93 |
    94 |
    95 | ); 96 | } 97 | -------------------------------------------------------------------------------- /app/calendar/components/EventItem.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { Bounce } from "app/components/Bounce"; 4 | import { Typography } from "app/components/Typography"; 5 | import { allPages, Event } from "contentlayer/generated"; 6 | import Link from "next/link"; 7 | import { useRef } from "react"; 8 | 9 | import { Tag } from "../Tag"; 10 | 11 | export function EventItem({ event }: { event: Event }) { 12 | const page = allPages.find( 13 | (page) => page.slug === event.condition?.linkedPage, 14 | ); 15 | 16 | const link = useRef(null); 17 | 18 | // Format date day 19 | const pr = new Intl.PluralRules("en-US", { type: "ordinal" }); 20 | 21 | const suffixes = new Map([ 22 | ["one", "st"], 23 | ["two", "nd"], 24 | ["few", "rd"], 25 | ["other", "th"], 26 | ]); 27 | const formatOrdinals = (n) => { 28 | const rule = pr.select(n); 29 | const suffix = suffixes.get(rule); 30 | return `${n}${suffix}`; 31 | }; 32 | 33 | const day = formatOrdinals(new Date(event.startDate).getDate()); 34 | 35 | // Remove CTA text since there is a button below 36 | const description = () => { 37 | if (page && page.meta) { 38 | return page.meta.description; 39 | } 40 | 41 | if (event.condition && event.condition.name) { 42 | return `There's no description of ${event.condition.name} yet.`; 43 | } 44 | 45 | return `There's no description yet.`; 46 | }; 47 | 48 | return ( 49 | 50 |
  • { 52 | if (link.current && link.current !== e.target) { 53 | link.current.click(); 54 | } 55 | }} 56 | className={` 57 | rounded-xl p-4 bg-white dark:bg-card-dark ring-primary transition 58 | shadow 59 | space-y-2 60 | hover:shadow-md 61 | outline-hidden focus-visible:ring-3 cursor-pointer`} 62 | > 63 |
    64 | {/* {event.frontMatter.name} */} 65 | 66 | 67 | {event.name} 68 | 69 | 70 |
    71 | {event.length == "week" && Week starting {day}} 72 | {event.length == "day" && {day}} 73 | {event.length == "month" && Whole month} 74 |
    75 |
    76 | 77 |

    {description()}

    78 |
  • 79 |
    80 | ); 81 | } 82 | -------------------------------------------------------------------------------- /contentlayer.config.js: -------------------------------------------------------------------------------- 1 | import { 2 | defineDocumentType, 3 | defineNestedType, 4 | makeSource, 5 | } from "contentlayer/source-files"; 6 | 7 | const Condition = defineNestedType(() => ({ 8 | name: "Condition", 9 | fields: { 10 | name: { 11 | type: "string", 12 | required: true, 13 | }, 14 | linkedPage: { 15 | type: "string", 16 | required: false, 17 | description: "Another page slug such as 'ocd' or 'autism'", 18 | }, 19 | }, 20 | })); 21 | 22 | const Organization = defineNestedType(() => ({ 23 | name: "Organization", 24 | fields: { 25 | name: { 26 | type: "string", 27 | required: true, 28 | }, 29 | website: { 30 | type: "string", 31 | required: true, 32 | description: "URL to the website", 33 | }, 34 | logo: { 35 | type: "string", 36 | required: true, 37 | description: "Logo URL", 38 | }, 39 | }, 40 | })); 41 | 42 | export const Event = defineDocumentType(() => ({ 43 | name: "Event", 44 | filePathPattern: `./events/*.mdx`, 45 | contentType: "mdx", 46 | fields: { 47 | name: { 48 | type: "string", 49 | required: true, 50 | }, 51 | startDate: { 52 | type: "date", 53 | required: true, 54 | }, 55 | length: { 56 | type: "string", 57 | required: true, 58 | description: "day | month | week", 59 | }, 60 | condition: { 61 | type: "nested", 62 | required: false, 63 | of: Condition, 64 | }, 65 | organization: { 66 | type: "nested", 67 | required: false, 68 | of: Organization, 69 | }, 70 | }, 71 | computedFields: { 72 | slug: { 73 | type: "string", 74 | resolve: (event) => event._raw.sourceFileName.replace(".mdx", ""), 75 | }, 76 | }, 77 | })); 78 | 79 | const Meta = defineNestedType(() => ({ 80 | name: "Meta", 81 | fields: { 82 | title: { 83 | type: "string", 84 | required: true, 85 | }, 86 | description: { 87 | type: "string", 88 | required: true, 89 | }, 90 | }, 91 | })); 92 | 93 | export const Page = defineDocumentType(() => ({ 94 | name: "Page", 95 | filePathPattern: `./pages/*.mdx`, 96 | contentType: "mdx", 97 | fields: { 98 | name: { 99 | type: "string", 100 | required: true, 101 | }, 102 | explaination: { 103 | type: "string", 104 | required: true, 105 | }, 106 | meta: { 107 | type: "nested", 108 | of: Meta, 109 | }, 110 | }, 111 | computedFields: { 112 | slug: { 113 | type: "string", 114 | resolve: (page) => page._raw.sourceFileName.replace(".mdx", ""), 115 | }, 116 | }, 117 | })); 118 | 119 | export default makeSource({ 120 | contentDirPath: "content", 121 | documentTypes: [Event, Page], 122 | }); 123 | -------------------------------------------------------------------------------- /app/components/Navbar.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import Image from "next/image"; 4 | import Link from "next/link"; 5 | import { usePathname } from "next/navigation"; 6 | 7 | import logoPrimary from "../../public/logos/logo-primary.svg"; 8 | import logoSecondary from "../../public/logos/logo-secondary.svg"; 9 | import logoMarkPrimary from "../../public/logos/logomark-primary.svg"; 10 | import logoMarkSecondary from "../../public/logos/logomark-secondary.svg"; 11 | import { Button } from "./Button"; 12 | import { ContentInset } from "./ContentInset"; 13 | import { IconButton } from "./IconButton"; 14 | 15 | export function Navbar() { 16 | const pathname = usePathname(); 17 | 18 | return ( 19 | 20 | 52 | 53 | ); 54 | } 55 | 56 | function ClickableLogo() { 57 | return ( 58 | 59 |
    60 |
    61 | Neurodiversity Wiki logo 68 | Neurodiversity Wiki logo 75 |
    76 |
    77 | Neurodiversity Wiki logo 84 | Neurodiversity Wiki logo 91 |
    92 |
    93 | 94 | ); 95 | } 96 | -------------------------------------------------------------------------------- /app/components/DonateDropdown.tsx: -------------------------------------------------------------------------------- 1 | import { useOnClickOutside } from "app/useOnClickOutside"; 2 | import { useRef, useState } from "react"; 3 | import { useSpring, animated } from "react-spring"; 4 | import useKeypress from "react-use-keypress"; 5 | 6 | import { Button } from "./Button"; 7 | 8 | export function DonateDropdown() { 9 | const ref = useRef(null); 10 | const [isOpen, setIsOpen] = useState(false); 11 | 12 | const styles = useSpring({ 13 | config: { mass: 1, tension: 180, friction: 12 }, 14 | opacity: isOpen ? "1" : "0", 15 | transform: isOpen ? "scale(1)" : "scale(0.9)", 16 | }); 17 | 18 | useOnClickOutside(ref, () => setIsOpen(false)); 19 | 20 | useKeypress("Escape", () => setIsOpen(false)); 21 | 22 | const toggle = () => { 23 | setIsOpen((prev) => !prev); 24 | }; 25 | 26 | return ( 27 |
    28 | 39 | 47 |
      48 | 52 | GitHub 53 | 54 | 55 | Buy Me a Coffee 56 | 57 |
    58 |
    59 |
    60 | ); 61 | } 62 | 63 | interface IconProps { 64 | href: string; 65 | isOpen: boolean; 66 | children: React.ReactNode; 67 | } 68 | 69 | function Item({ href, isOpen, children }: IconProps) { 70 | return ( 71 |
  • 72 | 79 | {children} 80 | 81 |
  • 82 | ); 83 | } 84 | 85 | function Icon({ isOpen }: { isOpen: boolean }) { 86 | const styles = useSpring({ 87 | config: { mass: 1, tension: 180, friction: 12 }, 88 | transform: isOpen ? "rotate(45deg)" : "rotate(0deg)", 89 | }); 90 | 91 | return ( 92 | 101 | ); 102 | } 103 | -------------------------------------------------------------------------------- /app/calendar/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import Image from "next/image"; 3 | 4 | import { DocLinkBanner } from "../components/DocLinkBanner"; 5 | import { Header } from "../components/Header"; 6 | import { Main } from "../components/Main"; 7 | import { Typography } from "../components/Typography"; 8 | import { EventItem } from "./components/EventItem"; 9 | import newIcon from "./icons/new.svg"; 10 | import { allEvents, Event } from ".contentlayer/generated"; 11 | 12 | export const metadata: Metadata = { 13 | title: "Neurological Awareness Calendar - Neurodiversity Wiki", 14 | description: 15 | "Throughout the year, there are months, weeks and days where various neurological conditions are highlighted to spread awareness. This is a calendar of some of them.", 16 | openGraph: { 17 | title: "Neurological Awareness Calendar", 18 | description: "By Neurodiversity Wiki", 19 | images: `https://${ 20 | process.env.NEXT_PUBLIC_VERCEL_URL 21 | }/api/og/default?title=${encodeURIComponent( 22 | "Neurological Awareness Calendar", 23 | )}&description=${encodeURIComponent("By Neurodiversity Wiki")}`, 24 | }, 25 | }; 26 | 27 | export default function CalendarPage() { 28 | const sectionedEvents = allEvents.reduce((accumulator, current: Event) => { 29 | // JS month starts at index 0 30 | const month = new Date(current.startDate).getMonth() + 1; 31 | 32 | return { 33 | ...accumulator, 34 | [month]: accumulator[month] 35 | ? [...accumulator[month], current] 36 | : [current], 37 | }; 38 | }, {}) as Record; 39 | 40 | return ( 41 | <> 42 |
    43 |
    44 | star shaped banner saying new 49 |
    50 | 51 | 52 | The Neurodiversity Wiki 53 | 54 |
    55 | Neurological Awareness Calendar 56 |
    57 | 58 | Throughout the year, there are months, weeks and days where various 59 | neurological conditions are highlighted to spread awareness. Here’s a 60 | calendar of the ones covered on this site. 61 | 62 |
    63 | 64 |
    65 |
      66 | {Object.entries(sectionedEvents) 67 | // @ts-expect-error TODO 68 | .sort((a: unknown, b: unknown) => a[0] - b[0]) 69 | .map(([month, events]) => { 70 | return ; 71 | })} 72 |
    73 | 74 | 75 |
    76 | 77 | ); 78 | } 79 | 80 | function Month({ month, events }: { month: string; events: Event[] }) { 81 | const date = new Date(2000, parseInt(month), 0); // 2009-11-10 82 | const monthName = date.toLocaleString("default", { month: "long" }); 83 | 84 | return ( 85 |
  • 86 | {monthName} 87 |
      88 | {events.map((event) => { 89 | return ; 90 | })} 91 |
    92 |
  • 93 | ); 94 | } 95 | -------------------------------------------------------------------------------- /content/pages/dyscalculia.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Dyscalculia 3 | explaination: Dyscalculia 4 | meta: 5 | title: What is Dyscalculia? 6 | description: Dyscalculia affects how the brain perceives and processes numbers. Reading a clock or calculating something may be hard. 7 | --- 8 | 9 |
    10 | 11 | # What is Dyscalculia? 12 | 13 | Dyscalculia is a condition affecting how the brain perceives and processes numbers. People with it have a harder time doing tasks that would be considered simple by others, such as reading a clock or doing a calculation. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | Dyscalcualia fundamentally makes it harder to do certain things. It is 25 | not something that can be overcome with sheer will. 26 | 27 | 28 | Dyscalculia isn't something to take lightly. It affects the lives of 29 | those with it in a negative way. Joking or spreading memes is 30 | disrespectful of those suffering. 31 | 32 | 33 | While Dyscalculia can make it harder to perceive a value while looking 34 | at numbers, it should not be compared to Dyslexia. 35 | 36 | 37 | } 38 | right={ 39 | 40 | 41 | Things taken for granted, like reading a clock, are harder than for most 42 | people. Other parts of society not well adapted for people with 43 | Dyscaluclia are also harder, with school being a notable example.{" "} 44 | 45 | 46 | } 47 | /> 48 | 49 |
    50 | 51 | ## Common symptoms 52 | 53 | The following are some common symptoms for people with Dyscalculia. They do not apply to all people, as the condition is individual and varies from person to person. 54 | 55 | 56 | 57 | People with Dyscalculia have a harder time recognizing and understanding 58 | numbers. They can lose track while counting or need longer time for tasks 59 | considered simple for others. This puts them at a disadvantage. 60 | 61 | 62 | Dyscalculia makes determining between left and right confusing. Both in 63 | terms of understanding when others say either, and when planning in the 64 | mind. 65 | 66 | 67 | Tasks such as estimating the cost of the items in a shopping basket or 68 | budgeting are significantly harder. 69 | 70 | 71 | 72 |
    73 | 74 |
    75 | 76 | ## What can I do? 77 | 78 | 1. **Stop teasing people about not being able to do things you think are easy.** People with Dyscalculia do not always have the same ability to do some things. 79 | 80 | 2. **Spread awareness!** When you find someone with an incorrect definition of Dyscalculia, send them this page. 81 | 82 | 3. **Support groups for Dyscalculia.** There are many organizations that raise money to support people with Dyscalculia and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 83 | 84 |
    85 | 86 | 87 | 88 |
    89 | -------------------------------------------------------------------------------- /content/pages/dyslexia.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Dyslexia 3 | explaination: Dyslexia 4 | meta: 5 | title: What is Dyslexia? 6 | description: Dyslexia is a difference in the brain making reading or writing take more time. It can also make spelling or reading new words harder. 7 | --- 8 | 9 |
    10 | 11 | # What is Dyslexia? 12 | 13 | Dyslexia is a condition caused by different wiring in the brain. It can negatively affect reading and writing ability. 14 | 15 |
    16 | 17 |
    18 | 22 | 23 | There is no link between dyslexia and intelligence. It is simply a different way 24 | for the brain to function. 25 | 26 | 27 | Dyslexia is individual. There can be varying levels of difficulty in different 28 | areas. 29 | 30 | 31 | } 32 | right={ 33 | 34 | 35 | School can be harder for people with Dyslexia. Tasks like reading and writing can 36 | take significantly more energy and time. 37 | 38 | 39 | Some may need to listen to long texts to efficiently understand them. This is not 40 | always available. 41 | 42 | 43 | } 44 | /> 45 | 46 |
    47 | 48 | ## Common symptoms 49 | 50 | The following are some common behaviors for people with Dyslexia. They do not apply to all people, as the condition is individual and varies from person to person. 51 | 52 | 53 | 54 | Reading large blocks of text can be challenging with Dyslexia. Letters seem to mold 55 | together and accidentally reading the same line is common. Learning to read is also 56 | harder. 57 | 58 | 59 | Spelling can be harder due to how the brain processes what words sound like. The brain 60 | cannot break down a word into parts. 61 | 62 | 63 | Forming clear and simple sentence structures may be harder. 64 | 65 | 66 | Pronouncing a word incorrectly even after multiple attempts to say it right is more 67 | common with Dyslexia. 68 | 69 | 70 | Understanding jokes and expressions involving idioms or things otherwise not clear in 71 | plain sight may be harder. 72 | 73 | 74 | 75 |
    76 | 77 |
    78 | ## What can I do? 79 | 80 | 1. **Stop joking about Dyslexia.** These jokes and memes are often insensitive and hurtful to people with the condition. By joking, you’re spreading misinformation and disrespecting people with Dyslexia. 81 | 82 | 2. **Spread awareness.** Next time you hear a person using the word Dyslexia incorrectly or having a stereotypical view of people with Dyslexia, send them this page. 83 | 84 | 3. **Support groups for Dyslexia.** There are many organizations that raise money to support people with Dyslexia and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 85 | 86 |
    87 | 88 | 89 | 90 |
    91 | -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | 3 | import { DocLinkBanner } from "./components/DocLinkBanner"; 4 | import { Header } from "./components/Header"; 5 | import { LinkGrid } from "./components/LinkGrid"; 6 | import { LinkGridItem } from "./components/LinkGridItem"; 7 | import { Main } from "./components/Main"; 8 | import { Typography } from "./components/Typography"; 9 | import { allPages } from ".contentlayer/generated"; 10 | 11 | export const metadata: Metadata = { 12 | title: "Neurodiversity Wiki: Learn about neurological conditions", 13 | description: 14 | "Learn about conditions like Autism, OCD, Bipolar, ADHD and more on this crowdsourced guide.", 15 | openGraph: { 16 | title: "Neurodiversity Wiki", 17 | description: 18 | "Learn about Autism, OCD, Bipolar, ADHD, Dyslexia and more on this crowdsourced guide.", 19 | images: `https://${ 20 | process.env.NEXT_PUBLIC_VERCEL_URL 21 | }/api/og/start?title=${encodeURIComponent( 22 | "Neurodiversity Wiki", 23 | )}&description=${encodeURIComponent( 24 | "Learn about Autism, OCD, Bipolar, ADHD, Dyslexia and more on this crowdsourced guide.", 25 | )}`, 26 | }, 27 | }; 28 | 29 | export default async function IndexPage() { 30 | return ( 31 | <> 32 |
    33 | 34 | Neurodiversity is a word that refers to the ways brains differ. These 35 | differences are grouped into conditions. This website helps you 36 | understand some common ones. 37 | 38 |
    39 | 40 |
    41 |
    42 | 43 | {allPages.map(({ slug, name, explaination }) => { 44 | return ( 45 | 51 | ); 52 | })} 53 | 54 |
    55 | 56 |
    57 | Why? 58 | 59 | Neurodiversity Wiki is a crowdsourced website that aims to spread 60 | awareness about neurological conditions. We define neurodiversity as 61 | all the ways in which our brains work differently. 62 | 63 | 64 | There are millions of neurodiverse people in the world. Yet 65 | knowledge about most neurological conditions is often none or close 66 | to it. The lack of knowledge leads to stigmatisation, insensitive 67 | jokes, misconceptions, and ableism. When understanding increases, 68 | there’s a chance that the former decreases. More people would also 69 | be comfortable telling others about themselves and asking for help. 70 | 71 | 72 | This website tackles the information problem by providing short and 73 | easy-to-read information. We believe that content should be short, 74 | and to the point. To maximise potential reach, it shouldn’t be a 75 | blog post, be written in medical language, be too long, be local to 76 | one country, or be buried deep behind marketing. We couldn’t find a 77 | website that fulfilled these goals, so we made one. 78 | 79 |
    80 |
    81 | Who are we? 82 | 83 | We’re a group of neurodiverse people who are collaborating on 84 | content aiming to spread knowledge and understanding about 85 | neurodiversity and various neurological conditions. We’re writing 86 | from our life experiences to help more people understand us. 87 | 88 |
    89 | 90 | 91 |
    92 | 93 | ); 94 | } 95 | -------------------------------------------------------------------------------- /app/join/page.tsx: -------------------------------------------------------------------------------- 1 | import { LinkGridItem } from "app/components/LinkGridItem"; 2 | import { Metadata } from "next"; 3 | import Image from "next/image"; 4 | import Link from "next/link"; 5 | 6 | import discordLogotype from "../../public/icons/discord-logotype.svg"; 7 | import { Button } from "../components/Button"; 8 | import { DocLinkBanner } from "../components/DocLinkBanner"; 9 | import { Header } from "../components/Header"; 10 | import { LinkGrid } from "../components/LinkGrid"; 11 | import { Main } from "../components/Main"; 12 | import { Typography } from "../components/Typography"; 13 | 14 | export const metadata: Metadata = { 15 | title: "Join us - Neurodiversity Wiki", 16 | description: 17 | "We're a small team working to educate the public through our crowd-sourced wiki. Join us to help contribute.", 18 | openGraph: { 19 | title: "Join us - Neurodiversity Wiki", 20 | description: 21 | "We're a small team working to educate the public through our crowd-sourced wiki. Join us to help contribute.", 22 | images: `https://${process.env.NEXT_PUBLIC_VERCEL_URL}/api/og/join`, 23 | }, 24 | }; 25 | 26 | export default function JoinPage() { 27 | return ( 28 | <> 29 |
    30 | Join us 31 | 32 | First of all, thank you for considering us! We're a small community 33 | looking for more awesome people to join us. 34 | 35 |
    36 | 37 |
    38 |
    39 | 40 | This website is created by people wanting to spread awareness about 41 | neurodiversity. We're everything from developers, parents, designers 42 | to journalists. To cover as many conditions as possible in a 43 | representative way, we need the perspective of many. Together, we 44 | can make a wiki that explains these conditions in a simple way for 45 | the general public. 46 | 47 | 48 | So with that said, any help is appreciated. While people who can 49 | write, code, design and organize are in need, that is not a 50 | requirement. Feedback and personal perspective is also very 51 | appreciated! If this is something that interests you, consider 52 | joining us. 53 | 54 |
    55 |
    56 |
    57 | Discord logo 62 | 63 | Our Discord server is the place where we organize and collaborate. 64 | Discord is free to use for anyone, and provides an easy to use app 65 | for computers and phones. 66 | 67 | 76 |
    77 | 78 | 79 | If you do not want to do that yet or have questions you want 80 | answered before joining, you can reach out on these channels. 81 | 82 | 83 | 88 | 93 | 94 |
    95 | 96 | 97 |
    98 | 99 | ); 100 | } 101 | -------------------------------------------------------------------------------- /app/components/Footer.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import Image from "next/image"; 4 | import Link from "next/link"; 5 | import { usePathname } from "next/navigation"; 6 | 7 | import logomarkSecondary from "../../public/logos/logomark-secondary.svg"; 8 | import { Button } from "./Button"; 9 | import { ContentInset } from "./ContentInset"; 10 | import { Typography } from "./Typography"; 11 | 12 | export function Footer() { 13 | const pathname = usePathname(); 14 | 15 | return ( 16 |
    17 | {pathname != "/join" && } 18 | 19 |
    20 | ); 21 | } 22 | 23 | function JoinBanner() { 24 | return ( 25 |
    26 | 27 |
    28 | 29 | Want to help out? 30 | 31 | 35 | We're a community looking for awesome people to join us. 36 | Neurodiverse people, writers, developers, designers and more are all 37 | welcome. 38 | 39 |
    40 | 49 | 52 |
    53 |
    54 |
    55 |
    56 | ); 57 | } 58 | 59 | function SocialIcon({ name, link, icon }) { 60 | return ( 61 |
  • 62 | 63 | 71 | {name} 72 | 73 |
  • 74 | ); 75 | } 76 | 77 | function Bottom() { 78 | return ( 79 |
    80 | 81 |
    82 | 83 | Neurodiversity Wiki Logo 88 | 89 | 90 | For better understanding 91 | 92 |
    93 | 94 |
    95 | 96 |
    97 |
    98 |

    99 | Made by{" "} 100 | 106 | Alvar Lagerlöf 107 | {" "} 108 | and contributors 109 |

    110 | 111 |
      112 | 117 | 118 | 123 | 124 | 129 | 130 | 135 |
    136 |
    137 | 138 | {/* */} 153 |
    154 |
    155 |
    156 | ); 157 | } 158 | -------------------------------------------------------------------------------- /content/pages/insomnia.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Insomnia 3 | explaination: Insomnia 4 | meta: 5 | title: What is Insomnia? 6 | description: Insomnia is a sleep disorder that disrupts rest and impacts daily life. Learn more here. 7 | --- 8 | 9 |
    10 | 11 | # What is Insomnia? 12 | 13 | Insomnia is a sleep disorder that makes it hard to fall asleep or stay asleep, even when you have the opportunity to sleep. It can cause daytime problems like fatigue, mood changes, and difficulty concentrating. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | Occasional trouble sleeping happens to everyone, but insomnia is a 25 | persistent issue that occurs regularly and disrupts daily life. 26 | 27 | 28 | People with insomnia often want to sleep but can’t, despite their 29 | efforts, due to how their brain or body responds. 30 | 31 | 32 | While stress can contribute, insomnia can also stem from medical 33 | conditions, habits, or no clear reason at all. 34 | 35 | 36 | Ignoring insomnia won’t make it go away; it often needs specific 37 | strategies or treatment to improve. 38 | 39 | 40 | Someone with insomnia might seem fine during the day, hiding 41 | the exhaustion or frustration they feel. 42 | 43 | 44 | } 45 | right={ 46 | 47 | 48 | It affects not just sleep but also energy levels, focus, and 49 | emotional well-being, making everyday tasks harder. 50 | 51 | 52 | Many people experience insomnia at some point, 53 | but it can range from short-term (acute) to long-lasting 54 | (chronic) depending on the person and situation. 55 | 56 | 57 | Options like better sleep habits, therapy, or medication 58 | can help manage or resolve it, though what works varies by individual. 59 | 60 | 61 | The lack of rest can build up over time, wearing down both the 62 | body and mind if left unaddressed. 63 | 64 | 65 | } 66 | /> 67 | 68 |
    69 | 70 | ## Common symptoms 71 | 72 | The following are some common behaviors for people with Insomnia. They do not apply to all people, as the condition is individual and varies from person to person. 73 | 74 | 75 | 76 | Even when exhausted, people with insomnia may lie awake for hours, unable to drift off. 77 | 78 | 79 | Sleep may be interrupted by frequent awakenings during the night, making it hard to feel rested. 80 | 81 | 82 | A lack of quality sleep often leads to feeling drained, sluggish, or sleepy throughout the day. 83 | 84 | 85 | Sleep deprivation can make emotions harder to regulate, leading to frustration or sadness. 86 | 87 | 88 | Mental fog or difficulty focusing on tasks is common, as the brain struggles without proper rest. 89 | 90 | 91 | Some people with insomnia wake up well before they intend to and can’t fall back asleep. 92 | 93 | 94 | Worrying about not sleeping well can create a vicious cycle, making it even harder to relax and rest. 95 | 96 | 97 | Restlessness, muscle tightness, or discomfort can keep the body from settling down for sleep. 98 | 99 | 100 | 101 |
    102 | 103 |
    104 | 105 | ## What can I do? 106 | 107 | 1. **Stop joking about Insomnia** These jokes and memes are often insensitive and hurtful to people with the condition. By joking, you’re spreading misinformation and disrespecting people with Insomnia. 108 | 109 | 2. **Spread awareness.** Next time you hear a person using the word Insomnia incorrectly or having a stereotypical view of people with Insomnia, send them this page. 110 | 111 | 3. **Support groups for Insomnia.** There are many organizations that raise money to support people with Insomnia and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 112 | 113 |
    114 | 115 | 116 | 117 |
    118 | -------------------------------------------------------------------------------- /app/calendar/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import Image from "next/image"; 3 | import Link from "next/link"; 4 | import { notFound } from "next/navigation"; 5 | 6 | import { Button } from "../../components/Button"; 7 | import { Header } from "../../components/Header"; 8 | import { Main } from "../../components/Main"; 9 | import { Typography } from "../../components/Typography"; 10 | import { allEvents, allPages, Event } from ".contentlayer/generated"; 11 | 12 | export async function generateMetadata(props: { 13 | params: Promise<{ slug: string }>; 14 | }): Promise { 15 | const params = await props.params; 16 | const event = allEvents.find((event) => event.slug == params.slug); 17 | 18 | if (!event) return notFound(); 19 | 20 | const monthAndDay = new Intl.DateTimeFormat("en-us", { 21 | month: "long", 22 | day: "numeric", 23 | }).format(new Date(event.startDate)); 24 | 25 | return { 26 | title: `When is ${event.name}? - Neurodiversity.wiki`, 27 | description: `${event.name} is an event starting on ${monthAndDay}. Learn more here.`, 28 | openGraph: { 29 | title: `When is ${event.name}?`, 30 | description: `Starting on ${monthAndDay}. Learn more here.`, 31 | images: `https://${ 32 | process.env.NEXT_PUBLIC_VERCEL_URL 33 | }/api/og/default?title=${encodeURIComponent( 34 | `${event.name}?`, 35 | )}&description=${encodeURIComponent( 36 | `Starting on ${monthAndDay}. Learn more here.`, 37 | )}`, 38 | }, 39 | }; 40 | } 41 | 42 | export default async function CalendarEvent(props) { 43 | const params = await props.params; 44 | const event = allEvents.find((event) => event.slug === params.slug); 45 | 46 | if (!event) notFound(); 47 | 48 | return ( 49 | <> 50 |
    51 | {event.name} 52 | 53 |
    54 | 55 |
    56 | 57 | 58 | {/* Not Google doc currently */} 59 | {/* */} 60 |
    61 | 62 | ); 63 | } 64 | 65 | function Subtitle({ event }: { event: Event }) { 66 | const date = new Date(event.startDate); 67 | const monthName = new Intl.DateTimeFormat("en-us", { month: "long" }).format( 68 | date, 69 | ); 70 | const monthAndDay = new Intl.DateTimeFormat("en-us", { 71 | month: "long", 72 | day: "numeric", 73 | }).format(date); 74 | 75 | switch (event.length) { 76 | case "day": 77 | return On {monthAndDay}; 78 | case "week": 79 | return ( 80 | Week starting {monthAndDay} 81 | ); 82 | case "month": 83 | return Month of {monthName}; 84 | } 85 | 86 | return null; 87 | } 88 | 89 | function Organization({ event }: { event: Event }) { 90 | return ( 91 |
    92 |
    93 | {event.organization && event.organization.logo && ( 94 | {`Logo 102 | )} 103 |
    104 | {event.organization ? ( 105 | <> 106 | {event.organization.name} 107 | 108 | {event.name} was started by {event.organization.name}. 109 | 110 | 118 | 119 | ) : ( 120 | <> 121 | 122 | Organization behind the event 123 | 124 | 125 | There's currently no information about the organization behind 126 | this event. If you're interested in contributing, please check 127 | out the banner below. 128 | 129 | 130 | )} 131 |
    132 |
    133 |
    134 | ); 135 | } 136 | 137 | function About({ event }: { event: Event }) { 138 | const page = allPages.find( 139 | (page) => page.slug === event.condition?.linkedPage, 140 | ); 141 | 142 | if (event.condition) { 143 | return ( 144 |
    145 | About {event.condition.name} 146 | {page && page.meta ? ( 147 | <> 148 | {page.meta.description} 149 | 152 | 153 | ) : ( 154 | <> 155 | 156 | Neurodiversity Wiki does not yet have a page about{" "} 157 | {event.condition.name}. If you're interested in helping create 158 | one, consider joining us. More information is in the banner below. 159 | 160 | 161 | )} 162 |
    163 | ); 164 | } 165 | 166 | return null; 167 | } 168 | 169 | export function generateStaticParams() { 170 | return allEvents.map((event) => ({ 171 | slug: event.slug, 172 | })); 173 | } 174 | -------------------------------------------------------------------------------- /public/logos/logomark-primary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /public/logos/logomark-secondary.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /content/pages/ocd.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: OCD 3 | explaination: Obsessive-Compulsive Disorder 4 | meta: 5 | title: What is OCD? 6 | description: Obsessive-compulsive disorder is a conditon that makes do preform actions and think about things more than wanted. 7 | --- 8 | 9 |
    10 | 11 | # What is OCD? 12 | 13 | Obsessive-compulsive disorder is a conditon that makes people do actions (compulsions) or think about things (obesssions) involuntarily. This happens repeatedly and without choice. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | OCD is a mental condition. It's disrespectful to joke or spread memes 25 | about it. 26 | 27 | 28 | Feeling upset when something is not aligned correctly is human, not 29 | having OCD. 30 | 34 | 35 | 36 | People can't be "OCD". It's a mental condition, you either have it or 37 | you don't. 38 | 39 | 40 | OCD is not quirky. It is a mental condition that you don't want to have. 41 | 42 | 43 | Compulsions are sometimes in a person's head, possibly invisible to 44 | others. They still take up considerable time and can cause a lot of 45 | anxiety, often resulting in the person being constantly distracted, 46 | restless and on edge. 47 | 48 | 49 | We all have things we choose to obsess over. We might rewrite a message 50 | to make it just right or replay a moment in our heads multiple times. 51 | But someone with OCD cannot "snap out of it". They feel like there is 52 | nothing they can do but continue thinking about it. The brain is stuck 53 | and driven by anxiety. 54 | 55 | 56 | } 57 | right={ 58 | 59 | 60 | Having OCD means that you feel like you have no option but to do 61 | something that you do not find logical or have any pleasure doing. 62 | 63 | 64 | Dealing with OCD means that time you would rather spend on other things 65 | must instead be spent managing your symptoms. The criteria for being 66 | diagnosed with OCD includes a requirement that it takes up at least 1 67 | hour of your day. 68 | 69 | 70 | OCD is not something to be jealous of. Everyone with OCD wishes that 71 | they didn't have it. 72 | 73 | 74 | } 75 | /> 76 | 77 |
    78 | 79 | ## Common behaviours 80 | 81 | The following are some common behaviors for people with OCD. They do not apply to all people, as the condition is individual and varies from person to person. 82 | 83 | 84 | 85 | 1. “Recurrent and persistent thoughts, urges or images that are experienced, at some 86 | time during the disturbance, as intrusive, unwanted, and that in most individuals 87 | cause marked anxiety or distress.” 88 | 89 | 2. “The individual attempts to ignore or suppress 90 | such thoughts, urges, or images, or to neutralize them with some thought or action 91 | (i.e., by performing a compulsion).” 92 | 93 | 94 | 95 | 1. “Repetitive behaviors (e.g., hand washing, ordering checking) or mental acts (e.g., 96 | praying, counting, repeating words silently) that the person feels driven to perform 97 | in response to an obsession, or according to the rules that must be applied rigidly.” 98 | 99 | 2. “The behaviors or mental acts are aimed at preventing or reducing distress or 100 | preventing some dreaded event or situation. However, these behaviors or mental acts 101 | either are not connected in a realistic way with what they are designed to neutralize 102 | or prevent or are clearly excessive.” 103 | 104 | 105 | 106 | 107 |
    108 | 109 |
    110 | 111 | ## Why should I care? 112 | 113 | Talking about or mentioning OCD as the reason for you being annoyed about something **spreads an incorrect definition.** This is bad for multiple reasons: 114 | 115 | - It trivializes the condition by making it seem less painful than it is, **invalidating** the experience for people suffering from it. 116 | - It makes it harder for people suffering to **get diagnosed.** 117 | - It's disrespectful for people with OCD. 118 | 119 |
    120 | 121 |
    122 | 123 | ## What can I do? 124 | 125 | 1. **Avoid using the word OCD for things that have nothing to do with the actual condition.** Here are some examples of phrases that should be avoided: 126 | 127 | 128 | I'm so OCD 129 | That is triggering my OCD 130 | My OCD can't handle this 131 | _ is giving me an OCD attack 132 | I'm so OCD about that 133 | 134 | 135 | 2. **Stop spreading and endorsing jokes/memes about OCD.** The vast majority of them are disrespectful to people suffering. 136 | 137 | 3. **Spread awareness instead!** The next time you hear a joke or incorrect use, send them this page. 138 | 139 | 4. **Support groups for OCD.** There are many organizations that raise money to support people with OCD and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 140 | 141 |
    142 | 143 | 144 | 145 |
    146 | -------------------------------------------------------------------------------- /content/pages/adhd.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: ADHD 3 | explaination: Attention Deficit Hyperactivity Disorder 4 | meta: 5 | title: What is ADHD? 6 | description: ADHD stands for attention deficit hyperactivity disorder. 7 | --- 8 | 9 |
    10 | 11 | # What is ADHD? 12 | 13 | Attention Deficit Hyperactivity Disorder, a condition that causes inattentiveness, hyperactivity, or a combination of both. An outdated term for inattentive ADHD was ADD, but the latter term has been discontinued. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | People with ADHD have what is known as an interest based nervous system, 25 | where they are motivated by novelty, challenge, urgency and interest. 26 | This may make doing things they are unmotivated by harder. 27 | 28 | 29 | Trying is what people with ADHD do all the time, they just get 30 | interrupted by how their bodies and brain work more often than normal 31 | people. 32 | 33 | 34 | People with ADHD can sometimes focus on one thing longer than people 35 | without ADHD. This is called hyperfocus and may arise when the person 36 | with ADHD is motivated. 37 | 38 | 39 | } 40 | right={ 41 | 42 | 43 | Undiagnosed ADHD or without proper support are at risk of systematically 44 | lower scores in school. The daily burden is simply larger. 45 | 46 | 47 | The Hyperactive Impulsive type of ADHD means always being on the move 48 | and doing things. It is hard to properly rest. This can stress up the 49 | body. 50 | 51 | 52 | Having ADHD means that focus does not always work to the person’s 53 | benefit. The person might have a lot of trouble focusing on something 54 | they find unmotivating, while having no problem at all focusing for 55 | hours on things that they find interesting. 56 | 57 | 58 | ADHD makes it difficult to begin and finish tasks. Household and 59 | personal care may be constantly pushed off due to executive dysfunction, 60 | and the build-up of tasks may easily overwhelm the person. 61 | 62 | 63 | } 64 | /> 65 | 66 |
    67 | 68 | ## Types of ADHD 69 | 70 | Previously there was a diagnosis called ADD. It was like ADHD, but without the hyperactive and impulsive parts. Later, it was combined into ADHD and clear types were defined. The type is not static, but can slightly change over a lifetime. 71 | 72 | 73 | 74 | Previously called ADD, this type is lacking the impulsive and hyperactive 75 | traits. What is still there is difficulty filtering and focusing. 76 | 77 | 78 | A person with Hyperactive Impulsive ADHD is likely to act before they think. 79 | This is shown in several ways such as doing or saying something that they 80 | would not have done if they were thinking about it beforehand. 81 | 82 | 83 | The combined type of ADHD is having traits from both the inattentive and the 84 | Hyperactive Impulsive types. 85 | 86 | 87 | 88 |
    89 | 90 |
    91 | 92 | ## Common symptoms 93 | 94 | The following are some common symptoms for people with ADHD. They do not apply to all people, as the condition is individual and varies from person to person. 95 | 96 | 97 | 98 | Things like organization, planning, following plans and keeping track of 99 | items may be harder with ADHD. Having problems with doing essential things 100 | such as cleaning can occur due to having a harder time doing things without 101 | motivation. Following step-by step guides especially when heard verbally can 102 | be difficult. 103 | 104 | 105 | People with ADHD tend to experience emotions more vividly. This is due to 106 | the deficits in regulation of the areas of the brain involved in filtering 107 | emotional responses. 108 | 109 | 110 | Everyone is being bombarded by colors, lights, sights, sounds. While this is 111 | fine for those without ADHD, those with it can’t filter between what is 112 | needed and what is not. This makes focusing on everyday tasks harder. 113 | 114 | 115 | People with ADHD may have a harder time transfering new information (or the 116 | right information) into working memory, resulting in what looks like poor 117 | working memory regarding a certain task. 118 | 119 | 120 | A common symptom is focus that lasts too short of time or keeps jumping to 121 | new things all the time. This is related to the difficulty with filtering 122 | mentioned above. 123 | 124 | 125 | 126 |
    127 | 128 |
    129 | 130 | ## What can I do? 131 | 132 | 1. **Stop joking about ADHD** These jokes and memes are often insensitive and hurtful to people with the condition. By joking, you’re spreading misinformation and disrespecting people with ADHD. 133 | 134 | 2. **Spread awareness.** Next time you hear a person using ADHD incorrectly or having a stereotypical view of people with ADHD, send them this page. 135 | 136 | 3. **Support groups for ADHD.** There are many organizations that raise money to support people with ADHD and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 137 | 138 |
    139 | 140 | 141 | 142 |
    143 | -------------------------------------------------------------------------------- /content/pages/did.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: DID 3 | explaination: Dissociative Identity Disorder 4 | meta: 5 | title: What is DID? 6 | description: Dissociative Identity Disorder is a condition that causes a person to have two or more distinct personalities. 7 | --- 8 | 9 |
    10 | 11 | # What is DID? 12 | 13 | Dissociative Identity Disorder is a condition that causes a person to have two or more distinct personalities. It develops due to trauma that the person experiences. It started as Multiple Personality Disorder, but is no longer used medically. There is no cure for DID. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | DID is more than a voice in your head. It’s more of someone in your 25 | head, who is different from you, who can take control of one’s body. 26 | 27 | 28 | DID is not something quirky or something to be proud of. It causes the 29 | person significant stress and worry. 30 | 31 | 32 | While some people have another personality that is fine and harmless, 33 | others aren't, and joking or making fun of them can be dangerous. 34 | 35 | 36 | People with DID didn’t choose to have it and are often worried about 37 | what might cause the other person to come out again. 38 | 39 | 40 | People with DID don’t have a choice over when they disasociate. 41 | 42 | 43 | } 44 | right={ 45 | 46 | 47 | There are one or more distinct personalities one has that can come and 48 | go as they wish. They can appear at any time and disappear at any time, 49 | though they tend to come out when the person would’ve a flashback. 50 | 51 | 52 | Being that the person isn’t always in control, it can cause them to 53 | worry about when the other personality could come out. It adds extra 54 | stress, and this can worsen things. 55 | 56 | 57 | A person develops DID due to trauma. So sexual abuse and physical abuse 58 | can lead to the development of DID, as it allows the person to either 59 | not deal with the memories or not have to be abused. 60 | 61 | 62 | } 63 | /> 64 | 65 |
    66 | 67 | ## Common behaviours 68 | 69 | The following are some common behaviours for people with DID. They do not apply to all people, as the condition is individual and varies from person to person. 70 | 71 | 72 | 73 | People with DID often tend to not remember parts of their childhood, whether 74 | or not their trauma was part of their childhood. 75 | 76 | 77 | Sometimes they find themselves in situations they don’t remember getting 78 | into or finding something that happened they don’t remember happening. For 79 | example, you find a shirt in your closet you don’t remember getting. 80 | 81 | 82 | The person often finds themselves where time simply vanishes during the day. 83 | Where one moment it’s 9:30 in the morning, and while they weren’t 84 | distracting themselves, it’s suddenly 10:00 in the morning. 85 | 86 | 87 | They remember things suddenly, from moments where they lost time or had flashbacks to traumatic events. 88 | 89 | 90 | They sometimes feel like they aren’t in their body, and they are in a semi dream-state, and their thoughts don’t seem real. 91 | 92 | 93 | They have moments where they feel things, or have moments where their senses 94 | send signals to the brain that shouldn’t be sent. They also hear voices 95 | talking to them, or the voice is in their head. 96 | 97 | 98 | They tend to, even if they aren’t suicidal, try to take their life or hurt themselves. If they don’t get help for it, they will continue to do so, but they can get help with it. 99 | 100 | 101 | Some people can have it where the handwriting between the two personalities is 102 | vastly different. 103 | 104 | 105 | In some cases, the ability to function and do things can vary from highly effective or high functioning to nearly disabled. 106 | 107 | 108 | 109 | 110 |
    111 | 112 |
    113 | 114 | ## Why should I care? 115 | 116 | DID is sometimes boiled down to things it is not, this is harmful for these reasons. 117 | 118 | - It changes the definition of what this mental illness is in the public, which leads to people believing they have it when they don’t. 119 | - It waters down how serious a mental illness it is. 120 | - It makes it harder to diagnose those who actually have it. 121 | 122 |
    123 | 124 |
    125 | 126 | ## What can I do? 127 | 128 | 1. **Spread awareness.** Correct people who incorrectly use DID by saying inaccurate things or joking about it. Send them this page! 129 | 130 | 2. **Support groups for DID.** There are many organizations that raise money to support people with DID and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 131 | 132 |
    133 | 134 | 135 | 136 |
    137 | -------------------------------------------------------------------------------- /public/icons/discord-logotype.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Referring to people by their preferred names and pronouns and using gender-neutral pronouns when uncertain 23 | - Giving and gracefully accepting constructive feedback 24 | - Accepting responsibility and apologizing to those affected by our mistakes, 25 | and learning from the experience 26 | - Focusing on what is best not just for us as individuals, but for the 27 | overall community 28 | 29 | Examples of unacceptable behavior include: 30 | 31 | - The use of sexualized language or imagery, and sexual attention or 32 | advances of any kind 33 | - Trolling, insulting or derogatory comments, and personal or political attacks 34 | - Public or private harassment 35 | - Publishing others' private information, such as a physical or email 36 | address, without their explicit permission 37 | - Dismissing or attacking inclusion-oriented requests 38 | - Other conduct which could reasonably be considered inappropriate in a 39 | professional setting 40 | 41 | We prioritize marginalized people's safety over privileged people's comfort. We will not act on complaints regarding: 42 | 43 | - ‘Reverse’ -isms, including ‘reverse racism,’ ‘reverse sexism,’ and ‘cisphobia’ 44 | - Reasonable communication of boundaries, such as 'leave me alone,' 'go away,' or 'I’m not discussing this with you.' 45 | - Someone’s refusal to explain or debate social justice concepts 46 | - Criticisms of ableist, racist, sexist, homophobic, transphobic, or otherwise oppressive behavior or assumptions 47 | 48 | In community communication, we do not appreciate any form of aggression (passive aggression included) — please don't post stuff if you can't be kind and empathetic. Be proactive about owning your mistakes and apologizing if you have a feeling or know that you impacted someone in a negative way. 49 | 50 | ## Enforcement Responsibilities 51 | 52 | Community leaders are responsible for clarifying and enforcing our standards of 53 | acceptable behavior and will take appropriate and fair corrective action in 54 | response to any behavior that they deem inappropriate, threatening, offensive, 55 | or harmful. 56 | 57 | Community leaders have the right and responsibility to remove, edit, or reject 58 | comments, commits, code, wiki edits, issues, and other contributions that are 59 | not aligned to this Code of Conduct, and will communicate reasons for moderation 60 | decisions when appropriate. 61 | 62 | ## Scope 63 | 64 | This Code of Conduct applies within all community spaces, and also applies when 65 | an individual is officially representing the community in public spaces. 66 | Examples of representing our community include using an official e-mail address, 67 | posting via an official social media account, or acting as an appointed 68 | representative at an online or offline event. 69 | 70 | ## Enforcement 71 | 72 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 73 | reported to the community leaders responsible for enforcement at 74 | contact@neurodiversity.wiki 75 | All complaints will be reviewed and investigated promptly and fairly. 76 | 77 | All community leaders are obligated to respect the privacy and security of the 78 | reporter of any incident. 79 | 80 | ## Enforcement Guidelines 81 | 82 | Community leaders will follow these Community Impact Guidelines in determining 83 | the consequences for any action they deem in violation of this Code of Conduct: 84 | 85 | ### 1. Correction 86 | 87 | **Community Impact**: Use of inappropriate language or other behavior deemed 88 | unprofessional or unwelcome in the community. 89 | 90 | **Consequence**: A private, written warning from community leaders, providing 91 | clarity around the nature of the violation and an explanation of why the 92 | behavior was inappropriate. A public apology may be requested. 93 | 94 | ### 2. Warning 95 | 96 | **Community Impact**: A violation through a single incident or series 97 | of actions. 98 | 99 | **Consequence**: A warning with consequences for continued behavior. No 100 | interaction with the people involved, including unsolicited interaction with 101 | those enforcing the Code of Conduct, for a specified period of time. This 102 | includes avoiding interactions in community spaces as well as external channels 103 | like social media. Violating these terms may lead to a temporary or 104 | permanent ban. 105 | 106 | ### 3. Temporary Ban 107 | 108 | **Community Impact**: A serious violation of community standards, including 109 | sustained inappropriate behavior. 110 | 111 | **Consequence**: A temporary ban from any sort of interaction or public 112 | communication with the community for a specified period of time. No public or 113 | private interaction with the people involved, including unsolicited interaction 114 | with those enforcing the Code of Conduct, is allowed during this period. 115 | Violating these terms may lead to a permanent ban. 116 | 117 | ### 4. Permanent Ban 118 | 119 | **Community Impact**: Demonstrating a pattern of violation of community 120 | standards, including sustained inappropriate behavior, harassment of an 121 | individual, or aggression toward or disparagement of classes of individuals. 122 | 123 | **Consequence**: A permanent ban from any sort of public interaction within 124 | the community. 125 | 126 | ## Attribution 127 | 128 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 129 | version 2.0, available at 130 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 131 | 132 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 133 | enforcement ladder](https://github.com/mozilla/diversity). 134 | 135 | [homepage]: https://www.contributor-covenant.org 136 | 137 | For answers to common questions about this code of conduct, see the FAQ at 138 | https://www.contributor-covenant.org/faq. Translations are available at 139 | https://www.contributor-covenant.org/translations. 140 | -------------------------------------------------------------------------------- /content/pages/autism.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: ASD 3 | explaination: Autism Spectrum Disorder 4 | meta: 5 | title: What is Autism? 6 | description: Autism or ASD (autism spectrum disorder) is a condition that makes the brain work differently. 7 | --- 8 | 9 |
    10 | 11 | # What is Autism? 12 | 13 | Autism or ASD (Autism spectrum disorder) is a condition that makes the brain work differently. It is something you are born with.The term Aspergers is an old name of what is now considered part of the Autism spectrum, but some people still prefer to use it. There is no cure for autism. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | Some people believe abilities common with Autistic people give them an 25 | advantage in certain situations. But calling autism a superpower, you 26 | also disregard some harder parts of the condition. 27 | 28 | 29 | Autism is not an illness. It is a different way for the brain to 30 | function. 31 | 32 | 33 | While low and high-functioning labels may appear beneficial at first, it 34 | is one of the primary ways to get help. For example, low-functioning may 35 | get much more help and support due to the more visible need for help. 36 | But high-functioning people may suffer just as much, but are simply 37 | better at hiding it. 38 | 39 | 40 | It may not be obvious that a person is Autistic. They may be hiding it 41 | to “fit in”. Some people can learn to hide it or control it to the point 42 | it seems like their personality. 43 | 44 | 45 | Autistic people may have any level of intelligence. 46 | 47 | 48 | Autism and vaccines have no link. 49 | 50 | 51 | Autism is not a joke. It is life for millions of people. 52 | 53 | 54 | } 55 | right={ 56 | 57 | 58 | Since 2013, Aspergers is considered to be a part of the autism spectrum 59 | However, some people may still prefer to use the term Aspergers. 60 | 61 | 62 | Sometimes described as a spectrum, being autistic is not something you 63 | are more or less of. There are instead many symptoms that may show up 64 | more or less.This means there are infinite ways a person can be 65 | autistic. 66 | 67 | 68 | } 69 | /> 70 | 71 |
    72 | 73 | ## Common behaviors 74 | 75 | The following are some common behaviors for Autistic people. They do not apply to all people, as the condition is individual and varies from person to person. 76 | 77 | 78 | 79 | For autistic people, the brain uses more energy processing facial 80 | expressions than normal. This can make eye contact unpleasant or even 81 | painful. The behavior is even observed in babies. Not looking into eyes also 82 | has the effect of people presuming you are uninterested or distant. 83 | 84 | 85 | Things like irony, jokes and riddles may not be intuitive to the same level 86 | as for non-autistic people. This forces the brain to figure things out in 87 | manual ways, requiring much more energy. 88 | 89 | 90 | There is a tendency for autistic people to interpret things exactly as they 91 | are said, instead of what they suggest. Asking “can you open the window?” 92 | may result in a “yes”, followed by the person not opening the window. They 93 | can open the window, but they don’t realize they’re being asked to do so. 94 | 95 | 96 | Autistic people often have an easier time focusing on details, rather than 97 | the bigger picture. This has benefits when digging deep into a topic, but is 98 | unhelpful when it comes to quickly assessing a situation. 99 | 100 | 101 | Some Autistic people may be non-verbal. This means they cannot speak, but 102 | that doesn’t mean they cannot think or feel just as you or me. Some Autistic 103 | people are verbal under usual conditions, but lose the ability when under 104 | stress 105 | 106 | 107 | Senses can be overwhelming and overpowered. In conversation, an autistic 108 | person may have trouble tuning out the background noise and focusing on the 109 | person/group they are talking to. Things like bright lights, touch and smell 110 | may also be felt more intensely. 111 | 112 | 113 | Due to the behaviors mentioned above, an autistic person may have to spend 114 | significantly more energy than their peers in social situations. 115 | 116 | 117 | Some autistic people realize their behaviors aren’t perceived as “normal”. 118 | If this happens, they may start studying how to “act normal”. Successfully, 119 | this may make their autism invisible to others. This constant acting is 120 | draining, leaving them exhausted after social situations. 121 | 122 | 123 | 124 |
    125 | 126 |
    127 | 128 | ## What can I do? 129 | 130 | 1. **Stop joking about autism.** These jokes and memes are often insensitive and hurtful to people with the condition. By joking, you’re spreading misinformation and disrespecting autistic people. 131 | 132 | 1. **Spread awareness.** Next time you hear a person using the word autistic incorrectly or having a stereotypical view of Autistic people, send them this page. 133 | 134 | 1. **Support groups for autism.** There are many organizations that raise money to support autistic people and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 135 | 136 |
    137 | 138 | 139 | 140 |
    141 | -------------------------------------------------------------------------------- /content/pages/anxiety.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Anxiety Disorder 3 | explaination: Anxiety Disorder 4 | meta: 5 | title: What is Anxiety Disorder? 6 | description: Anxiety disorders are characterized by feelings of anxiety and fear, significantly impairing function. 7 | --- 8 | 9 |
    10 | 11 | # What is Anxiety Disorder? 12 | 13 | Anxiety disorders are a group of mental disorders where the person feels immense anxiety and fear to the point of not being able to function fully. There are several types of anxiety disorders listed below. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | Anxiety is an emotion that many people typically experience. An anxiety 25 | disorder makes someone experience anxiety beyond normal levels. However, 26 | someone diagnosed with an anxiety disorder may say they “have anxiety” 27 | for convenience. 28 | 29 | 30 | Someone with anxiety disorder usually experiences anxiety at much 31 | greater levels compared to a neurotypical person in the same situation. 32 | 33 | 34 | People with anxiety disorders can feel anxious even for no particular 35 | reason, in a situation with no stressors at all. 36 | 37 | 38 | Anxiety disorders do not go away on their own without professional 39 | treatment, and may in fact worsen. 40 | 41 | 42 | It’s not always obvious if someone has an anxiety disorder, because they 43 | may have their stress episodes in private, or they have learned ways to 44 | manage their anxiety levels, or they have coped by hiding their emotions 45 | well. 46 | 47 | 48 | } 49 | right={ 50 | 51 | 52 | Depending on the person, anti-anxiety medication, effective coping 53 | strategies, or psychotherapeutic methods like cognitive behavioral 54 | therapy (CBT), can help them manage their anxiety effectively. This can 55 | be complemented with healthy eating and regular exercise to further 56 | reduce anxiety levels. 57 | 58 | 59 | Anyone can be potentially diagnosed with an anxiety disorder regardless 60 | of age. 61 | 62 | 63 | } 64 | /> 65 | 66 |
    67 | 68 | ## Types of anxiety disorder 69 | 70 | 71 | 72 | Someone with GAD experiences long-lasting anxiety not focused on any 73 | specific situation or thing. 74 | 75 | 76 | Someone with a specific phobia experiences intense fear and anxiety towards 77 | a specific stimulus or situation, often anticipating terrifying consequences 78 | from such encounters. Unlike rational fear responses, the phobia-induced 79 | fear is much greater in proportion compared to the actual potential danger. 80 | 81 | 82 | Someone with SAD feels intense fear and avoidance of social interactions, 83 | including negative public scrutiny, public speaking, or humiliation. 84 | 85 | 86 | Someone with SepAD feels excessive or inappropriate levels of anxiety over 87 | being separated from a person or place. 88 | 89 | 90 | Someone with agoraphobia feels specific anxiety about being in a place or 91 | situation where escape is difficult or embarrassing or where help may be 92 | unavailable. 93 | 94 | 95 | Someone with panic disorder experiences panic attacks, i.e. brief episodes 96 | of intense terror and apprehension accompanied with physical symptoms. These 97 | panic attacks may or may not have obvious triggers. 98 | 99 | 100 | Someone with selective mutism loses their ability to speak in specific 101 | situations or to specific people, staying silent even with negative 102 | consequences like shame or punishment. 103 | 104 | 105 | 106 |
    107 | 108 |
    109 | ## Common symptoms 110 | 111 | The following are some common symptoms for people with some form of anxiety disorder. They do not apply to all people, as the condition is individual and varies from person to person. 112 | 113 | 114 | 115 | Because people with anxiety are stressed, the person's heart rate increases. This 116 | can cause even more stress on them and cause the other symptoms to be worse. 117 | 118 | 119 | Because people with anxiety are under stress, and also because their heart rate may 120 | be higher, they can start to sweat. No matter where they are, the temperature, or 121 | other outside influences, they may start sweating. 122 | 123 | 124 | Also affected by the increased heart rate, but not only because of it, people with 125 | anxiety can start trembling. They may have a shaky voice, shaky hands, or some other 126 | parts of their body shake. 127 | 128 | 129 | Due to the amount of stress the person with anxiety disorder has, whether it be due 130 | to one big thing or several smaller things, they cannot help but focus on whatever 131 | is causing their anxiety. This makes it harder to focus on important day-to-day 132 | things, which then may cause more anxiety. 133 | 134 | 135 | Anxiety can cause a loss of appetite or repulsion to eating. To distinguish this 136 | from anorexia, this is largely caused by feelings of fear triggered within a person 137 | undergoing anxiety. 138 | 139 | 140 | A person who has anxiety may start having rapid or deep breathing. This can be 141 | caused from anxiety or panic, but is more likely to happen to a person who has an 142 | anxiety disorder. 143 | 144 | 145 | Anxiety can actually affect the gut negatively, leading to indigestion or acid 146 | reflux. Hyperventilation from anxiety may also lead to swallowing of air, causing 147 | bloating in the stomach. 148 | 149 | 150 | Someone experiencing immense anxiety may involuntarily clench their fists, feet, 151 | jaws, or any muscles for longer periods than normal, leading to tension and aches. 152 | 153 | 154 | A person with an anxiety disorder may feel immense dread or panic even when there is 155 | nothing present that is genuinely life-threatening. 156 | 157 | 158 | A person with an anxiety disorder may experience sleep deprivation, as their anxiety 159 | may cause problems with trying to fall asleep or stay asleep. 160 | 161 | 162 | An underdiscussed symptom of anxiety is suicidal ideation. In cases of severe 163 | anxiety, symptoms can reach a tipping point in which suicidal thoughts or ideation 164 | occur. This can also be caused by a comorbidity with depression. 165 | 166 | 167 |
    168 | 169 |
    170 | 171 | ## What can I do? 172 | 173 | 1. **Stop joking about anxiety disorders.** These jokes and memes are often insensitive and hurtful to people with the condition. By joking, you’re spreading misinformation and disrespecting people with anxiety disorders. 174 | 175 | 2. **Spread awareness.** Next time you hear a person misusing the word “anxiety”, conflating “anxiety” with “anxiety disorder”, or having a stereotypical view of people with anxiety disorders, send them this page. 176 | 177 | 3. **Support groups for anxiety.** There are many organizations that raise money to support people with anxiety disorders and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 178 | 179 |
    180 | 181 | 182 | 183 |
    184 | -------------------------------------------------------------------------------- /content/pages/bipolar.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bipolar Disorder 3 | explaination: Bipolar Disorder 4 | meta: 5 | title: What is Bipolar Disorder? 6 | description: Bipolar disorder is characterized by feeling “up” and “down” in episodes. 7 | --- 8 | 9 |
    10 | 11 | # What is Bipolar Disorder? 12 | 13 | Bipolar disorder is a condition affecting the chemical balance in the brain, that primarily makes it shift between episodes of “up” (feeling energetic) or “down” (feeling depressed). While it is a life-long condition that is not curable, it can be treated effectively with the right medication. 14 | 15 |
    16 | 17 |
    18 | 19 | 23 | 24 | Bipolar episodes happen whether wanted or not. The risk for developing 25 | bipolar disorder is mainly due to genetics, however the exact mechanism 26 | is yet unknown. Environmental and social factors may also have a large 27 | impact, especially if there is an underlying genetic risk. 28 | 29 | 30 | Anyone can feel sad when something bad happens to them, as well as 31 | feeling good when they achieve something. Both are moods as a result of 32 | an event. For people with bipolar disorder, there is a risk that life 33 | events might heighten or deepen an ongoing episode, but episodes may 34 | also happen without a triggering event. 35 | 36 | 37 | Being manic or hypomanic is sometimes described as the best thing in the 38 | world. Having the energy to do things and meet people might seem 39 | fantastic, but bipolar disorder also comes with depression. 40 | 41 | 42 | While bipolar disorder can be managed using medicine and various other 43 | treatments, it cannot be cured. 44 | 45 | 46 | } 47 | right={ 48 | 49 | 50 | Being bipolar and not getting treated for it can significantly ruin 51 | things like school and work. Manic symptoms such as lack of impulse 52 | control often lead to financial and physically dangerous behavior. With 53 | depression often comes low self esteem and the feeling of being 54 | worthless, which can affect a bipolar person's focus and social 55 | abilities. In severe cases depression might lead to suicidal thoughts or 56 | attempts. 57 | 58 | 59 | Bipolar persons can pose many forms of danger to themselves during 60 | episodes due to impulsive behavior. During (hypo)mania the person may 61 | overspend, engage in dangerous activities, have delusions or psychosis. 62 | During a depressive episode the person can be dangerous towards their 63 | own health. 64 | 65 | 66 | Every bipolar person experiences it differently and may not have all of 67 | the symptoms of types of episodes. 68 | 69 | 70 | } 71 | /> 72 | 73 |
    74 | 75 | ## States of bipolar disorder 76 | 77 | These are the different states of bipolar disorder. Together, the form they types listed in the next section. 78 | 79 | 80 | 81 | During mania, the brain is very active. The person might feel euphoric and 82 | creative, but also comes with a risk of reckless or impulsive behavior with 83 | symptoms listed below. There is also a risk for psychosis. Doing mentally 84 | and physically intensive tasks on low or no sleep can be possible. 85 | 86 | 87 | Hypomania is where the brain is at a hyperactive state. Emotions, physical 88 | sensations, and energy are intensified as the need for sleep decreases. 89 | Racing thoughts and grandiose delusions often lead to the setting of 90 | arbitrary goals, impulsive purchases, and/or dangerous behavior. Being 91 | overly talkative is also common. 92 | 93 | 94 | Bipolar depression is a state that typically follows (hypo)mania. It also 95 | may come suddenly or slowly develop after a period of euthymia. It can be 96 | debilitating to a large degree and significantly decrease the ability to 97 | function. Work and school may become impossible. 98 | 99 | 100 | Euthymia is a somewhat stable state without depression or mania/hypomania. 101 | It is the target state when medicating. It does not, however, feel like 102 | “normal” for a non-bipolar person. 103 | 104 | 105 | Mixed states is when symptoms of both depression and (hypo)mania are 106 | present. The person may shift from one state to another rapidly or exhibit 107 | both symptoms simultaneously. 108 | 109 | 110 | 111 |
    112 | 113 |
    114 | 115 | ## Types of bipolar disorder 116 | 117 | The different types of bipolar disorder are a combination of the above states. 118 | 119 | 120 | 121 | Consists of mania, hypomania, mixed states, euthymia and depression. 122 | 123 | 124 | Consists of hypomania, mixed states, euthymia and depression. 125 | 126 | 127 | The symptoms of cyclothymia are milder than bipolar disorder, but also 128 | concern feelings of emotional lows and highs. Since the symptoms are mild, 129 | cyclothymia is often undiagnosed and untreated, but the mood swings might 130 | still affect social and professional life. 131 | 132 | 133 | 134 |
    135 | 136 |
    137 | 138 | ## Common symptoms 139 | 140 | The following are some common symptoms for people with some form of anxiety disorder. They do not apply to all people, as the condition is individual and varies from person to person. 141 | 142 | 143 | 144 | Manic episodes can lead to more impulsive spending, unsafe sexual behaviour 145 | and more. 146 | 147 | 148 | Restlessness is a feeling of always needing to do something. This can happen 149 | during manic or hypomanic episodes. It often needs to be high-energy or 150 | mentally demanding. Doing nothing or something calm feels impossible. 151 | 152 | 153 | Insomnia is not being able to sleep despite wanting to and feeling tired. 154 | This can happen in all states. 155 | 156 | 157 | Mania/hypomania and depression can both affect appetite and feeling of 158 | hunger. Medication for bipolar disorder might also affect the appetite. 159 | 160 | 161 | Bipolar persons might get paranoid. They can feel like someone is out to get 162 | them, or following them, for example.{" "} 163 | 164 | 165 | Suicidal thoughts, attempts and deaths are all more common with bipolar 166 | disorder. 167 | 168 | 169 | During hypomania or mania, a person might feel euphoric. Everything feels 170 | great and all worries disappear. The feeling is, however, not based in 171 | reality, as the symptom causes the person to look overly positively at the 172 | world. 173 | 174 | 175 | With hypomania or mania, an increased sense of confidence or self-worth can 176 | happen. This again is not completely based in reality, but rather how the 177 | bipolar person perceives the world and how chemistry in the brain works. 178 | 179 | 180 | During mania, psychosis may occur. It can involve auditory and visual 181 | hallucinations, where someone may see or hear things that are not there. 182 | There may also be the presence of delusions. 183 | 184 | 185 | A bipolar person in both high and low states has higher risk of spending too 186 | much money on unnecessary or risky investments or things. 187 | 188 | 189 | During mania or hypomania primarily, a bipolar person may experience a 190 | stronger sexual drive than usual.{" "} 191 | 192 | 193 | Self-harm is more common with bipolar disorder. It may arise as a coping 194 | mechanism for other symptoms. 195 | 196 | 197 | A common thing to have alongside bipolar disorder is OCD. The symptoms of 198 | OCD such as intrusive thoughts and compulsions may get worse with certain 199 | states of bipolar disorder. 200 | 201 | 202 | People experiencing mania or hypomania are more likely to find themselves in 203 | accidents. This can be due to poor risk perception or overconfidence, with 204 | the person believing they can do things they cannot. 205 | 206 | 207 | 208 |
    209 | 210 |
    211 | 212 | ## What can I do? 213 | 214 | 1. **Stop joking about bipolar disorder.** These jokes and memes are often insensitive and hurtful to people with the condition. By joking, you’re spreading misinformation and disrespecting people with bipolar disorder. 215 | 216 | 2. **Spread awareness.** Next time you hear a person using the term bipolar disorder incorrectly or having a stereotypical view of people with bipolar disorder, send them this page. 217 | 218 | 3. **Support groups for bipolar disorder.** There are many organizations that raise money to support people with bipolar disorder and their families. Even if you can’t support them yourself, you can help share these groups with others, so they can support these groups. 219 | 220 |
    221 | 222 | 223 | 224 |
    225 | --------------------------------------------------------------------------------