tailjng 0.1.6 → 0.1.8

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 (175) hide show
  1. package/README.md +27 -5
  2. package/cli/execute/init-app.js +5 -2
  3. package/cli/execute/sync-app.js +14 -2
  4. package/cli/settings/colors-config-utils.js +69 -11
  5. package/cli/settings/icons-config-utils.js +62 -0
  6. package/cli/settings/path-utils.js +32 -2
  7. package/cli/settings/project-utils.js +7 -1
  8. package/cli/templates/app.generator.js +8 -5
  9. package/fesm2022/tailjng.mjs +247 -80
  10. package/fesm2022/tailjng.mjs.map +1 -1
  11. package/lib/services/static/theme.service.d.ts +39 -1
  12. package/lib/utils/theme/theme-variables.util.d.ts +31 -0
  13. package/package.json +1 -1
  14. package/public-api.d.ts +2 -1
  15. package/registry/components.json +41 -18
  16. package/src/colors.safelist.css +2 -2
  17. package/src/lib/components/.config/README.md +11 -0
  18. package/src/lib/components/.config/colors/README.md +40 -0
  19. package/src/lib/components/{colors-config → .config/colors}/colors.config.ts +5 -5
  20. package/src/lib/components/{colors-config → .config/colors}/colors.safelist.css +2 -2
  21. package/src/lib/components/.config/icons/README.md +26 -0
  22. package/src/lib/components/.config/icons/icons.lucide.ts +134 -0
  23. package/src/lib/components/.config/input/README.md +24 -0
  24. package/src/lib/components/.config/input/input.classes.ts +119 -0
  25. package/src/lib/components/alert/alert-dialog/dialog-alert.component.css +177 -6
  26. package/src/lib/components/alert/alert-dialog/dialog-alert.component.html +24 -37
  27. package/src/lib/components/alert/alert-dialog/dialog-alert.component.ts +66 -56
  28. package/src/lib/components/alert/alert-dialog/dialog-alert.types.ts +19 -0
  29. package/src/lib/components/alert/alert-toast/toast-alert.component.css +494 -14
  30. package/src/lib/components/alert/alert-toast/toast-alert.component.html +106 -102
  31. package/src/lib/components/alert/alert-toast/toast-alert.component.ts +485 -128
  32. package/src/lib/components/alert/alert-toast/toast-alert.types.ts +25 -0
  33. package/src/lib/components/badge/badge.component.html +34 -21
  34. package/src/lib/components/badge/badge.component.ts +140 -31
  35. package/src/lib/components/button/button.component.html +16 -10
  36. package/src/lib/components/button/button.component.ts +162 -22
  37. package/src/lib/components/card/card-complete/complete-card.component.html +2 -2
  38. package/src/lib/components/card/card-complete/complete-card.component.ts +26 -16
  39. package/src/lib/components/card/card-crud-complete/complete-crud-card.component.html +2 -2
  40. package/src/lib/components/card/card-crud-complete/complete-crud-card.component.ts +26 -16
  41. package/src/lib/components/checkbox/checkbox-input/input-checkbox.component.css +30 -0
  42. package/src/lib/components/checkbox/checkbox-input/input-checkbox.component.html +58 -46
  43. package/src/lib/components/checkbox/checkbox-input/input-checkbox.component.ts +135 -64
  44. package/src/lib/components/checkbox/checkbox-input/input-checkbox.types.ts +3 -0
  45. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.component.css +62 -0
  46. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.component.html +39 -25
  47. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.component.ts +74 -15
  48. package/src/lib/components/checkbox/checkbox-switch/switch-checkbox.types.ts +1 -0
  49. package/src/lib/components/coach-mark/coach-mark.component.html +6 -24
  50. package/src/lib/components/coach-mark/coach-mark.component.scss +1 -7
  51. package/src/lib/components/coach-mark/coach-mark.component.ts +51 -18
  52. package/src/lib/components/coach-mark/coach-mark.directive.ts +133 -78
  53. package/src/lib/components/coach-mark/coach-mark.types.ts +12 -0
  54. package/src/lib/components/dialog/dialog.component.css +1 -1
  55. package/src/lib/components/dialog/dialog.component.html +56 -65
  56. package/src/lib/components/dialog/dialog.component.ts +136 -110
  57. package/src/lib/components/dialog/dialog.types.ts +19 -0
  58. package/src/lib/components/filter/filter-complete/complete-filter.component.html +17 -20
  59. package/src/lib/components/filter/filter-complete/complete-filter.component.scss +25 -0
  60. package/src/lib/components/filter/filter-complete/complete-filter.component.ts +58 -34
  61. package/src/lib/components/filter/filter-complete/complete-filter.types.ts +7 -0
  62. package/src/lib/components/filter/filter-complete/complete-filter.util.ts +16 -0
  63. package/src/lib/components/form/form-container/container-form.component.css +4 -0
  64. package/src/lib/components/form/form-container/container-form.component.html +2 -2
  65. package/src/lib/components/form/form-container/container-form.component.ts +72 -16
  66. package/src/lib/components/form/form-container/container-form.types.ts +42 -0
  67. package/src/lib/components/form/form-container/form-col-span.directive.ts +25 -0
  68. package/src/lib/components/form/form-sidebar/sidebar-form.component.css +45 -0
  69. package/src/lib/components/form/form-sidebar/sidebar-form.component.html +128 -124
  70. package/src/lib/components/form/form-sidebar/sidebar-form.component.ts +114 -34
  71. package/src/lib/components/form/form-sidebar/sidebar-form.types.ts +3 -0
  72. package/src/lib/components/{toggle-radio/toggle-radio.component.css → form/form-validation/validation-form.component.css} +0 -1
  73. package/src/lib/components/form/form-validation/validation-form.component.html +10 -6
  74. package/src/lib/components/form/form-validation/validation-form.component.ts +99 -12
  75. package/src/lib/components/form/form-validation/validation-form.types.ts +33 -0
  76. package/src/lib/components/icon/icon.component.html +8 -5
  77. package/src/lib/components/icon/icon.component.ts +111 -9
  78. package/src/lib/components/input/input/input.component.css +0 -14
  79. package/src/lib/components/input/input/input.component.html +19 -16
  80. package/src/lib/components/input/input/input.component.ts +130 -53
  81. package/src/lib/components/input/input/input.types.ts +8 -0
  82. package/src/lib/components/input/input-file/file-input.component.html +65 -56
  83. package/src/lib/components/input/input-file/file-input.component.ts +276 -173
  84. package/src/lib/components/input/input-file/file-input.types.ts +2 -0
  85. package/src/lib/components/input/input-range/range-input.component.css +67 -0
  86. package/src/lib/components/input/input-range/range-input.component.html +50 -58
  87. package/src/lib/components/input/input-range/range-input.component.ts +148 -60
  88. package/src/lib/components/input/input-range/range-input.types.ts +7 -0
  89. package/src/lib/components/input/input-textarea/textarea-input.component.html +16 -7
  90. package/src/lib/components/input/input-textarea/textarea-input.component.ts +140 -50
  91. package/src/lib/components/input/input-textarea/textarea-input.types.ts +2 -0
  92. package/src/lib/components/label/label.component.html +17 -16
  93. package/src/lib/components/label/label.component.ts +94 -16
  94. package/src/lib/components/label/label.types.ts +2 -0
  95. package/src/lib/components/menu/menu-options-table/menu-options-defaults.ts +34 -0
  96. package/src/lib/components/menu/menu-options-table/options-table-menu.component.html +34 -20
  97. package/src/lib/components/menu/menu-options-table/options-table-menu.component.ts +211 -58
  98. package/src/lib/components/menu/menu-options-table/options-table-menu.types.ts +38 -0
  99. package/src/lib/components/menu/options-coach-menu/options-coach-menu.component.html +49 -52
  100. package/src/lib/components/menu/options-coach-menu/options-coach-menu.component.ts +112 -24
  101. package/src/lib/components/menu/options-coach-menu/options-coach-menu.types.ts +9 -0
  102. package/src/lib/components/mode-toggle/mode-toggle.component.html +11 -16
  103. package/src/lib/components/mode-toggle/mode-toggle.component.ts +69 -33
  104. package/src/lib/components/paginator/paginator-complete/complete-paginator.component.html +4 -4
  105. package/src/lib/components/paginator/paginator-complete/complete-paginator.component.ts +31 -7
  106. package/src/lib/components/paginator/paginator-complete/complete-paginator.types.ts +12 -0
  107. package/src/lib/components/paginator/paginator-complete/complete-paginator.util.ts +36 -0
  108. package/src/lib/components/progress-bar/progress-bar.component.html +41 -40
  109. package/src/lib/components/progress-bar/progress-bar.component.ts +95 -11
  110. package/src/lib/components/progress-bar/progress-bar.types.ts +2 -0
  111. package/src/lib/components/select/select-dropdown/dropdown-select.component.html +56 -46
  112. package/src/lib/components/select/select-dropdown/dropdown-select.component.ts +450 -509
  113. package/src/lib/components/select/select-dropdown/dropdown-select.types.ts +43 -0
  114. package/src/lib/components/select/select-dropdown/dropdown-select.util.ts +179 -0
  115. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.component.html +131 -42
  116. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.component.ts +491 -475
  117. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.types.ts +22 -0
  118. package/src/lib/components/select/select-multi-dropdown/multi-dropdown-select.util.ts +20 -0
  119. package/src/lib/components/select/select-multi-table/multi-table-select.component.css +4 -0
  120. package/src/lib/components/select/select-multi-table/multi-table-select.component.html +76 -60
  121. package/src/lib/components/select/select-multi-table/multi-table-select.component.ts +250 -313
  122. package/src/lib/components/select/select-multi-table/multi-table-select.types.ts +10 -0
  123. package/src/lib/components/select/select-multi-table/multi-table-select.util.ts +5 -0
  124. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.css +155 -0
  125. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.html +72 -53
  126. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.ts +84 -27
  127. package/src/lib/components/sidebar/sidebar-static/static-sidebar.types.ts +2 -0
  128. package/src/lib/components/table/table-complete/complete-table.component.html +21 -23
  129. package/src/lib/components/table/table-complete/complete-table.component.ts +190 -338
  130. package/src/lib/components/table/table-complete/complete-table.types.ts +28 -0
  131. package/src/lib/components/table/table-complete/complete-table.util.ts +236 -0
  132. package/src/lib/components/table/table-complete/index.ts +2 -0
  133. package/src/lib/components/table/table-crud-complete/complete-crud-table.animations.ts +34 -0
  134. package/src/lib/components/table/table-crud-complete/complete-crud-table.component.html +87 -142
  135. package/src/lib/components/table/table-crud-complete/complete-crud-table.component.scss +0 -63
  136. package/src/lib/components/table/table-crud-complete/complete-crud-table.component.ts +544 -831
  137. package/src/lib/components/table/table-crud-complete/complete-crud-table.types.ts +57 -0
  138. package/src/lib/components/table/table-crud-complete/complete-crud-table.util.ts +723 -0
  139. package/src/lib/components/table/table-crud-complete/index.ts +3 -0
  140. package/src/lib/components/theme-generator/theme-generator.component.css +21 -0
  141. package/src/lib/components/theme-generator/theme-generator.component.html +141 -116
  142. package/src/lib/components/theme-generator/theme-generator.component.ts +44 -24
  143. package/src/lib/components/toggle-radio/shared/toggle-options.types.ts +8 -0
  144. package/src/lib/components/toggle-radio/shared/toggle-options.util.ts +62 -0
  145. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.component.css +22 -0
  146. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.component.html +65 -0
  147. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.component.ts +192 -0
  148. package/src/lib/components/toggle-radio/toggle-radio/toggle-radio.types.ts +1 -0
  149. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.component.css +34 -0
  150. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.component.html +47 -0
  151. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.component.ts +187 -0
  152. package/src/lib/components/toggle-radio/toggle-segment/segment-toggle.types.ts +1 -0
  153. package/src/lib/components/tooltip/tooltip.directive.ts +12 -9
  154. package/src/lib/components/tooltip/tooltip.service.ts +331 -133
  155. package/src/lib/components/tooltip/tooltip.types.ts +9 -0
  156. package/src/lib/components/viewer/viewer-image/image-viewer.component.css +14 -4
  157. package/src/lib/components/viewer/viewer-image/image-viewer.component.html +61 -95
  158. package/src/lib/components/viewer/viewer-image/image-viewer.component.ts +182 -177
  159. package/src/lib/components/viewer/viewer-image/image-viewer.types.ts +3 -0
  160. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.css +25 -0
  161. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.html +95 -24
  162. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.ts +168 -15
  163. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.types.ts +1 -0
  164. package/src/styles.css +2 -2
  165. package/lib/services/static/icons.service.d.ts +0 -65
  166. package/src/lib/components/colors-config/README.md +0 -38
  167. package/src/lib/components/form/form-sidebar/sidebar-form.component.scss +0 -0
  168. package/src/lib/components/form/form-validation/validation-form.component.scss +0 -0
  169. package/src/lib/components/menu/menu-options-table/options-table-menu.component.scss +0 -0
  170. package/src/lib/components/menu/options-coach-menu/options-coach-menu.component.scss +0 -12
  171. package/src/lib/components/sidebar/sidebar-static/static-sidebar.component.scss +0 -0
  172. package/src/lib/components/toggle-radio/toggle-radio.component.html +0 -51
  173. package/src/lib/components/toggle-radio/toggle-radio.component.ts +0 -222
  174. package/src/lib/components/viewer/viewer-pdf/pdf-viewer.component.scss +0 -0
  175. package/tailjng-0.1.6.tgz +0 -0
