@shopbb/helium 0.7.6 → 0.8.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.
Files changed (36) hide show
  1. package/dist/analytics/index.d.ts +18 -0
  2. package/dist/analytics/index.d.ts.map +1 -0
  3. package/dist/analytics/index.js +16 -0
  4. package/dist/analytics/index.js.map +1 -0
  5. package/dist/analytics/queue.d.ts +31 -0
  6. package/dist/analytics/queue.d.ts.map +1 -0
  7. package/dist/analytics/queue.js +203 -0
  8. package/dist/analytics/queue.js.map +1 -0
  9. package/dist/analytics/react.d.ts +44 -0
  10. package/dist/analytics/react.d.ts.map +1 -0
  11. package/dist/analytics/react.js +114 -0
  12. package/dist/analytics/react.js.map +1 -0
  13. package/dist/analytics/types.d.ts +68 -0
  14. package/dist/analytics/types.d.ts.map +1 -0
  15. package/dist/analytics/types.js +7 -0
  16. package/dist/analytics/types.js.map +1 -0
  17. package/dist/components/AddToCartButton.d.ts +7 -0
  18. package/dist/components/AddToCartButton.d.ts.map +1 -1
  19. package/dist/components/AddToCartButton.js +13 -2
  20. package/dist/components/AddToCartButton.js.map +1 -1
  21. package/dist/components/DiscountComponents.d.ts +3 -0
  22. package/dist/components/DiscountComponents.d.ts.map +1 -1
  23. package/dist/components/DiscountComponents.js +4 -4
  24. package/dist/components/DiscountComponents.js.map +1 -1
  25. package/dist/react.d.ts +5 -0
  26. package/dist/react.d.ts.map +1 -1
  27. package/dist/react.js +10 -0
  28. package/dist/react.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/analytics/index.ts +27 -0
  31. package/src/analytics/queue.ts +224 -0
  32. package/src/analytics/react.tsx +146 -0
  33. package/src/analytics/types.ts +81 -0
  34. package/src/components/AddToCartButton.tsx +18 -0
  35. package/src/components/DiscountComponents.tsx +15 -3
  36. package/src/react.tsx +26 -0
@@ -90,6 +90,9 @@ export interface ClaimableDiscountListProps {
90
90
  /** 当前买家已领取的 claim 列表,用于标记「已领取 / 已使用」状态。
91
91
  * 传入时按钮自动切换为 disabled + claimedText / usedText。 */
92
92
  myClaims?: DiscountClaim[];
93
+ /** 点击「领取」时商家提供的实现。一般用 fetcher 提交到自己的 action route。
94
+ * 不提供时按钮点击无效果。 */
95
+ onClaim?: (discount: Discount) => Promise<void> | void;
93
96
  /** 一次最多渲染几张,默认 10 */
94
97
  first?: number;
95
98
  className?: string;
@@ -108,7 +111,7 @@ export interface ClaimItemState {
108
111
  }
109
112
 
110
113
  export function ClaimableDiscountList(props: ClaimableDiscountListProps) {
111
- const { discounts = [], myClaims = [], first = 10, className, emptyText = null, renderItem } = props;
114
+ const { discounts = [], myClaims = [], onClaim, first = 10, className, emptyText = null, renderItem } = props;
112
115
  if (discounts.length === 0) return <>{emptyText}</>;
113
116
 
114
117
  // 构造 code → claim 索引,O(1) 查询
@@ -133,7 +136,7 @@ export function ClaimableDiscountList(props: ClaimableDiscountListProps) {
133
136
  };
134
137
  return (
135
138
  <React.Fragment key={d.id}>
136
- {renderItem ? renderItem(d, state) : <DefaultClaimableItem discount={d} state={state} />}
139
+ {renderItem ? renderItem(d, state) : <DefaultClaimableItem discount={d} state={state} onClaim={onClaim} />}
137
140
  </React.Fragment>
138
141
  );
139
142
  })}
@@ -141,7 +144,15 @@ export function ClaimableDiscountList(props: ClaimableDiscountListProps) {
141
144
  );
142
145
  }
143
146
 
144
- function DefaultClaimableItem({ discount: d, state }: { discount: Discount; state: ClaimItemState }) {
147
+ function DefaultClaimableItem({
148
+ discount: d,
149
+ state,
150
+ onClaim,
151
+ }: {
152
+ discount: Discount;
153
+ state: ClaimItemState;
154
+ onClaim?: (discount: Discount) => Promise<void> | void;
155
+ }) {
145
156
  return (
146
157
  <div data-claimable-item data-claimed={state.claimed} data-used={state.used}>
147
158
  <div data-info>
@@ -159,6 +170,7 @@ function DefaultClaimableItem({ discount: d, state }: { discount: Discount; stat
159
170
  {d.code && (
160
171
  <DiscountClaimButton
161
172
  discount={d}
173
+ onClaim={onClaim}
162
174
  claimed={state.claimed}
163
175
  claimedText={state.used ? '已使用' : '已领取'}
164
176
  >
package/src/react.tsx CHANGED
@@ -274,6 +274,32 @@ function escapeHtml(s: string): string {
274
274
  /**
275
275
  * 把 head + react stream + tail 拼成一个 ReadableStream<Uint8Array>
276
276
  */
277
+ // ============================================================
278
+ // Tracking SDK re-export
279
+ // ============================================================
280
+ // 把 5 个核心事件(page_view / product_view / add_to_cart / checkout_start / checkout_paid)
281
+ // 批量发到 platform-api 的 /api/events。
282
+ //
283
+ // 与 components/AnalyticsProvider 解耦:
284
+ // - AnalyticsProvider 是商家用的事件总线(自定义 reporter)
285
+ // - TrackingProvider 是平台的标准埋点(发到 platform-api)
286
+ export {
287
+ TrackingProvider,
288
+ useTracking,
289
+ AnalyticsQueue,
290
+ } from './analytics';
291
+ export type {
292
+ TrackingProviderProps,
293
+ AnalyticsEvent,
294
+ AnalyticsConfig,
295
+ EventType as AnalyticsEventType,
296
+ TrackFn,
297
+ PageViewProps,
298
+ ProductViewProps,
299
+ AddToCartProps,
300
+ CheckoutStartProps,
301
+ } from './analytics';
302
+
277
303
  function composeStream(
278
304
  head: string,
279
305
  body: ReadableStream<Uint8Array>,