Skip to content

Commit 42f9166

Browse files
committed
Move Accordion and icons to _design-system
1 parent 056269f commit 42f9166

File tree

9 files changed

+67
-15
lines changed

9 files changed

+67
-15
lines changed

src/app/conf/2025/components/call-for-proposals.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
"use client"
2-
import clsx from "clsx"
32

4-
import { useState, useEffect, ReactNode, Fragment } from "react"
3+
import clsx from "clsx"
4+
import { useState, useEffect, Fragment } from "react"
55
import Link from "next/link"
6-
import { Button } from "../../_design-system/button"
7-
import ArrowDownIcon from "../pixelarticons/arrow-down.svg?svgr"
6+
7+
import ArrowDownIcon from "@/app/conf/_design-system/pixelarticons/arrow-down.svg?svgr"
8+
import { Button } from "@/app/conf/_design-system/button"
89

910
function DatesTab() {
1011
return (

src/app/conf/2025/components/hero/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import Image from "next-image-export-optimizer"
22

33
import { Button } from "../../../_design-system/button"
4-
import { CalendarIcon } from "../../pixelarticons/calendar-icon"
4+
import { CalendarIcon } from "../../../_design-system/pixelarticons/calendar-icon"
55
import { GET_TICKETS_LINK } from "../../links"
6-
import { PinIcon } from "../../pixelarticons/pin-icon"
6+
import { PinIcon } from "../../../_design-system/pixelarticons/pin-icon"
77
import graphqlFoundationWordmarkSvg from "../../assets/graphql-foundation-wordmark.svg"
88

99
import { ImageLoaded } from "../image-loaded"
Binary file not shown.
Binary file not shown.

src/app/conf/2025/components/marquee-rows/index.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1+
import { clsx } from "clsx"
12
import { Fragment, ReactNode } from "react"
23

34
import { Marquee } from "@/app/conf/_design-system/marquee"
4-
5-
import CodeIcon from "../../pixelarticons/code.svg?svgr"
5+
import CodeIcon from "@/app/conf/_design-system/pixelarticons/code.svg?svgr"
6+
import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration"
67

78
import blurWave from "./blur.webp"
8-
import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration"
9-
import { clsx } from "clsx"
109

1110
export interface MarqueeRowsProps extends React.HTMLAttributes<HTMLDivElement> {
1211
items: ReactNode[][]

src/app/conf/2025/components/navbar.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
"use client"
22

33
import { ReactElement, useCallback, useEffect, useState } from "react"
4-
import NextLink from "next/link"
54
import { clsx } from "clsx"
65
import { usePathname } from "next/navigation"
76

87
import { Badge } from "../../_components/badge"
98

10-
import MenuIcon from "../pixelarticons/menu.svg?svgr"
11-
import CloseIcon from "../pixelarticons/close.svg?svgr"
9+
import MenuIcon from "@/app/conf/_design-system/pixelarticons/menu.svg?svgr"
10+
import CloseIcon from "@/app/conf/_design-system/pixelarticons/close.svg?svgr"
1211
import { GraphQLConfLogoLink } from "./graphql-conf-logo-link"
1312
import { Anchor } from "../../_design-system/anchor"
1413

src/app/conf/2025/components/sponsors.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Grafbase from "public/img/conf/Sponsors/Grafbase.svg?svgr"
22

33
import { clsx } from "clsx"
4-
import { ChevronRight } from "../pixelarticons/chevron-right"
4+
import { ChevronRight } from "../../_design-system/pixelarticons/chevron-right"
55

66
interface Sponsor {
77
icon: React.FC<React.SVGProps<SVGElement>>

src/app/conf/2025/faq.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import clsx from "clsx"
2-
import ArrowDown from "./pixelarticons/arrow-down.svg?svgr"
2+
3+
import ArrowDown from "@/app/conf/_design-system/pixelarticons/arrow-down.svg?svgr"
34

45
const FAQS = [
56
{
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
"use client"
2+
3+
import ArrowDown from "@/app/conf/_design-system/pixelarticons/arrow-down.svg?svgr"
4+
5+
export interface AccordionItem {
6+
title: string
7+
description: React.ReactNode
8+
}
9+
10+
export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
11+
items: AccordionItem[]
12+
multiple?: boolean
13+
}
14+
15+
export function Accordion({
16+
items,
17+
multiple = false,
18+
...rest
19+
}: AccordionProps) {
20+
return (
21+
<div
22+
className="grow space-y-4"
23+
onToggle={event => {
24+
if (!multiple) {
25+
const allDetails = event.currentTarget.querySelectorAll("details")
26+
allDetails.forEach(details => {
27+
if (details !== event.target) {
28+
details.open = false
29+
}
30+
})
31+
}
32+
}}
33+
{...rest}
34+
>
35+
{items.map((item, index) => (
36+
<details
37+
open={index === 0}
38+
key={index}
39+
className="group/q w-full border border-sec-darker @container"
40+
>
41+
<summary className="flex cursor-pointer list-none items-center justify-between gap-2 border-sec-darker p-2 px-3 focus:outline-none group-open/q:border-b [&::-webkit-details-marker]:hidden">
42+
<span className="select-none typography-body-lg">{item.title}</span>
43+
<ArrowDown className="size-10 shrink-0 text-sec-darker group-open/q:rotate-180" />
44+
</summary>
45+
<div className="text-pretty p-3 typography-body-md">
46+
{item.description}
47+
</div>
48+
</details>
49+
))}
50+
</div>
51+
)
52+
}

0 commit comments

Comments
 (0)