@@ -62,7 +62,7 @@
62
62
  @if (isGroupTable && expandedRows.size > 0) {
63
63
  <colgroup>
64
64
  @if (isNumbering) {
65
- <col class="j-group-number-col" />
65
+ <col class="j-group-number-col box-border w-11 min-w-11 max-w-11" />
66
66
  }
67
67
  @for (column of columns; track $index) {
68
68
  @if (column.visible) {
@@ -70,7 +70,7 @@
70
70
  }
71
71
  }
72
72
  @if (isOptions) {
73
- <col class="j-table-options-col" />
73
+ <col class="j-table-options-col box-border w-[var(--j-table-options-col-width)] min-w-[var(--j-table-options-col-width)] max-w-[var(--j-table-options-col-width)]" />
74
74
  }
75
75
  </colgroup>
76
76
  }
@@ -91,7 +91,7 @@
91
91
  <!-- Counter column -->
92
92
  @if (isNumbering) {
93
93
  <th
94
- class="j-group-number-col px-4 py-2 text-center text-xs font-medium uppercase tracking-wider border-b border-border dark:border-dark-border font-bold text-white"
94
+ class="j-group-number-col box-border w-11 min-w-11 max-w-11 !px-[0.35rem] px-4 py-2 text-center text-xs font-medium uppercase tracking-wider border-b border-border dark:border-dark-border font-bold text-white"
95
95
  >
96
96
 
97
97
  </th>
@@ -126,32 +126,24 @@
126
126
  @if (
127
127
  isLoading("sort") && column.key === sortingColumn
128
128
  ) {
129
- <lucide-icon
130
- [name]="iconsService.icons.loading"
129
+ <JIcon [icon]="Icons.Loader2"
131
130
  size="16"
132
- class="text-white animate-spin"
133
- ></lucide-icon>
131
+ iconClass="text-white animate-spin" [ariaHidden]="true" />
134
132
  } @else if (
135
133
  getSortKey(sortColumn) !== column.key ||
136
134
  sortDirection === "none"
137
135
  ) {
138
- <lucide-icon
139
- [name]="iconsService.icons.chevronsUpDown"
136
+ <JIcon [icon]="Icons.ChevronsUpDown"
140
137
  size="16"
141
- class="text-white"
142
- ></lucide-icon>
138
+ iconClass="text-white" [ariaHidden]="true" />
143
139
  } @else if (sortDirection === "asc") {
144
- <lucide-icon
145
- [name]="iconsService.icons.chevronUp"
140
+ <JIcon [icon]="Icons.ChevronUp"
146
141
  size="16"
147
- class="text-white"
148
- ></lucide-icon>
142
+ iconClass="text-white" [ariaHidden]="true" />
149
143
  } @else {
150
- <lucide-icon
151
- [name]="iconsService.icons.chevronDown"
144
+ <JIcon [icon]="Icons.ChevronDown"
152
145
  size="16"
153
- class="text-white"
154
- ></lucide-icon>
146
+ iconClass="text-white" [ariaHidden]="true" />
155
147
  }
156
148
  </div>
157
149
  }
