@carbon/react
Version:
React components for the Carbon Design System
67 lines (65 loc) • 2.71 kB
JavaScript
/**
* Copyright IBM Corp. 2016, 2026
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
import { usePrefix } from "../../internal/usePrefix.js";
import SkeletonText_default from "../SkeletonText/index.js";
import classNames from "classnames";
import "react";
import PropTypes from "prop-types";
import { jsx, jsxs } from "react/jsx-runtime";
import { ChevronRight } from "@carbon/icons-react";
//#region src/components/Accordion/Accordion.Skeleton.tsx
/**
* Copyright IBM Corp. 2016, 2023
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
function AccordionSkeleton({ align = "end", className, count = 4, isFlush, open = true, ordered = false, ...rest }) {
const prefix = usePrefix();
const classes = classNames(`${prefix}--accordion`, `${prefix}--skeleton`, className, {
[`${prefix}--accordion--${align}`]: align,
[`${prefix}--accordion--flush`]: isFlush && align !== "start"
});
const numSkeletonItems = open ? count - 1 : count;
return /* @__PURE__ */ jsxs(ordered ? "ol" : "ul", {
className: classes,
...rest,
children: [open && /* @__PURE__ */ jsxs("li", {
className: `${prefix}--accordion__item ${prefix}--accordion__item--active`,
children: [/* @__PURE__ */ jsxs("span", {
className: `${prefix}--accordion__heading`,
children: [/* @__PURE__ */ jsx(ChevronRight, { className: `${prefix}--accordion__arrow` }), /* @__PURE__ */ jsx(SkeletonText_default, { className: `${prefix}--accordion__title` })]
}), /* @__PURE__ */ jsxs("div", {
className: `${prefix}--accordion__content`,
children: [
/* @__PURE__ */ jsx(SkeletonText_default, { width: "90%" }),
/* @__PURE__ */ jsx(SkeletonText_default, { width: "80%" }),
/* @__PURE__ */ jsx(SkeletonText_default, { width: "95%" })
]
})]
}), Array.from({ length: numSkeletonItems }).map((_, i) => /* @__PURE__ */ jsx(AccordionSkeletonItem, {}, i))]
});
}
AccordionSkeleton.propTypes = {
align: PropTypes.oneOf(["start", "end"]),
className: PropTypes.string,
count: PropTypes.number,
isFlush: PropTypes.bool,
open: PropTypes.bool
};
function AccordionSkeletonItem() {
const prefix = usePrefix();
return /* @__PURE__ */ jsx("li", {
className: `${prefix}--accordion__item`,
children: /* @__PURE__ */ jsxs("span", {
className: `${prefix}--accordion__heading`,
children: [/* @__PURE__ */ jsx(ChevronRight, { className: `${prefix}--accordion__arrow` }), /* @__PURE__ */ jsx(SkeletonText_default, { className: `${prefix}--accordion__title` })]
})
});
}
//#endregion
export { AccordionSkeleton as default };