@yaoxiu/marketing-dsl 2.5.0 → 2.6.0

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.
@@ -1835,7 +1835,8 @@ var changelog = [
1835
1835
  "`zIndex` \u73B0\u5728\u4F1A\u81EA\u52A8\u5E26\u4E0A\u5B9A\u4F4D\u65B9\u5F0F\uFF1A`z-index` \u5BF9\u9759\u6001\u5143\u7D20\u662F\u6B7B\u58F0\u660E\uFF0C\u5199\u4E86\u4E0D\u751F\u6548\u3002\u6D41\u5F0F\u6392\u7248\u91CC\u9760\u8D1F `marginTop` \u5F80\u4E0A\u76D6\u7684\u5757\uFF08\u5982\u538B\u4F4F\u7EA2\u5934\u4E0B\u6CBF\u7684\u767D\u8272\u4E3B\u4F53\uFF09\u5FC5\u987B\u6709\u5C42\u7EA7\u624D\u76D6\u5F97\u4F4F\uFF0C\u914D\u4E86 `zIndex` \u5373\u53EF\uFF0C\u4E0D\u7528\uFF08\u4E5F\u6CA1\u6CD5\uFF09\u53E6\u914D `position`",
1836
1836
  "\u3010\u4FEE\u590D\u3011\u5F39\u51FA\u7B2C\u4E8C\u5C42\u5F39\u7A97\uFF08\u5982\u4E8C\u6B21\u633D\u7559\uFF09\u518D\u5173\u6389\u65F6\uFF0C\u4E0B\u5C42\u5F39\u7A97\u7684\u906E\u7F69\u5165\u573A\u52A8\u753B\u4F1A\u91CD\u64AD\u4E00\u904D\uFF0C\u80CC\u666F\u300C\u95EA\u300D\u4E00\u4E0B\u91CD\u65B0\u6DE1\u5165\u3002\u73B0\u5DF2\u4FEE\u6B63\uFF0C\u914D\u7F6E\u5199\u6CD5\u4E0D\u7528\u6539",
1837
1837
  "\u3010\u4FEE\u590D\u3011\u5207\u89C6\u56FE / \u5207 tab / `visibleWhen` \u7FFB\u8F6C\u65F6\uFF0C\u9875\u9762\u4E0A\u6B63\u5728\u8DD1\u7684\u5FAA\u73AF\u52A8\u753B\u4F1A\u5168\u90E8\u91CD\u5934\u64AD\u4E00\u904D\u3002\u73B0\u5DF2\u4FEE\u6B63",
1838
- "`hoverStyle` \u91CC\u7684 `{{ }}` \u53EA\u5728\u9996\u5C4F\u6C42\u503C\u4E00\u6B21\uFF0C\u4E4B\u540E\u4E0D\u968F state \u53D8\u5316\u2014\u2014\u8981\u8DDF\u7740\u72B6\u6001\u53D8\u7684\u6837\u5F0F\u5199\u5728 `style` \u91CC\uFF08\u90A3\u6761\u8DEF\u5F84\u6BCF\u5E27\u90FD\u4F1A\u91CD\u7B97\uFF09"
1838
+ "`hoverStyle` \u91CC\u7684 `{{ }}` \u53EA\u5728\u9996\u5C4F\u6C42\u503C\u4E00\u6B21\uFF0C\u4E4B\u540E\u4E0D\u968F state \u53D8\u5316\u2014\u2014\u8981\u8DDF\u7740\u72B6\u6001\u53D8\u7684\u6837\u5F0F\u5199\u5728 `style` \u91CC\uFF08\u90A3\u6761\u8DEF\u5F84\u6BCF\u5E27\u90FD\u4F1A\u91CD\u7B97\uFF09",
1839
+ "\u65B0\u589E\u793A\u4F8B \u246C \u642C\u5BB6\u6B21\u6570\u5C06\u5C3D\uFF1A\u989D\u5EA6\u8FDB\u5EA6\u6761\u7684\u6807\u51C6\u5199\u6CD5\uFF08\u5916\u5C42 flex \u5F53\u8F68\u9053 + \u5185\u5C42 box \u5F53\u586B\u5145\u6761 + `width` \u5199\u6210\u63D2\u503C\u8868\u8FBE\u5F0F\u73B0\u7B97\u767E\u5206\u6BD4\uFF09\uFF0C\u8981\u753B\u4EFB\u4F55\u6BD4\u4F8B\u6761\u90FD\u6284\u8FD9\u4EFD\u3002\u6CE8\u610F\u5B83\u7684\u603B\u989D\u5EA6\u662F\u8FD0\u8425\u624B\u586B\u7684\u2014\u2014\u7EDF\u8BA1\u63A5\u53E3\u76EE\u524D\u53EA\u6709\u4F59\u989D\u3001\u6CA1\u6709\u603B\u989D\u5EA6\uFF0C\u5957\u9910\u989D\u5EA6\u53D8\u4E86\u5FC5\u987B\u624B\u52A8\u6539\u7269\u6599"
1839
1840
  ]
1840
1841
  },
