@pisell/materials 6.11.36 → 6.11.38

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 (200) 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 +26 -56
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +26 -56
  11. package/es/components/PisellLayouts/index.d.ts +1 -1
  12. package/es/components/colorPicker/index.d.ts +0 -1
  13. package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  14. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  15. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
  16. package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  17. package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
  18. package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  19. package/es/components/dataSourceComponents/fields/index.d.ts +6 -6
  20. package/es/components/filter/components/items/index.d.ts +0 -1
  21. package/es/components/filter/components/items/text/Editor/index.d.ts +0 -1
  22. package/es/components/filter/components/items/text/Preview/index.d.ts +0 -1
  23. package/es/components/filter/components/items/text/index.d.ts +0 -1
  24. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +2 -1
  25. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +47 -3
  26. package/es/components/pisellFloorMapLayout/types.d.ts +7 -7
  27. package/es/components/pisellFloorMapLayout/types.js +2 -2
  28. package/es/components/pisellRecordBoard/index.d.ts +1 -1
  29. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.d.ts +5 -0
  30. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.js +1039 -0
  31. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.less +323 -0
  32. package/es/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.d.ts +5 -1
  33. package/es/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.js +10 -10
  34. package/es/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.d.ts +23 -0
  35. package/es/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.js +287 -0
  36. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.d.ts +4 -0
  37. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.js +28 -0
  38. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +1 -1
  39. package/es/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.d.ts +36 -0
  40. package/es/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.js +38 -0
  41. package/es/components/pisellRecordBoard/shellFrame/Calendar/index.d.ts +3 -0
  42. package/es/components/pisellRecordBoard/shellFrame/Calendar/index.js +3 -0
  43. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.d.ts +17 -0
  44. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.js +197 -0
  45. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.d.ts +17 -0
  46. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.js +65 -0
  47. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.d.ts +9 -0
  48. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.js +52 -0
  49. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +10 -0
  50. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.js +58 -0
  51. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.d.ts +232 -0
  52. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.js +735 -0
  53. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.d.ts +13 -0
  54. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.js +37 -0
  55. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.d.ts +56 -0
  56. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.js +682 -0
  57. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.d.ts +18 -0
  58. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +155 -0
  59. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.d.ts +27 -0
  60. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.js +259 -0
  61. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.d.ts +12 -0
  62. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.js +19 -0
  63. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +2 -1
  64. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +44 -14
  65. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +4 -2
  66. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +117 -125
  67. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.d.ts +3 -5
  68. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.js +71 -352
  69. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.d.ts +17 -0
  70. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.js +143 -0
  71. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.d.ts +28 -0
  72. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.js +128 -0
  73. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +8 -0
  74. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.d.ts +18 -0
  75. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.js +115 -0
  76. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +6 -4
  77. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +63 -120
  78. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.d.ts +2 -0
  79. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.js +2 -0
  80. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +42 -0
  81. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +114 -0
  82. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +26 -0
  83. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +54 -1
  84. package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +67 -12
  85. package/es/components/pisellRecordBoard/shellFrame/index.js +34 -7
  86. package/es/components/pisellRecordBoard/types.d.ts +97 -4
  87. package/es/components/pisellRecordBoard/types.js +18 -2
  88. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +34 -2
  89. package/es/components/pisellShellFrame/PisellShellFrame.less +5 -2
  90. package/es/components/table/Table/SelectField/index.d.ts +0 -1
  91. package/es/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  92. package/es/hooks/useResponsive.d.ts +1 -1
  93. package/es/index.d.ts +1 -1
  94. package/es/locales/en-US.d.ts +74 -0
  95. package/es/locales/en-US.js +76 -1
  96. package/es/locales/ja.d.ts +74 -0
  97. package/es/locales/ja.js +75 -0
  98. package/es/locales/pt.d.ts +74 -0
  99. package/es/locales/pt.js +75 -0
  100. package/es/locales/zh-CN.d.ts +74 -0
  101. package/es/locales/zh-CN.js +76 -1
  102. package/es/locales/zh-TW.d.ts +74 -0
  103. package/es/locales/zh-TW.js +76 -1
  104. package/es/pisell-materials.tw.css +1 -1
  105. package/lib/components/PisellLayouts/index.d.ts +1 -1
  106. package/lib/components/colorPicker/index.d.ts +0 -1
  107. package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  108. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  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 +6 -6
  114. package/lib/components/filter/components/items/index.d.ts +0 -1
  115. package/lib/components/filter/components/items/text/Editor/index.d.ts +0 -1
  116. package/lib/components/filter/components/items/text/Preview/index.d.ts +0 -1
  117. package/lib/components/filter/components/items/text/index.d.ts +0 -1
  118. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +2 -1
  119. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +1 -1
  120. package/lib/components/pisellFloorMapLayout/types.d.ts +7 -7
  121. package/lib/components/pisellRecordBoard/index.d.ts +1 -1
  122. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.d.ts +5 -0
  123. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.js +892 -0
  124. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.less +323 -0
  125. package/lib/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.d.ts +5 -1
  126. package/lib/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.js +7 -6
  127. package/lib/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.d.ts +23 -0
  128. package/lib/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.js +268 -0
  129. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.d.ts +4 -0
  130. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.js +53 -0
  131. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +1 -1
  132. package/lib/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.d.ts +36 -0
  133. package/lib/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.js +98 -0
  134. package/lib/components/pisellRecordBoard/shellFrame/Calendar/index.d.ts +3 -0
  135. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.d.ts +17 -0
  136. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.js +306 -0
  137. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.d.ts +17 -0
  138. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.js +111 -0
  139. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.d.ts +9 -0
  140. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.js +96 -0
  141. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +10 -0
  142. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.js +92 -0
  143. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.d.ts +232 -0
  144. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.js +666 -0
  145. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.d.ts +13 -0
  146. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.js +90 -0
  147. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.d.ts +56 -0
  148. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.js +812 -0
  149. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.d.ts +18 -0
  150. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +219 -0
  151. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.d.ts +27 -0
  152. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.js +352 -0
  153. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.d.ts +12 -0
  154. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.js +57 -0
  155. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +2 -1
  156. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +44 -9
  157. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +4 -2
  158. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +60 -142
  159. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.d.ts +3 -5
  160. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.js +40 -269
  161. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.d.ts +17 -0
  162. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.js +163 -0
  163. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.d.ts +28 -0
  164. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.js +136 -0
  165. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +8 -0
  166. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.d.ts +18 -0
  167. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.js +175 -0
  168. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +6 -4
  169. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +61 -88
  170. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.d.ts +2 -0
  171. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.js +29 -0
  172. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +42 -0
  173. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +139 -0
  174. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +26 -0
  175. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +31 -3
  176. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +50 -5
  177. package/lib/components/pisellRecordBoard/shellFrame/index.js +29 -13
  178. package/lib/components/pisellRecordBoard/types.d.ts +97 -4
  179. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +34 -2
  180. package/lib/components/pisellShellFrame/PisellShellFrame.less +5 -2
  181. package/lib/components/table/Table/SelectField/index.d.ts +0 -1
  182. package/lib/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  183. package/lib/hooks/useResponsive.d.ts +1 -1
  184. package/lib/index.d.ts +1 -1
  185. package/lib/locales/en-US.d.ts +74 -0
  186. package/lib/locales/en-US.js +76 -1
  187. package/lib/locales/ja.d.ts +74 -0
  188. package/lib/locales/ja.js +75 -0
  189. package/lib/locales/pt.d.ts +74 -0
  190. package/lib/locales/pt.js +75 -0
  191. package/lib/locales/zh-CN.d.ts +74 -0
  192. package/lib/locales/zh-CN.js +76 -1
  193. package/lib/locales/zh-TW.d.ts +74 -0
  194. package/lib/locales/zh-TW.js +76 -1
  195. package/lib/pisell-materials.tw.css +1 -1
  196. package/package.json +3 -4
  197. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.d.ts +0 -3
  198. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +0 -6233
  199. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.d.ts +0 -3
  200. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +0 -7079