@@ -163,7 +155,7 @@
163
155
  <!-- Actions column - Sticky header -->
164
156
  @if (isOptions) {
165
157
  <th
166
- class="j-table-options-col !sticky !right-0 relative z-[2] bg-primary px-4 py-2 text-center text-xs font-medium font-bold uppercase tracking-wider text-white shadow-[-4px_0_5px_rgba(0,0,0,0.1)] border-b border-border dark:border-dark-border dark:bg-dark-primary"
158
+ class="j-table-options-col box-border w-[var(--j-table-options-col-width)] min-w-[var(--j-table-options-col-width)] max-w-[var(--j-table-options-col-width)] !sticky !right-0 relative z-[2] bg-primary px-4 py-2 text-center text-xs font-medium font-bold uppercase tracking-wider text-white shadow-[-4px_0_5px_rgba(0,0,0,0.1)] border-b border-border dark:border-dark-border dark:bg-dark-primary"
167
159
  >
168
160
  <span
169
161
  class="text-[10px] opacity-80 border border-border dark:border-dark-border p-2 pl-3 pr-3 rounded-full"
@@ -200,11 +192,9 @@
200
192
  <div
201
193
  class="flex flex-col gap-3 items-center justify-center py-4"
202
194
  >
203
- <lucide-icon
204
- [name]="iconsService.icons.loading"
195
+ <JIcon [icon]="Icons.Loader2"
205
196
  size="30"
206
- class="text-primary animate-spin"
207
- ></lucide-icon>
197
+ iconClass="text-primary animate-spin" [ariaHidden]="true" />
208
198
  <p>Cargando datos...</p>
209
199
  </div>
210
200
  </td>
@@ -226,10 +216,9 @@
226
216
  <td
227
217
  class="px-4 py-2 h-[50px] text-center text-xs border-b border-border dark:border-dark-border text-black dark:text-white"
228
218
  >
229
- <lucide-icon
230
- [name]="iconsService.icons.nextPage"
219
+ <JIcon [icon]="Icons.ChevronRight"
231
220
  size="16"
232
- class="transition-transform duration-300"
221
+ iconClass="transition-transform duration-300"
233
222
  [class]="expandedRows.has(item) ? 'rotate-90' : ''"
234
223
  />
235
224
  </td>
@@ -349,10 +338,8 @@
349
338
  <div
350
339
  class="flex gap-2 text-dark-primary dark:text-primary underline block"
351
340
  >
352
- <lucide-icon
353
- [name]="iconsService.icons.linkOff"
354
- size="25"
355
- ></lucide-icon>
341
+ <JIcon [icon]="Icons.Link2Off"
342
+ size="25" [ariaHidden]="true" />
356
343
  </div>
357
344
  } @else {
358
345
  <a
@@ -361,10 +348,8 @@
361
348
  target="_blank"
362
349
  rel="noopener noreferrer"
363
350
  >
364
- <lucide-icon
365
- [name]="iconsService.icons.link"
366
- size="25"
367
- ></lucide-icon>
351
+ <JIcon [icon]="Icons.Link"
352
+ size="25" [ariaHidden]="true" />
368
353
  </a>
369
354
  }
