@7365admin1/layer-common 4.90.0 → 4.90.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @iservice365/layer-common
2
2
 
3
+ ## 4.90.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 7a207dc: Phones: table cards no longer leave a big gap around each field (the desktop 52px row height and table-card cell padding are dropped below 600px), long values (emails, sync messages) wrap inside the card, and dashboard panels and "No data to display" blocks fit their content instead of a fixed 276px/140px.
8
+
3
9
  ## 4.90.0
4
10
 
5
11
  ### Minor Changes
@@ -2010,11 +2016,11 @@
2010
2016
  `utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
2011
2017
  own rule from two endpoints the console already calls, unprojected:
2012
2018
 
2013
- GET /api/members/user/:user/app/admin the Seven365 staff membership
2014
- GET /api/roles/id/:role that membership's role document
2019
+ GET /api/members/user/:user/app/admin the Seven365 staff membership
2020
+ GET /api/roles/id/:role that membership's role document
2015
2021
 
2016
- owner = member.type === "admin" && role.type === "admin" && role.default === true
2017
- staff = member.type === "admin" && role.type === "admin"
2022
+ owner = member.type === "admin" && role.type === "admin" && role.default === true
2023
+ staff = member.type === "admin" && role.type === "admin"
2018
2024
 
2019
2025
  `role.default` is the marker because it is the only property of a platform
2020
2026
  staff role no API caller can set - `role.controller.ts` validates create and
@@ -1130,9 +1130,23 @@ select option {
1130
1130
  border-bottom: 1px solid var(--border);
1131
1131
  }
1132
1132
 
1133
- .v-data-table__tr--mobile > td {
1133
+ /* One line per field: the desktop row height (52px) and the table-card
1134
+ cell padding (`.table-card tbody td`, !important) made every field of a
1135
+ card a tall block with big gaps (owner 2026-10-02). */
1136
+ .v-data-table .v-table__wrapper > table tbody > tr.v-data-table__tr--mobile > td {
1134
1137
  grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
1135
1138
  column-gap: 12px;
1139
+ min-height: 0;
1140
+ height: auto;
1141
+ padding: 4px 16px !important;
1142
+ }
1143
+
1144
+ .v-data-table .v-table__wrapper > table tbody > tr.v-data-table__tr--mobile > td:first-child {
1145
+ padding-top: 12px !important;
1146
+ }
1147
+
1148
+ .v-data-table .v-table__wrapper > table tbody > tr.v-data-table__tr--mobile > td:last-child {
1149
+ padding-bottom: 12px !important;
1136
1150
  }
1137
1151
 
1138
1152
  .v-data-table__td-title {
@@ -1144,6 +1158,15 @@ select option {
1144
1158
  min-width: 0;
1145
1159
  overflow-wrap: anywhere;
1146
1160
  }
1161
+
1162
+ /* Long values (emails, sync messages) wrap inside the card instead of
1163
+ running off it; chips and buttons keep their one-line shape. */
1164
+ .v-data-table__td-value :is(span, div, p, a):not(.v-chip):not(.v-chip *):not(.v-btn):not(.v-btn *) {
1165
+ white-space: normal !important;
1166
+ overflow: visible;
1167
+ text-overflow: clip;
1168
+ max-width: 100%;
1169
+ }
1147
1170
  }
1148
1171
 
1149
1172
  /* ------------------------------------------------------------------ */
@@ -60,4 +60,12 @@ defineProps({
60
60
  color: var(--text2);
61
61
  max-width: 34ch;
62
62
  }
63
+
64
+ /* Phones (owner 2026-10-02, "big gap"): a fixed-height panel or empty state
65
+ left a tall blank block under one line of content; fit the content instead. */
66
+ @media (max-width: 599.98px) {
67
+ .dashboard-empty {
68
+ min-height: 72px !important;
69
+ }
70
+ }
63
71
  </style>
@@ -5149,4 +5149,18 @@ function formatDashboardTime(value?: string) {
5149
5149
  padding: 0;
5150
5150
  white-space: nowrap;
5151
5151
  }
5152
+
5153
+ /* Phones (owner 2026-10-02, "big gap"): a fixed-height panel or empty state
5154
+ left a tall blank block under one line of content; fit the content instead. */
5155
+ @media (max-width: 599.98px) {
5156
+ .dashboard-panel {
5157
+ height: auto;
5158
+ min-height: 0;
5159
+ }
5160
+
5161
+ .figma-panel {
5162
+ min-height: 0;
5163
+ padding: 18px 18px 16px;
5164
+ }
5165
+ }
5152
5166
  </style>
@@ -104,4 +104,14 @@ defineEmits(["action"]);
104
104
  margin-top: 20px;
105
105
  min-width: 0;
106
106
  }
107
+
108
+ /* Phones (owner 2026-10-02, "big gap"): a fixed-height panel or empty state
109
+ left a tall blank block under one line of content; fit the content instead. */
110
+ @media (max-width: 599.98px) {
111
+ .dashboard-panel {
112
+ height: auto;
113
+ min-height: 0;
114
+ padding: 18px 18px 16px;
115
+ }
116
+ }
107
117
  </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": "4.90.0",
5
+ "version": "4.90.1",
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.",