@pisell/private-materials 6.7.3 → 6.7.4

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 (119) 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 +7 -7
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +2 -2
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +2 -2
  11. package/es/components/appointmentBooking/components/Footer/index.d.ts +1 -0
  12. package/es/components/appointmentBooking/components/Guest/components/InformationOptionsModal/index.d.ts +1 -0
  13. package/es/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  14. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  15. package/es/components/booking/info/service/addService/utils.d.ts +1 -1
  16. package/es/components/booking/info/service/like/index.d.ts +1 -0
  17. package/es/components/booking/info2/service/addService/utils.d.ts +1 -1
  18. package/es/components/eftpos/deviceList/index.d.ts +1 -0
  19. package/es/components/eftpos/form/index.d.ts +1 -0
  20. package/es/components/eftpos/group/index.d.ts +1 -0
  21. package/es/components/eftpos/hooks.d.ts +1 -0
  22. package/es/components/eftpos/icon/apiKey.d.ts +1 -0
  23. package/es/components/eftpos/icon/device.d.ts +1 -0
  24. package/es/components/eftpos/receipt/index.d.ts +1 -0
  25. package/es/components/eftposPay/amount.d.ts +1 -1
  26. package/es/components/eftposPay/component/alert/warn.d.ts +1 -0
  27. package/es/components/eftposPay/component/header/titlebar.d.ts +1 -0
  28. package/es/components/eftposPay/component/step/index.d.ts +1 -0
  29. package/es/components/eftposPay/component/step/step.d.ts +1 -0
  30. package/es/components/eftposPay/device.d.ts +1 -1
  31. package/es/components/eftposPay/hooks.d.ts +2 -2
  32. package/es/components/eftposPay/store/index.d.ts +3 -3
  33. package/es/components/eftposPay/tyro/hooks.d.ts +1 -0
  34. package/es/components/eventBooking/components/ErrorTip/index.d.ts +1 -0
  35. package/es/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +1 -0
  36. package/es/components/eventBooking/components/Provider/InformationOptionsModal/index.d.ts +1 -0
  37. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +1 -0
  38. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +1 -0
  39. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  40. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  41. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  42. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/components/SetupForm/index.d.ts +1 -0
  43. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +1 -0
  44. package/es/components/productExtension/fields/Forms/index.d.ts +1 -0
  45. package/es/components/schedules/resources/relationProduct/index.d.ts +1 -0
  46. package/es/components/workSpaceList/components/Modal/index.d.ts +1 -0
  47. package/es/plus/clientName/index.d.ts +1 -0
  48. package/es/plus/productSelect/ProductCard/SkuCard/components/Capacity/index.d.ts +1 -1
  49. package/es/plus/productSelect/ProductCard/SkuCard/components/CardMask/index.d.ts +1 -1
  50. package/es/plus/productSelect/ProductCard/SkuCard/components/Countdown/index.d.ts +1 -1
  51. package/es/plus/productSelect/ProductCard/SkuCard/components/Duration/index.d.ts +1 -1
  52. package/es/plus/productSelect/ProductCard/SkuCard/components/MemberPrice/index.d.ts +1 -1
  53. package/es/plus/productSelect/ProductCard/SkuCard/components/Resource/index.d.ts +1 -1
  54. package/es/plus/productSelect/ProductCard/SkuCard/components/Stock/index.d.ts +1 -1
  55. package/es/plus/productSelect/ProductCard/SkuCard/components/Time/index.d.ts +1 -1
  56. package/es/plus/webPosLogin/WebPosLogin.js +5 -8
  57. package/es/plus/webPosLogin/WebPosLoginCpt.js +1 -1
  58. package/es/plus/webPosLogin/components/BrandPanel/index.js +7 -37
  59. package/es/plus/webPosLogin/components/MediaDisplay/index.d.ts +12 -0
  60. package/es/plus/webPosLogin/components/MediaDisplay/index.js +220 -0
  61. package/es/plus/webPosLogin/components/MediaDisplay/index.less +141 -0
  62. package/es/plus/webPosLogin/components/MediaDisplay/type.d.ts +54 -0
  63. package/es/plus/webPosLogin/components/MediaDisplay/type.js +1 -0
  64. package/es/pro/pisellPaymentList/example.d.ts +1 -0
  65. package/lib/components/appointmentBooking/components/Footer/index.d.ts +1 -0
  66. package/lib/components/appointmentBooking/components/Guest/components/InformationOptionsModal/index.d.ts +1 -0
  67. package/lib/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  68. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  69. package/lib/components/booking/info/service/addService/utils.d.ts +1 -1
  70. package/lib/components/booking/info/service/like/index.d.ts +1 -0
  71. package/lib/components/booking/info2/service/addService/utils.d.ts +1 -1
  72. package/lib/components/eftpos/deviceList/index.d.ts +1 -0
  73. package/lib/components/eftpos/form/index.d.ts +1 -0
  74. package/lib/components/eftpos/group/index.d.ts +1 -0
  75. package/lib/components/eftpos/hooks.d.ts +1 -0
  76. package/lib/components/eftpos/icon/apiKey.d.ts +1 -0
  77. package/lib/components/eftpos/icon/device.d.ts +1 -0
  78. package/lib/components/eftpos/receipt/index.d.ts +1 -0
  79. package/lib/components/eftposPay/amount.d.ts +1 -1
  80. package/lib/components/eftposPay/component/alert/warn.d.ts +1 -0
  81. package/lib/components/eftposPay/component/header/titlebar.d.ts +1 -0
  82. package/lib/components/eftposPay/component/step/index.d.ts +1 -0
  83. package/lib/components/eftposPay/component/step/step.d.ts +1 -0
  84. package/lib/components/eftposPay/device.d.ts +1 -1
  85. package/lib/components/eftposPay/hooks.d.ts +2 -2
  86. package/lib/components/eftposPay/store/index.d.ts +3 -3
  87. package/lib/components/eftposPay/tyro/hooks.d.ts +1 -0
  88. package/lib/components/eventBooking/components/ErrorTip/index.d.ts +1 -0
  89. package/lib/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +1 -0
  90. package/lib/components/eventBooking/components/Provider/InformationOptionsModal/index.d.ts +1 -0
  91. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +1 -0
  92. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +1 -0
  93. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  94. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  95. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  96. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/components/SetupForm/index.d.ts +1 -0
  97. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +1 -0
  98. package/lib/components/productExtension/fields/Forms/index.d.ts +1 -0
  99. package/lib/components/schedules/resources/relationProduct/index.d.ts +1 -0
  100. package/lib/components/workSpaceList/components/Modal/index.d.ts +1 -0
  101. package/lib/plus/clientName/index.d.ts +1 -0
  102. package/lib/plus/productSelect/ProductCard/SkuCard/components/Capacity/index.d.ts +1 -1
  103. package/lib/plus/productSelect/ProductCard/SkuCard/components/CardMask/index.d.ts +1 -1
  104. package/lib/plus/productSelect/ProductCard/SkuCard/components/Countdown/index.d.ts +1 -1
  105. package/lib/plus/productSelect/ProductCard/SkuCard/components/Duration/index.d.ts +1 -1
  106. package/lib/plus/productSelect/ProductCard/SkuCard/components/MemberPrice/index.d.ts +1 -1
  107. package/lib/plus/productSelect/ProductCard/SkuCard/components/Resource/index.d.ts +1 -1
  108. package/lib/plus/productSelect/ProductCard/SkuCard/components/Stock/index.d.ts +1 -1
  109. package/lib/plus/productSelect/ProductCard/SkuCard/components/Time/index.d.ts +1 -1
  110. package/lib/plus/webPosLogin/WebPosLogin.js +17 -21
  111. package/lib/plus/webPosLogin/WebPosLoginCpt.js +1 -1
  112. package/lib/plus/webPosLogin/components/BrandPanel/index.js +2 -22
  113. package/lib/plus/webPosLogin/components/MediaDisplay/index.d.ts +12 -0
  114. package/lib/plus/webPosLogin/components/MediaDisplay/index.js +160 -0
  115. package/lib/plus/webPosLogin/components/MediaDisplay/index.less +141 -0
  116. package/lib/plus/webPosLogin/components/MediaDisplay/type.d.ts +54 -0
  117. package/lib/plus/webPosLogin/components/MediaDisplay/type.js +17 -0
  118. package/lib/pro/pisellPaymentList/example.d.ts +1 -0
  119. package/package.json +3 -3
