import { expect, fn, userEvent, waitFor, within } from "storybook/test"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { BackpackDuotoneIcon, BackpackRegularIcon, } from "alouette-icons/phosphor-icons/Backpack"; import { BellRegularIcon } from "alouette-icons/phosphor-icons/Bell"; import { BinocularsDuotoneIcon, BinocularsRegularIcon, } from "alouette-icons/phosphor-icons/Binoculars"; import { BirdDuotoneIcon, BirdRegularIcon, } from "alouette-icons/phosphor-icons/Bird"; import { CalendarBlankDuotoneIcon, CalendarBlankRegularIcon, } from "alouette-icons/phosphor-icons/CalendarBlank"; import { ChartLineDuotoneIcon, ChartLineRegularIcon, } from "alouette-icons/phosphor-icons/ChartLine"; import { DownloadSimpleDuotoneIcon, DownloadSimpleRegularIcon, } from "alouette-icons/phosphor-icons/DownloadSimple"; import { FeatherRegularIcon } from "alouette-icons/phosphor-icons/Feather"; import { GearDuotoneIcon, GearRegularIcon, } from "alouette-icons/phosphor-icons/Gear"; import { MagnifyingGlassRegularIcon } from "alouette-icons/phosphor-icons/MagnifyingGlass"; import { MapPinRegularIcon } from "alouette-icons/phosphor-icons/MapPin"; import { MapTrifoldDuotoneIcon, MapTrifoldRegularIcon, } from "alouette-icons/phosphor-icons/MapTrifold"; import { SignOutRegularIcon } from "alouette-icons/phosphor-icons/SignOut"; import { SquaresFourDuotoneIcon, SquaresFourRegularIcon, } from "alouette-icons/phosphor-icons/SquaresFour"; import { UserCircleRegularIcon } from "alouette-icons/phosphor-icons/UserCircle"; import { UsersDuotoneIcon, UsersRegularIcon, } from "alouette-icons/phosphor-icons/Users"; import { type ReactNode, useState } from "react"; import type { ColorModePreference } from "../../core/AlouetteConfig"; import { useCurrentMode } from "../../core/ThemeContext"; import { IconButton } from "../actions/IconButton"; import { MenuItem } from "../actions/MenuItem"; import { PressableListItem } from "../actions/PressableListItem"; import { ScopedTheme } from "../containers/ScopedTheme"; import { ColorModePicker } from "../inputs/ColorModePicker"; import { Select } from "../inputs/Select"; import { NavBar } from "../navigation/NavBar"; import { NavBarItem } from "../navigation/NavBarItem"; import { SidebarNav } from "../navigation/SidebarNav"; import { SidebarNavItem } from "../navigation/SidebarNavItem"; import { SidebarNavSection } from "../navigation/SidebarNavSection"; import { Text } from "../primitives/Text"; import { View } from "../primitives/View"; import { Separator } from "../stacks/Separator"; import { Story } from "../story-components/Story"; import { AppHeader } from "./AppHeader"; import { AppHeaderAccount } from "./AppHeaderAccount"; import { AppHeaderActions } from "./AppHeaderActions"; import { AppHeaderBrand } from "./AppHeaderBrand"; import { AppSidebar } from "./AppSidebar"; import { AppSidebarAccount } from "./AppSidebarAccount"; import { AppSidebarLayout } from "./AppSidebarLayout"; import { BrandLogo } from "./BrandLogo"; type ThisStory = StoryObj; export default { title: "alouette/Layout/AppSidebarLayout", component: AppSidebarLayout, parameters: { componentSubtitle: "Application layout: from sidebarBreakpoint (lg by default) a sidebar beside the screen, which sits in a raised panel and scrolls on its own; below it, a header scrolling with the screen as one page.", docs: { description: { component: `### Composition ~~~tsx } actions={} header={} options={[ { label: "Field Ornithology Club", value: "field-ornithology" }, { label: "Coastal Watchers", value: "coastal-watchers" }, ]} defaultValue="field-ornithology" onValueChange={fn()} />