diff --git a/Makefile b/Makefile index bfc5040cb..b6b145e67 100644 --- a/Makefile +++ b/Makefile @@ -417,6 +417,20 @@ deploy-docs: venv ## Deploy docs build-web: cd web && npm run build +LOGO_SOURCE = docs/images/logo.svg + +.PHONY: generate-logo-assets +generate-logo-assets: ## Generate logo and favicon assets from SVG + @command -v rsvg-convert >/dev/null 2>&1 || { echo "rsvg-convert not found; install librsvg (e.g. 'brew install librsvg')"; exit 1; } + mkdir -p docs/overrides web/src/assets + cp $(LOGO_SOURCE) docs/overrides/logo.svg + rsvg-convert -w 256 -h 256 $(LOGO_SOURCE) -o docs/images/logo.png + rsvg-convert -w 256 -h 256 $(LOGO_SOURCE) -o docs/overrides/logo.png + rsvg-convert -w 64 -h 64 $(LOGO_SOURCE) -o docs/overrides/favicon.png + rsvg-convert -w 128 -h 128 $(LOGO_SOURCE) -o web/src/assets/logo.png + rsvg-convert -w 64 -h 64 $(LOGO_SOURCE) -o web/src/assets/favicon.png + $(MAKE) build-web + # Image / release configuration. # IMAGE_TAGS is the space-separated list of tag suffixes applied to each component image. # IMAGE_PUSH_PLATFORMS is the platform list for `image-push` (multi-arch by default). diff --git a/README.md b/README.md index 2d6b312d3..3cff0189e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Logo +Logo [![Go Report Card](https://goreportcard.com/badge/github.com/kube-bind/kube-bind)](https://goreportcard.com/report/github.com/kube-bind/kube-bind) [![GitHub](https://img.shields.io/github/license/kube-bind/kube-bind)](https://github.com/kube-bind/kube-bind/blob/main/LICENSE) diff --git a/docs/images/logo.png b/docs/images/logo.png new file mode 100644 index 000000000..252d3ea3f Binary files /dev/null and b/docs/images/logo.png differ diff --git a/docs/images/logo.svg b/docs/images/logo.svg index 10dab2b0e..406c259eb 100644 --- a/docs/images/logo.svg +++ b/docs/images/logo.svg @@ -1,64 +1,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 2e85acafd..b6ffda233 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -28,8 +28,8 @@ theme: - content.code.annotate # Integrate TOC into navigation sidebar - toc.integrate - logo: logo.svg - favicon: logo.svg + logo: logo.png + favicon: favicon.png palette: # Palette toggle for automatic mode - media: "(prefers-color-scheme)" diff --git a/docs/overrides/favicon.png b/docs/overrides/favicon.png new file mode 100644 index 000000000..d2f7a52bc Binary files /dev/null and b/docs/overrides/favicon.png differ diff --git a/docs/overrides/logo.png b/docs/overrides/logo.png new file mode 100644 index 000000000..252d3ea3f Binary files /dev/null and b/docs/overrides/logo.png differ diff --git a/docs/overrides/logo.svg b/docs/overrides/logo.svg index 10dab2b0e..406c259eb 100644 --- a/docs/overrides/logo.svg +++ b/docs/overrides/logo.svg @@ -1,64 +1,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/dist/assets/favicon.D0IB_wPW.png b/web/dist/assets/favicon.D0IB_wPW.png new file mode 100644 index 000000000..d2f7a52bc Binary files /dev/null and b/web/dist/assets/favicon.D0IB_wPW.png differ diff --git a/web/dist/assets/index.7XpcMtlt.css b/web/dist/assets/index.BhVI6qbi.css similarity index 97% rename from web/dist/assets/index.7XpcMtlt.css rename to web/dist/assets/index.BhVI6qbi.css index 85cd73b2b..0397a4501 100644 --- a/web/dist/assets/index.7XpcMtlt.css +++ b/web/dist/assets/index.BhVI6qbi.css @@ -1,10 +1,10 @@ -#app[data-v-0b535f4a] { +#app[data-v-eb0cbf2e] { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", sans-serif; } -.header[data-v-0b535f4a] { +.header[data-v-eb0cbf2e] { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-bottom: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); @@ -12,7 +12,7 @@ top: 0; z-index: 100; } -.header-content[data-v-0b535f4a] { +.header-content[data-v-eb0cbf2e] { max-width: 1200px; margin: 0 auto; display: flex; @@ -20,30 +20,34 @@ align-items: center; padding: 1rem 2rem; } -.brand[data-v-0b535f4a] { +.brand[data-v-eb0cbf2e] { display: flex; align-items: center; gap: 0.75rem; } -.logo[data-v-0b535f4a] { - color: rgba(255, 255, 255, 0.9); +.logo[data-v-eb0cbf2e] { display: flex; align-items: center; justify-content: center; } -.header h1[data-v-0b535f4a] { +.logo img[data-v-eb0cbf2e] { + width: 32px; + height: 32px; + display: block; +} +.header h1[data-v-eb0cbf2e] { margin: 0; color: white; font-size: 1.5rem; font-weight: 600; letter-spacing: -0.025em; } -.user-section[data-v-0b535f4a] { +.user-section[data-v-eb0cbf2e] { display: flex; align-items: center; gap: 1.5rem; } -.user-info[data-v-0b535f4a] { +.user-info[data-v-eb0cbf2e] { display: flex; align-items: center; gap: 0.5rem; @@ -51,15 +55,15 @@ font-size: 0.875rem; font-weight: 500; } -.status-indicator[data-v-0b535f4a] { +.status-indicator[data-v-eb0cbf2e] { width: 8px; height: 8px; background: #10b981; border-radius: 50%; box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.3); - animation: pulse-0b535f4a 2s infinite; + animation: pulse-eb0cbf2e 2s infinite; } -@keyframes pulse-0b535f4a { +@keyframes pulse-eb0cbf2e { 0%, 100% { opacity: 1; @@ -68,10 +72,10 @@ opacity: 0.5; } } -.welcome-text[data-v-0b535f4a] { +.welcome-text[data-v-eb0cbf2e] { color: rgba(255, 255, 255, 0.8); } -.logout-btn[data-v-0b535f4a] { +.logout-btn[data-v-eb0cbf2e] { display: flex; align-items: center; gap: 0.5rem; @@ -86,18 +90,18 @@ transition: all 0.2s ease; backdrop-filter: blur(10px); } -.logout-btn[data-v-0b535f4a]:hover { +.logout-btn[data-v-eb0cbf2e]:hover { background: rgba(255, 255, 255, 0.2); color: white; border-color: rgba(255, 255, 255, 0.3); transform: translateY(-1px); } -.main[data-v-0b535f4a] { +.main[data-v-eb0cbf2e] { min-height: calc(100vh - 80px); background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); padding: 0; } -.auth-placeholder[data-v-0b535f4a] { +.auth-placeholder[data-v-eb0cbf2e] { display: flex; flex-direction: column; align-items: center; @@ -106,7 +110,7 @@ padding: 4rem 2rem; min-height: calc(100vh - 200px); } -.auth-placeholder h2[data-v-0b535f4a] { +.auth-placeholder h2[data-v-eb0cbf2e] { color: #1f2937; margin-bottom: 1rem; font-size: 2rem; @@ -116,14 +120,14 @@ -webkit-text-fill-color: transparent; background-clip: text; } -.auth-placeholder p[data-v-0b535f4a] { +.auth-placeholder p[data-v-eb0cbf2e] { color: #6b7280; margin-bottom: 2rem; font-size: 1.125rem; max-width: 500px; line-height: 1.6; } -.auth-btn[data-v-0b535f4a] { +.auth-btn[data-v-eb0cbf2e] { display: inline-flex; align-items: center; gap: 0.5rem; @@ -138,12 +142,12 @@ transition: all 0.2s ease; box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); } -.auth-btn[data-v-0b535f4a]:hover { +.auth-btn[data-v-eb0cbf2e]:hover { background: linear-gradient(135deg, #5a6fd8 0%, #6a4190 100%); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(102, 126, 234, 0.4); } -.auth-error[data-v-0b535f4a] { +.auth-error[data-v-eb0cbf2e] { display: flex; align-items: flex-start; gap: 1rem; @@ -156,18 +160,18 @@ text-align: left; box-shadow: 0 2px 8px rgba(239, 68, 68, 0.1); } -.error-icon[data-v-0b535f4a] { +.error-icon[data-v-eb0cbf2e] { font-size: 1.5rem; line-height: 1; margin-top: 0.125rem; } -.error-content h3[data-v-0b535f4a] { +.error-content h3[data-v-eb0cbf2e] { margin: 0 0 0.5rem 0; color: #dc2626; font-size: 1rem; font-weight: 600; } -.error-content p[data-v-0b535f4a] { +.error-content p[data-v-eb0cbf2e] { margin: 0; color: #991b1b; font-size: 0.875rem; diff --git a/web/dist/assets/index.B099aFUK.js b/web/dist/assets/index.MH35DzMO.js similarity index 99% rename from web/dist/assets/index.B099aFUK.js rename to web/dist/assets/index.MH35DzMO.js index 4c0ec3948..20fdd5e3f 100644 --- a/web/dist/assets/index.B099aFUK.js +++ b/web/dist/assets/index.MH35DzMO.js @@ -43,7 +43,7 @@ var __exportAll = (all, no_symbols) => { //#endregion //#region node_modules/@vue/shared/dist/shared.esm-bundler.js /** -* @vue/shared v3.5.32 +* @vue/shared v3.5.34 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ @@ -219,7 +219,7 @@ var stringifySymbol = (v, i = "") => { //#endregion //#region node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js /** -* @vue/reactivity v3.5.32 +* @vue/reactivity v3.5.34 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ @@ -244,9 +244,15 @@ var EffectScope = class { */ this.cleanups = []; this._isPaused = false; + this._warnOnRun = true; this.__v_skip = true; - this.parent = activeEffectScope; - if (!detached && activeEffectScope) this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; + if (!detached && activeEffectScope) if (activeEffectScope.active) { + this.parent = activeEffectScope; + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; + } else { + this._active = false; + this._warnOnRun = false; + } } get active() { return this._active; @@ -299,7 +305,17 @@ var EffectScope = class { */ off() { if (this._on > 0 && --this._on === 0) { - activeEffectScope = this.prevScope; + if (activeEffectScope === this) activeEffectScope = this.prevScope; + else { + let current = activeEffectScope; + while (current) { + if (current.prevScope === this) { + current.prevScope = this.prevScope; + break; + } + current = current.prevScope; + } + } this.prevScope = void 0; } } @@ -355,7 +371,8 @@ var ReactiveEffect = class { */ this.cleanup = void 0; this.scheduler = void 0; - if (activeEffectScope && activeEffectScope.active) activeEffectScope.effects.push(this); + if (activeEffectScope) if (activeEffectScope.active) activeEffectScope.effects.push(this); + else this.flags &= -2; } pause() { this.flags |= 64; @@ -1484,7 +1501,7 @@ function traverse(value, depth = Infinity, seen) { //#endregion //#region node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js /** -* @vue/runtime-core v3.5.32 +* @vue/runtime-core v3.5.34 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ @@ -2823,13 +2840,11 @@ var updateSlots = (instance, children, optimized) => { for (const key in slots) if (!isInternalKey(key) && deletionComparisonTarget[key] == null) delete slots[key]; } }; -function initFeatureFlags() {} var queuePostRenderEffect = queueEffectWithSuspense; function createRenderer(options) { return baseCreateRenderer(options); } function baseCreateRenderer(options, createHydrationFns) { - initFeatureFlags(); const target = getGlobalThis(); target.__VUE__ = true; const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options; @@ -3687,11 +3702,6 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false function createTextVNode(text = " ", flag = 0) { return createVNode(Text, null, text, flag); } -function createStaticVNode(content, numberOfNodes) { - const vnode = createVNode(Static, null, content); - vnode.staticCount = numberOfNodes; - return vnode; -} function createCommentVNode(text = "", asBlock = false) { return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); } @@ -3996,11 +4006,11 @@ function h(type, propsOrChildren, children) { setBlockTracking(1); } } -var version = "3.5.32"; +var version = "3.5.34"; //#endregion //#region node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js /** -* @vue/runtime-dom v3.5.32 +* @vue/runtime-dom v3.5.34 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ @@ -4085,7 +4095,10 @@ function patchStyle(el, prev, next) { } for (const key in next) { if (key === "display") hasControlledDisplay = true; - setStyle(style, key, next[key]); + const value = next[key]; + if (value != null) { + if (!shouldPreserveTextareaResizeStyle(el, key, !isString$1(prev) && prev ? prev[key] : void 0, value)) setStyle(style, key, value); + } else setStyle(style, key, ""); } } else if (isCssString) { if (prev !== next) { @@ -4131,6 +4144,9 @@ function autoPrefix(style, rawName) { } return rawName; } +function shouldPreserveTextareaResizeStyle(el, key, prev, next) { + return el.tagName === "TEXTAREA" && (key === "width" || key === "height") && isString$1(next) && prev === next; +} var xlinkNS = "http://www.w3.org/1999/xlink"; function patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) { if (isSVG && key.startsWith("xlink:")) if (value == null) el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); @@ -4401,9 +4417,9 @@ function normalizeContainer(container) { return container; } //#endregion -//#region node_modules/vue-router/dist/useApi-C8XBqGtv.js +//#region node_modules/vue-router/dist/useApi-DtucMc-S.js /*! -* vue-router v5.0.4 +* vue-router v5.0.6 * (c) 2026 Eduardo San Martin Morote * @license MIT */ @@ -4517,7 +4533,7 @@ function useRoute(_name) { return inject(routeLocationKey); } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/typeof.js +//#region \0@oxc-project+runtime@0.128.0/helpers/typeof.js function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { @@ -4527,7 +4543,7 @@ function _typeof(o) { }, _typeof(o); } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/toPrimitive.js +//#region \0@oxc-project+runtime@0.128.0/helpers/toPrimitive.js function toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; @@ -4539,13 +4555,13 @@ function toPrimitive(t, r) { return ("string" === r ? String : Number)(t); } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/toPropertyKey.js +//#region \0@oxc-project+runtime@0.128.0/helpers/toPropertyKey.js function toPropertyKey(t) { var i = toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/defineProperty.js +//#region \0@oxc-project+runtime@0.128.0/helpers/defineProperty.js function _defineProperty(e, r, t) { return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, @@ -4555,7 +4571,7 @@ function _defineProperty(e, r, t) { }) : e[r] = t, e; } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/objectSpread2.js +//#region \0@oxc-project+runtime@0.128.0/helpers/objectSpread2.js function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { @@ -4578,7 +4594,7 @@ function _objectSpread2(e) { return e; } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/asyncToGenerator.js +//#region \0@oxc-project+runtime@0.128.0/helpers/asyncToGenerator.js function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; @@ -4604,9 +4620,9 @@ function _asyncToGenerator(n) { }; } //#endregion -//#region node_modules/vue-router/dist/devtools-DUDsFuj9.js +//#region node_modules/vue-router/dist/devtools-BPov6AZY.js /*! -* vue-router v5.0.4 +* vue-router v5.0.6 * (c) 2026 Eduardo San Martin Morote * @license MIT */ @@ -4718,7 +4734,7 @@ function decode(text) { if (text == null) return null; try { return decodeURIComponent("" + text); - } catch (err) {} + } catch (_unused) {} return "" + text; } var TRAILING_SLASH_RE = /\/$/; @@ -4888,7 +4904,7 @@ function normalizeBase(base) { if (!base) if (isBrowser) { const baseEl = document.querySelector("base"); base = baseEl && baseEl.getAttribute("href") || "/"; - base = base.replace(/^\w+:\/\/[^\/]+/, ""); + base = base.replace(/^\w+:\/\/[^/]+/, ""); } else base = "/"; if (base[0] !== "/" && base[0] !== "#") base = "/" + base; return removeTrailingSlash(base); @@ -5110,7 +5126,7 @@ function extractChangingRecords(to, from) { //#endregion //#region node_modules/vue-router/dist/vue-router.js /*! -* vue-router v5.0.4 +* vue-router v5.0.6 * (c) 2026 Eduardo San Martin Morote * @license MIT */ @@ -5980,7 +5996,7 @@ var RouterViewImpl = /* @__PURE__ */ defineComponent({ viewRef.value, matchedRouteRef.value, props.name - ], ([instance, to, name], [oldInstance, from, oldName]) => { + ], ([instance, to, name], [oldInstance, from, _oldName]) => { if (to) { to.instances[name] = instance; if (from && from !== to && instance && instance === oldInstance) { @@ -6070,7 +6086,6 @@ function createRouter(options) { const href = routerHistory.createHref(locationNormalized.fullPath); return assign(locationNormalized, matchedRoute, { params: decodeParams(matchedRoute.params), - hash: decode(locationNormalized.hash), redirectedFrom: void 0, href }); @@ -6375,6 +6390,7 @@ function createRouter(options) { } return router; } +"" + new URL("logo.C_e3UAcl.png", import.meta.url).href; //#endregion //#region node_modules/axios/lib/helpers/bind.js /** @@ -8003,6 +8019,10 @@ var defaults = { } return data; }], + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", @@ -8551,7 +8571,7 @@ var composeSignals = (signals, timeout) => { } }; //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/asyncIterator.js +//#region \0@oxc-project+runtime@0.128.0/helpers/asyncIterator.js function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { @@ -8594,17 +8614,17 @@ function AsyncFromSyncIterator(r) { }, new AsyncFromSyncIterator(r); } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/OverloadYield.js +//#region \0@oxc-project+runtime@0.128.0/helpers/OverloadYield.js function _OverloadYield(e, d) { this.v = e, this.k = d; } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/awaitAsyncGenerator.js +//#region \0@oxc-project+runtime@0.128.0/helpers/awaitAsyncGenerator.js function _awaitAsyncGenerator(e) { return new _OverloadYield(e, 0); } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/asyncGeneratorDelegate.js +//#region \0@oxc-project+runtime@0.128.0/helpers/asyncGeneratorDelegate.js function _asyncGeneratorDelegate(t) { var e = {}, n = !1; function pump(e, r) { @@ -8627,7 +8647,7 @@ function _asyncGeneratorDelegate(t) { }), e; } //#endregion -//#region \0@oxc-project+runtime@0.123.0/helpers/wrapAsyncGenerator.js +//#region \0@oxc-project+runtime@0.128.0/helpers/wrapAsyncGenerator.js function _wrapAsyncGenerator(e) { return function() { return new AsyncGenerator(e.apply(this, arguments)); @@ -9163,7 +9183,15 @@ function getAdapter(adapters, config) { * Exports Axios adapters and utility to resolve an adapter */ var adapters_default = { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ getAdapter, + /** + * Exposes all known adapters + * @type {Object} + */ adapters: knownAdapters }; //#endregion @@ -10054,7 +10082,10 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp }); return (_ctx, _cache) => { const _component_router_view = resolveComponent("router-view"); - return openBlock(), createElementBlock("div", _hoisted_1$5, [createBaseVNode("header", _hoisted_2$5, [createBaseVNode("div", _hoisted_3$5, [_cache[2] || (_cache[2] = createStaticVNode("

