luna-mobile-weapp 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/miniprogram_dist/action-sheet/index.js +59 -0
  2. package/miniprogram_dist/action-sheet/index.json +4 -0
  3. package/miniprogram_dist/action-sheet/index.wxml +18 -0
  4. package/miniprogram_dist/action-sheet/index.wxss +1 -0
  5. package/miniprogram_dist/address-edit/index.js +130 -0
  6. package/miniprogram_dist/address-edit/index.json +4 -0
  7. package/miniprogram_dist/address-edit/index.wxml +63 -0
  8. package/miniprogram_dist/address-edit/index.wxss +1 -0
  9. package/miniprogram_dist/address-list/index.js +57 -0
  10. package/miniprogram_dist/address-list/index.json +4 -0
  11. package/miniprogram_dist/address-list/index.wxml +37 -0
  12. package/miniprogram_dist/address-list/index.wxss +1 -0
  13. package/miniprogram_dist/aside/index.js +17 -0
  14. package/miniprogram_dist/aside/index.json +4 -0
  15. package/miniprogram_dist/aside/index.wxml +5 -0
  16. package/miniprogram_dist/aside/index.wxss +1 -0
  17. package/miniprogram_dist/avatar/index.js +35 -0
  18. package/miniprogram_dist/avatar/index.json +4 -0
  19. package/miniprogram_dist/avatar/index.wxml +13 -0
  20. package/miniprogram_dist/avatar/index.wxss +1 -0
  21. package/miniprogram_dist/back-top/index.js +38 -0
  22. package/miniprogram_dist/back-top/index.json +7 -0
  23. package/miniprogram_dist/back-top/index.wxml +5 -0
  24. package/miniprogram_dist/back-top/index.wxss +1 -0
  25. package/miniprogram_dist/badge/index.js +35 -0
  26. package/miniprogram_dist/badge/index.json +4 -0
  27. package/miniprogram_dist/badge/index.wxml +9 -0
  28. package/miniprogram_dist/badge/index.wxss +1 -0
  29. package/miniprogram_dist/button/index.js +39 -0
  30. package/miniprogram_dist/button/index.json +4 -0
  31. package/miniprogram_dist/button/index.wxml +5 -0
  32. package/miniprogram_dist/button/index.wxss +1 -0
  33. package/miniprogram_dist/captcha/index.js +37 -0
  34. package/miniprogram_dist/captcha/index.json +8 -0
  35. package/miniprogram_dist/captcha/index.wxml +38 -0
  36. package/miniprogram_dist/captcha/index.wxss +1 -0
  37. package/miniprogram_dist/card/index.js +30 -0
  38. package/miniprogram_dist/card/index.json +4 -0
  39. package/miniprogram_dist/card/index.wxml +27 -0
  40. package/miniprogram_dist/card/index.wxss +1 -0
  41. package/miniprogram_dist/category-menu/index.js +42 -0
  42. package/miniprogram_dist/category-menu/index.json +4 -0
  43. package/miniprogram_dist/category-menu/index.wxml +23 -0
  44. package/miniprogram_dist/category-menu/index.wxss +1 -0
  45. package/miniprogram_dist/cell/index.js +48 -0
  46. package/miniprogram_dist/cell/index.json +7 -0
  47. package/miniprogram_dist/cell/index.wxml +35 -0
  48. package/miniprogram_dist/cell/index.wxss +1 -0
  49. package/miniprogram_dist/cell-group/index.js +13 -0
  50. package/miniprogram_dist/cell-group/index.json +4 -0
  51. package/miniprogram_dist/cell-group/index.wxml +9 -0
  52. package/miniprogram_dist/cell-group/index.wxss +1 -0
  53. package/miniprogram_dist/checkbox/index.js +50 -0
  54. package/miniprogram_dist/checkbox/index.json +4 -0
  55. package/miniprogram_dist/checkbox/index.wxml +17 -0
  56. package/miniprogram_dist/checkbox/index.wxss +1 -0
  57. package/miniprogram_dist/circle-progress/index.js +52 -0
  58. package/miniprogram_dist/circle-progress/index.json +4 -0
  59. package/miniprogram_dist/circle-progress/index.wxml +13 -0
  60. package/miniprogram_dist/circle-progress/index.wxss +1 -0
  61. package/miniprogram_dist/collapse/index.js +31 -0
  62. package/miniprogram_dist/collapse/index.json +4 -0
  63. package/miniprogram_dist/collapse/index.wxml +5 -0
  64. package/miniprogram_dist/collapse/index.wxss +1 -0
  65. package/miniprogram_dist/collapse-item/index.js +42 -0
  66. package/miniprogram_dist/collapse-item/index.json +7 -0
  67. package/miniprogram_dist/collapse-item/index.wxml +18 -0
  68. package/miniprogram_dist/collapse-item/index.wxss +1 -0
  69. package/miniprogram_dist/common/runtime.js +234 -0
  70. package/miniprogram_dist/container/index.js +18 -0
  71. package/miniprogram_dist/container/index.json +4 -0
  72. package/miniprogram_dist/container/index.wxml +5 -0
  73. package/miniprogram_dist/container/index.wxss +1 -0
  74. package/miniprogram_dist/count-down/index.js +58 -0
  75. package/miniprogram_dist/count-down/index.json +4 -0
  76. package/miniprogram_dist/count-down/index.wxml +14 -0
  77. package/miniprogram_dist/count-down/index.wxss +1 -0
  78. package/miniprogram_dist/count-up/index.js +56 -0
  79. package/miniprogram_dist/count-up/index.json +4 -0
  80. package/miniprogram_dist/count-up/index.wxml +2 -0
  81. package/miniprogram_dist/count-up/index.wxss +1 -0
  82. package/miniprogram_dist/date-time-picker/index.js +134 -0
  83. package/miniprogram_dist/date-time-picker/index.json +4 -0
  84. package/miniprogram_dist/date-time-picker/index.wxml +77 -0
  85. package/miniprogram_dist/date-time-picker/index.wxss +1 -0
  86. package/miniprogram_dist/divider/index.js +22 -0
  87. package/miniprogram_dist/divider/index.json +4 -0
  88. package/miniprogram_dist/divider/index.wxml +13 -0
  89. package/miniprogram_dist/divider/index.wxss +1 -0
  90. package/miniprogram_dist/drop-down-menu/index.js +33 -0
  91. package/miniprogram_dist/drop-down-menu/index.json +7 -0
  92. package/miniprogram_dist/drop-down-menu/index.wxml +19 -0
  93. package/miniprogram_dist/drop-down-menu/index.wxss +1 -0
  94. package/miniprogram_dist/empty/index.js +21 -0
  95. package/miniprogram_dist/empty/index.json +7 -0
  96. package/miniprogram_dist/empty/index.wxml +17 -0
  97. package/miniprogram_dist/empty/index.wxss +1 -0
  98. package/miniprogram_dist/fixed-view/index.js +36 -0
  99. package/miniprogram_dist/fixed-view/index.json +4 -0
  100. package/miniprogram_dist/fixed-view/index.wxml +9 -0
  101. package/miniprogram_dist/fixed-view/index.wxss +1 -0
  102. package/miniprogram_dist/flex/index.js +31 -0
  103. package/miniprogram_dist/flex/index.json +4 -0
  104. package/miniprogram_dist/flex/index.wxml +5 -0
  105. package/miniprogram_dist/flex/index.wxss +1 -0
  106. package/miniprogram_dist/float-button/index.js +35 -0
  107. package/miniprogram_dist/float-button/index.json +7 -0
  108. package/miniprogram_dist/float-button/index.wxml +8 -0
  109. package/miniprogram_dist/float-button/index.wxss +1 -0
  110. package/miniprogram_dist/footer/index.js +17 -0
  111. package/miniprogram_dist/footer/index.json +4 -0
  112. package/miniprogram_dist/footer/index.wxml +5 -0
  113. package/miniprogram_dist/footer/index.wxss +1 -0
  114. package/miniprogram_dist/form/index.js +41 -0
  115. package/miniprogram_dist/form/index.json +4 -0
  116. package/miniprogram_dist/form/index.wxml +5 -0
  117. package/miniprogram_dist/form/index.wxss +1 -0
  118. package/miniprogram_dist/form-item/index.js +30 -0
  119. package/miniprogram_dist/form-item/index.json +4 -0
  120. package/miniprogram_dist/form-item/index.wxml +20 -0
  121. package/miniprogram_dist/form-item/index.wxss +1 -0
  122. package/miniprogram_dist/grid/index.js +22 -0
  123. package/miniprogram_dist/grid/index.json +4 -0
  124. package/miniprogram_dist/grid/index.wxml +5 -0
  125. package/miniprogram_dist/grid/index.wxss +1 -0
  126. package/miniprogram_dist/grid-item/index.js +41 -0
  127. package/miniprogram_dist/grid-item/index.json +7 -0
  128. package/miniprogram_dist/grid-item/index.wxml +21 -0
  129. package/miniprogram_dist/grid-item/index.wxss +1 -0
  130. package/miniprogram_dist/guide/index.js +93 -0
  131. package/miniprogram_dist/guide/index.json +4 -0
  132. package/miniprogram_dist/guide/index.wxml +28 -0
  133. package/miniprogram_dist/guide/index.wxss +1 -0
  134. package/miniprogram_dist/header/index.js +17 -0
  135. package/miniprogram_dist/header/index.json +4 -0
  136. package/miniprogram_dist/header/index.wxml +5 -0
  137. package/miniprogram_dist/header/index.wxss +1 -0
  138. package/miniprogram_dist/highlight/index.js +42 -0
  139. package/miniprogram_dist/highlight/index.json +4 -0
  140. package/miniprogram_dist/highlight/index.wxml +10 -0
  141. package/miniprogram_dist/highlight/index.wxss +1 -0
  142. package/miniprogram_dist/icon/index.js +26 -0
  143. package/miniprogram_dist/icon/index.json +4 -0
  144. package/miniprogram_dist/icon/index.wxml +5 -0
  145. package/miniprogram_dist/icon/index.wxss +1 -0
  146. package/miniprogram_dist/image/index.js +51 -0
  147. package/miniprogram_dist/image/index.json +4 -0
  148. package/miniprogram_dist/image/index.wxml +13 -0
  149. package/miniprogram_dist/image/index.wxss +1 -0
  150. package/miniprogram_dist/input/index.js +121 -0
  151. package/miniprogram_dist/input/index.json +7 -0
  152. package/miniprogram_dist/input/index.wxml +35 -0
  153. package/miniprogram_dist/input/index.wxss +1 -0
  154. package/miniprogram_dist/input-number/index.js +71 -0
  155. package/miniprogram_dist/input-number/index.json +7 -0
  156. package/miniprogram_dist/input-number/index.wxml +9 -0
  157. package/miniprogram_dist/input-number/index.wxss +1 -0
  158. package/miniprogram_dist/keyboard/index.js +84 -0
  159. package/miniprogram_dist/keyboard/index.json +7 -0
  160. package/miniprogram_dist/keyboard/index.wxml +27 -0
  161. package/miniprogram_dist/keyboard/index.wxss +1 -0
  162. package/miniprogram_dist/lazy-image/index.js +53 -0
  163. package/miniprogram_dist/lazy-image/index.json +4 -0
  164. package/miniprogram_dist/lazy-image/index.wxml +16 -0
  165. package/miniprogram_dist/lazy-image/index.wxss +1 -0
  166. package/miniprogram_dist/line-progress/index.js +45 -0
  167. package/miniprogram_dist/line-progress/index.json +4 -0
  168. package/miniprogram_dist/line-progress/index.wxml +14 -0
  169. package/miniprogram_dist/line-progress/index.wxss +1 -0
  170. package/miniprogram_dist/load-more/index.js +23 -0
  171. package/miniprogram_dist/load-more/index.json +7 -0
  172. package/miniprogram_dist/load-more/index.wxml +21 -0
  173. package/miniprogram_dist/load-more/index.wxss +1 -0
  174. package/miniprogram_dist/loading/index.js +28 -0
  175. package/miniprogram_dist/loading/index.json +4 -0
  176. package/miniprogram_dist/loading/index.wxml +12 -0
  177. package/miniprogram_dist/loading/index.wxss +1 -0
  178. package/miniprogram_dist/main/index.js +63 -0
  179. package/miniprogram_dist/main/index.json +4 -0
  180. package/miniprogram_dist/main/index.wxml +5 -0
  181. package/miniprogram_dist/main/index.wxss +1 -0
  182. package/miniprogram_dist/navbar/index.js +37 -0
  183. package/miniprogram_dist/navbar/index.json +7 -0
  184. package/miniprogram_dist/navbar/index.wxml +23 -0
  185. package/miniprogram_dist/navbar/index.wxss +1 -0
  186. package/miniprogram_dist/notice-bar/index.js +79 -0
  187. package/miniprogram_dist/notice-bar/index.json +7 -0
  188. package/miniprogram_dist/notice-bar/index.wxml +18 -0
  189. package/miniprogram_dist/notice-bar/index.wxss +1 -0
  190. package/miniprogram_dist/page/index.js +14 -0
  191. package/miniprogram_dist/page/index.json +4 -0
  192. package/miniprogram_dist/page/index.wxml +7 -0
  193. package/miniprogram_dist/page/index.wxss +0 -0
  194. package/miniprogram_dist/pin-input/index.js +32 -0
  195. package/miniprogram_dist/pin-input/index.json +4 -0
  196. package/miniprogram_dist/pin-input/index.wxml +5 -0
  197. package/miniprogram_dist/pin-input/index.wxss +1 -0
  198. package/miniprogram_dist/popup/index.js +60 -0
  199. package/miniprogram_dist/popup/index.json +4 -0
  200. package/miniprogram_dist/popup/index.wxml +9 -0
  201. package/miniprogram_dist/popup/index.wxss +1 -0
  202. package/miniprogram_dist/pull-refresh/index.js +56 -0
  203. package/miniprogram_dist/pull-refresh/index.json +4 -0
  204. package/miniprogram_dist/pull-refresh/index.wxml +10 -0
  205. package/miniprogram_dist/pull-refresh/index.wxss +1 -0
  206. package/miniprogram_dist/radio/index.js +35 -0
  207. package/miniprogram_dist/radio/index.json +4 -0
  208. package/miniprogram_dist/radio/index.wxml +9 -0
  209. package/miniprogram_dist/radio/index.wxss +1 -0
  210. package/miniprogram_dist/radio-group/index.js +14 -0
  211. package/miniprogram_dist/radio-group/index.json +4 -0
  212. package/miniprogram_dist/radio-group/index.wxml +5 -0
  213. package/miniprogram_dist/radio-group/index.wxss +1 -0
  214. package/miniprogram_dist/rate/index.js +88 -0
  215. package/miniprogram_dist/rate/index.json +4 -0
  216. package/miniprogram_dist/rate/index.wxml +16 -0
  217. package/miniprogram_dist/rate/index.wxss +1 -0
  218. package/miniprogram_dist/safe-area/index.js +14 -0
  219. package/miniprogram_dist/safe-area/index.json +4 -0
  220. package/miniprogram_dist/safe-area/index.wxml +5 -0
  221. package/miniprogram_dist/safe-area/index.wxss +1 -0
  222. package/miniprogram_dist/scroll-list/index.js +54 -0
  223. package/miniprogram_dist/scroll-list/index.json +4 -0
  224. package/miniprogram_dist/scroll-list/index.wxml +13 -0
  225. package/miniprogram_dist/scroll-list/index.wxss +1 -0
  226. package/miniprogram_dist/search/index.js +59 -0
  227. package/miniprogram_dist/search/index.json +7 -0
  228. package/miniprogram_dist/search/index.wxml +17 -0
  229. package/miniprogram_dist/search/index.wxss +1 -0
  230. package/miniprogram_dist/share-panel/index.js +70 -0
  231. package/miniprogram_dist/share-panel/index.json +7 -0
  232. package/miniprogram_dist/share-panel/index.wxml +25 -0
  233. package/miniprogram_dist/share-panel/index.wxss +1 -0
  234. package/miniprogram_dist/skeleton/index.js +27 -0
  235. package/miniprogram_dist/skeleton/index.json +4 -0
  236. package/miniprogram_dist/skeleton/index.wxml +30 -0
  237. package/miniprogram_dist/skeleton/index.wxss +1 -0
  238. package/miniprogram_dist/slider/index.js +78 -0
  239. package/miniprogram_dist/slider/index.json +4 -0
  240. package/miniprogram_dist/slider/index.wxml +13 -0
  241. package/miniprogram_dist/slider/index.wxss +1 -0
  242. package/miniprogram_dist/steps/index.js +19 -0
  243. package/miniprogram_dist/steps/index.json +7 -0
  244. package/miniprogram_dist/steps/index.wxml +27 -0
  245. package/miniprogram_dist/steps/index.wxss +1 -0
  246. package/miniprogram_dist/sticky/index.js +18 -0
  247. package/miniprogram_dist/sticky/index.json +4 -0
  248. package/miniprogram_dist/sticky/index.wxml +5 -0
  249. package/miniprogram_dist/sticky/index.wxss +0 -0
  250. package/miniprogram_dist/swipe-action/index.js +38 -0
  251. package/miniprogram_dist/swipe-action/index.json +4 -0
  252. package/miniprogram_dist/swipe-action/index.wxml +14 -0
  253. package/miniprogram_dist/swipe-action/index.wxss +1 -0
  254. package/miniprogram_dist/switch/index.js +86 -0
  255. package/miniprogram_dist/switch/index.json +7 -0
  256. package/miniprogram_dist/switch/index.wxml +31 -0
  257. package/miniprogram_dist/switch/index.wxss +1 -0
  258. package/miniprogram_dist/tabbar/index.js +41 -0
  259. package/miniprogram_dist/tabbar/index.json +4 -0
  260. package/miniprogram_dist/tabbar/index.wxml +5 -0
  261. package/miniprogram_dist/tabbar/index.wxss +1 -0
  262. package/miniprogram_dist/tabbar-item/index.js +47 -0
  263. package/miniprogram_dist/tabbar-item/index.json +8 -0
  264. package/miniprogram_dist/tabbar-item/index.wxml +18 -0
  265. package/miniprogram_dist/tabbar-item/index.wxss +1 -0
  266. package/miniprogram_dist/tabs/index.js +54 -0
  267. package/miniprogram_dist/tabs/index.json +4 -0
  268. package/miniprogram_dist/tabs/index.wxml +17 -0
  269. package/miniprogram_dist/tabs/index.wxss +1 -0
  270. package/miniprogram_dist/tag/index.js +22 -0
  271. package/miniprogram_dist/tag/index.json +4 -0
  272. package/miniprogram_dist/tag/index.wxml +5 -0
  273. package/miniprogram_dist/tag/index.wxss +1 -0
  274. package/miniprogram_dist/text/index.js +56 -0
  275. package/miniprogram_dist/text/index.json +4 -0
  276. package/miniprogram_dist/text/index.wxml +5 -0
  277. package/miniprogram_dist/text/index.wxss +1 -0
  278. package/miniprogram_dist/textarea/index.js +60 -0
  279. package/miniprogram_dist/textarea/index.json +4 -0
  280. package/miniprogram_dist/textarea/index.wxml +8 -0
  281. package/miniprogram_dist/textarea/index.wxss +1 -0
  282. package/miniprogram_dist/toast/index.js +46 -0
  283. package/miniprogram_dist/toast/index.json +8 -0
  284. package/miniprogram_dist/toast/index.wxml +16 -0
  285. package/miniprogram_dist/toast/index.wxss +1 -0
  286. package/miniprogram_dist/upload/index.js +79 -0
  287. package/miniprogram_dist/upload/index.json +7 -0
  288. package/miniprogram_dist/upload/index.wxml +38 -0
  289. package/miniprogram_dist/upload/index.wxss +1 -0
  290. package/package.json +16 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated",
