@7365admin1/layer-common 3.2.2-staging.154 → 3.2.2-staging.156

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.
@@ -357,6 +357,29 @@
357
357
  </h2>
358
358
  </div>
359
359
 
360
+ <!--
361
+ THE TWO SERIES COLOURS STAY LITERAL, AND HERE IS WHY.
362
+
363
+ Everything else in this chart already follows the theme - the gridlines,
364
+ the axis labels and the ring around each dot are all Vuetify theme vars.
365
+ The two series are not, and they are the only chart colours in the file
366
+ that are still hexes.
367
+
368
+ They are left that way deliberately. The handoff names no chart palette
369
+ at all (searched: no "chart", no "legend", no "graph", and neither hex
370
+ appears anywhere in it), so the fallback rule is "use the token the
371
+ literal was already imitating". `#e53935` is plainly `--err`. `#ff9b9b`
372
+ is a second, softer red, and the palette has no second red - the only
373
+ other red token is `--err-bg`, a 10%-alpha FILL that would be invisible
374
+ as a 3px line. Re-pointing just one of them would collapse the pair in
375
+ dark mode, where `--err` is `rgb(229,115,115)` and would sit almost on
376
+ top of `#ff9b9b`'s `rgb(255,155,155)` - two lines the reader could no
377
+ longer tell apart. That is the same "do not merge two series into one
378
+ colour" trap as the Work Order Status bars below.
379
+
380
+ So: a two-series chart palette is missing from the design system, and
381
+ that is a designer question, not something to invent here.
382
+ -->
360
383
  <div v-if="hasChartData" class="mt-4" ref="chartContainerRef">
361
384
  <svg
362
385
  :viewBox="`0 0 ${chartWidth} 260`"
@@ -2473,6 +2496,29 @@ const todayAttentions = computed(() =>
2473
2496
  normalizeListItems(["todayAttentions", "attentions"])
2474
2497
  );
2475
2498
 
2499
+ /**
2500
+ * THE WORK ORDER STATUS BARS.
2501
+ *
2502
+ * Was three hand-picked hexes - `#2fb84d` green, `#f12d2d` red, `#ff8900`
2503
+ * orange - and blind to the theme: the SAME three bars in light and in dark,
2504
+ * because a literal cannot follow a theme. Each is re-pointed at the token
2505
+ * whose hue it was already imitating, which is the same treatment the KPI
2506
+ * tiles got, and which keeps all three bars distinguishable.
2507
+ *
2508
+ * ONE OF THEM DOES NOT AGREE WITH `utils/status.ts`, ON PURPOSE.
2509
+ * That file maps `completed -> ok` and `pending -> warn` (both honoured here),
2510
+ * but it also maps `in progress -> warn` - the SAME tone as `pending`. Applying
2511
+ * it literally would paint two of these three bars the same amber and make the
2512
+ * chart unreadable, which is a regression, not a fix. So "In Progress" keeps
2513
+ * the tone it is drawn in today (`--err`, the token `#f12d2d` was imitating)
2514
+ * and this stays a colour change with no behaviour change.
2515
+ *
2516
+ * That leaves a real inconsistency to settle: on this very page the "In
2517
+ * Progress" feedback CHIP is amber (`warn`) while this bar is red. Resolving it
2518
+ * means either giving `in progress` its own tone in `utils/status.ts` - which
2519
+ * is shared by every chip in the estate - or ruling that a chart series is not
2520
+ * a status chip. Both are design decisions, so neither is taken here.
2521
+ */
2476
2522
  const workOrderStatus = computed(() => {
2477
2523
  const summary = finalDashboardData.value?.workOrderStatusSummary;
2478
2524
  const metric = getMetric(["openWorkOrder", "workOrders", "workOrder"]);
@@ -2493,19 +2539,19 @@ const workOrderStatus = computed(() => {
2493
2539
  label: "Completed",
2494
2540
  value: completed,
2495
2541
  percent: (completed / max) * 100,
2496
- color: "#2fb84d",
2542
+ color: "var(--ok)",
2497
2543
  },
2498
2544
  {
2499
2545
  label: "In Progress",
2500
2546
  value: inProgress,
2501
2547
  percent: (inProgress / max) * 100,
2502
- color: "#f12d2d",
2548
+ color: "var(--err)",
2503
2549
  },
2504
2550
  {
2505
2551
  label: "Pending",
2506
2552
  value: pending,
2507
2553
  percent: (pending / max) * 100,
2508
- color: "#ff8900",
2554
+ color: "var(--warn)",
2509
2555
  },
2510
2556
  ];
2511
2557
  });
