@purpurds/breadcrumbs 7.6.0 → 7.7.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 CHANGED
@@ -1,5 +1,5 @@
1
1
  Name: @purpurds/icon
2
- Version: 7.5.1
2
+ Version: 7.6.1
3
3
  License: AGPL-3.0-only
4
4
  Private: false
5
5
 
@@ -2,9 +2,9 @@
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 O;function Z(){return O||(O=1,function(e){(function(){var u={}.hasOwnProperty;function n(){for(var r="",t=0;t<arguments.length;t++){var s=arguments[t];s&&(r=i(r,a.call(this,s)))}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 s in r)u.call(r,s)&&r[s]&&(t=i(t,this&&this[s]||s));return t}function i(r,t){return t?r?r+" "+t:r+t:r}e.exports?(n.default=n,e.exports=n):window.classNames=n})()}(S)),S.exports}var k=Z();const T=P(k),R={"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"},D=T.bind(R),q="purpur-icon",F="md",J=e=>e.filter(u=>Object.keys(u).length>=1).map(u=>`${u.name}="${u.value}"`).join(" "),V=({content:e="",title:u}={})=>{const n=[{name:"xmlns",value:"http://www.w3.org/2000/svg"},{name:"fill",value:"currentColor"},{name:"viewBox",value:"0 0 24 24"},u?{name:"role",value:"img"}:{name:"aria-hidden",value:"true"}],a=u?`<title>${u}</title>`:"";return`<svg ${J(n)}>${a}${e}</svg>`},G=e=>e.replace(/<(\/?)svg([^>]*)>/g,"").trim(),I=({["data-testid"]:e,svg:u,allyTitle:n,className:a,size:i=F,...r})=>{const t=V({content:G(u.svg),title:n}),s=D(a,q,`${q}--${i}`);return c.jsx("span",{className:s,"data-testid":e,dangerouslySetInnerHTML:{__html:t},...r})};I.displayName="Icon";const K={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"},B=e=>c.jsx(I,{...e,svg:K});B.displayName="IconHome";function Q(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var y={exports:{}};/*!
5
+ */var O;function Z(){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=i(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=i(t,this&&this[u]||u));return t}function i(r,t){return t?r?r+" "+t:r+t:r}e.exports?(n.default=n,e.exports=n):window.classNames=n})()}(S)),S.exports}var k=Z();const T=P(k),R={"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"},D=T.bind(R),q="purpur-icon",F="md",J=e=>e.filter(s=>Object.keys(s).length>=1).map(s=>`${s.name}="${s.value}"`).join(" "),V=({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 ${J(n)}>${a}${e}</svg>`},G=e=>e.replace(/<(\/?)svg([^>]*)>/g,"").trim(),I=({svg:e,allyTitle:s,className:n,size:a=F,...i})=>{const r=V({content:G(e.svg),title:s}),t=D(n,q,`${q}--${a}`);return c.jsx("span",{className:t,dangerouslySetInnerHTML:{__html:r},...i})};I.displayName="Icon";const K={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"},B=e=>c.jsx(I,{...e,svg:K});B.displayName="IconHome";function Q(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 z;function U(){return z||(z=1,function(e){(function(){var u={}.hasOwnProperty;function n(){for(var r="",t=0;t<arguments.length;t++){var s=arguments[t];s&&(r=i(r,a.call(this,s)))}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 s in r)u.call(r,s)&&r[s]&&(t=i(t,this&&this[s]||s));return t}function i(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 W=U();const X=Q(W),d={"purpur-breadcrumbs":"_purpur-breadcrumbs_13trz_1","purpur-breadcrumbs__list":"_purpur-breadcrumbs__list_13trz_4","purpur-breadcrumb-item":"_purpur-breadcrumb-item_13trz_14","purpur-breadcrumb-item__element":"_purpur-breadcrumb-item__element_13trz_19","purpur-breadcrumb-item__link":"_purpur-breadcrumb-item__link_13trz_28","purpur-breadcrumb-item--default":"_purpur-breadcrumb-item--default_13trz_32","purpur-breadcrumb-item--negative":"_purpur-breadcrumb-item--negative_13trz_46","purpur-breadcrumb-item--current":"_purpur-breadcrumb-item--current_13trz_60","purpur-breadcrumb-item__home":"_purpur-breadcrumb-item__home_13trz_93"},Y=(e,u,n)=>{const a={"@type":"ListItem",position:u,name:e};return n&&(a.item=n),a},rr=e=>JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e}),m=X.bind(d),$="purpur-breadcrumbs",o="purpur-breadcrumb-item",L=({["aria-label"]:e,baseUrl:u,children:n,className:a,excludeCurrentPage:i=!1,linkElement:r="a",meta:t=!0,negative:s=!1,highlightLast:_=!0,hideHomeIcon:l,...f})=>{const b=m([a,$,`${$}--${s?"negative":"default"}`]),p=x.Children.count(n),h=[],H=x.Children.map(n,(v,C)=>{const g=C+1,w=p===g,A=_&&w,{children:E,href:N}=v.props;return h.push(Y(E,g,N&&`${u}${N}`)),x.cloneElement(v,{className:v.props.className,current:A,negative:s,first:!l&&g===1,last:w,linkElement:r,excludeCurrentPage:i})}),j=h.length===p?rr(h):null;return c.jsxs("nav",{"aria-label":e,className:b,...f,children:[c.jsx("ol",{className:d[`${$}__list`],children:H}),t&&j?c.jsx("script",{type:"application/ld+json","data-testid":"breadcrumbs-meta",dangerouslySetInnerHTML:{__html:j}}):null]})},M=({href:e,["data-testid"]:u,children:n,current:a=!1,linkElement:i="a",negative:r=!1,onClick:t,first:s=!1,last:_=!1,excludeCurrentPage:l=!1,...f})=>{const b=i,p=m([o],d[`${o}--${r?"negative":"default"}`],{[`${o}--current`]:!l&&a});return c.jsx("li",{...f,className:p,children:!_||l?c.jsxs(b,{href:e,"data-testid":u,onClick:t,className:m(`${o}__element`,`${o}__link`),children:[s&&c.jsx("span",{className:d[`${o}__home`],"aria-hidden":"true",children:c.jsx(B,{size:"xs"})}),n]}):c.jsx("span",{"aria-current":"page","data-testid":u,className:m(`${o}__element`),children:n})})};L.Item=M;exports.Breadcrumbs=L;exports.BreadcrumbsItem=M;
9
+ */var z;function U(){return z||(z=1,function(e){(function(){var s={}.hasOwnProperty;function n(){for(var r="",t=0;t<arguments.length;t++){var u=arguments[t];u&&(r=i(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=i(t,this&&this[u]||u));return t}function i(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 W=U();const X=Q(W),d={"purpur-breadcrumbs":"_purpur-breadcrumbs_13trz_1","purpur-breadcrumbs__list":"_purpur-breadcrumbs__list_13trz_4","purpur-breadcrumb-item":"_purpur-breadcrumb-item_13trz_14","purpur-breadcrumb-item__element":"_purpur-breadcrumb-item__element_13trz_19","purpur-breadcrumb-item__link":"_purpur-breadcrumb-item__link_13trz_28","purpur-breadcrumb-item--default":"_purpur-breadcrumb-item--default_13trz_32","purpur-breadcrumb-item--negative":"_purpur-breadcrumb-item--negative_13trz_46","purpur-breadcrumb-item--current":"_purpur-breadcrumb-item--current_13trz_60","purpur-breadcrumb-item__home":"_purpur-breadcrumb-item__home_13trz_93"},Y=(e,s,n)=>{const a={"@type":"ListItem",position:s,name:e};return n&&(a.item=n),a},rr=e=>JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e}),m=X.bind(d),$="purpur-breadcrumbs",o="purpur-breadcrumb-item",L=({["aria-label"]:e,baseUrl:s,children:n,className:a,excludeCurrentPage:i=!1,linkElement:r="a",meta:t=!0,negative:u=!1,highlightLast:_=!0,hideHomeIcon:l,...f})=>{const b=m([a,$,`${$}--${u?"negative":"default"}`]),p=x.Children.count(n),h=[],H=x.Children.map(n,(v,C)=>{const g=C+1,w=p===g,A=_&&w,{children:E,href:N}=v.props;return h.push(Y(E,g,N&&`${s}${N}`)),x.cloneElement(v,{className:v.props.className,current:A,negative:u,first:!l&&g===1,last:w,linkElement:r,excludeCurrentPage:i})}),j=h.length===p?rr(h):null;return c.jsxs("nav",{"aria-label":e,className:b,...f,children:[c.jsx("ol",{className:d[`${$}__list`],children:H}),t&&j?c.jsx("script",{type:"application/ld+json","data-testid":"breadcrumbs-meta",dangerouslySetInnerHTML:{__html:j}}):null]})},M=({href:e,["data-testid"]:s,children:n,current:a=!1,linkElement:i="a",negative:r=!1,onClick:t,first:u=!1,last:_=!1,excludeCurrentPage:l=!1,...f})=>{const b=i,p=m([o],d[`${o}--${r?"negative":"default"}`],{[`${o}--current`]:!l&&a});return c.jsx("li",{...f,className:p,children:!_||l?c.jsxs(b,{href:e,"data-testid":s,onClick:t,className:m(`${o}__element`,`${o}__link`),children:[u&&c.jsx("span",{className:d[`${o}__home`],"aria-hidden":"true",children:c.jsx(B,{size:"xs"})}),n]}):c.jsx("span",{"aria-current":"page","data-testid":s,className:m(`${o}__element`),children:n})})};L.Item=M;exports.Breadcrumbs=L;exports.BreadcrumbsItem=M;
10
10
  //# sourceMappingURL=breadcrumbs.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.cjs.js","sources":["../../icon/dist/icon-BqK8slmm.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as a } 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), l = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), y = ({ 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(), b = ({\n [\"data-testid\"]: r,\n svg: e,\n allyTitle: o,\n className: u,\n size: i = x,\n ...t\n}) => {\n const n = y({\n content: S(e.svg),\n title: o\n }), s = g(u, l, `${l}--${i}`);\n return /* @__PURE__ */ a(\n \"span\",\n {\n className: s,\n \"data-testid\": r,\n dangerouslySetInnerHTML: { __html: n },\n ...t\n }\n );\n};\nb.displayName = \"Icon\";\nexport {\n b as I\n};\n//# sourceMappingURL=icon-BqK8slmm.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-BqK8slmm.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.call(this, 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 this && this[arg] || 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(this, 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, this && this[key] || 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, position: number, item?: string) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, position, item) => {\n const schema: MetaListItem = {\n \"@type\": \"ListItem\",\n position,\n name,\n };\n\n if (item) {\n schema.item = item;\n }\n\n return schema;\n};\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, {\n type AnchorHTMLAttributes,\n Children,\n cloneElement,\n type ForwardRefExoticComponent,\n type ReactElement,\n} from \"react\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { type MetaListItem, metaListItem, metaSchema } from \"./meta\";\nimport { type DataAttributes } from \"./types\";\n\nconst cx = c.bind(styles);\n\ntype WithMeta = {\n meta?: true;\n baseUrl: string;\n};\n\ntype WithoutMeta = {\n meta: false;\n baseUrl?: never;\n};\n\nexport type BreadcrumbsProps = Omit<React.HTMLAttributes<HTMLElement>, \"aria-label\"> &\n DataAttributes & {\n /** Describes the breadcrumb navigation for screen readers, e.g. \"Breadcrumbs\" or \"Breadcrumb navigation\". */\n [\"aria-label\"]: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\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 linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n /** The last breadcrumb will be a link and not have aria-current=\"page\" */\n excludeCurrentPage?: boolean;\n } & (WithMeta | WithoutMeta);\n\nexport type BreadcrumbsItemProps = Omit<\n React.HTMLAttributes<HTMLLIElement>,\n \"onClick\" | \"children\"\n> &\n DataAttributes & {\n children: string;\n href?: string;\n onClick?: () => void;\n /** @ignore */\n current?: boolean;\n /** @ignore */\n first?: boolean;\n /** @ignore */\n last?: boolean;\n /** @ignore */\n linkElement?: BreadcrumbsProps[\"linkElement\"];\n /** @ignore */\n meta?: boolean;\n /** @ignore */\n negative?: boolean;\n /** @ignore */\n excludeCurrentPage?: boolean;\n };\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n [\"aria-label\"]: ariaLabel,\n baseUrl,\n children,\n className,\n excludeCurrentPage = false,\n linkElement = \"a\",\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = cx([\n className,\n rootClassName,\n `${rootClassName}--${negative ? \"negative\" : \"default\"}`,\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 { children, href } = item.props;\n\n metaListItems.push(metaListItem(children, position, href && `${baseUrl}${href}`));\n\n const child = cloneElement(item, {\n className: item.props.className,\n current,\n negative,\n first: !hideHomeIcon && position === 1,\n last,\n linkElement,\n excludeCurrentPage,\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav aria-label={ariaLabel} 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 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 linkElement = \"a\",\n negative = false,\n onClick,\n first = false,\n last = false,\n excludeCurrentPage = false,\n ...props\n}: BreadcrumbsItemProps) => {\n const LinkElement = linkElement;\n const classes = cx(\n [itemClassName],\n styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`],\n {\n [`${itemClassName}--current`]: !excludeCurrentPage && current,\n }\n );\n\n return (\n <li {...props} className={classes}>\n {!last || excludeCurrentPage ? (\n <LinkElement\n href={href}\n data-testid={dataTestId}\n onClick={onClick}\n className={cx(`${itemClassName}__element`, `${itemClassName}__link`)}\n >\n {first && (\n <span className={styles[`${itemClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n )}\n {children}\n </LinkElement>\n ) : (\n <span\n aria-current=\"page\"\n data-testid={dataTestId}\n className={cx(`${itemClassName}__element`)}\n >\n {children}\n </span>\n )}\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","u","_","d","v","g","l","x","h","y","S","b","a","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","position","item","schema","metaSchema","itemListElement","cx","styles","rootClassName","itemClassName","Breadcrumbs","ariaLabel","baseUrl","children","className","excludeCurrentPage","linkElement","meta","negative","highlightLast","hideHomeIcon","props","maxIndex","Children","metaListItems","items","index","last","current","href","cloneElement","jsx","Item","dataTestId","onClick","first","LinkElement","jsxs","IconHome"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"breadcrumbs.cjs.js","sources":["../../icon/dist/icon-CAVUByiV.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as a } 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 v = /* @__PURE__ */ f(_), d = {\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 = v.bind(d), l = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), y = ({ 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(), b = ({ svg: r, allyTitle: e, className: o, size: u = x, ...i }) => {\n const t = y({\n content: S(r.svg),\n title: e\n }), n = g(o, l, `${l}--${u}`);\n return /* @__PURE__ */ a(\"span\", { className: n, dangerouslySetInnerHTML: { __html: t }, ...i });\n};\nb.displayName = \"Icon\";\nexport {\n b as I\n};\n//# sourceMappingURL=icon-CAVUByiV.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-CAVUByiV.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.call(this, 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 this && this[arg] || 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(this, 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, this && this[key] || 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, position: number, item?: string) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, position, item) => {\n const schema: MetaListItem = {\n \"@type\": \"ListItem\",\n position,\n name,\n };\n\n if (item) {\n schema.item = item;\n }\n\n return schema;\n};\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, {\n type AnchorHTMLAttributes,\n Children,\n cloneElement,\n type ForwardRefExoticComponent,\n type ReactElement,\n} from \"react\";\nimport type { BaseProps } from \"@purpurds/common-types\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { type MetaListItem, metaListItem, metaSchema } from \"./meta\";\n\nconst cx = c.bind(styles);\n\ntype WithMeta = {\n meta?: true;\n baseUrl: string;\n};\n\ntype WithoutMeta = {\n meta: false;\n baseUrl?: never;\n};\n\nexport type BreadcrumbsProps = Omit<BaseProps<\"nav\">, \"aria-label\" | \"children\"> & {\n /** Describes the breadcrumb navigation for screen readers, e.g. \"Breadcrumbs\" or \"Breadcrumb navigation\". */\n [\"aria-label\"]: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\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 linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n /** The last breadcrumb will be a link and not have aria-current=\"page\" */\n excludeCurrentPage?: boolean;\n} & (WithMeta | WithoutMeta);\n\nexport type BreadcrumbsItemProps = Omit<BaseProps<\"li\">, \"onClick\" | \"children\"> & {\n children: string;\n href?: string;\n onClick?: () => void;\n /** @ignore */\n current?: boolean;\n /** @ignore */\n first?: boolean;\n /** @ignore */\n last?: boolean;\n /** @ignore */\n linkElement?: BreadcrumbsProps[\"linkElement\"];\n /** @ignore */\n meta?: boolean;\n /** @ignore */\n negative?: boolean;\n /** @ignore */\n excludeCurrentPage?: boolean;\n};\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n [\"aria-label\"]: ariaLabel,\n baseUrl,\n children,\n className,\n excludeCurrentPage = false,\n linkElement = \"a\",\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = cx([\n className,\n rootClassName,\n `${rootClassName}--${negative ? \"negative\" : \"default\"}`,\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 { children, href } = item.props;\n\n metaListItems.push(metaListItem(children, position, href && `${baseUrl}${href}`));\n\n const child = cloneElement(item, {\n className: item.props.className,\n current,\n negative,\n first: !hideHomeIcon && position === 1,\n last,\n linkElement,\n excludeCurrentPage,\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav aria-label={ariaLabel} 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 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 linkElement = \"a\",\n negative = false,\n onClick,\n first = false,\n last = false,\n excludeCurrentPage = false,\n ...props\n}: BreadcrumbsItemProps) => {\n const LinkElement = linkElement;\n const classes = cx(\n [itemClassName],\n styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`],\n {\n [`${itemClassName}--current`]: !excludeCurrentPage && current,\n }\n );\n\n return (\n <li {...props} className={classes}>\n {!last || excludeCurrentPage ? (\n <LinkElement\n href={href}\n data-testid={dataTestId}\n onClick={onClick}\n className={cx(`${itemClassName}__element`, `${itemClassName}__link`)}\n >\n {first && (\n <span className={styles[`${itemClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n )}\n {children}\n </LinkElement>\n ) : (\n <span\n aria-current=\"page\"\n data-testid={dataTestId}\n className={cx(`${itemClassName}__element`)}\n >\n {children}\n </span>\n )}\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","u","_","v","d","g","l","x","h","y","S","b","a","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","position","item","schema","metaSchema","itemListElement","cx","styles","rootClassName","itemClassName","Breadcrumbs","ariaLabel","baseUrl","children","className","excludeCurrentPage","linkElement","meta","negative","highlightLast","hideHomeIcon","props","maxIndex","Children","metaListItems","items","index","last","current","href","cloneElement","jsx","Item","dataTestId","onClick","first","LinkElement","jsxs","IconHome"],"mappings":"wIACA,SAASA,EAAEC,EAAG,CACZ,OAAOA,GAAKA,EAAE,YAAc,OAAO,UAAU,eAAe,KAAKA,EAAG,SAAS,EAAIA,EAAE,QAAUA,CAC/F,CACA,IAAIC,EAAI,CAAE,QAAS,EAAI,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAIC,EACJ,SAASC,GAAI,CACX,OAAOD,IAAMA,EAAI,EAAG,SAASF,EAAG,EAC7B,UAAW,CACV,IAAII,EAAI,CAAA,EAAG,eACX,SAASC,GAAI,CACX,QAASC,EAAI,GAAIC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACjD,IAAIC,EAAI,UAAUD,CAAC,EACnBC,IAAMF,EAAI,EAAEA,EAAGG,EAAE,KAAK,KAAMD,CAAC,CAAC,EACxC,CACQ,OAAOF,CACf,CACM,SAASG,EAAEH,EAAG,CACZ,GAAI,OAAOA,GAAK,UAAY,OAAOA,GAAK,SACtC,OAAO,MAAQ,KAAKA,CAAC,GAAKA,EAC5B,GAAI,OAAOA,GAAK,SACd,MAAO,GACT,GAAI,MAAM,QAAQA,CAAC,EACjB,OAAOD,EAAE,MAAM,KAAMC,CAAC,EACxB,GAAIA,EAAE,WAAa,OAAO,UAAU,UAAY,CAACA,EAAE,SAAS,WAAW,SAAS,eAAe,EAC7F,OAAOA,EAAE,SAAU,EACrB,IAAIC,EAAI,GACR,QAASC,KAAKF,EACZF,EAAE,KAAKE,EAAGE,CAAC,GAAKF,EAAEE,CAAC,IAAMD,EAAI,EAAEA,EAAG,MAAQ,KAAKC,CAAC,GAAKA,CAAC,GACxD,OAAOD,CACf,CACM,SAAS,EAAED,EAAGC,EAAG,CACf,OAAOA,EAAID,EAAIA,EAAI,IAAMC,EAAID,EAAIC,EAAID,CAC7C,CACMN,EAAE,SAAWK,EAAE,QAAUA,EAAGL,EAAE,QAAUK,GAAK,OAAO,WAAaA,CACvE,GAAQ,CACR,EAAIJ,CAAC,GAAIA,EAAE,OACX,CACA,IAAIS,EAAIP,EAAG,EACX,MAAMQ,EAAoBZ,EAAEW,CAAC,EAAGE,EAAI,CAClC,cAAe,uBACf,mBAAoB,4BACpB,kBAAmB,2BACnB,kBAAmB,4BACnB,kBAAmB,4BACnB,kBAAmB,4BACnB,kBAAmB,2BACrB,EAAGC,EAAIF,EAAE,KAAKC,CAAC,EAAGE,EAAI,cAAeC,EAAI,KAAMC,EAAKhB,GAAMA,EAAE,OAAQI,GAAM,OAAO,KAAKA,CAAC,EAAE,QAAU,CAAC,EAAE,IAAKA,GAAM,GAAGA,EAAE,IAAI,KAAKA,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAGa,EAAI,CAAC,CAAE,QAASjB,EAAI,GAAI,MAAOI,CAAG,EAAG,KAAO,CAChM,MAAMC,EAAI,CACR,CAAE,KAAM,QAAS,MAAO,4BAA8B,EACtD,CAAE,KAAM,OAAQ,MAAO,cAAgB,EACvC,CAAE,KAAM,UAAW,MAAO,WAAa,EACvCD,EAAI,CAAE,KAAM,OAAQ,MAAO,KAAO,EAAG,CAAE,KAAM,cAAe,MAAO,MAAM,CAC7E,EAAKK,EAAIL,EAAI,UAAUA,CAAC,WAAa,GACnC,MAAO,QAAQY,EAAEX,CAAC,CAAC,IAAII,CAAC,GAAGT,CAAC,QAC9B,EAAGkB,EAAKlB,GAAMA,EAAE,QAAQ,qBAAsB,EAAE,EAAE,KAAM,EAAEmB,EAAI,CAAC,CAAE,IAAKnB,EAAG,UAAWI,EAAG,UAAWC,EAAG,KAAMI,EAAIM,EAAG,GAAG,KAAQ,CAC3H,MAAMT,EAAIW,EAAE,CACV,QAASC,EAAElB,EAAE,GAAG,EAChB,MAAOI,CACX,CAAG,EAAGG,EAAIM,EAAER,EAAGS,EAAG,GAAGA,CAAC,KAAKL,CAAC,EAAE,EAC5B,OAAuBW,MAAE,OAAQ,CAAE,UAAWb,EAAG,wBAAyB,CAAE,OAAQD,GAAK,GAAG,CAAC,CAAE,CACjG,EACAa,EAAE,YAAc,OCjEhB,MAAMR,EAAI,CACR,KAAM,OACN,IAAK,ksBACL,SAAU,CAAC,MAAM,EACjB,SAAU,WACZ,EAAGV,EAAKI,GAAsBD,MAAEgB,EAAG,CAAE,GAAGf,EAAG,IAAKM,EAAG,EACnDV,EAAE,YAAc;;;;iDCDf,UAAY,CAGZ,IAAIoB,EAAS,CAAA,EAAG,eAEhB,SAASC,GAAc,CAGtB,QAFIC,EAAU,GAELC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAC1C,IAAIC,EAAM,UAAUD,CAAC,EACjBC,IACHF,EAAUG,EAAYH,EAASI,EAAW,KAAK,KAAMF,CAAG,CAAC,EAE7D,CAEE,OAAOF,CACT,CAEC,SAASI,EAAYF,EAAK,CACzB,GAAI,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,SAC7C,OAAO,MAAQ,KAAKA,CAAG,GAAKA,EAG7B,GAAI,OAAOA,GAAQ,SAClB,MAAO,GAGR,GAAI,MAAM,QAAQA,CAAG,EACpB,OAAOH,EAAW,MAAM,KAAMG,CAAG,EAGlC,GAAIA,EAAI,WAAa,OAAO,UAAU,UAAY,CAACA,EAAI,SAAS,SAAQ,EAAG,SAAS,eAAe,EAClG,OAAOA,EAAI,SAAU,EAGtB,IAAIF,EAAU,GAEd,QAASK,KAAOH,EACXJ,EAAO,KAAKI,EAAKG,CAAG,GAAKH,EAAIG,CAAG,IACnCL,EAAUG,EAAYH,EAAS,MAAQ,KAAKK,CAAG,GAAKA,CAAG,GAIzD,OAAOL,CACT,CAEC,SAASG,EAAaG,EAAOC,EAAU,CACtC,OAAKA,EAIDD,EACIA,EAAQ,IAAMC,EAGfD,EAAQC,EAPPD,CAQV,CAEsCE,EAAO,SAC3CT,EAAW,QAAUA,EACrBS,UAAiBT,GAOjB,OAAO,WAAaA,CAEtB,uqBCnEaU,EAAiC,CAACC,EAAMC,EAAUC,IAAS,CACtE,MAAMC,EAAuB,CAC3B,QAAS,WACT,SAAAF,EACA,KAAAD,CACF,EAEA,OAAIE,IACFC,EAAO,KAAOD,GAGTC,CACT,EAEaC,GAAcC,GACzB,KAAK,UAAU,CACb,WAAY,qBACZ,QAAS,iBACT,gBAAAA,CACF,CAAC,ECdGC,EAAKtC,EAAE,KAAKuC,CAAM,EA+ClBC,EAAgB,qBAChBC,EAAgB,yBAEhBC,EAAc,CAAC,CACnB,CAAC,cAAeC,EAChB,QAAAC,EACA,SAAAC,EACA,UAAAC,EACA,mBAAAC,EAAqB,GACrB,YAAAC,EAAc,IACd,KAAAC,EAAO,GACP,SAAAC,EAAW,GACX,cAAAC,EAAgB,GAChB,aAAAC,EACA,GAAGC,CACL,IAAwB,CACtB,MAAM/B,EAAUgB,EAAG,CACjBQ,EACAN,EACA,GAAGA,CAAa,KAAKU,EAAW,WAAa,SAAS,EAAA,CACvD,EACKI,EAAWC,EAAAA,SAAS,MAAMV,CAAQ,EAElCW,EAAgC,CAAC,EAEjCC,EAAQF,EAAAA,SAAS,IAAIV,EAAU,CAACX,EAAMwB,IAAU,CACpD,MAAMzB,EAAWyB,EAAQ,EACnBC,EAAOL,IAAarB,EACpB2B,EAAUT,GAAiBQ,EAE3B,CAAE,SAAAd,EAAU,KAAAgB,GAAS3B,EAAK,MAElB,OAAAsB,EAAA,KAAKzB,EAAac,EAAUZ,EAAU4B,GAAQ,GAAGjB,CAAO,GAAGiB,CAAI,EAAE,CAAC,EAElEC,eAAa5B,EAAM,CAC/B,UAAWA,EAAK,MAAM,UACtB,QAAA0B,EACA,SAAAV,EACA,MAAO,CAACE,GAAgBnB,IAAa,EACrC,KAAA0B,EACA,YAAAX,EACA,mBAAAD,CAAA,CACD,CAEM,CACR,EAEKZ,EAASqB,EAAc,SAAWF,EAAWlB,GAAWoB,CAAa,EAAI,KAE/E,cACG,MAAI,CAAA,aAAYb,EAAW,UAAWrB,EAAU,GAAG+B,EAClD,SAAA,CAAAU,EAAAA,IAAC,MAAG,UAAWxB,EAAO,GAAGC,CAAa,QAAQ,EAAI,SAAMiB,CAAA,CAAA,EACvDR,GAAQd,EACP4B,EAAA,IAAC,SAAA,CACC,KAAK,sBACL,cAAY,mBACZ,wBAAyB,CAAE,OAAQ5B,CAAO,CAAA,CAAA,EAE1C,IAAA,EACN,CAEJ,EAEM6B,EAAO,CAAC,CACZ,KAAAH,EACA,CAAC,eAAgBI,EACjB,SAAApB,EACA,QAAAe,EAAU,GACV,YAAAZ,EAAc,IACd,SAAAE,EAAW,GACX,QAAAgB,EACA,MAAAC,EAAQ,GACR,KAAAR,EAAO,GACP,mBAAAZ,EAAqB,GACrB,GAAGM,CACL,IAA4B,CAC1B,MAAMe,EAAcpB,EACd1B,EAAUgB,EACd,CAACG,CAAa,EACdF,EAAO,GAAGE,CAAa,KAAKS,EAAW,WAAa,SAAS,EAAE,EAC/D,CACE,CAAC,GAAGT,CAAa,WAAW,EAAG,CAACM,GAAsBa,CAAA,CAE1D,EAGE,OAAAG,MAAC,MAAI,GAAGV,EAAO,UAAW/B,EACvB,SAAA,CAACqC,GAAQZ,EACRsB,EAAA,KAACD,EAAA,CACC,KAAAP,EACA,cAAaI,EACb,QAAAC,EACA,UAAW5B,EAAG,GAAGG,CAAa,YAAa,GAAGA,CAAa,QAAQ,EAElE,SAAA,CAAA0B,GACEJ,EAAAA,IAAA,OAAA,CAAK,UAAWxB,EAAO,GAAGE,CAAa,QAAQ,EAAG,cAAY,OAC7D,SAAAsB,MAACO,EAAS,CAAA,KAAK,IAAK,CAAA,EACtB,EAEDzB,CAAA,CAAA,CAAA,EAGHkB,EAAA,IAAC,OAAA,CACC,eAAa,OACb,cAAaE,EACb,UAAW3B,EAAG,GAAGG,CAAa,WAAW,EAExC,SAAAI,CAAA,CAAA,EAGP,CAEJ,EAEAH,EAAY,KAAOsB","x_google_ignoreList":[2]}
@@ -1,5 +1,5 @@
1
1
  import { default as React, AnchorHTMLAttributes, ForwardRefExoticComponent, ReactElement } from 'react';
2
- import { DataAttributes } from './types';
2
+ import { BaseProps } from '@purpurds/common-types';
3
3
 
4
4
  type WithMeta = {
5
5
  meta?: true;
@@ -9,7 +9,7 @@ type WithoutMeta = {
9
9
  meta: false;
10
10
  baseUrl?: never;
11
11
  };
12
- export type BreadcrumbsProps = Omit<React.HTMLAttributes<HTMLElement>, "aria-label"> & DataAttributes & {
12
+ export type BreadcrumbsProps = Omit<BaseProps<"nav">, "aria-label" | "children"> & {
13
13
  /** Describes the breadcrumb navigation for screen readers, e.g. "Breadcrumbs" or "Breadcrumb navigation". */
14
14
  ["aria-label"]: string;
15
15
  children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;
@@ -23,7 +23,7 @@ export type BreadcrumbsProps = Omit<React.HTMLAttributes<HTMLElement>, "aria-lab
23
23
  /** The last breadcrumb will be a link and not have aria-current="page" */
24
24
  excludeCurrentPage?: boolean;
25
25
  } & (WithMeta | WithoutMeta);
26
- export type BreadcrumbsItemProps = Omit<React.HTMLAttributes<HTMLLIElement>, "onClick" | "children"> & DataAttributes & {
26
+ export type BreadcrumbsItemProps = Omit<BaseProps<"li">, "onClick" | "children"> & {
27
27
  children: string;
28
28
  href?: string;
29
29
  onClick?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../src/breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,oBAAoB,EAGzB,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,KAAK,QAAQ,GAAG;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,GAClF,cAAc,GAAG;IACf,6GAA6G;IAC7G,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzF,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oMAAoM;IACpM,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,yBAAyB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,GAAG,GAAG,CAAC;IACvF,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;AAE/B,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,EACnC,SAAS,GAAG,UAAU,CACvB,GACC,cAAc,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc;IACd,WAAW,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,cAAc;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAKJ,QAAA,MAAM,WAAW;0JAYd,gBAAgB;gJA4DhB,oBAAoB;CAdtB,CAAC;AAEF,QAAA,MAAM,IAAI,wIAYP,oBAAoB,sBAqCtB,CAAC;AAIF,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../src/breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,oBAAoB,EAGzB,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AASxD,KAAK,QAAQ,GAAG;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,GAAG;IACjF,6GAA6G;IAC7G,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzF,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oMAAoM;IACpM,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,yBAAyB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,GAAG,GAAG,CAAC;IACvF,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;AAE7B,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc;IACd,WAAW,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,cAAc;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAKF,QAAA,MAAM,WAAW;0JAYd,gBAAgB;gJA4DhB,oBAAoB;CAdtB,CAAC;AAEF,QAAA,MAAM,IAAI,wIAYP,oBAAoB,sBAqCtB,CAAC;AAIF,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,eAAe,EAAE,CAAC"}
@@ -59,27 +59,12 @@ const T = /* @__PURE__ */ Z(P), D = {
59
59
  u ? { name: "role", value: "img" } : { name: "aria-hidden", value: "true" }
60
60
  ], a = u ? `<title>${u}</title>` : "";
61
61
  return `<svg ${R(n)}>${a}${e}</svg>`;
62
- }, G = (e) => e.replace(/<(\/?)svg([^>]*)>/g, "").trim(), L = ({
63
- ["data-testid"]: e,
64
- svg: u,
65
- allyTitle: n,
66
- className: a,
67
- size: i = J,
68
- ...r
69
- }) => {
70
- const t = V({
71
- content: G(u.svg),
72
- title: n
73
- }), s = F(a, O, `${O}--${i}`);
74
- return /* @__PURE__ */ c(
75
- "span",
76
- {
77
- className: s,
78
- "data-testid": e,
79
- dangerouslySetInnerHTML: { __html: t },
80
- ...r
81
- }
82
- );
62
+ }, G = (e) => e.replace(/<(\/?)svg([^>]*)>/g, "").trim(), L = ({ svg: e, allyTitle: u, className: n, size: a = J, ...i }) => {
63
+ const r = V({
64
+ content: G(e.svg),
65
+ title: u
66
+ }), t = F(n, O, `${O}--${a}`);
67
+ return /* @__PURE__ */ c("span", { className: t, dangerouslySetInnerHTML: { __html: r }, ...i });
83
68
  };
84
69
  L.displayName = "Icon";
85
70
  const K = {
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.es.js","sources":["../../icon/dist/icon-BqK8slmm.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as a } 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), l = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), y = ({ 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(), b = ({\n [\"data-testid\"]: r,\n svg: e,\n allyTitle: o,\n className: u,\n size: i = x,\n ...t\n}) => {\n const n = y({\n content: S(e.svg),\n title: o\n }), s = g(u, l, `${l}--${i}`);\n return /* @__PURE__ */ a(\n \"span\",\n {\n className: s,\n \"data-testid\": r,\n dangerouslySetInnerHTML: { __html: n },\n ...t\n }\n );\n};\nb.displayName = \"Icon\";\nexport {\n b as I\n};\n//# sourceMappingURL=icon-BqK8slmm.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-BqK8slmm.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.call(this, 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 this && this[arg] || 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(this, 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, this && this[key] || 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, position: number, item?: string) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, position, item) => {\n const schema: MetaListItem = {\n \"@type\": \"ListItem\",\n position,\n name,\n };\n\n if (item) {\n schema.item = item;\n }\n\n return schema;\n};\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, {\n type AnchorHTMLAttributes,\n Children,\n cloneElement,\n type ForwardRefExoticComponent,\n type ReactElement,\n} from \"react\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { type MetaListItem, metaListItem, metaSchema } from \"./meta\";\nimport { type DataAttributes } from \"./types\";\n\nconst cx = c.bind(styles);\n\ntype WithMeta = {\n meta?: true;\n baseUrl: string;\n};\n\ntype WithoutMeta = {\n meta: false;\n baseUrl?: never;\n};\n\nexport type BreadcrumbsProps = Omit<React.HTMLAttributes<HTMLElement>, \"aria-label\"> &\n DataAttributes & {\n /** Describes the breadcrumb navigation for screen readers, e.g. \"Breadcrumbs\" or \"Breadcrumb navigation\". */\n [\"aria-label\"]: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\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 linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n /** The last breadcrumb will be a link and not have aria-current=\"page\" */\n excludeCurrentPage?: boolean;\n } & (WithMeta | WithoutMeta);\n\nexport type BreadcrumbsItemProps = Omit<\n React.HTMLAttributes<HTMLLIElement>,\n \"onClick\" | \"children\"\n> &\n DataAttributes & {\n children: string;\n href?: string;\n onClick?: () => void;\n /** @ignore */\n current?: boolean;\n /** @ignore */\n first?: boolean;\n /** @ignore */\n last?: boolean;\n /** @ignore */\n linkElement?: BreadcrumbsProps[\"linkElement\"];\n /** @ignore */\n meta?: boolean;\n /** @ignore */\n negative?: boolean;\n /** @ignore */\n excludeCurrentPage?: boolean;\n };\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n [\"aria-label\"]: ariaLabel,\n baseUrl,\n children,\n className,\n excludeCurrentPage = false,\n linkElement = \"a\",\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = cx([\n className,\n rootClassName,\n `${rootClassName}--${negative ? \"negative\" : \"default\"}`,\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 { children, href } = item.props;\n\n metaListItems.push(metaListItem(children, position, href && `${baseUrl}${href}`));\n\n const child = cloneElement(item, {\n className: item.props.className,\n current,\n negative,\n first: !hideHomeIcon && position === 1,\n last,\n linkElement,\n excludeCurrentPage,\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav aria-label={ariaLabel} 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 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 linkElement = \"a\",\n negative = false,\n onClick,\n first = false,\n last = false,\n excludeCurrentPage = false,\n ...props\n}: BreadcrumbsItemProps) => {\n const LinkElement = linkElement;\n const classes = cx(\n [itemClassName],\n styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`],\n {\n [`${itemClassName}--current`]: !excludeCurrentPage && current,\n }\n );\n\n return (\n <li {...props} className={classes}>\n {!last || excludeCurrentPage ? (\n <LinkElement\n href={href}\n data-testid={dataTestId}\n onClick={onClick}\n className={cx(`${itemClassName}__element`, `${itemClassName}__link`)}\n >\n {first && (\n <span className={styles[`${itemClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n )}\n {children}\n </LinkElement>\n ) : (\n <span\n aria-current=\"page\"\n data-testid={dataTestId}\n className={cx(`${itemClassName}__element`)}\n >\n {children}\n </span>\n )}\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","u","_","d","v","g","l","x","h","y","S","b","a","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","position","item","schema","metaSchema","itemListElement","cx","styles","rootClassName","itemClassName","Breadcrumbs","ariaLabel","baseUrl","children","className","excludeCurrentPage","linkElement","meta","negative","highlightLast","hideHomeIcon","props","maxIndex","Children","metaListItems","items","index","last","current","href","cloneElement","jsx","Item","dataTestId","onClick","first","LinkElement","jsxs","IconHome"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"breadcrumbs.es.js","sources":["../../icon/dist/icon-CAVUByiV.mjs","../../icon/dist/components/home.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/meta.ts","../src/breadcrumbs.tsx"],"sourcesContent":["import { jsx as a } 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 v = /* @__PURE__ */ f(_), d = {\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 = v.bind(d), l = \"purpur-icon\", x = \"md\", h = (r) => r.filter((e) => Object.keys(e).length >= 1).map((e) => `${e.name}=\"${e.value}\"`).join(\" \"), y = ({ 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(), b = ({ svg: r, allyTitle: e, className: o, size: u = x, ...i }) => {\n const t = y({\n content: S(r.svg),\n title: e\n }), n = g(o, l, `${l}--${u}`);\n return /* @__PURE__ */ a(\"span\", { className: n, dangerouslySetInnerHTML: { __html: t }, ...i });\n};\nb.displayName = \"Icon\";\nexport {\n b as I\n};\n//# sourceMappingURL=icon-CAVUByiV.mjs.map\n","import { jsx as e } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-CAVUByiV.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.call(this, 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 this && this[arg] || 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(this, 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, this && this[key] || 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, position: number, item?: string) => MetaListItem;\n\nexport const metaListItem: MakeMetaListItem = (name, position, item) => {\n const schema: MetaListItem = {\n \"@type\": \"ListItem\",\n position,\n name,\n };\n\n if (item) {\n schema.item = item;\n }\n\n return schema;\n};\n\nexport const metaSchema = (itemListElement: MetaListItem[]) =>\n JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement,\n });\n","import React, {\n type AnchorHTMLAttributes,\n Children,\n cloneElement,\n type ForwardRefExoticComponent,\n type ReactElement,\n} from \"react\";\nimport type { BaseProps } from \"@purpurds/common-types\";\nimport { IconHome } from \"@purpurds/icon/home\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./breadcrumbs.module.scss\";\nimport { type MetaListItem, metaListItem, metaSchema } from \"./meta\";\n\nconst cx = c.bind(styles);\n\ntype WithMeta = {\n meta?: true;\n baseUrl: string;\n};\n\ntype WithoutMeta = {\n meta: false;\n baseUrl?: never;\n};\n\nexport type BreadcrumbsProps = Omit<BaseProps<\"nav\">, \"aria-label\" | \"children\"> & {\n /** Describes the breadcrumb navigation for screen readers, e.g. \"Breadcrumbs\" or \"Breadcrumb navigation\". */\n [\"aria-label\"]: string;\n children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;\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 linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n /** The last breadcrumb will be a link and not have aria-current=\"page\" */\n excludeCurrentPage?: boolean;\n} & (WithMeta | WithoutMeta);\n\nexport type BreadcrumbsItemProps = Omit<BaseProps<\"li\">, \"onClick\" | \"children\"> & {\n children: string;\n href?: string;\n onClick?: () => void;\n /** @ignore */\n current?: boolean;\n /** @ignore */\n first?: boolean;\n /** @ignore */\n last?: boolean;\n /** @ignore */\n linkElement?: BreadcrumbsProps[\"linkElement\"];\n /** @ignore */\n meta?: boolean;\n /** @ignore */\n negative?: boolean;\n /** @ignore */\n excludeCurrentPage?: boolean;\n};\n\nconst rootClassName = \"purpur-breadcrumbs\";\nconst itemClassName = \"purpur-breadcrumb-item\";\n\nconst Breadcrumbs = ({\n [\"aria-label\"]: ariaLabel,\n baseUrl,\n children,\n className,\n excludeCurrentPage = false,\n linkElement = \"a\",\n meta = true,\n negative = false,\n highlightLast = true,\n hideHomeIcon,\n ...props\n}: BreadcrumbsProps) => {\n const classes = cx([\n className,\n rootClassName,\n `${rootClassName}--${negative ? \"negative\" : \"default\"}`,\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 { children, href } = item.props;\n\n metaListItems.push(metaListItem(children, position, href && `${baseUrl}${href}`));\n\n const child = cloneElement(item, {\n className: item.props.className,\n current,\n negative,\n first: !hideHomeIcon && position === 1,\n last,\n linkElement,\n excludeCurrentPage,\n });\n\n return child;\n });\n\n const schema = metaListItems.length === maxIndex ? metaSchema(metaListItems) : null;\n\n return (\n <nav aria-label={ariaLabel} 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 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 linkElement = \"a\",\n negative = false,\n onClick,\n first = false,\n last = false,\n excludeCurrentPage = false,\n ...props\n}: BreadcrumbsItemProps) => {\n const LinkElement = linkElement;\n const classes = cx(\n [itemClassName],\n styles[`${itemClassName}--${negative ? \"negative\" : \"default\"}`],\n {\n [`${itemClassName}--current`]: !excludeCurrentPage && current,\n }\n );\n\n return (\n <li {...props} className={classes}>\n {!last || excludeCurrentPage ? (\n <LinkElement\n href={href}\n data-testid={dataTestId}\n onClick={onClick}\n className={cx(`${itemClassName}__element`, `${itemClassName}__link`)}\n >\n {first && (\n <span className={styles[`${itemClassName}__home`]} aria-hidden=\"true\">\n <IconHome size=\"xs\" />\n </span>\n )}\n {children}\n </LinkElement>\n ) : (\n <span\n aria-current=\"page\"\n data-testid={dataTestId}\n className={cx(`${itemClassName}__element`)}\n >\n {children}\n </span>\n )}\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","u","_","v","d","g","l","x","h","y","S","b","a","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","metaListItem","name","position","item","schema","metaSchema","itemListElement","cx","styles","rootClassName","itemClassName","Breadcrumbs","ariaLabel","baseUrl","children","className","excludeCurrentPage","linkElement","meta","negative","highlightLast","hideHomeIcon","props","maxIndex","Children","metaListItems","items","index","last","current","href","cloneElement","jsx","Item","dataTestId","onClick","first","LinkElement","jsxs","IconHome"],"mappings":"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","x_google_ignoreList":[2]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpurds/breadcrumbs",
3
- "version": "7.6.0",
3
+ "version": "7.7.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "main": "./dist/breadcrumbs.cjs.js",
6
6
  "types": "./dist/breadcrumbs.d.ts",
@@ -16,8 +16,9 @@
16
16
  "source": "src/breadcrumbs.tsx",
17
17
  "dependencies": {
18
18
  "classnames": "~2.5.0",
19
- "@purpurds/icon": "7.6.0",
20
- "@purpurds/tokens": "7.6.0"
19
+ "@purpurds/tokens": "7.7.0",
20
+ "@purpurds/common-types": "7.7.0",
21
+ "@purpurds/icon": "7.7.0"
21
22
  },
22
23
  "devDependencies": {
23
24
  "eslint": "9.24.0",
@@ -37,8 +38,8 @@
37
38
  "typescript": "^5.6.3",
38
39
  "vite": "^6.2.1",
39
40
  "vitest": "^3.1.2",
40
- "@purpurds/component-rig": "1.0.0",
41
- "@purpurds/paragraph": "7.6.0"
41
+ "@purpurds/paragraph": "7.7.0",
42
+ "@purpurds/component-rig": "1.0.0"
42
43
  },
43
44
  "peerDependencies": {
44
45
  "@types/react": "^18 || ^19",
@@ -44,7 +44,7 @@ The Purpur breadcrumbs are accessible by default according to best practices. Th
44
44
  Meta Data & SEO
45
45
  Another benefit of helping the user find their way, is that we also help the search engines increasing understanding of our site.
46
46
 
47
- By default, the breadcrumbs will render a JSON+LD [script tag](https://purpur.telia.io/iframe.html?path=/story/components-breadcrumbs--breadcrumb-meta-data) with [structured meta data](https://developers.google.com/search/docs/appearance/structured-data/breadcrumb#json-ld) extracted from the breadcrumb items.
47
+ By default, the breadcrumbs will render a JSON+LD [script tag](https://purpur.telia.io/iframe.html?path=/story/navigation-breadcrumbs--breadcrumb-meta-data) with [structured meta data](https://developers.google.com/search/docs/appearance/structured-data/breadcrumb#json-ld) extracted from the breadcrumb items.
48
48
 
49
49
  Custom Link Component
50
50
  If you need a custom link, perhaps to use a router, like the next/link component, you can simply pass your custom link component and skip the href property on Breadcrumbs.Item, only passing it directly to Link.`,
@@ -5,12 +5,12 @@ import React, {
5
5
  type ForwardRefExoticComponent,
6
6
  type ReactElement,
7
7
  } from "react";
8
+ import type { BaseProps } from "@purpurds/common-types";
8
9
  import { IconHome } from "@purpurds/icon/home";
9
10
  import c from "classnames/bind";
10
11
 
11
12
  import styles from "./breadcrumbs.module.scss";
12
13
  import { type MetaListItem, metaListItem, metaSchema } from "./meta";
13
- import { type DataAttributes } from "./types";
14
14
 
15
15
  const cx = c.bind(styles);
16
16
 
@@ -24,45 +24,40 @@ type WithoutMeta = {
24
24
  baseUrl?: never;
25
25
  };
26
26
 
27
- export type BreadcrumbsProps = Omit<React.HTMLAttributes<HTMLElement>, "aria-label"> &
28
- DataAttributes & {
29
- /** Describes the breadcrumb navigation for screen readers, e.g. "Breadcrumbs" or "Breadcrumb navigation". */
30
- ["aria-label"]: string;
31
- children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;
32
- /** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */
33
- negative?: boolean;
34
- /** 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. */
35
- highlightLast?: boolean;
36
- /** Set to not render the home icon in front of the first breadcrumb item. */
37
- hideHomeIcon?: boolean;
38
- linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | "a";
39
- /** The last breadcrumb will be a link and not have aria-current="page" */
40
- excludeCurrentPage?: boolean;
41
- } & (WithMeta | WithoutMeta);
42
-
43
- export type BreadcrumbsItemProps = Omit<
44
- React.HTMLAttributes<HTMLLIElement>,
45
- "onClick" | "children"
46
- > &
47
- DataAttributes & {
48
- children: string;
49
- href?: string;
50
- onClick?: () => void;
51
- /** @ignore */
52
- current?: boolean;
53
- /** @ignore */
54
- first?: boolean;
55
- /** @ignore */
56
- last?: boolean;
57
- /** @ignore */
58
- linkElement?: BreadcrumbsProps["linkElement"];
59
- /** @ignore */
60
- meta?: boolean;
61
- /** @ignore */
62
- negative?: boolean;
63
- /** @ignore */
64
- excludeCurrentPage?: boolean;
65
- };
27
+ export type BreadcrumbsProps = Omit<BaseProps<"nav">, "aria-label" | "children"> & {
28
+ /** Describes the breadcrumb navigation for screen readers, e.g. "Breadcrumbs" or "Breadcrumb navigation". */
29
+ ["aria-label"]: string;
30
+ children: ReactElement<BreadcrumbsItemProps> | Array<ReactElement<BreadcrumbsItemProps>>;
31
+ /** Set to render the breadcrumbs with light font color. Ideally used when rendered on dark backgrounds. */
32
+ negative?: boolean;
33
+ /** 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. */
34
+ highlightLast?: boolean;
35
+ /** Set to not render the home icon in front of the first breadcrumb item. */
36
+ hideHomeIcon?: boolean;
37
+ linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | "a";
38
+ /** The last breadcrumb will be a link and not have aria-current="page" */
39
+ excludeCurrentPage?: boolean;
40
+ } & (WithMeta | WithoutMeta);
41
+
42
+ export type BreadcrumbsItemProps = Omit<BaseProps<"li">, "onClick" | "children"> & {
43
+ children: string;
44
+ href?: string;
45
+ onClick?: () => void;
46
+ /** @ignore */
47
+ current?: boolean;
48
+ /** @ignore */
49
+ first?: boolean;
50
+ /** @ignore */
51
+ last?: boolean;
52
+ /** @ignore */
53
+ linkElement?: BreadcrumbsProps["linkElement"];
54
+ /** @ignore */
55
+ meta?: boolean;
56
+ /** @ignore */
57
+ negative?: boolean;
58
+ /** @ignore */
59
+ excludeCurrentPage?: boolean;
60
+ };
66
61
 
67
62
  const rootClassName = "purpur-breadcrumbs";
68
63
  const itemClassName = "purpur-breadcrumb-item";
package/dist/types.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export type DataAttributes = {
2
- [key: `data-${string}`]: string;
3
- };
4
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,GAAG,EAAE,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC;CACjC,CAAC"}
package/src/types.ts DELETED
@@ -1,5 +0,0 @@
1
- // TODO: move to reusable package, once decided where it should be placed
2
-
3
- export type DataAttributes = {
4
- [key: `data-${string}`]: string;
5
- };