1841
1842
  {
@@ -4754,6 +4755,437 @@ var giftRedPacket = {
4754
4755
  };
4755
4756
  var gift_red_packet_default = giftRedPacket;
4756
4757
 
4758
+ // src/docs/examples/quota-low.ts
4759
+ var ORANGE4 = "linear-gradient(90deg,#ff7a00,#faad14)";
4760
+ var USED = "{{ total - user.collectCount }}";
4761
+ var achieveCell3 = (verb, value, unit, label) => ({
4762
+ type: "flex",
4763
+ style: {
4764
+ direction: "column",
4765
+ width: "calc(50% - 5px)",
4766
+ background: "rgba(255,255,255,0.16)",
4767
+ borderWidth: 1,
4768
+ borderStyle: "solid",
4769
+ borderColor: "rgba(255,255,255,0.2)",
4770
+ radius: 10,
4771
+ padding: "10px 13px",
4772
+ gap: 3
4773
+ },
4774
+ children: [
4775
+ {
4776
+ // lineHeight 必须显式给,否则 20px 数字的默认行高会把格子撑高
4777
+ type: "flex",
4778
+ style: { align: "baseline", gap: 3, height: 22 },
4779
+ children: [
4780
+ {
4781
+ type: "text",
4782
+ content: verb,
4783
+ style: {
4784
+ fontSize: 11.5,
4785
+ fontWeight: "600",
4786
+ lineHeight: 1.1,
4787
+ color: "rgba(255,255,255,0.92)"
4788
+ }
4789
+ },
4790
+ {
4791
+ type: "text",
4792
+ content: value,
4793
+ style: { fontSize: 20, fontWeight: "800", lineHeight: 1.1, color: "#ffffff" }
4794
+ },
4795
+ {
4796
+ type: "text",
4797
+ content: ` ${unit}`,
4798
+ style: { fontSize: 12, lineHeight: 1.1, color: "rgba(255,255,255,0.92)" }
4799
+ }
4800
+ ]
4801
+ },
4802
+ {
4803
+ type: "text",
4804
+ content: label,
4805
+ style: { fontSize: 11.5, lineHeight: 1.35, color: "rgba(255,255,255,0.72)" }
4806
+ }
4807
+ ]
4808
+ });
4809
+ var loseRow3 = {
4810
+ type: "flex",
4811
+ style: { align: "flex-start", gap: 10, padding: "7px 0" },
4812
+ children: [
4813
+ {
4814
+ type: "text",
4815
+ content: "",
4816
+ style: { width: 6, height: 6, radius: "50%", background: "#f53f3f", marginTop: 7 }
4817
+ },
4818
+ {
4819
+ type: "flex",
4820
+ style: { align: "baseline", gap: 4, wrap: true, flex: "1" },
4821
+ children: [
4822
+ {
4823
+ type: "text",
4824
+ content: "{{ item.b }}",
4825
+ style: {
4826
+ fontSize: 12.5,
4827
+ fontWeight: "700",
4828
+ lineHeight: 1.55,
4829
+ color: "#1f2533"
4830
+ }
4831
+ },
4832
+ {
4833
+ type: "text",
4834
+ content: "{{ item.tag }}",
4835
+ visibleWhen: "item.tag != ''",
4836
+ style: {
4837
+ background: "{{ item.sev == 'lose' ? '#ffd5cf' : 'rgba(255,255,255,0.78)' }}",
4838
+ color: "{{ item.sev == 'lose' ? '#cf1322' : '#8a7f78' }}",
4839
+ fontSize: 10,
4840
+ fontWeight: "800",
4841
+ radius: 4,
4842
+ padding: "1px 6px",
4843
+ whiteSpace: "nowrap"
4844
+ }
4845
+ },
4846
+ {
4847
+ type: "text",
4848
+ content: "\u2014 {{ item.t }}",
4849
+ style: { fontSize: 12.5, lineHeight: 1.55, color: "#4a4038" }
4850
+ }
4851
+ ]
4852
+ }
4853
+ ]
4854
+ };
4855
+ var tierCard3 = {
4856
+ type: "box",
4857
+ style: {
4858
+ flex: "1",
4859
+ height: 121,
4860
+ radius: 12,
4861
+ background: "{{ item.key == current.key ? '#fffaf0' : '#ffffff' }}",
4862
+ borderStyle: "solid",
4863
+ borderWidth: "{{ item.key == current.key ? '2px' : '1px' }}",
4864
+ borderColor: "{{ item.key == current.key ? '#f0a000' : '#e5e8ed' }}",
4865
+ cursor: "pointer"
4866
+ },
4867
+ action: {
4868
+ type: "sequence",
4869
+ actions: [
4870
+ { type: "setState", key: "period", value: "{{ index }}" },
4871
+ {
4872
+ type: "track",
4873
+ event: "popup_period_select",
4874
+ params: { period: "{{ item.key }}" }
4875
+ }
4876
+ ]
4877
+ },
4878
+ children: [
4879
+ {
4880
+ type: "text",
4881
+ rect: ["calc(50% - 19px)", -9, 38, 22],
4882
+ content: "\u63A8\u8350",
4883
+ visibleWhen: "item.hot",
4884
+ style: {
4885
+ background: ORANGE4,
4886
+ color: "#ffffff",
4887
+ fontSize: 11,
4888
+ fontWeight: "800",
4889
+ radius: 6,
4890
+ textAlign: "center",
4891
+ lineHeight: 22
4892
+ }
4893
+ },
4894
+ {
4895
+ type: "text",
4896
+ rect: [0, 12, "100%", 19],
4897
+ content: "{{ item.p }}",
4898
+ style: { fontSize: 13, color: "#8a909c", textAlign: "center" }
4899
+ },
4900
+ {
4901
+ type: "flex",
4902
+ rect: [0, 34, "100%", 26],
4903
+ style: { justify: "center", align: "baseline" },
4904
+ children: [
4905
+ {
4906
+ type: "text",
4907
+ content: "\xA5",
4908
+ style: { fontSize: 13, fontWeight: "800", color: "#1f2533" }
4909
+ },
4910
+ {
4911
+ type: "text",
4912
+ content: "{{ item.price }}",
4913
+ style: { fontSize: 21, fontWeight: "800", color: "#1f2533" }
4914
+ }
4915
+ ]
4916
+ },
4917
+ {
4918
+ type: "text",
4919
+ rect: [4, 63, "calc(100% - 8px)", 32],
4920
+ content: "{{ item.per }}",
4921
+ style: { fontSize: 11, color: "#8a909c", textAlign: "center", lineHeight: 1.35 }
4922
+ },
4923
+ {
4924
+ type: "text",
4925
+ rect: [0, 98, "100%", 15],
4926
+ content: "{{ item.flag }}",
4927
+ visibleWhen: "item.flag != ''",
4928
+ style: { fontSize: 11, color: "#8a909c", textAlign: "center" }
4929
+ }
4930
+ ]
4931
+ };
4932
+ var quotaLow = {
4933
+ version: 1,
4934
+ type: "popup",
4935
+ meta: { name: "\u642C\u5BB6\u6B21\u6570\u5C06\u5C3D \xB7 \u989D\u5EA6\u8FDB\u5EA6\u6761\uFF08\u590D\u523B\u8FD0\u8425 demo\uFF09" },
4936
+ stage: {
4937
+ width: 520,
4938
+ height: "auto",
4939
+ layout: "flow",
4940
+ mask: true,
4941
+ maskClosable: false,
4942
+ closeButton: { show: true, position: "top-right", offset: [14, 14] },
4943
+ style: { radius: 18 }
4944
+ },
4945
+ data: {
4946
+ // 实时统计走后端数据源。$source 填的是宿主注册过的数据源名(不是接口地址),
4947
+ // userStatistics 返回扁平对象,字段名就是后端的 snake_case
4948
+ stat: { $source: "userStatistics" },
4949
+ // 总额度:运营按当前套餐手填。为什么不走接口、以后怎么换,见文件头注释
4950
+ total: 30,
4951
+ lose: [
4952
+ { b: "\u6279\u91CF\u642C\u5BB6", tag: "\u5C06\u505C\u7528", sev: "lose", t: "\u989D\u5EA6\u5F52\u96F6\u540E\u65E0\u6CD5\u7EE7\u7EED\u4E0A\u8D27" },
4953
+ {
4954
+ b: "1688 \u4E00\u4EF6\u4EE3\u53D1",
4955
+ tag: "\u5C06\u505C\u7528",
4956
+ sev: "lose",
4957
+ t: "\u6E90\u5934\u8D27\u6E90\u65AD\u4F9B\uFF0C\u9009\u54C1\u3001\u94FA\u8D27\u3001\u4EE3\u53D1\u90FD\u8981\u624B\u52A8\u505A"
4958
+ },
4959
+ {
4960
+ b: "AI \u81EA\u52A8\u4F18\u5316",
4961
+ tag: "\u5C06\u6682\u505C",
4962
+ sev: "pause",
4963
+ t: "\u65B0\u5546\u54C1\u4E0D\u518D\u8865\u4E3B\u6807\u9898 / \u77ED\u6807\u9898 / \u767D\u5E95\u56FE"
4964
+ }
4965
+ ],
4966
+ // 价格档位从后端数据源取,后端返回几档就渲染几档,配置时不用知道数量
4967
+ tiers: { $source: "listRenewTiers", params: { scene: "quota_low" } }
4968
+ },
4969
+ state: { period: 1 },
4970
+ derived: { current: { list: "tiers", indexBy: "period" } },
4971
+ nodes: [
4972
+ // ===== 深色渐变头部:标签 + 2×2 成果格 =====
4973
+ {
4974
+ type: "flex",
4975
+ style: {
4976
+ direction: "column",
4977
+ background: "linear-gradient(135deg,#2b0f0f,#3a1414)",
4978
+ padding: "20px 22px 16px",
4979
+ gap: 13
4980
+ },
4981
+ children: [
4982
+ {
4983
+ type: "text",
4984
+ content: "\u26A1 \u642C\u5BB6\u6B21\u6570\u5373\u5C06\u7528\u5B8C",
4985
+ style: {
4986
+ // 不写 alignSelf 会被 flex 列拉满整行,标签必须按内容宽度
4987
+ alignSelf: "flex-start",
4988
+ background: "rgba(255,255,255,0.18)",
4989
+ color: "#ffffff",
4990
+ fontSize: 12,
4991
+ fontWeight: "700",
4992
+ radius: 6,
4993
+ padding: "5px 10px"
4994
+ }
4995
+ },
4996
+ {
4997
+ // 四格并列写死(扁平对象没法 bind 遍历),flex + wrap 排成 2×2。
4998
+ // 第一格的数字不是统计字段,而是「总额度 − 剩余次数」现算出来的
4999
+ type: "flex",
5000
+ style: { gap: 9, wrap: true },
5001
+ children: [
5002
+ achieveCell3("\u5DF2\u7528", USED, "\u6B21", "\u642C\u5BB6\u6B21\u6570"),
5003
+ achieveCell3("\u5DF2\u4E0A\u67B6", "{{ stat.move_success_count }}", "\u4E2A", "\u7D2F\u8BA1\u4E0A\u67B6\u5546\u54C1"),
5004
+ achieveCell3("\u65E5\u5747", "{{ stat.avg_daily_move_count }}", "\u4E2A", "\u5E73\u5747\u6BCF\u5929\u4E0A\u67B6"),
5005
+ achieveCell3(
5006
+ "\u5DF2\u8865\u9F50",
5007
+ "{{ stat.white_image_fill_count }}",
5008
+ "\u5F20",
5009
+ "\u767D\u5E95\u56FE \xB7 \u5408\u89C4\u53EF\u62A5\u6D3B\u52A8"
5010
+ )
5011
+ ]
5012
+ }
5013
+ ]
5014
+ },
5015
+ // ===== 白色 body =====
5016
+ {
5017
+ type: "flex",
5018
+ style: { direction: "column", background: "#ffffff", padding: "22px 26px 24px" },
5019
+ children: [
5020
+ // ===== 额度进度条:轨道 + 填充条 + 百分比表达式(本示例的重点)=====
5021
+ {
5022
+ type: "flex",
5023
+ style: {
5024
+ direction: "column",
5025
+ background: "#fff8f3",
5026
+ radius: 10,
5027
+ padding: "8px 13px 9px",
5028
+ gap: 4
5029
+ },
5030
+ children: [
5031
+ {
5032
+ // 标题行:左边「剩余 N 次」,右边「已用 X / 总额度 次」
5033
+ type: "flex",
5034
+ style: { align: "baseline", justify: "space-between" },
5035
+ children: [
5036
+ {
5037
+ type: "flex",
5038
+ style: { align: "baseline", gap: 3 },
5039
+ children: [
5040
+ {
5041
+ type: "text",
5042
+ content: "\u642C\u5BB6\u6B21\u6570\u5269\u4F59",
5043
+ style: { fontSize: 12, lineHeight: 1.35, color: "#3f4656" }
5044
+ },
5045
+ {
5046
+ type: "text",
5047
+ content: "{{ user.collectCount }} \u6B21",
5048
+ style: {
5049
+ fontSize: 15,
5050
+ fontWeight: "800",
5051
+ lineHeight: 1.25,
5052
+ color: "#cf1322"
5053
+ }
5054
+ }
5055
+ ]
5056
+ },
5057
+ {
5058
+ type: "text",
5059
+ content: `\u5DF2\u7528 ${USED} / {{ total }} \u6B21`,
5060
+ style: { fontSize: 10.5, lineHeight: 1.35, color: "#8a909c" }
5061
+ }
5062
+ ]
5063
+ },
5064
+ {
5065
+ // 轨道。用 flex 而不是 box —— box 的子节点走绝对定位、必须给 rect,
5066
+ // 填充条要的是「跟着父级流」;overflow: hidden 必须写,否则填充条的
5067
+ // 直角会戳出轨道的圆角外面
5068
+ type: "flex",
5069
+ style: {
5070
+ height: 5,
5071
+ radius: 4,
5072
+ background: "#ffe0cc",
5073
+ overflow: "hidden"
5074
+ },
5075
+ children: [
5076
+ {
5077
+ // 填充条。宽度是算出来的:已用 ÷ 总额度 × 100,节点 style 里的
5078
+ // 字符串同样走插值,所以百分比不需要后端多下发一个字段
5079
+ type: "box",
5080
+ style: {
5081
+ width: "{{ (total - user.collectCount) / total * 100 }}%",
5082
+ height: "100%",
5083
+ background: "linear-gradient(90deg,#f53f3f,#ff7a45)"
5084
+ }
5085
+ }
5086
+ ]
5087
+ }
5088
+ ]
5089
+ },
5090
+ {
5091
+ type: "text",
5092
+ content: "\u642C\u5BB6\u6B21\u6570\u7528\u5B8C\uFF0C\u4EA7\u54C1\u80FD\u529B\u5C06\u53D7\u9650\uFF1A",
5093
+ style: { fontSize: 15, fontWeight: "800", color: "#1f2533", marginTop: 17 }
5094
+ },
5095
+ {
5096
+ type: "repeat",
5097
+ bind: "lose",
5098
+ template: loseRow3,
5099
+ style: {
5100
+ direction: "column",
5101
+ marginTop: 12,
5102
+ background: "#ffe9e6",
5103
+ borderWidth: 1,
5104
+ borderStyle: "solid",
5105
+ borderColor: "#ffd0ca",
5106
+ radius: 12,
5107
+ padding: "7px 13px"
5108
+ }
5109
+ },
5110
+ {
5111
+ type: "flex",
5112
+ style: { align: "center", gap: 8, marginTop: 17, marginBottom: 9 },
5113
+ children: [
5114
+ {
5115
+ type: "text",
5116
+ content: "\u7EED\u6EE1\u989D\u5EA6 \xB7 \u9009\u62E9\u5468\u671F",
5117
+ style: { fontSize: 13.5, fontWeight: "700", color: "#747b89" }
5118
+ },
5119
+ {
5120
+ type: "text",
5121
+ content: "\u65B0\u4EBA\u9996\u8D2D\u4EF7",
5122
+ style: {
5123
+ alignSelf: "center",
5124
+ background: ORANGE4,
5125
+ color: "#ffffff",
5126
+ fontSize: 11,
5127
+ fontWeight: "800",
5128
+ radius: 5,
5129
+ padding: "2px 8px"
5130
+ }
5131
+ }
5132
+ ]
5133
+ },
5134
+ { type: "repeat", bind: "tiers", style: { gap: 8 }, template: tierCard3 },
5135
+ {
5136
+ type: "flex",
5137
+ style: {
5138
+ justify: "center",
5139
+ align: "center",
5140
+ gap: 5,
5141
+ height: 52,
5142
+ radius: 11,
5143
+ background: "linear-gradient(90deg,#f53f3f,#ff7a45)",
5144
+ marginTop: 15,
5145
+ cursor: "pointer"
5146
+ },
5147
+ action: {
5148
+ type: "sequence",
5149
+ actions: [
5150
+ {
5151
+ type: "track",
5152
+ event: "popup_renew_click",
5153
+ params: { period: "{{ current.key }}", stage: "quota_low" }
5154
+ },
5155
+ { type: "navigate", url: "{{ current.url }}" }
5156
+ ]
5157
+ },
5158
+ children: [
5159
+ {
5160
+ type: "text",
5161
+ content: "\u7EED\u6EE1\u989D\u5EA6 \xB7",
5162
+ style: { fontSize: 14, fontWeight: "800", color: "#ffffff" }
5163
+ },
5164
+ {
5165
+ type: "text",
5166
+ content: "{{ current.p }} \xA5{{ current.price }}",
5167
+ style: { fontSize: 16.5, fontWeight: "800", color: "#ffffff" }
5168
+ }
5169
+ ]
5170
+ },
5171
+ {
5172
+ type: "text",
5173
+ content: "\u5347\u7EA7\u6216\u67E5\u770B\u66F4\u591A\u4EA7\u54C1\u5957\u9910",
5174
+ style: {
5175
+ fontSize: 12.5,
5176
+ color: "#8a909c",
5177
+ textAlign: "center",
5178
+ marginTop: 11,
5179
+ cursor: "pointer"
5180
+ },
5181
+ action: { type: "track", event: "popup_more_plans" }
5182
+ }
5183
+ ]
5184
+ }
5185
+ ]
5186
+ };
5187
+ var quota_low_default = quotaLow;
5188
+
4757
5189
  // src/docs/examples/index.ts
4758
5190
  var HOTSPOT_BG = "rgba(255,68,51,0.16)";
4759
5191
  var imageHotspot = {
@@ -5005,6 +5437,11 @@ var examples = [
5005
5437
  label: "\u246B \u590D\u523B\u7EBF\u4E0A\u5F39\u7A97 \xB7 1 \u5206\u94B1\u534A\u5E74\u5361\uFF08\u52A8\u753B\u6700\u5BC6\u7684\u4E00\u4EFD\uFF09",
5006
5438
  value: "giftRedPacket",
5007
5439
  dsl: gift_red_packet_default
5440
+ },
5441
+ {
5442
+ label: "\u246C \u590D\u523B\u8FD0\u8425 demo \xB7 \u642C\u5BB6\u6B21\u6570\u5C06\u5C3D\uFF08\u989D\u5EA6\u8FDB\u5EA6\u6761\uFF09",
5443
+ value: "quotaLow",
5444
+ dsl: quota_low_default
5008
5445
  }
5009
5446
  ];
5010
5447
  var examples_default = examples;
@@ -96,7 +96,8 @@ declare const meta: DocMeta;
96
96
  *
97
97
  * ①② 是最小骨架,③④ 是运营 demo 真实弹窗的完整复刻,⑤⑥ 是多视图,⑦ 是换肤换布局,
98
98
  * ⑧ 是通栏 banner(宽度由页面决定、只能声明比例),⑨⑩ 是商品编辑抽屉里两个**固定尺寸**坑位,
99
- * ⑪⑫ 是搬家成功页两个线上弹窗的一比一复刻(动画、hover、相对时长倒计时的完整用法)。
99
+ * ⑪⑫ 是搬家成功页两个线上弹窗的一比一复刻(动画、hover、相对时长倒计时的完整用法),
100
+ * ⑬ 是额度进度条(用表达式算填充宽度,要画任何比例条都抄这份)。
100
101
  * 后端数据源($source)用法见 ③。
101
102
  */
102
103
 
@@ -96,7 +96,8 @@ declare const meta: DocMeta;
96
96
  *
97
97
  * ①② 是最小骨架,③④ 是运营 demo 真实弹窗的完整复刻,⑤⑥ 是多视图,⑦ 是换肤换布局,
98
98
  * ⑧ 是通栏 banner(宽度由页面决定、只能声明比例),⑨⑩ 是商品编辑抽屉里两个**固定尺寸**坑位,
99
- * ⑪⑫ 是搬家成功页两个线上弹窗的一比一复刻(动画、hover、相对时长倒计时的完整用法)。
99
+ * ⑪⑫ 是搬家成功页两个线上弹窗的一比一复刻(动画、hover、相对时长倒计时的完整用法),
100
+ * ⑬ 是额度进度条(用表达式算填充宽度,要画任何比例条都抄这份)。
100
101
  * 后端数据源($source)用法见 ③。
101
102
  */
102
103
 
@@ -1674,7 +1674,8 @@ var changelog = [
1674
1674
  "`zIndex` \u73B0\u5728\u4F1A\u81EA\u52A8\u5E26\u4E0A\u5B9A\u4F4D\u65B9\u5F0F\uFF1A`z-index` \u5BF9\u9759\u6001\u5143\u7D20\u662F\u6B7B\u58F0\u660E\uFF0C\u5199\u4E86\u4E0D\u751F\u6548\u3002\u6D41\u5F0F\u6392\u7248\u91CC\u9760\u8D1F `marginTop` \u5F80\u4E0A\u76D6\u7684\u5757\uFF08\u5982\u538B\u4F4F\u7EA2\u5934\u4E0B\u6CBF\u7684\u767D\u8272\u4E3B\u4F53\uFF09\u5FC5\u987B\u6709\u5C42\u7EA7\u624D\u76D6\u5F97\u4F4F\uFF0C\u914D\u4E86 `zIndex` \u5373\u53EF\uFF0C\u4E0D\u7528\uFF08\u4E5F\u6CA1\u6CD5\uFF09\u53E6\u914D `position`",
1675
1675
  "\u3010\u4FEE\u590D\u3011\u5F39\u51FA\u7B2C\u4E8C\u5C42\u5F39\u7A97\uFF08\u5982\u4E8C\u6B21\u633D\u7559\uFF09\u518D\u5173\u6389\u65F6\uFF0C\u4E0B\u5C42\u5F39\u7A97\u7684\u906E\u7F69\u5165\u573A\u52A8\u753B\u4F1A\u91CD\u64AD\u4E00\u904D\uFF0C\u80CC\u666F\u300C\u95EA\u300D\u4E00\u4E0B\u91CD\u65B0\u6DE1\u5165\u3002\u73B0\u5DF2\u4FEE\u6B63\uFF0C\u914D\u7F6E\u5199\u6CD5\u4E0D\u7528\u6539",
1676
1676
  "\u3010\u4FEE\u590D\u3011\u5207\u89C6\u56FE / \u5207 tab / `visibleWhen` \u7FFB\u8F6C\u65F6\uFF0C\u9875\u9762\u4E0A\u6B63\u5728\u8DD1\u7684\u5FAA\u73AF\u52A8\u753B\u4F1A\u5168\u90E8\u91CD\u5934\u64AD\u4E00\u904D\u3002\u73B0\u5DF2\u4FEE\u6B63",
1677
- "`hoverStyle` \u91CC\u7684 `{{ }}` \u53EA\u5728\u9996\u5C4F\u6C42\u503C\u4E00\u6B21\uFF0C\u4E4B\u540E\u4E0D\u968F state \u53D8\u5316\u2014\u2014\u8981\u8DDF\u7740\u72B6\u6001\u53D8\u7684\u6837\u5F0F\u5199\u5728 `style` \u91CC\uFF08\u90A3\u6761\u8DEF\u5F84\u6BCF\u5E27\u90FD\u4F1A\u91CD\u7B97\uFF09"
1677
+ "`hoverStyle` \u91CC\u7684 `{{ }}` \u53EA\u5728\u9996\u5C4F\u6C42\u503C\u4E00\u6B21\uFF0C\u4E4B\u540E\u4E0D\u968F state \u53D8\u5316\u2014\u2014\u8981\u8DDF\u7740\u72B6\u6001\u53D8\u7684\u6837\u5F0F\u5199\u5728 `style` \u91CC\uFF08\u90A3\u6761\u8DEF\u5F84\u6BCF\u5E27\u90FD\u4F1A\u91CD\u7B97\uFF09",
1678
+ "\u65B0\u589E\u793A\u4F8B \u246C \u642C\u5BB6\u6B21\u6570\u5C06\u5C3D\uFF1A\u989D\u5EA6\u8FDB\u5EA6\u6761\u7684\u6807\u51C6\u5199\u6CD5\uFF08\u5916\u5C42 flex \u5F53\u8F68\u9053 + \u5185\u5C42 box \u5F53\u586B\u5145\u6761 + `width` \u5199\u6210\u63D2\u503C\u8868\u8FBE\u5F0F\u73B0\u7B97\u767E\u5206\u6BD4\uFF09\uFF0C\u8981\u753B\u4EFB\u4F55\u6BD4\u4F8B\u6761\u90FD\u6284\u8FD9\u4EFD\u3002\u6CE8\u610F\u5B83\u7684\u603B\u989D\u5EA6\u662F\u8FD0\u8425\u624B\u586B\u7684\u2014\u2014\u7EDF\u8BA1\u63A5\u53E3\u76EE\u524D\u53EA\u6709\u4F59\u989D\u3001\u6CA1\u6709\u603B\u989D\u5EA6\uFF0C\u5957\u9910\u989D\u5EA6\u53D8\u4E86\u5FC5\u987B\u624B\u52A8\u6539\u7269\u6599"
1678
1679
  ]
1679
1680
  },
