ketekny-ui-kit 1.0.123 → 1.0.125

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ketekny-ui-kit",
3
3
  "type": "module",
4
- "version": "1.0.123",
4
+ "version": "1.0.125",
5
5
  "description": "A Vue 3 UI component library with Tailwind CSS styling",
6
6
  "main": "index.js",
7
7
  "files": [
@@ -14,10 +14,21 @@ import {
14
14
  import SidebarMenuItem from './SidebarMenuItem.vue'
15
15
  import kMenu from '../../ui/kMenu.vue'
16
16
  import demoAvatarUrl from '../assets/placeholder-user.jpg'
17
+ import logoLightUrl from '../assets/logo-light.png'
18
+ import logoDarkUrl from '../assets/logo-dark.png'
19
+ import logoIconLightUrl from '../assets/logo_icon.jpg'
20
+ import logoIconDarkUrl from '../assets/logo-icon-dark.png'
17
21
 
18
22
  const FAVORITES_STORAGE_KEY = 'ketekny-ui-sidebar-favorites'
19
23
  const MENU_TAB_STORAGE_KEY = 'ketekny-ui-sidebar-menu-tab'
20
- const LOGO_BASE_URL = 'https://s3.ketekny.gr/public/web-apps/logos'
24
+ // const LOGO_BASE_URL = 'https://s3.ketekny.gr/public/web-apps/logos'
25
+
26
+ const DEFAULT_LOGOS = {
27
+ light: logoLightUrl,
28
+ dark: logoDarkUrl,
29
+ iconLight: logoIconLightUrl,
30
+ iconDark: logoIconDarkUrl,
31
+ }
21
32
  const LG_VIEWPORT_QUERY = '(min-width: 1024px)'
22
33
 
23
34
  export default {
@@ -45,6 +56,11 @@ export default {
45
56
  type: String,
46
57
  default: "",
47
58
  },
59
+ // { light, dark, iconLight, iconDark } — any subset overrides the default
60
+ logos: {
61
+ type: Object,
62
+ default: null,
63
+ },
48
64
  width: {
49
65
  type: String,
50
66
  default: "360px",
@@ -57,6 +73,10 @@ export default {
57
73
  type: Array,
58
74
  default: () => [],
59
75
  },
76
+ showMenuSearch: {
77
+ type: Boolean,
78
+ default: true,
79
+ },
60
80
  account: {
61
81
  type: Object,
62
82
  default: null,
@@ -83,7 +103,6 @@ export default {
83
103
  data() {
84
104
  return {
85
105
  demoAvatarUrl,
86
- logoBaseUrl: LOGO_BASE_URL,
87
106
  activeId: '',
88
107
  activeMenuTab: 'all',
89
108
  query: '',
@@ -100,6 +119,9 @@ export default {
100
119
  }
101
120
  },
102
121
  computed: {
122
+ logoSrc() {
123
+ return { ...DEFAULT_LOGOS, ...this.logos }
124
+ },
103
125
  sidebarWidthStyle() {
104
126
  return {
105
127
  width: this.collapsed ? this.collapsedWidth : this.width,
@@ -228,6 +250,9 @@ export default {
228
250
  activeMenuTab(value) {
229
251
  this.persistActiveMenuTab(value)
230
252
  },
253
+ showMenuSearch(value) {
254
+ if (!value) this.clearQuery()
255
+ },
231
256
  mobileOpen(isOpen) {
232
257
  if (isOpen) this.syncCollapsedForViewport()
233
258
  },
@@ -483,13 +508,13 @@ export default {
483
508
  <div class="relative flex items-center px-4 py-4" :class="collapsed ? 'justify-center' : 'gap-2.5'">
484
509
  <template v-if="collapsed">
485
510
  <img
486
- :src="`${logoBaseUrl}/logo_icon.jpg`"
511
+ :src="logoSrc.iconLight"
487
512
  alt="Ketekny logo"
488
513
  class="sidebar-logo-light size-9 shrink-0 rounded-lg object-contain cursor-pointer"
489
514
  @click="handleLogoClick"
490
515
  />
491
516
  <img
492
- :src="`${logoBaseUrl}/logo-icon-dark.png`"
517
+ :src="logoSrc.iconDark"
493
518
  alt="Ketekny logo"
494
519
  class="sidebar-logo-dark size-9 shrink-0 rounded-lg object-contain cursor-pointer"
495
520
  @click="handleLogoClick"
@@ -497,13 +522,13 @@ export default {
497
522
  </template>
498
523
  <template v-else>
499
524
  <img
500
- :src="`${logoBaseUrl}/logo-light.png`"
525
+ :src="logoSrc.light"
501
526
  alt="Ketekny logo"
502
527
  class="sidebar-logo-light min-w-0 flex-1 object-contain cursor-pointer"
503
528
  @click="handleLogoClick"
504
529
  />
505
530
  <img
506
- :src="`${logoBaseUrl}/logo-dark.png`"
531
+ :src="logoSrc.dark"
507
532
  alt="Ketekny logo"
508
533
  class="sidebar-logo-dark min-w-0 flex-1 object-contain cursor-pointer"
509
534
  @click="handleLogoClick"
@@ -568,7 +593,7 @@ export default {
568
593
  </div>
569
594
  </div>
570
595
 
571
- <div v-if="!collapsed && (!showMenuTabs || activeMenuTab === 'all')" class="px-1 pb-3">
596
+ <div v-if="showMenuSearch && !collapsed && (!showMenuTabs || activeMenuTab === 'all')" class="px-1 pb-3">
572
597
  <div class="relative">
573
598
  <Search
574
599
  class="pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[var(--sidebar-text-muted)]"
@@ -6,9 +6,11 @@
6
6
  :theme="theme"
7
7
  :title="title"
8
8
  :app-icon="appIcon"
9
+ :logos="logos"
9
10
  :width="width"
10
11
  :collapsed-width="collapsedWidth"
11
12
  :main-menu="mainMenu"
13
+ :show-menu-search="showMenuSearch"
12
14
  :mobile-open="mobileMenuOpen"
13
15
  :account="account"
14
16
  :contact-email="contactEmail"
@@ -70,6 +72,11 @@ export default {
70
72
  type: String,
71
73
  default: "",
72
74
  },
75
+ // { light, dark, iconLight, iconDark } — any subset overrides the default
76
+ logos: {
77
+ type: Object,
78
+ default: null,
79
+ },
73
80
  width: {
74
81
  type: String,
75
82
  default: "360px",
@@ -82,6 +89,10 @@ export default {
82
89
  type: Array,
83
90
  default: () => [],
84
91
  },
92
+ showMenuSearch: {
93
+ type: Boolean,
94
+ default: true,
95
+ },
85
96
  account: {
86
97
  type: Object,
87
98
  default: null,