@sonordev/site-kit 6.1.0 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/agent-manifest.json +2 -2
  2. package/dist/{AnalyticsProvider-PO6SSJG2.mjs → AnalyticsProvider-33L4E6LO.mjs} +6 -6
  3. package/dist/{AnalyticsProvider-PO6SSJG2.mjs.map → AnalyticsProvider-33L4E6LO.mjs.map} +1 -1
  4. package/dist/{AnalyticsProvider-V6G45QG7.js → AnalyticsProvider-5G5AFHZN.js} +10 -10
  5. package/dist/{AnalyticsProvider-V6G45QG7.js.map → AnalyticsProvider-5G5AFHZN.js.map} +1 -1
  6. package/dist/{ArticleViewTracker-FE2YWHX4.js → ArticleViewTracker-U2KFUSZF.js} +6 -6
  7. package/dist/{ArticleViewTracker-FE2YWHX4.js.map → ArticleViewTracker-U2KFUSZF.js.map} +1 -1
  8. package/dist/{ArticleViewTracker-CML36HJZ.mjs → ArticleViewTracker-VZRMPK4S.mjs} +5 -5
  9. package/dist/{ArticleViewTracker-CML36HJZ.mjs.map → ArticleViewTracker-VZRMPK4S.mjs.map} +1 -1
  10. package/dist/ChatWidget-LH3QZYKR.mjs +16 -0
  11. package/dist/{ChatWidget-GVNDKGUU.mjs.map → ChatWidget-LH3QZYKR.mjs.map} +1 -1
  12. package/dist/ChatWidget-RUCQMCMN.js +25 -0
  13. package/dist/{ChatWidget-YL34KOZM.js.map → ChatWidget-RUCQMCMN.js.map} +1 -1
  14. package/dist/EngageWidget-34BQXU7K.mjs +12 -0
  15. package/dist/{EngageWidget-465O5XUV.mjs.map → EngageWidget-34BQXU7K.mjs.map} +1 -1
  16. package/dist/EngageWidget-X2CBW7DV.js +21 -0
  17. package/dist/{EngageWidget-IQRKRYPG.js.map → EngageWidget-X2CBW7DV.js.map} +1 -1
  18. package/dist/{FileField-F3PFKMIF.js → FileField-2MMV53BG.js} +6 -6
  19. package/dist/{FileField-F3PFKMIF.js.map → FileField-2MMV53BG.js.map} +1 -1
  20. package/dist/{FileField-FWKSBFRX.mjs → FileField-REUU36RJ.mjs} +5 -5
  21. package/dist/{FileField-FWKSBFRX.mjs.map → FileField-REUU36RJ.mjs.map} +1 -1
  22. package/dist/{FormSpotlight-DJQ3P3EX.js → FormSpotlight-Y27TPQ4G.js} +9 -9
  23. package/dist/{FormSpotlight-DJQ3P3EX.js.map → FormSpotlight-Y27TPQ4G.js.map} +1 -1
  24. package/dist/{FormSpotlight-K4LP2DMP.mjs → FormSpotlight-ZV3IS66K.mjs} +3 -3
  25. package/dist/{FormSpotlight-K4LP2DMP.mjs.map → FormSpotlight-ZV3IS66K.mjs.map} +1 -1
  26. package/dist/{FormStage-YKVTHPKV.mjs → FormStage-6NUGCDJR.mjs} +3 -3
  27. package/dist/{FormStage-YKVTHPKV.mjs.map → FormStage-6NUGCDJR.mjs.map} +1 -1
  28. package/dist/{FormStage-QMGZ3MOT.js → FormStage-K7Z6IEPM.js} +9 -9
  29. package/dist/{FormStage-QMGZ3MOT.js.map → FormStage-K7Z6IEPM.js.map} +1 -1
  30. package/dist/ManagedForm-EUDKMS5G.mjs +16 -0
  31. package/dist/{ManagedForm-P3L34ALG.mjs.map → ManagedForm-EUDKMS5G.mjs.map} +1 -1
  32. package/dist/ManagedForm-O67ILXN7.js +25 -0
  33. package/dist/{ManagedForm-MLPETHSQ.js.map → ManagedForm-O67ILXN7.js.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-C5YQH7MP.mjs → ManagedNewsletterForm-IGWTZW7X.mjs} +7 -7
  35. package/dist/{ManagedNewsletterForm-C5YQH7MP.mjs.map → ManagedNewsletterForm-IGWTZW7X.mjs.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-R4LLZBRQ.js → ManagedNewsletterForm-QBJODAIA.js} +8 -8
  37. package/dist/{ManagedNewsletterForm-R4LLZBRQ.js.map → ManagedNewsletterForm-QBJODAIA.js.map} +1 -1
  38. package/dist/{SignalCore-CLELIKFI.js → SignalCore-KQDRH44V.js} +11 -11
  39. package/dist/{SignalCore-CLELIKFI.js.map → SignalCore-KQDRH44V.js.map} +1 -1
  40. package/dist/{SignalCore-BNYNS6P7.mjs → SignalCore-UR4KVU5X.mjs} +5 -5
  41. package/dist/{SignalCore-BNYNS6P7.mjs.map → SignalCore-UR4KVU5X.mjs.map} +1 -1
  42. package/dist/SitemapSync-DQALPBTR.js +18 -0
  43. package/dist/{SitemapSync-P7XWL6VV.js.map → SitemapSync-DQALPBTR.js.map} +1 -1
  44. package/dist/SitemapSync-QYV3X5LH.mjs +9 -0
  45. package/dist/{SitemapSync-SIKJCK7N.mjs.map → SitemapSync-QYV3X5LH.mjs.map} +1 -1
  46. package/dist/analytics/index.js +9 -9
  47. package/dist/analytics/index.mjs +4 -4
  48. package/dist/articles/index.js +1 -1
  49. package/dist/articles/index.mjs +1 -1
  50. package/dist/articles/server-ui.js +1 -1
  51. package/dist/articles/server-ui.mjs +1 -1
  52. package/dist/{chunk-ESAPT5JT.mjs → chunk-22KPMJIQ.mjs} +3 -3
  53. package/dist/{chunk-ESAPT5JT.mjs.map → chunk-22KPMJIQ.mjs.map} +1 -1
  54. package/dist/{chunk-BDSNEB3O.mjs → chunk-3E7ZXPOB.mjs} +3 -3
  55. package/dist/{chunk-BDSNEB3O.mjs.map → chunk-3E7ZXPOB.mjs.map} +1 -1
  56. package/dist/{chunk-I4RU3RCS.js → chunk-3H3DTYFQ.js} +8 -8
  57. package/dist/{chunk-I4RU3RCS.js.map → chunk-3H3DTYFQ.js.map} +1 -1
  58. package/dist/{chunk-4EJI4IOX.mjs → chunk-3SHAY7PK.mjs} +14 -7
  59. package/dist/chunk-3SHAY7PK.mjs.map +1 -0
  60. package/dist/{chunk-DQXEYUTD.js → chunk-46GMNQWN.js} +3 -3
  61. package/dist/{chunk-DQXEYUTD.js.map → chunk-46GMNQWN.js.map} +1 -1
  62. package/dist/{chunk-ITVQV7DK.js → chunk-6K3YRSYN.js} +10 -10
  63. package/dist/{chunk-ITVQV7DK.js.map → chunk-6K3YRSYN.js.map} +1 -1
  64. package/dist/{chunk-RGCUND5Q.mjs → chunk-6ZMEJSNX.mjs} +4 -4
  65. package/dist/{chunk-RGCUND5Q.mjs.map → chunk-6ZMEJSNX.mjs.map} +1 -1
  66. package/dist/{chunk-OF4V7CSP.mjs → chunk-7DMAVD7W.mjs} +3 -3
  67. package/dist/{chunk-OF4V7CSP.mjs.map → chunk-7DMAVD7W.mjs.map} +1 -1
  68. package/dist/{chunk-RVFOUPK4.js → chunk-7IM7VG4E.js} +6 -6
  69. package/dist/{chunk-RVFOUPK4.js.map → chunk-7IM7VG4E.js.map} +1 -1
  70. package/dist/{chunk-QC6VQ2IW.mjs → chunk-7PCXI25T.mjs} +3 -3
  71. package/dist/{chunk-QC6VQ2IW.mjs.map → chunk-7PCXI25T.mjs.map} +1 -1
  72. package/dist/{chunk-6OSHL7H5.mjs → chunk-AG7MWWGP.mjs} +4 -4
  73. package/dist/{chunk-6OSHL7H5.mjs.map → chunk-AG7MWWGP.mjs.map} +1 -1
  74. package/dist/{chunk-KDNB6BYH.js → chunk-BRED7YSL.js} +11 -11
  75. package/dist/{chunk-KDNB6BYH.js.map → chunk-BRED7YSL.js.map} +1 -1
  76. package/dist/{chunk-KKTSAT7I.mjs → chunk-CJ5YPYAE.mjs} +4 -4
  77. package/dist/{chunk-KKTSAT7I.mjs.map → chunk-CJ5YPYAE.mjs.map} +1 -1
  78. package/dist/{chunk-YS7Y2PQG.js → chunk-D6VMDDQR.js} +8 -8
  79. package/dist/{chunk-YS7Y2PQG.js.map → chunk-D6VMDDQR.js.map} +1 -1
  80. package/dist/{chunk-YKNXBWPZ.mjs → chunk-DGWFHL35.mjs} +3 -3
  81. package/dist/{chunk-YKNXBWPZ.mjs.map → chunk-DGWFHL35.mjs.map} +1 -1
  82. package/dist/{chunk-AQUWWATH.js → chunk-EF7QCYLF.js} +4 -4
  83. package/dist/{chunk-AQUWWATH.js.map → chunk-EF7QCYLF.js.map} +1 -1
  84. package/dist/{chunk-L3GAEBJU.mjs → chunk-GZLMMX76.mjs} +3 -3
  85. package/dist/{chunk-L3GAEBJU.mjs.map → chunk-GZLMMX76.mjs.map} +1 -1
  86. package/dist/{chunk-Y53BIB7A.js → chunk-HH5EMIXK.js} +14 -14
  87. package/dist/{chunk-Y53BIB7A.js.map → chunk-HH5EMIXK.js.map} +1 -1
  88. package/dist/chunk-HQWPCX3N.mjs +6 -0
  89. package/dist/{chunk-ACKFL6WA.mjs.map → chunk-HQWPCX3N.mjs.map} +1 -1
  90. package/dist/{chunk-LF44SJPP.js → chunk-IPGIFBRN.js} +4 -4
  91. package/dist/{chunk-LF44SJPP.js.map → chunk-IPGIFBRN.js.map} +1 -1
  92. package/dist/{chunk-K4LLYQFZ.js → chunk-JZCG25XK.js} +14 -14
  93. package/dist/{chunk-K4LLYQFZ.js.map → chunk-JZCG25XK.js.map} +1 -1
  94. package/dist/{chunk-BGOPF6J2.js → chunk-ME5636V6.js} +3 -3
  95. package/dist/{chunk-BGOPF6J2.js.map → chunk-ME5636V6.js.map} +1 -1
  96. package/dist/{chunk-QF3XTEXV.js → chunk-MJTHYT3D.js} +4 -4
  97. package/dist/{chunk-QF3XTEXV.js.map → chunk-MJTHYT3D.js.map} +1 -1
  98. package/dist/{chunk-NMKUYGKK.mjs → chunk-MSSFRRXJ.mjs} +4 -4
  99. package/dist/{chunk-NMKUYGKK.mjs.map → chunk-MSSFRRXJ.mjs.map} +1 -1
  100. package/dist/{chunk-F6BYWNHU.mjs → chunk-MWX6QO7A.mjs} +3 -3
  101. package/dist/{chunk-F6BYWNHU.mjs.map → chunk-MWX6QO7A.mjs.map} +1 -1
  102. package/dist/{chunk-TMNFPVK5.js → chunk-NJSD5QY6.js} +7 -7
  103. package/dist/{chunk-TMNFPVK5.js.map → chunk-NJSD5QY6.js.map} +1 -1
  104. package/dist/{chunk-MZK5APTV.js → chunk-NK7ZWPAO.js} +18 -18
  105. package/dist/{chunk-MZK5APTV.js.map → chunk-NK7ZWPAO.js.map} +1 -1
  106. package/dist/{chunk-VK74LC4H.js → chunk-OB7K6EFK.js} +5 -5
  107. package/dist/{chunk-VK74LC4H.js.map → chunk-OB7K6EFK.js.map} +1 -1
  108. package/dist/{chunk-FQAZBJJO.mjs → chunk-OP42HO3Z.mjs} +3 -3
  109. package/dist/{chunk-FQAZBJJO.mjs.map → chunk-OP42HO3Z.mjs.map} +1 -1
  110. package/dist/{chunk-36NE4PSS.js → chunk-OTCJRVFJ.js} +3 -3
  111. package/dist/{chunk-36NE4PSS.js.map → chunk-OTCJRVFJ.js.map} +1 -1
  112. package/dist/{chunk-NDVKIDMN.js → chunk-OUZQL5PV.js} +4 -4
  113. package/dist/{chunk-NDVKIDMN.js.map → chunk-OUZQL5PV.js.map} +1 -1
  114. package/dist/chunk-QWUDHOUE.js +8 -0
  115. package/dist/{chunk-OXA4ZSX2.js.map → chunk-QWUDHOUE.js.map} +1 -1
  116. package/dist/{chunk-XKJLJLQ4.js → chunk-QYRJ4IQD.js} +25 -18
  117. package/dist/chunk-QYRJ4IQD.js.map +1 -0
  118. package/dist/{chunk-CJX2MC62.mjs → chunk-R2BHRDPZ.mjs} +3 -3
  119. package/dist/{chunk-CJX2MC62.mjs.map → chunk-R2BHRDPZ.mjs.map} +1 -1
  120. package/dist/{chunk-DXBSBWSS.js → chunk-S24WZNFP.js} +5 -5
  121. package/dist/{chunk-DXBSBWSS.js.map → chunk-S24WZNFP.js.map} +1 -1
  122. package/dist/{chunk-H5FCJBAN.mjs → chunk-U2DWXE2A.mjs} +3 -3
  123. package/dist/{chunk-H5FCJBAN.mjs.map → chunk-U2DWXE2A.mjs.map} +1 -1
  124. package/dist/{chunk-TA3TQTDA.mjs → chunk-U3SQBAUQ.mjs} +8 -8
  125. package/dist/{chunk-TA3TQTDA.mjs.map → chunk-U3SQBAUQ.mjs.map} +1 -1
  126. package/dist/{chunk-XGELGOF6.mjs → chunk-U577PJLH.mjs} +7 -7
  127. package/dist/{chunk-XGELGOF6.mjs.map → chunk-U577PJLH.mjs.map} +1 -1
  128. package/dist/{chunk-ZQJGCQHC.js → chunk-VNJTU6LG.js} +15 -15
  129. package/dist/{chunk-ZQJGCQHC.js.map → chunk-VNJTU6LG.js.map} +1 -1
  130. package/dist/{chunk-OQWAJBYA.mjs → chunk-VNSV5SY7.mjs} +3 -3
  131. package/dist/{chunk-OQWAJBYA.mjs.map → chunk-VNSV5SY7.mjs.map} +1 -1
  132. package/dist/{chunk-XOYQKFKI.mjs → chunk-VPZUQXZV.mjs} +4 -4
  133. package/dist/{chunk-XOYQKFKI.mjs.map → chunk-VPZUQXZV.mjs.map} +1 -1
  134. package/dist/{chunk-ZQSJK65K.mjs → chunk-WVNUOUQI.mjs} +3 -3
  135. package/dist/{chunk-ZQSJK65K.mjs.map → chunk-WVNUOUQI.mjs.map} +1 -1
  136. package/dist/{chunk-SDGS2R5O.js → chunk-WWJQGMMN.js} +12 -12
  137. package/dist/{chunk-SDGS2R5O.js.map → chunk-WWJQGMMN.js.map} +1 -1
  138. package/dist/{chunk-IDJY2JWU.js → chunk-Y4A4G5XJ.js} +5 -5
  139. package/dist/{chunk-IDJY2JWU.js.map → chunk-Y4A4G5XJ.js.map} +1 -1
  140. package/dist/{chunk-3DXJHMQM.mjs → chunk-YCA4KCRF.mjs} +3 -3
  141. package/dist/{chunk-3DXJHMQM.mjs.map → chunk-YCA4KCRF.mjs.map} +1 -1
  142. package/dist/{chunk-YP5WAFTI.mjs → chunk-YZMI7QQ2.mjs} +4 -4
  143. package/dist/{chunk-YP5WAFTI.mjs.map → chunk-YZMI7QQ2.mjs.map} +1 -1
  144. package/dist/cli/index.js +3 -3
  145. package/dist/cli/index.mjs +1 -1
  146. package/dist/client/index.js +4 -4
  147. package/dist/client/index.mjs +3 -3
  148. package/dist/commerce/index.js +57 -57
  149. package/dist/commerce/index.mjs +5 -5
  150. package/dist/cta-bar/CtaBar.d.ts +6 -3
  151. package/dist/cta-bar/CtaBar.d.ts.map +1 -1
  152. package/dist/cta-bar/index.js +3 -0
  153. package/dist/cta-bar/index.js.map +1 -1
  154. package/dist/cta-bar/index.mjs +3 -0
  155. package/dist/cta-bar/index.mjs.map +1 -1
  156. package/dist/cta-bar/styles.d.ts.map +1 -1
  157. package/dist/engage/ChatWidget.d.ts.map +1 -1
  158. package/dist/engage/index.js +10 -10
  159. package/dist/engage/index.mjs +7 -7
  160. package/dist/fleet/index.js +8 -8
  161. package/dist/fleet/index.mjs +4 -4
  162. package/dist/forms/index.js +16 -16
  163. package/dist/forms/index.mjs +9 -9
  164. package/dist/forms/server.js +10 -10
  165. package/dist/forms/server.mjs +8 -8
  166. package/dist/forms/static.js +7 -7
  167. package/dist/forms/static.mjs +6 -6
  168. package/dist/images/index.js +11 -11
  169. package/dist/images/index.mjs +4 -4
  170. package/dist/index.js +63 -63
  171. package/dist/index.mjs +9 -9
  172. package/dist/layout/client.js +8 -8
  173. package/dist/layout/client.mjs +7 -7
  174. package/dist/layout/index.js +10 -10
  175. package/dist/layout/index.mjs +8 -8
  176. package/dist/maps/index.js +5 -5
  177. package/dist/maps/index.mjs +3 -3
  178. package/dist/search/index.js +4 -4
  179. package/dist/search/index.mjs +3 -3
  180. package/dist/seo/client.js +5 -5
  181. package/dist/seo/client.mjs +4 -4
  182. package/dist/seo/index.js +5 -5
  183. package/dist/seo/index.mjs +4 -4
  184. package/dist/server/index.js +3 -3
  185. package/dist/server/index.mjs +2 -2
  186. package/dist/shared/version.d.ts +1 -1
  187. package/dist/signal/index.js +11 -11
  188. package/dist/signal/index.mjs +2 -2
  189. package/dist/sync/index.js +17 -17
  190. package/dist/sync/index.mjs +4 -4
  191. package/package.json +1 -1
  192. package/skills/site-kit/SKILL.md +3 -2
  193. package/dist/ChatWidget-GVNDKGUU.mjs +0 -16
  194. package/dist/ChatWidget-YL34KOZM.js +0 -25
  195. package/dist/EngageWidget-465O5XUV.mjs +0 -12
  196. package/dist/EngageWidget-IQRKRYPG.js +0 -21
  197. package/dist/ManagedForm-MLPETHSQ.js +0 -25
  198. package/dist/ManagedForm-P3L34ALG.mjs +0 -16
  199. package/dist/SitemapSync-P7XWL6VV.js +0 -18
  200. package/dist/SitemapSync-SIKJCK7N.mjs +0 -9
  201. package/dist/chunk-4EJI4IOX.mjs.map +0 -1
  202. package/dist/chunk-ACKFL6WA.mjs +0 -6
  203. package/dist/chunk-OXA4ZSX2.js +0 -8
  204. package/dist/chunk-XKJLJLQ4.js.map +0 -1
