@pisell/materials 6.11.39 → 6.11.41

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 (184) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +16 -16
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +16 -16
  11. package/es/components/PisellBasicGrid/PisellBasicGrid.d.ts +0 -1
  12. package/es/components/PisellCards/components/GraphicTextCard/GraphicTextCard.d.ts +0 -1
  13. package/es/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +0 -1
  14. package/es/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +0 -1
  15. package/es/components/PisellCards/components/TabCard/TabCard.d.ts +0 -1
  16. package/es/components/PisellCards/components/TextCard/TextCard.d.ts +0 -1
  17. package/es/components/PisellCards/index.d.ts +0 -1
  18. package/es/components/cardPro/index.d.ts +0 -1
  19. package/es/components/colorPicker/index.d.ts +1 -0
  20. package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  21. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +3 -3
  22. package/es/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
  23. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
  24. package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  25. package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
  26. package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  27. package/es/components/dataSourceComponents/fields/index.d.ts +16 -16
  28. package/es/components/drag-sort-tree/TreeItem/index.d.ts +0 -1
  29. package/es/components/filter/components/items/index.d.ts +1 -0
  30. package/es/components/filter/components/items/text/Editor/index.d.ts +1 -0
  31. package/es/components/filter/components/items/text/Preview/index.d.ts +1 -0
  32. package/es/components/filter/components/items/text/index.d.ts +1 -0
  33. package/es/components/page/index.d.ts +0 -1
  34. package/es/components/pisellAdjustPrice/index.d.ts +0 -1
  35. package/es/components/pisellDatePicker/datePickerCpt.d.ts +0 -1
  36. package/es/components/pisellGridPro/GridView/index.d.ts +0 -1
  37. package/es/components/pisellGridPro/components/DataCard/index.d.ts +0 -1
  38. package/es/components/pisellInput/components/BankCard/index.d.ts +0 -1
  39. package/es/components/pisellInput/components/Copy/index.d.ts +0 -1
  40. package/es/components/pisellInput/components/SecurityCode/index.d.ts +0 -1
  41. package/es/components/pisellInput/index.d.ts +0 -1
  42. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +1 -1
  43. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +29 -7
  44. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +3 -2
  45. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +169 -329
  46. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.less +335 -0
  47. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +35 -19
  48. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +159 -79
  49. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +1 -0
  50. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +7 -6
  51. package/es/components/pisellRecordBoard/types.d.ts +7 -0
  52. package/es/components/pisellSort/index.d.ts +0 -1
  53. package/es/components/pisellTooltip/index.d.ts +0 -1
  54. package/es/components/productCard/cartSkuCard/components/AmountFooter/index.d.ts +0 -1
  55. package/es/components/productCard/cartSkuCard/components/Gift/index.d.ts +0 -1
  56. package/es/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
  57. package/es/components/productCard/cartSkuCard/components/Note/index.d.ts +0 -1
  58. package/es/components/productCard/cartSkuCard/components/Promotion/index.d.ts +0 -1
  59. package/es/components/productCard/cartSkuCard/components/discountReason/index.d.ts +0 -1
  60. package/es/components/productCard/cartSkuCard/components/holders/index.d.ts +0 -1
  61. package/es/components/productCard/cartSkuCard/components/packages/index.d.ts +0 -1
  62. package/es/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
  63. package/es/components/productCard/cartSkuCard/components/sales/index.d.ts +0 -1
  64. package/es/components/productCard/cartSkuCard/components/specs/index.d.ts +0 -1
  65. package/es/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
  66. package/es/components/productCard/cartSkuCard/index.d.ts +0 -1
  67. package/es/components/productCard/components/Action/index.d.ts +0 -1
  68. package/es/components/productCard/components/Header/EditButton/index.d.ts +0 -1
  69. package/es/components/productCard/components/Header/index.d.ts +0 -1
  70. package/es/components/productCard/components/Sales/index.d.ts +0 -1
  71. package/es/components/productCard/components/Time/components/SelectHolder/index.d.ts +0 -1
  72. package/es/components/productCard/components/Time/components/SelectHolderModal/index.d.ts +0 -1
  73. package/es/components/productCard/components/Time/components/SelectHolderMultiple/index.d.ts +0 -1
  74. package/es/components/select-time/index.d.ts +0 -1
  75. package/es/components/table/Actions/component/ViewMode/index.d.ts +0 -1
  76. package/es/components/table/Table/SelectField/index.d.ts +1 -0
  77. package/es/components/table/Table/fields/index.d.ts +2 -2
  78. package/es/components/table/Table/fields/oldRangePicker/Show/index.d.ts +0 -1
  79. package/es/components/table/Table/fields/rangePicker/Show/index.d.ts +0 -1
  80. package/es/components/table/Table/fields/select/Show/index.d.ts +0 -1
  81. package/es/components/table/Table/fields/treeSelect/Show/index.d.ts +0 -1
  82. package/es/components/table/Table/tableConfig/summary/index.d.ts +1 -0
  83. package/es/components/table/Table/utils.d.ts +1 -1
  84. package/es/components/virtual-keyboard/Amount/index.d.ts +0 -1
  85. package/es/components/virtual-keyboard/Number/index.d.ts +0 -1
  86. package/es/hooks/useResponsive.d.ts +1 -1
  87. package/es/locales/en-US.d.ts +9 -0
  88. package/es/locales/en-US.js +12 -3
  89. package/es/locales/ja.d.ts +9 -0
  90. package/es/locales/ja.js +11 -2
  91. package/es/locales/pt.d.ts +9 -0
  92. package/es/locales/pt.js +11 -2
  93. package/es/locales/zh-CN.d.ts +9 -0
  94. package/es/locales/zh-CN.js +11 -2
  95. package/es/locales/zh-TW.d.ts +9 -0
  96. package/es/locales/zh-TW.js +11 -2
  97. package/lib/components/PisellBasicGrid/PisellBasicGrid.d.ts +0 -1
  98. package/lib/components/PisellCards/components/GraphicTextCard/GraphicTextCard.d.ts +0 -1
  99. package/lib/components/PisellCards/components/MultilevelCard/hooks/useMultilevelCardExpand.d.ts +0 -1
  100. package/lib/components/PisellCards/components/PisellImageCard/hooks/useImageLoad.d.ts +0 -1
  101. package/lib/components/PisellCards/components/TabCard/TabCard.d.ts +0 -1
  102. package/lib/components/PisellCards/components/TextCard/TextCard.d.ts +0 -1
  103. package/lib/components/PisellCards/index.d.ts +0 -1
  104. package/lib/components/cardPro/index.d.ts +0 -1
  105. package/lib/components/colorPicker/index.d.ts +1 -0
  106. package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  107. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +3 -3
  108. package/lib/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
  109. package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
  110. package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  111. package/lib/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
  112. package/lib/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  113. package/lib/components/dataSourceComponents/fields/index.d.ts +16 -16
  114. package/lib/components/drag-sort-tree/TreeItem/index.d.ts +0 -1
  115. package/lib/components/filter/components/items/index.d.ts +1 -0
  116. package/lib/components/filter/components/items/text/Editor/index.d.ts +1 -0
  117. package/lib/components/filter/components/items/text/Preview/index.d.ts +1 -0
  118. package/lib/components/filter/components/items/text/index.d.ts +1 -0
  119. package/lib/components/page/index.d.ts +0 -1
  120. package/lib/components/pisellAdjustPrice/index.d.ts +0 -1
  121. package/lib/components/pisellDatePicker/datePickerCpt.d.ts +0 -1
  122. package/lib/components/pisellGridPro/GridView/index.d.ts +0 -1
  123. package/lib/components/pisellGridPro/components/DataCard/index.d.ts +0 -1
  124. package/lib/components/pisellInput/components/BankCard/index.d.ts +0 -1
  125. package/lib/components/pisellInput/components/Copy/index.d.ts +0 -1
  126. package/lib/components/pisellInput/components/SecurityCode/index.d.ts +0 -1
  127. package/lib/components/pisellInput/index.d.ts +0 -1
  128. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +1 -1
  129. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +31 -3
  130. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +3 -2
  131. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +186 -437
  132. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.less +335 -0
  133. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +35 -19
  134. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +134 -80
  135. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +1 -0
  136. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +8 -5
  137. package/lib/components/pisellRecordBoard/types.d.ts +7 -0
  138. package/lib/components/pisellSort/index.d.ts +0 -1
  139. package/lib/components/pisellTooltip/index.d.ts +0 -1
  140. package/lib/components/productCard/cartSkuCard/components/AmountFooter/index.d.ts +0 -1
  141. package/lib/components/productCard/cartSkuCard/components/Gift/index.d.ts +0 -1
  142. package/lib/components/productCard/cartSkuCard/components/MultiDay/index.d.ts +0 -1
  143. package/lib/components/productCard/cartSkuCard/components/Note/index.d.ts +0 -1
  144. package/lib/components/productCard/cartSkuCard/components/Promotion/index.d.ts +0 -1
  145. package/lib/components/productCard/cartSkuCard/components/discountReason/index.d.ts +0 -1
  146. package/lib/components/productCard/cartSkuCard/components/holders/index.d.ts +0 -1
  147. package/lib/components/productCard/cartSkuCard/components/packages/index.d.ts +0 -1
  148. package/lib/components/productCard/cartSkuCard/components/resources/index.d.ts +0 -1
  149. package/lib/components/productCard/cartSkuCard/components/sales/index.d.ts +0 -1
  150. package/lib/components/productCard/cartSkuCard/components/specs/index.d.ts +0 -1
  151. package/lib/components/productCard/cartSkuCard/components/timeRange/index.d.ts +0 -1
  152. package/lib/components/productCard/cartSkuCard/index.d.ts +0 -1
  153. package/lib/components/productCard/components/Action/index.d.ts +0 -1
  154. package/lib/components/productCard/components/Header/EditButton/index.d.ts +0 -1
  155. package/lib/components/productCard/components/Header/index.d.ts +0 -1
  156. package/lib/components/productCard/components/Sales/index.d.ts +0 -1
  157. package/lib/components/productCard/components/Time/components/SelectHolder/index.d.ts +0 -1
  158. package/lib/components/productCard/components/Time/components/SelectHolderModal/index.d.ts +0 -1
  159. package/lib/components/productCard/components/Time/components/SelectHolderMultiple/index.d.ts +0 -1
  160. package/lib/components/select-time/index.d.ts +0 -1
  161. package/lib/components/table/Actions/component/ViewMode/index.d.ts +0 -1
  162. package/lib/components/table/Table/SelectField/index.d.ts +1 -0
  163. package/lib/components/table/Table/fields/index.d.ts +2 -2
  164. package/lib/components/table/Table/fields/oldRangePicker/Show/index.d.ts +0 -1
  165. package/lib/components/table/Table/fields/rangePicker/Show/index.d.ts +0 -1
  166. package/lib/components/table/Table/fields/select/Show/index.d.ts +0 -1
  167. package/lib/components/table/Table/fields/treeSelect/Show/index.d.ts +0 -1
  168. package/lib/components/table/Table/tableConfig/summary/index.d.ts +1 -0
  169. package/lib/components/table/Table/utils.d.ts +1 -1
  170. package/lib/components/virtual-keyboard/Amount/index.d.ts +0 -1
  171. package/lib/components/virtual-keyboard/Number/index.d.ts +0 -1
  172. package/lib/hooks/useResponsive.d.ts +1 -1
  173. package/lib/locales/en-US.d.ts +9 -0
  174. package/lib/locales/en-US.js +12 -3
  175. package/lib/locales/ja.d.ts +9 -0
  176. package/lib/locales/ja.js +11 -2
  177. package/lib/locales/pt.d.ts +9 -0
  178. package/lib/locales/pt.js +11 -2
  179. package/lib/locales/zh-CN.d.ts +9 -0
  180. package/lib/locales/zh-CN.js +11 -2
  181. package/lib/locales/zh-TW.d.ts +9 -0
  182. package/lib/locales/zh-TW.js +11 -2
  183. package/lowcode/pisell-record-board-calendar-view/meta.ts +170 -3
  184. package/package.json +3 -3
