@etus/ui 0.4.0-beta.21 → 0.4.0-beta.22

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 (234) hide show
  1. package/dist/{chunk-KBU4KJKC.js → chunk-2DFFIU44.js} +4 -4
  2. package/dist/{chunk-KBU4KJKC.js.map → chunk-2DFFIU44.js.map} +1 -1
  3. package/dist/{chunk-MR6RUPVT.js → chunk-2JDLQ4VR.js} +3 -3
  4. package/dist/{chunk-MR6RUPVT.js.map → chunk-2JDLQ4VR.js.map} +1 -1
  5. package/dist/{chunk-JE46MFMN.js → chunk-2LVRSLWI.js} +4 -4
  6. package/dist/{chunk-JE46MFMN.js.map → chunk-2LVRSLWI.js.map} +1 -1
  7. package/dist/{chunk-GRODCJS4.js → chunk-2VOKY2TU.js} +4 -4
  8. package/dist/{chunk-GRODCJS4.js.map → chunk-2VOKY2TU.js.map} +1 -1
  9. package/dist/{chunk-UC5J6GWG.js → chunk-3TRT6TKW.js} +6 -6
  10. package/dist/chunk-3TRT6TKW.js.map +1 -0
  11. package/dist/{chunk-UZZCEQH4.js → chunk-3XVOI4HK.js} +3 -3
  12. package/dist/{chunk-UZZCEQH4.js.map → chunk-3XVOI4HK.js.map} +1 -1
  13. package/dist/{chunk-WGKOYZRI.js → chunk-4S6CPTSO.js} +5 -5
  14. package/dist/chunk-4S6CPTSO.js.map +1 -0
  15. package/dist/{chunk-GVNG5ME6.js → chunk-6CO3FRGG.js} +201 -17
  16. package/dist/chunk-6CO3FRGG.js.map +1 -0
  17. package/dist/chunk-7MJS37Q4.js +135 -0
  18. package/dist/chunk-7MJS37Q4.js.map +1 -0
  19. package/dist/{chunk-QXET2TML.js → chunk-A33MLHXO.js} +3 -3
  20. package/dist/{chunk-QXET2TML.js.map → chunk-A33MLHXO.js.map} +1 -1
  21. package/dist/{chunk-STADVFL2.js → chunk-A6BDDZ27.js} +3 -3
  22. package/dist/{chunk-STADVFL2.js.map → chunk-A6BDDZ27.js.map} +1 -1
  23. package/dist/{chunk-WSDWJX4Y.js → chunk-AGXEGVSY.js} +3 -3
  24. package/dist/{chunk-WSDWJX4Y.js.map → chunk-AGXEGVSY.js.map} +1 -1
  25. package/dist/{chunk-R42LSLJL.js → chunk-AOLVER6U.js} +3 -3
  26. package/dist/{chunk-R42LSLJL.js.map → chunk-AOLVER6U.js.map} +1 -1
  27. package/dist/{chunk-YMQDTTO7.js → chunk-CEUARW3D.js} +3 -3
  28. package/dist/{chunk-YMQDTTO7.js.map → chunk-CEUARW3D.js.map} +1 -1
  29. package/dist/{chunk-LDK6ADKM.js → chunk-DZV32N5V.js} +4 -4
  30. package/dist/{chunk-LDK6ADKM.js.map → chunk-DZV32N5V.js.map} +1 -1
  31. package/dist/{chunk-2SUZS6GZ.js → chunk-E5UFATRY.js} +11 -3
  32. package/dist/chunk-E5UFATRY.js.map +1 -0
  33. package/dist/{chunk-RQBYBBMP.js → chunk-EINYBB7T.js} +5 -5
  34. package/dist/{chunk-RQBYBBMP.js.map → chunk-EINYBB7T.js.map} +1 -1
  35. package/dist/{chunk-4LZ53BAG.js → chunk-EKKJXJX7.js} +4 -2
  36. package/dist/chunk-EKKJXJX7.js.map +1 -0
  37. package/dist/{chunk-4OWRNWHW.js → chunk-FCVFYUCL.js} +14 -5
  38. package/dist/chunk-FCVFYUCL.js.map +1 -0
  39. package/dist/{chunk-6QVXMYKH.js → chunk-FGTYI4ZG.js} +3 -3
  40. package/dist/{chunk-6QVXMYKH.js.map → chunk-FGTYI4ZG.js.map} +1 -1
  41. package/dist/{chunk-6G5QK3SU.js → chunk-FLXU5LWR.js} +44 -4
  42. package/dist/chunk-FLXU5LWR.js.map +1 -0
  43. package/dist/{chunk-P4WMDGAQ.js → chunk-G5JO3Q3K.js} +3 -3
  44. package/dist/{chunk-P4WMDGAQ.js.map → chunk-G5JO3Q3K.js.map} +1 -1
  45. package/dist/{chunk-RMJVCJ6U.js → chunk-GKG2LRGY.js} +6 -6
  46. package/dist/chunk-GKG2LRGY.js.map +1 -0
  47. package/dist/{chunk-N7VMQWM3.js → chunk-GN6B4W3G.js} +4 -4
  48. package/dist/{chunk-N7VMQWM3.js.map → chunk-GN6B4W3G.js.map} +1 -1
  49. package/dist/chunk-GX2VJT7D.js +136 -0
  50. package/dist/chunk-GX2VJT7D.js.map +1 -0
  51. package/dist/{chunk-MNYU5MHO.js → chunk-H4KC2YSL.js} +5 -5
  52. package/dist/{chunk-MNYU5MHO.js.map → chunk-H4KC2YSL.js.map} +1 -1
  53. package/dist/{chunk-GLHKHYJY.js → chunk-IARO2PPN.js} +55 -15
  54. package/dist/chunk-IARO2PPN.js.map +1 -0
  55. package/dist/{chunk-ELRIFGMN.js → chunk-JWXZFGNT.js} +30 -6
  56. package/dist/chunk-JWXZFGNT.js.map +1 -0
  57. package/dist/{chunk-Y4FEW7SR.js → chunk-K5RHYIFF.js} +16 -6
  58. package/dist/chunk-K5RHYIFF.js.map +1 -0
  59. package/dist/{chunk-T3LWBCVR.js → chunk-LKCOHB3C.js} +36 -3
  60. package/dist/chunk-LKCOHB3C.js.map +1 -0
  61. package/dist/{chunk-7PX3WBR3.js → chunk-LWIIO75I.js} +5 -3
  62. package/dist/chunk-LWIIO75I.js.map +1 -0
  63. package/dist/{chunk-U7TPJMGY.js → chunk-MR3IPJAO.js} +6 -2
  64. package/dist/chunk-MR3IPJAO.js.map +1 -0
  65. package/dist/chunk-MVL4DVRW.js +177 -0
  66. package/dist/chunk-MVL4DVRW.js.map +1 -0
  67. package/dist/{chunk-L4OQ6BJ5.js → chunk-N3DBRKUS.js} +3 -3
  68. package/dist/{chunk-L4OQ6BJ5.js.map → chunk-N3DBRKUS.js.map} +1 -1
  69. package/dist/{chunk-TIPKU427.js → chunk-N7DAU4LE.js} +3 -3
  70. package/dist/{chunk-TIPKU427.js.map → chunk-N7DAU4LE.js.map} +1 -1
  71. package/dist/{chunk-ZVSMLMMS.js → chunk-NORI6ECA.js} +44 -4
  72. package/dist/chunk-NORI6ECA.js.map +1 -0
  73. package/dist/{chunk-7MLRRVOX.js → chunk-NT4GLWNR.js} +3 -3
  74. package/dist/{chunk-7MLRRVOX.js.map → chunk-NT4GLWNR.js.map} +1 -1
  75. package/dist/{chunk-7AR5QRRX.js → chunk-NZNAR4HJ.js} +27 -11
  76. package/dist/chunk-NZNAR4HJ.js.map +1 -0
  77. package/dist/{chunk-TNSMTINE.js → chunk-OJIFG4LW.js} +3 -3
  78. package/dist/{chunk-TNSMTINE.js.map → chunk-OJIFG4LW.js.map} +1 -1
  79. package/dist/{chunk-PTXC4KPQ.js → chunk-OSHGYI2O.js} +4 -4
  80. package/dist/{chunk-PTXC4KPQ.js.map → chunk-OSHGYI2O.js.map} +1 -1
  81. package/dist/chunk-OW5R4KST.js +108 -0
  82. package/dist/chunk-OW5R4KST.js.map +1 -0
  83. package/dist/{chunk-QJOWG2D4.js → chunk-PVF23ZX2.js} +3 -3
  84. package/dist/{chunk-QJOWG2D4.js.map → chunk-PVF23ZX2.js.map} +1 -1
  85. package/dist/{chunk-KHCHATTD.js → chunk-PYCQBP4O.js} +4 -4
  86. package/dist/{chunk-KHCHATTD.js.map → chunk-PYCQBP4O.js.map} +1 -1
  87. package/dist/{chunk-KDNTSZF5.js → chunk-Q4E7OG7J.js} +3 -3
  88. package/dist/{chunk-KDNTSZF5.js.map → chunk-Q4E7OG7J.js.map} +1 -1
  89. package/dist/{chunk-KLFYTLF3.js → chunk-Q7MAQ7MO.js} +3 -3
  90. package/dist/{chunk-KLFYTLF3.js.map → chunk-Q7MAQ7MO.js.map} +1 -1
  91. package/dist/{chunk-S6BREP2G.js → chunk-QMCQIOCP.js} +21 -7
  92. package/dist/chunk-QMCQIOCP.js.map +1 -0
  93. package/dist/{chunk-SSKSWSVO.js → chunk-R2Z64IC3.js} +4 -4
  94. package/dist/{chunk-SSKSWSVO.js.map → chunk-R2Z64IC3.js.map} +1 -1
  95. package/dist/{chunk-UNHPLKMR.js → chunk-RK27HS7W.js} +3 -3
  96. package/dist/{chunk-UNHPLKMR.js.map → chunk-RK27HS7W.js.map} +1 -1
  97. package/dist/{chunk-IKLFWGFS.js → chunk-RTSAERFS.js} +7 -7
  98. package/dist/{chunk-IKLFWGFS.js.map → chunk-RTSAERFS.js.map} +1 -1
  99. package/dist/{chunk-EO4NGM5W.js → chunk-S7HXZ5T3.js} +65 -16
  100. package/dist/chunk-S7HXZ5T3.js.map +1 -0
  101. package/dist/{chunk-I5RDX6O3.js → chunk-TBPPBA3S.js} +31 -25
  102. package/dist/chunk-TBPPBA3S.js.map +1 -0
  103. package/dist/{chunk-TDANAN5A.js → chunk-TD2EFGHO.js} +7 -3
  104. package/dist/chunk-TD2EFGHO.js.map +1 -0
  105. package/dist/{chunk-3R6MY3YJ.js → chunk-TVAIT3F5.js} +3 -3
  106. package/dist/{chunk-3R6MY3YJ.js.map → chunk-TVAIT3F5.js.map} +1 -1
  107. package/dist/{chunk-VHJ6ALIE.js → chunk-TX4GUAZ6.js} +11 -3
  108. package/dist/chunk-TX4GUAZ6.js.map +1 -0
  109. package/dist/{chunk-7XJQYAGY.js → chunk-U55YU7DB.js} +22 -6
  110. package/dist/chunk-U55YU7DB.js.map +1 -0
  111. package/dist/{chunk-5GV4LDX7.js → chunk-VI3QWOII.js} +4 -2
  112. package/dist/chunk-VI3QWOII.js.map +1 -0
  113. package/dist/{chunk-PXR6CZIL.js → chunk-VYCXCOUH.js} +3 -3
  114. package/dist/{chunk-PXR6CZIL.js.map → chunk-VYCXCOUH.js.map} +1 -1
  115. package/dist/{chunk-SKI25Q7O.js → chunk-W72PXQDH.js} +4 -4
  116. package/dist/{chunk-SKI25Q7O.js.map → chunk-W72PXQDH.js.map} +1 -1
  117. package/dist/{chunk-4SFBDK4E.js → chunk-WTKHA2NF.js} +3 -3
  118. package/dist/{chunk-4SFBDK4E.js.map → chunk-WTKHA2NF.js.map} +1 -1
  119. package/dist/{chunk-KXJ3SEW7.js → chunk-YNZ6T4IU.js} +13 -5
  120. package/dist/chunk-YNZ6T4IU.js.map +1 -0
  121. package/dist/{chunk-7QEFKWUR.js → chunk-YZBCJDYO.js} +4 -4
  122. package/dist/{chunk-7QEFKWUR.js.map → chunk-YZBCJDYO.js.map} +1 -1
  123. package/dist/{chunk-PVIIIQJI.js → chunk-ZTD3QXLY.js} +4 -4
  124. package/dist/{chunk-PVIIIQJI.js.map → chunk-ZTD3QXLY.js.map} +1 -1
  125. package/dist/{chunk-HHWUROMA.js → chunk-ZZFCKHE2.js} +4 -4
  126. package/dist/{chunk-HHWUROMA.js.map → chunk-ZZFCKHE2.js.map} +1 -1
  127. package/dist/components/advanced/Calendar/index.js +3 -3
  128. package/dist/components/advanced/Command/index.js +2 -2
  129. package/dist/components/advanced/EventCalendar/index.js +3 -3
  130. package/dist/components/advanced/FilterBuilder/index.js +5 -5
  131. package/dist/components/advanced/MarkdownEditor/index.js +2 -2
  132. package/dist/components/advanced/ReportBuilder/index.js +4 -4
  133. package/dist/components/advanced/index.js +12 -12
  134. package/dist/components/data-display/Banner/index.js +1 -1
  135. package/dist/components/data-display/BarChart/index.js +1 -1
  136. package/dist/components/data-display/Carousel/index.js +3 -3
  137. package/dist/components/data-display/DataTable/FilterBuilder/index.js +5 -5
  138. package/dist/components/data-display/DataTable/index.js +9 -9
  139. package/dist/components/data-display/ImageGallery/index.js +4 -4
  140. package/dist/components/data-display/Item/index.js +1 -1
  141. package/dist/components/data-display/KPICard/index.js +1 -1
  142. package/dist/components/data-display/List/index.js +2 -2
  143. package/dist/components/data-display/RadarChart/index.js +1 -1
  144. package/dist/components/data-display/RadialChart/index.js +1 -1
  145. package/dist/components/data-display/index.js +35 -35
  146. package/dist/components/feedback/AlertDialog/index.js +3 -3
  147. package/dist/components/feedback/ConfirmModal/index.js +4 -4
  148. package/dist/components/feedback/Dialog/index.js +1 -1
  149. package/dist/components/feedback/ErrorPage/index.js +1 -1
  150. package/dist/components/feedback/Notification/index.js +2 -2
  151. package/dist/components/feedback/index.js +9 -9
  152. package/dist/components/forms/DatePicker/index.js +4 -4
  153. package/dist/components/forms/DateRangePicker/index.js +5 -5
  154. package/dist/components/forms/EmailInput/index.js +3 -3
  155. package/dist/components/forms/InputGroup/index.js +5 -5
  156. package/dist/components/forms/NumberInput/index.js +2 -2
  157. package/dist/components/forms/PasswordInput/index.js +3 -3
  158. package/dist/components/forms/PaymentInput/index.js +1 -1
  159. package/dist/components/forms/PhoneInput/index.js +1 -1
  160. package/dist/components/forms/RadioGroup/index.js +1 -1
  161. package/dist/components/forms/Rating/index.js +1 -1
  162. package/dist/components/forms/SearchInput/index.js +3 -3
  163. package/dist/components/forms/Switch/index.js +1 -1
  164. package/dist/components/forms/TagsInput/index.js +1 -1
  165. package/dist/components/forms/TextInput/index.js +2 -2
  166. package/dist/components/forms/URLInput/index.js +3 -3
  167. package/dist/components/forms/index.js +25 -25
  168. package/dist/components/index.js +137 -137
  169. package/dist/components/layout/Collapsible/index.js +1 -1
  170. package/dist/components/layout/index.js +4 -4
  171. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  172. package/dist/components/navigation/Breadcrumb/index.js +1 -1
  173. package/dist/components/navigation/ContextMenu/index.js +1 -1
  174. package/dist/components/navigation/DropdownMenu/index.js +1 -1
  175. package/dist/components/navigation/Pagination/index.js +3 -3
  176. package/dist/components/navigation/Sidebar/index.js +8 -7
  177. package/dist/components/navigation/index.js +17 -16
  178. package/dist/components/primitives/Avatar/index.js +1 -1
  179. package/dist/components/primitives/Button/index.js +2 -2
  180. package/dist/components/primitives/ButtonGroup/index.js +1 -1
  181. package/dist/components/primitives/ConfirmButton/index.js +4 -4
  182. package/dist/components/primitives/Icon/index.js +1 -1
  183. package/dist/components/primitives/Kbd/index.js +1 -1
  184. package/dist/components/primitives/Link/index.js +1 -1
  185. package/dist/components/primitives/ProgressCircle/index.js +1 -1
  186. package/dist/components/primitives/SplitButton/index.js +2 -2
  187. package/dist/components/primitives/Text/index.js +1 -1
  188. package/dist/components/primitives/index.js +16 -16
  189. package/dist/components/workflow/ApprovalFlow/index.js +4 -4
  190. package/dist/components/workflow/CommentSystem/index.js +4 -4
  191. package/dist/components/workflow/Dashboard/index.js +3 -3
  192. package/dist/components/workflow/DashboardBuilder/index.js +5 -5
  193. package/dist/components/workflow/KanbanBoard/index.js +4 -4
  194. package/dist/components/workflow/ReportGenerator/index.js +3 -3
  195. package/dist/components/workflow/TaskStatus/index.js +2 -2
  196. package/dist/components/workflow/Wizard/index.js +3 -3
  197. package/dist/components/workflow/index.js +16 -16
  198. package/dist/hooks/index.js +1 -1
  199. package/dist/index.d.ts +303 -42
  200. package/dist/index.js +137 -137
  201. package/dist/styles.css +27 -8
  202. package/package.json +2 -2
  203. package/dist/chunk-2SUZS6GZ.js.map +0 -1
  204. package/dist/chunk-4LZ53BAG.js.map +0 -1
  205. package/dist/chunk-4OWRNWHW.js.map +0 -1
  206. package/dist/chunk-5GV4LDX7.js.map +0 -1
  207. package/dist/chunk-6G5QK3SU.js.map +0 -1
  208. package/dist/chunk-6VEQLD2P.js +0 -75
  209. package/dist/chunk-6VEQLD2P.js.map +0 -1
  210. package/dist/chunk-7AR5QRRX.js.map +0 -1
  211. package/dist/chunk-7PX3WBR3.js.map +0 -1
  212. package/dist/chunk-7XJQYAGY.js.map +0 -1
  213. package/dist/chunk-ELRIFGMN.js.map +0 -1
  214. package/dist/chunk-EO4NGM5W.js.map +0 -1
  215. package/dist/chunk-GLHKHYJY.js.map +0 -1
  216. package/dist/chunk-GVNG5ME6.js.map +0 -1
  217. package/dist/chunk-I5RDX6O3.js.map +0 -1
  218. package/dist/chunk-JUZ4JQWH.js +0 -69
  219. package/dist/chunk-JUZ4JQWH.js.map +0 -1
  220. package/dist/chunk-K4UCALQQ.js +0 -67
  221. package/dist/chunk-K4UCALQQ.js.map +0 -1
  222. package/dist/chunk-KXJ3SEW7.js.map +0 -1
  223. package/dist/chunk-RMJVCJ6U.js.map +0 -1
  224. package/dist/chunk-S6BREP2G.js.map +0 -1
  225. package/dist/chunk-T3LWBCVR.js.map +0 -1
  226. package/dist/chunk-TDANAN5A.js.map +0 -1
  227. package/dist/chunk-U7TPJMGY.js.map +0 -1
  228. package/dist/chunk-UC5J6GWG.js.map +0 -1
  229. package/dist/chunk-VHJ6ALIE.js.map +0 -1
  230. package/dist/chunk-WGKOYZRI.js.map +0 -1
  231. package/dist/chunk-WUS45IZW.js +0 -36
  232. package/dist/chunk-WUS45IZW.js.map +0 -1
  233. package/dist/chunk-Y4FEW7SR.js.map +0 -1
  234. package/dist/chunk-ZVSMLMMS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/forms/PaymentInput/card-utils.ts","../src/components/forms/PaymentInput/PaymentInput.variants.ts","../src/components/forms/PaymentInput/PaymentInput.tsx"],"names":[],"mappings":"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","file":"chunk-RQBYBBMP.js","sourcesContent":["/**\n * Supported card types\n */\nexport type CardType =\n | \"amex\"\n | \"diners\"\n | \"discover\"\n | \"elo\"\n | \"hipercard\"\n | \"jcb\"\n | \"mastercard\"\n | \"visa\"\n\n/**\n * Card type configuration\n */\nexport interface CardTypeConfig {\n /** CVV length */\n cvvLength: number\n /** Card number format (# = digit, space = separator) */\n format: string\n /** Card number length(s) */\n lengths: number[]\n name: string\n /** Regex patterns to match card number prefixes */\n patterns: RegExp[]\n type: CardType\n}\n\n/**\n * Standard 16-digit card format\n */\nconst STANDARD_CARD_FORMAT = \"#### #### #### ####\"\n\n/**\n * Card type configurations\n */\nexport const cardTypes: CardTypeConfig[] = [\n {\n type: \"visa\",\n name: \"Visa\",\n patterns: [/^4/],\n lengths: [13, 16, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"mastercard\",\n name: \"Mastercard\",\n patterns: [/^5[1-5]/, /^2[2-7]/],\n lengths: [16],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"amex\",\n name: \"American Express\",\n patterns: [/^3[47]/],\n lengths: [15],\n cvvLength: 4,\n format: \"#### ###### #####\",\n },\n {\n type: \"discover\",\n name: \"Discover\",\n patterns: [/^6(?:011|5)/, /^64[4-9]/, /^622/],\n lengths: [16, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"diners\",\n name: \"Diners Club\",\n patterns: [/^3(?:0[0-5]|[68])/, /^36/],\n lengths: [14, 16, 19],\n cvvLength: 3,\n format: \"#### ###### ####\",\n },\n {\n type: \"jcb\",\n name: \"JCB\",\n patterns: [/^35(?:2[89]|[3-8])/, /^2131/, /^1800/],\n lengths: [16, 17, 18, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"elo\",\n name: \"Elo\",\n patterns: [\n /^4011(78|79)/,\n /^43(1274|8935)/,\n /^45(1416|7393|763(1|2))/,\n /^50(4175|6699|67[0-6][0-9]|677[0-8]|9[0-8][0-9]{2}|99[0-8][0-9]|999[0-9])/,\n /^627780/,\n /^636297/,\n /^636368/,\n /^65003[1-3]/,\n /^6500(3[5-9]|4[0-9]|5[0-1])/,\n /^6504(0[5-9]|[1-3][0-9])/,\n /^650(4[8-9][0-9]|5[0-2][0-9]|53[0-8])/,\n /^6505(4[1-9]|[5-8][0-9]|9[0-8])/,\n /^6507(0[0-9]|1[0-8])/,\n /^65072[0-7]/,\n /^6509(0[1-9]|1[0-9]|20)/,\n /^6516(5[2-9]|[6-7][0-9])/,\n /^6550([0-1][0-9]|2[1-9]|[3-4][0-9]|5[0-8])/,\n ],\n lengths: [16],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"hipercard\",\n name: \"Hipercard\",\n patterns: [/^606282/, /^3841(0[0-9]|4[0-9]|80)/],\n lengths: [16, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n]\n\n/**\n * Detect card type from card number\n */\nexport function detectCardType(cardNumber: string): CardType | null {\n const digits = cardNumber.replaceAll(/\\D/g, \"\")\n\n for (const card of cardTypes) {\n for (const pattern of card.patterns) {\n if (pattern.test(digits)) {\n return card.type\n }\n }\n }\n\n return null\n}\n\n/**\n * Get card type configuration\n */\nexport function getCardConfig(cardType: CardType): CardTypeConfig | undefined {\n return cardTypes.find((c) => c.type === cardType)\n}\n\n/**\n * Format card number with spaces\n */\nexport function formatCardNumber(value: string, cardType?: CardType | null): string {\n const digits = value.replaceAll(/\\D/g, \"\")\n const config = cardType ? getCardConfig(cardType) : null\n const format = config?.format ?? STANDARD_CARD_FORMAT\n\n let result = \"\"\n let digitIndex = 0\n\n for (const char of format) {\n if (digitIndex >= digits.length) break\n\n if (char === \"#\") {\n result += digits[digitIndex] ?? \"\"\n digitIndex++\n } else {\n result += char\n }\n }\n\n return result\n}\n\n/**\n * Get raw digits from formatted card number\n */\nexport function getCardDigits(value: string): string {\n return value.replaceAll(/\\D/g, \"\")\n}\n\n/**\n * Validate card number using Luhn algorithm\n */\nexport function validateCardNumber(cardNumber: string): boolean {\n const digits = cardNumber.replaceAll(/\\D/g, \"\")\n\n if (digits.length < 13 || digits.length > 19) {\n return false\n }\n\n let sum = 0\n let isEven = false\n\n for (let i = digits.length - 1; i >= 0; i--) {\n const char = digits[i]\n if (!char) continue\n\n let digit = Number.parseInt(char, 10)\n\n if (isEven) {\n digit *= 2\n if (digit > 9) {\n digit -= 9\n }\n }\n\n sum += digit\n isEven = !isEven\n }\n\n return sum % 10 === 0\n}\n\n/**\n * Get card brand display name\n */\nexport function getCardBrandName(cardType: CardType | null): string {\n if (!cardType) return \"\"\n const config = getCardConfig(cardType)\n return config?.name ?? \"\"\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * PaymentInput container variant styles using CVA\n */\nexport const paymentInputVariants = cva(\n [\n \"flex items-center w-full min-w-0 rounded-md border bg-transparent transition-[color,box-shadow] outline-none\",\n \"dark:bg-input/30\",\n \"focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n \"has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ],\n {\n variants: {\n size: {\n sm: \"h-8 px-2.5 text-sm gap-2\",\n md: \"h-9 px-3 text-base md:text-sm gap-2.5\",\n lg: \"h-10 px-3.5 text-base gap-3\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * PaymentInput inner input styles\n */\nexport const paymentInputInputVariants = cva(\n [\n \"flex-1 min-w-0 bg-transparent outline-none font-mono\",\n \"placeholder:text-muted-foreground placeholder:font-sans\",\n \"disabled:cursor-not-allowed\",\n ],\n {\n variants: {\n size: {\n sm: \"text-sm\",\n md: \"text-base md:text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * PaymentInput card icon styles\n */\nexport const paymentInputIconVariants = cva(\n \"shrink-0 text-[color:var(--payment-input-icon-color)] transition-opacity\",\n {\n variants: {\n size: {\n sm: \"size-5\",\n md: \"size-6\",\n lg: \"size-7\",\n },\n hasCard: {\n true: \"opacity-100\",\n false: \"opacity-40\",\n },\n },\n defaultVariants: {\n size: \"md\",\n hasCard: false,\n },\n }\n)\n\nexport type PaymentInputVariantProps = VariantProps<typeof paymentInputVariants>\n","\"use client\"\n\nimport type { PaymentInputProps } from \"./PaymentInput.types\"\n\nimport { CreditCard } from \"lucide-react\"\nimport * as React from \"react\"\nimport { useCallback, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n type CardType,\n detectCardType,\n formatCardNumber,\n getCardDigits,\n} from \"./card-utils\"\nimport {\n paymentInputIconVariants,\n paymentInputInputVariants,\n paymentInputVariants,\n} from \"./PaymentInput.variants\"\n\n/**\n * Card brand icons as simple SVG components\n */\nconst CardIcons: Record<\"unknown\" | CardType, React.FC<{ className?: string }>> = {\n visa: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M9.5 14.25h-1.5l.94-5.5h1.5l-.94 5.5zm6.75-5.37c-.3-.11-.77-.23-1.35-.23-1.5 0-2.55.75-2.56 1.83-.01.8.76 1.24 1.34 1.5.59.27.79.45.79.69-.01.37-.47.54-.91.54-.61 0-.93-.08-1.43-.29l-.2-.09-.21 1.24c.36.15 1.02.29 1.7.29 1.59 0 2.62-.74 2.63-1.9.01-.63-.4-1.12-1.29-1.52-.54-.26-.87-.43-.87-.69 0-.23.28-.48.88-.48.51-.01.87.1 1.15.21l.14.06.21-1.16zm3.97-.13h-1.17c-.36 0-.64.1-.79.46l-2.26 5.04h1.59l.32-.83h1.95l.18.83h1.4l-1.22-5.5zm-1.65 3.57l.8-2.02.46 2.02h-1.26zm-11.82-3.57l-1.49 3.75-.16-.75-.52-2.48c-.09-.34-.35-.47-.68-.48h-2.42l-.03.14c.56.14 1.06.33 1.49.55l1.27 4.77h1.61l2.39-5.5h-1.46z\" />\n </svg>\n ),\n mastercard: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M15.245 17.831c-1.458 1.093-3.256 1.744-5.207 1.744-4.786 0-8.669-3.855-8.669-8.613s3.883-8.613 8.669-8.613c1.951 0 3.749.651 5.207 1.744-2.06 1.655-3.383 4.177-3.383 7.019s1.323 5.364 3.383 7.019zm5.217-6.869c0-2.842-1.323-5.364-3.383-7.019-1.458 1.093-3.256 1.744-5.207 1.744-1.951 0-3.749-.651-5.207-1.744 2.06 1.655 3.383 4.177 3.383 7.019s-1.323 5.364-3.383 7.019c1.458-1.093 3.256-1.744 5.207-1.744 1.951 0 3.749.651 5.207 1.744-2.06-1.655-3.383-4.177-3.383-7.019z\" />\n </svg>\n ),\n amex: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10zm-10.65 2.5h1.3v-1.125h-1.3V12.5h1.3v-1h-2.35v4h2.35v-1h-1.3zm6.65-3h-3.85v4h1.05v-1.25h2.3v-1h-2.3v-.75h2.8v-1zm-9.25 0h-2.1l-1.4 1.65-1.4-1.65h-2.1v4h1.05v-2.8l1.45 1.75h.95l1.45-1.75v2.8h1.05v-4z\" />\n </svg>\n ),\n discover: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z\" />\n </svg>\n ),\n diners: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9c1.45.55 2.48 1.94 2.48 3.55v1.9c0 1.61-1.03 3-2.48 3.55zm4 0v-9c1.45.55 2.48 1.94 2.48 3.55v1.9c0 1.61-1.03 3-2.48 3.55z\" />\n </svg>\n ),\n jcb: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M17.5 3h-11C4.57 3 3 4.57 3 6.5v11c0 1.93 1.57 3.5 3.5 3.5h11c1.93 0 3.5-1.57 3.5-3.5v-11C21 4.57 19.43 3 17.5 3zm-7 12c0 .55-.45 1-1 1s-1-.45-1-1V9c0-.55.45-1 1-1s1 .45 1 1v6zm4.5 1c-1.38 0-2.5-1.12-2.5-2.5V9h2v4.5c0 .28.22.5.5.5s.5-.22.5-.5V9h2v4.5c0 1.38-1.12 2.5-2.5 2.5z\" />\n </svg>\n ),\n elo: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 13l-4-4 1.41-1.41L10 12.17l6.59-6.59L18 7l-8 8z\" />\n </svg>\n ),\n hipercard: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2L4 7v10l8 5 8-5V7l-8-5zm0 2.5L18 8v8l-6 3.5L6 16V8l6-3.5z\" />\n </svg>\n ),\n unknown: CreditCard,\n}\n\n/**\n * PaymentInput - A credit card number input with auto-formatting and brand detection\n *\n * @example\n * ```tsx\n * // Basic usage\n * <PaymentInput placeholder=\"Card number\" />\n *\n * // Controlled\n * const [cardNumber, setCardNumber] = useState(\"\")\n * <PaymentInput\n * value={cardNumber}\n * onChange={(value, cardType) => {\n * setCardNumber(value)\n * console.log(`Card type: ${cardType}`)\n * }}\n * />\n * ```\n */\nfunction PaymentInput({\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onCardTypeChange,\n disabled,\n size = \"md\",\n variant,\n invalid,\n showCardIcon = true,\n placeholder = \"0000 0000 0000 0000\",\n className,\n ...props\n}: PaymentInputProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [cardType, setCardType] = useState<CardType | null>(() =>\n detectCardType(defaultValue)\n )\n\n // Determine if controlled\n const isControlled = controlledValue !== undefined\n const cardValue = isControlled ? controlledValue : internalValue\n\n // Format the display value\n const displayValue = formatCardNumber(cardValue, cardType)\n\n // Track previous card type for change detection\n const prevCardTypeRef = useRef<CardType | null>(cardType)\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = getCardDigits(e.target.value)\n\n // Limit to 19 digits (max card length)\n const limitedValue = rawValue.slice(0, 19)\n\n // Detect card type\n const detectedType = detectCardType(limitedValue)\n setCardType(detectedType)\n\n if (!isControlled) {\n setInternalValue(limitedValue)\n }\n\n onChange?.(limitedValue, detectedType)\n\n // Notify on card type changes directly in the event handler (avoids effect anti-pattern)\n if (prevCardTypeRef.current !== detectedType) {\n onCardTypeChange?.(detectedType)\n prevCardTypeRef.current = detectedType\n }\n },\n [isControlled, onChange, onCardTypeChange]\n )\n\n // Get the card icon component\n const CardIcon = cardType ? CardIcons[cardType] : CardIcons.unknown\n\n return (\n <div\n aria-invalid={invalid ?? undefined}\n className={cn(paymentInputVariants({ size, variant }), className)}\n data-slot=\"payment-input\"\n >\n {showCardIcon && (\n <CardIcon\n className={paymentInputIconVariants({ size, hasCard: !!cardType })}\n />\n )}\n <input\n ref={inputRef}\n aria-invalid={invalid ?? undefined}\n autoComplete=\"cc-number\"\n className={paymentInputInputVariants({ size })}\n data-slot=\"payment-input-field\"\n disabled={disabled}\n inputMode=\"numeric\"\n placeholder={placeholder}\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n {...props}\n />\n </div>\n )\n}\n\nexport { PaymentInput }\n"]}
