@fluencypassdevs/cycle 1.13.0 → 1.15.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 (251) hide show
  1. package/bin/mcp.mjs +199 -0
  2. package/dist/{chunk-YINJ5YZ5.js → chunk-2NMEKWO5.js} +2 -2
  3. package/dist/{chunk-YINJ5YZ5.js.map → chunk-2NMEKWO5.js.map} +1 -1
  4. package/dist/{chunk-5I4PGGLN.js → chunk-3TSOMZJO.js} +4 -4
  5. package/dist/{chunk-5I4PGGLN.js.map → chunk-3TSOMZJO.js.map} +1 -1
  6. package/dist/{chunk-L32AMI4K.js → chunk-3VAYZAEF.js} +8 -8
  7. package/dist/{chunk-L32AMI4K.js.map → chunk-3VAYZAEF.js.map} +1 -1
  8. package/dist/{chunk-EF6FQT4Y.js → chunk-46SWH3RS.js} +4 -4
  9. package/dist/{chunk-EF6FQT4Y.js.map → chunk-46SWH3RS.js.map} +1 -1
  10. package/dist/{chunk-YJ4U7ISM.js → chunk-5Z3ZM7PS.js} +4 -4
  11. package/dist/{chunk-YJ4U7ISM.js.map → chunk-5Z3ZM7PS.js.map} +1 -1
  12. package/dist/{chunk-5BNTQSCS.js → chunk-6ANVMIR5.js} +4 -4
  13. package/dist/{chunk-5BNTQSCS.js.map → chunk-6ANVMIR5.js.map} +1 -1
  14. package/dist/{chunk-QZVQPUVT.js → chunk-6RHG4VOA.js} +4 -4
  15. package/dist/{chunk-QZVQPUVT.js.map → chunk-6RHG4VOA.js.map} +1 -1
  16. package/dist/{chunk-JMNMW54C.js → chunk-7AACZB3Q.js} +4 -4
  17. package/dist/{chunk-JMNMW54C.js.map → chunk-7AACZB3Q.js.map} +1 -1
  18. package/dist/{chunk-JGUDRAWA.js → chunk-AIBZJWUG.js} +8 -8
  19. package/dist/{chunk-JGUDRAWA.js.map → chunk-AIBZJWUG.js.map} +1 -1
  20. package/dist/{chunk-MTKKVYNS.js → chunk-AUCSNGST.js} +4 -4
  21. package/dist/{chunk-MTKKVYNS.js.map → chunk-AUCSNGST.js.map} +1 -1
  22. package/dist/{chunk-SZUWVHP4.js → chunk-C2P3ZSEY.js} +4 -4
  23. package/dist/{chunk-SZUWVHP4.js.map → chunk-C2P3ZSEY.js.map} +1 -1
  24. package/dist/{chunk-NOMLQHZS.js → chunk-C5JGLWV6.js} +4 -4
  25. package/dist/{chunk-NOMLQHZS.js.map → chunk-C5JGLWV6.js.map} +1 -1
  26. package/dist/{chunk-HZJRM5EK.js → chunk-C6YZNBOO.js} +5 -5
  27. package/dist/{chunk-HZJRM5EK.js.map → chunk-C6YZNBOO.js.map} +1 -1
  28. package/dist/{chunk-3EFI7PYC.js → chunk-CBBCTX3A.js} +5 -5
  29. package/dist/{chunk-3EFI7PYC.js.map → chunk-CBBCTX3A.js.map} +1 -1
  30. package/dist/{chunk-7NFHHOAE.js → chunk-CMOTOQK7.js} +4 -4
  31. package/dist/{chunk-7NFHHOAE.js.map → chunk-CMOTOQK7.js.map} +1 -1
  32. package/dist/chunk-DO4M3OVV.js +49 -0
  33. package/dist/chunk-DO4M3OVV.js.map +1 -0
  34. package/dist/{chunk-DCNZ2DRR.js → chunk-E3E64CT4.js} +6 -6
  35. package/dist/{chunk-DCNZ2DRR.js.map → chunk-E3E64CT4.js.map} +1 -1
  36. package/dist/{chunk-MSLQRGSP.js → chunk-E6WZOLWX.js} +4 -4
  37. package/dist/{chunk-MSLQRGSP.js.map → chunk-E6WZOLWX.js.map} +1 -1
  38. package/dist/{chunk-C6BQAAHX.js → chunk-EFT7BHN7.js} +3 -3
  39. package/dist/{chunk-C6BQAAHX.js.map → chunk-EFT7BHN7.js.map} +1 -1
  40. package/dist/{chunk-CIM6KJH5.js → chunk-EMX27A3U.js} +4 -4
  41. package/dist/{chunk-CIM6KJH5.js.map → chunk-EMX27A3U.js.map} +1 -1
  42. package/dist/{chunk-ELZCZ6ZH.js → chunk-EZVWNHDF.js} +5 -5
  43. package/dist/{chunk-ELZCZ6ZH.js.map → chunk-EZVWNHDF.js.map} +1 -1
  44. package/dist/chunk-FTR4NEFA.js +26 -0
  45. package/dist/chunk-FTR4NEFA.js.map +1 -0
  46. package/dist/chunk-GR65GV2N.js +29 -0
  47. package/dist/chunk-GR65GV2N.js.map +1 -0
  48. package/dist/{chunk-I5A3CME4.js → chunk-H6VG367Y.js} +4 -4
  49. package/dist/{chunk-I5A3CME4.js.map → chunk-H6VG367Y.js.map} +1 -1
  50. package/dist/{chunk-A3Z5GGAI.js → chunk-HBFS7W6V.js} +4 -4
  51. package/dist/{chunk-A3Z5GGAI.js.map → chunk-HBFS7W6V.js.map} +1 -1
  52. package/dist/{chunk-5NKTYXWQ.js → chunk-HCSVANPX.js} +5 -5
  53. package/dist/{chunk-5NKTYXWQ.js.map → chunk-HCSVANPX.js.map} +1 -1
  54. package/dist/{chunk-QANROH2K.js → chunk-HIAYFCBX.js} +4 -4
  55. package/dist/{chunk-QANROH2K.js.map → chunk-HIAYFCBX.js.map} +1 -1
  56. package/dist/chunk-HXFGULDU.js +55 -0
  57. package/dist/chunk-HXFGULDU.js.map +1 -0
  58. package/dist/{chunk-726XFHED.js → chunk-HZOLDTOT.js} +4 -4
  59. package/dist/{chunk-726XFHED.js.map → chunk-HZOLDTOT.js.map} +1 -1
  60. package/dist/{chunk-74WKJRW7.js → chunk-I4DM7SVV.js} +4 -4
  61. package/dist/{chunk-74WKJRW7.js.map → chunk-I4DM7SVV.js.map} +1 -1
  62. package/dist/{chunk-V7M2NHUO.js → chunk-IGFCIAF3.js} +3 -3
  63. package/dist/{chunk-V7M2NHUO.js.map → chunk-IGFCIAF3.js.map} +1 -1
  64. package/dist/{chunk-NYJMA2T7.js → chunk-ILYZQBBN.js} +4 -4
  65. package/dist/{chunk-NYJMA2T7.js.map → chunk-ILYZQBBN.js.map} +1 -1
  66. package/dist/{chunk-X4IBONFB.js → chunk-J3DGYZGK.js} +4 -4
  67. package/dist/{chunk-X4IBONFB.js.map → chunk-J3DGYZGK.js.map} +1 -1
  68. package/dist/{chunk-6OYSTCGP.js → chunk-JDGM46MB.js} +4 -4
  69. package/dist/{chunk-6OYSTCGP.js.map → chunk-JDGM46MB.js.map} +1 -1
  70. package/dist/{chunk-66CU7J2I.js → chunk-JDPJQSZV.js} +4 -4
  71. package/dist/{chunk-66CU7J2I.js.map → chunk-JDPJQSZV.js.map} +1 -1
  72. package/dist/{chunk-CWMXYPWK.js → chunk-JGZGZIGR.js} +4 -4
  73. package/dist/{chunk-CWMXYPWK.js.map → chunk-JGZGZIGR.js.map} +1 -1
  74. package/dist/{chunk-JRJBKPXW.js → chunk-JUVL7GN2.js} +4 -4
  75. package/dist/{chunk-JRJBKPXW.js.map → chunk-JUVL7GN2.js.map} +1 -1
  76. package/dist/chunk-K2XIXOMO.js +24 -0
  77. package/dist/chunk-K2XIXOMO.js.map +1 -0
  78. package/dist/{chunk-2MXR6RRJ.js → chunk-KCEFPJZT.js} +4 -4
  79. package/dist/{chunk-2MXR6RRJ.js.map → chunk-KCEFPJZT.js.map} +1 -1
  80. package/dist/{chunk-L2DJS6PG.js → chunk-KRENXLKC.js} +6 -6
  81. package/dist/{chunk-L2DJS6PG.js.map → chunk-KRENXLKC.js.map} +1 -1
  82. package/dist/{chunk-2EKU7RP4.js → chunk-KSALAAWD.js} +4 -4
  83. package/dist/{chunk-2EKU7RP4.js.map → chunk-KSALAAWD.js.map} +1 -1
  84. package/dist/{chunk-JJETOZMI.js → chunk-LBMPZDD5.js} +4 -4
  85. package/dist/{chunk-JJETOZMI.js.map → chunk-LBMPZDD5.js.map} +1 -1
  86. package/dist/{chunk-W4GSXVJ2.js → chunk-LC55JPI4.js} +4 -4
  87. package/dist/{chunk-W4GSXVJ2.js.map → chunk-LC55JPI4.js.map} +1 -1
  88. package/dist/{chunk-CG7NXMBC.js → chunk-M3U2TKWS.js} +8 -8
  89. package/dist/{chunk-CG7NXMBC.js.map → chunk-M3U2TKWS.js.map} +1 -1
  90. package/dist/{chunk-UEJLA7Q6.js → chunk-M56K3ZKY.js} +4 -4
  91. package/dist/{chunk-UEJLA7Q6.js.map → chunk-M56K3ZKY.js.map} +1 -1
  92. package/dist/{chunk-D4UH2HJQ.js → chunk-MJKZELI3.js} +7 -7
  93. package/dist/{chunk-D4UH2HJQ.js.map → chunk-MJKZELI3.js.map} +1 -1
  94. package/dist/{chunk-5XNYJECW.js → chunk-NE5CT5LH.js} +5 -5
  95. package/dist/{chunk-5XNYJECW.js.map → chunk-NE5CT5LH.js.map} +1 -1
  96. package/dist/chunk-OHRYR7PN.js +37 -0
  97. package/dist/chunk-OHRYR7PN.js.map +1 -0
  98. package/dist/{chunk-NVA4ZJOS.js → chunk-QM54AVC7.js} +4 -4
  99. package/dist/{chunk-NVA4ZJOS.js.map → chunk-QM54AVC7.js.map} +1 -1
  100. package/dist/{chunk-TYCPXAXF.js → chunk-QTH4LSO6.js} +3 -2
  101. package/dist/chunk-QTH4LSO6.js.map +1 -0
  102. package/dist/{chunk-ZTANTDKS.js → chunk-RXCQLSWL.js} +4 -4
  103. package/dist/{chunk-ZTANTDKS.js.map → chunk-RXCQLSWL.js.map} +1 -1
  104. package/dist/{chunk-IGMII4BK.js → chunk-SCZXIVL5.js} +4 -4
  105. package/dist/{chunk-IGMII4BK.js.map → chunk-SCZXIVL5.js.map} +1 -1
  106. package/dist/chunk-SDPIL7HA.js +65 -0
  107. package/dist/chunk-SDPIL7HA.js.map +1 -0
  108. package/dist/chunk-SIEPZ5LD.js +29 -0
  109. package/dist/chunk-SIEPZ5LD.js.map +1 -0
  110. package/dist/{chunk-V3CBOIGK.js → chunk-SXCNJQ7S.js} +6 -6
  111. package/dist/{chunk-V3CBOIGK.js.map → chunk-SXCNJQ7S.js.map} +1 -1
  112. package/dist/{chunk-7ZXAU2CD.js → chunk-T5AHJXEY.js} +5 -5
  113. package/dist/{chunk-7ZXAU2CD.js.map → chunk-T5AHJXEY.js.map} +1 -1
  114. package/dist/chunk-T7EIAVSF.js +18 -0
  115. package/dist/chunk-T7EIAVSF.js.map +1 -0
  116. package/dist/{chunk-F2Q3E2ZM.js → chunk-TBLO2A4C.js} +4 -4
  117. package/dist/{chunk-F2Q3E2ZM.js.map → chunk-TBLO2A4C.js.map} +1 -1
  118. package/dist/chunk-U27GHP5Z.js +24 -0
  119. package/dist/chunk-U27GHP5Z.js.map +1 -0
  120. package/dist/chunk-U2SCIVKI.js +27 -0
  121. package/dist/chunk-U2SCIVKI.js.map +1 -0
  122. package/dist/{chunk-AL2ALTBH.js → chunk-WL6J5ZVH.js} +4 -4
  123. package/dist/{chunk-AL2ALTBH.js.map → chunk-WL6J5ZVH.js.map} +1 -1
  124. package/dist/{chunk-5LZHXNBV.js → chunk-WMOGNJWP.js} +3 -3
  125. package/dist/{chunk-5LZHXNBV.js.map → chunk-WMOGNJWP.js.map} +1 -1
  126. package/dist/chunk-WUK6APAX.js +57 -0
  127. package/dist/chunk-WUK6APAX.js.map +1 -0
  128. package/dist/chunk-XDJ2E6KQ.js +33 -0
  129. package/dist/chunk-XDJ2E6KQ.js.map +1 -0
  130. package/dist/{chunk-F2XA2Z75.js → chunk-XMZVSCCY.js} +7 -7
  131. package/dist/{chunk-F2XA2Z75.js.map → chunk-XMZVSCCY.js.map} +1 -1
  132. package/dist/chunk-XXTQV27H.js +77 -0
  133. package/dist/chunk-XXTQV27H.js.map +1 -0
  134. package/dist/{chunk-3LXU5C35.js → chunk-Y33BGBHR.js} +4 -4
  135. package/dist/{chunk-3LXU5C35.js.map → chunk-Y33BGBHR.js.map} +1 -1
  136. package/dist/{chunk-JPEDYOV7.js → chunk-YW7VSQJE.js} +4 -4
  137. package/dist/{chunk-JPEDYOV7.js.map → chunk-YW7VSQJE.js.map} +1 -1
  138. package/dist/{chunk-PY2BIZNB.js → chunk-ZJRXBOM2.js} +4 -4
  139. package/dist/{chunk-PY2BIZNB.js.map → chunk-ZJRXBOM2.js.map} +1 -1
  140. package/dist/composites/chat-thread.js +14 -13
  141. package/dist/hooks/use-intersection.d.ts +34 -0
  142. package/dist/hooks/use-intersection.js +5 -0
  143. package/dist/hooks/use-intersection.js.map +1 -0
  144. package/dist/hooks/use-reduced-motion.d.ts +11 -0
  145. package/dist/hooks/use-reduced-motion.js +5 -0
  146. package/dist/hooks/use-reduced-motion.js.map +1 -0
  147. package/dist/icons/index.js +4 -3
  148. package/dist/icons/lucide.js +1 -0
  149. package/dist/index.js +56 -55
  150. package/dist/layout/container.js +4 -3
  151. package/dist/layout/grid.js +4 -3
  152. package/dist/layout/stack.js +4 -3
  153. package/dist/lib/utils.js +3 -2
  154. package/dist/logos/fluencypass.js +4 -3
  155. package/dist/logos/product.js +5 -4
  156. package/dist/marketing/effects/card-dark-glow.d.ts +30 -0
  157. package/dist/marketing/effects/card-dark-glow.js +6 -0
  158. package/dist/marketing/effects/card-dark-glow.js.map +1 -0
  159. package/dist/marketing/effects/circle-glow.d.ts +26 -0
  160. package/dist/marketing/effects/circle-glow.js +6 -0
  161. package/dist/marketing/effects/circle-glow.js.map +1 -0
  162. package/dist/marketing/effects/index.d.ts +4 -0
  163. package/dist/marketing/effects/index.js +8 -0
  164. package/dist/marketing/effects/index.js.map +1 -0
  165. package/dist/marketing/effects/marquee.d.ts +30 -0
  166. package/dist/marketing/effects/marquee.js +6 -0
  167. package/dist/marketing/effects/marquee.js.map +1 -0
  168. package/dist/marketing/layout/index.d.ts +2 -0
  169. package/dist/marketing/layout/index.js +6 -0
  170. package/dist/marketing/layout/index.js.map +1 -0
  171. package/dist/marketing/layout/section.d.ts +36 -0
  172. package/dist/marketing/layout/section.js +6 -0
  173. package/dist/marketing/layout/section.js.map +1 -0
  174. package/dist/marketing/motion/animated-number.d.ts +35 -0
  175. package/dist/marketing/motion/animated-number.js +8 -0
  176. package/dist/marketing/motion/animated-number.js.map +1 -0
  177. package/dist/marketing/motion/index.d.ts +6 -0
  178. package/dist/marketing/motion/index.js +11 -0
  179. package/dist/marketing/motion/index.js.map +1 -0
  180. package/dist/marketing/motion/reveal-on-scroll.d.ts +27 -0
  181. package/dist/marketing/motion/reveal-on-scroll.js +8 -0
  182. package/dist/marketing/motion/reveal-on-scroll.js.map +1 -0
  183. package/dist/marketing/motion/smooth-anchor.d.ts +31 -0
  184. package/dist/marketing/motion/smooth-anchor.js +5 -0
  185. package/dist/marketing/motion/smooth-anchor.js.map +1 -0
  186. package/dist/marketing/motion/stagger-reveal.d.ts +30 -0
  187. package/dist/marketing/motion/stagger-reveal.js +8 -0
  188. package/dist/marketing/motion/stagger-reveal.js.map +1 -0
  189. package/dist/marketing/typography/hero-heading.d.ts +25 -0
  190. package/dist/marketing/typography/hero-heading.js +6 -0
  191. package/dist/marketing/typography/hero-heading.js.map +1 -0
  192. package/dist/marketing/typography/index.d.ts +5 -0
  193. package/dist/marketing/typography/index.js +9 -0
  194. package/dist/marketing/typography/index.js.map +1 -0
  195. package/dist/marketing/typography/section-eyebrow.d.ts +21 -0
  196. package/dist/marketing/typography/section-eyebrow.js +6 -0
  197. package/dist/marketing/typography/section-eyebrow.js.map +1 -0
  198. package/dist/marketing/typography/section-heading.d.ts +37 -0
  199. package/dist/marketing/typography/section-heading.js +6 -0
  200. package/dist/marketing/typography/section-heading.js.map +1 -0
  201. package/dist/marketing/typography/section-subtitle.d.ts +19 -0
  202. package/dist/marketing/typography/section-subtitle.js +6 -0
  203. package/dist/marketing/typography/section-subtitle.js.map +1 -0
  204. package/dist/styles/tokens.css +192 -0
  205. package/dist/ui/accordion.js +4 -3
  206. package/dist/ui/alert-dialog.js +5 -4
  207. package/dist/ui/alert.js +6 -5
  208. package/dist/ui/audio-player.js +7 -6
  209. package/dist/ui/avatar.js +4 -3
  210. package/dist/ui/badge.js +4 -3
  211. package/dist/ui/button.js +4 -3
  212. package/dist/ui/chat-bubble.js +5 -4
  213. package/dist/ui/chat-message.js +10 -9
  214. package/dist/ui/chat-panel.js +9 -8
  215. package/dist/ui/checkbox.js +4 -3
  216. package/dist/ui/circular-progress.js +4 -3
  217. package/dist/ui/dialog.js +5 -4
  218. package/dist/ui/drawer.js +4 -3
  219. package/dist/ui/dropdown-menu.js +4 -3
  220. package/dist/ui/editor.js +8 -7
  221. package/dist/ui/empty.js +4 -3
  222. package/dist/ui/fab.js +4 -3
  223. package/dist/ui/file-card.js +4 -3
  224. package/dist/ui/input.js +4 -3
  225. package/dist/ui/label.js +4 -3
  226. package/dist/ui/like-dislike.js +8 -7
  227. package/dist/ui/live-waiting.js +7 -6
  228. package/dist/ui/message-bar.js +4 -3
  229. package/dist/ui/message-rating.js +4 -3
  230. package/dist/ui/player-i18n.js +3 -2
  231. package/dist/ui/popover.js +4 -3
  232. package/dist/ui/progress-dot.js +4 -3
  233. package/dist/ui/progress-stage.js +4 -3
  234. package/dist/ui/progress.js +4 -3
  235. package/dist/ui/radio-group.js +4 -3
  236. package/dist/ui/resizable.js +4 -3
  237. package/dist/ui/scroll-area.js +4 -3
  238. package/dist/ui/select.js +4 -3
  239. package/dist/ui/sheet.js +4 -3
  240. package/dist/ui/skeleton.js +4 -3
  241. package/dist/ui/slider.js +4 -3
  242. package/dist/ui/sonner.js +6 -5
  243. package/dist/ui/spinner.js +6 -5
  244. package/dist/ui/switch.js +4 -3
  245. package/dist/ui/tabs.js +4 -3
  246. package/dist/ui/textarea.js +4 -3
  247. package/dist/ui/toggle.js +4 -3
  248. package/dist/ui/tooltip.js +4 -3
  249. package/dist/ui/video-player.js +7 -6
  250. package/package.json +38 -2
  251. package/dist/chunk-TYCPXAXF.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/toggle.tsx"],"names":["TogglePrimitive"],"mappings":";;;;;;AAQA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,2bAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,gBAAA;AAAA,QACF,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,2BAAA;AAAA,QACT,EAAA,EAAI,oCAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,qCAAA;AAAA,QACJ,IAAA,EAAM,SAAA;AAAA,QACN,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AASA,SAAS,OAAO,EAAA,EAMA;AANA,EAAA,IAAA,EAAA,GAAA,EAAA,EACd;AAAA,IAAA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA,GAAc;AAAA,GA/ChB,GA2CgB,EAAA,EAKX,KAAA,GAAA,SAAA,CALW,EAAA,EAKX;AAAA,IAJH,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA,CAAgB,IAAA;AAAA,IAAhB,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QAChC,WAAA,IAAe,sCAAA;AAAA,QACf;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ","file":"chunk-CIM6KJH5.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-lg whitespace-nowrap text-sm font-medium transition-[color,box-shadow] outline-none cursor-pointer hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-transparent\",\n outline:\n \"border border-neutral-border bg-transparent shadow-xs dark:shadow-none hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-4 has-[>svg]:px-3\",\n xs: \"h-6 px-2 text-xs has-[>svg]:px-1.5\",\n sm: \"h-8 px-3 has-[>svg]:px-2.5\",\n lg: \"h-12 px-6 text-base has-[>svg]:px-4\",\n icon: \"size-10\",\n \"icon-xs\": \"size-6\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ToggleProps\n extends React.ComponentProps<typeof TogglePrimitive.Root>,\n VariantProps<typeof toggleVariants> {\n /** Preenche icones SVG quando o toggle esta ativo (on). Ideal para icones como Heart, Star, Bookmark. */\n fillOnPress?: boolean\n}\n\nfunction Toggle({\n className,\n variant,\n size,\n fillOnPress = false,\n ...props\n}: ToggleProps) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(\n toggleVariants({ variant, size }),\n fillOnPress && \"data-[state=on]:[&_svg]:fill-current\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/toggle.tsx"],"names":["TogglePrimitive"],"mappings":";;;;;;AAQA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,2bAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,gBAAA;AAAA,QACF,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,2BAAA;AAAA,QACT,EAAA,EAAI,oCAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,qCAAA;AAAA,QACJ,IAAA,EAAM,SAAA;AAAA,QACN,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AASA,SAAS,OAAO,EAAA,EAMA;AANA,EAAA,IAAA,EAAA,GAAA,EAAA,EACd;AAAA,IAAA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA,GAAc;AAAA,GA/ChB,GA2CgB,EAAA,EAKX,KAAA,GAAA,SAAA,CALW,EAAA,EAKX;AAAA,IAJH,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA,CAAgB,IAAA;AAAA,IAAhB,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QAChC,WAAA,IAAe,sCAAA;AAAA,QACf;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ","file":"chunk-EMX27A3U.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-lg whitespace-nowrap text-sm font-medium transition-[color,box-shadow] outline-none cursor-pointer hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-transparent\",\n outline:\n \"border border-neutral-border bg-transparent shadow-xs dark:shadow-none hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-4 has-[>svg]:px-3\",\n xs: \"h-6 px-2 text-xs has-[>svg]:px-1.5\",\n sm: \"h-8 px-3 has-[>svg]:px-2.5\",\n lg: \"h-12 px-6 text-base has-[>svg]:px-4\",\n icon: \"size-10\",\n \"icon-xs\": \"size-6\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ToggleProps\n extends React.ComponentProps<typeof TogglePrimitive.Root>,\n VariantProps<typeof toggleVariants> {\n /** Preenche icones SVG quando o toggle esta ativo (on). Ideal para icones como Heart, Star, Bookmark. */\n fillOnPress?: boolean\n}\n\nfunction Toggle({\n className,\n variant,\n size,\n fillOnPress = false,\n ...props\n}: ToggleProps) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(\n toggleVariants({ variant, size }),\n fillOnPress && \"data-[state=on]:[&_svg]:fill-current\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n"]}