@@ -0,0 +1,323 @@
1
+ /**
2
+ * RecordBoard 内嵌 BookingCalendar 的壳层与暗/亮主题 token(自原内联 <style> 迁出,供单处维护)。
3
+ * 与根节点 `theme-root` + `theme-light` / `theme-dark` 类名配合使用。
4
+ */
5
+ .pisell-scroll-hidden {
6
+ scrollbar-width: none;
7
+ -ms-overflow-style: none;
8
+ }
9
+ .pisell-scroll-hidden::-webkit-scrollbar {
10
+ width: 0;
11
+ height: 0;
12
+ display: none;
13
+ }
14
+
15
+ .pisell-rb-cal-spin-wrap {
16
+ flex: 1 1 0%;
17
+ min-height: 0;
18
+ display: flex;
19
+ flex-direction: column;
20
+ }
21
+ .pisell-rb-cal-spin-wrap .pisell-lowcode-spin-container,
22
+ .pisell-rb-cal-spin-wrap .ant-spin-container {
23
+ flex: 1 1 0%;
24
+ min-height: 0;
25
+ display: flex;
26
+ flex-direction: column;
27
+ }
28
+
29
+ .theme-root {
30
+ --bg-app: #060913;
31
+ --bg-shell: #080d1b;
32
+ --bg-header: #10172a;
33
+ --bg-toolbar: #0d1325;
34
+ --bg-panel: #0d1325;
35
+ --bg-panel-soft: #10172a;
36
+ --bg-panel-alt: #10172a;
37
+ --bg-elevated: #09101d;
38
+ --bg-grid-cell: #0a0f1d;
39
+ --bg-grid-muted: #080d1b;
40
+ --bg-sticky: #09101d;
41
+ --bg-input: #0d1325;
42
+ --border-soft: rgba(255, 255, 255, 0.1);
43
+ --border-strong: rgba(255, 255, 255, 0.16);
44
+ --text-main: #ffffff;
45
+ --text-soft: rgba(255, 255, 255, 0.72);
46
+ --text-muted: rgba(255, 255, 255, 0.45);
47
+ --text-faint: rgba(255, 255, 255, 0.15);
48
+ --shadow-heavy: 0 24px 80px rgba(0, 0, 0, 0.42);
49
+ --brand-primary: #7f56da;
50
+ --brand-deep: #6941c6;
51
+ --brand-light: #b692f6;
52
+ --brand-surface: rgba(127, 86, 218, 0.12);
53
+ --success-text: #32d583;
54
+ --success-surface: rgba(18, 183, 106, 0.1);
55
+ --success-border: rgba(50, 213, 131, 0.22);
56
+ --warning-text: #fdb022;
57
+ --warning-surface: rgba(247, 144, 9, 0.1);
58
+ --warning-border: rgba(253, 176, 34, 0.22);
59
+ --danger-text: #f97066;
60
+ --danger-surface: rgba(240, 68, 56, 0.1);
61
+ --danger-border: rgba(240, 68, 56, 0.22);
62
+ --info-text: #53b1fd;
63
+ --info-surface: rgba(46, 144, 250, 0.1);
64
+ --info-border: rgba(83, 177, 253, 0.24);
65
+ --pickup-text: #f670c7;
66
+ --pickup-surface: rgba(238, 70, 188, 0.1);
67
+ --pickup-border: rgba(246, 112, 199, 0.24);
68
+ --disabled-value: rgba(255, 255, 255, 0.15);
69
+ --side-brand-bg: #2b165c;
70
+ --side-brand-border: rgba(182, 146, 246, 0.26);
71
+ }
72
+
73
+ .theme-root.theme-light {
74
+ --bg-app: #e9eef5;
75
+ --bg-shell: #f8fafc;
76
+ --bg-header: #e2e8f4;
77
+ --bg-toolbar: #f8fafc;
78
+ --bg-panel: #ffffff;
79
+ --bg-panel-soft: #ffffff;
80
+ --bg-panel-alt: #f2f5f9;
81
+ --bg-elevated: #eef3f8;
82
+ --bg-grid-cell: #ffffff;
83
+ --bg-grid-muted: #f8fafc;
84
+ --bg-sticky: #eef3f8;
85
+ --bg-input: #f2f5f9;
86
+ --border-soft: #cbd5e1;
87
+ --border-strong: #b8c4d3;
88
+ --text-main: #101828;
89
+ --text-soft: #344054;
90
+ --text-muted: #667085;
91
+ --text-faint: #98a2b3;
92
+ --shadow-heavy: 0 18px 48px rgba(89, 61, 132, 0.08);
93
+ --brand-primary: #7f56da;
94
+ --brand-deep: #6941c6;
95
+ --brand-light: #b692f6;
96
+ --brand-surface: #f4ebff;
97
+ --success-text: #067647;
98
+ --success-surface: #d1fadf;
99
+ --success-border: #a6f4c5;
100
+ --warning-text: #b54708;
101
+ --warning-surface: #fef0c7;
102
+ --warning-border: #fedf89;
103
+ --danger-text: #b42318;
104
+ --danger-surface: #fee4e2;
105
+ --danger-border: #f04438;
106
+ --info-text: #175cd3;
107
+ --info-surface: #d1e9ff;
108
+ --info-border: #2e90fa;
109
+ --pickup-text: #c11574;
110
+ --pickup-surface: #fcceee;
111
+ --pickup-border: #ee46bc;
112
+ --disabled-value: #98a2b3;
113
+ --side-brand-bg: #6941c6;
114
+ --side-brand-border: rgba(127, 86, 218, 0.32);
115
+ }
116
+
117
+ .theme-app {
118
+ background: var(--bg-app);
119
+ color: var(--text-main);
120
+ }
121
+ .theme-shell {
122
+ background: var(--bg-shell);
123
+ color: var(--text-main);
124
+ border-color: var(--border-soft);
125
+ box-shadow: var(--shadow-heavy);
126
+ }
127
+ .theme-header {
128
+ background: var(--bg-header);
129
+ border-color: var(--border-soft);
130
+ }
131
+ .theme-toolbar {
132
+ background: var(--bg-toolbar);
133
+ border-color: var(--border-soft);
134
+ }
135
+ .theme-panel {
136
+ background: var(--bg-panel);
137
+ border-color: var(--border-soft);
138
+ }
139
+ .theme-panel-soft {
140
+ background: var(--bg-panel-soft);
141
+ border-color: var(--border-soft);
142
+ }
143
+ .theme-panel-alt {
144
+ background: var(--bg-panel-alt);
145
+ border-color: var(--border-soft);
146
+ }
147
+ .theme-elevated {
148
+ background: var(--bg-elevated);
149
+ }
150
+ .theme-grid-cell {
151
+ background: var(--bg-grid-cell);
152
+ }
153
+ .theme-grid-muted {
154
+ background: var(--bg-grid-muted);
155
+ }
156
+ .theme-sticky {
157
+ background: var(--bg-sticky);
158
+ }
159
+ .theme-input {
160
+ background: var(--bg-input);
161
+ border-color: var(--border-strong);
162
+ color: var(--text-main);
163
+ }
164
+ .theme-text {
165
+ color: var(--text-main);
166
+ }
167
+ .theme-text-soft {
168
+ color: var(--text-soft);
169
+ }
170
+ .theme-text-muted {
171
+ color: var(--text-muted);
172
+ }
173
+ .theme-text-faint {
174
+ color: var(--text-faint);
175
+ }
176
+ .theme-border {
177
+ border-color: var(--border-soft);
178
+ }
179
+ .theme-border-strong {
180
+ border-color: var(--border-strong);
181
+ }
182
+ .theme-brand-surface {
183
+ background: var(--brand-surface);
184
+ }
185
+ .theme-brand-text {
186
+ color: var(--brand-deep);
187
+ }
188
+ .theme-success-chip {
189
+ color: var(--success-text);
190
+ background: var(--success-surface);
191
+ border-color: var(--success-border);
192
+ }
193
+ .theme-warning-chip {
194
+ color: var(--warning-text);
195
+ background: var(--warning-surface);
196
+ border-color: var(--warning-border);
197
+ }
198
+ .theme-danger-chip {
199
+ color: var(--danger-text);
200
+ background: var(--danger-surface);
201
+ border-color: var(--danger-border);
202
+ }
203
+ .theme-info-chip {
204
+ color: var(--info-text);
205
+ background: var(--info-surface);
206
+ border-color: var(--info-border);
207
+ }
208
+ .theme-pickup-chip {
209
+ color: var(--pickup-text);
210
+ background: var(--pickup-surface);
211
+ border-color: var(--pickup-border);
212
+ }
213
+ .theme-disabled-value {
214
+ color: var(--disabled-value);
215
+ }
216
+ .theme-light .soft-shadow {
217
+ box-shadow: 0 12px 34px rgba(15, 23, 42, 0.08);
218
+ }
219
+ .btn-brand {
220
+ background: var(--brand-primary);
221
+ color: #fff;
222
+ border: 1px solid var(--brand-primary);
223
+ }
224
+ .btn-brand:hover {
225
+ background: var(--brand-deep);
226
+ border-color: var(--brand-deep);
227
+ }
228
+ .btn-neutral {
229
+ background: var(--bg-input);
230
+ color: var(--text-main);
231
+ border: 1px solid var(--border-strong);
232
+ }
233
+ .btn-neutral:hover {
234
+ background: var(--bg-panel-alt);
235
+ }
236
+ .btn-success {
237
+ background: var(--success-surface);
238
+ color: var(--success-text);
239
+ border: 1px solid var(--success-border);
240
+ }
241
+ .btn-warning {
242
+ background: var(--warning-surface);
243
+ color: var(--warning-text);
244
+ border: 1px solid var(--warning-border);
245
+ }
246
+ .btn-danger {
247
+ background: var(--danger-surface);
248
+ color: var(--danger-text);
249
+ border: 1px solid var(--danger-border);
250
+ }
251
+ .btn-info {
252
+ background: var(--info-surface);
253
+ color: var(--info-text);
254
+ border: 1px solid var(--info-border);
255
+ }
256
+ .surface-muted {
257
+ background: var(--bg-panel-alt);
258
+ border: 1px solid var(--border-soft);
259
+ }
260
+ .surface-card {
261
+ background: var(--bg-panel);
262
+ border: 1px solid var(--border-soft);
263
+ }
264
+ .text-disabled-token {
265
+ color: var(--disabled-value);
266
+ }
267
+ .btn-pill-active {
268
+ background: var(--brand-primary);
269
+ color: #fff;
270
+ border: 1px solid var(--brand-primary);
271
+ }
272
+ .btn-pill-active:hover {
273
+ background: var(--brand-deep);
274
+ border-color: var(--brand-deep);
275
+ }
276
+ .btn-pill-neutral {
277
+ background: var(--bg-input);
278
+ color: var(--text-soft);
279
+ border: 1px solid var(--border-strong);
280
+ }
281
+ .btn-pill-neutral:hover {
282
+ background: var(--bg-panel-alt);
283
+ color: var(--text-main);
284
+ }
285
+ .surface-overlay {
286
+ background: color-mix(in srgb, var(--bg-panel) 88%, transparent);
287
+ border: 1px solid var(--border-soft);
288
+ }
289
+ .panel-dark-adapt {
290
+ background: var(--bg-panel);
291
+ border: 1px solid var(--border-soft);
292
+ color: var(--text-main);
293
+ }
294
+ .panel-soft-adapt {
295
+ background: var(--bg-panel-alt);
296
+ border: 1px solid var(--border-soft);
297
+ color: var(--text-main);
298
+ }
299
+ .input-adapt {
300
+ background: var(--bg-input);
301
+ border: 1px solid var(--border-strong);
302
+ color: var(--text-main);
303
+ }
304
+ .caption-adapt {
305
+ color: var(--text-muted);
306
+ }
307
+ .ghost-adapt:hover {
308
+ background: var(--bg-panel-alt);
309
+ }
310
+ .surface-brand-side {
311
+ background: var(--side-brand-bg);
312
+ color: #fff;
313
+ border-color: var(--side-brand-border);
314
+ }
315
+ .surface-brand-side-muted {
316
+ background: color-mix(in srgb, var(--side-brand-bg) 88%, white 12%);
317
+ color: #fff;
318
+ border-color: var(--side-brand-border);
319
+ }
320
+ .badge-brand-dot {
321
+ background: var(--brand-primary);
322
+ color: #fff;
323
+ }
@@ -2,6 +2,10 @@
2
2
  import type { RecordBoardCalendarProps } from '../../types';
