@simpleapps-com/augur-web 1.0.7 → 1.0.9

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 (173) hide show
  1. package/dist/accordion.cjs.map +1 -1
  2. package/dist/accordion.js.map +1 -1
  3. package/dist/add-to-cart-button.cjs +46 -0
  4. package/dist/add-to-cart-button.cjs.map +1 -0
  5. package/dist/add-to-cart-button.d.cts +14 -0
  6. package/dist/add-to-cart-button.d.ts +14 -0
  7. package/dist/add-to-cart-button.js +46 -0
  8. package/dist/add-to-cart-button.js.map +1 -0
  9. package/dist/breadcrumbs.cjs.map +1 -1
  10. package/dist/breadcrumbs.d.cts +14 -0
  11. package/dist/breadcrumbs.d.ts +14 -0
  12. package/dist/breadcrumbs.js.map +1 -1
  13. package/dist/button.cjs +2 -2
  14. package/dist/button.d.cts +14 -1
  15. package/dist/button.d.ts +14 -1
  16. package/dist/button.js +1 -1
  17. package/dist/card.cjs.map +1 -1
  18. package/dist/card.js.map +1 -1
  19. package/dist/checkbox.cjs.map +1 -1
  20. package/dist/checkbox.js.map +1 -1
  21. package/dist/{chunk-FHS7SJEQ.js → chunk-3FSJ76CI.js} +1 -1
  22. package/dist/chunk-3FSJ76CI.js.map +1 -0
  23. package/dist/{chunk-GPDD67CJ.js → chunk-6JHTOVHH.js} +2 -2
  24. package/dist/chunk-6JHTOVHH.js.map +1 -0
  25. package/dist/{chunk-SXJP4G5U.cjs → chunk-AMGUJSB4.cjs} +1 -1
  26. package/dist/chunk-AMGUJSB4.cjs.map +1 -0
  27. package/dist/{chunk-BYHOMRXR.js → chunk-BMQGSDHH.js} +1 -1
  28. package/dist/chunk-BMQGSDHH.js.map +1 -0
  29. package/dist/{chunk-ND6U4UQQ.js → chunk-C7E3ITLU.js} +1 -1
  30. package/dist/chunk-C7E3ITLU.js.map +1 -0
  31. package/dist/chunk-DONF5PIE.js +47 -0
  32. package/dist/chunk-DONF5PIE.js.map +1 -0
  33. package/dist/{chunk-NWGXDXRV.cjs → chunk-DQJDDXSH.cjs} +1 -1
  34. package/dist/chunk-DQJDDXSH.cjs.map +1 -0
  35. package/dist/chunk-ECNNL5MU.cjs +145 -0
  36. package/dist/chunk-ECNNL5MU.cjs.map +1 -0
  37. package/dist/chunk-ECZR6SW3.cjs +47 -0
  38. package/dist/chunk-ECZR6SW3.cjs.map +1 -0
  39. package/dist/{chunk-PTAWV5SA.js → chunk-FHUB6XI5.js} +1 -1
  40. package/dist/chunk-FHUB6XI5.js.map +1 -0
  41. package/dist/{chunk-VT4JLAIE.cjs → chunk-I4Q2GZZK.cjs} +1 -1
  42. package/dist/{chunk-VT4JLAIE.cjs.map → chunk-I4Q2GZZK.cjs.map} +1 -1
  43. package/dist/{chunk-DAU3SFHM.js → chunk-LCNFPBPV.js} +1 -1
  44. package/dist/chunk-LCNFPBPV.js.map +1 -0
  45. package/dist/{chunk-VMOQCPK5.cjs → chunk-LNMPVCIY.cjs} +3 -3
  46. package/dist/{chunk-VMOQCPK5.cjs.map → chunk-LNMPVCIY.cjs.map} +1 -1
  47. package/dist/{chunk-3RVGVJDI.cjs → chunk-MGOH4OFM.cjs} +1 -1
  48. package/dist/chunk-MGOH4OFM.cjs.map +1 -0
  49. package/dist/{chunk-N2TV6QZO.cjs → chunk-QLSIUW3X.cjs} +1 -1
  50. package/dist/chunk-QLSIUW3X.cjs.map +1 -0
  51. package/dist/{chunk-Q6H6D3AN.cjs → chunk-SHF52AZM.cjs} +1 -1
  52. package/dist/chunk-SHF52AZM.cjs.map +1 -0
  53. package/dist/{chunk-CK53LO3J.cjs → chunk-U35O67ZA.cjs} +1 -1
  54. package/dist/chunk-U35O67ZA.cjs.map +1 -0
  55. package/dist/{chunk-DZ6HBEMA.js → chunk-X5RKGEDZ.js} +1 -1
  56. package/dist/chunk-X5RKGEDZ.js.map +1 -0
  57. package/dist/{chunk-SVF5VSZ2.js → chunk-YKVFAVK5.js} +1 -1
  58. package/dist/chunk-YKVFAVK5.js.map +1 -0
  59. package/dist/chunk-YR2SJWTF.js +145 -0
  60. package/dist/chunk-YR2SJWTF.js.map +1 -0
  61. package/dist/command.cjs +2 -2
  62. package/dist/command.cjs.map +1 -1
  63. package/dist/command.d.cts +7 -7
  64. package/dist/command.d.ts +7 -7
  65. package/dist/command.js +1 -1
  66. package/dist/command.js.map +1 -1
  67. package/dist/dialog.cjs +2 -2
  68. package/dist/dialog.js +1 -1
  69. package/dist/dropdown-menu.cjs.map +1 -1
  70. package/dist/dropdown-menu.js.map +1 -1
  71. package/dist/form-field.cjs +3 -3
  72. package/dist/form-field.d.cts +1 -0
  73. package/dist/form-field.d.ts +1 -0
  74. package/dist/form-field.js +2 -2
  75. package/dist/form-input.cjs +5 -5
  76. package/dist/form-input.cjs.map +1 -1
  77. package/dist/form-input.d.cts +8 -0
  78. package/dist/form-input.d.ts +8 -0
  79. package/dist/form-input.js +3 -3
  80. package/dist/form-input.js.map +1 -1
  81. package/dist/form-select.cjs +7 -7
  82. package/dist/form-select.cjs.map +1 -1
  83. package/dist/form-select.d.cts +14 -0
  84. package/dist/form-select.d.ts +14 -0
  85. package/dist/form-select.js +3 -3
  86. package/dist/form-select.js.map +1 -1
  87. package/dist/form-textarea.cjs +5 -5
  88. package/dist/form-textarea.cjs.map +1 -1
  89. package/dist/form-textarea.d.cts +1 -0
  90. package/dist/form-textarea.d.ts +1 -0
  91. package/dist/form-textarea.js +3 -3
  92. package/dist/form-textarea.js.map +1 -1
  93. package/dist/gtm.cjs +2 -128
  94. package/dist/gtm.cjs.map +1 -1
  95. package/dist/gtm.js +7 -133
  96. package/dist/gtm.js.map +1 -1
  97. package/dist/input.cjs +2 -2
  98. package/dist/input.js +1 -1
  99. package/dist/label.cjs +2 -2
  100. package/dist/label.js +1 -1
  101. package/dist/list-view.cjs.map +1 -1
  102. package/dist/list-view.d.cts +8 -0
  103. package/dist/list-view.d.ts +8 -0
  104. package/dist/list-view.js.map +1 -1
  105. package/dist/navigation-menu.cjs.map +1 -1
  106. package/dist/navigation-menu.js.map +1 -1
  107. package/dist/pagination.cjs +2 -2
  108. package/dist/pagination.cjs.map +1 -1
  109. package/dist/pagination.js +1 -1
  110. package/dist/pagination.js.map +1 -1
  111. package/dist/popover.cjs.map +1 -1
  112. package/dist/popover.js.map +1 -1
  113. package/dist/price-format.cjs +2 -2
  114. package/dist/price-format.d.cts +4 -0
  115. package/dist/price-format.d.ts +4 -0
  116. package/dist/price-format.js +1 -1
  117. package/dist/price.cjs +2 -2
  118. package/dist/price.cjs.map +1 -1
  119. package/dist/price.d.cts +17 -0
  120. package/dist/price.d.ts +17 -0
  121. package/dist/price.js +1 -1
  122. package/dist/price.js.map +1 -1
  123. package/dist/provider.cjs +31 -0
  124. package/dist/provider.cjs.map +1 -0
  125. package/dist/provider.d.cts +50 -0
  126. package/dist/provider.d.ts +50 -0
  127. package/dist/provider.js +31 -0
  128. package/dist/provider.js.map +1 -0
  129. package/dist/quantity-input.cjs.map +1 -1
  130. package/dist/quantity-input.d.cts +15 -0
  131. package/dist/quantity-input.d.ts +15 -0
  132. package/dist/quantity-input.js.map +1 -1
  133. package/dist/radio-group.cjs.map +1 -1
  134. package/dist/radio-group.js.map +1 -1
  135. package/dist/select.cjs +2 -2
  136. package/dist/select.js +1 -1
  137. package/dist/separator.cjs.map +1 -1
  138. package/dist/separator.js.map +1 -1
  139. package/dist/skeleton.cjs.map +1 -1
  140. package/dist/skeleton.js.map +1 -1
  141. package/dist/spinner.cjs +3 -41
  142. package/dist/spinner.cjs.map +1 -1
  143. package/dist/spinner.d.cts +1 -0
  144. package/dist/spinner.d.ts +1 -0
  145. package/dist/spinner.js +3 -41
  146. package/dist/spinner.js.map +1 -1
  147. package/dist/stock-label.cjs +85 -0
  148. package/dist/stock-label.cjs.map +1 -0
  149. package/dist/stock-label.d.cts +47 -0
  150. package/dist/stock-label.d.ts +47 -0
  151. package/dist/stock-label.js +85 -0
  152. package/dist/stock-label.js.map +1 -0
  153. package/dist/table.cjs.map +1 -1
  154. package/dist/table.js.map +1 -1
  155. package/dist/tabs.cjs.map +1 -1
  156. package/dist/tabs.js.map +1 -1
  157. package/dist/textarea.cjs +2 -2
  158. package/dist/textarea.js +1 -1
  159. package/package.json +24 -4
  160. package/dist/chunk-3RVGVJDI.cjs.map +0 -1
  161. package/dist/chunk-BYHOMRXR.js.map +0 -1
  162. package/dist/chunk-CK53LO3J.cjs.map +0 -1
  163. package/dist/chunk-DAU3SFHM.js.map +0 -1
  164. package/dist/chunk-DZ6HBEMA.js.map +0 -1
  165. package/dist/chunk-FHS7SJEQ.js.map +0 -1
  166. package/dist/chunk-GPDD67CJ.js.map +0 -1
  167. package/dist/chunk-N2TV6QZO.cjs.map +0 -1
  168. package/dist/chunk-ND6U4UQQ.js.map +0 -1
  169. package/dist/chunk-NWGXDXRV.cjs.map +0 -1
  170. package/dist/chunk-PTAWV5SA.js.map +0 -1
  171. package/dist/chunk-Q6H6D3AN.cjs.map +0 -1
  172. package/dist/chunk-SVF5VSZ2.js.map +0 -1
  173. package/dist/chunk-SXJP4G5U.cjs.map +0 -1
