Split Layout Accordion
shadcn-glass-ui/split-layout-accordionFreeBlock
SplitLayoutGlass Accordion Components
Install it
npx shadcn@latest add https://raw.githubusercontent.com/artyhoo/shadcn-glass-ui-library/main/public/r/split-layout-accordion.jsonSource
1/* eslint-disable react-refresh/only-export-components */2/**3 * SplitLayoutGlass Accordion Components4 *5 * Mobile-specific components that render content in accordion pattern.6 * Details expand below the selected item instead of showing in a separate panel.7 *8 * @module split-layout-accordion9 */1011import { forwardRef, type ReactNode, useId, useRef, useEffect, useCallback, useState } from 'react';12import { ChevronDown } from 'lucide-react';13import { cn } from '@/lib/utils';14import { GlassCard } from '@/components/glass/ui/glass-card';15import { useSplitLayout, useSplitLayoutOptional } from './split-layout-context';1617// ========================================18// ACCORDION ROOT19// ========================================2021/**22 * Props for SplitLayoutAccordion.Root component23 * Container for accordion items in mobile view24 */25export interface SplitLayoutAccordionRootProps extends React.HTMLAttributes<HTMLDivElement> {26 children: ReactNode;27 /**28 * ARIA label for the accordion region29 * @default "Content accordion"30 */31 label?: string;32}3334const SplitLayoutAccordionRoot = forwardRef<HTMLDivElement, SplitLayoutAccordionRootProps>(35 ({ children, label = 'Content accordion', className, ...props }, ref) => {36 const context = useSplitLayoutOptional();37 const intensity = context?.intensity ?? 'medium';3839 return (40 <GlassCard41 asChild42 intensity={intensity}43 padding="none"44 className={cn('divide-y divide-white/10', className)}45 >46 <div ref={ref} role="region" aria-label={label} data-split-accordion="" {...props}>47 {children}48 </div>49 </GlassCard>50 );51 }52);5354SplitLayoutAccordionRoot.displayName = 'SplitLayoutAccordion.Root';5556// ========================================57// ACCORDION ITEM58// ========================================5960/**61 * Props for SplitLayoutAccordion.Item component62 * A single accordion item with trigger and collapsible content63 */64export interface SplitLayoutAccordionItemProps extends Omit<65 React.HTMLAttributes<HTMLDivElement>,66 'children'67> {68 /**69 * Unique key for this item (used for selection)70 */71 itemKey: string;72 /**73 * Content shown in the trigger/header area74 */75 trigger: ReactNode;76 /**77 * Content shown when expanded (details)78 */79 children: ReactNode;80 /**81 * Disable this item82 * @default false83 */84 disabled?: boolean;85}8687const SplitLayoutAccordionItem = forwardRef<HTMLDivElement, SplitLayoutAccordionItemProps>(88// … truncated
More from shadcn-glass-ui
All 76 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Ai Card Glassai-card-glass | shadcn-glass-ui | Blocks | Free | no deps | |
| Career Stats Glasscareer-stats-glass | shadcn-glass-ui | Blocks | Free | no deps | |
| Career Stats Header Glasscareer-stats-header-glass | shadcn-glass-ui | Blocks | Free | no deps | |
| Circular Metric Glasscircular-metric-glass | shadcn-glass-ui | Blocks | Free | no deps | |
| Contribution Metrics Glasscontribution-metrics-glass | shadcn-glass-ui | Blocks | Free | no deps | |
| Flags Section Glassflags-section-glass | shadcn-glass-ui | Blocks | Free | no deps | |
| Header Branding Glassheader-branding-glass | shadcn-glass-ui | Blocks | Free | no deps | |
| Header Nav Glassheader-nav-glass | shadcn-glass-ui | Blocks | Free | no deps |
