\";\n g.append(C, x), this.shadow.replaceChildren(g);\n let p = null;\n const h = new CSSStyleSheet();\n if (h.replaceSync(z + t + u), this.shadow.adoptedStyleSheets = [h], !c && C && C.addEventListener(\"click\", (a) => {\n const w = a.currentTarget;\n if (this.isMobile) {\n try {\n navigator.share({\n title: e,\n url: window.location.href\n }), w.removeAttribute(\"popover\");\n } catch (d) {\n console.log(d);\n }\n return;\n }\n if (this.isPopoverSupport) {\n const d = r.cloneNode(!0);\n d.removeAttribute(\"id\"), d.removeAttribute(\"popover\"), g.append(d), d.classList.add(\"up\", \"popover-clone\"), p = d.getBoundingClientRect(), console.log(p), d.remove();\n const s = w.getBoundingClientRect();\n let b = `${s.left + s.width / 2 - p.width / 2}px`;\n console.log(\n s.left,\n s.width,\n p.width,\n b\n ), s.left < 100 && (b = `${s.left + s.width / 2 - p.width * 0.25}px`, r.classList.add(\"left-adjust\")), s.right > window.innerWidth - 100 && (b = `${s.left + s.width / 2 - p.width * 0.75}px`, r.classList.add(\"right-adjust\"));\n const y = window.scrollY;\n r.style.left = b, document.documentElement.clientHeight / 2 > s.y ? (r.style.top = `${y + s.top + s.height}px`, r.classList.remove(\"down\"), r.classList.add(\"up\")) : (r.style.top = `${y + s.top - p.height}px`, r.classList.remove(\"up\"), r.classList.add(\"down\"));\n return;\n }\n navigator.clipboard.writeText(window.location.href), setTimeout(() => {\n this.textContent = \"Copied!\", this.createButton(f);\n }, 1e3);\n }), !c) {\n const a = () => {\n this.shadow.querySelector(\"[popover]\").hidePopover();\n };\n addEventListener(\"resize\", a), addEventListener(\"scroll\", a);\n }\n }\n createIcon() {\n const e = this.getAttribute(\"icon\") || \"1\";\n let t;\n return e === \"false\" ? t = \"\" : [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"].includes(e) ? t = M[e] : (console.log(\n '[Share Button] It looks like you did not specify a valid icon. Please add an icon attribute with a value of \"1,\" \"2,\" \"3,\" \"4,\" \"5,\" \"6,\" or \"7\"'\n ), t = M[1]), t;\n }\n createButton(e) {\n const t = document.createElement(\"button\");\n t.setAttribute(\"part\", \"share-button\"), t.setAttribute(\"class\", \"share-button\");\n const l = this.hasAttribute(\"notext\");\n return this.isPopoverSupport && !this.isMobile && t.setAttribute(\"popovertarget\", \"share-popover\"), this.hasAttribute(\"circle\") || l ? (t.setAttribute(\"aria-label\", \"Share\"), t.setAttribute(\n \"style\",\n \"border-radius: 50%; padding: 0.75rem; line-height: 1;\"\n ), t.innerHTML = e) : t.innerHTML = `${e} ${this.textContent ? \"\" : \"Share\"}`, t;\n }\n createPopover(e, t = !1) {\n const l = this.getAttribute(\"networks\") || \"x, linkedin, facebook, email, whatsapp, telegram, copy\", c = I({\n url: window.location.href,\n title: e,\n shareText: this.textContent ?? \"Share\",\n networks: l,\n isAtomic: t\n });\n if (!t) {\n const r = document.createElement(\"div\");\n return r.setAttribute(\"id\", \"share-popover\"), r.setAttribute(\"part\", \"share-popover\"), r.setAttribute(\"popover\", \"\"), r.append(c), r;\n }\n return c;\n }\n}\nm(H, \"observedAttributes\", [\"dark-mode\"]);\ncustomElements.define(\"share-button\", H);\nexport {\n H as ShareButton\n};\n"],
+ "sourcesContent": ["var S = Object.defineProperty;\nvar V = (n, o, e) => o in n ? S(n, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[o] = e;\nvar m = (n, o, e) => (V(n, typeof o != \"symbol\" ? o + \"\" : o, e), e);\nconst k = \".wrapper{--color-popover-bg: hsl(242deg 55.5% 2.74%);--color-popover-text: hsl(242deg 9.58% 98%);--color-button-bg: hsl(242deg 9.58% 98%);--color-button-text: hsl(242deg 55.5% 2.74%);--color-green: hsl(120deg 99% 43%)}\";\nfunction A(n) {\n let o = n.getAttribute(\"dark-mode\");\n if (o ?? (o = \"auto\"), o === \"auto\")\n return `@media (prefers-color-scheme: dark) {\n\t\t\t${k}\n\t\t}`;\n if (o === \"false\")\n return \"\";\n if (o === \"true\")\n return k;\n}\nconst M = {\n 1: '',\n 2: '',\n 3: '',\n 4: '',\n 5: '',\n 6: '',\n 7: ''\n}, $ = '', L = '', f = '', B = '', E = '', Z = '', T = '', P = '';\nfunction I({\n url: n,\n title: o,\n networks: e,\n isAtomic: t\n}) {\n function l(p, h, v) {\n let i = v.replace(/{{url}}/g, n);\n o && (i = i.replace(/{{text}}/g, o));\n const a = document.createElement(\"a\");\n return a.classList.add(\"social-media\", h.toLowerCase()), a.href = encodeURI(i), a.setAttribute(\"aria-label\", `Share on ${h}`), a.setAttribute(\"target\", \"_blank\"), a.setAttribute(\"rel\", \"noopener noreferrer\"), a.setAttribute(\"part\", \"share-link\"), a.innerHTML = `${p} ${t ? \"\" : ` ${h}`}`, a;\n }\n const c = /* @__PURE__ */ new Map([\n [\n \"facebook\",\n {\n html: l(\n E,\n \"Facebook\",\n \"http://www.facebook.com/sharer.php?u={{url}}\"\n )\n }\n ],\n [\n \"x\",\n {\n html: l(\n $,\n \"X\",\n \"https://twitter.com/intent/tweet?url={{url}}&text={{text}}\"\n )\n }\n ],\n [\n \"linkedin\",\n {\n html: l(\n Z,\n \"LinkedIn\",\n \"https://www.linkedin.com/feed/?shareActive=true&text={{text}} {{url}}\"\n )\n }\n ],\n [\n \"email\",\n {\n html: l(\n T,\n \"Email\",\n \"mailto:?subject=Check out {{text}}&body={{text}} {{url}}\"\n )\n }\n ],\n [\n \"whatsapp\",\n {\n html: l(\n P,\n \"WhatsApp\",\n \"https://api.whatsapp.com/send?text={{text}} {{url}}\"\n )\n }\n ],\n [\n \"telegram\",\n {\n html: l(\n B,\n \"Telegram\",\n \"https://t.me/share/url?url={{url}}&text={{text}}\"\n )\n }\n ],\n [\"copy\", { html: l(L, \"copy\", \"\") }]\n ]), r = document.createElement(\"div\");\n r.classList.add(\"popover-inner\"), r.setAttribute(\"part\", \"popover-inner\");\n const C = e.split(\",\").map((p) => {\n const h = p.trim().toLowerCase();\n if (h === \"copy\") {\n const i = document.createElement(\"button\");\n i.classList.add(\"social-media\", \"copy-button\"), i.setAttribute(\"aria-label\", \"Copy link\"), i.setAttribute(\"part\", \"share-link\");\n const a = `${L} Copy link`, w = L;\n return i.innerHTML = t ? w : a, i.addEventListener(\"click\", async (d) => {\n if (!d.currentTarget) {\n console.error(\"Error copying. Element not found\");\n return;\n }\n try {\n await navigator.clipboard.writeText(window.location.href), i.disabled = !0, t ? (console.log(f), i.innerHTML = f) : i.innerHTML = `${f} Copied!`, setTimeout(() => {\n i.disabled = !1, i.innerHTML = t ? w : a;\n }, 5e3);\n } catch {\n console.log(\"[Share Button] We could not copy this\");\n }\n }), i;\n }\n const v = c.get(h);\n return v ? v.html : \"\";\n }), u = document.createElement(\"div\");\n t && u.classList.add(\"atomic\"), u.classList.add(\"social-media-container\"), u.append(...C), r.append(u);\n const g = document.createElement(\"div\");\n g.classList.add(\"triangle-up\"), r.prepend(g);\n const x = document.createElement(\"div\");\n return x.classList.add(\"triangle-down\"), r.append(x), t ? u : r;\n}\nconst z = ':host{font-size:16px;font-size:max(16px,clamp(.875rem,.85rem + .125vw,1rem))}.wrapper{--color-popover-border: hsl(0deg 0 100% / 7.5%);--color-popover-bg: hsl(242deg 9.58% 98%);--color-popover-text: hsl(242deg 55.5% 2.74%);--color-button-bg: hsl(242deg 55.5% 2.74%);--color-button-text: hsl(242deg 9.58% 98%);--border-radius-lg: 8px;--border-radius-md: 5px;--border-radius-sm: 2.5px;--border-radius-pill: 9999px;--padding-button: .375em 1em;--padding-box: 1em;--gap-sm: .5em;--gap-md: .75em;--gap-lg: 2em;--gap-icon: .5rem;--font-sm: max(15px, .875em);--font-lg: max(18px, 1.05em);--box-shadow: inset 0 0 .5px 1px hsl(0deg 0% 100% / 7.5%), 0 0 0 1px hsl(0deg 0% 0% / 5%), 0 .3px .4px hsl(0deg 0% 0% / 2%), 0 .9px 1.5px hsl(0deg 0% 0% / 4.5%), 0 3.5px 6px hsl(0deg 0% 0% / 9%);--filter: drop-shadow(0 0 .5px hsl(0deg 0 100% / 7.5%)) drop-shadow(0 0 1px rgb(0 0 0 / 5%)) drop-shadow(0 .3px .4px rgb(0 0 0 / 2%)) drop-shadow(0 .9px 1.5px rgb(0 0 0 / 4.5%)) drop-shadow(0 3.5px 6px rgb(0 0 0 / 9%));--color-green: green;--aspect-ratio: 1.65 / 1;--triangle: 20px}button{display:inline-flex;gap:var(--gap-icon);align-items:center;justify-content:center;padding:var(--padding-button);font-family:inherit;font-size:1em;line-height:1.5;color:var(--color-button-text);text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-color:var(--color-button-bg);border:none;border-radius:var(--border-radius-pill);transition:filter .2s ease-out}button:hover:not(.copy-button){filter:brightness(1.2)}button svg{display:inline-block;width:1.15em;height:1.15em;fill:currentcolor}[aria-label=Share] svg{margin-inline-end:0;line-height:1}[popover]{opacity:0;transition:opacity .1s ease-in,scale .1s ease-in}:popover-open,.popover-clone{position:absolute;max-width:min(100% - 16px,31.25em);height:fit-content;padding:0;padding-block:var(--triangle);margin:0;font-family:inherit;color:var(--color-popover-text);background-color:transparent;filter:var(--filter);border:none;opacity:1;transition:opacity .1s ease-out,scale .1s ease-out}.popover-clone{position:fixed;width:fit-content;height:fit-content}.popover-inner{position:relative}.social-media-container{display:flex;flex-direction:column;padding:.75rem;background-color:var(--color-popover-bg);border:1px solid var(--color-popover-border);border-radius:var(--border-radius-lg)}:where(.triangle-up,.triangle-down){position:absolute;left:50%;display:none;height:20px;aspect-ratio:var(--aspect-ratio);clip-path:polygon(50% 0%,0 100%,100% 100%);background-color:var(--color-popover-border);translate:-50% -1.5px}.triangle-down{clip-path:polygon(100% 0%,0% 0,50% 100%)}.triangle-down:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;height:var(--triangle);aspect-ratio:var(--aspect-ratio);clip-path:polygon(100% 0%,0% 0,50% 100%);content:\"\";background-color:var(--color-popover-bg);translate:0 -1px}.triangle-up{translate:-50% calc(-100% + 1.5px)}.triangle-up:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;height:var(--triangle);aspect-ratio:var(--aspect-ratio);clip-path:polygon(50% 0%,0 100%,100% 100%);content:\"\";background-color:var(--color-popover-bg);translate:0 1px}.down .triangle-down,.up .triangle-up{display:block}.left-adjust :where(.triangle-down,.triangle-up){left:25%}.right-adjust :where(.triangle-down,.triangle-up){left:75%}.social-media{display:flex;flex:1;gap:var(--gap-md);align-items:center;justify-content:flex-start;min-width:7em;padding:1em .5em;font-size:1em;font-weight:400;line-height:1.25em;color:inherit;text-decoration:none;background:none;border-radius:var(--border-radius-lg)}.social-media:last-child{border-bottom-right-radius:var(--border-radius-lg);border-bottom-left-radius:var(--border-radius-lg)}.social-media svg{display:inline-block;width:max(22px,1.25em);height:max(22px,1.25em);line-height:1.25em;fill:currentcolor;transition:color .3s ease-out}.x:hover svg{color:#1da1f2}.facebook:hover svg{color:#1877f2}.linkedin:hover svg{color:#0a66c2}.telegram:hover svg{color:#229ed9}.whatsapp:hover svg{color:#25d366}:is(.email,.copy-button):hover svg{opacity:.8}.copy-button{background:none}.copy-button:hover{outline:none}.copy-button[disabled]{font-weight:700;color:var(--color-green)}@media (width >=48rem){.social-media{min-width:9em}}.atomic{display:flex;flex-flow:row wrap;gap:var(--gap-sm);justify-content:space-between;background-color:transparent}.atomic .social-media{flex:0;width:min-content;min-width:min-content}.atomic .social-media svg{width:2em;height:2em}', j = \".share-button{display:flex;gap:8px;align-items:center;min-width:60px;height:60px;padding:0 16px;font-size:16px;box-shadow:#0000003d 0 8px 16px -2px}.share-button svg{width:24px;height:24px;margin-inline-end:0}\";\nfunction N(n) {\n const o = \"28px\", e = `position: fixed; bottom: ${o};`;\n if (!n)\n return \"\";\n const t = n.toLowerCase();\n return t === \"left\" || t === \"right\" ? `${e} ${t}: ${o};` : t === \"center\" ? `${e} left: 50%; translate: -50% 0;` : (console.error(\n `[Share Button] It looks you specified an unknown value (${n}) for the fixed attribute. Available options are \"left,\" \"right,\" and \"center\"`\n ), \"\");\n}\nfunction U(n, o) {\n return o.map((e) => {\n const t = n.getAttribute(e);\n return t ? `--${e}: ${t};` : \"\";\n }).join(`\n`);\n}\nconst q = [\n \"color-button-text\",\n \"color-button-bg\",\n \"color-popover-bg\",\n \"color-popover-text\"\n];\nfunction R(n) {\n const o = n.getAttribute(\"position\"), e = N(o), t = U(n, q);\n return `\n.wrapper {\n\t${e}\n\t${t}\n\t${o && j}\n}`;\n}\nclass H extends HTMLElement {\n constructor() {\n super(...arguments);\n m(this, \"isPopoverSupport\", Object.prototype.hasOwnProperty.call(\n HTMLElement.prototype,\n \"popover\"\n ));\n m(this, \"isMobile\", (/android/i.test(navigator.userAgent) || /iPhone|iPad|iPod/i.test(navigator.userAgent)) && navigator.share);\n m(this, \"shadow\", this.attachShadow({ mode: \"open\" }));\n m(this, \"state\", !1);\n }\n connectedCallback() {\n this.render();\n }\n attributeChangedCallback() {\n this.render();\n }\n render() {\n var v, i;\n const e = ((v = document.querySelector(\"title\")) == null ? void 0 : v.textContent) || ((i = document.querySelector(\"h1\")) == null ? void 0 : i.textContent) || \"\", t = R(this), l = this.createIcon(), c = this.hasAttribute(\"atomic\"), r = this.createPopover(e, c), C = c ? \"\" : this.createButton(l), u = A(this), g = document.createElement(\"div\");\n g.setAttribute(\"class\", \"wrapper\"), g.setAttribute(\"part\", \"wrapper\");\n const x = this.isPopoverSupport ? r : \"\";\n g.append(C, x), this.shadow.replaceChildren(g);\n let p = null;\n const h = new CSSStyleSheet();\n if (h.replaceSync(z + t + u), this.shadow.adoptedStyleSheets = [h], !c && C && C.addEventListener(\"click\", (a) => {\n const w = a.currentTarget;\n if (this.isMobile) {\n try {\n navigator.share({\n title: e,\n url: window.location.href\n }), w.removeAttribute(\"popover\");\n } catch (d) {\n console.log(d);\n }\n return;\n }\n if (this.isPopoverSupport) {\n const d = r.cloneNode(!0);\n d.removeAttribute(\"id\"), d.removeAttribute(\"popover\"), g.append(d), d.classList.add(\"up\", \"popover-clone\"), p = d.getBoundingClientRect(), console.log(p), d.remove();\n const s = w.getBoundingClientRect();\n let b = `${s.left + s.width / 2 - p.width / 2}px`;\n console.log(\n s.left,\n s.width,\n p.width,\n b\n ), s.left < 100 && (b = `${s.left + s.width / 2 - p.width * 0.25}px`, r.classList.add(\"left-adjust\")), s.right > window.innerWidth - 100 && (b = `${s.left + s.width / 2 - p.width * 0.75}px`, r.classList.add(\"right-adjust\"));\n const y = window.scrollY;\n r.style.left = b, document.documentElement.clientHeight / 2 > s.y ? (r.style.top = `${y + s.top + s.height}px`, r.classList.remove(\"down\"), r.classList.add(\"up\")) : (r.style.top = `${y + s.top - p.height}px`, r.classList.remove(\"up\"), r.classList.add(\"down\"));\n return;\n }\n navigator.clipboard.writeText(window.location.href), setTimeout(() => {\n this.textContent = \"Copied!\", this.createButton(f);\n }, 1e3);\n }), !c) {\n const a = () => {\n this.shadow.querySelector(\"[popover]\").hidePopover();\n };\n addEventListener(\"resize\", a), addEventListener(\"scroll\", a);\n }\n }\n createIcon() {\n const e = this.getAttribute(\"icon\") || \"1\";\n let t;\n return e === \"false\" ? t = \"\" : [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"].includes(e) ? t = M[e] : (console.log(\n '[Share Button] It looks like you did not specify a valid icon. Please add an icon attribute with a value of \"1,\" \"2,\" \"3,\" \"4,\" \"5,\" \"6,\" or \"7\"'\n ), t = M[1]), t;\n }\n createButton(e) {\n const t = document.createElement(\"button\");\n t.setAttribute(\"part\", \"share-button\"), t.setAttribute(\"class\", \"share-button\");\n const l = this.hasAttribute(\"notext\");\n return this.isPopoverSupport && !this.isMobile && t.setAttribute(\"popovertarget\", \"share-popover\"), this.hasAttribute(\"circle\") || l ? (t.setAttribute(\"aria-label\", \"Share\"), t.setAttribute(\n \"style\",\n \"border-radius: 50%; padding: 0.75rem; line-height: 1;\"\n ), t.innerHTML = e) : t.innerHTML = `${e} ${this.textContent ? \"\" : \"Share\"}`, t;\n }\n createPopover(e, t = !1) {\n const l = this.getAttribute(\"networks\") || \"x, linkedin, facebook, email, whatsapp, telegram, copy\", c = I({\n url: window.location.href,\n title: e,\n shareText: this.textContent ?? \"Share\",\n networks: l,\n isAtomic: t\n });\n if (!t) {\n const r = document.createElement(\"div\");\n return r.setAttribute(\"id\", \"share-popover\"), r.setAttribute(\"part\", \"share-popover\"), r.setAttribute(\"popover\", \"\"), r.append(c), r;\n }\n return c;\n }\n}\nm(H, \"observedAttributes\", [\"dark-mode\"]);\ncustomElements.define(\"share-button\", H);\nexport {\n H as ShareButton\n};\n"],
"mappings": "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",
"names": []
}
diff --git a/docs/.vitepress/cache/deps/@theme_index.js b/docs/.vitepress/cache/deps/@theme_index.js
deleted file mode 100644
index 59495c6..0000000
--- a/docs/.vitepress/cache/deps/@theme_index.js
+++ /dev/null
@@ -1,258 +0,0 @@
-import {
- useMediaQuery
-} from "./chunk-7K4EPTTS.js";
-import {
- computed,
- ref,
- shallowRef,
- watch
-} from "./chunk-JWA4H7QR.js";
-
-// node_modules/vitepress/dist/client/theme-default/index.js
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/fonts.css";
-
-// node_modules/vitepress/dist/client/theme-default/without-fonts.js
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/vars.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/base.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/icons.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/utils.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css";
-import "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css";
-import VPBadge from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
-import Layout from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/Layout.vue";
-import { default as default2 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
-import { default as default3 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue";
-import { default as default4 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue";
-import { default as default5 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue";
-import { default as default6 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue";
-import { default as default7 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue";
-import { default as default8 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue";
-import { default as default9 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue";
-import { default as default10 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue";
-import { default as default11 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue";
-import { default as default12 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue";
-import { default as default13 } from "/Users/ryan/Projects/Personal/share-button/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue";
-
-// node_modules/vitepress/dist/client/theme-default/support/utils.js
-import { withBase } from "vitepress";
-
-// node_modules/vitepress/dist/client/theme-default/composables/data.js
-import { useData as useData$ } from "vitepress";
-var useData = useData$;
-
-// node_modules/vitepress/dist/client/theme-default/support/utils.js
-function ensureStartingSlash(path) {
- return /^\//.test(path) ? path : `/${path}`;
-}
-
-// node_modules/vitepress/dist/client/theme-default/support/sidebar.js
-function getSidebar(_sidebar, path) {
- if (Array.isArray(_sidebar))
- return addBase(_sidebar);
- if (_sidebar == null)
- return [];
- path = ensureStartingSlash(path);
- const dir = Object.keys(_sidebar).sort((a, b) => {
- return b.split("/").length - a.split("/").length;
- }).find((dir2) => {
- return path.startsWith(ensureStartingSlash(dir2));
- });
- const sidebar = dir ? _sidebar[dir] : [];
- return Array.isArray(sidebar) ? addBase(sidebar) : addBase(sidebar.items, sidebar.base);
-}
-function getSidebarGroups(sidebar) {
- const groups = [];
- let lastGroupIndex = 0;
- for (const index in sidebar) {
- const item = sidebar[index];
- if (item.items) {
- lastGroupIndex = groups.push(item);
- continue;
- }
- if (!groups[lastGroupIndex]) {
- groups.push({ items: [] });
- }
- groups[lastGroupIndex].items.push(item);
- }
- return groups;
-}
-function addBase(items, _base) {
- return [...items].map((_item) => {
- const item = { ..._item };
- const base = item.base || _base;
- if (base && item.link)
- item.link = base + item.link;
- if (item.items)
- item.items = addBase(item.items, base);
- return item;
- });
-}
-
-// node_modules/vitepress/dist/client/theme-default/composables/sidebar.js
-function useSidebar() {
- const { frontmatter, page, theme: theme2 } = useData();
- const is960 = useMediaQuery("(min-width: 960px)");
- const isOpen = ref(false);
- const _sidebar = computed(() => {
- const sidebarConfig = theme2.value.sidebar;
- const relativePath = page.value.relativePath;
- return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [];
- });
- const sidebar = ref(_sidebar.value);
- watch(_sidebar, (next, prev) => {
- if (JSON.stringify(next) !== JSON.stringify(prev))
- sidebar.value = _sidebar.value;
- });
- const hasSidebar = computed(() => {
- return frontmatter.value.sidebar !== false && sidebar.value.length > 0 && frontmatter.value.layout !== "home";
- });
- const leftAside = computed(() => {
- if (hasAside)
- return frontmatter.value.aside == null ? theme2.value.aside === "left" : frontmatter.value.aside === "left";
- return false;
- });
- const hasAside = computed(() => {
- if (frontmatter.value.layout === "home")
- return false;
- if (frontmatter.value.aside != null)
- return !!frontmatter.value.aside;
- return theme2.value.aside !== false;
- });
- const isSidebarEnabled = computed(() => hasSidebar.value && is960.value);
- const sidebarGroups = computed(() => {
- return hasSidebar.value ? getSidebarGroups(sidebar.value) : [];
- });
- function open() {
- isOpen.value = true;
- }
- function close() {
- isOpen.value = false;
- }
- function toggle() {
- isOpen.value ? close() : open();
- }
- return {
- isOpen,
- sidebar,
- sidebarGroups,
- hasSidebar,
- hasAside,
- leftAside,
- isSidebarEnabled,
- open,
- close,
- toggle
- };
-}
-
-// node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
-import { onContentUpdated } from "vitepress";
-
-// node_modules/vitepress/dist/client/theme-default/composables/outline.js
-import { getScrollOffset } from "vitepress";
-var resolvedHeaders = [];
-function getHeaders(range) {
- const headers = [
- ...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")
- ].filter((el) => el.id && el.hasChildNodes()).map((el) => {
- const level = Number(el.tagName[1]);
- return {
- element: el,
- title: serializeHeader(el),
- link: "#" + el.id,
- level
- };
- });
- return resolveHeaders(headers, range);
-}
-function serializeHeader(h) {
- let ret = "";
- for (const node of h.childNodes) {
- if (node.nodeType === 1) {
- if (node.classList.contains("VPBadge") || node.classList.contains("header-anchor") || node.classList.contains("ignore-header")) {
- continue;
- }
- ret += node.textContent;
- } else if (node.nodeType === 3) {
- ret += node.textContent;
- }
- }
- return ret.trim();
-}
-function resolveHeaders(headers, range) {
- if (range === false) {
- return [];
- }
- const levelsRange = (typeof range === "object" && !Array.isArray(range) ? range.level : range) || 2;
- const [high, low] = typeof levelsRange === "number" ? [levelsRange, levelsRange] : levelsRange === "deep" ? [2, 6] : levelsRange;
- headers = headers.filter((h) => h.level >= high && h.level <= low);
- resolvedHeaders.length = 0;
- for (const { element, link } of headers) {
- resolvedHeaders.push({ element, link });
- }
- const ret = [];
- outer:
- for (let i = 0; i < headers.length; i++) {
- const cur = headers[i];
- if (i === 0) {
- ret.push(cur);
- } else {
- for (let j = i - 1; j >= 0; j--) {
- const prev = headers[j];
- if (prev.level < cur.level) {
- ;
- (prev.children || (prev.children = [])).push(cur);
- continue outer;
- }
- }
- ret.push(cur);
- }
- }
- return ret;
-}
-
-// node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
-function useLocalNav() {
- const { theme: theme2, frontmatter } = useData();
- const headers = shallowRef([]);
- const hasLocalNav = computed(() => {
- return headers.value.length > 0;
- });
- onContentUpdated(() => {
- headers.value = getHeaders(frontmatter.value.outline ?? theme2.value.outline);
- });
- return {
- headers,
- hasLocalNav
- };
-}
-
-// node_modules/vitepress/dist/client/theme-default/without-fonts.js
-var theme = {
- Layout,
- enhanceApp: ({ app }) => {
- app.component("Badge", VPBadge);
- }
-};
-var without_fonts_default = theme;
-export {
- default2 as VPBadge,
- default4 as VPButton,
- default8 as VPDocAsideSponsors,
- default6 as VPHomeFeatures,
- default5 as VPHomeHero,
- default7 as VPHomeSponsors,
- default3 as VPImage,
- default9 as VPSponsors,
- default13 as VPTeamMembers,
- default10 as VPTeamPage,
- default12 as VPTeamPageSection,
- default11 as VPTeamPageTitle,
- without_fonts_default as default,
- useLocalNav,
- useSidebar
-};
-//# sourceMappingURL=@theme_index.js.map
diff --git a/docs/.vitepress/cache/deps/@theme_index.js.map b/docs/.vitepress/cache/deps/@theme_index.js.map
deleted file mode 100644
index 1dc503b..0000000
--- a/docs/.vitepress/cache/deps/@theme_index.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../../node_modules/vitepress/dist/client/theme-default/index.js", "../../../node_modules/vitepress/dist/client/theme-default/without-fonts.js", "../../../node_modules/vitepress/dist/client/theme-default/support/utils.js", "../../../node_modules/vitepress/dist/client/theme-default/composables/data.js", "../../../node_modules/vitepress/dist/client/theme-default/support/sidebar.js", "../../../node_modules/vitepress/dist/client/theme-default/composables/sidebar.js", "../../../node_modules/vitepress/dist/client/theme-default/composables/local-nav.js", "../../../node_modules/vitepress/dist/client/theme-default/composables/outline.js"],
- "sourcesContent": ["import './styles/fonts.css';\nexport * from './without-fonts';\nexport { default as default } from './without-fonts';\n", "import './styles/vars.css';\nimport './styles/base.css';\nimport './styles/icons.css';\nimport './styles/utils.css';\nimport './styles/components/custom-block.css';\nimport './styles/components/vp-code.css';\nimport './styles/components/vp-code-group.css';\nimport './styles/components/vp-doc.css';\nimport './styles/components/vp-sponsor.css';\nimport VPBadge from './components/VPBadge.vue';\nimport Layout from './Layout.vue';\nexport { default as VPBadge } from './components/VPBadge.vue';\nexport { default as VPImage } from './components/VPImage.vue';\nexport { default as VPButton } from './components/VPButton.vue';\nexport { default as VPHomeHero } from './components/VPHomeHero.vue';\nexport { default as VPHomeFeatures } from './components/VPHomeFeatures.vue';\nexport { default as VPHomeSponsors } from './components/VPHomeSponsors.vue';\nexport { default as VPDocAsideSponsors } from './components/VPDocAsideSponsors.vue';\nexport { default as VPSponsors } from './components/VPSponsors.vue';\nexport { default as VPTeamPage } from './components/VPTeamPage.vue';\nexport { default as VPTeamPageTitle } from './components/VPTeamPageTitle.vue';\nexport { default as VPTeamPageSection } from './components/VPTeamPageSection.vue';\nexport { default as VPTeamMembers } from './components/VPTeamMembers.vue';\nexport { useSidebar } from './composables/sidebar';\nexport { useLocalNav } from './composables/local-nav';\nconst theme = {\n Layout,\n enhanceApp: ({ app }) => {\n app.component('Badge', VPBadge);\n }\n};\nexport default theme;\n", "import { withBase } from 'vitepress';\nimport { useData } from '../composables/data';\nimport { isExternal, treatAsHtml } from '../../shared';\nexport function throttleAndDebounce(fn, delay) {\n let timeoutId;\n let called = false;\n return () => {\n if (timeoutId)\n clearTimeout(timeoutId);\n if (!called) {\n fn();\n (called = true) && setTimeout(() => (called = false), delay);\n }\n else\n timeoutId = setTimeout(fn, delay);\n };\n}\nexport function ensureStartingSlash(path) {\n return /^\\//.test(path) ? path : `/${path}`;\n}\nexport function normalizeLink(url) {\n const { pathname, search, hash, protocol } = new URL(url, 'http://a.com');\n if (isExternal(url) ||\n url.startsWith('#') ||\n !protocol.startsWith('http') ||\n !treatAsHtml(pathname))\n return url;\n const { site } = useData();\n const normalizedPath = pathname.endsWith('/') || pathname.endsWith('.html')\n ? url\n : url.replace(/(?:(^\\.+)\\/)?.*$/, `$1${pathname.replace(/(\\.md)?$/, site.value.cleanUrls ? '' : '.html')}${search}${hash}`);\n return withBase(normalizedPath);\n}\n", "import { useData as useData$ } from 'vitepress';\nexport const useData = useData$;\n", "import { ensureStartingSlash } from './utils';\nimport { isActive } from '../../shared';\n/**\n * Get the `Sidebar` from sidebar option. This method will ensure to get correct\n * sidebar config from `MultiSideBarConfig` with various path combinations such\n * as matching `guide/` and `/guide/`. If no matching config was found, it will\n * return empty array.\n */\nexport function getSidebar(_sidebar, path) {\n if (Array.isArray(_sidebar))\n return addBase(_sidebar);\n if (_sidebar == null)\n return [];\n path = ensureStartingSlash(path);\n const dir = Object.keys(_sidebar)\n .sort((a, b) => {\n return b.split('/').length - a.split('/').length;\n })\n .find((dir) => {\n // make sure the multi sidebar key starts with slash too\n return path.startsWith(ensureStartingSlash(dir));\n });\n const sidebar = dir ? _sidebar[dir] : [];\n return Array.isArray(sidebar)\n ? addBase(sidebar)\n : addBase(sidebar.items, sidebar.base);\n}\n/**\n * Get or generate sidebar group from the given sidebar items.\n */\nexport function getSidebarGroups(sidebar) {\n const groups = [];\n let lastGroupIndex = 0;\n for (const index in sidebar) {\n const item = sidebar[index];\n if (item.items) {\n lastGroupIndex = groups.push(item);\n continue;\n }\n if (!groups[lastGroupIndex]) {\n groups.push({ items: [] });\n }\n groups[lastGroupIndex].items.push(item);\n }\n return groups;\n}\nexport function getFlatSideBarLinks(sidebar) {\n const links = [];\n function recursivelyExtractLinks(items) {\n for (const item of items) {\n if (item.text && item.link) {\n links.push({\n text: item.text,\n link: item.link,\n docFooterText: item.docFooterText\n });\n }\n if (item.items) {\n recursivelyExtractLinks(item.items);\n }\n }\n }\n recursivelyExtractLinks(sidebar);\n return links;\n}\n/**\n * Check if the given sidebar item contains any active link.\n */\nexport function hasActiveLink(path, items) {\n if (Array.isArray(items)) {\n return items.some((item) => hasActiveLink(path, item));\n }\n return isActive(path, items.link)\n ? true\n : items.items\n ? hasActiveLink(path, items.items)\n : false;\n}\nfunction addBase(items, _base) {\n return [...items].map((_item) => {\n const item = { ..._item };\n const base = item.base || _base;\n if (base && item.link)\n item.link = base + item.link;\n if (item.items)\n item.items = addBase(item.items, base);\n return item;\n });\n}\n", "import { useMediaQuery } from '@vueuse/core';\nimport { computed, onMounted, onUnmounted, ref, watch, watchEffect, watchPostEffect } from 'vue';\nimport { isActive } from '../../shared';\nimport { hasActiveLink as containsActiveLink, getSidebar, getSidebarGroups } from '../support/sidebar';\nimport { useData } from './data';\nexport function useSidebar() {\n const { frontmatter, page, theme } = useData();\n const is960 = useMediaQuery('(min-width: 960px)');\n const isOpen = ref(false);\n const _sidebar = computed(() => {\n const sidebarConfig = theme.value.sidebar;\n const relativePath = page.value.relativePath;\n return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [];\n });\n const sidebar = ref(_sidebar.value);\n watch(_sidebar, (next, prev) => {\n if (JSON.stringify(next) !== JSON.stringify(prev))\n sidebar.value = _sidebar.value;\n });\n const hasSidebar = computed(() => {\n return (frontmatter.value.sidebar !== false &&\n sidebar.value.length > 0 &&\n frontmatter.value.layout !== 'home');\n });\n const leftAside = computed(() => {\n if (hasAside)\n return frontmatter.value.aside == null\n ? theme.value.aside === 'left'\n : frontmatter.value.aside === 'left';\n return false;\n });\n const hasAside = computed(() => {\n if (frontmatter.value.layout === 'home')\n return false;\n if (frontmatter.value.aside != null)\n return !!frontmatter.value.aside;\n return theme.value.aside !== false;\n });\n const isSidebarEnabled = computed(() => hasSidebar.value && is960.value);\n const sidebarGroups = computed(() => {\n return hasSidebar.value ? getSidebarGroups(sidebar.value) : [];\n });\n function open() {\n isOpen.value = true;\n }\n function close() {\n isOpen.value = false;\n }\n function toggle() {\n isOpen.value ? close() : open();\n }\n return {\n isOpen,\n sidebar,\n sidebarGroups,\n hasSidebar,\n hasAside,\n leftAside,\n isSidebarEnabled,\n open,\n close,\n toggle\n };\n}\n/**\n * a11y: cache the element that opened the Sidebar (the menu button) then\n * focus that button again when Menu is closed with Escape key.\n */\nexport function useCloseSidebarOnEscape(isOpen, close) {\n let triggerElement;\n watchEffect(() => {\n triggerElement = isOpen.value\n ? document.activeElement\n : undefined;\n });\n onMounted(() => {\n window.addEventListener('keyup', onEscape);\n });\n onUnmounted(() => {\n window.removeEventListener('keyup', onEscape);\n });\n function onEscape(e) {\n if (e.key === 'Escape' && isOpen.value) {\n close();\n triggerElement?.focus();\n }\n }\n}\nexport function useSidebarControl(item) {\n const { page, hash } = useData();\n const collapsed = ref(false);\n const collapsible = computed(() => {\n return item.value.collapsed != null;\n });\n const isLink = computed(() => {\n return !!item.value.link;\n });\n const isActiveLink = ref(false);\n const updateIsActiveLink = () => {\n isActiveLink.value = isActive(page.value.relativePath, item.value.link);\n };\n watch([page, item, hash], updateIsActiveLink);\n onMounted(updateIsActiveLink);\n const hasActiveLink = computed(() => {\n if (isActiveLink.value) {\n return true;\n }\n return item.value.items\n ? containsActiveLink(page.value.relativePath, item.value.items)\n : false;\n });\n const hasChildren = computed(() => {\n return !!(item.value.items && item.value.items.length);\n });\n watchEffect(() => {\n collapsed.value = !!(collapsible.value && item.value.collapsed);\n });\n watchPostEffect(() => {\n ;\n (isActiveLink.value || hasActiveLink.value) && (collapsed.value = false);\n });\n function toggle() {\n if (collapsible.value) {\n collapsed.value = !collapsed.value;\n }\n }\n return {\n collapsed,\n collapsible,\n isLink,\n isActiveLink,\n hasActiveLink,\n hasChildren,\n toggle\n };\n}\n", "import { onContentUpdated } from 'vitepress';\nimport { computed, shallowRef } from 'vue';\nimport { getHeaders } from '../composables/outline';\nimport { useData } from './data';\nexport function useLocalNav() {\n const { theme, frontmatter } = useData();\n const headers = shallowRef([]);\n const hasLocalNav = computed(() => {\n return headers.value.length > 0;\n });\n onContentUpdated(() => {\n headers.value = getHeaders(frontmatter.value.outline ?? theme.value.outline);\n });\n return {\n headers,\n hasLocalNav\n };\n}\n", "import { getScrollOffset } from 'vitepress';\nimport { onMounted, onUnmounted, onUpdated } from 'vue';\nimport { throttleAndDebounce } from '../support/utils';\nimport { useAside } from './aside';\n// cached list of anchor elements from resolveHeaders\nconst resolvedHeaders = [];\nexport function resolveTitle(theme) {\n return ((typeof theme.outline === 'object' &&\n !Array.isArray(theme.outline) &&\n theme.outline.label) ||\n theme.outlineTitle ||\n 'On this page');\n}\nexport function getHeaders(range) {\n const headers = [\n ...document.querySelectorAll('.VPDoc :where(h1,h2,h3,h4,h5,h6)')\n ]\n .filter((el) => el.id && el.hasChildNodes())\n .map((el) => {\n const level = Number(el.tagName[1]);\n return {\n element: el,\n title: serializeHeader(el),\n link: '#' + el.id,\n level\n };\n });\n return resolveHeaders(headers, range);\n}\nfunction serializeHeader(h) {\n let ret = '';\n for (const node of h.childNodes) {\n if (node.nodeType === 1) {\n if (node.classList.contains('VPBadge') ||\n node.classList.contains('header-anchor') ||\n node.classList.contains('ignore-header')) {\n continue;\n }\n ret += node.textContent;\n }\n else if (node.nodeType === 3) {\n ret += node.textContent;\n }\n }\n return ret.trim();\n}\nexport function resolveHeaders(headers, range) {\n if (range === false) {\n return [];\n }\n const levelsRange = (typeof range === 'object' && !Array.isArray(range)\n ? range.level\n : range) || 2;\n const [high, low] = typeof levelsRange === 'number'\n ? [levelsRange, levelsRange]\n : levelsRange === 'deep'\n ? [2, 6]\n : levelsRange;\n headers = headers.filter((h) => h.level >= high && h.level <= low);\n // clear previous caches\n resolvedHeaders.length = 0;\n // update global header list for active link rendering\n for (const { element, link } of headers) {\n resolvedHeaders.push({ element, link });\n }\n const ret = [];\n outer: for (let i = 0; i < headers.length; i++) {\n const cur = headers[i];\n if (i === 0) {\n ret.push(cur);\n }\n else {\n for (let j = i - 1; j >= 0; j--) {\n const prev = headers[j];\n if (prev.level < cur.level) {\n ;\n (prev.children || (prev.children = [])).push(cur);\n continue outer;\n }\n }\n ret.push(cur);\n }\n }\n return ret;\n}\nexport function useActiveAnchor(container, marker) {\n const { isAsideEnabled } = useAside();\n const onScroll = throttleAndDebounce(setActiveLink, 100);\n let prevActiveLink = null;\n onMounted(() => {\n requestAnimationFrame(setActiveLink);\n window.addEventListener('scroll', onScroll);\n });\n onUpdated(() => {\n // sidebar update means a route change\n activateLink(location.hash);\n });\n onUnmounted(() => {\n window.removeEventListener('scroll', onScroll);\n });\n function setActiveLink() {\n if (!isAsideEnabled.value) {\n return;\n }\n const scrollY = window.scrollY;\n const innerHeight = window.innerHeight;\n const offsetHeight = document.body.offsetHeight;\n const isBottom = Math.abs(scrollY + innerHeight - offsetHeight) < 1;\n // resolvedHeaders may be repositioned, hidden or fix positioned\n const headers = resolvedHeaders\n .map(({ element, link }) => ({\n link,\n top: getAbsoluteTop(element)\n }))\n .filter(({ top }) => !Number.isNaN(top))\n .sort((a, b) => a.top - b.top);\n // no headers available for active link\n if (!headers.length) {\n activateLink(null);\n return;\n }\n // page top\n if (scrollY < 1) {\n activateLink(null);\n return;\n }\n // page bottom - highlight last link\n if (isBottom) {\n activateLink(headers[headers.length - 1].link);\n return;\n }\n // find the last header above the top of viewport\n let activeLink = null;\n for (const { link, top } of headers) {\n if (top > scrollY + getScrollOffset() + 4) {\n break;\n }\n activeLink = link;\n }\n activateLink(activeLink);\n }\n function activateLink(hash) {\n if (prevActiveLink) {\n prevActiveLink.classList.remove('active');\n }\n if (hash == null) {\n prevActiveLink = null;\n }\n else {\n prevActiveLink = container.value.querySelector(`a[href=\"${decodeURIComponent(hash)}\"]`);\n }\n const activeLink = prevActiveLink;\n if (activeLink) {\n activeLink.classList.add('active');\n marker.value.style.top = activeLink.offsetTop + 39 + 'px';\n marker.value.style.opacity = '1';\n }\n else {\n marker.value.style.top = '33px';\n marker.value.style.opacity = '0';\n }\n }\n}\nfunction getAbsoluteTop(element) {\n let offsetTop = 0;\n while (element !== document.body) {\n if (element === null) {\n // child element is:\n // - not attached to the DOM (display: none)\n // - set to fixed position (not scrollable)\n // - body or html element (null offsetParent)\n return NaN;\n }\n offsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n return offsetTop;\n}\n"],
- "mappings": "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",
- "names": ["default", "dir", "theme", "theme"]
-}
diff --git a/docs/.vitepress/cache/deps/_metadata.json b/docs/.vitepress/cache/deps/_metadata.json
index 538ffd6..0c91457 100644
--- a/docs/.vitepress/cache/deps/_metadata.json
+++ b/docs/.vitepress/cache/deps/_metadata.json
@@ -1,55 +1,49 @@
{
- "hash": "e71b8f6c",
- "configHash": "3276595c",
+ "hash": "1c5ea000",
+ "configHash": "520c33ad",
"lockfileHash": "f32476c5",
- "browserHash": "d8133560",
+ "browserHash": "a822aa3b",
"optimized": {
"vue": {
"src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
- "fileHash": "62ce1fc5",
+ "fileHash": "9843b331",
"needsInterop": false
},
"vitepress > @vue/devtools-api": {
"src": "../../../node_modules/@vue/devtools-api/dist/index.js",
"file": "vitepress___@vue_devtools-api.js",
- "fileHash": "2e0aa744",
+ "fileHash": "87be02b1",
"needsInterop": false
},
"vitepress > @vueuse/core": {
"src": "../../../node_modules/@vueuse/core/index.mjs",
"file": "vitepress___@vueuse_core.js",
- "fileHash": "78dce1ab",
+ "fileHash": "10da2960",
"needsInterop": false
},
"vitepress > @vueuse/integrations/useFocusTrap": {
"src": "../../../node_modules/@vueuse/integrations/useFocusTrap.mjs",
"file": "vitepress___@vueuse_integrations_useFocusTrap.js",
- "fileHash": "d5bf3ae8",
+ "fileHash": "9c8e424f",
"needsInterop": false
},
"vitepress > mark.js/src/vanilla.js": {
"src": "../../../node_modules/mark.js/src/vanilla.js",
"file": "vitepress___mark__js_src_vanilla__js.js",
- "fileHash": "dc34aa8a",
+ "fileHash": "37d7a4e2",
"needsInterop": false
},
"vitepress > minisearch": {
"src": "../../../node_modules/minisearch/dist/es/index.js",
"file": "vitepress___minisearch.js",
- "fileHash": "f4e9e7e6",
- "needsInterop": false
- },
- "@theme/index": {
- "src": "../../../node_modules/vitepress/dist/client/theme-default/index.js",
- "file": "@theme_index.js",
- "fileHash": "35da2138",
+ "fileHash": "42ef56a1",
"needsInterop": false
},
"@royalfig/share-button": {
"src": "../../../node_modules/@royalfig/share-button/dist/share-button.es.js",
"file": "@royalfig_share-button.js",
- "fileHash": "95ece686",
+ "fileHash": "1656fcd6",
"needsInterop": false
}
},
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
index 219e880..5faf2b4 100644
--- a/docs/.vitepress/config.mts
+++ b/docs/.vitepress/config.mts
@@ -2,73 +2,50 @@ import { defineConfig } from "vitepress";
// https://vitepress.dev/reference/site-config
export default defineConfig({
- base: "/share-button/",
- vue: {
- template: {
- compilerOptions: {
- // treat all tags with a dash as custom elements
- isCustomElement: (tag) => tag.includes("-"),
- },
- },
- },
- cleanUrls: true,
- title: "Share Button ",
- description: "A custom web component for seamless sharing",
- head: [
- [
- "style",
- {},
- ` .sb-container {
- display: flex;
- gap: 1rem;
- justify-content: center;
- flex-wrap: wrap;
- padding: 2rem;
- border: 1px solid var(--vp-c-divider);
- border-radius: 8px;
- }`,
- ],
- ],
- lastUpdated: true,
- themeConfig: {
- // https://vitepress.dev/reference/default-theme-config
- search: { provider: "local" },
- externalLinkIcon: true,
- nav: [
- { text: "Home", link: "/" },
- { text: "Examples", link: "/markdown-examples" },
- ],
+ base: "/share-button/",
+ vue: {
+ template: {
+ compilerOptions: {
+ // treat all tags with a dash as custom elements
+ isCustomElement: (tag) => tag.includes("-"),
+ },
+ },
+ },
+ cleanUrls: true,
+ title: "Share Button ",
+ description: "A custom web component for seamless sharing",
+ head: [["link", { rel: "icon", href: "/share-button/icon.avif", type: "image/avif"}]],
+ lastUpdated: true,
+ themeConfig: {
+ // https://vitepress.dev/reference/default-theme-config
+ search: { provider: "local" },
+ externalLinkIcon: true,
+ nav: [
+ { text: "Home", link: "/" },
+ { text: "Install", link: "/install" },
+ ],
- sidebar: [
- {
- text: "Get started",
- items: [
- { text: "Install", link: "/install" },
- { text: "Basic usage", link: "/basics" },
- ],
- },
- {
- text: "Customization",
- items: [
- { text: "Attributes", link: "customization/attributes" },
- { text: "Dark mode", link: "customization/dark-mode" },
- { text: "Advanced", link: "customization/advanced" },
- ],
- },
- {
- text: "Examples",
- items: [
- { text: "Color", link: "/examples/color" },
- { text: "Text", link: "/examples/text" },
- { text: "Networks", link: "/examples/networks" },
- { text: "Icons only", link: "/examples/atomic" },
- { text: "Floating", link: "/examples/floating" },
- ],
- },
- ],
+ sidebar: [
+ {
+ text: "Get started",
+ items: [
+ { text: "Install", link: "/install" },
+ { text: "Basic usage", link: "/basics" },
+ ],
+ },
+ {
+ text: "Customization",
+ items: [
+ { text: "Attributes", link: "/customization/attributes" },
+ { text: "Dark mode", link: "/customization/dark-mode" },
+ { text: "Advanced", link: "/customization/advanced" },
+ ],
+ },
+
+ ],
- socialLinks: [
- { icon: "github", link: "https://github.com/royalfig/share-button" },
- ],
- },
+ socialLinks: [
+ { icon: "github", link: "https://github.com/royalfig/share-button" },
+ ],
+ },
});
diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css
new file mode 100644
index 0000000..4dbe956
--- /dev/null
+++ b/docs/.vitepress/theme/custom.css
@@ -0,0 +1,52 @@
+.sb-container {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1rem;
+ justify-content: center;
+ padding: 2rem;
+ border: 1px solid var(--vp-c-divider);
+ border-radius: 8px;
+}
+
+.sb-button:is(a, button) {
+ display: inline-block;
+ padding: 0 20px;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 38px;
+ color: var(--vp-button-alt-text);
+ text-align: center;
+ text-decoration: none;
+ white-space: nowrap;
+ background-color: var(--vp-button-alt-bg);
+ border: 1px solid transparent;
+ border-color: var(--vp-button-alt-border);
+ border-radius: 20px;
+ transition: color 0.25s, border-color 0.25s, background-color 0.25s;
+
+ &:hover {
+ color: var(--vp-button-alt-hover-text);
+ background-color: var(--vp-button-alt-hover-bg);
+ border-color: var(--vp-button-alt-hover-border);
+ }
+
+ &::after {
+ display: none !important;
+ }
+}
+
+:root {
+ --vp-button-brand-bg: #f02c69;
+ --vp-c-brand-1: hsl(341deg 87% 56%);
+ --vp-button-brand-hover-bg: hsl(341deg 100% 65%);
+ --vp-c-brand-2: hsl(341deg 100% 65%);
+}
+
+.dark {
+ --vp-button-brand-bg: #ffaec8;
+ --vp-c-brand-1: #ffaec8;
+ --vp-c-brand-2: hsl(341deg 100% 95%);
+ --vp-button-brand-text: #000;
+ --vp-button-brand-hover-bg: hsl(341deg 100% 95%);
+ --vp-button-brand-hover-text: #000;
+}
\ No newline at end of file
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
new file mode 100644
index 0000000..4c2878f
--- /dev/null
+++ b/docs/.vitepress/theme/index.ts
@@ -0,0 +1,7 @@
+// .vitepress/theme/index.js
+import "@royalfig/share-button";
+import DefaultTheme from 'vitepress/theme'
+
+import './custom.css'
+
+export default DefaultTheme;
\ No newline at end of file
diff --git a/docs/api-examples.md b/docs/api-examples.md
deleted file mode 100644
index 6bd8bb5..0000000
--- a/docs/api-examples.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-outline: deep
----
-
-# Runtime API Examples
-
-This page demonstrates usage of some of the runtime APIs provided by VitePress.
-
-The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
-
-```md
-
-
-## Results
-
-### Theme Data
-
{{ theme }}
-
-### Page Data
-
{{ page }}
-
-### Page Frontmatter
-
{{ frontmatter }}
-```
-
-
-
-## Results
-
-### Theme Data
-
{{ theme }}
-
-### Page Data
-
{{ page }}
-
-### Page Frontmatter
-
{{ frontmatter }}
-
-## More
-
-Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).
diff --git a/docs/basics.md b/docs/basics.md
index 4a52cec..d69dda8 100644
--- a/docs/basics.md
+++ b/docs/basics.md
@@ -2,4 +2,29 @@
title: The basics of using the share button
---
-# Basics
+# Basic usage
+
+After [installing](./install.md) the button, add the `share-button` whereever you want it to appear.
+
+```html
+
+```
+
+
+
+
+
+
+## How it works
+
+When on an iOS or Android device, clicking the share button triggers the [native share menu](https://developer.mozilla.org/en-US/docs/Web/API/Web_Share_API), which provides a wide range of sharing opportunities and seamless experience.
+
+When on other platforms, where the share menu isn't as well implemented, the button triggers a popover menu that supports sharing to X, Facebook, LinkedIn, WhatsApp, Telegram, Email, and copying the link (or [any mixture of these you choose](./customization/attributes#networks)).
+
+## Fully customizable
+
+The share button is almost completely customizable via [attributes](./customization/attributes.md) and [CSS](./customization/advanced.md).
+
+::: info Tip 💁
+Use `attributes` for basic changes like customizing the button's color, text, and social media networks. For more advanced changes, use CSS.
+:::
diff --git a/docs/customization/attributes.md b/docs/customization/attributes.md
index dc0fd37..9bea930 100644
--- a/docs/customization/attributes.md
+++ b/docs/customization/attributes.md
@@ -2,9 +2,9 @@
title: Customizing the share button with attributes
---
-Use `attributes` for quick changes to the share button.
+# Attributes
-[[toc]]
+Use `attributes` to make quick changes to the share button.
## Icon
@@ -26,23 +26,145 @@ Change the icon attribute to the icon you want to use:
```
-By default, the button uses icon `1`.
+By default, the button uses icon `1`.
The share button uses the fantastic [Remix Icon Library](https://remixicon.com/).
+## Text
+
+The button defaults to "Share." Customize text by adding it between the tags:
+
+```html
+Compartir
+```
+
+
+Compartir
+
+
+For a button without text, use the `circle` attribute. The attribute makes the button round, omitting the text and keeping the icon centered.
+
+```html
+
+```
+
+
+
+
+
+For a button without an icon, set the `icon` attribute to `false`.
+
+```html
+
+```
+
+
+
+
+
## Color
-There are several
+Use the `color-button` attribute to change the button's color. Any valid CSS value works.
+
+```html
+
+```
+
+
+
+
+
+You can also change the color of the button's text with `color-button-text`:
+```html
+
+```
-
+
+
+
+
+Change the popover color and text like this:
+
+```html
+
+```
+
+
+
+
+
+Here is the full list of color attributes and their default values:
+
+| Attribute | Description | Default |
+| -------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
+| `color-button-bg` | The button background color | hsl(242deg 55.5% 2.74%) |
+| `color-button-text` | The button text color | hsl(242deg 9.58% 98%) |
+| `color-popover-bg` | The popover background color | hsl(242deg 9.58% 98%) |
+| `color-popover-text` | The popover text color | hsl(242deg 55.5% 2.74%) |
+
+## Networks
+
+You can specify which social networks your share button shows as well as their order.
+
+Available networks include:
+
+- X (formerly Twitter)
+- LinkedIn
+- Facebook
+- Email (opens an email client if configured)
+- WhatsApp
+- Telegram
+- Copy (copies the current URL to the user's clipboard)
+
+By default, all options are present, in the order above.
+
+To customize networks and their order, use the `networks` attribute and pass in the desired networks in a comma-separated list. Networks will appear in the same order as entered.
+
+```html
+
+```
+
+
+
+
+
+::: tip Hey there!
+Don't see a network you want to use? File a [GitHub issue](https://github.com/royalfig/share-button/issues) to get it added!
+:::
+
+### Inline share buttons
+
+It's also possible to only display the social media icons and omit the button altogether using the `atomic` attribute:
+
+```html
+
+```
+
+
+
+
+
+
+
+## Sticky share button
+
+By default, the button appears wherever you add it to the page. However, it's also possible to make give it a fixed or sticky position at the bottom of the page.
+
+Use the `position` attribute with `left`, `center`, or `right` to customize the button's position.
+
+```html
+
+```
-
\ No newline at end of file
diff --git a/docs/customization/dark-mode.md b/docs/customization/dark-mode.md
index ff05c71..a0535f3 100644
--- a/docs/customization/dark-mode.md
+++ b/docs/customization/dark-mode.md
@@ -36,41 +36,15 @@ If you site has a dark mode toggle, you can also control the button's dark mode
-
+
-
-
\ No newline at end of file
diff --git a/docs/examples/color.md b/docs/examples/color.md
deleted file mode 100644
index 4ad13ff..0000000
--- a/docs/examples/color.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Color
----
-
-# Color customization
-
-## Change button color
-
-Use the `color-button` attribute to change the button's color. Any valid CSS value works.
-
-```html
-
-```
-
-
-
-
-
-
-You can also change the color of the button's text with `color-button-text`:
-
-```html
-
-```
-
-
-
-
-
-## Change popover color
-
-```html
-
-```
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/examples/icon.md b/docs/examples/icon.md
deleted file mode 100644
index 7f936e5..0000000
--- a/docs/examples/icon.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Icons
----
-
-# Icons
\ No newline at end of file
diff --git a/docs/examples/networks.md b/docs/examples/networks.md
deleted file mode 100644
index ad7162b..0000000
--- a/docs/examples/networks.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Networks
----
-
-# Networks
-
-You can specify which social networks your share button shows as well as their order.
-
-Available networks include:
-- X (formerly Twitter)
-- LinkedIn
-- Facebook
-- Email (opens an email client if configured)
-- WhatsApp
-- Telegram
-- Copy link (copies the current URL to the user's clipboard)
-
-By default, all options will be present, in the order above.
-
-To customize networks and their order, use the `networks` attribute and pass in the desired networks in a comma-separated list. Networks will appear in the same order as entered.
-
-```html
-
-```
-
-
-
-
-
-::: tip Hey there!
-Don't see a network you want to use? File a GitHub issue to get it added!
-:::
-
-
\ No newline at end of file
diff --git a/docs/examples/text.md b/docs/examples/text.md
deleted file mode 100644
index 899422f..0000000
--- a/docs/examples/text.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: Customize text
----
-
-# Customize text
-
-Add text between the `share-button` tags to make your button say whatever you want. The button falls back to "Share" as its default text.
-
-```html
-Share on the web
-```
-
-
-Share on the web
-
-
-## Icon button
-
-To omit text altogether, use the `circle` attribute. The button will render without text and become round to maintain its styling.
-
-
-