@kobalte/core
Version:
Unstyled components and primitives for building accessible web apps and design systems with SolidJS.
113 lines (103 loc) • 2.71 kB
JSX
import {
LinkRoot
} from "./3JA5IX2L.jsx";
import {
Polymorphic
} from "./FLVHQV4A.jsx";
import {
__export
} from "./5WXHJDCZ.jsx";
// src/breadcrumbs/index.tsx
var breadcrumbs_exports = {};
__export(breadcrumbs_exports, {
Breadcrumbs: () => Breadcrumbs,
Link: () => BreadcrumbsLink,
Root: () => BreadcrumbsRoot,
Separator: () => BreadcrumbsSeparator,
useBreadcrumbsContext: () => useBreadcrumbsContext
});
// src/breadcrumbs/breadcrumbs-link.tsx
import { splitProps } from "solid-js";
function BreadcrumbsLink(props) {
const [local, others] = splitProps(props, [
"current",
"disabled",
"aria-current"
]);
const ariaCurrent = () => {
if (!local.current) {
return void 0;
}
return local["aria-current"] || "page";
};
return <LinkRoot
disabled={local.disabled || local.current}
aria-current={ariaCurrent()}
data-current={local.current ? "" : void 0}
{...others}
/>;
}
// src/breadcrumbs/breadcrumbs-root.tsx
import { mergeDefaultProps } from "@kobalte/utils";
import { splitProps as splitProps2 } from "solid-js";
// src/breadcrumbs/breadcrumbs-context.tsx
import { createContext, useContext } from "solid-js";
var BreadcrumbsContext = createContext();
function useBreadcrumbsContext() {
const context = useContext(BreadcrumbsContext);
if (context === void 0) {
throw new Error(
"[kobalte]: `useBreadcrumbsContext` must be used within a `Breadcrumbs.Root` component"
);
}
return context;
}
// src/breadcrumbs/breadcrumbs.intl.ts
var BREADCRUMBS_INTL_TRANSLATIONS = {
// `aria-label` of the navigation.
breadcrumbs: "Breadcrumbs"
};
// src/breadcrumbs/breadcrumbs-root.tsx
function BreadcrumbsRoot(props) {
const mergedProps = mergeDefaultProps(
{
separator: "/",
translations: BREADCRUMBS_INTL_TRANSLATIONS
},
props
);
const [local, others] = splitProps2(mergedProps, [
"separator",
"translations"
]);
const context = {
separator: () => local.separator
};
return <BreadcrumbsContext.Provider value={context}><Polymorphic
as="nav"
aria-label={local.translations.breadcrumbs}
{...others}
/></BreadcrumbsContext.Provider>;
}
// src/breadcrumbs/breadcrumbs-separator.tsx
function BreadcrumbsSeparator(props) {
const context = useBreadcrumbsContext();
return <Polymorphic
as="span"
aria-hidden="true"
{...props}
>{context.separator()}</Polymorphic>;
}
// src/breadcrumbs/index.tsx
var Breadcrumbs = Object.assign(BreadcrumbsRoot, {
Link: BreadcrumbsLink,
Separator: BreadcrumbsSeparator
});
export {
BreadcrumbsLink,
useBreadcrumbsContext,
BreadcrumbsRoot,
BreadcrumbsSeparator,
Breadcrumbs,
breadcrumbs_exports
};