@amirjalili1374/ui-kit 1.2.3 → 1.3.1

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/README.md CHANGED
@@ -63,7 +63,14 @@ You can import components individually for better tree-shaking:
63
63
 
64
64
  ```vue
65
65
  <script setup lang="ts">
66
- import { CustomDataTable, BaseIcon, ShamsiDatePicker } from '@amirjalili1374/ui-kit';
66
+ 1import {
67
+ CustomDataTable,
68
+ BaseIcon,
69
+ ShamsiDatePicker,
70
+ AppSidebar,
71
+ AppHeader
72
+ } from '@amirjalili1374/ui-kit';
73
+ import type { MenuItem, HeaderAction } from '@amirjalili1374/ui-kit';
67
74
  </script>
68
75
 
69
76
  <template>
@@ -72,6 +79,76 @@ import { CustomDataTable, BaseIcon, ShamsiDatePicker } from '@amirjalili1374/ui-
72
79
  </template>
73
80
  ```
74
81
 
82
+ ### Use Layout Components (Sidebar & Header)
83
+
84
+ ```vue
85
+ <script setup lang="ts">
86
+ import { AppSidebar, AppHeader, useCustomizerStore } from '@amirjalili1374/ui-kit';
87
+ import type { MenuItem, HeaderAction } from '@amirjalili1374/ui-kit';
88
+
89
+ const customizer = useCustomizerStore();
90
+
91
+ // Define menu items
92
+ const menuItems: MenuItem[] = [
93
+ {
94
+ title: 'داشبورد',
95
+ icon: 'mdi-home',
96
+ to: '/dashboard'
97
+ },
98
+ {
99
+ title: 'کاربران',
100
+ icon: 'mdi-account-group',
101
+ items: [
102
+ { title: 'لیست کاربران', icon: 'mdi-account-multiple', to: '/users' },
103
+ { title: 'افزودن کاربر', icon: 'mdi-account-plus', to: '/users/create' }
104
+ ]
105
+ },
106
+ {
107
+ title: 'تنظیمات',
108
+ icon: 'mdi-cog',
109
+ to: '/settings',
110
+ chip: { content: '3', color: 'error' }
111
+ }
112
+ ];
113
+
114
+ // Define header actions
115
+ const headerActions: HeaderAction[] = [
116
+ {
117
+ icon: 'mdi-plus',
118
+ label: 'ایجاد',
119
+ color: 'primary',
120
+ onClick: () => console.log('Create clicked')
121
+ }
122
+ ];
123
+ </script>
124
+
125
+ <template>
126
+ <v-app>
127
+ <AppHeader
128
+ title="پنل مدیریت"
129
+ subtitle="خوش آمدید"
130
+ :actions="headerActions"
131
+ show-search
132
+ show-profile
133
+ profile-name="کاربر"
134
+ :profile-avatar="/avatar.jpg"
135
+ />
136
+
137
+ <AppSidebar
138
+ :menu-items="menuItems"
139
+ logo="/logo.svg"
140
+ logo-light="/logo-light.svg"
141
+ logo-text="UI Kit"
142
+ :mini-sidebar="customizer.mini_sidebar"
143
+ />
144
+
145
+ <v-main>
146
+ <router-view />
147
+ </v-main>
148
+ </v-app>
149
+ </template>
150
+ ```
151
+
75
152
  ### Use Composables
76
153
 