1
+ {"version":3,"sources":["../src/components/forms/PaymentInput/card-utils.ts","../src/components/forms/PaymentInput/PaymentInput.variants.ts","../src/components/forms/PaymentInput/PaymentInput.tsx"],"names":[],"mappings":";;;;;;;AAgCA,IAAM,oBAAA,GAAuB,qBAAA;AAKtB,IAAM,SAAA,GAA8B;AAAA,EACzC;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,QAAA,EAAU,CAAC,IAAI,CAAA;AAAA,IACf,OAAA,EAAS,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAAA,IACpB,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,QAAA,EAAU,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,IAC/B,OAAA,EAAS,CAAC,EAAE,CAAA;AAAA,IACZ,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,CAAC,QAAQ,CAAA;AAAA,IACnB,OAAA,EAAS,CAAC,EAAE,CAAA;AAAA,IACZ,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM,UAAA;AAAA,IACN,QAAA,EAAU,CAAC,aAAA,EAAe,UAAA,EAAY,MAAM,CAAA;AAAA,IAC5C,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA;AAAA,IAChB,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,IAAA,EAAM,aAAA;AAAA,IACN,QAAA,EAAU,CAAC,mBAAA,EAAqB,KAAK,CAAA;AAAA,IACrC,OAAA,EAAS,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAAA,IACpB,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,KAAA;AAAA,IACN,IAAA,EAAM,KAAA;AAAA,IACN,QAAA,EAAU,CAAC,oBAAA,EAAsB,OAAA,EAAS,OAAO,CAAA;AAAA,IACjD,OAAA,EAAS,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAE,CAAA;AAAA,IACxB,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,KAAA;AAAA,IACN,IAAA,EAAM,KAAA;AAAA,IACN,QAAA,EAAU;AAAA,MACR,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,yBAAA;AAAA,MACA,2EAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA,6BAAA;AAAA,MACA,0BAAA;AAAA,MACA,uCAAA;AAAA,MACA,iCAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA,yBAAA;AAAA,MACA,0BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,CAAA;AAAA,IACZ,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,WAAA;AAAA,IACN,QAAA,EAAU,CAAC,SAAA,EAAW,yBAAyB,CAAA;AAAA,IAC/C,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA;AAAA,IAChB,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ;AAAA;AAEZ;AAKO,SAAS,eAAe,UAAA,EAAqC;AAClE,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,UAAA,CAAW,KAAA,EAAO,EAAE,CAAA;AAE9C,EAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC5B,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,QAAA,EAAU;AACnC,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG;AACxB,QAAA,OAAO,IAAA,CAAK,IAAA;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAKO,SAAS,cAAc,QAAA,EAAgD;AAC5E,EAAA,OAAO,UAAU,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,QAAQ,CAAA;AAClD;AAKO,SAAS,gBAAA,CAAiB,OAAe,QAAA,EAAoC;AAClF,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,UAAA,CAAW,KAAA,EAAO,EAAE,CAAA;AACzC,EAAA,MAAM,MAAA,GAAS,QAAA,GAAW,aAAA,CAAc,QAAQ,CAAA,GAAI,IAAA;AACpD,EAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,oBAAA;AAEjC,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,EAAA,KAAA,MAAW,QAAQ,MAAA,EAAQ;AACzB,IAAA,IAAI,UAAA,IAAc,OAAO,MAAA,EAAQ;AAEjC,IAAA,IAAI,SAAS,GAAA,EAAK;AAChB,MAAA,MAAA,IAAU,MAAA,CAAO,UAAU,CAAA,IAAK,EAAA;AAChC,MAAA,UAAA,EAAA;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAA,IAAU,IAAA;AAAA,IACZ;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,cAAc,KAAA,EAAuB;AACnD,EAAA,OAAO,KAAA,CAAM,UAAA,CAAW,KAAA,EAAO,EAAE,CAAA;AACnC;AAKO,SAAS,mBAAmB,UAAA,EAA6B;AAC9D,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,UAAA,CAAW,KAAA,EAAO,EAAE,CAAA;AAE9C,EAAA,IAAI,MAAA,CAAO,MAAA,GAAS,EAAA,IAAM,MAAA,CAAO,SAAS,EAAA,EAAI;AAC5C,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,IAAI,MAAA,GAAS,KAAA;AAEb,EAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC3C,IAAA,MAAM,IAAA,GAAO,OAAO,CAAC,CAAA;AACrB,IAAA,IAAI,CAAC,IAAA,EAAM;AAEX,IAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA;AAEpC,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,KAAA,IAAS,CAAA;AACT,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,KAAA,IAAS,CAAA;AAAA,MACX;AAAA,IACF;AAEA,IAAA,GAAA,IAAO,KAAA;AACP,IAAA,MAAA,GAAS,CAAC,MAAA;AAAA,EACZ;AAEA,EAAA,OAAO,MAAM,EAAA,KAAO,CAAA;AACtB;AAKO,SAAS,iBAAiB,QAAA,EAAmC;AAClE,EAAA,IAAI,CAAC,UAAU,OAAO,EAAA;AACtB,EAAA,MAAM,MAAA,GAAS,cAAc,QAAQ,CAAA;AACrC,EAAA,OAAO,QAAQ,IAAA,IAAQ,EAAA;AACzB;ACrNO,IAAM,oBAAA,GAAuB,GAAA;AAAA,EAClC;AAAA,IACE,8GAAA;AAAA,IACA,kBAAA;AAAA,IACA,4EAAA;AAAA,IACA,0FAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,iDAAA;AAAA,QACJ,EAAA,EAAI,8DAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wBAAA;AAAA,QACT,MAAA,EAAQ,6BAAA;AAAA,QACR,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX;AAEJ;AAKO,IAAM,yBAAA,GAA4B,GAAA;AAAA,EACvC;AAAA,IACE,sDAAA;AAAA,IACA,yDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC,0EAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,aAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX;AAEJ;ACtDA,IAAM,SAAA,GAA4E;AAAA,EAChF,MAAM,CAAC,EAAE,SAAA,EAAU,yBAChB,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+lBAA8lB,CAAA,EACxmB,CAAA;AAAA,EAEF,YAAY,CAAC,EAAE,SAAA,EAAU,yBACtB,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0dAAyd,CAAA,EACne,CAAA;AAAA,EAEF,MAAM,CAAC,EAAE,SAAA,EAAU,yBAChB,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kRAAiR,CAAA,EAC3R,CAAA;AAAA,EAEF,UAAU,CAAC,EAAE,SAAA,EAAU,yBACpB,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gIAA+H,CAAA,EACzI,CAAA;AAAA,EAEF,QAAQ,CAAC,EAAE,SAAA,EAAU,yBAClB,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0MAAyM,CAAA,EACnN,CAAA;AAAA,EAEF,KAAK,CAAC,EAAE,SAAA,EAAU,yBACf,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,uRAAsR,CAAA,EAChS,CAAA;AAAA,EAEF,KAAK,CAAC,EAAE,SAAA,EAAU,yBACf,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,yHAAwH,CAAA,EAClI,CAAA;AAAA,EAEF,WAAW,CAAC,EAAE,SAAA,EAAU,yBACrB,KAAA,EAAA,EAAI,SAAA,EAAsB,IAAA,EAAK,cAAA,EAAe,SAAQ,WAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kEAAiE,CAAA,EAC3E,CAAA;AAAA,EAEF,OAAA,EAAS;AACX,CAAA;AAqBA,SAAS,YAAA,CAAa;AAAA,EACpB,KAAA,EAAO,eAAA;AAAA,EACP,YAAA,GAAe,EAAA;AAAA,EACf,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA,GAAe,IAAA;AAAA,EACf,WAAA,GAAc,qBAAA;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAG9C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,YAAY,CAAA;AAC/D,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA;AAAA,IAA0B,MACxD,eAAe,YAAY;AAAA,GAC7B;AAGA,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,SAAA,GAAY,eAAe,eAAA,GAAkB,aAAA;AAGnD,EAAA,MAAM,YAAA,GAAe,gBAAA,CAAiB,SAAA,EAAW,QAAQ,CAAA;AAGzD,EAAA,MAAM,eAAA,GAAkB,OAAwB,QAAQ,CAAA;AAExD,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC1C,MAAA,MAAM,QAAA,GAAW,aAAA,CAAc,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAG7C,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAGzC,MAAA,MAAM,YAAA,GAAe,eAAe,YAAY,CAAA;AAChD,MAAA,WAAA,CAAY,YAAY,CAAA;AAExB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,YAAY,CAAA;AAAA,MAC/B;AAEA,MAAA,QAAA,GAAW,cAAc,YAAY,CAAA;AAGrC,MAAA,IAAI,eAAA,CAAgB,YAAY,YAAA,EAAc;AAC5C,QAAA,gBAAA,GAAmB,YAAY,CAAA;AAC/B,QAAA,eAAA,CAAgB,OAAA,GAAU,YAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,QAAA,EAAU,gBAAgB;AAAA,GAC3C;AAGA,EAAA,MAAM,QAAA,GAAW,QAAA,GAAW,SAAA,CAAU,QAAQ,IAAI,SAAA,CAAU,OAAA;AAE5D,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,gBAAc,OAAA,IAAW,MAAA;AAAA,MACzB,SAAA,EAAW,GAAG,oBAAA,CAAqB,EAAE,MAAM,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MAChE,WAAA,EAAU,eAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,YAAA,oBACC,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,yBAAyB,EAAE,IAAA,EAAM,SAAS,CAAC,CAAC,UAAU;AAAA;AAAA,SACnE;AAAA,wBAEF,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,gBAAc,OAAA,IAAW,MAAA;AAAA,YACzB,YAAA,EAAa,WAAA;AAAA,YACb,SAAA,EAAW,yBAAA,CAA0B,EAAE,IAAA,EAAM,CAAA;AAAA,YAC7C,WAAA,EAAU,qBAAA;AAAA,YACV,QAAA;AAAA,YACA,SAAA,EAAU,SAAA;AAAA,YACV,WAAA;AAAA,YACA,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO,YAAA;AAAA,YACP,QAAA,EAAU,iBAAA;AAAA,YACT,GAAG;AAAA;AAAA;AACN;AAAA;AAAA,GACF;AAEJ","file":"chunk-EINYBB7T.js","sourcesContent":["/**\n * Supported card types\n */\nexport type CardType =\n | \"amex\"\n | \"diners\"\n | \"discover\"\n | \"elo\"\n | \"hipercard\"\n | \"jcb\"\n | \"mastercard\"\n | \"visa\"\n\n/**\n * Card type configuration\n */\nexport interface CardTypeConfig {\n /** CVV length */\n cvvLength: number\n /** Card number format (# = digit, space = separator) */\n format: string\n /** Card number length(s) */\n lengths: number[]\n name: string\n /** Regex patterns to match card number prefixes */\n patterns: RegExp[]\n type: CardType\n}\n\n/**\n * Standard 16-digit card format\n */\nconst STANDARD_CARD_FORMAT = \"#### #### #### ####\"\n\n/**\n * Card type configurations\n */\nexport const cardTypes: CardTypeConfig[] = [\n {\n type: \"visa\",\n name: \"Visa\",\n patterns: [/^4/],\n lengths: [13, 16, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"mastercard\",\n name: \"Mastercard\",\n patterns: [/^5[1-5]/, /^2[2-7]/],\n lengths: [16],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"amex\",\n name: \"American Express\",\n patterns: [/^3[47]/],\n lengths: [15],\n cvvLength: 4,\n format: \"#### ###### #####\",\n },\n {\n type: \"discover\",\n name: \"Discover\",\n patterns: [/^6(?:011|5)/, /^64[4-9]/, /^622/],\n lengths: [16, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"diners\",\n name: \"Diners Club\",\n patterns: [/^3(?:0[0-5]|[68])/, /^36/],\n lengths: [14, 16, 19],\n cvvLength: 3,\n format: \"#### ###### ####\",\n },\n {\n type: \"jcb\",\n name: \"JCB\",\n patterns: [/^35(?:2[89]|[3-8])/, /^2131/, /^1800/],\n lengths: [16, 17, 18, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"elo\",\n name: \"Elo\",\n patterns: [\n /^4011(78|79)/,\n /^43(1274|8935)/,\n /^45(1416|7393|763(1|2))/,\n /^50(4175|6699|67[0-6][0-9]|677[0-8]|9[0-8][0-9]{2}|99[0-8][0-9]|999[0-9])/,\n /^627780/,\n /^636297/,\n /^636368/,\n /^65003[1-3]/,\n /^6500(3[5-9]|4[0-9]|5[0-1])/,\n /^6504(0[5-9]|[1-3][0-9])/,\n /^650(4[8-9][0-9]|5[0-2][0-9]|53[0-8])/,\n /^6505(4[1-9]|[5-8][0-9]|9[0-8])/,\n /^6507(0[0-9]|1[0-8])/,\n /^65072[0-7]/,\n /^6509(0[1-9]|1[0-9]|20)/,\n /^6516(5[2-9]|[6-7][0-9])/,\n /^6550([0-1][0-9]|2[1-9]|[3-4][0-9]|5[0-8])/,\n ],\n lengths: [16],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n {\n type: \"hipercard\",\n name: \"Hipercard\",\n patterns: [/^606282/, /^3841(0[0-9]|4[0-9]|80)/],\n lengths: [16, 19],\n cvvLength: 3,\n format: STANDARD_CARD_FORMAT,\n },\n]\n\n/**\n * Detect card type from card number\n */\nexport function detectCardType(cardNumber: string): CardType | null {\n const digits = cardNumber.replaceAll(/\\D/g, \"\")\n\n for (const card of cardTypes) {\n for (const pattern of card.patterns) {\n if (pattern.test(digits)) {\n return card.type\n }\n }\n }\n\n return null\n}\n\n/**\n * Get card type configuration\n */\nexport function getCardConfig(cardType: CardType): CardTypeConfig | undefined {\n return cardTypes.find((c) => c.type === cardType)\n}\n\n/**\n * Format card number with spaces\n */\nexport function formatCardNumber(value: string, cardType?: CardType | null): string {\n const digits = value.replaceAll(/\\D/g, \"\")\n const config = cardType ? getCardConfig(cardType) : null\n const format = config?.format ?? STANDARD_CARD_FORMAT\n\n let result = \"\"\n let digitIndex = 0\n\n for (const char of format) {\n if (digitIndex >= digits.length) break\n\n if (char === \"#\") {\n result += digits[digitIndex] ?? \"\"\n digitIndex++\n } else {\n result += char\n }\n }\n\n return result\n}\n\n/**\n * Get raw digits from formatted card number\n */\nexport function getCardDigits(value: string): string {\n return value.replaceAll(/\\D/g, \"\")\n}\n\n/**\n * Validate card number using Luhn algorithm\n */\nexport function validateCardNumber(cardNumber: string): boolean {\n const digits = cardNumber.replaceAll(/\\D/g, \"\")\n\n if (digits.length < 13 || digits.length > 19) {\n return false\n }\n\n let sum = 0\n let isEven = false\n\n for (let i = digits.length - 1; i >= 0; i--) {\n const char = digits[i]\n if (!char) continue\n\n let digit = Number.parseInt(char, 10)\n\n if (isEven) {\n digit *= 2\n if (digit > 9) {\n digit -= 9\n }\n }\n\n sum += digit\n isEven = !isEven\n }\n\n return sum % 10 === 0\n}\n\n/**\n * Get card brand display name\n */\nexport function getCardBrandName(cardType: CardType | null): string {\n if (!cardType) return \"\"\n const config = getCardConfig(cardType)\n return config?.name ?? \"\"\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * PaymentInput container variant styles using CVA\n */\nexport const paymentInputVariants = cva(\n [\n \"flex items-center w-full min-w-0 rounded-md border bg-transparent transition-[color,box-shadow] outline-none\",\n \"dark:bg-input/30\",\n \"focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n \"has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--input-size-sm-h)] px-2.5 text-sm gap-2\",\n md: \"h-[var(--input-size-md-h)] px-3 text-base md:text-sm gap-2.5\",\n lg: \"h-[var(--input-size-lg-h)] px-3.5 text-base gap-3\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * PaymentInput inner input styles\n */\nexport const paymentInputInputVariants = cva(\n [\n \"flex-1 min-w-0 bg-transparent outline-none font-mono\",\n \"placeholder:text-muted-foreground placeholder:font-sans\",\n \"disabled:cursor-not-allowed\",\n ],\n {\n variants: {\n size: {\n sm: \"text-sm\",\n md: \"text-base md:text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * PaymentInput card icon styles\n */\nexport const paymentInputIconVariants = cva(\n \"shrink-0 text-[color:var(--payment-input-icon-color)] transition-opacity\",\n {\n variants: {\n size: {\n sm: \"size-5\",\n md: \"size-6\",\n lg: \"size-7\",\n },\n hasCard: {\n true: \"opacity-100\",\n false: \"opacity-40\",\n },\n },\n defaultVariants: {\n size: \"md\",\n hasCard: false,\n },\n }\n)\n\nexport type PaymentInputVariantProps = VariantProps<typeof paymentInputVariants>\n","\"use client\"\n\nimport type { PaymentInputProps } from \"./PaymentInput.types\"\n\nimport { CreditCard } from \"lucide-react\"\nimport * as React from \"react\"\nimport { useCallback, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n type CardType,\n detectCardType,\n formatCardNumber,\n getCardDigits,\n} from \"./card-utils\"\nimport {\n paymentInputIconVariants,\n paymentInputInputVariants,\n paymentInputVariants,\n} from \"./PaymentInput.variants\"\n\n/**\n * Card brand icons as simple SVG components\n */\nconst CardIcons: Record<\"unknown\" | CardType, React.FC<{ className?: string }>> = {\n visa: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M9.5 14.25h-1.5l.94-5.5h1.5l-.94 5.5zm6.75-5.37c-.3-.11-.77-.23-1.35-.23-1.5 0-2.55.75-2.56 1.83-.01.8.76 1.24 1.34 1.5.59.27.79.45.79.69-.01.37-.47.54-.91.54-.61 0-.93-.08-1.43-.29l-.2-.09-.21 1.24c.36.15 1.02.29 1.7.29 1.59 0 2.62-.74 2.63-1.9.01-.63-.4-1.12-1.29-1.52-.54-.26-.87-.43-.87-.69 0-.23.28-.48.88-.48.51-.01.87.1 1.15.21l.14.06.21-1.16zm3.97-.13h-1.17c-.36 0-.64.1-.79.46l-2.26 5.04h1.59l.32-.83h1.95l.18.83h1.4l-1.22-5.5zm-1.65 3.57l.8-2.02.46 2.02h-1.26zm-11.82-3.57l-1.49 3.75-.16-.75-.52-2.48c-.09-.34-.35-.47-.68-.48h-2.42l-.03.14c.56.14 1.06.33 1.49.55l1.27 4.77h1.61l2.39-5.5h-1.46z\" />\n </svg>\n ),\n mastercard: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M15.245 17.831c-1.458 1.093-3.256 1.744-5.207 1.744-4.786 0-8.669-3.855-8.669-8.613s3.883-8.613 8.669-8.613c1.951 0 3.749.651 5.207 1.744-2.06 1.655-3.383 4.177-3.383 7.019s1.323 5.364 3.383 7.019zm5.217-6.869c0-2.842-1.323-5.364-3.383-7.019-1.458 1.093-3.256 1.744-5.207 1.744-1.951 0-3.749-.651-5.207-1.744 2.06 1.655 3.383 4.177 3.383 7.019s-1.323 5.364-3.383 7.019c1.458-1.093 3.256-1.744 5.207-1.744 1.951 0 3.749.651 5.207 1.744-2.06-1.655-3.383-4.177-3.383-7.019z\" />\n </svg>\n ),\n amex: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10zm-10.65 2.5h1.3v-1.125h-1.3V12.5h1.3v-1h-2.35v4h2.35v-1h-1.3zm6.65-3h-3.85v4h1.05v-1.25h2.3v-1h-2.3v-.75h2.8v-1zm-9.25 0h-2.1l-1.4 1.65-1.4-1.65h-2.1v4h1.05v-2.8l1.45 1.75h.95l1.45-1.75v2.8h1.05v-4z\" />\n </svg>\n ),\n discover: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z\" />\n </svg>\n ),\n diners: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9c1.45.55 2.48 1.94 2.48 3.55v1.9c0 1.61-1.03 3-2.48 3.55zm4 0v-9c1.45.55 2.48 1.94 2.48 3.55v1.9c0 1.61-1.03 3-2.48 3.55z\" />\n </svg>\n ),\n jcb: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M17.5 3h-11C4.57 3 3 4.57 3 6.5v11c0 1.93 1.57 3.5 3.5 3.5h11c1.93 0 3.5-1.57 3.5-3.5v-11C21 4.57 19.43 3 17.5 3zm-7 12c0 .55-.45 1-1 1s-1-.45-1-1V9c0-.55.45-1 1-1s1 .45 1 1v6zm4.5 1c-1.38 0-2.5-1.12-2.5-2.5V9h2v4.5c0 .28.22.5.5.5s.5-.22.5-.5V9h2v4.5c0 1.38-1.12 2.5-2.5 2.5z\" />\n </svg>\n ),\n elo: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 13l-4-4 1.41-1.41L10 12.17l6.59-6.59L18 7l-8 8z\" />\n </svg>\n ),\n hipercard: ({ className }) => (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 2L4 7v10l8 5 8-5V7l-8-5zm0 2.5L18 8v8l-6 3.5L6 16V8l6-3.5z\" />\n </svg>\n ),\n unknown: CreditCard,\n}\n\n/**\n * PaymentInput - A credit card number input with auto-formatting and brand detection\n *\n * @example\n * ```tsx\n * // Basic usage\n * <PaymentInput placeholder=\"Card number\" />\n *\n * // Controlled\n * const [cardNumber, setCardNumber] = useState(\"\")\n * <PaymentInput\n * value={cardNumber}\n * onChange={(value, cardType) => {\n * setCardNumber(value)\n * console.log(`Card type: ${cardType}`)\n * }}\n * />\n * ```\n */\nfunction PaymentInput({\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onCardTypeChange,\n disabled,\n size = \"md\",\n variant,\n invalid,\n showCardIcon = true,\n placeholder = \"0000 0000 0000 0000\",\n className,\n ...props\n}: PaymentInputProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [cardType, setCardType] = useState<CardType | null>(() =>\n detectCardType(defaultValue)\n )\n\n // Determine if controlled\n const isControlled = controlledValue !== undefined\n const cardValue = isControlled ? controlledValue : internalValue\n\n // Format the display value\n const displayValue = formatCardNumber(cardValue, cardType)\n\n // Track previous card type for change detection\n const prevCardTypeRef = useRef<CardType | null>(cardType)\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = getCardDigits(e.target.value)\n\n // Limit to 19 digits (max card length)\n const limitedValue = rawValue.slice(0, 19)\n\n // Detect card type\n const detectedType = detectCardType(limitedValue)\n setCardType(detectedType)\n\n if (!isControlled) {\n setInternalValue(limitedValue)\n }\n\n onChange?.(limitedValue, detectedType)\n\n // Notify on card type changes directly in the event handler (avoids effect anti-pattern)\n if (prevCardTypeRef.current !== detectedType) {\n onCardTypeChange?.(detectedType)\n prevCardTypeRef.current = detectedType\n }\n },\n [isControlled, onChange, onCardTypeChange]\n )\n\n // Get the card icon component\n const CardIcon = cardType ? CardIcons[cardType] : CardIcons.unknown\n\n return (\n <div\n aria-invalid={invalid ?? undefined}\n className={cn(paymentInputVariants({ size, variant }), className)}\n data-slot=\"payment-input\"\n >\n {showCardIcon && (\n <CardIcon\n className={paymentInputIconVariants({ size, hasCard: !!cardType })}\n />\n )}\n <input\n ref={inputRef}\n aria-invalid={invalid ?? undefined}\n autoComplete=\"cc-number\"\n className={paymentInputInputVariants({ size })}\n data-slot=\"payment-input-field\"\n disabled={disabled}\n inputMode=\"numeric\"\n placeholder={placeholder}\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n {...props}\n />\n </div>\n )\n}\n\nexport { PaymentInput }\n"]}
@@ -10,6 +10,8 @@ var bannerVariants = cva(
10
10
  variants: {
11
11
  variant: {
12
12
  default: "bg-muted text-muted-foreground",
13
+ // Figma Property 1=Primary (1484:10303): mint sutil + texto foreground
14
+ primary: "bg-[color:var(--accent)] text-foreground",
13
15
  info: "bg-[color:var(--info-subtle)] text-[color:var(--info-subtle-foreground)]",
14
16
  success: "bg-[color:var(--success-subtle)] text-[color:var(--success-subtle-foreground)]",
15
17
  warning: "bg-[color:var(--warning-subtle)] text-[color:var(--warning-subtle-foreground)]",
@@ -78,5 +80,5 @@ function Banner({
78
80
  }
79
81
 
80
82
  export { Banner, bannerVariants };
81
- //# sourceMappingURL=chunk-4LZ53BAG.js.map
82
- //# sourceMappingURL=chunk-4LZ53BAG.js.map
83
+ //# sourceMappingURL=chunk-EKKJXJX7.js.map
84
+ //# sourceMappingURL=chunk-EKKJXJX7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Banner/Banner.variants.ts","../src/components/data-display/Banner/Banner.tsx"],"names":[],"mappings":";;;;;AAQO,IAAM,cAAA,GAAiB,GAAA;AAAA;AAAA,EAE5B,yLAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gCAAA;AAAA;AAAA,QAET,OAAA,EAAS,0CAAA;AAAA,QACT,IAAA,EAAM,0EAAA;AAAA,QACN,OAAA,EACE,gFAAA;AAAA,QACF,OAAA,EACE,gFAAA;AAAA,QACF,KAAA,EACE,wFAAA;AAAA,QACF,KAAA,EACE;AAAA,OACJ;AAAA,MACA,QAAA,EAAU;AAAA,QACR,GAAA,EAAK,iCAAA;AAAA,QACL,MAAA,EAAQ,oCAAA;AAAA,QACR,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU;AAAA;AACZ;AAEJ;AChBA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,SAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,QAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgB;AAEd,EAAA,MAAM,WACJ,IAAA,KACC,OAAA,KAAY,OAAA,IAAW,OAAA,KAAY,YAAY,OAAA,GAAU,QAAA,CAAA;AAE5D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe,EAAE,OAAA,EAAS,QAAA,EAAU,CAAA;AAAA,QACpC,MAAA,IAAU,QAAA;AAAA,QACV;AAAA,OACF;AAAA,MACA,WAAA,EAAW,QAAA,KAAa,OAAA,GAAU,WAAA,GAAc,QAAA;AAAA,MAChD,iBAAe,QAAA,IAAY,QAAA;AAAA,MAC3B,WAAA,EAAU,QAAA;AAAA,MACV,aAAA,EAAa,SAAS,EAAA,GAAK,MAAA;AAAA,MAC3B,gBAAc,OAAA,IAAW,SAAA;AAAA,MACzB,IAAA,EAAM,QAAA;AAAA,MACL,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACZ,QAAA,EAAA;AAAA,QAAA,IAAA,wBACE,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAW,WAAA,EAAU,eAClC,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,4BAED,MAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,WAAA,EAAU,kBAChC,QAAA,EACH,CAAA;AAAA,QACC,0BACC,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,UAAA,EAAW,WAAA,EAAU,iBAClC,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,QAED,WAAA,oBACC,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAW,OAAA;AAAA,YACX,SAAA,EAAU,yKAAA;AAAA,YACV,WAAA,EAAU,cAAA;AAAA,YACV,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,SAAA;AAAA,YAET,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AACxB,OAAA,EAEJ;AAAA;AAAA,GACF;AAEJ","file":"chunk-EKKJXJX7.js","sourcesContent":["// Banner/Banner.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Banner style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const bannerVariants = cva(\n // Base styles (always applied)\n \"relative flex w-full items-center justify-center gap-[var(--banner-root-gap)] px-[var(--banner-root-padding-x)] py-[var(--banner-root-padding-y)] text-[length:var(--banner-text-size)]\",\n {\n variants: {\n variant: {\n default: \"bg-muted text-muted-foreground\",\n // Figma Property 1=Primary (1484:10303): mint sutil + texto foreground\n primary: \"bg-[color:var(--accent)] text-foreground\",\n info: \"bg-[color:var(--info-subtle)] text-[color:var(--info-subtle-foreground)]\",\n success:\n \"bg-[color:var(--success-subtle)] text-[color:var(--success-subtle-foreground)]\",\n warning:\n \"bg-[color:var(--warning-subtle)] text-[color:var(--warning-subtle-foreground)]\",\n error:\n \"bg-[color:var(--destructive-subtle)] text-[color:var(--destructive-subtle-foreground)]\",\n promo:\n \"bg-gradient-to-r from-primary to-primary/80 text-primary-foreground\",\n },\n position: {\n top: \"fixed left-0 right-0 top-0 z-50\",\n bottom: \"fixed bottom-0 left-0 right-0 z-50\",\n inline: \"relative\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n position: \"inline\",\n },\n }\n)\n\n// Export variant prop types\nexport type BannerVariantProps = VariantProps<typeof bannerVariants>\n","import type { VariantProps } from \"class-variance-authority\"\n\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { bannerVariants } from \"./Banner.variants\"\n\ninterface BannerProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof bannerVariants> {\n /** Action element to display (e.g., button) */\n action?: React.ReactNode\n /** Whether the banner can be dismissed @default true */\n dismissible?: boolean\n /** Icon to display before the content */\n icon?: React.ReactNode\n /** Callback when the banner is dismissed */\n onDismiss?: () => void\n /** Whether the banner should be sticky during scroll @default false */\n sticky?: boolean\n}\n\nfunction Banner({\n className,\n variant,\n position,\n icon,\n action,\n dismissible = true,\n onDismiss,\n sticky = false,\n children,\n role,\n ...props\n}: BannerProps) {\n // Determine ARIA role based on variant\n const ariaRole =\n role ??\n (variant === \"error\" || variant === \"warning\" ? \"alert\" : \"status\")\n\n return (\n <div\n className={cn(\n bannerVariants({ variant, position }),\n sticky && \"sticky\",\n className\n )}\n aria-live={ariaRole === \"alert\" ? \"assertive\" : \"polite\"}\n data-position={position ?? \"inline\"}\n data-slot=\"banner\"\n data-sticky={sticky ? \"\" : undefined}\n data-variant={variant ?? \"default\"}\n role={ariaRole}\n {...props}\n >\n <div className=\"mx-auto flex max-w-screen-xl items-center gap-2\">\n {icon && (\n <span className=\"shrink-0\" data-slot=\"banner-icon\">\n {icon}\n </span>\n )}\n <span className=\"flex-1\" data-slot=\"banner-content\">\n {children}\n </span>\n {action && (\n <span className=\"shrink-0\" data-slot=\"banner-action\">\n {action}\n </span>\n )}\n {dismissible && (\n <button\n aria-label=\"Close\"\n className=\"shrink-0 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n data-slot=\"banner-close\"\n type=\"button\"\n onClick={onDismiss}\n >\n <X className=\"size-4\" />\n </button>\n )}\n </div>\n </div>\n )\n}\n\nexport { Banner, bannerVariants }\nexport type { BannerProps }\n"]}
@@ -2,6 +2,7 @@ import { cn } from './chunk-RVAYDRMA.js';
2
2
  import { Loader2, RefreshCw, ArrowLeft, Home, CircleAlert, Settings, WifiOff, Lock, ServerCrash, Ban } from 'lucide-react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
5
+ var navButtonBase = "inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2";
5
6
  var errorDefaults = {
6
7
  "401": {
7
8
  code: "401",
@@ -70,6 +71,7 @@ function ErrorPage({
70
71
  loading = false,
71
72
  onRetry,
72
73
  retryLabel = "Tentar novamente",
74
+ buttonVariant = "ghost",
73
75
  showBackLink = true,
74
76
  showHomeLink = true,
75
77
  title,
@@ -154,12 +156,16 @@ function ErrorPage({
154
156
  "div",
155
157
  {
156
158
  className: "flex flex-wrap items-center justify-center gap-4 text-sm",
159
+ "data-button-variant": buttonVariant,
157
160
  "data-slot": "error-navigation",
158
161
  children: [
159
162
  showBackLink && /* @__PURE__ */ jsxs(
160
163
  "button",
161
164
  {
162
- className: "inline-flex items-center gap-1.5 text-muted-foreground underline-offset-4 transition-colors hover:text-foreground hover:underline",
165
+ className: cn(
166
+ navButtonBase,
167
+ buttonVariant === "default" ? "border border-border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground" : "hover:bg-accent hover:text-accent-foreground"
168
+ ),
163
169
  "data-slot": "error-back-link",
164
170
  type: "button",
165
171
  onClick: handleBack,
@@ -172,12 +178,15 @@ function ErrorPage({
172
178
  showHomeLink && /* @__PURE__ */ jsxs(
173
179
  "a",
174
180
  {
175
- className: "inline-flex items-center gap-1.5 text-muted-foreground underline-offset-4 transition-colors hover:text-foreground hover:underline",
181
+ className: cn(
182
+ navButtonBase,
183
+ buttonVariant === "default" ? "bg-primary text-primary-foreground hover:bg-primary/90" : "hover:bg-accent hover:text-accent-foreground"
184
+ ),
176
185
  "data-slot": "error-home-link",
177
186
  href: homeHref,
178
187
  children: [
179
188
  /* @__PURE__ */ jsx(Home, { "aria-hidden": "true", className: "size-4" }),
180
- "Inicio"
189
+ "In\xEDcio"
181
190
  ]
182
191
  }
183
192
  )
@@ -193,5 +202,5 @@ function ErrorPage({
193
202
  }
194
203
 
195
204
  export { ErrorPage, errorDefaults };
196
- //# sourceMappingURL=chunk-4OWRNWHW.js.map
197
- //# sourceMappingURL=chunk-4OWRNWHW.js.map
205
+ //# sourceMappingURL=chunk-FCVFYUCL.js.map
206
+ //# sourceMappingURL=chunk-FCVFYUCL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/ErrorPage/ErrorPage.tsx"],"names":[],"mappings":"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","file":"chunk-FCVFYUCL.js","sourcesContent":["import type { ErrorDefault, ErrorPageProps, ErrorType } from \"./ErrorPage.types\"\n\nimport {\n ArrowLeft,\n Ban,\n CircleAlert,\n Home,\n Loader2,\n Lock,\n RefreshCw,\n ServerCrash,\n Settings,\n WifiOff,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\n\n/**\n * Default content for each error type\n */\n// Base dos botões de navegação (Figma Button md: 36px, px-16, gap-8, radius md)\nconst navButtonBase =\n \"inline-flex h-9 items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n\nconst errorDefaults: Record<ErrorType, ErrorDefault> = {\n \"401\": {\n code: \"401\",\n description: \"Faça login para acessar este conteúdo.\",\n title: \"Não autenticado\",\n },\n \"403\": {\n code: \"403\",\n description: \"Você não tem permissão para acessar este recurso.\",\n title: \"Acesso negado\",\n },\n \"404\": {\n code: \"404\",\n description: \"A página que você está procurando não existe ou foi movida.\",\n title: \"Página não encontrada\",\n },\n \"500\": {\n code: \"500\",\n description: \"Ocorreu um erro inesperado. Nossa equipe foi notificada.\",\n title: \"Erro interno\",\n },\n generic: {\n code: \"\",\n description: \"Ocorreu um erro. Por favor, tente novamente.\",\n title: \"Algo deu errado\",\n },\n maintenance: {\n code: \"\",\n description: \"Estamos realizando melhorias. Voltamos em breve!\",\n title: \"Em manutenção\",\n },\n offline: {\n code: \"\",\n description:\n \"Verifique sua conexão com a internet e tente novamente.\",\n title: \"Sem conexão\",\n },\n}\n\n/**\n * Default icon for each error type\n */\nfunction getDefaultIcon(type: ErrorType): React.ReactNode {\n const iconClassName = \"size-16 text-muted-foreground\"\n\n switch (type) {\n case \"404\":\n return <Ban className={iconClassName} />\n case \"500\":\n return <ServerCrash className={iconClassName} />\n case \"403\":\n return <Lock className={iconClassName} />\n case \"401\":\n return <Lock className={iconClassName} />\n case \"offline\":\n return <WifiOff className={iconClassName} />\n case \"maintenance\":\n return <Settings className={iconClassName} />\n default:\n return <CircleAlert className={cn(iconClassName, \"text-destructive\")} />\n }\n}\n\n/**\n * ErrorPage component displays user-friendly error pages with contextual\n * information, navigation options, and recovery actions.\n */\nfunction ErrorPage({\n actions,\n className,\n code,\n description,\n fullScreen = false,\n homeHref = \"/\",\n icon,\n illustration,\n loading = false,\n onRetry,\n retryLabel = \"Tentar novamente\",\n buttonVariant = \"ghost\",\n showBackLink = true,\n showHomeLink = true,\n title,\n type = \"generic\",\n ...props\n}: ErrorPageProps) {\n const defaults = errorDefaults[type]\n const displayTitle = title ?? defaults.title\n const displayDescription = description ?? defaults.description\n const displayCode = code ?? defaults.code\n const displayIcon = icon ?? getDefaultIcon(type)\n\n const handleBack = () => {\n if (typeof window !== \"undefined\" && window.history.length > 1) {\n window.history.back()\n }\n }\n\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center gap-6 bg-background p-8 text-center md:p-12\",\n fullScreen && \"min-h-screen\",\n className\n )}\n aria-live=\"polite\"\n data-slot=\"error-page\"\n role=\"main\"\n {...props}\n >\n {/* Illustration or Icon */}\n {illustration ? (\n <div className=\"mb-2\" data-slot=\"error-illustration\">\n {illustration}\n </div>\n ) : (\n <div className=\"mb-2\" data-slot=\"error-icon\">\n {displayIcon}\n </div>\n )}\n\n {/* Error Code */}\n {displayCode && (\n <div\n className=\"text-6xl font-bold text-muted-foreground md:text-8xl\"\n data-slot=\"error-code\"\n >\n {displayCode}\n </div>\n )}\n\n {/* Title */}\n <h1\n className=\"text-2xl font-semibold tracking-tight text-foreground\"\n data-slot=\"error-title\"\n >\n {displayTitle}\n </h1>\n\n {/* Description */}\n <p\n className=\"max-w-md text-base text-muted-foreground\"\n data-slot=\"error-description\"\n >\n {displayDescription}\n </p>\n\n {/* Actions */}\n <div\n className=\"flex flex-col items-center gap-4\"\n data-slot=\"error-actions\"\n >\n {/* Custom actions */}\n {actions}\n\n {/* Retry button */}\n {onRetry && (\n <button\n className={cn(\n \"inline-flex h-9 items-center justify-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\"\n )}\n aria-busy={loading || undefined}\n data-slot=\"error-retry-button\"\n disabled={loading}\n type=\"button\"\n onClick={onRetry}\n >\n {loading ? (\n <Loader2 aria-hidden=\"true\" className=\"size-4 animate-spin\" />\n ) : (\n <RefreshCw aria-hidden=\"true\" className=\"size-4\" />\n )}\n {retryLabel}\n </button>\n )}\n\n {/* Navigation links — Figma Type Button (1409:5322): ghost = ambos\n ghost; default = Voltar outline + Início primary */}\n {(showHomeLink || showBackLink) && (\n <div\n className=\"flex flex-wrap items-center justify-center gap-4 text-sm\"\n data-button-variant={buttonVariant}\n data-slot=\"error-navigation\"\n >\n {showBackLink && (\n <button\n className={cn(\n navButtonBase,\n buttonVariant === \"default\"\n ? \"border border-border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\"\n : \"hover:bg-accent hover:text-accent-foreground\"\n )}\n data-slot=\"error-back-link\"\n type=\"button\"\n onClick={handleBack}\n >\n <ArrowLeft aria-hidden=\"true\" className=\"size-4\" />\n Voltar\n </button>\n )}\n {showHomeLink && (\n <a\n className={cn(\n navButtonBase,\n buttonVariant === \"default\"\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"hover:bg-accent hover:text-accent-foreground\"\n )}\n data-slot=\"error-home-link\"\n href={homeHref}\n >\n <Home aria-hidden=\"true\" className=\"size-4\" />\n Início\n </a>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nexport { errorDefaults, ErrorPage }\n"]}
@@ -1,4 +1,4 @@
1
- import { inputVariants } from './chunk-T3LWBCVR.js';
1
+ import { inputVariants } from './chunk-LKCOHB3C.js';
2
2
  import { cn } from './chunk-RVAYDRMA.js';
3
3
  import { PlusIcon, MinusIcon } from 'lucide-react';
4
4
  import * as React from 'react';
@@ -163,5 +163,5 @@ function NumberInput({
163
163
  }
164
164
 
165
165
  export { NumberInput, numberInputPaddingVariants, numberStepperButtonVariants, numberStepperVariants };
166
- //# sourceMappingURL=chunk-6QVXMYKH.js.map
167
- //# sourceMappingURL=chunk-6QVXMYKH.js.map
166
+ //# sourceMappingURL=chunk-FGTYI4ZG.js.map
167
+ //# sourceMappingURL=chunk-FGTYI4ZG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/forms/NumberInput/NumberInput.variants.ts","../src/components/forms/NumberInput/NumberInput.tsx"],"names":[],"mappings":";;;;;;;AAMO,IAAM,qBAAA,GAAwB,GAAA;AAAA;AAAA,EAEnC;AAAA,IACE,+BAAA;AAAA,IACA,eAAA;AAAA,IACA,uBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,KAAA;AAAA,QACJ,EAAA,EAAI,KAAA;AAAA,QACJ,EAAA,EAAI,KAAA;AAAA,QACJ,EAAA,EAAI,KAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAMO,IAAM,2BAAA,GAA8B,GAAA;AAAA;AAAA,EAEzC;AAAA,IACE,yCAAA;AAAA,IACA,+DAAA;AAAA,IACA,mBAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,GAAA,EAAK,uBAAA;AAAA,QACL,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,EAAU;AAAA;AACZ;AAEJ;AAMO,IAAM,0BAAA,GAA6B,IAAI,EAAA,EAAI;AAAA,EAChD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,MAAA;AAAA,MACJ,EAAA,EAAI,MAAA;AAAA,MACJ,EAAA,EAAI,MAAA;AAAA,MACJ,EAAA,EAAI,MAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;ACxCD,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,aAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,QAAA,GAAiB,aAAyB,IAAI,CAAA;AAEpD,EAAA,MAAM,eAAA,GAAwB,kBAAY,MAAM;AAC9C,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,WAAA,EAAY;AAAA,IACd,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,QAAA,CAAS,QAAQ,MAAA,EAAO;AAExB,MAAA,QAAA,CAAS,OAAA,CAAQ,cAAc,IAAI,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA;AAAA,IACtE;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,eAAA,GAAwB,kBAAY,MAAM;AAC9C,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,WAAA,EAAY;AAAA,IACd,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,QAAA,CAAS,QAAQ,QAAA,EAAS;AAE1B,MAAA,QAAA,CAAS,OAAA,CAAQ,cAAc,IAAI,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA;AAAA,IACtE;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EAAkB,aAAU,sBAAA,EACzC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,aAAA,CAAc,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA;AAAA,UAE/B,sHAAA;AAAA,UACA,WAAA,IAAe,0BAAA,CAA2B,EAAE,IAAA,EAAM,CAAA;AAAA,UAClD;AAAA,SACF;AAAA,QACA,WAAA,EAAU,cAAA;AAAA,QACV,QAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACJ,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,oBACC,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,EAAA,CAAG,qBAAA,CAAsB,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,QAC7C,WAAA,EAAU,gBAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,iBAAA;AAAA,cACX,SAAA,EAAW,GAAG,2BAAA,CAA4B,EAAE,MAAM,QAAA,EAAU,KAAA,EAAO,CAAC,CAAA;AAAA,cACpE,WAAA,EAAU,kBAAA;AAAA,cACV,QAAA;AAAA,cACA,QAAA,EAAU,EAAA;AAAA,cACV,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,eAAA;AAAA,cAER,QAAA,EAAA,aAAA,oBAAiB,GAAA,CAAC,QAAA,EAAA,EAAS,aAAA,EAAY,MAAA,EAAO;AAAA;AAAA,WACjD;AAAA,0BACA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,iBAAA;AAAA,cACX,SAAA,EAAW,GAAG,2BAAA,CAA4B,EAAE,MAAM,QAAA,EAAU,QAAA,EAAU,CAAC,CAAA;AAAA,cACvE,WAAA,EAAU,kBAAA;AAAA,cACV,QAAA;AAAA,cACA,QAAA,EAAU,EAAA;AAAA,cACV,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,eAAA;AAAA,cAER,QAAA,EAAA,aAAA,oBAAiB,GAAA,CAAC,SAAA,EAAA,EAAU,aAAA,EAAY,MAAA,EAAO;AAAA;AAAA;AAClD;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ","file":"chunk-6QVXMYKH.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Number stepper container variant styles using CVA\n * Contains increment/decrement buttons stacked vertically\n */\nexport const numberStepperVariants = cva(\n // Base styles\n [\n \"absolute right-0 top-0 h-full\",\n \"flex flex-col\",\n \"border-l border-input\",\n \"overflow-hidden rounded-r-md\",\n ],\n {\n variants: {\n size: {\n xs: \"w-5\",\n sm: \"w-6\",\n md: \"w-7\",\n lg: \"w-8\",\n xl: \"w-9\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * Number stepper button variant styles using CVA\n * Individual increment/decrement button styles\n */\nexport const numberStepperButtonVariants = cva(\n // Base styles\n [\n \"flex flex-1 items-center justify-center\",\n \"text-muted-foreground hover:text-foreground hover:bg-muted/50\",\n \"transition-colors\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:bg-muted\",\n ],\n {\n variants: {\n size: {\n xs: \"[&_svg]:size-2.5\",\n sm: \"[&_svg]:size-3\",\n md: \"[&_svg]:size-3.5\",\n lg: \"[&_svg]:size-4\",\n xl: \"[&_svg]:size-4.5\",\n },\n position: {\n top: \"border-b border-input\",\n bottom: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n position: \"top\",\n },\n }\n)\n\n/**\n * Number input padding right values to accommodate stepper buttons\n * Used to add extra right padding when stepper is visible\n */\nexport const numberInputPaddingVariants = cva(\"\", {\n variants: {\n size: {\n xs: \"pr-6\",\n sm: \"pr-7\",\n md: \"pr-8\",\n lg: \"pr-9\",\n xl: \"pr-10\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\nexport type NumberStepperVariantProps = VariantProps<typeof numberStepperVariants>\nexport type NumberStepperButtonVariantProps = VariantProps<typeof numberStepperButtonVariants>\n","\"use client\"\n\nimport type { NumberInputProps } from \"./NumberInput.types\"\n\nimport { MinusIcon, PlusIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { inputVariants } from \"../TextInput/TextInput.variants\"\nimport {\n numberInputPaddingVariants,\n numberStepperButtonVariants,\n numberStepperVariants,\n} from \"./NumberInput.variants\"\n\n/**\n * NumberInput component with increment/decrement stepper buttons\n *\n * @example\n * ```tsx\n * <NumberInput placeholder=\"Enter quantity\" />\n * ```\n *\n * @example With min/max/step\n * ```tsx\n * <NumberInput min={0} max={100} step={5} defaultValue={50} />\n * ```\n *\n * @example Without stepper\n * ```tsx\n * <NumberInput showStepper={false} />\n * ```\n *\n * @example With custom icons\n * ```tsx\n * <NumberInput\n * incrementIcon={<ChevronUp className=\"size-4\" />}\n * decrementIcon={<ChevronDown className=\"size-4\" />}\n * />\n * ```\n */\nfunction NumberInput({\n className,\n size = \"md\",\n variant,\n showStepper = true,\n incrementIcon,\n decrementIcon,\n onIncrement,\n onDecrement,\n disabled,\n min,\n max,\n step = 1,\n ...props\n}: NumberInputProps) {\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIncrement = React.useCallback(() => {\n if (onIncrement) {\n onIncrement()\n } else if (inputRef.current) {\n inputRef.current.stepUp()\n // Dispatch input event to trigger onChange\n inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }))\n }\n }, [onIncrement])\n\n const handleDecrement = React.useCallback(() => {\n if (onDecrement) {\n onDecrement()\n } else if (inputRef.current) {\n inputRef.current.stepDown()\n // Dispatch input event to trigger onChange\n inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }))\n }\n }, [onDecrement])\n\n return (\n <div className=\"relative w-full\" data-slot=\"number-input-wrapper\">\n <input\n ref={inputRef}\n className={cn(\n inputVariants({ size, variant }),\n // Hide native spinner\n \"[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\",\n showStepper && numberInputPaddingVariants({ size }),\n className\n )}\n data-slot=\"number-input\"\n disabled={disabled}\n max={max}\n min={min}\n step={step}\n type=\"number\"\n {...props}\n />\n {showStepper && (\n <div\n className={cn(numberStepperVariants({ size }))}\n data-slot=\"number-stepper\"\n >\n <button\n aria-label=\"Increment value\"\n className={cn(numberStepperButtonVariants({ size, position: \"top\" }))}\n data-slot=\"increment-button\"\n disabled={disabled}\n tabIndex={-1}\n type=\"button\"\n onClick={handleIncrement}\n >\n {incrementIcon ?? <PlusIcon aria-hidden=\"true\" />}\n </button>\n <button\n aria-label=\"Decrement value\"\n className={cn(numberStepperButtonVariants({ size, position: \"bottom\" }))}\n data-slot=\"decrement-button\"\n disabled={disabled}\n tabIndex={-1}\n type=\"button\"\n onClick={handleDecrement}\n >\n {decrementIcon ?? <MinusIcon aria-hidden=\"true\" />}\n </button>\n </div>\n )}\n </div>\n )\n}\n\nexport { NumberInput }\n"]}
1
+ {"version":3,"sources":["../src/components/forms/NumberInput/NumberInput.variants.ts","../src/components/forms/NumberInput/NumberInput.tsx"],"names":[],"mappings":"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","file":"chunk-FGTYI4ZG.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Number stepper container variant styles using CVA\n * Contains increment/decrement buttons stacked vertically\n */\nexport const numberStepperVariants = cva(\n // Base styles\n [\n \"absolute right-0 top-0 h-full\",\n \"flex flex-col\",\n \"border-l border-input\",\n \"overflow-hidden rounded-r-md\",\n ],\n {\n variants: {\n size: {\n xs: \"w-5\",\n sm: \"w-6\",\n md: \"w-7\",\n lg: \"w-8\",\n xl: \"w-9\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * Number stepper button variant styles using CVA\n * Individual increment/decrement button styles\n */\nexport const numberStepperButtonVariants = cva(\n // Base styles\n [\n \"flex flex-1 items-center justify-center\",\n \"text-muted-foreground hover:text-foreground hover:bg-muted/50\",\n \"transition-colors\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:bg-muted\",\n ],\n {\n variants: {\n size: {\n xs: \"[&_svg]:size-2.5\",\n sm: \"[&_svg]:size-3\",\n md: \"[&_svg]:size-3.5\",\n lg: \"[&_svg]:size-4\",\n xl: \"[&_svg]:size-4.5\",\n },\n position: {\n top: \"border-b border-input\",\n bottom: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n position: \"top\",\n },\n }\n)\n\n/**\n * Number input padding right values to accommodate stepper buttons\n * Used to add extra right padding when stepper is visible\n */\nexport const numberInputPaddingVariants = cva(\"\", {\n variants: {\n size: {\n xs: \"pr-6\",\n sm: \"pr-7\",\n md: \"pr-8\",\n lg: \"pr-9\",\n xl: \"pr-10\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\nexport type NumberStepperVariantProps = VariantProps<typeof numberStepperVariants>\nexport type NumberStepperButtonVariantProps = VariantProps<typeof numberStepperButtonVariants>\n","\"use client\"\n\nimport type { NumberInputProps } from \"./NumberInput.types\"\n\nimport { MinusIcon, PlusIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { inputVariants } from \"../TextInput/TextInput.variants\"\nimport {\n numberInputPaddingVariants,\n numberStepperButtonVariants,\n numberStepperVariants,\n} from \"./NumberInput.variants\"\n\n/**\n * NumberInput component with increment/decrement stepper buttons\n *\n * @example\n * ```tsx\n * <NumberInput placeholder=\"Enter quantity\" />\n * ```\n *\n * @example With min/max/step\n * ```tsx\n * <NumberInput min={0} max={100} step={5} defaultValue={50} />\n * ```\n *\n * @example Without stepper\n * ```tsx\n * <NumberInput showStepper={false} />\n * ```\n *\n * @example With custom icons\n * ```tsx\n * <NumberInput\n * incrementIcon={<ChevronUp className=\"size-4\" />}\n * decrementIcon={<ChevronDown className=\"size-4\" />}\n * />\n * ```\n */\nfunction NumberInput({\n className,\n size = \"md\",\n variant,\n showStepper = true,\n incrementIcon,\n decrementIcon,\n onIncrement,\n onDecrement,\n disabled,\n min,\n max,\n step = 1,\n ...props\n}: NumberInputProps) {\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const handleIncrement = React.useCallback(() => {\n if (onIncrement) {\n onIncrement()\n } else if (inputRef.current) {\n inputRef.current.stepUp()\n // Dispatch input event to trigger onChange\n inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }))\n }\n }, [onIncrement])\n\n const handleDecrement = React.useCallback(() => {\n if (onDecrement) {\n onDecrement()\n } else if (inputRef.current) {\n inputRef.current.stepDown()\n // Dispatch input event to trigger onChange\n inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }))\n }\n }, [onDecrement])\n\n return (\n <div className=\"relative w-full\" data-slot=\"number-input-wrapper\">\n <input\n ref={inputRef}\n className={cn(\n inputVariants({ size, variant }),\n // Hide native spinner\n \"[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\",\n showStepper && numberInputPaddingVariants({ size }),\n className\n )}\n data-slot=\"number-input\"\n disabled={disabled}\n max={max}\n min={min}\n step={step}\n type=\"number\"\n {...props}\n />\n {showStepper && (\n <div\n className={cn(numberStepperVariants({ size }))}\n data-slot=\"number-stepper\"\n >\n <button\n aria-label=\"Increment value\"\n className={cn(numberStepperButtonVariants({ size, position: \"top\" }))}\n data-slot=\"increment-button\"\n disabled={disabled}\n tabIndex={-1}\n type=\"button\"\n onClick={handleIncrement}\n >\n {incrementIcon ?? <PlusIcon aria-hidden=\"true\" />}\n </button>\n <button\n aria-label=\"Decrement value\"\n className={cn(numberStepperButtonVariants({ size, position: \"bottom\" }))}\n data-slot=\"decrement-button\"\n disabled={disabled}\n tabIndex={-1}\n type=\"button\"\n onClick={handleDecrement}\n >\n {decrementIcon ?? <MinusIcon aria-hidden=\"true\" />}\n </button>\n </div>\n )}\n </div>\n )\n}\n\nexport { NumberInput }\n"]}
@@ -1,6 +1,6 @@
1
1
  import { cn } from './chunk-RVAYDRMA.js';
2
2
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
3
- import { CheckIcon, CircleIcon, ChevronRightIcon } from 'lucide-react';
3
+ import { CheckIcon, CircleIcon, SearchIcon, ChevronRightIcon } from 'lucide-react';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
6
 
@@ -223,6 +223,46 @@ function DropdownMenuLabel({
223
223
  }
224
224
  );
225
225
  }
226
+ function DropdownMenuSearch({
227
+ className,
228
+ placeholder = "Procurar",
229
+ shortcut,
230
+ ...props
231
+ }) {
232
+ return /* @__PURE__ */ jsxs(
233
+ "div",
234
+ {
235
+ className: cn(
236
+ "flex items-center gap-2 px-2 py-1.5 text-sm",
237
+ className
238
+ ),
239
+ "data-slot": "dropdown-menu-search",
240
+ onKeyDown: (event) => {
241
+ if (event.key !== "Escape") event.stopPropagation();
242
+ },
243
+ children: [
244
+ /* @__PURE__ */ jsx(
245
+ SearchIcon,
246
+ {
247
+ "aria-hidden": "true",
248
+ className: "size-4 shrink-0 text-muted-foreground"
249
+ }
250
+ ),
251
+ /* @__PURE__ */ jsx(
252
+ "input",
253
+ {
254
+ className: "min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
255
+ "data-slot": "dropdown-menu-search-input",
256
+ placeholder,
257
+ type: "text",
258
+ ...props
259
+ }
260
+ ),
261
+ shortcut
262
+ ]
263
+ }
264
+ );
265
+ }
226
266
  function DropdownMenuSeparator({
227
267
  className,
228
268
  ...props
@@ -286,6 +326,6 @@ function DropdownMenuSubContent({
286
326
  );
287
327
  }
288
328
 
289
- export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, dropdownMenuCheckboxItemVariants, dropdownMenuContentVariants, dropdownMenuIndicatorWrapperVariants, dropdownMenuItemVariants, dropdownMenuLabelVariants, dropdownMenuRadioItemVariants, dropdownMenuSeparatorVariants, dropdownMenuShortcutVariants, dropdownMenuSubContentVariants, dropdownMenuSubTriggerVariants };
290
- //# sourceMappingURL=chunk-6G5QK3SU.js.map
291
- //# sourceMappingURL=chunk-6G5QK3SU.js.map
329
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSearch, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, dropdownMenuCheckboxItemVariants, dropdownMenuContentVariants, dropdownMenuIndicatorWrapperVariants, dropdownMenuItemVariants, dropdownMenuLabelVariants, dropdownMenuRadioItemVariants, dropdownMenuSeparatorVariants, dropdownMenuShortcutVariants, dropdownMenuSubContentVariants, dropdownMenuSubTriggerVariants };
330
+ //# sourceMappingURL=chunk-FLXU5LWR.js.map
331
+ //# sourceMappingURL=chunk-FLXU5LWR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/DropdownMenu/DropdownMenu.variants.ts","../src/components/navigation/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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","file":"chunk-FLXU5LWR.js","sourcesContent":["// DropdownMenu/DropdownMenu.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Shared animation and transition styles for menu content\n */\nconst menuContentBase = [\n \"bg-popover text-popover-foreground\",\n \"z-[var(--dropdown-menu-content-z-index)] min-w-[var(--dropdown-menu-content-min-width)] overflow-hidden rounded-[var(--dropdown-menu-content-radius)] border-[var(--dropdown-menu-content-border-width)] p-[var(--dropdown-menu-content-padding)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n]\n\n/**\n * Shared base styles for interactive menu items\n */\nconst menuItemBase = [\n \"relative flex cursor-default items-center rounded-[var(--dropdown-menu-item-radius)] text-[length:var(--dropdown-menu-item-text-size)] outline-hidden select-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-[var(--dropdown-menu-item-icon-size)]\",\n]\n\n/**\n * DropdownMenuContent variant styles\n */\nexport const dropdownMenuContentVariants = cva([\n ...menuContentBase,\n \"shadow-[var(--dropdown-menu-content-shadow)]\",\n \"max-h-(--radix-dropdown-menu-content-available-height)\",\n \"origin-(--radix-dropdown-menu-content-transform-origin)\",\n \"overflow-x-hidden overflow-y-auto\",\n])\n\n/**\n * DropdownMenuSubContent variant styles\n */\nexport const dropdownMenuSubContentVariants = cva([\n ...menuContentBase,\n \"shadow-lg\",\n \"origin-(--radix-dropdown-menu-content-transform-origin)\",\n])\n\n/**\n * DropdownMenuItem variant styles\n */\nexport const dropdownMenuItemVariants = cva(\n [\n ...menuItemBase,\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--dropdown-menu-item-padding-x)] py-[var(--dropdown-menu-item-padding-y)] gap-[var(--dropdown-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--dropdown-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n variant: {\n default: \"focus:bg-accent focus:text-accent-foreground\",\n destructive: [\n \"text-destructive\",\n \"focus:bg-destructive/10 dark:focus:bg-destructive/20\",\n \"focus:text-destructive\",\n \"*:[svg]:!text-destructive\",\n ],\n },\n },\n defaultVariants: {\n inset: false,\n variant: \"default\",\n },\n }\n)\n\n/**\n * DropdownMenuSubTrigger variant styles\n */\nexport const dropdownMenuSubTriggerVariants = cva(\n [\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--dropdown-menu-item-padding-x)] py-[var(--dropdown-menu-item-padding-y)] gap-[var(--dropdown-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--dropdown-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * DropdownMenuCheckboxItem variant styles\n */\nexport const dropdownMenuCheckboxItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--dropdown-menu-item-padding-y)] pr-[var(--dropdown-menu-item-padding-x)] pl-[var(--dropdown-menu-item-inset-padding-left)] gap-[var(--dropdown-menu-item-gap)]\",\n])\n\n/**\n * DropdownMenuRadioItem variant styles\n */\nexport const dropdownMenuRadioItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--dropdown-menu-item-padding-y)] pr-[var(--dropdown-menu-item-padding-x)] pl-[var(--dropdown-menu-item-inset-padding-left)] gap-[var(--dropdown-menu-item-gap)]\",\n])\n\n/**\n * DropdownMenuLabel variant styles\n */\nexport const dropdownMenuLabelVariants = cva(\n [\"px-[var(--dropdown-menu-item-padding-x)] py-[var(--dropdown-menu-item-padding-y)] text-[length:var(--dropdown-menu-item-text-size)] font-medium\"],\n {\n variants: {\n inset: {\n true: \"pl-[var(--dropdown-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * DropdownMenuSeparator variant styles\n */\nexport const dropdownMenuSeparatorVariants = cva([\"bg-border -mx-[var(--dropdown-menu-separator-margin-x)] my-[var(--dropdown-menu-separator-margin-y)] h-[var(--dropdown-menu-separator-height)]\"])\n\n/**\n * DropdownMenuShortcut variant styles\n */\nexport const dropdownMenuShortcutVariants = cva([\n \"text-muted-foreground ml-auto text-[length:var(--dropdown-menu-shortcut-text-size)] tracking-widest\",\n])\n\n/**\n * Item indicator wrapper styles\n */\nexport const dropdownMenuIndicatorWrapperVariants = cva([\n \"pointer-events-none absolute left-[var(--dropdown-menu-indicator-left)] flex size-[var(--dropdown-menu-indicator-size)] items-center justify-center\",\n])\n\nexport type DropdownMenuItemVariantProps = VariantProps<\n typeof dropdownMenuItemVariants\n>\nexport type DropdownMenuSubTriggerVariantProps = VariantProps<\n typeof dropdownMenuSubTriggerVariants\n>\nexport type DropdownMenuLabelVariantProps = VariantProps<\n typeof dropdownMenuLabelVariants\n>\n\n","\"use client\"\n\nimport type {\n DropdownMenuCheckboxItemProps,\n DropdownMenuContentProps,\n DropdownMenuGroupProps,\n DropdownMenuItemProps,\n DropdownMenuLabelProps,\n DropdownMenuPortalProps,\n DropdownMenuProps,\n DropdownMenuRadioGroupProps,\n DropdownMenuRadioItemProps,\n DropdownMenuSeparatorProps,\n DropdownMenuShortcutProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n} from \"./DropdownMenu.types\"\nimport type * as React from \"react\"\n\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon, SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n dropdownMenuCheckboxItemVariants,\n dropdownMenuContentVariants,\n dropdownMenuIndicatorWrapperVariants,\n dropdownMenuItemVariants,\n dropdownMenuLabelVariants,\n dropdownMenuRadioItemVariants,\n dropdownMenuSeparatorVariants,\n dropdownMenuShortcutVariants,\n dropdownMenuSubContentVariants,\n dropdownMenuSubTriggerVariants,\n} from \"./DropdownMenu.variants\"\n\n/**\n * DropdownMenu - A menu that appears when triggered by a button or other element.\n *\n * Built on top of Radix UI DropdownMenu primitive with additional styling.\n *\n * @example\n * <DropdownMenu>\n * <DropdownMenuTrigger>Open Menu</DropdownMenuTrigger>\n * <DropdownMenuContent>\n * <DropdownMenuItem>Item 1</DropdownMenuItem>\n * <DropdownMenuItem>Item 2</DropdownMenuItem>\n * </DropdownMenuContent>\n * </DropdownMenu>\n */\nfunction DropdownMenu({ ...props }: DropdownMenuProps) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\n/**\n * DropdownMenuPortal - Renders dropdown menu content in a portal.\n */\nfunction DropdownMenuPortal({ ...props }: DropdownMenuPortalProps) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\n/**\n * DropdownMenuTrigger - Button that opens the dropdown menu.\n */\nfunction DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuContent - Main content container for the dropdown menu.\n */\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: DropdownMenuContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n className={cn(dropdownMenuContentVariants(), className)}\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\n/**\n * DropdownMenuGroup - Groups related menu items together.\n */\nfunction DropdownMenuGroup({ ...props }: DropdownMenuGroupProps) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\n/**\n * DropdownMenuItem - An interactive menu item.\n *\n * Supports inset layout and destructive variant.\n */\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: DropdownMenuItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(dropdownMenuItemVariants({ inset, variant }), className)}\n data-inset={inset}\n data-slot=\"dropdown-menu-item\"\n data-variant={variant}\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuCheckboxItem - A menu item that can be checked/unchecked.\n */\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: DropdownMenuCheckboxItemProps) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n checked={checked ?? false}\n className={cn(dropdownMenuCheckboxItemVariants(), className)}\n data-slot=\"dropdown-menu-checkbox-item\"\n {...props}\n >\n <span className={cn(dropdownMenuIndicatorWrapperVariants())}>\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-[var(--dropdown-menu-checkbox-size)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\n/**\n * DropdownMenuRadioGroup - Groups radio items together.\n */\nfunction DropdownMenuRadioGroup({ ...props }: DropdownMenuRadioGroupProps) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuRadioItem - A radio menu item within a radio group.\n */\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: DropdownMenuRadioItemProps) {\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(dropdownMenuRadioItemVariants(), className)}\n data-slot=\"dropdown-menu-radio-item\"\n {...props}\n >\n <span className={cn(dropdownMenuIndicatorWrapperVariants())}>\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-[var(--dropdown-menu-radio-size)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\n/**\n * DropdownMenuLabel - A non-interactive label for menu sections.\n */\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n className={cn(dropdownMenuLabelVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"dropdown-menu-label\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuSearch - Campo de busca inline no topo do menu\n * (Figma DropdownMenu Type=Search, 1136:2909: ícone + input + atalho).\n *\n * Teclas são retidas (exceto Escape) pra digitação não acionar o\n * typeahead/seleção do Radix.\n */\nfunction DropdownMenuSearch({\n className,\n placeholder = \"Procurar\",\n shortcut,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"type\"> & { shortcut?: React.ReactNode }) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 px-2 py-1.5 text-sm\",\n className\n )}\n data-slot=\"dropdown-menu-search\"\n onKeyDown={(event) => {\n if (event.key !== \"Escape\") event.stopPropagation()\n }}\n >\n <SearchIcon\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n <input\n className=\"min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n data-slot=\"dropdown-menu-search-input\"\n placeholder={placeholder}\n type=\"text\"\n {...props}\n />\n {shortcut}\n </div>\n )\n}\n\n/**\n * DropdownMenuSeparator - A visual separator between menu sections.\n */\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: DropdownMenuSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n className={cn(dropdownMenuSeparatorVariants(), className)}\n data-slot=\"dropdown-menu-separator\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuShortcut - Displays keyboard shortcut hints.\n */\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: DropdownMenuShortcutProps) {\n return (\n <span\n className={cn(dropdownMenuShortcutVariants(), className)}\n data-slot=\"dropdown-menu-shortcut\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuSub - Container for nested submenus.\n */\nfunction DropdownMenuSub({ ...props }: DropdownMenuSubProps) {\n return (\n <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n )\n}\n\n/**\n * DropdownMenuSubTrigger - Trigger for opening a submenu.\n *\n * Includes a chevron icon indicator.\n */\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: DropdownMenuSubTriggerProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n className={cn(dropdownMenuSubTriggerVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"dropdown-menu-sub-trigger\"\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\n/**\n * DropdownMenuSubContent - Content container for submenus.\n */\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: DropdownMenuSubContentProps) {\n return (\n <DropdownMenuPrimitive.SubContent\n className={cn(dropdownMenuSubContentVariants(), className)}\n data-slot=\"dropdown-menu-sub-content\"\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSearch,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Button } from './chunk-L4OQ6BJ5.js';
1
+ import { Button } from './chunk-N3DBRKUS.js';
2
2
  import { cn } from './chunk-RVAYDRMA.js';
3
3
  import { ChevronLeft, ChevronRight, Clock, MapPin } from 'lucide-react';
4
4
  import * as React from 'react';
@@ -1058,5 +1058,5 @@ function EventCalendar({
1058
1058
  }
1059
1059
 
1060
1060
  export { EventCalendar, EventCalendarAgenda, EventCalendarDay, EventCalendarEvent, EventCalendarHeader, EventCalendarMonth, EventCalendarWeek, eventCalendarAgendaItemVariants, eventCalendarCellVariants, eventCalendarDayNumberVariants, eventCalendarEventVariants, eventCalendarHeaderVariants, eventCalendarTimeSlotVariants, eventCalendarVariants, eventCalendarViewButtonVariants, getEventVariant };
1061
- //# sourceMappingURL=chunk-P4WMDGAQ.js.map
1062
- //# sourceMappingURL=chunk-P4WMDGAQ.js.map
1061
+ //# sourceMappingURL=chunk-G5JO3Q3K.js.map
1062
+ //# sourceMappingURL=chunk-G5JO3Q3K.js.map