persagy-vant 0.0.37 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/es/area/style/index.mjs +2 -0
  2. package/es/area/style/less.mjs +2 -0
  3. package/es/cell/index.d.ts +1 -1
  4. package/es/icon/Icon.mjs +7 -4
  5. package/es/icon/assets/copy.svg +4 -0
  6. package/es/icon/config.d.ts +1 -0
  7. package/es/icon/config.mjs +1 -0
  8. package/es/icon/gif.d.ts +6 -0
  9. package/es/icon/gif.mjs +9 -0
  10. package/es/icon/index.css +1 -1
  11. package/es/icon/index.d.ts +2 -0
  12. package/es/icon/index.mjs +4 -1
  13. package/es/icon/latest-iconfont.css +1 -1
  14. package/es/icon/latest-iconfont.less +11 -0
  15. package/es/index.d.ts +1 -1
  16. package/es/index.mjs +1 -1
  17. package/es/info-card/InfoCard.d.ts +31 -0
  18. package/es/info-card/InfoCard.mjs +45 -3
  19. package/es/info-card/index.css +1 -1
  20. package/es/info-card/index.d.ts +22 -1
  21. package/es/info-card/index.less +57 -0
  22. package/es/info-card/var.less +1 -1
  23. package/es/label/Label.d.ts +21 -0
  24. package/es/label/Label.mjs +12 -2
  25. package/es/label/index.css +1 -1
  26. package/es/label/index.d.ts +15 -0
  27. package/es/label/index.less +27 -0
  28. package/es/label/var.less +1 -0
  29. package/es/list/style/index.mjs +2 -0
  30. package/es/list/style/less.mjs +2 -0
  31. package/es/loading/Loading.mjs +8 -26
  32. package/es/loading/style/index.mjs +2 -0
  33. package/es/loading/style/less.mjs +2 -0
  34. package/es/material-action-bar/index.css +1 -1
  35. package/es/material-action-bar/index.less +3 -1
  36. package/es/material-add/MaterialAdd.mjs +158 -63
  37. package/es/material-add/index.css +1 -1
  38. package/es/material-add/index.d.ts +1 -1
  39. package/es/material-add/index.less +0 -14
  40. package/es/material-add/types.d.ts +7 -4
  41. package/es/material-detail/MaterialDetail.mjs +14 -9
  42. package/es/material-display-bar/index.css +1 -1
  43. package/es/material-display-bar/index.less +2 -1
  44. package/es/material-display-bar/var.less +1 -0
  45. package/es/number-keyboard/style/index.mjs +2 -0
  46. package/es/number-keyboard/style/less.mjs +2 -0
  47. package/es/picker/style/index.mjs +2 -0
  48. package/es/picker/style/less.mjs +2 -0
  49. package/es/progress/Progress.d.ts +17 -0
  50. package/es/progress/Progress.mjs +14 -9
  51. package/es/progress/index.css +1 -1
  52. package/es/progress/index.d.ts +12 -1
  53. package/es/progress/index.less +24 -14
  54. package/es/progress/types.d.ts +1 -0
  55. package/es/progress/var.less +10 -7
  56. package/es/pull-refresh/style/index.mjs +2 -0
  57. package/es/pull-refresh/style/less.mjs +2 -0
  58. package/es/switch/style/index.mjs +2 -0
  59. package/es/switch/style/less.mjs +2 -0
  60. package/es/tree-select/TreeSelect.mjs +9 -4
  61. package/es/tree-select/index.css +1 -1
  62. package/es/tree-select/index.less +29 -1
  63. package/es/work-order-card/WorkOrderCard.mjs +52 -11
  64. package/es/work-order-card/index.css +1 -1
  65. package/es/work-order-card/index.less +3 -4
  66. package/es/work-order-card/style/index.mjs +2 -0
  67. package/es/work-order-card/style/less.mjs +2 -0
  68. package/es/work-order-card/types.d.ts +14 -1
  69. package/lib/area/style/index.js +2 -0
  70. package/lib/area/style/less.js +2 -0
  71. package/lib/cell/index.d.ts +1 -1
  72. package/lib/icon/Icon.js +7 -4
  73. package/lib/icon/assets/copy.svg +4 -0
  74. package/lib/icon/config.d.ts +1 -0
  75. package/lib/icon/config.js +1 -0
  76. package/lib/icon/gif.d.ts +6 -0
  77. package/lib/icon/gif.js +28 -0
  78. package/lib/icon/index.css +1 -1
  79. package/lib/icon/index.d.ts +2 -0
  80. package/lib/icon/index.js +4 -1
  81. package/lib/icon/latest-iconfont.css +1 -1
  82. package/lib/icon/latest-iconfont.less +11 -0
  83. package/lib/index.css +1 -1
  84. package/lib/index.d.ts +1 -1
  85. package/lib/index.js +1 -1
  86. package/lib/info-card/InfoCard.d.ts +31 -0
  87. package/lib/info-card/InfoCard.js +45 -3
  88. package/lib/info-card/index.css +1 -1
  89. package/lib/info-card/index.d.ts +22 -1
  90. package/lib/info-card/index.less +57 -0
  91. package/lib/info-card/var.less +1 -1
  92. package/lib/label/Label.d.ts +21 -0
  93. package/lib/label/Label.js +12 -2
  94. package/lib/label/index.css +1 -1
  95. package/lib/label/index.d.ts +15 -0
  96. package/lib/label/index.less +27 -0
  97. package/lib/label/var.less +1 -0
  98. package/lib/list/style/index.js +2 -0
  99. package/lib/list/style/less.js +2 -0
  100. package/lib/loading/Loading.js +8 -26
  101. package/lib/loading/style/index.js +2 -0
  102. package/lib/loading/style/less.js +2 -0
  103. package/lib/material-action-bar/index.css +1 -1
  104. package/lib/material-action-bar/index.less +3 -1
  105. package/lib/material-add/MaterialAdd.js +158 -63
  106. package/lib/material-add/index.css +1 -1
  107. package/lib/material-add/index.d.ts +1 -1
  108. package/lib/material-add/index.less +0 -14
  109. package/lib/material-add/types.d.ts +7 -4
  110. package/lib/material-detail/MaterialDetail.js +14 -9
  111. package/lib/material-display-bar/index.css +1 -1
  112. package/lib/material-display-bar/index.less +2 -1
  113. package/lib/material-display-bar/var.less +1 -0
  114. package/lib/number-keyboard/style/index.js +2 -0
  115. package/lib/number-keyboard/style/less.js +2 -0
  116. package/lib/picker/style/index.js +2 -0
  117. package/lib/picker/style/less.js +2 -0
  118. package/lib/progress/Progress.d.ts +17 -0
  119. package/lib/progress/Progress.js +13 -8
  120. package/lib/progress/index.css +1 -1
  121. package/lib/progress/index.d.ts +12 -1
  122. package/lib/progress/index.less +24 -14
  123. package/lib/progress/types.d.ts +1 -0
  124. package/lib/progress/var.less +10 -7
  125. package/lib/pull-refresh/style/index.js +2 -0
  126. package/lib/pull-refresh/style/less.js +2 -0
  127. package/lib/switch/style/index.js +2 -0
  128. package/lib/switch/style/less.js +2 -0
  129. package/lib/tree-select/TreeSelect.js +9 -4
  130. package/lib/tree-select/index.css +1 -1
  131. package/lib/tree-select/index.less +29 -1
  132. package/lib/vant.cjs.js +308 -128
  133. package/lib/vant.es.js +308 -128
  134. package/lib/vant.js +308 -128
  135. package/lib/vant.min.js +1 -1
  136. package/lib/web-types.json +1 -1
  137. package/lib/work-order-card/WorkOrderCard.js +52 -11
  138. package/lib/work-order-card/index.css +1 -1
  139. package/lib/work-order-card/index.less +3 -4
  140. package/lib/work-order-card/style/index.js +2 -0
  141. package/lib/work-order-card/style/less.js +2 -0
  142. package/lib/work-order-card/types.d.ts +14 -1
  143. package/package.json +2 -2
  144. package/skills/use-persagy-vant/references/component-documentation.md +4 -4
  145. package/skills/use-persagy-vant/references/component-variant-selection.md +2 -2
  146. package/skills/use-persagy-vant/references/design-interaction-baseline.md +2 -1
  147. package/skills/use-persagy-vant/references/page-recipes.md +4 -0
  148. package/skills/use-persagy-vant/references/reuse-policy.md +2 -2
  149. /package/es/{loading/assets/building.gif → icon/assets/gif/loading-building.gif} +0 -0
  150. /package/lib/{loading/assets/building.gif → icon/assets/gif/loading-building.gif} +0 -0