1680
1681
  {
@@ -4593,6 +4594,437 @@ var giftRedPacket = {
4593
4594
  };
4594
4595
  var gift_red_packet_default = giftRedPacket;
4595
4596
 
4597
+ // src/docs/examples/quota-low.ts
4598
+ var ORANGE4 = "linear-gradient(90deg,#ff7a00,#faad14)";
4599
+ var USED = "{{ total - user.collectCount }}";
4600
+ var achieveCell3 = (verb, value, unit, label) => ({
4601
+ type: "flex",
4602
+ style: {
4603
+ direction: "column",
4604
+ width: "calc(50% - 5px)",
4605
+ background: "rgba(255,255,255,0.16)",
4606
+ borderWidth: 1,
4607
+ borderStyle: "solid",
4608
+ borderColor: "rgba(255,255,255,0.2)",
4609
+ radius: 10,
4610
+ padding: "10px 13px",
4611
+ gap: 3
4612
+ },
4613
+ children: [
4614
+ {
4615
+ // lineHeight 必须显式给,否则 20px 数字的默认行高会把格子撑高
4616
+ type: "flex",
4617
+ style: { align: "baseline", gap: 3, height: 22 },
4618
+ children: [
4619
+ {
4620
+ type: "text",
4621
+ content: verb,
4622
+ style: {
4623
+ fontSize: 11.5,
4624
+ fontWeight: "600",
4625
+ lineHeight: 1.1,
4626
+ color: "rgba(255,255,255,0.92)"
4627
+ }
4628
+ },
4629
+ {
4630
+ type: "text",
4631
+ content: value,
4632
+ style: { fontSize: 20, fontWeight: "800", lineHeight: 1.1, color: "#ffffff" }
4633
+ },
4634
+ {
4635
+ type: "text",
4636
+ content: ` ${unit}`,
4637
+ style: { fontSize: 12, lineHeight: 1.1, color: "rgba(255,255,255,0.92)" }
4638
+ }
4639
+ ]
4640
+ },
4641
+ {
4642
+ type: "text",
4643
+ content: label,
4644
+ style: { fontSize: 11.5, lineHeight: 1.35, color: "rgba(255,255,255,0.72)" }
4645
+ }
4646
+ ]
4647
+ });
4648
+ var loseRow3 = {
4649
+ type: "flex",
4650
+ style: { align: "flex-start", gap: 10, padding: "7px 0" },
4651
+ children: [
4652
+ {
4653
+ type: "text",
4654
+ content: "",
4655
+ style: { width: 6, height: 6, radius: "50%", background: "#f53f3f", marginTop: 7 }
4656
+ },
4657
+ {
4658
+ type: "flex",
4659
+ style: { align: "baseline", gap: 4, wrap: true, flex: "1" },
4660
+ children: [
4661
+ {
4662
+ type: "text",
4663
+ content: "{{ item.b }}",
4664
+ style: {
4665
+ fontSize: 12.5,
4666
+ fontWeight: "700",
4667
+ lineHeight: 1.55,
4668
+ color: "#1f2533"
4669
+ }
4670
+ },
4671
+ {
4672
+ type: "text",
4673
+ content: "{{ item.tag }}",
4674
+ visibleWhen: "item.tag != ''",
4675
+ style: {
4676
+ background: "{{ item.sev == 'lose' ? '#ffd5cf' : 'rgba(255,255,255,0.78)' }}",
4677
+ color: "{{ item.sev == 'lose' ? '#cf1322' : '#8a7f78' }}",
4678
+ fontSize: 10,
4679
+ fontWeight: "800",
4680
+ radius: 4,
4681
+ padding: "1px 6px",
4682
+ whiteSpace: "nowrap"
4683
+ }
4684
+ },
4685
+ {
4686
+ type: "text",
4687
+ content: "\u2014 {{ item.t }}",
4688
+ style: { fontSize: 12.5, lineHeight: 1.55, color: "#4a4038" }
4689
+ }
4690
+ ]
4691
+ }
4692
+ ]
4693
+ };
4694
+ var tierCard3 = {
4695
+ type: "box",
4696
+ style: {
4697
+ flex: "1",
4698
+ height: 121,
4699
+ radius: 12,
4700
+ background: "{{ item.key == current.key ? '#fffaf0' : '#ffffff' }}",
4701
+ borderStyle: "solid",
4702
+ borderWidth: "{{ item.key == current.key ? '2px' : '1px' }}",
4703
+ borderColor: "{{ item.key == current.key ? '#f0a000' : '#e5e8ed' }}",
4704
+ cursor: "pointer"
4705
+ },
4706
+ action: {
4707
+ type: "sequence",
4708
+ actions: [
4709
+ { type: "setState", key: "period", value: "{{ index }}" },
4710
+ {
4711
+ type: "track",
4712
+ event: "popup_period_select",
4713
+ params: { period: "{{ item.key }}" }
4714
+ }
4715
+ ]
4716
+ },
4717
+ children: [
4718
+ {
4719
+ type: "text",
4720
+ rect: ["calc(50% - 19px)", -9, 38, 22],
4721
+ content: "\u63A8\u8350",
4722
+ visibleWhen: "item.hot",
4723
+ style: {
4724
+ background: ORANGE4,
4725
+ color: "#ffffff",
4726
+ fontSize: 11,
4727
+ fontWeight: "800",
4728
+ radius: 6,
4729
+ textAlign: "center",
4730
+ lineHeight: 22
4731
+ }
4732
+ },
4733
+ {
4734
+ type: "text",
4735
+ rect: [0, 12, "100%", 19],
4736
+ content: "{{ item.p }}",
4737
+ style: { fontSize: 13, color: "#8a909c", textAlign: "center" }
4738
+ },
4739
+ {
4740
+ type: "flex",
4741
+ rect: [0, 34, "100%", 26],
4742
+ style: { justify: "center", align: "baseline" },
4743
+ children: [
4744
+ {
4745
+ type: "text",
4746
+ content: "\xA5",
4747
+ style: { fontSize: 13, fontWeight: "800", color: "#1f2533" }
4748
+ },
4749
+ {
4750
+ type: "text",
4751
+ content: "{{ item.price }}",
4752
+ style: { fontSize: 21, fontWeight: "800", color: "#1f2533" }
4753
+ }
4754
+ ]
4755
+ },
4756
+ {
4757
+ type: "text",
4758
+ rect: [4, 63, "calc(100% - 8px)", 32],
4759
+ content: "{{ item.per }}",
4760
+ style: { fontSize: 11, color: "#8a909c", textAlign: "center", lineHeight: 1.35 }
4761
+ },
4762
+ {
4763
+ type: "text",
4764
+ rect: [0, 98, "100%", 15],
4765
+ content: "{{ item.flag }}",
4766
+ visibleWhen: "item.flag != ''",
4767
+ style: { fontSize: 11, color: "#8a909c", textAlign: "center" }
4768
+ }
4769
+ ]
4770
+ };
4771
+ var quotaLow = {
4772
+ version: 1,
4773
+ type: "popup",
4774
+ meta: { name: "\u642C\u5BB6\u6B21\u6570\u5C06\u5C3D \xB7 \u989D\u5EA6\u8FDB\u5EA6\u6761\uFF08\u590D\u523B\u8FD0\u8425 demo\uFF09" },
4775
+ stage: {
4776
+ width: 520,
4777
+ height: "auto",
4778
+ layout: "flow",
4779
+ mask: true,
4780
+ maskClosable: false,
4781
+ closeButton: { show: true, position: "top-right", offset: [14, 14] },
4782
+ style: { radius: 18 }
4783
+ },
4784
+ data: {
4785
+ // 实时统计走后端数据源。$source 填的是宿主注册过的数据源名(不是接口地址),
4786
+ // userStatistics 返回扁平对象,字段名就是后端的 snake_case
4787
+ stat: { $source: "userStatistics" },
4788
+ // 总额度:运营按当前套餐手填。为什么不走接口、以后怎么换,见文件头注释
4789
+ total: 30,
4790
+ lose: [
4791
+ { b: "\u6279\u91CF\u642C\u5BB6", tag: "\u5C06\u505C\u7528", sev: "lose", t: "\u989D\u5EA6\u5F52\u96F6\u540E\u65E0\u6CD5\u7EE7\u7EED\u4E0A\u8D27" },
4792
+ {
4793
+ b: "1688 \u4E00\u4EF6\u4EE3\u53D1",
4794
+ tag: "\u5C06\u505C\u7528",
4795
+ sev: "lose",
4796
+ t: "\u6E90\u5934\u8D27\u6E90\u65AD\u4F9B\uFF0C\u9009\u54C1\u3001\u94FA\u8D27\u3001\u4EE3\u53D1\u90FD\u8981\u624B\u52A8\u505A"
4797
+ },
4798
+ {
4799
+ b: "AI \u81EA\u52A8\u4F18\u5316",
4800
+ tag: "\u5C06\u6682\u505C",
4801
+ sev: "pause",
4802
+ t: "\u65B0\u5546\u54C1\u4E0D\u518D\u8865\u4E3B\u6807\u9898 / \u77ED\u6807\u9898 / \u767D\u5E95\u56FE"
4803
+ }
4804
+ ],
4805
+ // 价格档位从后端数据源取,后端返回几档就渲染几档,配置时不用知道数量
4806
+ tiers: { $source: "listRenewTiers", params: { scene: "quota_low" } }
4807
+ },
4808
+ state: { period: 1 },
4809
+ derived: { current: { list: "tiers", indexBy: "period" } },
4810
+ nodes: [
4811
+ // ===== 深色渐变头部:标签 + 2×2 成果格 =====
4812
+ {
4813
+ type: "flex",
4814
+ style: {
4815
+ direction: "column",
4816
+ background: "linear-gradient(135deg,#2b0f0f,#3a1414)",
4817
+ padding: "20px 22px 16px",
4818
+ gap: 13
4819
+ },
4820
+ children: [
4821
+ {
4822
+ type: "text",
4823
+ content: "\u26A1 \u642C\u5BB6\u6B21\u6570\u5373\u5C06\u7528\u5B8C",
4824
+ style: {
4825
+ // 不写 alignSelf 会被 flex 列拉满整行,标签必须按内容宽度
4826
+ alignSelf: "flex-start",
4827
+ background: "rgba(255,255,255,0.18)",
4828
+ color: "#ffffff",
4829
+ fontSize: 12,
4830
+ fontWeight: "700",
4831
+ radius: 6,
4832
+ padding: "5px 10px"
4833
+ }
4834
+ },
4835
+ {
4836
+ // 四格并列写死(扁平对象没法 bind 遍历),flex + wrap 排成 2×2。
4837
+ // 第一格的数字不是统计字段,而是「总额度 − 剩余次数」现算出来的
4838
+ type: "flex",
4839
+ style: { gap: 9, wrap: true },
4840
+ children: [
4841
+ achieveCell3("\u5DF2\u7528", USED, "\u6B21", "\u642C\u5BB6\u6B21\u6570"),
4842
+ achieveCell3("\u5DF2\u4E0A\u67B6", "{{ stat.move_success_count }}", "\u4E2A", "\u7D2F\u8BA1\u4E0A\u67B6\u5546\u54C1"),
4843
+ achieveCell3("\u65E5\u5747", "{{ stat.avg_daily_move_count }}", "\u4E2A", "\u5E73\u5747\u6BCF\u5929\u4E0A\u67B6"),
4844
+ achieveCell3(
4845
+ "\u5DF2\u8865\u9F50",
4846
+ "{{ stat.white_image_fill_count }}",
4847
+ "\u5F20",
4848
+ "\u767D\u5E95\u56FE \xB7 \u5408\u89C4\u53EF\u62A5\u6D3B\u52A8"
4849
+ )
4850
+ ]
4851
+ }
4852
+ ]
4853
+ },
4854
+ // ===== 白色 body =====
4855
+ {
4856
+ type: "flex",
4857
+ style: { direction: "column", background: "#ffffff", padding: "22px 26px 24px" },
4858
+ children: [
4859
+ // ===== 额度进度条:轨道 + 填充条 + 百分比表达式(本示例的重点)=====
4860
+ {
4861
+ type: "flex",
4862
+ style: {
4863
+ direction: "column",
4864
+ background: "#fff8f3",
4865
+ radius: 10,
4866
+ padding: "8px 13px 9px",
4867
+ gap: 4
4868
+ },
4869
+ children: [
4870
+ {
4871
+ // 标题行:左边「剩余 N 次」,右边「已用 X / 总额度 次」
4872
+ type: "flex",
4873
+ style: { align: "baseline", justify: "space-between" },
4874
+ children: [
4875
+ {
4876
+ type: "flex",
4877
+ style: { align: "baseline", gap: 3 },
4878
+ children: [
4879
+ {
4880
+ type: "text",
4881
+ content: "\u642C\u5BB6\u6B21\u6570\u5269\u4F59",
4882
+ style: { fontSize: 12, lineHeight: 1.35, color: "#3f4656" }
4883
+ },
4884
+ {
4885
+ type: "text",
4886
+ content: "{{ user.collectCount }} \u6B21",
4887
+ style: {
4888
+ fontSize: 15,
4889
+ fontWeight: "800",
4890
+ lineHeight: 1.25,
4891
+ color: "#cf1322"
4892
+ }
4893
+ }
4894
+ ]
4895
+ },
4896
+ {
4897
+ type: "text",
4898
+ content: `\u5DF2\u7528 ${USED} / {{ total }} \u6B21`,
4899
+ style: { fontSize: 10.5, lineHeight: 1.35, color: "#8a909c" }
4900
+ }
4901
+ ]
4902
+ },
4903
+ {
4904
+ // 轨道。用 flex 而不是 box —— box 的子节点走绝对定位、必须给 rect,
4905
+ // 填充条要的是「跟着父级流」;overflow: hidden 必须写,否则填充条的
4906
+ // 直角会戳出轨道的圆角外面
4907
+ type: "flex",
4908
+ style: {
4909
+ height: 5,
4910
+ radius: 4,
4911
+ background: "#ffe0cc",
4912
+ overflow: "hidden"
4913
+ },
4914
+ children: [
4915
+ {
4916
+ // 填充条。宽度是算出来的:已用 ÷ 总额度 × 100,节点 style 里的
4917
+ // 字符串同样走插值,所以百分比不需要后端多下发一个字段
4918
+ type: "box",
4919
+ style: {
4920
+ width: "{{ (total - user.collectCount) / total * 100 }}%",
4921
+ height: "100%",
4922
+ background: "linear-gradient(90deg,#f53f3f,#ff7a45)"
4923
+ }
4924
+ }
4925
+ ]
4926
+ }
4927
+ ]
4928
+ },
4929
+ {
4930
+ type: "text",
4931
+ content: "\u642C\u5BB6\u6B21\u6570\u7528\u5B8C\uFF0C\u4EA7\u54C1\u80FD\u529B\u5C06\u53D7\u9650\uFF1A",
4932
+ style: { fontSize: 15, fontWeight: "800", color: "#1f2533", marginTop: 17 }
4933
+ },
4934
+ {
4935
+ type: "repeat",
4936
+ bind: "lose",
4937
+ template: loseRow3,
4938
+ style: {
4939
+ direction: "column",
4940
+ marginTop: 12,
4941
+ background: "#ffe9e6",
4942
+ borderWidth: 1,
4943
+ borderStyle: "solid",
4944
+ borderColor: "#ffd0ca",
4945
+ radius: 12,
4946
+ padding: "7px 13px"
4947
+ }
4948
+ },
4949
+ {
4950
+ type: "flex",
4951
+ style: { align: "center", gap: 8, marginTop: 17, marginBottom: 9 },
4952
+ children: [
4953
+ {
4954
+ type: "text",
4955
+ content: "\u7EED\u6EE1\u989D\u5EA6 \xB7 \u9009\u62E9\u5468\u671F",
4956
+ style: { fontSize: 13.5, fontWeight: "700", color: "#747b89" }
4957
+ },
4958
+ {
4959
+ type: "text",
4960
+ content: "\u65B0\u4EBA\u9996\u8D2D\u4EF7",
4961
+ style: {
4962
+ alignSelf: "center",
4963
+ background: ORANGE4,
4964
+ color: "#ffffff",
4965
+ fontSize: 11,
4966
+ fontWeight: "800",
4967
+ radius: 5,
4968
+ padding: "2px 8px"
4969
+ }
4970
+ }
4971
+ ]
4972
+ },
4973
+ { type: "repeat", bind: "tiers", style: { gap: 8 }, template: tierCard3 },
4974
+ {
4975
+ type: "flex",
4976
+ style: {
4977
+ justify: "center",
4978
+ align: "center",
4979
+ gap: 5,
4980
+ height: 52,
4981
+ radius: 11,
4982
+ background: "linear-gradient(90deg,#f53f3f,#ff7a45)",
4983
+ marginTop: 15,
4984
+ cursor: "pointer"
4985
+ },
4986
+ action: {
4987
+ type: "sequence",
4988
+ actions: [
4989
+ {
4990
+ type: "track",
4991
+ event: "popup_renew_click",
4992
+ params: { period: "{{ current.key }}", stage: "quota_low" }
4993
+ },
4994
+ { type: "navigate", url: "{{ current.url }}" }
4995
+ ]
4996
+ },
4997
+ children: [
4998
+ {
4999
+ type: "text",
5000
+ content: "\u7EED\u6EE1\u989D\u5EA6 \xB7",
5001
+ style: { fontSize: 14, fontWeight: "800", color: "#ffffff" }
5002
+ },
5003
+ {
5004
+ type: "text",
5005
+ content: "{{ current.p }} \xA5{{ current.price }}",
5006
+ style: { fontSize: 16.5, fontWeight: "800", color: "#ffffff" }
5007
+ }
5008
+ ]
5009
+ },
5010
+ {
5011
+ type: "text",
5012
+ content: "\u5347\u7EA7\u6216\u67E5\u770B\u66F4\u591A\u4EA7\u54C1\u5957\u9910",
5013
+ style: {
5014
+ fontSize: 12.5,
5015
+ color: "#8a909c",
5016
+ textAlign: "center",
5017
+ marginTop: 11,
5018
+ cursor: "pointer"
5019
+ },
5020
+ action: { type: "track", event: "popup_more_plans" }
5021
+ }
5022
+ ]
5023
+ }
5024
+ ]
5025
+ };
5026
+ var quota_low_default = quotaLow;
5027
+
4596
5028
  // src/docs/examples/index.ts
4597
5029
  var HOTSPOT_BG = "rgba(255,68,51,0.16)";
4598
5030
  var imageHotspot = {
@@ -4844,6 +5276,11 @@ var examples = [
4844
5276
  label: "\u246B \u590D\u523B\u7EBF\u4E0A\u5F39\u7A97 \xB7 1 \u5206\u94B1\u534A\u5E74\u5361\uFF08\u52A8\u753B\u6700\u5BC6\u7684\u4E00\u4EFD\uFF09",
4845
5277
  value: "giftRedPacket",
4846
5278
  dsl: gift_red_packet_default
5279
+ },
5280
+ {
5281
+ label: "\u246C \u590D\u523B\u8FD0\u8425 demo \xB7 \u642C\u5BB6\u6B21\u6570\u5C06\u5C3D\uFF08\u989D\u5EA6\u8FDB\u5EA6\u6761\uFF09",
5282
+ value: "quotaLow",
5283
+ dsl: quota_low_default
4847
5284
  }
4848
5285
  ];
4849
5286
  var examples_default = examples;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaoxiu/marketing-dsl",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "type": "module",
5
5
  "description": "营销弹窗 DSL 解释器核心,纯逻辑无框架依赖",
6
6
  "license": "MIT",