370
355
  </div>
@@ -378,10 +363,10 @@
378
363
  <JButton
379
364
  [icon]="
380
365
  column.valueData?.(item)
381
- ? iconsService.icons.img
382
- : iconsService.icons.imageOff
366
+ ? Icons.Image
367
+ : Icons.ImageOff
383
368
  "
384
- [iconChange]="iconsService.icons.imgs"
369
+ [iconChange]="Icons.Images"
385
370
  [isChangeIcon]="
386
371
  keyDialog ===
387
372
  getValue(item, column).split(',')[0] &&
@@ -416,21 +401,17 @@
416
401
  class="flex items-center gap-3 text-[14px]"
417
402
  >
418
403
  <div class="flex items-center gap-1">
419
- <lucide-icon
420
- [name]="iconsService.icons.calendar"
404
+ <JIcon [icon]="Icons.Calendar"
421
405
  size="15"
422
- class="text-gray-500 dark:text-gray-400"
423
- ></lucide-icon>
406
+ iconClass="text-gray-500 dark:text-gray-400" [ariaHidden]="true" />
424
407
  <span>{{
425
408
  getValue(item, column).split(",")[0]
426
409
  }}</span>
427
410
  </div>
428
411
  <div class="flex items-center gap-1">
429
- <lucide-icon
430
- [name]="iconsService.icons.clock"
412
+ <JIcon [icon]="Icons.Clock"
431
413
  size="15"