@@ -4,17 +4,17 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
4
4
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
5
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import React, { useEffect, useMemo, useRef, useState } from 'react';
7
+ import React, { useEffect, useMemo, useState } from 'react';
8
8
  import { getText } from "../../../../locales";
9
9
  import { NoteTicker } from "./NoteTicker";
10
10
  import { RESOURCE_WALL_NOTE_MARQUEE_MIN_CHARS } from "./resourceWallConstants";
11
11
  import { buildVenueWallCardPresentation } from "./venueWallCardPresentation";
12
- import { getVenueWallStatusToneMap, alphaColor, clamp } from "./venueWallUtils";
12
+ import { getVenueWallStatusToneMap, alphaColor } from "./venueWallUtils";
13
+ import "./VenueWallCard.less";
13
14
 
14
15
  /**
15
16
  * 将服务端给出的「整分钟」计数与收到时的墙钟对齐,随 `now` 递减;
16
17
  * `value` 或 `resourceId` 从上游变更时重新锚定。
17
- * @param allowNegative 为 true 时不钳到 0,便于已过期时段继续展示「xxm overtime」(与 `formatVenueWallCountdown` 在负数分钟时一致)。
18
18
  */
19
19
  function useDriftMinutesFromEpoch(value, resourceId, now) {
20
20
  var allowNegative = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
@@ -33,12 +33,21 @@ function useDriftMinutesFromEpoch(value, resourceId, now) {
33
33
  at: Date.now()
34
34
  });