@@ -25,6 +25,7 @@ var import_button = require("../button");
25
25
  var import_utils = require("../utils");
26
26
  var import_divider = require("../divider");
27
27
  var import_icon = require("../icon");
28
+ var import_label = require("../label");
28
29
  var import_tag = require("../tag");
29
30
  const [name, bem] = (0, import_utils.createNamespace)("work-order-card");
30
31
  const props = {
@@ -70,12 +71,39 @@ var stdin_default = (0, import_vue.defineComponent)({
70
71
  innerExpanded.value = value;
71
72
  emit("update:expanded", value);
72
73
  };
73
- const renderInfo = (info) => (0, import_vue.createVNode)("div", {
74
- "class": bem("info")
75
- }, [info.icon && (0, import_vue.createVNode)(import_icon.Icon, {
76
- "name": info.icon,
77
- "size": "12"
78
- }, null), (0, import_vue.createVNode)("span", null, [info.text])]);
74
+ const resolveInfo = (info) => {
75
+ if (info.label !== void 0 || info.content !== void 0) {
76
+ return {
77
+ label: info.label || "",
78
+ content: info.content || ""
79
+ };
80
+ }
81
+ const text = info.text || "";
82
+ const separatorIndex = text.search(/[::]/);
83
+ return separatorIndex < 0 ? {
84
+ label: "",
85
+ content: text
86
+ } : {
87
+ label: text.slice(0, separatorIndex),
88
+ content: text.slice(separatorIndex + 1)
89
+ };
90
+ };
91
+ const renderInfo = (info) => {
92
+ const {
93
+ label,
94
+ content
95
+ } = resolveInfo(info);
96
+ return (0, import_vue.createVNode)("div", {
97
+ "class": bem("info")
98
+ }, [(0, import_vue.createVNode)(import_label.Label, {
99
+ "sameColor": true,
100
+ "showLeftIcon": Boolean(info.icon),
101
+ "leftIcon": info.icon,
102
+ "showLabel": Boolean(label),
103
+ "label": label,
104
+ "content": content
105
+ }, null)]);
106
+ };
79
107
  const renderAction = (action, index) => (0, import_vue.createVNode)(import_button.Button, {
80
108
  "type": "text",
81
109
  "disabled": action.disabled,
@@ -112,16 +140,29 @@ var stdin_default = (0, import_vue.defineComponent)({
112
140
  }, null)]), (0, import_vue.createVNode)("div", {
113
141
  "class": bem("tags")
114
142
  }, [slots.tags ? slots.tags() : props2.tags.map((tag) => (0, import_vue.createVNode)(import_tag.Tag, {
143
+ "type": tag.type,
144
+ "size": tag.size,
115
145
  "color": tag.color,
116
- "textColor": tag.textColor
146
+ "textColor": tag.textColor,
147
+ "plain": tag.plain,
148
+ "round": tag.round,
149
+ "mark": tag.mark,
150
+ "rightIcon": tag.rightIcon,
151
+ "number": tag.number,
152
+ "showNumber": tag.showNumber,
153
+ "numberColor": tag.numberColor
117
154
  }, {
118
155
  default: () => [tag.text]
119
156
  }))]), props2.showLocation && props2.location && (0, import_vue.createVNode)("div", {
120
157
  "class": bem("location")
121
- }, [(0, import_vue.createVNode)(import_icon.Icon, {
122
- "name": "location-o",
123
- "size": "12"
124
- }, null), (0, import_vue.createVNode)("span", null, [props2.location])]), (0, import_vue.createVNode)("div", {
158
+ }, [(0, import_vue.createVNode)(import_label.Label, {
159
+ "sameColor": true,
160
+ "ellipsis": true,
161
+ "showLeftIcon": true,
162
+ "leftIcon": "location-o",
163
+ "showLabel": false,
164
+ "content": props2.location
165
+ }, null)]), (0, import_vue.createVNode)("div", {
125
166
  "class": bem("infos")
126
167
  }, [slots.info ? slots.info() : props2.primaryInfos.map(renderInfo)]), hasExpandedContent() && (0, import_vue.createVNode)("div", {
127
168
  "class": bem("expanded-wrapper", {
@@ -1 +1 @@
1
- :root{--van-work-order-card-padding: var(--van-padding-md);--van-work-order-card-radius: var(--van-border-radius-lg);--van-work-order-card-title-font-size: 15px;--van-work-order-card-title-color: var(--van-gray-8);--van-work-order-card-info-color: var(--van-gray-7)}.van-work-order-card{position:relative;overflow:hidden;background:var(--van-white);border-radius:var(--van-work-order-card-radius)}.van-work-order-card__header{display:flex;align-items:flex-start;padding:var(--van-work-order-card-padding) var(--van-work-order-card-padding) 0;cursor:pointer}.van-work-order-card__title{flex:1;min-width:0;overflow:hidden;color:var(--van-work-order-card-title-color);font-size:var(--van-work-order-card-title-font-size);font-weight:var(--van-font-weight-bold);line-height:23px;text-overflow:ellipsis;white-space:nowrap}.van-work-order-card__arrow{flex:none;margin:4px 0 0 2px;color:var(--van-gray-6);transition:transform .2s}.van-work-order-card--expanded .van-work-order-card__title{overflow:visible;white-space:normal}.van-work-order-card:not(.van-work-order-card--expandable) .van-work-order-card__title{overflow:visible;white-space:normal}.van-work-order-card--expanded .van-work-order-card__arrow{color:var(--van-black);transform:rotate(180deg)}.van-work-order-card__tags{display:flex;flex-wrap:wrap;gap:4px;padding:8px var(--van-work-order-card-padding) 0}.van-work-order-card__location{display:flex;gap:4px;align-items:center;margin:8px 10px 0;padding:0 6px;overflow:hidden;color:var(--van-gray-8);font-size:13px;line-height:21px;white-space:nowrap;background:linear-gradient(90deg,rgba(223,232,243,.7),rgba(223,232,243,0));border-radius:4px}.van-work-order-card__location span{overflow:hidden;text-overflow:ellipsis}.van-work-order-card__infos{padding:8px var(--van-work-order-card-padding) 0}.van-work-order-card:not(.van-work-order-card--actions):not(.van-work-order-card--expanded-content) .van-work-order-card__infos{padding-bottom:8px}.van-work-order-card__info{display:flex;gap:4px;align-items:center;min-height:21px;color:var(--van-work-order-card-info-color);font-size:13px;line-height:21px}.van-work-order-card__expanded-wrapper{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .24s cubic-bezier(.2,.8,.2,1),opacity .18s ease}.van-work-order-card__expanded-wrapper--visible{grid-template-rows:1fr;opacity:1}.van-work-order-card__expanded-content{min-height:0;padding:0 var(--van-work-order-card-padding);overflow:hidden}.van-work-order-card:not(.van-work-order-card--actions) .van-work-order-card__expanded-content{padding-bottom:8px}.van-work-order-card__expanded-content .van-divider{margin:4px 0;border-color:var(--van-gray-4)}.van-work-order-card__overdue{position:absolute;top:0;right:0;padding:2px 8px;color:var(--van-white);font-size:10px;line-height:12px;background:var(--van-danger-color);border-radius:0 2px 0 8px}.van-work-order-card__actions{position:relative;display:flex;margin-top:8px;padding-top:1px;--van-button-default-height: 38px;--van-button-default-font-size: var(--van-font-size-md);--van-button-default-line-height: 22px;--van-button-border-radius: 0;--van-button-plain-background-color: transparent}.van-work-order-card__actions:before{position:absolute;top:0;right:var(--van-work-order-card-padding);left:var(--van-work-order-card-padding);height:.5px;background:var(--van-gray-2);content:""}.van-work-order-card__actions .van-button{flex:1}.van-work-order-card__actions .van-button+.van-button{position:relative}.van-work-order-card__actions .van-button+.van-button:after{position:absolute;top:50%;left:0;width:.5px;height:12px;background:var(--van-gray-2);transform:translateY(-50%);content:""}
1
+ :root{--van-work-order-card-padding: var(--van-padding-md);--van-work-order-card-radius: var(--van-border-radius-lg);--van-work-order-card-title-font-size: 15px;--van-work-order-card-title-color: var(--van-gray-8);--van-work-order-card-info-color: var(--van-gray-7)}.van-work-order-card{position:relative;overflow:hidden;background:var(--van-white);border-radius:var(--van-work-order-card-radius)}.van-work-order-card__header{display:flex;align-items:flex-start;padding:var(--van-work-order-card-padding) var(--van-work-order-card-padding) 0;cursor:pointer}.van-work-order-card__title{flex:1;min-width:0;overflow:hidden;color:var(--van-work-order-card-title-color);font-size:var(--van-work-order-card-title-font-size);font-weight:var(--van-font-weight-bold);line-height:23px;text-overflow:ellipsis;white-space:nowrap}.van-work-order-card__arrow{flex:none;margin:4px 0 0 2px;color:var(--van-gray-6);transition:transform .2s}.van-work-order-card--expanded .van-work-order-card__title{overflow:visible;white-space:normal}.van-work-order-card:not(.van-work-order-card--expandable) .van-work-order-card__title{overflow:visible;white-space:normal}.van-work-order-card--expanded .van-work-order-card__arrow{color:var(--van-black);transform:rotate(180deg)}.van-work-order-card__tags{display:flex;flex-wrap:wrap;gap:4px;padding:8px var(--van-work-order-card-padding) 0}.van-work-order-card__location{margin:8px 10px 0;padding:0 6px;overflow:hidden;background:linear-gradient(90deg,rgba(223,232,243,.7),rgba(223,232,243,0));border-radius:4px}.van-work-order-card__infos{display:flex;flex-direction:column;gap:2px;padding:8px var(--van-work-order-card-padding) 0}.van-work-order-card:not(.van-work-order-card--actions):not(.van-work-order-card--expanded-content) .van-work-order-card__infos{padding-bottom:8px}.van-work-order-card__info{min-width:0}.van-work-order-card__expanded-wrapper{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .24s cubic-bezier(.2,.8,.2,1),opacity .18s ease}.van-work-order-card__expanded-wrapper--visible{grid-template-rows:1fr;opacity:1}.van-work-order-card__expanded-content{min-height:0;padding:0 var(--van-work-order-card-padding);overflow:hidden}.van-work-order-card:not(.van-work-order-card--actions) .van-work-order-card__expanded-content{padding-bottom:8px}.van-work-order-card__expanded-content .van-divider{margin:4px 0;border-color:var(--van-gray-4)}.van-work-order-card__overdue{position:absolute;top:0;right:0;padding:2px 8px;color:var(--van-white);font-size:10px;line-height:12px;background:var(--van-danger-color);border-radius:0 2px 0 8px}.van-work-order-card__actions{position:relative;display:flex;margin-top:8px;padding-top:1px;--van-button-default-height: 38px;--van-button-default-font-size: var(--van-font-size-md);--van-button-default-line-height: 22px;--van-button-border-radius: 0;--van-button-plain-background-color: transparent}.van-work-order-card__actions:before{position:absolute;top:0;right:var(--van-work-order-card-padding);left:var(--van-work-order-card-padding);height:.5px;background:var(--van-gray-2);content:""}.van-work-order-card__actions .van-button{flex:1}.van-work-order-card__actions .van-button+.van-button{position:relative}.van-work-order-card__actions .van-button+.van-button:after{position:absolute;top:50%;left:0;width:.5px;height:12px;background:var(--van-gray-2);transform:translateY(-50%);content:""}
@@ -16,11 +16,10 @@
16
16
  .van-work-order-card:not(.van-work-order-card--expandable) .van-work-order-card__title { overflow: visible; white-space: normal; }
17
17
  .van-work-order-card--expanded .van-work-order-card__arrow { color: var(--van-black); transform: rotate(180deg); }
18
18
  .van-work-order-card__tags { display: flex; flex-wrap: wrap; gap: 4px; padding: 8px var(--van-work-order-card-padding) 0; }
19
- .van-work-order-card__location { display: flex; gap: 4px; align-items: center; margin: 8px 10px 0; padding: 0 6px; overflow: hidden; color: var(--van-gray-8); font-size: 13px; line-height: 21px; white-space: nowrap; background: linear-gradient(90deg, rgb(223 232 243 / 70%), rgb(223 232 243 / 0%)); border-radius: 4px; }
20
- .van-work-order-card__location span { overflow: hidden; text-overflow: ellipsis; }
21
- .van-work-order-card__infos { padding: 8px var(--van-work-order-card-padding) 0; }
19
+ .van-work-order-card__location { margin: 8px 10px 0; padding: 0 6px; overflow: hidden; background: linear-gradient(90deg, rgb(223 232 243 / 70%), rgb(223 232 243 / 0%)); border-radius: 4px; }
20
+ .van-work-order-card__infos { display: flex; flex-direction: column; gap: 2px; padding: 8px var(--van-work-order-card-padding) 0; }
22
21
  .van-work-order-card:not(.van-work-order-card--actions):not(.van-work-order-card--expanded-content) .van-work-order-card__infos { padding-bottom: 8px; }
23
- .van-work-order-card__info { display: flex; gap: 4px; align-items: center; min-height: 21px; color: var(--van-work-order-card-info-color); font-size: 13px; line-height: 21px; }
22
+ .van-work-order-card__info { min-width: 0; }
24
23
  .van-work-order-card__expanded-wrapper { display: grid; grid-template-rows: 0fr; opacity: 0; transition: grid-template-rows .24s cubic-bezier(.2, .8, .2, 1), opacity .18s ease; }
25
24
  .van-work-order-card__expanded-wrapper--visible { grid-template-rows: 1fr; opacity: 1; }
26
25
  .van-work-order-card__expanded-content { min-height: 0; padding: 0 var(--van-work-order-card-padding); overflow: hidden; }
@@ -1,7 +1,9 @@
1
1
  require("../../style/base.css");
2
2
  require("../../badge/index.css");
3
3
  require("../../icon/index.css");
4
+ require("../../image/index.css");
4
5
  require("../../tag/index.css");
6
+ require("../../label/index.css");
5
7
  require("../../loading/index.css");
6
8
  require("../../button/index.css");
7
9
  require("../../divider/index.css");
@@ -1,7 +1,9 @@
1
1
  require("../../style/base.less");
2
2
  require("../../badge/index.less");
3
3
  require("../../icon/index.less");
4
+ require("../../image/index.less");
4
5
  require("../../tag/index.less");
6
+ require("../../label/index.less");
5
7
  require("../../loading/index.less");
6
8
  require("../../button/index.less");
7
9
  require("../../divider/index.less");
@@ -1,12 +1,25 @@
1
+ import type { TagSize, TagType } from '../tag';
1
2
  import type { Numeric } from '../utils';
2
3
  export declare type WorkOrderCardTag = {
3
4
  text: string;
5
+ type?: TagType;
6
+ size?: TagSize;
4
7
  color?: string;
5
8
  textColor?: string;
9
+ plain?: boolean;
10
+ round?: boolean;
11
+ mark?: boolean;
12
+ rightIcon?: string;
13
+ number?: string | number;
14
+ showNumber?: boolean;
15
+ numberColor?: string;
6
16
  };
7
17
  export declare type WorkOrderCardInfo = {
8
18
  icon?: string;
9
- text: string;
19
+ /** @deprecated Prefer label and content for structured field display. */
20
+ text?: string;
21
+ label?: string;
22
+ content?: string;
10
23
  };
11
24
  export declare type WorkOrderCardAction = {
12
25
  text: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "persagy-vant",
3
- "version": "0.0.37",
3
+ "version": "0.0.38",
4
4
  "description": "Lightweight Mobile UI Components built on Vue",
5
5
  "main": "lib/vant.cjs.js",
6
6
  "module": "es/index.mjs",
@@ -44,7 +44,7 @@
44
44
  "url": "git+https://gitea.meos.center/Persagy-AI/persagy-vant-ai.git"
45
45
  },
46
46
  "bugs": "https://gitea.meos.center/Persagy-AI/persagy-vant-ai/issues",
47
- "homepage": "https://persagy-vant-ai.netlify.app",
47
+ "homepage": "https://sunshifu-persagy-vant-ai.netlify.app",
48
48
  "author": "chenjiahan",
49
49
  "license": "MIT",
50
50
  "keywords": [
@@ -38,7 +38,7 @@
38
38
  组件复用清单面向产品经理,组件名不得使用代码名(如 `label`、`bottom-action-bar`)或自行翻译。交付前执行以下规则:
39
39
 
40
40
  1. 从 `packages/persagy-mobile/vant.config.mjs` 的 `site.locales['zh-CN'].nav` 读取组件官网导航名称和 `path`;在已安装包项目中,从同包的 `vant.config.mjs` 或已发布文档导航读取。
41
- 2. 使用官网导航名称中的中文名称作为链接文字,并链接到 `https://persagy-vant-ai.netlify.app/#/zh-CN/<path>`。例如:`[字段展示](https://persagy-vant-ai.netlify.app/#/zh-CN/label)`、`[动作栏](https://persagy-vant-ai.netlify.app/#/zh-CN/bottom-action-bar)`。
41
+ 2. 使用官网导航名称中的中文名称作为链接文字,并链接到 `https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/<path>`。例如:`[字段展示](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/label)`、`[动作栏](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/bottom-action-bar)`。
42
42
  3. 若官网导航本身展示“中文名称 + 英文名称”,可保留其完整名称,确保与网站完全一致;不得使用组件目录名替代名称。
43
43
  4. 若组件尚未出现在官网中文导航或未发布,禁止编造跳转地址;以官网中文名称(如可取得)标注“待官网发布”,并在交付中说明。
44
44
 
@@ -47,9 +47,9 @@
47
47
  ```md
48
48
  ## 组件复用清单
49
49
 
50
- - [字段展示](https://persagy-vant-ai.netlify.app/#/zh-CN/label):展示字段名称与回显值;左侧标签使用冒号。
51
- - [信息卡片](https://persagy-vant-ai.netlify.app/#/zh-CN/info-card):承载成组详情字段。
52
- - [动作栏](https://persagy-vant-ai.netlify.app/#/zh-CN/bottom-action-bar):承载页面级提交操作。
50
+ - [字段展示](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/label):展示字段名称与回显值;左侧标签使用冒号。
51
+ - [信息卡片](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/info-card):承载成组详情字段。
52
+ - [动作栏](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/bottom-action-bar):承载页面级提交操作。
53
53
  ```
54
54
 
55
55
  ## 组件 README 的维护标准
@@ -45,8 +45,8 @@
45
45
 
46
46
  ```md
47
47
  ## 组件变体选型
48
- - [单元格](https://persagy-vant-ai.netlify.app/#/zh-CN/cell):模拟器示例「后置选择」;用于工单批量选择,使用 `right-select` 绑定原有选中状态。未采用「展示箭头」,因为该行不是跳转入口。
49
- - [单元格](https://persagy-vant-ai.netlify.app/#/zh-CN/cell):模拟器示例「三行样式」;用于设备条目,使用 `three-line`、`title`、`label`、`description` 和 `right-icon="arrow"` 呈现名称、编号、位置与详情入口。
48
+ - [单元格](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/cell):模拟器示例「后置选择」;用于工单批量选择,使用 `right-select` 绑定原有选中状态。未采用「展示箭头」,因为该行不是跳转入口。
49
+ - [单元格](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/cell):模拟器示例「三行样式」;用于设备条目,使用 `three-line`、`title`、`label`、`description` 和 `right-icon="arrow"` 呈现名称、编号、位置与详情入口。
50
50
  - <官网中文组件名>:模拟器示例「<README 中的准确示例标题>」;<页面意图>,使用 `<实际 Props/插槽/变量>`;<未选其他示例的关键原因>。
51
51
  ```
52
52
 
@@ -15,6 +15,7 @@
15
15
  - 页面含白色卡片时,优先使用 `background` 组件承载页面内容:一级页面(首页)使用 `theme="default"`,其他层级页面使用 `theme="gray"`。无白色卡片且无明确背景设计时,使用 `--van-gray-1`。
16
16
  - 信息展示和录入控件以白色卡片承载;背景主题与页面层级不一致时,以明确的页面原型为准。
17
17
  - 卡片内容与页面左右边缘保持 `16px` 间距;卡片之间间距 `8px`。
18
+ - 页面含白色卡片时,在滚动内容的最后一张卡片之后必须保留**唯一且恰好 `24px` 高**的页面级空白容器,避免卡片视觉贴近页面底部;该容器不承载业务内容、不计入卡片间距,也不使用自定义组件实现。滚动到末尾时,该 `24px` 即为滚动内容的终点;不得再叠加 `padding-bottom`、安全区占位、空白节点或额外卡片间距,避免出现超过 `24px` 的可滚动空白。存在固定底部操作栏时,空白容器仍位于可滚动内容末尾、操作栏之前;操作栏自身的安全区只作用于操作栏,不得计入或叠加到滚动内容末尾。
18
19
  - 模块之间、控件之间使用 `8px` 或 `12px` 间距;仅左右排布的两组字段,纵向间距不得小于 `8px`。
19
20
  - 白色卡片内有分割线的控件列表,最后一个可见控件必须隐藏末尾分割线;使用组件公开能力实现,例如 `cell`/`field` 设置 `border="false"`、`material-display-bar` 设置 `divider="false"`。根据条件渲染或 `visible` 判定最后一个实际可见项,不使用 CSS 强行隐藏分割线。
20
21
  - 需要展示字段名称与回显值时,优先使用 `label`,不要手写同类标签和值的排版;左侧标签文本尽量自带冒号,保证名称和值之间的统一阅读间距。录入或选择入口仍使用 `field`、`cell` 等对应组件。多字段成组或存在多种字段展示类型(文字、强调文字、链接、标签、图片/视频或纵向字段)时,优先使用 `info-card` + `label`;按字段内容选择 `label` 的公开展示类型和纵向布局。字段无数据时整项隐藏,使用 `info-card` 时通过字段的 `visible: false` 实现。
@@ -69,7 +70,7 @@
69
70
 
70
71
  ```md
71
72
  ## 规范落实项
72
- - 布局与文本:<背景、卡片间距、文本溢出和空字段处理方式>
73
+ - 布局与文本:<背景、卡片间距、末卡片后 24px 留白、文本溢出和空字段处理方式>
73
74
  - 页面结构与触达:<页面/面板层级、导航动效、热区、信息层级;不涉及则说明>
74
75
  - 输入与选择:<200 字限制、9 个上传限制、时间、键盘、单选/多选策略;不涉及则说明>
75
76
  - 编辑与全局操作:<表单面板、底部操作栏及其变量/布局选择;不涉及则说明>
@@ -2,6 +2,10 @@
2
2
 
3
3
  配方限定页面结构,不替代具体组件 API。开始编码前先选择最接近的一项。
4
4
 
5
+ ## 卡片页面底部留白
6
+
7
+ 页面以白色卡片承载内容时,在可滚动内容的最后一张卡片后增加唯一且恰好 `24px` 高的空白容器,避免内容贴底。该容器仅承担页面布局留白,不承载业务内容,不作为组件样式修改;滚动到底后必须立即停止,禁止额外的 `padding-bottom`、安全区占位、空白节点或间距使内容继续滚动。固定 `bottom-action-bar` 或其他底部操作栏存在时,将该容器放在操作栏之前;操作栏安全区仅在操作栏内处理,不得叠加到滚动内容末尾。
8
+
5
9
  ## 全页面进入过渡
6
10
 
7
11
  1. 页面首次进入时,使用纯色页面背景叠加 `loading type="illustration"`,作为页面内容加载完成前的过渡。
@@ -49,8 +49,8 @@
49
49
 
50
50
  ```md
51
51
  ## 组件复用清单
52
- - [<官网中文组件名>](https://persagy-vant-ai.netlify.app/#/zh-CN/<组件路径>):<承担的页面职责与关键公开能力>
53
- - [<官网中文组件名>](https://persagy-vant-ai.netlify.app/#/zh-CN/<组件路径>):<承担的页面职责与关键公开能力>
52
+ - [<官网中文组件名>](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/<组件路径>):<承担的页面职责与关键公开能力>
53
+ - [<官网中文组件名>](https://sunshifu-persagy-vant-ai.netlify.app/#/zh-CN/<组件路径>):<承担的页面职责与关键公开能力>
54
54
 
55
55
  组件名和路径必须从 `component-documentation.md` 指定的官网中文导航读取;未发布组件标注“待官网发布”,不得编造链接。
56
56