From 506bda36c034b68195f7998d95960be93234f9ee Mon Sep 17 00:00:00 2001 From: Jesse Hernandez Date: Tue, 17 Dec 2024 15:35:27 -0600 Subject: [PATCH] footer update, mission and board route updated --- Dockerfile | 21 +- app/components/CTA/DiscordCommunity.tsx | 4 +- app/components/CTA/ExpandableEventCards.tsx | 2 +- app/components/CTA/Geekdom.tsx | 15 +- app/components/CTA/Shop.jsx | 7 +- app/components/CTA/SlideShow.tsx | 4 +- app/components/CTA/TheMission.jsx | 40 +-- app/components/images/{Logo.jsx => Logo.tsx} | 67 ++++- app/components/ui/Button.jsx | 28 --- app/components/ui/Button.tsx | 46 ++++ app/components/ui/Footer.jsx | 86 ------- app/components/ui/Footer.tsx | 234 ++++++++++++++++++ app/components/ui/RootLayout.tsx | 4 +- app/components/ui/SectionIntro.jsx | 4 +- app/components/ui/gradient.tsx | 30 +++ app/routes/_index.tsx | 8 +- .../VisionGrid.jsx => board/VisionGrid.tsx} | 14 +- app/routes/{mission => board}/board.tsx | 4 +- app/routes/board/route.tsx | 42 ++++ app/routes/mission/route.tsx | 44 ++-- fly.toml | 3 +- tailwind.config.ts | 4 + 22 files changed, 475 insertions(+), 236 deletions(-) rename app/components/images/{Logo.jsx => Logo.tsx} (56%) delete mode 100644 app/components/ui/Button.jsx create mode 100644 app/components/ui/Button.tsx delete mode 100644 app/components/ui/Footer.jsx create mode 100644 app/components/ui/Footer.tsx create mode 100644 app/components/ui/gradient.tsx rename app/routes/{mission/VisionGrid.jsx => board/VisionGrid.tsx} (81%) rename app/routes/{mission => board}/board.tsx (96%) create mode 100644 app/routes/board/route.tsx diff --git a/Dockerfile b/Dockerfile index 5b81129..ebd0414 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,18 +24,10 @@ RUN apt-get update -qq && \ # or for debian/ubuntu-based images # RUN apt-get update -y && apt-get install -y ca-certificates fuse3 sqlite3 -# COPY --from=flyio/litefs:0.5 /usr/local/bin/litefs /usr/local/bin/litefs - -# ENTRYPOINT litefs mount - # Install node modules COPY --link package-lock.json package.json ./ RUN npm ci --include=dev -# Generate Prisma Client -# COPY --link prisma . -# RUN npx prisma generate - # Copy application code COPY --link . . @@ -51,17 +43,6 @@ FROM base # Copy built application COPY --from=build /app /app -# Setup sqlite3 on a separate volume -RUN mkdir -p /litefs -VOLUME /litefs - -# Copy existing database to the correct directory -#COPY ./dev.db /litefs/dev.db - -# Ensure LiteFS configuration -# COPY litefs.yml /etc/litefs.yml - # Start the server by default, this can be overwritten at runtime -EXPOSE 3000 -ENV DATABASE_URL="file:/litefs/dev.db" +EXPOSE 5173 CMD [ "npm", "run", "start" ] \ No newline at end of file diff --git a/app/components/CTA/DiscordCommunity.tsx b/app/components/CTA/DiscordCommunity.tsx index 107973b..cf02f76 100644 --- a/app/components/CTA/DiscordCommunity.tsx +++ b/app/components/CTA/DiscordCommunity.tsx @@ -4,8 +4,8 @@ import { Link } from '@remix-run/react'; export function DiscordCommunity() { return ( -
- +
+