4
+ "usingComponents": {
5
+ "icon": "../icon/index"
6
+ }
7
+ }
@@ -0,0 +1,18 @@
1
+ <view class="ln-collapse-item" class="{{active? 'is-active' : ''}}" class="{{disabled? 'is-disabled' : ''}}" class="{{bordered? 'is-bordered' : ''}}">
2
+ <view class="ln-collapse-item__header" role="button" tabindex="{{disabled ? -1 : 0}}" bindtap="toggle" bindkeydown="__handler_1">
3
+ <text class="ln-collapse-item__title">
4
+ {{title}} </text>
5
+ <text class="ln-collapse-item__arrow">
6
+ <icon icon="{{ChevronRight}}" size="{{16}}" />
7
+ </text>
8
+ </view>
9
+ <block wx:if="{{active}}">
10
+ <view class="ln-collapse-item__wrap">
11
+ <view class="ln-collapse-item__content">
12
+ <block wx:if="{{children}}">
13
+ <slot />
14
+ {{/if}} </block>
15
+ </view>
16
+ </view>
17
+ {{/if}} </block>
18
+ </view>
@@ -0,0 +1 @@
1
+ .ln-collapse{border-radius:16rpx;overflow:hidden;background-color:#fff;border:1px solid #e4e7ed}.dark .ln-collapse{background-color:#1d1e1f;border-color:hsla(0,0%,100%,.08)}.ln-collapse-item+.ln-collapse-item{border-top:1px solid #e4e7ed}.dark .ln-collapse-item+.ln-collapse-item{border-top-color:hsla(0,0%,100%,.08)}.ln-collapse-item__header{display:flex;align-items:center;justify-content:space-between;padding:24rpx 32rpx;cursor:pointer;user-select:none;background:#fff;outline:none}.ln-collapse-item__title{flex:1;font-size:28rpx;font-weight:500;color:#303133}.ln-collapse-item__arrow{display:inline-flex;color:#a8abb2;transition:transform .2s}.ln-collapse-item.is-active .ln-collapse-item__arrow{transform:rotate(90deg)}.ln-collapse-item__wrap{overflow:hidden;border-top:1px solid #e4e7ed}.ln-collapse-item__content{padding:0 32rpx 24rpx;font-size:28rpx;color:#606266}.ln-collapse-item.is-bordered{border:1px solid #e4e7ed;border-radius:16rpx;overflow:hidden}.ln-collapse-item.is-disabled .ln-collapse-item__header{cursor:not-allowed}.ln-collapse-item.is-disabled .ln-collapse-item__title{color:#c0c4cc}.dark .ln-collapse-item.is-bordered{border-color:hsla(0,0%,100%,.08)}.dark .ln-collapse-item .ln-collapse-item__header{background:#1d1e1f}.dark .ln-collapse-item .ln-collapse-item__title{color:#e5eaf3}.dark .ln-collapse-item .ln-collapse-item__arrow{color:#6b6f76}.dark .ln-collapse-item .ln-collapse-item__wrap{border-top-color:hsla(0,0%,100%,.08)}.dark .ln-collapse-item .ln-collapse-item__content{color:#cfd3dc}.dark .ln-collapse-item.is-disabled .ln-collapse-item__title{color:#6b6f76}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * sveltemp 运行时桥接层
3
+ * 将 Svelte 5 Runes 响应式模型桥接到小程序 setData 机制
4
+ * 体积目标: < 5KB (minified)
5
+ */
6
+
7
+ // ============================================================
8
+ // 1. 响应式代理 — 拦截 $state 变量的赋值,自动触发 setData
9
+ // ============================================================
10
+
11
+ /**
12
+ * 创建响应式代理
13
+ * @param {Object} ctx - 小程序组件/页面实例 (this)
14
+ * @param {Object} initialData - 初始 data 对象
15
+ * @returns {Proxy} 代理对象
16
+ */
17
+ function createReactiveProxy(ctx, initialData) {
18
+ const pending = {};
19
+ let timer = null;
20
+
21
+ const handler = {
22
+ set(target, key, value) {
23
+ target[key] = value;
24
+ pending[key] = value;
25
+
26
+ // 批量合并 setData 调用(微任务级别)
27
+ if (!timer) {
28
+ timer = setTimeout(() => {
29
+ if (Object.keys(pending).length > 0) {
30
+ ctx.setData(Object.assign({}, pending));
31
+ // 清空 pending
32
+ Object.keys(pending).forEach(k => delete pending[k]);
33
+ }
34
+ timer = null;
35
+ }, 0);
36
+ }
37
+
38
+ return true;
39
+ },
40
+
41
+ get(target, key) {
42
+ return target[key];
43
+ }
44
+ };
45
+
46
+ return new Proxy(initialData, handler);
47
+ }
48
+
49
+ // ============================================================
50
+ // 2. 批量 setData — 合并多次 setData 为一次调用
51
+ // ============================================================
52
+
53
+ const batchQueue = new Map();
54
+
55
+ /**
56
+ * 批量 setData
57
+ * @param {Object} ctx - 小程序实例
58
+ * @param {Object} data - 要更新的数据
59
+ * @param {Function} [callback] - 回调
60
+ */
61
+ function batchSetData(ctx, data, callback) {
62
+ const id = ctx.__sveltempId || (ctx.__sveltempId = ++batchIdCounter);
63
+
64
+ if (!batchQueue.has(id)) {
65
+ batchQueue.set(id, { ctx, data: {}, callbacks: [] });
66
+
67
+ // 下一个微任务执行
68
+ Promise.resolve().then(() => {
69
+ const batch = batchQueue.get(id);
70
+ if (batch) {
71
+ batchQueue.delete(id);
72
+ batch.ctx.setData(batch.data, () => {
73
+ batch.callbacks.forEach(cb => cb && cb());
74
+ });
75
+ }
76
+ });
77
+ }
78
+
79
+ const batch = batchQueue.get(id);
80
+ Object.assign(batch.data, data);
81
+ if (callback) {
82
+ batch.callbacks.push(callback);
83
+ }
84
+ }
85
+
86
+ let batchIdCounter = 0;
87
+
88
+ // ============================================================
89
+ // 3. 跨平台 API 适配器
90
+ // ============================================================
91
+
92
+ /**
93
+ * 获取当前平台的全局 API 对象
94
+ */
95
+ function getApi() {
96
+ /* eslint-disable no-undef */
97
+ if (typeof wx !== 'undefined') return wx;
98
+ if (typeof my !== 'undefined') return my;
99
+ if (typeof swan !== 'undefined') return swan;
100
+ if (typeof qq !== 'undefined') return qq;
101
+ if (typeof tt !== 'undefined') return tt;
102
+ /* eslint-enable no-undef */
103
+ throw new Error('[sveltemp-runtime] 未检测到小程序环境');
104
+ }
105
+
106
+ const api = getApi();
107
+
108
+ /**
109
+ * 统一的 API 调用封装
110
+ * 处理各平台 API 差异(回调风格 vs Promise 风格)
111
+ */
112
+ function callApi(name, options) {
113
+ return new Promise((resolve, reject) => {
114
+ const fn = api[name];
115
+ if (!fn) {
116
+ reject(new Error(`API ${name} 不存在`));
117
+ return;
118
+ }
119
+
120
+ fn(Object.assign({}, options, {
121
+ success: (res) => {
122
+ if (options && options.success) options.success(res);
123
+ resolve(res);
124
+ },
125
+ fail: (err) => {
126
+ if (options && options.fail) options.fail(err);
127
+ reject(err);
128
+ },
129
+ complete: (res) => {
130
+ if (options && options.complete) options.complete(res);
131
+ }
132
+ }));
133
+ });
134
+ }
135
+
136
+ // ============================================================
137
+ // 4. 导航 API 统一封装
138
+ // ============================================================
139
+
140
+ const router = {
141
+ push(url, params) {
142
+ const query = params ? '?' + Object.keys(params).map(k => `${k}=${encodeURIComponent(params[k])}`).join('&') : '';
143
+ return callApi('navigateTo', { url: url + query });
144
+ },
145
+
146
+ replace(url, params) {
147
+ const query = params ? '?' + Object.keys(params).map(k => `${k}=${encodeURIComponent(params[k])}`).join('&') : '';
148
+ return callApi('redirectTo', { url: url + query });
149
+ },
150
+
151
+ back(delta) {
152
+ return callApi('navigateBack', { delta: delta || 1 });
153
+ },
154
+
155
+ switchTab(url) {
156
+ return callApi('switchTab', { url });
157
+ }
158
+ };
159
+
160
+ // ============================================================
161
+ // 5. 存储 API 统一封装
162
+ // ============================================================
163
+
164
+ const storage = {
165
+ get(key) {
166
+ return callApi('getStorage', { key }).then(res => res.data);
167
+ },
168
+
169
+ set(key, data) {
170
+ return callApi('setStorage', { key, data });
171
+ },
172
+
173
+ remove(key) {
174
+ return callApi('removeStorage', { key });
175
+ },
176
+
177
+ clear() {
178
+ return callApi('clearStorage', {});
179
+ }
180
+ };
181
+
182
+ // ============================================================
183
+ // 6. 网络请求统一封装
184
+ // ============================================================
185
+
186
+ function request(options) {
187
+ return callApi('request', options);
188
+ }
189
+
190
+ // ============================================================
191
+ // 7. 事件总线(跨组件通信)
192
+ // ============================================================
193
+
194
+ const eventBus = {
195
+ _events: {},
196
+
197
+ on(event, handler) {
198
+ if (!this._events[event]) {
199
+ this._events[event] = [];
200
+ }
201
+ this._events[event].push(handler);
202
+ return () => this.off(event, handler);
203
+ },
204
+
205
+ off(event, handler) {
206
+ if (!this._events[event]) return;
207
+ if (handler) {
208
+ this._events[event] = this._events[event].filter(h => h !== handler);
209
+ } else {
210
+ delete this._events[event];
211
+ }
212
+ },
213
+
214
+ emit(event, ...args) {
215
+ if (this._events[event]) {
216
+ this._events[event].forEach(h => h(...args));
217
+ }
218
+ }
219
+ };
220
+
221
+ // ============================================================
222
+ // 导出
223
+ // ============================================================
224
+
225
+ module.exports = {
226
+ createReactiveProxy,
227
+ batchSetData,
228
+ api,
229
+ callApi,
230
+ router,
231
+ storage,
232
+ request,
233
+ eventBus,
234
+ };
@@ -0,0 +1,18 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ direction: {
6
+ type: String,
7
+ value: 'vertical',
8
+ },
9
+ class: className: {
10
+ type: null,
11
+ value: '',
12
+ },
13
+ children: {
14
+ type: null,
15
+ },
16
+ },
17
+
18
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,5 @@
1
+ <view class="ln-container {className}" class="{{direction === 'vertical'? 'is-vertical' : ''}}">
2
+ <block wx:if="{{children}}">
3
+ <slot />
4
+ {{/if}} </block>
5
+ </view>
@@ -0,0 +1 @@
1
+ .ln-container{display:flex;flex-direction:column;box-sizing:border-box;min-height:100vh;min-height:100dvh;max-width:1500rpx;margin:0 auto;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;transition:background-color .3s,color .3s}.dark .ln-container{background-color:#141415;color:#e5eaf3}.ln-header{position:fixed;top:0;left:0;right:0;max-width:1500rpx;margin:0 auto;flex-shrink:0;z-index:100;background-color:#fff;will-change:transform;transform:translateZ(0)}.dark .ln-header{background-color:#1d1e1f}.ln-main{display:block;flex:1;box-sizing:border-box;min-width:0;overflow-x:clip;padding:32rpx;padding-top:120rpx;background-color:#f2f3f5}.dark .ln-main{background-color:#141415}.ln-main--slide-right{animation:ln-slide-right 300ms ease both}.ln-main--slide-left{animation:ln-slide-left 300ms ease both}@keyframes ln-slide-right{from{transform:translateX(120rpx)}to{transform:translateX(0)}}@keyframes ln-slide-left{from{transform:translateX(-120rpx)}to{transform:translateX(0)}}.ln-footer{display:flex;align-items:center;box-sizing:border-box;flex-shrink:0;height:100rpx;padding:0 32rpx;background-color:#fff;border-top:.10rpx solid #e4e7ed}.dark .ln-footer{background-color:#1d1e1f;border-top-color:hsla(0,0%,100%,.08);color:#e5eaf3}.ln-aside{display:flex;flex-direction:column;box-sizing:border-box;flex-shrink:0;width:var(--ln-aside-width, 400rpx);overflow:hidden;background-color:#fff;border-right:.10rpx solid #e4e7ed}.dark .ln-aside{background-color:#1d1e1f;border-right-color:hsla(0,0%,100%,.08);color:#e5eaf3}
@@ -0,0 +1,58 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ time: {
6
+ type: Number,
7
+ value: 0,
8
+ },
9
+ format: {
10
+ type: null,
11
+ value: 'HH:mm:ss',
12
+ },
13
+ plain: {
14
+ type: Boolean,
15
+ value: false,
16
+ },
17
+ onfinish: {
18
+ type: null,
19
+ },
20
+ },
21
+
22
+ data: {
23
+ remaining: 0,
24
+ display: undefined,
25
+ },
26
+
27
+ observers: {
28
+ 'format, remaining': function() {
29
+ this.setData({ display: const h = Math.floor(remaining / 3600000);
30
+ const m = Math.floor((remaining % 3600000) / 60000);
31
+ const s = Math.floor((remaining % 60000) / 1000);
32
+ return format
33
+ .replace('HH', pad(h))
34
+ .replace('mm', pad(m))
35
+ .replace('ss', pad(s)); });
36
+ },
37
+ },
38
+
39
+ lifetimes: {
40
+ attached() {
41
+ const self = this;
42
+ // $effect #1
43
+ remaining = time;;
44
+ // $effect #2
45
+ if (remaining <= 0) return;
46
+ const timer = setInterval(() => {
47
+ remaining -= 1000;
48
+ if (remaining <= 0) {
49
+ remaining = 0;
50
+ clearInterval(timer);
51
+ onfinish?.();
52
+ }
53
+ }, 1000);
54
+ return () => clearInterval(timer);;
55
+ },
56
+ },
57
+
58
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,14 @@
1
+ <text class="ln-countdown" class="{{plain? 'ln-countdown--plain' : ''}}">
2
+ <block wx:if="{{plain}}">
3
+ {{display}} </block>
4
+ <block wx:else>
5
+ <block wx:for="{{display.split(':')}}" wx:for-item="part" wx:for-index="i">
6
+ <block wx:if="{{i > 0}}">
7
+ <text class="ln-countdown__separator">
8
+ : </text>
9
+ {{/if}} <text class="ln-countdown__block">
10
+ {{part}} </text>
11
+ {{/each}}{{/if}} </block>
12
+ </block>
13
+ </block>
14
+ </text>
@@ -0,0 +1 @@
1
+ .ln-countdown{display:inline-flex;align-items:center;color:#303133;font-size:28rpx;font-variant-numeric:tabular-nums}.ln-countdown__block{display:inline-flex;align-items:center;justify-content:center;min-width:48rpx;height:48rpx;padding:0 8rpx;background-color:#303133;color:#fff;border-radius:4rpx;font-size:26rpx;font-weight:500}.ln-countdown__separator{margin:0 8rpx;color:#303133;font-weight:700}.ln-countdown--plain .ln-countdown__block{background-color:rgba(0,0,0,0);color:#303133;padding:0;min-width:auto}.dark .ln-countdown{color:#e5eaf3}.dark .ln-countdown .ln-countdown__block{background-color:#e5eaf3;color:#141415}.dark .ln-countdown .ln-countdown__separator{color:#e5eaf3}.dark .ln-countdown.ln-countdown--plain .ln-countdown__block{background-color:rgba(0,0,0,0);color:#e5eaf3}
@@ -0,0 +1,56 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ endValue: {
6
+ type: Number,
7
+ value: 0,
8
+ },
9
+ startValue: {
10
+ type: Number,
11
+ value: 0,
12
+ },
13
+ duration: {
14
+ type: Number,
15
+ value: 2000,
16
+ },
17
+ decimals: {
18
+ type: Number,
19
+ value: 0,
20
+ },
21
+ prefix: {
22
+ type: String,
23
+ value: '',
24
+ },
25
+ suffix: {
26
+ type: String,
27
+ value: '',
28
+ },
29
+ },
30
+
31
+ data: {
32
+ display: '0',
33
+ },
34
+
35
+ lifetimes: {
36
+ attached() {
37
+ const self = this;
38
+ // $effect #1
39
+ const start = startValue;
40
+ const end = endValue;
41
+ const dur = duration;
42
+ const dec = decimals;
43
+ let raf: number;
44
+ const t0 = performance.now();
45
+ const tick = (now: number): void => {
46
+ const progress = Math.min((now - t0) / dur, 1);
47
+ const eased = 1 - Math.pow(1 - progress, 3);
48
+ display = (start + (end - start) * eased).toFixed(dec);
49
+ if (progress < 1) raf = requestAnimationFrame(tick);
50
+ }
51
+ raf = requestAnimationFrame(tick);
52
+ return () => cancelAnimationFrame(raf);;
53
+ },
54
+ },
55
+
56
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,2 @@
1
+ <text class="ln-count-up">
2
+ {{prefix}}{{display}}{{suffix}}</text>
@@ -0,0 +1 @@
1
+ .ln-count-up{font-variant-numeric:tabular-nums;font-size:40rpx;font-weight:700;color:#303133}.dark .ln-count-up{color:#e5eaf3}
@@ -0,0 +1,134 @@
1
+ // import from 'svelte/transition'
2
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
3
+
4
+ Component({
5
+ properties: {
6
+ value: {
7
+ type: String,
8
+ value: '',
9
+ },
10
+ mode: {
11
+ type: String,
12
+ value: 'date',
13
+ },
14
+ visible: {
15
+ type: Boolean,
16
+ value: false,
17
+ },
18
+ minDate: {
19
+ type: String,
20
+ value: '1970-01-01',
21
+ },
22
+ maxDate: {
23
+ type: String,
24
+ value: '2099-12-31',
25
+ },
26
+ disabled: {
27
+ type: Boolean,
28
+ value: false,
29
+ },
30
+ onconfirm: {
31
+ type: null,
32
+ },
33
+ onclose: {
34
+ type: null,
35
+ },
36
+ children: {
37
+ type: null,
38
+ },
39
+ },
40
+
41
+ data: {
42
+ year: new Date().getFullYear(),
43
+ month: new Date().getMonth() + 1,
44
+ day: new Date().getDate(),
45
+ hour: 0,
46
+ minute: 0,
47
+ yearEl: undefined,
48
+ monthEl: undefined,
49
+ dayEl: undefined,
50
+ hourEl: undefined,
51
+ minuteEl: undefined,
52
+ min: undefined,
53
+ max: undefined,
54
+ years: undefined,
55
+ months: undefined,
56
+ dayCount: undefined,
57
+ dayList: undefined,
58
+ },
59
+
60
+ observers: {
61
+ '**': function() {
62
+ this.setData({ min: parseMin() });
63
+ },
64
+ '**': function() {
65
+ this.setData({ max: parseMax() });
66
+ },
67
+ 'max, min': function() {
68
+ this.setData({ years: Array.from({ length: max.y - min.y + 1 }, (_: unknown, i: number) => min.y + i) });
69
+ },
70
+ '**': function() {
71
+ this.setData({ months: Array.from({ length: 12 }, (_: unknown, i: number) => i + 1) });
72
+ },
73
+ 'year, month': function() {
74
+ this.setData({ dayCount: new Date(year, month, 0).getDate() });
75
+ },
76
+ 'dayCount, day': function() {
77
+ this.setData({ dayList: Array.from({ length: dayCount }, (_: unknown, i: number) => i + 1) });
78
+ },
79
+ },
80
+
81
+ lifetimes: {
82
+ attached() {
83
+ const self = this;
84
+ // $bindable: value
85
+ this.__bind_value = function(e) {
86
+ self.setData({ value: e.detail.value });
87
+ self.triggerEvent('update:value', e.detail.value);
88
+ };
89
+ // $bindable: visible
90
+ this.__bind_visible = function(e) {
91
+ self.setData({ visible: e.detail.value });
92
+ self.triggerEvent('update:visible', e.detail.value);
93
+ };
94
+ // $effect #1
95
+ if (day > dayCount) day = dayCount;;
96
+ },
97
+ },
98
+
99
+ methods: {
100
+ close(e) {
101
+ // 用户定义的处理函数
102
+ },
103
+ close(e) {
104
+ // 用户定义的处理函数
105
+ },
106
+ confirm(e) {
107
+ // 用户定义的处理函数
108
+ },
109
+ onScroll('year')(e) {
110
+ // 用户定义的处理函数
111
+ },
112
+ onScroll('month')(e) {
113
+ // 用户定义的处理函数
114
+ },
115
+ onScroll('day')(e) {
116
+ // 用户定义的处理函数
117
+ },
118
+ onScroll('hour')(e) {
119
+ // 用户定义的处理函数
120
+ },
121
+ onScroll('minute')(e) {
122
+ // 用户定义的处理函数
123
+ },
124
+ __bind_value(e) {
125
+ this.setData({ value: e.detail.value });
126
+ this.triggerEvent('update:value', e.detail.value);
127
+ },
128
+ __bind_visible(e) {
129
+ this.setData({ visible: e.detail.value });
130
+ this.triggerEvent('update:visible', e.detail.value);
131
+ },
132
+ },
133
+
134
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,77 @@
1
+ <view class="ln-date-time-picker" class="{{disabled? 'is-disabled' : ''}}">
2
+ <block wx:if="{{children}}">
3
+ <slot />
4
+ {{/if}} </block>
5
+ </view>
6
+ <block wx:if="{{visible}}">
7
+ <view class="ln-overlay" role="presentation" bindtap="close">
8
+ </view>
9
+ <view class="ln-date-time-picker__panel">
10
+ <view class="ln-date-time-picker__toolbar">
11
+ <button type="button" class="ln-date-time-picker__cancel" bindtap="close">
12
+ 取消 </button>
13
+ <text class="ln-date-time-picker__title">
14
+ {{mode === 'year-month' ? '选择年月' : mode === 'datetime' ? '选择日期时间' : '选择日期'}} </text>
15
+ <button type="button" class="ln-date-time-picker__ok" bindtap="confirm">
16
+ 确定 </button>
17
+ </view>
18
+ <view class="ln-date-time-picker__columns">
19
+ <view class="ln-date-time-picker__col" this="{{yearEl}}" bindchange="__bind_yearEl" bindscroll="__handler_1">
20
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
21
+ </view>
22
+ <block wx:for="{{years}}" wx:for-item="y">
23
+ <view class="ln-date-time-picker__item" class="{{year === y? 'is-active' : ''}}">
24
+ {{y}}年 </view>
25
+ </block>
26
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
27
+ </view>
28
+ </view>
29
+ <view class="ln-date-time-picker__col" this="{{monthEl}}" bindchange="__bind_monthEl" bindscroll="__handler_2">
30
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
31
+ </view>
32
+ <block wx:for="{{months}}" wx:for-item="m">
33
+ <view class="ln-date-time-picker__item" class="{{month === m? 'is-active' : ''}}">
34
+ {{pad2(m)}}月 </view>
35
+ </block>
36
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
37
+ </view>
38
+ </view>
39
+ <block wx:if="{{mode !== 'year-month'}}">
40
+ <view class="ln-date-time-picker__col" this="{{dayEl}}" bindchange="__bind_dayEl" bindscroll="__handler_3">
41
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
42
+ </view>
43
+ <block wx:for="{{dayList}}" wx:for-item="d">
44
+ <view class="ln-date-time-picker__item" class="{{day === d? 'is-active' : ''}}">
45
+ {{pad2(d)}}日 </view>
46
+ </block>
47
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
48
+ </view>
49
+ </view>
50
+ {{/if}} <block wx:if="{{mode === 'datetime'}}">
51
+ <view class="ln-date-time-picker__col" this="{{hourEl}}" bindchange="__bind_hourEl" bindscroll="__handler_4">
52
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
53
+ </view>
54
+ <block wx:for="{{hourList}}" wx:for-item="h">
55
+ <view class="ln-date-time-picker__item" class="{{hour === h? 'is-active' : ''}}">
56
+ {{pad2(h)}}时 </view>
57
+ </block>
58
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
59
+ </view>
60
+ </view>
61
+ <view class="ln-date-time-picker__col" this="{{minuteEl}}" bindchange="__bind_minuteEl" bindscroll="__handler_5">
62
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
63
+ </view>
64
+ <block wx:for="{{minuteList}}" wx:for-item="m">
65
+ <view class="ln-date-time-picker__item" class="{{minute === m? 'is-active' : ''}}">
66
+ {{pad2(m)}}分 </view>
67
+ </block>
68
+ <view class="ln-date-time-picker__pad" style="height:{PAD_H}px">
69
+ </view>
70
+ </view>
71
+ {{/if}} <view class="ln-date-time-picker__mask">
72
+ </view>
73
+ </block>
74
+ </block>
75
+ </view>
76
+ </view>
77
+ {{/if}}</block>
@@ -0,0 +1 @@
1
+ .ln-date-time-picker.is-disabled{opacity:.5;pointer-events:none}.ln-date-time-picker__panel{position:fixed;bottom:0;left:0;right:0;z-index:2001;background:#fff;border-radius:32rpx 32rpx 0 0;padding-bottom:env(safe-area-inset-bottom)}.ln-date-time-picker__toolbar{display:flex;align-items:center;justify-content:space-between;padding:16rpx 32rpx;border-bottom:none}.ln-date-time-picker__title{font-size:32rpx;font-weight:500;color:#303133}.ln-date-time-picker__cancel{border:none;background:none;font-size:28rpx;color:#909399;cursor:pointer;padding:8rpx 16rpx}.ln-date-time-picker__ok{border:none;background:none;font-size:28rpx;color:#0062ff;font-weight:500;cursor:pointer;padding:8rpx 16rpx}.ln-date-time-picker__columns{position:relative;display:flex;height:440rpx;overflow:hidden}.ln-date-time-picker__col{flex:1;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.ln-date-time-picker__col::-webkit-scrollbar{display:none}.ln-date-time-picker__col{scrollbar-width:none}.ln-date-time-picker__item{display:flex;align-items:center;justify-content:center;height:88rpx;font-size:32rpx;color:#909399;transition:color .15s;user-select:none}.ln-date-time-picker__item.is-active{color:#303133;font-weight:500}.ln-date-time-picker__pad{flex-shrink:0}.ln-date-time-picker__mask{position:absolute;left:0;right:0;top:50%;height:88rpx;transform:translateY(-50%);border-top:.10rpx solid #e4e7ed;border-bottom:.10rpx solid #e4e7ed;pointer-events:none}.dark .ln-date-time-picker .ln-date-time-picker__panel{background:#1d1e1f}.dark .ln-date-time-picker .ln-date-time-picker__title{color:#e5eaf3}.dark .ln-date-time-picker .ln-date-time-picker__cancel{color:#a3a6ad}.dark .ln-date-time-picker .ln-date-time-picker__item{color:#a3a6ad}.dark .ln-date-time-picker .ln-date-time-picker__item.is-active{color:#e5eaf3}.dark .ln-date-time-picker .ln-date-time-picker__mask{border-color:#4a4a4c}.dark .ln-date-time-picker__panel{background:#1d1e1f}.dark .ln-date-time-picker__title{color:#e5eaf3}.dark .ln-date-time-picker__cancel{color:#a3a6ad}.dark .ln-date-time-picker__item{color:#a3a6ad}.dark .ln-date-time-picker__item.is-active{color:#e5eaf3}.dark .ln-date-time-picker__mask{border-color:#4a4a4c}