UNPKG

braid-design-system

Version:
74 lines (73 loc) 3.31 kB
"use strict"; const jsxRuntime = require("react/jsx-runtime"); const assert = require("assert"); const react = require("react"); const lib_utils_flattenChildren_cjs = require("../../utils/flattenChildren.cjs"); const lib_components_Divider_Divider_cjs = require("../Divider/Divider.cjs"); const lib_components_Stack_Stack_cjs = require("../Stack/Stack.cjs"); const lib_components_private_buildDataAttributes_cjs = require("../private/buildDataAttributes.cjs"); const lib_components_Accordion_AccordionContext_cjs = require("./AccordionContext.cjs"); const lib_css_atoms_sprinkles_css_cjs = require("../../css/atoms/sprinkles.css.cjs"); const _interopDefaultCompat = (e) => e && typeof e === "object" && "default" in e ? e : { default: e }; const assert__default = /* @__PURE__ */ _interopDefaultCompat(assert); const validSpaceValues = ["medium", "large", "xlarge"]; const defaultSize = "large"; const defaultSpaceForSize = { divided: { xsmall: "medium", small: "medium", standard: "medium", large: "medium" }, undivided: { xsmall: "medium", small: "medium", standard: "large", large: "large" } }; const Accordion = ({ children, size = defaultSize, tone, weight, space: spaceProp, dividers = true, data, ...restProps }) => { assert__default.default( spaceProp === void 0 || Object.values(lib_css_atoms_sprinkles_css_cjs.normalizeResponsiveValue(spaceProp)).every( (value) => value === void 0 || validSpaceValues.includes(value) ), `To ensure adequate space for touch targets, 'space' prop values must be one of the following: ${validSpaceValues.map((x) => `"${x}"`).join(", ")}` ); assert__default.default( tone === void 0 || lib_components_Accordion_AccordionContext_cjs.validTones.includes(tone), `The 'tone' prop should be one of the following: ${lib_components_Accordion_AccordionContext_cjs.validTones.map((x) => `"${x}"`).join(", ")}` ); if (process.env.NODE_ENV !== "production") { lib_components_private_buildDataAttributes_cjs.buildDataAttributes({ data, validateRestProps: restProps }); } const contextValue = react.useMemo( () => ({ size, tone, weight }), [size, tone, weight] ); const space = spaceProp ?? defaultSpaceForSize[dividers ? "divided" : "undivided"][size]; return /* @__PURE__ */ jsxRuntime.jsx(lib_components_Accordion_AccordionContext_cjs.AccordionContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(lib_components_Stack_Stack_cjs.Stack, { space, data, children: !dividers ? children : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ /* @__PURE__ */ jsxRuntime.jsx(lib_components_Divider_Divider_cjs.Divider, {}), react.Children.map(lib_utils_flattenChildren_cjs.flattenChildren(children), (child, index) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ index > 0 ? /* @__PURE__ */ jsxRuntime.jsx( lib_components_Divider_Divider_cjs.Divider, { weight: typeof dividers === "string" ? dividers : void 0 } ) : null, child ] })), /* @__PURE__ */ jsxRuntime.jsx(lib_components_Divider_Divider_cjs.Divider, {}) ] }) }) }); }; exports.Accordion = Accordion; exports.defaultSize = defaultSize; exports.validSpaceValues = validSpaceValues;