@shival99/z-ui 1.0.2 → 1.0.4
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 +229 -67
- package/assets/css/base.css +52 -65
- package/assets/css/tailwind.css +3 -0
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +19 -19
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-code.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-icon.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-input.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-radio.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +5 -5
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-toast.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-providers.mjs +1 -1
- package/fesm2022/shival99-z-ui-providers.mjs.map +1 -1
- package/fesm2022/z-ui.mjs.map +1 -1
- package/package.json +4 -4
- package/types/shival99-z-ui-components-z-calendar.d.ts +6 -6
- package/types/shival99-z-ui-components-z-drawer.d.ts +1 -1
- package/types/shival99-z-ui-components-z-dropdown-menu.d.ts +1 -1
- package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
- package/types/shival99-z-ui-components-z-select.d.ts +2 -2
package/README.md
CHANGED
|
@@ -2,32 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@shival99/z-ui)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
[](https://angular.dev)
|
|
6
6
|
|
|
7
|
-
A comprehensive, high-performance UI component library built with Angular
|
|
7
|
+
A comprehensive, high-performance UI component library built with Angular 21+, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.
|
|
8
8
|
|
|
9
9
|
## ✨ Features
|
|
10
10
|
|
|
11
11
|
- 🎨 **40+ Components** - Buttons, Inputs, Tables, Modals, Calendars, and more
|
|
12
|
-
- 🌙 **Dark Mode** - Built-in theme support with
|
|
12
|
+
- 🌙 **Dark Mode** - Built-in theme support with 9 color themes
|
|
13
13
|
- ♿ **Accessible** - WCAG 2.1 compliant components
|
|
14
14
|
- 📱 **Responsive** - Mobile-first responsive design
|
|
15
15
|
- 🚀 **High Performance** - OnPush change detection, virtual scrolling
|
|
16
16
|
- 🔧 **Customizable** - CSS variables, class-variance-authority
|
|
17
|
-
- 📦 **Tree-shakable** -
|
|
17
|
+
- 📦 **Tree-shakable** - Import only what you need
|
|
18
18
|
- 🎯 **Type-safe** - Full TypeScript support with strict mode
|
|
19
|
-
- 🌐 **i18n Ready** - Built-in translation support
|
|
19
|
+
- 🌐 **i18n Ready** - Built-in translation support
|
|
20
20
|
|
|
21
21
|
## 📦 Installation
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
|
|
24
|
+
pnpm add @shival99/z-ui
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
### Peer Dependencies
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
|
|
30
|
+
pnpm add @angular/cdk @ng-icons/core @ng-icons/lucide @ng-icons/iconsax \
|
|
31
31
|
@tanstack/angular-table @tanstack/angular-virtual \
|
|
32
32
|
class-variance-authority clsx tailwind-merge \
|
|
33
33
|
ngx-mask ngx-scrollbar ngx-sonner ngxtension minisearch
|
|
@@ -35,28 +35,61 @@ npm install @angular/cdk @ng-icons/core @ng-icons/lucide @ng-icons/iconsax \
|
|
|
35
35
|
|
|
36
36
|
### Optional Dependencies
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
```bash
|
|
39
|
+
pnpm add ngx-quill quill # Rich Text Editor
|
|
40
|
+
pnpm add shiki dompurify # Syntax Highlighting
|
|
41
|
+
pnpm add echarts ngx-echarts # Charts
|
|
42
|
+
pnpm add @ngx-translate/core @ngx-translate/http-loader # i18n
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Tailwind CSS v4 Setup
|
|
46
|
+
|
|
47
|
+
Z-UI requires Tailwind CSS v4. Install the dependencies:
|
|
39
48
|
|
|
40
49
|
```bash
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
pnpm add -D tailwindcss @tailwindcss/postcss postcss
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Create `postcss.config.mjs` in your project root:
|
|
54
|
+
|
|
55
|
+
```javascript
|
|
56
|
+
export default {
|
|
57
|
+
plugins: {
|
|
58
|
+
'@tailwindcss/postcss': {},
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
```
|
|
43
62
|
|
|
44
|
-
|
|
45
|
-
|
|
63
|
+
Update your `project.json` or `angular.json` styles:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
"styles": [
|
|
67
|
+
"node_modules/@shival99/z-ui/assets/css/themes/green.css",
|
|
68
|
+
"node_modules/@shival99/z-ui/assets/css/tailwind.css",
|
|
69
|
+
"src/styles.scss"
|
|
70
|
+
]
|
|
71
|
+
```
|
|
46
72
|
|
|
47
|
-
|
|
48
|
-
npm install echarts ngx-echarts
|
|
73
|
+
Copy theme files to assets for lazy loading (optional):
|
|
49
74
|
|
|
50
|
-
|
|
51
|
-
|
|
75
|
+
```json
|
|
76
|
+
"assets": [
|
|
77
|
+
{
|
|
78
|
+
"glob": "*.css",
|
|
79
|
+
"input": "node_modules/@shival99/z-ui/assets/css/themes",
|
|
80
|
+
"output": "assets/css/themes"
|
|
81
|
+
}
|
|
82
|
+
]
|
|
52
83
|
```
|
|
53
84
|
|
|
54
85
|
## 🚀 Quick Start
|
|
55
86
|
|
|
56
|
-
###
|
|
87
|
+
### Import Components
|
|
57
88
|
|
|
58
89
|
```typescript
|
|
59
|
-
import { ZButtonComponent
|
|
90
|
+
import { ZButtonComponent } from '@shival99/z-ui/components/z-button';
|
|
91
|
+
import { ZInputComponent } from '@shival99/z-ui/components/z-input';
|
|
92
|
+
import { ZTableComponent } from '@shival99/z-ui/components/z-table';
|
|
60
93
|
|
|
61
94
|
@Component({
|
|
62
95
|
selector: 'app-root',
|
|
@@ -70,77 +103,206 @@ import { ZButtonComponent, ZInputComponent, ZTableComponent } from '@shival99/z-
|
|
|
70
103
|
export class AppComponent {}
|
|
71
104
|
```
|
|
72
105
|
|
|
73
|
-
###
|
|
106
|
+
### Configure Providers
|
|
74
107
|
|
|
75
|
-
|
|
108
|
+
```typescript
|
|
109
|
+
import { provideZTranslate } from '@shival99/z-ui/providers';
|
|
110
|
+
import { provideZNgxMask } from '@shival99/z-ui/providers';
|
|
76
111
|
|
|
77
|
-
|
|
78
|
-
|
|
112
|
+
export const appConfig: ApplicationConfig = {
|
|
113
|
+
providers: [provideZTranslate({ defaultLang: 'vi', langPath: '/assets/i18n/' }), provideZNgxMask()],
|
|
114
|
+
};
|
|
115
|
+
```
|
|
79
116
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
117
|
+
## 🧩 Components
|
|
118
|
+
|
|
119
|
+
| Category | Components |
|
|
120
|
+
| ----------- | ---------------------------------------------------------------- |
|
|
121
|
+
| **Form** | Input, Select, Checkbox, Radio, Switch, Calendar, Upload, Filter |
|
|
122
|
+
| **Data** | Table, Pagination, Code, Editor, Timeline |
|
|
123
|
+
| **Overlay** | Modal, Drawer, Toast, Tooltip, Popover, Dropdown Menu |
|
|
124
|
+
| **Layout** | Accordion, Tabs, Menu, Breadcrumb, Skeleton |
|
|
125
|
+
| **Display** | Button, Icon, Loading |
|
|
126
|
+
|
|
127
|
+
## 📁 Import Paths
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
import { ZButtonComponent } from '@shival99/z-ui/components/z-button';
|
|
131
|
+
import { ZTableComponent } from '@shival99/z-ui/components/z-table';
|
|
132
|
+
import { ZModalService } from '@shival99/z-ui/components/z-modal';
|
|
133
|
+
|
|
134
|
+
import { ZThemeService, ZCacheService } from '@shival99/z-ui/services';
|
|
135
|
+
import { provideZTranslate } from '@shival99/z-ui/providers';
|
|
136
|
+
import { zTransform, zMergeClasses } from '@shival99/z-ui/utils';
|
|
137
|
+
import { ZSafeHtmlPipe } from '@shival99/z-ui/pipes';
|
|
138
|
+
import { Z_UI_TRANSLATIONS } from '@shival99/z-ui/i18n';
|
|
86
139
|
```
|
|
87
140
|
|
|
88
|
-
|
|
141
|
+
## 🎨 Theming
|
|
142
|
+
|
|
143
|
+
Available themes: `green`, `orange`, `violet`, `neutral`, `zinc`, `slate`, `stone`, `gray`, `hospital`
|
|
89
144
|
|
|
90
145
|
```typescript
|
|
91
|
-
|
|
92
|
-
import { provideZTranslate } from '@shival99/z-ui';
|
|
146
|
+
import { ZThemeService } from '@shival99/z-ui/services';
|
|
93
147
|
|
|
94
|
-
export
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
148
|
+
export class AppComponent {
|
|
149
|
+
private themeService = inject(ZThemeService);
|
|
150
|
+
|
|
151
|
+
ngOnInit() {
|
|
152
|
+
this.themeService.setTheme('violet');
|
|
153
|
+
this.themeService.toggleDarkMode(true);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
102
156
|
```
|
|
103
157
|
|
|
104
|
-
##
|
|
158
|
+
## 🎛️ CSS Variables
|
|
159
|
+
|
|
160
|
+
Z-UI uses CSS variables for customization. You can override these variables in your project's CSS to customize the look and feel.
|
|
161
|
+
|
|
162
|
+
### Font Variables
|
|
163
|
+
|
|
164
|
+
Override these in your `styles.css` or `styles.scss`:
|
|
165
|
+
|
|
166
|
+
```css
|
|
167
|
+
:root {
|
|
168
|
+
--font-sans: 'Be Vietnam Pro', system-ui, -apple-system, sans-serif;
|
|
169
|
+
--font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'Courier New', monospace;
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Example - Using Inter font:
|
|
174
|
+
|
|
175
|
+
```css
|
|
176
|
+
:root {
|
|
177
|
+
--font-sans: 'Inter', system-ui, -apple-system, sans-serif;
|
|
178
|
+
}
|
|
179
|
+
```
|
|
105
180
|
|
|
106
|
-
###
|
|
181
|
+
### Theme Variables (Light Mode)
|
|
107
182
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
183
|
+
```css
|
|
184
|
+
:root {
|
|
185
|
+
--radius: 0.625rem;
|
|
186
|
+
--background: oklch(1 0 0);
|
|
187
|
+
--foreground: oklch(0.145 0.031 264.539);
|
|
188
|
+
--card: oklch(1 0 0);
|
|
189
|
+
--card-foreground: oklch(0.145 0.031 264.539);
|
|
190
|
+
--popover: oklch(1 0 0);
|
|
191
|
+
--popover-foreground: oklch(0.145 0.031 264.539);
|
|
192
|
+
--primary: oklch(0.422 0.095 166.913);
|
|
193
|
+
--primary-foreground: oklch(0.982 0.018 166.913);
|
|
194
|
+
--secondary: oklch(0.967 0.004 264.539);
|
|
195
|
+
--secondary-foreground: oklch(0.209 0.021 264.539);
|
|
196
|
+
--muted: oklch(0.967 0.004 264.539);
|
|
197
|
+
--muted-foreground: oklch(0.556 0.024 264.539);
|
|
198
|
+
--accent: oklch(0.967 0.004 264.539);
|
|
199
|
+
--accent-foreground: oklch(0.209 0.021 264.539);
|
|
200
|
+
--destructive: oklch(0.577 0.245 27.325);
|
|
201
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
202
|
+
--border: oklch(0.929 0.007 264.539);
|
|
203
|
+
--input: oklch(0.929 0.007 264.539);
|
|
204
|
+
--input-autofill: oklch(1 0 0);
|
|
205
|
+
--ring: oklch(0.422 0.095 166.913);
|
|
206
|
+
--chart-1: oklch(0.646 0.222 41.116);
|
|
207
|
+
--chart-2: oklch(0.6 0.118 184.704);
|
|
208
|
+
--chart-3: oklch(0.398 0.07 227.334);
|
|
209
|
+
--chart-4: oklch(0.828 0.189 84.429);
|
|
210
|
+
--chart-5: oklch(0.769 0.188 70.08);
|
|
211
|
+
--sidebar: oklch(0.985 0.001 264.539);
|
|
212
|
+
--sidebar-foreground: oklch(0.145 0.031 264.539);
|
|
213
|
+
--sidebar-primary: oklch(0.422 0.095 166.913);
|
|
214
|
+
--sidebar-primary-foreground: oklch(0.982 0.018 166.913);
|
|
215
|
+
--sidebar-accent: oklch(0.967 0.004 264.539);
|
|
216
|
+
--sidebar-accent-foreground: oklch(0.209 0.021 264.539);
|
|
217
|
+
--sidebar-border: oklch(0.929 0.007 264.539);
|
|
218
|
+
--sidebar-ring: oklch(0.422 0.095 166.913);
|
|
219
|
+
}
|
|
220
|
+
```
|
|
114
221
|
|
|
115
|
-
###
|
|
222
|
+
### Theme Variables (Dark Mode)
|
|
223
|
+
|
|
224
|
+
```css
|
|
225
|
+
.dark {
|
|
226
|
+
--background: oklch(0.145 0.031 264.539);
|
|
227
|
+
--foreground: oklch(0.985 0.001 264.539);
|
|
228
|
+
--card: oklch(0.209 0.021 264.539);
|
|
229
|
+
--card-foreground: oklch(0.985 0.001 264.539);
|
|
230
|
+
--popover: oklch(0.209 0.021 264.539);
|
|
231
|
+
--popover-foreground: oklch(0.985 0.001 264.539);
|
|
232
|
+
--primary: oklch(0.696 0.17 162.48);
|
|
233
|
+
--primary-foreground: oklch(0.209 0.021 264.539);
|
|
234
|
+
--secondary: oklch(0.268 0.019 264.539);
|
|
235
|
+
--secondary-foreground: oklch(0.985 0.001 264.539);
|
|
236
|
+
--muted: oklch(0.268 0.019 264.539);
|
|
237
|
+
--muted-foreground: oklch(0.708 0.019 264.539);
|
|
238
|
+
--accent: oklch(0.268 0.019 264.539);
|
|
239
|
+
--accent-foreground: oklch(0.985 0.001 264.539);
|
|
240
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
241
|
+
--destructive-foreground: oklch(0.985 0 0);
|
|
242
|
+
--border: oklch(1 0 0 / 10%);
|
|
243
|
+
--input: oklch(1 0 0 / 15%);
|
|
244
|
+
--input-autofill: oklch(0.19 0 0);
|
|
245
|
+
--ring: oklch(0.527 0.154 150.069);
|
|
246
|
+
--chart-1: oklch(0.488 0.243 264.376);
|
|
247
|
+
--chart-2: oklch(0.696 0.17 162.48);
|
|
248
|
+
--chart-3: oklch(0.769 0.188 70.08);
|
|
249
|
+
--chart-4: oklch(0.627 0.265 303.9);
|
|
250
|
+
--chart-5: oklch(0.645 0.246 16.439);
|
|
251
|
+
--sidebar: oklch(0.209 0.021 264.539);
|
|
252
|
+
--sidebar-foreground: oklch(0.985 0.001 264.539);
|
|
253
|
+
--sidebar-primary: oklch(0.696 0.17 162.48);
|
|
254
|
+
--sidebar-primary-foreground: oklch(0.209 0.021 264.539);
|
|
255
|
+
--sidebar-accent: oklch(0.268 0.019 264.539);
|
|
256
|
+
--sidebar-accent-foreground: oklch(0.985 0.001 264.539);
|
|
257
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
258
|
+
--sidebar-ring: oklch(0.527 0.154 150.069);
|
|
259
|
+
}
|
|
260
|
+
```
|
|
116
261
|
|
|
117
|
-
|
|
118
|
-
- `ZCodeComponent` - Syntax highlighted code blocks
|
|
119
|
-
- `ZBadgeComponent` - Status badges
|
|
262
|
+
### Scrollbar Variables
|
|
120
263
|
|
|
121
|
-
|
|
264
|
+
```css
|
|
265
|
+
:root {
|
|
266
|
+
--scrollbar-track-color: transparent;
|
|
267
|
+
--scrollbar-track-shape: 5px;
|
|
268
|
+
--scrollbar-track-thickness: 7px;
|
|
269
|
+
--scrollbar-thumb-color: #d1d5db;
|
|
270
|
+
--scrollbar-thumb-hover-color: #9ca3af;
|
|
271
|
+
--scrollbar-thumb-shape: 5px;
|
|
272
|
+
--scrollbar-thumb-min-size: 40;
|
|
273
|
+
--scrollbar-hover-opacity-transition-leave-duration: 0.3s;
|
|
274
|
+
--scrollbar-hover-opacity-transition-leave-delay: 0.5s;
|
|
275
|
+
}
|
|
122
276
|
|
|
123
|
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
|
|
277
|
+
.dark {
|
|
278
|
+
--scrollbar-thumb-color: #4b5563;
|
|
279
|
+
--scrollbar-thumb-hover-color: #6b7280;
|
|
280
|
+
}
|
|
281
|
+
```
|
|
127
282
|
|
|
128
|
-
###
|
|
283
|
+
### Example: Custom Override
|
|
129
284
|
|
|
130
|
-
|
|
131
|
-
- `ZLoadingComponent` - Loading spinners
|
|
132
|
-
- `ZTooltipDirective` - Tooltips
|
|
133
|
-
- `ZPopoverDirective` - Popovers
|
|
285
|
+
Create a custom theme by overriding variables in your project:
|
|
134
286
|
|
|
135
|
-
|
|
287
|
+
```css
|
|
288
|
+
/* styles.css */
|
|
289
|
+
:root {
|
|
290
|
+
/* Custom font */
|
|
291
|
+
--font-sans: 'Roboto', system-ui, sans-serif;
|
|
136
292
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
-
|
|
293
|
+
/* Custom primary color */
|
|
294
|
+
--primary: oklch(0.6 0.2 240);
|
|
295
|
+
--primary-foreground: oklch(1 0 0);
|
|
140
296
|
|
|
141
|
-
|
|
297
|
+
/* Custom border radius */
|
|
298
|
+
--radius: 0.5rem;
|
|
299
|
+
}
|
|
142
300
|
|
|
143
|
-
|
|
301
|
+
.dark {
|
|
302
|
+
/* Dark mode primary color */
|
|
303
|
+
--primary: oklch(0.7 0.2 240);
|
|
304
|
+
}
|
|
305
|
+
```
|
|
144
306
|
|
|
145
307
|
## 📄 License
|
|
146
308
|
|
package/assets/css/base.css
CHANGED
|
@@ -1,76 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/* ===== Custom Scrollbar Styles ===== */
|
|
17
|
-
/* * {
|
|
18
|
-
scrollbar-width: auto;
|
|
19
|
-
scrollbar-color: #d1d5db transparent;
|
|
20
|
-
}
|
|
1
|
+
:root {
|
|
2
|
+
--font-sans: 'Be Vietnam Pro', system-ui, -apple-system, sans-serif;
|
|
3
|
+
--font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'Courier New', monospace;
|
|
4
|
+
--scrollbar-track-color: transparent;
|
|
5
|
+
--scrollbar-track-shape: 5px;
|
|
6
|
+
--scrollbar-track-thickness: 7px;
|
|
7
|
+
--scrollbar-thumb-color: #d1d5db;
|
|
8
|
+
--scrollbar-thumb-hover-color: #9ca3af;
|
|
9
|
+
--scrollbar-thumb-shape: 5px;
|
|
10
|
+
--scrollbar-thumb-min-size: 40;
|
|
11
|
+
--scrollbar-hover-opacity-transition-leave-duration: 0.3s;
|
|
12
|
+
--scrollbar-hover-opacity-transition-leave-delay: 0.5s;
|
|
13
|
+
}
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
* {
|
|
16
|
+
border-color: var(--border);
|
|
17
|
+
outline-color: color-mix(in srgb, var(--ring) 50%, transparent);
|
|
18
|
+
}
|
|
25
19
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
body {
|
|
21
|
+
background-color: var(--background);
|
|
22
|
+
color: var(--foreground);
|
|
23
|
+
font-family: var(--font-sans);
|
|
24
|
+
-webkit-font-smoothing: antialiased;
|
|
25
|
+
-moz-osx-font-smoothing: grayscale;
|
|
26
|
+
}
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
::-webkit-scrollbar {
|
|
29
|
+
width: 7px;
|
|
30
|
+
height: 7px;
|
|
31
|
+
}
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
33
|
+
::-webkit-scrollbar-track {
|
|
34
|
+
background: transparent;
|
|
35
|
+
}
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
::-webkit-scrollbar-thumb {
|
|
38
|
+
background-color: #d1d5db;
|
|
39
|
+
border-radius: 5px;
|
|
40
|
+
}
|
|
45
41
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
::-webkit-scrollbar-thumb:hover,
|
|
43
|
+
::-webkit-scrollbar-thumb:active {
|
|
44
|
+
background-color: #9ca3af;
|
|
45
|
+
}
|
|
49
46
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
47
|
+
::-webkit-scrollbar-corner {
|
|
48
|
+
background: transparent;
|
|
49
|
+
}
|
|
54
50
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
51
|
+
.dark ::-webkit-scrollbar-thumb {
|
|
52
|
+
background-color: #4b5563;
|
|
53
|
+
}
|
|
59
54
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
--scrollbar-thumb-color: #d1d5db;
|
|
65
|
-
--scrollbar-thumb-hover-color: #9ca3af;
|
|
66
|
-
--scrollbar-thumb-shape: 5px;
|
|
67
|
-
--scrollbar-thumb-min-size: 40;
|
|
68
|
-
--scrollbar-hover-opacity-transition-leave-duration: 0.3s;
|
|
69
|
-
--scrollbar-hover-opacity-transition-leave-delay: 0.5s;
|
|
70
|
-
}
|
|
55
|
+
.dark ::-webkit-scrollbar-thumb:hover,
|
|
56
|
+
.dark ::-webkit-scrollbar-thumb:active {
|
|
57
|
+
background-color: #6b7280;
|
|
58
|
+
}
|
|
71
59
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
60
|
+
.dark {
|
|
61
|
+
--scrollbar-thumb-color: #4b5563;
|
|
62
|
+
--scrollbar-thumb-hover-color: #6b7280;
|
|
76
63
|
}
|
package/assets/css/tailwind.css
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, inject, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, contentChildren, signal } from '@angular/core';
|
|
3
|
-
import { cva } from 'class-variance-authority';
|
|
4
3
|
import { zTransform, zMergeClasses } from '@shival99/z-ui/utils';
|
|
5
4
|
import { ZIconComponent } from '@shival99/z-ui/components/z-icon';
|
|
5
|
+
import { cva } from 'class-variance-authority';
|
|
6
6
|
|
|
7
7
|
const zAccordionVariants = cva(['block w-full'], {
|
|
8
8
|
variants: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-accordion.mjs","sources":["../../../../libs/core-ui/components/z-accordion/z-accordion.variants.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.html","../../../../libs/core-ui/components/z-accordion/z-accordion.component.ts","../../../../libs/core-ui/components/z-accordion/shival99-z-ui-components-z-accordion.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zAccordionVariants = cva(['block w-full'], {\n variants: {\n zType: {\n default: 'border border-border rounded-lg overflow-hidden',\n ghost: '',\n outline: 'border border-border rounded-lg overflow-hidden',\n },\n },\n defaultVariants: {\n zType: 'default',\n },\n});\n\nexport const zAccordionItemVariants = cva(['block group border-b border-border last:border-b-0'], {\n variants: {\n isDisabled: {\n true: 'opacity-50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n isDisabled: false,\n },\n});\n\nexport const zAccordionTriggerVariants = cva(\n [\n 'flex w-full items-center justify-between py-3 px-3 text-sm font-medium',\n 'transition-colors duration-200 cursor-pointer',\n 'hover:bg-muted/50',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ],\n {\n variants: {\n isOpen: {\n true: 'text-foreground',\n false: 'text-foreground',\n },\n },\n defaultVariants: {\n isOpen: false,\n },\n }\n);\n\nexport const zAccordionContentVariants = cva(['overflow-hidden text-sm'], {\n variants: {\n isOpen: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n isOpen: false,\n },\n});\n\nexport type ZAccordionVariants = VariantProps<typeof zAccordionVariants>;\nexport type ZAccordionItemVariants = VariantProps<typeof zAccordionItemVariants>;\nexport type ZAccordionTriggerVariants = VariantProps<typeof zAccordionTriggerVariants>;\nexport type ZAccordionContentVariants = VariantProps<typeof zAccordionContentVariants>;\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionComponent } from './z-accordion.component';\nimport { zAccordionItemVariants, zAccordionTriggerVariants } from './z-accordion.variants';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\n\n@Component({\n selector: 'z-accordion-item',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-accordion-item.component.html',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'itemClasses()',\n },\n})\nexport class ZAccordionItemComponent {\n public readonly class = input<ClassValue>('');\n public readonly zId = input.required<string>();\n public readonly zTitle = input.required<string>();\n public readonly zDisabled = input(false, { transform: zTransform });\n\n private readonly _accordion = inject(ZAccordionComponent);\n\n protected readonly isOpen = computed(() => this._accordion.isItemOpen(this.zId()));\n\n protected readonly itemClasses = computed(() =>\n zMergeClasses(zAccordionItemVariants({ isDisabled: this.zDisabled() }), this.class())\n );\n\n protected readonly triggerClasses = computed(() => zAccordionTriggerVariants({ isOpen: this.isOpen() }));\n\n protected toggle(): void {\n if (this.zDisabled()) {\n return;\n }\n this._accordion.toggleItem(this.zId());\n }\n}\n","<div\n [class]=\"triggerClasses()\"\n [class.bg-muted/50]=\"isOpen()\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"isOpen()\">\n <span class=\"flex items-center gap-2\">\n <ng-content select=\"[zAccordionIcon]\" />\n <span>{{ zTitle() }}</span>\n </span>\n <z-icon\n zType=\"lucideChevronDown\"\n zSize=\"16\"\n class=\"text-muted-foreground shrink-0 transition-transform duration-200\"\n [class.rotate-180]=\"isOpen()\" />\n</div>\n\n<div class=\"z-accordion-content\" [class.z-accordion-content-open]=\"isOpen()\">\n <div class=\"z-accordion-content-inner\">\n <div class=\"mt-2 px-4 pb-4\">\n <ng-content />\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionItemComponent } from './z-accordion-item.component';\nimport { zAccordionVariants, type ZAccordionVariants } from './z-accordion.variants';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\n\n@Component({\n selector: 'z-accordion',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'zClasses()',\n },\n})\nexport class ZAccordionComponent {\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZAccordionVariants['zType']>('default');\n public readonly zMultiple = input(false, { transform: zTransform });\n public readonly zCollapsible = input(true, { transform: zTransform });\n\n protected readonly items = contentChildren(ZAccordionItemComponent);\n private readonly _openItems = signal<Set<string>>(new Set());\n\n protected readonly zClasses = computed(() =>\n zMergeClasses(zAccordionVariants({ zType: this.zType() }), this.class())\n );\n\n public isItemOpen(itemId: string): boolean {\n return this._openItems().has(itemId);\n }\n\n public toggleItem(itemId: string): void {\n const current = new Set(this._openItems());\n const isCurrentlyOpen = current.has(itemId);\n\n if (isCurrentlyOpen && this.zCollapsible()) {\n current.delete(itemId);\n this._openItems.set(current);\n return;\n }\n\n if (isCurrentlyOpen) {\n return;\n }\n\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public openItem(itemId: string): void {\n const current = new Set(this._openItems());\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public closeItem(itemId: string): void {\n if (!this.zCollapsible()) {\n return;\n }\n const current = new Set(this._openItems());\n current.delete(itemId);\n this._openItems.set(current);\n }\n\n public closeAll(): void {\n if (!this.zCollapsible()) {\n return;\n }\n this._openItems.set(new Set());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-accordion.mjs","sources":["../../../../libs/core-ui/components/z-accordion/z-accordion.variants.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.ts","../../../../libs/core-ui/components/z-accordion/z-accordion-item.component.html","../../../../libs/core-ui/components/z-accordion/z-accordion.component.ts","../../../../libs/core-ui/components/z-accordion/shival99-z-ui-components-z-accordion.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zAccordionVariants = cva(['block w-full'], {\n variants: {\n zType: {\n default: 'border border-border rounded-lg overflow-hidden',\n ghost: '',\n outline: 'border border-border rounded-lg overflow-hidden',\n },\n },\n defaultVariants: {\n zType: 'default',\n },\n});\n\nexport const zAccordionItemVariants = cva(['block group border-b border-border last:border-b-0'], {\n variants: {\n isDisabled: {\n true: 'opacity-50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n isDisabled: false,\n },\n});\n\nexport const zAccordionTriggerVariants = cva(\n [\n 'flex w-full items-center justify-between py-3 px-3 text-sm font-medium',\n 'transition-colors duration-200 cursor-pointer',\n 'hover:bg-muted/50',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ],\n {\n variants: {\n isOpen: {\n true: 'text-foreground',\n false: 'text-foreground',\n },\n },\n defaultVariants: {\n isOpen: false,\n },\n }\n);\n\nexport const zAccordionContentVariants = cva(['overflow-hidden text-sm'], {\n variants: {\n isOpen: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n isOpen: false,\n },\n});\n\nexport type ZAccordionVariants = VariantProps<typeof zAccordionVariants>;\nexport type ZAccordionItemVariants = VariantProps<typeof zAccordionItemVariants>;\nexport type ZAccordionTriggerVariants = VariantProps<typeof zAccordionTriggerVariants>;\nexport type ZAccordionContentVariants = VariantProps<typeof zAccordionContentVariants>;\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionComponent } from './z-accordion.component';\nimport { zAccordionItemVariants, zAccordionTriggerVariants } from './z-accordion.variants';\n\n@Component({\n selector: 'z-accordion-item',\n imports: [ZIconComponent],\n standalone: true,\n templateUrl: './z-accordion-item.component.html',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'itemClasses()',\n },\n})\nexport class ZAccordionItemComponent {\n public readonly class = input<ClassValue>('');\n public readonly zId = input.required<string>();\n public readonly zTitle = input.required<string>();\n public readonly zDisabled = input(false, { transform: zTransform });\n\n private readonly _accordion = inject(ZAccordionComponent);\n\n protected readonly isOpen = computed(() => this._accordion.isItemOpen(this.zId()));\n\n protected readonly itemClasses = computed(() =>\n zMergeClasses(zAccordionItemVariants({ isDisabled: this.zDisabled() }), this.class())\n );\n\n protected readonly triggerClasses = computed(() => zAccordionTriggerVariants({ isOpen: this.isOpen() }));\n\n protected toggle(): void {\n if (this.zDisabled()) {\n return;\n }\n this._accordion.toggleItem(this.zId());\n }\n}\n","<div\n [class]=\"triggerClasses()\"\n [class.bg-muted/50]=\"isOpen()\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-expanded]=\"isOpen()\">\n <span class=\"flex items-center gap-2\">\n <ng-content select=\"[zAccordionIcon]\" />\n <span>{{ zTitle() }}</span>\n </span>\n <z-icon\n zType=\"lucideChevronDown\"\n zSize=\"16\"\n class=\"text-muted-foreground shrink-0 transition-transform duration-200\"\n [class.rotate-180]=\"isOpen()\" />\n</div>\n\n<div class=\"z-accordion-content\" [class.z-accordion-content-open]=\"isOpen()\">\n <div class=\"z-accordion-content-inner\">\n <div class=\"mt-2 px-4 pb-4\">\n <ng-content />\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZAccordionItemComponent } from './z-accordion-item.component';\nimport { zAccordionVariants, type ZAccordionVariants } from './z-accordion.variants';\n\n@Component({\n selector: 'z-accordion',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './z-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'zClasses()',\n },\n})\nexport class ZAccordionComponent {\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZAccordionVariants['zType']>('default');\n public readonly zMultiple = input(false, { transform: zTransform });\n public readonly zCollapsible = input(true, { transform: zTransform });\n\n protected readonly items = contentChildren(ZAccordionItemComponent);\n private readonly _openItems = signal<Set<string>>(new Set());\n\n protected readonly zClasses = computed(() =>\n zMergeClasses(zAccordionVariants({ zType: this.zType() }), this.class())\n );\n\n public isItemOpen(itemId: string): boolean {\n return this._openItems().has(itemId);\n }\n\n public toggleItem(itemId: string): void {\n const current = new Set(this._openItems());\n const isCurrentlyOpen = current.has(itemId);\n\n if (isCurrentlyOpen && this.zCollapsible()) {\n current.delete(itemId);\n this._openItems.set(current);\n return;\n }\n\n if (isCurrentlyOpen) {\n return;\n }\n\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public openItem(itemId: string): void {\n const current = new Set(this._openItems());\n if (!this.zMultiple()) {\n current.clear();\n }\n current.add(itemId);\n this._openItems.set(current);\n }\n\n public closeItem(itemId: string): void {\n if (!this.zCollapsible()) {\n return;\n }\n const current = new Set(this._openItems());\n current.delete(itemId);\n this._openItems.set(current);\n }\n\n public closeAll(): void {\n if (!this.zCollapsible()) {\n return;\n }\n this._openItems.set(new Set());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, output, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { RouterLink } from '@angular/router';
|
|
4
|
-
import { cva } from 'class-variance-authority';
|
|
5
|
-
import { zTransform, zMergeClasses } from '@shival99/z-ui/utils';
|
|
6
4
|
import { ZIconComponent } from '@shival99/z-ui/components/z-icon';
|
|
5
|
+
import { zTransform, zMergeClasses } from '@shival99/z-ui/utils';
|
|
6
|
+
import { cva } from 'class-variance-authority';
|
|
7
7
|
|
|
8
8
|
const zBreadcrumbVariants = cva(['flex items-center text-sm'], {
|
|
9
9
|
variants: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-breadcrumb.mjs","sources":["../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.variants.ts","../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.component.ts","../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.component.html","../../../../libs/core-ui/components/z-breadcrumb/shival99-z-ui-components-z-breadcrumb.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zBreadcrumbVariants = cva(['flex items-center text-sm'], {\n variants: {\n zSize: {\n sm: 'text-xs gap-1',\n default: 'text-sm gap-1.5',\n lg: 'text-base gap-2',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport const zBreadcrumbItemVariants = cva(['inline-flex items-center gap-1 transition-colors duration-150'], {\n variants: {\n isActive: {\n true: 'text-foreground font-medium',\n false: 'text-muted-foreground hover:text-foreground cursor-pointer',\n },\n isDisabled: {\n true: 'text-muted-foreground/50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n isActive: false,\n isDisabled: false,\n },\n});\n\nexport type ZBreadcrumbVariants = VariantProps<typeof zBreadcrumbVariants>;\nexport type ZBreadcrumbItemVariants = VariantProps<typeof zBreadcrumbItemVariants>;\n","import { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-breadcrumb.mjs","sources":["../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.variants.ts","../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.component.ts","../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.component.html","../../../../libs/core-ui/components/z-breadcrumb/shival99-z-ui-components-z-breadcrumb.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zBreadcrumbVariants = cva(['flex items-center text-sm'], {\n variants: {\n zSize: {\n sm: 'text-xs gap-1',\n default: 'text-sm gap-1.5',\n lg: 'text-base gap-2',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport const zBreadcrumbItemVariants = cva(['inline-flex items-center gap-1 transition-colors duration-150'], {\n variants: {\n isActive: {\n true: 'text-foreground font-medium',\n false: 'text-muted-foreground hover:text-foreground cursor-pointer',\n },\n isDisabled: {\n true: 'text-muted-foreground/50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n isActive: false,\n isDisabled: false,\n },\n});\n\nexport type ZBreadcrumbVariants = VariantProps<typeof zBreadcrumbVariants>;\nexport type ZBreadcrumbItemVariants = VariantProps<typeof zBreadcrumbItemVariants>;\n","import { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIconVariants, ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type { ZBreadcrumbItem } from './z-breadcrumb.types';\nimport { zBreadcrumbItemVariants, zBreadcrumbVariants, type ZBreadcrumbVariants } from './z-breadcrumb.variants';\n\n@Component({\n selector: 'z-breadcrumb',\n imports: [ZIconComponent, RouterLink],\n standalone: true,\n templateUrl: './z-breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'zClasses()',\n },\n})\nexport class ZBreadcrumbComponent {\n public readonly class = input<ClassValue>('');\n public readonly zItems = input<ZBreadcrumbItem[]>([]);\n public readonly zSize = input<ZBreadcrumbVariants['zSize']>('default');\n public readonly zSeparator = input<ZIcon>('lucideChevronRight');\n public readonly zSeparatorSize = input<ZIconVariants['zSize']>('14');\n public readonly zHomeIcon = input<ZIcon | undefined>(undefined);\n public readonly zShowHome = input(false, { transform: zTransform });\n\n public readonly zItemClick = output<ZBreadcrumbItem>();\n\n protected readonly zClasses = computed(() =>\n zMergeClasses(zBreadcrumbVariants({ zSize: this.zSize() }), this.class())\n );\n\n protected getItemClasses(item: ZBreadcrumbItem, isLast: boolean): string {\n return zBreadcrumbItemVariants({\n isActive: isLast,\n isDisabled: item.disabled ?? false,\n });\n }\n\n protected onItemClick(item: ZBreadcrumbItem, isLast: boolean): void {\n if (isLast || item.disabled) {\n return;\n }\n\n this.zItemClick.emit(item);\n }\n}\n","<nav aria-label=\"Breadcrumb\">\n <ol class=\"flex items-center\">\n @if (zShowHome() && zHomeIcon()) {\n <li class=\"flex items-center\">\n <span\n class=\"text-muted-foreground hover:text-foreground cursor-pointer transition-colors\"\n (click)=\"onItemClick({ label: 'Home', path: '/' }, false)\">\n <z-icon [zType]=\"zHomeIcon()!\" [zSize]=\"zSeparatorSize()\" />\n </span>\n @if (zItems().length > 0) {\n <z-icon [zType]=\"zSeparator()\" [zSize]=\"zSeparatorSize()\" class=\"text-muted-foreground/50 mx-1.5 shrink-0\" />\n }\n </li>\n }\n\n @for (item of zItems(); track item.label; let isLast = $last; let isFirst = $first) {\n <li class=\"flex items-center\">\n @if (item.path && !isLast && !item.disabled) {\n <a [routerLink]=\"item.path\" [class]=\"getItemClasses(item, isLast)\" (click)=\"onItemClick(item, isLast)\">\n @if (item.icon) {\n <z-icon [zType]=\"item.icon\" [zSize]=\"zSeparatorSize()\" />\n }\n <span>{{ item.label }}</span>\n </a>\n } @else {\n <span [class]=\"getItemClasses(item, isLast)\" (click)=\"onItemClick(item, isLast)\">\n @if (item.icon) {\n <z-icon [zType]=\"item.icon\" [zSize]=\"zSeparatorSize()\" />\n }\n <span>{{ item.label }}</span>\n </span>\n }\n\n @if (!isLast) {\n <z-icon [zType]=\"zSeparator()\" [zSize]=\"zSeparatorSize()\" class=\"text-muted-foreground/50 mx-1.5 shrink-0\" />\n }\n </li>\n }\n </ol>\n</nav>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|