@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.
Files changed (63) hide show
  1. package/README.md +229 -67
  2. package/assets/css/base.css +52 -65
  3. package/assets/css/tailwind.css +3 -0
  4. package/fesm2022/shival99-z-ui-components-z-accordion.mjs +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +2 -2
  7. package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
  8. package/fesm2022/shival99-z-ui-components-z-button.mjs +2 -2
  9. package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +19 -19
  11. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +2 -2
  13. package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
  14. package/fesm2022/shival99-z-ui-components-z-code.mjs +2 -2
  15. package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
  16. package/fesm2022/shival99-z-ui-components-z-drawer.mjs +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
  18. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-editor.mjs +3 -3
  20. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-filter.mjs +3 -3
  22. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-components-z-icon.mjs +1 -1
  24. package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
  25. package/fesm2022/shival99-z-ui-components-z-input.mjs +4 -4
  26. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  27. package/fesm2022/shival99-z-ui-components-z-loading.mjs +1 -1
  28. package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
  29. package/fesm2022/shival99-z-ui-components-z-menu.mjs +4 -4
  30. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  31. package/fesm2022/shival99-z-ui-components-z-modal.mjs +3 -3
  32. package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
  33. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
  34. package/fesm2022/shival99-z-ui-components-z-popover.mjs +1 -1
  35. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  36. package/fesm2022/shival99-z-ui-components-z-radio.mjs +1 -1
  37. package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
  38. package/fesm2022/shival99-z-ui-components-z-select.mjs +5 -5
  39. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  40. package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
  41. package/fesm2022/shival99-z-ui-components-z-switch.mjs +1 -1
  42. package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
  43. package/fesm2022/shival99-z-ui-components-z-table.mjs +1 -1
  44. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  45. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +2 -2
  46. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  47. package/fesm2022/shival99-z-ui-components-z-timeline.mjs +2 -2
  48. package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
  49. package/fesm2022/shival99-z-ui-components-z-toast.mjs +2 -2
  50. package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
  51. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +2 -2
  52. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
  53. package/fesm2022/shival99-z-ui-components-z-upload.mjs +3 -3
  54. package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
  55. package/fesm2022/shival99-z-ui-providers.mjs +1 -1
  56. package/fesm2022/shival99-z-ui-providers.mjs.map +1 -1
  57. package/fesm2022/z-ui.mjs.map +1 -1
  58. package/package.json +4 -4
  59. package/types/shival99-z-ui-components-z-calendar.d.ts +6 -6
  60. package/types/shival99-z-ui-components-z-drawer.d.ts +1 -1
  61. package/types/shival99-z-ui-components-z-dropdown-menu.d.ts +1 -1
  62. package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
  63. package/types/shival99-z-ui-components-z-select.d.ts +2 -2
