diff --git a/web/src/components/events/EventContainer.tsx b/web/src/components/events/EventContainer.tsx index e7652fe..f655f51 100644 --- a/web/src/components/events/EventContainer.tsx +++ b/web/src/components/events/EventContainer.tsx @@ -16,6 +16,8 @@ import styles from "./eventContainer.module.scss"; import { formatDate, formatYearMonth } from "@/lib/date"; import { parse } from "date-fns"; import { unique } from "@/lib/common"; +import Icon from "../general/Icon"; +import { useState } from "react"; /* TODO: canonical / alternate URLs https://github.com/47ng/nuqs?tab=readme-ov-file#seo @@ -64,22 +66,40 @@ export const EventContainer = ({ .includes(category) ); + const [showFilter, setShowFilter] = useState(false); + function toggleFilter() { + setShowFilter(!showFilter); + } + return (
-
- - - + + +
+ {mode === "list" && } {mode === "calendar" && }
diff --git a/web/src/components/events/EventFilter.tsx b/web/src/components/events/EventFilter.tsx index 8554b9c..65e00e6 100644 --- a/web/src/components/events/EventFilter.tsx +++ b/web/src/components/events/EventFilter.tsx @@ -9,6 +9,7 @@ export const EventFilter = ({ eventOrganizers, setOrganizer, activeOrganizer, + isVisible, }: { eventCategories: EventCategory[]; setCategory: (slug: string | null) => void; @@ -16,6 +17,7 @@ export const EventFilter = ({ eventOrganizers: EventOrganizer[]; setOrganizer: (slug: string | null) => void; activeOrganizer: string | null; + isVisible: boolean; }) => { const onOrganizerSelect = (e: React.ChangeEvent) => { const organizer = e.target.value; @@ -23,44 +25,52 @@ export const EventFilter = ({ }; return ( -
- Kategori -
    - {eventCategories - .filter((x) => x.showInFilters) - .map((category) => ( -
  • +
    +
    + Kategori +
      + {eventCategories + .filter((x) => x.showInFilters) + .map((category) => ( +
    • + +
    • + ))} +
    +
    +
    + +
    + - - {eventOrganizers.map((organizer) => ( - - ))} - + + {eventOrganizers.map((organizer) => ( + + ))} + +
    +
); diff --git a/web/src/components/events/eventContainer.module.scss b/web/src/components/events/eventContainer.module.scss index 7083943..1eedeea 100644 --- a/web/src/components/events/eventContainer.module.scss +++ b/web/src/components/events/eventContainer.module.scss @@ -12,15 +12,19 @@ } .displayOptions { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: var(--spacing-gap-column); - //padding: 0 var(--spacing-sitepadding); + display: flex; + gap: .5rem; + align-items: center; + position: relative; + z-index: 10; + transition: background-color .5s ease; - button { - border-radius: 0; - background: var(--color-deepBrick); - color: var(--color-goldenBeige); + button:last-child { + margin: 0 0 0 auto; + } + + &[data-showFilter=true] { + background-color: var(--color-background-secondary); } } @@ -91,6 +95,10 @@ } @media (max-width: 1200px) { + .eventList { + grid-template-columns: 1fr 1fr; + } + .calendarWeek { grid-template-columns: 1fr; } @@ -116,4 +124,10 @@ padding: calc(var(--spacing-gap-column)/2) var(--spacing-sitepadding); } } +} + +@media (max-width: 700px) { + .eventList { + grid-template-columns: 1fr; + } } \ No newline at end of file diff --git a/web/src/components/events/eventFilter.module.scss b/web/src/components/events/eventFilter.module.scss index 6cd36d9..69247fb 100644 --- a/web/src/components/events/eventFilter.module.scss +++ b/web/src/components/events/eventFilter.module.scss @@ -1,10 +1,26 @@ .eventFilter { - display: flex; - align-items: center; - gap: 1rem; - background: var(--color-background-secondary); - margin: var(--spacing-sitepadding) calc(var(--spacing-sitepadding)*-1); - padding: 1rem var(--spacing-sitepadding); + display: grid; + grid-template-rows: 0fr; + transition: grid-template-rows .5s ease; + margin: var(--spacing-sitepadding) calc(var(--spacing-sitepadding)*-1) 0; + + .filterContent { + background-color: var(--color-background); + padding: 1rem var(--spacing-sitepadding); + min-height: 0; + visibility: hidden; + opacity: 0; + transition: visibility .5s, opacity .5s ease, background-color .5s ease; + } + + .filterItem { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 1rem; + + + } ul { list-style: none; @@ -25,4 +41,14 @@ color: var(--color-goldenBeige); } } + + &[data-show=true] { + grid-template-rows: 1fr; + + .filterContent { + background-color: var(--color-background-secondary); + visibility: visible; + opacity: 1; + } + } } \ No newline at end of file diff --git a/web/src/components/general/pageHeader.module.scss b/web/src/components/general/pageHeader.module.scss index afb0eb4..81b8802 100644 --- a/web/src/components/general/pageHeader.module.scss +++ b/web/src/components/general/pageHeader.module.scss @@ -1,6 +1,6 @@ .pageHeader { position: relative; - padding: var(--spacing-l) 0 calc(var(--spacing-l) + var(--spacing-sitepadding)); + padding: var(--spacing-l) 0 var(--spacing-sitepadding); } .title { diff --git a/web/src/css/base.scss b/web/src/css/base.scss index 27610e5..63180c1 100644 --- a/web/src/css/base.scss +++ b/web/src/css/base.scss @@ -145,6 +145,18 @@ input[type="text"] { transition: opacity var(--transition-easing); } +select { + border-radius: 10rem; + background: var(--color-white); + color: var(--color-text); + border: 2px solid currentColor; + padding: .5rem 1rem; + font-family: inherit; + font-size: var(--font-size-body); + font-weight: 500; + transition: opacity var(--transition-easing); +} + .number { font-family: var(--font-serif); font-weight: 400;