35
35
  }, [resourceId, value]);
36
- var drifted = epoch.min - Math.floor((now - epoch.at) / 60000);
37
- return allowNegative ? drifted : Math.max(0, drifted);
36
+ var elapsedMs = now - epoch.at;
37
+ var precise = epoch.min - elapsedMs / 60000;
38
+ var drifted = epoch.min - Math.floor(elapsedMs / 60000);
39
+ var whole = allowNegative ? drifted : Math.max(0, drifted);
40
+ var preciseClamped = allowNegative ? precise : Math.max(0, precise);
41
+ return {
42
+ whole: whole,
43
+ precise: preciseClamped
44
+ };
38
45
  }
39
46
 
40
- /** `late` 等递增分钟:以收到时刻为锚,随 `now` 增长 */
41
- function useDriftUpMinutesFromEpoch(value, resourceId, now) {
47
+ /**
48
+ * 迟到分钟等:自服务给出的整分起,随 `now` 递增;`value` 或 `resourceId` 变化时重锚定。
49
+ */
50
+ function useDriftAccumulatedMinutesFromEpoch(value, resourceId, now) {
42
51
  var _useState3 = useState(function () {
43
52
  return {
44
53
  min: value !== null && value !== void 0 ? value : 0,
@@ -54,12 +63,21 @@ function useDriftUpMinutesFromEpoch(value, resourceId, now) {
54
63
  at: Date.now()
55
64
  });
56
65
  }, [resourceId, value]);
57
- return Math.max(0, epoch.min + Math.floor((now - epoch.at) / 60000));
66
+ return epoch.min + Math.floor((now - epoch.at) / 60000);
67
+ }
68
+
69
+ /** 下一预约行里「无数据」占位(不展示联系人兜底) */
70
+ var NEXT_LIST_PLACEHOLDER_VALUES = new Set(['', '-', '–', '—', '―', "\u2014", "\u2013"]);
71
+ function nextListFieldIsMeaningful(raw) {
72
+ var s = String(raw !== null && raw !== void 0 ? raw : '').trim();
73
+ if (!s) return false;
74
+ return !NEXT_LIST_PLACEHOLDER_VALUES.has(s);
58
75
  }
59
76
  var DEFAULT_OCCUPIED = '#6f4ae6';
60
- var DEFAULT_AVAILABLE = '#10b981';
77
+ /** 空闲态卡片主色(淡灰,随 alpha 打底条等) */
78
+ var DEFAULT_AVAILABLE = '#94a3b8';
61
79
  function VenueWallCardInner(_ref) {
62
- var _card$nextList, _card$nextList$length, _card$nextList2, _nextItem$booking;
80
+ var _card$nextList, _card$resource, _card$area;
63
81
  var card = _ref.card,
64
82
  wallNowMs = _ref.wallNowMs,
65
83
  _ref$boardingSoonBefo = _ref.boardingSoonBeforeMin,
@@ -68,8 +86,6 @@ function VenueWallCardInner(_ref) {
68
86
  occupiedCardColor = _ref$occupiedCardColo === void 0 ? DEFAULT_OCCUPIED : _ref$occupiedCardColo,
69
87
  _ref$availableCardCol = _ref.availableCardColor,
70
88
  availableCardColor = _ref$availableCardCol === void 0 ? DEFAULT_AVAILABLE : _ref$availableCardCol,
71
- _ref$heroMaxWidthRati = _ref.heroMaxWidthRatio,
72
- heroMaxWidthRatio = _ref$heroMaxWidthRati === void 0 ? 0.6 : _ref$heroMaxWidthRati,
73
89
  statusToneMapProp = _ref.statusToneMap,
74
90
  _ref$appearance = _ref.appearance,
75
91
  appearance = _ref$appearance === void 0 ? 'light' : _ref$appearance;
@@ -77,39 +93,19 @@ function VenueWallCardInner(_ref) {
77
93
  var isDark = appearance === 'dark';
78
94
  var idleMain = isDark ? '#e2e8f0' : '#0f172a';
79
95
  var idleSub = isDark ? '#94a3b8' : '#94a3b8';
80
- var cardRef = useRef(null);
81
- var _useState5 = useState({
82
- width: 420,
83
- height: 300
84
- }),
85
- _useState6 = _slicedToArray(_useState5, 2),
86
- cardSize = _useState6[0],
87
- setCardSize = _useState6[1];
88
- useEffect(function () {
89
- if (!cardRef.current) return;
90
- var node = cardRef.current;
91
- var updateSize = function updateSize() {
92
- var rect = node.getBoundingClientRect();
93
- setCardSize({
94
- width: rect.width,
95
- height: rect.height
96
- });
97
- };
98
- updateSize();
99
- var observer = new ResizeObserver(updateSize);
100
- observer.observe(node);
101
- return function () {
102
- return observer.disconnect();
103
- };
104
- }, []);
105
- var liveRemainingMin = useDriftMinutesFromEpoch(card.remainingMin, card.resourceId, wallNowMs, true);
106
- var liveStartsInMin = useDriftMinutesFromEpoch(card.startsInMin, card.resourceId, wallNowMs, false);
107
- var liveLateMin = useDriftUpMinutesFromEpoch(card.lateMin, card.resourceId, wallNowMs);
96
+ var _useDriftMinutesFromE = useDriftMinutesFromEpoch(card.remainingMin, card.resourceId, wallNowMs, true),
97
+ liveRemainingMin = _useDriftMinutesFromE.whole,
98
+ liveRemainingPreciseMin = _useDriftMinutesFromE.precise;
99
+ var _useDriftMinutesFromE2 = useDriftMinutesFromEpoch(card.startsInMin, card.resourceId, wallNowMs, false),
100
+ liveStartsInMin = _useDriftMinutesFromE2.whole;
101
+ var liveLateMin = useDriftAccumulatedMinutesFromEpoch(card.lateMin, card.resourceId, wallNowMs);
108
102
  var presentation = useMemo(function () {
109
103
  return buildVenueWallCardPresentation({
110
104
  card: card,
111
105
  toneMap: toneMap,
106
+ wallNowMs: wallNowMs,
112
107
  liveRemainingMin: liveRemainingMin,
108
+ liveRemainingPreciseMin: liveRemainingPreciseMin,
113
109
  liveStartsInMin: liveStartsInMin,
114
110
  liveLateMin: liveLateMin,
115
111
  boardingSoonBeforeMin: boardingSoonBeforeMin,
@@ -118,353 +114,197 @@ function VenueWallCardInner(_ref) {
118
114
  occupiedCardColor: occupiedCardColor,
119
115
  availableCardColor: availableCardColor
120
116
  });
121
- }, [card, toneMap, liveRemainingMin, liveStartsInMin, liveLateMin, boardingSoonBeforeMin, idleMain, idleSub, occupiedCardColor, availableCardColor]);
122
- var statusKey = presentation.statusKey,
123
- isOccupied = presentation.isOccupied,
124
- heroText = presentation.heroText,
125
- heroColor = presentation.heroColor,
126
- noteText = presentation.noteText,
127
- noteTextColor = presentation.noteTextColor,
128
- noteBg = presentation.noteBg,
129
- subColor = presentation.subColor,
117
+ }, [card, toneMap, wallNowMs, liveRemainingMin, liveRemainingPreciseMin, liveStartsInMin, liveLateMin, boardingSoonBeforeMin, idleMain, idleSub, occupiedCardColor, availableCardColor]);
118
+ var floorLikeStatus = presentation.floorLikeStatus,
119
+ headerStatusKey = presentation.headerStatusKey,
120
+ headerStatusLabel = presentation.headerStatusLabel,
121
+ headerStatusColor = presentation.headerStatusColor,
122
+ cardVariant = presentation.cardVariant,
130
123
  mainColor = presentation.mainColor,
131
- currentLabel = presentation.currentLabel,
132
- currentTime = presentation.currentTime,
133
- currentName = presentation.currentName,
134
- currentNameColor = presentation.currentNameColor,
135
- nextNameColor = presentation.nextNameColor,
124
+ subColor = presentation.subColor,
125
+ surfaceAccentColor = presentation.surfaceAccentColor,
126
+ primaryEmphasisLine = presentation.primaryEmphasisLine,
127
+ primaryEmphasisColor = presentation.primaryEmphasisColor,
128
+ timeRangeLine = presentation.timeRangeLine,
129
+ contactLine = presentation.contactLine,
130
+ showProgress = presentation.showProgress,
136
131
  progress = presentation.progress,
137
132
  progressColor = presentation.progressColor,
138
- rightTag = presentation.rightTag,
139
- rightTagColor = presentation.rightTagColor,
140
- rightTagBg = presentation.rightTagBg,
141
- rightTagBorder = presentation.rightTagBorder,
142
- surfaceAccentColor = presentation.surfaceAccentColor;
133
+ showEndingSoonMarquee = presentation.showEndingSoonMarquee,
134
+ marqueeText = presentation.marqueeText,
135
+ marqueeColor = presentation.marqueeColor,
136
+ marqueeShellBackground = presentation.marqueeShellBackground;
143
137
  var nextItem = (_card$nextList = card.nextList) === null || _card$nextList === void 0 ? void 0 : _card$nextList[0];
144
- var nextCountLabel = nextItem ? "1/".concat((_card$nextList$length = (_card$nextList2 = card.nextList) === null || _card$nextList2 === void 0 ? void 0 : _card$nextList2.length) !== null && _card$nextList$length !== void 0 ? _card$nextList$length : 0) : '';
145
- var cardBg = isOccupied ? "linear-gradient(180deg, ".concat(alphaColor(occupiedCardColor, 0.96), " 0%, ").concat(alphaColor(occupiedCardColor, 0.88), " 100%)") : alphaColor(surfaceAccentColor, statusKey === 'boardingSoon' || statusKey === 'late' ? 0.06 : 0.03);
146
- var cardBorder = isOccupied ? alphaColor(occupiedCardColor, 0.5) : alphaColor(surfaceAccentColor, 0.18);
147
- var moduleBorder = isOccupied ? 'rgba(255,255,255,0.10)' : alphaColor(surfaceAccentColor, 0.2);
148
- var totalUnits = 1.5 + 4 + 2 + 1 + 0.4 * 2 + 0.2 * 3;
149
- var heightUnit = Math.max(4, cardSize.height / totalUnits);
150
- var widthScale = clamp(cardSize.width / 420, 0.42, 1.6);
151
- var heightScale = clamp(cardSize.height / 300, 0.42, 1.8);
152
- var fitScale = Math.min(widthScale, heightScale);
153
- var unit = heightUnit;
154
- var shellPad = unit * 0.4;
155
- var sectionGap = unit * 0.2;
156
- var blockPad = Math.max(unit * 0.2, Math.min(unit * 0.3, 20));
157
- var cardRadius = clamp(unit * 0.62 * fitScale, 4, 28);
158
- var blockRadius = clamp(unit * 0.48 * fitScale, 3, 24);
159
- var noteRadius = clamp(unit * 0.4 * fitScale, 3, 20);
160
- var tagRadius = clamp(unit * 0.34 * fitScale, 3, 999);
161
- var headerHeight = unit * 1.5;
162
- var currentHeight = unit * 4;
163
- var nextHeight = unit * 2;
164
- var noteHeight = unit * 1;
165
- var areaSize = clamp(headerHeight * 0.18 * fitScale, 9, 18);
166
- var resourceSize = clamp(headerHeight * 0.34 * fitScale, 16, 42);
167
- var tagSize = clamp(headerHeight * 0.12 * fitScale, 10, 14);
168
- var tagHeight = clamp(headerHeight * 0.42, 28, 36);
169
- var currentMetaSize = clamp(currentHeight * 0.09 * fitScale, 9, 16);
170
- var currentNameSize = clamp(currentHeight * 0.15 * fitScale, 12, 30);
171
- var heroTextMaxWidth = Math.max(80, (cardSize.width - shellPad * 2 - blockPad * 2) * heroMaxWidthRatio);
172
- var heroMaxByName = currentNameSize * 2.5;
173
- var heroApproxFactor = Math.max(heroText.length * 0.58, 1);
174
- var heroFitByWidth = heroTextMaxWidth / heroApproxFactor;
175
- var heroSize = clamp(Math.min(heroFitByWidth, heroMaxByName), 18, heroMaxByName);
176
- var nextNameSize = clamp(nextHeight * 0.24 * fitScale, 12, 30);
177
- var nextMetaSize = clamp(currentMetaSize, 9, Math.max(10, nextNameSize * 0.68));
178
- var nextBlockPad = Math.max(unit * 0.16, Math.min(unit * 0.24, 16));
179
- var noteSize = clamp(noteHeight * 0.28 * fitScale, 10, 18);
180
- var tagFont = Math.max(8, tagSize * 0.68);
138
+ var nextTimeMeaningful = nextItem ? nextListFieldIsMeaningful(nextItem.time) : false;
139
+ var nextContactMeaningful = nextItem ? nextListFieldIsMeaningful(nextItem.booking) : false;
140
+ var hasNextWallSection = Boolean(nextItem && (nextTimeMeaningful || nextContactMeaningful));
141
+ var nextTimeSoloLarge = nextTimeMeaningful && !nextContactMeaningful;
142
+ var cardBg = cardVariant === 'occupied' ? "linear-gradient(180deg, ".concat(alphaColor(occupiedCardColor, 0.96), " 0%, ").concat(alphaColor(occupiedCardColor, 0.88), " 100%)") : alphaColor(surfaceAccentColor, floorLikeStatus === 'reserved' ? 0.06 : 0.03);
143
+ var cardBorder = cardVariant === 'occupied' ? alphaColor(occupiedCardColor, 0.5) : alphaColor(surfaceAccentColor, 0.18);
144
+ var moduleBorder = cardVariant === 'occupied' ? 'rgba(255,255,255,0.10)' : alphaColor(surfaceAccentColor, 0.2);
145
+ var currentPanelBg = cardVariant === 'occupied' ? 'rgba(255,255,255,0.16)' : alphaColor(surfaceAccentColor, floorLikeStatus === 'reserved' ? 0.18 : 0.2);
146
+
147
+ /**
148
+ * 「当前预约」区块标题 / 时段 / 联系人:
149
+ * - 占用卡:纯白
150
+ * - 预约中(Reserved):主色 slate 略透明,比纯黑柔和、仍明显强于 subColor
151
+ * - 空闲等:沿用 subColor
152
+ */
153
+ var currentSectionInk = cardVariant === 'occupied' ? '#ffffff' : floorLikeStatus === 'reserved' ? alphaColor(idleMain, 0.78) : subColor;
154
+ var nextPanelBg = cardVariant === 'occupied' ? 'rgba(255,255,255,0.04)' : alphaColor(surfaceAccentColor, floorLikeStatus === 'reserved' ? 0.1 : 0.08);
155
+
156
+ /** 预约中:Next 区联系人/时段与「当前预约」区一致,用主字色半透明,避免仅 subColor 发灰 */
157
+ var nextSectionInk = cardVariant === 'occupied' ? subColor : floorLikeStatus === 'reserved' ? alphaColor(idleMain, 0.78) : subColor;
158
+ var resourceTitleLabel = String((_card$resource = card.resource) !== null && _card$resource !== void 0 ? _card$resource : '').trim();
159
+ /** 与平面图同源:`form_code` 合并行 `area`,作资源类型/表单类型展示 */
160
+ var resourceTypeLabel = String((_card$area = card.area) !== null && _card$area !== void 0 ? _card$area : '').trim();
161
+ var headerStatusClass = "pisell-resource-wall-card__header-status--".concat(headerStatusKey);
181
162
 
182
163
  /**
183
- * 外层卡片高度会被父级网格 `1fr` 行拉伸;若内层 grid 仍用固定 `px` 行高,
184
- * 则“卡片容器变高但内容区不跟着长高”,表现为底部空白。
185
- * 这里用 `minmax(基准px, nfr)` 把增量高度主要分配给 CURRENT / NEXT 两个主模块。
164
+ * 5 态胶囊:
165
+ * - empty / reserved:沿用旧 accent 描边样式(颜色取 tone)
166
+ * - late:accent 卡上浮红描边 + 红字(与一档强调色同源)
167
+ * - occupied(inUse / endingSoon):白字白描边白底(沿用旧占用样式)
168
+ * - expired:占用卡上以红色实心胶囊 + 白字(与倒计时红同色相)
186
169
  */
187
- var gridTemplateRows = "".concat(headerHeight, "px minmax(").concat(Math.max(120, currentHeight), "px, 4fr) minmax(").concat(Math.max(72, nextHeight), "px, 2fr) ").concat(noteHeight, "px");
170
+ var headerStatusStyle = function () {
171
+ if (headerStatusKey === 'empty') {
172
+ return {
173
+ color: headerStatusColor
174
+ };
175
+ }
176
+ if (headerStatusKey === 'reserved' || headerStatusKey === 'late') {
177
+ return {
178
+ color: headerStatusColor
179
+ };
180
+ }
181
+ if (headerStatusKey === 'expired') {
182
+ return {
183
+ color: '#ffffff',
184
+ background: headerStatusColor
185
+ };
186
+ }
187
+ return {
188
+ color: '#ffffff'
189
+ };
190
+ }();
188
191
  return /*#__PURE__*/React.createElement("div", {
189
- ref: cardRef,
190
192
  className: "pisell-resource-wall-card",
191
193
  style: {
192
- position: 'relative',
193
- height: '100%',
194
- overflow: 'hidden',
195
- display: 'flex',
196
- flexDirection: 'column',
197
- borderRadius: cardRadius,
198
194
  background: cardBg,
199
- borderWidth: 1,
200
- borderStyle: 'solid',
201
195
  borderColor: cardBorder,
202
196
  boxShadow: isDark ? '0 18px 48px rgba(0,0,0,0.35)' : '0 18px 48px rgba(15,23,42,0.06)'
203
197
  }
204
198
  }, /*#__PURE__*/React.createElement("div", {
205
- style: {
206
- flex: 1,
207
- display: 'grid',
208
- minHeight: 0,
209
- height: '100%',
210
- padding: shellPad,
211
- gap: sectionGap,
212
- gridTemplateRows: gridTemplateRows
213
- }
199
+ className: "pisell-resource-wall-card__scale-root"
214
200
  }, /*#__PURE__*/React.createElement("div", {
215
- style: {
216
- display: 'grid',
217
- minHeight: 0,
218
- gridTemplateRows: '1fr 2fr',
219
- rowGap: sectionGap
220
- }
201
+ className: "pisell-resource-wall-card__grid ".concat(hasNextWallSection ? 'pisell-resource-wall-card__grid--with-next' : 'pisell-resource-wall-card__grid--no-next')
202
+ }, /*#__PURE__*/React.createElement("header", {
203
+ className: "pisell-resource-wall-card__header"
221
204
  }, /*#__PURE__*/React.createElement("div", {
205
+ className: "pisell-resource-wall-card__header-main"
206
+ }, resourceTypeLabel ? /*#__PURE__*/React.createElement("div", {
207
+ className: "pisell-resource-wall-card__tier2 pisell-resource-wall-card__header-type",
222
208
  style: {
223
- textTransform: 'uppercase',
224
- letterSpacing: '0.24em',
225
- fontSize: areaSize,
226
- color: subColor,
227
- overflow: 'hidden',
228
- textOverflow: 'ellipsis',
229
- whiteSpace: 'nowrap',
230
- display: 'flex',
231
- alignItems: 'center'
232
- }
233
- }, card.area), /*#__PURE__*/React.createElement("div", {
234
- style: {
235
- display: 'grid',
236
- alignItems: 'center',
237
- minHeight: 0,
238
- gridTemplateColumns: '1fr auto',
239
- columnGap: 8
209
+ color: subColor
240
210
  }
241
- }, /*#__PURE__*/React.createElement("div", {
211
+ }, resourceTypeLabel) : null, /*#__PURE__*/React.createElement("div", {
212
+ className: "pisell-resource-wall-card__header-name",
242
213
  style: {
243
- fontWeight: 700,
244
- overflow: 'hidden',
245
- textOverflow: 'ellipsis',
246
- whiteSpace: 'nowrap',
247
- minWidth: 0,
248
- fontSize: resourceSize,
249
- lineHeight: 0.96,
250
214
  color: mainColor
251
215
  }
252
- }, card.resource), /*#__PURE__*/React.createElement("div", {
253
- style: {
254
- display: 'flex',
255
- alignItems: 'center',
256
- gap: 8,
257
- flexShrink: 0
258
- }
259
- }, /*#__PURE__*/React.createElement("div", {
216
+ }, resourceTitleLabel || "\xA0")), /*#__PURE__*/React.createElement("div", {
217
+ className: "pisell-resource-wall-card__header-status ".concat(headerStatusClass),
218
+ style: headerStatusStyle
219
+ }, headerStatusLabel)), /*#__PURE__*/React.createElement("section", {
220
+ className: "pisell-resource-wall-card__panel".concat(cardVariant === 'occupied' ? ' pisell-resource-wall-card__panel--occupied-current' : floorLikeStatus === 'reserved' ? ' pisell-resource-wall-card__panel--reserved-current' : ''),
260
221
  style: {
261
- borderWidth: 1,
262
- borderStyle: 'solid',
263
- fontWeight: 600,
264
- display: 'flex',
265
- alignItems: 'center',
266
- justifyContent: 'center',
267
- flexShrink: 0,
268
- fontSize: tagSize,
269
- lineHeight: 1,
270
- minHeight: tagHeight,
271
- borderRadius: tagRadius,
272
- padding: "0 ".concat(Math.max(8, tagFont), "px"),
273
- color: rightTagColor,
274
- borderColor: rightTagBorder,
275
- background: rightTagBg
276
- }
277
- }, rightTag)))), /*#__PURE__*/React.createElement("div", {
278
- style: {
279
- borderWidth: 1,
280
- borderStyle: 'solid',
281
- position: 'relative',
282
- minHeight: 0,
283
- borderRadius: blockRadius,
284
- borderColor: moduleBorder,
285
- background: isOccupied ? 'rgba(255,255,255,0.10)' : alphaColor(surfaceAccentColor, statusKey === 'boardingSoon' ? 0.18 : 0.2),
286
- padding: blockPad
287
- }
288
- }, /*#__PURE__*/React.createElement("div", {
289
- style: {
290
- height: '100%',
291
- display: 'grid',
292
- minHeight: 0,
293
- gridTemplateRows: '1.4fr 2.6fr auto',
294
- rowGap: sectionGap
295
- }
296
- }, /*#__PURE__*/React.createElement("div", {
297
- style: {
298
- display: 'grid',
299
- minHeight: 0,
300
- gridTemplateColumns: '1fr auto',
301
- columnGap: 8,
302
- alignItems: 'start'
222
+ borderColor: cardVariant === 'occupied' ? 'rgba(255,255,255,0.28)' : moduleBorder,
223
+ background: currentPanelBg,
224
+ minHeight: 0
303
225
  }
304
226
  }, /*#__PURE__*/React.createElement("div", {
227
+ className: "pisell-resource-wall-card__section-title".concat(cardVariant === 'occupied' ? ' pisell-resource-wall-card__section-title--occupied-current' : floorLikeStatus === 'reserved' ? ' pisell-resource-wall-card__section-title--reserved-current' : ''),
305
228
  style: {
306
- minWidth: 0
229
+ color: currentSectionInk
307
230
  }
231
+ }, getText('pisell-resource-wall-card-label-current')), /*#__PURE__*/React.createElement("div", {
232
+ className: "pisell-resource-wall-card__current-body"
308
233
  }, /*#__PURE__*/React.createElement("div", {
234
+ className: "pisell-resource-wall-card__current-main"
235
+ }, timeRangeLine ? /*#__PURE__*/React.createElement("div", {
236
+ className: "pisell-resource-wall-card__tier2",
309
237
  style: {
310
- textTransform: 'uppercase',
311
- letterSpacing: '0.22em',
312
- lineHeight: 1,
313
- fontSize: currentMetaSize,
314
- color: subColor
315
- }
316
- }, currentLabel), /*#__PURE__*/React.createElement("div", {
317
- style: {
318
- lineHeight: 1,
319
- marginTop: '0.2em',
320
- fontSize: currentMetaSize,
321
- color: subColor
238
+ color: currentSectionInk
322
239
  }
323
- }, currentTime || "\xA0")), /*#__PURE__*/React.createElement("div", {
240
+ }, timeRangeLine) : null, contactLine ? /*#__PURE__*/React.createElement("div", {
241
+ className: "pisell-resource-wall-card__tier2",
324
242
  style: {
325
- fontWeight: 600,
326
- textAlign: 'right',
327
- overflow: 'hidden',
328
- textOverflow: 'ellipsis',
329
- whiteSpace: 'nowrap',
330
- minWidth: 0,
331
- alignSelf: 'start',
332
- fontSize: currentNameSize,
333
- lineHeight: 1.08,
334
- color: currentNameColor,
335
- maxWidth: cardSize.width * 0.42,
336
- paddingTop: '0.04em',
337
- paddingBottom: '0.08em'
243
+ color: currentSectionInk
338
244
  }
339
- }, currentName)), /*#__PURE__*/React.createElement("div", {
245
+ }, contactLine) : null), primaryEmphasisLine || showProgress || showEndingSoonMarquee && marqueeText || floorLikeStatus === 'empty' ? /*#__PURE__*/React.createElement("div", {
246
+ className: "pisell-resource-wall-card__current-footer"
247
+ }, floorLikeStatus === 'empty' ? /*#__PURE__*/React.createElement("div", {
248
+ className: "pisell-resource-wall-card__current-footer-emphasis pisell-resource-wall-card__tier2",
340
249
  style: {
341
- display: 'flex',
342
- alignItems: 'flex-end',
343
- minHeight: 0,
344
- overflow: 'hidden'
250
+ color: currentSectionInk
345
251
  }
346
- }, /*#__PURE__*/React.createElement("div", {
252
+ }, getText('pisell-resource-wall-card-current-not-in-use')) : null, primaryEmphasisLine ? /*#__PURE__*/React.createElement("div", {
253
+ className: "pisell-resource-wall-card__current-footer-emphasis pisell-resource-wall-card__tier1",
347
254
  style: {
348
- fontWeight: 600,
349
- letterSpacing: '-0.02em',
350
- whiteSpace: 'nowrap',
351
- fontSize: heroSize,
352
- lineHeight: 1.08,
353
- color: heroColor,
354
- maxWidth: heroTextMaxWidth
255
+ color: primaryEmphasisColor
355
256
  }
356
- }, heroText)), statusKey === 'boardingSoon' || isOccupied ? /*#__PURE__*/React.createElement("div", {
257
+ }, primaryEmphasisLine) : null, showProgress ? /*#__PURE__*/React.createElement("div", {
258
+ className: "pisell-resource-wall-card__progress-wrap",
357
259
  style: {
358
- borderRadius: 9999,
359
- overflow: 'hidden',
360
- height: Math.max(5, unit * 0.08),
361
- background: isOccupied ? 'rgba(255,255,255,0.14)' : 'rgba(148,163,184,0.18)'
260
+ background: cardVariant === 'occupied' ? 'rgba(255,255,255,0.14)' : 'rgba(148,163,184,0.18)'
362
261
  }
363
262
  }, /*#__PURE__*/React.createElement("div", {
263
+ className: "pisell-resource-wall-card__progress-fill",
364
264
  style: {
365
- height: '100%',
366
- borderRadius: 9999,
367
265
  width: "".concat(progress, "%"),
368
266
  background: progressColor
369
267
  }
370
- })) : null)), /*#__PURE__*/React.createElement("div", {
371
- style: {
372
- borderWidth: 1,
373
- borderStyle: 'solid',
374
- minHeight: 0,
375
- borderRadius: blockRadius,
376
- borderColor: moduleBorder,
377
- background: isOccupied ? 'rgba(255,255,255,0.04)' : alphaColor(surfaceAccentColor, statusKey === 'boardingSoon' ? 0.1 : 0.08),
378
- padding: nextBlockPad
379
- }
380
- }, /*#__PURE__*/React.createElement("div", {
268
+ })) : null, showEndingSoonMarquee && marqueeText ? /*#__PURE__*/React.createElement("div", {
269
+ className: "pisell-resource-wall-card__marquee-shell",
381
270
  style: {
382
- height: '100%',
383
- minHeight: 0,
384
- display: 'grid',
385
- gridTemplateRows: '1fr 2fr',
386
- rowGap: sectionGap
271
+ background: marqueeShellBackground
387
272
  }
388
273
  }, /*#__PURE__*/React.createElement("div", {
274
+ className: "pisell-resource-wall-card__tier3",
389
275
  style: {
390
- display: 'flex',
391
- alignItems: 'flex-start',
392
- justifyContent: 'space-between',
393
- gap: 8,
394
- minHeight: 0
395
- }
396
- }, /*#__PURE__*/React.createElement("div", {
397
- style: {
398
- textTransform: 'uppercase',
399
- letterSpacing: '0.12em',
400
- lineHeight: 1,
401
- overflow: 'hidden',
402
- textOverflow: 'ellipsis',
403
- whiteSpace: 'nowrap',
404
- fontSize: nextMetaSize,
405
- color: subColor
406
- }
407
- }, nextItem !== null && nextItem !== void 0 && nextItem.time ? getText('pisell-resource-wall-card-next-line').replace('{time}', nextItem.time) : getText('pisell-resource-wall-card-label-next')), /*#__PURE__*/React.createElement("div", {
408
- style: {
409
- fontWeight: 600,
410
- flexShrink: 0,
411
- fontSize: nextMetaSize,
412
- color: subColor,
413
- lineHeight: 1
276
+ color: marqueeColor
414
277
  }
415
- }, nextCountLabel)), /*#__PURE__*/React.createElement("div", {
278
+ }, /*#__PURE__*/React.createElement(NoteTicker, {
279
+ text: marqueeText,
280
+ color: marqueeColor,
281
+ duration: 24,
282
+ shouldMarquee: marqueeText.length > RESOURCE_WALL_NOTE_MARQUEE_MIN_CHARS
283
+ }))) : null) : null)), hasNextWallSection ? /*#__PURE__*/React.createElement("section", {
284
+ className: "pisell-resource-wall-card__panel".concat(floorLikeStatus === 'reserved' ? ' pisell-resource-wall-card__panel--reserved-next' : ''),
416
285
  style: {
417
- display: 'flex',
418
- alignItems: 'flex-start',
419
- minWidth: 0,
286
+ borderColor: moduleBorder,
287
+ background: nextPanelBg,
420
288
  minHeight: 0
421
289
  }
422
290
  }, /*#__PURE__*/React.createElement("div", {
291
+ className: "pisell-resource-wall-card__section-title".concat(floorLikeStatus === 'reserved' ? ' pisell-resource-wall-card__section-title--reserved-next' : ''),
423
292
  style: {
424
- fontWeight: 600,
425
- overflow: 'hidden',
426
- textOverflow: 'ellipsis',
427
- whiteSpace: 'nowrap',
428
- fontSize: nextNameSize,
429
- lineHeight: 1,
430
- color: nextNameColor,
431
- paddingTop: sectionGap
432
- }
433
- }, (_nextItem$booking = nextItem === null || nextItem === void 0 ? void 0 : nextItem.booking) !== null && _nextItem$booking !== void 0 ? _nextItem$booking : '')))), /*#__PURE__*/React.createElement("div", {
434
- style: {
435
- display: 'flex',
436
- alignItems: 'center',
437
- gap: 12,
438
- overflow: 'hidden',
439
- minHeight: 0,
440
- padding: Math.max(6, blockPad * 0.66),
441
- borderRadius: noteRadius,
442
- background: noteBg,
443
- border: '1px solid transparent'
293
+ color: nextSectionInk
444
294
  }
445
- }, /*#__PURE__*/React.createElement("div", {
295
+ }, getText('pisell-resource-wall-card-label-next')), /*#__PURE__*/React.createElement("div", {
296
+ className: "pisell-resource-wall-card__next-stack".concat(nextContactMeaningful && nextTimeMeaningful ? ' pisell-resource-wall-card__next-stack--both-lines' : '')
297
+ }, nextContactMeaningful && nextItem ? /*#__PURE__*/React.createElement("div", {
298
+ className: "pisell-resource-wall-card__tier2",
446
299
  style: {
447
- width: Math.max(8, unit * 0.12),
448
- height: Math.max(8, unit * 0.12),
449
- borderRadius: 999,
450
- background: heroColor,
451
- flex: '0 0 auto'
300
+ color: nextSectionInk
452
301
  }
453
- }), /*#__PURE__*/React.createElement("div", {
302
+ }, String(nextItem.booking).trim()) : null, nextTimeMeaningful && nextItem ? /*#__PURE__*/React.createElement("div", {
303
+ className: nextTimeSoloLarge ? 'pisell-resource-wall-card__next-time-solo' : 'pisell-resource-wall-card__tier2',
454
304
  style: {
455
- fontSize: noteSize,
456
- color: noteTextColor,
457
- width: '100%',
458
- height: '100%',
459
- display: 'flex',
460
- alignItems: 'center'
305
+ color: nextSectionInk
461
306
  }
462
- }, /*#__PURE__*/React.createElement(NoteTicker, {
463
- text: noteText,
464
- color: noteTextColor,
465
- duration: 24,
466
- shouldMarquee: noteText.length > RESOURCE_WALL_NOTE_MARQUEE_MIN_CHARS
467
- })))));
307
+ }, String(nextItem.time).trim()) : null)) : null)));
468
308
  }
469
309
 
470
310
  /** 单块场地大屏卡:漂移与文案由 {@link buildVenueWallCardPresentation} 统一计算 */