@@ -3945,32 +3991,53 @@ function formatDashboardTime(value?: string) {
3945
3991
  text-transform: capitalize;
3946
3992
  }
3947
3993
 
3948
- /* Was five pairs of literal pastels - the same pale green on the dark page,
3949
- and none of them the tones the rest of the product uses. */
3994
+ /* THESE FIVE ARE LITERAL ON PURPOSE - THE PRINT VIEW IS PAPER.
3995
+ *
3996
+ * `.print-dashboard-view` above pins its surface to `#ffffff` and its ink to
3997
+ * `#1e293b` in BOTH themes, because a printed page is white however the app is
3998
+ * themed. Putting the status tokens on these badges therefore did the opposite
3999
+ * of what tokenising usually does: it let the SCREEN theme reach a surface that
4000
+ * does not follow it. Measured on the print branch at 1440:
4001
+ *
4002
+ * light In Progress rgb(59,111,212) on rgb(235,241,251) 4.20:1
4003
+ * light Completed rgb(15,138,98) on rgb(231,243,239) 3.82:1
4004
+ * dark In Progress rgb(125,166,236) on rgb(239,244,253) 2.23:1
4005
+ * dark Completed rgb(65,199,149) on rgb(232,248,242) 1.93:1
4006
+ *
4007
+ * The dark rows are the defect: the dark-theme INK composited over the white
4008
+ * paper the print view forces, so anyone who exports the dashboard while the
4009
+ * app is in dark mode gets washed-out badges - 1.93:1, the lowest reading taken
4010
+ * on this component. So these go back to fixed pastels, and specifically to the
4011
+ * SAME five pairs the Word export writes into its own stylesheet further up, so
4012
+ * the on-page print view and the exported document finally match.
4013
+ *
4014
+ * Same rule as the signature pad: a surface that does not follow the theme must
4015
+ * not be painted with tokens that do.
4016
+ */
3950
4017
  .badge-success {
3951
- background-color: var(--ok-bg);
3952
- color: var(--ok);
4018
+ background-color: #d1fae5;
4019
+ color: #065f46;
3953
4020
  }
3954
4021
 
3955
4022
  .badge-info {
3956
- background-color: var(--info-bg);
3957
- color: var(--info);
4023
+ background-color: #e0f2fe;
4024
+ color: #075985;
3958
4025
  }
3959
4026
 
3960
4027
  .badge-danger,
3961
4028
  .badge-error {
3962
- background-color: var(--err-bg);
3963
- color: var(--err);
4029
+ background-color: #fee2e2;
4030
+ color: #991b1b;
3964
4031
  }
3965
4032
 
3966
4033
  .badge-warning {
3967
- background-color: var(--warn-bg);
3968
- color: var(--warn);
4034
+ background-color: #fef3c7;
4035
+ color: #92400e;
3969
4036
  }
3970
4037
 
3971
4038
  .badge-neutral {
3972
- background-color: var(--hover);
3973
- color: var(--text2);
4039
+ background-color: #f1f5f9;
4040
+ color: #475569;
3974
4041
  }
3975
4042
 
3976
4043
  /* ------------------------------------------------------------------ */
@@ -79,7 +79,7 @@
79
79
  <p class="flex-grow-1">Booking Fee</p>
80
80
  <v-switch
81
81
  v-model="facility.isBookingFeeEnabled"
82
- color="success"
82
+ color="accent"
83
83
  hide-details
84
84
  @update:modelValue="onChangeIsBookingFeeEnabled"
85
85
  ></v-switch>
@@ -139,7 +139,7 @@
139
139
  />
140
140
  </v-col>
141
141
  <v-col cols="12" class="mt-4">
142
- <v-card class="mx-auto border-sm pa-2" color="grey-lighten-4" tile>
142
+ <v-card class="mx-auto border-sm pa-2 fee-summary" tile>
143
143
  <v-row no-gutters align="center">
144
144
  <v-col cols="" class="text-caption"> Total Booking Fee </v-col>