Kube Bind

", 1)), authStatus.value.isAuthenticated ? (openBlock(), createElementBlock("div", _hoisted_4$5, [_cache[1] || (_cache[1] = createBaseVNode("div", { class: "user-info" }, [createBaseVNode("div", { class: "status-indicator" }), createBaseVNode("span", { class: "welcome-text" }, "Connected")], -1)), createBaseVNode("button", { + return openBlock(), createElementBlock("div", _hoisted_1$5, [createBaseVNode("header", _hoisted_2$5, [createBaseVNode("div", _hoisted_3$5, [_cache[2] || (_cache[2] = createBaseVNode("div", { class: "brand" }, [createBaseVNode("div", { class: "logo" }, [createBaseVNode("img", { + src: "" + new URL("logo.C_e3UAcl.png", import.meta.url).href, + alt: "Kube Bind" + })]), createBaseVNode("h1", null, "Kube Bind")], -1)), authStatus.value.isAuthenticated ? (openBlock(), createElementBlock("div", _hoisted_4$5, [_cache[1] || (_cache[1] = createBaseVNode("div", { class: "user-info" }, [createBaseVNode("div", { class: "status-indicator" }), createBaseVNode("span", { class: "welcome-text" }, "Connected")], -1)), createBaseVNode("button", { onClick: logout, class: "logout-btn" }, [..._cache[0] || (_cache[0] = [createBaseVNode("svg", { @@ -10109,7 +10140,7 @@ var _plugin_vue_export_helper_default = (sfc, props) => { }; //#endregion //#region src/App.vue -var App_default = /* @__PURE__ */ _plugin_vue_export_helper_default(App_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0b535f4a"]]); +var App_default = /* @__PURE__ */ _plugin_vue_export_helper_default(App_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-eb0cbf2e"]]); //#endregion //#region src/components/BindingResult.vue?vue&type=script&setup=true&lang.ts var _hoisted_1$4 = { class: "binding-header" }; diff --git a/web/dist/assets/logo.C_e3UAcl.png b/web/dist/assets/logo.C_e3UAcl.png new file mode 100644 index 000000000..4d09fe4ff Binary files /dev/null and b/web/dist/assets/logo.C_e3UAcl.png differ diff --git a/web/dist/index.html b/web/dist/index.html index b1670ff73..1346e8899 100644 --- a/web/dist/index.html +++ b/web/dist/index.html @@ -2,13 +2,13 @@ - + Kube Bind - - + +
- \ No newline at end of file + diff --git a/web/index.html b/web/index.html index a7770d9e7..f09140361 100644 --- a/web/index.html +++ b/web/index.html @@ -2,7 +2,7 @@ - + Kube Bind @@ -10,4 +10,4 @@
- \ No newline at end of file + diff --git a/web/src/App.vue b/web/src/App.vue index 8d171a795..019b1c809 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -4,32 +4,7 @@

Kube Bind

@@ -224,12 +199,17 @@ onMounted(() => { } .logo { - color: rgba(255, 255, 255, 0.9); display: flex; align-items: center; justify-content: center; } +.logo img { + width: 32px; + height: 32px; + display: block; +} + .header h1 { margin: 0; color: white; diff --git a/web/src/assets/favicon.png b/web/src/assets/favicon.png new file mode 100644 index 000000000..d2f7a52bc Binary files /dev/null and b/web/src/assets/favicon.png differ diff --git a/web/src/assets/logo.png b/web/src/assets/logo.png new file mode 100644 index 000000000..4d09fe4ff Binary files /dev/null and b/web/src/assets/logo.png differ