@@ -1,228 +1,228 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkY53BIB7A_js = require('../chunk-Y53BIB7A.js');
4
+ var chunkHH5EMIXK_js = require('../chunk-HH5EMIXK.js');
5
5
  require('../chunk-3SDMJMN2.js');
6
- require('../chunk-DXBSBWSS.js');
6
+ require('../chunk-S24WZNFP.js');
7
7
  require('../chunk-3DWIYCQX.js');
8
8
  require('../chunk-RC4WWQXR.js');
9
9
  require('../chunk-P4Y75QSU.js');
10
10
  require('../chunk-VJMPIRSD.js');
11
11
  require('../chunk-5RNAUYWE.js');
12
- require('../chunk-ZQJGCQHC.js');
13
- require('../chunk-LF44SJPP.js');
14
- require('../chunk-OXA4ZSX2.js');
12
+ require('../chunk-VNJTU6LG.js');
13
+ require('../chunk-IPGIFBRN.js');
14
+ require('../chunk-QWUDHOUE.js');
15
15
  require('../chunk-SNAQBZPT.js');
16
16
 
17
17
 
18
18
 
19
19
  Object.defineProperty(exports, "CalendarView", {
20
20
  enumerable: true,
21
- get: function () { return chunkY53BIB7A_js.CalendarView; }
21
+ get: function () { return chunkHH5EMIXK_js.CalendarView; }
22
22
  });
23
23
  Object.defineProperty(exports, "CapacityBadge", {
24
24
  enumerable: true,
25
- get: function () { return chunkY53BIB7A_js.CapacityBadge; }
25
+ get: function () { return chunkHH5EMIXK_js.CapacityBadge; }
26
26
  });
27
27
  Object.defineProperty(exports, "CheckoutForm", {
28
28
  enumerable: true,
29
- get: function () { return chunkY53BIB7A_js.CheckoutForm; }
29
+ get: function () { return chunkHH5EMIXK_js.CheckoutForm; }
30
30
  });
31
31
  Object.defineProperty(exports, "EventCalendar", {
32
32
  enumerable: true,
33
- get: function () { return chunkY53BIB7A_js.EventCalendar; }
33
+ get: function () { return chunkHH5EMIXK_js.EventCalendar; }
34
34
  });
35
35
  Object.defineProperty(exports, "EventCheckout", {
36
36
  enumerable: true,
37
- get: function () { return chunkY53BIB7A_js.EventCheckout; }
37
+ get: function () { return chunkHH5EMIXK_js.EventCheckout; }
38
38
  });
39
39
  Object.defineProperty(exports, "EventEmbed", {
40
40
  enumerable: true,
41
- get: function () { return chunkY53BIB7A_js.EventEmbed; }
41
+ get: function () { return chunkHH5EMIXK_js.EventEmbed; }
42
42
  });
43
43
  Object.defineProperty(exports, "EventJsonLd", {
44
44
  enumerable: true,
45
- get: function () { return chunkY53BIB7A_js.EventJsonLd; }
45
+ get: function () { return chunkHH5EMIXK_js.EventJsonLd; }
46
46
  });
47
47
  Object.defineProperty(exports, "EventModal", {
48
48
  enumerable: true,
49
- get: function () { return chunkY53BIB7A_js.EventModal; }
49
+ get: function () { return chunkHH5EMIXK_js.EventModal; }
50
50
  });
51
51
  Object.defineProperty(exports, "EventTile", {
52
52
  enumerable: true,
53
- get: function () { return chunkY53BIB7A_js.EventTile; }
53
+ get: function () { return chunkHH5EMIXK_js.EventTile; }
54
54
  });
55
55
  Object.defineProperty(exports, "EventsAgenda", {
56
56
  enumerable: true,
57
- get: function () { return chunkY53BIB7A_js.EventsAgenda; }
57
+ get: function () { return chunkHH5EMIXK_js.EventsAgenda; }
58
58
  });
59
59
  Object.defineProperty(exports, "EventsWidget", {
60
60
  enumerable: true,
61
- get: function () { return chunkY53BIB7A_js.EventsWidget; }
61
+ get: function () { return chunkHH5EMIXK_js.EventsWidget; }
62
62
  });
63
63
  Object.defineProperty(exports, "OfferingCard", {
64
64
  enumerable: true,
65
- get: function () { return chunkY53BIB7A_js.OfferingCard; }
65
+ get: function () { return chunkHH5EMIXK_js.OfferingCard; }
66
66
  });
67
67
  Object.defineProperty(exports, "OfferingList", {
68
68
  enumerable: true,
69
- get: function () { return chunkY53BIB7A_js.OfferingList; }
69
+ get: function () { return chunkHH5EMIXK_js.OfferingList; }
70
70
  });
71
71
  Object.defineProperty(exports, "ProductDetail", {
72
72
  enumerable: true,
73
- get: function () { return chunkY53BIB7A_js.ProductDetail; }
73
+ get: function () { return chunkHH5EMIXK_js.ProductDetail; }
74
74
  });
75
75
  Object.defineProperty(exports, "ProductEmbed", {
76
76
  enumerable: true,
77
- get: function () { return chunkY53BIB7A_js.ProductEmbed; }
77
+ get: function () { return chunkHH5EMIXK_js.ProductEmbed; }
78
78
  });
79
79
  Object.defineProperty(exports, "ProductGrid", {
80
80
  enumerable: true,
81
- get: function () { return chunkY53BIB7A_js.ProductGrid; }
81
+ get: function () { return chunkHH5EMIXK_js.ProductGrid; }
82
82
  });
