UNPKG

@kobalte/core

Version:

Unstyled components and primitives for building accessible web apps and design systems with SolidJS.

113 lines (103 loc) 2.71 kB
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 };