@gospore/theme 1.0.120 → 1.0.122
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/theme.cjs.js +1 -1
- package/dist/theme.cjs.js.map +1 -1
- package/dist/theme.css +1 -1
- package/dist/theme.es.js +250 -56
- package/dist/theme.es.js.map +1 -1
- package/dist/theme.umd.js +1 -1
- package/dist/theme.umd.js.map +1 -1
- package/package.json +3 -2
package/dist/theme.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");require("what-input");const a={class:"theme"},
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");require("what-input");const f=require("@gospore/dropdown-menu"),p=["auto","light","dark"],k="gospore-theme-mode",E=60*60*24*365,_="(prefers-color-scheme: dark)";function w(){if(typeof document>"u")return null;const t=b(k);return t&&p.includes(t)?t:null}function D(t){if(typeof document>"u"||!p.includes(t))return;const n=typeof window<"u"?window.location.hostname:"",c=typeof window<"u"?window.location.protocol:"",a=g(n),i=c==="https:",u=["path=/",`max-age=${E}`,"SameSite=Lax"];a&&u.push(`domain=${a}`),i&&u.push("Secure"),document.cookie=[`${encodeURIComponent(k)}=${encodeURIComponent(t)}`,...u].join("; ")}function v(){if(typeof document>"u")return;const t=w()??"auto",n=S(t);document.documentElement.setAttribute("dark-mode",n)}function b(t){if(typeof document>"u"||!document.cookie)return null;const n=`${encodeURIComponent(t)}=`,c=document.cookie.split("; ");for(const a of c)if(a.startsWith(n))return decodeURIComponent(a.slice(n.length));return null}function g(t){if(!t||t==="localhost")return null;if(/^\d+(?:\.\d+){3}$/.test(t))return t;const c=t.split(".");return c.length<=1?null:c.length===2?t:c.slice(-2).join(".")}function S(t){if(t==="dark")return!0;if(t==="light"||typeof window>"u")return!1;try{const n=typeof window.matchMedia=="function"?window.matchMedia(_):null;return n?n.matches:!1}catch{return!1}}const y={class:"theme"},R="(prefers-color-scheme: dark)",O="(prefers-reduced-motion: reduce)",T=200,B=Object.assign({name:"Theme"},{__name:"Theme",props:{mode:{type:String,default:"auto",validator:t=>["auto","light","dark"].includes(t)}},setup(t){const n=t,c=window.matchMedia(R),a=window.matchMedia(O);v();const i=e.ref({darkMode:h(n.mode)});c.addEventListener("change",l),e.watch(()=>n.mode,()=>{u()},{immediate:!0}),e.watch(()=>i.value.darkMode,(o,r)=>{if(r===void 0){m(o);return}s(()=>{m(o)})},{immediate:!0}),e.onBeforeUnmount(()=>{c.removeEventListener("change",l)});function u(){i.value.darkMode=h(n.mode)}function h(o){return o==="dark"?!0:o==="light"?!1:c.matches}function l(o){!o||n.mode!=="auto"||(i.value.darkMode=o.matches)}function m(o){document.documentElement.setAttribute("dark-mode",o)}function s(o){if(a.matches){o();return}const r=document.startViewTransition?.bind(document);if(r){r(()=>{o()});return}o();const d=document.documentElement;typeof d.animate=="function"&&window.requestAnimationFrame(()=>{d.animate([{opacity:.85},{opacity:1}],{duration:T,easing:"ease-in-out"})})}return e.provide("theme",i),(o,r)=>(e.openBlock(),e.createElementBlock("div",y,[e.renderSlot(o.$slots,"default")]))}}),I=(t,n)=>{const c=t.__vccOpts||t;for(const[a,i]of n)c[a]=i;return c},A={__name:"ThemeSwitcher",props:{mode:{type:String,default:"auto",validator:t=>["auto","light","dark"].includes(t)}},emits:["update:mode"],setup(t,{emit:n}){const a=[{value:"auto",label:"System"},{value:"light",label:"Light"},{value:"dark",label:"Dark"}].reduce((o,r)=>(o[r.value]=r.label,o),{}),i=p,u=t,h=n;v();const l=e.ref(!1),m=w()??u.mode,s=e.ref(i.includes(m)?m:"auto");return e.computed(()=>a[s.value]??a.auto),e.watch(()=>u.mode,o=>{i.includes(o)&&o!==s.value&&(s.value=o)}),e.watch(s,o=>{if(!i.includes(o)){s.value="auto";return}l.value=!1,h("update:mode",o),D(o)},{immediate:!0}),(o,r)=>(e.openBlock(),e.createBlock(e.unref(f.DropdownMenu),{open:l.value,"onUpdate:open":r[3]||(r[3]=d=>l.value=d),text:"Theme","aria-label":"Select theme mode"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.DropdownItemGroup),{title:"Theme"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.DropdownItemRadio),{checked:s.value,"onUpdate:checked":r[0]||(r[0]=d=>s.value=d),value:"auto",label:e.unref(a).auto,"aria-label":`${e.unref(a).auto} mode`},null,8,["checked","label","aria-label"]),r[4]||(r[4]=e.createElementVNode("hr",{class:"theme-switcher-divider",role:"separator"},null,-1)),e.createVNode(e.unref(f.DropdownItemRadio),{checked:s.value,"onUpdate:checked":r[1]||(r[1]=d=>s.value=d),value:"light",label:e.unref(a).light,"aria-label":`${e.unref(a).light} mode`},null,8,["checked","label","aria-label"]),e.createVNode(e.unref(f.DropdownItemRadio),{checked:s.value,"onUpdate:checked":r[2]||(r[2]=d=>s.value=d),value:"dark",label:e.unref(a).dark,"aria-label":`${e.unref(a).dark} mode`},null,8,["checked","label","aria-label"])]),_:1})]),_:1},8,["open"]))}},U=I(A,[["__scopeId","data-v-9b82a61c"]]),$="hsl(225, 90%, 16%)",C="#061f80",N="hsl(225, 94%, 35%)",L="#06c",V="hsl(210, 100%, 50%)",Y="hsl(210, 100%, 93%)",x="hsl(225, 100%, 96%)",G="hsl(12, 91%, 46%)",P="hsl(11, 100%, 59%)",j="hsl(40, 100%, 50%)",q="hsl(46, 100%, 50%)",Q="hsl(120, 100%, 25%)",K="#36b37e",F="hsl(0, 0%, 0%)",H="hsl(218, 76%, 15%)",W="hsla(0,0%,10%,.9)",z="hsla(0,0%,10%,.6)",J="hsl(218, 20%, 39%)",X="hsl(218, 17%, 44%)",Z="hsl(218, 14%, 49%)",ee="hsl(218, 14%, 54%)",te="hsl(218, 13%, 59%)",oe="hsl(218, 13%, 64%)",ne="hsl(217, 13%, 69%)",re="hsl(223, 12%, 89%)",ae="hsl(228, 14%, 93%)",ce="hsl(210, 7%, 95%)",se="hsl(220, 16%, 96%)",ie="hsl(210, 25%, 98%)",de="hsl(0, 0%, 98%)",M="hsl(0, 0%, 100%)",ue=N,le=N,me=M;exports.B100=x;exports.B200=Y;exports.B300=V;exports.B400=L;exports.B500=N;exports.B600=C;exports.B900=$;exports.G300=K;exports.G500=Q;exports.N0=M;exports.N10=ie;exports.N100=ee;exports.N1000=F;exports.N20=se;exports.N200=Z;exports.N25=ce;exports.N30=ae;exports.N300=X;exports.N40=re;exports.N400=J;exports.N5=de;exports.N500=z;exports.N70=ne;exports.N80=oe;exports.N800=W;exports.N90=te;exports.N900=H;exports.R300=P;exports.R400=G;exports.Theme=B;exports.ThemeSwitcher=U;exports.Y200=q;exports.Y300=j;exports.primary1=ue;exports.primary2=le;exports.primary3=me;
|
|
2
2
|
//# sourceMappingURL=theme.cjs.js.map
|
package/dist/theme.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.cjs.js","sources":["../src/Theme.vue","../src/colors.js"],"sourcesContent":["<template>\n <div class=\"theme\">\n <slot />\n </div>\n</template>\n\n<script setup>\nimport { provide, ref, watch, onBeforeUnmount } from \"vue\";\nimport \"what-input\";\n\ndefineOptions({\n name: \"Theme\",\n});\nconst theme = ref({\n darkMode: window.matchMedia(\"(prefers-color-scheme: dark)\").matches,\n});\n\nwindow\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", updateDarkMode);\n// Set the color-scheme meta tag.\nvar colorSchemeMeta = document.createElement(\"meta\");\ncolorSchemeMeta.name = \"color-scheme\";\ncolorSchemeMeta.setAttribute(\"content\", \"light dark\");\ndocument.getElementsByTagName(\"head\")[0].appendChild(colorSchemeMeta);\n\nwatch(\n theme.value,\n () => {\n document.documentElement.setAttribute(\n \"dark-mode\",\n theme.value.darkMode,\n );\n },\n { deep: true, immediate: true },\n);\n\nonBeforeUnmount(() => {\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .removeEventListener(\"change\", updateDarkMode);\n});\n\nfunction updateDarkMode(event) {\n if (!event) {\n return;\n }\n theme.value.darkMode = event.matches;\n}\n\nprovide(\"theme\", theme);\n</script>\n\n<style lang=\"less\">\n@import \"index.less\";\n</style>\n","// Blues\nexport const B900 = \"hsl(225, 90%, 16%)\";\n// @go-color-b700 = #000e7f;\nexport const B600 = \"#061f80\";\nexport const B500 = \"hsl(225, 94%, 35%)\";\n// @go-color-b550 = #131ff2;\n// @go-color-b500 = #001dff;\n// @go-color-b400 = #3333ff;\nexport const B400 = \"#06c\";\nexport const B300 = \"hsl(210, 100%, 50%)\";\nexport const B200 = \"hsl(210, 100%, 93%)\";\nexport const B100 = \"hsl(225, 100%, 96%)\";\n\n// Reds\nexport const R400 = \"hsl(12, 91%, 46%)\";\nexport const R300 = \"hsl(11, 100%, 59%)\";\n\n// Yellows\nexport const Y300 = \"hsl(40, 100%, 50%)\";\nexport const Y200 = \"hsl(46, 100%, 50%)\";\n\n// Greens\nexport const G500 = \"hsl(120, 100%, 25%)\";\nexport const G300 = \"#36b37e\";\n\n// Neutrals\nexport const N1000 = \"hsl(0, 0%, 0%)\";\nexport const N900 = \"hsl(218, 76%, 15%)\";\n// @go-color-n900 = hsl(218, 54%, 20%);\nexport const N800 = \"hsla(0,0%,10%,.9)\";\nexport const N500 = \"hsla(0,0%,10%,.6)\";\nexport const N400 = \"hsl(218, 20%, 39%)\";\nexport const N300 = \"hsl(218, 17%, 44%)\";\nexport const N200 = \"hsl(218, 14%, 49%)\";\nexport const N100 = \"hsl(218, 14%, 54%)\";\nexport const N90 = \"hsl(218, 13%, 59%)\";\nexport const N80 = \"hsl(218, 13%, 64%)\";\nexport const N70 = \"hsl(217, 13%, 69%)\";\nexport const N40 = \"hsl(223, 12%, 89%)\";\nexport const N30 = \"hsl(228, 14%, 93%)\";\nexport const N25 = \"hsl(210, 7%, 95%)\";\nexport const N20 = \"hsl(220, 16%, 96%)\";\nexport const N10 = \"hsl(210, 25%, 98%)\";\nexport const N5 = \"hsl(0, 0%, 98%)\";\nexport const N0 = \"hsl(0, 0%, 100%)\";\n\n// Primary color palette\nexport const primary1 = B500;\nexport const primary2 = B500;\nexport const primary3 = N0;\n"],"names":["theme","ref","updateDarkMode","colorSchemeMeta","watch","onBeforeUnmount","event","provide","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","B900","B600","B500","B400","B300","B200","B100","R400","R300","Y300","Y200","G500","G300","N1000","N900","N800","N500","N400","N300","N200","N100","N90","N80","N70","N40","N30","N25","N20","N10","N5","N0","primary1","primary2","primary3"],"mappings":"6MAaA,MAAMA,EAAQC,EAAAA,IAAI,CACd,SAAU,OAAO,WAAW,8BAA8B,EAAE,OAChE,CAAC,EAED,OACK,WAAW,8BAA8B,EACzC,iBAAiB,SAAUC,CAAc,EAE9C,IAAIC,EAAkB,SAAS,cAAc,MAAM,EACnDA,EAAgB,KAAO,eACvBA,EAAgB,aAAa,UAAW,YAAY,EACpD,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,YAAYA,CAAe,EAEpEC,EAAAA,MACIJ,EAAM,MACN,IAAM,CACF,SAAS,gBAAgB,aACrB,YACAA,EAAM,MAAM,QACxB,CACI,EACA,CAAE,KAAM,GAAM,UAAW,EAAI,CACjC,EAEAK,EAAAA,gBAAgB,IAAM,CAClB,OACK,WAAW,8BAA8B,EACzC,oBAAoB,SAAUH,CAAc,CACrD,CAAC,EAED,SAASA,EAAeI,EAAO,CACtBA,IAGLN,EAAM,MAAM,SAAWM,EAAM,QACjC,CAEAC,OAAAA,EAAAA,QAAQ,QAASP,CAAK,UAjDlBQ,YAAA,EAAAC,qBAEM,MAFNC,EAEM,CADFC,aAAQC,EAAA,OAAA,SAAA,QCDHC,EAAO,qBAEPC,EAAO,UACPC,EAAO,qBAIPC,EAAO,OACPC,EAAO,sBACPC,EAAO,sBACPC,EAAO,sBAGPC,EAAO,oBACPC,EAAO,qBAGPC,EAAO,qBACPC,EAAO,qBAGPC,EAAO,sBACPC,EAAO,UAGPC,EAAQ,iBACRC,EAAO,qBAEPC,EAAO,oBACPC,EAAO,oBACPC,EAAO,qBACPC,EAAO,qBACPC,EAAO,qBACPC,EAAO,qBACPC,EAAM,qBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAM,oBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAK,kBACLC,EAAK,mBAGLC,EAAW7B,EACX8B,EAAW9B,EACX+B,EAAWH"}
|
|
1
|
+
{"version":3,"file":"theme.cjs.js","sources":["../src/modeStorage.js","../src/Theme.vue","../src/ThemeSwitcher.vue","../src/colors.js"],"sourcesContent":["const VALID_THEME_MODES = [\"auto\", \"light\", \"dark\"];\nconst STORAGE_KEY = \"gospore-theme-mode\";\nconst ONE_YEAR_IN_SECONDS = 60 * 60 * 24 * 365;\nconst DARK_MODE_QUERY = \"(prefers-color-scheme: dark)\";\n\nexport function readStoredMode() {\n if (typeof document === \"undefined\") {\n return null;\n }\n const stored = getCookie(STORAGE_KEY);\n return stored && VALID_THEME_MODES.includes(stored) ? stored : null;\n}\n\nexport function writeStoredMode(mode) {\n if (typeof document === \"undefined\" || !VALID_THEME_MODES.includes(mode)) {\n return;\n }\n const hostname = typeof window !== \"undefined\" ? window.location.hostname : \"\";\n const protocol = typeof window !== \"undefined\" ? window.location.protocol : \"\";\n const domain = getCookieDomain(hostname);\n const secure = protocol === \"https:\";\n const attributes = [\n \"path=/\",\n `max-age=${ONE_YEAR_IN_SECONDS}`,\n \"SameSite=Lax\",\n ];\n if (domain) {\n attributes.push(`domain=${domain}`);\n }\n if (secure) {\n attributes.push(\"Secure\");\n }\n document.cookie = [\n `${encodeURIComponent(STORAGE_KEY)}=${encodeURIComponent(mode)}`,\n ...attributes,\n ].join(\"; \");\n}\n\nexport function applyStoredModeToDocument() {\n if (typeof document === \"undefined\") {\n return;\n }\n const mode = readStoredMode() ?? \"auto\";\n const darkMode = resolveDarkMode(mode);\n document.documentElement.setAttribute(\"dark-mode\", darkMode);\n}\n\nexport { VALID_THEME_MODES, STORAGE_KEY };\n\nfunction getCookie(name) {\n if (typeof document === \"undefined\" || !document.cookie) {\n return null;\n }\n const encodedName = `${encodeURIComponent(name)}=`;\n const cookies = document.cookie.split(\"; \");\n for (const cookie of cookies) {\n if (cookie.startsWith(encodedName)) {\n return decodeURIComponent(cookie.slice(encodedName.length));\n }\n }\n return null;\n}\n\nfunction getCookieDomain(hostname) {\n if (!hostname || hostname === \"localhost\") {\n return null;\n }\n const isIpAddress = /^\\d+(?:\\.\\d+){3}$/.test(hostname);\n if (isIpAddress) {\n return hostname;\n }\n const parts = hostname.split(\".\");\n if (parts.length <= 1) {\n return null;\n }\n if (parts.length === 2) {\n return hostname;\n }\n return parts.slice(-2).join(\".\");\n}\n\nfunction resolveDarkMode(mode) {\n if (mode === \"dark\") {\n return true;\n }\n if (mode === \"light\") {\n return false;\n }\n if (typeof window === \"undefined\") {\n return false;\n }\n try {\n const mediaQueryList =\n typeof window.matchMedia === \"function\"\n ? window.matchMedia(DARK_MODE_QUERY)\n : null;\n return mediaQueryList ? mediaQueryList.matches : false;\n } catch (error) {\n return false;\n }\n}\n","<template>\n <div class=\"theme\">\n <slot />\n </div>\n</template>\n\n<script setup>\nimport { provide, ref, watch, onBeforeUnmount } from \"vue\";\nimport { applyStoredModeToDocument } from \"./modeStorage\";\nimport \"what-input\";\n\ndefineOptions({\n name: \"Theme\",\n});\nconst props = defineProps({\n mode: {\n type: String,\n default: \"auto\",\n validator: (value) => [\"auto\", \"light\", \"dark\"].includes(value),\n },\n});\n\nconst DARK_MODE_QUERY = \"(prefers-color-scheme: dark)\";\nconst PREFERS_REDUCED_MOTION_QUERY = \"(prefers-reduced-motion: reduce)\";\nconst THEME_TRANSITION_DURATION = 200;\nconst darkModeMedia = window.matchMedia(DARK_MODE_QUERY);\nconst prefersReducedMotionMedia = window.matchMedia(\n PREFERS_REDUCED_MOTION_QUERY,\n);\n\napplyStoredModeToDocument();\n\nconst theme = ref({\n darkMode: resolveDarkMode(props.mode),\n});\n\ndarkModeMedia.addEventListener(\"change\", handleSystemPreferenceChange);\n\nwatch(\n () => props.mode,\n () => {\n syncDarkMode();\n },\n { immediate: true },\n);\n\nwatch(\n () => theme.value.darkMode,\n (darkMode, previousValue) => {\n if (previousValue === undefined) {\n setDocumentDarkModeAttribute(darkMode);\n return;\n }\n withThemeTransition(() => {\n setDocumentDarkModeAttribute(darkMode);\n });\n },\n { immediate: true },\n);\n\nonBeforeUnmount(() => {\n darkModeMedia.removeEventListener(\"change\", handleSystemPreferenceChange);\n});\n\nfunction syncDarkMode() {\n theme.value.darkMode = resolveDarkMode(props.mode);\n}\n\nfunction resolveDarkMode(mode) {\n if (mode === \"dark\") {\n return true;\n }\n if (mode === \"light\") {\n return false;\n }\n return darkModeMedia.matches;\n}\n\nfunction handleSystemPreferenceChange(event) {\n if (!event || props.mode !== \"auto\") {\n return;\n }\n theme.value.darkMode = event.matches;\n}\n\nfunction setDocumentDarkModeAttribute(darkMode) {\n document.documentElement.setAttribute(\"dark-mode\", darkMode);\n}\n\nfunction withThemeTransition(applyTheme) {\n if (prefersReducedMotionMedia.matches) {\n applyTheme();\n return;\n }\n const startViewTransition = document.startViewTransition?.bind(document);\n if (startViewTransition) {\n startViewTransition(() => {\n applyTheme();\n });\n return;\n }\n applyTheme();\n const element = document.documentElement;\n if (typeof element.animate !== \"function\") {\n return;\n }\n window.requestAnimationFrame(() => {\n element.animate(\n [\n { opacity: 0.85 },\n { opacity: 1 },\n ],\n {\n duration: THEME_TRANSITION_DURATION,\n easing: \"ease-in-out\",\n },\n );\n });\n}\n\nprovide(\"theme\", theme);\n</script>\n\n<style lang=\"less\">\n@import \"index.less\";\n</style>\n","<template>\n <DropdownMenu\n v-model:open=\"open\"\n text=\"Theme\"\n aria-label=\"Select theme mode\"\n >\n <DropdownItemGroup title=\"Theme\">\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"auto\"\n :label=\"MODE_LABELS.auto\"\n :aria-label=\"`${MODE_LABELS.auto} mode`\"\n />\n <hr class=\"theme-switcher-divider\" role=\"separator\" />\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"light\"\n :label=\"MODE_LABELS.light\"\n :aria-label=\"`${MODE_LABELS.light} mode`\"\n />\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"dark\"\n :label=\"MODE_LABELS.dark\"\n :aria-label=\"`${MODE_LABELS.dark} mode`\"\n />\n </DropdownItemGroup>\n </DropdownMenu>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from \"vue\";\nimport {\n DropdownMenu,\n DropdownItemGroup,\n DropdownItemRadio,\n} from \"@gospore/dropdown-menu\";\nimport {\n readStoredMode,\n writeStoredMode,\n VALID_THEME_MODES,\n applyStoredModeToDocument,\n} from \"./modeStorage\";\n\nconst MODE_OPTIONS = [\n { value: \"auto\", label: \"System\" },\n { value: \"light\", label: \"Light\" },\n { value: \"dark\", label: \"Dark\" },\n];\nconst MODE_LABELS = MODE_OPTIONS.reduce((map, option) => {\n map[option.value] = option.label;\n return map;\n}, {});\nconst VALID_MODES = VALID_THEME_MODES;\n\nconst props = defineProps({\n mode: {\n type: String,\n default: \"auto\",\n validator: (value) => [\"auto\", \"light\", \"dark\"].includes(value),\n },\n});\nconst emit = defineEmits([\"update:mode\"]);\n\napplyStoredModeToDocument();\n\nconst open = ref(false);\nconst initialMode = readStoredMode() ?? props.mode;\nconst internalMode = ref(\n VALID_MODES.includes(initialMode) ? initialMode : \"auto\",\n);\nconst label = computed(\n () => MODE_LABELS[internalMode.value] ?? MODE_LABELS.auto,\n);\n\nwatch(\n () => props.mode,\n (mode) => {\n if (VALID_MODES.includes(mode) && mode !== internalMode.value) {\n internalMode.value = mode;\n }\n },\n);\n\nwatch(\n internalMode,\n (mode) => {\n if (!VALID_MODES.includes(mode)) {\n internalMode.value = \"auto\";\n return;\n }\n open.value = false;\n emit(\"update:mode\", mode);\n writeStoredMode(mode);\n },\n { immediate: true },\n);\n\n</script>\n\n<style scoped lang=\"less\">\n.theme-switcher-divider {\n margin: 4px 0;\n background-color: var(--go-color-n20);\n}\n\n[dark-mode=\"true\"] {\n .theme-switcher-divider {\n background-color: var(--background-color-secondary-dark);\n }\n}\n</style>\n","// Blues\nexport const B900 = \"hsl(225, 90%, 16%)\";\n// @go-color-b700 = #000e7f;\nexport const B600 = \"#061f80\";\nexport const B500 = \"hsl(225, 94%, 35%)\";\n// @go-color-b550 = #131ff2;\n// @go-color-b500 = #001dff;\n// @go-color-b400 = #3333ff;\nexport const B400 = \"#06c\";\nexport const B300 = \"hsl(210, 100%, 50%)\";\nexport const B200 = \"hsl(210, 100%, 93%)\";\nexport const B100 = \"hsl(225, 100%, 96%)\";\n\n// Reds\nexport const R400 = \"hsl(12, 91%, 46%)\";\nexport const R300 = \"hsl(11, 100%, 59%)\";\n\n// Yellows\nexport const Y300 = \"hsl(40, 100%, 50%)\";\nexport const Y200 = \"hsl(46, 100%, 50%)\";\n\n// Greens\nexport const G500 = \"hsl(120, 100%, 25%)\";\nexport const G300 = \"#36b37e\";\n\n// Neutrals\nexport const N1000 = \"hsl(0, 0%, 0%)\";\nexport const N900 = \"hsl(218, 76%, 15%)\";\n// @go-color-n900 = hsl(218, 54%, 20%);\nexport const N800 = \"hsla(0,0%,10%,.9)\";\nexport const N500 = \"hsla(0,0%,10%,.6)\";\nexport const N400 = \"hsl(218, 20%, 39%)\";\nexport const N300 = \"hsl(218, 17%, 44%)\";\nexport const N200 = \"hsl(218, 14%, 49%)\";\nexport const N100 = \"hsl(218, 14%, 54%)\";\nexport const N90 = \"hsl(218, 13%, 59%)\";\nexport const N80 = \"hsl(218, 13%, 64%)\";\nexport const N70 = \"hsl(217, 13%, 69%)\";\nexport const N40 = \"hsl(223, 12%, 89%)\";\nexport const N30 = \"hsl(228, 14%, 93%)\";\nexport const N25 = \"hsl(210, 7%, 95%)\";\nexport const N20 = \"hsl(220, 16%, 96%)\";\nexport const N10 = \"hsl(210, 25%, 98%)\";\nexport const N5 = \"hsl(0, 0%, 98%)\";\nexport const N0 = \"hsl(0, 0%, 100%)\";\n\n// Primary color palette\nexport const primary1 = B500;\nexport const primary2 = B500;\nexport const primary3 = N0;\n"],"names":["VALID_THEME_MODES","STORAGE_KEY","ONE_YEAR_IN_SECONDS","DARK_MODE_QUERY","readStoredMode","stored","getCookie","writeStoredMode","mode","hostname","protocol","domain","getCookieDomain","secure","attributes","applyStoredModeToDocument","darkMode","resolveDarkMode","name","encodedName","cookies","cookie","parts","mediaQueryList","props","__props","darkModeMedia","prefersReducedMotionMedia","PREFERS_REDUCED_MOTION_QUERY","theme","ref","handleSystemPreferenceChange","watch","syncDarkMode","previousValue","setDocumentDarkModeAttribute","withThemeTransition","onBeforeUnmount","event","applyTheme","startViewTransition","element","THEME_TRANSITION_DURATION","provide","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","MODE_LABELS","map","option","VALID_MODES","emit","__emit","open","initialMode","internalMode","computed","_createBlock","_unref","DropdownMenu","$event","_createVNode","DropdownItemGroup","DropdownItemRadio","_createElementVNode","B900","B600","B500","B400","B300","B200","B100","R400","R300","Y300","Y200","G500","G300","N1000","N900","N800","N500","N400","N300","N200","N100","N90","N80","N70","N40","N30","N25","N20","N10","N5","N0","primary1","primary2","primary3"],"mappings":"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"}
|
package/dist/theme.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--border-radius-regular: 3px;--border-radius-large: 6px;--border-width: var(--border-width-2);--border-width-1: 1px;--border-width-2: 2px;--border-width-3: 3px}:root{--go-color-primary1: var(--go-color-b600);--go-color-primary2: var(--go-color-b500);--go-color-primary3: var(--go-color-n0);--go-color-n0: #ffffff;--go-color-n0-rgb: 255, 255, 255;--go-color-n10: #fafbfc;--go-color-n10-rgb: 250, 251, 252;--go-color-n20: #f4f5f7;--go-color-n30: #ebecf0;--go-color-n40: #dfe1e6;--go-color-n40-rgb: 223, 225, 230;--go-color-n50: #c1c7d0;--go-color-n60: #b3bac5;--go-color-n70: #a5adba;--go-color-n80: #97a0af;--go-color-n90: #8993a4;--go-color-n100: #7a869a;--go-color-n100-rgb: 122, 134, 154;--go-color-n200: #6b778c;--go-color-n300: #5e6c84;--go-color-n400: #505f79;--go-color-n500: #42526e;--go-color-n600: #344563;--go-color-n700: #253858;--go-color-n700-rgb: 37, 56, 88;--go-color-n800: #172b4d;--go-color-n900: #091e42;--go-color-n900-rgb: 9, 30, 66;--go-color-n1000: #000000;--go-color-n1000-rgb: 0, 0, 0;--go-color-dn0: #0d1424;--go-color-dn0-rgb: 13, 20, 36;--go-color-dn10: #0e1624;--go-color-dn20: #121a29;--go-color-dn30: #1b2638;--go-color-dn40: #202b3d;--go-color-dn50: #283447;--go-color-dn60: #313d52;--go-color-dn70: #3b475c;--go-color-dn70-rgb: 61, 72, 92;--go-color-dn80: #455166;--go-color-dn90: #56637a;--go-color-dn100: #67758f;--go-color-dn200: #7988a3;--go-color-dn200-rgb: 121, 136, 163;--go-color-dn300: #8c9cb8;--go-color-dn300-rgb: 140, 156, 184;--go-color-dn400: #9fb0cc;--go-color-dn400-rgb: 159, 176, 204;--go-color-dn500: #abbbd6;--go-color-dn500-rgb: 171, 187, 214;--go-color-dn600: #b8c7e0;--go-color-dn600-rgb: 184, 199, 224;--go-color-dn700: #ced9eb;--go-color-dn800: #dce5f5;--go-color-dn900: #e6edfa;--go-color-dn900-rgb: 230, 237, 250;--go-color-r50: #ffebe6;--go-color-r75: #ffbdad;--go-color-r100: #ff8f73;--go-color-r200: #ff7452;--go-color-r300: #ff5630;--go-color-r300-rgb: 255, 86, 48;--go-color-r400: #de350b;--go-color-r500: #bf2600;--go-color-y50: #fffae6;--go-color-y75: #fff0b3;--go-color-y100: #ffe380;--go-color-y200: #ffc400;--go-color-y300: #ffab00;--go-color-y300-rgb: 255, 171, 0;--go-color-y400: #ff991f;--go-color-y500: #ff8b00;--go-color-g50: #e3fcef;--go-color-g75: #abf5d1;--go-color-g100: #79f2c0;--go-color-g200: #57d9a3;--go-color-g300: #36b37e;--go-color-g300-rgb: 54, 179, 126;--go-color-g400: #00875a;--go-color-g500: #006644;--go-color-b50: #deebff;--go-color-b75: #b3d4ff;--go-color-b75-rgb: 179, 212, 255;--go-color-b100: #4c9aff;--go-color-b100-rgb: 76, 154, 255;--go-color-b200: #2684ff;--go-color-b200-rgb: 38, 132, 255;--go-color-b300: #0065ff;--go-color-b400: #0052cc;--go-color-b400-rgb: 0, 82, 204;--go-color-b500: #0747a6;--go-color-b600: #061f80;--go-color-p50: #eae6ff;--go-color-p75: #c0b6f2;--go-color-p100: #998dd9;--go-color-p100-rgb: 153, 141, 217;--go-color-p200: #8777d9;--go-color-p300: #6554c0;--go-color-p300-rgb: 101, 84, 192;--go-color-p400: #5243aa;--go-color-p500: #403294;--go-color-t50: #e6fcff;--go-color-t75: #b3f5ff;--go-color-t100: #79e2f2;--go-color-t200: #00c7e6;--go-color-t200-rgb: 0, 199, 230;--go-color-t300: #00b8d9;--go-color-t300-rgb: 0, 184, 217;--go-color-t400: #00a3bf;--go-color-t500: #008da6;--go-color-primary-light: var(--go-color-b400);--go-color-primary-dark: var(--go-color-b100);--go-color-blue-light: var(--go-color-b400);--go-color-blue-light-rgb: var(--go-color-b400-rgb);--go-color-blue-dark: var(--go-color-b100);--go-color-blue-dark-rgb: var(--go-color-b100-rgb);--go-color-teal-light: var(--go-color-t300);--go-color-teal-light-rgb: var(--go-color-t300-rgb);--go-color-teal-dark: var(--go-color-t200);--go-color-teal-dark-rgb: var(--go-color-t200-rgb);--go-color-purple-light: var(--go-color-p300);--go-color-purple-light-rgb: var(--go-color-p300-rgb);--go-color-purple-dark: var(--go-color-p100);--go-color-purple-dark-rgb: var(--go-color-p100-rgb);--go-color-red-light: var(--go-color-r300);--go-color-red-light-rgb: var(--go-color-r300-rgb);--go-color-red-dark: var(--go-color-r300);--go-color-red-dark-rgb: var(--go-color-r300-rgb);--go-color-yellow-light: var(--go-color-y300);--go-color-yellow-light-rgb: var(--go-color-y300-rgb);--go-color-yellow-dark: var(--go-color-y300);--go-color-yellow-dark-rgb: var(--go-color-y300-rgb);--go-color-green-light: var(--go-color-g300);--go-color-green-light-rgb: var(--go-color-g300-rgb);--go-color-green-dark: var(--go-color-g300);--go-color-green-dark-rgb: var(--go-color-g300-rgb);--background-color-light: var(--go-color-n0);--background-color-dark: var(--go-color-dn0);--background-color-secondary-light: var(--go-color-n20);--background-color-secondary-dark: var(--go-color-dn30);--text-color-light: var(--go-color-n1000);--text-color-dark: var(--go-color-n0);--placeholder-color-light: var(--go-color-n100);--placeholder-color-dark: var(--go-color-dn200);--heading-color-default-light: var(--go-color-n1000);--heading-color-default-dark: var(--go-color-n0);--heading-color-subtle-light: var(--go-color-n200);--heading-color-subtle-dark: var(--go-color-dn300);--link-color-default-light: var(--go-color-b400);--link-color-default-dark: var(--go-color-b100);--link-color-hover-light: var(--go-color-b300);--link-color-hover-dark: var(--go-color-b200);--link-color-active-light: var(--go-color-b500);--link-color-active-dark: var(--go-color-b100);--focus-outline-color: var(--go-color-b100);--table-border-color-light: var(--go-color-n40);--table-border-color-dark: var(--go-color-dn70);--table-hover-color-light: var(--go-color-n20);--table-hover-color-dark: var(--go-color-dn50);--horizontal-rule-color-light: var(--go-color-n40);--horizontal-rule-color-dark: var(--go-color-dn70);--code-color-light: var(--go-color-n40);--code-color-dark: var(--go-color-dn70);--code-block-color-light: var(--background-color-secondary-light);--code-block-color-dark: var(--background-color-secondary-dark);--blockquote-border-color-light: var(--go-color-n40);--blockquote-border-color-dark: var(--go-color-dn70)}:root{--elevation-raised-light: rgba(var(--go-color-n900-rgb), .25) 0px 1px 1px, rgba(var(--go-color-n900-rgb), .31) 0px 0px 1px;--elevation-raised-dark: rgba(var(--go-color-n1000-rgb), 0) 0px 0px 0px, rgba(var(--go-color-n1000-rgb), .5) 0px 1px 1px, rgba(var(--go-color-n1000-rgb), .5) 0px 0px 1px;--elevation-overlay-light: rgba(var(--go-color-n900-rgb), .15) 0px 8px 12px 0px, rgba(var(--go-color-n900-rgb), .31) 0px 0px 1px 0px;--elevation-overlay-dark: var(--go-color-dn70) 0px 0px 0px 1px, rgba(var(--go-color-dn0-rgb), .36) 0px 8px 12px 0px, rgba(var(--go-color-dn0-rgb), .5) 0px 0px 1px 1px;--elevation-avatar-light: inset 0 0 10px rgba(var(--go-color-n900-rgb), 5%);--elevation-avatar-dark: inset 0 0 10px rgba(var(--go-color-dn600-rgb), 5%)}:root{--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-code: ui-monospace, SFMono-Medium, "SF Mono", "Segoe UI Mono", "Roboto Mono", "Ubuntu Mono", Menlo, monospace;--font-style-normal: normal;--font-style-italic: italic;--font-size-default: var(--font-size-14);--font-size-12: 12px;--font-size-13: 13px;--font-size-14: 14px;--font-size-15: 15px;--font-size-16: 16px;--font-size-18: 18px;--font-size-20: 20px;--font-size-24: 24px;--font-size-30: 30px;--font-size-36: 36px;--font-size-48: 48px;--font-size-60: 60px;--font-size-72: 72px;--font-weight-thin: 100;--font-weight-light: 300;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--font-weight-black: 900}:root{--layer-card: 100;--layer-navigation: 200;--layer-dialog: 300;--layer-overlay: 400;--layer-modal: 500;--layer-flag: 600;--layer-spotlight: 700;--layer-tooltip: 800}:root{--size-0: 0px;--size-4: 4px;--size-8: 8px;--size-12: 12px;--size-16: 16px;--size-24: 24px;--size-32: 32px;--size-40: 40px;--size-48: 48px;--size-64: 64px;--size-96: 96px;--size-128: 128px;--size-192: 192px;--size-256: 256px;--size-384: 384px;--size-512: 512px;--size-640: 640px;--size-768: 768px;--size-896: 896px;--size-1024: 1024px;--size-1152: 1152px;--size-1280: 1280px;--size-1408: 1408px;--size-1536: 1536px;--size-1664: 1664px;--size-1792: 1792px;--size-1920: 1920px}:root{--transition-100ms-ease-out: .1s ease-out;--transition-100ms-ease-in-out: .1s ease-in-out;--transition-200ms-ease-in: .2s ease-in;--transition-200ms-ease-in-out: .2s ease-in-out}html,body,p,div,h1,h2,h3,h4,h5,h6,ul,ol,dl,img,pre,form,fieldset{margin:var(--size-0);padding:var(--size-0)}img,fieldset{border:var(--size-0)}body,html,#app{height:100%;width:100%}body{background-color:var(--background-color-light);color:var(--text-color-light);font-family:var(--font-family);font-size:var(--font-size-default);font-style:var(--font-style-normal);font-weight:var(--font-weight-regular);line-height:23px}input,select,textarea,button{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:25px}p,ul,ol,dl,h1,h2,h3,h4,h5,h6,blockquote,pre,form,table{margin:calc(var(--grid-size) * 2px) var(--size-0) var(--size-0) var(--size-0)}a{color:var(--link-color-default-light);text-decoration:var(--link-text-decoration-default);border-radius:var(--border-width);cursor:pointer;transition:color var(--transition-100ms-ease-in-out),background-color var(--transition-100ms-ease-in-out)}a:hover{color:var(--link-color-hover-light);text-decoration:var(--link-text-decoration-hover)}a:active{color:var(--link-color-active-light)}h1{font-size:2.07142857em;font-style:var(--font-style-normal);line-height:1.10344828em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] h1{color:var(--heading-color-default-dark)}h1:first-child{margin-top:var(--size-0)}h2{font-size:1.71428571em;font-style:var(--font-style-normal);line-height:1.16666667em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] h2{color:var(--heading-color-default-dark)}h2:first-child{margin-top:var(--size-0)}h3{font-size:1.42857143em;font-style:var(--font-style-normal);line-height:1.2em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.008em;margin-top:calc(var(--grid-size) * 3.5px)}[dark-mode=true] h3{color:var(--heading-color-default-dark)}h3:first-child{margin-top:var(--size-0)}h4{font-size:1.14285714em;font-style:var(--font-style-normal);line-height:1.25em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.006em;margin-top:calc(var(--grid-size) * 3px)}[dark-mode=true] h4{color:var(--heading-color-default-dark)}h4:first-child{margin-top:var(--size-0)}h5{font-size:1em;font-style:var(--font-style-normal);line-height:1.14285714em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.003em;margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] h5{color:var(--heading-color-default-dark)}h5:first-child{margin-top:var(--size-0)}h6{font-size:.85714286em;font-style:var(--font-style-normal);line-height:1.33333333em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);margin-top:calc(var(--grid-size) * 2.5px);text-transform:uppercase}[dark-mode=true] h6{color:var(--heading-color-default-dark)}h6:first-child{margin-top:var(--size-0)}ul,ol,dl{padding-left:calc(var(--grid-size) * 5px)}dd,dd+dt,li+li{margin-top:calc(var(--grid-size) / 2px)}ul ul:not(:first-child),ol ul:not(:first-child),ul ol:not(:first-child),ol ol:not(:first-child){margin-top:calc(var(--grid-size) / 2px)}p:first-child,ul:first-child,ol:first-child,dl:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,blockquote:first-child,pre:first-child,form:first-child,table:first-child{margin-top:var(--size-0)}:focus{outline:none;box-shadow:var(--size-0) var(--size-0) var(--size-0) var(--focus-outline-width) var(--focus-outline-color)}[data-whatintent=mouse] :focus{outline:none;box-shadow:none}table{border-collapse:collapse;width:100%}thead,tbody,tfoot{border-bottom:var(--border-width) solid var(--table-border-color-light)}td,th{border:none;padding:calc((var(--grid-size) / 2) * 1px) calc(var(--grid-size) * 1px);text-align:left}th{font-size:.78571429em;font-style:var(--font-style-normal);line-height:1.45454545em;color:var(--heading-color-subtle-light);font-weight:var(--font-weight-bold);margin-top:calc(var(--grid-size) * 2px);line-height:inherit}[dark-mode=true] th{color:var(--heading-color-subtle-dark)}th:first-child{margin-top:var(--size-0)}td:first-child,th:first-child{padding-left:var(--size-0)}td:last-child,th:last-child{padding-right:var(--size-0)}tr{transition:background .1s ease-out,box-shadow .15s cubic-bezier(.47,.03,.49,1.38)}tbody tr:hover{background-color:var(--table-hover-color-light)}hr{background-color:var(--horizontal-rule-color-light);height:2px;border-style:none;margin:var(--size-40) var(--size-0)}pre{font-family:var(--font-family-code);white-space:pre-wrap;padding:var(--size-24) var(--size-32);border-radius:var(--border-radius-regular);background:var(--code-block-color-light);font-size:var(--font-size-12);line-height:23px;overflow-x:auto}code{font-family:var(--font-family-code);padding:var(--size-0);font-size:var(--font-size-12)}p code{font-family:var(--font-family-code);padding:var(--size-0) var(--size-8);border-radius:var(--border-radius-regular);background:var(--code-color-light);font-size:var(--font-size-14)}blockquote{white-space:pre-wrap;border-left:var(--border-width-3) solid var(--blockquote-border-color-light);padding-left:var(--size-8);font-style:var(--font-style-italic)}caption{font-size:1.42857143em;font-style:var(--font-style-normal);line-height:1.2em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.008em;margin-top:calc(var(--grid-size) * 3.5px);margin-bottom:var(--size-8);text-align:left}[dark-mode=true] caption{color:var(--heading-color-default-dark)}caption:first-child{margin-top:var(--size-0)}[dark-mode=true] body{background-color:var(--background-color-dark);color:var(--text-color-dark)}[dark-mode=true] h1,[dark-mode=true] h2,[dark-mode=true] h3,[dark-mode=true] h4,[dark-mode=true] h5{color:var(--heading-color-default-dark)}[dark-mode=true] h6{color:var(--heading-color-subtle-dark)}[dark-mode=true] a{color:var(--link-color-default-dark)}[dark-mode=true] a:hover{color:var(--link-color-hover-dark)}[dark-mode=true] a:active{color:var(--link-color-active-dark)}[dark-mode=true] hr{background-color:var(--horizontal-rule-color-dark)}[dark-mode=true] pre{background:var(--code-block-color-dark)}[dark-mode=true] p code{background:var(--code-color-dark)}[dark-mode=true] blockquote{border-left:var(--border-width-3) solid var(--blockquote-border-color-dark)}[dark-mode=true] thead,[dark-mode=true] tbody,[dark-mode=true] tfoot{border-bottom:var(--border-width) solid var(--table-border-color-dark)}[dark-mode=true] tbody tr:hover{background-color:var(--table-hover-color-dark)}:root{--grid-size: 8;--focus-outline-width: 2px;--link-text-decoration-default: none;--link-text-decoration-hover: underline}.heading-900{font-size:2.85714286em;font-style:var(--font-style-normal);line-height:1.14285714em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 6.5px)}[dark-mode=true] .heading-900{color:var(--heading-color-default-dark)}.heading-900:first-child{margin-top:var(--size-0)}.heading-800{font-size:2.07142857em;font-style:var(--font-style-normal);line-height:1.10344828em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] .heading-800{color:var(--heading-color-default-dark)}.heading-800:first-child{margin-top:var(--size-0)}.heading-700{font-size:1.71428571em;font-style:var(--font-style-normal);line-height:1.16666667em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] .heading-700{color:var(--heading-color-default-dark)}.heading-700:first-child{margin-top:var(--size-0)}.heading-600{font-size:1.42857143em;font-style:var(--font-style-normal);line-height:1.2em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.008em;margin-top:calc(var(--grid-size) * 3.5px)}[dark-mode=true] .heading-600{color:var(--heading-color-default-dark)}.heading-600:first-child{margin-top:var(--size-0)}.heading-500{font-size:1.14285714em;font-style:var(--font-style-normal);line-height:1.25em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.006em;margin-top:calc(var(--grid-size) * 3px)}[dark-mode=true] .heading-500{color:var(--heading-color-default-dark)}.heading-500:first-child{margin-top:var(--size-0)}.heading-400{font-size:1em;font-style:var(--font-style-normal);line-height:1.14285714em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.003em;margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] .heading-400{color:var(--heading-color-default-dark)}.heading-400:first-child{margin-top:var(--size-0)}.heading-300{font-size:.85714286em;font-style:var(--font-style-normal);line-height:1.33333333em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);margin-top:calc(var(--grid-size) * 2.5px);text-transform:uppercase}[dark-mode=true] .heading-300{color:var(--heading-color-default-dark)}.heading-300:first-child{margin-top:var(--size-0)}.heading-200{font-size:.85714286em;font-style:var(--font-style-normal);line-height:1.33333333em;color:var(--heading-color-subtle-light);font-weight:var(--font-weight-semibold);margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] .heading-200{color:var(--heading-color-subtle-dark)}.heading-200:first-child{margin-top:var(--size-0)}.heading-100{font-size:.78571429em;font-style:var(--font-style-normal);line-height:1.45454545em;color:var(--heading-color-subtle-light);font-weight:var(--font-weight-bold);margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] .heading-100{color:var(--heading-color-subtle-dark)}.heading-100:first-child{margin-top:var(--size-0)}.text-intro{font-size:1.42857143em;font-style:var(--font-style-normal);font-weight:var(--font-weight-regular);line-height:32px}.text-caption{font-size:var(--font-size-12);font-weight:var(--font-weight-regular);display:block;line-height:18px;color:var(--placeholder-color-light)}.text-caption-bold{font-size:var(--font-size-12);font-weight:var(--font-weight-semibold);color:var(--text-color-light)}.text-prominent{font-size:var(--font-size-default);font-weight:var(--font-weight-semibold);color:var(--text-color-light)}.error{color:var(--go-color-red-light)}[dark-mode=true] .text-caption{color:var(--placeholder-color-dark)}[dark-mode=true] .text-caption-bold,[dark-mode=true] .text-prominent{color:var(--text-color-dark)}[dark-mode=true] .error{color:var(--go-color-red-dark)}
|
|
1
|
+
:root{--border-radius-regular: 3px;--border-radius-large: 6px;--border-width: var(--border-width-2);--border-width-1: 1px;--border-width-2: 2px;--border-width-3: 3px}:root{--go-color-primary1: var(--go-color-b600);--go-color-primary2: var(--go-color-b500);--go-color-primary3: var(--go-color-n0);--go-color-n0: #ffffff;--go-color-n0-rgb: 255, 255, 255;--go-color-n10: #fafbfc;--go-color-n10-rgb: 250, 251, 252;--go-color-n20: #f4f5f7;--go-color-n30: #ebecf0;--go-color-n40: #dfe1e6;--go-color-n40-rgb: 223, 225, 230;--go-color-n50: #c1c7d0;--go-color-n60: #b3bac5;--go-color-n70: #a5adba;--go-color-n80: #97a0af;--go-color-n90: #8993a4;--go-color-n100: #7a869a;--go-color-n100-rgb: 122, 134, 154;--go-color-n200: #6b778c;--go-color-n300: #5e6c84;--go-color-n400: #505f79;--go-color-n500: #42526e;--go-color-n600: #344563;--go-color-n700: #253858;--go-color-n700-rgb: 37, 56, 88;--go-color-n800: #172b4d;--go-color-n900: #091e42;--go-color-n900-rgb: 9, 30, 66;--go-color-n1000: #000000;--go-color-n1000-rgb: 0, 0, 0;--go-color-dn0: #0d1424;--go-color-dn0-rgb: 13, 20, 36;--go-color-dn10: #0e1624;--go-color-dn20: #121a29;--go-color-dn30: #1b2638;--go-color-dn40: #202b3d;--go-color-dn50: #283447;--go-color-dn60: #313d52;--go-color-dn70: #3b475c;--go-color-dn70-rgb: 61, 72, 92;--go-color-dn80: #455166;--go-color-dn90: #56637a;--go-color-dn100: #67758f;--go-color-dn200: #7988a3;--go-color-dn200-rgb: 121, 136, 163;--go-color-dn300: #8c9cb8;--go-color-dn300-rgb: 140, 156, 184;--go-color-dn400: #9fb0cc;--go-color-dn400-rgb: 159, 176, 204;--go-color-dn500: #abbbd6;--go-color-dn500-rgb: 171, 187, 214;--go-color-dn600: #b8c7e0;--go-color-dn600-rgb: 184, 199, 224;--go-color-dn700: #ced9eb;--go-color-dn800: #dce5f5;--go-color-dn900: #e6edfa;--go-color-dn900-rgb: 230, 237, 250;--go-color-r50: #ffebe6;--go-color-r75: #ffbdad;--go-color-r100: #ff8f73;--go-color-r200: #ff7452;--go-color-r300: #ff5630;--go-color-r300-rgb: 255, 86, 48;--go-color-r400: #de350b;--go-color-r500: #bf2600;--go-color-y50: #fffae6;--go-color-y75: #fff0b3;--go-color-y100: #ffe380;--go-color-y200: #ffc400;--go-color-y300: #ffab00;--go-color-y300-rgb: 255, 171, 0;--go-color-y400: #ff991f;--go-color-y500: #ff8b00;--go-color-g50: #e3fcef;--go-color-g75: #abf5d1;--go-color-g100: #79f2c0;--go-color-g200: #57d9a3;--go-color-g300: #36b37e;--go-color-g300-rgb: 54, 179, 126;--go-color-g400: #00875a;--go-color-g500: #006644;--go-color-b50: #deebff;--go-color-b75: #b3d4ff;--go-color-b75-rgb: 179, 212, 255;--go-color-b100: #4c9aff;--go-color-b100-rgb: 76, 154, 255;--go-color-b200: #2684ff;--go-color-b200-rgb: 38, 132, 255;--go-color-b300: #0065ff;--go-color-b400: #0052cc;--go-color-b400-rgb: 0, 82, 204;--go-color-b500: #0747a6;--go-color-b600: #061f80;--go-color-p50: #eae6ff;--go-color-p75: #c0b6f2;--go-color-p100: #998dd9;--go-color-p100-rgb: 153, 141, 217;--go-color-p200: #8777d9;--go-color-p300: #6554c0;--go-color-p300-rgb: 101, 84, 192;--go-color-p400: #5243aa;--go-color-p500: #403294;--go-color-t50: #e6fcff;--go-color-t75: #b3f5ff;--go-color-t100: #79e2f2;--go-color-t200: #00c7e6;--go-color-t200-rgb: 0, 199, 230;--go-color-t300: #00b8d9;--go-color-t300-rgb: 0, 184, 217;--go-color-t400: #00a3bf;--go-color-t500: #008da6;--go-color-primary-light: var(--go-color-b400);--go-color-primary-dark: var(--go-color-b100);--go-color-blue-light: var(--go-color-b400);--go-color-blue-light-rgb: var(--go-color-b400-rgb);--go-color-blue-dark: var(--go-color-b100);--go-color-blue-dark-rgb: var(--go-color-b100-rgb);--go-color-teal-light: var(--go-color-t300);--go-color-teal-light-rgb: var(--go-color-t300-rgb);--go-color-teal-dark: var(--go-color-t200);--go-color-teal-dark-rgb: var(--go-color-t200-rgb);--go-color-purple-light: var(--go-color-p300);--go-color-purple-light-rgb: var(--go-color-p300-rgb);--go-color-purple-dark: var(--go-color-p100);--go-color-purple-dark-rgb: var(--go-color-p100-rgb);--go-color-red-light: var(--go-color-r300);--go-color-red-light-rgb: var(--go-color-r300-rgb);--go-color-red-dark: var(--go-color-r300);--go-color-red-dark-rgb: var(--go-color-r300-rgb);--go-color-yellow-light: var(--go-color-y300);--go-color-yellow-light-rgb: var(--go-color-y300-rgb);--go-color-yellow-dark: var(--go-color-y300);--go-color-yellow-dark-rgb: var(--go-color-y300-rgb);--go-color-green-light: var(--go-color-g300);--go-color-green-light-rgb: var(--go-color-g300-rgb);--go-color-green-dark: var(--go-color-g300);--go-color-green-dark-rgb: var(--go-color-g300-rgb);--background-color-light: var(--go-color-n0);--background-color-dark: var(--go-color-dn0);--background-color-secondary-light: var(--go-color-n20);--background-color-secondary-dark: var(--go-color-dn30);--text-color-light: var(--go-color-n1000);--text-color-dark: var(--go-color-n0);--placeholder-color-light: var(--go-color-n100);--placeholder-color-dark: var(--go-color-dn200);--heading-color-default-light: var(--go-color-n1000);--heading-color-default-dark: var(--go-color-n0);--heading-color-subtle-light: var(--go-color-n200);--heading-color-subtle-dark: var(--go-color-dn300);--link-color-default-light: var(--go-color-b400);--link-color-default-dark: var(--go-color-b100);--link-color-hover-light: var(--go-color-b300);--link-color-hover-dark: var(--go-color-b200);--link-color-active-light: var(--go-color-b500);--link-color-active-dark: var(--go-color-b100);--focus-outline-color: var(--go-color-b100);--table-border-color-light: var(--go-color-n40);--table-border-color-dark: var(--go-color-dn70);--table-hover-color-light: var(--go-color-n20);--table-hover-color-dark: var(--go-color-dn50);--horizontal-rule-color-light: var(--go-color-n40);--horizontal-rule-color-dark: var(--go-color-dn70);--code-color-light: var(--go-color-n40);--code-color-dark: var(--go-color-dn70);--code-block-color-light: var(--background-color-secondary-light);--code-block-color-dark: var(--background-color-secondary-dark);--blockquote-border-color-light: var(--go-color-n40);--blockquote-border-color-dark: var(--go-color-dn70)}:root{--elevation-raised-light: rgba(var(--go-color-n900-rgb), .25) 0px 1px 1px, rgba(var(--go-color-n900-rgb), .31) 0px 0px 1px;--elevation-raised-dark: rgba(var(--go-color-n1000-rgb), 0) 0px 0px 0px, rgba(var(--go-color-n1000-rgb), .5) 0px 1px 1px, rgba(var(--go-color-n1000-rgb), .5) 0px 0px 1px;--elevation-overlay-light: rgba(var(--go-color-n900-rgb), .15) 0px 8px 12px 0px, rgba(var(--go-color-n900-rgb), .31) 0px 0px 1px 0px;--elevation-overlay-dark: var(--go-color-dn70) 0px 0px 0px 1px, rgba(var(--go-color-dn0-rgb), .36) 0px 8px 12px 0px, rgba(var(--go-color-dn0-rgb), .5) 0px 0px 1px 1px;--elevation-avatar-light: inset 0 0 10px rgba(var(--go-color-n900-rgb), 5%);--elevation-avatar-dark: inset 0 0 10px rgba(var(--go-color-dn600-rgb), 5%)}:root{--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-code: ui-monospace, SFMono-Medium, "SF Mono", "Segoe UI Mono", "Roboto Mono", "Ubuntu Mono", Menlo, monospace;--font-style-normal: normal;--font-style-italic: italic;--font-size-default: var(--font-size-14);--font-size-12: 12px;--font-size-13: 13px;--font-size-14: 14px;--font-size-15: 15px;--font-size-16: 16px;--font-size-18: 18px;--font-size-20: 20px;--font-size-24: 24px;--font-size-30: 30px;--font-size-36: 36px;--font-size-48: 48px;--font-size-60: 60px;--font-size-72: 72px;--font-weight-thin: 100;--font-weight-light: 300;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--font-weight-black: 900}:root{--layer-card: 100;--layer-navigation: 200;--layer-dialog: 300;--layer-overlay: 400;--layer-modal: 500;--layer-flag: 600;--layer-spotlight: 700;--layer-tooltip: 800}:root{--size-0: 0px;--size-4: 4px;--size-8: 8px;--size-12: 12px;--size-16: 16px;--size-24: 24px;--size-32: 32px;--size-40: 40px;--size-48: 48px;--size-64: 64px;--size-96: 96px;--size-128: 128px;--size-192: 192px;--size-256: 256px;--size-384: 384px;--size-512: 512px;--size-640: 640px;--size-768: 768px;--size-896: 896px;--size-1024: 1024px;--size-1152: 1152px;--size-1280: 1280px;--size-1408: 1408px;--size-1536: 1536px;--size-1664: 1664px;--size-1792: 1792px;--size-1920: 1920px}:root{--transition-100ms-ease-out: .1s ease-out;--transition-100ms-ease-in-out: .1s ease-in-out;--transition-200ms-ease-in: .2s ease-in;--transition-200ms-ease-in-out: .2s ease-in-out}html,body,p,div,h1,h2,h3,h4,h5,h6,ul,ol,dl,img,pre,form,fieldset{margin:var(--size-0);padding:var(--size-0)}img,fieldset{border:var(--size-0)}body,html,#app{height:100%;width:100%}body{background-color:var(--background-color-light);color:var(--text-color-light);font-family:var(--font-family);font-size:var(--font-size-default);font-style:var(--font-style-normal);font-weight:var(--font-weight-regular);line-height:23px}input,select,textarea,button{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:25px}p,ul,ol,dl,h1,h2,h3,h4,h5,h6,blockquote,pre,form,table{margin:calc(var(--grid-size) * 2px) var(--size-0) var(--size-0) var(--size-0)}a{color:var(--link-color-default-light);text-decoration:var(--link-text-decoration-default);border-radius:var(--border-width);cursor:pointer;transition:color var(--transition-100ms-ease-in-out),background-color var(--transition-100ms-ease-in-out)}a:hover{color:var(--link-color-hover-light);text-decoration:var(--link-text-decoration-hover)}a:active{color:var(--link-color-active-light)}h1{font-size:2.07142857em;font-style:var(--font-style-normal);line-height:1.10344828em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] h1{color:var(--heading-color-default-dark)}h1:first-child{margin-top:var(--size-0)}h2{font-size:1.71428571em;font-style:var(--font-style-normal);line-height:1.16666667em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] h2{color:var(--heading-color-default-dark)}h2:first-child{margin-top:var(--size-0)}h3{font-size:1.42857143em;font-style:var(--font-style-normal);line-height:1.2em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.008em;margin-top:calc(var(--grid-size) * 3.5px)}[dark-mode=true] h3{color:var(--heading-color-default-dark)}h3:first-child{margin-top:var(--size-0)}h4{font-size:1.14285714em;font-style:var(--font-style-normal);line-height:1.25em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.006em;margin-top:calc(var(--grid-size) * 3px)}[dark-mode=true] h4{color:var(--heading-color-default-dark)}h4:first-child{margin-top:var(--size-0)}h5{font-size:1em;font-style:var(--font-style-normal);line-height:1.14285714em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.003em;margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] h5{color:var(--heading-color-default-dark)}h5:first-child{margin-top:var(--size-0)}h6{font-size:.85714286em;font-style:var(--font-style-normal);line-height:1.33333333em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);margin-top:calc(var(--grid-size) * 2.5px);text-transform:uppercase}[dark-mode=true] h6{color:var(--heading-color-default-dark)}h6:first-child{margin-top:var(--size-0)}ul,ol,dl{padding-left:calc(var(--grid-size) * 5px)}dd,dd+dt,li+li{margin-top:calc(var(--grid-size) / 2px)}ul ul:not(:first-child),ol ul:not(:first-child),ul ol:not(:first-child),ol ol:not(:first-child){margin-top:calc(var(--grid-size) / 2px)}p:first-child,ul:first-child,ol:first-child,dl:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,blockquote:first-child,pre:first-child,form:first-child,table:first-child{margin-top:var(--size-0)}:focus{outline:none;box-shadow:var(--size-0) var(--size-0) var(--size-0) var(--focus-outline-width) var(--focus-outline-color)}[data-whatintent=mouse] :focus{outline:none;box-shadow:none}table{border-collapse:collapse;width:100%}thead,tbody,tfoot{border-bottom:var(--border-width) solid var(--table-border-color-light)}td,th{border:none;padding:calc((var(--grid-size) / 2) * 1px) calc(var(--grid-size) * 1px);text-align:left}th{font-size:.78571429em;font-style:var(--font-style-normal);line-height:1.45454545em;color:var(--heading-color-subtle-light);font-weight:var(--font-weight-bold);margin-top:calc(var(--grid-size) * 2px);line-height:inherit}[dark-mode=true] th{color:var(--heading-color-subtle-dark)}th:first-child{margin-top:var(--size-0)}td:first-child,th:first-child{padding-left:var(--size-0)}td:last-child,th:last-child{padding-right:var(--size-0)}tr{transition:background .1s ease-out,box-shadow .15s cubic-bezier(.47,.03,.49,1.38)}tbody tr:hover{background-color:var(--table-hover-color-light)}hr{background-color:var(--horizontal-rule-color-light);height:2px;border-style:none;margin:var(--size-40) var(--size-0)}pre{font-family:var(--font-family-code);white-space:pre-wrap;padding:var(--size-24) var(--size-32);border-radius:var(--border-radius-regular);background:var(--code-block-color-light);font-size:var(--font-size-12);line-height:23px;overflow-x:auto}code{font-family:var(--font-family-code);padding:var(--size-0);font-size:var(--font-size-12)}p code{font-family:var(--font-family-code);padding:var(--size-0) var(--size-8);border-radius:var(--border-radius-regular);background:var(--code-color-light);font-size:var(--font-size-14)}blockquote{white-space:pre-wrap;border-left:var(--border-width-3) solid var(--blockquote-border-color-light);padding-left:var(--size-8);font-style:var(--font-style-italic)}caption{font-size:1.42857143em;font-style:var(--font-style-normal);line-height:1.2em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.008em;margin-top:calc(var(--grid-size) * 3.5px);margin-bottom:var(--size-8);text-align:left}[dark-mode=true] caption{color:var(--heading-color-default-dark)}caption:first-child{margin-top:var(--size-0)}[dark-mode=true] body{background-color:var(--background-color-dark);color:var(--text-color-dark)}[dark-mode=true] h1,[dark-mode=true] h2,[dark-mode=true] h3,[dark-mode=true] h4,[dark-mode=true] h5{color:var(--heading-color-default-dark)}[dark-mode=true] h6{color:var(--heading-color-subtle-dark)}[dark-mode=true] a{color:var(--link-color-default-dark)}[dark-mode=true] a:hover{color:var(--link-color-hover-dark)}[dark-mode=true] a:active{color:var(--link-color-active-dark)}[dark-mode=true] hr{background-color:var(--horizontal-rule-color-dark)}[dark-mode=true] pre{background:var(--code-block-color-dark)}[dark-mode=true] p code{background:var(--code-color-dark)}[dark-mode=true] blockquote{border-left:var(--border-width-3) solid var(--blockquote-border-color-dark)}[dark-mode=true] thead,[dark-mode=true] tbody,[dark-mode=true] tfoot{border-bottom:var(--border-width) solid var(--table-border-color-dark)}[dark-mode=true] tbody tr:hover{background-color:var(--table-hover-color-dark)}:root{--grid-size: 8;--focus-outline-width: 2px;--link-text-decoration-default: none;--link-text-decoration-hover: underline}.heading-900{font-size:2.85714286em;font-style:var(--font-style-normal);line-height:1.14285714em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 6.5px)}[dark-mode=true] .heading-900{color:var(--heading-color-default-dark)}.heading-900:first-child{margin-top:var(--size-0)}.heading-800{font-size:2.07142857em;font-style:var(--font-style-normal);line-height:1.10344828em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] .heading-800{color:var(--heading-color-default-dark)}.heading-800:first-child{margin-top:var(--size-0)}.heading-700{font-size:1.71428571em;font-style:var(--font-style-normal);line-height:1.16666667em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.01em;margin-top:calc(var(--grid-size) * 5px)}[dark-mode=true] .heading-700{color:var(--heading-color-default-dark)}.heading-700:first-child{margin-top:var(--size-0)}.heading-600{font-size:1.42857143em;font-style:var(--font-style-normal);line-height:1.2em;color:var(--heading-color-default-light);font-weight:var(--font-weight-medium);letter-spacing:-.008em;margin-top:calc(var(--grid-size) * 3.5px)}[dark-mode=true] .heading-600{color:var(--heading-color-default-dark)}.heading-600:first-child{margin-top:var(--size-0)}.heading-500{font-size:1.14285714em;font-style:var(--font-style-normal);line-height:1.25em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.006em;margin-top:calc(var(--grid-size) * 3px)}[dark-mode=true] .heading-500{color:var(--heading-color-default-dark)}.heading-500:first-child{margin-top:var(--size-0)}.heading-400{font-size:1em;font-style:var(--font-style-normal);line-height:1.14285714em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);letter-spacing:-.003em;margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] .heading-400{color:var(--heading-color-default-dark)}.heading-400:first-child{margin-top:var(--size-0)}.heading-300{font-size:.85714286em;font-style:var(--font-style-normal);line-height:1.33333333em;color:var(--heading-color-default-light);font-weight:var(--font-weight-semibold);margin-top:calc(var(--grid-size) * 2.5px);text-transform:uppercase}[dark-mode=true] .heading-300{color:var(--heading-color-default-dark)}.heading-300:first-child{margin-top:var(--size-0)}.heading-200{font-size:.85714286em;font-style:var(--font-style-normal);line-height:1.33333333em;color:var(--heading-color-subtle-light);font-weight:var(--font-weight-semibold);margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] .heading-200{color:var(--heading-color-subtle-dark)}.heading-200:first-child{margin-top:var(--size-0)}.heading-100{font-size:.78571429em;font-style:var(--font-style-normal);line-height:1.45454545em;color:var(--heading-color-subtle-light);font-weight:var(--font-weight-bold);margin-top:calc(var(--grid-size) * 2px)}[dark-mode=true] .heading-100{color:var(--heading-color-subtle-dark)}.heading-100:first-child{margin-top:var(--size-0)}.text-intro{font-size:1.42857143em;font-style:var(--font-style-normal);font-weight:var(--font-weight-regular);line-height:32px}.text-caption{font-size:var(--font-size-12);font-weight:var(--font-weight-regular);display:block;line-height:18px;color:var(--placeholder-color-light)}.text-caption-bold{font-size:var(--font-size-12);font-weight:var(--font-weight-semibold);color:var(--text-color-light)}.text-prominent{font-size:var(--font-size-default);font-weight:var(--font-weight-semibold);color:var(--text-color-light)}.error{color:var(--go-color-red-light)}[dark-mode=true] .text-caption{color:var(--placeholder-color-dark)}[dark-mode=true] .text-caption-bold,[dark-mode=true] .text-prominent{color:var(--text-color-dark)}[dark-mode=true] .error{color:var(--go-color-red-dark)}.theme-switcher-divider[data-v-9b82a61c]{margin:4px 0;background-color:var(--go-color-n20)}[dark-mode=true] .theme-switcher-divider[data-v-9b82a61c]{background-color:var(--background-color-secondary-dark)}
|
package/dist/theme.es.js
CHANGED
|
@@ -1,70 +1,264 @@
|
|
|
1
|
-
import { ref as
|
|
1
|
+
import { ref as v, watch as p, onBeforeUnmount as g, provide as S, createElementBlock as y, openBlock as E, renderSlot as O, computed as R, createBlock as T, unref as l, withCtx as M, createVNode as h, createElementVNode as I } from "vue";
|
|
2
2
|
import "what-input";
|
|
3
|
-
|
|
3
|
+
import { DropdownMenu as A, DropdownItemGroup as U, DropdownItemRadio as k } from "@gospore/dropdown-menu";
|
|
4
|
+
const w = ["auto", "light", "dark"], N = "gospore-theme-mode", B = 60 * 60 * 24 * 365, $ = "(prefers-color-scheme: dark)";
|
|
5
|
+
function _() {
|
|
6
|
+
if (typeof document > "u")
|
|
7
|
+
return null;
|
|
8
|
+
const e = L(N);
|
|
9
|
+
return e && w.includes(e) ? e : null;
|
|
10
|
+
}
|
|
11
|
+
function C(e) {
|
|
12
|
+
if (typeof document > "u" || !w.includes(e))
|
|
13
|
+
return;
|
|
14
|
+
const o = typeof window < "u" ? window.location.hostname : "", s = typeof window < "u" ? window.location.protocol : "", r = x(o), c = s === "https:", d = [
|
|
15
|
+
"path=/",
|
|
16
|
+
`max-age=${B}`,
|
|
17
|
+
"SameSite=Lax"
|
|
18
|
+
];
|
|
19
|
+
r && d.push(`domain=${r}`), c && d.push("Secure"), document.cookie = [
|
|
20
|
+
`${encodeURIComponent(N)}=${encodeURIComponent(e)}`,
|
|
21
|
+
...d
|
|
22
|
+
].join("; ");
|
|
23
|
+
}
|
|
24
|
+
function D() {
|
|
25
|
+
if (typeof document > "u")
|
|
26
|
+
return;
|
|
27
|
+
const e = _() ?? "auto", o = Y(e);
|
|
28
|
+
document.documentElement.setAttribute("dark-mode", o);
|
|
29
|
+
}
|
|
30
|
+
function L(e) {
|
|
31
|
+
if (typeof document > "u" || !document.cookie)
|
|
32
|
+
return null;
|
|
33
|
+
const o = `${encodeURIComponent(e)}=`, s = document.cookie.split("; ");
|
|
34
|
+
for (const r of s)
|
|
35
|
+
if (r.startsWith(o))
|
|
36
|
+
return decodeURIComponent(r.slice(o.length));
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function x(e) {
|
|
40
|
+
if (!e || e === "localhost")
|
|
41
|
+
return null;
|
|
42
|
+
if (/^\d+(?:\.\d+){3}$/.test(e))
|
|
43
|
+
return e;
|
|
44
|
+
const s = e.split(".");
|
|
45
|
+
return s.length <= 1 ? null : s.length === 2 ? e : s.slice(-2).join(".");
|
|
46
|
+
}
|
|
47
|
+
function Y(e) {
|
|
48
|
+
if (e === "dark")
|
|
49
|
+
return !0;
|
|
50
|
+
if (e === "light" || typeof window > "u")
|
|
51
|
+
return !1;
|
|
52
|
+
try {
|
|
53
|
+
const o = typeof window.matchMedia == "function" ? window.matchMedia($) : null;
|
|
54
|
+
return o ? o.matches : !1;
|
|
55
|
+
} catch {
|
|
56
|
+
return !1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const V = { class: "theme" }, G = "(prefers-color-scheme: dark)", P = "(prefers-reduced-motion: reduce)", Q = 200, z = /* @__PURE__ */ Object.assign({
|
|
4
60
|
name: "Theme"
|
|
5
61
|
}, {
|
|
6
62
|
__name: "Theme",
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
63
|
+
props: {
|
|
64
|
+
mode: {
|
|
65
|
+
type: String,
|
|
66
|
+
default: "auto",
|
|
67
|
+
validator: (e) => ["auto", "light", "dark"].includes(e)
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
setup(e) {
|
|
71
|
+
const o = e, s = window.matchMedia(G), r = window.matchMedia(
|
|
72
|
+
P
|
|
73
|
+
);
|
|
74
|
+
D();
|
|
75
|
+
const c = v({
|
|
76
|
+
darkMode: f(o.mode)
|
|
10
77
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
s.name = "color-scheme", s.setAttribute("content", "light dark"), document.getElementsByTagName("head")[0].appendChild(s), h(
|
|
14
|
-
e.value,
|
|
78
|
+
s.addEventListener("change", u), p(
|
|
79
|
+
() => o.mode,
|
|
15
80
|
() => {
|
|
16
|
-
|
|
17
|
-
"dark-mode",
|
|
18
|
-
e.value.darkMode
|
|
19
|
-
);
|
|
81
|
+
d();
|
|
20
82
|
},
|
|
21
|
-
{
|
|
22
|
-
),
|
|
23
|
-
|
|
83
|
+
{ immediate: !0 }
|
|
84
|
+
), p(
|
|
85
|
+
() => c.value.darkMode,
|
|
86
|
+
(t, n) => {
|
|
87
|
+
if (n === void 0) {
|
|
88
|
+
m(t);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
a(() => {
|
|
92
|
+
m(t);
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
{ immediate: !0 }
|
|
96
|
+
), g(() => {
|
|
97
|
+
s.removeEventListener("change", u);
|
|
24
98
|
});
|
|
25
|
-
function
|
|
26
|
-
|
|
99
|
+
function d() {
|
|
100
|
+
c.value.darkMode = f(o.mode);
|
|
101
|
+
}
|
|
102
|
+
function f(t) {
|
|
103
|
+
return t === "dark" ? !0 : t === "light" ? !1 : s.matches;
|
|
104
|
+
}
|
|
105
|
+
function u(t) {
|
|
106
|
+
!t || o.mode !== "auto" || (c.value.darkMode = t.matches);
|
|
27
107
|
}
|
|
28
|
-
|
|
29
|
-
|
|
108
|
+
function m(t) {
|
|
109
|
+
document.documentElement.setAttribute("dark-mode", t);
|
|
110
|
+
}
|
|
111
|
+
function a(t) {
|
|
112
|
+
if (r.matches) {
|
|
113
|
+
t();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const n = document.startViewTransition?.bind(document);
|
|
117
|
+
if (n) {
|
|
118
|
+
n(() => {
|
|
119
|
+
t();
|
|
120
|
+
});
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
t();
|
|
124
|
+
const i = document.documentElement;
|
|
125
|
+
typeof i.animate == "function" && window.requestAnimationFrame(() => {
|
|
126
|
+
i.animate(
|
|
127
|
+
[
|
|
128
|
+
{ opacity: 0.85 },
|
|
129
|
+
{ opacity: 1 }
|
|
130
|
+
],
|
|
131
|
+
{
|
|
132
|
+
duration: Q,
|
|
133
|
+
easing: "ease-in-out"
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return S("theme", c), (t, n) => (E(), y("div", V, [
|
|
139
|
+
O(t.$slots, "default")
|
|
30
140
|
]));
|
|
31
141
|
}
|
|
32
|
-
}),
|
|
142
|
+
}), j = (e, o) => {
|
|
143
|
+
const s = e.__vccOpts || e;
|
|
144
|
+
for (const [r, c] of o)
|
|
145
|
+
s[r] = c;
|
|
146
|
+
return s;
|
|
147
|
+
}, K = {
|
|
148
|
+
__name: "ThemeSwitcher",
|
|
149
|
+
props: {
|
|
150
|
+
mode: {
|
|
151
|
+
type: String,
|
|
152
|
+
default: "auto",
|
|
153
|
+
validator: (e) => ["auto", "light", "dark"].includes(e)
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
emits: ["update:mode"],
|
|
157
|
+
setup(e, { emit: o }) {
|
|
158
|
+
const r = [
|
|
159
|
+
{ value: "auto", label: "System" },
|
|
160
|
+
{ value: "light", label: "Light" },
|
|
161
|
+
{ value: "dark", label: "Dark" }
|
|
162
|
+
].reduce((t, n) => (t[n.value] = n.label, t), {}), c = w, d = e, f = o;
|
|
163
|
+
D();
|
|
164
|
+
const u = v(!1), m = _() ?? d.mode, a = v(
|
|
165
|
+
c.includes(m) ? m : "auto"
|
|
166
|
+
);
|
|
167
|
+
return R(
|
|
168
|
+
() => r[a.value] ?? r.auto
|
|
169
|
+
), p(
|
|
170
|
+
() => d.mode,
|
|
171
|
+
(t) => {
|
|
172
|
+
c.includes(t) && t !== a.value && (a.value = t);
|
|
173
|
+
}
|
|
174
|
+
), p(
|
|
175
|
+
a,
|
|
176
|
+
(t) => {
|
|
177
|
+
if (!c.includes(t)) {
|
|
178
|
+
a.value = "auto";
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
u.value = !1, f("update:mode", t), C(t);
|
|
182
|
+
},
|
|
183
|
+
{ immediate: !0 }
|
|
184
|
+
), (t, n) => (E(), T(l(A), {
|
|
185
|
+
open: u.value,
|
|
186
|
+
"onUpdate:open": n[3] || (n[3] = (i) => u.value = i),
|
|
187
|
+
text: "Theme",
|
|
188
|
+
"aria-label": "Select theme mode"
|
|
189
|
+
}, {
|
|
190
|
+
default: M(() => [
|
|
191
|
+
h(l(U), { title: "Theme" }, {
|
|
192
|
+
default: M(() => [
|
|
193
|
+
h(l(k), {
|
|
194
|
+
checked: a.value,
|
|
195
|
+
"onUpdate:checked": n[0] || (n[0] = (i) => a.value = i),
|
|
196
|
+
value: "auto",
|
|
197
|
+
label: l(r).auto,
|
|
198
|
+
"aria-label": `${l(r).auto} mode`
|
|
199
|
+
}, null, 8, ["checked", "label", "aria-label"]),
|
|
200
|
+
n[4] || (n[4] = I("hr", {
|
|
201
|
+
class: "theme-switcher-divider",
|
|
202
|
+
role: "separator"
|
|
203
|
+
}, null, -1)),
|
|
204
|
+
h(l(k), {
|
|
205
|
+
checked: a.value,
|
|
206
|
+
"onUpdate:checked": n[1] || (n[1] = (i) => a.value = i),
|
|
207
|
+
value: "light",
|
|
208
|
+
label: l(r).light,
|
|
209
|
+
"aria-label": `${l(r).light} mode`
|
|
210
|
+
}, null, 8, ["checked", "label", "aria-label"]),
|
|
211
|
+
h(l(k), {
|
|
212
|
+
checked: a.value,
|
|
213
|
+
"onUpdate:checked": n[2] || (n[2] = (i) => a.value = i),
|
|
214
|
+
value: "dark",
|
|
215
|
+
label: l(r).dark,
|
|
216
|
+
"aria-label": `${l(r).dark} mode`
|
|
217
|
+
}, null, 8, ["checked", "label", "aria-label"])
|
|
218
|
+
]),
|
|
219
|
+
_: 1
|
|
220
|
+
})
|
|
221
|
+
]),
|
|
222
|
+
_: 1
|
|
223
|
+
}, 8, ["open"]));
|
|
224
|
+
}
|
|
225
|
+
}, J = /* @__PURE__ */ j(K, [["__scopeId", "data-v-9b82a61c"]]), X = "hsl(225, 90%, 16%)", Z = "#061f80", b = "hsl(225, 94%, 35%)", ee = "#06c", te = "hsl(210, 100%, 50%)", oe = "hsl(210, 100%, 93%)", ne = "hsl(225, 100%, 96%)", re = "hsl(12, 91%, 46%)", se = "hsl(11, 100%, 59%)", ae = "hsl(40, 100%, 50%)", ce = "hsl(46, 100%, 50%)", le = "hsl(120, 100%, 25%)", ie = "#36b37e", de = "hsl(0, 0%, 0%)", ue = "hsl(218, 76%, 15%)", me = "hsla(0,0%,10%,.9)", fe = "hsla(0,0%,10%,.6)", he = "hsl(218, 20%, 39%)", pe = "hsl(218, 17%, 44%)", ke = "hsl(218, 14%, 49%)", ve = "hsl(218, 14%, 54%)", we = "hsl(218, 13%, 59%)", Me = "hsl(218, 13%, 64%)", Ee = "hsl(217, 13%, 69%)", Ne = "hsl(223, 12%, 89%)", _e = "hsl(228, 14%, 93%)", De = "hsl(210, 7%, 95%)", be = "hsl(220, 16%, 96%)", ge = "hsl(210, 25%, 98%)", Se = "hsl(0, 0%, 98%)", F = "hsl(0, 0%, 100%)", ye = b, Oe = b, Re = F;
|
|
33
226
|
export {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
227
|
+
ne as B100,
|
|
228
|
+
oe as B200,
|
|
229
|
+
te as B300,
|
|
230
|
+
ee as B400,
|
|
231
|
+
b as B500,
|
|
232
|
+
Z as B600,
|
|
233
|
+
X as B900,
|
|
234
|
+
ie as G300,
|
|
235
|
+
le as G500,
|
|
236
|
+
F as N0,
|
|
237
|
+
ge as N10,
|
|
238
|
+
ve as N100,
|
|
239
|
+
de as N1000,
|
|
240
|
+
be as N20,
|
|
241
|
+
ke as N200,
|
|
242
|
+
De as N25,
|
|
243
|
+
_e as N30,
|
|
244
|
+
pe as N300,
|
|
245
|
+
Ne as N40,
|
|
246
|
+
he as N400,
|
|
247
|
+
Se as N5,
|
|
248
|
+
fe as N500,
|
|
249
|
+
Ee as N70,
|
|
250
|
+
Me as N80,
|
|
251
|
+
me as N800,
|
|
252
|
+
we as N90,
|
|
253
|
+
ue as N900,
|
|
254
|
+
se as R300,
|
|
255
|
+
re as R400,
|
|
256
|
+
z as Theme,
|
|
257
|
+
J as ThemeSwitcher,
|
|
258
|
+
ce as Y200,
|
|
259
|
+
ae as Y300,
|
|
260
|
+
ye as primary1,
|
|
261
|
+
Oe as primary2,
|
|
262
|
+
Re as primary3
|
|
69
263
|
};
|
|
70
264
|
//# sourceMappingURL=theme.es.js.map
|
package/dist/theme.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.es.js","sources":["../src/Theme.vue","../src/colors.js"],"sourcesContent":["<template>\n <div class=\"theme\">\n <slot />\n </div>\n</template>\n\n<script setup>\nimport { provide, ref, watch, onBeforeUnmount } from \"vue\";\nimport \"what-input\";\n\ndefineOptions({\n name: \"Theme\",\n});\nconst theme = ref({\n darkMode: window.matchMedia(\"(prefers-color-scheme: dark)\").matches,\n});\n\nwindow\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", updateDarkMode);\n// Set the color-scheme meta tag.\nvar colorSchemeMeta = document.createElement(\"meta\");\ncolorSchemeMeta.name = \"color-scheme\";\ncolorSchemeMeta.setAttribute(\"content\", \"light dark\");\ndocument.getElementsByTagName(\"head\")[0].appendChild(colorSchemeMeta);\n\nwatch(\n theme.value,\n () => {\n document.documentElement.setAttribute(\n \"dark-mode\",\n theme.value.darkMode,\n );\n },\n { deep: true, immediate: true },\n);\n\nonBeforeUnmount(() => {\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .removeEventListener(\"change\", updateDarkMode);\n});\n\nfunction updateDarkMode(event) {\n if (!event) {\n return;\n }\n theme.value.darkMode = event.matches;\n}\n\nprovide(\"theme\", theme);\n</script>\n\n<style lang=\"less\">\n@import \"index.less\";\n</style>\n","// Blues\nexport const B900 = \"hsl(225, 90%, 16%)\";\n// @go-color-b700 = #000e7f;\nexport const B600 = \"#061f80\";\nexport const B500 = \"hsl(225, 94%, 35%)\";\n// @go-color-b550 = #131ff2;\n// @go-color-b500 = #001dff;\n// @go-color-b400 = #3333ff;\nexport const B400 = \"#06c\";\nexport const B300 = \"hsl(210, 100%, 50%)\";\nexport const B200 = \"hsl(210, 100%, 93%)\";\nexport const B100 = \"hsl(225, 100%, 96%)\";\n\n// Reds\nexport const R400 = \"hsl(12, 91%, 46%)\";\nexport const R300 = \"hsl(11, 100%, 59%)\";\n\n// Yellows\nexport const Y300 = \"hsl(40, 100%, 50%)\";\nexport const Y200 = \"hsl(46, 100%, 50%)\";\n\n// Greens\nexport const G500 = \"hsl(120, 100%, 25%)\";\nexport const G300 = \"#36b37e\";\n\n// Neutrals\nexport const N1000 = \"hsl(0, 0%, 0%)\";\nexport const N900 = \"hsl(218, 76%, 15%)\";\n// @go-color-n900 = hsl(218, 54%, 20%);\nexport const N800 = \"hsla(0,0%,10%,.9)\";\nexport const N500 = \"hsla(0,0%,10%,.6)\";\nexport const N400 = \"hsl(218, 20%, 39%)\";\nexport const N300 = \"hsl(218, 17%, 44%)\";\nexport const N200 = \"hsl(218, 14%, 49%)\";\nexport const N100 = \"hsl(218, 14%, 54%)\";\nexport const N90 = \"hsl(218, 13%, 59%)\";\nexport const N80 = \"hsl(218, 13%, 64%)\";\nexport const N70 = \"hsl(217, 13%, 69%)\";\nexport const N40 = \"hsl(223, 12%, 89%)\";\nexport const N30 = \"hsl(228, 14%, 93%)\";\nexport const N25 = \"hsl(210, 7%, 95%)\";\nexport const N20 = \"hsl(220, 16%, 96%)\";\nexport const N10 = \"hsl(210, 25%, 98%)\";\nexport const N5 = \"hsl(0, 0%, 98%)\";\nexport const N0 = \"hsl(0, 0%, 100%)\";\n\n// Primary color palette\nexport const primary1 = B500;\nexport const primary2 = B500;\nexport const primary3 = N0;\n"],"names":["theme","ref","updateDarkMode","colorSchemeMeta","watch","onBeforeUnmount","event","provide","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","B900","B600","B500","B400","B300","B200","B100","R400","R300","Y300","Y200","G500","G300","N1000","N900","N800","N500","N400","N300","N200","N100","N90","N80","N70","N40","N30","N25","N20","N10","N5","N0","primary1","primary2","primary3"],"mappings":";;;;;;;AAaA,UAAMA,IAAQC,EAAI;AAAA,MACd,UAAU,OAAO,WAAW,8BAA8B,EAAE;AAAA,IAChE,CAAC;AAED,WACK,WAAW,8BAA8B,EACzC,iBAAiB,UAAUC,CAAc;AAE9C,QAAIC,IAAkB,SAAS,cAAc,MAAM;AACnD,IAAAA,EAAgB,OAAO,gBACvBA,EAAgB,aAAa,WAAW,YAAY,GACpD,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,YAAYA,CAAe,GAEpEC;AAAA,MACIJ,EAAM;AAAA,MACN,MAAM;AACF,iBAAS,gBAAgB;AAAA,UACrB;AAAA,UACAA,EAAM,MAAM;AAAA,QACxB;AAAA,MACI;AAAA,MACA,EAAE,MAAM,IAAM,WAAW,GAAI;AAAA,IACjC,GAEAK,EAAgB,MAAM;AAClB,aACK,WAAW,8BAA8B,EACzC,oBAAoB,UAAUH,CAAc;AAAA,IACrD,CAAC;AAED,aAASA,EAAeI,GAAO;AAC3B,MAAKA,MAGLN,EAAM,MAAM,WAAWM,EAAM;AAAA,IACjC;AAEA,WAAAC,EAAQ,SAASP,CAAK,cAjDlBQ,EAAA,GAAAC,EAEM,OAFNC,GAEM;AAAA,MADFC,EAAQC,EAAA,QAAA,SAAA;AAAA;;ICDHC,IAAO,sBAEPC,IAAO,WACPC,IAAO,sBAIPC,IAAO,QACPC,IAAO,uBACPC,IAAO,uBACPC,IAAO,uBAGPC,IAAO,qBACPC,IAAO,sBAGPC,IAAO,sBACPC,IAAO,sBAGPC,IAAO,uBACPC,IAAO,WAGPC,IAAQ,kBACRC,IAAO,sBAEPC,IAAO,qBACPC,IAAO,qBACPC,IAAO,sBACPC,IAAO,sBACPC,IAAO,sBACPC,IAAO,sBACPC,IAAM,sBACNC,IAAM,sBACNC,IAAM,sBACNC,IAAM,sBACNC,IAAM,sBACNC,IAAM,qBACNC,IAAM,sBACNC,IAAM,sBACNC,IAAK,mBACLC,IAAK,oBAGLC,IAAW7B,GACX8B,IAAW9B,GACX+B,IAAWH;"}
|
|
1
|
+
{"version":3,"file":"theme.es.js","sources":["../src/modeStorage.js","../src/Theme.vue","../src/ThemeSwitcher.vue","../src/colors.js"],"sourcesContent":["const VALID_THEME_MODES = [\"auto\", \"light\", \"dark\"];\nconst STORAGE_KEY = \"gospore-theme-mode\";\nconst ONE_YEAR_IN_SECONDS = 60 * 60 * 24 * 365;\nconst DARK_MODE_QUERY = \"(prefers-color-scheme: dark)\";\n\nexport function readStoredMode() {\n if (typeof document === \"undefined\") {\n return null;\n }\n const stored = getCookie(STORAGE_KEY);\n return stored && VALID_THEME_MODES.includes(stored) ? stored : null;\n}\n\nexport function writeStoredMode(mode) {\n if (typeof document === \"undefined\" || !VALID_THEME_MODES.includes(mode)) {\n return;\n }\n const hostname = typeof window !== \"undefined\" ? window.location.hostname : \"\";\n const protocol = typeof window !== \"undefined\" ? window.location.protocol : \"\";\n const domain = getCookieDomain(hostname);\n const secure = protocol === \"https:\";\n const attributes = [\n \"path=/\",\n `max-age=${ONE_YEAR_IN_SECONDS}`,\n \"SameSite=Lax\",\n ];\n if (domain) {\n attributes.push(`domain=${domain}`);\n }\n if (secure) {\n attributes.push(\"Secure\");\n }\n document.cookie = [\n `${encodeURIComponent(STORAGE_KEY)}=${encodeURIComponent(mode)}`,\n ...attributes,\n ].join(\"; \");\n}\n\nexport function applyStoredModeToDocument() {\n if (typeof document === \"undefined\") {\n return;\n }\n const mode = readStoredMode() ?? \"auto\";\n const darkMode = resolveDarkMode(mode);\n document.documentElement.setAttribute(\"dark-mode\", darkMode);\n}\n\nexport { VALID_THEME_MODES, STORAGE_KEY };\n\nfunction getCookie(name) {\n if (typeof document === \"undefined\" || !document.cookie) {\n return null;\n }\n const encodedName = `${encodeURIComponent(name)}=`;\n const cookies = document.cookie.split(\"; \");\n for (const cookie of cookies) {\n if (cookie.startsWith(encodedName)) {\n return decodeURIComponent(cookie.slice(encodedName.length));\n }\n }\n return null;\n}\n\nfunction getCookieDomain(hostname) {\n if (!hostname || hostname === \"localhost\") {\n return null;\n }\n const isIpAddress = /^\\d+(?:\\.\\d+){3}$/.test(hostname);\n if (isIpAddress) {\n return hostname;\n }\n const parts = hostname.split(\".\");\n if (parts.length <= 1) {\n return null;\n }\n if (parts.length === 2) {\n return hostname;\n }\n return parts.slice(-2).join(\".\");\n}\n\nfunction resolveDarkMode(mode) {\n if (mode === \"dark\") {\n return true;\n }\n if (mode === \"light\") {\n return false;\n }\n if (typeof window === \"undefined\") {\n return false;\n }\n try {\n const mediaQueryList =\n typeof window.matchMedia === \"function\"\n ? window.matchMedia(DARK_MODE_QUERY)\n : null;\n return mediaQueryList ? mediaQueryList.matches : false;\n } catch (error) {\n return false;\n }\n}\n","<template>\n <div class=\"theme\">\n <slot />\n </div>\n</template>\n\n<script setup>\nimport { provide, ref, watch, onBeforeUnmount } from \"vue\";\nimport { applyStoredModeToDocument } from \"./modeStorage\";\nimport \"what-input\";\n\ndefineOptions({\n name: \"Theme\",\n});\nconst props = defineProps({\n mode: {\n type: String,\n default: \"auto\",\n validator: (value) => [\"auto\", \"light\", \"dark\"].includes(value),\n },\n});\n\nconst DARK_MODE_QUERY = \"(prefers-color-scheme: dark)\";\nconst PREFERS_REDUCED_MOTION_QUERY = \"(prefers-reduced-motion: reduce)\";\nconst THEME_TRANSITION_DURATION = 200;\nconst darkModeMedia = window.matchMedia(DARK_MODE_QUERY);\nconst prefersReducedMotionMedia = window.matchMedia(\n PREFERS_REDUCED_MOTION_QUERY,\n);\n\napplyStoredModeToDocument();\n\nconst theme = ref({\n darkMode: resolveDarkMode(props.mode),\n});\n\ndarkModeMedia.addEventListener(\"change\", handleSystemPreferenceChange);\n\nwatch(\n () => props.mode,\n () => {\n syncDarkMode();\n },\n { immediate: true },\n);\n\nwatch(\n () => theme.value.darkMode,\n (darkMode, previousValue) => {\n if (previousValue === undefined) {\n setDocumentDarkModeAttribute(darkMode);\n return;\n }\n withThemeTransition(() => {\n setDocumentDarkModeAttribute(darkMode);\n });\n },\n { immediate: true },\n);\n\nonBeforeUnmount(() => {\n darkModeMedia.removeEventListener(\"change\", handleSystemPreferenceChange);\n});\n\nfunction syncDarkMode() {\n theme.value.darkMode = resolveDarkMode(props.mode);\n}\n\nfunction resolveDarkMode(mode) {\n if (mode === \"dark\") {\n return true;\n }\n if (mode === \"light\") {\n return false;\n }\n return darkModeMedia.matches;\n}\n\nfunction handleSystemPreferenceChange(event) {\n if (!event || props.mode !== \"auto\") {\n return;\n }\n theme.value.darkMode = event.matches;\n}\n\nfunction setDocumentDarkModeAttribute(darkMode) {\n document.documentElement.setAttribute(\"dark-mode\", darkMode);\n}\n\nfunction withThemeTransition(applyTheme) {\n if (prefersReducedMotionMedia.matches) {\n applyTheme();\n return;\n }\n const startViewTransition = document.startViewTransition?.bind(document);\n if (startViewTransition) {\n startViewTransition(() => {\n applyTheme();\n });\n return;\n }\n applyTheme();\n const element = document.documentElement;\n if (typeof element.animate !== \"function\") {\n return;\n }\n window.requestAnimationFrame(() => {\n element.animate(\n [\n { opacity: 0.85 },\n { opacity: 1 },\n ],\n {\n duration: THEME_TRANSITION_DURATION,\n easing: \"ease-in-out\",\n },\n );\n });\n}\n\nprovide(\"theme\", theme);\n</script>\n\n<style lang=\"less\">\n@import \"index.less\";\n</style>\n","<template>\n <DropdownMenu\n v-model:open=\"open\"\n text=\"Theme\"\n aria-label=\"Select theme mode\"\n >\n <DropdownItemGroup title=\"Theme\">\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"auto\"\n :label=\"MODE_LABELS.auto\"\n :aria-label=\"`${MODE_LABELS.auto} mode`\"\n />\n <hr class=\"theme-switcher-divider\" role=\"separator\" />\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"light\"\n :label=\"MODE_LABELS.light\"\n :aria-label=\"`${MODE_LABELS.light} mode`\"\n />\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"dark\"\n :label=\"MODE_LABELS.dark\"\n :aria-label=\"`${MODE_LABELS.dark} mode`\"\n />\n </DropdownItemGroup>\n </DropdownMenu>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from \"vue\";\nimport {\n DropdownMenu,\n DropdownItemGroup,\n DropdownItemRadio,\n} from \"@gospore/dropdown-menu\";\nimport {\n readStoredMode,\n writeStoredMode,\n VALID_THEME_MODES,\n applyStoredModeToDocument,\n} from \"./modeStorage\";\n\nconst MODE_OPTIONS = [\n { value: \"auto\", label: \"System\" },\n { value: \"light\", label: \"Light\" },\n { value: \"dark\", label: \"Dark\" },\n];\nconst MODE_LABELS = MODE_OPTIONS.reduce((map, option) => {\n map[option.value] = option.label;\n return map;\n}, {});\nconst VALID_MODES = VALID_THEME_MODES;\n\nconst props = defineProps({\n mode: {\n type: String,\n default: \"auto\",\n validator: (value) => [\"auto\", \"light\", \"dark\"].includes(value),\n },\n});\nconst emit = defineEmits([\"update:mode\"]);\n\napplyStoredModeToDocument();\n\nconst open = ref(false);\nconst initialMode = readStoredMode() ?? props.mode;\nconst internalMode = ref(\n VALID_MODES.includes(initialMode) ? initialMode : \"auto\",\n);\nconst label = computed(\n () => MODE_LABELS[internalMode.value] ?? MODE_LABELS.auto,\n);\n\nwatch(\n () => props.mode,\n (mode) => {\n if (VALID_MODES.includes(mode) && mode !== internalMode.value) {\n internalMode.value = mode;\n }\n },\n);\n\nwatch(\n internalMode,\n (mode) => {\n if (!VALID_MODES.includes(mode)) {\n internalMode.value = \"auto\";\n return;\n }\n open.value = false;\n emit(\"update:mode\", mode);\n writeStoredMode(mode);\n },\n { immediate: true },\n);\n\n</script>\n\n<style scoped lang=\"less\">\n.theme-switcher-divider {\n margin: 4px 0;\n background-color: var(--go-color-n20);\n}\n\n[dark-mode=\"true\"] {\n .theme-switcher-divider {\n background-color: var(--background-color-secondary-dark);\n }\n}\n</style>\n","// Blues\nexport const B900 = \"hsl(225, 90%, 16%)\";\n// @go-color-b700 = #000e7f;\nexport const B600 = \"#061f80\";\nexport const B500 = \"hsl(225, 94%, 35%)\";\n// @go-color-b550 = #131ff2;\n// @go-color-b500 = #001dff;\n// @go-color-b400 = #3333ff;\nexport const B400 = \"#06c\";\nexport const B300 = \"hsl(210, 100%, 50%)\";\nexport const B200 = \"hsl(210, 100%, 93%)\";\nexport const B100 = \"hsl(225, 100%, 96%)\";\n\n// Reds\nexport const R400 = \"hsl(12, 91%, 46%)\";\nexport const R300 = \"hsl(11, 100%, 59%)\";\n\n// Yellows\nexport const Y300 = \"hsl(40, 100%, 50%)\";\nexport const Y200 = \"hsl(46, 100%, 50%)\";\n\n// Greens\nexport const G500 = \"hsl(120, 100%, 25%)\";\nexport const G300 = \"#36b37e\";\n\n// Neutrals\nexport const N1000 = \"hsl(0, 0%, 0%)\";\nexport const N900 = \"hsl(218, 76%, 15%)\";\n// @go-color-n900 = hsl(218, 54%, 20%);\nexport const N800 = \"hsla(0,0%,10%,.9)\";\nexport const N500 = \"hsla(0,0%,10%,.6)\";\nexport const N400 = \"hsl(218, 20%, 39%)\";\nexport const N300 = \"hsl(218, 17%, 44%)\";\nexport const N200 = \"hsl(218, 14%, 49%)\";\nexport const N100 = \"hsl(218, 14%, 54%)\";\nexport const N90 = \"hsl(218, 13%, 59%)\";\nexport const N80 = \"hsl(218, 13%, 64%)\";\nexport const N70 = \"hsl(217, 13%, 69%)\";\nexport const N40 = \"hsl(223, 12%, 89%)\";\nexport const N30 = \"hsl(228, 14%, 93%)\";\nexport const N25 = \"hsl(210, 7%, 95%)\";\nexport const N20 = \"hsl(220, 16%, 96%)\";\nexport const N10 = \"hsl(210, 25%, 98%)\";\nexport const N5 = \"hsl(0, 0%, 98%)\";\nexport const N0 = \"hsl(0, 0%, 100%)\";\n\n// Primary color palette\nexport const primary1 = B500;\nexport const primary2 = B500;\nexport const primary3 = N0;\n"],"names":["VALID_THEME_MODES","STORAGE_KEY","ONE_YEAR_IN_SECONDS","DARK_MODE_QUERY","readStoredMode","stored","getCookie","writeStoredMode","mode","hostname","protocol","domain","getCookieDomain","secure","attributes","applyStoredModeToDocument","darkMode","resolveDarkMode","name","encodedName","cookies","cookie","parts","mediaQueryList","props","__props","darkModeMedia","prefersReducedMotionMedia","PREFERS_REDUCED_MOTION_QUERY","theme","ref","handleSystemPreferenceChange","watch","syncDarkMode","previousValue","setDocumentDarkModeAttribute","withThemeTransition","onBeforeUnmount","event","applyTheme","startViewTransition","element","THEME_TRANSITION_DURATION","provide","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","MODE_LABELS","map","option","VALID_MODES","emit","__emit","open","initialMode","internalMode","computed","_createBlock","_unref","DropdownMenu","$event","_createVNode","DropdownItemGroup","DropdownItemRadio","_createElementVNode","B900","B600","B500","B400","B300","B200","B100","R400","R300","Y300","Y200","G500","G300","N1000","N900","N800","N500","N400","N300","N200","N100","N90","N80","N70","N40","N30","N25","N20","N10","N5","N0","primary1","primary2","primary3"],"mappings":"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"}
|
package/dist/theme.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(e,
|
|
1
|
+
(function(e,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("what-input"),require("@gospore/dropdown-menu")):typeof define=="function"&&define.amd?define(["exports","vue","what-input","@gospore/dropdown-menu"],t):(e=typeof globalThis<"u"?globalThis:e||self,t(e.theme={},e.Vue,e.whatInput,e.DropdownMenu))})(this,function(e,t,ue,m){"use strict";const p=["auto","light","dark"],w="gospore-theme-mode",M="(prefers-color-scheme: dark)";function _(){if(typeof document>"u")return null;const n=y(w);return n&&p.includes(n)?n:null}function S(n){if(typeof document>"u"||!p.includes(n))return;const a=typeof window<"u"?window.location.hostname:"",r=typeof window<"u"?window.location.protocol:"",i=g(a),l=r==="https:",u=["path=/","max-age=31536000","SameSite=Lax"];i&&u.push(`domain=${i}`),l&&u.push("Secure"),document.cookie=[`${encodeURIComponent(w)}=${encodeURIComponent(n)}`,...u].join("; ")}function E(){if(typeof document>"u")return;const n=_()??"auto",a=b(n);document.documentElement.setAttribute("dark-mode",a)}function y(n){if(typeof document>"u"||!document.cookie)return null;const a=`${encodeURIComponent(n)}=`,r=document.cookie.split("; ");for(const i of r)if(i.startsWith(a))return decodeURIComponent(i.slice(a.length));return null}function g(n){if(!n||n==="localhost")return null;if(/^\d+(?:\.\d+){3}$/.test(n))return n;const r=n.split(".");return r.length<=1?null:r.length===2?n:r.slice(-2).join(".")}function b(n){if(n==="dark")return!0;if(n==="light"||typeof window>"u")return!1;try{const a=typeof window.matchMedia=="function"?window.matchMedia(M):null;return a?a.matches:!1}catch{return!1}}const R={class:"theme"},I="(prefers-color-scheme: dark)",O="(prefers-reduced-motion: reduce)",T=200,B=Object.assign({name:"Theme"},{__name:"Theme",props:{mode:{type:String,default:"auto",validator:n=>["auto","light","dark"].includes(n)}},setup(n){const a=n,r=window.matchMedia(I),i=window.matchMedia(O);E();const l=t.ref({darkMode:N(a.mode)});r.addEventListener("change",f),t.watch(()=>a.mode,()=>{u()},{immediate:!0}),t.watch(()=>l.value.darkMode,(o,c)=>{if(c===void 0){h(o);return}d(()=>{h(o)})},{immediate:!0}),t.onBeforeUnmount(()=>{r.removeEventListener("change",f)});function u(){l.value.darkMode=N(a.mode)}function N(o){return o==="dark"?!0:o==="light"?!1:r.matches}function f(o){!o||a.mode!=="auto"||(l.value.darkMode=o.matches)}function h(o){document.documentElement.setAttribute("dark-mode",o)}function d(o){if(i.matches){o();return}const c=document.startViewTransition?.bind(document);if(c){c(()=>{o()});return}o();const s=document.documentElement;typeof s.animate=="function"&&window.requestAnimationFrame(()=>{s.animate([{opacity:.85},{opacity:1}],{duration:T,easing:"ease-in-out"})})}return t.provide("theme",l),(o,c)=>(t.openBlock(),t.createElementBlock("div",R,[t.renderSlot(o.$slots,"default")]))}}),A=((n,a)=>{const r=n.__vccOpts||n;for(const[i,l]of a)r[i]=l;return r})({__name:"ThemeSwitcher",props:{mode:{type:String,default:"auto",validator:n=>["auto","light","dark"].includes(n)}},emits:["update:mode"],setup(n,{emit:a}){const i=[{value:"auto",label:"System"},{value:"light",label:"Light"},{value:"dark",label:"Dark"}].reduce((o,c)=>(o[c.value]=c.label,o),{}),l=p,u=n,N=a;E();const f=t.ref(!1),h=_()??u.mode,d=t.ref(l.includes(h)?h:"auto");return t.computed(()=>i[d.value]??i.auto),t.watch(()=>u.mode,o=>{l.includes(o)&&o!==d.value&&(d.value=o)}),t.watch(d,o=>{if(!l.includes(o)){d.value="auto";return}f.value=!1,N("update:mode",o),S(o)},{immediate:!0}),(o,c)=>(t.openBlock(),t.createBlock(t.unref(m.DropdownMenu),{open:f.value,"onUpdate:open":c[3]||(c[3]=s=>f.value=s),text:"Theme","aria-label":"Select theme mode"},{default:t.withCtx(()=>[t.createVNode(t.unref(m.DropdownItemGroup),{title:"Theme"},{default:t.withCtx(()=>[t.createVNode(t.unref(m.DropdownItemRadio),{checked:d.value,"onUpdate:checked":c[0]||(c[0]=s=>d.value=s),value:"auto",label:t.unref(i).auto,"aria-label":`${t.unref(i).auto} mode`},null,8,["checked","label","aria-label"]),c[4]||(c[4]=t.createElementVNode("hr",{class:"theme-switcher-divider",role:"separator"},null,-1)),t.createVNode(t.unref(m.DropdownItemRadio),{checked:d.value,"onUpdate:checked":c[1]||(c[1]=s=>d.value=s),value:"light",label:t.unref(i).light,"aria-label":`${t.unref(i).light} mode`},null,8,["checked","label","aria-label"]),t.createVNode(t.unref(m.DropdownItemRadio),{checked:d.value,"onUpdate:checked":c[2]||(c[2]=s=>d.value=s),value:"dark",label:t.unref(i).dark,"aria-label":`${t.unref(i).dark} mode`},null,8,["checked","label","aria-label"])]),_:1})]),_:1},8,["open"]))}},[["__scopeId","data-v-9b82a61c"]]),U="hsl(225, 90%, 16%)",C="#061f80",k="hsl(225, 94%, 35%)",$="#06c",V="hsl(210, 100%, 50%)",Y="hsl(210, 100%, 93%)",L="hsl(225, 100%, 96%)",v="hsl(12, 91%, 46%)",G="hsl(11, 100%, 59%)",j="hsl(40, 100%, 50%)",P="hsl(46, 100%, 50%)",q="hsl(120, 100%, 25%)",Q="#36b37e",K="hsl(0, 0%, 0%)",F="hsl(218, 76%, 15%)",H="hsla(0,0%,10%,.9)",W="hsla(0,0%,10%,.6)",z="hsl(218, 20%, 39%)",J="hsl(218, 17%, 44%)",X="hsl(218, 14%, 49%)",Z="hsl(218, 14%, 54%)",x="hsl(218, 13%, 59%)",ee="hsl(218, 13%, 64%)",te="hsl(217, 13%, 69%)",ne="hsl(223, 12%, 89%)",oe="hsl(228, 14%, 93%)",ae="hsl(210, 7%, 95%)",ce="hsl(220, 16%, 96%)",ie="hsl(210, 25%, 98%)",re="hsl(0, 0%, 98%)",D="hsl(0, 0%, 100%)",de=k,le=k,se=D;e.B100=L,e.B200=Y,e.B300=V,e.B400=$,e.B500=k,e.B600=C,e.B900=U,e.G300=Q,e.G500=q,e.N0=D,e.N10=ie,e.N100=Z,e.N1000=K,e.N20=ce,e.N200=X,e.N25=ae,e.N30=oe,e.N300=J,e.N40=ne,e.N400=z,e.N5=re,e.N500=W,e.N70=te,e.N80=ee,e.N800=H,e.N90=x,e.N900=F,e.R300=G,e.R400=v,e.Theme=B,e.ThemeSwitcher=A,e.Y200=P,e.Y300=j,e.primary1=de,e.primary2=le,e.primary3=se,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=theme.umd.js.map
|
package/dist/theme.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.umd.js","sources":["../src/Theme.vue","../src/colors.js"],"sourcesContent":["<template>\n <div class=\"theme\">\n <slot />\n </div>\n</template>\n\n<script setup>\nimport { provide, ref, watch, onBeforeUnmount } from \"vue\";\nimport \"what-input\";\n\ndefineOptions({\n name: \"Theme\",\n});\nconst theme = ref({\n darkMode: window.matchMedia(\"(prefers-color-scheme: dark)\").matches,\n});\n\nwindow\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", updateDarkMode);\n// Set the color-scheme meta tag.\nvar colorSchemeMeta = document.createElement(\"meta\");\ncolorSchemeMeta.name = \"color-scheme\";\ncolorSchemeMeta.setAttribute(\"content\", \"light dark\");\ndocument.getElementsByTagName(\"head\")[0].appendChild(colorSchemeMeta);\n\nwatch(\n theme.value,\n () => {\n document.documentElement.setAttribute(\n \"dark-mode\",\n theme.value.darkMode,\n );\n },\n { deep: true, immediate: true },\n);\n\nonBeforeUnmount(() => {\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .removeEventListener(\"change\", updateDarkMode);\n});\n\nfunction updateDarkMode(event) {\n if (!event) {\n return;\n }\n theme.value.darkMode = event.matches;\n}\n\nprovide(\"theme\", theme);\n</script>\n\n<style lang=\"less\">\n@import \"index.less\";\n</style>\n","// Blues\nexport const B900 = \"hsl(225, 90%, 16%)\";\n// @go-color-b700 = #000e7f;\nexport const B600 = \"#061f80\";\nexport const B500 = \"hsl(225, 94%, 35%)\";\n// @go-color-b550 = #131ff2;\n// @go-color-b500 = #001dff;\n// @go-color-b400 = #3333ff;\nexport const B400 = \"#06c\";\nexport const B300 = \"hsl(210, 100%, 50%)\";\nexport const B200 = \"hsl(210, 100%, 93%)\";\nexport const B100 = \"hsl(225, 100%, 96%)\";\n\n// Reds\nexport const R400 = \"hsl(12, 91%, 46%)\";\nexport const R300 = \"hsl(11, 100%, 59%)\";\n\n// Yellows\nexport const Y300 = \"hsl(40, 100%, 50%)\";\nexport const Y200 = \"hsl(46, 100%, 50%)\";\n\n// Greens\nexport const G500 = \"hsl(120, 100%, 25%)\";\nexport const G300 = \"#36b37e\";\n\n// Neutrals\nexport const N1000 = \"hsl(0, 0%, 0%)\";\nexport const N900 = \"hsl(218, 76%, 15%)\";\n// @go-color-n900 = hsl(218, 54%, 20%);\nexport const N800 = \"hsla(0,0%,10%,.9)\";\nexport const N500 = \"hsla(0,0%,10%,.6)\";\nexport const N400 = \"hsl(218, 20%, 39%)\";\nexport const N300 = \"hsl(218, 17%, 44%)\";\nexport const N200 = \"hsl(218, 14%, 49%)\";\nexport const N100 = \"hsl(218, 14%, 54%)\";\nexport const N90 = \"hsl(218, 13%, 59%)\";\nexport const N80 = \"hsl(218, 13%, 64%)\";\nexport const N70 = \"hsl(217, 13%, 69%)\";\nexport const N40 = \"hsl(223, 12%, 89%)\";\nexport const N30 = \"hsl(228, 14%, 93%)\";\nexport const N25 = \"hsl(210, 7%, 95%)\";\nexport const N20 = \"hsl(220, 16%, 96%)\";\nexport const N10 = \"hsl(210, 25%, 98%)\";\nexport const N5 = \"hsl(0, 0%, 98%)\";\nexport const N0 = \"hsl(0, 0%, 100%)\";\n\n// Primary color palette\nexport const primary1 = B500;\nexport const primary2 = B500;\nexport const primary3 = N0;\n"],"names":["theme","ref","updateDarkMode","colorSchemeMeta","watch","onBeforeUnmount","event","provide","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","B900","B600","B500","B400","B300","B200","B100","R400","R300","Y300","Y200","G500","G300","N1000","N900","N800","N500","N400","N300","N200","N100","N90","N80","N70","N40","N30","N25","N20","N10","N5","N0","primary1","primary2","primary3"],"mappings":"6WAaA,MAAMA,EAAQC,EAAAA,IAAI,CACd,SAAU,OAAO,WAAW,8BAA8B,EAAE,OAChE,CAAC,EAED,OACK,WAAW,8BAA8B,EACzC,iBAAiB,SAAUC,CAAc,EAE9C,IAAIC,EAAkB,SAAS,cAAc,MAAM,EACnDA,EAAgB,KAAO,eACvBA,EAAgB,aAAa,UAAW,YAAY,EACpD,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,YAAYA,CAAe,EAEpEC,EAAAA,MACIJ,EAAM,MACN,IAAM,CACF,SAAS,gBAAgB,aACrB,YACAA,EAAM,MAAM,QACxB,CACI,EACA,CAAE,KAAM,GAAM,UAAW,EAAI,CACjC,EAEAK,EAAAA,gBAAgB,IAAM,CAClB,OACK,WAAW,8BAA8B,EACzC,oBAAoB,SAAUH,CAAc,CACrD,CAAC,EAED,SAASA,EAAeI,EAAO,CACtBA,IAGLN,EAAM,MAAM,SAAWM,EAAM,QACjC,CAEAC,OAAAA,EAAAA,QAAQ,QAASP,CAAK,UAjDlBQ,YAAA,EAAAC,qBAEM,MAFNC,EAEM,CADFC,aAAQC,EAAA,OAAA,SAAA,QCDHC,EAAO,qBAEPC,EAAO,UACPC,EAAO,qBAIPC,EAAO,OACPC,EAAO,sBACPC,EAAO,sBACPC,EAAO,sBAGPC,EAAO,oBACPC,EAAO,qBAGPC,EAAO,qBACPC,EAAO,qBAGPC,EAAO,sBACPC,EAAO,UAGPC,EAAQ,iBACRC,EAAO,qBAEPC,EAAO,oBACPC,EAAO,oBACPC,EAAO,qBACPC,EAAO,qBACPC,EAAO,qBACPC,EAAO,qBACPC,EAAM,qBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAM,oBACNC,EAAM,qBACNC,EAAM,qBACNC,EAAK,kBACLC,EAAK,mBAGLC,EAAW7B,EACX8B,EAAW9B,EACX+B,EAAWH"}
|
|
1
|
+
{"version":3,"file":"theme.umd.js","sources":["../src/modeStorage.js","../src/Theme.vue","../src/ThemeSwitcher.vue","../src/colors.js"],"sourcesContent":["const VALID_THEME_MODES = [\"auto\", \"light\", \"dark\"];\nconst STORAGE_KEY = \"gospore-theme-mode\";\nconst ONE_YEAR_IN_SECONDS = 60 * 60 * 24 * 365;\nconst DARK_MODE_QUERY = \"(prefers-color-scheme: dark)\";\n\nexport function readStoredMode() {\n if (typeof document === \"undefined\") {\n return null;\n }\n const stored = getCookie(STORAGE_KEY);\n return stored && VALID_THEME_MODES.includes(stored) ? stored : null;\n}\n\nexport function writeStoredMode(mode) {\n if (typeof document === \"undefined\" || !VALID_THEME_MODES.includes(mode)) {\n return;\n }\n const hostname = typeof window !== \"undefined\" ? window.location.hostname : \"\";\n const protocol = typeof window !== \"undefined\" ? window.location.protocol : \"\";\n const domain = getCookieDomain(hostname);\n const secure = protocol === \"https:\";\n const attributes = [\n \"path=/\",\n `max-age=${ONE_YEAR_IN_SECONDS}`,\n \"SameSite=Lax\",\n ];\n if (domain) {\n attributes.push(`domain=${domain}`);\n }\n if (secure) {\n attributes.push(\"Secure\");\n }\n document.cookie = [\n `${encodeURIComponent(STORAGE_KEY)}=${encodeURIComponent(mode)}`,\n ...attributes,\n ].join(\"; \");\n}\n\nexport function applyStoredModeToDocument() {\n if (typeof document === \"undefined\") {\n return;\n }\n const mode = readStoredMode() ?? \"auto\";\n const darkMode = resolveDarkMode(mode);\n document.documentElement.setAttribute(\"dark-mode\", darkMode);\n}\n\nexport { VALID_THEME_MODES, STORAGE_KEY };\n\nfunction getCookie(name) {\n if (typeof document === \"undefined\" || !document.cookie) {\n return null;\n }\n const encodedName = `${encodeURIComponent(name)}=`;\n const cookies = document.cookie.split(\"; \");\n for (const cookie of cookies) {\n if (cookie.startsWith(encodedName)) {\n return decodeURIComponent(cookie.slice(encodedName.length));\n }\n }\n return null;\n}\n\nfunction getCookieDomain(hostname) {\n if (!hostname || hostname === \"localhost\") {\n return null;\n }\n const isIpAddress = /^\\d+(?:\\.\\d+){3}$/.test(hostname);\n if (isIpAddress) {\n return hostname;\n }\n const parts = hostname.split(\".\");\n if (parts.length <= 1) {\n return null;\n }\n if (parts.length === 2) {\n return hostname;\n }\n return parts.slice(-2).join(\".\");\n}\n\nfunction resolveDarkMode(mode) {\n if (mode === \"dark\") {\n return true;\n }\n if (mode === \"light\") {\n return false;\n }\n if (typeof window === \"undefined\") {\n return false;\n }\n try {\n const mediaQueryList =\n typeof window.matchMedia === \"function\"\n ? window.matchMedia(DARK_MODE_QUERY)\n : null;\n return mediaQueryList ? mediaQueryList.matches : false;\n } catch (error) {\n return false;\n }\n}\n","<template>\n <div class=\"theme\">\n <slot />\n </div>\n</template>\n\n<script setup>\nimport { provide, ref, watch, onBeforeUnmount } from \"vue\";\nimport { applyStoredModeToDocument } from \"./modeStorage\";\nimport \"what-input\";\n\ndefineOptions({\n name: \"Theme\",\n});\nconst props = defineProps({\n mode: {\n type: String,\n default: \"auto\",\n validator: (value) => [\"auto\", \"light\", \"dark\"].includes(value),\n },\n});\n\nconst DARK_MODE_QUERY = \"(prefers-color-scheme: dark)\";\nconst PREFERS_REDUCED_MOTION_QUERY = \"(prefers-reduced-motion: reduce)\";\nconst THEME_TRANSITION_DURATION = 200;\nconst darkModeMedia = window.matchMedia(DARK_MODE_QUERY);\nconst prefersReducedMotionMedia = window.matchMedia(\n PREFERS_REDUCED_MOTION_QUERY,\n);\n\napplyStoredModeToDocument();\n\nconst theme = ref({\n darkMode: resolveDarkMode(props.mode),\n});\n\ndarkModeMedia.addEventListener(\"change\", handleSystemPreferenceChange);\n\nwatch(\n () => props.mode,\n () => {\n syncDarkMode();\n },\n { immediate: true },\n);\n\nwatch(\n () => theme.value.darkMode,\n (darkMode, previousValue) => {\n if (previousValue === undefined) {\n setDocumentDarkModeAttribute(darkMode);\n return;\n }\n withThemeTransition(() => {\n setDocumentDarkModeAttribute(darkMode);\n });\n },\n { immediate: true },\n);\n\nonBeforeUnmount(() => {\n darkModeMedia.removeEventListener(\"change\", handleSystemPreferenceChange);\n});\n\nfunction syncDarkMode() {\n theme.value.darkMode = resolveDarkMode(props.mode);\n}\n\nfunction resolveDarkMode(mode) {\n if (mode === \"dark\") {\n return true;\n }\n if (mode === \"light\") {\n return false;\n }\n return darkModeMedia.matches;\n}\n\nfunction handleSystemPreferenceChange(event) {\n if (!event || props.mode !== \"auto\") {\n return;\n }\n theme.value.darkMode = event.matches;\n}\n\nfunction setDocumentDarkModeAttribute(darkMode) {\n document.documentElement.setAttribute(\"dark-mode\", darkMode);\n}\n\nfunction withThemeTransition(applyTheme) {\n if (prefersReducedMotionMedia.matches) {\n applyTheme();\n return;\n }\n const startViewTransition = document.startViewTransition?.bind(document);\n if (startViewTransition) {\n startViewTransition(() => {\n applyTheme();\n });\n return;\n }\n applyTheme();\n const element = document.documentElement;\n if (typeof element.animate !== \"function\") {\n return;\n }\n window.requestAnimationFrame(() => {\n element.animate(\n [\n { opacity: 0.85 },\n { opacity: 1 },\n ],\n {\n duration: THEME_TRANSITION_DURATION,\n easing: \"ease-in-out\",\n },\n );\n });\n}\n\nprovide(\"theme\", theme);\n</script>\n\n<style lang=\"less\">\n@import \"index.less\";\n</style>\n","<template>\n <DropdownMenu\n v-model:open=\"open\"\n text=\"Theme\"\n aria-label=\"Select theme mode\"\n >\n <DropdownItemGroup title=\"Theme\">\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"auto\"\n :label=\"MODE_LABELS.auto\"\n :aria-label=\"`${MODE_LABELS.auto} mode`\"\n />\n <hr class=\"theme-switcher-divider\" role=\"separator\" />\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"light\"\n :label=\"MODE_LABELS.light\"\n :aria-label=\"`${MODE_LABELS.light} mode`\"\n />\n <DropdownItemRadio\n v-model:checked=\"internalMode\"\n value=\"dark\"\n :label=\"MODE_LABELS.dark\"\n :aria-label=\"`${MODE_LABELS.dark} mode`\"\n />\n </DropdownItemGroup>\n </DropdownMenu>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from \"vue\";\nimport {\n DropdownMenu,\n DropdownItemGroup,\n DropdownItemRadio,\n} from \"@gospore/dropdown-menu\";\nimport {\n readStoredMode,\n writeStoredMode,\n VALID_THEME_MODES,\n applyStoredModeToDocument,\n} from \"./modeStorage\";\n\nconst MODE_OPTIONS = [\n { value: \"auto\", label: \"System\" },\n { value: \"light\", label: \"Light\" },\n { value: \"dark\", label: \"Dark\" },\n];\nconst MODE_LABELS = MODE_OPTIONS.reduce((map, option) => {\n map[option.value] = option.label;\n return map;\n}, {});\nconst VALID_MODES = VALID_THEME_MODES;\n\nconst props = defineProps({\n mode: {\n type: String,\n default: \"auto\",\n validator: (value) => [\"auto\", \"light\", \"dark\"].includes(value),\n },\n});\nconst emit = defineEmits([\"update:mode\"]);\n\napplyStoredModeToDocument();\n\nconst open = ref(false);\nconst initialMode = readStoredMode() ?? props.mode;\nconst internalMode = ref(\n VALID_MODES.includes(initialMode) ? initialMode : \"auto\",\n);\nconst label = computed(\n () => MODE_LABELS[internalMode.value] ?? MODE_LABELS.auto,\n);\n\nwatch(\n () => props.mode,\n (mode) => {\n if (VALID_MODES.includes(mode) && mode !== internalMode.value) {\n internalMode.value = mode;\n }\n },\n);\n\nwatch(\n internalMode,\n (mode) => {\n if (!VALID_MODES.includes(mode)) {\n internalMode.value = \"auto\";\n return;\n }\n open.value = false;\n emit(\"update:mode\", mode);\n writeStoredMode(mode);\n },\n { immediate: true },\n);\n\n</script>\n\n<style scoped lang=\"less\">\n.theme-switcher-divider {\n margin: 4px 0;\n background-color: var(--go-color-n20);\n}\n\n[dark-mode=\"true\"] {\n .theme-switcher-divider {\n background-color: var(--background-color-secondary-dark);\n }\n}\n</style>\n","// Blues\nexport const B900 = \"hsl(225, 90%, 16%)\";\n// @go-color-b700 = #000e7f;\nexport const B600 = \"#061f80\";\nexport const B500 = \"hsl(225, 94%, 35%)\";\n// @go-color-b550 = #131ff2;\n// @go-color-b500 = #001dff;\n// @go-color-b400 = #3333ff;\nexport const B400 = \"#06c\";\nexport const B300 = \"hsl(210, 100%, 50%)\";\nexport const B200 = \"hsl(210, 100%, 93%)\";\nexport const B100 = \"hsl(225, 100%, 96%)\";\n\n// Reds\nexport const R400 = \"hsl(12, 91%, 46%)\";\nexport const R300 = \"hsl(11, 100%, 59%)\";\n\n// Yellows\nexport const Y300 = \"hsl(40, 100%, 50%)\";\nexport const Y200 = \"hsl(46, 100%, 50%)\";\n\n// Greens\nexport const G500 = \"hsl(120, 100%, 25%)\";\nexport const G300 = \"#36b37e\";\n\n// Neutrals\nexport const N1000 = \"hsl(0, 0%, 0%)\";\nexport const N900 = \"hsl(218, 76%, 15%)\";\n// @go-color-n900 = hsl(218, 54%, 20%);\nexport const N800 = \"hsla(0,0%,10%,.9)\";\nexport const N500 = \"hsla(0,0%,10%,.6)\";\nexport const N400 = \"hsl(218, 20%, 39%)\";\nexport const N300 = \"hsl(218, 17%, 44%)\";\nexport const N200 = \"hsl(218, 14%, 49%)\";\nexport const N100 = \"hsl(218, 14%, 54%)\";\nexport const N90 = \"hsl(218, 13%, 59%)\";\nexport const N80 = \"hsl(218, 13%, 64%)\";\nexport const N70 = \"hsl(217, 13%, 69%)\";\nexport const N40 = \"hsl(223, 12%, 89%)\";\nexport const N30 = \"hsl(228, 14%, 93%)\";\nexport const N25 = \"hsl(210, 7%, 95%)\";\nexport const N20 = \"hsl(220, 16%, 96%)\";\nexport const N10 = \"hsl(210, 25%, 98%)\";\nexport const N5 = \"hsl(0, 0%, 98%)\";\nexport const N0 = \"hsl(0, 0%, 100%)\";\n\n// Primary color palette\nexport const primary1 = B500;\nexport const primary2 = B500;\nexport const primary3 = N0;\n"],"names":["VALID_THEME_MODES","STORAGE_KEY","DARK_MODE_QUERY","readStoredMode","stored","getCookie","writeStoredMode","mode","hostname","protocol","domain","getCookieDomain","secure","attributes","applyStoredModeToDocument","darkMode","resolveDarkMode","name","encodedName","cookies","cookie","parts","mediaQueryList","props","__props","darkModeMedia","prefersReducedMotionMedia","PREFERS_REDUCED_MOTION_QUERY","theme","ref","handleSystemPreferenceChange","watch","syncDarkMode","previousValue","setDocumentDarkModeAttribute","withThemeTransition","onBeforeUnmount","event","applyTheme","startViewTransition","element","THEME_TRANSITION_DURATION","provide","_openBlock","_createElementBlock","_hoisted_1","_renderSlot","_ctx","MODE_LABELS","map","option","VALID_MODES","emit","__emit","open","initialMode","internalMode","computed","_createBlock","_unref","DropdownMenu","$event","_createVNode","DropdownItemGroup","DropdownItemRadio","_createElementVNode","B900","B600","B500","B400","B300","B200","B100","R400","R300","Y300","Y200","G500","G300","N1000","N900","N800","N500","N400","N300","N200","N100","N90","N80","N70","N40","N30","N25","N20","N10","N5","N0","primary1","primary2","primary3"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gospore/theme",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.122",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Gospore",
|
|
6
6
|
"type": "module",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"vue": "^3.4.20"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
+
"@gospore/dropdown-menu": "^1.0.91",
|
|
29
30
|
"what-input": "^5.2.12"
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
@@ -33,5 +34,5 @@
|
|
|
33
34
|
"unplugin-vue-macros": "^2.14.5",
|
|
34
35
|
"vite": "^7.1.9"
|
|
35
36
|
},
|
|
36
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "7debe95eca46c638d014182e3c2840fd32286ea3"
|
|
37
38
|
}
|