3
3
  export declare type PisellRecordBoardCalendarViewProps = RecordBoardCalendarProps;
4
4
  /**
5
- * RecordBoard 日历视图:内嵌 BookingCalendarDemo(Tailwind 样式由包入口 `pisell-materials.tw.css` 注入)。
5
+ * RecordBoard 日历视图:内嵌 `BookingCalendar`(Tailwind 由包入口 `pisell-materials.tw.css` 注入)。
6
+ *
7
+ * **布局分工**:外层 Shell 上 `pisell-record-board-calendar-viewport`(flex:1 / min-height:0 / overflow:hidden)
8
+ * 只做「占位与裁剪高度」;本组件根节点负责在同一 flex 列里向下传递 **min-height:0**,避免 `BookingCalendar`
9
+ * 撑破壳层(一层即可,历史上曾双包一层重复 flex+overflow)。
6
10
  */
7
11
  export declare function PisellRecordBoardCalendarView(props: PisellRecordBoardCalendarViewProps): JSX.Element;
@@ -33,25 +33,26 @@ __export(PisellRecordBoardCalendarView_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(PisellRecordBoardCalendarView_exports);
35
35
  var import_react = __toESM(require("react"));
36
+ var import_classnames = __toESM(require("classnames"));
36
37
  var import_calendarPersistGuard = require("./calendarPersistGuard");
37
- var import_BookingCalendarDemo = __toESM(require("./BookingCalendarDemo"));
38
+ var import_BookingCalendar = __toESM(require("./BookingCalendar"));
38
39
  function PisellRecordBoardCalendarView(props) {
39
40
  const { persistGuard, className, style, ...rest } = props;
40
41
  return /* @__PURE__ */ import_react.default.createElement(import_calendarPersistGuard.CalendarPersistProvider, { value: persistGuard }, /* @__PURE__ */ import_react.default.createElement(
41
42
  "div",
42
43
  {
43
44
  id: "pisell-record-board-calendar-root",
44
- className,
45
+ className: (0, import_classnames.default)(
46
+ className,
47
+ "flex min-h-0 flex-1 flex-col overflow-hidden"
48
+ ),
45
49
  style: {
46
50
  height: "100%",
47
51
  minHeight: 0,
48
- display: "flex",
49
- flexDirection: "column",
50
- overflow: "hidden",
51
52
  ...style
52
53
  }
53
54
  },
54
- /* @__PURE__ */ import_react.default.createElement("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden" }, /* @__PURE__ */ import_react.default.createElement(import_BookingCalendarDemo.default, { ...rest }))
55
+ /* @__PURE__ */ import_react.default.createElement(import_BookingCalendar.default, { ...rest })
55
56
  ));
56
57
  }