83
83
  Object.defineProperty(exports, "ProductPage", {
84
84
  enumerable: true,
85
- get: function () { return chunkY53BIB7A_js.ProductPage; }
85
+ get: function () { return chunkHH5EMIXK_js.ProductPage; }
86
86
  });
87
87
  Object.defineProperty(exports, "RegistrationForm", {
88
88
  enumerable: true,
89
- get: function () { return chunkY53BIB7A_js.RegistrationForm; }
89
+ get: function () { return chunkHH5EMIXK_js.RegistrationForm; }
90
90
  });
91
91
  Object.defineProperty(exports, "SizeChart", {
92
92
  enumerable: true,
93
- get: function () { return chunkY53BIB7A_js.SizeChart; }
93
+ get: function () { return chunkHH5EMIXK_js.SizeChart; }
94
94
  });
95
95
  Object.defineProperty(exports, "UpcomingEvents", {
96
96
  enumerable: true,
97
- get: function () { return chunkY53BIB7A_js.UpcomingEvents; }
97
+ get: function () { return chunkHH5EMIXK_js.UpcomingEvents; }
98
98
  });
99
99
  Object.defineProperty(exports, "createCheckoutSession", {
100
100
  enumerable: true,
101
- get: function () { return chunkY53BIB7A_js.createCheckoutSession; }
101
+ get: function () { return chunkHH5EMIXK_js.createCheckoutSession; }
102
102
  });
103
103
  Object.defineProperty(exports, "createPaymentIntent", {
104
104
  enumerable: true,
105
- get: function () { return chunkY53BIB7A_js.createPaymentIntent; }
105
+ get: function () { return chunkHH5EMIXK_js.createPaymentIntent; }
106
106
  });
107
107
  Object.defineProperty(exports, "fetchActiveProcessor", {
108
108
  enumerable: true,
109
- get: function () { return chunkY53BIB7A_js.fetchActiveProcessor; }
109
+ get: function () { return chunkHH5EMIXK_js.fetchActiveProcessor; }
110
110
  });
111
111
  Object.defineProperty(exports, "fetchCategories", {
112
112
  enumerable: true,
113
- get: function () { return chunkY53BIB7A_js.fetchCategories; }
113
+ get: function () { return chunkHH5EMIXK_js.fetchCategories; }
114
114
  });
115
115
  Object.defineProperty(exports, "fetchLatestOffering", {
116
116
  enumerable: true,
117
- get: function () { return chunkY53BIB7A_js.fetchLatestOffering; }
117
+ get: function () { return chunkHH5EMIXK_js.fetchLatestOffering; }
118
118
  });
119
119
  Object.defineProperty(exports, "fetchNextEvent", {
120
120
  enumerable: true,
121
- get: function () { return chunkY53BIB7A_js.fetchNextEvent; }
121
+ get: function () { return chunkHH5EMIXK_js.fetchNextEvent; }
122
122
  });
123
123
  Object.defineProperty(exports, "fetchOffering", {
124
124
  enumerable: true,
125
- get: function () { return chunkY53BIB7A_js.fetchOffering; }
125
+ get: function () { return chunkHH5EMIXK_js.fetchOffering; }
126
126
  });
127
127
  Object.defineProperty(exports, "fetchOfferings", {
128
128
  enumerable: true,
129
- get: function () { return chunkY53BIB7A_js.fetchOfferings; }
129
+ get: function () { return chunkHH5EMIXK_js.fetchOfferings; }
130
130
  });
131
131
  Object.defineProperty(exports, "fetchProcessorConfig", {
132
132
  enumerable: true,
133
- get: function () { return chunkY53BIB7A_js.fetchProcessorConfig; }
133
+ get: function () { return chunkHH5EMIXK_js.fetchProcessorConfig; }
134
134
  });
135
135
  Object.defineProperty(exports, "fetchProductBySlug", {
136
136
  enumerable: true,
137
- get: function () { return chunkY53BIB7A_js.fetchProductBySlug; }
137
+ get: function () { return chunkHH5EMIXK_js.fetchProductBySlug; }
138
138
  });
139
139
  Object.defineProperty(exports, "fetchProducts", {
140
140
  enumerable: true,
141
- get: function () { return chunkY53BIB7A_js.fetchProducts; }
141
+ get: function () { return chunkHH5EMIXK_js.fetchProducts; }
142
142
  });
143
143
  Object.defineProperty(exports, "fetchProductsPublic", {
144
144
  enumerable: true,
145
- get: function () { return chunkY53BIB7A_js.fetchProductsPublic; }
145
+ get: function () { return chunkHH5EMIXK_js.fetchProductsPublic; }
146
146
  });
147
147
  Object.defineProperty(exports, "fetchServices", {
148
148
  enumerable: true,
149
- get: function () { return chunkY53BIB7A_js.fetchServices; }
149
+ get: function () { return chunkHH5EMIXK_js.fetchServices; }
150
150
  });
151
151
  Object.defineProperty(exports, "fetchShippingRates", {
152
152
  enumerable: true,
153
- get: function () { return chunkY53BIB7A_js.fetchShippingRates; }
153
+ get: function () { return chunkHH5EMIXK_js.fetchShippingRates; }
154
154
  });
155
155
  Object.defineProperty(exports, "fetchUpcomingEvents", {
156
156
  enumerable: true,
157
- get: function () { return chunkY53BIB7A_js.fetchUpcomingEvents; }
157
+ get: function () { return chunkHH5EMIXK_js.fetchUpcomingEvents; }
158
158
  });
159
159
  Object.defineProperty(exports, "formatDate", {
160
160
  enumerable: true,
161
- get: function () { return chunkY53BIB7A_js.formatDate; }
161
+ get: function () { return chunkHH5EMIXK_js.formatDate; }
162
162
  });
163
163
  Object.defineProperty(exports, "formatDateRange", {
164
164
  enumerable: true,
165
- get: function () { return chunkY53BIB7A_js.formatDateRange; }
165
+ get: function () { return chunkHH5EMIXK_js.formatDateRange; }
166
166
  });
167
167
  Object.defineProperty(exports, "formatDateTime", {
168
168
  enumerable: true,
169
- get: function () { return chunkY53BIB7A_js.formatDateTime; }
169
+ get: function () { return chunkHH5EMIXK_js.formatDateTime; }
170
170
  });
171
171
  Object.defineProperty(exports, "formatPrice", {
172
172
  enumerable: true,
173
- get: function () { return chunkY53BIB7A_js.formatPrice; }
173
+ get: function () { return chunkHH5EMIXK_js.formatPrice; }
174
174
  });
175
175
  Object.defineProperty(exports, "formatTime", {
176
176
  enumerable: true,
177
- get: function () { return chunkY53BIB7A_js.formatTime; }
177
+ get: function () { return chunkHH5EMIXK_js.formatTime; }
178
178
  });
179
179
  Object.defineProperty(exports, "getOfferingUrl", {
180
180
  enumerable: true,
181
- get: function () { return chunkY53BIB7A_js.getOfferingUrl; }
181
+ get: function () { return chunkHH5EMIXK_js.getOfferingUrl; }
182
182
  });
183
183
  Object.defineProperty(exports, "getRelativeTimeUntil", {
184
184
  enumerable: true,
185
- get: function () { return chunkY53BIB7A_js.getRelativeTimeUntil; }
185
+ get: function () { return chunkHH5EMIXK_js.getRelativeTimeUntil; }
186
186
  });
187
187
  Object.defineProperty(exports, "getSpotsRemaining", {
188
188
  enumerable: true,
189
- get: function () { return chunkY53BIB7A_js.getSpotsRemaining; }
189
+ get: function () { return chunkHH5EMIXK_js.getSpotsRemaining; }
190
190
  });
191
191
  Object.defineProperty(exports, "googleCalendarUrl", {
192
192
  enumerable: true,
193
- get: function () { return chunkY53BIB7A_js.googleCalendarUrl; }
193
+ get: function () { return chunkHH5EMIXK_js.googleCalendarUrl; }
194
194
  });
195
195
  Object.defineProperty(exports, "icsForEvent", {
196
196
  enumerable: true,
197
- get: function () { return chunkY53BIB7A_js.icsForEvent; }
197
+ get: function () { return chunkHH5EMIXK_js.icsForEvent; }
198
198
  });
199
199
  Object.defineProperty(exports, "icsResponse", {
200
200
  enumerable: true,
201
- get: function () { return chunkY53BIB7A_js.icsResponse; }
201
+ get: function () { return chunkHH5EMIXK_js.icsResponse; }
202
202
  });
203
203
  Object.defineProperty(exports, "isEventSoldOut", {
204
204
  enumerable: true,
205
- get: function () { return chunkY53BIB7A_js.isEventSoldOut; }
205
+ get: function () { return chunkHH5EMIXK_js.isEventSoldOut; }
206
206
  });
207
207
  Object.defineProperty(exports, "registerForEvent", {
208
208
  enumerable: true,
209
- get: function () { return chunkY53BIB7A_js.registerForEvent; }
209
+ get: function () { return chunkHH5EMIXK_js.registerForEvent; }
210
210
  });
211
211
  Object.defineProperty(exports, "shippingSelection", {
212
212
  enumerable: true,
213
- get: function () { return chunkY53BIB7A_js.shippingSelection; }
213
+ get: function () { return chunkHH5EMIXK_js.shippingSelection; }
214
214
  });
215
215
  Object.defineProperty(exports, "useEventModal", {
216
216
  enumerable: true,
217
- get: function () { return chunkY53BIB7A_js.useEventModal; }
217
+ get: function () { return chunkHH5EMIXK_js.useEventModal; }
218
218
  });
219
219
  Object.defineProperty(exports, "validateAddress", {
220
220
  enumerable: true,
221
- get: function () { return chunkY53BIB7A_js.validateAddress; }
221
+ get: function () { return chunkHH5EMIXK_js.validateAddress; }
222
222
  });
223
223
  Object.defineProperty(exports, "validateDiscountCode", {
224
224
  enumerable: true,
225
- get: function () { return chunkY53BIB7A_js.validateDiscountCode; }
225
+ get: function () { return chunkHH5EMIXK_js.validateDiscountCode; }
226
226
  });
227
227
  //# sourceMappingURL=index.js.map
228
228
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,15 @@
1
1
  'use client';
2
- export { CalendarView, CapacityBadge, CheckoutForm, EventCalendar, EventCheckout, EventEmbed, EventJsonLd, EventModal, EventTile, EventsAgenda, EventsWidget, OfferingCard, OfferingList, ProductDetail, ProductEmbed, ProductGrid, ProductPage, RegistrationForm, SizeChart, UpcomingEvents, createCheckoutSession, createPaymentIntent, fetchActiveProcessor, fetchCategories, fetchLatestOffering, fetchNextEvent, fetchOffering, fetchOfferings, fetchProcessorConfig, fetchProductBySlug, fetchProducts, fetchProductsPublic, fetchServices, fetchShippingRates, fetchUpcomingEvents, formatDate, formatDateRange, formatDateTime, formatPrice, formatTime, getOfferingUrl, getRelativeTimeUntil, getSpotsRemaining, googleCalendarUrl, icsForEvent, icsResponse, isEventSoldOut, registerForEvent, shippingSelection, useEventModal, validateAddress, validateDiscountCode } from '../chunk-KKTSAT7I.mjs';
2
+ export { CalendarView, CapacityBadge, CheckoutForm, EventCalendar, EventCheckout, EventEmbed, EventJsonLd, EventModal, EventTile, EventsAgenda, EventsWidget, OfferingCard, OfferingList, ProductDetail, ProductEmbed, ProductGrid, ProductPage, RegistrationForm, SizeChart, UpcomingEvents, createCheckoutSession, createPaymentIntent, fetchActiveProcessor, fetchCategories, fetchLatestOffering, fetchNextEvent, fetchOffering, fetchOfferings, fetchProcessorConfig, fetchProductBySlug, fetchProducts, fetchProductsPublic, fetchServices, fetchShippingRates, fetchUpcomingEvents, formatDate, formatDateRange, formatDateTime, formatPrice, formatTime, getOfferingUrl, getRelativeTimeUntil, getSpotsRemaining, googleCalendarUrl, icsForEvent, icsResponse, isEventSoldOut, registerForEvent, shippingSelection, useEventModal, validateAddress, validateDiscountCode } from '../chunk-CJ5YPYAE.mjs';
3
3
  import '../chunk-64BOVMXG.mjs';
4
- import '../chunk-BDSNEB3O.mjs';
4
+ import '../chunk-3E7ZXPOB.mjs';
5
5
  import '../chunk-SHLWA6JY.mjs';
6
6
  import '../chunk-ZZQAGCSI.mjs';
7
7
  import '../chunk-5SANRSX3.mjs';