145
145
  <v-col cols="" class="text-right text-caption">
@@ -169,7 +169,7 @@
169
169
  </v-card>
170
170
  </v-col>
171
171
  <v-col cols="12" class="mt-4">
172
- <v-card class="mx-auto border-sm pa-2" color="grey-lighten-4" tile>
172
+ <v-card class="mx-auto border-sm pa-2 fee-summary" tile>
173
173
  <v-row no-gutters align="center">
174
174
  <v-col class="text-caption"> Peak Total Booking Fee </v-col>
175
175
  <v-col class="text-right text-caption">
@@ -210,7 +210,7 @@
210
210
  <p class="flex-grow-1">Guest</p>
211
211
  <v-switch
212
212
  v-model="facility.isGuestEnabled"
213
- color="success"
213
+ color="accent"
214
214
  hide-details
215
215
  :disabled="!facility.isBookingFeeEnabled"
216
216
  />
@@ -256,7 +256,7 @@
256
256
  />
257
257
  </v-col>
258
258
  <v-col cols="12" class="mt-4">
259
- <v-card class="mx-auto border-sm pa-2" color="grey-lighten-4" tile>
259
+ <v-card class="mx-auto border-sm pa-2 fee-summary" tile>
260
260
  <v-row no-gutters align="center">
261
261
  <v-col class="text-caption">
262
262
  Total Booking Fee for Guest
@@ -288,7 +288,7 @@
288
288
  </v-card>
289
289
  </v-col>
290
290
  <v-col cols="12" class="mt-4">
291
- <v-card class="mx-auto border-sm pa-2" color="grey-lighten-4" tile>
291
+ <v-card class="mx-auto border-sm pa-2 fee-summary" tile>
292
292
  <v-row no-gutters align="center">
293
293
  <v-col class="text-caption">
294
294
  Peak Total Booking Fee for Guest
@@ -332,7 +332,7 @@
332
332
  <p class="flex-grow-1">Deposit</p>
333
333
  <v-switch
334
334
  v-model="facility.isDepositEnabled"
335
- color="success"
335
+ color="accent"
336
336
  hide-details
337
337
  @update:modelValue="onChangeIsDepositFeeEnabled"
338
338
  ></v-switch>
@@ -366,7 +366,7 @@
366
366
  <p class="flex-grow-1">Booking Policy</p>
367
367
  <v-switch
368
368
  v-model="facility.isBookingPolicyEnabled"
369
- color="success"
369
+ color="accent"
370
370
  hide-details
371
371
  />
372
372
  </div>
@@ -419,16 +419,14 @@
419
419
  ></v-number-input>
420
420
  </v-col>
421
421
  <v-col cols="12" md="2" class="pa-1">
422
- <v-btn
422
+ <AppButton
423
423
  :disabled="!sampleData.description && !sampleData.count"
424
424
  type="submit"
425
- color="primary"
425
+ class="w-100"
426
426
  @click="upsertChecklist()"
427
- block
428
- size="large"
429
427
  >
430
428
  {{ !isEditing ? "Add" : "Edit" }}
431
- </v-btn>
429
+ </AppButton>
432
430
  </v-col>
433
431
  </v-row>
434
432
  </section>
@@ -445,7 +443,7 @@
445
443
  <v-icon
446
444
  icon="mdi-drag"
447
445
  class="drag-handle cursor-move mr-2"
448
- color="grey-lighten-1"
446
+ color="muted"
449
447
  />
450
448
  </template>
451
449
 
@@ -465,7 +463,7 @@
465
463
  ? 'mdi-message'
466
464
  : 'mdi-message-outline'
467
465
  "
468
- :color="item.permanentRemarks ? 'primary' : 'grey-darken-1'"
466
+ :color="item.permanentRemarks ? 'primary' : 'muted'"
469
467
  variant="text"
470
468
  density="comfortable"
471
469
  @click="remarksDialog(true, item?.permanentRemarks, index)"
@@ -503,7 +501,7 @@
503
501
  <v-switch
504
502
  v-model="isBookingUnitLimitEnabled"
505
503
  class="d-flex align-center"
506
- color="primary"
504
+ color="accent"
507
505
  hide-details
508
506
  @update:model-value="onToggleBookingUnitLimit"
509
507
  />