432
- class="text-gray-500 dark:text-gray-400"
433
- ></lucide-icon>
414
+ iconClass="text-gray-500 dark:text-gray-400" [ariaHidden]="true" />
434
415
  <span>{{
435
416
  getValue(item, column)
436
417
  .split(",")[1]
@@ -508,7 +489,7 @@
508
489
  <td
509
490
  onKeyPress
510
491
  (click)="$event.stopPropagation()"
511
- class="j-table-options-col !sticky !right-0 relative overflow-visible border-b border-border bg-white text-center text-sm whitespace-nowrap shadow-[-4px_0_5px_rgba(0,0,0,0.1)] dark:border-dark-border dark:bg-foreground"
492
+ class="j-table-options-col box-border w-[var(--j-table-options-col-width)] min-w-[var(--j-table-options-col-width)] max-w-[var(--j-table-options-col-width)] !sticky !right-0 relative overflow-visible border-b border-border bg-white text-center text-sm whitespace-nowrap shadow-[-4px_0_5px_rgba(0,0,0,0.1)] dark:border-dark-border dark:bg-foreground"
512
493
  [ngStyle]="{ 'z-index': 1 + 1 }"
513
494
  >
514
495
  <div class="flex justify-center items-center">
@@ -586,12 +567,11 @@
586
567
  [class.expanded]="expandedRows.has(item)"
587
568
  >
588
569
  <td
589
- class="j-group-number-col h-[50px] border-b border-border px-2 py-2 text-center text-xs text-black dark:border-dark-border dark:text-white bg-primary/10 dark:bg-primary/20"
570
+ class="j-group-number-col box-border w-11 min-w-11 max-w-11 !px-[0.35rem] h-[50px] border-b border-border px-2 py-2 text-center text-xs text-black dark:border-dark-border dark:text-white bg-primary/10 dark:bg-primary/20"
590
571
  >
591
- <lucide-icon
592
- [name]="iconsService.icons.nextPage"
572
+ <JIcon [icon]="Icons.ChevronRight"
593
573
  size="22"
594
- class="text-dark-primary dark:text-white transition-transform duration-300"
574
+ iconClass="text-dark-primary dark:text-white transition-transform duration-300"
595
575
  [class]="expandedRows.has(item) ? 'rotate-90' : ''"
596
576
  />
597
577
  </td>
@@ -610,11 +590,9 @@
610
590
  <div class="flex items-center max-[768px]:gap-[20px]">
611
591
  <div class="flex items-center max-[768px]:flex-col">
612
592
  {{ item.title }}
613
- <lucide-icon
614
- [name]="iconsService.icons.arrowBigRight"
593
+ <JIcon [icon]="Icons.ArrowBigRight"
615
594
  [size]="25"
616
- class="px-1"
617
- />
595
+ iconClass="px-1" [ariaHidden]="true" />
618
596
  </div>
619
597
  {{ item.description }}
620
598
  </div>
@@ -625,10 +603,10 @@
625
603
  <td
626
604
  onKeyPress
627
605
  (click)="$event.stopPropagation()"
628
- class="j-table-options-col j-group-pagination-cell !sticky !right-0 z-[2] border-b border-border bg-primary/10 dark:bg-primary/20 text-center text-sm whitespace-nowrap shadow-[-4px_0_5px_rgba(0,0,0,0.1)] dark:border-dark-border"
606
+ class="j-table-options-col j-group-pagination-cell box-border w-[var(--j-table-options-col-width)] min-w-[var(--j-table-options-col-width)] max-w-[var(--j-table-options-col-width)] align-middle !sticky !right-0 z-[2] border-b border-border bg-primary/10 dark:bg-primary/20 text-center text-sm whitespace-nowrap shadow-[-4px_0_5px_rgba(0,0,0,0.1)] dark:border-dark-border"
629
607
  >
630
608
  <div
631
- class="j-group-paginator"
609
+ class="j-group-paginator flex flex-col items-center justify-center gap-1 opacity-0 invisible pointer-events-none transition-[opacity,visibility] duration-[320ms] ease-out"
632
610
  [class.is-expanded]="expandedRows.has(item)"
633
611
  >
634
612
  <span
@@ -640,7 +618,7 @@
640
618
 
641
619
  <div class="flex items-center justify-center gap-1">
642
620
  <JButton
643
- [icon]="iconsService.icons.prevPage"
621
+ [icon]="Icons.ChevronLeft"
644
622
  (clicked)="
645
623
  groupTable['changePage'](item.title, 'prev')
646
624
  "
@@ -652,7 +630,7 @@
652
630
  />
653
631
 
654
632
  <JButton
655
- [icon]="iconsService.icons.nextPage"
633
+ [icon]="Icons.ChevronRight"
656
634
  (clicked)="
657
635
  groupTable['changePage'](item.title, 'next')
658
636
  "
@@ -681,11 +659,11 @@
681
659
  class="j-group-expand-panel overflow-hidden"
682
660
  >
683
661
  <table
684
- class="j-group-inner-table w-full min-w-full border-collapse bg-white dark:bg-foreground"
662
+ class="j-group-inner-table table-fixed w-full min-w-full border-collapse bg-white dark:bg-foreground"
685
663
  >
686
664
  <colgroup>
687
665
  @if (isNumbering) {
688
- <col class="j-group-number-col" />
666
+ <col class="j-group-number-col box-border w-11 min-w-11 max-w-11" />
689
667
  }
690
668
  @for (column of columns; track $index) {
691
669
  @if (column.visible) {
@@ -693,7 +671,7 @@
693
671
  }
694
672
  }
695
673
  @if (isOptions) {
696
- <col class="j-table-options-col" />
674
+ <col class="j-table-options-col box-border w-[var(--j-table-options-col-width)] min-w-[var(--j-table-options-col-width)] max-w-[var(--j-table-options-col-width)]" />
697
675
  }
698
676
  </colgroup>
699
677
  <tbody>
@@ -706,7 +684,7 @@
706
684
  >
707
685
  @if (isNumbering) {
708
686
  <td
709
- class="j-group-number-col h-[50px] border-b border-border px-2 py-2 text-center text-xs text-black dark:border-dark-border dark:text-white"
687
+ class="j-group-number-col box-border w-11 min-w-11 max-w-11 !px-[0.35rem] h-[50px] border-b border-border px-2 py-2 text-center text-xs text-black dark:border-dark-border dark:text-white"
710
688
  >
711
689
  {{
712
690
  (item.meta?.page?.currentPage - 1) *
@@ -798,21 +776,17 @@
798
776
  class="flex items-center gap-3 text-[14px]"
799
777
  >
800
778
  <div class="flex items-center gap-1">
801
- <lucide-icon
802
- [name]="iconsService.icons.calendar"
779
+ <JIcon [icon]="Icons.Calendar"
803
780
  size="15"
804
- class="text-gray-500 dark:text-gray-400"
805
- ></lucide-icon>
781
+ iconClass="text-gray-500 dark:text-gray-400" [ariaHidden]="true" />
806
782
  <span>{{
807
783
  getValue(group, column).split(",")[0]
808
784
  }}</span>
809
785
  </div>
810
786
  <div class="flex items-center gap-1">
811
- <lucide-icon
812
- [name]="iconsService.icons.clock"
787
+ <JIcon [icon]="Icons.Clock"
813
788
  size="15"
814
- class="text-gray-500 dark:text-gray-400"
815
- ></lucide-icon>
789
+ iconClass="text-gray-500 dark:text-gray-400" [ariaHidden]="true" />
816
790
  <span>{{
817
791
  getValue(group, column)
818
792
  .split(",")[1]
@@ -832,7 +806,7 @@
832
806
  <td
833
807
  onKeyPress
834
808
  (click)="$event.stopPropagation()"
835
- class="j-table-options-col !sticky !right-0 relative z-[2] overflow-visible border-b border-border bg-white text-center text-sm whitespace-nowrap shadow-[-4px_0_5px_rgba(0,0,0,0.1)] dark:border-dark-border dark:bg-foreground"
809
+ class="j-table-options-col box-border w-[var(--j-table-options-col-width)] min-w-[var(--j-table-options-col-width)] max-w-[var(--j-table-options-col-width)] !sticky !right-0 relative z-[2] overflow-visible border-b border-border bg-white text-center text-sm whitespace-nowrap shadow-[-4px_0_5px_rgba(0,0,0,0.1)] dark:border-dark-border dark:bg-foreground"
836
810
  >
837
811
  <div
838
812
  class="relative flex h-[50px] items-center justify-center overflow-visible px-2 py-2"
@@ -956,11 +930,9 @@
956
930
  <div
957
931
  class="flex flex-col gap-3 items-center justify-center py-4"
958
932
  >
959
- <lucide-icon
960
- [name]="iconsService.icons.info"
933
+ <JIcon [icon]="Icons.Info"
961
934
  size="30"
962
- class="text-primary"
963
- ></lucide-icon>
935
+ iconClass="text-primary" [ariaHidden]="true" />
964
936
  <p>No hay datos disponibles</p>
965
937
  </div>
966
938
  </td>
@@ -975,11 +947,9 @@
975
947
  <div
976
948
  class="absolute inset-0 flex flex-col gap-3 items-center justify-center py-4 bg-white/80 dark:bg-foreground/80 backdrop-blur-sm z-501 select-none"
977
949
  >
978
- <lucide-icon
979
- [name]="iconsService.icons.loading"
950
+ <JIcon [icon]="Icons.Loader2"
980
951
  size="35"
981
- class="text-primary animate-spin"
982
- ></lucide-icon>
952
+ iconClass="text-primary animate-spin" [ariaHidden]="true" />
983
953
  <p class="text-black dark:text-white">Cargando datos...</p>
984
954
  </div>
985
955
  }
@@ -989,11 +959,9 @@
989
959
  <div
990
960
  class="absolute inset-0 flex flex-col gap-3 items-center justify-center py-4 bg-white/80 dark:bg-foreground/80 backdrop-blur-sm z-501 select-none rounded"
991
961
  >
992
- <lucide-icon
993
- [name]="iconsService.icons.info"
962
+ <JIcon [icon]="Icons.Info"
994
963
  size="35"
995
- class="text-primary"
996
- ></lucide-icon>
964
+ iconClass="text-primary" [ariaHidden]="true" />
997
965
  <p class="text-black dark:text-white">No hay datos disponibles</p>
998
966
  </div>
999
967
  }
@@ -1006,11 +974,9 @@
1006
974
  <div
1007
975
  class="flex flex-col gap-3 items-center justify-center py-10 bg-white dark:bg-foreground rounded border border-border dark:border-dark-border"
1008
976
  >
1009
- <lucide-icon
1010
- [name]="iconsService.icons.loading"
977
+ <JIcon [icon]="Icons.Loader2"
1011
978
  size="30"
1012
- class="text-primary animate-spin"
1013
- ></lucide-icon>
979
+ iconClass="text-primary animate-spin" [ariaHidden]="true" />
1014
980
  <p class="text-black dark:text-white">Cargando datos...</p>
1015
981
  </div>
1016
982
  } @else if (displayData.length > 0) {
@@ -1034,10 +1000,9 @@
1034
1000
  <div class="min-w-0 flex-1 overflow-hidden">
1035
1001
  <div class="flex items-center gap-1 text-[12px] font-bold">
1036
1002
  <span class="truncate">{{ item.title }}</span>
1037
- <lucide-icon
1038
- [name]="iconsService.icons.arrowBigRight"
1003
+ <JIcon [icon]="Icons.ArrowBigRight"
1039
1004
  [size]="16"
1040
- class="shrink-0"
1005
+ iconClass="shrink-0"
1041
1006
  />
1042
1007
  </div>
1043
1008
  <div class="truncate text-[11px] opacity-80">
@@ -1045,12 +1010,10 @@
1045
1010
  </div>
1046
1011
  </div>
1047
1012
 
1048
- <lucide-icon
1049
- [name]="iconsService.icons.chevronDown"
1013
+ <JIcon [icon]="Icons.ChevronDown"
1050
1014
  size="18"
1051
- class="shrink-0 transition-transform duration-300"
1052
- [class]="expandedRows.has(item) ? 'rotate-180' : ''"
1053
- />
1015
+ iconClass="shrink-0 transition-transform duration-300"
1016
+ [class]="expandedRows.has(item) ? 'rotate-180' : ''" [ariaHidden]="true" />
1054
1017
  </div>
1055
1018
 
1056
1019
  <div
@@ -1067,7 +1030,7 @@
1067
1030
 
1068
1031
  <div class="flex items-center gap-1">
1069
1032
  <JButton
1070
- [icon]="iconsService.icons.prevPage"
1033
+ [icon]="Icons.ChevronLeft"
1071
1034
  (clicked)="groupTable['changePage'](item.title, 'prev')"
1072
1035
  [disabled]="(item.meta?.page?.currentPage ?? 1) <= 1"
1073
1036
  [isLoading]="
@@ -1077,7 +1040,7 @@
1077
1040
  />
1078
1041
 
1079
1042
  <JButton
1080
- [icon]="iconsService.icons.nextPage"
1043
+ [icon]="Icons.ChevronRight"
1081
1044
  (clicked)="groupTable['changePage'](item.title, 'next')"
1082
1045
  [disabled]="
1083
1046
  (item.meta?.page?.currentPage ?? 1) >=
@@ -1162,16 +1125,14 @@
1162
1125
  }
1163
1126
  </div>
1164
1127
 
1165
- <lucide-icon
1166
- [name]="iconsService.icons.chevronDown"
1128
+ <JIcon [icon]="Icons.ChevronDown"
1167
1129
  size="16"
1168
- class="shrink-0 transition-transform duration-300"
1130
+ iconClass="shrink-0 transition-transform duration-300"
1169
1131
  [class]="
1170
1132
  mobileInnerExpandedRows.has(group)
1171
1133
  ? 'rotate-180'
1172
1134
  : ''
1173
- "
1174
- />
1135
+ " [ariaHidden]="true" />
1175
1136
  </div>
1176
1137
 
1177
1138
  <div
@@ -1191,10 +1152,8 @@
1191
1152
  <div
1192
1153
  class="flex items-center gap-2 bg-primary/5 px-3 py-2 text-[12px] font-bold dark:bg-dark-primary/10"
1193
1154
  >
1194
- <lucide-icon
1195
- [name]="iconsService.icons.table"
1196
- size="15"
1197
- ></lucide-icon>
1155
+ <JIcon [icon]="Icons.Table"
1156
+ size="15" [ariaHidden]="true" />
1198
1157
  Detalles del estudiante
1199
1158
  </div>
1200
1159
 
@@ -1370,10 +1329,9 @@
1370
1329
  }
1371
1330
  </div>
1372
1331
 
1373
- <lucide-icon
1374
- [name]="iconsService.icons.chevronDown"
1332
+ <JIcon [icon]="Icons.ChevronDown"
1375
1333
  size="18"
1376
- class="shrink-0 transition-transform duration-300"
1334
+ iconClass="shrink-0 transition-transform duration-300"
1377
1335
  [class]="expandedRows.has(item) ? 'rotate-180' : ''"
1378
1336
  />
1379
1337
  </div>
@@ -1396,10 +1354,8 @@
1396
1354
  <div
1397
1355
  class="flex items-center gap-2 text-[12px] font-bold"
1398
1356
  >
1399
- <lucide-icon
1400
- [name]="iconsService.icons.table"
1401
- size="15"
1402
- ></lucide-icon>
1357
+ <JIcon [icon]="Icons.Table"
1358
+ size="15" [ariaHidden]="true" />
1403
1359
  Detalles del registro
1404
1360
  </div>
1405
1361
  </div>
@@ -1448,17 +1404,14 @@
1448
1404
  <div
1449
1405
  class="flex items-center gap-2 text-[12px] font-bold"
1450
1406
  >
1451
- <lucide-icon
1452
- [name]="iconsService.icons.filterList"
1453
- size="15"
1454
- ></lucide-icon>
1407
+ <JIcon [icon]="Icons.ArrowDownWideNarrow"
1408
+ size="15" [ariaHidden]="true" />
1455
1409
  Cambios en los datos
1456
1410
  </div>
1457
1411
 
1458
- <lucide-icon
1459
- [name]="iconsService.icons.chevronDown"
1412
+ <JIcon [icon]="Icons.ChevronDown"
1460
1413
  size="16"
1461
- class="transition-transform duration-300"
1414
+ iconClass="transition-transform duration-300"
1462
1415
  [class]="
1463
1416
  mobileInnerExpandedRows.has(item)
1464
1417
  ? 'rotate-180'
@@ -1542,11 +1495,9 @@
1542
1495
  <div
1543
1496
  class="flex flex-col gap-3 items-center justify-center py-10 bg-white dark:bg-foreground rounded border border-border dark:border-dark-border"
1544
1497
  >
1545
- <lucide-icon
1546
- [name]="iconsService.icons.info"
1498
+ <JIcon [icon]="Icons.Info"
1547
1499
  size="30"
1548
- class="text-primary"
1549
- ></lucide-icon>
1500
+ iconClass="text-primary" [ariaHidden]="true" />
1550
1501
  <p class="text-black dark:text-white">No hay datos disponibles</p>
1551
1502
  </div>
1552
1503
  }
@@ -1596,11 +1547,9 @@
1596
1547
  getValue(item, column) === null ||
1597
1548
  getValue(item, column) === undefined
1598
1549
  ) {
1599
- <lucide-icon
1600
- [name]="iconsService.icons.linkOff"
1550
+ <JIcon [icon]="Icons.Link2Off"
1601
1551
  size="20"
1602
- class="text-dark-primary dark:text-primary"
1603
- ></lucide-icon>
1552
+ iconClass="text-dark-primary dark:text-primary" [ariaHidden]="true" />
1604
1553
  } @else {
1605
1554
  <a
1606
1555
  href="{{ getValue(item, column) }}"
@@ -1609,7 +1558,7 @@
1609
1558
  rel="noopener noreferrer"
1610
1559
  (click)="$event.stopPropagation()"
1611
1560
  >
1612
- <lucide-icon [name]="iconsService.icons.link" size="20"></lucide-icon>
1561
+ <JIcon [icon]="Icons.Link" size="20" [ariaHidden]="true" />
1613
1562
  </a>
1614
1563
  }
1615
1564
  } @else if (column.isLinkImage && getValue(item, column)) {
@@ -1617,10 +1566,10 @@
1617
1566
  <JButton
1618
1567
  [icon]="
1619
1568
  column.valueData?.(item)
1620
- ? iconsService.icons.img
1621
- : iconsService.icons.imageOff
1569
+ ? Icons.Image
1570
+ : Icons.ImageOff
1622
1571
  "
1623
- [iconChange]="iconsService.icons.imgs"
1572
+ [iconChange]="Icons.Images"
1624
1573
  [isChangeIcon]="
1625
1574
  keyDialog === getValue(item, column).split(',')[0] &&
1626
1575
  dialog.isOpen(keyDialog)
@@ -1647,19 +1596,15 @@
1647
1596
  } @else if (column.isDecoratorDateTime && getValue(item, column)) {
1648
1597
  <div class="flex flex-col items-end gap-1 text-[11px]">
1649
1598
  <div class="flex items-center gap-1">
1650
- <lucide-icon
1651
- [name]="iconsService.icons.calendar"
1599
+ <JIcon [icon]="Icons.Calendar"
1652
1600
  size="13"
1653
- class="text-gray-500 dark:text-gray-400"
1654
- ></lucide-icon>
1601
+ iconClass="text-gray-500 dark:text-gray-400" [ariaHidden]="true" />
1655
1602
  <span>{{ getValue(item, column).split(",")[0] }}</span>
1656
1603
  </div>
1657
1604
  <div class="flex items-center gap-1">
1658
- <lucide-icon
1659
- [name]="iconsService.icons.clock"
1605
+ <JIcon [icon]="Icons.Clock"
1660
1606
  size="13"
1661
- class="text-gray-500 dark:text-gray-400"
1662
- ></lucide-icon>
1607
+ iconClass="text-gray-500 dark:text-gray-400" [ariaHidden]="true" />
1663
1608
  <span>{{ getValue(item, column).split(",")[1]?.trim() }}</span>
1664
1609
  </div>
1665
1610
  </div>
@@ -1687,7 +1632,7 @@
1687
1632
 
1688
1633
  <!-- Count register -->
1689
1634
  @if (isGroupTable) {
1690
- <div class="flex flex-wrap mt-3 gap-3 items-center">
1635
+ <div class="flex flex-wrap mt-3 gap-3 max-[768px]:gap-[8px] max-[400px]:gap-[6px] items-center">
1691
1636
  <ng-container [ngTemplateOutlet]="groupsTemplate"></ng-container>
1692
1637
  </div>
1693
1638
  }
@@ -2,79 +2,16 @@
2
2
  --j-table-options-col-width: 7.5rem;
3
3
  }