@@ -1,6 +1,6 @@
1
- import { CycleIcon } from './chunk-V7M2NHUO.js';
2
- import { cn } from './chunk-TYCPXAXF.js';
3
- import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
1
+ import { CycleIcon } from './chunk-IGFCIAF3.js';
2
+ import { cn } from './chunk-QTH4LSO6.js';
3
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-2NMEKWO5.js';
4
4
  import { useTheme } from 'next-themes';
5
5
  import { Toaster as Toaster$1, toast } from 'sonner';
6
6
  import { Loader2, OctagonX, TriangleAlert, Info, CircleCheck } from 'lucide-react';
@@ -87,5 +87,5 @@ var cycleToast = {
87
87
  };
88
88
 
89
89
  export { Toaster, cycleToast };
90
- //# sourceMappingURL=chunk-ELZCZ6ZH.js.map
91
- //# sourceMappingURL=chunk-ELZCZ6ZH.js.map
90
+ //# sourceMappingURL=chunk-EZVWNHDF.js.map
91
+ //# sourceMappingURL=chunk-EZVWNHDF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/sonner.tsx"],"names":["Sonner"],"mappings":"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","file":"chunk-ELZCZ6ZH.js","sourcesContent":["\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast, type ToasterProps } from \"sonner\"\nimport {\n CircleCheck,\n Info,\n Loader2,\n OctagonX,\n TriangleAlert,\n} from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { cn } from \"@/lib/utils\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CycleIcon icon={CircleCheck} size=\"xs\" decorative />,\n info: <CycleIcon icon={Info} size=\"xs\" decorative />,\n warning: <CycleIcon icon={TriangleAlert} size=\"xs\" decorative />,\n error: <CycleIcon icon={OctagonX} size=\"xs\" decorative />,\n loading: (\n <CycleIcon\n icon={Loader2}\n size=\"xs\"\n decorative\n className=\"animate-spin\"\n />\n ),\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\n/**\n * Cycle-themed toast helpers.\n *\n * These wrap `sonner.toast` with Cycle semantic colors:\n * - `cycleToast.positive(...)` — green/success feedback\n * - `cycleToast.critical(...)` — red/error feedback\n * - `cycleToast.warning(...)` — amber/warning feedback\n *\n * Each applies the `.theme-*` class AND redefines `--normal-bg/text/border`\n * on the toast element so Sonner picks up the themed token values.\n */\n\ntype ToastMessage = string | React.ReactNode\ntype ToastOptions = Parameters<typeof toast>[1]\n\n/**\n * Style override that re-binds Sonner's CSS variables on the toast element itself.\n * Combined with `.theme-*` classNames, this makes `var(--popover)` resolve\n * in the toast's own scope (where the theme redefines the tokens).\n */\nconst themedStyle = {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n} as React.CSSProperties\n\nconst cycleToast = {\n /** Green — positive feedback (saved, completed, success) */\n positive: (message: ToastMessage, options?: ToastOptions) =>\n toast.success(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-positive\", options?.classNames?.toast),\n },\n }),\n\n /** Red — critical error (failed, deleted, destructive) */\n critical: (message: ToastMessage, options?: ToastOptions) =>\n toast.error(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-critical\", options?.classNames?.toast),\n },\n }),\n\n /** Amber — warning (limit reached, attention needed) */\n warning: (message: ToastMessage, options?: ToastOptions) =>\n toast.warning(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-warning\", options?.classNames?.toast),\n },\n }),\n\n /** Blue (Class) — informational (updates, tips, contextual info) */\n info: (message: ToastMessage, options?: ToastOptions) =>\n toast.info(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-class\", options?.classNames?.toast),\n },\n }),\n}\n\nexport { Toaster, cycleToast }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/sonner.tsx"],"names":["Sonner"],"mappings":";;;;;;;;AAcA,IAAM,OAAA,GAAU,CAAC,EAAA,KAA+B;AAA/B,EAAA,IAAK,kBAAL,EAAA,EAAK,EAAA,CAAA;AACpB,EAAA,MAAM,EAAE,KAAA,GAAQ,QAAA,EAAS,GAAI,QAAA,EAAS;AAEtC,EAAA,uBACE,GAAA;AAAA,IAACA,SAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAU,eAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,OAAA,sBAAU,SAAA,EAAA,EAAU,IAAA,EAAM,aAAa,IAAA,EAAK,IAAA,EAAK,YAAU,IAAA,EAAC,CAAA;AAAA,QAC5D,IAAA,sBAAO,SAAA,EAAA,EAAU,IAAA,EAAM,MAAM,IAAA,EAAK,IAAA,EAAK,YAAU,IAAA,EAAC,CAAA;AAAA,QAClD,OAAA,sBAAU,SAAA,EAAA,EAAU,IAAA,EAAM,eAAe,IAAA,EAAK,IAAA,EAAK,YAAU,IAAA,EAAC,CAAA;AAAA,QAC9D,KAAA,sBAAQ,SAAA,EAAA,EAAU,IAAA,EAAM,UAAU,IAAA,EAAK,IAAA,EAAK,YAAU,IAAA,EAAC,CAAA;AAAA,QACvD,OAAA,kBACE,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,OAAA;AAAA,YACN,IAAA,EAAK,IAAA;AAAA,YACL,UAAA,EAAU,IAAA;AAAA,YACV,SAAA,EAAU;AAAA;AAAA;AACZ,OAEJ;AAAA,MACA,KAAA,EACE;AAAA,QACE,aAAA,EAAe,gBAAA;AAAA,QACf,eAAA,EAAiB,2BAAA;AAAA,QACjB,iBAAA,EAAmB,eAAA;AAAA,QACnB,iBAAA,EAAmB;AAAA;AACrB,KAAA,EAEE,KAAA;AAAA,GACN;AAEJ;AAsBA,IAAM,WAAA,GAAc;AAAA,EAClB,aAAA,EAAe,gBAAA;AAAA,EACf,eAAA,EAAiB,2BAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAEA,IAAM,UAAA,GAAa;AAAA;AAAA,EAEjB,QAAA,EAAU,CAAC,OAAA,EAAuB,OAAA,KAAwB;AA5E5D,IAAA,IAAA,EAAA;AA6EI,IAAA,OAAA,KAAA,CAAM,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAA,cAAA,CAAA,EAAA,EAClB,OAAA,CAAA,EADkB;AAAA,MAErB,KAAA,EAAO,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,WAAA,CAAA,EAAgB,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,KAAA,CAAA;AAAA,MACrC,UAAA,EAAY,aAAA,CAAA,cAAA,CAAA,EAAA,EACP,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,CAAA,EADF;AAAA,QAEV,OAAO,EAAA,CAAG,gBAAA,EAAA,CAAkB,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,KAAT,mBAAqB,KAAK;AAAA,OACxD;AAAA,KACF,CAAC,CAAA;AAAA,EAAA,CAAA;AAAA;AAAA,EAGH,QAAA,EAAU,CAAC,OAAA,EAAuB,OAAA,KAAwB;AAvF5D,IAAA,IAAA,EAAA;AAwFI,IAAA,OAAA,KAAA,CAAM,KAAA,CAAM,OAAA,EAAS,aAAA,CAAA,cAAA,CAAA,EAAA,EAChB,OAAA,CAAA,EADgB;AAAA,MAEnB,KAAA,EAAO,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,WAAA,CAAA,EAAgB,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,KAAA,CAAA;AAAA,MACrC,UAAA,EAAY,aAAA,CAAA,cAAA,CAAA,EAAA,EACP,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,CAAA,EADF;AAAA,QAEV,OAAO,EAAA,CAAG,gBAAA,EAAA,CAAkB,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,KAAT,mBAAqB,KAAK;AAAA,OACxD;AAAA,KACF,CAAC,CAAA;AAAA,EAAA,CAAA;AAAA;AAAA,EAGH,OAAA,EAAS,CAAC,OAAA,EAAuB,OAAA,KAAwB;AAlG3D,IAAA,IAAA,EAAA;AAmGI,IAAA,OAAA,KAAA,CAAM,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAA,cAAA,CAAA,EAAA,EAClB,OAAA,CAAA,EADkB;AAAA,MAErB,KAAA,EAAO,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,WAAA,CAAA,EAAgB,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,KAAA,CAAA;AAAA,MACrC,UAAA,EAAY,aAAA,CAAA,cAAA,CAAA,EAAA,EACP,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,CAAA,EADF;AAAA,QAEV,OAAO,EAAA,CAAG,eAAA,EAAA,CAAiB,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,KAAT,mBAAqB,KAAK;AAAA,OACvD;AAAA,KACF,CAAC,CAAA;AAAA,EAAA,CAAA;AAAA;AAAA,EAGH,IAAA,EAAM,CAAC,OAAA,EAAuB,OAAA,KAAwB;AA7GxD,IAAA,IAAA,EAAA;AA8GI,IAAA,OAAA,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,aAAA,CAAA,cAAA,CAAA,EAAA,EACf,OAAA,CAAA,EADe;AAAA,MAElB,KAAA,EAAO,cAAA,CAAA,cAAA,CAAA,EAAA,EAAK,WAAA,CAAA,EAAgB,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,KAAA,CAAA;AAAA,MACrC,UAAA,EAAY,aAAA,CAAA,cAAA,CAAA,EAAA,EACP,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,CAAA,EADF;AAAA,QAEV,OAAO,EAAA,CAAG,aAAA,EAAA,CAAe,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,UAAA,KAAT,mBAAqB,KAAK;AAAA,OACrD;AAAA,KACF,CAAC,CAAA;AAAA,EAAA;AACL","file":"chunk-EZVWNHDF.js","sourcesContent":["\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, toast, type ToasterProps } from \"sonner\"\nimport {\n CircleCheck,\n Info,\n Loader2,\n OctagonX,\n TriangleAlert,\n} from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { cn } from \"@/lib/utils\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n icons={{\n success: <CycleIcon icon={CircleCheck} size=\"xs\" decorative />,\n info: <CycleIcon icon={Info} size=\"xs\" decorative />,\n warning: <CycleIcon icon={TriangleAlert} size=\"xs\" decorative />,\n error: <CycleIcon icon={OctagonX} size=\"xs\" decorative />,\n loading: (\n <CycleIcon\n icon={Loader2}\n size=\"xs\"\n decorative\n className=\"animate-spin\"\n />\n ),\n }}\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n \"--border-radius\": \"var(--radius)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\n/**\n * Cycle-themed toast helpers.\n *\n * These wrap `sonner.toast` with Cycle semantic colors:\n * - `cycleToast.positive(...)` — green/success feedback\n * - `cycleToast.critical(...)` — red/error feedback\n * - `cycleToast.warning(...)` — amber/warning feedback\n *\n * Each applies the `.theme-*` class AND redefines `--normal-bg/text/border`\n * on the toast element so Sonner picks up the themed token values.\n */\n\ntype ToastMessage = string | React.ReactNode\ntype ToastOptions = Parameters<typeof toast>[1]\n\n/**\n * Style override that re-binds Sonner's CSS variables on the toast element itself.\n * Combined with `.theme-*` classNames, this makes `var(--popover)` resolve\n * in the toast's own scope (where the theme redefines the tokens).\n */\nconst themedStyle = {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n} as React.CSSProperties\n\nconst cycleToast = {\n /** Green — positive feedback (saved, completed, success) */\n positive: (message: ToastMessage, options?: ToastOptions) =>\n toast.success(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-positive\", options?.classNames?.toast),\n },\n }),\n\n /** Red — critical error (failed, deleted, destructive) */\n critical: (message: ToastMessage, options?: ToastOptions) =>\n toast.error(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-critical\", options?.classNames?.toast),\n },\n }),\n\n /** Amber — warning (limit reached, attention needed) */\n warning: (message: ToastMessage, options?: ToastOptions) =>\n toast.warning(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-warning\", options?.classNames?.toast),\n },\n }),\n\n /** Blue (Class) — informational (updates, tips, contextual info) */\n info: (message: ToastMessage, options?: ToastOptions) =>\n toast.info(message, {\n ...options,\n style: { ...themedStyle, ...options?.style },\n classNames: {\n ...options?.classNames,\n toast: cn(\"theme-class\", options?.classNames?.toast),\n },\n }),\n}\n\nexport { Toaster, cycleToast }\n"]}
@@ -0,0 +1,26 @@
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
3
+ import * as React from 'react';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var SectionSubtitle = React.forwardRef(
7
+ function SectionSubtitle2(_a, ref) {
8
+ var _b = _a, { align = "center", className } = _b, props = __objRest(_b, ["align", "className"]);
9
+ return /* @__PURE__ */ jsx(
10
+ "p",
11
+ __spreadValues({
12
+ ref,
13
+ "data-slot": "section-subtitle",
14
+ className: cn(
15
+ "text-base sm:text-lg md:text-xl text-muted-foreground leading-relaxed text-balance max-w-3xl",
16
+ align === "center" ? "text-center mx-auto" : "text-left",
17
+ className
18
+ )
19
+ }, props)
20
+ );
21
+ }
22
+ );
23
+
24
+ export { SectionSubtitle };
25
+ //# sourceMappingURL=chunk-FTR4NEFA.js.map
26
+ //# sourceMappingURL=chunk-FTR4NEFA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/typography/section-subtitle.tsx"],"names":["SectionSubtitle"],"mappings":";;;;;AAoBA,IAAM,eAAA,GAAwB,KAAA,CAAA,UAAA;AAAA,EAC5B,SAASA,gBAAAA,CAAgB,EAAA,EAA2C,GAAA,EAAK;AAAhD,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,KAAA,GAAQ,UAAU,SAAA,EArB/C,GAqB2B,IAAkC,KAAA,GAAA,SAAA,CAAlC,EAAA,EAAkC,CAAhC,OAAA,EAAkB,WAAA,CAAA,CAAA;AAC3C,IAAA,uBACE,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,kBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,8FAAA;AAAA,UACA,KAAA,KAAU,WAAW,qBAAA,GAAwB,WAAA;AAAA,UAC7C;AAAA;AACF,OAAA,EACI,KAAA;AAAA,KACN;AAAA,EAEJ;AACF","file":"chunk-FTR4NEFA.js","sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface SectionSubtitleProps\n extends React.HTMLAttributes<HTMLParagraphElement> {\n /** Alinhamento. Default `\"center\"`. */\n align?: \"left\" | \"center\"\n}\n\n/**\n * Body de apoio abaixo do `SectionHeading` — explica ou complementa o titulo\n * em uma frase. Cor muted, leading relaxado, max-width que evita linhas longas.\n *\n * @example\n * <SectionHeading>Nossa solucao em 3 passos</SectionHeading>\n * <SectionSubtitle>\n * Do diagnostico ao certificado, num caminho desenhado pra resultado.\n * </SectionSubtitle>\n */\nconst SectionSubtitle = React.forwardRef<HTMLParagraphElement, SectionSubtitleProps>(\n function SectionSubtitle({ align = \"center\", className, ...props }, ref) {\n return (\n <p\n ref={ref}\n data-slot=\"section-subtitle\"\n className={cn(\n \"text-base sm:text-lg md:text-xl text-muted-foreground leading-relaxed text-balance max-w-3xl\",\n align === \"center\" ? \"text-center mx-auto\" : \"text-left\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport { SectionSubtitle }\n"]}
@@ -0,0 +1,29 @@
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
3
+ import * as React from 'react';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var SectionHeading = React.forwardRef(
7
+ function SectionHeading2(_a, ref) {
8
+ var _b = _a, { as = "h2", weight = "light", align = "center", maxW = "wide", className } = _b, props = __objRest(_b, ["as", "weight", "align", "maxW", "className"]);
9
+ const Tag = as;
10
+ return /* @__PURE__ */ jsx(
11
+ Tag,
12
+ __spreadValues({
13
+ ref,
14
+ "data-slot": "section-heading",
15
+ className: cn(
16
+ "text-4xl sm:text-5xl md:text-6xl tracking-tight leading-[1.15] text-balance",
17
+ weight === "light" ? "font-light" : "font-bold",
18
+ maxW === "wide" ? "max-w-5xl" : "max-w-3xl",
19
+ align === "center" ? "text-center mx-auto" : "text-left",
20
+ className
21
+ )
22
+ }, props)
23
+ );
24
+ }
25
+ );
26
+
27
+ export { SectionHeading };
28
+ //# sourceMappingURL=chunk-GR65GV2N.js.map
29
+ //# sourceMappingURL=chunk-GR65GV2N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/typography/section-heading.tsx"],"names":["SectionHeading"],"mappings":";;;;;AAuCA,IAAM,cAAA,GAAuB,KAAA,CAAA,UAAA;AAAA,EAC3B,SAASA,eAAAA,CACP,EAAA,EACA,GAAA,EACA;AAFA,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,OAAK,IAAA,EAAM,MAAA,GAAS,OAAA,EAAS,KAAA,GAAQ,UAAU,IAAA,GAAO,MAAA,EAAQ,SAAA,EAzCpE,GAyCI,IAA8E,KAAA,GAAA,SAAA,CAA9E,EAAA,EAA8E,CAA5E,IAAA,EAAW,QAAA,EAAkB,SAAkB,MAAA,EAAe,WAAA,CAAA,CAAA;AAGhE,IAAA,MAAM,GAAA,GAAM,EAAA;AACZ,IAAA,uBACE,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,iBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,6EAAA;AAAA,UACA,MAAA,KAAW,UAAU,YAAA,GAAe,WAAA;AAAA,UACpC,IAAA,KAAS,SAAS,WAAA,GAAc,WAAA;AAAA,UAChC,KAAA,KAAU,WAAW,qBAAA,GAAwB,WAAA;AAAA,UAC7C;AAAA;AACF,OAAA,EACI,KAAA;AAAA,KACN;AAAA,EAEJ;AACF","file":"chunk-GR65GV2N.js","sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype SectionHeadingTag = \"h2\" | \"h3\"\n\nexport interface SectionHeadingProps\n extends Omit<React.HTMLAttributes<HTMLHeadingElement>, \"color\"> {\n /** Tag renderizada. Default `\"h2\"`. */\n as?: SectionHeadingTag\n /**\n * Peso/intencao visual:\n * - `\"light\"` (default): `font-light` — elegante, usual em maioria das dobras.\n * - `\"bold\"`: `font-bold` — impacto, usado em momentos de virada (quebra).\n */\n weight?: \"light\" | \"bold\"\n /** Alinhamento. Default `\"center\"`. */\n align?: \"left\" | \"center\"\n /**\n * Largura maxima do bloco de texto:\n * - `\"wide\"` (default): `max-w-5xl` — usual centro/elegante.\n * - `\"prose\"`: `max-w-3xl` — quando o titulo e mais conciso.\n */\n maxW?: \"wide\" | \"prose\"\n}\n\n/**\n * Titulo de dobra de landing. Dois pesos principais (`light` elegante vs `bold`\n * impacto). Pareie com `SectionEyebrow` acima e `SectionSubtitle` abaixo.\n *\n * @example\n * <SectionHeading>\n * Conteudo, professores e <strong>tecnologia</strong> no mesmo lugar\n * </SectionHeading>\n *\n * <SectionHeading weight=\"bold\" align=\"left\" maxW=\"prose\">\n * Mude o jeito de aprender ingles\n * </SectionHeading>\n */\nconst SectionHeading = React.forwardRef<HTMLHeadingElement, SectionHeadingProps>(\n function SectionHeading(\n { as = \"h2\", weight = \"light\", align = \"center\", maxW = \"wide\", className, ...props },\n ref\n ) {\n const Tag = as as React.ElementType\n return (\n <Tag\n ref={ref}\n data-slot=\"section-heading\"\n className={cn(\n \"text-4xl sm:text-5xl md:text-6xl tracking-tight leading-[1.15] text-balance\",\n weight === \"light\" ? \"font-light\" : \"font-bold\",\n maxW === \"wide\" ? \"max-w-5xl\" : \"max-w-3xl\",\n align === \"center\" ? \"text-center mx-auto\" : \"text-left\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport { SectionHeading }\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYCPXAXF.js';
2
- import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  var DIRECTION = {
@@ -80,5 +80,5 @@ function Stack(_a) {
80
80
  }
81
81
 
82
82
  export { Stack };
83
- //# sourceMappingURL=chunk-I5A3CME4.js.map
84
- //# sourceMappingURL=chunk-I5A3CME4.js.map
83
+ //# sourceMappingURL=chunk-H6VG367Y.js.map
84
+ //# sourceMappingURL=chunk-H6VG367Y.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/layout/stack.tsx"],"names":[],"mappings":";;;;AAKA,IAAM,SAAA,GAAY;AAAA,EAChB,GAAA,EAAK,UAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,GAAA,EAAK,aAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,GAAA,EAAK,aAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,GAAA,GAAgC;AAAA,EACpC,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,MAAA,GAAmC;AAAA,EACvC,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,KAAA,GAAQ;AAAA,EACZ,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,OAAA,GAAU;AAAA,EACd,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAA,EAAK,aAAA;AAAA,EACL,OAAA,EAAS;AACX,CAAA;AAmBA,SAAS,MAAM,EAAA,EAUA;AAVA,EAAA,IAAA,EAAA,GAAA,EAAA,EACb;AAAA,IAAA,SAAA,GAAY,KAAA;AAAA,IACZ,WAAA;AAAA,IACA,WAAA;AAAA,IACA,GAAA,GAAM,IAAA;AAAA,IACN,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GA3EF,GAmEe,EAAA,EASV,KAAA,GAAA,SAAA,CATU,EAAA,EASV;AAAA,IARH,WAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,UAAU,SAAS,CAAA;AAAA,QACnB,WAAA,IAAe,aAAa,WAAW,CAAA;AAAA,QACvC,WAAA,IAAe,aAAa,WAAW,CAAA;AAAA,QACvC,IAAI,GAAG,CAAA;AAAA,QACP,KAAA,IAAS,OAAO,KAAK,CAAA;AAAA,QACrB,KAAA,IAAS,MAAM,KAAK,CAAA;AAAA,QACpB,OAAA,IAAW,QAAQ,OAAO,CAAA;AAAA,QAC1B;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ","file":"chunk-I5A3CME4.js","sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport type { GapToken } from \"./types\"\n\nconst DIRECTION = {\n col: \"flex-col\",\n row: \"flex-row\",\n} as const\n\nconst DIRECTION_SM = {\n col: \"sm:flex-col\",\n row: \"sm:flex-row\",\n} as const\n\nconst DIRECTION_LG = {\n col: \"lg:flex-col\",\n row: \"lg:flex-row\",\n} as const\n\nconst GAP: Record<GapToken, string> = {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n}\n\nconst GAP_SM: Record<GapToken, string> = {\n xs: \"sm:gap-1\",\n sm: \"sm:gap-2\",\n md: \"sm:gap-3\",\n lg: \"sm:gap-4\",\n xl: \"sm:gap-6\",\n}\n\nconst ALIGN = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n} as const\n\nconst JUSTIFY = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n} as const\n\nexport interface StackProps extends React.ComponentProps<\"div\"> {\n /** Flex direction (default: col) */\n direction?: keyof typeof DIRECTION\n /** Direction at sm breakpoint (>= 640px) */\n directionSm?: keyof typeof DIRECTION_SM\n /** Direction at lg breakpoint (>= 1024px) */\n directionLg?: keyof typeof DIRECTION_LG\n /** Gap between items (default: lg = 16px) */\n gap?: GapToken\n /** Gap at sm breakpoint */\n gapSm?: GapToken\n /** Cross-axis alignment */\n align?: keyof typeof ALIGN\n /** Main-axis alignment */\n justify?: keyof typeof JUSTIFY\n}\n\nfunction Stack({\n direction = \"col\",\n directionSm,\n directionLg,\n gap = \"lg\",\n gapSm,\n align,\n justify,\n className,\n ...props\n}: StackProps) {\n return (\n <div\n data-slot=\"stack\"\n className={cn(\n \"flex\",\n DIRECTION[direction],\n directionSm && DIRECTION_SM[directionSm],\n directionLg && DIRECTION_LG[directionLg],\n GAP[gap],\n gapSm && GAP_SM[gapSm],\n align && ALIGN[align],\n justify && JUSTIFY[justify],\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Stack }\n"]}
1
+ {"version":3,"sources":["../src/components/layout/stack.tsx"],"names":[],"mappings":";;;;AAKA,IAAM,SAAA,GAAY;AAAA,EAChB,GAAA,EAAK,UAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,GAAA,EAAK,aAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,YAAA,GAAe;AAAA,EACnB,GAAA,EAAK,aAAA;AAAA,EACL,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,GAAA,GAAgC;AAAA,EACpC,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,MAAA,GAAmC;AAAA,EACvC,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,KAAA,GAAQ;AAAA,EACZ,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,OAAA,GAAU;AAAA,EACd,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAA,EAAK,aAAA;AAAA,EACL,OAAA,EAAS;AACX,CAAA;AAmBA,SAAS,MAAM,EAAA,EAUA;AAVA,EAAA,IAAA,EAAA,GAAA,EAAA,EACb;AAAA,IAAA,SAAA,GAAY,KAAA;AAAA,IACZ,WAAA;AAAA,IACA,WAAA;AAAA,IACA,GAAA,GAAM,IAAA;AAAA,IACN,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GA3EF,GAmEe,EAAA,EASV,KAAA,GAAA,SAAA,CATU,EAAA,EASV;AAAA,IARH,WAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,UAAU,SAAS,CAAA;AAAA,QACnB,WAAA,IAAe,aAAa,WAAW,CAAA;AAAA,QACvC,WAAA,IAAe,aAAa,WAAW,CAAA;AAAA,QACvC,IAAI,GAAG,CAAA;AAAA,QACP,KAAA,IAAS,OAAO,KAAK,CAAA;AAAA,QACrB,KAAA,IAAS,MAAM,KAAK,CAAA;AAAA,QACpB,OAAA,IAAW,QAAQ,OAAO,CAAA;AAAA,QAC1B;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ","file":"chunk-H6VG367Y.js","sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport type { GapToken } from \"./types\"\n\nconst DIRECTION = {\n col: \"flex-col\",\n row: \"flex-row\",\n} as const\n\nconst DIRECTION_SM = {\n col: \"sm:flex-col\",\n row: \"sm:flex-row\",\n} as const\n\nconst DIRECTION_LG = {\n col: \"lg:flex-col\",\n row: \"lg:flex-row\",\n} as const\n\nconst GAP: Record<GapToken, string> = {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n}\n\nconst GAP_SM: Record<GapToken, string> = {\n xs: \"sm:gap-1\",\n sm: \"sm:gap-2\",\n md: \"sm:gap-3\",\n lg: \"sm:gap-4\",\n xl: \"sm:gap-6\",\n}\n\nconst ALIGN = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n} as const\n\nconst JUSTIFY = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n} as const\n\nexport interface StackProps extends React.ComponentProps<\"div\"> {\n /** Flex direction (default: col) */\n direction?: keyof typeof DIRECTION\n /** Direction at sm breakpoint (>= 640px) */\n directionSm?: keyof typeof DIRECTION_SM\n /** Direction at lg breakpoint (>= 1024px) */\n directionLg?: keyof typeof DIRECTION_LG\n /** Gap between items (default: lg = 16px) */\n gap?: GapToken\n /** Gap at sm breakpoint */\n gapSm?: GapToken\n /** Cross-axis alignment */\n align?: keyof typeof ALIGN\n /** Main-axis alignment */\n justify?: keyof typeof JUSTIFY\n}\n\nfunction Stack({\n direction = \"col\",\n directionSm,\n directionLg,\n gap = \"lg\",\n gapSm,\n align,\n justify,\n className,\n ...props\n}: StackProps) {\n return (\n <div\n data-slot=\"stack\"\n className={cn(\n \"flex\",\n DIRECTION[direction],\n directionSm && DIRECTION_SM[directionSm],\n directionLg && DIRECTION_LG[directionLg],\n GAP[gap],\n gapSm && GAP_SM[gapSm],\n align && ALIGN[align],\n justify && JUSTIFY[justify],\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Stack }\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYCPXAXF.js';
2
- import { __objRest, __spreadProps, __spreadValues } from './chunk-YINJ5YZ5.js';
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-2NMEKWO5.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
@@ -126,5 +126,5 @@ function CircularProgress(_a) {
126
126
  }
127
127
 
128
128
  export { CircularProgress, circularProgressVariants };
129
- //# sourceMappingURL=chunk-A3Z5GGAI.js.map
130
- //# sourceMappingURL=chunk-A3Z5GGAI.js.map
129
+ //# sourceMappingURL=chunk-HBFS7W6V.js.map
130
+ //# sourceMappingURL=chunk-HBFS7W6V.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/circular-progress.tsx"],"names":[],"mappings":";;;;;AAOA,IAAM,WAAA,GAAc;AAAA,EAClB,IAAI,EAAE,EAAA,EAAI,IAAI,MAAA,EAAQ,CAAA,EAAG,WAAW,uBAAA,EAAwB;AAAA,EAC5D,IAAI,EAAE,EAAA,EAAI,IAAI,MAAA,EAAQ,CAAA,EAAG,WAAW,yBAAA,EAA0B;AAAA,EAC9D,SAAS,EAAE,EAAA,EAAI,IAAI,MAAA,EAAQ,CAAA,EAAG,WAAW,wBAAA,EAAyB;AAAA,EAClE,IAAI,EAAE,EAAA,EAAI,KAAK,MAAA,EAAQ,CAAA,EAAG,WAAW,wBAAA;AACvC,CAAA;AAEA,IAAM,wBAAA,GAA2B,IAAI,+BAAA,EAAiC;AAAA,EACpE,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,OAAA,EAAS,SAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAID,SAAS,aAAa,KAAA,EAAuB;AAC3C,EAAA,IAAI,KAAA,GAAQ,IAAI,OAAO,gBAAA;AACvB,EAAA,IAAI,KAAA,GAAQ,IAAI,OAAO,eAAA;AACvB,EAAA,OAAO,gBAAA;AACT;AAiBA,SAAS,iBAAiB,EAAA,EASA;AATA,EAAA,IAAA,EAAA,GAAA,EAAA,EACxB;AAAA,IAAA,KAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,KAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,SAAA,GAAY,IAAA;AAAA,IACZ,KAAA;AAAA,IACA;AAAA,GA1DF,GAmD0B,EAAA,EAQrB,KAAA,GAAA,SAAA,CARqB,EAAA,EAQrB;AAAA,IAPH,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,SAAS,CAAA;AAC5C,EAAA,MAAM,EAAE,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAU,GAAI,MAAA;AAElC,EAAA,MAAM,MAAA,GAAA,CAAU,KAAK,MAAA,IAAU,CAAA;AAC/B,EAAA,MAAM,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AACpC,EAAA,MAAM,IAAA,GAAQ,UAAU,GAAA,GAAO,aAAA;AAE/B,EAAA,MAAM,aAAA,GAAgB,KAAA,IAAA,IAAA,GAAA,KAAA,GAAU,SAAA,GAAY,YAAA,CAAa,OAAO,CAAA,GAAI,MAAA;AACpE,EAAA,MAAM,eAAe,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA,CAAA;AAEpD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,IAAA,EAAK,aAAA;AAAA,MACL,eAAA,EAAe,OAAA;AAAA,MACf,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MACf,YAAA,EAAY,CAAC,SAAA,IAAa,CAAC,KAAA,GAAQ,aAAa,IAAA,CAAK,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA,CAAA,GAAM,MAAA;AAAA,MACzE,SAAA,EAAW,GAAG,wBAAA,CAAyB,EAAE,MAAM,CAAA,EAAG,eAAe,SAAS,CAAA;AAAA,MAC1E,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA;AAAG,KAAA,EAC3B,KAAA,CAAA,EATL;AAAA,MAYC,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,uBAAA;AAAA,cACA,gBAAgB,WAAA,GAAc;AAAA,aAChC;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA;AAAO;AAAA,SACzB;AAAA,wBAGA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,uCAAA;AAAA,YACV,OAAA,EAAS,CAAA,IAAA,EAAO,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,YACxB,aAAA,EAAY,MAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAI,EAAA,GAAK,CAAA;AAAA,kBACT,IAAI,EAAA,GAAK,CAAA;AAAA,kBACT,CAAA,EAAG,MAAA;AAAA,kBACH,IAAA,EAAK,MAAA;AAAA,kBACL,WAAA,EAAa,MAAA;AAAA,kBACb,SAAA,EAAW,EAAA,CAAG,aAAA,GAAgB,cAAA,GAAiB,sBAAsB;AAAA;AAAA,eACvE;AAAA,8BACA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAI,EAAA,GAAK,CAAA;AAAA,kBACT,IAAI,EAAA,GAAK,CAAA;AAAA,kBACT,CAAA,EAAG,MAAA;AAAA,kBACH,IAAA,EAAK,MAAA;AAAA,kBACL,WAAA,EAAa,MAAA;AAAA,kBACb,aAAA,EAAc,OAAA;AAAA,kBACd,eAAA,EAAiB,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAAA,kBACzC,SAAA,EAAW,EAAA,CAAG,4CAAA,EAA8C,aAAA,GAAgB,mBAAmB,2BAA2B;AAAA;AAAA;AAC5H;AAAA;AAAA,SACF;AAAA,QAGC,SAAA,oBACC,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,kFAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,KAAA;AAAA,GAEJ;AAEJ","file":"chunk-A3Z5GGAI.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Size config ─── */\n\nconst SIZE_CONFIG = {\n xs: { px: 48, stroke: 4, fontClass: \"text-sm font-semibold\" },\n sm: { px: 64, stroke: 5, fontClass: \"text-base font-semibold\" },\n default: { px: 80, stroke: 6, fontClass: \"text-2xl font-semibold\" },\n lg: { px: 120, stroke: 8, fontClass: \"text-3xl font-semibold\" },\n} as const\n\nconst circularProgressVariants = cva(\"relative inline-flex shrink-0\", {\n variants: {\n size: {\n xs: \"size-12\",\n sm: \"size-16\",\n default: \"size-20\",\n lg: \"size-30\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\n/* ─── Auto-theme thresholds ─── */\n\nfunction getAutoTheme(value: number): string {\n if (value < 34) return \"theme-critical\"\n if (value < 67) return \"theme-warning\"\n return \"theme-positive\"\n}\n\nexport interface CircularProgressProps\n extends Omit<React.ComponentProps<\"div\">, \"children\">,\n VariantProps<typeof circularProgressVariants> {\n /** Valor de 0 a 100 (clamped) */\n value: number\n /** Classe de tema fixa (ex: \"theme-brand\", \"theme-class\"). Tem precedencia sobre autoTheme. */\n theme?: string\n /** Se true, escolhe o tema automaticamente: 0–33 critical, 34–66 warning, 67–100 positive. */\n autoTheme?: boolean\n /** Mostrar label central com a porcentagem (default true) */\n showLabel?: boolean\n /** Label customizado — sobrescreve `${value}%` */\n label?: string\n}\n\nfunction CircularProgress({\n value,\n size = \"default\",\n theme,\n autoTheme = false,\n showLabel = true,\n label,\n className,\n ...props\n}: CircularProgressProps) {\n const clamped = Math.min(100, Math.max(0, value))\n const config = SIZE_CONFIG[size ?? \"default\"]\n const { px, stroke, fontClass } = config\n\n const radius = (px - stroke) / 2\n const circumference = 2 * Math.PI * radius\n const dash = (clamped / 100) * circumference\n\n const resolvedTheme = theme ?? (autoTheme ? getAutoTheme(clamped) : undefined)\n const displayLabel = label ?? `${Math.round(clamped)}%`\n\n return (\n <div\n data-slot=\"circular-progress\"\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={!showLabel && !label ? `Progress: ${Math.round(clamped)}%` : undefined}\n className={cn(circularProgressVariants({ size }), resolvedTheme, className)}\n style={{ width: px, height: px }}\n {...props}\n >\n {/* Inner pastel fill */}\n <div\n className={cn(\n \"absolute rounded-full\",\n resolvedTheme ? \"bg-accent\" : \"bg-neutral-input/40\"\n )}\n style={{ inset: stroke }}\n />\n\n {/* Progress arcs */}\n <svg\n className=\"absolute inset-0 size-full -rotate-90\"\n viewBox={`0 0 ${px} ${px}`}\n aria-hidden=\"true\"\n >\n <circle\n cx={px / 2}\n cy={px / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={stroke}\n className={cn(resolvedTheme ? \"stroke-muted\" : \"stroke-neutral-input\")}\n />\n <circle\n cx={px / 2}\n cy={px / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeDasharray={`${dash} ${circumference}`}\n className={cn(\"transition-[stroke-dasharray] duration-500\", resolvedTheme ? \"stroke-primary\" : \"stroke-neutral-foreground\")}\n />\n </svg>\n\n {/* Center label */}\n {showLabel && (\n <span\n className={cn(\n \"relative z-10 flex size-full items-center justify-center text-neutral-foreground\",\n fontClass\n )}\n >\n {displayLabel}\n </span>\n )}\n </div>\n )\n}\n\nexport { CircularProgress, circularProgressVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/circular-progress.tsx"],"names":[],"mappings":"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","file":"chunk-HBFS7W6V.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Size config ─── */\n\nconst SIZE_CONFIG = {\n xs: { px: 48, stroke: 4, fontClass: \"text-sm font-semibold\" },\n sm: { px: 64, stroke: 5, fontClass: \"text-base font-semibold\" },\n default: { px: 80, stroke: 6, fontClass: \"text-2xl font-semibold\" },\n lg: { px: 120, stroke: 8, fontClass: \"text-3xl font-semibold\" },\n} as const\n\nconst circularProgressVariants = cva(\"relative inline-flex shrink-0\", {\n variants: {\n size: {\n xs: \"size-12\",\n sm: \"size-16\",\n default: \"size-20\",\n lg: \"size-30\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\n/* ─── Auto-theme thresholds ─── */\n\nfunction getAutoTheme(value: number): string {\n if (value < 34) return \"theme-critical\"\n if (value < 67) return \"theme-warning\"\n return \"theme-positive\"\n}\n\nexport interface CircularProgressProps\n extends Omit<React.ComponentProps<\"div\">, \"children\">,\n VariantProps<typeof circularProgressVariants> {\n /** Valor de 0 a 100 (clamped) */\n value: number\n /** Classe de tema fixa (ex: \"theme-brand\", \"theme-class\"). Tem precedencia sobre autoTheme. */\n theme?: string\n /** Se true, escolhe o tema automaticamente: 0–33 critical, 34–66 warning, 67–100 positive. */\n autoTheme?: boolean\n /** Mostrar label central com a porcentagem (default true) */\n showLabel?: boolean\n /** Label customizado — sobrescreve `${value}%` */\n label?: string\n}\n\nfunction CircularProgress({\n value,\n size = \"default\",\n theme,\n autoTheme = false,\n showLabel = true,\n label,\n className,\n ...props\n}: CircularProgressProps) {\n const clamped = Math.min(100, Math.max(0, value))\n const config = SIZE_CONFIG[size ?? \"default\"]\n const { px, stroke, fontClass } = config\n\n const radius = (px - stroke) / 2\n const circumference = 2 * Math.PI * radius\n const dash = (clamped / 100) * circumference\n\n const resolvedTheme = theme ?? (autoTheme ? getAutoTheme(clamped) : undefined)\n const displayLabel = label ?? `${Math.round(clamped)}%`\n\n return (\n <div\n data-slot=\"circular-progress\"\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={!showLabel && !label ? `Progress: ${Math.round(clamped)}%` : undefined}\n className={cn(circularProgressVariants({ size }), resolvedTheme, className)}\n style={{ width: px, height: px }}\n {...props}\n >\n {/* Inner pastel fill */}\n <div\n className={cn(\n \"absolute rounded-full\",\n resolvedTheme ? \"bg-accent\" : \"bg-neutral-input/40\"\n )}\n style={{ inset: stroke }}\n />\n\n {/* Progress arcs */}\n <svg\n className=\"absolute inset-0 size-full -rotate-90\"\n viewBox={`0 0 ${px} ${px}`}\n aria-hidden=\"true\"\n >\n <circle\n cx={px / 2}\n cy={px / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={stroke}\n className={cn(resolvedTheme ? \"stroke-muted\" : \"stroke-neutral-input\")}\n />\n <circle\n cx={px / 2}\n cy={px / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeDasharray={`${dash} ${circumference}`}\n className={cn(\"transition-[stroke-dasharray] duration-500\", resolvedTheme ? \"stroke-primary\" : \"stroke-neutral-foreground\")}\n />\n </svg>\n\n {/* Center label */}\n {showLabel && (\n <span\n className={cn(\n \"relative z-10 flex size-full items-center justify-center text-neutral-foreground\",\n fontClass\n )}\n >\n {displayLabel}\n </span>\n )}\n </div>\n )\n}\n\nexport { CircularProgress, circularProgressVariants }\n"]}
@@ -1,6 +1,6 @@
1
- import { Button } from './chunk-5I4PGGLN.js';
2
- import { cn } from './chunk-TYCPXAXF.js';
3
- import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
1
+ import { Button } from './chunk-3TSOMZJO.js';
2
+ import { cn } from './chunk-QTH4LSO6.js';
3
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-2NMEKWO5.js';
4
4
  import { XIcon } from 'lucide-react';
5
5
  import { Dialog as Dialog$1 } from 'radix-ui';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -143,5 +143,5 @@ function DialogDescription(_a) {
143
143
  }
144
144
 
145
145
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
146
- //# sourceMappingURL=chunk-5NKTYXWQ.js.map
147
- //# sourceMappingURL=chunk-5NKTYXWQ.js.map
146
+ //# sourceMappingURL=chunk-HCSVANPX.js.map
147
+ //# sourceMappingURL=chunk-HCSVANPX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":["DialogPrimitive"],"mappings":"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","file":"chunk-5NKTYXWQ.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":["DialogPrimitive"],"mappings":"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","file":"chunk-HCSVANPX.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYCPXAXF.js';
2
- import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -46,5 +46,5 @@ function Container(_a) {
46
46
  }
47
47
 
48
48
  export { Container, containerVariants };
49
- //# sourceMappingURL=chunk-QANROH2K.js.map
50
- //# sourceMappingURL=chunk-QANROH2K.js.map
49
+ //# sourceMappingURL=chunk-HIAYFCBX.js.map
50
+ //# sourceMappingURL=chunk-HIAYFCBX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/layout/container.tsx"],"names":[],"mappings":";;;;;AAaA,IAAM,iBAAA,GAAoB,IAAI,gBAAA,EAAkB;AAAA,EAC9C,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,KAAA,EAAO,eAAA;AAAA,MACP,OAAA,EAAS,gBAAA;AAAA,MACT,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,OAAA,EAAS;AAAA;AAAA,MAEP,OAAA,EAAS,cAAA;AAAA;AAAA,MAET,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb,CAAC;AASD,SAAS,UAAU,EAAA,EAMA;AANA,EAAA,IAAA,EAAA,GAAA,EAAA,EACjB;AAAA,IAAA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,EAAA,GAAK,KAAA;AAAA,IACL;AAAA,GA7CF,GAyCmB,EAAA,EAKd,KAAA,GAAA,SAAA,CALc,EAAA,EAKd;AAAA,IAJH,MAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,SAAA,GAAY,EAAA;AAClB,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,GAAG,iBAAA,CAAkB,EAAE,MAAM,OAAA,EAAS,GAAG,SAAS;AAAA,KAAA,EACzD,KAAA;AAAA,GACN;AAEJ","file":"chunk-QANROH2K.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Container — wrapper centralizado com max-width e margin lateral.\n *\n * Margin (locked system value): 16px mobile / 24px desktop. Para casos especiais\n * que pedem mais respiro (ex: conteudo luxuoso), use override via className: `sm:px-10`.\n *\n * O Container nao define gutter ou colunas — isso e responsabilidade do Grid interno.\n */\nconst containerVariants = cva(\"mx-auto w-full\", {\n variants: {\n size: {\n prose: \"max-w-[860px]\",\n default: \"max-w-[1380px]\",\n wide: \"max-w-[1440px]\",\n full: \"\",\n },\n padding: {\n /** 16px mobile / 24px desktop (system margin) */\n default: \"px-4 sm:px-6\",\n /** Sem padding — para hero/banner full-bleed */\n none: \"\",\n },\n },\n defaultVariants: {\n size: \"default\",\n padding: \"default\",\n },\n})\n\nexport interface ContainerProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof containerVariants> {\n /** HTML element to render (default: div) */\n as?: \"div\" | \"section\" | \"main\" | \"article\"\n}\n\nfunction Container({\n size,\n padding,\n as = \"div\",\n className,\n ...props\n}: ContainerProps) {\n const Component = as as React.ElementType\n return (\n <Component\n data-slot=\"container\"\n className={cn(containerVariants({ size, padding }), className)}\n {...props}\n />\n )\n}\n\nexport { Container, containerVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/layout/container.tsx"],"names":[],"mappings":";;;;;AAaA,IAAM,iBAAA,GAAoB,IAAI,gBAAA,EAAkB;AAAA,EAC9C,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,KAAA,EAAO,eAAA;AAAA,MACP,OAAA,EAAS,gBAAA;AAAA,MACT,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,OAAA,EAAS;AAAA;AAAA,MAEP,OAAA,EAAS,cAAA;AAAA;AAAA,MAET,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb,CAAC;AASD,SAAS,UAAU,EAAA,EAMA;AANA,EAAA,IAAA,EAAA,GAAA,EAAA,EACjB;AAAA,IAAA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,EAAA,GAAK,KAAA;AAAA,IACL;AAAA,GA7CF,GAyCmB,EAAA,EAKd,KAAA,GAAA,SAAA,CALc,EAAA,EAKd;AAAA,IAJH,MAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,SAAA,GAAY,EAAA;AAClB,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,GAAG,iBAAA,CAAkB,EAAE,MAAM,OAAA,EAAS,GAAG,SAAS;AAAA,KAAA,EACzD,KAAA;AAAA,GACN;AAEJ","file":"chunk-HIAYFCBX.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Container — wrapper centralizado com max-width e margin lateral.\n *\n * Margin (locked system value): 16px mobile / 24px desktop. Para casos especiais\n * que pedem mais respiro (ex: conteudo luxuoso), use override via className: `sm:px-10`.\n *\n * O Container nao define gutter ou colunas — isso e responsabilidade do Grid interno.\n */\nconst containerVariants = cva(\"mx-auto w-full\", {\n variants: {\n size: {\n prose: \"max-w-[860px]\",\n default: \"max-w-[1380px]\",\n wide: \"max-w-[1440px]\",\n full: \"\",\n },\n padding: {\n /** 16px mobile / 24px desktop (system margin) */\n default: \"px-4 sm:px-6\",\n /** Sem padding — para hero/banner full-bleed */\n none: \"\",\n },\n },\n defaultVariants: {\n size: \"default\",\n padding: \"default\",\n },\n})\n\nexport interface ContainerProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof containerVariants> {\n /** HTML element to render (default: div) */\n as?: \"div\" | \"section\" | \"main\" | \"article\"\n}\n\nfunction Container({\n size,\n padding,\n as = \"div\",\n className,\n ...props\n}: ContainerProps) {\n const Component = as as React.ElementType\n return (\n <Component\n data-slot=\"container\"\n className={cn(containerVariants({ size, padding }), className)}\n {...props}\n />\n )\n}\n\nexport { Container, containerVariants }\n"]}
@@ -0,0 +1,55 @@
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-2NMEKWO5.js';
3
+ import * as React from 'react';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ var Marquee = React.forwardRef(function Marquee2(_a, ref) {
7
+ var _b = _a, {
8
+ speed = 40,
9
+ direction = "left",
10
+ pauseOnHover = true,
11
+ gap = 48,
12
+ className,
13
+ children,
14
+ style
15
+ } = _b, props = __objRest(_b, [
16
+ "speed",
17
+ "direction",
18
+ "pauseOnHover",
19
+ "gap",
20
+ "className",
21
+ "children",
22
+ "style"
23
+ ]);
24
+ const trackStyle = {
25
+ ["--cycle-marquee-duration"]: `${speed}s`,
26
+ ["--cycle-marquee-gap"]: `${gap}px`
27
+ };
28
+ return /* @__PURE__ */ jsx(
29
+ "div",
30
+ __spreadProps(__spreadValues({
31
+ ref,
32
+ "data-slot": "marquee",
33
+ "data-pause-on-hover": pauseOnHover ? "true" : "false",
34
+ className: cn("cycle-marquee", className),
35
+ style
36
+ }, props), {
37
+ children: /* @__PURE__ */ jsxs(
38
+ "div",
39
+ {
40
+ className: "cycle-marquee-track",
41
+ "data-direction": direction,
42
+ style: trackStyle,
43
+ children: [
44
+ children,
45
+ /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: "contents", children })
46
+ ]
47
+ }
48
+ )
49
+ })
50
+ );
51
+ });
52
+
53
+ export { Marquee };
54
+ //# sourceMappingURL=chunk-HXFGULDU.js.map
55
+ //# sourceMappingURL=chunk-HXFGULDU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/effects/marquee.tsx"],"names":["Marquee"],"mappings":";;;;;AA8BA,IAAM,OAAA,GAAgB,KAAA,CAAA,UAAA,CAAyC,SAASA,QAAAA,CACtE,IAUA,GAAA,EACA;AAXA,EAAA,IAAA,EAAA,GAAA,EAAA,EACE;AAAA,IAAA,KAAA,GAAQ,EAAA;AAAA,IACR,SAAA,GAAY,MAAA;AAAA,IACZ,YAAA,GAAe,IAAA;AAAA,IACf,GAAA,GAAM,EAAA;AAAA,IACN,SAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GAtCJ,GA+BE,EAAA,EAQK,KAAA,GAAA,SAAA,CARL,EAAA,EAQK;AAAA,IAPH,OAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAMF,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,CAAC,0BAAoC,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AAAA,IAChD,CAAC,qBAA+B,GAAG,CAAA,EAAG,GAAG,CAAA,EAAA;AAAA,GAC3C;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,SAAA;AAAA,MACV,qBAAA,EAAqB,eAAe,MAAA,GAAS,OAAA;AAAA,MAC7C,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,MACxC;AAAA,KAAA,EACI,KAAA,CAAA,EANL;AAAA,MAQC,QAAA,kBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,qBAAA;AAAA,UACV,gBAAA,EAAgB,SAAA;AAAA,UAChB,KAAA,EAAO,UAAA;AAAA,UAEN,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,gCAEA,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,YAC/B,QAAA,EACH;AAAA;AAAA;AAAA;AACF,KAAA;AAAA,GACF;AAEJ,CAAC","file":"chunk-HXFGULDU.js","sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface MarqueeProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Duracao de um ciclo completo em segundos. Default `40`. */\n speed?: number\n /** Direcao do movimento. Default `\"left\"`. */\n direction?: \"left\" | \"right\"\n /** Pausa em `:hover` e `:focus-within`. Default `true` (acessibilidade). */\n pauseOnHover?: boolean\n /** Espacamento entre cada item em px. Default `48`. */\n gap?: number\n}\n\n/**\n * Scroll horizontal infinito (logo cloud, partner band). Duplica os children\n * internamente pra criar loop seamless. Pausa em hover/focus pra dar tempo\n * de leitura. Respeita `prefers-reduced-motion` (anima zerada).\n *\n * Importante: a duplicacao usa `aria-hidden` no segundo bloco pra evitar\n * leitura repetida por screen readers.\n *\n * @example\n * <Marquee speed={30} gap={64}>\n * <img src=\"/logos/logo-a.png\" alt=\"Cliente A\" />\n * <img src=\"/logos/logo-b.png\" alt=\"Cliente B\" />\n * <img src=\"/logos/logo-c.png\" alt=\"Cliente C\" />\n * </Marquee>\n */\nconst Marquee = React.forwardRef<HTMLDivElement, MarqueeProps>(function Marquee(\n {\n speed = 40,\n direction = \"left\",\n pauseOnHover = true,\n gap = 48,\n className,\n children,\n style,\n ...props\n },\n ref\n) {\n // Style merge: nossas CSS vars + qualquer style passado pelo consumer\n const trackStyle = {\n [\"--cycle-marquee-duration\" as string]: `${speed}s`,\n [\"--cycle-marquee-gap\" as string]: `${gap}px`,\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"marquee\"\n data-pause-on-hover={pauseOnHover ? \"true\" : \"false\"}\n className={cn(\"cycle-marquee\", className)}\n style={style}\n {...props}\n >\n <div\n className=\"cycle-marquee-track\"\n data-direction={direction}\n style={trackStyle}\n >\n {children}\n {/* Duplicacao pro loop seamless — `aria-hidden` pra screen readers ignorarem. */}\n <div aria-hidden=\"true\" className=\"contents\">\n {children}\n </div>\n </div>\n </div>\n )\n})\n\nexport { Marquee }\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYCPXAXF.js';
2
- import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
3
3
  import { Label as Label$1 } from 'radix-ui';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -18,5 +18,5 @@ function Label(_a) {
18
18
  }