@@ -541,7 +539,7 @@
541
539
  <v-switch
542
540
  v-model="isMaxNumberGuestLimitEnabled"
543
541
  class="d-flex align-center"
544
- color="primary"
542
+ color="accent"
545
543
  hide-details
546
544
  @update:model-value="onToggleMaxNumberGuestLimit"
547
545
  />
@@ -578,7 +576,7 @@
578
576
  <v-switch
579
577
  v-model="isCancelAllowedLimitEnabled"
580
578
  class="d-flex align-center"
581
- color="primary"
579
+ color="accent"
582
580
  hide-details
583
581
  @update:model-value="onToggleCancelAllowedLimit"
584
582
  />
@@ -607,17 +605,14 @@
607
605
  width="300"
608
606
  persistent
609
607
  >
610
- <v-card class="rounded-lg">
611
- <v-toolbar class="border-b">
612
- <span class="pl-6 font-weight-bold">Permanent Remarks</span>
613
- <v-spacer />
614
- <v-icon
615
- icon="mdi-close"
616
- size="30"
617
- class="pr-6"
618
- @click="remarksDialog(false)"
619
- />
620
- </v-toolbar>
608
+ <!-- Was a `v-card` with a bare `v-toolbar` heading, which Vuetify paints
609
+ from its own `surface` - a slab visibly lighter than the card on the
610
+ dark theme. The design's modal heading is the card's own title row. -->
611
+ <v-card class="screen-modal">
612
+ <v-card-title class="d-flex align-center">
613
+ <span class="flex-grow-1">Permanent Remarks</span>
614
+ <v-icon icon="mdi-close" size="30" @click="remarksDialog(false)" />
615
+ </v-card-title>
621
616
 
622
617
  <v-row no-gutters class="pa-4">
623
618
  <!-- remarks -->
@@ -635,13 +630,9 @@
635
630
  <!-- clear/confirm buttons-->
636
631
  <v-col cols="12" class="mt-4">
637
632
  <v-row no-gutters>
638
- <v-btn
639
- block
640
- text="confirm"
641
- color="primary"
642
- flat
643
- @click="confirmRemarks()"
644
- />
633
+ <AppButton class="w-100" @click="confirmRemarks()">
634
+ Confirm
635
+ </AppButton>
645
636
  </v-row>
646
637
  </v-col>
647
638
  </v-row>
@@ -650,18 +641,18 @@
650
641
 
651
642
  <!-- delete -->
652
643
  <v-dialog v-model="isDeleteItem" width="500" persistent class="text-center">
653
- <v-card class="rounded-xl">
654
- <!-- HEADER -->
655
- <v-toolbar class="border-b pb-2 pr-4">
656
- <v-spacer />
644
+ <v-card class="screen-modal">
645
+ <!-- HEADER - the close cross sat in a `v-toolbar`, a second grey slab
646
+ above the card on the dark theme. It is the title row's own end. -->
647
+ <v-card-title class="d-flex justify-end">
657
648
  <v-icon
658
649
  icon="mdi-close"
659
650
  size="x-large"
660
651
  @click="isDeleteItem = false"
661
652
  />
662
- </v-toolbar>
653
+ </v-card-title>
663
654
 
664
- <v-card-text class="d-flex flex-column align-center">
655
+ <v-card-text class="screen-modal__body d-flex flex-column align-center">
665
656
  <img
666
657
  src="/icons/delete-dialog-icon.svg"
667
658
  alt="delete-dialog-icon"
@@ -671,15 +662,8 @@
671
662
  />
672
663
  Are you sure you want to delete this?
673
664
  </v-card-text>
674
- <v-col>
675
- <v-btn
676
- text="yes"
677
- type="submit"
678
- color="primary"
679
- @click="confirmDelete()"
680
- width="50%"
681
- elevation="0"
682
- />
665
+ <v-col class="d-flex justify-center pb-4">
666
+ <AppButton type="submit" @click="confirmDelete()">Yes</AppButton>
683
667
  </v-col>
684
668
  </v-card>
685
669
  </v-dialog>
@@ -1080,10 +1064,17 @@ function onToggleCancelAllowedLimit(val: any) {
1080
1064
  }
1081
1065
 
1082
1066
  .list-feature-toggle {
1083
- border: 1px solid #bbbaba;
1067
+ border: 1px solid var(--border);
1084
1068
  height: 50px;
1085
1069
  }