8
8
  import '../chunk-6EDVCUAG.mjs';
9
9
  import '../chunk-A6UYV475.mjs';
10
- import '../chunk-RGCUND5Q.mjs';
11
- import '../chunk-3DXJHMQM.mjs';
12
- import '../chunk-ACKFL6WA.mjs';
10
+ import '../chunk-6ZMEJSNX.mjs';
11
+ import '../chunk-YCA4KCRF.mjs';
12
+ import '../chunk-HQWPCX3N.mjs';
13
13
  import '../chunk-BEXTDHO4.mjs';
14
14
  //# sourceMappingURL=index.mjs.map
15
15
  //# sourceMappingURL=index.mjs.map
@@ -15,9 +15,12 @@
15
15
  * <CtaBarAction as={Link} href="/quote" icon={<ClipboardCheck />}>Free quote</CtaBarAction>
16
16
  * </CtaBar>
17
17
  *
18
- * Render it once, at the layout root and outside <main> (it's an <aside>
19
- * landmark). Never inside a blurred header: backdrop-filter on an ancestor
20
- * turns it into the containing block for this fixed bar.
18
+ * Render it once per page: at the layout root for a site-wide bar, or inside
19
+ * a page for a page-specific one. It's a labelled <aside>, which is valid at
20
+ * either depth (axe 4.13 retired the rule that wanted complementary
21
+ * landmarks top level; the fixture app runs axe on both placements). Never
22
+ * inside a blurred header: backdrop-filter on an ancestor turns it into the
23
+ * containing block for this fixed bar.
21
24
  */
22
25
  import * as React from 'react';
23
26
  import { type CtaBarBreakpoint } from './styles';