4
4
 
5
- .j-table-options-col,
6
- .j-group-pagination-cell,
7
- .j-group-expand-table-cell--options {
8
- box-sizing: border-box;
9
- min-width: var(--j-table-options-col-width);
10
- width: var(--j-table-options-col-width);
11
- max-width: var(--j-table-options-col-width);
12
- }
13
-
14
- .j-group-pagination-cell {
15
- vertical-align: middle;
16
- }
17
-
18
- .j-group-paginator {
19
- display: flex;
20
- flex-direction: column;
21
- align-items: center;
22
- justify-content: center;
23
- gap: 0.25rem;
24
- opacity: 0;
25
- visibility: hidden;
26
- pointer-events: none;
27
- transition:
28
- opacity 320ms ease-out,
29
- visibility 320ms;
30
- }
31
-
32
- .j-group-inner-table {
33
- table-layout: fixed;
34
- }
35
-
36
5
  .j-group-paginator.is-expanded {
37
6
  opacity: 1;
38
7
  visibility: visible;
39
8
  pointer-events: auto;
40
9
  }
41
10
 
42
- .j-group-number-col {
43
- box-sizing: border-box;
44
- width: 2.75rem;
45
- min-width: 2.75rem;
46
- max-width: 2.75rem;
47
- padding-left: 0.35rem !important;
48
- padding-right: 0.35rem !important;
49
- }
50
-
51
11
  .j-group-student-row td {
52
12
  vertical-align: middle;
53
13
  }
54
14
 
55
- .j-group-expand-table {
56
- display: table;
57
- width: 100%;
58
- min-width: 100%;
59
- border-collapse: collapse;
60
- table-layout: fixed;
61
- }
62
-
63
- .j-group-expand-table-row {
64
- display: table-row;
65
- }
66
-
67
- .j-group-expand-table-cell {
68
- display: table-cell;
69
- vertical-align: middle;
70
- }
71
-
72
- .j-group-expand-table-cell--options {
73
- position: sticky;
74
- right: 0;
75
- z-index: 2;
76
- }
77
-
78
15
  :host ::ng-deep thead.j-group-thead-expanded th {
79
16
  animation: group-thead-reveal 300ms ease-out both;
80
17
  }