1086
1070
 
1071
+ /* The four fee-summary panels asked Vuetify for `grey-lighten-4` - #f5f5f5 in
1072
+ BOTH themes, so a white slab inside a dark card. `--bg` is the design's
1073
+ recessed surface and follows the theme. */
1074
+ .fee-summary {
1075
+ background: var(--bg);
1076
+ }
1077
+
1087
1078
  .drag-area {
1088
1079
  cursor: grab;
1089
1080
  }
@@ -5,7 +5,11 @@
5
5
  fullscreen
6
6
  >
7
7
  <v-card>
8
- <v-toolbar style="background-color: white">
8
+ <!-- The inline `background-color: white` painted this bar white in BOTH
9
+ themes - a white slab across the top of the dialog on the dark one.
10
+ Removed, so Vuetify paints it from the theme's `surface` as every
11
+ other converted bar in the estate does. -->
12
+ <v-toolbar>
9
13
  <v-btn icon="mdi-arrow-left" @click="closeDialog"></v-btn>
10
14
 
11
15
  <v-toolbar-title>Pass & Keys</v-toolbar-title>
@@ -14,7 +18,7 @@
14
18
  </v-toolbar>
15
19
  <v-row no-gutters class="pa-15">
16
20
  <v-col cols="12">
17
- <v-card class="pa-6">
21
+ <AppCard class="pa-6">
18
22
  <v-row no-gutters>
19
23
  <v-col
20
24
  cols="12"
@@ -67,7 +71,9 @@
67
71
  >
68
72
  <template v-slot:label>
69
73
  Select template
70
- <span class="text-red font-weight-bold">*</span>
74
+ <!-- `text-red` is Vuetify's own palette red, a literal that
75
+ ignores the theme. `text-error` is the design's. -->
76
+ <span class="text-error font-weight-bold">*</span>
71
77
  </template>
72
78
  <!-- <template v-slot:append-item>
73
79
  <div v-intersect="endIntersectTemplateList" />
@@ -112,7 +118,7 @@
112
118
  @click="selectedChoicePaperSizeOrientation = 'A4'"
113
119
  :color="
114
120
  selectedChoicePaperSizeOrientation === 'A4'
115
- ? 'green'
121
+ ? 'success'
116
122
  : ''
117
123
  "
118
124
  >
@@ -156,7 +162,7 @@
156
162
  @click="selectedChoicePaperSizeOrientation = 'CCP'"
157
163
  :color="
158
164
  selectedChoicePaperSizeOrientation === 'CCP'
159
- ? 'green'
165
+ ? 'success'
160
166
  : ''
161
167
  "
162
168
  >
@@ -199,7 +205,7 @@
199
205
  @click="selectedChoicePaperSizeOrientation = 'CCL'"
200
206
  :color="
201
207
  selectedChoicePaperSizeOrientation === 'CCL'
202
- ? 'green'
208
+ ? 'success'
203
209
  : ''
204
210
  "
205
211
  >
@@ -310,7 +316,7 @@
310
316
  <template v-slot:loader="{ isActive }">
311
317
  <v-progress-linear
312
318
  :active="isActive"
313
- color="deep-purple"
319
+ color="primary-button"
314
320
  height="4"
315
321
  indeterminate
316
322
  ></v-progress-linear>
@@ -436,7 +442,7 @@
436
442
  cols="12"
437
443
  sm="7"
438
444
  md="1"
439
- :class="`text-capitalize text-body-2 white--text text ${
445
+ :class="`text-capitalize text-body-2 ${
440
446
  $vuetify.display.xs && 'mb-1'