@@ -1 +1 @@
1
- {"version":3,"file":"CtaBar.d.ts","sourceRoot":"","sources":["../../src/cta-bar/CtaBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE9D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wGAAwG;IACxG,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,gHAAgH;IAChH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oHAAoH;IACpH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC5B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qFAAqF;IACrF,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mGAAmG;IACnG,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAMD,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAuB,EACvB,UAAiB,EACjB,MAAe,EACf,SAAS,EACT,QAAQ,EACR,eAAsB,EACtB,eAAsB,EACtB,aAAoB,EACpB,MAAa,EACb,KAAY,EACZ,SAAS,EACT,EAAE,GACH,EAAE,WAAW,qBA+Bb;AAED,KAAK,oBAAoB,GAAG;IAC1B,qGAAqG;IACrG,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACtB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,yHAAyH;IACzH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;IAC3C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAClD,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,oBAAoB,CAAC,GAC/E,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEvI,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EACF,IAAI,EACJ,OAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,iBAAiB,qBAmBnB"}
1
+ {"version":3,"file":"CtaBar.d.ts","sourceRoot":"","sources":["../../src/cta-bar/CtaBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE9D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wGAAwG;IACxG,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,gHAAgH;IAChH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oHAAoH;IACpH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC5B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,wEAAwE;IACxE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qFAAqF;IACrF,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mGAAmG;IACnG,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAMD,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAuB,EACvB,UAAiB,EACjB,MAAe,EACf,SAAS,EACT,QAAQ,EACR,eAAsB,EACtB,eAAsB,EACtB,aAAoB,EACpB,MAAa,EACb,KAAY,EACZ,SAAS,EACT,EAAE,GACH,EAAE,WAAW,qBA+Bb;AAED,KAAK,oBAAoB,GAAG;IAC1B,qGAAqG;IACrG,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACtB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,yHAAyH;IACzH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;IAC3C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAClD,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,oBAAoB,CAAC,GAC/E,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEvI,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EACF,IAAI,EACJ,OAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,iBAAiB,qBAmBnB"}
@@ -139,6 +139,9 @@ var CTA_BAR_CSS = `
139
139
  @media (scripting: none) {
140
140
  .sk-cta-bar[data-hidden] { transform: none; visibility: visible; }
141
141
  }
142
+ @media print {
143
+ .sk-cta-bar, .sk-cta-bar-spacer { display: none !important; }
144
+ }
142
145
  `;
143
146
  function CtaBarStyles() {
144
147
  return /* @__PURE__ */ jsxRuntime.jsx("style", { href: CTA_BAR_STYLE_HREF, precedence: "default", children: CTA_BAR_CSS });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cta-bar/styles.tsx","../../src/cta-bar/CtaBar.tsx"],"names":["jsxs","Fragment","jsx","GlassStyles","CtaBarBehavior"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/cta-bar — stylesheet\n *\n * Layout and states only. The surface itself is the shared Liquid Glass\n * recipe (`../shared/glass`), applied by putting `sk-glass` on the bar.\n *\n * Geometry is driven by three tokens, and the same three produce the\n * bar's height, the spacer that reserves room for it, and the Echo launcher\n * clearance. Set them on :root, not on the bar, so all three read them:\n *\n * --sk-cta-bar-inset gap from the screen edges (12px)\n * --sk-cta-bar-padding gap between glass and buttons (6px)\n * --sk-cta-bar-action-height button height (48px)\n *\n * Colour tokens: --sk-cta-bar-text, --sk-cta-primary-bg,\n * --sk-cta-primary-text, --sk-cta-secondary-bg, --sk-cta-secondary-text,\n * plus the --sk-glass-* tokens for the surface.\n */\n\nimport * as React from 'react'\n\nexport const CTA_BAR_STYLE_HREF = 'sk-cta-bar'\n\n/** Show-at-and-above widths per breakpoint name, mirroring Tailwind's defaults. */\nexport const CTA_BAR_BREAKPOINTS = { sm: 640, md: 768, lg: 1024, xl: 1280 } as const\nexport type CtaBarBreakpoint = keyof typeof CTA_BAR_BREAKPOINTS | 'none'\n\nconst BAR_HEIGHT =\n 'calc(var(--sk-cta-bar-action-height, 48px) + 2 * var(--sk-cta-bar-padding, 6px))'\n\n/**\n * Where the Echo launcher goes while a bar is on screen: one bar height plus\n * the bar's own inset, plus 12px of air. Uses the full (not compact) height,\n * so the launcher holds still while the bar breathes during a scroll.\n */\nexport const ECHO_CLEARANCE = `calc(${BAR_HEIGHT} + var(--sk-cta-bar-inset, 12px) + 12px)`\n\n/**\n * The room the bar needs at the end of the page. The spacer is this tall,\n * and it's published as `--sk-cta-bar-space` on <html> while a bar is\n * present below its breakpoint, so a site can pad its footer with it\n * (`spacer={false}`) and let the footer's own background run under the bar\n * instead of a blank strip after it. Reserved whether or not the bar is\n * currently hidden, so showing and hiding never shifts the layout.\n */\nexport const CTA_BAR_SPACE = `calc(${BAR_HEIGHT} + 2 * var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px))`\n\nfunction presentBelow(name: string, px: number | null): string {\n const rules = `\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"]) {\n --sk-cta-bar-space: ${CTA_BAR_SPACE};\n }\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"][data-echo-clearance]:not([data-hidden])) {\n --sk-echo-offset-bottom: ${ECHO_CLEARANCE};\n }`\n return px == null ? `\\n@media all {${rules}\\n}` : `\\n@media (max-width: ${px - 0.02}px) {${rules}\\n}`\n}\n\nfunction perBreakpoint(): string {\n return Object.entries(CTA_BAR_BREAKPOINTS)\n .map(\n ([name, px]) => `\n@media (min-width: ${px}px) {\n .sk-cta-bar[data-breakpoint=\"${name}\"], .sk-cta-bar-spacer[data-breakpoint=\"${name}\"] { display: none; }\n}${presentBelow(name, px)}`,\n )\n .join('')\n}\n\nexport const CTA_BAR_CSS = `\n.sk-cta-bar {\n --sk-cta-h: var(--sk-cta-bar-action-height, 48px);\n --sk-cta-pad: var(--sk-cta-bar-padding, 6px);\n position: fixed;\n z-index: var(--sk-cta-bar-z, 40);\n left: var(--sk-cta-bar-inset, 12px);\n right: var(--sk-cta-bar-inset, 12px);\n bottom: calc(var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + var(--sk-vv-layout-gap, 0px));\n max-width: var(--sk-cta-bar-max-width, 520px);\n margin: 0 auto;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: var(--sk-cta-pad);\n border-radius: calc(var(--sk-cta-h) / 2 + var(--sk-cta-pad));\n color: var(--sk-cta-bar-text, var(--sk-text-primary, #111827));\n font-family: inherit;\n transition:\n transform 450ms cubic-bezier(0.2, 0.8, 0.2, 1),\n padding 250ms ease,\n border-radius 250ms ease,\n visibility 0s linear 0s;\n}\n.sk-cta-bar[data-layout=\"fit\"] { width: fit-content; }\n.sk-cta-bar[data-compact] {\n --sk-cta-h: calc(var(--sk-cta-bar-action-height, 48px) - 8px);\n --sk-cta-pad: calc(var(--sk-cta-bar-padding, 6px) - 2px);\n}\n.sk-cta-bar[data-hidden] {\n transform: translateY(calc(100% + var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + 16px));\n visibility: hidden;\n transition:\n transform 350ms cubic-bezier(0.4, 0, 1, 1),\n visibility 0s linear 350ms;\n}\n.sk-cta-bar__action {\n flex: 1 1 0%;\n min-width: 0;\n box-sizing: border-box;\n height: var(--sk-cta-h);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 0 18px;\n margin: 0;\n border: 0;\n border-radius: 999px;\n font: inherit;\n font-size: 15px;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n height 250ms ease,\n flex-grow 300ms ease,\n flex-basis 300ms ease,\n padding 250ms ease,\n transform 150ms ease;\n}\n.sk-cta-bar[data-layout=\"fit\"] .sk-cta-bar__action { flex: 0 0 auto; }\n.sk-cta-bar__action:active { transform: scale(0.97); }\n.sk-cta-bar__action:focus-visible {\n outline: 2px solid var(--sk-cta-bar-focus, currentColor);\n outline-offset: 2px;\n}\n.sk-cta-bar__action[data-variant=\"primary\"] {\n background: var(--sk-cta-primary-bg, var(--sk-primary, #2563eb));\n color: var(--sk-cta-primary-text, #ffffff);\n box-shadow:\n inset 0 1px 0 color-mix(in srgb, #ffffff 28%, transparent),\n 0 1px 2px rgba(0, 0, 0, 0.12);\n}\n.sk-cta-bar__action[data-variant=\"secondary\"] {\n background: var(--sk-cta-secondary-bg, color-mix(in srgb, currentColor 8%, transparent));\n color: var(--sk-cta-secondary-text, inherit);\n box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 16%, transparent);\n}\n.sk-cta-bar__icon { display: inline-flex; flex-shrink: 0; }\n.sk-cta-bar__icon > svg { width: 18px; height: 18px; }\n.sk-cta-bar__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] {\n flex: 0 0 var(--sk-cta-h);\n padding: 0;\n}\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] .sk-cta-bar__label {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n.sk-cta-bar-spacer { height: ${CTA_BAR_SPACE}; }${presentBelow('none', null)}${perBreakpoint()}\n@media (prefers-reduced-motion: reduce) {\n .sk-cta-bar, .sk-cta-bar[data-hidden], .sk-cta-bar__action { transition: none; }\n}\n@media (scripting: none) {\n .sk-cta-bar[data-hidden] { transform: none; visibility: visible; }\n}\n`\n\nexport function CtaBarStyles() {\n return (\n <style href={CTA_BAR_STYLE_HREF} precedence=\"default\">\n {CTA_BAR_CSS}\n </style>\n )\n}\n","/**\n * @sonordev/site-kit/cta-bar — the Liquid Glass mobile CTA bar\n *\n * Single source of truth for the fleet's sticky mobile action bar. Before\n * 6.1.0 eleven sites each carried their own, and each had solved a different\n * subset of the same problems: hiding over the form it points at, staying off\n * the hero until the hero CTA scrolls away, getting out from under the Echo\n * launcher, riding out iOS toolbar resizes. This component does all of them.\n *\n * Server component. It renders plain markup plus a childless behaviour\n * island, so a server layout can pass Next <Link>s straight in:\n *\n * <CtaBar label=\"Call or book\" showAfter=\"#hero-cta\" hideOver=\"#quote\">\n * <CtaBarAction href=\"tel:+15135550100\" icon={<Phone />} variant=\"secondary\">Call</CtaBarAction>\n * <CtaBarAction as={Link} href=\"/quote\" icon={<ClipboardCheck />}>Free quote</CtaBarAction>\n * </CtaBar>\n *\n * Render it once, at the layout root and outside <main> (it's an <aside>\n * landmark). Never inside a blurred header: backdrop-filter on an ancestor\n * turns it into the containing block for this fixed bar.\n */\n\nimport * as React from 'react'\nimport { GlassStyles } from '../shared/glass'\nimport { CtaBarBehavior } from './CtaBarBehavior'\nimport { CtaBarStyles, type CtaBarBreakpoint } from './styles'\n\nexport interface CtaBarProps {\n children: React.ReactNode\n /** Accessible name of the bar's landmark. Default \"Quick actions\". */\n label?: string\n /** The bar is hidden at this width and above. `none` shows it at every width. Default `lg` (1024px). */\n breakpoint?: CtaBarBreakpoint\n /** `fill` stretches actions across the bar; `fit` hugs a single action in a centred capsule. Default `fill`. */\n layout?: 'fill' | 'fit'\n /**\n * CSS selector. The bar stays off screen until this element has scrolled\n * off the top, e.g. the hero's own CTA. If nothing matches, the bar shows.\n */\n showAfter?: string\n /** CSS selector(s). The bar steps aside while any match is on screen, e.g. the form it points at, or the footer. */\n hideOver?: string | string[]\n /** Hide while a text field has focus (the keyboard is up). Default true. */\n hideWhileTyping?: boolean\n /** Tighten while scrolling down, restore on scroll up. Default true. */\n compactOnScroll?: boolean\n /** Lift the Echo launcher above the bar while the bar is on screen. Default true. */\n echoClearance?: boolean\n /** Reserve the bar's height at the end of the page so it never covers the footer. Default true. */\n spacer?: boolean\n /** Send a `cta_click` analytics event for each action tap. Default true. */\n track?: boolean\n className?: string\n id?: string\n}\n\nfunction cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ')\n}\n\nexport function CtaBar({\n children,\n label = 'Quick actions',\n breakpoint = 'lg',\n layout = 'fill',\n showAfter,\n hideOver,\n hideWhileTyping = true,\n compactOnScroll = true,\n echoClearance = true,\n spacer = true,\n track = true,\n className,\n id,\n}: CtaBarProps) {\n const hideOverList = hideOver == null ? undefined : Array.isArray(hideOver) ? hideOver : [hideOver]\n return (\n <>\n <GlassStyles />\n <CtaBarStyles />\n {spacer ? <div className=\"sk-cta-bar-spacer\" data-breakpoint={breakpoint} aria-hidden=\"true\" /> : null}\n <aside\n id={id}\n aria-label={label}\n className={cx('sk-cta-bar', 'sk-glass', className)}\n data-sk-cta-bar=\"\"\n data-breakpoint={breakpoint}\n data-layout={layout}\n data-echo-clearance={echoClearance ? '' : undefined}\n // Server-rendered off screen when it waits for a start element, so it\n // never slides in over the hero during hydration. JS-off visitors get\n // it back through the stylesheet's (scripting: none) rule.\n data-hidden={showAfter ? '' : undefined}\n >\n {children}\n <CtaBarBehavior\n showAfter={showAfter}\n hideOver={hideOverList}\n hideWhileTyping={hideWhileTyping}\n compactOnScroll={compactOnScroll}\n track={track}\n />\n </aside>\n </>\n )\n}\n\ntype CtaBarActionOwnProps = {\n /** Element or component to render, e.g. Next's Link. Default: `a` with an href, `button` without. */\n as?: React.ElementType\n /** Leading icon; decorative, hidden from assistive tech. */\n icon?: React.ReactNode\n /** `primary` = solid brand, `secondary` = tinted glass, `plain` = layout only (style it yourself). Default `primary`. */\n variant?: 'primary' | 'secondary' | 'plain'\n /**\n * Fold to icon-only while the bar is compact. Default: true for a\n * secondary action with an icon. The label stays in the accessible name.\n */\n collapse?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport type CtaBarActionProps = CtaBarActionOwnProps &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof CtaBarActionOwnProps> &\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof CtaBarActionOwnProps | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>>\n\nexport function CtaBarAction({\n as,\n icon,\n variant = 'primary',\n collapse,\n children,\n className,\n ...rest\n}: CtaBarActionProps) {\n const Comp: React.ElementType = as ?? (rest.href ? 'a' : 'button')\n const folds = collapse ?? (variant === 'secondary' && icon != null)\n return (\n <Comp\n {...(Comp === 'button' && !('type' in rest) ? { type: 'button' } : null)}\n {...rest}\n className={cx('sk-cta-bar__action', className)}\n data-variant={variant}\n data-collapse={folds ? '' : undefined}\n >\n {icon != null ? (\n <span className=\"sk-cta-bar__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sk-cta-bar__label\">{children}</span>\n </Comp>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/cta-bar/styles.tsx","../../src/cta-bar/CtaBar.tsx"],"names":["jsxs","Fragment","jsx","GlassStyles","CtaBarBehavior"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/cta-bar — stylesheet\n *\n * Layout and states only. The surface itself is the shared Liquid Glass\n * recipe (`../shared/glass`), applied by putting `sk-glass` on the bar.\n *\n * Geometry is driven by three tokens, and the same three produce the\n * bar's height, the spacer that reserves room for it, and the Echo launcher\n * clearance. Set them on :root, not on the bar, so all three read them:\n *\n * --sk-cta-bar-inset gap from the screen edges (12px)\n * --sk-cta-bar-padding gap between glass and buttons (6px)\n * --sk-cta-bar-action-height button height (48px)\n *\n * Colour tokens: --sk-cta-bar-text, --sk-cta-primary-bg,\n * --sk-cta-primary-text, --sk-cta-secondary-bg, --sk-cta-secondary-text,\n * plus the --sk-glass-* tokens for the surface.\n */\n\nimport * as React from 'react'\n\nexport const CTA_BAR_STYLE_HREF = 'sk-cta-bar'\n\n/** Show-at-and-above widths per breakpoint name, mirroring Tailwind's defaults. */\nexport const CTA_BAR_BREAKPOINTS = { sm: 640, md: 768, lg: 1024, xl: 1280 } as const\nexport type CtaBarBreakpoint = keyof typeof CTA_BAR_BREAKPOINTS | 'none'\n\nconst BAR_HEIGHT =\n 'calc(var(--sk-cta-bar-action-height, 48px) + 2 * var(--sk-cta-bar-padding, 6px))'\n\n/**\n * Where the Echo launcher goes while a bar is on screen: one bar height plus\n * the bar's own inset, plus 12px of air. Uses the full (not compact) height,\n * so the launcher holds still while the bar breathes during a scroll.\n */\nexport const ECHO_CLEARANCE = `calc(${BAR_HEIGHT} + var(--sk-cta-bar-inset, 12px) + 12px)`\n\n/**\n * The room the bar needs at the end of the page. The spacer is this tall,\n * and it's published as `--sk-cta-bar-space` on <html> while a bar is\n * present below its breakpoint, so a site can pad its footer with it\n * (`spacer={false}`) and let the footer's own background run under the bar\n * instead of a blank strip after it. Reserved whether or not the bar is\n * currently hidden, so showing and hiding never shifts the layout.\n */\nexport const CTA_BAR_SPACE = `calc(${BAR_HEIGHT} + 2 * var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px))`\n\nfunction presentBelow(name: string, px: number | null): string {\n const rules = `\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"]) {\n --sk-cta-bar-space: ${CTA_BAR_SPACE};\n }\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"][data-echo-clearance]:not([data-hidden])) {\n --sk-echo-offset-bottom: ${ECHO_CLEARANCE};\n }`\n return px == null ? `\\n@media all {${rules}\\n}` : `\\n@media (max-width: ${px - 0.02}px) {${rules}\\n}`\n}\n\nfunction perBreakpoint(): string {\n return Object.entries(CTA_BAR_BREAKPOINTS)\n .map(\n ([name, px]) => `\n@media (min-width: ${px}px) {\n .sk-cta-bar[data-breakpoint=\"${name}\"], .sk-cta-bar-spacer[data-breakpoint=\"${name}\"] { display: none; }\n}${presentBelow(name, px)}`,\n )\n .join('')\n}\n\nexport const CTA_BAR_CSS = `\n.sk-cta-bar {\n --sk-cta-h: var(--sk-cta-bar-action-height, 48px);\n --sk-cta-pad: var(--sk-cta-bar-padding, 6px);\n position: fixed;\n z-index: var(--sk-cta-bar-z, 40);\n left: var(--sk-cta-bar-inset, 12px);\n right: var(--sk-cta-bar-inset, 12px);\n bottom: calc(var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + var(--sk-vv-layout-gap, 0px));\n max-width: var(--sk-cta-bar-max-width, 520px);\n margin: 0 auto;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: var(--sk-cta-pad);\n border-radius: calc(var(--sk-cta-h) / 2 + var(--sk-cta-pad));\n color: var(--sk-cta-bar-text, var(--sk-text-primary, #111827));\n font-family: inherit;\n transition:\n transform 450ms cubic-bezier(0.2, 0.8, 0.2, 1),\n padding 250ms ease,\n border-radius 250ms ease,\n visibility 0s linear 0s;\n}\n.sk-cta-bar[data-layout=\"fit\"] { width: fit-content; }\n.sk-cta-bar[data-compact] {\n --sk-cta-h: calc(var(--sk-cta-bar-action-height, 48px) - 8px);\n --sk-cta-pad: calc(var(--sk-cta-bar-padding, 6px) - 2px);\n}\n.sk-cta-bar[data-hidden] {\n transform: translateY(calc(100% + var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + 16px));\n visibility: hidden;\n transition:\n transform 350ms cubic-bezier(0.4, 0, 1, 1),\n visibility 0s linear 350ms;\n}\n.sk-cta-bar__action {\n flex: 1 1 0%;\n min-width: 0;\n box-sizing: border-box;\n height: var(--sk-cta-h);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 0 18px;\n margin: 0;\n border: 0;\n border-radius: 999px;\n font: inherit;\n font-size: 15px;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n height 250ms ease,\n flex-grow 300ms ease,\n flex-basis 300ms ease,\n padding 250ms ease,\n transform 150ms ease;\n}\n.sk-cta-bar[data-layout=\"fit\"] .sk-cta-bar__action { flex: 0 0 auto; }\n.sk-cta-bar__action:active { transform: scale(0.97); }\n.sk-cta-bar__action:focus-visible {\n outline: 2px solid var(--sk-cta-bar-focus, currentColor);\n outline-offset: 2px;\n}\n.sk-cta-bar__action[data-variant=\"primary\"] {\n background: var(--sk-cta-primary-bg, var(--sk-primary, #2563eb));\n color: var(--sk-cta-primary-text, #ffffff);\n box-shadow:\n inset 0 1px 0 color-mix(in srgb, #ffffff 28%, transparent),\n 0 1px 2px rgba(0, 0, 0, 0.12);\n}\n.sk-cta-bar__action[data-variant=\"secondary\"] {\n background: var(--sk-cta-secondary-bg, color-mix(in srgb, currentColor 8%, transparent));\n color: var(--sk-cta-secondary-text, inherit);\n box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 16%, transparent);\n}\n.sk-cta-bar__icon { display: inline-flex; flex-shrink: 0; }\n.sk-cta-bar__icon > svg { width: 18px; height: 18px; }\n.sk-cta-bar__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] {\n flex: 0 0 var(--sk-cta-h);\n padding: 0;\n}\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] .sk-cta-bar__label {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n.sk-cta-bar-spacer { height: ${CTA_BAR_SPACE}; }${presentBelow('none', null)}${perBreakpoint()}\n@media (prefers-reduced-motion: reduce) {\n .sk-cta-bar, .sk-cta-bar[data-hidden], .sk-cta-bar__action { transition: none; }\n}\n@media (scripting: none) {\n .sk-cta-bar[data-hidden] { transform: none; visibility: visible; }\n}\n@media print {\n .sk-cta-bar, .sk-cta-bar-spacer { display: none !important; }\n}\n`\n\nexport function CtaBarStyles() {\n return (\n <style href={CTA_BAR_STYLE_HREF} precedence=\"default\">\n {CTA_BAR_CSS}\n </style>\n )\n}\n","/**\n * @sonordev/site-kit/cta-bar — the Liquid Glass mobile CTA bar\n *\n * Single source of truth for the fleet's sticky mobile action bar. Before\n * 6.1.0 eleven sites each carried their own, and each had solved a different\n * subset of the same problems: hiding over the form it points at, staying off\n * the hero until the hero CTA scrolls away, getting out from under the Echo\n * launcher, riding out iOS toolbar resizes. This component does all of them.\n *\n * Server component. It renders plain markup plus a childless behaviour\n * island, so a server layout can pass Next <Link>s straight in:\n *\n * <CtaBar label=\"Call or book\" showAfter=\"#hero-cta\" hideOver=\"#quote\">\n * <CtaBarAction href=\"tel:+15135550100\" icon={<Phone />} variant=\"secondary\">Call</CtaBarAction>\n * <CtaBarAction as={Link} href=\"/quote\" icon={<ClipboardCheck />}>Free quote</CtaBarAction>\n * </CtaBar>\n *\n * Render it once per page: at the layout root for a site-wide bar, or inside\n * a page for a page-specific one. It's a labelled <aside>, which is valid at\n * either depth (axe 4.13 retired the rule that wanted complementary\n * landmarks top level; the fixture app runs axe on both placements). Never\n * inside a blurred header: backdrop-filter on an ancestor turns it into the\n * containing block for this fixed bar.\n */\n\nimport * as React from 'react'\nimport { GlassStyles } from '../shared/glass'\nimport { CtaBarBehavior } from './CtaBarBehavior'\nimport { CtaBarStyles, type CtaBarBreakpoint } from './styles'\n\nexport interface CtaBarProps {\n children: React.ReactNode\n /** Accessible name of the bar's landmark. Default \"Quick actions\". */\n label?: string\n /** The bar is hidden at this width and above. `none` shows it at every width. Default `lg` (1024px). */\n breakpoint?: CtaBarBreakpoint\n /** `fill` stretches actions across the bar; `fit` hugs a single action in a centred capsule. Default `fill`. */\n layout?: 'fill' | 'fit'\n /**\n * CSS selector. The bar stays off screen until this element has scrolled\n * off the top, e.g. the hero's own CTA. If nothing matches, the bar shows.\n */\n showAfter?: string\n /** CSS selector(s). The bar steps aside while any match is on screen, e.g. the form it points at, or the footer. */\n hideOver?: string | string[]\n /** Hide while a text field has focus (the keyboard is up). Default true. */\n hideWhileTyping?: boolean\n /** Tighten while scrolling down, restore on scroll up. Default true. */\n compactOnScroll?: boolean\n /** Lift the Echo launcher above the bar while the bar is on screen. Default true. */\n echoClearance?: boolean\n /** Reserve the bar's height at the end of the page so it never covers the footer. Default true. */\n spacer?: boolean\n /** Send a `cta_click` analytics event for each action tap. Default true. */\n track?: boolean\n className?: string\n id?: string\n}\n\nfunction cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ')\n}\n\nexport function CtaBar({\n children,\n label = 'Quick actions',\n breakpoint = 'lg',\n layout = 'fill',\n showAfter,\n hideOver,\n hideWhileTyping = true,\n compactOnScroll = true,\n echoClearance = true,\n spacer = true,\n track = true,\n className,\n id,\n}: CtaBarProps) {\n const hideOverList = hideOver == null ? undefined : Array.isArray(hideOver) ? hideOver : [hideOver]\n return (\n <>\n <GlassStyles />\n <CtaBarStyles />\n {spacer ? <div className=\"sk-cta-bar-spacer\" data-breakpoint={breakpoint} aria-hidden=\"true\" /> : null}\n <aside\n id={id}\n aria-label={label}\n className={cx('sk-cta-bar', 'sk-glass', className)}\n data-sk-cta-bar=\"\"\n data-breakpoint={breakpoint}\n data-layout={layout}\n data-echo-clearance={echoClearance ? '' : undefined}\n // Server-rendered off screen when it waits for a start element, so it\n // never slides in over the hero during hydration. JS-off visitors get\n // it back through the stylesheet's (scripting: none) rule.\n data-hidden={showAfter ? '' : undefined}\n >\n {children}\n <CtaBarBehavior\n showAfter={showAfter}\n hideOver={hideOverList}\n hideWhileTyping={hideWhileTyping}\n compactOnScroll={compactOnScroll}\n track={track}\n />\n </aside>\n </>\n )\n}\n\ntype CtaBarActionOwnProps = {\n /** Element or component to render, e.g. Next's Link. Default: `a` with an href, `button` without. */\n as?: React.ElementType\n /** Leading icon; decorative, hidden from assistive tech. */\n icon?: React.ReactNode\n /** `primary` = solid brand, `secondary` = tinted glass, `plain` = layout only (style it yourself). Default `primary`. */\n variant?: 'primary' | 'secondary' | 'plain'\n /**\n * Fold to icon-only while the bar is compact. Default: true for a\n * secondary action with an icon. The label stays in the accessible name.\n */\n collapse?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport type CtaBarActionProps = CtaBarActionOwnProps &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof CtaBarActionOwnProps> &\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof CtaBarActionOwnProps | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>>\n\nexport function CtaBarAction({\n as,\n icon,\n variant = 'primary',\n collapse,\n children,\n className,\n ...rest\n}: CtaBarActionProps) {\n const Comp: React.ElementType = as ?? (rest.href ? 'a' : 'button')\n const folds = collapse ?? (variant === 'secondary' && icon != null)\n return (\n <Comp\n {...(Comp === 'button' && !('type' in rest) ? { type: 'button' } : null)}\n {...rest}\n className={cx('sk-cta-bar__action', className)}\n data-variant={variant}\n data-collapse={folds ? '' : undefined}\n >\n {icon != null ? (\n <span className=\"sk-cta-bar__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sk-cta-bar__label\">{children}</span>\n </Comp>\n )\n}\n"]}
@@ -137,6 +137,9 @@ var CTA_BAR_CSS = `
137
137
  @media (scripting: none) {
138
138
  .sk-cta-bar[data-hidden] { transform: none; visibility: visible; }
139
139
  }
140
+ @media print {
141
+ .sk-cta-bar, .sk-cta-bar-spacer { display: none !important; }
142
+ }
140
143
  `;
141
144
  function CtaBarStyles() {
142
145
  return /* @__PURE__ */ jsx("style", { href: CTA_BAR_STYLE_HREF, precedence: "default", children: CTA_BAR_CSS });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cta-bar/styles.tsx","../../src/cta-bar/CtaBar.tsx"],"names":["jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/cta-bar — stylesheet\n *\n * Layout and states only. The surface itself is the shared Liquid Glass\n * recipe (`../shared/glass`), applied by putting `sk-glass` on the bar.\n *\n * Geometry is driven by three tokens, and the same three produce the\n * bar's height, the spacer that reserves room for it, and the Echo launcher\n * clearance. Set them on :root, not on the bar, so all three read them:\n *\n * --sk-cta-bar-inset gap from the screen edges (12px)\n * --sk-cta-bar-padding gap between glass and buttons (6px)\n * --sk-cta-bar-action-height button height (48px)\n *\n * Colour tokens: --sk-cta-bar-text, --sk-cta-primary-bg,\n * --sk-cta-primary-text, --sk-cta-secondary-bg, --sk-cta-secondary-text,\n * plus the --sk-glass-* tokens for the surface.\n */\n\nimport * as React from 'react'\n\nexport const CTA_BAR_STYLE_HREF = 'sk-cta-bar'\n\n/** Show-at-and-above widths per breakpoint name, mirroring Tailwind's defaults. */\nexport const CTA_BAR_BREAKPOINTS = { sm: 640, md: 768, lg: 1024, xl: 1280 } as const\nexport type CtaBarBreakpoint = keyof typeof CTA_BAR_BREAKPOINTS | 'none'\n\nconst BAR_HEIGHT =\n 'calc(var(--sk-cta-bar-action-height, 48px) + 2 * var(--sk-cta-bar-padding, 6px))'\n\n/**\n * Where the Echo launcher goes while a bar is on screen: one bar height plus\n * the bar's own inset, plus 12px of air. Uses the full (not compact) height,\n * so the launcher holds still while the bar breathes during a scroll.\n */\nexport const ECHO_CLEARANCE = `calc(${BAR_HEIGHT} + var(--sk-cta-bar-inset, 12px) + 12px)`\n\n/**\n * The room the bar needs at the end of the page. The spacer is this tall,\n * and it's published as `--sk-cta-bar-space` on <html> while a bar is\n * present below its breakpoint, so a site can pad its footer with it\n * (`spacer={false}`) and let the footer's own background run under the bar\n * instead of a blank strip after it. Reserved whether or not the bar is\n * currently hidden, so showing and hiding never shifts the layout.\n */\nexport const CTA_BAR_SPACE = `calc(${BAR_HEIGHT} + 2 * var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px))`\n\nfunction presentBelow(name: string, px: number | null): string {\n const rules = `\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"]) {\n --sk-cta-bar-space: ${CTA_BAR_SPACE};\n }\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"][data-echo-clearance]:not([data-hidden])) {\n --sk-echo-offset-bottom: ${ECHO_CLEARANCE};\n }`\n return px == null ? `\\n@media all {${rules}\\n}` : `\\n@media (max-width: ${px - 0.02}px) {${rules}\\n}`\n}\n\nfunction perBreakpoint(): string {\n return Object.entries(CTA_BAR_BREAKPOINTS)\n .map(\n ([name, px]) => `\n@media (min-width: ${px}px) {\n .sk-cta-bar[data-breakpoint=\"${name}\"], .sk-cta-bar-spacer[data-breakpoint=\"${name}\"] { display: none; }\n}${presentBelow(name, px)}`,\n )\n .join('')\n}\n\nexport const CTA_BAR_CSS = `\n.sk-cta-bar {\n --sk-cta-h: var(--sk-cta-bar-action-height, 48px);\n --sk-cta-pad: var(--sk-cta-bar-padding, 6px);\n position: fixed;\n z-index: var(--sk-cta-bar-z, 40);\n left: var(--sk-cta-bar-inset, 12px);\n right: var(--sk-cta-bar-inset, 12px);\n bottom: calc(var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + var(--sk-vv-layout-gap, 0px));\n max-width: var(--sk-cta-bar-max-width, 520px);\n margin: 0 auto;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: var(--sk-cta-pad);\n border-radius: calc(var(--sk-cta-h) / 2 + var(--sk-cta-pad));\n color: var(--sk-cta-bar-text, var(--sk-text-primary, #111827));\n font-family: inherit;\n transition:\n transform 450ms cubic-bezier(0.2, 0.8, 0.2, 1),\n padding 250ms ease,\n border-radius 250ms ease,\n visibility 0s linear 0s;\n}\n.sk-cta-bar[data-layout=\"fit\"] { width: fit-content; }\n.sk-cta-bar[data-compact] {\n --sk-cta-h: calc(var(--sk-cta-bar-action-height, 48px) - 8px);\n --sk-cta-pad: calc(var(--sk-cta-bar-padding, 6px) - 2px);\n}\n.sk-cta-bar[data-hidden] {\n transform: translateY(calc(100% + var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + 16px));\n visibility: hidden;\n transition:\n transform 350ms cubic-bezier(0.4, 0, 1, 1),\n visibility 0s linear 350ms;\n}\n.sk-cta-bar__action {\n flex: 1 1 0%;\n min-width: 0;\n box-sizing: border-box;\n height: var(--sk-cta-h);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 0 18px;\n margin: 0;\n border: 0;\n border-radius: 999px;\n font: inherit;\n font-size: 15px;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n height 250ms ease,\n flex-grow 300ms ease,\n flex-basis 300ms ease,\n padding 250ms ease,\n transform 150ms ease;\n}\n.sk-cta-bar[data-layout=\"fit\"] .sk-cta-bar__action { flex: 0 0 auto; }\n.sk-cta-bar__action:active { transform: scale(0.97); }\n.sk-cta-bar__action:focus-visible {\n outline: 2px solid var(--sk-cta-bar-focus, currentColor);\n outline-offset: 2px;\n}\n.sk-cta-bar__action[data-variant=\"primary\"] {\n background: var(--sk-cta-primary-bg, var(--sk-primary, #2563eb));\n color: var(--sk-cta-primary-text, #ffffff);\n box-shadow:\n inset 0 1px 0 color-mix(in srgb, #ffffff 28%, transparent),\n 0 1px 2px rgba(0, 0, 0, 0.12);\n}\n.sk-cta-bar__action[data-variant=\"secondary\"] {\n background: var(--sk-cta-secondary-bg, color-mix(in srgb, currentColor 8%, transparent));\n color: var(--sk-cta-secondary-text, inherit);\n box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 16%, transparent);\n}\n.sk-cta-bar__icon { display: inline-flex; flex-shrink: 0; }\n.sk-cta-bar__icon > svg { width: 18px; height: 18px; }\n.sk-cta-bar__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] {\n flex: 0 0 var(--sk-cta-h);\n padding: 0;\n}\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] .sk-cta-bar__label {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n.sk-cta-bar-spacer { height: ${CTA_BAR_SPACE}; }${presentBelow('none', null)}${perBreakpoint()}\n@media (prefers-reduced-motion: reduce) {\n .sk-cta-bar, .sk-cta-bar[data-hidden], .sk-cta-bar__action { transition: none; }\n}\n@media (scripting: none) {\n .sk-cta-bar[data-hidden] { transform: none; visibility: visible; }\n}\n`\n\nexport function CtaBarStyles() {\n return (\n <style href={CTA_BAR_STYLE_HREF} precedence=\"default\">\n {CTA_BAR_CSS}\n </style>\n )\n}\n","/**\n * @sonordev/site-kit/cta-bar — the Liquid Glass mobile CTA bar\n *\n * Single source of truth for the fleet's sticky mobile action bar. Before\n * 6.1.0 eleven sites each carried their own, and each had solved a different\n * subset of the same problems: hiding over the form it points at, staying off\n * the hero until the hero CTA scrolls away, getting out from under the Echo\n * launcher, riding out iOS toolbar resizes. This component does all of them.\n *\n * Server component. It renders plain markup plus a childless behaviour\n * island, so a server layout can pass Next <Link>s straight in:\n *\n * <CtaBar label=\"Call or book\" showAfter=\"#hero-cta\" hideOver=\"#quote\">\n * <CtaBarAction href=\"tel:+15135550100\" icon={<Phone />} variant=\"secondary\">Call</CtaBarAction>\n * <CtaBarAction as={Link} href=\"/quote\" icon={<ClipboardCheck />}>Free quote</CtaBarAction>\n * </CtaBar>\n *\n * Render it once, at the layout root and outside <main> (it's an <aside>\n * landmark). Never inside a blurred header: backdrop-filter on an ancestor\n * turns it into the containing block for this fixed bar.\n */\n\nimport * as React from 'react'\nimport { GlassStyles } from '../shared/glass'\nimport { CtaBarBehavior } from './CtaBarBehavior'\nimport { CtaBarStyles, type CtaBarBreakpoint } from './styles'\n\nexport interface CtaBarProps {\n children: React.ReactNode\n /** Accessible name of the bar's landmark. Default \"Quick actions\". */\n label?: string\n /** The bar is hidden at this width and above. `none` shows it at every width. Default `lg` (1024px). */\n breakpoint?: CtaBarBreakpoint\n /** `fill` stretches actions across the bar; `fit` hugs a single action in a centred capsule. Default `fill`. */\n layout?: 'fill' | 'fit'\n /**\n * CSS selector. The bar stays off screen until this element has scrolled\n * off the top, e.g. the hero's own CTA. If nothing matches, the bar shows.\n */\n showAfter?: string\n /** CSS selector(s). The bar steps aside while any match is on screen, e.g. the form it points at, or the footer. */\n hideOver?: string | string[]\n /** Hide while a text field has focus (the keyboard is up). Default true. */\n hideWhileTyping?: boolean\n /** Tighten while scrolling down, restore on scroll up. Default true. */\n compactOnScroll?: boolean\n /** Lift the Echo launcher above the bar while the bar is on screen. Default true. */\n echoClearance?: boolean\n /** Reserve the bar's height at the end of the page so it never covers the footer. Default true. */\n spacer?: boolean\n /** Send a `cta_click` analytics event for each action tap. Default true. */\n track?: boolean\n className?: string\n id?: string\n}\n\nfunction cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ')\n}\n\nexport function CtaBar({\n children,\n label = 'Quick actions',\n breakpoint = 'lg',\n layout = 'fill',\n showAfter,\n hideOver,\n hideWhileTyping = true,\n compactOnScroll = true,\n echoClearance = true,\n spacer = true,\n track = true,\n className,\n id,\n}: CtaBarProps) {\n const hideOverList = hideOver == null ? undefined : Array.isArray(hideOver) ? hideOver : [hideOver]\n return (\n <>\n <GlassStyles />\n <CtaBarStyles />\n {spacer ? <div className=\"sk-cta-bar-spacer\" data-breakpoint={breakpoint} aria-hidden=\"true\" /> : null}\n <aside\n id={id}\n aria-label={label}\n className={cx('sk-cta-bar', 'sk-glass', className)}\n data-sk-cta-bar=\"\"\n data-breakpoint={breakpoint}\n data-layout={layout}\n data-echo-clearance={echoClearance ? '' : undefined}\n // Server-rendered off screen when it waits for a start element, so it\n // never slides in over the hero during hydration. JS-off visitors get\n // it back through the stylesheet's (scripting: none) rule.\n data-hidden={showAfter ? '' : undefined}\n >\n {children}\n <CtaBarBehavior\n showAfter={showAfter}\n hideOver={hideOverList}\n hideWhileTyping={hideWhileTyping}\n compactOnScroll={compactOnScroll}\n track={track}\n />\n </aside>\n </>\n )\n}\n\ntype CtaBarActionOwnProps = {\n /** Element or component to render, e.g. Next's Link. Default: `a` with an href, `button` without. */\n as?: React.ElementType\n /** Leading icon; decorative, hidden from assistive tech. */\n icon?: React.ReactNode\n /** `primary` = solid brand, `secondary` = tinted glass, `plain` = layout only (style it yourself). Default `primary`. */\n variant?: 'primary' | 'secondary' | 'plain'\n /**\n * Fold to icon-only while the bar is compact. Default: true for a\n * secondary action with an icon. The label stays in the accessible name.\n */\n collapse?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport type CtaBarActionProps = CtaBarActionOwnProps &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof CtaBarActionOwnProps> &\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof CtaBarActionOwnProps | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>>\n\nexport function CtaBarAction({\n as,\n icon,\n variant = 'primary',\n collapse,\n children,\n className,\n ...rest\n}: CtaBarActionProps) {\n const Comp: React.ElementType = as ?? (rest.href ? 'a' : 'button')\n const folds = collapse ?? (variant === 'secondary' && icon != null)\n return (\n <Comp\n {...(Comp === 'button' && !('type' in rest) ? { type: 'button' } : null)}\n {...rest}\n className={cx('sk-cta-bar__action', className)}\n data-variant={variant}\n data-collapse={folds ? '' : undefined}\n >\n {icon != null ? (\n <span className=\"sk-cta-bar__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sk-cta-bar__label\">{children}</span>\n </Comp>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/cta-bar/styles.tsx","../../src/cta-bar/CtaBar.tsx"],"names":["jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/cta-bar — stylesheet\n *\n * Layout and states only. The surface itself is the shared Liquid Glass\n * recipe (`../shared/glass`), applied by putting `sk-glass` on the bar.\n *\n * Geometry is driven by three tokens, and the same three produce the\n * bar's height, the spacer that reserves room for it, and the Echo launcher\n * clearance. Set them on :root, not on the bar, so all three read them:\n *\n * --sk-cta-bar-inset gap from the screen edges (12px)\n * --sk-cta-bar-padding gap between glass and buttons (6px)\n * --sk-cta-bar-action-height button height (48px)\n *\n * Colour tokens: --sk-cta-bar-text, --sk-cta-primary-bg,\n * --sk-cta-primary-text, --sk-cta-secondary-bg, --sk-cta-secondary-text,\n * plus the --sk-glass-* tokens for the surface.\n */\n\nimport * as React from 'react'\n\nexport const CTA_BAR_STYLE_HREF = 'sk-cta-bar'\n\n/** Show-at-and-above widths per breakpoint name, mirroring Tailwind's defaults. */\nexport const CTA_BAR_BREAKPOINTS = { sm: 640, md: 768, lg: 1024, xl: 1280 } as const\nexport type CtaBarBreakpoint = keyof typeof CTA_BAR_BREAKPOINTS | 'none'\n\nconst BAR_HEIGHT =\n 'calc(var(--sk-cta-bar-action-height, 48px) + 2 * var(--sk-cta-bar-padding, 6px))'\n\n/**\n * Where the Echo launcher goes while a bar is on screen: one bar height plus\n * the bar's own inset, plus 12px of air. Uses the full (not compact) height,\n * so the launcher holds still while the bar breathes during a scroll.\n */\nexport const ECHO_CLEARANCE = `calc(${BAR_HEIGHT} + var(--sk-cta-bar-inset, 12px) + 12px)`\n\n/**\n * The room the bar needs at the end of the page. The spacer is this tall,\n * and it's published as `--sk-cta-bar-space` on <html> while a bar is\n * present below its breakpoint, so a site can pad its footer with it\n * (`spacer={false}`) and let the footer's own background run under the bar\n * instead of a blank strip after it. Reserved whether or not the bar is\n * currently hidden, so showing and hiding never shifts the layout.\n */\nexport const CTA_BAR_SPACE = `calc(${BAR_HEIGHT} + 2 * var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px))`\n\nfunction presentBelow(name: string, px: number | null): string {\n const rules = `\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"]) {\n --sk-cta-bar-space: ${CTA_BAR_SPACE};\n }\n html:has(.sk-cta-bar[data-breakpoint=\"${name}\"][data-echo-clearance]:not([data-hidden])) {\n --sk-echo-offset-bottom: ${ECHO_CLEARANCE};\n }`\n return px == null ? `\\n@media all {${rules}\\n}` : `\\n@media (max-width: ${px - 0.02}px) {${rules}\\n}`\n}\n\nfunction perBreakpoint(): string {\n return Object.entries(CTA_BAR_BREAKPOINTS)\n .map(\n ([name, px]) => `\n@media (min-width: ${px}px) {\n .sk-cta-bar[data-breakpoint=\"${name}\"], .sk-cta-bar-spacer[data-breakpoint=\"${name}\"] { display: none; }\n}${presentBelow(name, px)}`,\n )\n .join('')\n}\n\nexport const CTA_BAR_CSS = `\n.sk-cta-bar {\n --sk-cta-h: var(--sk-cta-bar-action-height, 48px);\n --sk-cta-pad: var(--sk-cta-bar-padding, 6px);\n position: fixed;\n z-index: var(--sk-cta-bar-z, 40);\n left: var(--sk-cta-bar-inset, 12px);\n right: var(--sk-cta-bar-inset, 12px);\n bottom: calc(var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + var(--sk-vv-layout-gap, 0px));\n max-width: var(--sk-cta-bar-max-width, 520px);\n margin: 0 auto;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: var(--sk-cta-pad);\n border-radius: calc(var(--sk-cta-h) / 2 + var(--sk-cta-pad));\n color: var(--sk-cta-bar-text, var(--sk-text-primary, #111827));\n font-family: inherit;\n transition:\n transform 450ms cubic-bezier(0.2, 0.8, 0.2, 1),\n padding 250ms ease,\n border-radius 250ms ease,\n visibility 0s linear 0s;\n}\n.sk-cta-bar[data-layout=\"fit\"] { width: fit-content; }\n.sk-cta-bar[data-compact] {\n --sk-cta-h: calc(var(--sk-cta-bar-action-height, 48px) - 8px);\n --sk-cta-pad: calc(var(--sk-cta-bar-padding, 6px) - 2px);\n}\n.sk-cta-bar[data-hidden] {\n transform: translateY(calc(100% + var(--sk-cta-bar-inset, 12px) + env(safe-area-inset-bottom, 0px) + 16px));\n visibility: hidden;\n transition:\n transform 350ms cubic-bezier(0.4, 0, 1, 1),\n visibility 0s linear 350ms;\n}\n.sk-cta-bar__action {\n flex: 1 1 0%;\n min-width: 0;\n box-sizing: border-box;\n height: var(--sk-cta-h);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 0 18px;\n margin: 0;\n border: 0;\n border-radius: 999px;\n font: inherit;\n font-size: 15px;\n font-weight: 600;\n line-height: 1;\n text-decoration: none;\n white-space: nowrap;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n height 250ms ease,\n flex-grow 300ms ease,\n flex-basis 300ms ease,\n padding 250ms ease,\n transform 150ms ease;\n}\n.sk-cta-bar[data-layout=\"fit\"] .sk-cta-bar__action { flex: 0 0 auto; }\n.sk-cta-bar__action:active { transform: scale(0.97); }\n.sk-cta-bar__action:focus-visible {\n outline: 2px solid var(--sk-cta-bar-focus, currentColor);\n outline-offset: 2px;\n}\n.sk-cta-bar__action[data-variant=\"primary\"] {\n background: var(--sk-cta-primary-bg, var(--sk-primary, #2563eb));\n color: var(--sk-cta-primary-text, #ffffff);\n box-shadow:\n inset 0 1px 0 color-mix(in srgb, #ffffff 28%, transparent),\n 0 1px 2px rgba(0, 0, 0, 0.12);\n}\n.sk-cta-bar__action[data-variant=\"secondary\"] {\n background: var(--sk-cta-secondary-bg, color-mix(in srgb, currentColor 8%, transparent));\n color: var(--sk-cta-secondary-text, inherit);\n box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 16%, transparent);\n}\n.sk-cta-bar__icon { display: inline-flex; flex-shrink: 0; }\n.sk-cta-bar__icon > svg { width: 18px; height: 18px; }\n.sk-cta-bar__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] {\n flex: 0 0 var(--sk-cta-h);\n padding: 0;\n}\n.sk-cta-bar[data-compact] .sk-cta-bar__action[data-collapse] .sk-cta-bar__label {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n.sk-cta-bar-spacer { height: ${CTA_BAR_SPACE}; }${presentBelow('none', null)}${perBreakpoint()}\n@media (prefers-reduced-motion: reduce) {\n .sk-cta-bar, .sk-cta-bar[data-hidden], .sk-cta-bar__action { transition: none; }\n}\n@media (scripting: none) {\n .sk-cta-bar[data-hidden] { transform: none; visibility: visible; }\n}\n@media print {\n .sk-cta-bar, .sk-cta-bar-spacer { display: none !important; }\n}\n`\n\nexport function CtaBarStyles() {\n return (\n <style href={CTA_BAR_STYLE_HREF} precedence=\"default\">\n {CTA_BAR_CSS}\n </style>\n )\n}\n","/**\n * @sonordev/site-kit/cta-bar — the Liquid Glass mobile CTA bar\n *\n * Single source of truth for the fleet's sticky mobile action bar. Before\n * 6.1.0 eleven sites each carried their own, and each had solved a different\n * subset of the same problems: hiding over the form it points at, staying off\n * the hero until the hero CTA scrolls away, getting out from under the Echo\n * launcher, riding out iOS toolbar resizes. This component does all of them.\n *\n * Server component. It renders plain markup plus a childless behaviour\n * island, so a server layout can pass Next <Link>s straight in:\n *\n * <CtaBar label=\"Call or book\" showAfter=\"#hero-cta\" hideOver=\"#quote\">\n * <CtaBarAction href=\"tel:+15135550100\" icon={<Phone />} variant=\"secondary\">Call</CtaBarAction>\n * <CtaBarAction as={Link} href=\"/quote\" icon={<ClipboardCheck />}>Free quote</CtaBarAction>\n * </CtaBar>\n *\n * Render it once per page: at the layout root for a site-wide bar, or inside\n * a page for a page-specific one. It's a labelled <aside>, which is valid at\n * either depth (axe 4.13 retired the rule that wanted complementary\n * landmarks top level; the fixture app runs axe on both placements). Never\n * inside a blurred header: backdrop-filter on an ancestor turns it into the\n * containing block for this fixed bar.\n */\n\nimport * as React from 'react'\nimport { GlassStyles } from '../shared/glass'\nimport { CtaBarBehavior } from './CtaBarBehavior'\nimport { CtaBarStyles, type CtaBarBreakpoint } from './styles'\n\nexport interface CtaBarProps {\n children: React.ReactNode\n /** Accessible name of the bar's landmark. Default \"Quick actions\". */\n label?: string\n /** The bar is hidden at this width and above. `none` shows it at every width. Default `lg` (1024px). */\n breakpoint?: CtaBarBreakpoint\n /** `fill` stretches actions across the bar; `fit` hugs a single action in a centred capsule. Default `fill`. */\n layout?: 'fill' | 'fit'\n /**\n * CSS selector. The bar stays off screen until this element has scrolled\n * off the top, e.g. the hero's own CTA. If nothing matches, the bar shows.\n */\n showAfter?: string\n /** CSS selector(s). The bar steps aside while any match is on screen, e.g. the form it points at, or the footer. */\n hideOver?: string | string[]\n /** Hide while a text field has focus (the keyboard is up). Default true. */\n hideWhileTyping?: boolean\n /** Tighten while scrolling down, restore on scroll up. Default true. */\n compactOnScroll?: boolean\n /** Lift the Echo launcher above the bar while the bar is on screen. Default true. */\n echoClearance?: boolean\n /** Reserve the bar's height at the end of the page so it never covers the footer. Default true. */\n spacer?: boolean\n /** Send a `cta_click` analytics event for each action tap. Default true. */\n track?: boolean\n className?: string\n id?: string\n}\n\nfunction cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ')\n}\n\nexport function CtaBar({\n children,\n label = 'Quick actions',\n breakpoint = 'lg',\n layout = 'fill',\n showAfter,\n hideOver,\n hideWhileTyping = true,\n compactOnScroll = true,\n echoClearance = true,\n spacer = true,\n track = true,\n className,\n id,\n}: CtaBarProps) {\n const hideOverList = hideOver == null ? undefined : Array.isArray(hideOver) ? hideOver : [hideOver]\n return (\n <>\n <GlassStyles />\n <CtaBarStyles />\n {spacer ? <div className=\"sk-cta-bar-spacer\" data-breakpoint={breakpoint} aria-hidden=\"true\" /> : null}\n <aside\n id={id}\n aria-label={label}\n className={cx('sk-cta-bar', 'sk-glass', className)}\n data-sk-cta-bar=\"\"\n data-breakpoint={breakpoint}\n data-layout={layout}\n data-echo-clearance={echoClearance ? '' : undefined}\n // Server-rendered off screen when it waits for a start element, so it\n // never slides in over the hero during hydration. JS-off visitors get\n // it back through the stylesheet's (scripting: none) rule.\n data-hidden={showAfter ? '' : undefined}\n >\n {children}\n <CtaBarBehavior\n showAfter={showAfter}\n hideOver={hideOverList}\n hideWhileTyping={hideWhileTyping}\n compactOnScroll={compactOnScroll}\n track={track}\n />\n </aside>\n </>\n )\n}\n\ntype CtaBarActionOwnProps = {\n /** Element or component to render, e.g. Next's Link. Default: `a` with an href, `button` without. */\n as?: React.ElementType\n /** Leading icon; decorative, hidden from assistive tech. */\n icon?: React.ReactNode\n /** `primary` = solid brand, `secondary` = tinted glass, `plain` = layout only (style it yourself). Default `primary`. */\n variant?: 'primary' | 'secondary' | 'plain'\n /**\n * Fold to icon-only while the bar is compact. Default: true for a\n * secondary action with an icon. The label stays in the accessible name.\n */\n collapse?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport type CtaBarActionProps = CtaBarActionOwnProps &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof CtaBarActionOwnProps> &\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof CtaBarActionOwnProps | keyof React.AnchorHTMLAttributes<HTMLAnchorElement>>\n\nexport function CtaBarAction({\n as,\n icon,\n variant = 'primary',\n collapse,\n children,\n className,\n ...rest\n}: CtaBarActionProps) {\n const Comp: React.ElementType = as ?? (rest.href ? 'a' : 'button')\n const folds = collapse ?? (variant === 'secondary' && icon != null)\n return (\n <Comp\n {...(Comp === 'button' && !('type' in rest) ? { type: 'button' } : null)}\n {...rest}\n className={cx('sk-cta-bar__action', className)}\n data-variant={variant}\n data-collapse={folds ? '' : undefined}\n >\n {icon != null ? (\n <span className=\"sk-cta-bar__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sk-cta-bar__label\">{children}</span>\n </Comp>\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/cta-bar/styles.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,eAAO,MAAM,kBAAkB,eAAe,CAAA;AAE9C,mFAAmF;AACnF,eAAO,MAAM,mBAAmB;aAAK,EAAE,EAAE,GAAG;aAAE,EAAE,EAAE,GAAG;aAAE,EAAE,EAAE,IAAI;aAAE,EAAE,EAAE,IAAI;CAAW,CAAA;AACpF,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,mBAAmB,GAAG,MAAM,CAAA;AAKxE;;;;GAIG;AACH,eAAO,MAAM,cAAc,kIAA+D,CAAA;AAE1F;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,kKAA+F,CAAA;AAwBzH,eAAO,MAAM,WAAW,QA0GvB,CAAA;AAED,wBAAgB,YAAY,sBAM3B"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/cta-bar/styles.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,eAAO,MAAM,kBAAkB,eAAe,CAAA;AAE9C,mFAAmF;AACnF,eAAO,MAAM,mBAAmB;aAAK,EAAE,EAAE,GAAG;aAAE,EAAE,EAAE,GAAG;aAAE,EAAE,EAAE,IAAI;aAAE,EAAE,EAAE,IAAI;CAAW,CAAA;AACpF,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,mBAAmB,GAAG,MAAM,CAAA;AAKxE;;;;GAIG;AACH,eAAO,MAAM,cAAc,kIAA+D,CAAA;AAE1F;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,kKAA+F,CAAA;AAwBzH,eAAO,MAAM,WAAW,QA6GvB,CAAA;AAED,wBAAgB,YAAY,sBAM3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../src/engage/ChatWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,SAAS,CAAA;AAkBnD,UAAU,eAAe;IACvB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AA6KD,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,eAAe,qBAykDzR"}
1
+ {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../src/engage/ChatWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,SAAS,CAAA;AAkBnD,UAAU,eAAe;IACvB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AA8LD,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,eAAe,qBAykDzR"}
@@ -1,22 +1,22 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkXKJLJLQ4_js = require('../chunk-XKJLJLQ4.js');
5
- var chunkRVFOUPK4_js = require('../chunk-RVFOUPK4.js');
4
+ var chunkQYRJ4IQD_js = require('../chunk-QYRJ4IQD.js');
5
+ var chunk7IM7VG4E_js = require('../chunk-7IM7VG4E.js');
6
6
  require('../chunk-ESP5RMB7.js');
7
7
  require('../chunk-NBOBOYMT.js');
8
8
  require('../chunk-G6WF4G3E.js');
9
- require('../chunk-SDGS2R5O.js');
9
+ require('../chunk-WWJQGMMN.js');
10
10
  require('../chunk-5XFFUP6D.js');
11
- require('../chunk-AQUWWATH.js');
11
+ require('../chunk-EF7QCYLF.js');
12
12
  require('../chunk-KHPJ3CEL.js');
13
13
  require('../chunk-RC4WWQXR.js');
14
14
  require('../chunk-P4Y75QSU.js');
15
15
  require('../chunk-VJMPIRSD.js');
16
16
  require('../chunk-5RNAUYWE.js');
17
- require('../chunk-ZQJGCQHC.js');
18
- require('../chunk-LF44SJPP.js');
19
- require('../chunk-OXA4ZSX2.js');
17
+ require('../chunk-VNJTU6LG.js');
18
+ require('../chunk-IPGIFBRN.js');
19
+ require('../chunk-QWUDHOUE.js');
20
20
  require('../chunk-SNAQBZPT.js');
21
21
 
22
22
  // src/engage/echo-config.ts
@@ -48,15 +48,15 @@ function getEchoWidgetProps(config = SONOR_PUBLIC_ECHO_DEFAULTS) {
48
48
 
49
49
  Object.defineProperty(exports, "ChatWidget", {
50
50
  enumerable: true,
51
- get: function () { return chunkXKJLJLQ4_js.ChatWidget; }
51
+ get: function () { return chunkQYRJ4IQD_js.ChatWidget; }
52
52
  });
53
53
  Object.defineProperty(exports, "DesignRenderer", {
54
54
  enumerable: true,
55
- get: function () { return chunkRVFOUPK4_js.DesignRenderer; }
55
+ get: function () { return chunk7IM7VG4E_js.DesignRenderer; }
56
56
  });
57
57
  Object.defineProperty(exports, "EngageWidget", {
58
58
  enumerable: true,
59
- get: function () { return chunkRVFOUPK4_js.EngageWidget; }
59
+ get: function () { return chunk7IM7VG4E_js.EngageWidget; }
60
60
  });
61
61
  exports.SONOR_PUBLIC_ECHO_DEFAULTS = SONOR_PUBLIC_ECHO_DEFAULTS;
62
62
  exports.getEchoWidgetProps = getEchoWidgetProps;
@@ -1,20 +1,20 @@
1
1
  'use client';
2
- export { ChatWidget } from '../chunk-4EJI4IOX.mjs';
3
- export { DesignRenderer, EngageWidget } from '../chunk-NMKUYGKK.mjs';
2
+ export { ChatWidget } from '../chunk-3SHAY7PK.mjs';
3
+ export { DesignRenderer, EngageWidget } from '../chunk-MSSFRRXJ.mjs';
4
4
  import '../chunk-4U5NCKQY.mjs';
5
5
  import '../chunk-OBKS3CPP.mjs';
6
6
  import '../chunk-NSWO43XW.mjs';
7
- import '../chunk-YP5WAFTI.mjs';
7
+ import '../chunk-YZMI7QQ2.mjs';
8
8
  import '../chunk-QRHVMTHF.mjs';
9
- import '../chunk-OQWAJBYA.mjs';
9
+ import '../chunk-VNSV5SY7.mjs';
10
10
  import '../chunk-TMVKRQGJ.mjs';
11
11
  import '../chunk-ZZQAGCSI.mjs';
12
12
  import '../chunk-5SANRSX3.mjs';
13
13
  import '../chunk-6EDVCUAG.mjs';
14
14
  import '../chunk-A6UYV475.mjs';
15
- import '../chunk-RGCUND5Q.mjs';
16
- import '../chunk-3DXJHMQM.mjs';
17
- import '../chunk-ACKFL6WA.mjs';
15
+ import '../chunk-6ZMEJSNX.mjs';
16
+ import '../chunk-YCA4KCRF.mjs';
17
+ import '../chunk-HQWPCX3N.mjs';
18
18
  import '../chunk-BEXTDHO4.mjs';
19
19
 
20
20
  // src/engage/echo-config.ts