diff --git a/src/components/LinkItems/Item.vue b/src/components/LinkItems/Item.vue
index 753b2f95..5ddc8d87 100644
--- a/src/components/LinkItems/Item.vue
+++ b/src/components/LinkItems/Item.vue
@@ -34,6 +34,8 @@
:statusSuccess="statusResponse ? statusResponse.successStatus : undefined"
:statusText="statusResponse ? statusResponse.message : undefined"
/>
+
+
{{ item.url | shortUrl }}
@@ -122,6 +124,26 @@ export default {
}
},
},
+ filters: {
+ shortUrl(value) {
+ if (!value || typeof value !== 'string') {
+ return '';
+ }
+ try {
+ // Use URL constructor to parse the input
+ const url = new URL(value);
+ return url.hostname;
+ } catch (e) {
+ // If the input is not a valid URL, try to handle it as an IP address
+ const ipPattern = /^(\d{1,3}\.){3}\d{1,3}/;
+ const match = value.match(ipPattern);
+ if (match) {
+ return match[0];
+ }
+ return '';
+ }
+ },
+ },
data() {
return {
editMenuOpen: false,
@@ -209,6 +231,9 @@ export default {
&.span-7 { min-width: 14%; }
&.span-8 { min-width: 12.5%; }
}
+ .item-url {
+ display: none;
+ }
}
.item {
diff --git a/src/styles/color-themes.scss b/src/styles/color-themes.scss
index ff80b30a..6b28f39c 100644
--- a/src/styles/color-themes.scss
+++ b/src/styles/color-themes.scss
@@ -1849,6 +1849,88 @@ html[data-theme='neomorphic'] {
}
+html[data-theme="night-bat"] {
+ // Main colors
+ --primary: #4780ff;
+ --background: #252931;
+ --background-darker: #303540;
+ // Typography
+ --font-headings: 'Podkova', 'Roboto', serif;
+ --font-body: 'Roboto', serif;
+ --heading-text-color: #fff;
+ // Items
+ --item-background: #303540;
+ --item-background-hover: var(--item-background);
+ --item-shadow: 0px 3px 0px var(--primary), 2px 2px 6px var(--black);
+ --item-hover-shadow: 0px 20px 0px 0 var(--primary), 2px 2px 6px var(--black);
+ // Sections
+ --item-group-heading-text-color: var(--white);
+ --item-group-heading-text-color-hover: var(--white);
+ --item-group-shadow: none;
+ --item-group-background: none;
+ --item-group-outer-background: none;
+ // Nav Links
+ --nav-link-background-color: var(--background);
+ --nav-link-background-color-hover: var(--background);
+ --nav-link-border-color: transparent;
+ --nav-link-border-color-hover: transparent;
+ --nav-link-shadow: 4px 4px 0px var(--background-darker), -3px 0px 0px var(--primary), 2px 2px 6px var(--black);
+ --nav-link-shadow-hover: 6px 6px 0px var(--background-darker), -4px 0px 0px var(--primary), 2px 2px 9px var(--black);
+ // Misc
+ --curve-factor: 4px;
+ --curve-factor-navbar: 8px;
+
+ --widget-text-color: var(--white);
+
+ // Style overrides
+ label.lbl-toggle h3 { font-size: 1.3rem; font-weight: bold; }
+ .content-inner { border-top: 1px dashed var(--primary); }
+ .item.size-large .tile-title p.description { height: 3rem; }
+ .item, .nav-outer nav .nav-item { border-radius: 1px; }
+ .item.size-large { margin: 0.5rem; }
+ // Show outline when collapsed
+ .is-collapsed {
+ background: var(--item-background);
+ box-shadow: var(--item-shadow);
+ &:hover {
+ background: var(--item-background-hover);
+ box-shadow: var(--item-hover-shadow);
+ }
+ }
+ .widget-base {
+ background: var(--background-darker);
+ padding: 1rem 0.5rem;
+ margin: 0.5rem 0;
+ }
+
+ .item-wrapper {
+ .item-url {
+ display: block;
+ opacity: 0;
+ position: absolute;
+ bottom: -1.9rem;
+ font-size: 0.8rem;
+ color: var(--background);
+ transition: all 0.2s cubic-bezier(0.8, 0.8, 0.4, 1.4);
+ }
+ a {
+ transition: all 0.2s cubic-bezier(0.8, 0.8, 0.4, 1.4);
+ height: calc(100% - 1rem);
+ }
+ &:hover {
+ a { height: calc(100% - 2rem); }
+ .item-icon {
+ transform: scale(0.9);
+ }
+ .item-url {
+ display: block;
+ opacity: 1;
+ }
+ }
+ }
+}
+
+
html[data-theme='cherry-blossom'] {
--primary: #e1e8ee;
--background: #11171d;
diff --git a/src/utils/defaults.js b/src/utils/defaults.js
index f952a18b..1722ca03 100644
--- a/src/utils/defaults.js
+++ b/src/utils/defaults.js
@@ -89,6 +89,7 @@ module.exports = {
'tama',
'neomorphic',
'glass-2',
+ 'night-bat',
],
/* Default color options for the theme configurator swatches */
swatches: [