@@ -0,0 +1,220 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
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
+ 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
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import React, { memo, useMemo, useRef, useEffect, useState, useCallback } from 'react';
8
+ import { Image } from '@pisell/materials';
9
+ import "./index.less";
10
+
11
+ /**
12
+ * MediaDisplay 媒体组件
13
+ * @description 通用媒体展示组件,支持图片/视频展示
14
+ * - 支持单个媒体或轮播(预留)
15
+ * - 支持全屏模式
16
+ * - 支持视频播放控制和状态回调
17
+ */
18
+ var MediaDisplay = /*#__PURE__*/memo(function (props) {
19
+ var _config$carouselItems3;
20
+ var config = props.config,
21
+ _props$className = props.className,
22
+ className = _props$className === void 0 ? '' : _props$className,
23
+ _props$fullscreen = props.fullscreen,
24
+ fullscreen = _props$fullscreen === void 0 ? false : _props$fullscreen,
25
+ _props$muted = props.muted,
26
+ muted = _props$muted === void 0 ? true : _props$muted,
27
+ _props$loop = props.loop,
28
+ loop = _props$loop === void 0 ? false : _props$loop,
29
+ onVideoEnded = props.onVideoEnded,
30
+ onVideoStateChange = props.onVideoStateChange,
31
+ _props$canClose = props.canClose,
32
+ canClose = _props$canClose === void 0 ? true : _props$canClose,
33
+ onClose = props.onClose;
34
+ var videoRef = useRef(null);
35
+ var _useState = useState('idle'),
36
+ _useState2 = _slicedToArray(_useState, 2),
37
+ videoState = _useState2[0],
38
+ setVideoState = _useState2[1];
39
+ var _useState3 = useState(false),
40
+ _useState4 = _slicedToArray(_useState3, 2),
41
+ isVideoEnded = _useState4[0],
42
+ setIsVideoEnded = _useState4[1];
43
+
44
+ /**
45
+ * 获取当前要展示的媒体项
46
+ * 如果只有一个媒体项,直接返回;否则返回第一个(轮播逻辑预留)
47
+ */
48
+ var currentMedia = useMemo(function () {
49
+ var _config$carouselItems;
50
+ if (config !== null && config !== void 0 && (_config$carouselItems = config.carouselItems) !== null && _config$carouselItems !== void 0 && _config$carouselItems.length) {
51
+ // 目前只取第一个,轮播逻辑预留
52
+ return config.carouselItems[0];
53
+ }
54
+ // 如果有 logo,构造为图片类型
55
+ if (config !== null && config !== void 0 && config.logo) {
56
+ return {
57
+ type: 'image',
58
+ url: config.logo
59
+ };
60
+ }
61
+ return null;
62
+ }, [config === null || config === void 0 ? void 0 : config.carouselItems, config === null || config === void 0 ? void 0 : config.logo]);
63
+
64
+ /**
65
+ * 是否为视频类型
66
+ */
67
+ var isVideo = (currentMedia === null || currentMedia === void 0 ? void 0 : currentMedia.type) === 'video';
68
+
69
+ /**
70
+ * 是否为单一媒体(不需要显示切换控件)
71
+ */
72
+ var isSingleMedia = useMemo(function () {
73
+ var _config$carouselItems2;
74
+ var itemCount = (config === null || config === void 0 || (_config$carouselItems2 = config.carouselItems) === null || _config$carouselItems2 === void 0 ? void 0 : _config$carouselItems2.length) || 0;
75
+ // 只有一个轮播项,或者没有轮播项但有 logo
76
+ return itemCount <= 1;
77
+ }, [config === null || config === void 0 || (_config$carouselItems3 = config.carouselItems) === null || _config$carouselItems3 === void 0 ? void 0 : _config$carouselItems3.length]);
78
+
79
+ /**
80
+ * 更新视频播放状态
81
+ */
82
+ var updateVideoState = useCallback(function (state) {
83
+ setVideoState(state);
84
+ onVideoStateChange === null || onVideoStateChange === void 0 || onVideoStateChange(state);
85
+ }, [onVideoStateChange]);
86
+
87
+ /**
88
+ * 处理视频播放结束
89
+ */
90
+ var handleVideoEnded = useCallback(function () {
91
+ setIsVideoEnded(true);
92
+ updateVideoState('ended');
93
+ onVideoEnded === null || onVideoEnded === void 0 || onVideoEnded();
94
+
95
+ // 如果可以关闭,触发关闭回调
96
+ if (canClose) {
97
+ onClose === null || onClose === void 0 || onClose();
98
+ }
99
+ // 如果不能关闭(初始化未完成),视频会停在最后一帧等待
100
+ // 外部通过修改 canClose 为 true 后,组件会在下次渲染时触发 onClose
101
+ }, [canClose, onClose, onVideoEnded, updateVideoState]);
102
+
103
+ /**
104
+ * 监听 canClose 变化,如果视频已结束且 canClose 变为 true,触发关闭
105
+ */
106
+ useEffect(function () {
107
+ if (isVideoEnded && canClose) {
108
+ onClose === null || onClose === void 0 || onClose();
109
+ }
110
+ }, [isVideoEnded, canClose, onClose]);
111
+
112
+ /**
113
+ * 视频事件处理
114
+ */
115
+ useEffect(function () {
116
+ var video = videoRef.current;
117
+ if (!video || !isVideo) return;
118
+ var handlePlay = function handlePlay() {
119
+ return updateVideoState('playing');
120
+ };
121
+ var handlePause = function handlePause() {
122
+ return updateVideoState('paused');
123
+ };
124
+ var handleError = function handleError() {
125
+ return updateVideoState('error');
126
+ };
127
+ var handleLoadedData = function handleLoadedData() {
128
+ // 视频加载完成后自动播放
129
+ video.play().catch(function (err) {
130
+ console.warn('[MediaDisplay] 视频自动播放失败:', err);
131
+ updateVideoState('error');
132
+ });
133
+ };
134
+ video.addEventListener('play', handlePlay);
135
+ video.addEventListener('pause', handlePause);
136
+ video.addEventListener('ended', handleVideoEnded);
137
+ video.addEventListener('error', handleError);
138
+ video.addEventListener('loadeddata', handleLoadedData);
139
+ return function () {
140
+ video.removeEventListener('play', handlePlay);
141
+ video.removeEventListener('pause', handlePause);
142
+ video.removeEventListener('ended', handleVideoEnded);
143
+ video.removeEventListener('error', handleError);
144
+ video.removeEventListener('loadeddata', handleLoadedData);
145
+ };
146
+ }, [isVideo, handleVideoEnded, updateVideoState]);
147
+
148
+ /** 品牌标语 */
149
+ var slogan = config === null || config === void 0 ? void 0 : config.slogan;
150
+
151
+ /**
152
+ * 渲染媒体内容
153
+ */
154
+ var renderMedia = function renderMedia() {
155
+ if (!currentMedia) {
156
+ return null;
157
+ }
158
+ if (currentMedia.type === 'video') {
159
+ return /*#__PURE__*/React.createElement("video", {
160
+ style: {
161
+ backgroundColor: currentMedia.backgroundColor
162
+ },
163
+ ref: videoRef,
164
+ src: currentMedia.url,
165
+ className: "media-display__video",
166
+ muted: muted,
167
+ loop: loop,
168
+ playsInline: true,
169
+ autoPlay: true
170
+ });
171
+ }
172
+ if (currentMedia.type === 'logo') {
173
+ return /*#__PURE__*/React.createElement("div", {
174
+ className: "media-display__logo-wrapper"
175
+ }, /*#__PURE__*/React.createElement(Image, {
176
+ style: currentMedia.logoStyle,
177
+ src: currentMedia.url,
178
+ preview: false
179
+ }));
180
+ }
181
+
182
+ // 图片类型
183
+ return /*#__PURE__*/React.createElement("div", {
184
+ className: "media-display__image-wrapper"
185
+ }, /*#__PURE__*/React.createElement(Image, {
186
+ style: {
187
+ width: '100%',
188
+ height: '100%',
189
+ backgroundColor: currentMedia.backgroundColor
190
+ },
191
+ src: currentMedia.url,
192
+ preview: false,
193
+ alt: "Media",
194
+ className: "media-display__image"
195
+ }));
196
+ };
197
+
198
+ // 全屏模式
199
+ if (fullscreen) {
200
+ return /*#__PURE__*/React.createElement("div", {
201
+ className: "media-display media-display--fullscreen ".concat(className).trim()
202
+ }, renderMedia());
203
+ }
204
+ console.log(currentMedia, 'currentMedia');
205
+
206
+ // 普通模式(品牌面板样式)
207
+ return /*#__PURE__*/React.createElement("div", {
208
+ className: "webpos-login-brand-panel ".concat(className).trim()
209
+ }, /*#__PURE__*/React.createElement("div", {
210
+ className: "webpos-login-brand-panel__content"
211
+ }, /*#__PURE__*/React.createElement("div", {
212
+ className: "webpos-login-brand-panel__logo-wrapper"
213
+ }, renderMedia()), slogan && /*#__PURE__*/React.createElement("p", {
214
+ className: "webpos-login-brand-panel__slogan"
215
+ }, slogan), !isSingleMedia && /*#__PURE__*/React.createElement("div", {
216
+ className: "webpos-login-brand-panel__carousel-controls"
217
+ })));
218
+ });
219
+ MediaDisplay.displayName = 'MediaDisplay';
220
+ export default MediaDisplay;
@@ -0,0 +1,141 @@
1
+ /**
2
+ * MediaDisplay 媒体展示组件样式
3
+ */
4
+
5
+ /* 全屏模式 */
6
+ .media-display {
7
+ position: relative;
8
+ width: 100%;
9
+ height: 100%;
10
+
11
+ /* 全屏模式 */
12
+ &--fullscreen {
13
+ position: fixed;
14
+ top: 0;
15
+ left: 0;
16
+ right: 0;
17
+ bottom: 0;
18
+ width: 100%;
19
+ height: 100%;
20
+ z-index: 9999;
21
+ /* 背景色由 JS 动态设置(从视频帧提取主色),这里设置默认回退值 */
22
+ background: #000;
23
+
24
+ /* 全屏模式下视频铺满 */
25
+ .media-display__video {
26
+ position: absolute;
27
+ top: 0;
28
+ left: 0;
29
+ width: 100%;
30
+ height: 100%;
31
+ object-fit: contain;
32
+ }
33
+ }
34
+
35
+ /* 视频样式(普通模式) */
36
+ &__video {
37
+ width: 100%;
38
+ height: 100%;
39
+ object-fit: contain;
40
+ }
41
+
42
+ /* 图片容器 */
43
+ &__image-wrapper {
44
+ width: 100%;
45
+ height: 100%;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ .pisell-lowcode-image {
50
+ width: 100%;
51
+ height: 100%;
52
+ }
53
+ }
54
+
55
+ /* 图片样式 */
56
+ &__image {
57
+ max-width: 100%;
58
+ max-height: 100%;
59
+ object-fit: cover;
60
+ }
61
+ }
62
+
63
+ /**
64
+ * BrandPanel 品牌区组件样式(普通模式)
65
+ */
66
+ .webpos-login-brand-panel {
67
+ position: relative;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ width: 50%;
72
+ min-width: 400px;
73
+ min-height: 600px;
74
+ background: linear-gradient(135deg, #F04A28 0%, #E8421F 100%);
75
+ border-radius: 24px 0 0 24px;
76
+ overflow: hidden;
77
+ flex-shrink: 0;
78
+
79
+ /* 品牌内容区 */
80
+ &__content {
81
+ display: flex;
82
+ flex-direction: column;
83
+ align-items: center;
84
+ justify-content: center;
85
+ padding: 40px;
86
+ text-align: center;
87
+ }
88
+
89
+ /* Logo/媒体 容器 */
90
+ &__logo-wrapper {
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ max-width: 320px;
95
+
96
+ /* 视频在品牌面板中的样式 */
97
+ video {
98
+ max-width: 100%;
99
+ max-height: 240px;
100
+ border-radius: 8px;
101
+ }
102
+ }
103
+
104
+ /* Logo 图片 */
105
+ &__logo {
106
+ max-width: 100%;
107
+ max-height: 120px;
108
+ object-fit: contain;
109
+ }
110
+
111
+ /* 品牌标语 */
112
+ &__slogan {
113
+ margin-top: 16px;
114
+ font-size: 18px;
115
+ font-weight: 400;
116
+ color: rgba(255, 255, 255, 0.9);
117
+ letter-spacing: 0.5px;
118
+ line-height: 1.5;
119
+ }
120
+
121
+ /* 轮播控件(预留) */
122
+ &__carousel-controls {
123
+ display: flex;
124
+ align-items: center;
125
+ justify-content: center;
126
+ margin-top: 20px;
127
+ gap: 8px;
128
+ }
129
+ }
130
+
131
+ /* 响应式适配 */
132
+ @media screen and (max-width: 768px) {
133
+ .webpos-login-brand-panel {
134
+ display: none;
135
+ }
136
+
137
+ /* 全屏模式在移动端仍然显示 */
138
+ .media-display--fullscreen {
139
+ display: flex;
140
+ }
141
+ }
@@ -0,0 +1,54 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * 媒体轮播项
4
+ * @description 媒体展示区的轮播内容配置
5
+ */
6
+ export interface CarouselItem {
7
+ /** 内容类型:图片或视频 */
8
+ type: 'image' | 'video' | 'logo';
9
+ /** 资源URL */
10
+ url: string;
11
+ /** 背景颜色 */
12
+ backgroundColor?: string;
13
+ /** logo样式 */
14
+ logoStyle?: React.CSSProperties;
15
+ }
16
+ /**
17
+ * 媒体配置
18
+ * @description 媒体展示区域的配置
19
+ */
20
+ export interface MediaConfig {
21
+ /** 轮播内容列表(图片/视频) */
22
+ carouselItems?: CarouselItem[];
23
+ /** 默认Logo(当无轮播时显示) */
24
+ logo?: string;
25
+ /** 品牌标语 */
26
+ slogan?: string;
27
+ }
28
+ /**
29
+ * 视频播放状态
30
+ */
31
+ export declare type VideoPlayState = 'idle' | 'playing' | 'paused' | 'ended' | 'error';
32
+ /**
33
+ * MediaDisplay 媒体展示组件 Props
34
+ */
35
+ export interface MediaDisplayProps {
36
+ /** 品牌配置 */
37
+ config?: MediaConfig;
38
+ /** 自定义类名 */
39
+ className?: string;
40
+ /** 是否全屏模式 */
41
+ fullscreen?: boolean;
42
+ /** 视频是否静音,默认 true */
43
+ muted?: boolean;
44
+ /** 视频是否循环播放,默认 false */
45
+ loop?: boolean;
46
+ /** 视频播放结束回调 */
47
+ onVideoEnded?: () => void;
48
+ /** 视频播放状态变化回调 */
49
+ onVideoStateChange?: (state: VideoPlayState) => void;
50
+ /** 是否可以关闭(用于控制视频结束后是否允许关闭) */
51
+ canClose?: boolean;
52
+ /** 关闭回调(视频结束且 canClose 为 true 时触发) */
53
+ onClose?: () => void;
54
+ }
@@ -4,6 +4,7 @@
4
4
  * 这个文件演示了如何使用 PisellPaymentList 和 PisellPaymentListItem 组件
5
5
  * 包括如何通过 Context 访问父组件配置
6
6
  */
7
+ /// <reference types="react" />
7
8
  export declare const BasicExample: () => JSX.Element;
8
9
  export declare const ChildrenExample: () => JSX.Element;
9
10
  export declare const CustomItemExample: () => JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const Footer: ({ onNext, isOpen }: any) => JSX.Element;
3
4
  export default Footer;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const GuestOptionsModal: (props: any) => JSX.Element;
3
4
  export default GuestOptionsModal;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  declare const FormItemChildrenWrap: (props: any) => JSX.Element;
2
3
  export default FormItemChildrenWrap;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  declare const useIsLowSpeedNetwork: () => import("react").MutableRefObject<boolean>;
2
3
  export default useIsLowSpeedNetwork;
@@ -6,7 +6,7 @@ export declare const getDurationProps: ({ cacheItem, useStartTime, currentResour
6
6
  type: string;
7
7
  value: number;
8
8
  };
9
- locale: any;
9
+ locale: string;
10
10
  slice: any;
11
11
  selectProps: {
12
12
  size: string;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import "./index.less";
2
3
  declare const Like: ({ status, onChange, className, style, }: {
3
4
  style?: any;
@@ -7,7 +7,7 @@ export declare const getDurationProps: ({ cacheItem, useStartTime, currentResour
7
7
  type: string;
8
8
  value: number;
9
9
  };
10
- locale: any;
10
+ locale: string;
11
11
  slice: any;
12
12
  selectProps: {
13
13
  size: string;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  declare const _default: ({ input, ...formItemProps }: any) => JSX.Element;
2
3
  export default _default;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  /**
2
3
  * @title: 递归循环表单数据
3
4
  * @Author: hongbing.wang
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { RadioGroupProps } from 'antd';
2
3
  export declare const CheckboxGroup: ({ direction, options, ...props }: any) => JSX.Element;
3
4
  export declare const RadioGroup: ({ direction, options, ...props }: RadioGroupProps & {
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { Eftpos } from './const';
2
3
  /**
3
4
  * @title: tyro 设备连接
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare const _default: ({ color }: {
2
3
  color?: string | undefined;
3
4
  }) => JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare const _default: ({ color }: {
2
3
  color?: string | undefined;
3
4
  }) => JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  /**
2
3
  * @title: 自定义组件设置
3
4
  * @description: 自定义组件设置
@@ -8,7 +8,7 @@ import { PosProps } from './const';
8
8
  */
9
9
  declare const _default: ({ className, onChange, onClose, formatAmount, isMobile, net, client }: {
10
10
  className?: string | undefined;
11
- onChange?: ((status: "success" | "page" | "print" | "fail" | "mark_tx_processed", params?: string | {
11
+ onChange?: ((status: "page" | "success" | "print" | "fail" | "mark_tx_processed", params?: string | {
12
12
  [keys: string]: unknown;
13
13
  } | undefined, other?: any) => void) | undefined;
14
14
  onClose: () => void;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  declare const _default: () => JSX.Element;
2
3
  export default _default;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './titlebar.less';
2
3
  declare enum EPopupTitleBarVariantType {
3
4
  BackTitleClose = "back-title-cancel",
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { StatusType } from '../../const';
2
3
  declare const _default: (props: {
3
4
  status: StatusType;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare const _default: (props: {
2
3
  status: string;
3
4
  pedding?: string;
@@ -11,7 +11,7 @@ import './device.less';
11
11
  declare const _default: ({ api, onChange, onClose, className, device_number, isMobile, net, client, formatAmount, containerStyle, }: {
12
12
  api: PayProps['api'];
13
13
  className?: string | undefined;
14
- onChange?: ((status: "success" | "page" | "print" | "fail" | "mark_tx_processed", params?: string | {
14
+ onChange?: ((status: "page" | "success" | "print" | "fail" | "mark_tx_processed", params?: string | {
15
15
  [keys: string]: unknown;
16
16
  } | undefined, other?: any) => void) | undefined;
17
17
  onClose: () => void;
@@ -15,11 +15,11 @@ export declare const useStoreRef: <T extends {
15
15
  readonly numRef: React.MutableRefObject<string | number | undefined>;
16
16
  readonly orderIdRef: React.MutableRefObject<string | number>;
17
17
  readonly modeRef: React.MutableRefObject<ModeEnum>;
18
- readonly statusRef: React.MutableRefObject<"success" | "warn" | "loading" | "fail" | "pedding" | "resove" | "reject" | "question">;
18
+ readonly statusRef: React.MutableRefObject<"loading" | "success" | "warn" | "fail" | "pedding" | "resove" | "reject" | "question">;
19
19
  readonly netRef: React.MutableRefObject<boolean | undefined>;
20
20
  readonly symbolRef: React.MutableRefObject<string>;
21
21
  readonly amountRef: React.MutableRefObject<string | number>;
22
- readonly eftposRef: React.MutableRefObject<"tyro" | "windcave" | "stripe" | "payo" | "linkly">;
22
+ readonly eftposRef: React.MutableRefObject<"stripe" | "payo" | "tyro" | "windcave" | "linkly">;
23
23
  readonly clientRef: React.MutableRefObject<ClientEnum>;
24
24
  readonly dataRef: React.MutableRefObject<import("./store").State>;
25
25
  };
@@ -174,7 +174,7 @@ export declare const updateCustom: (payload: {
174
174
  export declare const updateStatus: (status: 'loading' | 'warn' | 'fail' | 'success' | 'question') => {
175
175
  type: EActionTypes;
176
176
  payload: {
177
- status: "success" | "warn" | "loading" | "fail" | "question";
177
+ status: "loading" | "success" | "warn" | "fail" | "question";
178
178
  };
179
179
  };
180
180
  /**
@@ -297,7 +297,7 @@ export declare const backUpFree: (payload: Partial<State>) => {
297
297
  amount?: string | number | undefined;
298
298
  mode?: "pay" | "refund" | "fullPay" | "query" | undefined;
299
299
  order_id?: string | number | undefined;
300
- eftpos?: "tyro" | "windcave" | "stripe" | "payo" | "linkly" | undefined;
300
+ eftpos?: "stripe" | "payo" | "tyro" | "windcave" | "linkly" | undefined;
301
301
  action?: "amount" | "pay" | "deviceList" | undefined;
302
302
  key?: number | undefined;
303
303
  step?: number | undefined;
@@ -308,7 +308,7 @@ export declare const backUpFree: (payload: Partial<State>) => {
308
308
  net?: boolean | undefined;
309
309
  component?: string | undefined;
310
310
  form?: string | undefined;
311
- status?: "success" | "warn" | "loading" | "fail" | "pedding" | "resove" | "reject" | "question" | undefined;
311
+ status?: "loading" | "success" | "warn" | "fail" | "pedding" | "resove" | "reject" | "question" | undefined;
312
312
  warn?: string | undefined;
313
313
  steps?: {
314
314
  /** 用于重置当前步骤 */
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  /**
2
3
  * @title: 获取 Tyro 资源
3
4
  * @description:
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const ErrorTip: ({ text }: any) => JSX.Element;
3
4
  export default ErrorTip;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  declare const Deposit: () => JSX.Element;
2
3
  export default Deposit;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const InformationOptionsModal: (props: any) => JSX.Element;
3
4
  export default InformationOptionsModal;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const WeekItem: (props: any) => JSX.Element;
3
4
  export default WeekItem;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare type CalenDateWeekProps = {
3
4
  currentDate: string;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const DayItem: (props: any) => JSX.Element;
3
4
  export default DayItem;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  import { CalendarItemProps } from '../../../../../type';
3
4
  declare const Item: (props: CalendarItemProps) => JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare const StripeSDK: ({ public_key, client_secret, children, lang, }: {
2
3
  public_key: string;
3
4
  client_secret?: string | undefined;