@innertia-solutions/nuxt-theme-spark 0.1.108 → 0.1.110

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.
@@ -484,7 +484,7 @@ defineExpose({
484
484
  <!-- Table view -->
485
485
  <div v-if="!isGridView" class="overflow-x-auto relative">
486
486
  <table
487
- class="relative divide-y divide-gray-200 dark:divide-slate-700"
487
+ class="relative divide-y divide-card-line"
488
488
  :style="{ tableLayout: 'fixed', width: table.getTotalSize() + 'px', minWidth: '100%' }"
489
489
  >
490
490
  <colgroup>
@@ -494,11 +494,11 @@ defineExpose({
494
494
  :style="{ width: col.getSize() + 'px' }"
495
495
  >
496
496
  </colgroup>
497
- <thead class="relative z-20 bg-white dark:bg-slate-800">
497
+ <thead class="relative z-20 bg-card">
498
498
  <template v-for="headerGroup in table.getHeaderGroups()" :key="headerGroup.id">
499
499
  <!-- Main header row -->
500
500
  <tr
501
- class="divide-x divide-slate-200 dark:divide-slate-700"
501
+ class="divide-x divide-card-line"
502
502
  >
503
503
  <th
504
504
  v-for="header in headerGroup.headers"
@@ -524,12 +524,12 @@ defineExpose({
524
524
  :checked="table.getIsAllRowsSelected()"
525
525
  :indeterminate="table.getIsSomeRowsSelected()"
526
526
  @change="table.getToggleAllRowsSelectedHandler()($event)"
527
- class="mx-2 shrink-0 border-gray-300 rounded-sm text-blue-900 focus:ring-0 focus:ring-offset-0 dark:bg-slate-800 dark:border-slate-600"
527
+ class="mx-2 shrink-0 border-card-line rounded-sm text-blue-900 focus:ring-0 focus:ring-offset-0 dark:bg-slate-800 border-card-line"
528
528
  />
529
529
  </template>
530
530
  <!-- Regular column header -->
531
531
  <template v-else>
532
- <div class="px-4 py-3 flex items-center gap-x-1 text-xs font-medium text-slate-500 dark:text-slate-400 w-full">
532
+ <div class="px-4 py-3 flex items-center gap-x-1 text-xs font-medium text-muted-foreground w-full">
533
533
  {{ header.column.columnDef.meta?.label ?? header.id }}
534
534
  <span v-if="header.column.getCanSort()">
535
535
  <IconSelector v-if="!header.column.getIsSorted()" class="size-4 opacity-40" />
@@ -553,7 +553,7 @@ defineExpose({
553
553
  class="h-4 w-px transition-all"
554
554
  :class="header.column.getIsResizing()
555
555
  ? 'bg-indigo-400 dark:bg-indigo-500 !w-0.5'
556
- : 'bg-slate-200 dark:bg-slate-600 group-hover/rz:bg-indigo-300 dark:group-hover/rz:bg-indigo-600 group-hover/rz:w-0.5'"
556
+ : 'bg-surface-1 group-hover/rz:bg-indigo-300 dark:group-hover/rz:bg-indigo-600 group-hover/rz:w-0.5'"
557
557
  />
558
558
  </div>
559
559
  </template>
@@ -563,7 +563,7 @@ defineExpose({
563
563
  <!-- Column filter row -->
564
564
  <tr
565
565
  v-if="hasFilterableColumns"
566
- class="divide-x divide-gray-200 dark:divide-slate-700 border-b border-gray-200 dark:border-slate-700 bg-slate-50/50 dark:bg-slate-800/50"
566
+ class="divide-x divide-card-line border-b border-card-line bg-muted/50"
567
567
  >
568
568
  <th
569
569
  v-for="header in headerGroup.headers"
@@ -575,20 +575,20 @@ defineExpose({
575
575
  :value="header.column.getFilterValue() ?? ''"
576
576
  @input="(e) => header.column.setFilterValue(e.target.value || undefined)"
577
577
  :placeholder="`Filtrar ${header.column.columnDef.meta?.label ?? ''}...`"
578
- class="w-full bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-lg text-xs text-slate-600 dark:text-slate-300 px-2.5 py-1 focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-400 dark:focus:border-indigo-500 outline-none transition-all"
578
+ class="w-full bg-card border border-card-line rounded-lg text-xs text-muted-foreground-1 px-2.5 py-1 focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-400 dark:focus:border-indigo-500 outline-none transition-all"
579
579
  />
580
580
  </th>
581
581
  </tr>
582
582
  </template>
583
583
  </thead>
584
584
 
585
- <tbody ref="tableBodyRef" class="divide-y divide-gray-200 dark:divide-slate-700">
585
+ <tbody ref="tableBodyRef" class="divide-y divide-card-line">
586
586
  <!-- Loading skeleton rows -->
587
587
  <tr
588
588
  v-if="loading"
589
589
  v-for="(_, i) in skeletonRows"
590
590
  :key="'sk-' + i"
591
- class="animate-pulse divide-x divide-gray-200 dark:divide-slate-700 bg-white dark:bg-slate-800"
591
+ class="animate-pulse divide-x divide-card-line bg-card"
592
592
  >
593
593
  <td
594
594
  v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
@@ -596,8 +596,8 @@ defineExpose({
596
596
  :class="header.id === 'select' ? 'text-center w-12' : 'px-4'"
597
597
  :style="{ height: lastRowHeight + 'px' }"
598
598
  >
599
- <div v-if="header.id === 'select'" class="w-4 h-4 bg-gray-300 dark:bg-slate-600 rounded mx-auto"></div>
600
- <div v-else class="h-4 w-[50%] rounded bg-gray-200 dark:bg-slate-600"></div>
599
+ <div v-if="header.id === 'select'" class="w-4 h-4 bg-surface-1 rounded mx-auto"></div>
600
+ <div v-else class="h-4 w-[50%] rounded bg-surface-1"></div>
601
601
  </td>
602
602
  </tr>
603
603
 
@@ -606,7 +606,7 @@ defineExpose({
606
606
  v-if="loading && skeletonRows.length < pagination.pageSize"
607
607
  v-for="i in (pagination.pageSize - skeletonRows.length)"
608
608
  :key="'lf-' + i"
609
- class="divide-x divide-gray-200 dark:divide-slate-700 bg-white dark:bg-slate-800"
609
+ class="divide-x divide-card-line bg-card"
610
610
  >
611
611
  <td
612
612
  v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
@@ -620,7 +620,7 @@ defineExpose({
620
620
  v-if="!loading && tableData.length === 0"
621
621
  v-for="i in pagination.pageSize"
622
622
  :key="'esk-' + i"
623
- class="divide-x divide-gray-200 dark:divide-slate-700 bg-white dark:bg-slate-800"
623
+ class="divide-x divide-card-line bg-card"
624
624
  >
625
625
  <td
626
626
  v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
@@ -638,7 +638,7 @@ defineExpose({
638
638
  @click="(e) => handleRowClick(row, e)"
639
639
  @keydown="(e) => handleRowKeydown(row, e)"
640
640
  :tabindex="isRowClickEnabled ? 0 : undefined"
641
- class="divide-x divide-gray-200 dark:divide-slate-700 bg-white hover:bg-gray-50 dark:bg-slate-800 dark:hover:bg-slate-900 transition-colors"
641
+ class="divide-x divide-card-line bg-card hover:bg-layer-hover transition-colors"
642
642
  :class="{
643
643
  'cursor-pointer': isRowClickEnabled,
644
644
  'bg-indigo-50/40 dark:bg-indigo-900/10 hover:bg-indigo-50/60': row.getIsSelected(),
@@ -652,7 +652,7 @@ defineExpose({
652
652
  :class="[
653
653
  cell.column.id === 'select'
654
654
  ? 'text-center w-12'
655
- : 'px-4 py-3 text-sm text-slate-600 dark:text-slate-300',
655
+ : 'px-4 py-3 text-sm text-muted-foreground-1',
656
656
  cell.column.id !== 'select' ? cell.column.columnDef.meta?.class ?? '' : '',
657
657
  ]"
658
658
  >
@@ -664,7 +664,7 @@ defineExpose({
664
664
  :checked="row.getIsSelected()"
665
665
  :disabled="!row.getCanSelect()"
666
666
  @change="row.getToggleSelectedHandler()($event)"
667
- class="rounded border-gray-300 focus:ring-0 focus:ring-offset-0 dark:bg-slate-800 dark:border-slate-600"
667
+ class="rounded border-card-line focus:ring-0 focus:ring-offset-0 dark:bg-slate-800 border-card-line"
668
668
  />
669
669
  </div>
670
670
  </template>
@@ -682,7 +682,7 @@ defineExpose({
682
682
  v-if="!loading && tableData.length > 0 && tableData.length < pagination.pageSize"
683
683
  v-for="i in (pagination.pageSize - tableData.length)"
684
684
  :key="'fill-' + i"
685
- class="divide-x divide-gray-200 dark:divide-slate-700 bg-white dark:bg-slate-800"
685
+ class="divide-x divide-card-line bg-card"
686
686
  >
687
687
  <td
688
688
  v-for="header in (table.getHeaderGroups()[0]?.headers ?? [])"
@@ -696,7 +696,7 @@ defineExpose({
696
696
  <!-- Empty state overlays -->
697
697
  <div
698
698
  v-if="!loading && tableData.length === 0 && !search && !columnFilters.length"
699
- class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-white/60 dark:bg-slate-800/60 rounded-xl"
699
+ class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-card/60 rounded-xl"
700
700
  >
701
701
  <slot name="empty">
702
702
  <p class="text-slate-400 dark:text-slate-500 text-lg font-medium italic">No hay registros</p>
@@ -705,7 +705,7 @@ defineExpose({
705
705
 
706
706
  <div
707
707
  v-if="!loading && tableData.length === 0 && (search || columnFilters.length)"
708
- class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-white/60 dark:bg-slate-800/60 rounded-xl"
708
+ class="absolute inset-0 z-10 pointer-events-none flex items-center justify-center backdrop-blur-sm bg-card/60 rounded-xl"
709
709
  >
710
710
  <slot name="empty-search">
711
711
  <p class="text-slate-400 dark:text-slate-500 text-lg font-medium italic">No hay registros en la búsqueda</p>
@@ -718,11 +718,11 @@ defineExpose({
718
718
  <div v-if="loading" :class="gridClass">
719
719
  <div v-for="(_, i) in skeletonRows" :key="'gsk-' + i" class="animate-pulse">
720
720
  <slot name="grid-skeleton">
721
- <div class="bg-white dark:bg-slate-800 rounded-lg border border-gray-200 dark:border-slate-700 p-4">
721
+ <div class="bg-card rounded-lg border border-card-line p-4">
722
722
  <div class="space-y-3">
723
- <div class="h-4 bg-gray-200 dark:bg-slate-600 rounded w-3/4"></div>
724
- <div class="h-4 bg-gray-200 dark:bg-slate-600 rounded w-1/2"></div>
725
- <div class="h-6 bg-gray-200 dark:bg-slate-600 rounded w-1/4"></div>
723
+ <div class="h-4 bg-surface-1 rounded w-3/4"></div>
724
+ <div class="h-4 bg-surface-1 rounded w-1/2"></div>
725
+ <div class="h-6 bg-surface-1 rounded w-1/4"></div>
726
726
  </div>
727
727
  </div>
728
728
  </slot>
@@ -740,16 +740,16 @@ defineExpose({
740
740
  :checkable="checkable"
741
741
  :toggle-row="() => row.toggleSelected()"
742
742
  >
743
- <div class="bg-white dark:bg-slate-800 rounded-lg border border-gray-200 dark:border-slate-700 p-4 hover:shadow-md transition-shadow relative"
743
+ <div class="bg-card rounded-lg border border-card-line p-4 hover:shadow-md transition-shadow relative"
744
744
  :class="{ 'ring-2 ring-indigo-400 dark:ring-indigo-600': row.getIsSelected() }">
745
745
  <div v-if="checkable" class="absolute top-2 left-2 z-10">
746
746
  <input type="checkbox" :checked="row.getIsSelected()" @change="row.toggleSelected()"
747
- class="rounded border-gray-300 dark:bg-slate-800 dark:border-slate-600" />
747
+ class="rounded border-card-line dark:bg-slate-800 border-card-line" />
748
748
  </div>
749
749
  <div class="space-y-2" :class="{ 'pt-6': checkable }">
750
750
  <div v-for="cell in row.getVisibleCells().filter(c => c.column.id !== 'select')" :key="cell.id" class="flex justify-between">
751
- <span class="text-sm text-gray-500 dark:text-slate-400">{{ cell.column.columnDef.meta?.label ?? cell.column.id }}:</span>
752
- <span class="text-sm text-gray-900 dark:text-slate-100">
751
+ <span class="text-sm text-muted-foreground">{{ cell.column.columnDef.meta?.label ?? cell.column.id }}:</span>
752
+ <span class="text-sm text-foreground">
753
753
  <slot :name="cell.column.id" :row="row.original" :value="cell.getValue()">{{ cell.getValue() }}</slot>
754
754
  </span>
755
755
  </div>
@@ -760,27 +760,27 @@ defineExpose({
760
760
 
761
761
  <div v-else class="flex items-center justify-center py-12">
762
762
  <slot v-if="!search && !columnFilters.length" name="empty">
763
- <p class="text-gray-500 dark:text-slate-400 text-lg">No hay registros</p>
763
+ <p class="text-muted-foreground text-lg">No hay registros</p>
764
764
  </slot>
765
765
  <slot v-else name="empty-search">
766
- <p class="text-gray-500 dark:text-slate-400 text-lg">No hay registros en la búsqueda</p>
766
+ <p class="text-muted-foreground text-lg">No hay registros en la búsqueda</p>
767
767
  </slot>
768
768
  </div>
769
769
  </div>
770
770
 
771
771
  <!-- Pagination & controls bar -->
772
- <div ref="paginationBarRef" class="flex flex-col sm:flex-row items-center justify-between gap-y-4 sm:gap-y-0 px-4 py-3 border-t border-slate-200 dark:border-slate-700">
772
+ <div ref="paginationBarRef" class="flex flex-col sm:flex-row items-center justify-between gap-y-4 sm:gap-y-0 px-4 py-3 border-t border-card-line">
773
773
  <!-- Left: reload, total, cache, columns button -->
774
774
  <div class="flex items-center gap-x-4 flex-wrap gap-y-2">
775
775
  <!-- Reload button -->
776
776
  <div v-if="showReloadButton" class="flex items-center gap-x-2">
777
777
  <IconReload
778
778
  v-if="!loading"
779
- class="size-4 cursor-pointer text-gray-500 dark:text-slate-400 hover:text-gray-700 dark:hover:text-slate-300 transition-colors"
779
+ class="size-4 cursor-pointer text-muted-foreground hover:text-gray-700 dark:hover:text-slate-300 transition-colors"
780
780
  @click="reloadTable"
781
781
  />
782
782
  <div v-else>
783
- <svg class="animate-spin size-4 text-slate-400 dark:text-slate-600" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
783
+ <svg class="animate-spin size-4 text-muted-foreground-2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
784
784
  <circle cx="12" cy="12" r="10" opacity=".25" />
785
785
  <path d="M22 12a10 10 0 0 1-10 10" />
786
786
  </svg>
@@ -788,7 +788,7 @@ defineExpose({
788
788
  </div>
789
789
 
790
790
  <!-- Total records -->
791
- <p class="text-sm text-gray-800 dark:text-slate-200 font-medium">{{ rowCount }} registros</p>
791
+ <p class="text-sm text-foreground font-medium">{{ rowCount }} registros</p>
792
792
 
793
793
  <!-- Cache badge -->
794
794
  <div v-if="isDataFromCache && cached" class="group relative flex items-center">
@@ -811,12 +811,12 @@ defineExpose({
811
811
  <div class="flex items-center gap-x-8">
812
812
  <!-- Per page selector -->
813
813
  <div class="flex items-center gap-x-2">
814
- <label class="text-[10px] font-bold text-gray-400 dark:text-slate-500 uppercase tracking-widest">Filas:</label>
814
+ <label class="text-[10px] font-bold text-muted-foreground uppercase tracking-widest">Filas:</label>
815
815
  <select
816
816
  v-if="!isCustomPerPage"
817
817
  :value="pagination.pageSize"
818
818
  @change="(e) => handlePerPageChange(e.target.value)"
819
- class="bg-slate-100 dark:bg-slate-800 border-none text-[11px] font-bold text-slate-600 dark:text-slate-300 rounded-lg focus:ring-0 cursor-pointer py-1 pl-2 pr-8"
819
+ class="bg-surface border-none text-[11px] font-bold text-muted-foreground-1 rounded-lg focus:ring-0 cursor-pointer py-1 pl-2 pr-8"
820
820
  >
821
821
  <option :value="10">10</option>
822
822
  <option :value="25">25</option>
@@ -830,7 +830,7 @@ defineExpose({
830
830
  :value="pagination.pageSize"
831
831
  @change="(e) => table.setPageSize(parseInt(e.target.value) || 10)"
832
832
  min="1" max="500"
833
- class="w-14 bg-slate-100 dark:bg-slate-800 border-none text-[11px] font-bold text-slate-600 dark:text-slate-300 rounded-lg focus:ring-2 focus:ring-indigo-500/20 py-1 px-2"
833
+ class="w-14 bg-surface border-none text-[11px] font-bold text-muted-foreground-1 rounded-lg focus:ring-2 focus:ring-indigo-500/20 py-1 px-2"
834
834
  />
835
835
  <button @click="resetPerPage" class="text-[10px] text-indigo-500 font-bold hover:underline">Volver</button>
836
836
  </div>
@@ -840,7 +840,7 @@ defineExpose({
840
840
  <nav class="flex justify-end items-center gap-x-1" aria-label="Pagination">
841
841
  <button
842
842
  type="button"
843
- class="size-8 flex items-center justify-center rounded-lg text-gray-800 hover:bg-gray-100 dark:text-white dark:hover:bg-white/10 disabled:opacity-30"
843
+ class="size-8 flex items-center justify-center rounded-lg text-foreground hover:bg-muted-hover disabled:opacity-30"
844
844
  :disabled="!table.getCanPreviousPage()"
845
845
  @click="table.previousPage()"
846
846
  >
@@ -849,15 +849,15 @@ defineExpose({
849
849
  </svg>
850
850
  </button>
851
851
  <div class="flex items-center gap-x-1 mx-2">
852
- <span class="size-8 flex items-center justify-center text-xs font-bold rounded-lg bg-gray-100 dark:bg-slate-700 text-gray-800 dark:text-white">
852
+ <span class="size-8 flex items-center justify-center text-xs font-bold rounded-lg bg-surface text-foreground">
853
853
  {{ pagination.pageIndex + 1 }}
854
854
  </span>
855
- <span class="text-[10px] font-bold text-gray-400 dark:text-slate-500 uppercase mx-1">de</span>
856
- <span class="text-[10px] font-bold text-gray-400 dark:text-slate-500">{{ table.getPageCount() }}</span>
855
+ <span class="text-[10px] font-bold text-muted-foreground uppercase mx-1">de</span>
856
+ <span class="text-[10px] font-bold text-muted-foreground">{{ table.getPageCount() }}</span>
857
857
  </div>
858
858
  <button
859
859
  type="button"
860
- class="size-8 flex items-center justify-center rounded-lg text-gray-800 hover:bg-gray-100 dark:text-white dark:hover:bg-white/10 disabled:opacity-30"
860
+ class="size-8 flex items-center justify-center rounded-lg text-foreground hover:bg-muted-hover disabled:opacity-30"
861
861
  :disabled="!table.getCanNextPage()"
862
862
  @click="table.nextPage()"
863
863
  >
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innertia-solutions/nuxt-theme-spark",
3
- "version": "0.1.108",
3
+ "version": "0.1.110",
4
4
  "description": "Innertia Solutions — Spark theme: backoffice, landing and mobile components and layouts",
5
5
  "keywords": [
6
6
  "nuxt",