29 lines
846 B
JavaScript
29 lines
846 B
JavaScript
// components/Accordion.js
|
|
// import { Tag } from "../sigpro.js";
|
|
import { ui, val } from "../core/utils.js";
|
|
|
|
/**
|
|
* Accordion component
|
|
*
|
|
* daisyUI classes used:
|
|
* - collapse, collapse-arrow, collapse-plus, collapse-title, collapse-content
|
|
* - collapse-open, collapse-close
|
|
* - bg-base-200, bg-base-100, bg-primary, bg-secondary
|
|
* - mb-2, mt-2, rounded-box
|
|
*/
|
|
export const Accordion = (props, children) => {
|
|
const { class: className, title, name, open, ...rest } = props;
|
|
|
|
return Tag("div", {
|
|
...rest,
|
|
class: ui('collapse collapse-arrow bg-base-200 mb-2', className),
|
|
}, [
|
|
Tag("input", {
|
|
type: name ? "radio" : "checkbox",
|
|
name: name,
|
|
checked: val(open),
|
|
}),
|
|
Tag("div", { class: "collapse-title text-xl font-medium" }, title),
|
|
Tag("div", { class: "collapse-content" }, children),
|
|
]);
|
|
}; |