@devjuliovilla/jv-ui 1.5.1 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devjuliovilla/jv-ui",
3
- "version": "1.5.1",
3
+ "version": "1.5.3",
4
4
  "description": "Accessibility-first Angular component library — components, forms, data grids, dialogs, layout, services, and i18n infrastructure built with signals and standalone APIs.",
5
5
  "author": "@devjuliovilla",
6
6
  "license": "MIT",
@@ -26,12 +26,16 @@
26
26
  ],
27
27
  "peerDependencies": {
28
28
  "@angular/common": "^21.2.0",
29
- "@angular/core": "^21.2.0"
29
+ "@angular/core": "^21.2.0",
30
+ "@angular/forms": "^21.2.0",
31
+ "@angular/router": "^21.2.0"
30
32
  },
31
33
  "dependencies": {
32
34
  "tslib": "^2.3.0"
33
35
  },
34
- "sideEffects": false,
36
+ "sideEffects": [
37
+ "styles/**/*.css"
38
+ ],
35
39
  "module": "fesm2022/devjuliovilla-jv-ui.mjs",
36
40
  "typings": "types/devjuliovilla-jv-ui.d.ts",
37
41
  "exports": {
@@ -41,6 +45,9 @@
41
45
  ".": {
42
46
  "types": "./types/devjuliovilla-jv-ui.d.ts",
43
47
  "default": "./fesm2022/devjuliovilla-jv-ui.mjs"
48
+ },
49
+ "./styles/*": {
50
+ "default": "./styles/*"
44
51
  }
45
52
  },
46
53
  "type": "module"