19
19
 
20
20
  export { Label };
21
- //# sourceMappingURL=chunk-726XFHED.js.map
22
- //# sourceMappingURL=chunk-726XFHED.js.map
21
+ //# sourceMappingURL=chunk-HZOLDTOT.js.map
22
+ //# sourceMappingURL=chunk-HZOLDTOT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/label.tsx"],"names":["LabelPrimitive"],"mappings":";;;;;AAUA,SAAS,MAAM,EAAA,EAAqC;AAArC,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAVjB,GAUe,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACf,EAAA,uBACE,GAAA;AAAA,IAACA,OAAA,CAAe,IAAA;AAAA,IAAf,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qNAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ","file":"chunk-726XFHED.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface LabelProps\n extends React.ComponentProps<typeof LabelPrimitive.Root> {}\n\nfunction Label({ className, ...props }: LabelProps) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/label.tsx"],"names":["LabelPrimitive"],"mappings":";;;;;AAUA,SAAS,MAAM,EAAA,EAAqC;AAArC,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAVjB,GAUe,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACf,EAAA,uBACE,GAAA;AAAA,IAACA,OAAA,CAAe,IAAA;AAAA,IAAf,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qNAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ","file":"chunk-HZOLDTOT.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface LabelProps\n extends React.ComponentProps<typeof LabelPrimitive.Root> {}\n\nfunction Label({ className, ...props }: LabelProps) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYCPXAXF.js';
2
- import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
3
3
  import * as React from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -40,5 +40,5 @@ var Input = React.forwardRef(
40
40
  Input.displayName = "Input";
41
41
 
42
42
  export { Input };
43
- //# sourceMappingURL=chunk-74WKJRW7.js.map
44
- //# sourceMappingURL=chunk-74WKJRW7.js.map
43
+ //# sourceMappingURL=chunk-I4DM7SVV.js.map
44
+ //# sourceMappingURL=chunk-I4DM7SVV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/input.tsx"],"names":[],"mappings":";;;;;AAUA,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA;AAAA,EAClB,CAAC,IAA2E,GAAA,KAAQ;AAAnF,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,IAAA,EAAM,SAAA,GAAY,SAAA,EAAW,OAAA,GAAU,SAAA,EAXvD,GAWG,EAAA,EAAkE,KAAA,GAAA,SAAA,CAAlE,EAAA,EAAkE,CAAhE,WAAA,EAAW,QAAM,WAAA,EAAuB,SAAA,CAAA,CAAA;AACzC,IAAA,uBACE,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,IAAA;AAAA,QACA,GAAA;AAAA,QACA,WAAA,EAAU,OAAA;AAAA,QACV,WAAA,EAAW,SAAA;AAAA,QACX,cAAA,EAAc,OAAA;AAAA,QACd,SAAA,EAAW,EAAA;AAAA;AAAA,UAET,2YAAA;AAAA;AAAA,UAEA,YAAY,SAAA,IAAa,uHAAA;AAAA,UACzB,YAAY,SAAA,IAAa,mCAAA;AAAA,UACzB,YAAY,SAAA,IAAa,uGAAA;AAAA;AAAA,UAEzB,YAAY,QAAA,IAAY,6CAAA;AAAA,UACxB,YAAY,QAAA,IAAY,sCAAA;AAAA,UACxB,YAAY,QAAA,IAAY,0GAAA;AAAA;AAAA,UAExB,mLAAA;AAAA;AAAA,UAEA,cAAc,IAAA,IAAQ,uBAAA;AAAA,UACtB,cAAc,SAAA,IAAa,wBAAA;AAAA,UAC3B,cAAc,IAAA,IAAQ,0BAAA;AAAA,UACtB;AAAA;AACF,OAAA,EACI,KAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-74WKJRW7.js","sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface InputProps extends React.ComponentProps<\"input\"> {\n inputSize?: \"sm\" | \"default\" | \"lg\"\n /** Variante visual: outline (borda) ou filled (fundo preenchido) */\n variant?: \"outline\" | \"filled\"\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, inputSize = \"default\", variant = \"outline\", ...props }, ref) => {\n return (\n <input\n type={type}\n ref={ref}\n data-slot=\"input\"\n data-size={inputSize}\n data-variant={variant}\n className={cn(\n // Base\n \"w-full min-w-0 rounded-lg text-neutral-foreground transition-[color,border-color,box-shadow,background-color] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:border-0 file:bg-transparent file:font-medium file:text-neutral-foreground placeholder:text-neutral-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n // Variant: outline\n variant === \"outline\" && \"border border-neutral-border bg-transparent shadow-xs dark:border-neutral-border dark:bg-transparent dark:shadow-none\",\n variant === \"outline\" && \"hover:border-ring hover:bg-ring/5\",\n variant === \"outline\" && \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:bg-ring/5\",\n // Variant: filled (mesmos tokens do Button outline: accent light, input dark)\n variant === \"filled\" && \"border border-transparent bg-neutral-accent\",\n variant === \"filled\" && \"hover:border-ring hover:bg-secondary\",\n variant === \"filled\" && \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:bg-secondary\",\n // Error (sempre visível, ambas variantes)\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:hover:border-destructive dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/40\",\n // Sizes\n inputSize === \"sm\" && \"h-8 px-3 py-2 text-sm\",\n inputSize === \"default\" && \"h-10 px-4 py-2 text-sm\",\n inputSize === \"lg\" && \"h-12 px-4 py-3 text-base\",\n className\n )}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/input.tsx"],"names":[],"mappings":";;;;;AAUA,IAAM,KAAA,GAAc,KAAA,CAAA,UAAA;AAAA,EAClB,CAAC,IAA2E,GAAA,KAAQ;AAAnF,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,IAAA,EAAM,SAAA,GAAY,SAAA,EAAW,OAAA,GAAU,SAAA,EAXvD,GAWG,EAAA,EAAkE,KAAA,GAAA,SAAA,CAAlE,EAAA,EAAkE,CAAhE,WAAA,EAAW,QAAM,WAAA,EAAuB,SAAA,CAAA,CAAA;AACzC,IAAA,uBACE,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,IAAA;AAAA,QACA,GAAA;AAAA,QACA,WAAA,EAAU,OAAA;AAAA,QACV,WAAA,EAAW,SAAA;AAAA,QACX,cAAA,EAAc,OAAA;AAAA,QACd,SAAA,EAAW,EAAA;AAAA;AAAA,UAET,2YAAA;AAAA;AAAA,UAEA,YAAY,SAAA,IAAa,uHAAA;AAAA,UACzB,YAAY,SAAA,IAAa,mCAAA;AAAA,UACzB,YAAY,SAAA,IAAa,uGAAA;AAAA;AAAA,UAEzB,YAAY,QAAA,IAAY,6CAAA;AAAA,UACxB,YAAY,QAAA,IAAY,sCAAA;AAAA,UACxB,YAAY,QAAA,IAAY,0GAAA;AAAA;AAAA,UAExB,mLAAA;AAAA;AAAA,UAEA,cAAc,IAAA,IAAQ,uBAAA;AAAA,UACtB,cAAc,SAAA,IAAa,wBAAA;AAAA,UAC3B,cAAc,IAAA,IAAQ,0BAAA;AAAA,UACtB;AAAA;AACF,OAAA,EACI,KAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-I4DM7SVV.js","sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface InputProps extends React.ComponentProps<\"input\"> {\n inputSize?: \"sm\" | \"default\" | \"lg\"\n /** Variante visual: outline (borda) ou filled (fundo preenchido) */\n variant?: \"outline\" | \"filled\"\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, inputSize = \"default\", variant = \"outline\", ...props }, ref) => {\n return (\n <input\n type={type}\n ref={ref}\n data-slot=\"input\"\n data-size={inputSize}\n data-variant={variant}\n className={cn(\n // Base\n \"w-full min-w-0 rounded-lg text-neutral-foreground transition-[color,border-color,box-shadow,background-color] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:border-0 file:bg-transparent file:font-medium file:text-neutral-foreground placeholder:text-neutral-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n // Variant: outline\n variant === \"outline\" && \"border border-neutral-border bg-transparent shadow-xs dark:border-neutral-border dark:bg-transparent dark:shadow-none\",\n variant === \"outline\" && \"hover:border-ring hover:bg-ring/5\",\n variant === \"outline\" && \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:bg-ring/5\",\n // Variant: filled (mesmos tokens do Button outline: accent light, input dark)\n variant === \"filled\" && \"border border-transparent bg-neutral-accent\",\n variant === \"filled\" && \"hover:border-ring hover:bg-secondary\",\n variant === \"filled\" && \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:bg-secondary\",\n // Error (sempre visível, ambas variantes)\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:hover:border-destructive dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/40\",\n // Sizes\n inputSize === \"sm\" && \"h-8 px-3 py-2 text-sm\",\n inputSize === \"default\" && \"h-10 px-4 py-2 text-sm\",\n inputSize === \"lg\" && \"h-12 px-4 py-3 text-base\",\n className\n )}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"]}
@@ -1,4 +1,4 @@
1
- import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
1
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
2
2
  import { forwardRef } from 'react';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -33,5 +33,5 @@ var CycleIcon = forwardRef(
33
33
  );
34
34
 
35
35
  export { CycleIcon, ICON_SIZES };
36
- //# sourceMappingURL=chunk-V7M2NHUO.js.map
37
- //# sourceMappingURL=chunk-V7M2NHUO.js.map
36
+ //# sourceMappingURL=chunk-IGFCIAF3.js.map
37
+ //# sourceMappingURL=chunk-IGFCIAF3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/icons/sizes.ts","../src/components/icons/CycleIcon.tsx"],"names":["CycleIcon"],"mappings":";;;;;AASO,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAO,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,CAAA,EAAE;AAAA,EAC7B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA;AAC1B;ACgCO,IAAM,SAAA,GAAY,UAAA;AAAA,EACvB,SAASA,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAyB;AACjD,IAAA,MAAoE,EAAA,GAAA,KAAA,EAA5D,EAAA,IAAA,EAAM,IAAA,EAAM,IAAA,GAAO,MAAM,UAAA,EAAY,SAAA,EAlDjD,GAkDwE,EAAA,EAAT,IAAA,GAAA,SAAA,CAAS,EAAA,EAAT,CAAnD,MAAA,EAAY,QAAa,YAAA,EAAY,WAAA,CAAA,CAAA;AAE7C,IAAA,MAAM,EAAE,IAAA,EAAM,EAAA,EAAI,MAAA,EAAO,GAAI,WAAW,IAAI,CAAA;AAM5C,IAAA,MAAM,OAAA,GAAU,EAAA;AAChB,IAAA,MAAM,cAAA,GAAiB,UAAU,OAAA,GAAU,EAAA,CAAA;AAE3C,IAAA,MAAM,SAAA,GAAY,UAAA,GACd,EAAE,aAAA,EAAe,IAAA,EAAe,WAAW,OAAA,EAAiB,GAC5D,EAAE,IAAA,EAAM,KAAA,EAAe;AAE3B,IAAA,uBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA,cAAA,CAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,WAAA,EAAa,cAAA;AAAA,QACb,SAAA;AAAA,QACA,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA;AAAG,OAAA,EAC3B,SAAA,CAAA,EACA,IAAA;AAAA,KACN;AAAA,EAEJ;AACF","file":"chunk-V7M2NHUO.js","sourcesContent":["/**\n * Cycle Design — Icon Size Map\n *\n * Fonte da verdade para componentes React.\n * Derivado de: figma/Icons size/icon-{size}.json\n *\n * REGRA: strokeWidth nunca é prop — é sempre derivado de size.\n * Isso garante consistência visual em todos os ícones.\n */\nexport const ICON_SIZES = {\n '2xs': { size: 12, stroke: 1 },\n xs: { size: 16, stroke: 1.2 },\n sm: { size: 24, stroke: 1.5 },\n md: { size: 32, stroke: 1.8 },\n lg: { size: 40, stroke: 2.1 },\n xl: { size: 48, stroke: 2.4 },\n} as const satisfies Record<string, { size: number; stroke: number }>\n\nexport type IconSize = keyof typeof ICON_SIZES\n","import { forwardRef } from 'react'\nimport type { Ref } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { ICON_SIZES } from './sizes'\nimport type { IconSize } from './sizes'\n\n/**\n * Props base compartilhada.\n */\ntype BaseProps = {\n icon: LucideIcon\n size?: IconSize\n className?: string\n}\n\n/**\n * Ícone semântico — comunica algo para o usuário.\n * @example <CycleIcon icon={Home} size=\"sm\" aria-label=\"Ir para home\" />\n */\ntype SemanticProps = BaseProps & {\n decorative?: false\n 'aria-label': string\n}\n\n/**\n * Ícone decorativo — puramente visual.\n * @example <CycleIcon icon={Home} size=\"sm\" decorative />\n */\ntype DecorativeProps = BaseProps & {\n decorative: true\n 'aria-label'?: never\n}\n\nexport type CycleIconProps = SemanticProps | DecorativeProps\n\n/**\n * CycleIcon — wrapper para ícones Lucide com regras de size/stroke da Cycle.\n *\n * Aplica automaticamente width, height e strokeWidth baseado no size token.\n * Use para todos os ícones Lucide no produto.\n *\n * @example\n * import { Home, Search } from \"@fluencypassdevs/cycle/icons/lucide\"\n * import { CycleIcon } from \"@/components/icons\"\n *\n * <CycleIcon icon={Home} size=\"sm\" decorative />\n * <CycleIcon icon={Search} size=\"lg\" aria-label=\"Buscar\" />\n */\nexport const CycleIcon = forwardRef<SVGSVGElement, CycleIconProps>(\n function CycleIcon(props, ref: Ref<SVGSVGElement>) {\n const { icon: Icon, size = 'sm', decorative, className, ...rest } = props\n\n const { size: px, stroke } = ICON_SIZES[size]\n\n // Lucide usa viewBox=\"0 0 24 24\" fixo. Quando renderizado em tamanho\n // diferente de 24px, o stroke-width e escalado proporcionalmente.\n // Compensamos dividindo pelo fator de escala para que o stroke\n // renderizado em pixels corresponda ao valor definido em ICON_SIZES.\n const VIEWBOX = 24\n const adjustedStroke = stroke * (VIEWBOX / px)\n\n const ariaProps = decorative\n ? { 'aria-hidden': true as const, focusable: 'false' as const }\n : { role: 'img' as const }\n\n return (\n <Icon\n ref={ref}\n width={px}\n height={px}\n strokeWidth={adjustedStroke}\n className={className}\n style={{ width: px, height: px }}\n {...ariaProps}\n {...rest}\n />\n )\n }\n)\n"]}
1
+ {"version":3,"sources":["../src/components/icons/sizes.ts","../src/components/icons/CycleIcon.tsx"],"names":["CycleIcon"],"mappings":";;;;;AASO,IAAM,UAAA,GAAa;AAAA,EACxB,KAAA,EAAO,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,CAAA,EAAE;AAAA,EAC7B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA,EAAI;AAAA,EAC5B,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,QAAQ,GAAA;AAC1B;ACgCO,IAAM,SAAA,GAAY,UAAA;AAAA,EACvB,SAASA,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAyB;AACjD,IAAA,MAAoE,EAAA,GAAA,KAAA,EAA5D,EAAA,IAAA,EAAM,IAAA,EAAM,IAAA,GAAO,MAAM,UAAA,EAAY,SAAA,EAlDjD,GAkDwE,EAAA,EAAT,IAAA,GAAA,SAAA,CAAS,EAAA,EAAT,CAAnD,MAAA,EAAY,QAAa,YAAA,EAAY,WAAA,CAAA,CAAA;AAE7C,IAAA,MAAM,EAAE,IAAA,EAAM,EAAA,EAAI,MAAA,EAAO,GAAI,WAAW,IAAI,CAAA;AAM5C,IAAA,MAAM,OAAA,GAAU,EAAA;AAChB,IAAA,MAAM,cAAA,GAAiB,UAAU,OAAA,GAAU,EAAA,CAAA;AAE3C,IAAA,MAAM,SAAA,GAAY,UAAA,GACd,EAAE,aAAA,EAAe,IAAA,EAAe,WAAW,OAAA,EAAiB,GAC5D,EAAE,IAAA,EAAM,KAAA,EAAe;AAE3B,IAAA,uBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA,cAAA,CAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,WAAA,EAAa,cAAA;AAAA,QACb,SAAA;AAAA,QACA,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA;AAAG,OAAA,EAC3B,SAAA,CAAA,EACA,IAAA;AAAA,KACN;AAAA,EAEJ;AACF","file":"chunk-IGFCIAF3.js","sourcesContent":["/**\n * Cycle Design — Icon Size Map\n *\n * Fonte da verdade para componentes React.\n * Derivado de: figma/Icons size/icon-{size}.json\n *\n * REGRA: strokeWidth nunca é prop — é sempre derivado de size.\n * Isso garante consistência visual em todos os ícones.\n */\nexport const ICON_SIZES = {\n '2xs': { size: 12, stroke: 1 },\n xs: { size: 16, stroke: 1.2 },\n sm: { size: 24, stroke: 1.5 },\n md: { size: 32, stroke: 1.8 },\n lg: { size: 40, stroke: 2.1 },\n xl: { size: 48, stroke: 2.4 },\n} as const satisfies Record<string, { size: number; stroke: number }>\n\nexport type IconSize = keyof typeof ICON_SIZES\n","import { forwardRef } from 'react'\nimport type { Ref } from 'react'\nimport type { LucideIcon } from 'lucide-react'\nimport { ICON_SIZES } from './sizes'\nimport type { IconSize } from './sizes'\n\n/**\n * Props base compartilhada.\n */\ntype BaseProps = {\n icon: LucideIcon\n size?: IconSize\n className?: string\n}\n\n/**\n * Ícone semântico — comunica algo para o usuário.\n * @example <CycleIcon icon={Home} size=\"sm\" aria-label=\"Ir para home\" />\n */\ntype SemanticProps = BaseProps & {\n decorative?: false\n 'aria-label': string\n}\n\n/**\n * Ícone decorativo — puramente visual.\n * @example <CycleIcon icon={Home} size=\"sm\" decorative />\n */\ntype DecorativeProps = BaseProps & {\n decorative: true\n 'aria-label'?: never\n}\n\nexport type CycleIconProps = SemanticProps | DecorativeProps\n\n/**\n * CycleIcon — wrapper para ícones Lucide com regras de size/stroke da Cycle.\n *\n * Aplica automaticamente width, height e strokeWidth baseado no size token.\n * Use para todos os ícones Lucide no produto.\n *\n * @example\n * import { Home, Search } from \"@fluencypassdevs/cycle/icons/lucide\"\n * import { CycleIcon } from \"@/components/icons\"\n *\n * <CycleIcon icon={Home} size=\"sm\" decorative />\n * <CycleIcon icon={Search} size=\"lg\" aria-label=\"Buscar\" />\n */\nexport const CycleIcon = forwardRef<SVGSVGElement, CycleIconProps>(\n function CycleIcon(props, ref: Ref<SVGSVGElement>) {\n const { icon: Icon, size = 'sm', decorative, className, ...rest } = props\n\n const { size: px, stroke } = ICON_SIZES[size]\n\n // Lucide usa viewBox=\"0 0 24 24\" fixo. Quando renderizado em tamanho\n // diferente de 24px, o stroke-width e escalado proporcionalmente.\n // Compensamos dividindo pelo fator de escala para que o stroke\n // renderizado em pixels corresponda ao valor definido em ICON_SIZES.\n const VIEWBOX = 24\n const adjustedStroke = stroke * (VIEWBOX / px)\n\n const ariaProps = decorative\n ? { 'aria-hidden': true as const, focusable: 'false' as const }\n : { role: 'img' as const }\n\n return (\n <Icon\n ref={ref}\n width={px}\n height={px}\n strokeWidth={adjustedStroke}\n className={className}\n style={{ width: px, height: px }}\n {...ariaProps}\n {...rest}\n />\n )\n }\n)\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYCPXAXF.js';
2
- import { __objRest, __spreadProps, __spreadValues } from './chunk-YINJ5YZ5.js';
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-2NMEKWO5.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -53,5 +53,5 @@ function ProgressStage(_a) {
53
53
  }
54
54
 
55
55
  export { ProgressStage };
56
- //# sourceMappingURL=chunk-NYJMA2T7.js.map
57
- //# sourceMappingURL=chunk-NYJMA2T7.js.map
56
+ //# sourceMappingURL=chunk-ILYZQBBN.js.map
57
+ //# sourceMappingURL=chunk-ILYZQBBN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/progress-stage.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,yBAAA,GAA4B,IAAI,qBAAA,EAAuB;AAAA,EAC3D,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,OAAA,EAAS,KAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAaD,SAAS,cAAc,EAAA,EAOA;AAPA,EAAA,IAAA,EAAA,GAAA,EAAA,EACrB;AAAA,IAAA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,KAAA;AAAA,IACA;AAAA,GAnCF,GA8BuB,EAAA,EAMlB,KAAA,GAAA,SAAA,CANkB,EAAA,EAMlB;AAAA,IALH,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,KAAA,EAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAEjD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS;AAAA,KAAA,EACxC,KAAA,CAAA,EAHL;AAAA,MAKE,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,CAAA,qBACjC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,yBAAA,CAA0B,EAAE,IAAA,EAAM,CAAA;AAAA,YAClC,CAAA,GAAI,MAAA,GACA,EAAA,CAAG,KAAA,EAAO,YAAY,CAAA,GACtB;AAAA;AACN,SAAA;AAAA,QANK;AAAA,OAQR;AAAA,KAAA;AAAA,GACH;AAEJ","file":"chunk-NYJMA2T7.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressStagePillVariants = cva(\"flex-1 rounded-full\", {\n variants: {\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n lg: \"h-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\nexport interface ProgressStageProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof progressStagePillVariants> {\n /** Numero total de stages (2–10) */\n stages: number\n /** Quantos stages estao preenchidos (0–stages) */\n value: number\n /** Classe de tema aplicada apenas nas pills preenchidas (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction ProgressStage({\n stages,\n value,\n size = \"default\",\n theme,\n className,\n ...props\n}: ProgressStageProps) {\n const total = Math.min(10, Math.max(2, stages))\n const filled = Math.min(total, Math.max(0, value))\n\n return (\n <div\n data-slot=\"progress-stage\"\n className={cn(\"flex w-full gap-2\", className)}\n {...props}\n >\n {Array.from({ length: total }, (_, i) => (\n <div\n key={i}\n className={cn(\n progressStagePillVariants({ size }),\n i < filled\n ? cn(theme, \"bg-primary\")\n : \"bg-neutral-input\"\n )}\n />\n ))}\n </div>\n )\n}\n\nexport { ProgressStage }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/progress-stage.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,yBAAA,GAA4B,IAAI,qBAAA,EAAuB;AAAA,EAC3D,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,OAAA,EAAS,KAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAaD,SAAS,cAAc,EAAA,EAOA;AAPA,EAAA,IAAA,EAAA,GAAA,EAAA,EACrB;AAAA,IAAA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,KAAA;AAAA,IACA;AAAA,GAnCF,GA8BuB,EAAA,EAMlB,KAAA,GAAA,SAAA,CANkB,EAAA,EAMlB;AAAA,IALH,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,EAAA,EAAI,KAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,KAAK,GAAA,CAAI,KAAA,EAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAEjD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS;AAAA,KAAA,EACxC,KAAA,CAAA,EAHL;AAAA,MAKE,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,GAAG,CAAA,qBACjC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,EAAA;AAAA,YACT,yBAAA,CAA0B,EAAE,IAAA,EAAM,CAAA;AAAA,YAClC,CAAA,GAAI,MAAA,GACA,EAAA,CAAG,KAAA,EAAO,YAAY,CAAA,GACtB;AAAA;AACN,SAAA;AAAA,QANK;AAAA,OAQR;AAAA,KAAA;AAAA,GACH;AAEJ","file":"chunk-ILYZQBBN.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressStagePillVariants = cva(\"flex-1 rounded-full\", {\n variants: {\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n lg: \"h-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\nexport interface ProgressStageProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof progressStagePillVariants> {\n /** Numero total de stages (2–10) */\n stages: number\n /** Quantos stages estao preenchidos (0–stages) */\n value: number\n /** Classe de tema aplicada apenas nas pills preenchidas (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction ProgressStage({\n stages,\n value,\n size = \"default\",\n theme,\n className,\n ...props\n}: ProgressStageProps) {\n const total = Math.min(10, Math.max(2, stages))\n const filled = Math.min(total, Math.max(0, value))\n\n return (\n <div\n data-slot=\"progress-stage\"\n className={cn(\"flex w-full gap-2\", className)}\n {...props}\n >\n {Array.from({ length: total }, (_, i) => (\n <div\n key={i}\n className={cn(\n progressStagePillVariants({ size }),\n i < filled\n ? cn(theme, \"bg-primary\")\n : \"bg-neutral-input\"\n )}\n />\n ))}\n </div>\n )\n}\n\nexport { ProgressStage }\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-TYCPXAXF.js';
2
- import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
1
+ import { cn } from './chunk-QTH4LSO6.js';
2
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-2NMEKWO5.js';
3
3
  import { CircleIcon } from 'lucide-react';
4
4
  import { RadioGroup as RadioGroup$1 } from 'radix-ui';
5
5
  import { cva } from 'class-variance-authority';
@@ -59,5 +59,5 @@ function RadioGroupItem(_a) {
59
59
  }
60
60
 
61
61
  export { RadioGroup, RadioGroupItem, radioVariants };
62
- //# sourceMappingURL=chunk-X4IBONFB.js.map
63
- //# sourceMappingURL=chunk-X4IBONFB.js.map
62
+ //# sourceMappingURL=chunk-J3DGYZGK.js.map
63
+ //# sourceMappingURL=chunk-J3DGYZGK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/radio-group.tsx"],"names":["RadioGroupPrimitive"],"mappings":";;;;;;;AASA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,8ZAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yBAAA;AAAA,QACJ,OAAA,EAAS,yBAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKA,SAAS,WAAW,EAAA,EAA0C;AAA1C,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EA5BtB,GA4BoB,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACpB,EAAA,uBACE,GAAA;AAAA,IAACA,YAAA,CAAoB,IAAA;AAAA,IAApB,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS;AAAA,KAAA,EACjC,KAAA;AAAA,GACN;AAEJ;AASA,SAAS,eAAe,EAAA,EAKA;AALA,EAAA,IAAA,EAAA,GAAA,EAAA,EACtB;AAAA,IAAA,SAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP;AAAA,GAhDF,GA6CwB,EAAA,EAInB,KAAA,GAAA,SAAA,CAJmB,EAAA,EAInB;AAAA,IAHH,WAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAACA,YAAA,CAAoB,IAAA;AAAA,IAApB,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,GAAG,KAAA,EAAO,aAAA,CAAc,EAAE,IAAA,EAAM,GAAG,SAAS;AAAA,KAAA,EACnD,KAAA,CAAA,EAHL;AAAA,MAKC,QAAA,kBAAA,GAAA;AAAA,QAACA,YAAA,CAAoB,SAAA;AAAA,QAApB;AAAA,UACC,WAAA,EAAU,uBAAA;AAAA,UACV,SAAA,EAAU,wCAAA;AAAA,UAEV,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,cAAA,EAAe;AAAA;AAAA;AACvC,KAAA;AAAA,GACF;AAEJ","file":"chunk-X4IBONFB.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { CircleIcon } from \"lucide-react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst radioVariants = cva(\n \"aspect-square rounded-full border border-neutral-border bg-neutral-bg shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:text-foreground dark:aria-invalid:ring-destructive/40\",\n {\n variants: {\n size: {\n sm: \"size-3.5 [&_svg]:size-2\",\n default: \"size-4 [&_svg]:size-2.5\",\n lg: \"size-5 [&_svg]:size-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nexport interface RadioGroupProps\n extends React.ComponentProps<typeof RadioGroupPrimitive.Root> {}\n\nfunction RadioGroup({ className, ...props }: RadioGroupProps) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nexport interface RadioGroupItemProps\n extends React.ComponentProps<typeof RadioGroupPrimitive.Item>,\n VariantProps<typeof radioVariants> {\n /** Classe de tema aplicada apenas no estado checked (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction RadioGroupItem({\n className,\n size = \"default\",\n theme,\n ...props\n}: RadioGroupItemProps) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(theme, radioVariants({ size }), className)}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"grid place-content-center text-current\"\n >\n <CircleIcon className=\"fill-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, radioVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/radio-group.tsx"],"names":["RadioGroupPrimitive"],"mappings":";;;;;;;AASA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,8ZAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yBAAA;AAAA,QACJ,OAAA,EAAS,yBAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKA,SAAS,WAAW,EAAA,EAA0C;AAA1C,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EA5BtB,GA4BoB,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACpB,EAAA,uBACE,GAAA;AAAA,IAACA,YAAA,CAAoB,IAAA;AAAA,IAApB,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS;AAAA,KAAA,EACjC,KAAA;AAAA,GACN;AAEJ;AASA,SAAS,eAAe,EAAA,EAKA;AALA,EAAA,IAAA,EAAA,GAAA,EAAA,EACtB;AAAA,IAAA,SAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP;AAAA,GAhDF,GA6CwB,EAAA,EAInB,KAAA,GAAA,SAAA,CAJmB,EAAA,EAInB;AAAA,IAHH,WAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAACA,YAAA,CAAoB,IAAA;AAAA,IAApB,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,GAAG,KAAA,EAAO,aAAA,CAAc,EAAE,IAAA,EAAM,GAAG,SAAS;AAAA,KAAA,EACnD,KAAA,CAAA,EAHL;AAAA,MAKC,QAAA,kBAAA,GAAA;AAAA,QAACA,YAAA,CAAoB,SAAA;AAAA,QAApB;AAAA,UACC,WAAA,EAAU,uBAAA;AAAA,UACV,SAAA,EAAU,wCAAA;AAAA,UAEV,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,cAAA,EAAe;AAAA;AAAA;AACvC,KAAA;AAAA,GACF;AAEJ","file":"chunk-J3DGYZGK.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { CircleIcon } from \"lucide-react\"\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst radioVariants = cva(\n \"aspect-square rounded-full border border-neutral-border bg-neutral-bg shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:text-foreground dark:aria-invalid:ring-destructive/40\",\n {\n variants: {\n size: {\n sm: \"size-3.5 [&_svg]:size-2\",\n default: \"size-4 [&_svg]:size-2.5\",\n lg: \"size-5 [&_svg]:size-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nexport interface RadioGroupProps\n extends React.ComponentProps<typeof RadioGroupPrimitive.Root> {}\n\nfunction RadioGroup({ className, ...props }: RadioGroupProps) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nexport interface RadioGroupItemProps\n extends React.ComponentProps<typeof RadioGroupPrimitive.Item>,\n VariantProps<typeof radioVariants> {\n /** Classe de tema aplicada apenas no estado checked (ex: \"theme-class\") */\n theme?: string\n}\n\nfunction RadioGroupItem({\n className,\n size = \"default\",\n theme,\n ...props\n}: RadioGroupItemProps) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(theme, radioVariants({ size }), className)}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"grid place-content-center text-current\"\n >\n <CircleIcon className=\"fill-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, radioVariants }\n"]}