@codeworker.br/govbr-tw-react
Version:
Biblioteca de componentes React usando Tailwind CSS que implementa o Padrão Digital de Governo.
39 lines (38 loc) • 2.36 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { createContext, useContext, useRef } from "react";
import listVariants from "./variants";
import listItemVariants from "./item-variants";
import listItemLocatorVariants from "./locator-variants";
import listItemLabelVariants from "./label-variants";
import BASE_CLASSNAMES from "../../config/baseClassNames";
import { cn } from "../../libs/utils";
const ListContext = createContext(null);
const List = (_a) => {
var { className, children, variant = "default", locatorPosition = "top", ref } = _a, props = __rest(_a, ["className", "children", "variant", "locatorPosition", "ref"]);
ref = ref === undefined ? useRef(null) : ref;
return (_jsx(ListContext.Provider, { value: { variant, locatorPosition }, children: _jsx("ul", Object.assign({ className: cn(listVariants({ variant }), className, BASE_CLASSNAMES.list.root) }, props, { ref: ref, children: children })) }));
};
const ListItem = (_a) => {
var { className, children } = _a, props = __rest(_a, ["className", "children"]);
const { variant } = useContext(ListContext);
return (_jsx("li", Object.assign({ className: cn(listItemVariants({ variant }), className, BASE_CLASSNAMES.list.item) }, props, { children: children })));
};
const ListItemLabel = (_a) => {
var { className, children, locator } = _a, props = __rest(_a, ["className", "children", "locator"]);
const { variant, locatorPosition } = useContext(ListContext);
return (_jsxs("span", Object.assign({ className: cn(listItemLabelVariants({ variant, locatorPosition }), className, BASE_CLASSNAMES.list.label) }, props, { children: [locator && (_jsx("span", { className: cn(listItemLocatorVariants({ variant })), children: locator })), _jsx("span", { children: children })] })));
};
List.Item = ListItem;
List.Label = ListItemLabel;
export default List;