@purpurds/breadcrumbs 6.9.0 → 6.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LICENSE.txt +1 -1
- package/dist/breadcrumbs.cjs.js +3 -3
- package/dist/breadcrumbs.cjs.js.map +1 -1
- package/dist/breadcrumbs.d.ts +3 -6
- package/dist/breadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs.es.js +76 -86
- package/dist/breadcrumbs.es.js.map +1 -1
- package/eslint.config.mjs +2 -0
- package/package.json +8 -12
- package/src/breadcrumbs.tsx +16 -24
package/dist/LICENSE.txt
CHANGED
package/dist/breadcrumbs.cjs.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),m=require("react");function E(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var $={exports:{}};/*!
|
|
2
2
|
Copyright (c) 2018 Jed Watson.
|
|
3
3
|
Licensed under the MIT License (MIT), see
|
|
4
4
|
http://jedwatson.github.io/classnames
|
|
5
|
-
*/var
|
|
5
|
+
*/var S;function A(){return S||(S=1,function(e){(function(){var s={}.hasOwnProperty;function n(){for(var r="",t=0;t<arguments.length;t++){var u=arguments[t];u&&(r=o(r,a.call(this,u)))}return r}function a(r){if(typeof r=="string"||typeof r=="number")return this&&this[r]||r;if(typeof r!="object")return"";if(Array.isArray(r))return n.apply(this,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var t="";for(var u in r)s.call(r,u)&&r[u]&&(t=o(t,this&&this[u]||u));return t}function o(r,t){return t?r?r+" "+t:r+t:r}e.exports?(n.default=n,e.exports=n):window.classNames=n})()}($)),$.exports}var T=A();const Z=E(T),z={"purpur-icon":"_purpur-icon_8u1lq_1","purpur-icon--xxs":"_purpur-icon--xxs_8u1lq_4","purpur-icon--xs":"_purpur-icon--xs_8u1lq_8","purpur-icon--sm":"_purpur-icon--sm_8u1lq_12","purpur-icon--md":"_purpur-icon--md_8u1lq_16","purpur-icon--lg":"_purpur-icon--lg_8u1lq_20","purpur-icon--xl":"_purpur-icon--xl_8u1lq_24"},F=Z.bind(z),N="purpur-icon",R="md",k=e=>e.filter(s=>Object.keys(s).length>=1).map(s=>`${s.name}="${s.value}"`).join(" "),D=({content:e="",title:s}={})=>{const n=[{name:"xmlns",value:"http://www.w3.org/2000/svg"},{name:"fill",value:"currentColor"},{name:"viewBox",value:"0 0 24 24"},s?{name:"role",value:"img"}:{name:"aria-hidden",value:"true"}],a=s?`<title>${s}</title>`:"";return`<svg ${k(n)}>${a}${e}</svg>`},J=e=>e.replace(/<(\/?)svg([^>]*)>/g,"").trim(),q=({["data-testid"]:e,svg:s,allyTitle:n,className:a,size:o=R,...r})=>{const t=D({content:J(s.svg),title:n}),u=F(a,N,`${N}--${o}`);return c.jsx("span",{"aria-label":n,className:u,"data-testid":e,dangerouslySetInnerHTML:{__html:t},...r})};q.displayName="Icon";const V={name:"home",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M11.38 1.848a.9.9 0 0 1 1.24 0l8.69 8.276c1.242 1.183.405 3.276-1.31 3.276h-.6v8.1a.9.9 0 0 1-.9.9h-13a.9.9 0 0 1-.9-.9v-8.1H4c-1.715 0-2.552-2.093-1.31-3.276l8.69-8.276ZM12 3.743l-8.069 7.685c-.026.024-.03.04-.032.049a.11.11 0 0 0 .008.06.11.11 0 0 0 .036.049c.007.005.021.014.057.014h1.5a.9.9 0 0 1 .9.9v8.1h11.2v-8.1a.9.9 0 0 1 .9-.9H20c.036 0 .05-.009.057-.014a.111.111 0 0 0 .036-.049.111.111 0 0 0 .008-.06c-.002-.008-.006-.025-.032-.05L12 3.744ZM10.6 14a.9.9 0 0 1 .9-.9H15a.9.9 0 0 1 .9.9v4a.9.9 0 0 1-.9.9h-3.5a.9.9 0 0 1-.9-.9v-4Zm1.8.9v2.2h1.7v-2.2h-1.7Z" clip-rule="evenodd"/></svg>',keywords:["home"],category:"buildings"},I=e=>c.jsx(q,{...e,svg:V});I.displayName="IconHome";function K(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var y={exports:{}};/*!
|
|
6
6
|
Copyright (c) 2018 Jed Watson.
|
|
7
7
|
Licensed under the MIT License (MIT), see
|
|
8
8
|
http://jedwatson.github.io/classnames
|
|
9
|
-
*/var
|
|
9
|
+
*/var O;function Q(){return O||(O=1,function(e){(function(){var s={}.hasOwnProperty;function n(){for(var r="",t=0;t<arguments.length;t++){var u=arguments[t];u&&(r=o(r,a(u)))}return r}function a(r){if(typeof r=="string"||typeof r=="number")return r;if(typeof r!="object")return"";if(Array.isArray(r))return n.apply(null,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var t="";for(var u in r)s.call(r,u)&&r[u]&&(t=o(t,u));return t}function o(r,t){return t?r?r+" "+t:r+t:r}e.exports?(n.default=n,e.exports=n):window.classNames=n})()}(y)),y.exports}var U=Q();const M=K(U),l={"purpur-breadcrumbs":"_purpur-breadcrumbs_1xh80_1","purpur-breadcrumbs--default":"_purpur-breadcrumbs--default_1xh80_20","purpur-breadcrumbs--negative":"_purpur-breadcrumbs--negative_1xh80_34","purpur-breadcrumbs__list":"_purpur-breadcrumbs__list_1xh80_48","purpur-breadcrumbs__home":"_purpur-breadcrumbs__home_1xh80_57","purpur-breadcrumb-item":"_purpur-breadcrumb-item_1xh80_67","purpur-breadcrumb-item--current":"_purpur-breadcrumb-item--current_1xh80_72","purpur-breadcrumb-item--negative":"_purpur-breadcrumb-item--negative_1xh80_94"},W=(e,s,n)=>({"@type":"ListItem",position:n,name:e,item:s}),X=e=>JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e}),v="purpur-breadcrumbs",j="purpur-breadcrumb-item",B=({ariaLabel:e,children:s,className:n,meta:a=!0,negative:o=!1,highlightLast:r=!0,hideHomeIcon:t,...u})=>{const g=M([n,l[v],l[`${v}--${o?"negative":"default"}`]]),p=m.Children.count(s),d=[],C=m.Children.map(s,(f,H)=>{const x=H+1,P=r&&p===x,_=f.props.children,i=typeof _=="string"?null:_.props;let h=null,b=null;return typeof _=="string"?(h=_,b=f.props.href):i!=null&&i.children&&typeof(i==null?void 0:i.children)=="string"&&(h=i.children,b=i.href),h&&b&&d.push(W(h,b,x)),m.cloneElement(f,{current:P,negative:o,...x===1&&{children:c.jsxs(c.Fragment,{children:[t?null:c.jsx("span",{className:l[`${v}__home`],"aria-hidden":"true",children:c.jsx(I,{size:"xs"})}),f.props.children]})}})}),w=d.length===p?X(d):null;return c.jsxs("nav",{"aria-label":e||"Breadcrumb",className:g,...u,children:[c.jsx("ol",{className:l[`${v}__list`],children:C}),a&&w?c.jsx("script",{type:"application/ld+json","data-testid":"breadcrumbs-meta",dangerouslySetInnerHTML:{__html:w}}):null]})},L=({href:e,["data-testid"]:s,children:n,current:a=!1,negative:o=!1,onClick:r,...t})=>{const u=M([l[j],l[`${j}--${o?"negative":"default"}`]],{[l[`${j}--current`]]:a}),g=()=>{const p={href:e,"data-testid":s,"aria-current":a?"page":void 0,onClick:r};return e||typeof n=="string"?m.createElement("a",p,n):m.cloneElement(n,{...p,...n.props})};return c.jsx("li",{...t,className:u,children:g()})};B.Item=L;exports.Breadcrumbs=B;exports.BreadcrumbsItem=L;
|
|
10
10
|
//# sourceMappingURL=breadcrumbs.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumbs.cjs.js","sources":["../../icon/dist/icon-CbdbqC3C.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as l } from \"react/jsx-runtime\";\nfunction f(r) {\n return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, \"default\") ? r.default : r;\n}\nvar c = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar p;\nfunction m() {\n return p || (p = 1, function(r) {\n (function() {\n var e = {}.hasOwnProperty;\n function o() {\n for (var t = \"\", n = 0; n < arguments.length; n++) {\n var s = arguments[n];\n s && (t = i(t, u.call(this, s)));\n }\n return t;\n }\n function u(t) {\n if (typeof t == \"string\" || typeof t == \"number\")\n return this && this[t] || t;\n if (typeof t != \"object\")\n return \"\";\n if (Array.isArray(t))\n return o.apply(this, t);\n if (t.toString !== Object.prototype.toString && !t.toString.toString().includes(\"[native code]\"))\n return t.toString();\n var n = \"\";\n for (var s in t)\n e.call(t, s) && t[s] && (n = i(n, this && this[s] || s));\n return n;\n }\n function i(t, n) {\n return n ? t ? t + \" \" + n : t + n : t;\n }\n r.exports ? (o.default = o, r.exports = o) : window.classNames = o;\n })();\n }(c)), c.exports;\n}\nvar _ = m();\nconst d = /* @__PURE__ */ f(_), v = {\n \"purpur-icon\": \"_purpur-icon_8u1lq_1\",\n \"purpur-icon--xxs\": \"_purpur-icon--xxs_8u1lq_4\",\n \"purpur-icon--xs\": \"_purpur-icon--xs_8u1lq_8\",\n \"purpur-icon--sm\": \"_purpur-icon--sm_8u1lq_12\",\n \"purpur-icon--md\": \"_purpur-icon--md_8u1lq_16\",\n \"purpur-icon--lg\": \"_purpur-icon--lg_8u1lq_20\",\n \"purpur-icon--xl\": \"_purpur-icon--xl_8u1lq_24\"\n}, g = d.bind(v), a = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), b = ({ content: r = \"\", title: e } = {}) => {\n const o = [\n { name: \"xmlns\", value: \"http://www.w3.org/2000/svg\" },\n { name: \"fill\", value: \"currentColor\" },\n { name: \"viewBox\", value: \"0 0 24 24\" },\n e ? { name: \"role\", value: \"img\" } : { name: \"aria-hidden\", value: \"true\" }\n ], u = e ? `<title>${e}</title>` : \"\";\n return `<svg ${h(o)}>${u}${r}</svg>`;\n}, S = (r) => r.replace(/<(\\/?)svg([^>]*)>/g, \"\").trim(), y = ({\n [\"data-testid\"]: r,\n svg: e,\n allyTitle: o,\n className: u,\n size: i = x,\n ...t\n}) => {\n const n = b({\n content: S(e.svg),\n title: o\n }), s = g(u, a, `${a}--${i}`);\n return /* @__PURE__ */ l(\n \"span\",\n {\n \"aria-label\": o,\n className: s,\n \"data-testid\": r,\n dangerouslySetInnerHTML: { __html: n },\n ...t\n }\n );\n};\ny.displayName = \"Icon\";\nexport {\n y as I\n};\n//# sourceMappingURL=icon-CbdbqC3C.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-CbdbqC3C.mjs\";\nconst v = {\n name: \"home\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.38 1.848a.9.9 0 0 1 1.24 0l8.69 8.276c1.242 1.183.405 3.276-1.31 3.276h-.6v8.1a.9.9 0 0 1-.9.9h-13a.9.9 0 0 1-.9-.9v-8.1H4c-1.715 0-2.552-2.093-1.31-3.276l8.69-8.276ZM12 3.743l-8.069 7.685c-.026.024-.03.04-.032.049a.11.11 0 0 0 .008.06.11.11 0 0 0 .036.049c.007.005.021.014.057.014h1.5a.9.9 0 0 1 .9.9v8.1h11.2v-8.1a.9.9 0 0 1 .9-.9H20c.036 0 .05-.009.057-.014a.111.111 0 0 0 .036-.049.111.111 0 0 0 .008-.06c-.002-.008-.006-.025-.032-.05L12 3.744ZM10.6 14a.9.9 0 0 1 .9-.9H15a.9.9 0 0 1 .9.9v4a.9.9 0 0 1-.9.9h-3.5a.9.9 0 0 1-.9-.9v-4Zm1.8.9v2.2h1.7v-2.2h-1.7Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"home\"],\n category: \"buildings\"\n}, c = (o) => /* @__PURE__ */ e(a, { ...o, svg: v });\nc.displayName = \"IconHome\";\nexport {\n c as IconHome\n};\n//# sourceMappingURL=home.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export type MetaListItem = {\n \"@type\": string;\n position: number;\n name: string;\n item: string;\n};\n\ntype MakeMetaListItem = (name: string, item: string, position: number) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, item, position) => ({\n \"@type\": \"ListItem\",\n position,\n name,\n item,\n});\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, { Children, cloneElement, createElement, ReactElement } from \"react\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { MetaListItem, metaListItem, metaSchema } from \"./meta\";\nimport { DataAttributes } from \"./types.ts\";\n\nexport type BreadcrumbsProps = DataAttributes & {\n [\"data-testid\"]?: string;\n ariaLabel?: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\n className?: string;\n /** Set to generate breadcrumbs metadata for crawlers. Defaults to true. */\n meta?: boolean;\n /** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */\n negative?: boolean;\n /** Set to render the last breadcrumb item in bold font to indicate that this is the current page. Setting this to false will render the last item as a normal breadcrumb link. Defaults to true. */\n highlightLast?: boolean;\n /** Set to not render the home icon in front of the first breadcrumb item. */\n hideHomeIcon?: boolean;\n};\n\ntype CommonItemProps = {\n current?: boolean;\n negative?: boolean;\n [\"data-testid\"]?: string;\n ariaLabel?: string;\n meta?: boolean;\n onClick?: () => void;\n};\n\nexport type BreadcrumbsItemProps = CommonItemProps & Conditional;\n\ntype Conditional =\n | {\n href?: string;\n children: string;\n }\n | {\n href?: never;\n children: ReactElement<HTMLAnchorElement>;\n };\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n [\"data-testid\"]: dataTestId,\n ariaLabel,\n children,\n className,\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = c([\n className,\n styles[rootClassName],\n styles[`${rootClassName}--${negative ? \"negative\" : \"default\"}`],\n ]);\n\n const maxIndex = Children.count(children);\n\n const metaListItems: MetaListItem[] = [];\n\n const items = Children.map(children, (item, index) => {\n const position = index + 1;\n const last = maxIndex === position;\n const current = highlightLast && last;\n\n const grandChildren = item.props.children;\n const grandGrandChildren = typeof grandChildren === \"string\" ? null : grandChildren.props;\n\n let name = null,\n href = null;\n\n if (typeof grandChildren === \"string\") {\n name = grandChildren;\n href = item.props.href;\n } else if (grandGrandChildren?.children && typeof grandGrandChildren?.children === \"string\") {\n name = grandGrandChildren.children;\n href = grandGrandChildren.href;\n }\n\n if (name && href) {\n metaListItems.push(metaListItem(name, href, position));\n }\n\n const child = cloneElement(item, {\n current,\n negative,\n ...(position === 1 && {\n children: (\n <>\n {!hideHomeIcon ? (\n <span className={styles[`${rootClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n ) : null}\n {item.props.children}\n </>\n ),\n }),\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav\n data-testid={dataTestId}\n aria-label={ariaLabel || \"Breadcrumb\"}\n className={classes}\n {...props}\n >\n <ol className={styles[`${rootClassName}__list`]}>{items}</ol>\n {meta && schema ? (\n <script\n type=\"application/ld+json\"\n data-testid=\"breadcrumbs-meta\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: schema }}\n />\n ) : null}\n </nav>\n );\n};\n\nconst Item = ({\n href,\n [\"data-testid\"]: dataTestId,\n children,\n current = false,\n negative = false,\n onClick,\n ...rest\n}: BreadcrumbsItemProps) => {\n const classes = c(\n [styles[itemClassName], styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`]],\n {\n [styles[`${itemClassName}--current`]]: current,\n }\n );\n\n const link = () => {\n const commonProps = {\n href,\n [\"data-testid\"]: dataTestId,\n \"aria-current\": current ? \"page\" : undefined,\n onClick,\n };\n\n const component =\n href || typeof children === \"string\"\n ? createElement(\"a\", commonProps, children)\n : cloneElement(children, {\n ...commonProps,\n ...children.props,\n });\n\n return component;\n };\n\n return (\n <li {...rest} className={classes}>\n {link()}\n </li>\n );\n};\n\nBreadcrumbs.Item = Item;\n\nexport { Breadcrumbs, Item as BreadcrumbsItem };\n"],"names":["f","r","c","p","m","e","o","t","n","s","i","u","_","d","v","g","a","x","h","b","S","y","l","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","item","position","metaSchema","itemListElement","rootClassName","itemClassName","Breadcrumbs","dataTestId","ariaLabel","children","className","meta","negative","highlightLast","hideHomeIcon","props","styles","maxIndex","Children","metaListItems","items","index","current","grandChildren","grandGrandChildren","href","cloneElement","jsxs","Fragment","jsx","IconHome","schema","Item","onClick","rest","link","commonProps","createElement"],"mappings":"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","x_google_ignoreList":[2]}
|
|
1
|
+
{"version":3,"file":"breadcrumbs.cjs.js","sources":["../../icon/dist/icon-CbdbqC3C.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as l } from \"react/jsx-runtime\";\nfunction f(r) {\n return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, \"default\") ? r.default : r;\n}\nvar c = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar p;\nfunction m() {\n return p || (p = 1, function(r) {\n (function() {\n var e = {}.hasOwnProperty;\n function o() {\n for (var t = \"\", n = 0; n < arguments.length; n++) {\n var s = arguments[n];\n s && (t = i(t, u.call(this, s)));\n }\n return t;\n }\n function u(t) {\n if (typeof t == \"string\" || typeof t == \"number\")\n return this && this[t] || t;\n if (typeof t != \"object\")\n return \"\";\n if (Array.isArray(t))\n return o.apply(this, t);\n if (t.toString !== Object.prototype.toString && !t.toString.toString().includes(\"[native code]\"))\n return t.toString();\n var n = \"\";\n for (var s in t)\n e.call(t, s) && t[s] && (n = i(n, this && this[s] || s));\n return n;\n }\n function i(t, n) {\n return n ? t ? t + \" \" + n : t + n : t;\n }\n r.exports ? (o.default = o, r.exports = o) : window.classNames = o;\n })();\n }(c)), c.exports;\n}\nvar _ = m();\nconst d = /* @__PURE__ */ f(_), v = {\n \"purpur-icon\": \"_purpur-icon_8u1lq_1\",\n \"purpur-icon--xxs\": \"_purpur-icon--xxs_8u1lq_4\",\n \"purpur-icon--xs\": \"_purpur-icon--xs_8u1lq_8\",\n \"purpur-icon--sm\": \"_purpur-icon--sm_8u1lq_12\",\n \"purpur-icon--md\": \"_purpur-icon--md_8u1lq_16\",\n \"purpur-icon--lg\": \"_purpur-icon--lg_8u1lq_20\",\n \"purpur-icon--xl\": \"_purpur-icon--xl_8u1lq_24\"\n}, g = d.bind(v), a = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), b = ({ content: r = \"\", title: e } = {}) => {\n const o = [\n { name: \"xmlns\", value: \"http://www.w3.org/2000/svg\" },\n { name: \"fill\", value: \"currentColor\" },\n { name: \"viewBox\", value: \"0 0 24 24\" },\n e ? { name: \"role\", value: \"img\" } : { name: \"aria-hidden\", value: \"true\" }\n ], u = e ? `<title>${e}</title>` : \"\";\n return `<svg ${h(o)}>${u}${r}</svg>`;\n}, S = (r) => r.replace(/<(\\/?)svg([^>]*)>/g, \"\").trim(), y = ({\n [\"data-testid\"]: r,\n svg: e,\n allyTitle: o,\n className: u,\n size: i = x,\n ...t\n}) => {\n const n = b({\n content: S(e.svg),\n title: o\n }), s = g(u, a, `${a}--${i}`);\n return /* @__PURE__ */ l(\n \"span\",\n {\n \"aria-label\": o,\n className: s,\n \"data-testid\": r,\n dangerouslySetInnerHTML: { __html: n },\n ...t\n }\n );\n};\ny.displayName = \"Icon\";\nexport {\n y as I\n};\n//# sourceMappingURL=icon-CbdbqC3C.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-CbdbqC3C.mjs\";\nconst v = {\n name: \"home\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.38 1.848a.9.9 0 0 1 1.24 0l8.69 8.276c1.242 1.183.405 3.276-1.31 3.276h-.6v8.1a.9.9 0 0 1-.9.9h-13a.9.9 0 0 1-.9-.9v-8.1H4c-1.715 0-2.552-2.093-1.31-3.276l8.69-8.276ZM12 3.743l-8.069 7.685c-.026.024-.03.04-.032.049a.11.11 0 0 0 .008.06.11.11 0 0 0 .036.049c.007.005.021.014.057.014h1.5a.9.9 0 0 1 .9.9v8.1h11.2v-8.1a.9.9 0 0 1 .9-.9H20c.036 0 .05-.009.057-.014a.111.111 0 0 0 .036-.049.111.111 0 0 0 .008-.06c-.002-.008-.006-.025-.032-.05L12 3.744ZM10.6 14a.9.9 0 0 1 .9-.9H15a.9.9 0 0 1 .9.9v4a.9.9 0 0 1-.9.9h-3.5a.9.9 0 0 1-.9-.9v-4Zm1.8.9v2.2h1.7v-2.2h-1.7Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"home\"],\n category: \"buildings\"\n}, c = (o) => /* @__PURE__ */ e(a, { ...o, svg: v });\nc.displayName = \"IconHome\";\nexport {\n c as IconHome\n};\n//# sourceMappingURL=home.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export type MetaListItem = {\n \"@type\": string;\n position: number;\n name: string;\n item: string;\n};\n\ntype MakeMetaListItem = (name: string, item: string, position: number) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, item, position) => ({\n \"@type\": \"ListItem\",\n position,\n name,\n item,\n});\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, { Children, cloneElement, createElement, ReactElement } from \"react\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { MetaListItem, metaListItem, metaSchema } from \"./meta\";\nimport { DataAttributes } from \"./types.ts\";\n\nexport type BreadcrumbsProps = React.HTMLAttributes<HTMLElement> &\n DataAttributes & {\n ariaLabel?: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\n /** Set to generate breadcrumbs metadata for crawlers. Defaults to true. */\n meta?: boolean;\n /** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */\n negative?: boolean;\n /** Set to render the last breadcrumb item in bold font to indicate that this is the current page. Setting this to false will render the last item as a normal breadcrumb link. Defaults to true. */\n highlightLast?: boolean;\n /** Set to not render the home icon in front of the first breadcrumb item. */\n hideHomeIcon?: boolean;\n };\n\ntype CommonItemProps = React.HTMLAttributes<HTMLLIElement> & DataAttributes & {\n current?: boolean;\n negative?: boolean;\n ariaLabel?: string;\n meta?: boolean;\n onClick?: () => void;\n};\n\nexport type BreadcrumbsItemProps = CommonItemProps & Conditional;\n\ntype Conditional =\n | {\n href?: string;\n children: string;\n }\n | {\n href?: never;\n children: ReactElement<HTMLAnchorElement>;\n };\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n ariaLabel,\n children,\n className,\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = c([\n className,\n styles[rootClassName],\n styles[`${rootClassName}--${negative ? \"negative\" : \"default\"}`],\n ]);\n\n const maxIndex = Children.count(children);\n\n const metaListItems: MetaListItem[] = [];\n\n const items = Children.map(children, (item, index) => {\n const position = index + 1;\n const last = maxIndex === position;\n const current = highlightLast && last;\n\n const grandChildren = item.props.children;\n const grandGrandChildren = typeof grandChildren === \"string\" ? null : grandChildren.props;\n\n let name = null,\n href = null;\n\n if (typeof grandChildren === \"string\") {\n name = grandChildren;\n href = item.props.href;\n } else if (grandGrandChildren?.children && typeof grandGrandChildren?.children === \"string\") {\n name = grandGrandChildren.children;\n href = grandGrandChildren.href;\n }\n\n if (name && href) {\n metaListItems.push(metaListItem(name, href, position));\n }\n\n const child = cloneElement(item, {\n current,\n negative,\n ...(position === 1 && {\n children: (\n <>\n {!hideHomeIcon ? (\n <span className={styles[`${rootClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n ) : null}\n {item.props.children}\n </>\n ),\n }),\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav aria-label={ariaLabel || \"Breadcrumb\"} className={classes} {...props}>\n <ol className={styles[`${rootClassName}__list`]}>{items}</ol>\n {meta && schema ? (\n <script\n type=\"application/ld+json\"\n data-testid=\"breadcrumbs-meta\"\n \n dangerouslySetInnerHTML={{ __html: schema }}\n />\n ) : null}\n </nav>\n );\n};\n\nconst Item = ({\n href,\n [\"data-testid\"]: dataTestId,\n children,\n current = false,\n negative = false,\n onClick,\n ...rest\n}: BreadcrumbsItemProps) => {\n const classes = c(\n [styles[itemClassName], styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`]],\n {\n [styles[`${itemClassName}--current`]]: current,\n }\n );\n\n const link = () => {\n const commonProps = {\n href,\n [\"data-testid\"]: dataTestId,\n \"aria-current\": current ? \"page\" : undefined,\n onClick,\n };\n\n const component =\n href || typeof children === \"string\"\n ? createElement(\"a\", commonProps, children)\n : cloneElement(children, {\n ...commonProps,\n ...children.props,\n });\n\n return component;\n };\n\n return (\n <li {...rest} className={classes}>\n {link()}\n </li>\n );\n};\n\nBreadcrumbs.Item = Item;\n\nexport { Breadcrumbs, Item as BreadcrumbsItem };\n"],"names":["f","r","c","p","m","e","o","t","n","s","i","u","_","d","v","g","a","x","h","b","S","y","l","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","item","position","metaSchema","itemListElement","rootClassName","itemClassName","Breadcrumbs","ariaLabel","children","className","meta","negative","highlightLast","hideHomeIcon","props","styles","maxIndex","Children","metaListItems","items","index","current","grandChildren","grandGrandChildren","href","cloneElement","jsxs","Fragment","jsx","IconHome","schema","Item","dataTestId","onClick","rest","link","commonProps","createElement"],"mappings":"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","x_google_ignoreList":[2]}
|
package/dist/breadcrumbs.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { default as React, ReactElement } from 'react';
|
|
2
2
|
import { DataAttributes } from './types.ts';
|
|
3
3
|
|
|
4
|
-
export type BreadcrumbsProps = DataAttributes & {
|
|
5
|
-
["data-testid"]?: string;
|
|
4
|
+
export type BreadcrumbsProps = React.HTMLAttributes<HTMLElement> & DataAttributes & {
|
|
6
5
|
ariaLabel?: string;
|
|
7
6
|
children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;
|
|
8
|
-
className?: string;
|
|
9
7
|
/** Set to generate breadcrumbs metadata for crawlers. Defaults to true. */
|
|
10
8
|
meta?: boolean;
|
|
11
9
|
/** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */
|
|
@@ -15,10 +13,9 @@ export type BreadcrumbsProps = DataAttributes & {
|
|
|
15
13
|
/** Set to not render the home icon in front of the first breadcrumb item. */
|
|
16
14
|
hideHomeIcon?: boolean;
|
|
17
15
|
};
|
|
18
|
-
type CommonItemProps = {
|
|
16
|
+
type CommonItemProps = React.HTMLAttributes<HTMLLIElement> & DataAttributes & {
|
|
19
17
|
current?: boolean;
|
|
20
18
|
negative?: boolean;
|
|
21
|
-
["data-testid"]?: string;
|
|
22
19
|
ariaLabel?: string;
|
|
23
20
|
meta?: boolean;
|
|
24
21
|
onClick?: () => void;
|
|
@@ -32,7 +29,7 @@ type Conditional = {
|
|
|
32
29
|
children: ReactElement<HTMLAnchorElement>;
|
|
33
30
|
};
|
|
34
31
|
declare const Breadcrumbs: {
|
|
35
|
-
({
|
|
32
|
+
({ ariaLabel, children, className, meta, negative, highlightLast, hideHomeIcon, ...props }: BreadcrumbsProps): React.JSX.Element;
|
|
36
33
|
Item: ({ href, ["data-testid"]: dataTestId, children, current, negative, onClick, ...rest }: BreadcrumbsItemProps) => React.JSX.Element;
|
|
37
34
|
};
|
|
38
35
|
declare const Item: ({ href, ["data-testid"]: dataTestId, children, current, negative, onClick, ...rest }: BreadcrumbsItemProps) => React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../src/breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAyC,YAAY,EAAE,MAAM,OAAO,CAAC;AAMnF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../src/breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAyC,YAAY,EAAE,MAAM,OAAO,CAAC;AAMnF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GAC9D,cAAc,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzF,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oMAAoM;IACpM,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEJ,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,cAAc,GAAG;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,WAAW,CAAC;AAEjE,KAAK,WAAW,GACZ;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;CAC3C,CAAC;AAKN,QAAA,MAAM,WAAW;gGASd,gBAAgB;iGA+EhB,oBAAoB;CAVtB,CAAC;AAEF,QAAA,MAAM,IAAI,yFAQP,oBAAoB,sBAgCtB,CAAC;AAIF,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,eAAe,EAAE,CAAC"}
|
package/dist/breadcrumbs.es.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { Children as
|
|
3
|
-
function
|
|
1
|
+
import { jsx as i, jsxs as $, Fragment as A } from "react/jsx-runtime";
|
|
2
|
+
import { Children as S, cloneElement as q, createElement as E } from "react";
|
|
3
|
+
function Z(e) {
|
|
4
4
|
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
5
5
|
}
|
|
6
|
-
var
|
|
6
|
+
var N = { exports: {} };
|
|
7
7
|
/*!
|
|
8
8
|
Copyright (c) 2018 Jed Watson.
|
|
9
9
|
Licensed under the MIT License (MIT), see
|
|
10
10
|
http://jedwatson.github.io/classnames
|
|
11
11
|
*/
|
|
12
|
-
var
|
|
13
|
-
function
|
|
14
|
-
return
|
|
12
|
+
var j;
|
|
13
|
+
function T() {
|
|
14
|
+
return j || (j = 1, function(e) {
|
|
15
15
|
(function() {
|
|
16
16
|
var s = {}.hasOwnProperty;
|
|
17
17
|
function n() {
|
|
@@ -40,10 +40,10 @@ function k() {
|
|
|
40
40
|
}
|
|
41
41
|
e.exports ? (n.default = n, e.exports = n) : window.classNames = n;
|
|
42
42
|
})();
|
|
43
|
-
}(
|
|
43
|
+
}(N)), N.exports;
|
|
44
44
|
}
|
|
45
|
-
var
|
|
46
|
-
const
|
|
45
|
+
var k = T();
|
|
46
|
+
const z = /* @__PURE__ */ Z(k), F = {
|
|
47
47
|
"purpur-icon": "_purpur-icon_8u1lq_1",
|
|
48
48
|
"purpur-icon--xxs": "_purpur-icon--xxs_8u1lq_4",
|
|
49
49
|
"purpur-icon--xs": "_purpur-icon--xs_8u1lq_8",
|
|
@@ -51,27 +51,27 @@ const F = /* @__PURE__ */ T(z), D = {
|
|
|
51
51
|
"purpur-icon--md": "_purpur-icon--md_8u1lq_16",
|
|
52
52
|
"purpur-icon--lg": "_purpur-icon--lg_8u1lq_20",
|
|
53
53
|
"purpur-icon--xl": "_purpur-icon--xl_8u1lq_24"
|
|
54
|
-
},
|
|
54
|
+
}, D = z.bind(F), I = "purpur-icon", J = "md", R = (e) => e.filter((s) => Object.keys(s).length >= 1).map((s) => `${s.name}="${s.value}"`).join(" "), V = ({ content: e = "", title: s } = {}) => {
|
|
55
55
|
const n = [
|
|
56
56
|
{ name: "xmlns", value: "http://www.w3.org/2000/svg" },
|
|
57
57
|
{ name: "fill", value: "currentColor" },
|
|
58
58
|
{ name: "viewBox", value: "0 0 24 24" },
|
|
59
59
|
s ? { name: "role", value: "img" } : { name: "aria-hidden", value: "true" }
|
|
60
60
|
], a = s ? `<title>${s}</title>` : "";
|
|
61
|
-
return `<svg ${
|
|
62
|
-
},
|
|
61
|
+
return `<svg ${R(n)}>${a}${e}</svg>`;
|
|
62
|
+
}, K = (e) => e.replace(/<(\/?)svg([^>]*)>/g, "").trim(), L = ({
|
|
63
63
|
["data-testid"]: e,
|
|
64
64
|
svg: s,
|
|
65
65
|
allyTitle: n,
|
|
66
66
|
className: a,
|
|
67
|
-
size: o =
|
|
67
|
+
size: o = J,
|
|
68
68
|
...r
|
|
69
69
|
}) => {
|
|
70
|
-
const t =
|
|
71
|
-
content:
|
|
70
|
+
const t = V({
|
|
71
|
+
content: K(s.svg),
|
|
72
72
|
title: n
|
|
73
|
-
}), u =
|
|
74
|
-
return /* @__PURE__ */
|
|
73
|
+
}), u = D(a, I, `${I}--${o}`);
|
|
74
|
+
return /* @__PURE__ */ i(
|
|
75
75
|
"span",
|
|
76
76
|
{
|
|
77
77
|
"aria-label": n,
|
|
@@ -82,26 +82,26 @@ const F = /* @__PURE__ */ T(z), D = {
|
|
|
82
82
|
}
|
|
83
83
|
);
|
|
84
84
|
};
|
|
85
|
-
|
|
86
|
-
const
|
|
85
|
+
L.displayName = "Icon";
|
|
86
|
+
const Q = {
|
|
87
87
|
name: "home",
|
|
88
88
|
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M11.38 1.848a.9.9 0 0 1 1.24 0l8.69 8.276c1.242 1.183.405 3.276-1.31 3.276h-.6v8.1a.9.9 0 0 1-.9.9h-13a.9.9 0 0 1-.9-.9v-8.1H4c-1.715 0-2.552-2.093-1.31-3.276l8.69-8.276ZM12 3.743l-8.069 7.685c-.026.024-.03.04-.032.049a.11.11 0 0 0 .008.06.11.11 0 0 0 .036.049c.007.005.021.014.057.014h1.5a.9.9 0 0 1 .9.9v8.1h11.2v-8.1a.9.9 0 0 1 .9-.9H20c.036 0 .05-.009.057-.014a.111.111 0 0 0 .036-.049.111.111 0 0 0 .008-.06c-.002-.008-.006-.025-.032-.05L12 3.744ZM10.6 14a.9.9 0 0 1 .9-.9H15a.9.9 0 0 1 .9.9v4a.9.9 0 0 1-.9.9h-3.5a.9.9 0 0 1-.9-.9v-4Zm1.8.9v2.2h1.7v-2.2h-1.7Z" clip-rule="evenodd"/></svg>',
|
|
89
89
|
keywords: ["home"],
|
|
90
90
|
category: "buildings"
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
function
|
|
91
|
+
}, M = (e) => /* @__PURE__ */ i(L, { ...e, svg: Q });
|
|
92
|
+
M.displayName = "IconHome";
|
|
93
|
+
function U(e) {
|
|
94
94
|
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
95
95
|
}
|
|
96
|
-
var
|
|
96
|
+
var g = { exports: {} };
|
|
97
97
|
/*!
|
|
98
98
|
Copyright (c) 2018 Jed Watson.
|
|
99
99
|
Licensed under the MIT License (MIT), see
|
|
100
100
|
http://jedwatson.github.io/classnames
|
|
101
101
|
*/
|
|
102
|
-
var
|
|
103
|
-
function
|
|
104
|
-
return
|
|
102
|
+
var O;
|
|
103
|
+
function W() {
|
|
104
|
+
return O || (O = 1, function(e) {
|
|
105
105
|
(function() {
|
|
106
106
|
var s = {}.hasOwnProperty;
|
|
107
107
|
function n() {
|
|
@@ -130,10 +130,10 @@ function X() {
|
|
|
130
130
|
}
|
|
131
131
|
e.exports ? (n.default = n, e.exports = n) : window.classNames = n;
|
|
132
132
|
})();
|
|
133
|
-
}(
|
|
133
|
+
}(g)), g.exports;
|
|
134
134
|
}
|
|
135
|
-
var
|
|
136
|
-
const
|
|
135
|
+
var X = W();
|
|
136
|
+
const B = /* @__PURE__ */ U(X), p = {
|
|
137
137
|
"purpur-breadcrumbs": "_purpur-breadcrumbs_1xh80_1",
|
|
138
138
|
"purpur-breadcrumbs--default": "_purpur-breadcrumbs--default_1xh80_20",
|
|
139
139
|
"purpur-breadcrumbs--negative": "_purpur-breadcrumbs--negative_1xh80_34",
|
|
@@ -142,65 +142,55 @@ const H = /* @__PURE__ */ W(Y), p = {
|
|
|
142
142
|
"purpur-breadcrumb-item": "_purpur-breadcrumb-item_1xh80_67",
|
|
143
143
|
"purpur-breadcrumb-item--current": "_purpur-breadcrumb-item--current_1xh80_72",
|
|
144
144
|
"purpur-breadcrumb-item--negative": "_purpur-breadcrumb-item--negative_1xh80_94"
|
|
145
|
-
},
|
|
145
|
+
}, Y = (e, s, n) => ({
|
|
146
146
|
"@type": "ListItem",
|
|
147
147
|
position: n,
|
|
148
148
|
name: e,
|
|
149
149
|
item: s
|
|
150
|
-
}),
|
|
150
|
+
}), G = (e) => JSON.stringify({
|
|
151
151
|
"@context": "https://schema.org",
|
|
152
152
|
"@type": "BreadcrumbList",
|
|
153
153
|
itemListElement: e
|
|
154
|
-
}),
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
...w
|
|
154
|
+
}), b = "purpur-breadcrumbs", y = "purpur-breadcrumb-item", rr = ({
|
|
155
|
+
ariaLabel: e,
|
|
156
|
+
children: s,
|
|
157
|
+
className: n,
|
|
158
|
+
meta: a = !0,
|
|
159
|
+
negative: o = !1,
|
|
160
|
+
highlightLast: r = !0,
|
|
161
|
+
hideHomeIcon: t,
|
|
162
|
+
...u
|
|
164
163
|
}) => {
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
p[
|
|
168
|
-
p[`${
|
|
169
|
-
]),
|
|
170
|
-
const
|
|
171
|
-
let
|
|
172
|
-
return typeof
|
|
173
|
-
current:
|
|
174
|
-
negative:
|
|
175
|
-
...
|
|
176
|
-
children: /* @__PURE__ */
|
|
177
|
-
|
|
178
|
-
|
|
164
|
+
const x = B([
|
|
165
|
+
n,
|
|
166
|
+
p[b],
|
|
167
|
+
p[`${b}--${o ? "negative" : "default"}`]
|
|
168
|
+
]), l = S.count(s), m = [], H = S.map(s, (d, C) => {
|
|
169
|
+
const v = C + 1, P = r && l === v, f = d.props.children, c = typeof f == "string" ? null : f.props;
|
|
170
|
+
let _ = null, h = null;
|
|
171
|
+
return typeof f == "string" ? (_ = f, h = d.props.href) : c != null && c.children && typeof (c == null ? void 0 : c.children) == "string" && (_ = c.children, h = c.href), _ && h && m.push(Y(_, h, v)), q(d, {
|
|
172
|
+
current: P,
|
|
173
|
+
negative: o,
|
|
174
|
+
...v === 1 && {
|
|
175
|
+
children: /* @__PURE__ */ $(A, { children: [
|
|
176
|
+
t ? null : /* @__PURE__ */ i("span", { className: p[`${b}__home`], "aria-hidden": "true", children: /* @__PURE__ */ i(M, { size: "xs" }) }),
|
|
177
|
+
d.props.children
|
|
179
178
|
] })
|
|
180
179
|
}
|
|
181
180
|
});
|
|
182
|
-
}),
|
|
183
|
-
return /* @__PURE__ */
|
|
184
|
-
"
|
|
185
|
-
|
|
186
|
-
"
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
type: "application/ld+json",
|
|
196
|
-
"data-testid": "breadcrumbs-meta",
|
|
197
|
-
dangerouslySetInnerHTML: { __html: $ }
|
|
198
|
-
}
|
|
199
|
-
) : null
|
|
200
|
-
]
|
|
201
|
-
}
|
|
202
|
-
);
|
|
203
|
-
}, tr = ({
|
|
181
|
+
}), w = m.length === l ? G(m) : null;
|
|
182
|
+
return /* @__PURE__ */ $("nav", { "aria-label": e || "Breadcrumb", className: x, ...u, children: [
|
|
183
|
+
/* @__PURE__ */ i("ol", { className: p[`${b}__list`], children: H }),
|
|
184
|
+
a && w ? /* @__PURE__ */ i(
|
|
185
|
+
"script",
|
|
186
|
+
{
|
|
187
|
+
type: "application/ld+json",
|
|
188
|
+
"data-testid": "breadcrumbs-meta",
|
|
189
|
+
dangerouslySetInnerHTML: { __html: w }
|
|
190
|
+
}
|
|
191
|
+
) : null
|
|
192
|
+
] });
|
|
193
|
+
}, er = ({
|
|
204
194
|
href: e,
|
|
205
195
|
["data-testid"]: s,
|
|
206
196
|
children: n,
|
|
@@ -209,28 +199,28 @@ const H = /* @__PURE__ */ W(Y), p = {
|
|
|
209
199
|
onClick: r,
|
|
210
200
|
...t
|
|
211
201
|
}) => {
|
|
212
|
-
const u =
|
|
213
|
-
[p[
|
|
202
|
+
const u = B(
|
|
203
|
+
[p[y], p[`${y}--${o ? "negative" : "default"}`]],
|
|
214
204
|
{
|
|
215
|
-
[p[`${
|
|
205
|
+
[p[`${y}--current`]]: a
|
|
216
206
|
}
|
|
217
207
|
);
|
|
218
|
-
return /* @__PURE__ */
|
|
208
|
+
return /* @__PURE__ */ i("li", { ...t, className: u, children: (() => {
|
|
219
209
|
const l = {
|
|
220
210
|
href: e,
|
|
221
211
|
"data-testid": s,
|
|
222
212
|
"aria-current": a ? "page" : void 0,
|
|
223
213
|
onClick: r
|
|
224
214
|
};
|
|
225
|
-
return e || typeof n == "string" ?
|
|
215
|
+
return e || typeof n == "string" ? E("a", l, n) : q(n, {
|
|
226
216
|
...l,
|
|
227
217
|
...n.props
|
|
228
218
|
});
|
|
229
219
|
})() });
|
|
230
220
|
};
|
|
231
|
-
|
|
221
|
+
rr.Item = er;
|
|
232
222
|
export {
|
|
233
|
-
|
|
234
|
-
|
|
223
|
+
rr as Breadcrumbs,
|
|
224
|
+
er as BreadcrumbsItem
|
|
235
225
|
};
|
|
236
226
|
//# sourceMappingURL=breadcrumbs.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumbs.es.js","sources":["../../icon/dist/icon-CbdbqC3C.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as l } from \"react/jsx-runtime\";\nfunction f(r) {\n return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, \"default\") ? r.default : r;\n}\nvar c = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar p;\nfunction m() {\n return p || (p = 1, function(r) {\n (function() {\n var e = {}.hasOwnProperty;\n function o() {\n for (var t = \"\", n = 0; n < arguments.length; n++) {\n var s = arguments[n];\n s && (t = i(t, u.call(this, s)));\n }\n return t;\n }\n function u(t) {\n if (typeof t == \"string\" || typeof t == \"number\")\n return this && this[t] || t;\n if (typeof t != \"object\")\n return \"\";\n if (Array.isArray(t))\n return o.apply(this, t);\n if (t.toString !== Object.prototype.toString && !t.toString.toString().includes(\"[native code]\"))\n return t.toString();\n var n = \"\";\n for (var s in t)\n e.call(t, s) && t[s] && (n = i(n, this && this[s] || s));\n return n;\n }\n function i(t, n) {\n return n ? t ? t + \" \" + n : t + n : t;\n }\n r.exports ? (o.default = o, r.exports = o) : window.classNames = o;\n })();\n }(c)), c.exports;\n}\nvar _ = m();\nconst d = /* @__PURE__ */ f(_), v = {\n \"purpur-icon\": \"_purpur-icon_8u1lq_1\",\n \"purpur-icon--xxs\": \"_purpur-icon--xxs_8u1lq_4\",\n \"purpur-icon--xs\": \"_purpur-icon--xs_8u1lq_8\",\n \"purpur-icon--sm\": \"_purpur-icon--sm_8u1lq_12\",\n \"purpur-icon--md\": \"_purpur-icon--md_8u1lq_16\",\n \"purpur-icon--lg\": \"_purpur-icon--lg_8u1lq_20\",\n \"purpur-icon--xl\": \"_purpur-icon--xl_8u1lq_24\"\n}, g = d.bind(v), a = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), b = ({ content: r = \"\", title: e } = {}) => {\n const o = [\n { name: \"xmlns\", value: \"http://www.w3.org/2000/svg\" },\n { name: \"fill\", value: \"currentColor\" },\n { name: \"viewBox\", value: \"0 0 24 24\" },\n e ? { name: \"role\", value: \"img\" } : { name: \"aria-hidden\", value: \"true\" }\n ], u = e ? `<title>${e}</title>` : \"\";\n return `<svg ${h(o)}>${u}${r}</svg>`;\n}, S = (r) => r.replace(/<(\\/?)svg([^>]*)>/g, \"\").trim(), y = ({\n [\"data-testid\"]: r,\n svg: e,\n allyTitle: o,\n className: u,\n size: i = x,\n ...t\n}) => {\n const n = b({\n content: S(e.svg),\n title: o\n }), s = g(u, a, `${a}--${i}`);\n return /* @__PURE__ */ l(\n \"span\",\n {\n \"aria-label\": o,\n className: s,\n \"data-testid\": r,\n dangerouslySetInnerHTML: { __html: n },\n ...t\n }\n );\n};\ny.displayName = \"Icon\";\nexport {\n y as I\n};\n//# sourceMappingURL=icon-CbdbqC3C.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-CbdbqC3C.mjs\";\nconst v = {\n name: \"home\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.38 1.848a.9.9 0 0 1 1.24 0l8.69 8.276c1.242 1.183.405 3.276-1.31 3.276h-.6v8.1a.9.9 0 0 1-.9.9h-13a.9.9 0 0 1-.9-.9v-8.1H4c-1.715 0-2.552-2.093-1.31-3.276l8.69-8.276ZM12 3.743l-8.069 7.685c-.026.024-.03.04-.032.049a.11.11 0 0 0 .008.06.11.11 0 0 0 .036.049c.007.005.021.014.057.014h1.5a.9.9 0 0 1 .9.9v8.1h11.2v-8.1a.9.9 0 0 1 .9-.9H20c.036 0 .05-.009.057-.014a.111.111 0 0 0 .036-.049.111.111 0 0 0 .008-.06c-.002-.008-.006-.025-.032-.05L12 3.744ZM10.6 14a.9.9 0 0 1 .9-.9H15a.9.9 0 0 1 .9.9v4a.9.9 0 0 1-.9.9h-3.5a.9.9 0 0 1-.9-.9v-4Zm1.8.9v2.2h1.7v-2.2h-1.7Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"home\"],\n category: \"buildings\"\n}, c = (o) => /* @__PURE__ */ e(a, { ...o, svg: v });\nc.displayName = \"IconHome\";\nexport {\n c as IconHome\n};\n//# sourceMappingURL=home.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export type MetaListItem = {\n \"@type\": string;\n position: number;\n name: string;\n item: string;\n};\n\ntype MakeMetaListItem = (name: string, item: string, position: number) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, item, position) => ({\n \"@type\": \"ListItem\",\n position,\n name,\n item,\n});\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, { Children, cloneElement, createElement, ReactElement } from \"react\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { MetaListItem, metaListItem, metaSchema } from \"./meta\";\nimport { DataAttributes } from \"./types.ts\";\n\nexport type BreadcrumbsProps = DataAttributes & {\n [\"data-testid\"]?: string;\n ariaLabel?: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\n className?: string;\n /** Set to generate breadcrumbs metadata for crawlers. Defaults to true. */\n meta?: boolean;\n /** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */\n negative?: boolean;\n /** Set to render the last breadcrumb item in bold font to indicate that this is the current page. Setting this to false will render the last item as a normal breadcrumb link. Defaults to true. */\n highlightLast?: boolean;\n /** Set to not render the home icon in front of the first breadcrumb item. */\n hideHomeIcon?: boolean;\n};\n\ntype CommonItemProps = {\n current?: boolean;\n negative?: boolean;\n [\"data-testid\"]?: string;\n ariaLabel?: string;\n meta?: boolean;\n onClick?: () => void;\n};\n\nexport type BreadcrumbsItemProps = CommonItemProps & Conditional;\n\ntype Conditional =\n | {\n href?: string;\n children: string;\n }\n | {\n href?: never;\n children: ReactElement<HTMLAnchorElement>;\n };\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n [\"data-testid\"]: dataTestId,\n ariaLabel,\n children,\n className,\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = c([\n className,\n styles[rootClassName],\n styles[`${rootClassName}--${negative ? \"negative\" : \"default\"}`],\n ]);\n\n const maxIndex = Children.count(children);\n\n const metaListItems: MetaListItem[] = [];\n\n const items = Children.map(children, (item, index) => {\n const position = index + 1;\n const last = maxIndex === position;\n const current = highlightLast && last;\n\n const grandChildren = item.props.children;\n const grandGrandChildren = typeof grandChildren === \"string\" ? null : grandChildren.props;\n\n let name = null,\n href = null;\n\n if (typeof grandChildren === \"string\") {\n name = grandChildren;\n href = item.props.href;\n } else if (grandGrandChildren?.children && typeof grandGrandChildren?.children === \"string\") {\n name = grandGrandChildren.children;\n href = grandGrandChildren.href;\n }\n\n if (name && href) {\n metaListItems.push(metaListItem(name, href, position));\n }\n\n const child = cloneElement(item, {\n current,\n negative,\n ...(position === 1 && {\n children: (\n <>\n {!hideHomeIcon ? (\n <span className={styles[`${rootClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n ) : null}\n {item.props.children}\n </>\n ),\n }),\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav\n data-testid={dataTestId}\n aria-label={ariaLabel || \"Breadcrumb\"}\n className={classes}\n {...props}\n >\n <ol className={styles[`${rootClassName}__list`]}>{items}</ol>\n {meta && schema ? (\n <script\n type=\"application/ld+json\"\n data-testid=\"breadcrumbs-meta\"\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{ __html: schema }}\n />\n ) : null}\n </nav>\n );\n};\n\nconst Item = ({\n href,\n [\"data-testid\"]: dataTestId,\n children,\n current = false,\n negative = false,\n onClick,\n ...rest\n}: BreadcrumbsItemProps) => {\n const classes = c(\n [styles[itemClassName], styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`]],\n {\n [styles[`${itemClassName}--current`]]: current,\n }\n );\n\n const link = () => {\n const commonProps = {\n href,\n [\"data-testid\"]: dataTestId,\n \"aria-current\": current ? \"page\" : undefined,\n onClick,\n };\n\n const component =\n href || typeof children === \"string\"\n ? createElement(\"a\", commonProps, children)\n : cloneElement(children, {\n ...commonProps,\n ...children.props,\n });\n\n return component;\n };\n\n return (\n <li {...rest} className={classes}>\n {link()}\n </li>\n );\n};\n\nBreadcrumbs.Item = Item;\n\nexport { Breadcrumbs, Item as BreadcrumbsItem };\n"],"names":["f","r","c","p","m","e","o","t","n","s","i","u","_","d","v","g","a","x","h","b","S","y","l","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","item","position","metaSchema","itemListElement","rootClassName","itemClassName","Breadcrumbs","dataTestId","ariaLabel","children","className","meta","negative","highlightLast","hideHomeIcon","props","styles","maxIndex","Children","metaListItems","items","index","current","grandChildren","grandGrandChildren","href","cloneElement","jsxs","Fragment","jsx","IconHome","schema","Item","onClick","rest","commonProps","createElement"],"mappings":"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","x_google_ignoreList":[2]}
|
|
1
|
+
{"version":3,"file":"breadcrumbs.es.js","sources":["../../icon/dist/icon-CbdbqC3C.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as l } from \"react/jsx-runtime\";\nfunction f(r) {\n return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, \"default\") ? r.default : r;\n}\nvar c = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar p;\nfunction m() {\n return p || (p = 1, function(r) {\n (function() {\n var e = {}.hasOwnProperty;\n function o() {\n for (var t = \"\", n = 0; n < arguments.length; n++) {\n var s = arguments[n];\n s && (t = i(t, u.call(this, s)));\n }\n return t;\n }\n function u(t) {\n if (typeof t == \"string\" || typeof t == \"number\")\n return this && this[t] || t;\n if (typeof t != \"object\")\n return \"\";\n if (Array.isArray(t))\n return o.apply(this, t);\n if (t.toString !== Object.prototype.toString && !t.toString.toString().includes(\"[native code]\"))\n return t.toString();\n var n = \"\";\n for (var s in t)\n e.call(t, s) && t[s] && (n = i(n, this && this[s] || s));\n return n;\n }\n function i(t, n) {\n return n ? t ? t + \" \" + n : t + n : t;\n }\n r.exports ? (o.default = o, r.exports = o) : window.classNames = o;\n })();\n }(c)), c.exports;\n}\nvar _ = m();\nconst d = /* @__PURE__ */ f(_), v = {\n \"purpur-icon\": \"_purpur-icon_8u1lq_1\",\n \"purpur-icon--xxs\": \"_purpur-icon--xxs_8u1lq_4\",\n \"purpur-icon--xs\": \"_purpur-icon--xs_8u1lq_8\",\n \"purpur-icon--sm\": \"_purpur-icon--sm_8u1lq_12\",\n \"purpur-icon--md\": \"_purpur-icon--md_8u1lq_16\",\n \"purpur-icon--lg\": \"_purpur-icon--lg_8u1lq_20\",\n \"purpur-icon--xl\": \"_purpur-icon--xl_8u1lq_24\"\n}, g = d.bind(v), a = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), b = ({ content: r = \"\", title: e } = {}) => {\n const o = [\n { name: \"xmlns\", value: \"http://www.w3.org/2000/svg\" },\n { name: \"fill\", value: \"currentColor\" },\n { name: \"viewBox\", value: \"0 0 24 24\" },\n e ? { name: \"role\", value: \"img\" } : { name: \"aria-hidden\", value: \"true\" }\n ], u = e ? `<title>${e}</title>` : \"\";\n return `<svg ${h(o)}>${u}${r}</svg>`;\n}, S = (r) => r.replace(/<(\\/?)svg([^>]*)>/g, \"\").trim(), y = ({\n [\"data-testid\"]: r,\n svg: e,\n allyTitle: o,\n className: u,\n size: i = x,\n ...t\n}) => {\n const n = b({\n content: S(e.svg),\n title: o\n }), s = g(u, a, `${a}--${i}`);\n return /* @__PURE__ */ l(\n \"span\",\n {\n \"aria-label\": o,\n className: s,\n \"data-testid\": r,\n dangerouslySetInnerHTML: { __html: n },\n ...t\n }\n );\n};\ny.displayName = \"Icon\";\nexport {\n y as I\n};\n//# sourceMappingURL=icon-CbdbqC3C.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-CbdbqC3C.mjs\";\nconst v = {\n name: \"home\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.38 1.848a.9.9 0 0 1 1.24 0l8.69 8.276c1.242 1.183.405 3.276-1.31 3.276h-.6v8.1a.9.9 0 0 1-.9.9h-13a.9.9 0 0 1-.9-.9v-8.1H4c-1.715 0-2.552-2.093-1.31-3.276l8.69-8.276ZM12 3.743l-8.069 7.685c-.026.024-.03.04-.032.049a.11.11 0 0 0 .008.06.11.11 0 0 0 .036.049c.007.005.021.014.057.014h1.5a.9.9 0 0 1 .9.9v8.1h11.2v-8.1a.9.9 0 0 1 .9-.9H20c.036 0 .05-.009.057-.014a.111.111 0 0 0 .036-.049.111.111 0 0 0 .008-.06c-.002-.008-.006-.025-.032-.05L12 3.744ZM10.6 14a.9.9 0 0 1 .9-.9H15a.9.9 0 0 1 .9.9v4a.9.9 0 0 1-.9.9h-3.5a.9.9 0 0 1-.9-.9v-4Zm1.8.9v2.2h1.7v-2.2h-1.7Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"home\"],\n category: \"buildings\"\n}, c = (o) => /* @__PURE__ */ e(a, { ...o, svg: v });\nc.displayName = \"IconHome\";\nexport {\n c as IconHome\n};\n//# sourceMappingURL=home.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export type MetaListItem = {\n \"@type\": string;\n position: number;\n name: string;\n item: string;\n};\n\ntype MakeMetaListItem = (name: string, item: string, position: number) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, item, position) => ({\n \"@type\": \"ListItem\",\n position,\n name,\n item,\n});\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, { Children, cloneElement, createElement, ReactElement } from \"react\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { MetaListItem, metaListItem, metaSchema } from \"./meta\";\nimport { DataAttributes } from \"./types.ts\";\n\nexport type BreadcrumbsProps = React.HTMLAttributes<HTMLElement> &\n DataAttributes & {\n ariaLabel?: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\n /** Set to generate breadcrumbs metadata for crawlers. Defaults to true. */\n meta?: boolean;\n /** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */\n negative?: boolean;\n /** Set to render the last breadcrumb item in bold font to indicate that this is the current page. Setting this to false will render the last item as a normal breadcrumb link. Defaults to true. */\n highlightLast?: boolean;\n /** Set to not render the home icon in front of the first breadcrumb item. */\n hideHomeIcon?: boolean;\n };\n\ntype CommonItemProps = React.HTMLAttributes<HTMLLIElement> & DataAttributes & {\n current?: boolean;\n negative?: boolean;\n ariaLabel?: string;\n meta?: boolean;\n onClick?: () => void;\n};\n\nexport type BreadcrumbsItemProps = CommonItemProps & Conditional;\n\ntype Conditional =\n | {\n href?: string;\n children: string;\n }\n | {\n href?: never;\n children: ReactElement<HTMLAnchorElement>;\n };\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n ariaLabel,\n children,\n className,\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = c([\n className,\n styles[rootClassName],\n styles[`${rootClassName}--${negative ? \"negative\" : \"default\"}`],\n ]);\n\n const maxIndex = Children.count(children);\n\n const metaListItems: MetaListItem[] = [];\n\n const items = Children.map(children, (item, index) => {\n const position = index + 1;\n const last = maxIndex === position;\n const current = highlightLast && last;\n\n const grandChildren = item.props.children;\n const grandGrandChildren = typeof grandChildren === \"string\" ? null : grandChildren.props;\n\n let name = null,\n href = null;\n\n if (typeof grandChildren === \"string\") {\n name = grandChildren;\n href = item.props.href;\n } else if (grandGrandChildren?.children && typeof grandGrandChildren?.children === \"string\") {\n name = grandGrandChildren.children;\n href = grandGrandChildren.href;\n }\n\n if (name && href) {\n metaListItems.push(metaListItem(name, href, position));\n }\n\n const child = cloneElement(item, {\n current,\n negative,\n ...(position === 1 && {\n children: (\n <>\n {!hideHomeIcon ? (\n <span className={styles[`${rootClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n ) : null}\n {item.props.children}\n </>\n ),\n }),\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav aria-label={ariaLabel || \"Breadcrumb\"} className={classes} {...props}>\n <ol className={styles[`${rootClassName}__list`]}>{items}</ol>\n {meta && schema ? (\n <script\n type=\"application/ld+json\"\n data-testid=\"breadcrumbs-meta\"\n \n dangerouslySetInnerHTML={{ __html: schema }}\n />\n ) : null}\n </nav>\n );\n};\n\nconst Item = ({\n href,\n [\"data-testid\"]: dataTestId,\n children,\n current = false,\n negative = false,\n onClick,\n ...rest\n}: BreadcrumbsItemProps) => {\n const classes = c(\n [styles[itemClassName], styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`]],\n {\n [styles[`${itemClassName}--current`]]: current,\n }\n );\n\n const link = () => {\n const commonProps = {\n href,\n [\"data-testid\"]: dataTestId,\n \"aria-current\": current ? \"page\" : undefined,\n onClick,\n };\n\n const component =\n href || typeof children === \"string\"\n ? createElement(\"a\", commonProps, children)\n : cloneElement(children, {\n ...commonProps,\n ...children.props,\n });\n\n return component;\n };\n\n return (\n <li {...rest} className={classes}>\n {link()}\n </li>\n );\n};\n\nBreadcrumbs.Item = Item;\n\nexport { Breadcrumbs, Item as BreadcrumbsItem };\n"],"names":["f","r","c","p","m","e","o","t","n","s","i","u","_","d","v","g","a","x","h","b","S","y","l","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","item","position","metaSchema","itemListElement","rootClassName","itemClassName","Breadcrumbs","ariaLabel","children","className","meta","negative","highlightLast","hideHomeIcon","props","styles","maxIndex","Children","metaListItems","items","index","current","grandChildren","grandGrandChildren","href","cloneElement","jsxs","Fragment","jsx","IconHome","schema","Item","dataTestId","onClick","rest","commonProps","createElement"],"mappings":";;AACA,SAASA,EAAEC,GAAG;AACZ,SAAOA,KAAKA,EAAE,cAAc,OAAO,UAAU,eAAe,KAAKA,GAAG,SAAS,IAAIA,EAAE,UAAUA;AAC/F;AACA,IAAIC,IAAI,EAAE,SAAS,GAAI;AACvB;AAAA;AAAA;AAAA;AAAA;AAKA,IAAIC;AACJ,SAASC,IAAI;AACX,SAAOD,MAAMA,IAAI,GAAG,SAASF,GAAG;AAC9B,KAAC,WAAW;AACV,UAAII,IAAI,CAAA,EAAG;AACX,eAASC,IAAI;AACX,iBAASC,IAAI,IAAIC,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AACjD,cAAIC,IAAI,UAAUD,CAAC;AACnB,UAAAC,MAAMF,IAAIG,EAAEH,GAAGI,EAAE,KAAK,MAAMF,CAAC,CAAC;AAAA,QACxC;AACQ,eAAOF;AAAA,MACf;AACM,eAASI,EAAEJ,GAAG;AACZ,YAAI,OAAOA,KAAK,YAAY,OAAOA,KAAK;AACtC,iBAAO,QAAQ,KAAKA,CAAC,KAAKA;AAC5B,YAAI,OAAOA,KAAK;AACd,iBAAO;AACT,YAAI,MAAM,QAAQA,CAAC;AACjB,iBAAOD,EAAE,MAAM,MAAMC,CAAC;AACxB,YAAIA,EAAE,aAAa,OAAO,UAAU,YAAY,CAACA,EAAE,SAAS,WAAW,SAAS,eAAe;AAC7F,iBAAOA,EAAE,SAAU;AACrB,YAAIC,IAAI;AACR,iBAASC,KAAKF;AACZ,UAAAF,EAAE,KAAKE,GAAGE,CAAC,KAAKF,EAAEE,CAAC,MAAMD,IAAIE,EAAEF,GAAG,QAAQ,KAAKC,CAAC,KAAKA,CAAC;AACxD,eAAOD;AAAA,MACf;AACM,eAASE,EAAEH,GAAGC,GAAG;AACf,eAAOA,IAAID,IAAIA,IAAI,MAAMC,IAAID,IAAIC,IAAID;AAAA,MAC7C;AACM,MAAAN,EAAE,WAAWK,EAAE,UAAUA,GAAGL,EAAE,UAAUK,KAAK,OAAO,aAAaA;AAAA,IACvE,GAAQ;AAAA,EACR,EAAIJ,CAAC,IAAIA,EAAE;AACX;AACA,IAAIU,IAAIR,EAAG;AACX,MAAMS,IAAoB,gBAAAb,EAAEY,CAAC,GAAGE,IAAI;AAAA,EAClC,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AACrB,GAAGC,IAAIF,EAAE,KAAKC,CAAC,GAAGE,IAAI,eAAeC,IAAI,MAAMC,IAAI,CAACjB,MAAMA,EAAE,OAAO,CAACI,MAAM,OAAO,KAAKA,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,CAACA,MAAM,GAAGA,EAAE,IAAI,KAAKA,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAGc,IAAI,CAAC,EAAE,SAASlB,IAAI,IAAI,OAAOI,EAAG,IAAG,OAAO;AAChM,QAAMC,IAAI;AAAA,IACR,EAAE,MAAM,SAAS,OAAO,6BAA8B;AAAA,IACtD,EAAE,MAAM,QAAQ,OAAO,eAAgB;AAAA,IACvC,EAAE,MAAM,WAAW,OAAO,YAAa;AAAA,IACvCD,IAAI,EAAE,MAAM,QAAQ,OAAO,MAAO,IAAG,EAAE,MAAM,eAAe,OAAO,OAAM;AAAA,EAC7E,GAAKM,IAAIN,IAAI,UAAUA,CAAC,aAAa;AACnC,SAAO,QAAQa,EAAEZ,CAAC,CAAC,IAAIK,CAAC,GAAGV,CAAC;AAC9B,GAAGmB,IAAI,CAACnB,MAAMA,EAAE,QAAQ,sBAAsB,EAAE,EAAE,QAAQoB,IAAI,CAAC;AAAA,EAC7D,CAAC,gBAAgBpB;AAAA,EACjB,KAAKI;AAAA,EACL,WAAWC;AAAA,EACX,WAAWK;AAAA,EACX,MAAMD,IAAIO;AAAA,EACV,GAAGV;AACL,MAAM;AACJ,QAAMC,IAAIW,EAAE;AAAA,IACV,SAASC,EAAEf,EAAE,GAAG;AAAA,IAChB,OAAOC;AAAA,EACX,CAAG,GAAGG,IAAIM,EAAEJ,GAAGK,GAAG,GAAGA,CAAC,KAAKN,CAAC,EAAE;AAC5B,SAAuBY,gBAAAA;AAAAA,IACrB;AAAA,IACA;AAAA,MACE,cAAchB;AAAA,MACd,WAAWG;AAAA,MACX,eAAeR;AAAA,MACf,yBAAyB,EAAE,QAAQO,EAAG;AAAA,MACtC,GAAGD;AAAA,IACT;AAAA,EACG;AACH;AACAc,EAAE,cAAc;ACjFhB,MAAMP,IAAI;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU,CAAC,MAAM;AAAA,EACjB,UAAU;AACZ,GAAGZ,IAAI,CAACI,MAAsBD,gBAAAA,EAAEW,GAAG,EAAE,GAAGV,GAAG,KAAKQ,GAAG;AACnDZ,EAAE,cAAc;;;;;;;;;;;;;ACDhB,KAAC,WAAY;AAGZ,UAAIqB,IAAS,CAAA,EAAG;AAEhB,eAASC,IAAc;AAGtB,iBAFIC,IAAU,IAELf,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAC1C,cAAIgB,IAAM,UAAUhB,CAAC;AACrB,UAAIgB,MACHD,IAAUE,EAAYF,GAASG,EAAWF,CAAG,CAAC;AAAA,QAElD;AAEE,eAAOD;AAAA,MACT;AAEC,eAASG,EAAYF,GAAK;AACzB,YAAI,OAAOA,KAAQ,YAAY,OAAOA,KAAQ;AAC7C,iBAAOA;AAGR,YAAI,OAAOA,KAAQ;AAClB,iBAAO;AAGR,YAAI,MAAM,QAAQA,CAAG;AACpB,iBAAOF,EAAW,MAAM,MAAME,CAAG;AAGlC,YAAIA,EAAI,aAAa,OAAO,UAAU,YAAY,CAACA,EAAI,SAAS,SAAQ,EAAG,SAAS,eAAe;AAClG,iBAAOA,EAAI,SAAU;AAGtB,YAAID,IAAU;AAEd,iBAASI,KAAOH;AACf,UAAIH,EAAO,KAAKG,GAAKG,CAAG,KAAKH,EAAIG,CAAG,MACnCJ,IAAUE,EAAYF,GAASI,CAAG;AAIpC,eAAOJ;AAAA,MACT;AAEC,eAASE,EAAaG,GAAOC,GAAU;AACtC,eAAKA,IAIDD,IACIA,IAAQ,MAAMC,IAGfD,IAAQC,IAPPD;AAAA,MAQV;AAEC,MAAqCE,EAAO,WAC3CR,EAAW,UAAUA,GACrBQ,YAAiBR,KAOjB,OAAO,aAAaA;AAAA,IAEtB;;;;;;;;;;;;;GCnEaS,IAAiC,CAACC,GAAMC,GAAMC,OAAc;AAAA,EACvE,SAAS;AAAA,EACT,UAAAA;AAAA,EACA,MAAAF;AAAA,EACA,MAAAC;AACF,IAEaE,IAAa,CAACC,MACzB,KAAK,UAAU;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,iBAAAA;AACF,CAAC,GCqBGC,IAAgB,sBAChBC,IAAgB,0BAEhBC,KAAc,CAAC;AAAA,EACnB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,eAAAC,IAAgB;AAAA,EAChB,cAAAC;AAAA,EACA,GAAGC;AACL,MAAwB;AACtB,QAAMxB,IAAUvB,EAAE;AAAA,IAChB0C;AAAA,IACAM,EAAOX,CAAa;AAAA,IACpBW,EAAO,GAAGX,CAAa,KAAKO,IAAW,aAAa,SAAS,EAAE;AAAA,EAAA,CAChE,GAEKK,IAAWC,EAAS,MAAMT,CAAQ,GAElCU,IAAgC,CAAC,GAEjCC,IAAQF,EAAS,IAAIT,GAAU,CAACR,GAAMoB,MAAU;AACpD,UAAMnB,IAAWmB,IAAQ,GAEnBC,IAAUT,KADHI,MAAaf,GAGpBqB,IAAgBtB,EAAK,MAAM,UAC3BuB,IAAqB,OAAOD,KAAkB,WAAW,OAAOA,EAAc;AAEhF,QAAAvB,IAAO,MACTyB,IAAO;AAEL,WAAA,OAAOF,KAAkB,YACpBvB,IAAAuB,GACPE,IAAOxB,EAAK,MAAM,QACTuB,KAAA,QAAAA,EAAoB,YAAY,QAAOA,KAAA,gBAAAA,EAAoB,aAAa,aACjFxB,IAAOwB,EAAmB,UAC1BC,IAAOD,EAAmB,OAGxBxB,KAAQyB,KACVN,EAAc,KAAKpB,EAAaC,GAAMyB,GAAMvB,CAAQ,CAAC,GAGzCwB,EAAazB,GAAM;AAAA,MAC/B,SAAAqB;AAAA,MACA,UAAAV;AAAA,MACA,GAAIV,MAAa,KAAK;AAAA,QACpB,UAEK,gBAAAyB,EAAAC,GAAA,EAAA,UAAA;AAAA,UAACd,IAIE,OAHD,gBAAAe,EAAA,QAAA,EAAK,WAAWb,EAAO,GAAGX,CAAa,QAAQ,GAAG,eAAY,QAC7D,UAAC,gBAAAwB,EAAAC,GAAA,EAAS,MAAK,KAAA,CAAK,EACtB,CAAA;AAAA,UAED7B,EAAK,MAAM;AAAA,QAAA,EACd,CAAA;AAAA,MAAA;AAAA,IAEJ,CACD;AAAA,EAEM,CACR,GAEK8B,IAASZ,EAAc,WAAWF,IAAWd,EAAWgB,CAAa,IAAI;AAG7E,SAAA,gBAAAQ,EAAC,SAAI,cAAYnB,KAAa,cAAc,WAAWjB,GAAU,GAAGwB,GAClE,UAAA;AAAA,IAAA,gBAAAc,EAAC,QAAG,WAAWb,EAAO,GAAGX,CAAa,QAAQ,GAAI,UAAMe,EAAA,CAAA;AAAA,IACvDT,KAAQoB,IACP,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,eAAY;AAAA,QAEZ,yBAAyB,EAAE,QAAQE,EAAO;AAAA,MAAA;AAAA,IAAA,IAE1C;AAAA,EAAA,GACN;AAEJ,GAEMC,KAAO,CAAC;AAAA,EACZ,MAAAP;AAAA,EACA,CAAC,gBAAgBQ;AAAA,EACjB,UAAAxB;AAAA,EACA,SAAAa,IAAU;AAAA,EACV,UAAAV,IAAW;AAAA,EACX,SAAAsB;AAAA,EACA,GAAGC;AACL,MAA4B;AAC1B,QAAM5C,IAAUvB;AAAA,IACd,CAACgD,EAAOV,CAAa,GAAGU,EAAO,GAAGV,CAAa,KAAKM,IAAW,aAAa,SAAS,EAAE,CAAC;AAAA,IACxF;AAAA,MACE,CAACI,EAAO,GAAGV,CAAa,WAAW,CAAC,GAAGgB;AAAA,IAAA;AAAA,EAE3C;AAqBA,2BACG,MAAI,EAAA,GAAGa,GAAM,WAAW5C,GACtB,WArBQ,MAAM;AACjB,UAAM6C,IAAc;AAAA,MAClB,MAAAX;AAAA,MACC,eAAgBQ;AAAA,MACjB,gBAAgBX,IAAU,SAAS;AAAA,MACnC,SAAAY;AAAA,IACF;AAUO,WAPLT,KAAQ,OAAOhB,KAAa,WACxB4B,EAAc,KAAKD,GAAa3B,CAAQ,IACxCiB,EAAajB,GAAU;AAAA,MACrB,GAAG2B;AAAA,MACH,GAAG3B,EAAS;AAAA,IAAA,CACb;AAAA,EAGT,MAKE;AAEJ;AAEAF,GAAY,OAAOyB;","x_google_ignoreList":[2]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@purpurds/breadcrumbs",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.11.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"main": "./dist/breadcrumbs.cjs.js",
|
|
6
6
|
"types": "./dist/breadcrumbs.d.ts",
|
|
@@ -16,33 +16,29 @@
|
|
|
16
16
|
"source": "src/breadcrumbs.tsx",
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"classnames": "~2.5.0",
|
|
19
|
-
"@purpurds/icon": "6.
|
|
20
|
-
"@purpurds/tokens": "6.
|
|
19
|
+
"@purpurds/icon": "6.11.0",
|
|
20
|
+
"@purpurds/tokens": "6.11.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"
|
|
23
|
+
"eslint": "9.24.0",
|
|
24
24
|
"@storybook/react": "^8.6.4",
|
|
25
25
|
"storybook": "^8.6.4",
|
|
26
|
-
"@telia/base-rig": "~8.2.0",
|
|
27
|
-
"@telia/react-rig": "~3.2.0",
|
|
28
26
|
"@testing-library/dom": "~10.4.0",
|
|
29
27
|
"@testing-library/jest-dom": "~6.4.0",
|
|
30
28
|
"@testing-library/react": "~16.2.0",
|
|
31
29
|
"@types/node": "20.12.12",
|
|
32
30
|
"@types/react-dom": "^19.0.4",
|
|
33
31
|
"@types/react": "^19.0.10",
|
|
34
|
-
"eslint-plugin-testing-library": "~6.2.0",
|
|
35
|
-
"eslint": "^8.57.0",
|
|
36
32
|
"jsdom": "~22.1.0",
|
|
37
|
-
"lint-staged": "
|
|
33
|
+
"lint-staged": "15.5.0",
|
|
38
34
|
"prettier": "~2.8.8",
|
|
39
35
|
"react-dom": "^19.0.0",
|
|
40
36
|
"react": "^19.0.0",
|
|
41
37
|
"typescript": "^5.6.3",
|
|
42
38
|
"vite": "^6.2.1",
|
|
43
|
-
"vitest": "^
|
|
44
|
-
"@purpurds/
|
|
45
|
-
"@purpurds/
|
|
39
|
+
"vitest": "^3.1.2",
|
|
40
|
+
"@purpurds/component-rig": "1.0.0",
|
|
41
|
+
"@purpurds/paragraph": "6.11.0"
|
|
46
42
|
},
|
|
47
43
|
"peerDependencies": {
|
|
48
44
|
"@types/react": "^18 || ^19",
|
package/src/breadcrumbs.tsx
CHANGED
|
@@ -6,25 +6,23 @@ import styles from "./breadcrumbs.module.scss";
|
|
|
6
6
|
import { MetaListItem, metaListItem, metaSchema } from "./meta";
|
|
7
7
|
import { DataAttributes } from "./types.ts";
|
|
8
8
|
|
|
9
|
-
export type BreadcrumbsProps =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
};
|
|
9
|
+
export type BreadcrumbsProps = React.HTMLAttributes<HTMLElement> &
|
|
10
|
+
DataAttributes & {
|
|
11
|
+
ariaLabel?: string;
|
|
12
|
+
children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;
|
|
13
|
+
/** Set to generate breadcrumbs metadata for crawlers. Defaults to true. */
|
|
14
|
+
meta?: boolean;
|
|
15
|
+
/** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */
|
|
16
|
+
negative?: boolean;
|
|
17
|
+
/** Set to render the last breadcrumb item in bold font to indicate that this is the current page. Setting this to false will render the last item as a normal breadcrumb link. Defaults to true. */
|
|
18
|
+
highlightLast?: boolean;
|
|
19
|
+
/** Set to not render the home icon in front of the first breadcrumb item. */
|
|
20
|
+
hideHomeIcon?: boolean;
|
|
21
|
+
};
|
|
23
22
|
|
|
24
|
-
type CommonItemProps = {
|
|
23
|
+
type CommonItemProps = React.HTMLAttributes<HTMLLIElement> & DataAttributes & {
|
|
25
24
|
current?: boolean;
|
|
26
25
|
negative?: boolean;
|
|
27
|
-
["data-testid"]?: string;
|
|
28
26
|
ariaLabel?: string;
|
|
29
27
|
meta?: boolean;
|
|
30
28
|
onClick?: () => void;
|
|
@@ -46,7 +44,6 @@ const rootClassName = "purpur-breadcrumbs";
|
|
|
46
44
|
const itemClassName = "purpur-breadcrumb-item";
|
|
47
45
|
|
|
48
46
|
const Breadcrumbs = ({
|
|
49
|
-
["data-testid"]: dataTestId,
|
|
50
47
|
ariaLabel,
|
|
51
48
|
children,
|
|
52
49
|
className,
|
|
@@ -112,18 +109,13 @@ const Breadcrumbs = ({
|
|
|
112
109
|
const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;
|
|
113
110
|
|
|
114
111
|
return (
|
|
115
|
-
<nav
|
|
116
|
-
data-testid={dataTestId}
|
|
117
|
-
aria-label={ariaLabel || "Breadcrumb"}
|
|
118
|
-
className={classes}
|
|
119
|
-
{...props}
|
|
120
|
-
>
|
|
112
|
+
<nav aria-label={ariaLabel || "Breadcrumb"} className={classes} {...props}>
|
|
121
113
|
<ol className={styles[`${rootClassName}__list`]}>{items}</ol>
|
|
122
114
|
{meta && schema ? (
|
|
123
115
|
<script
|
|
124
116
|
type="application/ld+json"
|
|
125
117
|
data-testid="breadcrumbs-meta"
|
|
126
|
-
|
|
118
|
+
|
|
127
119
|
dangerouslySetInnerHTML={{ __html: schema }}
|
|
128
120
|
/>
|
|
129
121
|
) : null}
|