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,93 @@
1
+ // import from 'svelte/transition'
2
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
3
+
4
+ Component({
5
+ properties: {
6
+ steps: {
7
+ type: Array,
8
+ value: [],
9
+ },
10
+ visible: {
11
+ type: Boolean,
12
+ value: false,
13
+ },
14
+ current: {
15
+ type: Number,
16
+ value: 0,
17
+ },
18
+ onchange: {
19
+ type: null,
20
+ },
21
+ onfinish: {
22
+ type: null,
23
+ },
24
+ onclose: {
25
+ type: null,
26
+ },
27
+ },
28
+
29
+ data: {
30
+ targetRect: { top: 0, left: 0, width: 0, height: 0 },
31
+ placement: undefined,
32
+ popoverTop: undefined,
33
+ },
34
+
35
+ observers: {
36
+ 'current, placement, steps': function() {
37
+ this.setData({ placement: steps[current]?.placement ?? 'bottom' });
38
+ },
39
+ 'targetRect, placement': function() {
40
+ this.setData({ popoverTop: (() => {
41
+ const POPOVER_H = 140;
42
+ const preferred = placement === 'top'
43
+ ? targetRect.top - GAP - POPOVER_H
44
+ : targetRect.top + targetRect.height + GAP;
45
+ return Math.min(preferred, window.innerHeight - POPOVER_H - 16);
46
+ })() });
47
+ },
48
+ },
49
+
50
+ lifetimes: {
51
+ attached() {
52
+ const self = this;
53
+ // $bindable: visible
54
+ this.__bind_visible = function(e) {
55
+ self.setData({ visible: e.detail.value });
56
+ self.triggerEvent('update:visible', e.detail.value);
57
+ };
58
+ // $bindable: current
59
+ this.__bind_current = function(e) {
60
+ self.setData({ current: e.detail.value });
61
+ self.triggerEvent('update:current', e.detail.value);
62
+ };
63
+ // $effect #1
64
+ if (visible) updateRect();;
65
+ // $effect #2
66
+ current; if (visible) updateRect();;
67
+ },
68
+ },
69
+
70
+ methods: {
71
+ __handler_click(e) {
72
+ (() => { current--; onchange?.(current); }).call(this, e);
73
+ },
74
+ __handler_click(e) {
75
+ (() => {
76
+ if (isLast) { visible = false; onfinish?.(); }
77
+ else { current++; onchange?.(current); }
78
+ }).call(this, e);
79
+ },
80
+ __handler_click(e) {
81
+ (() => { visible = false; onclose?.(); }).call(this, e);
82
+ },
83
+ __bind_visible(e) {
84
+ this.setData({ visible: e.detail.value });
85
+ this.triggerEvent('update:visible', e.detail.value);
86
+ },
87
+ __bind_current(e) {
88
+ this.setData({ current: e.detail.value });
89
+ this.triggerEvent('update:current', e.detail.value);
90
+ },
91
+ },
92
+
93
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,28 @@
1
+ <block wx:if="{{visible && steps[current]}}">
2
+ {{@const step = steps[current]}}{{@const isLast = current === steps.length - 1}} <view class="ln-guide">
3
+ <view class="ln-guide__highlight" style="top:{targetRect.top - 4}px;left:{targetRect.left - 4}px;width:{targetRect.width + 8}px;height:{targetRect.height + 8}px">
4
+ </view>
5
+ <view class="ln-guide__popover ln-guide__popover--{placement}" style="top:{popoverTop}px;left:{Math.max(16, Math.min(targetRect.left, window.innerWidth - 280))}px">
6
+ <block wx:if="{{step.title}}">
7
+ <view class="ln-guide__title">
8
+ {{step.title}} </view>
9
+ {{/if}} <view class="ln-guide__content">
10
+ {{step.content}} </view>
11
+ <view class="ln-guide__footer">
12
+ <text class="ln-guide__progress">
13
+ {{current + 1}}/{{steps.length}} </text>
14
+ <view class="ln-guide__actions">
15
+ <block wx:if="{{current > 0}}">
16
+ <button type="button" class="ln-guide__btn" bindtap="__handler_1">
17
+ 上一步 </button>
18
+ {{/if}} <button type="button" class="ln-guide__btn ln-guide__btn--primary" bindtap="__handler_2">
19
+ {{isLast ? '完成' : '下一步'}} </button>
20
+ </block>
21
+ </view>
22
+ </view>
23
+ </block>
24
+ </view>
25
+ <button type="button" class="ln-guide__skip" bindtap="__handler_3">
26
+ 跳过 </button>
27
+ </view>
28
+ {{/if}}</block>
@@ -0,0 +1 @@
1
+ .ln-guide{position:fixed;inset:0;z-index:2011}.ln-guide__highlight{position:fixed;border-radius:12rpx;box-shadow:0 0 0 8000rpx rgba(0,0,0,.5);z-index:1;pointer-events:none}.ln-guide__popover{position:fixed;z-index:2;background:#fff;border-radius:16rpx;padding:32rpx;width:520rpx;max-width:calc(100vw - 64rpx);box-shadow:0 4rpx 8rpx rgba(0,0,0,.12),0 0 12rpx rgba(0,0,0,.04)}.ln-guide__popover--top{transform:translateY(-100%)}.ln-guide__title{font-size:32rpx;font-weight:500;color:#303133;margin-bottom:8rpx}.ln-guide__content{font-size:28rpx;color:#606266;line-height:1.5}.ln-guide__footer{display:flex;align-items:center;justify-content:space-between;margin-top:32rpx}.ln-guide__progress{font-size:24rpx;color:#909399}.ln-guide__actions{display:flex;gap:16rpx}.ln-guide__btn{padding:12rpx 28rpx;border:1px solid #dcdfe6;background:#fff;border-radius:12rpx;font-size:26rpx;color:#303133;cursor:pointer}.ln-guide__btn--primary{background:#0062ff;border-color:#0062ff;color:#fff}.ln-guide__skip{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 48rpx);left:50%;transform:translateX(-50%);z-index:2;border:none;background:hsla(0,0%,100%,.2);color:#fff;font-size:28rpx;padding:16rpx 48rpx;border-radius:40rpx;cursor:pointer}.dark .ln-guide .ln-guide__popover{background:#1d1e1f;box-shadow:0 4rpx 24rpx rgba(0,0,0,.3)}.dark .ln-guide .ln-guide__title{color:#e5eaf3}.dark .ln-guide .ln-guide__content{color:#cfd3dc}.dark .ln-guide .ln-guide__progress{color:#a3a6ad}.dark .ln-guide .ln-guide__btn{background:#2c2d2e;border-color:hsla(0,0%,100%,.08);color:#e5eaf3}.dark .ln-guide .ln-guide__btn--primary{background:#0062ff;border-color:#0062ff;color:#fff}.dark .ln-guide .ln-guide__skip{background:hsla(0,0%,100%,.15)}
@@ -0,0 +1,17 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ height: {
6
+ type: null,
7
+ },
8
+ class: className: {
9
+ type: null,
10
+ value: '',
11
+ },
12
+ children: {
13
+ type: null,
14
+ },
15
+ },
16
+
17
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,5 @@
1
+ <view class="ln-header {className}" style="height: {{height}}">
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,42 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ text: {
6
+ type: String,
7
+ value: '',
8
+ },
9
+ keywords: {
10
+ type: String,
11
+ value: '',
12
+ },
13
+ highlightColor: {
14
+ type: String,
15
+ value: '',
16
+ },
17
+ },
18
+
19
+ data: {
20
+ parts: undefined,
21
+ },
22
+
23
+ observers: {
24
+ 'keywords, text': function() {
25
+ this.setData({ parts: const kws = Array.isArray(keywords) ? keywords : [keywords];
26
+ const valid = kws.filter(Boolean);
27
+ if (!valid.length || !text) return [{ text, highlight: false }];
28
+ const escaped = valid.map(k => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
29
+ const re = new RegExp(`(${escaped.join('|')})`, 'gi');
30
+ const result: { text: string; highlight: boolean }[] = [];
31
+ let last = 0;
32
+ for (const m of text.matchAll(re)) {
33
+ if (m.index! > last) result.push({ text: text.slice(last, m.index!), highlight: false });
34
+ result.push({ text: m[0], highlight: true });
35
+ last = m.index! + m[0].length;
36
+ }
37
+ if (last < text.length) result.push({ text: text.slice(last), highlight: false });
38
+ return result; });
39
+ },
40
+ },
41
+
42
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,10 @@
1
+ <text class="ln-highlight">
2
+ <block wx:for="{{parts}}" wx:for-item="p">
3
+ <block wx:if="{{p.highlight}}">
4
+ <text class="ln-highlight__tag" style="{{highlightColor ? `color:${highlightColor}` : ''}}">
5
+ {{p.text}} </text>
6
+ </block>
7
+ <block wx:else>
8
+ {{p.text}} </block>
9
+ </block>
10
+ </text>
@@ -0,0 +1 @@
1
+ .ln-highlight{display:inline;color:#303133}.ln-highlight__tag{display:inline;color:#0062ff}.dark .ln-highlight{color:#e5eaf3}.dark .ln-highlight .ln-highlight__tag{color:#66a0ff}
@@ -0,0 +1,26 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ icon: {
6
+ type: null,
7
+ },
8
+ size: {
9
+ type: Number,
10
+ value: 24,
11
+ },
12
+ color: {
13
+ type: String,
14
+ value: 'currentColor',
15
+ },
16
+ strokeWidth: {
17
+ type: Number,
18
+ value: 2,
19
+ },
20
+ class: className: {
21
+ type: null,
22
+ value: '',
23
+ },
24
+ },
25
+
26
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,5 @@
1
+ <svg class="ln-icon {className}" xmlns="http://www.w3.org/2000/svg" width="{{size}}" height="{{size}}" viewBox="0 0 24 24" fill="none" stroke="{{color}}" stroke-width="{{strokeWidth}}" stroke-linecap="round" stroke-linejoin="round" role="img">
2
+ <block wx:for="{{icon}}" wx:for-item="[tag" wx:for-index="attrs]">
3
+ <svelte:element this="{{tag}}" />
4
+ </block>
5
+ </svg>
@@ -0,0 +1 @@
1
+ .ln-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.dark .ln-icon{color:#e5eaf3}
@@ -0,0 +1,51 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ src: {
6
+ type: null,
7
+ },
8
+ alt: {
9
+ type: String,
10
+ value: '',
11
+ },
12
+ width: {
13
+ type: String,
14
+ value: '100%',
15
+ },
16
+ height: {
17
+ type: null,
18
+ },
19
+ round: {
20
+ type: Boolean,
21
+ value: false,
22
+ },
23
+ circle: {
24
+ type: Boolean,
25
+ value: false,
26
+ },
27
+ lazy: {
28
+ type: Boolean,
29
+ value: false,
30
+ },
31
+ fit: {
32
+ type: String,
33
+ value: 'cover',
34
+ },
35
+ },
36
+
37
+ data: {
38
+ loaded: false,
39
+ error: false,
40
+ },
41
+
42
+ methods: {
43
+ __handler_load(e) {
44
+ (() => loaded = true).call(this, e);
45
+ },
46
+ __handler_error(e) {
47
+ (() => error = true).call(this, e);
48
+ },
49
+ },
50
+
51
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated"
4
+ }
@@ -0,0 +1,13 @@
1
+ <view class="ln-image" class="{{round? 'is-round' : ''}}" class="{{circle? 'is-circle' : ''}}" style="width: {{width}}" style="height: {{height}}">
2
+ <block wx:if="{{!error}}">
3
+ <image class="ln-image__inner" src="{{src}}" alt="{{alt}}" loading="{{lazy ? 'lazy' : 'eager'}}" style="object-fit: {{fit}}" bindload="__handler_1" binderror="__handler_2" />
4
+ </block>
5
+ <block wx:else>
6
+ <view class="ln-image__error">
7
+ 加载失败 </view>
8
+ </block>
9
+ <block wx:if="{{!loaded && !error}}">
10
+ <view class="ln-image__placeholder">
11
+ 加载中 </view>
12
+ {{/if}} </block>
13
+ </view>
@@ -0,0 +1 @@
1
+ .ln-image{position:relative;display:inline-block;overflow:hidden}.ln-image__inner{width:100%;height:100%;object-fit:cover;display:block}.ln-image__placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#f5f7fa;color:#a8abb2;font-size:26rpx}.ln-image__error{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#f5f7fa;color:#a8abb2;font-size:26rpx}.ln-image.is-round{border-radius:16rpx}.ln-image.is-circle{border-radius:50%}.dark .ln-image .ln-image__placeholder,.dark .ln-image .ln-image__error{background-color:#2c2d2e;color:#6b6f76}
@@ -0,0 +1,121 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ value: {
6
+ type: String,
7
+ value: '',
8
+ },
9
+ type: {
10
+ type: String,
11
+ value: 'text',
12
+ },
13
+ placeholder: {
14
+ type: String,
15
+ value: '',
16
+ },
17
+ label: {
18
+ type: null,
19
+ },
20
+ maxlength: {
21
+ type: null,
22
+ },
23
+ clearable: {
24
+ type: Boolean,
25
+ value: false,
26
+ },
27
+ disabled: {
28
+ type: Boolean,
29
+ value: false,
30
+ },
31
+ size: {
32
+ type: String,
33
+ value: 'default',
34
+ },
35
+ showPasswordToggle: {
36
+ type: Boolean,
37
+ value: false,
38
+ },
39
+ showStrength: {
40
+ type: Boolean,
41
+ value: false,
42
+ },
43
+ oninput: {
44
+ type: null,
45
+ },
46
+ onchange: {
47
+ type: null,
48
+ },
49
+ onclear: {
50
+ type: null,
51
+ },
52
+ },
53
+
54
+ data: {
55
+ focused: false,
56
+ pwdVisible: false,
57
+ isPassword: undefined,
58
+ inputType: undefined,
59
+ strength: undefined,
60
+ strengthLabel: undefined,
61
+ },
62
+
63
+ observers: {
64
+ 'type': function() {
65
+ this.setData({ isPassword: type === 'password' });
66
+ },
67
+ 'isPassword, pwdVisible, type': function() {
68
+ this.setData({ inputType: isPassword && pwdVisible ? 'text' : type });
69
+ },
70
+ 'isPassword, value, showStrength': function() {
71
+ this.setData({ strength: if (!isPassword || !showStrength || !value) return 0;
72
+ let s = 0;
73
+ if (value.length >= 6) s++;
74
+ if (value.length >= 10) s++;
75
+ if (/[A-Z]/.test(value) && /[a-z]/.test(value)) s++;
76
+ if (/\d/.test(value)) s++;
77
+ if (/[^A-Za-z0-9]/.test(value)) s++;
78
+ return s <= 1 ? 1 : s <= 3 ? 2 : 3; });
79
+ },
80
+ 'strength': function() {
81
+ this.setData({ strengthLabel: ['', '弱', '中', '强'][strength] });
82
+ },
83
+ },
84
+
85
+ lifetimes: {
86
+ attached() {
87
+ const self = this;
88
+ // $bindable: value
89
+ this.__bind_value = function(e) {
90
+ self.setData({ value: e.detail.value });
91
+ self.triggerEvent('update:value', e.detail.value);
92
+ };
93
+ },
94
+ },
95
+
96
+ methods: {
97
+ __handler_focus(e) {
98
+ (() => focused = true).call(this, e);
99
+ },
100
+ __handler_blur(e) {
101
+ (() => focused = false).call(this, e);
102
+ },
103
+ oninput(e) {
104
+ // 用户定义的处理函数
105
+ },
106
+ onchange(e) {
107
+ // 用户定义的处理函数
108
+ },
109
+ handleClear(e) {
110
+ // 用户定义的处理函数
111
+ },
112
+ __handler_click(e) {
113
+ (() => pwdVisible = !pwdVisible).call(this, e);
114
+ },
115
+ __bind_value(e) {
116
+ this.setData({ value: e.detail.value });
117
+ this.triggerEvent('update:value', e.detail.value);
118
+ },
119
+ },
120
+
121
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated",
4
+ "usingComponents": {
5
+ "icon": "../icon/index"
6
+ }
7
+ }
@@ -0,0 +1,35 @@
1
+ <view class="ln-input" class="{{size === 'large'? 'ln-input--large' : ''}}" class="{{size === 'small'? 'ln-input--small' : ''}}" class="{{focused? 'is-focus' : ''}}" class="{{disabled? 'is-disabled' : ''}}">
2
+ <block wx:if="{{label}}">
3
+ <text class="ln-input__label">
4
+ {{label}} </text>
5
+ {{/if}} <input class="ln-input__inner" type="{{inputType}}" placeholder="{{placeholder}}" disabled="{{disabled}}" maxlength="{{maxlength}}" bindfocus="__handler_1" bindblur="__handler_2" bindinput="oninput" bindchange="onchange" />
6
+ <block wx:if="{{clearable && value && !isPassword}}">
7
+ <button type="button" class="ln-input__clear" bindtap="handleClear">
8
+ <icon icon="{{X}}" size="{{14}}" />
9
+ </button>
10
+ {{/if}} <block wx:if="{{isPassword && showPasswordToggle}}">
11
+ <button type="button" class="ln-input__eye" tabindex="-1" bindtap="__handler_3">
12
+ <icon icon="{{pwdVisible ? EyeOff : Eye}}" size="{{16}}" />
13
+ </button>
14
+ {{/if}} <block wx:if="{{maxlength}}">
15
+ <text class="ln-input__count">
16
+ {{value.length}}/{{maxlength}} </text>
17
+ {{/if}} </block>
18
+ </block>
19
+ </block>
20
+ </block>
21
+ </view>
22
+ <block wx:if="{{isPassword && showStrength && value}}">
23
+ <view class="ln-input__strength">
24
+ <view class="ln-input__strength-bar" class="{{strength >= 1? 'is-weak' : ''}}" class="{{strength >= 2? 'is-medium' : ''}}" class="{{strength >= 3? 'is-strong' : ''}}">
25
+ <text>
26
+ </text>
27
+ <text>
28
+ </text>
29
+ <text>
30
+ </text>
31
+ </view>
32
+ <text class="ln-input__strength-text">
33
+ {{strengthLabel}} </text>
34
+ </view>
35
+ {{/if}}</block>
@@ -0,0 +1 @@
1
+ .ln-input{position:relative;display:inline-flex;align-items:center;width:100%;height:80rpx;padding:0 24rpx;font-size:28rpx;background-color:#fff;border:1px solid #dcdfe6;border-radius:12rpx;transition:border-color .2s;box-sizing:border-box}.ln-input__inner{flex:1;width:100%;height:100%;border:none;outline:none;background:rgba(0,0,0,0);color:#303133;font-size:inherit;font-family:inherit;padding:0}.ln-input__inner::placeholder{color:#a8abb2}.ln-input__label{flex-shrink:0;margin-right:16rpx;font-size:28rpx;color:#303133}.ln-input__clear{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:40rpx;height:40rpx;color:#a8abb2;cursor:pointer;padding:0;border:none;background:none}.ln-input__count{flex-shrink:0;margin-left:8rpx;font-size:24rpx;color:#909399}.ln-input.is-focus{border-color:#0062ff}.ln-input.is-disabled{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed;opacity:.5}.ln-input--large{height:96rpx;font-size:32rpx}.ln-input--small{height:64rpx;font-size:26rpx}.dark .ln-input{background-color:#1d1e1f;border-color:hsla(0,0%,100%,.08)}.dark .ln-input .ln-input__inner{color:#e5eaf3}.dark .ln-input .ln-input__inner::placeholder{color:#6b6f76}.dark .ln-input .ln-input__label{color:#e5eaf3}.dark .ln-input .ln-input__clear{color:#6b6f76}.dark .ln-input .ln-input__count{color:#a3a6ad}.dark .ln-input.is-focus{border-color:#0062ff}.dark .ln-input.is-disabled{background-color:#141415}
@@ -0,0 +1,71 @@
1
+ const { createReactiveProxy, batchSetData } = require('../common/runtime');
2
+
3
+ Component({
4
+ properties: {
5
+ value: {
6
+ type: Number,
7
+ value: 0,
8
+ },
9
+ min: {
10
+ type: Number,
11
+ value: 0,
12
+ },
13
+ max: {
14
+ type: Number,
15
+ value: Infinity,
16
+ },
17
+ step: {
18
+ type: Number,
19
+ value: 1,
20
+ },
21
+ disabled: {
22
+ type: Boolean,
23
+ value: false,
24
+ },
25
+ onchange: {
26
+ type: null,
27
+ },
28
+ },
29
+
30
+ data: {
31
+ canDecrease: undefined,
32
+ canIncrease: undefined,
33
+ },
34
+
35
+ observers: {
36
+ 'value, disabled, min': function() {
37
+ this.setData({ canDecrease: !disabled && value > min });
38
+ },
39
+ 'value, disabled, max': function() {
40
+ this.setData({ canIncrease: !disabled && value < max });
41
+ },
42
+ },
43
+
44
+ lifetimes: {
45
+ attached() {
46
+ const self = this;
47
+ // $bindable: value
48
+ this.__bind_value = function(e) {
49
+ self.setData({ value: e.detail.value });
50
+ self.triggerEvent('update:value', e.detail.value);
51
+ };
52
+ },
53
+ },
54
+
55
+ methods: {
56
+ decrease(e) {
57
+ // 用户定义的处理函数
58
+ },
59
+ onInput(e) {
60
+ // 用户定义的处理函数
61
+ },
62
+ increase(e) {
63
+ // 用户定义的处理函数
64
+ },
65
+ __bind_value(e) {
66
+ this.setData({ value: e.detail.value });
67
+ this.triggerEvent('update:value', e.detail.value);
68
+ },
69
+ },
70
+
71
+ });
@@ -0,0 +1,7 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "isolated",
4
+ "usingComponents": {
5
+ "icon": "../icon/index"
6
+ }
7
+ }
@@ -0,0 +1,9 @@
1
+ <view class="ln-input-number" class="{{disabled? 'is-disabled' : ''}}">
2
+ <button class="ln-input-number__btn" type="button" aria-label="减少" class="{{!canDecrease? 'is-disabled' : ''}}" bindtap="decrease">
3
+ <icon icon="{{Minus}}" size="{{14}}" />
4
+ </button>
5
+ <input class="ln-input-number__input" type="number" value="{{value}}" disabled="{{disabled}}" bindinput="onInput" />
6
+ <button class="ln-input-number__btn" type="button" aria-label="增加" class="{{!canIncrease? 'is-disabled' : ''}}" bindtap="increase">
7
+ <icon icon="{{Plus}}" size="{{14}}" />
8
+ </button>
9
+ </view>
@@ -0,0 +1 @@
1
+ .ln-input-number{display:inline-flex;align-items:stretch;border:1px solid #e4e7ed;border-radius:16rpx;overflow:hidden;background:#fff}.ln-input-number__btn{display:inline-flex;align-items:center;justify-content:center;width:64rpx;padding:0;border:none;background-color:#f2f3f5;color:#909399;cursor:pointer;flex-shrink:0}.ln-input-number__btn:first-child{border-right:1px solid #e4e7ed}.ln-input-number__btn:last-child{border-left:1px solid #e4e7ed}.ln-input-number__btn:active{color:#0062ff}.ln-input-number__btn.is-disabled{color:#c0c4cc;cursor:not-allowed}.ln-input-number__btn.is-disabled:active{color:#c0c4cc}.ln-input-number__input{width:96rpx;height:64rpx;text-align:center;border:none;outline:none;font-size:28rpx;color:#303133;background:rgba(0,0,0,0);-moz-appearance:textfield}.ln-input-number__input::-webkit-inner-spin-button,.ln-input-number__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ln-input-number.is-disabled{opacity:.5}.dark .ln-input-number{border-color:hsla(0,0%,100%,.08);background:#1d1e1f}.dark .ln-input-number .ln-input-number__btn{background-color:#2c2d2e;color:#a3a6ad;border-color:hsla(0,0%,100%,.08)}.dark .ln-input-number .ln-input-number__btn:active{color:#0062ff}.dark .ln-input-number .ln-input-number__btn.is-disabled{color:#6b6f76}.dark .ln-input-number .ln-input-number__input{color:#e5eaf3}