What this family solves
Grouped disclosure family with a low-level accordion component, a canonical AccordionField path, and thin purpose-accordion wrappers.
Marwes documentation
Grouped disclosure family with a low-level accordion component, a canonical AccordionField path, and thin purpose-accordion wrappers.
Grouped disclosure family with a low-level accordion component, a canonical AccordionField path, and thin purpose-accordion wrappers.
Choose the purpose wrapper that matches the meaning; use AccordionField as the deliberate primitive escape hatch.
Frequently asked questions with single-open semantics
Grouped settings sections that can stay open independently
General content sections with purpose metadata
Base accordion group for custom sections; the deliberate escape hatch
Choose an adapter in the verified examples. The inventory below reflects each framework package exactly.
@marwes-ui/reactAccordionField, FAQAccordion, SectionsAccordion, SettingsAccordion
AccordionFieldItem, AccordionFieldProps, FAQAccordionProps, SectionsAccordionProps, SettingsAccordionProps
@marwes-ui/vueAccordionField, FAQAccordion, SectionsAccordion, SettingsAccordion
AccordionFieldItem, AccordionFieldProps, FAQAccordionProps, SectionsAccordionProps, SettingsAccordionProps
@marwes-ui/svelteAccordionField, FAQAccordion, SectionsAccordion, SettingsAccordion
AccordionFieldItem, AccordionFieldProps, FAQAccordionProps, SectionsAccordionProps, SettingsAccordionProps
These examples come from the same fixtures verified by the repository checks.
import { AccordionField } from "@marwes-ui/react"
import { useState } from "react"
export function Example() {
const [openItems, setOpenItems] = useState<string[]>(["1"])
return (
<AccordionField
label=""
items={[
{ value: "1", title: "Accordion title", content: "First section content." },
{ value: "2", title: "Accordion title", content: "Second section content." },
{ value: "3", title: "Accordion title", content: "Third section content." },
]}
openItems={openItems}
onOpenItemsChange={setOpenItems}
/>
)
}<script setup lang="ts">
import { ref } from "vue"
import { AccordionField } from "@marwes-ui/vue"
const openItems = ref<string[]>(["1"])
</script>
<template>
<AccordionField
label=""
:items="[
{ value: '1', title: 'Accordion title', content: 'First section content.' },
{ value: '2', title: 'Accordion title', content: 'Second section content.' },
{ value: '3', title: 'Accordion title', content: 'Third section content.' },
]"
v-model:open-items="openItems"
/>
</template><script lang="ts">
import { AccordionField } from "@marwes-ui/svelte"
let openItems = $state<string[]>(["1"])
</script>
<AccordionField
label=""
items={[
{ value: "1", title: "Accordion title", content: "First section content." },
{ value: "2", title: "Accordion title", content: "Second section content." },
{ value: "3", title: "Accordion title", content: "Third section content." },
]}
{openItems}
onopenitemschange={(items) => (openItems = items)}
/>Accordion uses Marwes preset CSS and theme variables. Customize it through the theme passed to MarwesProvider; do not add a second component stylesheet. See the theming guide for configuration and token details.