@@ -0,0 +1,130 @@
1
+ :root {
2
+ --jv-color-primary: #2563eb;
3
+ --jv-color-secondary: #475569;
4
+ --jv-color-success: #16a34a;
5
+ --jv-color-warning: #d97706;
6
+ --jv-color-danger: #dc2626;
7
+ --jv-color-info: #0891b2;
8
+
9
+ --jv-color-background: #f8fafc;
10
+ --jv-color-surface: #ffffff;
11
+ --jv-color-surface-muted: #f1f5f9;
12
+ --jv-color-border: #dbe3ef;
13
+ --jv-color-foreground: #0f172a;
14
+ --jv-color-foreground-muted: #475569;
15
+
16
+ --jv-spacing-xs: 0.25rem;
17
+ --jv-spacing-sm: 0.5rem;
18
+ --jv-spacing-md: 1rem;
19
+ --jv-spacing-lg: 1.5rem;
20
+ --jv-spacing-xl: 2rem;
21
+
22
+ --jv-radius-sm: 0.375rem;
23
+ --jv-radius-md: 0.75rem;
24
+ --jv-radius-lg: 1rem;
25
+
26
+ --jv-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.08);
27
+ --jv-shadow-md: 0 10px 30px rgba(15, 23, 42, 0.08);
28
+ --jv-shadow-lg: 0 20px 40px rgba(15, 23, 42, 0.16);
29
+
30
+ --jv-density-control-height: 2.5rem;
31
+ --jv-density-padding-y: 0.75rem;
32
+ --jv-density-font-size: 0.95rem;
33
+ }
34
+
35
+ html[data-theme='dark'] {
36
+ --jv-color-background: #020617;
37
+ --jv-color-surface: #0f172a;
38
+ --jv-color-surface-muted: #111c31;
39
+ --jv-color-border: #243244;
40
+ --jv-color-foreground: #e2e8f0;
41
+ --jv-color-foreground-muted: #94a3b8;
42
+ }
43
+
44
+ html[data-theme='high-contrast'] {
45
+ --jv-color-primary: #00ffff;
46
+ --jv-color-secondary: #ffffff;
47
+ --jv-color-success: #00ff00;
48
+ --jv-color-warning: #ffff00;
49
+ --jv-color-danger: #ff4d4d;
50
+ --jv-color-info: #00ffff;
51
+ --jv-color-background: #000000;
52
+ --jv-color-surface: #000000;
53
+ --jv-color-surface-muted: #111111;
54
+ --jv-color-border: #ffffff;
55
+ --jv-color-foreground: #ffffff;
56
+ --jv-color-foreground-muted: #f5f5f5;
57
+ }
58
+
59
+ html[data-density='compact'] {
60
+ --jv-density-control-height: 2rem;
61
+ --jv-density-padding-y: 0.5rem;
62
+ --jv-density-font-size: 0.875rem;
63
+ }
64
+
65
+ html[data-density='comfortable'] {
66
+ --jv-density-control-height: 3rem;
67
+ --jv-density-padding-y: 0.95rem;
68
+ --jv-density-font-size: 1rem;
69
+ }
70
+
71
+ html,
72
+ body {
73
+ min-height: 100%;
74
+ }
75
+
76
+ body {
77
+ margin: 0;
78
+ background: var(--jv-color-background);
79
+ color: var(--jv-color-foreground);
80
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
81
+ font-size: var(--jv-density-font-size);
82
+ }
83
+
84
+ *,
85
+ *::before,
86
+ *::after {
87
+ box-sizing: border-box;
88
+ }
89
+
90
+ button,
91
+ input,
92
+ select,
93
+ textarea {
94
+ font: inherit;
95
+ }
96
+
97
+ :focus-visible {
98
+ outline: 2px solid var(--jv-color-primary);
99
+ outline-offset: 2px;
100
+ }
101
+
102
+ .sr-only,
103
+ .screen-reader-only {
104
+ position: absolute;
105
+ width: 1px;
106
+ height: 1px;
107
+ padding: 0;
108
+ margin: -1px;
109
+ overflow: hidden;
110
+ clip: rect(0, 0, 0, 0);
111
+ white-space: nowrap;
112
+ border: 0;
113
+ }
114
+
115
+ .jv-icon {
116
+ display: inline-block;
117
+ vertical-align: middle;
118
+ flex: none;
119
+ }
120
+
121
+ @media (prefers-reduced-motion: reduce) {
122
+ *,
123
+ *::before,
124
+ *::after {
125
+ animation-duration: 0.01ms !important;
126
+ animation-iteration-count: 1 !important;
127
+ scroll-behavior: auto !important;
128
+ transition-duration: 0.01ms !important;
129
+ }
130
+ }
@@ -359,11 +359,6 @@ declare class JvSwitchComponent implements ControlValueAccessor {
359
359
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<JvSwitchComponent, "jv-switch", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "describedBy": { "alias": "describedBy"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
360
360
  }
361
361
 
362
- interface JvIconDefinition {
363
- viewBox: string;
364
- paths: string[];
365
- }
366
-
367
362
  declare class JvIconComponent {
368
363
  private readonly warnedNames;
369
364
  readonly name: _angular_core.InputSignal<string>;
@@ -372,11 +367,22 @@ declare class JvIconComponent {
372
367
  readonly decorative: _angular_core.InputSignal<boolean>;
373
368
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
374
369
  protected readonly normalizedName: _angular_core.Signal<string>;
375
- protected readonly iconDefinition: _angular_core.Signal<JvIconDefinition>;
370
+ protected readonly iconDefinition: _angular_core.Signal<_devjuliovilla_jv_ui.JvIconDefinition>;
376
371
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<JvIconComponent, never>;
377
372
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<JvIconComponent, "jv-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
378
373
  }
379
374
 
375
+ interface JvIconElement {
376
+ tag: 'path' | 'circle' | 'line' | 'polyline' | 'rect' | 'ellipse' | 'polygon';
377
+ attrs: Record<string, string>;
378
+ }
379
+ interface JvIconDefinition {
380
+ viewBox: string;
381
+ elements: JvIconElement[];
382
+ }
383
+ declare const JV_FALLBACK_ICON_NAME = "circle-alert";
384
+ declare const JV_LUCIDE_ICON_REGISTRY: Record<string, JvIconDefinition>;
385
+
380
386
  declare const JV_UI_CONFIG: InjectionToken<Partial<JvUiConfig>[]>;
381
387
  declare const JV_UI_CONFIG_DEFAULTS: InjectionToken<JvUiConfig>;
382
388
  declare function provideJvUi(config?: Partial<JvUiConfig>): _angular_core.EnvironmentProviders;
@@ -704,5 +710,30 @@ declare class JvGridComponent<T = any> {
704
710
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<JvGridComponent<any>, "jv-grid", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; "pageChange": "pageChange"; "searchChange": "searchChange"; "sortChange": "sortChange"; }, never, never, true, never>;
705
711
  }
706
712
 
707
- export { EN, ES, JV_DEFAULT_LOCALE, JV_GRID_DEFAULT_OPTIONS, JV_LOCALE_DICTIONARIES, JV_UI_CONFIG, JV_UI_CONFIG_DEFAULTS, JV_UI_DEFAULT_CONFIG, JvAlertComponent, JvAnnouncementService, JvBadgeComponent, JvBreadcrumbComponent, JvButtonComponent, JvButtonGroupComponent, JvCardComponent, JvChangePasswordPageComponent, JvCheckboxComponent, JvConfirmDialogComponent, JvDashboardShellComponent, JvDialogComponent, JvDialogService, JvDividerComponent, JvForgotPasswordPageComponent, JvFormContainerComponent, JvGridComponent, JvIconButtonComponent, JvIconComponent, JvInputComponent, JvLoaderComponent, JvLoaderService, JvLoginPageComponent, JvPageComponent, JvRadioComponent, JvSectionComponent, JvSelectComponent, JvSidebarComponent, JvSwitchComponent, JvThemeService, JvToastComponent, JvToastService, JvTopbarComponent, JvTranslationService, provideJvUi };
708
- export type { JvActiveConfirmDialog, JvBreadcrumbItem, JvChangePasswordSubmitEvent, JvConfirmOptions, JvDensity, JvForgotPasswordSubmitEvent, JvGridAction, JvGridColumn, JvGridOptions, JvGridPageEvent, JvGridRowId, JvGridSortDirection, JvGridSortState, JvGridTrackBy, JvIntent, JvLoaderState, JvLocale, JvLoginSubmitEvent, JvNavItem, JvSelectOption, JvTheme, JvThemeOption, JvToastItem, JvToastPosition, JvToastViewport, JvTone, JvTopbarAction, JvUiConfig };
713
+ interface JvPaginationEvent {
714
+ pageIndex: number;
715
+ pageSize: number;
716
+ }
717
+ declare class JvPaginationComponent {
718
+ private readonly translationService;
719
+ readonly totalItems: _angular_core.InputSignal<number>;
720
+ readonly pageSize: _angular_core.InputSignal<number>;
721
+ readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
722
+ readonly pageIndex: _angular_core.InputSignal<number>;
723
+ readonly maxVisiblePages: _angular_core.InputSignal<number>;
724
+ readonly pageChange: _angular_core.OutputEmitterRef<JvPaginationEvent>;
725
+ protected readonly totalPages: _angular_core.Signal<number>;
726
+ protected readonly pageStart: _angular_core.Signal<number>;
727
+ protected readonly pageEnd: _angular_core.Signal<number>;
728
+ protected readonly pageRange: _angular_core.Signal<number[]>;
729
+ protected readonly pageSizeStr: _angular_core.Signal<string>;
730
+ protected readonly pageSizeOptionsList: _angular_core.Signal<JvSelectOption<string>[]>;
731
+ protected readonly t: (key: string, params?: Record<string, string | number>) => string;
732
+ protected goToPage(page: number): void;
733
+ protected onPageSizeChange(value: string): void;
734
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<JvPaginationComponent, never>;
735
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<JvPaginationComponent, "jv-pagination", never, { "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; "maxVisiblePages": { "alias": "maxVisiblePages"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
736
+ }
737
+
738
+ export { EN, ES, JV_DEFAULT_LOCALE, JV_FALLBACK_ICON_NAME, JV_GRID_DEFAULT_OPTIONS, JV_LOCALE_DICTIONARIES, JV_LUCIDE_ICON_REGISTRY, JV_UI_CONFIG, JV_UI_CONFIG_DEFAULTS, JV_UI_DEFAULT_CONFIG, JvAlertComponent, JvAnnouncementService, JvBadgeComponent, JvBreadcrumbComponent, JvButtonComponent, JvButtonGroupComponent, JvCardComponent, JvChangePasswordPageComponent, JvCheckboxComponent, JvConfirmDialogComponent, JvDashboardShellComponent, JvDialogComponent, JvDialogService, JvDividerComponent, JvForgotPasswordPageComponent, JvFormContainerComponent, JvGridComponent, JvIconButtonComponent, JvIconComponent, JvInputComponent, JvLoaderComponent, JvLoaderService, JvLoginPageComponent, JvPageComponent, JvPaginationComponent, JvRadioComponent, JvSectionComponent, JvSelectComponent, JvSidebarComponent, JvSwitchComponent, JvThemeService, JvToastComponent, JvToastService, JvTopbarComponent, JvTranslationService, provideJvUi };
739
+ export type { JvActiveConfirmDialog, JvBreadcrumbItem, JvChangePasswordSubmitEvent, JvConfirmOptions, JvDensity, JvForgotPasswordSubmitEvent, JvGridAction, JvGridColumn, JvGridOptions, JvGridPageEvent, JvGridRowId, JvGridSortDirection, JvGridSortState, JvGridTrackBy, JvIconDefinition, JvIconElement, JvIntent, JvLoaderState, JvLocale, JvLoginSubmitEvent, JvNavItem, JvPaginationEvent, JvSelectOption, JvTheme, JvThemeOption, JvToastItem, JvToastPosition, JvToastViewport, JvTone, JvTopbarAction, JvUiConfig };