77
154
  ```typescript
@@ -191,6 +268,10 @@ const formatted = formatNumberWithCommas(1234567); // "1,234,567"
191
268
  - `AppStepper` - Step-by-step wizard component
192
269
  - `Loading` - Loading overlay component
193
270
 
271
+ ### Layout Components
272
+ - `AppSidebar` - Navigation sidebar with menu items, logo, and mini sidebar support
273
+ - `AppHeader` - Top header bar with search, notifications, profile menu, and custom actions
274
+
194
275
  ## Available Composables
195
276
 
196
277
  - `useDataTable` - Server-side data table with pagination and filtering
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Header action button type
3
+ */
4
+ export interface HeaderAction {
5
+ icon?: string;
6
+ label?: string;
7
+ color?: string;
8
+ variant?: string;
9
+ size?: string;
10
+ badge?: string | number;
11
+ badgeColor?: string;
12
+ onClick: () => void;
13
+ disabled?: boolean;
14
+ tooltip?: string;
15
+ }
16
+ interface Props {
17
+ title?: string;
18
+ subtitle?: string;
19
+ showSidebarToggle?: boolean;
20
+ showSearch?: boolean;
21
+ searchPlaceholder?: string;
22
+ searchValue?: string;
23
+ showNotifications?: boolean;
24
+ notificationCount?: number;
25
+ showProfile?: boolean;
26
+ profileAvatar?: string;
27
+ profileName?: string;
28
+ profileMenu?: Array<{
29
+ title: string;
30
+ icon?: string;
31
+ to?: string;
32
+ href?: string;
33
+ divider?: boolean;
34
+ action?: () => void;
35
+ }>;
36
+ actions?: HeaderAction[];
37
+ color?: string;
38
+ elevation?: number;
39
+ height?: number | string;
40
+ class?: string;
41
+ }
42
+ declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
43
+ search: (value: string) => any;
44
+ "update:searchValue": (value: string) => any;
45
+ "toggle-sidebar": () => any;
46
+ }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
47
+ onSearch?: (value: string) => any;
48
+ "onUpdate:searchValue"?: (value: string) => any;
49
+ "onToggle-sidebar"?: () => any;
50
+ }>, {
51
+ color: string;
52
+ height: string | number;
53
+ elevation: number;
54
+ actions: HeaderAction[];
55
+ showSidebarToggle: boolean;
56
+ showSearch: boolean;
57
+ searchPlaceholder: string;
58
+ showNotifications: boolean;
59
+ notificationCount: number;
60
+ showProfile: boolean;
61
+ profileMenu: {
62
+ title: string;
63
+ icon?: string;
64
+ to?: string;
65
+ href?: string;
66
+ divider?: boolean;
67
+ action?: () => void;
68
+ }[];
69
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
70
+ export default _default;
71
+ //# sourceMappingURL=AppHeader.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeader.vue.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AppHeader.vue"],"names":[],"mappings":"AAoRA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAonBD,wBAQG"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Menu item type definition
3
+ */
4
+ export interface MenuItem {
5
+ title: string;
6
+ icon?: string;
7
+ to?: string;
8
+ href?: string;
9
+ items?: MenuItem[];
10
+ chip?: {
11
+ content: string | number;
12
+ color?: string;
13
+ };
14
+ divider?: boolean;
15
+ disabled?: boolean;
16
+ }
17
+ interface Props {
18
+ menuItems?: MenuItem[];
19
+ logo?: string;
20
+ logoLight?: string;
21
+ logoText?: string;
22
+ miniSidebar?: boolean;
23
+ permanent?: boolean;
24
+ temporary?: boolean;
25
+ rail?: boolean;
26
+ location?: 'left' | 'right';
27
+ width?: number | string;
28
+ railWidth?: number | string;
29
+ }
30
+ declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
31
+ width: string | number;
32
+ location: "left" | "right";
33
+ menuItems: MenuItem[];
34
+ miniSidebar: boolean;
35
+ permanent: boolean;
36
+ temporary: boolean;
37
+ rail: boolean;
38
+ railWidth: string | number;
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
40
+ export default _default;
41
+ //# sourceMappingURL=AppSidebar.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSidebar.vue.d.ts","sourceRoot":"","sources":["../../../src/components/layout/AppSidebar.vue"],"names":[],"mappings":"AAyOA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;;;;;;;;;;;AAoaD,wBAOG"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,10 @@ export { default as UiParentCard } from './components/shared/UiParentCard.vue';
20
20
  export { default as VPriceTextField } from './components/shared/VPriceTextField.vue';
21
21
  export { default as AppStepper } from './components/common/AppStepper.vue';
22
22
  export { default as Loading } from './components/Loading.vue';
23
+ export { default as AppSidebar } from './components/layout/AppSidebar.vue';
24
+ export { default as AppHeader } from './components/layout/AppHeader.vue';
25
+ export type { MenuItem } from './components/layout/AppSidebar.vue';
26
+ export type { HeaderAction } from './components/layout/AppHeader.vue';
23
27
  export { useDataTable } from './composables/useDataTable';
24
28
  export type { DataTableOptions, PaginationState } from './composables/useDataTable';
25
29
  export { useTableActions } from './composables/useTableActions';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,mBAAmB,CAAC;AAO3B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAGrF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAO9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,cAAc,+BAA+B,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AASxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAOnE,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMvE,cAAc,+BAA+B,CAAC;AAM9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAUzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,+BAA+B,CAAC;AAK9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG/B;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,QAI/B;;;;AAGD,wBAEE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,mBAAmB,CAAC;AAO3B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAGrF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOtE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,cAAc,+BAA+B,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AASxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAOnE,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMvE,cAAc,+BAA+B,CAAC;AAM9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAUzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,+BAA+B,CAAC;AAK9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG/B;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,QAI/B;;;;AAGD,wBAEE"}