57
58
  // Annotate the CommonJS export names for ESM import in node:
@@ -0,0 +1,23 @@
1
+ /** UI 层:状态徽标文案走 i18n(utils 侧为 {@link statusTagMetaParts}) */
2
+ export declare function statusTagMeta(tag: string | null | undefined): {
3
+ label: string;
4
+ className: string;
5
+ } | null;
6
+ /** 锁台卡片副标题:操作人、锁台时间等拼接一行 */
7
+ export declare function getBlockMetaLine(item: any): string;
8
+ export declare function getRemainingToneClass(ratio: any, isLight?: boolean): "theme-text-muted" | "text-zinc-400" | "text-red-600" | "text-red-300" | "text-amber-600" | "text-amber-300";
9
+ /**
10
+ * @param options.flattenWhenAllGroupsCollapsed
11
+ * 若为 `true`:全部分组折叠时仅有 group 头、无 court 行,会退化为平铺 court(易与「全部展开」混淆)。
12
+ * 日/周/月日历统一为默认 `false`,保留分组头行与折叠态(与底部「全部关闭」预期一致)。
13
+ */
14
+ export declare function buildGroupedCourtRows(courts: any, collapsedGroups?: {}, options?: {}): any;
15
+ /** 日视图 overlay 内单条预约/锁台:窄宽自适应与 Tooltip */
16
+ export declare function BookingCard({ booking, dayKey, onOpenDetail, onDragStart, onJumpNext, overlayWidthPx, }: {
17
+ booking: any;
18
+ dayKey: any;
19
+ onOpenDetail: any;
20
+ onDragStart: any;
21
+ onJumpNext: any;
22
+ overlayWidthPx: any;
23
+ }): any;
@@ -0,0 +1,268 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.tsx
30
+ var bookingCalendarViewShared_exports = {};
31
+ __export(bookingCalendarViewShared_exports, {
32
+ BookingCard: () => BookingCard,
33
+ buildGroupedCourtRows: () => buildGroupedCourtRows,
34
+ getBlockMetaLine: () => getBlockMetaLine,
35
+ getRemainingToneClass: () => getRemainingToneClass,
36
+ statusTagMeta: () => statusTagMeta
37
+ });
38
+ module.exports = __toCommonJS(bookingCalendarViewShared_exports);
39
+ var import_react = __toESM(require("react"));
40
+ var import_antd = require("antd");
41
+ var import_calendarI18n = require("./calendarI18n");
42
+ var import_bookingCalendarDateUtils = require("./utils/bookingCalendarDateUtils");
43
+ var import_bookingCalendarConstants = require("./const/bookingCalendarConstants");
44
+ var import_BookingCalendarStyle = require("./utils/BookingCalendarStyle");
45
+ function statusTagMeta(tag) {
46
+ const p = (0, import_bookingCalendarDateUtils.statusTagMetaParts)(tag);
47
+ return p ? { label: (0, import_calendarI18n.tCal)(p.labelI18nKey), className: p.className } : null;
48
+ }
49
+ function getBlockMetaLine(item) {
50
+ if (item.kind !== "block") return "";
51
+ const bits = [];
52
+ if (item.blockBy)
53
+ bits.push(
54
+ (0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.card.blockBy", { name: item.blockBy })
55
+ );
56
+ if (item.blockedAt) bits.push((0, import_bookingCalendarDateUtils.formatDateLoose)(item.blockedAt));
57
+ return bits.join(" · ");
58
+ }
59
+ function getRemainingToneClass(ratio, isLight = false) {
60
+ if (ratio <= 0.2) return isLight ? "text-red-600" : "text-red-300";
61
+ if (ratio <= 0.4) return isLight ? "text-amber-600" : "text-amber-300";
62
+ return isLight ? "theme-text-muted" : "text-zinc-400";
63
+ }
64
+ function buildGroupedCourtRows(courts, collapsedGroups = {}, options = {}) {
65
+ const { flattenWhenAllGroupsCollapsed = false } = options;
66
+ const predefined = ["VIP", "Standard"];
67
+ const rows = [];
68
+ const consumedIds = /* @__PURE__ */ new Set();
69
+ predefined.forEach((group) => {
70
+ const items = courts.filter((court) => court.type === group);
71
+ if (items.length === 0) return;
72
+ items.forEach((c) => consumedIds.add(c.id));
73
+ rows.push({
74
+ kind: "group",
75
+ id: `group-${group}`,
76
+ label: group,
77
+ count: items.length,
78
+ collapsed: !!collapsedGroups[group]
79
+ });
80
+ if (!collapsedGroups[group]) {
81
+ items.forEach((court) => rows.push({ kind: "court", ...court, group }));
82
+ }
83
+ });
84
+ const remainder = courts.filter((c) => !consumedIds.has(c.id));
85
+ const byType = {};
86
+ remainder.forEach((court) => {
87
+ const label = court.type && String(court.type).trim() !== "" ? String(court.type) : (0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.common.resourceFallback");
88
+ if (!byType[label]) byType[label] = [];
89
+ byType[label].push(court);
90
+ });
91
+ Object.keys(byType).forEach((label) => {
92
+ const items = byType[label];
93
+ if (!items.length) return;
94
+ const idSafe = String(label).replace(/\s+/g, "-");
95
+ rows.push({
96
+ kind: "group",
97
+ id: `group-${idSafe}`,
98
+ label,
99
+ count: items.length,
100
+ collapsed: !!collapsedGroups[label]
101
+ });
102
+ if (!collapsedGroups[label]) {
103
+ items.forEach(
104
+ (court) => rows.push({ kind: "court", ...court, group: label })
105
+ );
106
+ }
107
+ });
108
+ const courtRowsOnly = rows.filter((r) => r.kind === "court");
109
+ if (flattenWhenAllGroupsCollapsed && courtRowsOnly.length === 0 && courts.length > 0) {
110
+ return courts.map((c) => ({
111
+ kind: "court",
112
+ id: c.id,
113
+ name: c.name,
114
+ type: c.type,
115
+ group: c.type
116
+ }));
117
+ }
118
+ return rows;
119
+ }
120
+ function BookingCard({
121
+ booking,
122
+ dayKey,
123
+ onOpenDetail,
124
+ onDragStart,
125
+ onJumpNext,
126
+ overlayWidthPx
127
+ }) {
128
+ const suppressDetailClickAfterDragRef = (0, import_react.useRef)(false);
129
+ const suppressDetailClickTimerRef = (0, import_react.useRef)(
130
+ null
131
+ );
132
+ (0, import_react.useEffect)(() => {
133
+ return () => {
134
+ if (suppressDetailClickTimerRef.current != null) {
135
+ window.clearTimeout(suppressDetailClickTimerRef.current);
136
+ }
137
+ };
138
+ }, []);
139
+ const armSuppressDetailClickAfterDrag = () => {
140
+ suppressDetailClickAfterDragRef.current = true;
141
+ if (suppressDetailClickTimerRef.current != null) {
142
+ window.clearTimeout(suppressDetailClickTimerRef.current);
143
+ }
144
+ suppressDetailClickTimerRef.current = window.setTimeout(() => {
145
+ suppressDetailClickAfterDragRef.current = false;
146
+ suppressDetailClickTimerRef.current = null;
147
+ }, 500);
148
+ };
149
+ const { item, span, start, continuesNext } = booking;
150
+ const displayTag = (0, import_bookingCalendarDateUtils.getDisplayStatusTag)(item, dayKey);
151
+ const lateMinutes = (0, import_bookingCalendarDateUtils.getLateMinutes)(item, dayKey);
152
+ const stateClass = (0, import_BookingCalendarStyle.getBookingStateClasses)(item, dayKey);
153
+ const w = overlayWidthPx != null && Number.isFinite(overlayWidthPx) ? overlayWidthPx : Number.POSITIVE_INFINITY;
154
+ const narrow = w < import_bookingCalendarConstants.DAY_BOOKING_NARROW_PX;
155
+ const micro = w < import_bookingCalendarConstants.DAY_BOOKING_MICRO_PX;
156
+ const microMark = Array.from(String(item.name ?? "").trim())[0] || "·";
157
+ const tooltipTitle = /* @__PURE__ */ import_react.default.createElement("div", { className: "max-w-[260px] space-y-1 text-left" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold" }, item.name), item.kind === "block" && item.note && /* @__PURE__ */ import_react.default.createElement("div", { className: "text-xs opacity-90" }, item.note), /* @__PURE__ */ import_react.default.createElement("div", { className: "text-xs tabular-nums opacity-90" }, (0, import_bookingCalendarDateUtils.formatHourLabel)(start), " - ", (0, import_bookingCalendarDateUtils.formatHourLabel)(start + span)), item.kind === "block" && getBlockMetaLine(item) && /* @__PURE__ */ import_react.default.createElement("div", { className: "text-[11px] opacity-80" }, getBlockMetaLine(item)), continuesNext && /* @__PURE__ */ import_react.default.createElement("div", { className: "text-[11px] text-violet-200" }, (0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.card.continuesNext")), item.kind !== "block" && displayTag && statusTagMeta(displayTag) && /* @__PURE__ */ import_react.default.createElement("div", { className: "text-[11px] opacity-90" }, statusTagMeta(displayTag).label, lateMinutes && displayTag === "late" ? ` · ${(0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.card.lateMinutesDetail", {
158
+ n: lateMinutes
159
+ })}` : ""));
160
+ const wrapNarrow = (node) => narrow ? /* @__PURE__ */ import_react.default.createElement(
161
+ import_antd.Tooltip,
162
+ {
163
+ title: tooltipTitle,
164
+ placement: "top",
165
+ mouseEnterDelay: 0.12,
166
+ destroyTooltipOnHide: true
167
+ },
168
+ node
169
+ ) : node;
170
+ if (item.kind === "block") {
171
+ const blockWide = /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: "truncate text-sm font-medium" }, item.name), item.note && /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-1 truncate text-xs text-zinc-200/90" }, item.note), getBlockMetaLine(item) && /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-1 truncate text-[10px] text-zinc-300/80" }, getBlockMetaLine(item)));
172
+ const blockCompact = micro ? /* @__PURE__ */ import_react.default.createElement("span", { className: "flex h-full w-full items-center justify-center text-[11px] font-semibold leading-none" }, microMark) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: "truncate text-[11px] font-medium leading-tight" }, item.name), getBlockMetaLine(item) && /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-0.5 truncate text-[10px] opacity-80" }, getBlockMetaLine(item)));
173
+ const blockPad = micro ? "px-0.5 py-0.5 flex items-center justify-center" : narrow ? "px-2 py-2" : "px-3 py-3 text-left";
174
+ return wrapNarrow(
175
+ /* @__PURE__ */ import_react.default.createElement(
176
+ "button",
177
+ {
178
+ type: "button",
179
+ "aria-label": narrow ? `${item.name}, ${(0, import_bookingCalendarDateUtils.formatHourLabel)(start)} - ${(0, import_bookingCalendarDateUtils.formatHourLabel)(
180
+ start + span
181
+ )}` : void 0,
182
+ onClick: (e) => {
183
+ e.stopPropagation();
184
+ onOpenDetail(item);
185
+ },
186
+ className: `absolute inset-x-0 inset-y-0 rounded-2xl overflow-hidden ${blockPad} ${narrow && !micro ? "text-left" : ""} ${stateClass}`
187
+ },
188
+ narrow ? blockCompact : blockWide
189
+ )
190
+ );
191
+ }
192
+ const bookingWide = /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col gap-0.5 overflow-hidden" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "truncate text-sm font-medium leading-tight" }, item.name), /* @__PURE__ */ import_react.default.createElement("div", { className: "truncate text-xs opacity-90 tabular-nums" }, (0, import_bookingCalendarDateUtils.formatHourLabel)(start), " - ", (0, import_bookingCalendarDateUtils.formatHourLabel)(start + span)), continuesNext && /* @__PURE__ */ import_react.default.createElement(
193
+ "span",
194
+ {
195
+ role: "button",
196
+ tabIndex: 0,
197
+ onClick: (e) => {
198
+ e.stopPropagation();
199
+ onJumpNext();
200
+ },
201
+ onKeyDown: (e) => {
202
+ if (e.key === "Enter" || e.key === " ") {
203
+ e.preventDefault();
204
+ e.stopPropagation();
205
+ onJumpNext();
206
+ }
207
+ },
208
+ className: "mt-1 inline-flex max-w-full cursor-pointer truncate rounded-lg bg-white/10 px-2 py-1 text-left text-[10px] leading-tight text-violet-100 hover:bg-white/20 sm:text-[11px]"
209
+ },
210
+ (0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.card.continuesNext")
211
+ )), (displayTag || lateMinutes) && /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-auto flex shrink-0 flex-wrap items-center justify-end gap-1 pt-1" }, lateMinutes && displayTag === "late" && /* @__PURE__ */ import_react.default.createElement("span", { className: "rounded-md bg-black/25 px-1.5 py-0.5 text-[10px] font-semibold text-white/90 backdrop-blur-[2px] opacity-80 sm:px-2" }, (0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.card.lateMinutesBadge", {
212
+ n: lateMinutes
213
+ })), displayTag && statusTagMeta(displayTag) && /* @__PURE__ */ import_react.default.createElement(
214
+ "span",
215
+ {
216
+ className: `rounded-lg px-1.5 py-0.5 text-[10px] font-semibold backdrop-blur-[2px] sm:px-2 ${statusTagMeta(displayTag).className} ${lateMinutes ? "opacity-80" : ""}`
217
+ },
218
+ statusTagMeta(displayTag).label
219
+ )));
220
+ const bookingCompact = micro ? /* @__PURE__ */ import_react.default.createElement("span", { className: "flex h-full w-full items-center justify-center text-[11px] font-semibold leading-none" }, microMark) : /* @__PURE__ */ import_react.default.createElement("div", { className: "flex min-h-0 min-w-0 flex-1 flex-col justify-center overflow-hidden" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "truncate text-[11px] font-medium leading-tight tabular-nums" }, item.name, " · ", (0, import_bookingCalendarDateUtils.formatHourLabel)(start), "–", (0, import_bookingCalendarDateUtils.formatHourLabel)(start + span)));
221
+ const bookingPad = micro ? "px-0.5 py-0.5" : narrow ? "px-1.5 py-1.5" : "px-2 py-2 sm:px-4 sm:py-3";
222
+ const bookingFlexMain = micro ? "flex items-center justify-center" : "flex min-h-0 flex-col";
223
+ const bookingAlign = !narrow ? "text-left" : micro ? "" : "justify-center";
224
+ return wrapNarrow(
225
+ /* @__PURE__ */ import_react.default.createElement(
226
+ "button",
227
+ {
228
+ type: "button",
229
+ draggable: true,
230
+ "aria-label": narrow ? `${item.name}, ${(0, import_bookingCalendarDateUtils.formatHourLabel)(start)} - ${(0, import_bookingCalendarDateUtils.formatHourLabel)(
231
+ start + span
232
+ )}` : void 0,
233
+ onDragStart: (e) => {
234
+ e.stopPropagation();
235
+ onDragStart(item);
236
+ },
237
+ onDragEnd: (e) => {
238
+ e.stopPropagation();
239
+ armSuppressDetailClickAfterDrag();
240
+ },
241
+ onClick: (e) => {
242
+ if (suppressDetailClickAfterDragRef.current) {
243
+ suppressDetailClickAfterDragRef.current = false;
244
+ if (suppressDetailClickTimerRef.current != null) {
245
+ window.clearTimeout(suppressDetailClickTimerRef.current);
246
+ suppressDetailClickTimerRef.current = null;
247
+ }
248
+ e.preventDefault();
249
+ e.stopPropagation();
250
+ return;
251
+ }
252
+ e.stopPropagation();
253
+ onOpenDetail(item);
254
+ },
255
+ className: `absolute inset-x-0 inset-y-0 rounded-2xl overflow-hidden ${bookingFlexMain} ${bookingAlign} ${bookingPad} ${stateClass}`
256
+ },
257
+ narrow ? bookingCompact : bookingWide
258
+ )
259
+ );
260
+ }
261
+ // Annotate the CommonJS export names for ESM import in node:
262
+ 0 && (module.exports = {
263
+ BookingCard,
264
+ buildGroupedCourtRows,
265
+ getBlockMetaLine,
266
+ getRemainingToneClass,
267
+ statusTagMeta
268
+ });
@@ -0,0 +1,4 @@
1
+ /** 日历视图文案:占位符 `{name}`、`{date}` 等由调用方替换 */
2
+ export declare function tCal(id: string, vars?: Record<string, string | number>): string;
3
+ /** 月/周表头:周一为 0(与 rangeDays / startOfWeek 一致) */
4
+ export declare const CALENDAR_WEEKDAY_IDS: readonly ["pisell2.recordBoard.calendar.weekday.mon", "pisell2.recordBoard.calendar.weekday.tue", "pisell2.recordBoard.calendar.weekday.wed", "pisell2.recordBoard.calendar.weekday.thu", "pisell2.recordBoard.calendar.weekday.fri", "pisell2.recordBoard.calendar.weekday.sat", "pisell2.recordBoard.calendar.weekday.sun"];