Find Your Local Tech Community on Discord diff --git a/app/components/CTA/ExpandableEventCards.tsx b/app/components/CTA/ExpandableEventCards.tsx index 9ac084b..76fce38 100644 --- a/app/components/CTA/ExpandableEventCards.tsx +++ b/app/components/CTA/ExpandableEventCards.tsx @@ -33,7 +33,7 @@ export function ExpandableEventCards() { return ( <>

diff --git a/app/components/CTA/Geekdom.tsx b/app/components/CTA/Geekdom.tsx index 73b106e..5d90740 100644 --- a/app/components/CTA/Geekdom.tsx +++ b/app/components/CTA/Geekdom.tsx @@ -1,10 +1,11 @@ import { Container } from '~/components/ui/Container'; import { AltButton } from '~/components/ui/AltButton'; import { FadeIn } from '~/components/ui/FadeIn'; +import { Link } from '@remix-run/react'; export function Geekdom() { return ( -

+
@@ -17,13 +18,13 @@ export function Geekdom() {

Professional, student, or simply passionate about - technology, you'll find a supportive community here + technology, you'll find a supportive community here.{' '} + + + Learn more + +

-
- - Learn More - -
diff --git a/app/components/CTA/Shop.jsx b/app/components/CTA/Shop.jsx index d647158..df29b66 100644 --- a/app/components/CTA/Shop.jsx +++ b/app/components/CTA/Shop.jsx @@ -18,17 +18,16 @@ export function ShopSection() { return (
- +

Show your DEVSA pride and support the local developer community - with our exclusive swag! Thanks to the{' '} + with our exclusive swag! Thanks to the Python Software Foundation for allowing us to feature Python merch in our store

diff --git a/app/components/CTA/SlideShow.tsx b/app/components/CTA/SlideShow.tsx index 7737404..bf2ffdd 100644 --- a/app/components/CTA/SlideShow.tsx +++ b/app/components/CTA/SlideShow.tsx @@ -21,7 +21,8 @@ export function SlideShow() { return ( <> -
+
+
+
); } diff --git a/app/components/CTA/TheMission.jsx b/app/components/CTA/TheMission.jsx index b9e2e95..5842b5a 100644 --- a/app/components/CTA/TheMission.jsx +++ b/app/components/CTA/TheMission.jsx @@ -1,24 +1,15 @@ import { Container } from '../ui/Container'; import { FadeIn } from '../ui/FadeIn'; -import { SectionIntro } from '../ui/SectionIntro'; import { GrayscaleTransitionImage } from '../ui/GrayscaleTransitionImage'; export function MissionSection() { return ( -
- -

- While San Antonio celebrates its growing reputation as a - cybersecurity hub and strengthens ties with Monterrey and the - South Texas triangle, we refuse to let the headlines overshadow - the needs of San Antonio's tech community -

-
-
- - -
+ <> +
+ +
+ ); } @@ -37,7 +28,7 @@ function Section({ title, image, children }) {
-

+

{title}

{children}
@@ -56,18 +47,11 @@ function Tech() { src: 'https://res.cloudinary.com/jessebubble/image/upload/v1718831915/tv-quest-10-mirror_pwnngy.png', }} > -
-

- Building a Thriving Hub! San Antonio has a - growing ecosystem of community organizations hosting in-person - and virtual tech events -

+

Collaboration is at the Heart of DEVSA: By working hand-in-hand with existing organizations in the city, - we've fostered a network of knowledge sharing and support. Our - non-profit status allows us to secure affordable venues, ensuring - inclusivity and accessibility for everyone + we've fostered a network of knowledge sharing and support

Building a Strong Foundation Together: From the @@ -89,13 +73,7 @@ function Community() { src: 'https://res.cloudinary.com/jessebubble/image/upload/v1714599154/devsa_u7xs6b.jpg', }} > -

-

- Built by Developers, For the Tech Community: We - understand your needs because we share them. We're a community of - passionate techies who believe a strong community thrives on - providing real value to its members -

+

Focus on Engagement, Not Sales: We believe in empowering the tech community through meaningful connections, diff --git a/app/components/images/Logo.jsx b/app/components/images/Logo.tsx similarity index 56% rename from app/components/images/Logo.jsx rename to app/components/images/Logo.tsx index 93d7744..4098b31 100644 --- a/app/components/images/Logo.jsx +++ b/app/components/images/Logo.tsx @@ -1,15 +1,58 @@ -// Site Logo -export function Logo({ ...props }) { +import { clsx } from 'clsx'; +import { motion } from 'motion/react'; + +export function Logo({ className }: { className?: string }) { + let transition = { + duration: 0.5, + ease: 'easeInOut', + }; + return ( - - - - - + + + + + + + + - + variants={{ + idle: { scale: 1, opacity: 1 }, + active: { + scale: [1, 1.1, 1], + opacity: [1, 0.75, 1], + transition: { + ...transition, + delay: 0.15, + }, + }, + }} + > - + - + ); } diff --git a/app/components/ui/Button.jsx b/app/components/ui/Button.jsx deleted file mode 100644 index e6c323a..0000000 --- a/app/components/ui/Button.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import { Link } from '@remix-run/react'; -import clsx from 'clsx'; - -export function Button({ invert, href, className, children, ...props }) { - className = clsx( - className, - 'inline-flex rounded-full px-4 py-1.5 text-sm font-semibold transition', - invert - ? 'bg-white text-neutral-950 hover:bg-neutral-50' - : 'bg-neutral-950 text-white hover:bg-neutral-800' - ); - - let inner = {children}; - - if (href) { - return ( - - {inner} - - ); - } - - return ( - - ); -} diff --git a/app/components/ui/Button.tsx b/app/components/ui/Button.tsx new file mode 100644 index 0000000..33cfa33 --- /dev/null +++ b/app/components/ui/Button.tsx @@ -0,0 +1,46 @@ +import * as Headless from '@headlessui/react' +import { clsx } from 'clsx' +import { Link } from '@remix-run/react' + +const variants = { + primary: clsx( + 'inline-flex items-center justify-center px-4 py-[calc(theme(spacing.2)-1px)]', + 'rounded-full border border-transparent bg-gray-950 shadow-md', + 'whitespace-nowrap text-base font-medium text-white', + 'data-[disabled]:bg-gray-950 data-[hover]:bg-gray-800 data-[disabled]:opacity-40', + ), + secondary: clsx( + 'relative inline-flex items-center justify-center px-4 py-[calc(theme(spacing.2)-1px)]', + 'rounded-full border border-transparent bg-white/15 shadow-md ring-1 ring-[#D15052]/15', + 'after:absolute after:inset-0 after:rounded-full after:shadow-[inset_0_0_2px_1px_#ffffff4d]', + 'whitespace-nowrap text-base font-medium text-gray-950', + 'data-[disabled]:bg-white/15 data-[hover]:bg-white/20 data-[disabled]:opacity-40', + ), + outline: clsx( + 'inline-flex items-center justify-center px-2 py-[calc(theme(spacing.[1.5])-1px)]', + 'rounded-lg border border-transparent shadow ring-1 ring-black/10', + 'whitespace-nowrap text-sm font-medium text-gray-950', + 'data-[disabled]:bg-transparent data-[hover]:bg-gray-50 data-[disabled]:opacity-40', + ), +} + +type ButtonProps = { + variant?: keyof typeof variants +} & ( + | React.ComponentPropsWithoutRef + | (Headless.ButtonProps & { to?: undefined }) +) + +export function Button({ + variant = 'primary', + className, + ...props +}: ButtonProps) { + className = clsx(className, variants[variant]) + + if (typeof props.to === 'undefined') { + return + } + + return +} \ No newline at end of file diff --git a/app/components/ui/Footer.jsx b/app/components/ui/Footer.jsx deleted file mode 100644 index 3f90d5e..0000000 --- a/app/components/ui/Footer.jsx +++ /dev/null @@ -1,86 +0,0 @@ -import { Link } from '@remix-run/react'; -import { Container } from './Container'; -import { FadeIn } from './FadeIn'; -import { Logo } from '../images/Logo'; -import { SocialMedia } from './SocialMedia'; -import QRCode from '../images/qr-code.svg'; - -function QrCodeBorder(props) { - return ( - - ); -} - -export function Footer() { - return ( -

- - -
-
-
- - - -
-

DEVSA

-

Non-Profit 501(c)(3)

-
-
- -
-
-
- - QR Code -
-
-

- - - Tax-Deductible Donation - -

-

- Every resource we secure is reinvested back into - building a stronger tech ecosystem for San Antonio -

-
-
-
-
- -

- © DEVSA {new Date().getFullYear()} -

-
-
-
-
- ); -} diff --git a/app/components/ui/Footer.tsx b/app/components/ui/Footer.tsx new file mode 100644 index 0000000..99a612d --- /dev/null +++ b/app/components/ui/Footer.tsx @@ -0,0 +1,234 @@ +import { PlusGrid, PlusGridItem, PlusGridRow } from './PlusGrid' +import { Button } from './Button' +import { Container } from './Container' +import { Gradient } from './gradient' +import { Link } from '@remix-run/react' +import { Logo } from '../images/Logo' +import { Subheading } from './Text' + +function CallToAction() { + return ( +
+
+ Nonprofit +

+ Your Support Matters +
+ Tax-Deductible Donations +

+
+

+ DEVSA is building a stronger ecosystem for the techies in San Antonio +

+
+ +
+
+ ) +} + +function SitemapHeading({ children }: { children: React.ReactNode }) { + return

{children}

+} + +function SitemapLinks({ children }: { children: React.ReactNode }) { + return
    {children}
+} + +function SitemapLink(props: React.ComponentPropsWithoutRef) { + return ( +
  • + +
  • + ) +} + +function Sitemap() { + return ( + <> +
    + DEVSA + + Store + The Mission + Replay 2024 + +
    +
    + Community + + Coworking Space + Event Calendar + Newsletter + +
    +
    + Company + + Code of Conduct + Board of Directors + +
    +
    + Nonprofit + + By-Laws + Annual Report + +
    + + ) +} + +function SocialIconX(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + + + ) +} + +function SocialIconInstagram(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + + + ) +} + +function SocialIconDiscord(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + + + ) +} +function SocialIconGithub(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + + + ) +} +function SocialIconYoutube(props: React.ComponentPropsWithoutRef<'svg'>) { + return ( + + + + ) +} + +function SocialLinks() { + return ( + <> + + + + + + + + + + + + + + + + + ) +} + +function Copyright() { + return ( +
    + © {new Date().getFullYear()} DEVSA +
    + ) +} + +export function Footer() { + return ( +
    + +
    + + + + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + +
    +
    + + + +
    +
    +
    +
    + +
    + ) +} \ No newline at end of file diff --git a/app/components/ui/RootLayout.tsx b/app/components/ui/RootLayout.tsx index 6c908b1..0367978 100644 --- a/app/components/ui/RootLayout.tsx +++ b/app/components/ui/RootLayout.tsx @@ -55,9 +55,9 @@ function NavBar({ }) { return ( -
    +
    - +