@banzamel/mineralui 1.6.2 → 1.6.3

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 (441) hide show
  1. package/README.md +1 -1
  2. package/dist/{MAvatar-CnBVN71i.js → MAvatar-BHASnoyu.js} +5 -5
  3. package/dist/{MAvatar-CnBVN71i.js.map → MAvatar-BHASnoyu.js.map} +1 -1
  4. package/dist/MAvatar-BVJh6kgW.cjs +2 -0
  5. package/dist/{MAvatar-DGEQqUss.cjs.map → MAvatar-BVJh6kgW.cjs.map} +1 -1
  6. package/dist/MBadge-B4x-Lx7e.cjs +2 -0
  7. package/dist/{MBadge-DcIPfPH1.cjs.map → MBadge-B4x-Lx7e.cjs.map} +1 -1
  8. package/dist/{MBadge-C_vK2JdM.js → MBadge-_BggwkrM.js} +3 -3
  9. package/dist/{MBadge-C_vK2JdM.js.map → MBadge-_BggwkrM.js.map} +1 -1
  10. package/dist/MButton-DrkVdRDy.cjs +2 -0
  11. package/dist/{MButton-LUNWBBOV.cjs.map → MButton-DrkVdRDy.cjs.map} +1 -1
  12. package/dist/{MButton-BpSZUhpY.js → MButton-y9qXhhGt.js} +4 -4
  13. package/dist/{MButton-BpSZUhpY.js.map → MButton-y9qXhhGt.js.map} +1 -1
  14. package/dist/{MCheckbox-CNz73bQC.js → MCheckbox-B-nT2OBE.js} +3 -3
  15. package/dist/{MCheckbox-CNz73bQC.js.map → MCheckbox-B-nT2OBE.js.map} +1 -1
  16. package/dist/MCheckbox-C40ESQRe.cjs +2 -0
  17. package/dist/{MCheckbox-PzknJeM2.cjs.map → MCheckbox-C40ESQRe.cjs.map} +1 -1
  18. package/dist/{MCookieBootstrap-DSOT4FQo.cjs → MCookieBootstrap-3-wyz3Dk.cjs} +1 -1
  19. package/dist/{MCookieBootstrap-DSOT4FQo.cjs.map → MCookieBootstrap-3-wyz3Dk.cjs.map} +1 -1
  20. package/dist/{MCookieBootstrap-CNYLvKjW.js → MCookieBootstrap-CGvYxIK8.js} +1 -1
  21. package/dist/{MCookieBootstrap-CNYLvKjW.js.map → MCookieBootstrap-CGvYxIK8.js.map} +1 -1
  22. package/dist/MDataTable-Bx7W-Ari.cjs +2 -0
  23. package/dist/{MDataTable-Bq6UoNJX.cjs.map → MDataTable-Bx7W-Ari.cjs.map} +1 -1
  24. package/dist/{MDataTable-AH5Tnirs.js → MDataTable-ByvNQqNP.js} +6 -6
  25. package/dist/{MDataTable-AH5Tnirs.js.map → MDataTable-ByvNQqNP.js.map} +1 -1
  26. package/dist/MDrawer-DFkrFrnD.cjs +2 -0
  27. package/dist/{MDrawer-DRqMsjMt.cjs.map → MDrawer-DFkrFrnD.cjs.map} +1 -1
  28. package/dist/{MDrawer-C08QXXC4.js → MDrawer-W2WQs1sM.js} +5 -5
  29. package/dist/{MDrawer-C08QXXC4.js.map → MDrawer-W2WQs1sM.js.map} +1 -1
  30. package/dist/MDropdownMenu-BmfXSc46.cjs +2 -0
  31. package/dist/{MDropdownMenu-CymCQqyP.cjs.map → MDropdownMenu-BmfXSc46.cjs.map} +1 -1
  32. package/dist/{MDropdownMenu-CMnBt-wO.js → MDropdownMenu-D79Cm5aS.js} +4 -4
  33. package/dist/{MDropdownMenu-CMnBt-wO.js.map → MDropdownMenu-D79Cm5aS.js.map} +1 -1
  34. package/dist/MGalleryIllustration-BB3DoCl_.cjs +2 -0
  35. package/dist/{MGalleryIllustration-BHtRFizZ.cjs.map → MGalleryIllustration-BB3DoCl_.cjs.map} +1 -1
  36. package/dist/{MGalleryIllustration-DhOtXwhC.js → MGalleryIllustration-D7CVMSwO.js} +2 -2
  37. package/dist/{MGalleryIllustration-DhOtXwhC.js.map → MGalleryIllustration-D7CVMSwO.js.map} +1 -1
  38. package/dist/MHeading-BhCNoJeW.cjs +2 -0
  39. package/dist/{MHeading-DHT1gORD.cjs.map → MHeading-BhCNoJeW.cjs.map} +1 -1
  40. package/dist/{MHeading-BvpWyvjj.js → MHeading-MPh8Qm9q.js} +4 -4
  41. package/dist/{MHeading-BvpWyvjj.js.map → MHeading-MPh8Qm9q.js.map} +1 -1
  42. package/dist/MI18nProvider-B2sE0x5D.cjs +2 -0
  43. package/dist/{MI18nProvider-Bml7Vs2-.cjs.map → MI18nProvider-B2sE0x5D.cjs.map} +1 -1
  44. package/dist/{MI18nProvider-BRZxEMqL.js → MI18nProvider-VH14CI8u.js} +1 -1
  45. package/dist/{MI18nProvider-BRZxEMqL.js.map → MI18nProvider-VH14CI8u.js.map} +1 -1
  46. package/dist/MImage-L_zgfWRY.cjs +2 -0
  47. package/dist/{MImage-CxeuH-cT.cjs.map → MImage-L_zgfWRY.cjs.map} +1 -1
  48. package/dist/{MImage-BQs91GK-.js → MImage-gwFphZk2.js} +9 -9
  49. package/dist/{MImage-BQs91GK-.js.map → MImage-gwFphZk2.js.map} +1 -1
  50. package/dist/MInline-CHrh3PHH.cjs +2 -0
  51. package/dist/{MInline-D9p9Sazp.cjs.map → MInline-CHrh3PHH.cjs.map} +1 -1
  52. package/dist/{MInline-DA_ehefx.js → MInline-CoMhfX5V.js} +4 -4
  53. package/dist/{MInline-DA_ehefx.js.map → MInline-CoMhfX5V.js.map} +1 -1
  54. package/dist/MInput-DYqV3-rQ.cjs +2 -0
  55. package/dist/{MInput-DDZ71Qqn.cjs.map → MInput-DYqV3-rQ.cjs.map} +1 -1
  56. package/dist/{MInput-l3MY93Su.js → MInput-bzSwK880.js} +6 -6
  57. package/dist/{MInput-l3MY93Su.js.map → MInput-bzSwK880.js.map} +1 -1
  58. package/dist/MInputCVC-5NkYSxV8.cjs +2 -0
  59. package/dist/{MInputCVC-Sp2uZ5aO.cjs.map → MInputCVC-5NkYSxV8.cjs.map} +1 -1
  60. package/dist/{MInputCVC-CN91scmw.js → MInputCVC-BHpMHTO5.js} +5 -5
  61. package/dist/{MInputCVC-CN91scmw.js.map → MInputCVC-BHpMHTO5.js.map} +1 -1
  62. package/dist/MInputSearch-DfoenJIm.cjs +2 -0
  63. package/dist/{MInputSearch-30o4bcDC.cjs.map → MInputSearch-DfoenJIm.cjs.map} +1 -1
  64. package/dist/{MInputSearch-CdPfJ4v_.js → MInputSearch-Dh4C3Tz5.js} +4 -4
  65. package/dist/{MInputSearch-CdPfJ4v_.js.map → MInputSearch-Dh4C3Tz5.js.map} +1 -1
  66. package/dist/MLink-CY45UR_j.cjs +2 -0
  67. package/dist/{MLink-U_wAUuz1.cjs.map → MLink-CY45UR_j.cjs.map} +1 -1
  68. package/dist/{MLink-CRUWGES-.js → MLink-rFKN1mcM.js} +3 -3
  69. package/dist/{MLink-CRUWGES-.js.map → MLink-rFKN1mcM.js.map} +1 -1
  70. package/dist/{MModal-CHSo5gKE.js → MModal-BDTAgnrm.js} +4 -4
  71. package/dist/{MModal-CHSo5gKE.js.map → MModal-BDTAgnrm.js.map} +1 -1
  72. package/dist/MModal-DT5BBgNZ.cjs +2 -0
  73. package/dist/{MModal-Czy-rR--.cjs.map → MModal-DT5BBgNZ.cjs.map} +1 -1
  74. package/dist/{MPagination-DdT1uNzD.js → MPagination-CTnaW5AW.js} +4 -4
  75. package/dist/{MPagination-DdT1uNzD.js.map → MPagination-CTnaW5AW.js.map} +1 -1
  76. package/dist/MPagination-CZEJMJzZ.cjs +2 -0
  77. package/dist/{MPagination-73z0sQvf.cjs.map → MPagination-CZEJMJzZ.cjs.map} +1 -1
  78. package/dist/MPopover-B4IUb9f0.cjs +2 -0
  79. package/dist/{MPopover-BW23_1Dl.cjs.map → MPopover-B4IUb9f0.cjs.map} +1 -1
  80. package/dist/{MPopover-3tjz5lKh.js → MPopover-Cqz5TsHg.js} +3 -3
  81. package/dist/{MPopover-3tjz5lKh.js.map → MPopover-Cqz5TsHg.js.map} +1 -1
  82. package/dist/{MPortal-Dqlkh3hw.js → MPortal-Ba2Sxset.js} +1 -1
  83. package/dist/{MPortal-Dqlkh3hw.js.map → MPortal-Ba2Sxset.js.map} +1 -1
  84. package/dist/MPortal-Bi24xTGW.cjs +2 -0
  85. package/dist/{MPortal-DE3pL2Xl.cjs.map → MPortal-Bi24xTGW.cjs.map} +1 -1
  86. package/dist/MQrCode-ByfmG33y.cjs +2 -0
  87. package/dist/{MQrCode-CMoru4dD.cjs.map → MQrCode-ByfmG33y.cjs.map} +1 -1
  88. package/dist/{MQrCode-DK5-SBhN.js → MQrCode-CCtTkkv9.js} +4 -4
  89. package/dist/{MQrCode-DK5-SBhN.js.map → MQrCode-CCtTkkv9.js.map} +1 -1
  90. package/dist/MSkeleton-5j1h9s95.cjs +2 -0
  91. package/dist/{MSkeleton-B0Mxe3L7.cjs.map → MSkeleton-5j1h9s95.cjs.map} +1 -1
  92. package/dist/{MSkeleton-Bqq_XJn8.js → MSkeleton-DGhtNmpI.js} +4 -4
  93. package/dist/{MSkeleton-Bqq_XJn8.js.map → MSkeleton-DGhtNmpI.js.map} +1 -1
  94. package/dist/{MSlider-ByVuoFFc.js → MSlider-5141rKeH.js} +2 -2
  95. package/dist/{MSlider-ByVuoFFc.js.map → MSlider-5141rKeH.js.map} +1 -1
  96. package/dist/MSlider-Ch3VjAJC.cjs +2 -0
  97. package/dist/{MSlider-sH2Vt9Lw.cjs.map → MSlider-Ch3VjAJC.cjs.map} +1 -1
  98. package/dist/MSparkline-B6qpt5WM.cjs +2 -0
  99. package/dist/{MSparkline-B-ld7hJu.cjs.map → MSparkline-B6qpt5WM.cjs.map} +1 -1
  100. package/dist/{MSparkline-DbtdM0W6.js → MSparkline-voNWOLNz.js} +2 -2
  101. package/dist/{MSparkline-DbtdM0W6.js.map → MSparkline-voNWOLNz.js.map} +1 -1
  102. package/dist/MStack-Bh-R2opf.cjs +2 -0
  103. package/dist/{MStack-Cy2GplIA.cjs.map → MStack-Bh-R2opf.cjs.map} +1 -1
  104. package/dist/{MStack-BWarX5O9.js → MStack-CSaEbepM.js} +4 -4
  105. package/dist/{MStack-BWarX5O9.js.map → MStack-CSaEbepM.js.map} +1 -1
  106. package/dist/{MSubText-C9VizSn9.js → MSubText-BFdfBlpS.js} +4 -4
  107. package/dist/{MSubText-C9VizSn9.js.map → MSubText-BFdfBlpS.js.map} +1 -1
  108. package/dist/MSubText-C-70zn0m.cjs +2 -0
  109. package/dist/{MSubText-DP9WYlwz.cjs.map → MSubText-C-70zn0m.cjs.map} +1 -1
  110. package/dist/MSurface-CpiV1-7f.cjs +2 -0
  111. package/dist/{MSurface-C467dVMQ.cjs.map → MSurface-CpiV1-7f.cjs.map} +1 -1
  112. package/dist/{MSurface-DfZ1Zy1-.js → MSurface-DJYSftdM.js} +4 -4
  113. package/dist/{MSurface-DfZ1Zy1-.js.map → MSurface-DJYSftdM.js.map} +1 -1
  114. package/dist/{MTag-N-tYZ915.js → MTag-CH5nMbm7.js} +5 -5
  115. package/dist/{MTag-N-tYZ915.js.map → MTag-CH5nMbm7.js.map} +1 -1
  116. package/dist/MTag-Y4Tswmli.cjs +2 -0
  117. package/dist/{MTag-DXqkBvqx.cjs.map → MTag-Y4Tswmli.cjs.map} +1 -1
  118. package/dist/MText-DEJddMB5.cjs +2 -0
  119. package/dist/{MText-COzub3y4.cjs.map → MText-DEJddMB5.cjs.map} +1 -1
  120. package/dist/{MText-B7_HjPym.js → MText-DcB1GAt-.js} +4 -4
  121. package/dist/{MText-B7_HjPym.js.map → MText-DcB1GAt-.js.map} +1 -1
  122. package/dist/{MTimeAgo-D1G2yovw.js → MTimeAgo-C4p80NvI.js} +4 -4
  123. package/dist/{MTimeAgo-D1G2yovw.js.map → MTimeAgo-C4p80NvI.js.map} +1 -1
  124. package/dist/MTimeAgo-DxZGVo2Y.cjs +2 -0
  125. package/dist/{MTimeAgo-DWwXs48z.cjs.map → MTimeAgo-DxZGVo2Y.cjs.map} +1 -1
  126. package/dist/MToggle-C8vYRzpC.cjs +2 -0
  127. package/dist/{MToggle-Cm3f6gm4.cjs.map → MToggle-C8vYRzpC.cjs.map} +1 -1
  128. package/dist/{MToggle-D0DrQirB.js → MToggle-Dt1Ctr5e.js} +3 -3
  129. package/dist/{MToggle-D0DrQirB.js.map → MToggle-Dt1Ctr5e.js.map} +1 -1
  130. package/dist/{MTooltip-w6Aj044c.js → MTooltip-C43aUKMP.js} +3 -3
  131. package/dist/{MTooltip-w6Aj044c.js.map → MTooltip-C43aUKMP.js.map} +1 -1
  132. package/dist/MTooltip-kSTMMpvu.cjs +2 -0
  133. package/dist/{MTooltip-C3PeHgV3.cjs.map → MTooltip-kSTMMpvu.cjs.map} +1 -1
  134. package/dist/arduino-CXUo7Bjy.cjs +2 -0
  135. package/dist/arduino-CXUo7Bjy.cjs.map +1 -0
  136. package/dist/arduino-Eif5KI8O.js +261 -0
  137. package/dist/arduino-Eif5KI8O.js.map +1 -0
  138. package/dist/bash-CCF_TYbb.js +171 -0
  139. package/dist/bash-CCF_TYbb.js.map +1 -0
  140. package/dist/bash-W4h3o_nx.cjs +2 -0
  141. package/dist/bash-W4h3o_nx.cjs.map +1 -0
  142. package/dist/c-DVgkp6T3.js +178 -0
  143. package/dist/c-DVgkp6T3.js.map +1 -0
  144. package/dist/c-Dm60JY-W.cjs +2 -0
  145. package/dist/c-Dm60JY-W.cjs.map +1 -0
  146. package/dist/cards-BiYdorB0.cjs +2 -0
  147. package/dist/{cards-B75QM9JW.cjs.map → cards-BiYdorB0.cjs.map} +1 -1
  148. package/dist/{cards-BKi8MxNx.js → cards-fn61xD_5.js} +17 -17
  149. package/dist/{cards-BKi8MxNx.js.map → cards-fn61xD_5.js.map} +1 -1
  150. package/dist/cards.cjs +1 -1
  151. package/dist/cards.js +2 -2
  152. package/dist/{cn-DYFxgzi2.cjs → cn-CU5TNITO.cjs} +1 -1
  153. package/dist/{cn-DYFxgzi2.cjs.map → cn-CU5TNITO.cjs.map} +1 -1
  154. package/dist/{cn-CUSXNnjF.js → cn-YER3QsV1.js} +1 -1
  155. package/dist/{cn-CUSXNnjF.js.map → cn-YER3QsV1.js.map} +1 -1
  156. package/dist/controls-C5PtrGZf.cjs +2 -0
  157. package/dist/{controls-B7wV_kjJ.cjs.map → controls-C5PtrGZf.cjs.map} +1 -1
  158. package/dist/{controls-BEi-0mf4.js → controls-DCtMOoQe.js} +6 -6
  159. package/dist/{controls-BEi-0mf4.js.map → controls-DCtMOoQe.js.map} +1 -1
  160. package/dist/controls.cjs +1 -1
  161. package/dist/controls.js +5 -5
  162. package/dist/cookie-consent-bootstrap.cjs +1 -1
  163. package/dist/cookie-consent-bootstrap.js +1 -1
  164. package/dist/core-AKWkE8Bx.cjs +4 -0
  165. package/dist/core-AKWkE8Bx.cjs.map +1 -0
  166. package/dist/core-CB9-PTLK.js +854 -0
  167. package/dist/core-CB9-PTLK.js.map +1 -0
  168. package/dist/cpp-DyKt1H8n.cjs +2 -0
  169. package/dist/cpp-DyKt1H8n.cjs.map +1 -0
  170. package/dist/cpp-OOenfB17.js +227 -0
  171. package/dist/cpp-OOenfB17.js.map +1 -0
  172. package/dist/{creditCards-BB11bW7D.js → creditCards-CCysEwry.js} +1 -1
  173. package/dist/{creditCards-BB11bW7D.js.map → creditCards-CCysEwry.js.map} +1 -1
  174. package/dist/{creditCards-198KJN0s.cjs → creditCards-ljs044xt.cjs} +1 -1
  175. package/dist/{creditCards-198KJN0s.cjs.map → creditCards-ljs044xt.cjs.map} +1 -1
  176. package/dist/css-DxVbPJLu.cjs +2 -0
  177. package/dist/css-DxVbPJLu.cjs.map +1 -0
  178. package/dist/css-u5LSEAra.js +142 -0
  179. package/dist/css-u5LSEAra.js.map +1 -0
  180. package/dist/data-Bw9FSZ80.cjs +2 -0
  181. package/dist/{data-DHkccnSN.cjs.map → data-Bw9FSZ80.cjs.map} +1 -1
  182. package/dist/{data-DKrj_Hx6.js → data-CMSIr_Ac.js} +24 -24
  183. package/dist/{data-DKrj_Hx6.js.map → data-CMSIr_Ac.js.map} +1 -1
  184. package/dist/data.cjs +1 -1
  185. package/dist/data.js +3 -3
  186. package/dist/{dateUtils-Ben8lfvV.js → dateUtils-CUY6CRCf.js} +1 -1
  187. package/dist/{dateUtils-Ben8lfvV.js.map → dateUtils-CUY6CRCf.js.map} +1 -1
  188. package/dist/{dateUtils-vT9rOf1J.cjs → dateUtils-Dq1vaA-D.cjs} +1 -1
  189. package/dist/{dateUtils-vT9rOf1J.cjs.map → dateUtils-Dq1vaA-D.cjs.map} +1 -1
  190. package/dist/display-BafEcBK_.cjs +3 -0
  191. package/dist/display-BafEcBK_.cjs.map +1 -0
  192. package/dist/{display-rQqBLjAN.js → display-Zxj9YHu_.js} +196 -179
  193. package/dist/display-Zxj9YHu_.js.map +1 -0
  194. package/dist/display.cjs +1 -1
  195. package/dist/display.js +3 -3
  196. package/dist/{dropdowns-BKnXb1XJ.js → dropdowns-Bw8obCYl.js} +15 -15
  197. package/dist/{dropdowns-BKnXb1XJ.js.map → dropdowns-Bw8obCYl.js.map} +1 -1
  198. package/dist/dropdowns-DN7j1HhE.cjs +2 -0
  199. package/dist/{dropdowns-cRrLY8FG.cjs.map → dropdowns-DN7j1HhE.cjs.map} +1 -1
  200. package/dist/dropdowns.cjs +1 -1
  201. package/dist/dropdowns.js +1 -1
  202. package/dist/{feedback-CIXmm0XT.js → feedback-8H3bmQw5.js} +18 -18
  203. package/dist/{feedback-CIXmm0XT.js.map → feedback-8H3bmQw5.js.map} +1 -1
  204. package/dist/feedback-Di0SEpRe.cjs +2 -0
  205. package/dist/{feedback-DiMptPJy.cjs.map → feedback-Di0SEpRe.cjs.map} +1 -1
  206. package/dist/feedback.cjs +1 -1
  207. package/dist/feedback.js +6 -6
  208. package/dist/form-BYz99Py5.cjs +2 -0
  209. package/dist/{form-DABPazeN.cjs.map → form-BYz99Py5.cjs.map} +1 -1
  210. package/dist/{form-DZJxDW59.js → form-JHlvtP9r.js} +2 -2
  211. package/dist/{form-DZJxDW59.js.map → form-JHlvtP9r.js.map} +1 -1
  212. package/dist/form.cjs +1 -1
  213. package/dist/form.js +1 -1
  214. package/dist/{formatters-CauWlsnM.cjs → formatters-CNjg_h7-.cjs} +1 -1
  215. package/dist/{formatters-CauWlsnM.cjs.map → formatters-CNjg_h7-.cjs.map} +1 -1
  216. package/dist/{formatters-Doqdu_w1.js → formatters-T0vvjMtB.js} +1 -1
  217. package/dist/{formatters-Doqdu_w1.js.map → formatters-T0vvjMtB.js.map} +1 -1
  218. package/dist/{frameworkTexts-DzujbRBe.js → frameworkTexts-CvxcWRXp.js} +2 -2
  219. package/dist/{frameworkTexts-DzujbRBe.js.map → frameworkTexts-CvxcWRXp.js.map} +1 -1
  220. package/dist/frameworkTexts-abkS5XZK.cjs +2 -0
  221. package/dist/{frameworkTexts-DPX5T2x3.cjs.map → frameworkTexts-abkS5XZK.cjs.map} +1 -1
  222. package/dist/i18n.cjs +1 -1
  223. package/dist/i18n.js +1 -1
  224. package/dist/{icons-DlNO04xH.js → icons-CfpYxnfg.js} +1 -1
  225. package/dist/{icons-DlNO04xH.js.map → icons-CfpYxnfg.js.map} +1 -1
  226. package/dist/icons-DWMgDKgt.cjs +2 -0
  227. package/dist/{icons-BJCV7W0L.cjs.map → icons-DWMgDKgt.cjs.map} +1 -1
  228. package/dist/icons.cjs +1 -1
  229. package/dist/icons.js +1 -1
  230. package/dist/illustrations.cjs +1 -1
  231. package/dist/illustrations.js +1 -1
  232. package/dist/index.cjs +1 -1
  233. package/dist/index.js +57 -57
  234. package/dist/{inputs-CmpB6eyB.js → inputs-Bcwd_UTr.js} +12 -12
  235. package/dist/{inputs-CmpB6eyB.js.map → inputs-Bcwd_UTr.js.map} +1 -1
  236. package/dist/inputs-FP545Yri.cjs +2 -0
  237. package/dist/{inputs-EZBwxk7j.cjs.map → inputs-FP545Yri.cjs.map} +1 -1
  238. package/dist/inputs.cjs +1 -1
  239. package/dist/inputs.js +4 -4
  240. package/dist/javascript-CXjsxb-I.js +438 -0
  241. package/dist/javascript-CXjsxb-I.js.map +1 -0
  242. package/dist/javascript-CzjCTQxn.cjs +2 -0
  243. package/dist/javascript-CzjCTQxn.cjs.map +1 -0
  244. package/dist/json-9Qq5guN0.cjs +2 -0
  245. package/dist/json-9Qq5guN0.cjs.map +1 -0
  246. package/dist/json-CyV5VF8D.js +38 -0
  247. package/dist/json-CyV5VF8D.js.map +1 -0
  248. package/dist/{layout-D72Y7VcW.js → layout-BpEnTocp.js} +11 -11
  249. package/dist/{layout-D72Y7VcW.js.map → layout-BpEnTocp.js.map} +1 -1
  250. package/dist/layout-rtlHrjDb.cjs +2 -0
  251. package/dist/{layout-DZiWboju.cjs.map → layout-rtlHrjDb.cjs.map} +1 -1
  252. package/dist/layout.cjs +1 -1
  253. package/dist/layout.js +5 -5
  254. package/dist/{layoutProps-Ck4VtGm9.cjs → layoutProps-B8y2XwHy.cjs} +1 -1
  255. package/dist/{layoutProps-Ck4VtGm9.cjs.map → layoutProps-B8y2XwHy.cjs.map} +1 -1
  256. package/dist/{layoutProps-Cl6d1KmH.js → layoutProps-CE5-ghKw.js} +1 -1
  257. package/dist/{layoutProps-Cl6d1KmH.js.map → layoutProps-CE5-ghKw.js.map} +1 -1
  258. package/dist/{licensing-Cbpi1toF.js → licensing-CwzqhHH9.js} +1 -1
  259. package/dist/{licensing-Cbpi1toF.js.map → licensing-CwzqhHH9.js.map} +1 -1
  260. package/dist/licensing-ezfo7ZTh.cjs +2 -0
  261. package/dist/{licensing-JchPJhVY.cjs.map → licensing-ezfo7ZTh.cjs.map} +1 -1
  262. package/dist/locale-CZyqh3ON.cjs +2 -0
  263. package/dist/{locale-DIwV_GfN.cjs.map → locale-CZyqh3ON.cjs.map} +1 -1
  264. package/dist/{locale-BNyzqXAU.js → locale-JX_gX03k.js} +1 -1
  265. package/dist/{locale-BNyzqXAU.js.map → locale-JX_gX03k.js.map} +1 -1
  266. package/dist/{media-BlGY91Na.js → media-C3M0npGW.js} +9 -9
  267. package/dist/{media-BlGY91Na.js.map → media-C3M0npGW.js.map} +1 -1
  268. package/dist/media-ClgUKDca.cjs +2 -0
  269. package/dist/{media-p643cb02.cjs.map → media-ClgUKDca.cjs.map} +1 -1
  270. package/dist/media.cjs +1 -1
  271. package/dist/media.js +3 -3
  272. package/dist/{overlays-51pBvlf9.js → overlays-CGlqD3rl.js} +7 -7
  273. package/dist/{overlays-51pBvlf9.js.map → overlays-CGlqD3rl.js.map} +1 -1
  274. package/dist/overlays-DrSGzbbA.cjs +2 -0
  275. package/dist/{overlays-8htlWp07.cjs.map → overlays-DrSGzbbA.cjs.map} +1 -1
  276. package/dist/overlays.cjs +1 -1
  277. package/dist/overlays.js +5 -5
  278. package/dist/php-Br75m0HU.cjs +3 -0
  279. package/dist/php-Br75m0HU.cjs.map +1 -0
  280. package/dist/php-deNqvHeU.js +296 -0
  281. package/dist/php-deNqvHeU.js.map +1 -0
  282. package/dist/primitives.cjs +1 -1
  283. package/dist/primitives.js +2 -2
  284. package/dist/{relativeTime-BqCuaBqb.js → relativeTime-Cr-NVzij.js} +1 -1
  285. package/dist/{relativeTime-BqCuaBqb.js.map → relativeTime-Cr-NVzij.js.map} +1 -1
  286. package/dist/{relativeTime-DUbW4O44.cjs → relativeTime-DgYBUaVm.cjs} +1 -1
  287. package/dist/{relativeTime-DUbW4O44.cjs.map → relativeTime-DgYBUaVm.cjs.map} +1 -1
  288. package/dist/style-runtime.cjs +1 -1
  289. package/dist/style-runtime.js +1 -1
  290. package/dist/styles.css +1 -1
  291. package/dist/theme-CgS-bND3.cjs +2 -0
  292. package/dist/{theme-Bnwe-wvr.cjs.map → theme-CgS-bND3.cjs.map} +1 -1
  293. package/dist/{theme-KYwqDZxJ.js → theme-D_f-cmSA.js} +1 -1
  294. package/dist/{theme-KYwqDZxJ.js.map → theme-D_f-cmSA.js.map} +1 -1
  295. package/dist/theme.cjs +1 -1
  296. package/dist/theme.js +1 -1
  297. package/dist/typescript-CRgqVaw_.cjs +2 -0
  298. package/dist/typescript-CRgqVaw_.cjs.map +1 -0
  299. package/dist/typescript-jNfCpQvl.js +523 -0
  300. package/dist/typescript-jNfCpQvl.js.map +1 -0
  301. package/dist/{typography-FCWA0UOB.js → typography-BSBsn0f8.js} +3 -3
  302. package/dist/{typography-FCWA0UOB.js.map → typography-BSBsn0f8.js.map} +1 -1
  303. package/dist/typography-Zo4Usx9I.cjs +2 -0
  304. package/dist/{typography-D1s-QFlb.cjs.map → typography-Zo4Usx9I.cjs.map} +1 -1
  305. package/dist/typography.cjs +1 -1
  306. package/dist/typography.js +5 -5
  307. package/dist/{useGhostText-BJZKdZpw.js → useGhostText-DG0bzcao.js} +1 -1
  308. package/dist/{useGhostText-BJZKdZpw.js.map → useGhostText-DG0bzcao.js.map} +1 -1
  309. package/dist/useGhostText-tv1LiSPs.cjs +2 -0
  310. package/dist/{useGhostText-D1DbIs-n.cjs.map → useGhostText-tv1LiSPs.cjs.map} +1 -1
  311. package/dist/useInteractionEffect-D1ZdNbKU.cjs +2 -0
  312. package/dist/{useInteractionEffect-CYHGHV1e.cjs.map → useInteractionEffect-D1ZdNbKU.cjs.map} +1 -1
  313. package/dist/{useInteractionEffect-ClkU3aH5.js → useInteractionEffect-DtpbVd77.js} +1 -1
  314. package/dist/{useInteractionEffect-ClkU3aH5.js.map → useInteractionEffect-DtpbVd77.js.map} +1 -1
  315. package/dist/useKeyboardNav-CkIlAagq.cjs +2 -0
  316. package/dist/{useKeyboardNav-BoibrRUF.cjs.map → useKeyboardNav-CkIlAagq.cjs.map} +1 -1
  317. package/dist/{useKeyboardNav-CBOdeTFM.js → useKeyboardNav-iEXOdEMB.js} +1 -1
  318. package/dist/{useKeyboardNav-CBOdeTFM.js.map → useKeyboardNav-iEXOdEMB.js.map} +1 -1
  319. package/dist/utils.cjs +1 -1
  320. package/dist/utils.js +10 -10
  321. package/dist/{validators-D4aTeaH0.cjs → validators-BeNTD8mf.cjs} +1 -1
  322. package/dist/{validators-D4aTeaH0.cjs.map → validators-BeNTD8mf.cjs.map} +1 -1
  323. package/dist/{validators-YZyyyLvE.js → validators-H8tNxb8O.js} +1 -1
  324. package/dist/{validators-YZyyyLvE.js.map → validators-H8tNxb8O.js.map} +1 -1
  325. package/dist/xml-0Th6YIDv.js +168 -0
  326. package/dist/xml-0Th6YIDv.js.map +1 -0
  327. package/dist/xml-C_ksWBRH.cjs +2 -0
  328. package/dist/xml-C_ksWBRH.cjs.map +1 -0
  329. package/package.json +2 -2
  330. package/dist/MAvatar-DGEQqUss.cjs +0 -2
  331. package/dist/MBadge-DcIPfPH1.cjs +0 -2
  332. package/dist/MButton-LUNWBBOV.cjs +0 -2
  333. package/dist/MCheckbox-PzknJeM2.cjs +0 -2
  334. package/dist/MDataTable-Bq6UoNJX.cjs +0 -2
  335. package/dist/MDrawer-DRqMsjMt.cjs +0 -2
  336. package/dist/MDropdownMenu-CymCQqyP.cjs +0 -2
  337. package/dist/MGalleryIllustration-BHtRFizZ.cjs +0 -2
  338. package/dist/MHeading-DHT1gORD.cjs +0 -2
  339. package/dist/MI18nProvider-Bml7Vs2-.cjs +0 -2
  340. package/dist/MImage-CxeuH-cT.cjs +0 -2
  341. package/dist/MInline-D9p9Sazp.cjs +0 -2
  342. package/dist/MInput-DDZ71Qqn.cjs +0 -2
  343. package/dist/MInputCVC-Sp2uZ5aO.cjs +0 -2
  344. package/dist/MInputSearch-30o4bcDC.cjs +0 -2
  345. package/dist/MLink-U_wAUuz1.cjs +0 -2
  346. package/dist/MModal-Czy-rR--.cjs +0 -2
  347. package/dist/MPagination-73z0sQvf.cjs +0 -2
  348. package/dist/MPopover-BW23_1Dl.cjs +0 -2
  349. package/dist/MPortal-DE3pL2Xl.cjs +0 -2
  350. package/dist/MQrCode-CMoru4dD.cjs +0 -2
  351. package/dist/MSkeleton-B0Mxe3L7.cjs +0 -2
  352. package/dist/MSlider-sH2Vt9Lw.cjs +0 -2
  353. package/dist/MSparkline-B-ld7hJu.cjs +0 -2
  354. package/dist/MStack-Cy2GplIA.cjs +0 -2
  355. package/dist/MSubText-DP9WYlwz.cjs +0 -2
  356. package/dist/MSurface-C467dVMQ.cjs +0 -2
  357. package/dist/MTag-DXqkBvqx.cjs +0 -2
  358. package/dist/MText-COzub3y4.cjs +0 -2
  359. package/dist/MTimeAgo-DWwXs48z.cjs +0 -2
  360. package/dist/MToggle-Cm3f6gm4.cjs +0 -2
  361. package/dist/MTooltip-C3PeHgV3.cjs +0 -2
  362. package/dist/cards-B75QM9JW.cjs +0 -2
  363. package/dist/chunk-350yNsax.cjs +0 -1
  364. package/dist/chunk-efA98nb6.js +0 -13
  365. package/dist/controls-B7wV_kjJ.cjs +0 -2
  366. package/dist/data-DHkccnSN.cjs +0 -2
  367. package/dist/display-DKJ6Hp3A.cjs +0 -3
  368. package/dist/display-DKJ6Hp3A.cjs.map +0 -1
  369. package/dist/display-rQqBLjAN.js.map +0 -1
  370. package/dist/dropdowns-cRrLY8FG.cjs +0 -2
  371. package/dist/feedback-DiMptPJy.cjs +0 -2
  372. package/dist/form-DABPazeN.cjs +0 -2
  373. package/dist/frameworkTexts-DPX5T2x3.cjs +0 -2
  374. package/dist/icons-BJCV7W0L.cjs +0 -2
  375. package/dist/inputs-EZBwxk7j.cjs +0 -2
  376. package/dist/layout-DZiWboju.cjs +0 -2
  377. package/dist/licensing-JchPJhVY.cjs +0 -2
  378. package/dist/locale-DIwV_GfN.cjs +0 -2
  379. package/dist/media-p643cb02.cjs +0 -2
  380. package/dist/overlays-8htlWp07.cjs +0 -2
  381. package/dist/prism-bash-DSVvpDwH.cjs +0 -2
  382. package/dist/prism-bash-DSVvpDwH.cjs.map +0 -1
  383. package/dist/prism-bash-GQKgVScr.js +0 -177
  384. package/dist/prism-bash-GQKgVScr.js.map +0 -1
  385. package/dist/prism-c-DBlZetAm.js +0 -56
  386. package/dist/prism-c-DBlZetAm.js.map +0 -1
  387. package/dist/prism-c-DwJ0sL1f.cjs +0 -2
  388. package/dist/prism-c-DwJ0sL1f.cjs.map +0 -1
  389. package/dist/prism-clike-BHy7LBAZ.cjs +0 -2
  390. package/dist/prism-clike-BHy7LBAZ.cjs.map +0 -1
  391. package/dist/prism-clike-CrtZga9r.js +0 -30
  392. package/dist/prism-clike-CrtZga9r.js.map +0 -1
  393. package/dist/prism-core-DsZQ3wSm.js +0 -299
  394. package/dist/prism-core-DsZQ3wSm.js.map +0 -1
  395. package/dist/prism-core-Z2NDHfPM.cjs +0 -2
  396. package/dist/prism-core-Z2NDHfPM.cjs.map +0 -1
  397. package/dist/prism-cpp-CXyjGEks.cjs +0 -2
  398. package/dist/prism-cpp-CXyjGEks.cjs.map +0 -1
  399. package/dist/prism-cpp-DerVaWjZ.js +0 -65
  400. package/dist/prism-cpp-DerVaWjZ.js.map +0 -1
  401. package/dist/prism-css-Bx_bUmkm.js +0 -57
  402. package/dist/prism-css-Bx_bUmkm.js.map +0 -1
  403. package/dist/prism-css-q8i9Tl0Y.cjs +0 -2
  404. package/dist/prism-css-q8i9Tl0Y.cjs.map +0 -1
  405. package/dist/prism-javascript-CC_WcCH4.cjs +0 -2
  406. package/dist/prism-javascript-CC_WcCH4.cjs.map +0 -1
  407. package/dist/prism-javascript-uSHTlCK6.js +0 -103
  408. package/dist/prism-javascript-uSHTlCK6.js.map +0 -1
  409. package/dist/prism-json-CRpBxccA.js +0 -27
  410. package/dist/prism-json-CRpBxccA.js.map +0 -1
  411. package/dist/prism-json-CvwHQDim.cjs +0 -2
  412. package/dist/prism-json-CvwHQDim.cjs.map +0 -1
  413. package/dist/prism-jsx-CSsxTxi5.js +0 -48
  414. package/dist/prism-jsx-CSsxTxi5.js.map +0 -1
  415. package/dist/prism-jsx-ZJAX6mJe.cjs +0 -2
  416. package/dist/prism-jsx-ZJAX6mJe.cjs.map +0 -1
  417. package/dist/prism-markup-Cc4COxfn.js +0 -118
  418. package/dist/prism-markup-Cc4COxfn.js.map +0 -1
  419. package/dist/prism-markup-RTw80xRC.cjs +0 -2
  420. package/dist/prism-markup-RTw80xRC.cjs.map +0 -1
  421. package/dist/prism-markup-templating-CylI3Gpj.cjs +0 -2
  422. package/dist/prism-markup-templating-CylI3Gpj.cjs.map +0 -1
  423. package/dist/prism-markup-templating-D4w8OHUw.js +0 -41
  424. package/dist/prism-markup-templating-D4w8OHUw.js.map +0 -1
  425. package/dist/prism-php-CMZ7fRp0.cjs +0 -2
  426. package/dist/prism-php-CMZ7fRp0.cjs.map +0 -1
  427. package/dist/prism-php-nJ_CzHXP.js +0 -279
  428. package/dist/prism-php-nJ_CzHXP.js.map +0 -1
  429. package/dist/prism-tsx-CvHlXV3S.cjs +0 -2
  430. package/dist/prism-tsx-CvHlXV3S.cjs.map +0 -1
  431. package/dist/prism-tsx-UlwV29L3.js +0 -10
  432. package/dist/prism-tsx-UlwV29L3.js.map +0 -1
  433. package/dist/prism-typescript-BA7hsZPZ.js +0 -40
  434. package/dist/prism-typescript-BA7hsZPZ.js.map +0 -1
  435. package/dist/prism-typescript-CDAVIXup.cjs +0 -2
  436. package/dist/prism-typescript-CDAVIXup.cjs.map +0 -1
  437. package/dist/theme-Bnwe-wvr.cjs +0 -2
  438. package/dist/typography-D1s-QFlb.cjs +0 -2
  439. package/dist/useGhostText-D1DbIs-n.cjs +0 -2
  440. package/dist/useInteractionEffect-CYHGHV1e.cjs +0 -2
  441. package/dist/useKeyboardNav-BoibrRUF.cjs +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"cards-BKi8MxNx.js","names":[],"sources":["../src/components/cards/MCardPayment/MCardPayment.tsx","../src/components/cards/MCardPaymentMethod/MCardPaymentMethod.tsx","../src/utils/socialPlatforms.tsx","../src/components/cards/MCardBusiness/MCardBusiness.tsx","../src/components/cards/ServiceCardsShared/ServiceCardsShared.tsx","../src/components/cards/MCardOffer/MCardOffer.tsx","../src/components/cards/MCardCourse/MCardCourse.tsx","../src/components/cards/MCardProduct/MCardProduct.tsx","../src/components/cards/MCardEvent/MCardEvent.tsx","../src/components/cards/MCardWidget/MCardWidget.tsx","../src/components/cards/MCardGrid/MCardGrid.tsx","../src/components/cards/MCardFinance/MCardFinance.tsx"],"sourcesContent":["import type {MCardPaymentProps} from './MCardPayment.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands, detectCardBrand} from '../../../utils/creditCards'\nimport './MCardPayment.css'\n\nfunction maskNumber(raw: string): string {\n const digits = raw.replace(/\\D/g, '')\n if (digits.length <= 4) return digits\n const last4 = digits.slice(-4)\n return `\\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 ${last4}`\n}\n\n// Display-only payment card with balance, masked number, holder name and brand badge.\nexport function MCardPayment({\n holder,\n number,\n expiry,\n brand,\n brandIcon,\n balance,\n balanceLabel = 'Current balance',\n color,\n className,\n ...rest\n}: MCardPaymentProps) {\n const detectedDetails = detectCardBrand(number)\n const detected = brand ?? detectedDetails.brand\n const brandDetails = creditCardBrands.find((rule) => rule.brand === detected) ?? detectedDetails\n const masked = maskNumber(number)\n const brandLabel = brandDetails.iconLabel\n\n return (\n <div className={cn('card-payment', color || 'primary', className)} {...rest}>\n {balance !== undefined && (\n <div>\n <p className=\"cp-balance-label\">{balanceLabel}</p>\n <p className=\"cp-balance\">{balance}</p>\n </div>\n )}\n\n <div className=\"cp-row\">\n <span className={cn('cp-brand', !brandIcon && detected)}>{brandIcon ?? brandLabel}</span>\n <span className=\"cp-number\">{masked}</span>\n </div>\n\n <div className=\"cp-details\">\n <div>\n <p className=\"cp-field-label\">MCard holder</p>\n <p className=\"cp-field-value\">{holder}</p>\n </div>\n <div>\n <p className=\"cp-field-label\">Expiration date</p>\n <p className=\"cp-field-value\">{expiry}</p>\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardPaymentMethodProps} from './MCardPaymentMethod.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands} from '../../../utils/creditCards'\nimport {MArrowRightIcon} from '../../../icons'\nimport {MBadge} from '../../feedback'\nimport {MInline} from '../../layout'\nimport {MLink, MText} from '../../typography'\nimport {MInputExpDate} from '../../inputs/MInputExpDate'\nimport {MInputCVC} from '../../inputs/MInputCVC'\nimport './MCardPaymentMethod.css'\n\nfunction resolveBrandLabel(brand: NonNullable<MCardPaymentMethodProps['brand']>) {\n return creditCardBrands.find((item) => item.brand === brand)?.iconLabel ?? 'CARD'\n}\n\nexport function MCardPaymentMethod({\n title = 'Your payment methods',\n actionLabel = 'Change',\n actionHref = '#',\n onAction,\n brand = 'visa',\n brandIcon,\n last4,\n badgeLabel,\n summary,\n helperText = 'All fields are required, unless stated otherwise.',\n expiryLabel = 'Expiration date',\n cvcLabel = 'Security code',\n expiryProps,\n cvcProps,\n color,\n className,\n ...rest\n}: MCardPaymentMethodProps) {\n const expirySummary = expiryProps?.value ?? expiryProps?.defaultValue\n const resolvedBadgeLabel = badgeLabel === undefined ? 'Default' : badgeLabel\n const derivedSummary = expirySummary\n ? `Credit card - Expiration date ${String(expirySummary).replace('/', '.')}`\n : 'Credit card'\n const resolvedSummary = summary === undefined ? derivedSummary : summary\n const brandLabel = resolveBrandLabel(brand)\n const resolvedExpiryProps = {\n clearable: true,\n ...expiryProps,\n }\n\n return (\n <div className={cn('card-payment-method', color || 'primary', className)} {...rest}>\n <div className={'cpm-header'}>\n <h3 className={'cpm-title'}>{title}</h3>\n <MLink\n href={actionHref}\n tone={'accent'}\n underline={'none'}\n className={'cpm-action'}\n onClick={(event) => {\n if (onAction) {\n event.preventDefault()\n onAction()\n }\n }}\n >\n {actionLabel}\n <MArrowRightIcon />\n </MLink>\n </div>\n\n <div className={'cpm-surface'}>\n <div className={'cpm-method'}>\n <MInline align={'center'} className={'cpm-method-row'}>\n <span className={cn('cpm-brand', !brandIcon && brand)}>{brandIcon ?? brandLabel}</span>\n <span className={'cpm-last4'}>{`\\u2022\\u2022\\u2022\\u2022 ${last4}`}</span>\n {resolvedBadgeLabel && <MBadge color={'info'}>{resolvedBadgeLabel}</MBadge>}\n </MInline>\n {resolvedSummary && (\n <MText tone={'muted'} className={'cpm-summary'}>\n {resolvedSummary}\n </MText>\n )}\n </div>\n\n {helperText && (\n <MText tone={'muted'} size={'sm'} className={'cpm-helper'}>\n {helperText}\n </MText>\n )}\n\n <div className={'cpm-fields'}>\n <MInputExpDate label={expiryLabel} placeholder={'MM/YYYY'} fullWidth {...resolvedExpiryProps} />\n <MInputCVC label={cvcLabel} placeholder={'123'} fullWidth {...cvcProps} />\n </div>\n </div>\n </div>\n )\n}\n","import type {ComponentType} from 'react'\nimport type {MIconProps} from '../icons'\nimport {\n MAppleColorIcon,\n MAppleIcon,\n MDiscordColorIcon,\n MDiscordIcon,\n MFacebookColorIcon,\n MFacebookIcon,\n MFigmaColorIcon,\n MFigmaIcon,\n MGitHubColorIcon,\n MGitHubIcon,\n MGoogleColorIcon,\n MGoogleIcon,\n MInstagramColorIcon,\n MInstagramIcon,\n MLinkedInColorIcon,\n MLinkedInIcon,\n MPinterestColorIcon,\n MPinterestIcon,\n MSlackColorIcon,\n MSlackIcon,\n MSpotifyColorIcon,\n MSpotifyIcon,\n MTumblrColorIcon,\n MTumblrIcon,\n MVimeoColorIcon,\n MVimeoIcon,\n MVkColorIcon,\n MVkIcon,\n MXColorIcon,\n MXIcon,\n MYouTubeColorIcon,\n MYouTubeIcon,\n} from '../icons'\n\nexport type MSocialPlatform =\n | 'apple'\n | 'discord'\n | 'facebook'\n | 'figma'\n | 'github'\n | 'google'\n | 'instagram'\n | 'linkedin'\n | 'pinterest'\n | 'slack'\n | 'spotify'\n | 'tumblr'\n | 'vimeo'\n | 'vk'\n | 'twitter'\n | 'x'\n | 'youtube'\n | (string & {})\n\ntype SocialEntry = {\n label: string\n icon: ComponentType<MIconProps>\n colorIcon: ComponentType<MIconProps>\n rgb: string\n}\n\nconst socialMap: Record<string, SocialEntry> = {\n apple: {label: 'Apple', icon: MAppleIcon, colorIcon: MAppleColorIcon, rgb: '24, 24, 27'},\n discord: {label: 'Discord', icon: MDiscordIcon, colorIcon: MDiscordColorIcon, rgb: '88, 101, 242'},\n facebook: {label: 'Facebook', icon: MFacebookIcon, colorIcon: MFacebookColorIcon, rgb: '24, 119, 242'},\n figma: {label: 'Figma', icon: MFigmaIcon, colorIcon: MFigmaColorIcon, rgb: '162, 89, 255'},\n github: {label: 'GitHub', icon: MGitHubIcon, colorIcon: MGitHubColorIcon, rgb: '24, 23, 23'},\n google: {label: 'Google', icon: MGoogleIcon, colorIcon: MGoogleColorIcon, rgb: '66, 133, 244'},\n instagram: {label: 'Instagram', icon: MInstagramIcon, colorIcon: MInstagramColorIcon, rgb: '225, 48, 108'},\n linkedin: {label: 'LinkedIn', icon: MLinkedInIcon, colorIcon: MLinkedInColorIcon, rgb: '10, 102, 194'},\n pinterest: {label: 'Pinterest', icon: MPinterestIcon, colorIcon: MPinterestColorIcon, rgb: '230, 0, 35'},\n slack: {label: 'Slack', icon: MSlackIcon, colorIcon: MSlackColorIcon, rgb: '74, 21, 75'},\n spotify: {label: 'Spotify', icon: MSpotifyIcon, colorIcon: MSpotifyColorIcon, rgb: '30, 215, 96'},\n tumblr: {label: 'Tumblr', icon: MTumblrIcon, colorIcon: MTumblrColorIcon, rgb: '0, 25, 53'},\n vimeo: {label: 'Vimeo', icon: MVimeoIcon, colorIcon: MVimeoColorIcon, rgb: '26, 183, 234'},\n vk: {label: 'VK', icon: MVkIcon, colorIcon: MVkColorIcon, rgb: '0, 119, 255'},\n x: {label: 'X', icon: MXIcon, colorIcon: MXColorIcon, rgb: '17, 17, 17'},\n youtube: {label: 'YouTube', icon: MYouTubeIcon, colorIcon: MYouTubeColorIcon, rgb: '255, 0, 0'},\n}\n\nexport function normalizeSocialPlatform(platform: string) {\n const normalized = platform\n .trim()\n .toLowerCase()\n .replace(/[\\s._-]+/g, '')\n\n if (normalized === 'twitter') {\n return 'x'\n }\n\n if (normalized === 'vkontakte') {\n return 'vk'\n }\n\n return normalized\n}\n\nexport function getSocialLabel(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.label ?? platform\n}\n\nexport function getSocialIconComponent(platform: MSocialPlatform, brand = false) {\n const normalized = normalizeSocialPlatform(platform)\n const entry = socialMap[normalized]\n\n if (!entry) {\n return null\n }\n\n return brand ? entry.colorIcon : entry.icon\n}\n\nexport function getSocialBrandRgb(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.rgb ?? '37, 99, 235'\n}\n","import type {MCardBusinessProps} from './MCardBusiness.types'\nimport {cn} from '../../../utils/cn'\nimport {MQrCode} from '../../display'\nimport {MAvatar} from '../../media'\nimport {MGlobeIcon, MMailIcon, MPhoneIcon, MPinIcon} from '../../../icons'\nimport {getSocialIconComponent, getSocialLabel} from '../../../utils/socialPlatforms'\nimport './MCardBusiness.css'\n\n// Join available address fields into one readable line.\nfunction formatAddress(address: MCardBusinessProps['address']): string | null {\n if (!address) return null\n\n return [address.street, [address.zip, address.city].filter(Boolean).join(' '), address.country]\n .filter(Boolean)\n .join(', ')\n}\n\n// Render a compact business card for a person or a company profile.\nexport function MCardBusiness({\n variant = 'user',\n name,\n title,\n avatar,\n address,\n contact,\n socials,\n online,\n lastActive,\n qrCode,\n qrValue,\n qrStatus,\n qrStatusLabel,\n color = 'primary',\n className,\n ...rest\n}: MCardBusinessProps) {\n const addr = formatAddress(address)\n\n return (\n <div className={cn('card-business', variant, `color-${color}`, className)} {...rest}>\n <div className=\"cb-header\">\n <div className=\"cb-avatar-wrap\">\n <MAvatar\n src={avatar}\n alt={name}\n name={name}\n size={56}\n shape={variant === 'company' ? 'rounded' : 'circle'}\n color={color}\n badge={online !== undefined ? true : undefined}\n badgeColor={online === undefined ? undefined : online ? 'success' : 'error'}\n badgePulsing={Boolean(online)}\n className={cn('cb-avatar', variant)}\n />\n </div>\n\n <div className=\"cb-info\">\n <h3 className=\"cb-name\">{name}</h3>\n {title && <p className=\"cb-title\">{title}</p>}\n {lastActive && <p className=\"cb-last-active\">{lastActive}</p>}\n </div>\n\n {(qrValue || qrCode) && (\n <div className=\"cb-qr\">\n {qrValue ? (\n <MQrCode\n value={qrValue}\n size={56}\n padding={3}\n status={qrStatus}\n statusLabel={qrStatusLabel}\n className=\"cb-qr-code\"\n />\n ) : (\n <img src={qrCode} alt=\"QR\" className=\"cb-qr-img\" />\n )}\n </div>\n )}\n </div>\n\n {(contact || addr) && (\n <div className=\"cb-details\">\n {contact?.email && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MMailIcon />\n </span>\n <a href={`mailto:${contact.email}`} className=\"cb-detail-value\">\n {contact.email}\n </a>\n </div>\n )}\n {contact?.phone && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPhoneIcon />\n </span>\n <a href={`tel:${contact.phone}`} className=\"cb-detail-value\">\n {contact.phone}\n </a>\n </div>\n )}\n {contact?.website && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MGlobeIcon />\n </span>\n <a\n href={contact.website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-detail-value\"\n >\n {contact.website.replace(/^https?:\\/\\//, '')}\n </a>\n </div>\n )}\n {addr && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPinIcon />\n </span>\n <span className=\"cb-detail-value\">{addr}</span>\n </div>\n )}\n </div>\n )}\n\n {socials && socials.length > 0 && (\n <div className=\"cb-socials\">\n {socials.map((item) =>\n (() => {\n const Icon = getSocialIconComponent(item.platform, true)\n\n return (\n <a\n key={item.platform}\n href={item.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-social\"\n title={getSocialLabel(item.platform)}\n aria-label={getSocialLabel(item.platform)}\n >\n {item.icon ??\n (Icon ? <Icon /> : <span className=\"cb-social-text\">{item.platform}</span>)}\n </a>\n )\n })()\n )}\n </div>\n )}\n </div>\n )\n}\n","import {useEffect, useState} from 'react'\nimport type {SharedServiceCardProps} from './ServiceCardsShared.types'\nimport {cn} from '../../../utils/cn'\nimport {\n MArrowDownIcon,\n MArrowUpIcon,\n MClockIcon,\n MEllipsisVerticalIcon,\n MHeartFillIcon,\n MHeartIcon,\n MMinusIcon,\n MPlusIcon,\n} from '../../../icons'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MAvatar} from '../../media'\nimport {MRating} from '../../display'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport './ServiceCardsShared.css'\n\nexport function SharedServiceCard({\n variant,\n title,\n description,\n price,\n currency = 'PLN',\n duration,\n available,\n image,\n gallery,\n galleryAutoPlay = false,\n rating,\n reviewCount,\n favorite,\n onFavorite,\n menuItems,\n onAddToCart,\n actionLabel,\n icon,\n color = 'primary',\n leader,\n participants,\n maxParticipants,\n quantity: controlledQty,\n onQuantityChange,\n date,\n location,\n status,\n value,\n trend,\n className,\n ...rest\n}: SharedServiceCardProps) {\n const [galleryIdx, setGalleryIdx] = useState(0)\n const [isGalleryTransitioning, setIsGalleryTransitioning] = useState(false)\n const [internalQty, setInternalQty] = useState(1)\n\n const qty = controlledQty ?? internalQty\n const images = gallery && gallery.length > 0 ? gallery : image ? [image] : []\n\n useEffect(() => {\n if (galleryIdx >= images.length) {\n setGalleryIdx(0)\n }\n }, [galleryIdx, images.length])\n\n useEffect(() => {\n if (!isGalleryTransitioning) {\n return\n }\n\n const transitionId = window.setTimeout(() => {\n setIsGalleryTransitioning(false)\n }, 220)\n\n return () => window.clearTimeout(transitionId)\n }, [galleryIdx, isGalleryTransitioning])\n\n function changeGallery(nextIdx: number) {\n if (nextIdx === galleryIdx || nextIdx < 0 || nextIdx >= images.length) {\n return\n }\n\n if (images.length > 1) {\n setIsGalleryTransitioning(true)\n }\n\n setGalleryIdx(nextIdx)\n }\n\n useEffect(() => {\n if (!galleryAutoPlay || images.length <= 1) {\n return\n }\n\n const intervalId = window.setInterval(() => {\n setIsGalleryTransitioning(true)\n setGalleryIdx((current) => (current + 1) % images.length)\n }, 3500)\n\n return () => window.clearInterval(intervalId)\n }, [galleryAutoPlay, images.length])\n\n function changeQty(next: number) {\n const val = Math.max(1, next)\n if (onQuantityChange) onQuantityChange(val)\n else setInternalQty(val)\n }\n\n const availLabel =\n available === true\n ? 'Available'\n : available === false\n ? 'Unavailable'\n : typeof available === 'number'\n ? `${available} spots`\n : null\n\n const parsedDate = date ? (date instanceof Date ? date : new Date(date)) : null\n const dateDay = parsedDate ? parsedDate.getDate() : null\n const dateMonth = parsedDate ? parsedDate.toLocaleString('en', {month: 'short'}).toUpperCase() : null\n\n const trendType = trend !== undefined ? (trend > 0 ? 'up' : trend < 0 ? 'down' : 'neutral') : null\n\n if (variant === 'widget') {\n return (\n <div className={cn('card-service', 'widget', `color-${color}`, className)} {...rest}>\n <div className=\"cs-widget\">\n {icon && <span className=\"cs-widget-icon\">{icon}</span>}\n <div className=\"cs-widget-content\">\n <span className=\"cs-widget-label\">{title}</span>\n <span className=\"cs-widget-value\">{value}</span>\n {trend !== undefined && (\n <span className={cn('cs-widget-trend', trendType)}>\n {trendType === 'up' && <MArrowUpIcon size={14} />}\n {trendType === 'down' && <MArrowDownIcon size={14} />}\n <span>\n {trend > 0 ? '+' : ''}\n {trend}%\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn('card-service', variant, `color-${color}`, className)} {...rest}>\n {images.length > 0 && (\n <div className=\"cs-gallery\">\n <img\n src={images[galleryIdx]}\n alt={title}\n className={cn('cs-image', isGalleryTransitioning && 'is-transitioning')}\n />\n {images.length > 1 && (\n <div className=\"cs-gallery-dots\">\n {images.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n className={cn('cs-dot', i === galleryIdx && 'active')}\n onClick={() => changeGallery(i)}\n aria-label={`Image ${i + 1}`}\n />\n ))}\n </div>\n )}\n\n {(onFavorite || (menuItems && menuItems.length > 0)) && (\n <div className=\"cs-gallery-actions\">\n {menuItems && menuItems.length > 0 && (\n <MDropdownMenu\n className=\"cs-menu-wrap\"\n trigger={\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n aria-label=\"More options\"\n className=\"cs-overlay-btn\"\n >\n <MEllipsisVerticalIcon />\n </MButton>\n }\n placement=\"bottom-end\"\n >\n {menuItems.map((item, i) => (\n <MDropdownItem\n key={i}\n icon={item.icon}\n color={item.danger ? 'error' : undefined}\n label={item.label}\n onClick={item.onClick}\n />\n ))}\n </MDropdownMenu>\n )}\n {onFavorite && (\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n onClick={onFavorite}\n aria-label={favorite ? 'Remove from favorites' : 'Add to favorites'}\n className={cn('cs-overlay-btn', favorite && 'cs-fav-active')}\n >\n {favorite ? <MHeartFillIcon /> : <MHeartIcon />}\n </MButton>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"cs-body\">\n {variant === 'event' && parsedDate && (\n <div className=\"cs-event-header\">\n <div className=\"cs-date-block\">\n <span className=\"cs-date-day\">{dateDay}</span>\n <span className=\"cs-date-month\">{dateMonth}</span>\n </div>\n <div className=\"cs-event-info\">\n <h3 className=\"cs-title\">{title}</h3>\n {description && <p className=\"cs-desc\">{description}</p>}\n </div>\n </div>\n )}\n\n {variant !== 'event' && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {variant === 'event' && !parsedDate && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {rating !== undefined && (\n <div className=\"cs-rating\">\n <MRating value={Math.round(rating)} size=\"sm\" color=\"warning\" readOnly className=\"cs-stars\" />\n <span className=\"cs-rating-value\">{rating.toFixed(1)}</span>\n {reviewCount !== undefined && <span className=\"cs-review-count\">({reviewCount})</span>}\n </div>\n )}\n\n {leader && (\n <div className=\"cs-leader\">\n <MAvatar src={leader.avatar} name={leader.name} size={28} color={color} />\n <span className=\"cs-leader-name\">{leader.name}</span>\n </div>\n )}\n\n {variant === 'course' && participants && (\n <div className=\"cs-participants\">\n <div className=\"cs-participants-avatars\">\n {participants.slice(0, 4).map((participant, index) => (\n <MAvatar\n key={`${participant.name}-${index}`}\n src={participant.avatar}\n name={participant.name}\n size={28}\n color={color}\n className=\"cs-participant-avatar\"\n />\n ))}\n </div>\n {maxParticipants && (\n <span className=\"cs-spots\">\n {participants.length}/{maxParticipants}\n </span>\n )}\n </div>\n )}\n\n <div className=\"cs-meta\">\n {variant === 'event' && location && (\n <MBadge size=\"xs\" color={color}>\n {location}\n </MBadge>\n )}\n {duration && (\n <MBadge size=\"xs\" color={color} icon={<MClockIcon />}>\n {duration}\n </MBadge>\n )}\n {variant === 'event' && status && (\n <MBadge size=\"xs\" color={status.toLowerCase() === 'sold out' ? 'error' : color}>\n {status}\n </MBadge>\n )}\n {availLabel && variant !== 'event' && (\n <MBadge size=\"xs\" color={available === false ? 'error' : color}>\n {availLabel}\n </MBadge>\n )}\n </div>\n </div>\n\n <div className=\"cs-footer\">\n {price !== undefined && (\n <span className=\"cs-price\">\n {typeof price === 'number' ? price.toFixed(2) : price}{' '}\n <span className=\"cs-currency\">{currency}</span>\n </span>\n )}\n\n <div className=\"cs-actions\">\n {variant === 'product' && onAddToCart && (\n <div className=\"cs-qty\">\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty - 1)}\n aria-label=\"Decrease\"\n className=\"cs-qty-btn\"\n >\n <MMinusIcon />\n </MButton>\n <span className=\"cs-qty-value\">{qty}</span>\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty + 1)}\n aria-label=\"Increase\"\n className=\"cs-qty-btn\"\n >\n <MPlusIcon />\n </MButton>\n </div>\n )}\n {onAddToCart && (\n <MButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n onClick={() => onAddToCart(qty)}\n disabled={available === false}\n className=\"cs-cart-btn\"\n >\n {actionLabel ?? (variant === 'event' ? 'Register' : 'Add to cart')}\n </MButton>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardOfferProps} from './MCardOffer.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardOffer(props: MCardOfferProps) {\n const {onAction, actionLabel = 'Book now', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"service\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardCourseProps} from './MCardCourse.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardCourse(props: MCardCourseProps) {\n const {onAction, actionLabel = 'Join course', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"course\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardProductProps} from './MCardProduct.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardProduct(props: MCardProductProps) {\n const {addToCartLabel = 'Add to cart', ...rest} = props\n\n return <SharedServiceCard variant=\"product\" actionLabel={addToCartLabel} {...rest} />\n}\n","import type {MCardEventProps} from './MCardEvent.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardEvent(props: MCardEventProps) {\n const {onRegister, registerLabel = 'Register', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"event\"\n onAddToCart={onRegister ? () => onRegister() : undefined}\n actionLabel={registerLabel}\n {...rest}\n />\n )\n}\n","import type {MCardWidgetProps} from './MCardWidget.types'\nimport {cn} from '../../../utils/cn'\nimport {MArrowDownIcon, MArrowUpIcon} from '../../../icons'\nimport './MCardWidget.css'\n\nfunction resolveTrendType(trend: MCardWidgetProps['trend'], explicit?: MCardWidgetProps['trendType']) {\n if (explicit) return explicit\n if (typeof trend !== 'number' || trend === 0) return 'neutral'\n return trend > 0 ? 'up' : 'down'\n}\n\nfunction formatTrend(trend: MCardWidgetProps['trend']) {\n if (typeof trend === 'number' && trend > 0) {\n return `+${trend}`\n }\n\n return trend\n}\n\nexport function MCardWidget({\n title,\n value,\n trend,\n trendType,\n icon,\n color = 'primary',\n helperText,\n className,\n ...rest\n}: MCardWidgetProps) {\n const hasTrend = trend !== undefined && trend !== null\n const resolvedTrendType = resolveTrendType(trend, trendType)\n const formattedTrend = formatTrend(trend)\n\n return (\n <div className={cn('card-widget', `color-${color}`, className)} {...rest}>\n <div className=\"cw-top\">\n <div className=\"cw-meta\">\n <span className=\"cw-title\">{title}</span>\n <span className=\"cw-value\">{value}</span>\n </div>\n {icon && <span className=\"cw-icon\">{icon}</span>}\n </div>\n\n {hasTrend && (\n <div className=\"cw-bottom\">\n <span className={cn('cw-trend', resolvedTrendType)}>\n {resolvedTrendType === 'up' && <MArrowUpIcon size={14} />}\n {resolvedTrendType === 'down' && <MArrowDownIcon size={14} />}\n <span>{formattedTrend}</span>\n </span>\n </div>\n )}\n\n {helperText && <div className=\"cw-helper\">{helperText}</div>}\n </div>\n )\n}\n","import {useState, useMemo, useRef, useCallback} from 'react'\nimport type {MCardGridProps} from './MCardGrid.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton, MCheckbox} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MPopover} from '../../primitives'\nimport {MArrowDownIcon, MArrowUpIcon, MFilterIcon, MSortIcon} from '../../../icons'\nimport './MCardGrid.css'\n\nfunction getNestedValue(obj: unknown, key: string): unknown {\n const parts = key.split('.')\n let val: unknown = obj\n\n for (const p of parts) {\n if (val == null || typeof val !== 'object') return undefined\n val = (val as Record<string, unknown>)[p]\n }\n\n return val\n}\n\nexport function MCardGrid<T extends Record<string, unknown>>({\n items,\n renderCard,\n searchable = false,\n searchKeys,\n searchPlaceholder = 'Search...',\n filterable = false,\n filterKeys = [],\n sortable = false,\n sortKeys = [],\n defaultSort,\n columns = 3,\n emptyMessage = 'No results found.',\n className,\n style,\n ...rest\n}: MCardGridProps<T>) {\n const [search, setSearch] = useState('')\n const [filters, setFilters] = useState<Record<string, Set<string>>>({})\n const [sortKey, setSortKey] = useState<string | null>(defaultSort?.key ?? null)\n const [sortDir, setSortDir] = useState<'asc' | 'desc'>(defaultSort?.direction ?? 'asc')\n const [filterOpen, setFilterOpen] = useState(false)\n const [sortOpen, setSortOpen] = useState(false)\n const filterBtnRef = useRef<HTMLElement>(null)\n const sortBtnRef = useRef<HTMLElement>(null)\n\n const openFilter = useCallback(() => {\n setFilterOpen((v) => !v)\n setSortOpen(false)\n }, [])\n\n const openSort = useCallback(() => {\n setSortOpen((v) => !v)\n setFilterOpen(false)\n }, [])\n\n const processed = useMemo(() => {\n let result = [...items]\n\n if (search && searchKeys && searchKeys.length > 0) {\n const query = search.toLowerCase()\n result = result.filter((item) =>\n searchKeys.some((key) => {\n const value = getNestedValue(item, key)\n return value != null && String(value).toLowerCase().includes(query)\n })\n )\n }\n\n for (const [key, selected] of Object.entries(filters)) {\n if (selected.size === 0) continue\n\n result = result.filter((item) => {\n const value = getNestedValue(item, key)\n return value != null && selected.has(String(value))\n })\n }\n\n if (sortKey) {\n result.sort((a, b) => {\n const av = getNestedValue(a, sortKey)\n const bv = getNestedValue(b, sortKey)\n\n if (av == null && bv == null) return 0\n if (av == null) return 1\n if (bv == null) return -1\n\n const compare = String(av).localeCompare(String(bv), undefined, {numeric: true})\n return sortDir === 'asc' ? compare : -compare\n })\n }\n\n return result\n }, [items, search, searchKeys, filters, sortKey, sortDir])\n\n function toggleFilter(key: string, value: string) {\n setFilters((prev) => {\n const next = new Set(prev[key] ?? [])\n\n if (next.has(value)) next.delete(value)\n else next.add(value)\n\n return {...prev, [key]: next}\n })\n }\n\n const filterOptions = useMemo(() => {\n const map: Record<string, string[]> = {}\n\n for (const filterKey of filterKeys) {\n if (filterKey.options) {\n map[filterKey.key] = filterKey.options\n continue\n }\n\n const values = new Set<string>()\n\n for (const item of items) {\n const value = getNestedValue(item, filterKey.key)\n if (value != null) values.add(String(value))\n }\n\n map[filterKey.key] = Array.from(values).sort()\n }\n\n return map\n }, [items, filterKeys])\n\n const activeSort = sortKeys.find((item) => item.key === sortKey)\n\n return (\n <div className={cn('card-grid', className)} style={style} {...rest}>\n {(searchable || filterable || sortable) && (\n <div className=\"card-grid-toolbar\">\n {searchable && (\n <MInputSearch\n className=\"card-grid-search\"\n size=\"sm\"\n fullWidth\n placeholder={searchPlaceholder}\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n onClear={() => setSearch('')}\n />\n )}\n\n <div className=\"card-grid-actions\">\n {filterable && filterKeys.length > 0 && (\n <>\n <MButton\n ref={filterBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={<MFilterIcon />}\n aria-expanded={filterOpen}\n onClick={openFilter}\n >\n Filter\n </MButton>\n <MPopover\n open={filterOpen}\n anchorRef={filterBtnRef}\n onClose={() => setFilterOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {filterKeys.map((filterKey) => (\n <div key={filterKey.key} className=\"card-grid-filter-group\">\n <span className=\"card-grid-filter-label\">{filterKey.label}</span>\n {(filterOptions[filterKey.key] ?? []).map((option) => (\n <div key={option} className=\"card-grid-filter-option\">\n <MCheckbox\n size=\"sm\"\n clickEffect=\"none\"\n checked={filters[filterKey.key]?.has(option) ?? false}\n onChange={() => toggleFilter(filterKey.key, option)}\n label={option}\n />\n </div>\n ))}\n </div>\n ))}\n </MPopover>\n </>\n )}\n\n {sortable && sortKeys.length > 0 && (\n <>\n <MButton\n ref={sortBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={\n sortKey ? (\n sortDir === 'asc' ? (\n <MArrowUpIcon />\n ) : (\n <MArrowDownIcon />\n )\n ) : (\n <MSortIcon />\n )\n }\n aria-expanded={sortOpen}\n onClick={openSort}\n >\n {activeSort ? `Sort: ${activeSort.label}` : 'Sort'}\n </MButton>\n <MPopover\n open={sortOpen}\n anchorRef={sortBtnRef}\n onClose={() => setSortOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {sortKeys.map((sortItem) => (\n <button\n key={sortItem.key}\n type=\"button\"\n className={cn('card-grid-sort-item', sortKey === sortItem.key && 'active')}\n onClick={() => {\n if (sortKey === sortItem.key) {\n setSortDir(sortDir === 'asc' ? 'desc' : 'asc')\n } else {\n setSortKey(sortItem.key)\n setSortDir('asc')\n }\n setSortOpen(false)\n }}\n >\n {sortItem.label}\n {sortKey === sortItem.key && (\n <span className=\"card-grid-sort-dir\">\n {sortDir === 'asc' ? (\n <MArrowUpIcon className=\"card-grid-sort-icon\" />\n ) : (\n <MArrowDownIcon className=\"card-grid-sort-icon\" />\n )}\n </span>\n )}\n </button>\n ))}\n </MPopover>\n </>\n )}\n </div>\n </div>\n )}\n\n {processed.length > 0 ? (\n <div\n className=\"card-grid-items\"\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }}\n >\n {processed.map((item, index) => renderCard(item, index))}\n </div>\n ) : (\n <div className=\"card-grid-empty\">{emptyMessage}</div>\n )}\n </div>\n )\n}\n","import type {MCardFinanceProps} from './MCardFinance.types'\nimport {cn} from '../../../utils/cn'\nimport {MSparkline} from '../../data/MSparkline/MSparkline'\nimport {MArrowUpIcon, MArrowDownIcon} from '../../../icons'\nimport './MCardFinance.css'\n\nfunction resolveChangeType(change: number | undefined, explicit?: MCardFinanceProps['changeType']) {\n if (explicit) return explicit\n if (change === undefined || change === 0) return 'neutral'\n return change > 0 ? 'up' : 'down'\n}\n\nexport function MCardFinance({\n label,\n value,\n change,\n changeType: changeTypeProp,\n changeLabel,\n icon,\n sparkline,\n sparklineType = 'area',\n color = 'primary',\n currency,\n className,\n ...rest\n}: MCardFinanceProps) {\n const changeType = resolveChangeType(change, changeTypeProp)\n\n const changeColor = changeType === 'up' ? 'success' : changeType === 'down' ? 'error' : 'neutral'\n\n return (\n <div className={cn('card-finance', `color-${color}`, className)} {...rest}>\n <div className=\"cf-top\">\n <div className=\"cf-meta\">\n <span className=\"cf-label\">{label}</span>\n {currency && <span className=\"cf-currency\">{currency}</span>}\n </div>\n {icon && <span className=\"cf-icon\">{icon}</span>}\n </div>\n\n <div className=\"cf-value\">{value}</div>\n\n <div className=\"cf-bottom\">\n {change !== undefined && (\n <span className={cn('cf-change', changeColor)}>\n {changeType === 'up' && <MArrowUpIcon size={14} />}\n {changeType === 'down' && <MArrowDownIcon size={14} />}\n <span className=\"cf-change-value\">\n {change > 0 ? '+' : ''}\n {change}%\n </span>\n {changeLabel && <span className=\"cf-change-label\">{changeLabel}</span>}\n </span>\n )}\n </div>\n\n <div className=\"cf-sparkline\">\n <MSparkline\n data={sparkline}\n type={sparklineType}\n color={changeColor === 'neutral' ? color : changeColor}\n height={46}\n padding={0}\n curved\n animated\n fillOpacity={0.18}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cards-fn61xD_5.js","names":[],"sources":["../src/components/cards/MCardPayment/MCardPayment.tsx","../src/components/cards/MCardPaymentMethod/MCardPaymentMethod.tsx","../src/utils/socialPlatforms.tsx","../src/components/cards/MCardBusiness/MCardBusiness.tsx","../src/components/cards/ServiceCardsShared/ServiceCardsShared.tsx","../src/components/cards/MCardOffer/MCardOffer.tsx","../src/components/cards/MCardCourse/MCardCourse.tsx","../src/components/cards/MCardProduct/MCardProduct.tsx","../src/components/cards/MCardEvent/MCardEvent.tsx","../src/components/cards/MCardWidget/MCardWidget.tsx","../src/components/cards/MCardGrid/MCardGrid.tsx","../src/components/cards/MCardFinance/MCardFinance.tsx"],"sourcesContent":["import type {MCardPaymentProps} from './MCardPayment.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands, detectCardBrand} from '../../../utils/creditCards'\nimport './MCardPayment.css'\n\nfunction maskNumber(raw: string): string {\n const digits = raw.replace(/\\D/g, '')\n if (digits.length <= 4) return digits\n const last4 = digits.slice(-4)\n return `\\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 \\u2022\\u2022\\u2022\\u2022 ${last4}`\n}\n\n// Display-only payment card with balance, masked number, holder name and brand badge.\nexport function MCardPayment({\n holder,\n number,\n expiry,\n brand,\n brandIcon,\n balance,\n balanceLabel = 'Current balance',\n color,\n className,\n ...rest\n}: MCardPaymentProps) {\n const detectedDetails = detectCardBrand(number)\n const detected = brand ?? detectedDetails.brand\n const brandDetails = creditCardBrands.find((rule) => rule.brand === detected) ?? detectedDetails\n const masked = maskNumber(number)\n const brandLabel = brandDetails.iconLabel\n\n return (\n <div className={cn('card-payment', color || 'primary', className)} {...rest}>\n {balance !== undefined && (\n <div>\n <p className=\"cp-balance-label\">{balanceLabel}</p>\n <p className=\"cp-balance\">{balance}</p>\n </div>\n )}\n\n <div className=\"cp-row\">\n <span className={cn('cp-brand', !brandIcon && detected)}>{brandIcon ?? brandLabel}</span>\n <span className=\"cp-number\">{masked}</span>\n </div>\n\n <div className=\"cp-details\">\n <div>\n <p className=\"cp-field-label\">MCard holder</p>\n <p className=\"cp-field-value\">{holder}</p>\n </div>\n <div>\n <p className=\"cp-field-label\">Expiration date</p>\n <p className=\"cp-field-value\">{expiry}</p>\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardPaymentMethodProps} from './MCardPaymentMethod.types'\nimport {cn} from '../../../utils/cn'\nimport {creditCardBrands} from '../../../utils/creditCards'\nimport {MArrowRightIcon} from '../../../icons'\nimport {MBadge} from '../../feedback'\nimport {MInline} from '../../layout'\nimport {MLink, MText} from '../../typography'\nimport {MInputExpDate} from '../../inputs/MInputExpDate'\nimport {MInputCVC} from '../../inputs/MInputCVC'\nimport './MCardPaymentMethod.css'\n\nfunction resolveBrandLabel(brand: NonNullable<MCardPaymentMethodProps['brand']>) {\n return creditCardBrands.find((item) => item.brand === brand)?.iconLabel ?? 'CARD'\n}\n\nexport function MCardPaymentMethod({\n title = 'Your payment methods',\n actionLabel = 'Change',\n actionHref = '#',\n onAction,\n brand = 'visa',\n brandIcon,\n last4,\n badgeLabel,\n summary,\n helperText = 'All fields are required, unless stated otherwise.',\n expiryLabel = 'Expiration date',\n cvcLabel = 'Security code',\n expiryProps,\n cvcProps,\n color,\n className,\n ...rest\n}: MCardPaymentMethodProps) {\n const expirySummary = expiryProps?.value ?? expiryProps?.defaultValue\n const resolvedBadgeLabel = badgeLabel === undefined ? 'Default' : badgeLabel\n const derivedSummary = expirySummary\n ? `Credit card - Expiration date ${String(expirySummary).replace('/', '.')}`\n : 'Credit card'\n const resolvedSummary = summary === undefined ? derivedSummary : summary\n const brandLabel = resolveBrandLabel(brand)\n const resolvedExpiryProps = {\n clearable: true,\n ...expiryProps,\n }\n\n return (\n <div className={cn('card-payment-method', color || 'primary', className)} {...rest}>\n <div className={'cpm-header'}>\n <h3 className={'cpm-title'}>{title}</h3>\n <MLink\n href={actionHref}\n tone={'accent'}\n underline={'none'}\n className={'cpm-action'}\n onClick={(event) => {\n if (onAction) {\n event.preventDefault()\n onAction()\n }\n }}\n >\n {actionLabel}\n <MArrowRightIcon />\n </MLink>\n </div>\n\n <div className={'cpm-surface'}>\n <div className={'cpm-method'}>\n <MInline align={'center'} className={'cpm-method-row'}>\n <span className={cn('cpm-brand', !brandIcon && brand)}>{brandIcon ?? brandLabel}</span>\n <span className={'cpm-last4'}>{`\\u2022\\u2022\\u2022\\u2022 ${last4}`}</span>\n {resolvedBadgeLabel && <MBadge color={'info'}>{resolvedBadgeLabel}</MBadge>}\n </MInline>\n {resolvedSummary && (\n <MText tone={'muted'} className={'cpm-summary'}>\n {resolvedSummary}\n </MText>\n )}\n </div>\n\n {helperText && (\n <MText tone={'muted'} size={'sm'} className={'cpm-helper'}>\n {helperText}\n </MText>\n )}\n\n <div className={'cpm-fields'}>\n <MInputExpDate label={expiryLabel} placeholder={'MM/YYYY'} fullWidth {...resolvedExpiryProps} />\n <MInputCVC label={cvcLabel} placeholder={'123'} fullWidth {...cvcProps} />\n </div>\n </div>\n </div>\n )\n}\n","import type {ComponentType} from 'react'\nimport type {MIconProps} from '../icons'\nimport {\n MAppleColorIcon,\n MAppleIcon,\n MDiscordColorIcon,\n MDiscordIcon,\n MFacebookColorIcon,\n MFacebookIcon,\n MFigmaColorIcon,\n MFigmaIcon,\n MGitHubColorIcon,\n MGitHubIcon,\n MGoogleColorIcon,\n MGoogleIcon,\n MInstagramColorIcon,\n MInstagramIcon,\n MLinkedInColorIcon,\n MLinkedInIcon,\n MPinterestColorIcon,\n MPinterestIcon,\n MSlackColorIcon,\n MSlackIcon,\n MSpotifyColorIcon,\n MSpotifyIcon,\n MTumblrColorIcon,\n MTumblrIcon,\n MVimeoColorIcon,\n MVimeoIcon,\n MVkColorIcon,\n MVkIcon,\n MXColorIcon,\n MXIcon,\n MYouTubeColorIcon,\n MYouTubeIcon,\n} from '../icons'\n\nexport type MSocialPlatform =\n | 'apple'\n | 'discord'\n | 'facebook'\n | 'figma'\n | 'github'\n | 'google'\n | 'instagram'\n | 'linkedin'\n | 'pinterest'\n | 'slack'\n | 'spotify'\n | 'tumblr'\n | 'vimeo'\n | 'vk'\n | 'twitter'\n | 'x'\n | 'youtube'\n | (string & {})\n\ntype SocialEntry = {\n label: string\n icon: ComponentType<MIconProps>\n colorIcon: ComponentType<MIconProps>\n rgb: string\n}\n\nconst socialMap: Record<string, SocialEntry> = {\n apple: {label: 'Apple', icon: MAppleIcon, colorIcon: MAppleColorIcon, rgb: '24, 24, 27'},\n discord: {label: 'Discord', icon: MDiscordIcon, colorIcon: MDiscordColorIcon, rgb: '88, 101, 242'},\n facebook: {label: 'Facebook', icon: MFacebookIcon, colorIcon: MFacebookColorIcon, rgb: '24, 119, 242'},\n figma: {label: 'Figma', icon: MFigmaIcon, colorIcon: MFigmaColorIcon, rgb: '162, 89, 255'},\n github: {label: 'GitHub', icon: MGitHubIcon, colorIcon: MGitHubColorIcon, rgb: '24, 23, 23'},\n google: {label: 'Google', icon: MGoogleIcon, colorIcon: MGoogleColorIcon, rgb: '66, 133, 244'},\n instagram: {label: 'Instagram', icon: MInstagramIcon, colorIcon: MInstagramColorIcon, rgb: '225, 48, 108'},\n linkedin: {label: 'LinkedIn', icon: MLinkedInIcon, colorIcon: MLinkedInColorIcon, rgb: '10, 102, 194'},\n pinterest: {label: 'Pinterest', icon: MPinterestIcon, colorIcon: MPinterestColorIcon, rgb: '230, 0, 35'},\n slack: {label: 'Slack', icon: MSlackIcon, colorIcon: MSlackColorIcon, rgb: '74, 21, 75'},\n spotify: {label: 'Spotify', icon: MSpotifyIcon, colorIcon: MSpotifyColorIcon, rgb: '30, 215, 96'},\n tumblr: {label: 'Tumblr', icon: MTumblrIcon, colorIcon: MTumblrColorIcon, rgb: '0, 25, 53'},\n vimeo: {label: 'Vimeo', icon: MVimeoIcon, colorIcon: MVimeoColorIcon, rgb: '26, 183, 234'},\n vk: {label: 'VK', icon: MVkIcon, colorIcon: MVkColorIcon, rgb: '0, 119, 255'},\n x: {label: 'X', icon: MXIcon, colorIcon: MXColorIcon, rgb: '17, 17, 17'},\n youtube: {label: 'YouTube', icon: MYouTubeIcon, colorIcon: MYouTubeColorIcon, rgb: '255, 0, 0'},\n}\n\nexport function normalizeSocialPlatform(platform: string) {\n const normalized = platform\n .trim()\n .toLowerCase()\n .replace(/[\\s._-]+/g, '')\n\n if (normalized === 'twitter') {\n return 'x'\n }\n\n if (normalized === 'vkontakte') {\n return 'vk'\n }\n\n return normalized\n}\n\nexport function getSocialLabel(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.label ?? platform\n}\n\nexport function getSocialIconComponent(platform: MSocialPlatform, brand = false) {\n const normalized = normalizeSocialPlatform(platform)\n const entry = socialMap[normalized]\n\n if (!entry) {\n return null\n }\n\n return brand ? entry.colorIcon : entry.icon\n}\n\nexport function getSocialBrandRgb(platform: MSocialPlatform) {\n const normalized = normalizeSocialPlatform(platform)\n return socialMap[normalized]?.rgb ?? '37, 99, 235'\n}\n","import type {MCardBusinessProps} from './MCardBusiness.types'\nimport {cn} from '../../../utils/cn'\nimport {MQrCode} from '../../display'\nimport {MAvatar} from '../../media'\nimport {MGlobeIcon, MMailIcon, MPhoneIcon, MPinIcon} from '../../../icons'\nimport {getSocialIconComponent, getSocialLabel} from '../../../utils/socialPlatforms'\nimport './MCardBusiness.css'\n\n// Join available address fields into one readable line.\nfunction formatAddress(address: MCardBusinessProps['address']): string | null {\n if (!address) return null\n\n return [address.street, [address.zip, address.city].filter(Boolean).join(' '), address.country]\n .filter(Boolean)\n .join(', ')\n}\n\n// Render a compact business card for a person or a company profile.\nexport function MCardBusiness({\n variant = 'user',\n name,\n title,\n avatar,\n address,\n contact,\n socials,\n online,\n lastActive,\n qrCode,\n qrValue,\n qrStatus,\n qrStatusLabel,\n color = 'primary',\n className,\n ...rest\n}: MCardBusinessProps) {\n const addr = formatAddress(address)\n\n return (\n <div className={cn('card-business', variant, `color-${color}`, className)} {...rest}>\n <div className=\"cb-header\">\n <div className=\"cb-avatar-wrap\">\n <MAvatar\n src={avatar}\n alt={name}\n name={name}\n size={56}\n shape={variant === 'company' ? 'rounded' : 'circle'}\n color={color}\n badge={online !== undefined ? true : undefined}\n badgeColor={online === undefined ? undefined : online ? 'success' : 'error'}\n badgePulsing={Boolean(online)}\n className={cn('cb-avatar', variant)}\n />\n </div>\n\n <div className=\"cb-info\">\n <h3 className=\"cb-name\">{name}</h3>\n {title && <p className=\"cb-title\">{title}</p>}\n {lastActive && <p className=\"cb-last-active\">{lastActive}</p>}\n </div>\n\n {(qrValue || qrCode) && (\n <div className=\"cb-qr\">\n {qrValue ? (\n <MQrCode\n value={qrValue}\n size={56}\n padding={3}\n status={qrStatus}\n statusLabel={qrStatusLabel}\n className=\"cb-qr-code\"\n />\n ) : (\n <img src={qrCode} alt=\"QR\" className=\"cb-qr-img\" />\n )}\n </div>\n )}\n </div>\n\n {(contact || addr) && (\n <div className=\"cb-details\">\n {contact?.email && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MMailIcon />\n </span>\n <a href={`mailto:${contact.email}`} className=\"cb-detail-value\">\n {contact.email}\n </a>\n </div>\n )}\n {contact?.phone && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPhoneIcon />\n </span>\n <a href={`tel:${contact.phone}`} className=\"cb-detail-value\">\n {contact.phone}\n </a>\n </div>\n )}\n {contact?.website && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MGlobeIcon />\n </span>\n <a\n href={contact.website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-detail-value\"\n >\n {contact.website.replace(/^https?:\\/\\//, '')}\n </a>\n </div>\n )}\n {addr && (\n <div className=\"cb-detail\">\n <span className=\"cb-detail-icon\">\n <MPinIcon />\n </span>\n <span className=\"cb-detail-value\">{addr}</span>\n </div>\n )}\n </div>\n )}\n\n {socials && socials.length > 0 && (\n <div className=\"cb-socials\">\n {socials.map((item) =>\n (() => {\n const Icon = getSocialIconComponent(item.platform, true)\n\n return (\n <a\n key={item.platform}\n href={item.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"cb-social\"\n title={getSocialLabel(item.platform)}\n aria-label={getSocialLabel(item.platform)}\n >\n {item.icon ??\n (Icon ? <Icon /> : <span className=\"cb-social-text\">{item.platform}</span>)}\n </a>\n )\n })()\n )}\n </div>\n )}\n </div>\n )\n}\n","import {useEffect, useState} from 'react'\nimport type {SharedServiceCardProps} from './ServiceCardsShared.types'\nimport {cn} from '../../../utils/cn'\nimport {\n MArrowDownIcon,\n MArrowUpIcon,\n MClockIcon,\n MEllipsisVerticalIcon,\n MHeartFillIcon,\n MHeartIcon,\n MMinusIcon,\n MPlusIcon,\n} from '../../../icons'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MAvatar} from '../../media'\nimport {MRating} from '../../display'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport './ServiceCardsShared.css'\n\nexport function SharedServiceCard({\n variant,\n title,\n description,\n price,\n currency = 'PLN',\n duration,\n available,\n image,\n gallery,\n galleryAutoPlay = false,\n rating,\n reviewCount,\n favorite,\n onFavorite,\n menuItems,\n onAddToCart,\n actionLabel,\n icon,\n color = 'primary',\n leader,\n participants,\n maxParticipants,\n quantity: controlledQty,\n onQuantityChange,\n date,\n location,\n status,\n value,\n trend,\n className,\n ...rest\n}: SharedServiceCardProps) {\n const [galleryIdx, setGalleryIdx] = useState(0)\n const [isGalleryTransitioning, setIsGalleryTransitioning] = useState(false)\n const [internalQty, setInternalQty] = useState(1)\n\n const qty = controlledQty ?? internalQty\n const images = gallery && gallery.length > 0 ? gallery : image ? [image] : []\n\n useEffect(() => {\n if (galleryIdx >= images.length) {\n setGalleryIdx(0)\n }\n }, [galleryIdx, images.length])\n\n useEffect(() => {\n if (!isGalleryTransitioning) {\n return\n }\n\n const transitionId = window.setTimeout(() => {\n setIsGalleryTransitioning(false)\n }, 220)\n\n return () => window.clearTimeout(transitionId)\n }, [galleryIdx, isGalleryTransitioning])\n\n function changeGallery(nextIdx: number) {\n if (nextIdx === galleryIdx || nextIdx < 0 || nextIdx >= images.length) {\n return\n }\n\n if (images.length > 1) {\n setIsGalleryTransitioning(true)\n }\n\n setGalleryIdx(nextIdx)\n }\n\n useEffect(() => {\n if (!galleryAutoPlay || images.length <= 1) {\n return\n }\n\n const intervalId = window.setInterval(() => {\n setIsGalleryTransitioning(true)\n setGalleryIdx((current) => (current + 1) % images.length)\n }, 3500)\n\n return () => window.clearInterval(intervalId)\n }, [galleryAutoPlay, images.length])\n\n function changeQty(next: number) {\n const val = Math.max(1, next)\n if (onQuantityChange) onQuantityChange(val)\n else setInternalQty(val)\n }\n\n const availLabel =\n available === true\n ? 'Available'\n : available === false\n ? 'Unavailable'\n : typeof available === 'number'\n ? `${available} spots`\n : null\n\n const parsedDate = date ? (date instanceof Date ? date : new Date(date)) : null\n const dateDay = parsedDate ? parsedDate.getDate() : null\n const dateMonth = parsedDate ? parsedDate.toLocaleString('en', {month: 'short'}).toUpperCase() : null\n\n const trendType = trend !== undefined ? (trend > 0 ? 'up' : trend < 0 ? 'down' : 'neutral') : null\n\n if (variant === 'widget') {\n return (\n <div className={cn('card-service', 'widget', `color-${color}`, className)} {...rest}>\n <div className=\"cs-widget\">\n {icon && <span className=\"cs-widget-icon\">{icon}</span>}\n <div className=\"cs-widget-content\">\n <span className=\"cs-widget-label\">{title}</span>\n <span className=\"cs-widget-value\">{value}</span>\n {trend !== undefined && (\n <span className={cn('cs-widget-trend', trendType)}>\n {trendType === 'up' && <MArrowUpIcon size={14} />}\n {trendType === 'down' && <MArrowDownIcon size={14} />}\n <span>\n {trend > 0 ? '+' : ''}\n {trend}%\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn('card-service', variant, `color-${color}`, className)} {...rest}>\n {images.length > 0 && (\n <div className=\"cs-gallery\">\n <img\n src={images[galleryIdx]}\n alt={title}\n className={cn('cs-image', isGalleryTransitioning && 'is-transitioning')}\n />\n {images.length > 1 && (\n <div className=\"cs-gallery-dots\">\n {images.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n className={cn('cs-dot', i === galleryIdx && 'active')}\n onClick={() => changeGallery(i)}\n aria-label={`Image ${i + 1}`}\n />\n ))}\n </div>\n )}\n\n {(onFavorite || (menuItems && menuItems.length > 0)) && (\n <div className=\"cs-gallery-actions\">\n {menuItems && menuItems.length > 0 && (\n <MDropdownMenu\n className=\"cs-menu-wrap\"\n trigger={\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n aria-label=\"More options\"\n className=\"cs-overlay-btn\"\n >\n <MEllipsisVerticalIcon />\n </MButton>\n }\n placement=\"bottom-end\"\n >\n {menuItems.map((item, i) => (\n <MDropdownItem\n key={i}\n icon={item.icon}\n color={item.danger ? 'error' : undefined}\n label={item.label}\n onClick={item.onClick}\n />\n ))}\n </MDropdownMenu>\n )}\n {onFavorite && (\n <MButton\n variant=\"ghost\"\n iconOnly\n shape=\"circle\"\n onClick={onFavorite}\n aria-label={favorite ? 'Remove from favorites' : 'Add to favorites'}\n className={cn('cs-overlay-btn', favorite && 'cs-fav-active')}\n >\n {favorite ? <MHeartFillIcon /> : <MHeartIcon />}\n </MButton>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"cs-body\">\n {variant === 'event' && parsedDate && (\n <div className=\"cs-event-header\">\n <div className=\"cs-date-block\">\n <span className=\"cs-date-day\">{dateDay}</span>\n <span className=\"cs-date-month\">{dateMonth}</span>\n </div>\n <div className=\"cs-event-info\">\n <h3 className=\"cs-title\">{title}</h3>\n {description && <p className=\"cs-desc\">{description}</p>}\n </div>\n </div>\n )}\n\n {variant !== 'event' && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {variant === 'event' && !parsedDate && (\n <>\n <div className=\"cs-top\">\n {icon && <span className=\"cs-icon\">{icon}</span>}\n <h3 className=\"cs-title\">{title}</h3>\n </div>\n {description && <p className=\"cs-desc\">{description}</p>}\n </>\n )}\n\n {rating !== undefined && (\n <div className=\"cs-rating\">\n <MRating value={Math.round(rating)} size=\"sm\" color=\"warning\" readOnly className=\"cs-stars\" />\n <span className=\"cs-rating-value\">{rating.toFixed(1)}</span>\n {reviewCount !== undefined && <span className=\"cs-review-count\">({reviewCount})</span>}\n </div>\n )}\n\n {leader && (\n <div className=\"cs-leader\">\n <MAvatar src={leader.avatar} name={leader.name} size={28} color={color} />\n <span className=\"cs-leader-name\">{leader.name}</span>\n </div>\n )}\n\n {variant === 'course' && participants && (\n <div className=\"cs-participants\">\n <div className=\"cs-participants-avatars\">\n {participants.slice(0, 4).map((participant, index) => (\n <MAvatar\n key={`${participant.name}-${index}`}\n src={participant.avatar}\n name={participant.name}\n size={28}\n color={color}\n className=\"cs-participant-avatar\"\n />\n ))}\n </div>\n {maxParticipants && (\n <span className=\"cs-spots\">\n {participants.length}/{maxParticipants}\n </span>\n )}\n </div>\n )}\n\n <div className=\"cs-meta\">\n {variant === 'event' && location && (\n <MBadge size=\"xs\" color={color}>\n {location}\n </MBadge>\n )}\n {duration && (\n <MBadge size=\"xs\" color={color} icon={<MClockIcon />}>\n {duration}\n </MBadge>\n )}\n {variant === 'event' && status && (\n <MBadge size=\"xs\" color={status.toLowerCase() === 'sold out' ? 'error' : color}>\n {status}\n </MBadge>\n )}\n {availLabel && variant !== 'event' && (\n <MBadge size=\"xs\" color={available === false ? 'error' : color}>\n {availLabel}\n </MBadge>\n )}\n </div>\n </div>\n\n <div className=\"cs-footer\">\n {price !== undefined && (\n <span className=\"cs-price\">\n {typeof price === 'number' ? price.toFixed(2) : price}{' '}\n <span className=\"cs-currency\">{currency}</span>\n </span>\n )}\n\n <div className=\"cs-actions\">\n {variant === 'product' && onAddToCart && (\n <div className=\"cs-qty\">\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty - 1)}\n aria-label=\"Decrease\"\n className=\"cs-qty-btn\"\n >\n <MMinusIcon />\n </MButton>\n <span className=\"cs-qty-value\">{qty}</span>\n <MButton\n variant=\"ghost\"\n iconOnly\n size=\"sm\"\n onClick={() => changeQty(qty + 1)}\n aria-label=\"Increase\"\n className=\"cs-qty-btn\"\n >\n <MPlusIcon />\n </MButton>\n </div>\n )}\n {onAddToCart && (\n <MButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n onClick={() => onAddToCart(qty)}\n disabled={available === false}\n className=\"cs-cart-btn\"\n >\n {actionLabel ?? (variant === 'event' ? 'Register' : 'Add to cart')}\n </MButton>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import type {MCardOfferProps} from './MCardOffer.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardOffer(props: MCardOfferProps) {\n const {onAction, actionLabel = 'Book now', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"service\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardCourseProps} from './MCardCourse.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardCourse(props: MCardCourseProps) {\n const {onAction, actionLabel = 'Join course', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"course\"\n onAddToCart={onAction ? () => onAction() : undefined}\n actionLabel={actionLabel}\n {...rest}\n />\n )\n}\n","import type {MCardProductProps} from './MCardProduct.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardProduct(props: MCardProductProps) {\n const {addToCartLabel = 'Add to cart', ...rest} = props\n\n return <SharedServiceCard variant=\"product\" actionLabel={addToCartLabel} {...rest} />\n}\n","import type {MCardEventProps} from './MCardEvent.types'\nimport {SharedServiceCard} from '../ServiceCardsShared/ServiceCardsShared'\n\nexport function MCardEvent(props: MCardEventProps) {\n const {onRegister, registerLabel = 'Register', ...rest} = props\n\n return (\n <SharedServiceCard\n variant=\"event\"\n onAddToCart={onRegister ? () => onRegister() : undefined}\n actionLabel={registerLabel}\n {...rest}\n />\n )\n}\n","import type {MCardWidgetProps} from './MCardWidget.types'\nimport {cn} from '../../../utils/cn'\nimport {MArrowDownIcon, MArrowUpIcon} from '../../../icons'\nimport './MCardWidget.css'\n\nfunction resolveTrendType(trend: MCardWidgetProps['trend'], explicit?: MCardWidgetProps['trendType']) {\n if (explicit) return explicit\n if (typeof trend !== 'number' || trend === 0) return 'neutral'\n return trend > 0 ? 'up' : 'down'\n}\n\nfunction formatTrend(trend: MCardWidgetProps['trend']) {\n if (typeof trend === 'number' && trend > 0) {\n return `+${trend}`\n }\n\n return trend\n}\n\nexport function MCardWidget({\n title,\n value,\n trend,\n trendType,\n icon,\n color = 'primary',\n helperText,\n className,\n ...rest\n}: MCardWidgetProps) {\n const hasTrend = trend !== undefined && trend !== null\n const resolvedTrendType = resolveTrendType(trend, trendType)\n const formattedTrend = formatTrend(trend)\n\n return (\n <div className={cn('card-widget', `color-${color}`, className)} {...rest}>\n <div className=\"cw-top\">\n <div className=\"cw-meta\">\n <span className=\"cw-title\">{title}</span>\n <span className=\"cw-value\">{value}</span>\n </div>\n {icon && <span className=\"cw-icon\">{icon}</span>}\n </div>\n\n {hasTrend && (\n <div className=\"cw-bottom\">\n <span className={cn('cw-trend', resolvedTrendType)}>\n {resolvedTrendType === 'up' && <MArrowUpIcon size={14} />}\n {resolvedTrendType === 'down' && <MArrowDownIcon size={14} />}\n <span>{formattedTrend}</span>\n </span>\n </div>\n )}\n\n {helperText && <div className=\"cw-helper\">{helperText}</div>}\n </div>\n )\n}\n","import {useState, useMemo, useRef, useCallback} from 'react'\nimport type {MCardGridProps} from './MCardGrid.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton, MCheckbox} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MPopover} from '../../primitives'\nimport {MArrowDownIcon, MArrowUpIcon, MFilterIcon, MSortIcon} from '../../../icons'\nimport './MCardGrid.css'\n\nfunction getNestedValue(obj: unknown, key: string): unknown {\n const parts = key.split('.')\n let val: unknown = obj\n\n for (const p of parts) {\n if (val == null || typeof val !== 'object') return undefined\n val = (val as Record<string, unknown>)[p]\n }\n\n return val\n}\n\nexport function MCardGrid<T extends Record<string, unknown>>({\n items,\n renderCard,\n searchable = false,\n searchKeys,\n searchPlaceholder = 'Search...',\n filterable = false,\n filterKeys = [],\n sortable = false,\n sortKeys = [],\n defaultSort,\n columns = 3,\n emptyMessage = 'No results found.',\n className,\n style,\n ...rest\n}: MCardGridProps<T>) {\n const [search, setSearch] = useState('')\n const [filters, setFilters] = useState<Record<string, Set<string>>>({})\n const [sortKey, setSortKey] = useState<string | null>(defaultSort?.key ?? null)\n const [sortDir, setSortDir] = useState<'asc' | 'desc'>(defaultSort?.direction ?? 'asc')\n const [filterOpen, setFilterOpen] = useState(false)\n const [sortOpen, setSortOpen] = useState(false)\n const filterBtnRef = useRef<HTMLElement>(null)\n const sortBtnRef = useRef<HTMLElement>(null)\n\n const openFilter = useCallback(() => {\n setFilterOpen((v) => !v)\n setSortOpen(false)\n }, [])\n\n const openSort = useCallback(() => {\n setSortOpen((v) => !v)\n setFilterOpen(false)\n }, [])\n\n const processed = useMemo(() => {\n let result = [...items]\n\n if (search && searchKeys && searchKeys.length > 0) {\n const query = search.toLowerCase()\n result = result.filter((item) =>\n searchKeys.some((key) => {\n const value = getNestedValue(item, key)\n return value != null && String(value).toLowerCase().includes(query)\n })\n )\n }\n\n for (const [key, selected] of Object.entries(filters)) {\n if (selected.size === 0) continue\n\n result = result.filter((item) => {\n const value = getNestedValue(item, key)\n return value != null && selected.has(String(value))\n })\n }\n\n if (sortKey) {\n result.sort((a, b) => {\n const av = getNestedValue(a, sortKey)\n const bv = getNestedValue(b, sortKey)\n\n if (av == null && bv == null) return 0\n if (av == null) return 1\n if (bv == null) return -1\n\n const compare = String(av).localeCompare(String(bv), undefined, {numeric: true})\n return sortDir === 'asc' ? compare : -compare\n })\n }\n\n return result\n }, [items, search, searchKeys, filters, sortKey, sortDir])\n\n function toggleFilter(key: string, value: string) {\n setFilters((prev) => {\n const next = new Set(prev[key] ?? [])\n\n if (next.has(value)) next.delete(value)\n else next.add(value)\n\n return {...prev, [key]: next}\n })\n }\n\n const filterOptions = useMemo(() => {\n const map: Record<string, string[]> = {}\n\n for (const filterKey of filterKeys) {\n if (filterKey.options) {\n map[filterKey.key] = filterKey.options\n continue\n }\n\n const values = new Set<string>()\n\n for (const item of items) {\n const value = getNestedValue(item, filterKey.key)\n if (value != null) values.add(String(value))\n }\n\n map[filterKey.key] = Array.from(values).sort()\n }\n\n return map\n }, [items, filterKeys])\n\n const activeSort = sortKeys.find((item) => item.key === sortKey)\n\n return (\n <div className={cn('card-grid', className)} style={style} {...rest}>\n {(searchable || filterable || sortable) && (\n <div className=\"card-grid-toolbar\">\n {searchable && (\n <MInputSearch\n className=\"card-grid-search\"\n size=\"sm\"\n fullWidth\n placeholder={searchPlaceholder}\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n onClear={() => setSearch('')}\n />\n )}\n\n <div className=\"card-grid-actions\">\n {filterable && filterKeys.length > 0 && (\n <>\n <MButton\n ref={filterBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={<MFilterIcon />}\n aria-expanded={filterOpen}\n onClick={openFilter}\n >\n Filter\n </MButton>\n <MPopover\n open={filterOpen}\n anchorRef={filterBtnRef}\n onClose={() => setFilterOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {filterKeys.map((filterKey) => (\n <div key={filterKey.key} className=\"card-grid-filter-group\">\n <span className=\"card-grid-filter-label\">{filterKey.label}</span>\n {(filterOptions[filterKey.key] ?? []).map((option) => (\n <div key={option} className=\"card-grid-filter-option\">\n <MCheckbox\n size=\"sm\"\n clickEffect=\"none\"\n checked={filters[filterKey.key]?.has(option) ?? false}\n onChange={() => toggleFilter(filterKey.key, option)}\n label={option}\n />\n </div>\n ))}\n </div>\n ))}\n </MPopover>\n </>\n )}\n\n {sortable && sortKeys.length > 0 && (\n <>\n <MButton\n ref={sortBtnRef}\n variant=\"outlined\"\n size=\"sm\"\n startIcon={\n sortKey ? (\n sortDir === 'asc' ? (\n <MArrowUpIcon />\n ) : (\n <MArrowDownIcon />\n )\n ) : (\n <MSortIcon />\n )\n }\n aria-expanded={sortOpen}\n onClick={openSort}\n >\n {activeSort ? `Sort: ${activeSort.label}` : 'Sort'}\n </MButton>\n <MPopover\n open={sortOpen}\n anchorRef={sortBtnRef}\n onClose={() => setSortOpen(false)}\n placement=\"bottom-end\"\n className=\"card-grid-dropdown\"\n >\n {sortKeys.map((sortItem) => (\n <button\n key={sortItem.key}\n type=\"button\"\n className={cn('card-grid-sort-item', sortKey === sortItem.key && 'active')}\n onClick={() => {\n if (sortKey === sortItem.key) {\n setSortDir(sortDir === 'asc' ? 'desc' : 'asc')\n } else {\n setSortKey(sortItem.key)\n setSortDir('asc')\n }\n setSortOpen(false)\n }}\n >\n {sortItem.label}\n {sortKey === sortItem.key && (\n <span className=\"card-grid-sort-dir\">\n {sortDir === 'asc' ? (\n <MArrowUpIcon className=\"card-grid-sort-icon\" />\n ) : (\n <MArrowDownIcon className=\"card-grid-sort-icon\" />\n )}\n </span>\n )}\n </button>\n ))}\n </MPopover>\n </>\n )}\n </div>\n </div>\n )}\n\n {processed.length > 0 ? (\n <div\n className=\"card-grid-items\"\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }}\n >\n {processed.map((item, index) => renderCard(item, index))}\n </div>\n ) : (\n <div className=\"card-grid-empty\">{emptyMessage}</div>\n )}\n </div>\n )\n}\n","import type {MCardFinanceProps} from './MCardFinance.types'\nimport {cn} from '../../../utils/cn'\nimport {MSparkline} from '../../data/MSparkline/MSparkline'\nimport {MArrowUpIcon, MArrowDownIcon} from '../../../icons'\nimport './MCardFinance.css'\n\nfunction resolveChangeType(change: number | undefined, explicit?: MCardFinanceProps['changeType']) {\n if (explicit) return explicit\n if (change === undefined || change === 0) return 'neutral'\n return change > 0 ? 'up' : 'down'\n}\n\nexport function MCardFinance({\n label,\n value,\n change,\n changeType: changeTypeProp,\n changeLabel,\n icon,\n sparkline,\n sparklineType = 'area',\n color = 'primary',\n currency,\n className,\n ...rest\n}: MCardFinanceProps) {\n const changeType = resolveChangeType(change, changeTypeProp)\n\n const changeColor = changeType === 'up' ? 'success' : changeType === 'down' ? 'error' : 'neutral'\n\n return (\n <div className={cn('card-finance', `color-${color}`, className)} {...rest}>\n <div className=\"cf-top\">\n <div className=\"cf-meta\">\n <span className=\"cf-label\">{label}</span>\n {currency && <span className=\"cf-currency\">{currency}</span>}\n </div>\n {icon && <span className=\"cf-icon\">{icon}</span>}\n </div>\n\n <div className=\"cf-value\">{value}</div>\n\n <div className=\"cf-bottom\">\n {change !== undefined && (\n <span className={cn('cf-change', changeColor)}>\n {changeType === 'up' && <MArrowUpIcon size={14} />}\n {changeType === 'down' && <MArrowDownIcon size={14} />}\n <span className=\"cf-change-value\">\n {change > 0 ? '+' : ''}\n {change}%\n </span>\n {changeLabel && <span className=\"cf-change-label\">{changeLabel}</span>}\n </span>\n )}\n </div>\n\n <div className=\"cf-sparkline\">\n <MSparkline\n data={sparkline}\n type={sparklineType}\n color={changeColor === 'neutral' ? color : changeColor}\n height={46}\n padding={0}\n curved\n animated\n fillOpacity={0.18}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
package/dist/cards.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  const {ensureStyles}=require('./style-runtime.cjs')
2
2
  ensureStyles()
3
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MSkeleton-B0Mxe3L7.cjs`),t=require(`./cards-B75QM9JW.cjs`);exports.MCard=e.n,exports.MCardBody=e.r,exports.MCardBusiness=t.c,exports.MCardCourse=t.o,exports.MCardEvent=t.i,exports.MCardFinance=t.t,exports.MCardFooter=e.i,exports.MCardGrid=t.n,exports.MCardHeader=e.a,exports.MCardOffer=t.s,exports.MCardPayment=t.u,exports.MCardPaymentMethod=t.l,exports.MCardProduct=t.a,exports.MCardWidget=t.r;
3
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MSkeleton-5j1h9s95.cjs`),t=require(`./cards-BiYdorB0.cjs`);exports.MCard=e.n,exports.MCardBody=e.r,exports.MCardBusiness=t.c,exports.MCardCourse=t.o,exports.MCardEvent=t.i,exports.MCardFinance=t.t,exports.MCardFooter=e.i,exports.MCardGrid=t.n,exports.MCardHeader=e.a,exports.MCardOffer=t.s,exports.MCardPayment=t.u,exports.MCardPaymentMethod=t.l,exports.MCardProduct=t.a,exports.MCardWidget=t.r;
package/dist/cards.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import {ensureStyles} from './style-runtime.js'
2
2
  ensureStyles()
3
- import { a as e, i as t, n, r } from "./MSkeleton-Bqq_XJn8.js";
4
- import { a as i, c as a, i as o, l as s, n as c, o as l, r as u, s as d, t as f, u as p } from "./cards-BKi8MxNx.js";
3
+ import { a as e, i as t, n, r } from "./MSkeleton-DGhtNmpI.js";
4
+ import { a as i, c as a, i as o, l as s, n as c, o as l, r as u, s as d, t as f, u as p } from "./cards-fn61xD_5.js";
5
5
  export { n as MCard, r as MCardBody, a as MCardBusiness, l as MCardCourse, o as MCardEvent, f as MCardFinance, t as MCardFooter, c as MCardGrid, e as MCardHeader, d as MCardOffer, p as MCardPayment, s as MCardPaymentMethod, i as MCardProduct, u as MCardWidget };
@@ -1,2 +1,2 @@
1
1
  function e(...e){return e.filter(Boolean).join(` `)}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
2
- //# sourceMappingURL=cn-DYFxgzi2.cjs.map
2
+ //# sourceMappingURL=cn-CU5TNITO.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cn-DYFxgzi2.cjs","names":[],"sources":["../src/utils/cn.ts"],"sourcesContent":["// Join optional class names without pulling a runtime dependency.\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n"],"mappings":"AACA,SAAgB,EAAG,GAAG,EAAwD,CAC1E,OAAO,EAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI"}
1
+ {"version":3,"file":"cn-CU5TNITO.cjs","names":[],"sources":["../src/utils/cn.ts"],"sourcesContent":["// Join optional class names without pulling a runtime dependency.\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n"],"mappings":"AACA,SAAgB,EAAG,GAAG,EAAwD,CAC1E,OAAO,EAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI"}
@@ -5,4 +5,4 @@ function e(...e) {
5
5
  //#endregion
6
6
  export { e as t };
7
7
 
8
- //# sourceMappingURL=cn-CUSXNnjF.js.map
8
+ //# sourceMappingURL=cn-YER3QsV1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cn-CUSXNnjF.js","names":[],"sources":["../src/utils/cn.ts"],"sourcesContent":["// Join optional class names without pulling a runtime dependency.\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n"],"mappings":";AACA,SAAgB,EAAG,GAAG,GAAwD;AAC1E,QAAO,EAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI"}
1
+ {"version":3,"file":"cn-YER3QsV1.js","names":[],"sources":["../src/utils/cn.ts"],"sourcesContent":["// Join optional class names without pulling a runtime dependency.\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n"],"mappings":";AACA,SAAgB,EAAG,GAAG,GAAwD;AAC1E,QAAO,EAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./theme-CgS-bND3.cjs`),t=require(`./icons-DWMgDKgt.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./useInteractionEffect-D1ZdNbKU.cjs`),i=require(`./MButton-DrkVdRDy.cjs`);require(`./core-AKWkE8Bx.cjs`);let a=require(`react`),o=require(`react/jsx-runtime`);var s=(0,a.forwardRef)(function({orientation:e=`horizontal`,variant:t,size:r,color:s,attached:c=!0,className:l,children:u,...d},f){let p=(0,a.useMemo)(()=>({variant:t,size:r,color:s}),[t,r,s]);return(0,o.jsx)(i.i.Provider,{value:p,children:(0,o.jsx)(`div`,{ref:f,role:`group`,className:n.t(`button-group`,e,c&&`attached`,l),...d,children:u})})}),c=(0,a.createContext)(null);function l(){return(0,a.useContext)(c)}var u=(0,a.forwardRef)(function({checked:e,defaultChecked:t,name:i,id:s,value:c,disabled:u=!1,size:d=`md`,color:f=`primary`,label:p,labelPosition:m=`right`,onChange:h,clickEffect:g=`ripple`,rippleColor:_,className:v,style:y},b){let x=l(),S=x?.name??i,C=x?.disabled??u,w=x?.size??d,T=x?.color??f,E=x?x.value===c:e,{effectClassName:D,effectLayer:O,handlePointerDown:k,triggerEffect:A}=r.t({effect:g,disabled:C,centered:!0,color:_}),j=(0,a.useCallback)(e=>{h?.(e),x?.onChange&&c&&x.onChange(c)},[h,x,c]);return(0,o.jsxs)(`label`,{className:n.t(`radio`,w,m===`left`&&`label-left`,C&&`disabled`,v),style:y,children:[(0,o.jsxs)(`span`,{className:n.t(`circle`,`color-${T}`,D),onPointerDown:k,children:[O,(0,o.jsx)(`input`,{ref:b,type:`radio`,name:S,id:s,value:c,checked:E,defaultChecked:x?void 0:t,disabled:C,onChange:j,onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&A(e.currentTarget.parentElement)},className:`input`})]}),p&&(0,o.jsx)(`span`,{className:`label-text`,children:p})]})});function d({name:e,value:t,defaultValue:r,onChange:i,direction:s=`vertical`,children:l,disabled:u=!1,size:d=`md`,color:f=`primary`,error:p=!1,errorText:m,label:h,className:g,style:_}){let[v,y]=(0,a.useState)(r),b=t===void 0?v:t,x=(0,a.useCallback)(e=>{t===void 0&&y(e),i?.(e)},[i,t]),S=(0,a.useMemo)(()=>({name:e,value:b,disabled:u,size:d,color:f,onChange:x}),[e,b,u,d,f,x]);return(0,o.jsx)(c.Provider,{value:S,children:(0,o.jsxs)(`fieldset`,{className:n.t(`radio-group`,s,g),style:_,role:`radiogroup`,children:[h&&(0,o.jsx)(`legend`,{className:n.t(`label`,p&&`error`),children:h}),l,m&&(0,o.jsx)(`span`,{className:`field-error`,role:`alert`,children:m})]})})}function f({onLoadMore:e,loading:t=!1,hasMore:r=!0,loaded:s,total:c,auto:l=!1,autoThreshold:u=100,variant:d=`outlined`,color:f=`primary`,label:p=`Load more`,loadingLabel:m=`Loading...`,doneLabel:h=`All items loaded`,className:g,..._}){let v=(0,a.useRef)(null),y=(0,a.useRef)(e);y.current=e,(0,a.useEffect)(()=>{if(!l||!r||t)return;let e=v.current;if(!e)return;let n=new IntersectionObserver(e=>{e[0].isIntersecting&&y.current()},{rootMargin:`${u}px`});return n.observe(e),()=>n.disconnect()},[l,r,t,u]);let b=(0,a.useCallback)(()=>{!t&&r&&e()},[e,t,r]),x=s!==void 0&&c!==void 0;return(0,o.jsxs)(`div`,{className:n.t(`load-more`,g),..._,children:[x&&(0,o.jsxs)(`span`,{className:`load-more-count`,children:[s,` / `,c]}),r?(0,o.jsx)(i.t,{variant:d,color:f,loading:t,onClick:b,className:`load-more-btn`,children:t?m:p}):(0,o.jsx)(`span`,{className:`load-more-done`,children:h}),l&&r&&(0,o.jsx)(`div`,{ref:v,className:`load-more-sentinel`}),x&&(0,o.jsx)(`div`,{className:`load-more-bar`,children:(0,o.jsx)(`div`,{className:`load-more-bar-fill`,style:{width:`${Math.min(s/c*100,100)}%`}})})]})}function p({threshold:e=300,variant:r=`filled`,color:s=`primary`,smooth:c=!0,className:l}){let[u,d]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{function t(){d(window.scrollY>e)}return t(),window.addEventListener(`scroll`,t,{passive:!0}),()=>window.removeEventListener(`scroll`,t)},[e]),(0,o.jsx)(i.t,{variant:r,color:s,shape:`circle`,size:`lg`,iconOnly:!0,onClick:(0,a.useCallback)(()=>{window.scrollTo({top:0,behavior:c?`smooth`:`instant`})},[c]),"aria-label":`Scroll to top`,className:n.t(`scroll-top`,u&&`visible`,l),children:(0,o.jsx)(t.ki,{})})}function m(e,t){return(0,o.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`,...t,children:e})}function h(e){return m((0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10.2`,fill:`#fff`,stroke:`#dadce0`,strokeWidth:`1.2`}),(0,o.jsx)(`path`,{d:`M17.95 12.25c0-.48-.04-.83-.13-1.2H12v2.26h3.42c-.07.56-.48 1.4-1.4 1.97l-.01.08 2 1.52.14.02c1.28-1.15 1.8-2.84 1.8-4.65z`,fill:`#4285F4`}),(0,o.jsx)(`path`,{d:`M12 18.2c1.67 0 3.07-.54 4.1-1.48l-2.13-1.62c-.57.39-1.34.67-1.97.67-1.64 0-3.03-1.06-3.53-2.53l-.08.01-2.08 1.58-.03.08c1.02 1.97 3.09 3.29 5.72 3.29z`,fill:`#34A853`}),(0,o.jsx)(`path`,{d:`M8.47 13.24a3.72 3.72 0 0 1-.2-1.24c0-.43.08-.84.19-1.24l-.01-.08-2.1-1.6-.07.03a6.02 6.02 0 0 0 0 5.78l2.19-1.65z`,fill:`#FBBC05`}),(0,o.jsx)(`path`,{d:`M12 8.22c.8 0 1.53.27 2.1.8l1.54-1.48C14.99 6.96 13.67 6.5 12 6.5c-2.63 0-4.7 1.32-5.72 3.29l2.18 1.66c.5-1.47 1.9-2.53 3.54-2.53z`,fill:`#EA4335`})]}),e)}function g(e){return m((0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`rect`,{x:`2.2`,y:`2.2`,width:`19.6`,height:`19.6`,rx:`6.2`,fill:`#1877F2`}),(0,o.jsx)(`path`,{d:`M13.28 20v-6.02h2.02l.31-2.43h-2.33V10c0-.78.27-1.37 1.35-1.37h1.11V6.4c-.4-.06-1.09-.11-2.03-.11-2.3 0-3.64 1.22-3.64 3.76v1.49h-1.9v2.44h1.9V20z`,fill:`#fff`})]}),e)}function _(e){return m((0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`path`,{d:`M15.38 11.84c.02 2.33 2.04 3.1 2.07 3.12-.03.07-.33 1.09-1.06 2.16-.63.91-1.3 1.84-2.34 1.86-1.03.02-1.37-.61-2.57-.61-1.2 0-1.57.59-2.53.63-1.02.04-1.79-1.01-2.43-1.92-1.3-1.89-2.3-5.33-.97-7.64.67-1.15 1.86-1.88 3.14-1.9.98-.02 1.89.65 2.57.65.67 0 1.92-.81 3.24-.69.55.02 2.1.22 3.09 1.67-.08.05-1.84 1.07-1.81 2.67z`,fill:`currentColor`}),(0,o.jsx)(`path`,{d:`M13.59 4.67c.53-.64.9-1.52.8-2.42-.77.04-1.69.52-2.24 1.15-.5.58-.93 1.49-.82 2.35.86.07 1.72-.44 2.26-1.08z`,fill:`currentColor`})]}),e)}function v(e){return m((0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`rect`,{x:`3.5`,y:`3.5`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#F25022`}),(0,o.jsx)(`rect`,{x:`12.7`,y:`3.5`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#7FBA00`}),(0,o.jsx)(`rect`,{x:`3.5`,y:`12.7`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#00A4EF`}),(0,o.jsx)(`rect`,{x:`12.7`,y:`12.7`,width:`7.8`,height:`7.8`,rx:`1.3`,fill:`#FFB900`})]}),e)}function y(e){return m((0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10.1`,fill:`#fff`}),(0,o.jsx)(`path`,{d:`M12.87 6.76c-2.95 0-4.74 2.03-4.74 4.34 0 1.65.92 3.07 2.38 3.62.1.03.14.01.17-.06l.32-1.23c.05-.14.02-.19-.09-.33-.26-.33-.47-.96-.47-1.57 0-1.52 1.14-2.97 3.08-2.97 1.68 0 2.86 1.14 2.86 2.78 0 1.86-.93 3.13-2.14 3.13-.67 0-1.17-.56-1-1.23.18-.8.55-1.64.55-2.2 0-.51-.28-.93-.84-.93-.67 0-1.2.69-1.2 1.62 0 .59.2.99.2.99l-.78 3.28c-.14.58-.03 1.55.01 1.68.02.08.1.1.15.03.09-.11 1.07-1.49 1.24-2.18l.27-1.06c.25.48.99.89 1.77.89 2.34 0 4.04-2.15 4.04-4.79 0-2.54-2.08-4.44-4.78-4.44z`,fill:`#E60023`})]}),e)}function b(e){return m((0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`rect`,{x:`2.4`,y:`2.4`,width:`19.2`,height:`19.2`,rx:`4.8`,fill:`#fff`}),(0,o.jsx)(`path`,{d:`M8.1 10.02h2.04v7.24H8.1zm1.03-3.22a1.17 1.17 0 1 1 0 2.35 1.17 1.17 0 0 1 0-2.35zm2.68 3.22h1.95v.99c.34-.61 1.08-1.15 2.13-1.15 2.15 0 2.82 1.42 2.82 3.78v3.62h-2.04v-3.26c0-.98-.35-1.67-1.23-1.67-.66 0-1.05.45-1.23.88-.08.16-.08.38-.08.59v3.46h-2.32z`,fill:`#0A66C2`})]}),e)}var x={google:{label:`Sign in with Google`,iconLabel:`Google`,mode:`google`,Icon:h},facebook:{label:`Sign in with Facebook`,iconLabel:`Facebook`,mode:`outline`,Icon:g},apple:{label:`Sign in with Apple`,iconLabel:`Apple`,mode:`brand`,Icon:_},microsoft:{label:`Sign in with Microsoft`,iconLabel:`Microsoft`,mode:`brand`,Icon:v},pinterest:{label:`Sign in with Pinterest`,iconLabel:`Pinterest`,mode:`brand`,Icon:y},linkedin:{label:`Sign in with LinkedIn`,iconLabel:`LinkedIn`,mode:`brand`,Icon:b}},S=(0,a.forwardRef)(function({platform:t=`google`,variant:a=`outline`,size:s=`md`,iconOnly:c=!1,iconShape:l=`circle`,hidden:u,fullWidth:d=!1,loading:f=!1,active:p=!1,pulsing:m=!1,clickEffect:h=`ripple`,rippleColor:g,className:_,style:v,children:y,disabled:b=!1,type:S=`button`,onPointerDown:C,onKeyDown:w,"aria-label":T,...E},D){let O=x[t],k=O.Icon,A=y??O.label,j=T??(c?O.iconLabel:void 0),M=O.mode===`google`?a:O.mode,N=b||f,{effectClassName:P,effectLayer:F,handlePointerDown:I,triggerEffect:L}=r.t({effect:h,disabled:N,centered:c,color:g});return(0,o.jsxs)(`button`,{ref:D,type:S,className:n.t(`social-button-root`,t,M,s,d&&`full-width`,c&&`icon-only`,c&&`icon-shape-${l}`,f&&`loading`,p&&`active`,m&&`pulsing`,N&&`disabled`,P,_),style:v,disabled:N,"aria-busy":f||void 0,"aria-label":j,onPointerDown:e=>{I(e),C?.(e)},onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&L(e.currentTarget),w?.(e)},...e.r(u),...E,children:[F,f&&(0,o.jsx)(i.r,{size:`sm`,color:`inherit`,className:`social-button-spinner`,"aria-hidden":`true`}),(0,o.jsx)(`span`,{className:`social-button-brand`,"aria-hidden":`true`,children:(0,o.jsx)(k,{className:`social-button-mark`})}),!c&&(0,o.jsx)(`span`,{className:`social-button-label`,children:A})]})});Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}});
2
+ //# sourceMappingURL=controls-C5PtrGZf.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"controls-B7wV_kjJ.cjs","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx","../src/components/controls/MRadio/RadioContext.ts","../src/components/controls/MRadio/MRadio.tsx","../src/components/controls/MRadio/MRadioGroup.tsx","../src/components/controls/MLoadMore/MLoadMore.tsx","../src/components/controls/MScrollTop/MScrollTop.tsx","../src/components/controls/MSocialButton/MSocialButton.icons.tsx","../src/components/controls/MSocialButton/MSocialButton.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n","import {createContext, useContext} from 'react'\nimport type {MRadioGroupContextValue} from './MRadio.types'\n\nexport const RadioContext = createContext<MRadioGroupContextValue | null>(null)\n\n// Read the nearest radio-group context when a radio participates in grouped state.\nexport function useRadioGroup(): MRadioGroupContextValue | null {\n return useContext(RadioContext)\n}\n","import {forwardRef, useCallback} from 'react'\nimport type * as React from 'react'\nimport type {MRadioProps} from './MRadio.types'\nimport {useRadioGroup} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MRadio.css'\n\n// Render a single radio that can work standalone or inside MRadioGroup.\nexport const MRadio = forwardRef<HTMLInputElement, MRadioProps>(function MRadio(\n {\n checked,\n defaultChecked,\n name,\n id,\n value,\n disabled = false,\n size = 'md',\n color = 'primary',\n label,\n labelPosition = 'right',\n onChange,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n },\n ref\n) {\n const group = useRadioGroup()\n\n const resolvedName = group?.name ?? name\n const resolvedDisabled = group?.disabled ?? disabled\n const resolvedSize = group?.size ?? size\n const resolvedColor = group?.color ?? color\n const resolvedChecked = group ? group.value === value : checked\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect,\n disabled: resolvedDisabled,\n centered: true,\n color: rippleColor,\n })\n\n // Delegate selection back to the group when one is present.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n if (group?.onChange && value) {\n group.onChange(value)\n }\n },\n [onChange, group, value]\n )\n\n return (\n <label\n className={cn(\n 'radio',\n resolvedSize,\n labelPosition === 'left' && 'label-left',\n resolvedDisabled && 'disabled',\n className\n )}\n style={style}\n >\n <span className={cn('circle', `color-${resolvedColor}`, effectClassName)} onPointerDown={handlePointerDown}>\n {effectLayer}\n <input\n ref={ref}\n type=\"radio\"\n name={resolvedName}\n id={id}\n value={value}\n checked={resolvedChecked}\n defaultChecked={!group ? defaultChecked : undefined}\n disabled={resolvedDisabled}\n onChange={handleChange}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget.parentElement as HTMLSpanElement | null)\n }\n }}\n className=\"input\"\n />\n </span>\n {label && <span className=\"label-text\">{label}</span>}\n </label>\n )\n})\n","import {useState, useCallback, useMemo} from 'react'\nimport type {MRadioGroupProps} from './MRadio.types'\nimport {RadioContext} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport './MRadio.css'\n\n// Coordinate multiple radio items through shared context and optional controlled state.\nexport function MRadioGroup({\n name,\n value,\n defaultValue,\n onChange,\n direction = 'vertical',\n children,\n disabled = false,\n size = 'md',\n color = 'primary',\n error = false,\n errorText,\n label,\n className,\n style,\n}: MRadioGroupProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const currentValue = value !== undefined ? value : internalValue\n\n // Mirror controlled and uncontrolled usage with the same group API.\n const handleChange = useCallback(\n (val: string) => {\n if (value === undefined) {\n setInternalValue(val)\n }\n onChange?.(val)\n },\n [onChange, value]\n )\n\n // Memoize context so nested radios only update when relevant inputs change.\n const ctx = useMemo(\n () => ({name, value: currentValue, disabled, size, color, onChange: handleChange}),\n [name, currentValue, disabled, size, color, handleChange]\n )\n\n return (\n <RadioContext.Provider value={ctx}>\n <fieldset className={cn('radio-group', direction, className)} style={style} role=\"radiogroup\">\n {label && <legend className={cn('label', error && 'error')}>{label}</legend>}\n {children}\n {errorText && (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n </fieldset>\n </RadioContext.Provider>\n )\n}\n","import {useEffect, useRef, useCallback} from 'react'\nimport type {MLoadMoreProps} from './MLoadMore.types'\nimport {MButton} from '../MButton'\nimport {cn} from '../../../utils/cn'\nimport './MLoadMore.css'\n\nexport function MLoadMore({\n onLoadMore,\n loading = false,\n hasMore = true,\n loaded,\n total,\n auto = false,\n autoThreshold = 100,\n variant = 'outlined',\n color = 'primary',\n label = 'Load more',\n loadingLabel = 'Loading...',\n doneLabel = 'All items loaded',\n className,\n ...rest\n}: MLoadMoreProps) {\n const sentinelRef = useRef<HTMLDivElement>(null)\n const loadMoreRef = useRef(onLoadMore)\n loadMoreRef.current = onLoadMore\n\n useEffect(() => {\n if (!auto || !hasMore || loading) return\n\n const sentinel = sentinelRef.current\n if (!sentinel) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n loadMoreRef.current()\n }\n },\n {rootMargin: `${autoThreshold}px`}\n )\n\n observer.observe(sentinel)\n return () => observer.disconnect()\n }, [auto, hasMore, loading, autoThreshold])\n\n const handleClick = useCallback(() => {\n if (!loading && hasMore) onLoadMore()\n }, [onLoadMore, loading, hasMore])\n\n const showCount = loaded !== undefined && total !== undefined\n\n return (\n <div className={cn('load-more', className)} {...rest}>\n {showCount && (\n <span className=\"load-more-count\">\n {loaded} / {total}\n </span>\n )}\n\n {hasMore ? (\n <MButton\n variant={variant}\n color={color}\n loading={loading}\n onClick={handleClick}\n className=\"load-more-btn\"\n >\n {loading ? loadingLabel : label}\n </MButton>\n ) : (\n <span className=\"load-more-done\">{doneLabel}</span>\n )}\n\n {auto && hasMore && <div ref={sentinelRef} className=\"load-more-sentinel\" />}\n\n {showCount && (\n <div className=\"load-more-bar\">\n <div className=\"load-more-bar-fill\" style={{width: `${Math.min((loaded / total) * 100, 100)}%`}} />\n </div>\n )}\n </div>\n )\n}\n","import {useState, useEffect, useCallback} from 'react'\nimport type {MScrollTopProps} from './MScrollTop.types'\nimport {MButton} from '../MButton'\nimport {MArrowUpIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MScrollTop.css'\n\nexport function MScrollTop({\n threshold = 300,\n variant = 'filled',\n color = 'primary',\n smooth = true,\n className,\n}: MScrollTopProps) {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n function onScroll() {\n setVisible(window.scrollY > threshold)\n }\n onScroll()\n window.addEventListener('scroll', onScroll, {passive: true})\n return () => window.removeEventListener('scroll', onScroll)\n }, [threshold])\n\n const scrollToTop = useCallback(() => {\n window.scrollTo({top: 0, behavior: smooth ? 'smooth' : 'instant'})\n }, [smooth])\n\n return (\n <MButton\n variant={variant}\n color={color}\n shape=\"circle\"\n size=\"lg\"\n iconOnly\n onClick={scrollToTop}\n aria-label=\"Scroll to top\"\n className={cn('scroll-top', visible && 'visible', className)}\n >\n <MArrowUpIcon />\n </MButton>\n )\n}\n","import type {ReactNode, SVGProps} from 'react'\n\ntype SocialMarkProps = SVGProps<SVGSVGElement>\n\nfunction createMark(children: ReactNode, props: SocialMarkProps) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" {...props}>\n {children}\n </svg>\n )\n}\n\nexport function SocialGoogleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.2\" fill=\"#fff\" stroke=\"#dadce0\" strokeWidth=\"1.2\" />\n <path\n d=\"M17.95 12.25c0-.48-.04-.83-.13-1.2H12v2.26h3.42c-.07.56-.48 1.4-1.4 1.97l-.01.08 2 1.52.14.02c1.28-1.15 1.8-2.84 1.8-4.65z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 18.2c1.67 0 3.07-.54 4.1-1.48l-2.13-1.62c-.57.39-1.34.67-1.97.67-1.64 0-3.03-1.06-3.53-2.53l-.08.01-2.08 1.58-.03.08c1.02 1.97 3.09 3.29 5.72 3.29z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M8.47 13.24a3.72 3.72 0 0 1-.2-1.24c0-.43.08-.84.19-1.24l-.01-.08-2.1-1.6-.07.03a6.02 6.02 0 0 0 0 5.78l2.19-1.65z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 8.22c.8 0 1.53.27 2.1.8l1.54-1.48C14.99 6.96 13.67 6.5 12 6.5c-2.63 0-4.7 1.32-5.72 3.29l2.18 1.66c.5-1.47 1.9-2.53 3.54-2.53z\"\n fill=\"#EA4335\"\n />\n </>,\n props\n )\n}\n\nexport function SocialFacebookMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.2\" y=\"2.2\" width=\"19.6\" height=\"19.6\" rx=\"6.2\" fill=\"#1877F2\" />\n <path\n d=\"M13.28 20v-6.02h2.02l.31-2.43h-2.33V10c0-.78.27-1.37 1.35-1.37h1.11V6.4c-.4-.06-1.09-.11-2.03-.11-2.3 0-3.64 1.22-3.64 3.76v1.49h-1.9v2.44h1.9V20z\"\n fill=\"#fff\"\n />\n </>,\n props\n )\n}\n\nexport function SocialAppleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <path\n d=\"M15.38 11.84c.02 2.33 2.04 3.1 2.07 3.12-.03.07-.33 1.09-1.06 2.16-.63.91-1.3 1.84-2.34 1.86-1.03.02-1.37-.61-2.57-.61-1.2 0-1.57.59-2.53.63-1.02.04-1.79-1.01-2.43-1.92-1.3-1.89-2.3-5.33-.97-7.64.67-1.15 1.86-1.88 3.14-1.9.98-.02 1.89.65 2.57.65.67 0 1.92-.81 3.24-.69.55.02 2.1.22 3.09 1.67-.08.05-1.84 1.07-1.81 2.67z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.59 4.67c.53-.64.9-1.52.8-2.42-.77.04-1.69.52-2.24 1.15-.5.58-.93 1.49-.82 2.35.86.07 1.72-.44 2.26-1.08z\"\n fill=\"currentColor\"\n />\n </>,\n props\n )\n}\n\nexport function SocialMicrosoftMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"3.5\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#F25022\" />\n <rect x=\"12.7\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#7FBA00\" />\n <rect x=\"3.5\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#00A4EF\" />\n <rect x=\"12.7\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#FFB900\" />\n </>,\n props\n )\n}\n\nexport function SocialPinterestMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.1\" fill=\"#fff\" />\n <path\n d=\"M12.87 6.76c-2.95 0-4.74 2.03-4.74 4.34 0 1.65.92 3.07 2.38 3.62.1.03.14.01.17-.06l.32-1.23c.05-.14.02-.19-.09-.33-.26-.33-.47-.96-.47-1.57 0-1.52 1.14-2.97 3.08-2.97 1.68 0 2.86 1.14 2.86 2.78 0 1.86-.93 3.13-2.14 3.13-.67 0-1.17-.56-1-1.23.18-.8.55-1.64.55-2.2 0-.51-.28-.93-.84-.93-.67 0-1.2.69-1.2 1.62 0 .59.2.99.2.99l-.78 3.28c-.14.58-.03 1.55.01 1.68.02.08.1.1.15.03.09-.11 1.07-1.49 1.24-2.18l.27-1.06c.25.48.99.89 1.77.89 2.34 0 4.04-2.15 4.04-4.79 0-2.54-2.08-4.44-4.78-4.44z\"\n fill=\"#E60023\"\n />\n </>,\n props\n )\n}\n\nexport function SocialLinkedInMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.4\" y=\"2.4\" width=\"19.2\" height=\"19.2\" rx=\"4.8\" fill=\"#fff\" />\n <path\n d=\"M8.1 10.02h2.04v7.24H8.1zm1.03-3.22a1.17 1.17 0 1 1 0 2.35 1.17 1.17 0 0 1 0-2.35zm2.68 3.22h1.95v.99c.34-.61 1.08-1.15 2.13-1.15 2.15 0 2.82 1.42 2.82 3.78v3.62h-2.04v-3.26c0-.98-.35-1.67-1.23-1.67-.66 0-1.05.45-1.23.88-.08.16-.08.38-.08.59v3.46h-2.32z\"\n fill=\"#0A66C2\"\n />\n </>,\n props\n )\n}\n","import {forwardRef} from 'react'\nimport type {MSocialButtonProps} from './MSocialButton.types'\nimport {getHiddenProps} from '../../../theme'\nimport {\n SocialAppleMark,\n SocialFacebookMark,\n SocialGoogleMark,\n SocialLinkedInMark,\n SocialMicrosoftMark,\n SocialPinterestMark,\n} from './MSocialButton.icons'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MSocialButton.css'\n\nconst socialButtonConfig = {\n google: {\n label: 'Sign in with Google',\n iconLabel: 'Google',\n mode: 'google',\n Icon: SocialGoogleMark,\n },\n facebook: {\n label: 'Sign in with Facebook',\n iconLabel: 'Facebook',\n mode: 'outline',\n Icon: SocialFacebookMark,\n },\n apple: {\n label: 'Sign in with Apple',\n iconLabel: 'Apple',\n mode: 'brand',\n Icon: SocialAppleMark,\n },\n microsoft: {\n label: 'Sign in with Microsoft',\n iconLabel: 'Microsoft',\n mode: 'brand',\n Icon: SocialMicrosoftMark,\n },\n pinterest: {\n label: 'Sign in with Pinterest',\n iconLabel: 'Pinterest',\n mode: 'brand',\n Icon: SocialPinterestMark,\n },\n linkedin: {\n label: 'Sign in with LinkedIn',\n iconLabel: 'LinkedIn',\n mode: 'brand',\n Icon: SocialLinkedInMark,\n },\n} as const\n\nexport const MSocialButton = forwardRef<HTMLButtonElement, MSocialButtonProps>(function MSocialButton(\n {\n platform = 'google',\n variant = 'outline',\n size = 'md',\n iconOnly = false,\n iconShape = 'circle',\n hidden,\n fullWidth = false,\n loading = false,\n active = false,\n pulsing = false,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onPointerDown,\n onKeyDown,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref\n) {\n const config = socialButtonConfig[platform]\n const Icon = config.Icon\n const label = children ?? config.label\n const resolvedAriaLabel = ariaLabel ?? (iconOnly ? config.iconLabel : undefined)\n const resolvedVariant = config.mode === 'google' ? variant : config.mode\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLButtonElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n 'social-button-root',\n platform,\n resolvedVariant,\n size,\n fullWidth && 'full-width',\n iconOnly && 'icon-only',\n iconOnly && `icon-shape-${iconShape}`,\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n aria-label={resolvedAriaLabel}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget)\n }\n\n onKeyDown?.(event)\n }}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {effectLayer}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" className=\"social-button-spinner\" aria-hidden=\"true\" />}\n <span className=\"social-button-brand\" aria-hidden=\"true\">\n <Icon className=\"social-button-mark\" />\n </span>\n {!iconOnly && <span className=\"social-button-label\">{label}</span>}\n </button>\n )\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"controls-C5PtrGZf.cjs","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx","../src/components/controls/MRadio/RadioContext.ts","../src/components/controls/MRadio/MRadio.tsx","../src/components/controls/MRadio/MRadioGroup.tsx","../src/components/controls/MLoadMore/MLoadMore.tsx","../src/components/controls/MScrollTop/MScrollTop.tsx","../src/components/controls/MSocialButton/MSocialButton.icons.tsx","../src/components/controls/MSocialButton/MSocialButton.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n","import {createContext, useContext} from 'react'\nimport type {MRadioGroupContextValue} from './MRadio.types'\n\nexport const RadioContext = createContext<MRadioGroupContextValue | null>(null)\n\n// Read the nearest radio-group context when a radio participates in grouped state.\nexport function useRadioGroup(): MRadioGroupContextValue | null {\n return useContext(RadioContext)\n}\n","import {forwardRef, useCallback} from 'react'\nimport type * as React from 'react'\nimport type {MRadioProps} from './MRadio.types'\nimport {useRadioGroup} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MRadio.css'\n\n// Render a single radio that can work standalone or inside MRadioGroup.\nexport const MRadio = forwardRef<HTMLInputElement, MRadioProps>(function MRadio(\n {\n checked,\n defaultChecked,\n name,\n id,\n value,\n disabled = false,\n size = 'md',\n color = 'primary',\n label,\n labelPosition = 'right',\n onChange,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n },\n ref\n) {\n const group = useRadioGroup()\n\n const resolvedName = group?.name ?? name\n const resolvedDisabled = group?.disabled ?? disabled\n const resolvedSize = group?.size ?? size\n const resolvedColor = group?.color ?? color\n const resolvedChecked = group ? group.value === value : checked\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect,\n disabled: resolvedDisabled,\n centered: true,\n color: rippleColor,\n })\n\n // Delegate selection back to the group when one is present.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n if (group?.onChange && value) {\n group.onChange(value)\n }\n },\n [onChange, group, value]\n )\n\n return (\n <label\n className={cn(\n 'radio',\n resolvedSize,\n labelPosition === 'left' && 'label-left',\n resolvedDisabled && 'disabled',\n className\n )}\n style={style}\n >\n <span className={cn('circle', `color-${resolvedColor}`, effectClassName)} onPointerDown={handlePointerDown}>\n {effectLayer}\n <input\n ref={ref}\n type=\"radio\"\n name={resolvedName}\n id={id}\n value={value}\n checked={resolvedChecked}\n defaultChecked={!group ? defaultChecked : undefined}\n disabled={resolvedDisabled}\n onChange={handleChange}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget.parentElement as HTMLSpanElement | null)\n }\n }}\n className=\"input\"\n />\n </span>\n {label && <span className=\"label-text\">{label}</span>}\n </label>\n )\n})\n","import {useState, useCallback, useMemo} from 'react'\nimport type {MRadioGroupProps} from './MRadio.types'\nimport {RadioContext} from './RadioContext'\nimport {cn} from '../../../utils/cn'\nimport './MRadio.css'\n\n// Coordinate multiple radio items through shared context and optional controlled state.\nexport function MRadioGroup({\n name,\n value,\n defaultValue,\n onChange,\n direction = 'vertical',\n children,\n disabled = false,\n size = 'md',\n color = 'primary',\n error = false,\n errorText,\n label,\n className,\n style,\n}: MRadioGroupProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const currentValue = value !== undefined ? value : internalValue\n\n // Mirror controlled and uncontrolled usage with the same group API.\n const handleChange = useCallback(\n (val: string) => {\n if (value === undefined) {\n setInternalValue(val)\n }\n onChange?.(val)\n },\n [onChange, value]\n )\n\n // Memoize context so nested radios only update when relevant inputs change.\n const ctx = useMemo(\n () => ({name, value: currentValue, disabled, size, color, onChange: handleChange}),\n [name, currentValue, disabled, size, color, handleChange]\n )\n\n return (\n <RadioContext.Provider value={ctx}>\n <fieldset className={cn('radio-group', direction, className)} style={style} role=\"radiogroup\">\n {label && <legend className={cn('label', error && 'error')}>{label}</legend>}\n {children}\n {errorText && (\n <span className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n </fieldset>\n </RadioContext.Provider>\n )\n}\n","import {useEffect, useRef, useCallback} from 'react'\nimport type {MLoadMoreProps} from './MLoadMore.types'\nimport {MButton} from '../MButton'\nimport {cn} from '../../../utils/cn'\nimport './MLoadMore.css'\n\nexport function MLoadMore({\n onLoadMore,\n loading = false,\n hasMore = true,\n loaded,\n total,\n auto = false,\n autoThreshold = 100,\n variant = 'outlined',\n color = 'primary',\n label = 'Load more',\n loadingLabel = 'Loading...',\n doneLabel = 'All items loaded',\n className,\n ...rest\n}: MLoadMoreProps) {\n const sentinelRef = useRef<HTMLDivElement>(null)\n const loadMoreRef = useRef(onLoadMore)\n loadMoreRef.current = onLoadMore\n\n useEffect(() => {\n if (!auto || !hasMore || loading) return\n\n const sentinel = sentinelRef.current\n if (!sentinel) return\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n loadMoreRef.current()\n }\n },\n {rootMargin: `${autoThreshold}px`}\n )\n\n observer.observe(sentinel)\n return () => observer.disconnect()\n }, [auto, hasMore, loading, autoThreshold])\n\n const handleClick = useCallback(() => {\n if (!loading && hasMore) onLoadMore()\n }, [onLoadMore, loading, hasMore])\n\n const showCount = loaded !== undefined && total !== undefined\n\n return (\n <div className={cn('load-more', className)} {...rest}>\n {showCount && (\n <span className=\"load-more-count\">\n {loaded} / {total}\n </span>\n )}\n\n {hasMore ? (\n <MButton\n variant={variant}\n color={color}\n loading={loading}\n onClick={handleClick}\n className=\"load-more-btn\"\n >\n {loading ? loadingLabel : label}\n </MButton>\n ) : (\n <span className=\"load-more-done\">{doneLabel}</span>\n )}\n\n {auto && hasMore && <div ref={sentinelRef} className=\"load-more-sentinel\" />}\n\n {showCount && (\n <div className=\"load-more-bar\">\n <div className=\"load-more-bar-fill\" style={{width: `${Math.min((loaded / total) * 100, 100)}%`}} />\n </div>\n )}\n </div>\n )\n}\n","import {useState, useEffect, useCallback} from 'react'\nimport type {MScrollTopProps} from './MScrollTop.types'\nimport {MButton} from '../MButton'\nimport {MArrowUpIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MScrollTop.css'\n\nexport function MScrollTop({\n threshold = 300,\n variant = 'filled',\n color = 'primary',\n smooth = true,\n className,\n}: MScrollTopProps) {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n function onScroll() {\n setVisible(window.scrollY > threshold)\n }\n onScroll()\n window.addEventListener('scroll', onScroll, {passive: true})\n return () => window.removeEventListener('scroll', onScroll)\n }, [threshold])\n\n const scrollToTop = useCallback(() => {\n window.scrollTo({top: 0, behavior: smooth ? 'smooth' : 'instant'})\n }, [smooth])\n\n return (\n <MButton\n variant={variant}\n color={color}\n shape=\"circle\"\n size=\"lg\"\n iconOnly\n onClick={scrollToTop}\n aria-label=\"Scroll to top\"\n className={cn('scroll-top', visible && 'visible', className)}\n >\n <MArrowUpIcon />\n </MButton>\n )\n}\n","import type {ReactNode, SVGProps} from 'react'\n\ntype SocialMarkProps = SVGProps<SVGSVGElement>\n\nfunction createMark(children: ReactNode, props: SocialMarkProps) {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" {...props}>\n {children}\n </svg>\n )\n}\n\nexport function SocialGoogleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.2\" fill=\"#fff\" stroke=\"#dadce0\" strokeWidth=\"1.2\" />\n <path\n d=\"M17.95 12.25c0-.48-.04-.83-.13-1.2H12v2.26h3.42c-.07.56-.48 1.4-1.4 1.97l-.01.08 2 1.52.14.02c1.28-1.15 1.8-2.84 1.8-4.65z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 18.2c1.67 0 3.07-.54 4.1-1.48l-2.13-1.62c-.57.39-1.34.67-1.97.67-1.64 0-3.03-1.06-3.53-2.53l-.08.01-2.08 1.58-.03.08c1.02 1.97 3.09 3.29 5.72 3.29z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M8.47 13.24a3.72 3.72 0 0 1-.2-1.24c0-.43.08-.84.19-1.24l-.01-.08-2.1-1.6-.07.03a6.02 6.02 0 0 0 0 5.78l2.19-1.65z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 8.22c.8 0 1.53.27 2.1.8l1.54-1.48C14.99 6.96 13.67 6.5 12 6.5c-2.63 0-4.7 1.32-5.72 3.29l2.18 1.66c.5-1.47 1.9-2.53 3.54-2.53z\"\n fill=\"#EA4335\"\n />\n </>,\n props\n )\n}\n\nexport function SocialFacebookMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.2\" y=\"2.2\" width=\"19.6\" height=\"19.6\" rx=\"6.2\" fill=\"#1877F2\" />\n <path\n d=\"M13.28 20v-6.02h2.02l.31-2.43h-2.33V10c0-.78.27-1.37 1.35-1.37h1.11V6.4c-.4-.06-1.09-.11-2.03-.11-2.3 0-3.64 1.22-3.64 3.76v1.49h-1.9v2.44h1.9V20z\"\n fill=\"#fff\"\n />\n </>,\n props\n )\n}\n\nexport function SocialAppleMark(props: SocialMarkProps) {\n return createMark(\n <>\n <path\n d=\"M15.38 11.84c.02 2.33 2.04 3.1 2.07 3.12-.03.07-.33 1.09-1.06 2.16-.63.91-1.3 1.84-2.34 1.86-1.03.02-1.37-.61-2.57-.61-1.2 0-1.57.59-2.53.63-1.02.04-1.79-1.01-2.43-1.92-1.3-1.89-2.3-5.33-.97-7.64.67-1.15 1.86-1.88 3.14-1.9.98-.02 1.89.65 2.57.65.67 0 1.92-.81 3.24-.69.55.02 2.1.22 3.09 1.67-.08.05-1.84 1.07-1.81 2.67z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.59 4.67c.53-.64.9-1.52.8-2.42-.77.04-1.69.52-2.24 1.15-.5.58-.93 1.49-.82 2.35.86.07 1.72-.44 2.26-1.08z\"\n fill=\"currentColor\"\n />\n </>,\n props\n )\n}\n\nexport function SocialMicrosoftMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"3.5\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#F25022\" />\n <rect x=\"12.7\" y=\"3.5\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#7FBA00\" />\n <rect x=\"3.5\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#00A4EF\" />\n <rect x=\"12.7\" y=\"12.7\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"#FFB900\" />\n </>,\n props\n )\n}\n\nexport function SocialPinterestMark(props: SocialMarkProps) {\n return createMark(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10.1\" fill=\"#fff\" />\n <path\n d=\"M12.87 6.76c-2.95 0-4.74 2.03-4.74 4.34 0 1.65.92 3.07 2.38 3.62.1.03.14.01.17-.06l.32-1.23c.05-.14.02-.19-.09-.33-.26-.33-.47-.96-.47-1.57 0-1.52 1.14-2.97 3.08-2.97 1.68 0 2.86 1.14 2.86 2.78 0 1.86-.93 3.13-2.14 3.13-.67 0-1.17-.56-1-1.23.18-.8.55-1.64.55-2.2 0-.51-.28-.93-.84-.93-.67 0-1.2.69-1.2 1.62 0 .59.2.99.2.99l-.78 3.28c-.14.58-.03 1.55.01 1.68.02.08.1.1.15.03.09-.11 1.07-1.49 1.24-2.18l.27-1.06c.25.48.99.89 1.77.89 2.34 0 4.04-2.15 4.04-4.79 0-2.54-2.08-4.44-4.78-4.44z\"\n fill=\"#E60023\"\n />\n </>,\n props\n )\n}\n\nexport function SocialLinkedInMark(props: SocialMarkProps) {\n return createMark(\n <>\n <rect x=\"2.4\" y=\"2.4\" width=\"19.2\" height=\"19.2\" rx=\"4.8\" fill=\"#fff\" />\n <path\n d=\"M8.1 10.02h2.04v7.24H8.1zm1.03-3.22a1.17 1.17 0 1 1 0 2.35 1.17 1.17 0 0 1 0-2.35zm2.68 3.22h1.95v.99c.34-.61 1.08-1.15 2.13-1.15 2.15 0 2.82 1.42 2.82 3.78v3.62h-2.04v-3.26c0-.98-.35-1.67-1.23-1.67-.66 0-1.05.45-1.23.88-.08.16-.08.38-.08.59v3.46h-2.32z\"\n fill=\"#0A66C2\"\n />\n </>,\n props\n )\n}\n","import {forwardRef} from 'react'\nimport type {MSocialButtonProps} from './MSocialButton.types'\nimport {getHiddenProps} from '../../../theme'\nimport {\n SocialAppleMark,\n SocialFacebookMark,\n SocialGoogleMark,\n SocialLinkedInMark,\n SocialMicrosoftMark,\n SocialPinterestMark,\n} from './MSocialButton.icons'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MSocialButton.css'\n\nconst socialButtonConfig = {\n google: {\n label: 'Sign in with Google',\n iconLabel: 'Google',\n mode: 'google',\n Icon: SocialGoogleMark,\n },\n facebook: {\n label: 'Sign in with Facebook',\n iconLabel: 'Facebook',\n mode: 'outline',\n Icon: SocialFacebookMark,\n },\n apple: {\n label: 'Sign in with Apple',\n iconLabel: 'Apple',\n mode: 'brand',\n Icon: SocialAppleMark,\n },\n microsoft: {\n label: 'Sign in with Microsoft',\n iconLabel: 'Microsoft',\n mode: 'brand',\n Icon: SocialMicrosoftMark,\n },\n pinterest: {\n label: 'Sign in with Pinterest',\n iconLabel: 'Pinterest',\n mode: 'brand',\n Icon: SocialPinterestMark,\n },\n linkedin: {\n label: 'Sign in with LinkedIn',\n iconLabel: 'LinkedIn',\n mode: 'brand',\n Icon: SocialLinkedInMark,\n },\n} as const\n\nexport const MSocialButton = forwardRef<HTMLButtonElement, MSocialButtonProps>(function MSocialButton(\n {\n platform = 'google',\n variant = 'outline',\n size = 'md',\n iconOnly = false,\n iconShape = 'circle',\n hidden,\n fullWidth = false,\n loading = false,\n active = false,\n pulsing = false,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onPointerDown,\n onKeyDown,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref\n) {\n const config = socialButtonConfig[platform]\n const Icon = config.Icon\n const label = children ?? config.label\n const resolvedAriaLabel = ariaLabel ?? (iconOnly ? config.iconLabel : undefined)\n const resolvedVariant = config.mode === 'google' ? variant : config.mode\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLButtonElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n 'social-button-root',\n platform,\n resolvedVariant,\n size,\n fullWidth && 'full-width',\n iconOnly && 'icon-only',\n iconOnly && `icon-shape-${iconShape}`,\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n aria-label={resolvedAriaLabel}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget)\n }\n\n onKeyDown?.(event)\n }}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {effectLayer}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" className=\"social-button-spinner\" aria-hidden=\"true\" />}\n <span className=\"social-button-brand\" aria-hidden=\"true\">\n <Icon className=\"social-button-mark\" />\n </span>\n {!iconOnly && <span className=\"social-button-label\">{label}</span>}\n </button>\n )\n})\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { r as e } from "./theme-KYwqDZxJ.js";
2
- import { ki as t } from "./icons-DlNO04xH.js";
3
- import { t as n } from "./cn-CUSXNnjF.js";
4
- import { t as r } from "./useInteractionEffect-ClkU3aH5.js";
5
- import { i, r as a, t as o } from "./MButton-BpSZUhpY.js";
1
+ import { r as e } from "./theme-D_f-cmSA.js";
2
+ import { ki as t } from "./icons-CfpYxnfg.js";
3
+ import { t as n } from "./cn-YER3QsV1.js";
4
+ import { t as r } from "./useInteractionEffect-DtpbVd77.js";
5
+ import { i, r as a, t as o } from "./MButton-y9qXhhGt.js";
6
6
  import { createContext as s, forwardRef as c, useCallback as l, useContext as u, useEffect as d, useMemo as f, useRef as p, useState as m } from "react";
7
7
  import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
8
8
  //#region src/components/controls/MButtonGroup/MButtonGroup.tsx
@@ -408,4 +408,4 @@ var M = {
408
408
  //#endregion
409
409
  export { x as a, S as i, w as n, v as o, C as r, N as t };
410
410
 
411
- //# sourceMappingURL=controls-BEi-0mf4.js.map
411
+ //# sourceMappingURL=controls-DCtMOoQe.js.map