From b1fd02b67c153d43512b77f06db068a47d30d824 Mon Sep 17 00:00:00 2001 From: rocord01 Date: Wed, 16 Jul 2025 06:51:52 -0400 Subject: [PATCH] hardware survey, conferences, mobile support, and directory search --- package.json | 1 + pnpm-lock.yaml | 35 ++ src/app/conferences/[id]/page.jsx | 28 ++ src/app/conferences/page.jsx | 31 ++ src/app/hardware-survey/page.jsx | 24 ++ src/app/updates/page.jsx | 22 +- .../conferences/conference-details.jsx | 231 +++++++++++ .../conferences/conference-list.jsx | 133 +++++++ src/components/dashboard/QuickActionsCard.jsx | 12 +- src/components/dashboard/api-keys.jsx | 78 ++-- src/components/dashboard/dashboard-client.jsx | 28 +- src/components/directory-modal.jsx | 102 +++-- src/components/features.jsx | 8 +- src/components/footer.jsx | 31 +- src/components/hardware-survey.jsx | 360 ++++++++++++++++++ src/components/header.jsx | 207 ++++++++-- src/components/hero.jsx | 8 +- src/components/team.jsx | 15 +- src/components/ui/tooltip.jsx | 26 ++ 19 files changed, 1218 insertions(+), 162 deletions(-) create mode 100644 src/app/conferences/[id]/page.jsx create mode 100644 src/app/conferences/page.jsx create mode 100644 src/app/hardware-survey/page.jsx create mode 100644 src/components/conferences/conference-details.jsx create mode 100644 src/components/conferences/conference-list.jsx create mode 100644 src/components/hardware-survey.jsx create mode 100644 src/components/ui/tooltip.jsx diff --git a/package.json b/package.json index cf5b050..429c3ca 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-switch": "^1.1.3", "@radix-ui/react-tabs": "^1.1.12", + "@radix-ui/react-tooltip": "^1.2.7", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9facf8..f18c3a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: '@radix-ui/react-tabs': specifier: ^1.1.12 version: 1.1.12(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ^1.2.7 + version: 1.2.7(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -663,6 +666,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-tooltip@1.2.7': + resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: @@ -3147,6 +3163,25 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 + '@radix-ui/react-tooltip@1.2.7(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.8 + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 diff --git a/src/app/conferences/[id]/page.jsx b/src/app/conferences/[id]/page.jsx new file mode 100644 index 0000000..f1550d5 --- /dev/null +++ b/src/app/conferences/[id]/page.jsx @@ -0,0 +1,28 @@ +import Header from '@/components/header'; +import Footer from '@/components/footer'; +import ConferenceDetails from '@/components/conferences/conference-details'; +import { Suspense } from 'react'; + +// This tells Next.js to allow pages to be generated on-demand +// for params not returned by generateStaticParams. +export const dynamicParams = true; + +export async function generateStaticParams() { + // Since conference rooms are dynamic and may require authentication to list, + // we can't statically generate them at build time. + // Returning an empty array will prevent build errors, and with dynamicParams = true, + // pages will be generated on-demand when visited. + return []; +} + +export default function ConferenceDetailsPage({ params }) { + return ( + Loading...}> +
+
+ +
+