441
447
  }`"
442
448
  >
@@ -483,7 +489,7 @@
483
489
  cols="12"
484
490
  sm="7"
485
491
  md="3"
486
- :class="`text-capitalize text-body-2 white--text text ${
492
+ :class="`text-capitalize text-body-2 ${
487
493
  $vuetify.display.xs && 'mb-1'
488
494
  }`"
489
495
  >
@@ -524,7 +530,7 @@
524
530
  cols="12"
525
531
  sm="7"
526
532
  md="1"
527
- :class="`text-capitalize text-body-2 white--text text ${
533
+ :class="`text-capitalize text-body-2 ${
528
534
  $vuetify.display.xs && 'mb-1'
529
535
  }`"
530
536
  >
@@ -569,7 +575,7 @@
569
575
  cols="12"
570
576
  sm="7"
571
577
  md="4"
572
- :class="`text-capitalize text-body-2 white--text text ${
578
+ :class="`text-capitalize text-body-2 ${
573
579
  $vuetify.display.xs && 'mb-1'
574
580
  }`"
575
581
  >
@@ -610,7 +616,7 @@
610
616
  cols="12"
611
617
  sm="7"
612
618
  md="2"
613
- :class="`text-capitalize text-body-2 white--text text ${
619
+ :class="`text-capitalize text-body-2 ${
614
620
  $vuetify.display.xs && 'mb-1'
615
621
  }`"
616
622
  >
@@ -728,16 +734,15 @@
728
734
 
729
735
  <v-row no-gutters class="pt-2">
730
736
  <v-col cols="12" class="d-flex justify-end">
731
- <v-btn
732
- color="primary"
733
- @click="printContent"
734
- :disabled="isPrintDisabled"
735
- >
737
+ <!-- `color="primary"` on a v-btn asked Vuetify to FILL with the
738
+ foreground token. The design's filled action is AppButton,
739
+ which paints from `primary-button`. -->
740
+ <AppButton @click="printContent" :disabled="isPrintDisabled">
736
741
  Print
737
- </v-btn>
742
+ </AppButton>
738
743
  </v-col>
739
744
  </v-row>
740
- </v-card>
745
+ </AppCard>
741
746
  </v-col>
742
747
  </v-row>
743
748
  </v-card>
@@ -746,7 +751,8 @@
746
751
  <!-- start range dialog -->
747
752
  <v-snackbar
748
753
  v-model="snackbarStartRange"
749
- color="red"
754
+ class="app-toast"
755
+ color="error"
750
756
  :timeout="5000"
751
757
  multi-line
752
758
  >
@@ -761,8 +767,11 @@
761
767
  generate
762
768
  </v-btn>
763
769
  <template v-slot:actions>
770
+ <!-- Was `color="white"`. The dark theme's `error` fill is a LIGHT colour
771
+ carrying dark ink (`on-error`), so a hardcoded white cross measured
772
+ ~2:1 on it. Dropping the colour lets the button inherit `on-error`
773
+ and read correctly in both themes. -->
764
774
  <v-btn
765
- color="white"
766
775
  variant="text"
767
776
  @click="snackbarStartRange = false"
768
777
  icon="mdi-close"
@@ -1226,23 +1235,20 @@ async function nextPage() {
1226
1235
  </script>
1227
1236
 
1228
1237
  <style scoped>
1229
- .custom-placeholer-color input::placeholder {
1230
- color: red !important;
1231
- opacity: 1;
1232
- }
1233
-
1234
- .custom-label-color .v-label {
1235
- color: red;
1236
- opacity: 1;
1237
- }
1238
-
1239
- .custom-placeholer-color input,
1240
- .custom-label-color input {
1241
- color: red !important;
1242
- }
1243
-
1238
+ /*
1239
+ `.custom-placeholer-color` and `.custom-label-color` were declared here and
1240
+ applied to NOTHING - neither class appears anywhere in the template. Deleted
1241
+ rather than left as three blocks of red-text styling waiting to be pasted
1242
+ onto a field by mistake.
1243
+
1244
+ `.placeHolderDarken` IS applied (the three paper-size fields). Its
1245
+ `color: primary` was not a colour - `primary` is a Vuetify theme NAME, not a
1246
+ CSS keyword, so the browser dropped that one declaration as invalid and the
1247
+ placeholder has never been darkened. The `opacity: 1` beside it did apply.
1248
+ Now points at the design's muted ink, which is what "darken" meant.
1249
+ */
1244
1250
  .placeHolderDarken ::placeholder {
1245
- color: primary !important;
1251
+ color: var(--muted) !important;
1246
1252
  opacity: 1;
1247
1253
  }
1248
1254
  </style>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@7365admin1/layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "3.2.2-staging.154",
5
+ "version": "3.2.2-staging.156",
6
6
  "author": "7365admin1",
7
7
  "main": "./nuxt.config.ts",
8
8
  "//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",