package/README.md CHANGED
@@ -2,32 +2,32 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@shival99/z-ui.svg)](https://www.npmjs.com/package/@shival99/z-ui)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
- [![Angular](https://img.shields.io/badge/Angular-20+-dd0031.svg)](https://angular.dev)
5
+ [![Angular](https://img.shields.io/badge/Angular-21+-dd0031.svg)](https://angular.dev)
6
6
 
7
- A comprehensive, high-performance UI component library built with Angular 20+, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.
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 CSS variables
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** - Only import what you need
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 with ngx-translate
19
+ - 🌐 **i18n Ready** - Built-in translation support
20
20
 
21
21
  ## 📦 Installation
22
22
 
23
23
  ```bash
24
- npm install @shival99/z-ui
24
+ pnpm add @shival99/z-ui
25
25
  ```
26
26
 
27
27
  ### Peer Dependencies
28
28
 
29
29
  ```bash
30
- npm install @angular/cdk @ng-icons/core @ng-icons/lucide @ng-icons/iconsax \
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
- For specific components:
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
- # For z-editor (Rich Text Editor)
42
- npm install ngx-quill quill
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
- # For z-code (Syntax Highlighting)
45
- npm install shiki
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
- # For z-chart (Charts)
48
- npm install echarts ngx-echarts
73
+ Copy theme files to assets for lazy loading (optional):
49
74
 
50
- # For i18n support
51
- npm install @ngx-translate/core @ngx-translate/http-loader
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
- ### 1. Import Components
87
+ ### Import Components
57
88
 
58
89
  ```typescript
59
- import { ZButtonComponent, ZInputComponent, ZTableComponent } from '@shival99/z-ui';
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
- ### 2. Add Theme Styles
106
+ ### Configure Providers
74
107
 
75
- Add to your `styles.scss`:
108
+ ```typescript
109
+ import { provideZTranslate } from '@shival99/z-ui/providers';
110
+ import { provideZNgxMask } from '@shival99/z-ui/providers';
76
111
 
77
- ```scss
78
- @import '@shival99/z-ui/styles';
112
+ export const appConfig: ApplicationConfig = {
113
+ providers: [provideZTranslate({ defaultLang: 'vi', langPath: '/assets/i18n/' }), provideZNgxMask()],
114
+ };
115
+ ```
79
116
 
80
- // Or use CSS variables for custom theming
81
- :root {
82
- --z-primary: 222.2 47.4% 11.2%;
83
- --z-primary-foreground: 210 40% 98%;
84
- // ... more variables
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
- ### 3. Configure Providers
141
+ ## 🎨 Theming
142
+
143
+ Available themes: `green`, `orange`, `violet`, `neutral`, `zinc`, `slate`, `stone`, `gray`, `hospital`
89
144
 
90
145
  ```typescript
91
- // app.config.ts
92
- import { provideZTranslate } from '@shival99/z-ui';
146
+ import { ZThemeService } from '@shival99/z-ui/services';
93
147
 
94
- export const appConfig: ApplicationConfig = {
95
- providers: [
96
- provideZTranslate({
97
- defaultLang: 'en',
98
- langPath: '/assets/i18n/',
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
- ## 🧩 Components
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
- ### Form Controls
181
+ ### Theme Variables (Light Mode)
107
182
 
108
- - `ZInputComponent` - Text input with validation, masks, async validation
109
- - `ZSelectComponent` - Select dropdown with search, multi-select
110
- - `ZCheckboxComponent` - Checkbox with indeterminate state
111
- - `ZRadioComponent` - Radio button groups
112
- - `ZSwitchComponent` - Toggle switch
113
- - `ZCalendarComponent` - Date/time picker with range support
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
- ### Data Display
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
- - `ZTableComponent` - Advanced data table with sorting, filtering, pagination, virtual scrolling
118
- - `ZCodeComponent` - Syntax highlighted code blocks
119
- - `ZBadgeComponent` - Status badges
262
+ ### Scrollbar Variables
120
263
 
121
- ### Layout
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
- - `ZModalComponent` - Modal dialogs
124
- - `ZDrawerComponent` - Side panels
125
- - `ZAccordionComponent` - Collapsible sections
126
- - `ZTabsComponent` - Tab navigation
277
+ .dark {
278
+ --scrollbar-thumb-color: #4b5563;
279
+ --scrollbar-thumb-hover-color: #6b7280;
280
+ }
281
+ ```
127
282
 
128
- ### Feedback
283
+ ### Example: Custom Override
129
284
 
130
- - `ZToastService` - Toast notifications
131
- - `ZLoadingComponent` - Loading spinners
132
- - `ZTooltipDirective` - Tooltips
133
- - `ZPopoverDirective` - Popovers
285
+ Create a custom theme by overriding variables in your project:
134
286
 
135
- ### Navigation
287
+ ```css
288
+ /* styles.css */
289
+ :root {
290
+ /* Custom font */
291
+ --font-sans: 'Roboto', system-ui, sans-serif;
136
292
 
137
- - `ZBreadcrumbComponent` - Breadcrumb navigation
138
- - `ZMenuComponent` - Dropdown menus
139
- - `ZPaginationComponent` - Pagination controls
293
+ /* Custom primary color */
294
+ --primary: oklch(0.6 0.2 240);
295
+ --primary-foreground: oklch(1 0 0);
140
296
 
141
- ## 📚 Documentation
297
+ /* Custom border radius */
298
+ --radius: 0.5rem;
299
+ }
142
300
 
143
- Full documentation and examples: [https://z-ui.dev](https://z-ui.dev)
301
+ .dark {
302
+ /* Dark mode primary color */
303
+ --primary: oklch(0.7 0.2 240);
304
+ }
305
+ ```
144
306
 
145
307
  ## 📄 License
146
308
 
@@ -1,76 +1,63 @@
1
- /* ===== Base Styles ===== */
2
- @layer base {
3
- * {
4
- @apply border-border outline-ring/50;
5
- }
6
-
7
- body {
8
- @apply bg-background text-foreground;
9
- font-family:
10
- 'Be Vietnam Pro',
11
- system-ui,
12
- -apple-system,
13
- sans-serif;
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
- *:hover {
23
- scrollbar-color: #9ca3af transparent;
24
- } */
15
+ * {
16
+ border-color: var(--border);
17
+ outline-color: color-mix(in srgb, var(--ring) 50%, transparent);
18
+ }
25
19
 
26
- /* WebKit browsers (Chrome, Safari, Edge) */
27
- ::-webkit-scrollbar {
28
- width: 7px;
29
- height: 7px;
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
- ::-webkit-scrollbar-track {
33
- background: transparent;
34
- }
28
+ ::-webkit-scrollbar {
29
+ width: 7px;
30
+ height: 7px;
31
+ }
35
32
 
36
- ::-webkit-scrollbar-thumb {
37
- background-color: #d1d5db;
38
- border-radius: 5px;
39
- }
33
+ ::-webkit-scrollbar-track {
34
+ background: transparent;
35
+ }
40
36
 
41
- ::-webkit-scrollbar-thumb:hover,
42
- ::-webkit-scrollbar-thumb:active {
43
- background-color: #9ca3af;
44
- }
37
+ ::-webkit-scrollbar-thumb {
38
+ background-color: #d1d5db;
39
+ border-radius: 5px;
40
+ }
45
41
 
46
- ::-webkit-scrollbar-corner {
47
- background: transparent;
48
- }
42
+ ::-webkit-scrollbar-thumb:hover,
43
+ ::-webkit-scrollbar-thumb:active {
44
+ background-color: #9ca3af;
45
+ }
49
46
 
50
- /* Dark mode scrollbar */
51
- .dark ::-webkit-scrollbar-thumb {
52
- background-color: #4b5563;
53
- }
47
+ ::-webkit-scrollbar-corner {
48
+ background: transparent;
49
+ }
54
50
 
55
- .dark ::-webkit-scrollbar-thumb:hover,
56
- .dark ::-webkit-scrollbar-thumb:active {
57
- background-color: #6b7280;
58
- }
51
+ .dark ::-webkit-scrollbar-thumb {
52
+ background-color: #4b5563;
53
+ }
59
54
 
60
- :root {
61
- --scrollbar-track-color: transparent;
62
- --scrollbar-track-shape: 5px;
63
- --scrollbar-track-thickness: 7px;
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
- .dark {
73
- --scrollbar-thumb-color: #4b5563;
74
- --scrollbar-thumb-hover-color: #6b7280;
75
- }
60
+ .dark {
61
+ --scrollbar-thumb-color: #4b5563;
62
+ --scrollbar-thumb-hover-color: #6b7280;
76
63
  }
@@ -1,5 +1,8 @@
1
1
  @import 'tailwindcss';
2
2
 
3
+ /* Scan z-ui compiled components for class generation */
4
+ @source '../../fesm2022';
5
+
3
6
  /* Configure dark mode to use class instead of prefers-color-scheme */
4
7
  @custom-variant dark (&:where(.dark, .dark *));
5
8
 
@@ -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 type { ClassValue } from 'clsx';\nimport type { ZBreadcrumbItem } from './z-breadcrumb.types';\nimport { zBreadcrumbItemVariants, zBreadcrumbVariants, type ZBreadcrumbVariants } from './z-breadcrumb.variants';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIconVariants } from '@shival99/z-ui/components/z-icon';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\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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"}
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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"}