@@ -0,0 +1,145 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+ // src/gtm.tsx
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+ var _react = require('react');
12
+ var _jsxruntime = require('react/jsx-runtime');
13
+ var AnalyticsContext = _react.createContext.call(void 0, null);
14
+ function getDataLayer() {
15
+ if (typeof window === "undefined") return [];
16
+ if (!window.dataLayer) window.dataLayer = [];
17
+ return window.dataLayer;
18
+ }
19
+ function injectGtmScript(gtmId, strategy) {
20
+ if (typeof document === "undefined") return;
21
+ if (document.getElementById("gtm-script")) return;
22
+ const dataLayer = getDataLayer();
23
+ dataLayer.push({ "gtm.start": (/* @__PURE__ */ new Date()).getTime(), event: "gtm.js" });
24
+ const script = document.createElement("script");
25
+ script.id = "gtm-script";
26
+ script.src = `https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(gtmId)}`;
27
+ if (strategy === "lazyOnload") {
28
+ script.async = true;
29
+ script.defer = true;
30
+ } else {
31
+ script.async = true;
32
+ }
33
+ document.head.appendChild(script);
34
+ }
35
+ function AnalyticsProvider({
36
+ gtmId,
37
+ strategy = "afterInteractive",
38
+ consentRequired = false,
39
+ debug = false,
40
+ children
41
+ }) {
42
+ const [hasConsent, setHasConsent] = _react.useState.call(void 0, !consentRequired);
43
+ const [isLoaded, setIsLoaded] = _react.useState.call(void 0, false);
44
+ const injectedRef = _react.useRef.call(void 0, false);
45
+ const loadGtm = _react.useCallback.call(void 0, () => {
46
+ if (injectedRef.current) return;
47
+ injectedRef.current = true;
48
+ if (strategy === "lazyOnload" && typeof requestIdleCallback === "function") {
49
+ requestIdleCallback(() => {
50
+ injectGtmScript(gtmId, strategy);
51
+ setIsLoaded(true);
52
+ });
53
+ } else if (strategy === "afterInteractive") {
54
+ setTimeout(() => {
55
+ injectGtmScript(gtmId, strategy);
56
+ setIsLoaded(true);
57
+ }, 0);
58
+ } else {
59
+ injectGtmScript(gtmId, strategy);
60
+ setIsLoaded(true);
61
+ }
62
+ }, [gtmId, strategy]);
63
+ if (hasConsent && !injectedRef.current && typeof window !== "undefined") {
64
+ loadGtm();
65
+ }
66
+ const trackEvent = _react.useCallback.call(void 0,
67
+ (event, params) => {
68
+ const entry = { event, ...params };
69
+ if (debug) {
70
+ console.log("[Analytics]", entry);
71
+ }
72
+ getDataLayer().push(entry);
73
+ },
74
+ [debug]
75
+ );
76
+ const trackEcommerceEvent = _react.useCallback.call(void 0,
77
+ (event, params) => {
78
+ getDataLayer().push({ ecommerce: null });
79
+ const entry = { event, ecommerce: params };
80
+ if (debug) {
81
+ console.log("[Analytics ecommerce]", entry);
82
+ }
83
+ getDataLayer().push(entry);
84
+ },
85
+ [debug]
86
+ );
87
+ const grantConsent = _react.useCallback.call(void 0, () => {
88
+ setHasConsent(true);
89
+ loadGtm();
90
+ }, [loadGtm]);
91
+ const revokeConsent = _react.useCallback.call(void 0, () => {
92
+ setHasConsent(false);
93
+ }, []);
94
+ const value = _react.useMemo.call(void 0,
95
+ () => ({
96
+ trackEvent,
97
+ trackEcommerceEvent,
98
+ grantConsent,
99
+ revokeConsent,
100
+ hasConsent,
101
+ isLoaded
102
+ }),
103
+ [
104
+ trackEvent,
105
+ trackEcommerceEvent,
106
+ grantConsent,
107
+ revokeConsent,
108
+ hasConsent,
109
+ isLoaded
110
+ ]
111
+ );
112
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsContext.Provider, { value, children });
113
+ }
114
+ function useAnalytics() {
115
+ const context = _react.useContext.call(void 0, AnalyticsContext);
116
+ if (!context) {
117
+ throw new Error("useAnalytics must be used within an <AnalyticsProvider>");
118
+ }
119
+ return context;
120
+ }
121
+ function AnalyticsNoscript({ gtmId }) {
122
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "noscript", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
123
+ "iframe",
124
+ {
125
+ src: `https://www.googletagmanager.com/ns.html?id=${encodeURIComponent(gtmId)}`,
126
+ height: "0",
127
+ width: "0",
128
+ style: { display: "none", visibility: "hidden" },
129
+ title: "Google Tag Manager"
130
+ }
131
+ ) });
132
+ }
133
+ var GtmProvider = AnalyticsProvider;
134
+ var useGtm = useAnalytics;
135
+ var GtmNoscript = AnalyticsNoscript;
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+ exports.AnalyticsProvider = AnalyticsProvider; exports.useAnalytics = useAnalytics; exports.AnalyticsNoscript = AnalyticsNoscript; exports.GtmProvider = GtmProvider; exports.useGtm = useGtm; exports.GtmNoscript = GtmNoscript;
145
+ //# sourceMappingURL=chunk-ECNNL5MU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-ECNNL5MU.cjs","../src/gtm.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACAA;AACE;AACA;AACA;AACA;AACA;AACA;AAAA,8BACK;AAiOH,+CAAA;AA9IJ,IAAM,iBAAA,EAAmB,kCAAA,IAAgD,CAAA;AAYzE,SAAS,YAAA,CAAA,EAA0C;AAEjD,EAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa,OAAO,CAAC,CAAA;AAC3C,EAAA,GAAA,CAAI,CAAC,MAAA,CAAO,SAAA,EAAW,MAAA,CAAO,UAAA,EAAY,CAAC,CAAA;AAC3C,EAAA,OAAO,MAAA,CAAO,SAAA;AAChB;AAEA,SAAS,eAAA,CACP,KAAA,EACA,QAAA,EACM;AAEN,EAAA,GAAA,CAAI,OAAO,SAAA,IAAa,WAAA,EAAa,MAAA;AAGrC,EAAA,GAAA,CAAI,QAAA,CAAS,cAAA,CAAe,YAAY,CAAA,EAAG,MAAA;AAE3C,EAAA,MAAM,UAAA,EAAY,YAAA,CAAa,CAAA;AAC/B,EAAA,SAAA,CAAU,IAAA,CAAK,EAAE,WAAA,EAAA,iBAAa,IAAI,IAAA,CAAK,CAAA,CAAA,CAAE,OAAA,CAAQ,CAAA,EAAG,KAAA,EAAO,SAAS,CAAC,CAAA;AAErE,EAAA,MAAM,OAAA,EAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,EAAA,MAAA,CAAO,GAAA,EAAK,YAAA;AACZ,EAAA,MAAA,CAAO,IAAA,EAAM,CAAA,2CAAA,EAA8C,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AAErD,EAAA;AACd,IAAA;AACA,IAAA;AACV,EAAA;AAEU,IAAA;AACjB,EAAA;AAEgC,EAAA;AAClC;AAMkC;AAChC,EAAA;AACW,EAAA;AACO,EAAA;AACV,EAAA;AACR,EAAA;AACyB;AACoC,EAAA;AACf,EAAA;AACd,EAAA;AAEE,EAAA;AACP,IAAA;AACH,IAAA;AAEsD,IAAA;AAChD,MAAA;AACO,QAAA;AACf,QAAA;AACjB,MAAA;AACyC,IAAA;AAEzB,MAAA;AACgB,QAAA;AACf,QAAA;AACd,MAAA;AACC,IAAA;AAC0B,MAAA;AACf,MAAA;AAClB,IAAA;AACkB,EAAA;AAIqD,EAAA;AAC/D,IAAA;AACV,EAAA;AAEmB,EAAA;AACoC,IAAA;AAClB,MAAA;AACtB,MAAA;AACuB,QAAA;AAClC,MAAA;AACyB,MAAA;AAC3B,IAAA;AACM,IAAA;AACR,EAAA;AAE4B,EAAA;AAC0B,IAAA;AAEX,MAAA;AACE,MAAA;AAC9B,MAAA;AACiC,QAAA;AAC5C,MAAA;AACyB,MAAA;AAC3B,IAAA;AACM,IAAA;AACR,EAAA;AAEuC,EAAA;AACnB,IAAA;AACV,IAAA;AACE,EAAA;AAE4B,EAAA;AACnB,IAAA;AAChB,EAAA;AAES,EAAA;AACL,IAAA;AACL,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AAKE,EAAA;AAEJ;AAMsD;AACT,EAAA;AAC7B,EAAA;AAC6D,IAAA;AAC3E,EAAA;AACO,EAAA;AACT;AAWqE;AAG/D,EAAA;AAAC,IAAA;AAAA,IAAA;AAC8E,MAAA;AACtE,MAAA;AACD,MAAA;AACyC,MAAA;AACzC,MAAA;AAAA,IAAA;AAEV,EAAA;AAEJ;AAsB2B;AAEL;AAEK;ADpK4D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-ECNNL5MU.cjs","sourcesContent":[null,"\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Script loading strategy. */\nexport type AnalyticsStrategy = \"default\" | \"afterInteractive\" | \"lazyOnload\";\n\n/** GA4 standard e-commerce event names. */\nexport type EcommerceEvent =\n | \"view_item\"\n | \"view_item_list\"\n | \"select_item\"\n | \"add_to_cart\"\n | \"remove_from_cart\"\n | \"view_cart\"\n | \"begin_checkout\"\n | \"add_shipping_info\"\n | \"add_payment_info\"\n | \"purchase\"\n | \"refund\";\n\n/** GA4 e-commerce item shape. */\nexport interface EcommerceItem {\n item_id: string;\n item_name?: string;\n item_brand?: string;\n item_category?: string;\n item_variant?: string;\n price?: number;\n quantity?: number;\n index?: number;\n [key: string]: unknown;\n}\n\n/** Parameters for e-commerce events. */\nexport interface EcommerceParams {\n currency?: string;\n value?: number;\n items?: EcommerceItem[];\n transaction_id?: string;\n shipping?: number;\n tax?: number;\n coupon?: string;\n [key: string]: unknown;\n}\n\nexport interface AnalyticsProviderProps {\n /** GTM container ID (e.g. \"GTM-XXXXX\"). */\n gtmId: string;\n /** Script loading strategy. Default: \"afterInteractive\". */\n strategy?: AnalyticsStrategy;\n /** Delay GTM loading until consent is granted. Default: false. */\n consentRequired?: boolean;\n /** Log dataLayer pushes to console. Default: false. */\n debug?: boolean;\n children: ReactNode;\n}\n\nexport interface AnalyticsContextValue {\n /** Push a custom event to the dataLayer. */\n trackEvent: (event: string, params?: Record<string, unknown>) => void;\n /** Push a GA4 e-commerce event to the dataLayer. */\n trackEcommerceEvent: (\n event: EcommerceEvent,\n params: EcommerceParams,\n ) => void;\n /** Grant consent — loads GTM if consentRequired was true. */\n grantConsent: () => void;\n /** Revoke consent. Does not unload GTM (scripts can't be unloaded). */\n revokeConsent: () => void;\n /** Whether consent has been granted. */\n hasConsent: boolean;\n /** Whether the GTM script has been injected. */\n isLoaded: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\nconst AnalyticsContext = createContext<AnalyticsContextValue | null>(null);\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ndeclare global {\n interface Window {\n dataLayer?: Record<string, unknown>[];\n }\n}\n\nfunction getDataLayer(): Record<string, unknown>[] {\n /* v8 ignore next */\n if (typeof window === \"undefined\") return [];\n if (!window.dataLayer) window.dataLayer = [];\n return window.dataLayer;\n}\n\nfunction injectGtmScript(\n gtmId: string,\n strategy: AnalyticsStrategy,\n): void {\n /* v8 ignore next */\n if (typeof document === \"undefined\") return;\n\n // Prevent double-injection\n if (document.getElementById(\"gtm-script\")) return;\n\n const dataLayer = getDataLayer();\n dataLayer.push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n\n const script = document.createElement(\"script\");\n script.id = \"gtm-script\";\n script.src = `https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(gtmId)}`;\n\n if (strategy === \"lazyOnload\") {\n script.async = true;\n script.defer = true;\n } else {\n // \"default\" and \"afterInteractive\"\n script.async = true;\n }\n\n document.head.appendChild(script);\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport function AnalyticsProvider({\n gtmId,\n strategy = \"afterInteractive\",\n consentRequired = false,\n debug = false,\n children,\n}: AnalyticsProviderProps) {\n const [hasConsent, setHasConsent] = useState(!consentRequired);\n const [isLoaded, setIsLoaded] = useState(false);\n const injectedRef = useRef(false);\n\n const loadGtm = useCallback(() => {\n if (injectedRef.current) return;\n injectedRef.current = true;\n\n if (strategy === \"lazyOnload\" && typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n });\n } else if (strategy === \"afterInteractive\") {\n // Defer to after hydration\n setTimeout(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }, 0);\n } else {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }\n }, [gtmId, strategy]);\n\n // Auto-load when consent is not required or already granted\n /* v8 ignore next */\n if (hasConsent && !injectedRef.current && typeof window !== \"undefined\") {\n loadGtm();\n }\n\n const trackEvent = useCallback(\n (event: string, params?: Record<string, unknown>) => {\n const entry = { event, ...params };\n if (debug) {\n console.log(\"[Analytics]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const trackEcommerceEvent = useCallback(\n (event: EcommerceEvent, params: EcommerceParams) => {\n // Clear previous ecommerce data per GA4 best practices\n getDataLayer().push({ ecommerce: null });\n const entry = { event, ecommerce: params };\n if (debug) {\n console.log(\"[Analytics ecommerce]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const grantConsent = useCallback(() => {\n setHasConsent(true);\n loadGtm();\n }, [loadGtm]);\n\n const revokeConsent = useCallback(() => {\n setHasConsent(false);\n }, []);\n\n const value = useMemo<AnalyticsContextValue>(\n () => ({\n trackEvent,\n trackEcommerceEvent,\n grantConsent,\n revokeConsent,\n hasConsent,\n isLoaded,\n }),\n [\n trackEvent,\n trackEcommerceEvent,\n grantConsent,\n revokeConsent,\n hasConsent,\n isLoaded,\n ],\n );\n\n return (\n <AnalyticsContext.Provider value={value}>\n {children}\n </AnalyticsContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useAnalytics(): AnalyticsContextValue {\n const context = useContext(AnalyticsContext);\n if (!context) {\n throw new Error(\"useAnalytics must be used within an <AnalyticsProvider>\");\n }\n return context;\n}\n\n// ---------------------------------------------------------------------------\n// Noscript\n// ---------------------------------------------------------------------------\n\nexport interface AnalyticsNoscriptProps {\n /** GTM container ID (must match AnalyticsProvider). */\n gtmId: string;\n}\n\nexport function AnalyticsNoscript({ gtmId }: AnalyticsNoscriptProps) {\n return (\n <noscript>\n <iframe\n src={`https://www.googletagmanager.com/ns.html?id=${encodeURIComponent(gtmId)}`}\n height=\"0\"\n width=\"0\"\n style={{ display: \"none\", visibility: \"hidden\" }}\n title=\"Google Tag Manager\"\n />\n </noscript>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Backward-compatible aliases (from #59 GtmProvider)\n// ---------------------------------------------------------------------------\n\n/** @deprecated Use `AnalyticsStrategy` instead. */\nexport type GtmStrategy = AnalyticsStrategy;\n/** @deprecated Use `EcommerceEvent` instead. */\nexport type GtmEcommerceEvent = EcommerceEvent;\n/** @deprecated Use `EcommerceItem` instead. */\nexport type GtmItem = EcommerceItem;\n/** @deprecated Use `EcommerceParams` instead. */\nexport type GtmEcommerceParams = EcommerceParams;\n/** @deprecated Use `AnalyticsProviderProps` instead. */\nexport type GtmProviderProps = AnalyticsProviderProps;\n/** @deprecated Use `AnalyticsContextValue` instead. */\nexport type GtmContextValue = AnalyticsContextValue;\n/** @deprecated Use `AnalyticsNoscriptProps` instead. */\nexport type GtmNoscriptProps = AnalyticsNoscriptProps;\n\n/** @deprecated Use `AnalyticsProvider` instead. */\nexport const GtmProvider = AnalyticsProvider;\n/** @deprecated Use `useAnalytics` instead. */\nexport const useGtm = useAnalytics;\n/** @deprecated Use `AnalyticsNoscript` instead. */\nexport const GtmNoscript = AnalyticsNoscript;\n"]}
@@ -0,0 +1,47 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+ // src/spinner.tsx
4
+ var _web = require('@simpleapps-com/augur-utils/web');
5
+ var _jsxruntime = require('react/jsx-runtime');
6
+ var sizeClasses = {
7
+ sm: "h-3 w-3",
8
+ md: "h-4 w-4",
9
+ lg: "h-6 w-6"
10
+ };
11
+ var Spinner = ({ className, size = "md" }) => {
12
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
13
+ "svg",
14
+ {
15
+ className: _web.cn.call(void 0, "animate-spin", sizeClasses[size], className),
16
+ xmlns: "http://www.w3.org/2000/svg",
17
+ fill: "none",
18
+ viewBox: "0 0 24 24",
19
+ children: [
20
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21
+ "circle",
22
+ {
23
+ className: "opacity-25",
24
+ cx: "12",
25
+ cy: "12",
26
+ r: "10",
27
+ stroke: "currentColor",
28
+ strokeWidth: "4"
29
+ }
30
+ ),
31
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32
+ "path",
33
+ {
34
+ className: "opacity-75",
35
+ fill: "currentColor",
36
+ d: "m4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
37
+ }
38
+ )
39
+ ]
40
+ }
41
+ );
42
+ };
43
+
44
+
45
+
46
+ exports.Spinner = Spinner;
47
+ //# sourceMappingURL=chunk-ECZR6SW3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-ECZR6SW3.cjs","../src/spinner.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACFA,sDAAmB;AAgBf,+CAAA;AATJ,IAAM,YAAA,EAAc;AAAA,EAClB,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAGA,IAAM,QAAA,EAAU,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,KAAK,CAAA,EAAA,GAAoB;AAC5D,EAAA,uBACE,8BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,qBAAA,cAAG,EAAgB,WAAA,CAAY,IAAI,CAAA,EAAG,SAAS,CAAA;AAAA,MAC1D,KAAA,EAAM,4BAAA;AAAA,MACN,IAAA,EAAK,MAAA;AAAA,MACL,OAAA,EAAQ,WAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,6BAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,YAAA;AAAA,YACV,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,CAAA,EAAE,IAAA;AAAA,YACF,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY;AAAA,UAAA;AAAA,QACd,CAAA;AAAA,wBACA,6BAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,YAAA;AAAA,YACV,IAAA,EAAK,cAAA;AAAA,YACL,CAAA,EAAE;AAAA,UAAA;AAAA,QACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAA;ADKA;AACA;AACE;AACF,0BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-ECZR6SW3.cjs","sourcesContent":[null,"import { cn } from \"@simpleapps-com/augur-utils/web\";\n\ninterface SpinnerProps {\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeClasses = {\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-6 w-6\",\n};\n\n/** Animated SVG loading spinner. Sizes: `sm` (12px), `md` (16px), `lg` (24px). */\nconst Spinner = ({ className, size = \"md\" }: SpinnerProps) => {\n return (\n <svg\n className={cn(\"animate-spin\", sizeClasses[size], className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"m4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n};\n\nexport { Spinner };\n"]}
@@ -26,4 +26,4 @@ function createFormatPrice(config = {}) {
26
26
  export {
27
27
  createFormatPrice
28
28
  };
29
- //# sourceMappingURL=chunk-PTAWV5SA.js.map
29
+ //# sourceMappingURL=chunk-FHUB6XI5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/price-format.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Pure formatting logic — no React, no \"use client\".\n// Safe to import in server components.\n// ---------------------------------------------------------------------------\n\nexport interface PriceFormatConfig {\n /** ISO 4217 currency code. Default: `\"USD\"`. */\n currency?: string;\n /** BCP 47 locale. Default: `\"en-US\"`. */\n locale?: string;\n /** Decimal places. Default: `2`. */\n precision?: number;\n}\n\nexport interface FormatPriceOptions {\n /** Override precision for this call. */\n precision?: number;\n /** Multiply value by quantity before formatting. */\n quantity?: number;\n}\n\nconst formatDefaults: Required<PriceFormatConfig> = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n};\n\n/**\n * Create a pure price-formatting function. Server-safe (no React dependency).\n * Use {@link createPrice} in client components for the full Price component.\n */\nexport function createFormatPrice(\n config: PriceFormatConfig = {},\n): (value: number, options?: FormatPriceOptions) => string {\n const { currency, locale, precision: defaultPrecision } = {\n ...formatDefaults,\n ...config,\n };\n\n return function formatPrice(\n value: number,\n options?: FormatPriceOptions,\n ): string {\n const p = options?.precision ?? defaultPrecision;\n const displayValue =\n options?.quantity !== undefined ? value * options.quantity : value;\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: p,\n maximumFractionDigits: p,\n }).format(displayValue);\n };\n}\n"],"mappings":";;;AAqBA,IAAM,iBAA8C;AAAA,EAClD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb;AAMO,SAAS,kBACd,SAA4B,CAAC,GAC4B;AACzD,QAAM,EAAE,UAAU,QAAQ,WAAW,iBAAiB,IAAI;AAAA,IACxD,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SAAO,SAAS,YACd,OACA,SACQ;AACR,UAAM,IAAI,SAAS,aAAa;AAChC,UAAM,eACJ,SAAS,aAAa,SAAY,QAAQ,QAAQ,WAAW;AAC/D,WAAO,IAAI,KAAK,aAAa,QAAQ;AAAA,MACnC,OAAO;AAAA,MACP;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB,CAAC,EAAE,OAAO,YAAY;AAAA,EACxB;AACF;","names":[]}
@@ -26,4 +26,4 @@ function createFormatPrice(config = {}) {
26
26
 
27
27
 
28
28
  exports.createFormatPrice = createFormatPrice;
29
- //# sourceMappingURL=chunk-VT4JLAIE.cjs.map
29
+ //# sourceMappingURL=chunk-I4Q2GZZK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-VT4JLAIE.cjs","../src/price-format.ts"],"names":[],"mappings":"AAAA,6rBAAY;AACZ;AACA;ACmBA,IAAM,eAAA,EAA8C;AAAA,EAClD,QAAA,EAAU,KAAA;AAAA,EACV,MAAA,EAAQ,OAAA;AAAA,EACR,SAAA,EAAW;AACb,CAAA;AAEO,SAAS,iBAAA,CACd,OAAA,EAA4B,CAAC,CAAA,EAC4B;AACzD,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,SAAA,EAAW,iBAAiB,EAAA,EAAI;AAAA,IACxD,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,EACL,CAAA;AAEA,EAAA,OAAO,SAAS,WAAA,CACd,KAAA,EACA,OAAA,EACQ;AACR,IAAA,MAAM,EAAA,mCAAI,OAAA,2BAAS,WAAA,UAAa,kBAAA;AAChC,IAAA,MAAM,aAAA,kBACJ,OAAA,6BAAS,WAAA,IAAa,KAAA,EAAA,EAAY,MAAA,EAAQ,OAAA,CAAQ,SAAA,EAAW,KAAA;AAC/D,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AAAA,MACnC,KAAA,EAAO,UAAA;AAAA,MACP,QAAA;AAAA,MACA,qBAAA,EAAuB,CAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,IACzB,CAAC,CAAA,CAAE,MAAA,CAAO,YAAY,CAAA;AAAA,EACxB,CAAA;AACF;ADzBA;AACA;AACE;AACF,8CAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-VT4JLAIE.cjs","sourcesContent":[null,"// ---------------------------------------------------------------------------\n// Pure formatting logic — no React, no \"use client\".\n// Safe to import in server components.\n// ---------------------------------------------------------------------------\n\nexport interface PriceFormatConfig {\n /** ISO 4217 currency code. Default: `\"USD\"`. */\n currency?: string;\n /** BCP 47 locale. Default: `\"en-US\"`. */\n locale?: string;\n /** Decimal places. Default: `2`. */\n precision?: number;\n}\n\nexport interface FormatPriceOptions {\n /** Override precision for this call. */\n precision?: number;\n /** Multiply value by quantity before formatting. */\n quantity?: number;\n}\n\nconst formatDefaults: Required<PriceFormatConfig> = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n};\n\nexport function createFormatPrice(\n config: PriceFormatConfig = {},\n): (value: number, options?: FormatPriceOptions) => string {\n const { currency, locale, precision: defaultPrecision } = {\n ...formatDefaults,\n ...config,\n };\n\n return function formatPrice(\n value: number,\n options?: FormatPriceOptions,\n ): string {\n const p = options?.precision ?? defaultPrecision;\n const displayValue =\n options?.quantity !== undefined ? value * options.quantity : value;\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: p,\n maximumFractionDigits: p,\n }).format(displayValue);\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-I4Q2GZZK.cjs","../src/price-format.ts"],"names":[],"mappings":"AAAA,6rBAAY;AACZ;AACA;ACmBA,IAAM,eAAA,EAA8C;AAAA,EAClD,QAAA,EAAU,KAAA;AAAA,EACV,MAAA,EAAQ,OAAA;AAAA,EACR,SAAA,EAAW;AACb,CAAA;AAMO,SAAS,iBAAA,CACd,OAAA,EAA4B,CAAC,CAAA,EAC4B;AACzD,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,SAAA,EAAW,iBAAiB,EAAA,EAAI;AAAA,IACxD,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,EACL,CAAA;AAEA,EAAA,OAAO,SAAS,WAAA,CACd,KAAA,EACA,OAAA,EACQ;AACR,IAAA,MAAM,EAAA,mCAAI,OAAA,2BAAS,WAAA,UAAa,kBAAA;AAChC,IAAA,MAAM,aAAA,kBACJ,OAAA,6BAAS,WAAA,IAAa,KAAA,EAAA,EAAY,MAAA,EAAQ,OAAA,CAAQ,SAAA,EAAW,KAAA;AAC/D,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AAAA,MACnC,KAAA,EAAO,UAAA;AAAA,MACP,QAAA;AAAA,MACA,qBAAA,EAAuB,CAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,IACzB,CAAC,CAAA,CAAE,MAAA,CAAO,YAAY,CAAA;AAAA,EACxB,CAAA;AACF;AD7BA;AACA;AACE;AACF,8CAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-I4Q2GZZK.cjs","sourcesContent":[null,"// ---------------------------------------------------------------------------\n// Pure formatting logic — no React, no \"use client\".\n// Safe to import in server components.\n// ---------------------------------------------------------------------------\n\nexport interface PriceFormatConfig {\n /** ISO 4217 currency code. Default: `\"USD\"`. */\n currency?: string;\n /** BCP 47 locale. Default: `\"en-US\"`. */\n locale?: string;\n /** Decimal places. Default: `2`. */\n precision?: number;\n}\n\nexport interface FormatPriceOptions {\n /** Override precision for this call. */\n precision?: number;\n /** Multiply value by quantity before formatting. */\n quantity?: number;\n}\n\nconst formatDefaults: Required<PriceFormatConfig> = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n};\n\n/**\n * Create a pure price-formatting function. Server-safe (no React dependency).\n * Use {@link createPrice} in client components for the full Price component.\n */\nexport function createFormatPrice(\n config: PriceFormatConfig = {},\n): (value: number, options?: FormatPriceOptions) => string {\n const { currency, locale, precision: defaultPrecision } = {\n ...formatDefaults,\n ...config,\n };\n\n return function formatPrice(\n value: number,\n options?: FormatPriceOptions,\n ): string {\n const p = options?.precision ?? defaultPrecision;\n const displayValue =\n options?.quantity !== undefined ? value * options.quantity : value;\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: p,\n maximumFractionDigits: p,\n }).format(displayValue);\n };\n}\n"]}
@@ -25,4 +25,4 @@ Input.displayName = "Input";
25
25
  export {
26
26
  Input
27
27
  };
28
- //# sourceMappingURL=chunk-DAU3SFHM.js.map
28
+ //# sourceMappingURL=chunk-LCNFPBPV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/input.tsx"],"sourcesContent":["/** Styled text input with focus ring and disabled state. */\n\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"mappings":";;;AAGA,YAAY,WAAW;AACvB,SAAS,UAAU;AAOb;AAHN,IAAM,QAAc;AAAA,EAClB,CAAC,EAAE,WAAW,MAAM,GAAG,MAAM,GAAG,QAAQ;AACtC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;","names":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
2
2
 
3
3
 
4
- var _chunkCK53LO3Jcjs = require('./chunk-CK53LO3J.cjs');
4
+ var _chunkU35O67ZAcjs = require('./chunk-U35O67ZA.cjs');
5
5
 
6
6
  // src/form-field.tsx
7
7
  var _react = require('react'); var React = _interopRequireWildcard(_react);
@@ -10,7 +10,7 @@ var _jsxruntime = require('react/jsx-runtime');
10
10
  var FormField = React.forwardRef(
11
11
  ({ label, htmlFor, required, error, className, children }, ref) => {
12
12
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _web.cn.call(void 0, "space-y-2", className), children: [
13
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkCK53LO3Jcjs.Label, { htmlFor, children: [
13
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU35O67ZAcjs.Label, { htmlFor, children: [
14
14
  label,
15
15
  required && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-destructive", children: "*" })
16
16
  ] }),
@@ -24,4 +24,4 @@ FormField.displayName = "FormField";
24
24
 
25
25
 
26
26
  exports.FormField = FormField;
27
- //# sourceMappingURL=chunk-VMOQCPK5.cjs.map
27
+ //# sourceMappingURL=chunk-LNMPVCIY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-VMOQCPK5.cjs","../src/form-field.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACA;ACHA,2EAAuB;AACvB,sDAAmB;AAgBX,+CAAA;AAJR,IAAM,UAAA,EAAkB,KAAA,CAAA,UAAA;AAAA,EACtB,CAAC,EAAE,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,SAAS,CAAA,EAAG,GAAA,EAAA,GAAQ;AACjE,IAAA,uBACE,8BAAA,KAAC,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,qBAAA,WAAG,EAAa,SAAS,CAAA,EACjD,QAAA,EAAA;AAAA,sBAAA,8BAAA,uBAAC,EAAA,EAAM,OAAA,EACJ,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,SAAA,mBAAY,6BAAA,MAAC,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAmB,QAAA,EAAA,IAAA,CAAC;AAAA,MAAA,EAAA,CACnD,CAAA;AAAA,MACC,QAAA;AAAA,MACA,MAAA,mBAAS,6BAAA,GAAC,EAAA,EAAE,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,MAAA,CAAM;AAAA,IAAA,EAAA,CAC3D,CAAA;AAAA,EAEJ;AACF,CAAA;AACA,SAAA,CAAU,YAAA,EAAc,WAAA;ADPxB;AACA;AACE;AACF,8BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-VMOQCPK5.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { Label } from \"./label\";\n\nexport interface FormFieldProps {\n label: string;\n htmlFor: string;\n required?: boolean;\n error?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nconst FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ label, htmlFor, required, error, className, children }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)}>\n <Label htmlFor={htmlFor}>\n {label}\n {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {children}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n </div>\n );\n },\n);\nFormField.displayName = \"FormField\";\n\nexport { FormField };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-LNMPVCIY.cjs","../src/form-field.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACA;ACHA,2EAAuB;AACvB,sDAAmB;AAiBX,+CAAA;AAJR,IAAM,UAAA,EAAkB,KAAA,CAAA,UAAA;AAAA,EACtB,CAAC,EAAE,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,SAAA,EAAW,SAAS,CAAA,EAAG,GAAA,EAAA,GAAQ;AACjE,IAAA,uBACE,8BAAA,KAAC,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,qBAAA,WAAG,EAAa,SAAS,CAAA,EACjD,QAAA,EAAA;AAAA,sBAAA,8BAAA,uBAAC,EAAA,EAAM,OAAA,EACJ,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,SAAA,mBAAY,6BAAA,MAAC,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAmB,QAAA,EAAA,IAAA,CAAC;AAAA,MAAA,EAAA,CACnD,CAAA;AAAA,MACC,QAAA;AAAA,MACA,MAAA,mBAAS,6BAAA,GAAC,EAAA,EAAE,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,MAAA,CAAM;AAAA,IAAA,EAAA,CAC3D,CAAA;AAAA,EAEJ;AACF,CAAA;AACA,SAAA,CAAU,YAAA,EAAc,WAAA;ADRxB;AACA;AACE;AACF,8BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-LNMPVCIY.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { Label } from \"./label\";\n\nexport interface FormFieldProps {\n label: string;\n htmlFor: string;\n required?: boolean;\n error?: string;\n className?: string;\n children: React.ReactNode;\n}\n\n/** Base form layout: label + children + optional error message. */\nconst FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ label, htmlFor, required, error, className, children }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)}>\n <Label htmlFor={htmlFor}>\n {label}\n {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {children}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n </div>\n );\n },\n);\nFormField.displayName = \"FormField\";\n\nexport { FormField };\n"]}
@@ -24,4 +24,4 @@ Textarea.displayName = "Textarea";
24
24
 
25
25
 
26
26
  exports.Textarea = Textarea;
27
- //# sourceMappingURL=chunk-3RVGVJDI.cjs.map
27
+ //# sourceMappingURL=chunk-MGOH4OFM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-MGOH4OFM.cjs","../src/textarea.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ;AACA;ACCA,2EAAuB;AACvB,sDAAmB;AAOb,+CAAA;AAHN,IAAM,SAAA,EAAiB,KAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,GAAQ;AAChC,IAAA,uBACE,6BAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,qBAAA;AAAA,UACT,8PAAA;AAAA,UACA;AAAA,QACF,CAAA;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IACN,CAAA;AAAA,EAEJ;AACF,CAAA;AACA,QAAA,CAAS,YAAA,EAAc,UAAA;ADAvB;AACA;AACE;AACF,4BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-MGOH4OFM.cjs","sourcesContent":[null,"/** Styled textarea with focus ring and disabled state. */\n\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n"]}
@@ -50,4 +50,4 @@ Button.displayName = "Button";
50
50
 
51
51
 
52
52
  exports.buttonVariants = buttonVariants; exports.Button = Button;
53
- //# sourceMappingURL=chunk-N2TV6QZO.cjs.map
53
+ //# sourceMappingURL=chunk-QLSIUW3X.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-QLSIUW3X.cjs","../src/button.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ;AACA;ACAA,2EAAuB;AACvB,iDAAqB;AACrB,kEAAuC;AACvC,sDAAmB;AAwDb,+CAAA;AAlDN,IAAM,eAAA,EAAiB,yCAAA;AAAA,EACrB,qOAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,+DAAA;AAAA,QACF,WAAA,EACE,8EAAA;AAAA,QACF,OAAA,EACE,0FAAA;AAAA,QACF,SAAA,EACE,wEAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,MACR,CAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,6BAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM;AAAA,MACR;AAAA,IACF,CAAA;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA,IACR;AAAA,EACF;AACF,CAAA;AAkBA,IAAM,OAAA,EAAe,KAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,GAAQ;AAChE,IAAA,MAAM,KAAA,EAAO,QAAA,EAAU,gBAAA,EAAO,QAAA;AAC9B,IAAA,uBACE,6BAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,qBAAA,cAAG,CAAe,EAAE,OAAA,EAAS,IAAA,EAAM,UAAU,CAAC,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IACN,CAAA;AAAA,EAEJ;AACF,CAAA;AACA,MAAA,CAAO,YAAA,EAAc,QAAA;ADtBrB;AACA;AACE;AACA;AACF,iEAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-QLSIUW3X.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\n/**\n * CVA variants for the Button. Variants: default, destructive, outline,\n * secondary, ghost, link. Sizes: default, sm, lg, icon.\n */\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-11 px-4 py-2\",\n sm: \"h-9 rounded-md px-3 text-xs\",\n lg: \"h-12 rounded-md px-8\",\n icon: \"h-11 w-11\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\n/**\n * Styled button with variant/size props. Supports polymorphism via `asChild`.\n *\n * @example\n * ```tsx\n * <Button variant=\"outline\" size=\"sm\">Cancel</Button>\n * <Button asChild><Link href=\"/shop\">Browse</Link></Button>\n * ```\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"]}
@@ -131,4 +131,4 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
131
131
 
132
132
 
133
133
  exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator;
134
- //# sourceMappingURL=chunk-Q6H6D3AN.cjs.map
134
+ //# sourceMappingURL=chunk-SHF52AZM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-SHF52AZM.cjs","../src/select.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ;AACA;ACCA,2EAAuB;AACvB;AACE;AACA;AACA;AACA;AAAA,oCACK;AACP,kHAAiC;AACjC,sDAAmB;AAUjB,+CAAA;AARF,IAAM,OAAA,EAAyB,eAAA,CAAA,IAAA;AAC/B,IAAM,YAAA,EAA8B,eAAA,CAAA,KAAA;AACpC,IAAM,YAAA,EAA8B,eAAA,CAAA,KAAA;AAEpC,IAAM,cAAA,EAAsB,KAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBACpC,8BAAA;AAAA,EAAiB,eAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA;AAAA,MACT,yTAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACD,6BAAA,eAAiB,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAA,6BAAA,oBAAC,EAAA,EAAiB,SAAA,EAAU,qBAAA,CAAqB,EAAA,CACnD;AAAA,IAAA;AAAA,EAAA;AACF,CACD,CAAA;AACD,aAAA,CAAc,YAAA,EAA8B,eAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,qBAAA,EAA6B,KAAA,CAAA,UAAA,CAGjC,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBAC1B,6BAAA;AAAA,EAAiB,eAAA,CAAA,cAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,6BAAA,eAAC,EAAA,CAAA,CAAY;AAAA,EAAA;AACf,CACD,CAAA;AACD,oBAAA,CAAqB,YAAA,EAA8B,eAAA,CAAA,cAAA,CAAe,WAAA;AAElE,IAAM,uBAAA,EAA+B,KAAA,CAAA,UAAA,CAGnC,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBAC1B,6BAAA;AAAA,EAAiB,eAAA,CAAA,gBAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,6BAAA,iBAAC,EAAA,CAAA,CAAc;AAAA,EAAA;AACjB,CACD,CAAA;AACD,sBAAA,CAAuB,YAAA,EACL,eAAA,CAAA,gBAAA,CAAiB,WAAA;AAEnC,IAAM,cAAA,EAAsB,KAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBACzD,6BAAA,eAAiB,CAAA,MAAA,EAAhB,EACC,QAAA,kBAAA,8BAAA;AAAA,EAAiB,eAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA;AAAA,MACT,qcAAA;AAAA,MACA,SAAA,IAAa,SAAA,GACX,iIAAA;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,QAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA,6BAAA,oBAAC,EAAA,CAAA,CAAqB,CAAA;AAAA,sBACtB,6BAAA;AAAA,QAAiB,eAAA,CAAA,QAAA;AAAA,QAAhB;AAAA,UACC,SAAA,EAAW,qBAAA;AAAA,YACT,KAAA;AAAA,YACA,SAAA,IAAa,SAAA,GACX;AAAA,UACJ,CAAA;AAAA,UAEC;AAAA,QAAA;AAAA,MACH,CAAA;AAAA,sBACA,6BAAA,sBAAC,EAAA,CAAA,CAAuB;AAAA,IAAA;AAAA,EAAA;AAC1B,EAAA,CACF,CACD,CAAA;AACD,aAAA,CAAc,YAAA,EAA8B,eAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,YAAA,EAAoB,KAAA,CAAA,UAAA,CAGxB,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBAC1B,6BAAA;AAAA,EAAiB,eAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA,mCAAG,EAAqC,SAAS,CAAA;AAAA,IAC3D,GAAG;AAAA,EAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,YAAA,EAA8B,eAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,WAAA,EAAmB,KAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBACpC,8BAAA;AAAA,EAAiB,eAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA;AAAA,MACT,2NAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA,6BAAA,MAAC,EAAA,EAAK,SAAA,EAAU,+DAAA,EACd,QAAA,kBAAA,6BAAA,eAAiB,CAAA,aAAA,EAAhB,EACC,QAAA,kBAAA,6BAAA,WAAC,EAAA,EAAQ,SAAA,EAAU,UAAA,CAAU,EAAA,CAC/B,EAAA,CACF,CAAA;AAAA,sBACA,6BAAA,eAAiB,CAAA,QAAA,EAAhB,EAA0B,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AACtC,CACD,CAAA;AACD,UAAA,CAAW,YAAA,EAA8B,eAAA,CAAA,IAAA,CAAK,WAAA;AAE9C,IAAM,gBAAA,EAAwB,KAAA,CAAA,UAAA,CAG5B,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBAC1B,6BAAA;AAAA,EAAiB,eAAA,CAAA,SAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA,0BAAG,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA,EAAA;AACN,CACD,CAAA;AACD,eAAA,CAAgB,YAAA,EAA8B,eAAA,CAAA,SAAA,CAAU,WAAA;AD5BxD;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yYAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-SHF52AZM.cjs","sourcesContent":[null,"/** Styled wrapper around @radix-ui/react-select. See https://www.radix-ui.com/primitives/docs/components/select */\n\"use client\";\n\nimport * as React from \"react\";\nimport {\n LuChevronsUpDown,\n LuCheck,\n LuChevronDown,\n LuChevronUp,\n} from \"react-icons/lu\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <LuChevronsUpDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <LuChevronUp />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <LuChevronDown />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <LuCheck className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n"]}
@@ -22,4 +22,4 @@ Label.displayName = LabelPrimitive.Root.displayName;
22
22
 
23
23
 
24
24
  exports.Label = Label;
25
- //# sourceMappingURL=chunk-CK53LO3J.cjs.map
25
+ //# sourceMappingURL=chunk-U35O67ZA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-U35O67ZA.cjs","../src/label.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ;AACA;ACCA,2EAAuB;AACvB,8GAAgC;AAChC,kEAAuC;AACvC,sDAAmB;AAWjB,+CAAA;AATF,IAAM,cAAA,EAAgB,yCAAA;AAAA,EACpB;AACF,CAAA;AAEA,IAAM,MAAA,EAAc,KAAA,CAAA,UAAA,CAIlB,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBAC1B,6BAAA;AAAA,EAAgB,cAAA,CAAA,IAAA;AAAA,EAAf;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,qBAAA,aAAG,CAAc,CAAA,EAAG,SAAS,CAAA;AAAA,IACvC,GAAG;AAAA,EAAA;AACN,CACD,CAAA;AACD,KAAA,CAAM,YAAA,EAA6B,cAAA,CAAA,IAAA,CAAK,WAAA;ADHxC;AACA;AACE;AACF,sBAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-U35O67ZA.cjs","sourcesContent":[null,"/** Styled wrapper around @radix-ui/react-label. See https://www.radix-ui.com/primitives/docs/components/label */\n\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"]}
@@ -24,4 +24,4 @@ Textarea.displayName = "Textarea";
24
24
  export {
25
25
  Textarea
26
26
  };
27
- //# sourceMappingURL=chunk-DZ6HBEMA.js.map
27
+ //# sourceMappingURL=chunk-X5RKGEDZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/textarea.tsx"],"sourcesContent":["/** Styled textarea with focus ring and disabled state. */\n\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n"],"mappings":";;;AAGA,YAAY,WAAW;AACvB,SAAS,UAAU;AAOb;AAHN,IAAM,WAAiB;AAAA,EACrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;","names":[]}
@@ -50,4 +50,4 @@ export {
50
50
  buttonVariants,
51
51
  Button
52
52
  };
53
- //# sourceMappingURL=chunk-SVF5VSZ2.js.map
53
+ //# sourceMappingURL=chunk-YKVFAVK5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/button.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\n/**\n * CVA variants for the Button. Variants: default, destructive, outline,\n * secondary, ghost, link. Sizes: default, sm, lg, icon.\n */\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-11 px-4 py-2\",\n sm: \"h-9 rounded-md px-3 text-xs\",\n lg: \"h-12 rounded-md px-8\",\n icon: \"h-11 w-11\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\n/**\n * Styled button with variant/size props. Supports polymorphism via `asChild`.\n *\n * @example\n * ```tsx\n * <Button variant=\"outline\" size=\"sm\">Cancel</Button>\n * <Button asChild><Link href=\"/shop\">Browse</Link></Button>\n * ```\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,WAA8B;AACvC,SAAS,UAAU;AAwDb;AAlDN,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAkBA,IAAM,SAAe;AAAA,EACnB,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,GAAG,MAAM,GAAG,QAAQ;AAChE,UAAM,OAAO,UAAU,OAAO;AAC9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,QAC1D;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,OAAO,cAAc;","names":[]}
@@ -0,0 +1,145 @@
1
+ "use client";
2
+
3
+ // src/gtm.tsx
4
+ import {
5
+ createContext,
6
+ useCallback,
7
+ useContext,
8
+ useMemo,
9
+ useRef,
10
+ useState
11
+ } from "react";
12
+ import { jsx } from "react/jsx-runtime";
13
+ var AnalyticsContext = createContext(null);
14
+ function getDataLayer() {
15
+ if (typeof window === "undefined") return [];
16
+ if (!window.dataLayer) window.dataLayer = [];
17
+ return window.dataLayer;
18
+ }
19
+ function injectGtmScript(gtmId, strategy) {
20
+ if (typeof document === "undefined") return;
21
+ if (document.getElementById("gtm-script")) return;
22
+ const dataLayer = getDataLayer();
23
+ dataLayer.push({ "gtm.start": (/* @__PURE__ */ new Date()).getTime(), event: "gtm.js" });
24
+ const script = document.createElement("script");
25
+ script.id = "gtm-script";
26
+ script.src = `https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(gtmId)}`;
27
+ if (strategy === "lazyOnload") {
28
+ script.async = true;
29
+ script.defer = true;
30
+ } else {
31
+ script.async = true;
32
+ }
33
+ document.head.appendChild(script);
34
+ }
35
+ function AnalyticsProvider({
36
+ gtmId,
37
+ strategy = "afterInteractive",
38
+ consentRequired = false,
39
+ debug = false,
40
+ children
41
+ }) {
42
+ const [hasConsent, setHasConsent] = useState(!consentRequired);
43
+ const [isLoaded, setIsLoaded] = useState(false);
44
+ const injectedRef = useRef(false);
45
+ const loadGtm = useCallback(() => {
46
+ if (injectedRef.current) return;
47
+ injectedRef.current = true;
48
+ if (strategy === "lazyOnload" && typeof requestIdleCallback === "function") {
49
+ requestIdleCallback(() => {
50
+ injectGtmScript(gtmId, strategy);
51
+ setIsLoaded(true);
52
+ });
53
+ } else if (strategy === "afterInteractive") {
54
+ setTimeout(() => {
55
+ injectGtmScript(gtmId, strategy);
56
+ setIsLoaded(true);
57
+ }, 0);
58
+ } else {
59
+ injectGtmScript(gtmId, strategy);
60
+ setIsLoaded(true);
61
+ }
62
+ }, [gtmId, strategy]);
63
+ if (hasConsent && !injectedRef.current && typeof window !== "undefined") {
64
+ loadGtm();
65
+ }
66
+ const trackEvent = useCallback(
67
+ (event, params) => {
68
+ const entry = { event, ...params };
69
+ if (debug) {
70
+ console.log("[Analytics]", entry);
71
+ }
72
+ getDataLayer().push(entry);
73
+ },
74
+ [debug]
75
+ );
76
+ const trackEcommerceEvent = useCallback(
77
+ (event, params) => {
78
+ getDataLayer().push({ ecommerce: null });
79
+ const entry = { event, ecommerce: params };
80
+ if (debug) {
81
+ console.log("[Analytics ecommerce]", entry);
82
+ }
83
+ getDataLayer().push(entry);
84
+ },
85
+ [debug]
86
+ );
87
+ const grantConsent = useCallback(() => {
88
+ setHasConsent(true);
89
+ loadGtm();
90
+ }, [loadGtm]);
91
+ const revokeConsent = useCallback(() => {
92
+ setHasConsent(false);
93
+ }, []);
94
+ const value = useMemo(
95
+ () => ({
96
+ trackEvent,
97
+ trackEcommerceEvent,
98
+ grantConsent,
99
+ revokeConsent,
100
+ hasConsent,
101
+ isLoaded
102
+ }),
103
+ [
104
+ trackEvent,
105
+ trackEcommerceEvent,
106
+ grantConsent,
107
+ revokeConsent,
108
+ hasConsent,
109
+ isLoaded
110
+ ]
111
+ );
112
+ return /* @__PURE__ */ jsx(AnalyticsContext.Provider, { value, children });
113
+ }
114
+ function useAnalytics() {
115
+ const context = useContext(AnalyticsContext);
116
+ if (!context) {
117
+ throw new Error("useAnalytics must be used within an <AnalyticsProvider>");
118
+ }
119
+ return context;
120
+ }
121
+ function AnalyticsNoscript({ gtmId }) {
122
+ return /* @__PURE__ */ jsx("noscript", { children: /* @__PURE__ */ jsx(
123
+ "iframe",
124
+ {
125
+ src: `https://www.googletagmanager.com/ns.html?id=${encodeURIComponent(gtmId)}`,
126
+ height: "0",
127
+ width: "0",
128
+ style: { display: "none", visibility: "hidden" },
129
+ title: "Google Tag Manager"
130
+ }
131
+ ) });
132
+ }
133
+ var GtmProvider = AnalyticsProvider;
134
+ var useGtm = useAnalytics;
135
+ var GtmNoscript = AnalyticsNoscript;
136
+
137
+ export {
138
+ AnalyticsProvider,
139
+ useAnalytics,
140
+ AnalyticsNoscript,
141
+ GtmProvider,
142
+ useGtm,
143
+ GtmNoscript
144
+ };
145
+ //# sourceMappingURL=chunk-YR2SJWTF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gtm.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ReactNode } from \"react\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Script loading strategy. */\nexport type AnalyticsStrategy = \"default\" | \"afterInteractive\" | \"lazyOnload\";\n\n/** GA4 standard e-commerce event names. */\nexport type EcommerceEvent =\n | \"view_item\"\n | \"view_item_list\"\n | \"select_item\"\n | \"add_to_cart\"\n | \"remove_from_cart\"\n | \"view_cart\"\n | \"begin_checkout\"\n | \"add_shipping_info\"\n | \"add_payment_info\"\n | \"purchase\"\n | \"refund\";\n\n/** GA4 e-commerce item shape. */\nexport interface EcommerceItem {\n item_id: string;\n item_name?: string;\n item_brand?: string;\n item_category?: string;\n item_variant?: string;\n price?: number;\n quantity?: number;\n index?: number;\n [key: string]: unknown;\n}\n\n/** Parameters for e-commerce events. */\nexport interface EcommerceParams {\n currency?: string;\n value?: number;\n items?: EcommerceItem[];\n transaction_id?: string;\n shipping?: number;\n tax?: number;\n coupon?: string;\n [key: string]: unknown;\n}\n\nexport interface AnalyticsProviderProps {\n /** GTM container ID (e.g. \"GTM-XXXXX\"). */\n gtmId: string;\n /** Script loading strategy. Default: \"afterInteractive\". */\n strategy?: AnalyticsStrategy;\n /** Delay GTM loading until consent is granted. Default: false. */\n consentRequired?: boolean;\n /** Log dataLayer pushes to console. Default: false. */\n debug?: boolean;\n children: ReactNode;\n}\n\nexport interface AnalyticsContextValue {\n /** Push a custom event to the dataLayer. */\n trackEvent: (event: string, params?: Record<string, unknown>) => void;\n /** Push a GA4 e-commerce event to the dataLayer. */\n trackEcommerceEvent: (\n event: EcommerceEvent,\n params: EcommerceParams,\n ) => void;\n /** Grant consent — loads GTM if consentRequired was true. */\n grantConsent: () => void;\n /** Revoke consent. Does not unload GTM (scripts can't be unloaded). */\n revokeConsent: () => void;\n /** Whether consent has been granted. */\n hasConsent: boolean;\n /** Whether the GTM script has been injected. */\n isLoaded: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\nconst AnalyticsContext = createContext<AnalyticsContextValue | null>(null);\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ndeclare global {\n interface Window {\n dataLayer?: Record<string, unknown>[];\n }\n}\n\nfunction getDataLayer(): Record<string, unknown>[] {\n /* v8 ignore next */\n if (typeof window === \"undefined\") return [];\n if (!window.dataLayer) window.dataLayer = [];\n return window.dataLayer;\n}\n\nfunction injectGtmScript(\n gtmId: string,\n strategy: AnalyticsStrategy,\n): void {\n /* v8 ignore next */\n if (typeof document === \"undefined\") return;\n\n // Prevent double-injection\n if (document.getElementById(\"gtm-script\")) return;\n\n const dataLayer = getDataLayer();\n dataLayer.push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n\n const script = document.createElement(\"script\");\n script.id = \"gtm-script\";\n script.src = `https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(gtmId)}`;\n\n if (strategy === \"lazyOnload\") {\n script.async = true;\n script.defer = true;\n } else {\n // \"default\" and \"afterInteractive\"\n script.async = true;\n }\n\n document.head.appendChild(script);\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport function AnalyticsProvider({\n gtmId,\n strategy = \"afterInteractive\",\n consentRequired = false,\n debug = false,\n children,\n}: AnalyticsProviderProps) {\n const [hasConsent, setHasConsent] = useState(!consentRequired);\n const [isLoaded, setIsLoaded] = useState(false);\n const injectedRef = useRef(false);\n\n const loadGtm = useCallback(() => {\n if (injectedRef.current) return;\n injectedRef.current = true;\n\n if (strategy === \"lazyOnload\" && typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n });\n } else if (strategy === \"afterInteractive\") {\n // Defer to after hydration\n setTimeout(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }, 0);\n } else {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }\n }, [gtmId, strategy]);\n\n // Auto-load when consent is not required or already granted\n /* v8 ignore next */\n if (hasConsent && !injectedRef.current && typeof window !== \"undefined\") {\n loadGtm();\n }\n\n const trackEvent = useCallback(\n (event: string, params?: Record<string, unknown>) => {\n const entry = { event, ...params };\n if (debug) {\n console.log(\"[Analytics]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const trackEcommerceEvent = useCallback(\n (event: EcommerceEvent, params: EcommerceParams) => {\n // Clear previous ecommerce data per GA4 best practices\n getDataLayer().push({ ecommerce: null });\n const entry = { event, ecommerce: params };\n if (debug) {\n console.log(\"[Analytics ecommerce]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const grantConsent = useCallback(() => {\n setHasConsent(true);\n loadGtm();\n }, [loadGtm]);\n\n const revokeConsent = useCallback(() => {\n setHasConsent(false);\n }, []);\n\n const value = useMemo<AnalyticsContextValue>(\n () => ({\n trackEvent,\n trackEcommerceEvent,\n grantConsent,\n revokeConsent,\n hasConsent,\n isLoaded,\n }),\n [\n trackEvent,\n trackEcommerceEvent,\n grantConsent,\n revokeConsent,\n hasConsent,\n isLoaded,\n ],\n );\n\n return (\n <AnalyticsContext.Provider value={value}>\n {children}\n </AnalyticsContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useAnalytics(): AnalyticsContextValue {\n const context = useContext(AnalyticsContext);\n if (!context) {\n throw new Error(\"useAnalytics must be used within an <AnalyticsProvider>\");\n }\n return context;\n}\n\n// ---------------------------------------------------------------------------\n// Noscript\n// ---------------------------------------------------------------------------\n\nexport interface AnalyticsNoscriptProps {\n /** GTM container ID (must match AnalyticsProvider). */\n gtmId: string;\n}\n\nexport function AnalyticsNoscript({ gtmId }: AnalyticsNoscriptProps) {\n return (\n <noscript>\n <iframe\n src={`https://www.googletagmanager.com/ns.html?id=${encodeURIComponent(gtmId)}`}\n height=\"0\"\n width=\"0\"\n style={{ display: \"none\", visibility: \"hidden\" }}\n title=\"Google Tag Manager\"\n />\n </noscript>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Backward-compatible aliases (from #59 GtmProvider)\n// ---------------------------------------------------------------------------\n\n/** @deprecated Use `AnalyticsStrategy` instead. */\nexport type GtmStrategy = AnalyticsStrategy;\n/** @deprecated Use `EcommerceEvent` instead. */\nexport type GtmEcommerceEvent = EcommerceEvent;\n/** @deprecated Use `EcommerceItem` instead. */\nexport type GtmItem = EcommerceItem;\n/** @deprecated Use `EcommerceParams` instead. */\nexport type GtmEcommerceParams = EcommerceParams;\n/** @deprecated Use `AnalyticsProviderProps` instead. */\nexport type GtmProviderProps = AnalyticsProviderProps;\n/** @deprecated Use `AnalyticsContextValue` instead. */\nexport type GtmContextValue = AnalyticsContextValue;\n/** @deprecated Use `AnalyticsNoscriptProps` instead. */\nexport type GtmNoscriptProps = AnalyticsNoscriptProps;\n\n/** @deprecated Use `AnalyticsProvider` instead. */\nexport const GtmProvider = AnalyticsProvider;\n/** @deprecated Use `useAnalytics` instead. */\nexport const useGtm = useAnalytics;\n/** @deprecated Use `AnalyticsNoscript` instead. */\nexport const GtmNoscript = AnalyticsNoscript;\n"],"mappings":"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","names":[]}
package/dist/command.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkSXJP4G5Ucjs = require('./chunk-SXJP4G5U.cjs');
6
+ var _chunkAMGUJSB4cjs = require('./chunk-AMGUJSB4.cjs');
7
7
 
8
8
  // src/command.tsx
9
9
  var _react = require('react'); var React = _interopRequireWildcard(_react);
@@ -24,7 +24,7 @@ var Command = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
24
24
  ));
25
25
  Command.displayName = _cmdk.Command.displayName;
26
26
  var CommandDialog = ({ children, ...props }) => {
27
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSXJP4G5Ucjs.Dialog, { ...props, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSXJP4G5Ucjs.DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
27
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAMGUJSB4cjs.Dialog, { ...props, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAMGUJSB4cjs.DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
28
28
  };
29
29
  var CommandInput = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
30
30
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lu.LuSearch, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),