admin-ui-starter-kit 0.6.1 → 0.6.4

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 (498) hide show
  1. package/.agents/skills/component-library-rules/references/components/services__hooks.md +6 -1
  2. package/dist/_shared/{auth-B_KVUjsB.cjs → auth-DdezEtKK.cjs} +2 -2
  3. package/dist/_shared/{auth-B_KVUjsB.cjs.map → auth-DdezEtKK.cjs.map} +1 -1
  4. package/dist/_shared/{auth-C_TgyzDl.js → auth-e7yab9pK.js} +2 -2
  5. package/dist/_shared/{auth-C_TgyzDl.js.map → auth-e7yab9pK.js.map} +1 -1
  6. package/dist/_shared/{buttons-C8jy-jMd.cjs → buttons-Bek9F7qK.cjs} +2 -2
  7. package/dist/_shared/{buttons-C8jy-jMd.cjs.map → buttons-Bek9F7qK.cjs.map} +1 -1
  8. package/dist/_shared/{buttons-MxvdokeK.js → buttons-DcynMPnE.js} +2 -2
  9. package/dist/_shared/{buttons-MxvdokeK.js.map → buttons-DcynMPnE.js.map} +1 -1
  10. package/dist/_shared/cards-CbbHly7W.cjs +2 -0
  11. package/dist/_shared/cards-CbbHly7W.cjs.map +1 -0
  12. package/dist/_shared/{cards-CtBoSZG9.js → cards-RZxRLx3f.js} +6 -6
  13. package/dist/_shared/cards-RZxRLx3f.js.map +1 -0
  14. package/dist/_shared/{comments-DGBxF9fD.js → comments-BJqgvSFY.js} +2 -2
  15. package/dist/_shared/{comments-DGBxF9fD.js.map → comments-BJqgvSFY.js.map} +1 -1
  16. package/dist/_shared/{comments-C8iXy9XO.cjs → comments-BjPciQfo.cjs} +2 -2
  17. package/dist/_shared/{comments-C8iXy9XO.cjs.map → comments-BjPciQfo.cjs.map} +1 -1
  18. package/dist/_shared/{data-display-C_44_V-W.cjs → data-display-C21skrV4.cjs} +2 -2
  19. package/dist/_shared/{data-display-C_44_V-W.cjs.map → data-display-C21skrV4.cjs.map} +1 -1
  20. package/dist/_shared/{data-display-CRFaMkxT.js → data-display-C5-1dZua.js} +71 -71
  21. package/dist/_shared/{data-display-CRFaMkxT.js.map → data-display-C5-1dZua.js.map} +1 -1
  22. package/dist/_shared/{forms-qnwoUqxf.js → forms-BoquZE2Y.js} +3 -3
  23. package/dist/_shared/{forms-qnwoUqxf.js.map → forms-BoquZE2Y.js.map} +1 -1
  24. package/dist/_shared/{forms-rmKcy5uO.cjs → forms-CzrEYejY.cjs} +2 -2
  25. package/dist/_shared/{forms-rmKcy5uO.cjs.map → forms-CzrEYejY.cjs.map} +1 -1
  26. package/dist/_shared/{overlays-CdtMAkKG.js → overlays-DW8OIK5R.js} +134 -47
  27. package/dist/_shared/overlays-DW8OIK5R.js.map +1 -0
  28. package/dist/_shared/overlays-Du65iCkx.cjs +2 -0
  29. package/dist/_shared/overlays-Du65iCkx.cjs.map +1 -0
  30. package/dist/_shared/{page-C6EzwvTz.cjs → page-D8UMXREv.cjs} +2 -2
  31. package/dist/_shared/{page-C6EzwvTz.cjs.map → page-D8UMXREv.cjs.map} +1 -1
  32. package/dist/_shared/{page-DCW1eWCJ.js → page-D9LNsHMN.js} +2 -2
  33. package/dist/_shared/{page-DCW1eWCJ.js.map → page-D9LNsHMN.js.map} +1 -1
  34. package/dist/_shared/{settings-QOBrbgdN.js → settings-BeZOIEJB.js} +2 -2
  35. package/dist/_shared/{settings-QOBrbgdN.js.map → settings-BeZOIEJB.js.map} +1 -1
  36. package/dist/_shared/{settings-DbAyxMrX.cjs → settings-DI-K34bW.cjs} +2 -2
  37. package/dist/_shared/{settings-DbAyxMrX.cjs.map → settings-DI-K34bW.cjs.map} +1 -1
  38. package/dist/_shared/{table-CUA_A-oO.js → table-B_pqCQxC.js} +3 -3
  39. package/dist/_shared/table-B_pqCQxC.js.map +1 -0
  40. package/dist/_shared/table-CGVOXtdv.cjs +2 -0
  41. package/dist/_shared/table-CGVOXtdv.cjs.map +1 -0
  42. package/dist/components/base/buttons/index.cjs +1 -1
  43. package/dist/components/base/buttons/index.js +1 -1
  44. package/dist/components/base/cards/index.cjs +1 -1
  45. package/dist/components/base/cards/index.js +1 -1
  46. package/dist/components/base/forms/index.cjs +1 -1
  47. package/dist/components/base/forms/index.js +1 -1
  48. package/dist/components/base/table/index.cjs +1 -1
  49. package/dist/components/base/table/index.js +1 -1
  50. package/dist/components/composed/admin/index.cjs +1 -1
  51. package/dist/components/composed/admin/index.js +2 -2
  52. package/dist/components/composed/ai/index.cjs +1 -1
  53. package/dist/components/composed/ai/index.js +2 -2
  54. package/dist/components/composed/analytics/index.cjs +1 -1
  55. package/dist/components/composed/analytics/index.js +1 -1
  56. package/dist/components/composed/cards/index.cjs +1 -1
  57. package/dist/components/composed/cards/index.js +2 -2
  58. package/dist/components/composed/commerce/index.cjs +1 -1
  59. package/dist/components/composed/commerce/index.js +2 -2
  60. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  61. package/dist/components/composed/dark-surfaces/index.js +1 -1
  62. package/dist/components/composed/data-display/index.cjs +1 -1
  63. package/dist/components/composed/data-display/index.js +1 -1
  64. package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -1
  65. package/dist/components/composed/navigation/index.cjs +1 -1
  66. package/dist/components/composed/navigation/index.js +1 -1
  67. package/dist/components/composed/timelines/index.cjs +1 -1
  68. package/dist/components/composed/timelines/index.js +1 -1
  69. package/dist/components/features/activities/index.cjs +1 -1
  70. package/dist/components/features/activities/index.js +1 -1
  71. package/dist/components/features/card/index.cjs +1 -1
  72. package/dist/components/features/card/index.js +2 -2
  73. package/dist/components/features/comments/index.cjs +1 -1
  74. package/dist/components/features/comments/index.js +1 -1
  75. package/dist/components/features/event-log/index.cjs +1 -1
  76. package/dist/components/features/event-log/index.js +2 -2
  77. package/dist/components/features/media-library/index.cjs +1 -1
  78. package/dist/components/features/media-library/index.js +2 -2
  79. package/dist/components/features/overlays/hooks/index.d.ts +1 -0
  80. package/dist/components/features/overlays/hooks/index.d.ts.map +1 -1
  81. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +33 -0
  82. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts.map +1 -0
  83. package/dist/components/features/overlays/index.cjs +1 -1
  84. package/dist/components/features/overlays/index.d.ts +1 -1
  85. package/dist/components/features/overlays/index.d.ts.map +1 -1
  86. package/dist/components/features/overlays/index.js +2 -2
  87. package/dist/components/features/products/index.cjs +1 -1
  88. package/dist/components/features/products/index.js +4 -4
  89. package/dist/components/features/resource/index.cjs +1 -1
  90. package/dist/components/features/resource/index.js +2 -2
  91. package/dist/components/features/schema-form/index.cjs +1 -1
  92. package/dist/components/features/schema-form/index.js +2 -2
  93. package/dist/components/layout/auth/index.cjs +1 -1
  94. package/dist/components/layout/auth/index.js +1 -1
  95. package/dist/components/layout/index.cjs +1 -1
  96. package/dist/components/layout/index.js +3 -3
  97. package/dist/components/layout/page/index.cjs +1 -1
  98. package/dist/components/layout/page/index.js +1 -1
  99. package/dist/components/layout/settings/index.cjs +1 -1
  100. package/dist/components/layout/settings/index.js +1 -1
  101. package/dist/services/actions/index.cjs +1 -1
  102. package/dist/services/actions/index.js +1 -1
  103. package/dist/showcase/assets/{AreaChart-CGkuyNyy.js → AreaChart-Y0ZwblHU.js} +1 -1
  104. package/dist/showcase/assets/{CompositeItem-DAQ048AO.js → CompositeItem-BIY_Cp7P.js} +1 -1
  105. package/dist/showcase/assets/{CompositeRoot-8-OuCMMq.js → CompositeRoot-DSPvBRQr.js} +1 -1
  106. package/dist/showcase/assets/{DialogTrigger-1P-jwcoH.js → DialogTrigger-DHUp8vXe.js} +1 -1
  107. package/dist/showcase/assets/{LabelableContext-BDyZArAc.js → LabelableContext-CasUI4hR.js} +1 -1
  108. package/dist/showcase/assets/{PreviewLayout-wYGhlcJt.js → PreviewLayout-B_l930k0.js} +1 -1
  109. package/dist/showcase/assets/{RadioGroup-DuiI4W--.js → RadioGroup-BgZ-UH79.js} +1 -1
  110. package/dist/showcase/assets/{ScrollAreaCorner-Df5uTkWT.js → ScrollAreaCorner-BbwFElLA.js} +1 -1
  111. package/dist/showcase/assets/{Separator-BuTBo5a_.js → Separator-dQuencsA.js} +1 -1
  112. package/dist/showcase/assets/{ToolbarRootContext-B4S4Fn7d.js → ToolbarRootContext-BE0hbejq.js} +1 -1
  113. package/dist/showcase/assets/{accordion-D3beuJpC.js → accordion-D93ZNsLn.js} +1 -1
  114. package/dist/showcase/assets/{accordion-variants-BTMpfSPI.js → accordion-variants-Bl4bIQH4.js} +1 -1
  115. package/dist/showcase/assets/{action-menu-DsAr1OqF.js → action-menu--rEgMzDi.js} +1 -1
  116. package/dist/showcase/assets/{actions-BzyHAEZR.js → actions-3iedOWD9.js} +1 -1
  117. package/dist/showcase/assets/{activities-BgoelWKu.js → activities-CyrAWFlu.js} +1 -1
  118. package/dist/showcase/assets/{activities-feed-card-DI4MIm3-.js → activities-feed-card-bhIATc2O.js} +1 -1
  119. package/dist/showcase/assets/{admin-n-JemkNh.js → admin-CZzNsj2q.js} +1 -1
  120. package/dist/showcase/assets/{ai-BXyk1mT0.js → ai-CasHwkW4.js} +1 -1
  121. package/dist/showcase/assets/{ai-artifact-C8CmZ94f.js → ai-artifact-BgWvrLAb.js} +1 -1
  122. package/dist/showcase/assets/{ai-chat-CTQQ4e4X.js → ai-chat-seS9aW-1.js} +1 -1
  123. package/dist/showcase/assets/{ai-elements-DGnlBq8E.js → ai-elements-Tku5_ous.js} +1 -1
  124. package/dist/showcase/assets/{ai-tool-call-bHnWNBtN.js → ai-tool-call-BU6xbmXG.js} +1 -1
  125. package/dist/showcase/assets/{alert-bPnj3_cC.js → alert-6Emt6KX2.js} +1 -1
  126. package/dist/showcase/assets/{alert-CIHGXUul.js → alert-B6aLWiRW.js} +1 -1
  127. package/dist/showcase/assets/{alert-N79A6qIx.js → alert-CtoTQ0vN.js} +1 -1
  128. package/dist/showcase/assets/{api-key-list-Bf1KoRJq.js → api-key-list-C0glWR3z.js} +1 -1
  129. package/dist/showcase/assets/{api-key-list-DyZ_DaRx.js → api-key-list-DcWSbY3u.js} +1 -1
  130. package/dist/showcase/assets/{app-sidebar-Co0LUSvz.js → app-sidebar-D_eNP_jh.js} +1 -1
  131. package/dist/showcase/assets/arrow-down-qyKZ1H5j.js +1 -0
  132. package/dist/showcase/assets/arrow-left-C9I0h_su.js +1 -0
  133. package/dist/showcase/assets/arrow-right-DswaRsr6.js +1 -0
  134. package/dist/showcase/assets/arrow-up-5BijPOxK.js +1 -0
  135. package/dist/showcase/assets/arrow-up-right-CbVVNT6g.js +1 -0
  136. package/dist/showcase/assets/{avatar-DKLsNeBi.js → avatar-BYHVCvVW.js} +1 -1
  137. package/dist/showcase/assets/{avatar-D3kvVy00.js → avatar-BlLAVC87.js} +1 -1
  138. package/dist/showcase/assets/{avatar-CJaCYGWf.js → avatar-DQTXjcS4.js} +1 -1
  139. package/dist/showcase/assets/{avatar-CxwFyL4T.js → avatar-DveZy09C.js} +1 -1
  140. package/dist/showcase/assets/{badge-CSMmwDLr.js → badge-Bth3mRTh.js} +1 -1
  141. package/dist/showcase/assets/{badge-check-TQRmqI7C.js → badge-check-DocF8Ho3.js} +1 -1
  142. package/dist/showcase/assets/{bell-CwRy7zpP.js → bell-DXBoeAzi.js} +1 -1
  143. package/dist/showcase/assets/{bot-Bt02Uzhq.js → bot-Ch-Y1HK8.js} +1 -1
  144. package/dist/showcase/assets/{box-Bfv5RQBf.js → box-72m9QSDa.js} +1 -1
  145. package/dist/showcase/assets/{braces-CxUoAPd4.js → braces-CC17X3TE.js} +1 -1
  146. package/dist/showcase/assets/{brain-CNapE0CP.js → brain-Dvbla_5x.js} +1 -1
  147. package/dist/showcase/assets/{brand-CBq1YoS0.js → brand-D5ciAq8v.js} +1 -1
  148. package/dist/showcase/assets/{breadcrumb-DyXpErBT.js → breadcrumb-BBCaOVyz.js} +1 -1
  149. package/dist/showcase/assets/{breadcrumb-DRioiUd_.js → breadcrumb-Bt8yVTCj.js} +1 -1
  150. package/dist/showcase/assets/{breadcrumbs-BzHeoItO.js → breadcrumbs-CkVWfcAN.js} +1 -1
  151. package/dist/showcase/assets/{briefcase-N74Hu0O2.js → briefcase-8rQTJwpE.js} +1 -1
  152. package/dist/showcase/assets/{building-2-D81ygy-F.js → building-2-CV7gTtXz.js} +1 -1
  153. package/dist/showcase/assets/{button-Bgqg7AmN.js → button-HGjoBio3.js} +1 -1
  154. package/dist/showcase/assets/{button-group-DPV1XIW3.js → button-group-LWToSCrp.js} +1 -1
  155. package/dist/showcase/assets/{buttons-qpZWlILG.js → buttons-Bn_dX6Kk.js} +1 -1
  156. package/dist/showcase/assets/{calendar-DcYyOrNY.js → calendar-BTsffmY8.js} +1 -1
  157. package/dist/showcase/assets/{calendar-BXG5CwbY.js → calendar-Bhpyn4u0.js} +1 -1
  158. package/dist/showcase/assets/{calendar-D-CSqGtC.js → calendar-DjrUTKcD.js} +1 -1
  159. package/dist/showcase/assets/{calendar-days-CNNiyV9e.js → calendar-days-BKCkzWjV.js} +1 -1
  160. package/dist/showcase/assets/{camera-D0yVo0xC.js → camera-EjpDG3mc.js} +1 -1
  161. package/dist/showcase/assets/{card-CH7Ev3xS.js → card-Bp6iGuOF.js} +1 -1
  162. package/dist/showcase/assets/{card-Bl-y9-8y.js → card-CHc6AVFt.js} +1 -1
  163. package/dist/showcase/assets/card-primitives-Bv6XGPJd.js +1 -0
  164. package/dist/showcase/assets/{card-radio-group-DpeIWyiO.js → card-radio-group-Ce9FsiSv.js} +1 -1
  165. package/dist/showcase/assets/{cards-7xave3ub.js → cards-_CGG9zir.js} +1 -1
  166. package/dist/showcase/assets/{carousel--kHTFkC7.js → carousel-BVbsKH2W.js} +1 -1
  167. package/dist/showcase/assets/{cell-renderers-Cx8rAZln.js → cell-renderers-CosD6Gby.js} +1 -1
  168. package/dist/showcase/assets/{chart-DU8INHbt.js → chart-CwOp8Sf8.js} +1 -1
  169. package/dist/showcase/assets/{chart-column-Dbekq8cy.js → chart-column-sz871NdJ.js} +1 -1
  170. package/dist/showcase/assets/{checkbox-ClPnzko9.js → checkbox-BO38TYqr.js} +1 -1
  171. package/dist/showcase/assets/checkbox-W4MhlPlJ.js +1 -0
  172. package/dist/showcase/assets/chevron-down-BFh1Fz2P.js +1 -0
  173. package/dist/showcase/assets/chevron-left-C5_X5glO.js +1 -0
  174. package/dist/showcase/assets/chevron-up-DPH3boVS.js +1 -0
  175. package/dist/showcase/assets/chevrons-up-down-CM5mIDaw.js +1 -0
  176. package/dist/showcase/assets/circle-BFDzL1iF.js +1 -0
  177. package/dist/showcase/assets/{circle-alert-9j29FrsT.js → circle-alert-C6MbOB0m.js} +1 -1
  178. package/dist/showcase/assets/circle-check-C0X85t4j.js +1 -0
  179. package/dist/showcase/assets/circle-check-big-CBaodck_.js +1 -0
  180. package/dist/showcase/assets/circle-dot-DdRpIhnL.js +1 -0
  181. package/dist/showcase/assets/{circle-question-mark-BRiF5RV4.js → circle-question-mark-CKlcead7.js} +1 -1
  182. package/dist/showcase/assets/{circle-x-BF20gddw.js → circle-x-MO44aKHe.js} +1 -1
  183. package/dist/showcase/assets/clock-3-CXQJFcbh.js +1 -0
  184. package/dist/showcase/assets/clock-GhBJJ6n1.js +1 -0
  185. package/dist/showcase/assets/{code-xml-D2f-X63y.js → code-xml-BSX7Qyi5.js} +1 -1
  186. package/dist/showcase/assets/{collapsible-CF0oQTVS.js → collapsible-CZLTO5EH.js} +1 -1
  187. package/dist/showcase/assets/{collapsible-Ru5-bssh.js → collapsible-LrDO_sSQ.js} +1 -1
  188. package/dist/showcase/assets/{combobox-DpJTW_Rq.js → combobox-TmDBXkM-.js} +1 -1
  189. package/dist/showcase/assets/{command-Dno8Ogez.js → command-9-r1qrJt.js} +1 -1
  190. package/dist/showcase/assets/{command-LRFStKBy.js → command-DGne3l9s.js} +1 -1
  191. package/dist/showcase/assets/{comment-composer-Dht7nfbv.js → comment-composer-BI0qnvuY.js} +1 -1
  192. package/dist/showcase/assets/{comment-item-B6IgQsMr.js → comment-item-Cedds6Lm.js} +1 -1
  193. package/dist/showcase/assets/{comments-B3ksV3Mn.js → comments-De02NOns.js} +1 -1
  194. package/dist/showcase/assets/{commerce-B1_Offbz.js → commerce-DldtS83o.js} +1 -1
  195. package/dist/showcase/assets/{composite-BjQWIYF-.js → composite-BjZZlzzb.js} +1 -1
  196. package/dist/showcase/assets/{contact-card-Bss4YHZz.js → contact-card-muCZ3uXV.js} +1 -1
  197. package/dist/showcase/assets/{content-container-D4BM1Zro.js → content-container-BxSLICeL.js} +1 -1
  198. package/dist/showcase/assets/{copyable-Dst8oaw5.js → copyable-DYhhmTqM.js} +1 -1
  199. package/dist/showcase/assets/{copyable-C0J88R_R.js → copyable-MNU75-J9.js} +1 -1
  200. package/dist/showcase/assets/{course-card-BuqwjqtO.js → course-card-Dl1wsuJx.js} +1 -1
  201. package/dist/showcase/assets/{cpu-CFy0M0rN.js → cpu-CsWq4fcX.js} +1 -1
  202. package/dist/showcase/assets/{credit-card-CFq0S1Ma.js → credit-card-B0AUZiWw.js} +1 -1
  203. package/dist/showcase/assets/{css-variables-BAALjDwD.js → css-variables-Be7DzahT.js} +1 -1
  204. package/dist/showcase/assets/{currency-BZzZRv2_.js → currency-BtPM_Xtw.js} +1 -1
  205. package/dist/showcase/assets/{dark-surfaces-CVKt2Yww.js → dark-surfaces-DRFERSEv.js} +1 -1
  206. package/dist/showcase/assets/{data-view-Be0uoLqL.js → data-view-DmWd0h7G.js} +2 -2
  207. package/dist/showcase/assets/{data-view-D6_zyFwk.js → data-view-DnLH2o0i.js} +1 -1
  208. package/dist/showcase/assets/{database-DSC-ysYT.js → database-C0YqGaQ_.js} +1 -1
  209. package/dist/showcase/assets/{date-block-Bgu_LMxB.js → date-block-BQH25FLS.js} +1 -1
  210. package/dist/showcase/assets/{date-picker-ByYEZGMg.js → date-picker-BF-jevhh.js} +1 -1
  211. package/dist/showcase/assets/{date-pickers-DzSQrvWs.js → date-pickers-q2v3ajJm.js} +1 -1
  212. package/dist/showcase/assets/{dense-info-BhFkOQbt.js → dense-info-Cb-roqDU.js} +1 -1
  213. package/dist/showcase/assets/{design-system-consistency-D6iCJLcr.js → design-system-consistency-DMSJknaM.js} +1 -1
  214. package/dist/showcase/assets/{dialog-C1heXuxu.js → dialog-C0ALRmbP.js} +1 -1
  215. package/dist/showcase/assets/{dialog-DzrcsKvl.js → dialog-CbXon08k.js} +1 -1
  216. package/dist/showcase/assets/{display-utilities-eu-EVMrx.js → display-utilities-kBUVw7o3.js} +1 -1
  217. package/dist/showcase/assets/{dist-DV4Tv32d.js → dist-CTSkWj_M.js} +1 -1
  218. package/dist/showcase/assets/{dist-BlIID0_L.js → dist-W8bxVfew.js} +1 -1
  219. package/dist/showcase/assets/{dollar-sign-qp4G3P_K.js → dollar-sign-VNxVZleW.js} +1 -1
  220. package/dist/showcase/assets/{download-zlcHjSdS.js → download-Ds_6eIpx.js} +1 -1
  221. package/dist/showcase/assets/{dropdown-menu-DZ47rJaE.js → dropdown-menu-C1G_y9dv.js} +1 -1
  222. package/dist/showcase/assets/{dropzone-Dx4EqBHu.js → dropzone-CxOLmdkt.js} +1 -1
  223. package/dist/showcase/assets/{earth-BuXqXHh6.js → earth-HLyEI1oq.js} +1 -1
  224. package/dist/showcase/assets/{ellipsis-DgAjMZHc.js → ellipsis-BLyAd9A-.js} +1 -1
  225. package/dist/showcase/assets/{ellipsis-vertical-BA8_YMyV.js → ellipsis-vertical-TG4mYU2J.js} +1 -1
  226. package/dist/showcase/assets/{empty-DXjKmyNv.js → empty-B54k9xAG.js} +1 -1
  227. package/dist/showcase/assets/{empty-item-DIGWYsI0.js → empty-item-BmA4rmq7.js} +1 -1
  228. package/dist/showcase/assets/{empty-state-BSc0tQNC.js → empty-state-CH7gjjg7.js} +1 -1
  229. package/dist/showcase/assets/{empty-state-CkixFVN1.js → empty-state-hUKvmKa-.js} +1 -1
  230. package/dist/showcase/assets/{enhanced-activities-CKbHgR4f.js → enhanced-activities-BRDVL9RR.js} +1 -1
  231. package/dist/showcase/assets/{enhanced-combobox-DAKQyFUg.js → enhanced-combobox-2wbQJS6R.js} +1 -1
  232. package/dist/showcase/assets/{esm-C3PfkuOc.js → esm-CUTefMLr.js} +1 -1
  233. package/dist/showcase/assets/{event-calendar-rNju8jaT.js → event-calendar-Bf9xFZlt.js} +1 -1
  234. package/dist/showcase/assets/{event-log-BUK1blGb.js → event-log-CeRDSL-h.js} +1 -1
  235. package/dist/showcase/assets/{example-PsbgbESI.js → example-CJMJcnb4.js} +1 -1
  236. package/dist/showcase/assets/{external-link-CgB9zfWz.js → external-link-CvXhYrnd.js} +1 -1
  237. package/dist/showcase/assets/{eye-YnIHbdKe.js → eye-Cl_GfUKH.js} +1 -1
  238. package/dist/showcase/assets/{feature-announcement-CWwjAPI1.js → feature-announcement-Dw0SokLo.js} +1 -1
  239. package/dist/showcase/assets/{file-3Z2xkc-8.js → file-CJFWrwy1.js} +1 -1
  240. package/dist/showcase/assets/{file-text-BQeGXxPG.js → file-text-BTTFP8Jo.js} +1 -1
  241. package/dist/showcase/assets/{filter-layout-D7YskzbC.js → filter-layout-DUVqG5Ql.js} +1 -1
  242. package/dist/showcase/assets/{filters-2YY_wVwq.js → filters-BLcCaplV.js} +1 -1
  243. package/dist/showcase/assets/{flag-Bw3wwRgF.js → flag-BxI3EGPG.js} +1 -1
  244. package/dist/showcase/assets/{folder-open-CZ5Bq4lK.js → folder-open-4d8qsiAj.js} +1 -1
  245. package/dist/showcase/assets/{form-field-AWNJL9FM.js → form-field-Dhy0eM5B.js} +1 -1
  246. package/dist/showcase/assets/{format-DUU7-42g.js → format-zGqa9Olc.js} +1 -1
  247. package/dist/showcase/assets/{forms-CWJ3HBbk.js → forms-D99qG5Gb.js} +1 -1
  248. package/dist/showcase/assets/{funnel-vxNNph7w.js → funnel-Cg7SOShf.js} +1 -1
  249. package/dist/showcase/assets/{generic-DlyFJDj6.js → generic-CfrG943t.js} +1 -1
  250. package/dist/showcase/assets/{getPseudoElementBounds-CibNto5h.js → getPseudoElementBounds-lw5shsdM.js} +1 -1
  251. package/dist/showcase/assets/{gift-BjRHqTcQ.js → gift-BXtKbzvA.js} +1 -1
  252. package/dist/showcase/assets/{giftcard-cards-DcujCFff.js → giftcard-cards-CqYaN0jC.js} +1 -1
  253. package/dist/showcase/assets/{git-branch-B7XnpQE0.js → git-branch-BWAuIMOQ.js} +1 -1
  254. package/dist/showcase/assets/{global-search-CWvNfmpe.js → global-search-CHUva8pR.js} +1 -1
  255. package/dist/showcase/assets/{global-search-Ct7I1Xd2.js → global-search-Df7JovOG.js} +1 -1
  256. package/dist/showcase/assets/{globe-CHleXWd2.js → globe-CvIW_foU.js} +1 -1
  257. package/dist/showcase/assets/{gradient-card-Bw4oJljh.js → gradient-card-CdM2J1Hv.js} +1 -1
  258. package/dist/showcase/assets/{hash-BVGqnm6_.js → hash-wBs5gyr_.js} +1 -1
  259. package/dist/showcase/assets/{header-CgApizpk.js → header-DXPFmpUT.js} +1 -1
  260. package/dist/showcase/assets/{header-notifications-B2v1Mdri.js → header-notifications-FsnCJLpe.js} +1 -1
  261. package/dist/showcase/assets/{heart-BwvHCA-d.js → heart-B4fOMIr6.js} +1 -1
  262. package/dist/showcase/assets/{hooks-A_AQLIRZ.js → hooks-DtMOMalj.js} +6 -3
  263. package/dist/showcase/assets/{house-opqNxOmP.js → house-hebmAxEE.js} +1 -1
  264. package/dist/showcase/assets/{icon-badge-ognVhKWR.js → icon-badge-DrZ5qGpa.js} +1 -1
  265. package/dist/showcase/assets/{icon-badge-CsG95J1Z.js → icon-badge-JEug_P_U.js} +1 -1
  266. package/dist/showcase/assets/{image-apDSlTAx.js → image-CxNywgkb.js} +1 -1
  267. package/dist/showcase/assets/{inbox-WrbeTKEw.js → inbox-DqAmGdDd.js} +1 -1
  268. package/dist/showcase/assets/index-DujM0kEF.css +2 -0
  269. package/dist/showcase/assets/{index-QESvAJrb.js → index-jD-KSiHu.js} +2 -2
  270. package/dist/showcase/assets/inertValue-Dg9TwvOb.js +1 -0
  271. package/dist/showcase/assets/{info-C3G9KRCx.js → info-B5fZn_ZC.js} +1 -1
  272. package/dist/showcase/assets/{inline-stat-CO01t7SJ.js → inline-stat-CklKufoA.js} +1 -1
  273. package/dist/showcase/assets/{inline-stat-BnjUqzDM.js → inline-stat-Dep7oHIi.js} +1 -1
  274. package/dist/showcase/assets/{input-yYoqWQQ7.js → input-CkNgwwCs.js} +1 -1
  275. package/dist/showcase/assets/{input-CBJy1dMs.js → input-DAPMRlKO.js} +1 -1
  276. package/dist/showcase/assets/{input-group-CZyYSq4r.js → input-group-06D68uB6.js} +1 -1
  277. package/dist/showcase/assets/{input-group-Dfqufdp4.js → input-group-Bq9aXQPG.js} +1 -1
  278. package/dist/showcase/assets/{inputs-Bhw_FGDY.js → inputs-C8G3y-zR.js} +1 -1
  279. package/dist/showcase/assets/{installation-DnvS2ZUn.js → installation-BV5xOvoE.js} +1 -1
  280. package/dist/showcase/assets/{invoice-header-B9Ak8GXX.js → invoice-header-BcUxzT68.js} +1 -1
  281. package/dist/showcase/assets/{invoice-items-DY5zUZhE.js → invoice-items-B42Jfxl7.js} +1 -1
  282. package/dist/showcase/assets/{invoice-mini-BAryECEH.js → invoice-mini-RJGdlErg.js} +1 -1
  283. package/dist/showcase/assets/{invoice-table-BUvjee74.js → invoice-table--MdP6ysv.js} +1 -1
  284. package/dist/showcase/assets/isSameDay-srttAIjD.js +1 -0
  285. package/dist/showcase/assets/isToday-BPub5Zvi.js +1 -0
  286. package/dist/showcase/assets/{italic-CjQCLJci.js → italic-1BNA_XlU.js} +1 -1
  287. package/dist/showcase/assets/{item-DxPwk321.js → item-B9KyqUGa.js} +1 -1
  288. package/dist/showcase/assets/{item-D1Jxrpia.js → item-DoIlPm6J.js} +1 -1
  289. package/dist/showcase/assets/{item-BMSdEK3V.js → item-ffIfXEGd.js} +1 -1
  290. package/dist/showcase/assets/{kanban-DXWCGieQ.js → kanban-Cfad3edR.js} +1 -1
  291. package/dist/showcase/assets/{key-round-DpuhXiJQ.js → key-round-J11Zc216.js} +1 -1
  292. package/dist/showcase/assets/{label-D1wLK5nY.js → label-DqaB8ZB2.js} +1 -1
  293. package/dist/showcase/assets/{languages-CGYZVmbV.js → languages-D9UaP3QU.js} +1 -1
  294. package/dist/showcase/assets/{layers-DJZSVGAu.js → layers-QXZ9Jfej.js} +1 -1
  295. package/dist/showcase/assets/{layout-app-shell-UX63nzTO.js → layout-app-shell-CW1eRJmU.js} +1 -1
  296. package/dist/showcase/assets/{layout-auth-Bav5BBqp.js → layout-auth-j4K6lveg.js} +1 -1
  297. package/dist/showcase/assets/{layout-containers-DMHD2zdV.js → layout-containers-NclLtsV0.js} +1 -1
  298. package/dist/showcase/assets/{layout-header-CGesu_kM.js → layout-header-B8AOTiwL.js} +1 -1
  299. package/dist/showcase/assets/{layout-page-DHXu8SIv.js → layout-page-DM79QHyW.js} +1 -1
  300. package/dist/showcase/assets/{layout-primitives-CokzGwd2.js → layout-primitives-Dyop-WMt.js} +1 -1
  301. package/dist/showcase/assets/{layout-sidebar-CLUYajcu.js → layout-sidebar-uBNaHqjD.js} +1 -1
  302. package/dist/showcase/assets/{layout-users-DHUNAnFA.js → layout-users-BkhDiOOz.js} +1 -1
  303. package/dist/showcase/assets/{layout-workspace-y0v2FpDW.js → layout-workspace-C2hSimZW.js} +1 -1
  304. package/dist/showcase/assets/{lib-g_kR7X9Z.js → lib-CDssULuD.js} +1 -1
  305. package/dist/showcase/assets/{list-checks-CXt8visd.js → list-checks-DA2jqXdm.js} +1 -1
  306. package/dist/showcase/assets/{lock-CpZ5kLUd.js → lock-BDZLNQLR.js} +1 -1
  307. package/dist/showcase/assets/{lock-keyhole-Cy2raRO6.js → lock-keyhole-CWYENd9O.js} +1 -1
  308. package/dist/showcase/assets/{mail-Cj6uT4TA.js → mail-CCdaRmft.js} +1 -1
  309. package/dist/showcase/assets/{mail-check-Di70bdf6.js → mail-check-DZF1VbCX.js} +1 -1
  310. package/dist/showcase/assets/{map-DMXbG_04.js → map-CDFEmmZH.js} +3 -3
  311. package/dist/showcase/assets/{map-pin-EKhu7vEj.js → map-pin-CdV-R6nt.js} +1 -1
  312. package/dist/showcase/assets/{media-library-Dnp9S0oW.js → media-library-BJyn1s9d.js} +1 -1
  313. package/dist/showcase/assets/{mention-inline-suggestions-Bp-fVNYF.js → mention-inline-suggestions-DPO6FhXx.js} +1 -1
  314. package/dist/showcase/assets/{mentions-DNRk30XZ.js → mentions-DtWHbcS6.js} +1 -1
  315. package/dist/showcase/assets/{menus-DFURb5VL.js → menus-BmjngFE4.js} +1 -1
  316. package/dist/showcase/assets/{message-square-DG0qIsG_.js → message-square-bM29txT3.js} +1 -1
  317. package/dist/showcase/assets/{metadata-list-Cb1DQd4S.js → metadata-list-DvYTAJri.js} +1 -1
  318. package/dist/showcase/assets/metadata-list-xVUTVyy9.js +1 -0
  319. package/dist/showcase/assets/{metric-BkzIsP8H.js → metric-BPNCh4eA.js} +1 -1
  320. package/dist/showcase/assets/{metric-bar-CU73nx89.js → metric-bar-BX4sCMrM.js} +1 -1
  321. package/dist/showcase/assets/{metric-grid-BMLMbLjE.js → metric-grid-IyHP3nmU.js} +1 -1
  322. package/dist/showcase/assets/{metric-trend-chip-Dutl5uZo.js → metric-trend-chip-Dih8eR17.js} +1 -1
  323. package/dist/showcase/assets/{metrics-analytics-bar-AqG2oyIy.js → metrics-analytics-bar-DK16RNMs.js} +1 -1
  324. package/dist/showcase/assets/{metrics-analytics-cards-CrFHmR2f.js → metrics-analytics-cards-Byyl13YT.js} +1 -1
  325. package/dist/showcase/assets/{metrics-comparison-CY-DyLv7.js → metrics-comparison-DGHFMBL-.js} +1 -1
  326. package/dist/showcase/assets/{metrics-heatmap-BmX_CkiP.js → metrics-heatmap-Bl6C7i0j.js} +1 -1
  327. package/dist/showcase/assets/{metrics-inline-badge-C1IFjdJN.js → metrics-inline-badge-Bz79zbNK.js} +1 -1
  328. package/dist/showcase/assets/{metrics-kpi-row-8Kbn034e.js → metrics-kpi-row-DzZ9dRFY.js} +1 -1
  329. package/dist/showcase/assets/{metrics-micro-grid-CodO02yA.js → metrics-micro-grid-DyoQiuzr.js} +1 -1
  330. package/dist/showcase/assets/{metrics-overview-CdPqEAAG.js → metrics-overview-DoyHPEZw.js} +1 -1
  331. package/dist/showcase/assets/{metrics-stat-cards-Cw7UMWmb.js → metrics-stat-cards-B1b7NFqW.js} +1 -1
  332. package/dist/showcase/assets/minus-BE2L5hVc.js +1 -0
  333. package/dist/showcase/assets/{money-display-CFfUZLus.js → money-display-CXQ_8LfA.js} +1 -1
  334. package/dist/showcase/assets/{month-year-picker-ChVcYm9f.js → month-year-picker-ra8FEN8F.js} +1 -1
  335. package/dist/showcase/assets/{navigation-Boyt1q-1.js → navigation-CFfVZQJ1.js} +1 -1
  336. package/dist/showcase/assets/{navigation-CThYYxkL.js → navigation-Da0MVkqr.js} +1 -1
  337. package/dist/showcase/assets/{navigation-extras-CxLc-Mqx.js → navigation-extras-LpsdoXfx.js} +1 -1
  338. package/dist/showcase/assets/{onboarding-checklist-C15gqmFc.js → onboarding-checklist-DPNatNOk.js} +1 -1
  339. package/dist/showcase/assets/{overflow-tab-bar-B2Htn-Ft.js → overflow-tab-bar-C0vTzcEY.js} +1 -1
  340. package/dist/showcase/assets/{overlays-Cpj4akiw.js → overlays-Blmbun0J.js} +1 -1
  341. package/dist/showcase/assets/{overlays-CPZfp0nk.js → overlays-t0joc10Y.js} +1 -1
  342. package/dist/showcase/assets/{overview-BB-Xbkff.js → overview-Ckq8vbOR.js} +1 -1
  343. package/dist/showcase/assets/{package-DLn6nx-u.js → package-Cjod_a06.js} +1 -1
  344. package/dist/showcase/assets/{package-check-B0wyBUSU.js → package-check-JRHaNnkl.js} +1 -1
  345. package/dist/showcase/assets/{page-BPFNsNh7.js → page-9xr7xnuW.js} +1 -1
  346. package/dist/showcase/assets/page-action-button-BRXnfsEx.js +1 -0
  347. package/dist/showcase/assets/{page-header-BGqE9hzO.js → page-header-Bdlxfn_9.js} +1 -1
  348. package/dist/showcase/assets/{pagination-T4FmLNHn.js → pagination-CeaYhOvv.js} +1 -1
  349. package/dist/showcase/assets/{pagination-Be6ynLCp.js → pagination-DdZZHvNF.js} +1 -1
  350. package/dist/showcase/assets/{paperclip-B_kxXzSN.js → paperclip-BRM-yXTB.js} +1 -1
  351. package/dist/showcase/assets/{password-input-qfQ5eIU4.js → password-input-1FVEugoO.js} +1 -1
  352. package/dist/showcase/assets/{pencil-DlDLApli.js → pencil-DiG2dQ8F.js} +1 -1
  353. package/dist/showcase/assets/{phone-D8tvvbSQ.js → phone-BREyNZN-.js} +1 -1
  354. package/dist/showcase/assets/plus-CQcelTNc.js +1 -0
  355. package/dist/showcase/assets/{popover-Bu7aaPjE.js → popover-Czmwspmc.js} +1 -1
  356. package/dist/showcase/assets/{popover-menu-CD_JfEeq.js → popover-menu-beuCaiLt.js} +1 -1
  357. package/dist/showcase/assets/{popover-BsCx2XMI.js → popover-uqk7myG2.js} +1 -1
  358. package/dist/showcase/assets/{products-BzHX1ta0.js → products-DGNqIbLs.js} +1 -1
  359. package/dist/showcase/assets/{progress-jIJ_EIKE.js → progress-D76Df908.js} +1 -1
  360. package/dist/showcase/assets/{progress-CpW2ZGAy.js → progress-DjUprSDD.js} +1 -1
  361. package/dist/showcase/assets/{props-table-CCcohuyT.js → props-table-DoDq8Mvr.js} +1 -1
  362. package/dist/showcase/assets/{quote-Bc9eHVKi.js → quote-BvGGgyJ0.js} +1 -1
  363. package/dist/showcase/assets/{receipt-B77_VWtt.js → receipt-rgnlMgyi.js} +1 -1
  364. package/dist/showcase/assets/{receipt-text-BlL_TJsS.js → receipt-text-CBQrVlnU.js} +1 -1
  365. package/dist/showcase/assets/{refinement-guide-BpzOvT_R.js → refinement-guide-B_BpIMxm.js} +1 -1
  366. package/dist/showcase/assets/{refresh-cw-CELG4taF.js → refresh-cw-C-yHy6B7.js} +1 -1
  367. package/dist/showcase/assets/{resolveValueLabel-LRTUaJTb.js → resolveValueLabel-0bwEvIG-.js} +1 -1
  368. package/dist/showcase/assets/{resource-BT8_ck3n.js → resource-8f61BZ8t.js} +1 -1
  369. package/dist/showcase/assets/{resource-C7J3yZp6.js → resource-BEh6R0gu.js} +1 -1
  370. package/dist/showcase/assets/{resource-selector-card-Ay8ImvKg.js → resource-selector-card-DJwXY_Ms.js} +1 -1
  371. package/dist/showcase/assets/{rich-text-editor-CdGVvtsm.js → rich-text-editor-D433iv0N.js} +1 -1
  372. package/dist/showcase/assets/{rich-text-editor-DVtTVuZ6.js → rich-text-editor-vTRfWsOK.js} +1 -1
  373. package/dist/showcase/assets/rotate-ccw-JuE4H14F.js +1 -0
  374. package/dist/showcase/assets/{route-CgBh1oKF.js → route-eSu1bFNn.js} +1 -1
  375. package/dist/showcase/assets/{save-BFsAGR7O.js → save-Bpjj-rBP.js} +1 -1
  376. package/dist/showcase/assets/{schema-form-CaF-lBkN.js → schema-form-DmOpxd96.js} +1 -1
  377. package/dist/showcase/assets/{scroll-area-CpDi_6FP.js → scroll-area-B9OdCBy9.js} +1 -1
  378. package/dist/showcase/assets/{scroll-area-BkZULoZA.js → scroll-area-BH80l2As.js} +1 -1
  379. package/dist/showcase/assets/{section-D-N8Ze16.js → section-BPNIPavy.js} +1 -1
  380. package/dist/showcase/assets/{select-ReMZs8K6.js → select-BauiG1a3.js} +1 -1
  381. package/dist/showcase/assets/{select-C9Mfb_Gj.js → select-CPopSr5c.js} +1 -1
  382. package/dist/showcase/assets/{send-C6PbwpHN.js → send-DNCcBKXs.js} +1 -1
  383. package/dist/showcase/assets/{separator-CywPSoE0.js → separator-BK0beCOv.js} +1 -1
  384. package/dist/showcase/assets/{separator-Ha9YxI2x.js → separator-CKM9A-mm.js} +1 -1
  385. package/dist/showcase/assets/{settings-2-CVq5Uyv5.js → settings-2-B8fz7JZB.js} +1 -1
  386. package/dist/showcase/assets/{settings-DkTHc0Ob.js → settings-Cy2y3sQw.js} +1 -1
  387. package/dist/showcase/assets/{sheet-k-P0gWlk.js → sheet-C7VWkXE1.js} +1 -1
  388. package/dist/showcase/assets/{shield-Cme7_JJR.js → shield-ClPev4gS.js} +1 -1
  389. package/dist/showcase/assets/{shield-alert-CxV0S5w0.js → shield-alert-6XO5YZ5u.js} +1 -1
  390. package/dist/showcase/assets/{shield-check-BW_7p6Xf.js → shield-check-DSfGVZq0.js} +1 -1
  391. package/dist/showcase/assets/{shopping-bag-CoR8AMYU.js → shopping-bag-DzMrGvpF.js} +1 -1
  392. package/dist/showcase/assets/{showcase-m3FzbvoC.js → showcase-DuZaO6q9.js} +1 -1
  393. package/dist/showcase/assets/{sidebar-bz_FzvjM.js → sidebar-7y9EQYWf.js} +1 -1
  394. package/dist/showcase/assets/{sidebar.context-BWMPnGn6.js → sidebar.context-DUheJD8t.js} +1 -1
  395. package/dist/showcase/assets/{skeleton-BJMnQDgf.js → skeleton-Dgr8Vabr.js} +1 -1
  396. package/dist/showcase/assets/{skeleton-DoWW5XZD.js → skeleton-HSpErFqw.js} +1 -1
  397. package/dist/showcase/assets/{slider-BH1Gtp_p.js → slider-B7f81APg.js} +1 -1
  398. package/dist/showcase/assets/{smart-card-C6-idFYI.js → smart-card-p97LLZCW.js} +1 -1
  399. package/dist/showcase/assets/{sonner-CGZ3FC4U.js → sonner-CWazrN19.js} +1 -1
  400. package/dist/showcase/assets/{sortable.esm-CE0TA9V_.js → sortable.esm-uufol7Mz.js} +1 -1
  401. package/dist/showcase/assets/{sparkles-8yQFcmte.js → sparkles-Z4V23xKK.js} +1 -1
  402. package/dist/showcase/assets/{spinner-CNveVfOr.js → spinner-BUgjAjWE.js} +1 -1
  403. package/dist/showcase/assets/{spinner-CO8LjtjY.js → spinner-CXu7z8-j.js} +1 -1
  404. package/dist/showcase/assets/{spinner-BYUX0luk.js → spinner-DCwR0mnD.js} +1 -1
  405. package/dist/showcase/assets/{square-pen-CWylvezY.js → square-pen-jwp_OWMQ.js} +1 -1
  406. package/dist/showcase/assets/{stacked-avatars-DiNA5OJK.js → stacked-avatars-CHEpTotO.js} +1 -1
  407. package/dist/showcase/assets/{star-t53uwwyp.js → star-Ck8Lg5hm.js} +1 -1
  408. package/dist/showcase/assets/startOfDay-BzULZHy4.js +1 -0
  409. package/dist/showcase/assets/{styles-CwpnwrEQ.js → styles-CNYitflH.js} +1 -1
  410. package/dist/showcase/assets/{suggestions-CvxZxsmc.js → suggestions-CSF9MlKl.js} +1 -1
  411. package/dist/showcase/assets/{switch-CewkokYT.js → switch-BX9KSLIF.js} +1 -1
  412. package/dist/showcase/assets/{switch-D-7uqDR8.js → switch-Bn0WaWa9.js} +1 -1
  413. package/dist/showcase/assets/{sync-DnBSRAwH.js → sync-BuKBnqWW.js} +1 -1
  414. package/dist/showcase/assets/{table-3cUcSCBR.js → table-DNJcLaud.js} +42 -20
  415. package/dist/showcase/assets/{table-ds5oNU0h.js → table-NfpOWGsG.js} +1 -1
  416. package/dist/showcase/assets/{table-actions-CrujG5R-.js → table-actions-Ci9Yszp0.js} +1 -1
  417. package/dist/showcase/assets/{tabs-C-hJfSn5.js → tabs-CYNFQdIr.js} +1 -1
  418. package/dist/showcase/assets/{tabs-GG911oaV.js → tabs-Cm_p6znb.js} +1 -1
  419. package/dist/showcase/assets/{tags-input-DBeIaeVn.js → tags-input-DE4QZqS_.js} +1 -1
  420. package/dist/showcase/assets/{text-button-EZojp9Ye.js → text-button-D9llh4pU.js} +1 -1
  421. package/dist/showcase/assets/{text-link-DcKeYjEX.js → text-link-ZT6QGJOL.js} +1 -1
  422. package/dist/showcase/assets/{textarea-DgNgSl1g.js → textarea-CgcHuGVq.js} +1 -1
  423. package/dist/showcase/assets/{textarea-PXKZSiRa.js → textarea-D2uT_GJt.js} +1 -1
  424. package/dist/showcase/assets/{timelines-CaF_Ze8z.js → timelines-BEFO7tJ0.js} +1 -1
  425. package/dist/showcase/assets/{toggle-group-D_iuhL1G.js → toggle-group-oYpa59lN.js} +1 -1
  426. package/dist/showcase/assets/{toggles-BKaayRmE.js → toggles-BL93YmQo.js} +1 -1
  427. package/dist/showcase/assets/{toggles-group-DRAksOw2.js → toggles-group-BG-xiQCY.js} +1 -1
  428. package/dist/showcase/assets/{tooltip-B_LnC5D2.js → tooltip-BMI7zHwP.js} +1 -1
  429. package/dist/showcase/assets/{trash-2-DhUpICQq.js → trash-2-CtRtVsCy.js} +1 -1
  430. package/dist/showcase/assets/trending-up-2NQ-P8vB.js +1 -0
  431. package/dist/showcase/assets/{truck-D6SGLjv1.js → truck-Cl0nyN_j.js} +1 -1
  432. package/dist/showcase/assets/{typography-qEz6MMn9.js → typography-C7pCPhg7.js} +1 -1
  433. package/dist/showcase/assets/{ui-badge-BA334hdB.js → ui-badge-BvmuMzSq.js} +1 -1
  434. package/dist/showcase/assets/{ui-card-CjqUyGvB.js → ui-card-B7ziOMAn.js} +1 -1
  435. package/dist/showcase/assets/{ui-table-cDgI6WMk.js → ui-table-BEFHakBU.js} +1 -1
  436. package/dist/showcase/assets/{upload-tray-BcA-7pqW.js → upload-tray-CMKqTtEp.js} +1 -1
  437. package/dist/showcase/assets/{use-layout-link-DIUWH-oo.js → use-layout-link-nEU6ctSs.js} +1 -1
  438. package/dist/showcase/assets/{useAnchoredPopupScrollLock-BavpibMb.js → useAnchoredPopupScrollLock-B1xyKMh7.js} +1 -1
  439. package/dist/showcase/assets/{useAriaLabelledBy-HDEJjv0f.js → useAriaLabelledBy-BMlFgz-H.js} +1 -1
  440. package/dist/showcase/assets/{useCollapsiblePanel-CL0pCuxO.js → useCollapsiblePanel-BEzH6TC2.js} +1 -1
  441. package/dist/showcase/assets/{useCompositeItem-LkMSD9DW.js → useCompositeItem-CIuww7-p.js} +1 -1
  442. package/dist/showcase/assets/{useCompositeListItem-C_oLUvf8.js → useCompositeListItem-PrMTh4tz.js} +1 -1
  443. package/dist/showcase/assets/{useLabelableId-DDpjUdIO.js → useLabelableId-BBLkeLGr.js} +1 -1
  444. package/dist/showcase/assets/{useOpenInteractionType-DQOSh-Eu.js → useOpenInteractionType-CW0quo3l.js} +1 -1
  445. package/dist/showcase/assets/useRender-6NNMHJJU.js +1 -0
  446. package/dist/showcase/assets/{useTriggerFocusGuards-BPFrAxlp.js → useTriggerFocusGuards-DEza_iee.js} +1 -1
  447. package/dist/showcase/assets/{useValueChanged-lYlHqRM1.js → useValueChanged-BmWIb3SN.js} +1 -1
  448. package/dist/showcase/assets/user-BDIP5UPS.js +1 -0
  449. package/dist/showcase/assets/{user-plus-B1Pi7SNv.js → user-plus-BCqHFh2h.js} +1 -1
  450. package/dist/showcase/assets/{users-DAlxvktS.js → users-Bh7xGRX2.js} +1 -1
  451. package/dist/showcase/assets/{vendor-profile-ClJ6G6SO.js → vendor-profile-BlYcRbPI.js} +1 -1
  452. package/dist/showcase/assets/{video-DxooIkh-.js → video-BucshqNW.js} +1 -1
  453. package/dist/showcase/assets/{wrench-BiwmotMF.js → wrench-DQvhyTEb.js} +1 -1
  454. package/dist/showcase/assets/x-DyuS4YRT.js +1 -0
  455. package/dist/showcase/assets/{zap-a90eC6iO.js → zap-Dpn8_pnQ.js} +1 -1
  456. package/dist/showcase/index.html +2 -2
  457. package/dist/style.css +1 -1
  458. package/package.json +1 -1
  459. package/dist/_shared/cards-BKFwMTjM.cjs +0 -2
  460. package/dist/_shared/cards-BKFwMTjM.cjs.map +0 -1
  461. package/dist/_shared/cards-CtBoSZG9.js.map +0 -1
  462. package/dist/_shared/overlays-CdtMAkKG.js.map +0 -1
  463. package/dist/_shared/overlays-Diy_H0Au.cjs +0 -2
  464. package/dist/_shared/overlays-Diy_H0Au.cjs.map +0 -1
  465. package/dist/_shared/table-CUA_A-oO.js.map +0 -1
  466. package/dist/_shared/table-mPchjiRn.cjs +0 -2
  467. package/dist/_shared/table-mPchjiRn.cjs.map +0 -1
  468. package/dist/showcase/assets/arrow-down-BttnoDxP.js +0 -1
  469. package/dist/showcase/assets/arrow-left-B1kFGJ8v.js +0 -1
  470. package/dist/showcase/assets/arrow-right-Md96ra7v.js +0 -1
  471. package/dist/showcase/assets/arrow-up-B9e9cP-q.js +0 -1
  472. package/dist/showcase/assets/arrow-up-right-BOHJNdrp.js +0 -1
  473. package/dist/showcase/assets/card-primitives-CiU5lL3a.js +0 -1
  474. package/dist/showcase/assets/checkbox-Qhh92dbS.js +0 -1
  475. package/dist/showcase/assets/chevron-down-BqrI6QzQ.js +0 -1
  476. package/dist/showcase/assets/chevron-left-TJKYH3rG.js +0 -1
  477. package/dist/showcase/assets/chevron-up-CPuAmh-d.js +0 -1
  478. package/dist/showcase/assets/chevrons-up-down-DZB44PVY.js +0 -1
  479. package/dist/showcase/assets/circle-CY0DkTje.js +0 -1
  480. package/dist/showcase/assets/circle-check-BkFKejsY.js +0 -1
  481. package/dist/showcase/assets/circle-check-big-vu3Znqdx.js +0 -1
  482. package/dist/showcase/assets/circle-dot-CsBIkbEH.js +0 -1
  483. package/dist/showcase/assets/clock-3-mhWDhdka.js +0 -1
  484. package/dist/showcase/assets/clock-Dd-urPd2.js +0 -1
  485. package/dist/showcase/assets/index-CCxHwV7T.css +0 -2
  486. package/dist/showcase/assets/inertValue-DrANZiJk.js +0 -1
  487. package/dist/showcase/assets/isSameDay-DVP1ae2V.js +0 -1
  488. package/dist/showcase/assets/isToday-CNAQB-p9.js +0 -1
  489. package/dist/showcase/assets/metadata-list-BhlsEWYT.js +0 -1
  490. package/dist/showcase/assets/minus-B1es6KJX.js +0 -1
  491. package/dist/showcase/assets/page-action-button-DMS8Vcmz.js +0 -1
  492. package/dist/showcase/assets/plus-BkhJjfUv.js +0 -1
  493. package/dist/showcase/assets/rotate-ccw-MwEZ1b11.js +0 -1
  494. package/dist/showcase/assets/startOfDay-BKFJecZ3.js +0 -1
  495. package/dist/showcase/assets/trending-up-Kfm5l65O.js +0 -1
  496. package/dist/showcase/assets/useRender-CnmFaF3Y.js +0 -1
  497. package/dist/showcase/assets/user-DLuRcjl0.js +0 -1
  498. package/dist/showcase/assets/x-idpnOHil.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"auth-C_TgyzDl.js","names":[],"sources":["../../src/components/layout/auth/auth-card.tsx","../../src/components/layout/auth/auth-hooks.tsx","../../src/components/layout/auth/auth.strings.ts","../../src/components/layout/auth/auth-footer-links.tsx","../../src/components/layout/auth/auth-social-providers.tsx","../../src/components/layout/auth/auth-split-panel.tsx","../../src/components/layout/auth/auth-shell.tsx","../../src/components/layout/auth/auth-method-switch.tsx"],"sourcesContent":["import {\n\tCardContent,\n\tCardFooter,\n\tCardShell,\n} from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { AuthCardProps } from './auth.types';\n\nexport function AuthCard({\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tmedia,\n\tfooter,\n\tchildren,\n\tclassName,\n\theaderClassName,\n\tmediaClassName,\n\tcontentClassName,\n\tfooterClassName,\n\t...props\n}: AuthCardProps) {\n\tconst hasHeader = Boolean(eyebrow || title || description || headerEnd);\n\n\treturn (\n\t\t<CardShell\n\t\t\tdata-slot=\"auth-card\"\n\t\t\tclassName={cn(\n\t\t\t\t'auth-card--component',\n\t\t\t\t'gap-0 overflow-hidden rounded-lg border border-border/70 bg-card py-0 shadow-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!media && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'auth-card--media',\n\t\t\t\t\t\t'min-h-12 border-b border-border/60 bg-muted/50',\n\t\t\t\t\t\tmediaClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{media}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!hasHeader && (\n\t\t\t\t<header\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'auth-card--header',\n\t\t\t\t\t\t'flex items-start justify-between gap-4 px-6 pt-6 md:px-8 md:pt-8',\n\t\t\t\t\t\theaderClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"min-w-0 space-y-1.5\">\n\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\tclassName=\"auth-card--eyebrow uppercase tracking-wide\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag=\"h1\"\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName=\"auth-card--title border-0 pb-0 text-lg leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\t\t\t\tclassName=\"auth-card--description max-w-prose\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!headerEnd && (\n\t\t\t\t\t\t<div className=\"auth-card--header-end shrink-0\">\n\t\t\t\t\t\t\t{headerEnd}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<CardContent\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-card--content',\n\t\t\t\t\t'px-6 pb-6 md:px-8 md:pb-8',\n\t\t\t\t\thasHeader ? 'pt-5' : 'pt-6 md:pt-8',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!banner && <div className=\"auth-card--banner mb-5\">{banner}</div>}\n\t\t\t\t{children}\n\t\t\t</CardContent>\n\n\t\t\t{!!footer && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'auth-card--footer',\n\t\t\t\t\t\t'border-t border-border/60 px-6 py-4 md:px-8',\n\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{footer}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\t\t</CardShell>\n\t);\n}\n","import { isValidElement, useMemo } from 'react';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tUseAuthLinksOptions,\n\tUseAuthLinksReturn,\n\tUseAuthShellOptions,\n\tUseAuthShellReturn,\n} from './auth.types';\n\nexport function isAuthBrandConfig(brand: AuthBrand | undefined): brand is AuthBrandConfig {\n\treturn Boolean(\n\t\tbrand &&\n\t\t\ttypeof brand === 'object' &&\n\t\t\t!isValidElement(brand) &&\n\t\t\t('logo' in brand || 'label' in brand || 'description' in brand || 'href' in brand),\n\t);\n}\n\nexport function useAuthLinks({\n\tlinks = [],\n\trenderLink,\n\tLinkComponent,\n}: UseAuthLinksOptions = {}): UseAuthLinksReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst visibleLinks = useMemo(\n\t\t() => links.filter((link) => link.visible !== false),\n\t\t[links],\n\t);\n\n\treturn {\n\t\tlinks: visibleLinks,\n\t\trenderLink: resolvedRenderLink,\n\t};\n}\n\nexport function useAuthShell({\n\tvariant = 'card',\n\tbrand,\n\tfooter,\n\tfooterLinks = [],\n\tpolicyLinks = [],\n\tlanguageLinks = [],\n\tlanguageSwitcher,\n\tpostCard,\n\tsocialProviders = [],\n\tsplitPanel,\n\trenderLink,\n\tLinkComponent,\n}: UseAuthShellOptions = {}): UseAuthShellReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst visibleFooterLinks = useMemo(\n\t\t() => footerLinks.filter((link) => link.visible !== false),\n\t\t[footerLinks],\n\t);\n\tconst visiblePolicyLinks = useMemo(\n\t\t() => policyLinks.filter((link) => link.visible !== false),\n\t\t[policyLinks],\n\t);\n\tconst visibleLanguageLinks = useMemo(\n\t\t() => languageLinks.filter((link) => link.visible !== false),\n\t\t[languageLinks],\n\t);\n\tconst visibleSocialProviders = useMemo(\n\t\t() => socialProviders.filter((provider) => provider.visible !== false),\n\t\t[socialProviders],\n\t);\n\tconst hasBrand = Boolean(\n\t\tbrand &&\n\t\t\t(isAuthBrandConfig(brand)\n\t\t\t\t? brand.logo || brand.label || brand.description\n\t\t\t\t: brand),\n\t);\n\tconst hasAfterCard = Boolean(\n\t\tpostCard ||\n\t\t\tfooter ||\n\t\t\tlanguageSwitcher ||\n\t\t\tvisibleFooterLinks.length > 0 ||\n\t\t\tvisiblePolicyLinks.length > 0 ||\n\t\t\tvisibleLanguageLinks.length > 0,\n\t);\n\tconst hasSplitPanel = Boolean(splitPanel);\n\n\treturn {\n\t\tvariant: hasSplitPanel ? variant : 'card',\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders: visibleSocialProviders.length > 0,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t};\n}\n","export interface AuthShellStrings {\n\tsocialDivider: string;\n\tsocialProvidersLabel: string;\n\tfooterLinksLabel: string;\n\tpolicyLinksLabel: string;\n\tlanguageLinksLabel: string;\n}\n\nexport const defaultAuthShellStrings: AuthShellStrings = {\n\tsocialDivider: 'or continue with email',\n\tsocialProvidersLabel: 'Social sign-in options',\n\tfooterLinksLabel: 'Authentication links',\n\tpolicyLinksLabel: 'Policies',\n\tlanguageLinksLabel: 'Language options',\n};\n\nexport interface AuthFooterLinksStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthFooterLinksStrings: AuthFooterLinksStrings = {\n\tlabel: 'Authentication links',\n};\n\nexport interface AuthSocialProvidersStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthSocialProvidersStrings: AuthSocialProvidersStrings = {\n\tlabel: 'Social sign-in options',\n};\n\nexport interface AuthMethodSwitchStrings {\n\tlabel: string;\n\tdivider: string;\n}\n\nexport const defaultAuthMethodSwitchStrings: AuthMethodSwitchStrings = {\n\tlabel: 'Authentication method',\n\tdivider: 'or',\n};\n","import { Fragment } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useAuthLinks } from './auth-hooks';\nimport { defaultAuthFooterLinksStrings } from './auth.strings';\nimport type { AuthFooterLinksProps } from './auth.types';\n\nexport function AuthFooterLinks({\n\tlinks,\n\tleadingIcon,\n\tseparator = '·',\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthFooterLinksProps) {\n\tconst strings = useStrings(defaultAuthFooterLinksStrings, stringsProp);\n\tconst { links: visibleLinks, renderLink: resolvedRenderLink } = useAuthLinks({\n\t\tlinks,\n\t\trenderLink,\n\t\tLinkComponent,\n\t});\n\n\tif (visibleLinks.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<nav\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-footer-links--component',\n\t\t\t\t'flex flex-wrap items-center justify-center gap-x-2 gap-y-1 text-center',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!leadingIcon && (\n\t\t\t\t<span className=\"auth-footer-links--icon flex shrink-0 items-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t\t{leadingIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{visibleLinks.map((link, index) => {\n\t\t\t\tconst linkNode = resolvedRenderLink({\n\t\t\t\t\thref: link.href,\n\t\t\t\t\ttarget: link.target,\n\t\t\t\t\trel: link.rel,\n\t\t\t\t\texternal: link.external,\n\t\t\t\t\tdisabled: link.disabled,\n\t\t\t\t\tonClick: link.onClick,\n\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t'auth-footer-links--item',\n\t\t\t\t\t\t'text-muted-foreground transition-colors hover:text-foreground',\n\t\t\t\t\t\tlink.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t),\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">\n\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t),\n\t\t\t\t});\n\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={link.id ?? index}>\n\t\t\t\t\t\t{index > 0 && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName=\"auth-footer-links--separator\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{linkNode}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n","import { KeyRound } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport { defaultAuthSocialProvidersStrings } from './auth.strings';\nimport type {\n\tAuthSocialProvider,\n\tAuthSocialProviderButtonProps,\n\tAuthSocialProvidersProps,\n} from './auth.types';\n\nconst PROVIDER_BUTTON_CLASS = 'auth-social-provider-button--component inline-flex h-9 w-full items-center justify-center gap-2 rounded-md border border-input bg-background px-3 text-sm font-medium text-foreground shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50';\n\nfunction GoogleMark() {\n\treturn (\n\t\t<svg\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"size-4\"\n\t\t\tviewBox=\"0 0 256 262\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t>\n\t\t\t<path fill=\"#4285F4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\" />\n\t\t\t<path fill=\"#34A853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\" />\n\t\t\t<path fill=\"#FBBC05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\" />\n\t\t\t<path fill=\"#EB4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\" />\n\t\t</svg>\n\t);\n}\n\nfunction MicrosoftMark() {\n\treturn (\n\t\t<svg aria-hidden=\"true\" className=\"size-4\" viewBox=\"0 0 23 23\">\n\t\t\t<path fill=\"#f25022\" d=\"M1 1h10v10H1z\" />\n\t\t\t<path fill=\"#7fba00\" d=\"M12 1h10v10H12z\" />\n\t\t\t<path fill=\"#00a4ef\" d=\"M1 12h10v10H1z\" />\n\t\t\t<path fill=\"#ffb900\" d=\"M12 12h10v10H12z\" />\n\t\t</svg>\n\t);\n}\n\nfunction GithubMark() {\n\treturn (\n\t\t<svg aria-hidden=\"true\" className=\"size-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M12 2C6.48 2 2 6.58 2 12.24c0 4.53 2.87 8.37 6.84 9.73.5.09.68-.22.68-.49 0-.24-.01-.88-.01-1.73-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.63.07-.63 1 .07 1.53 1.06 1.53 1.06.9 1.57 2.36 1.12 2.93.86.09-.67.35-1.12.64-1.38-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.04 1.03-2.76-.1-.26-.45-1.31.1-2.72 0 0 .84-.28 2.75 1.05A9.32 9.32 0 0 1 12 6.95c.85 0 1.7.12 2.5.35 1.9-1.33 2.74-1.05 2.74-1.05.55 1.41.2 2.46.1 2.72.64.72 1.03 1.64 1.03 2.76 0 3.94-2.34 4.8-4.57 5.06.36.32.68.95.68 1.91 0 1.38-.01 2.49-.01 2.83 0 .27.18.59.69.49A10.12 10.12 0 0 0 22 12.24C22 6.58 17.52 2 12 2Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction AppleMark() {\n\treturn (\n\t\t<svg aria-hidden=\"true\" className=\"size-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M16.37 12.05c-.02-2.26 1.85-3.35 1.94-3.4-1.06-1.55-2.69-1.76-3.26-1.78-1.37-.14-2.7.82-3.39.82-.71 0-1.78-.8-2.93-.78-1.5.02-2.9.89-3.67 2.25-1.57 2.72-.4 6.72 1.1 8.92.76 1.08 1.64 2.29 2.79 2.25 1.13-.05 1.55-.72 2.91-.72 1.35 0 1.75.72 2.93.69 1.21-.02 1.98-1.09 2.71-2.18.87-1.24 1.22-2.46 1.23-2.52-.03-.01-2.34-.9-2.36-3.55ZM14.16 5.42c.61-.76 1.03-1.8.91-2.85-.88.04-1.98.61-2.62 1.35-.57.65-1.08 1.73-.95 2.74.99.08 2.02-.5 2.66-1.24Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction ProviderIcon({ provider }: { provider: AuthSocialProvider }) {\n\tif (provider.icon) return <>{provider.icon}</>;\n\tswitch (provider.provider) {\n\t\tcase 'google':\n\t\t\treturn <GoogleMark />;\n\t\tcase 'github':\n\t\t\treturn <GithubMark />;\n\t\tcase 'microsoft':\n\t\t\treturn <MicrosoftMark />;\n\t\tcase 'apple':\n\t\t\treturn <AppleMark />;\n\t\tdefault:\n\t\t\treturn <KeyRound className=\"size-4\" aria-hidden=\"true\" />;\n\t}\n}\n\nexport function AuthSocialProviderButton({\n\tprovider,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n}: AuthSocialProviderButtonProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst content = (\n\t\t<>\n\t\t\t<ProviderIcon provider={provider} />\n\t\t\t<Text tag=\"span\" className=\"text-inherit\">\n\t\t\t\t{provider.label}\n\t\t\t</Text>\n\t\t</>\n\t);\n\tconst buttonClassName = cn(\n\t\tPROVIDER_BUTTON_CLASS,\n\t\tprovider.disabled && 'pointer-events-none opacity-50',\n\t\tclassName,\n\t);\n\n\tif (provider.href) {\n\t\treturn resolvedRenderLink({\n\t\t\thref: provider.href,\n\t\t\ttarget: provider.target,\n\t\t\trel: provider.rel,\n\t\t\texternal: provider.external,\n\t\t\tdisabled: provider.disabled,\n\t\t\tonClick: provider.onClick,\n\t\t\tclassName: buttonClassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"outline\"\n\t\t\tfullWidth\n\t\t\tdisabled={provider.disabled}\n\t\t\tclassName={cn('auth-social-provider-button--component', className)}\n\t\t\tonClick={(event) => provider.onClick?.(event)}\n\t\t>\n\t\t\t{content}\n\t\t</Button>\n\t);\n}\n\nexport function AuthSocialProviders({\n\tproviders,\n\tlayout = 'stack',\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthSocialProvidersProps) {\n\tconst strings = useStrings(defaultAuthSocialProvidersStrings, stringsProp);\n\tconst visibleProviders = providers?.filter((provider) => provider.visible !== false) ?? [];\n\n\tif (visibleProviders.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tdata-layout={layout}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-social-providers--component',\n\t\t\t\tlayout === 'grid' ? 'grid gap-2 sm:grid-cols-2' : 'grid gap-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{visibleProviders.map((provider) => (\n\t\t\t\t<AuthSocialProviderButton\n\t\t\t\t\tkey={provider.id ?? String(provider.label)}\n\t\t\t\t\tprovider={provider}\n\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","import {\n\tItem,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { AuthSplitPanelProps } from './auth.types';\n\nconst SURFACE_CLASS: Record<NonNullable<AuthSplitPanelProps['surface']>, string> = {\n\tcard: 'border-border/70 bg-card',\n\tmuted: 'border-border/60 bg-muted/40',\n};\n\nexport function AuthSplitPanel({\n\teyebrow,\n\ttitle,\n\tdescription,\n\tmedia,\n\tfeatures,\n\tfooter,\n\tchildren,\n\tsurface = 'muted',\n\tclassName,\n\tcontentClassName,\n\t...props\n}: AuthSplitPanelProps) {\n\tconst hasIntro = Boolean(eyebrow || title || description);\n\tconst visibleFeatures = features?.filter((feature) => feature.title) ?? [];\n\n\treturn (\n\t\t<aside\n\t\t\tdata-slot=\"auth-split-panel\"\n\t\t\tdata-surface={surface}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-split-panel--component',\n\t\t\t\t'flex min-h-full w-full flex-col justify-between overflow-hidden border',\n\t\t\t\tSURFACE_CLASS[surface],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-split-panel--content',\n\t\t\t\t\t'flex min-h-full flex-col justify-center gap-8 p-6 md:p-8 lg:p-10',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!media && (\n\t\t\t\t\t<div className=\"auth-split-panel--media overflow-hidden rounded-lg border border-border/60 bg-background/70\">\n\t\t\t\t\t\t{media}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasIntro && (\n\t\t\t\t\t<div className=\"auth-split-panel--intro max-w-xl space-y-2\">\n\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--eyebrow uppercase tracking-wide\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag=\"h2\"\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--title border-0 pb-0 text-xl leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--description max-w-prose\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{visibleFeatures.length > 0 && (\n\t\t\t\t\t<ItemGroup className=\"auth-split-panel--features grid gap-3\">\n\t\t\t\t\t\t{visibleFeatures.map((feature, index) => (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={feature.id ?? index}\n\t\t\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--feature bg-background/70\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!feature.icon && (\n\t\t\t\t\t\t\t\t\t<ItemMedia variant=\"icon\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{feature.icon}\n\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t\t\t\t\t\t<ItemTitle>{feature.title}</ItemTitle>\n\t\t\t\t\t\t\t\t\t{!!feature.description && (\n\t\t\t\t\t\t\t\t\t\t<ItemDescription clamp=\"none\">{feature.description}</ItemDescription>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t)}\n\n\t\t\t\t{children}\n\n\t\t\t\t{!!footer && (\n\t\t\t\t\t<div className=\"auth-split-panel--footer\">\n\t\t\t\t\t\t{footer}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</aside>\n\t);\n}\n","import { Globe2 } from 'lucide-react';\nimport { isValidElement, type ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { AuthCard } from './auth-card';\nimport { AuthFooterLinks } from './auth-footer-links';\nimport { isAuthBrandConfig, useAuthShell } from './auth-hooks';\nimport { defaultAuthShellStrings } from './auth.strings';\nimport { AuthSocialProviders } from './auth-social-providers';\nimport { AuthSplitPanel } from './auth-split-panel';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tAuthShellProps,\n\tAuthSplitPanelProps,\n} from './auth.types';\n\nconst SIZE_CLASS: Record<NonNullable<AuthShellProps['size']>, string> = {\n\tsm: 'max-w-sm',\n\tmd: 'max-w-md',\n\tlg: 'max-w-lg',\n};\n\nfunction isSplitPanelProps(panel: AuthShellProps['splitPanel']): panel is AuthSplitPanelProps {\n\treturn Boolean(panel && typeof panel === 'object' && !isValidElement(panel));\n}\n\nfunction renderBrandContent(brand: AuthBrandConfig): ReactNode {\n\tconst hasText = Boolean(brand.label || brand.description);\n\n\treturn (\n\t\t<>\n\t\t\t{!!brand.logo && (\n\t\t\t\t<div className=\"auth-shell--brand-logo shrink-0\">\n\t\t\t\t\t{brand.logo}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!hasText && (\n\t\t\t\t<div className=\"auth-shell--brand-text min-w-0\">\n\t\t\t\t\t{!!brand.label && (\n\t\t\t\t\t\t<Text tag=\"div\" weight=\"semibold\" className=\"auth-shell--brand-label\">\n\t\t\t\t\t\t\t{brand.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!brand.description && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"auth-shell--brand-description\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{brand.description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nfunction renderBrand({\n\tbrand,\n\trenderLink,\n}: {\n\tbrand?: AuthBrand;\n\trenderLink: NonNullable<AuthShellProps['renderLink']>;\n}) {\n\tif (!brand) return null;\n\n\tif (!isAuthBrandConfig(brand)) {\n\t\treturn (\n\t\t\t<div className=\"auth-shell--brand flex items-center justify-center\">\n\t\t\t\t{brand}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst content = renderBrandContent(brand);\n\tconst className = cn(\n\t\t'auth-shell--brand',\n\t\t'inline-flex items-center justify-center gap-2.5 self-center rounded-md text-foreground',\n\t\tbrand.href && 'transition-opacity hover:opacity-80',\n\t);\n\n\tif (brand.href) {\n\t\treturn renderLink({\n\t\t\thref: brand.href,\n\t\t\t'aria-label': brand.ariaLabel,\n\t\t\tclassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn <div className={className}>{content}</div>;\n}\n\nfunction renderSplitPanel(panel: AuthShellProps['splitPanel']) {\n\tif (!panel) return null;\n\tif (isValidElement(panel)) return panel;\n\tif (isSplitPanelProps(panel)) return <AuthSplitPanel {...panel} />;\n\treturn null;\n}\n\nexport function AuthShell({\n\tchildren,\n\tvariant: variantProp = 'card',\n\tsize = 'md',\n\talign = 'center',\n\tbrand,\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tcardMedia,\n\tcardMediaClassName,\n\tcardFooter,\n\tpostCard,\n\tfooter,\n\tfooterLinks,\n\tpolicyLinks,\n\tlanguageLinks,\n\tlanguageSwitcher,\n\tsocialProviders,\n\tsocialProvidersLayout = 'stack',\n\tsocialDivider,\n\tsplitPanel,\n\tsplitSide = 'left',\n\tsplitMobile = 'hidden',\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tmainClassName,\n\tstackClassName,\n\tcardClassName,\n\tcardContentClassName,\n\tsplitGridClassName,\n\tsplitPanelClassName,\n\tfooterClassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthShellProps) {\n\tconst strings = useStrings(defaultAuthShellStrings, stringsProp);\n\tconst {\n\t\tvariant,\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t} = useAuthShell({\n\t\tvariant: variantProp,\n\t\tbrand,\n\t\tfooter,\n\t\tfooterLinks,\n\t\tpolicyLinks,\n\t\tlanguageLinks,\n\t\tlanguageSwitcher,\n\t\tpostCard,\n\t\tsocialProviders,\n\t\tsplitPanel,\n\t\trenderLink,\n\t\tLinkComponent,\n\t});\n\tconst isSplit = variant === 'split' && hasSplitPanel;\n\tconst panel = renderSplitPanel(splitPanel);\n\tconst panelFirst = splitSide === 'left';\n\tconst showStackedPanel = splitMobile === 'stacked';\n\tconst brandNode = hasBrand ? renderBrand({ brand, renderLink: resolvedRenderLink }) : null;\n\n\tconst main = (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--main',\n\t\t\t\t'flex min-h-svh w-full items-center justify-center px-4 py-8 sm:px-6 md:px-8',\n\t\t\t\talign === 'start' && 'items-start pt-12',\n\t\t\t\tisSplit && 'lg:min-h-svh',\n\t\t\t\tmainClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--stack',\n\t\t\t\t\t'flex w-full flex-col gap-5',\n\t\t\t\t\tSIZE_CLASS[size],\n\t\t\t\t\tstackClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{brandNode}\n\n\t\t\t\t<AuthCard\n\t\t\t\t\teyebrow={eyebrow}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\theaderEnd={headerEnd}\n\t\t\t\t\tbanner={banner}\n\t\t\t\t\tmedia={cardMedia}\n\t\t\t\t\tmediaClassName={cardMediaClassName}\n\t\t\t\t\tfooter={cardFooter}\n\t\t\t\t\tclassName={cardClassName}\n\t\t\t\t\tcontentClassName={cardContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{!!hasSocialProviders && (\n\t\t\t\t\t\t<div className=\"auth-shell--social mb-4 grid gap-4\">\n\t\t\t\t\t\t\t<AuthSocialProviders\n\t\t\t\t\t\t\t\tproviders={visibleSocialProviders}\n\t\t\t\t\t\t\t\tlayout={socialProvidersLayout}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.socialProvidersLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"auth-shell--social-divider flex items-center gap-3\">\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t{socialDivider ?? strings.socialDivider}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{children}\n\t\t\t\t</AuthCard>\n\n\t\t\t\t{!!hasAfterCard && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--after-card',\n\t\t\t\t\t\t\t'flex flex-col items-center gap-3 text-center',\n\t\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!postCard && <div className=\"auth-shell--post-card\">{postCard}</div>}\n\t\t\t\t\t\t{!!languageSwitcher && (\n\t\t\t\t\t\t\t<div className=\"auth-shell--language-switcher\">\n\t\t\t\t\t\t\t\t{languageSwitcher}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleLanguageLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--language-links\"\n\t\t\t\t\t\t\t\tlinks={visibleLanguageLinks}\n\t\t\t\t\t\t\t\tleadingIcon={<Globe2 className=\"size-3.5\" />}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.languageLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleFooterLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--footer-links\"\n\t\t\t\t\t\t\t\tlinks={visibleFooterLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.footerLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visiblePolicyLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--policy-links\"\n\t\t\t\t\t\t\t\tlinks={visiblePolicyLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.policyLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!footer && <div className=\"auth-shell--footer\">{footer}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</main>\n\t);\n\n\tif (!isSplit) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"auth-shell\"\n\t\t\t\tdata-variant=\"card\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--component',\n\t\t\t\t\t'min-h-svh bg-background text-foreground',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{main}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"auth-shell\"\n\t\t\tdata-variant=\"split\"\n\t\t\tdata-split-side={splitSide}\n\t\t\tdata-split-mobile={splitMobile}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--component',\n\t\t\t\t'min-h-svh bg-background text-foreground',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--split-grid min-h-svh lg:grid',\n\t\t\t\t\tpanelFirst\n\t\t\t\t\t\t? 'lg:grid-cols-[minmax(0,1fr)_minmax(24rem,34rem)]'\n\t\t\t\t\t\t: 'lg:grid-cols-[minmax(24rem,34rem)_minmax(0,1fr)]',\n\t\t\t\t\tsplitGridClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden lg:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{main}\n\t\t\t\t{!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden lg:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAuthMethodSwitchStrings } from './auth.strings';\nimport type {\n\tAuthMethodOption,\n\tAuthMethodSwitchProps,\n\tUseAuthMethodSwitchOptions,\n\tUseAuthMethodSwitchReturn,\n} from './auth.types';\n\nfunction firstEnabledOption(options: AuthMethodOption[]) {\n\treturn options.find((option) => !option.disabled);\n}\n\nexport function useAuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n}: UseAuthMethodSwitchOptions = {}): UseAuthMethodSwitchReturn {\n\tconst visibleOptions = React.useMemo(\n\t\t() => options.filter((option) => option.visible !== false),\n\t\t[options],\n\t);\n\tconst fallbackValue = defaultValue ?? firstEnabledOption(visibleOptions)?.id;\n\tconst [internalValue, setInternalValue] = React.useState<string | undefined>(fallbackValue);\n\tconst isControlled = value !== undefined;\n\tconst selectedValue = isControlled ? value : internalValue;\n\tconst selectedOption = visibleOptions.find((option) => option.id === selectedValue);\n\n\tconst setValue = React.useCallback(\n\t\t(nextValue: string) => {\n\t\t\tconst nextOption = visibleOptions.find((option) => option.id === nextValue);\n\t\t\tif (!nextOption || nextOption.disabled) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalValue(nextValue);\n\t\t\t}\n\n\t\t\tonValueChange?.(nextValue, nextOption);\n\t\t},\n\t\t[isControlled, onValueChange, visibleOptions],\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isControlled || selectedOption || visibleOptions.length === 0) return;\n\t\tsetInternalValue(firstEnabledOption(visibleOptions)?.id);\n\t}, [isControlled, selectedOption, visibleOptions]);\n\n\treturn {\n\t\tvalue: selectedValue,\n\t\tselectedOption,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t};\n}\n\nexport function AuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tlayout = 'stack',\n\tdivider,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthMethodSwitchProps) {\n\tconst strings = useStrings(defaultAuthMethodSwitchStrings, stringsProp);\n\tconst { ['aria-label']: ariaLabel, ...rootProps } = props;\n\tconst {\n\t\tvalue: selectedValue,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t} = useAuthMethodSwitch({\n\t\toptions,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t});\n\n\tif (visibleOptions.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn('auth-method-switch--component grid gap-3', className)} {...rootProps}>\n\t\t\t{divider !== null && divider !== false && (\n\t\t\t\t<div className=\"auth-method-switch--divider flex items-center gap-3\">\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{divider ?? strings.divider}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ariaLabel ?? strings.label}\n\t\t\t\tdata-layout={layout}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-method-switch--options',\n\t\t\t\t\tlayout === 'grid' && 'grid gap-2 sm:grid-cols-2',\n\t\t\t\t\tlayout === 'stack' && 'grid gap-2',\n\t\t\t\t\tlayout === 'segmented' &&\n\t\t\t\t\t\t'grid grid-cols-[repeat(auto-fit,minmax(0,1fr))] gap-1 rounded-lg border border-border bg-muted/40 p-1',\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{visibleOptions.map((option) => {\n\t\t\t\t\tconst selected = option.id === selectedValue;\n\t\t\t\t\tconst segmented = layout === 'segmented';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-pressed={selected}\n\t\t\t\t\t\t\tdisabled={option.disabled}\n\t\t\t\t\t\t\tvariant={selected ? 'dark' : 'secondary'}\n\t\t\t\t\t\t\tbuttonStyle={selected ? 'solid' : segmented ? 'ghost' : 'outline'}\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'auth-method-switch--option',\n\t\t\t\t\t\t\t\t'h-auto min-h-10 justify-start rounded-md px-3 py-2.5 text-start',\n\t\t\t\t\t\t\t\tsegmented &&\n\t\t\t\t\t\t\t\t\t'min-h-9 justify-center border-0 px-2 py-2 text-center shadow-none min-[480px]:px-3 min-[480px]:text-start',\n\t\t\t\t\t\t\t\tselected && 'auth-method-switch--option-selected',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tonClick={() => setValue(option.id)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'auth-method-switch--option-inner flex min-w-0 items-center gap-2',\n\t\t\t\t\t\t\t\t\tsegmented &&\n\t\t\t\t\t\t\t\t\t\t'w-full flex-col justify-center gap-1 min-[480px]:w-auto min-[480px]:flex-row min-[480px]:justify-start min-[480px]:gap-2',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!option.icon && (\n\t\t\t\t\t\t\t\t\t<span className=\"auth-method-switch--option-icon shrink-0\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t{option.icon}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'auth-method-switch--option-copy grid min-w-0 gap-0.5',\n\t\t\t\t\t\t\t\t\t\tsegmented && 'justify-items-center min-[480px]:justify-items-start',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'max-w-full text-inherit leading-tight',\n\t\t\t\t\t\t\t\t\t\t\tsegmented\n\t\t\t\t\t\t\t\t\t\t\t\t? 'text-center min-[480px]:truncate min-[480px]:text-start'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'text-start',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!option.description && (\n\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\tsegmented\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'hidden min-[480px]:block min-[480px]:truncate'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text-start leading-snug',\n\t\t\t\t\t\t\t\t\t\t\t\tselected ? 'text-inherit opacity-75' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{option.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;AAUA,SAAgB,EAAS,EACxB,YACA,UACA,gBACA,cACA,WACA,UACA,WACA,aACA,cACA,oBACA,mBACA,qBACA,oBACA,GAAG,KACc;CACjB,IAAM,IAAY,GAAQ,KAAW,KAAS,KAAe;CAE7D,OACC,kBAAC,GAAD;EACC,aAAU;EACV,WAAW,EACV,wBACA,mFACA,CACD;EACA,GAAI;YAPL;GASE,CAAC,CAAC,KACF,kBAAC,OAAD;IACC,WAAW,EACV,oBACA,kDACA,CACD;cAEC;GACG,CAAA;GAGL,CAAC,CAAC,KACF,kBAAC,UAAD;IACC,WAAW,EACV,qBACA,oEACA,CACD;cALD,CAOC,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,CAAC,CAAC,KACF,kBAAC,GAAD;OACC,KAAI;OACJ,MAAK;OACL,MAAK;OACL,QAAO;OACP,WAAU;iBAET;MACI,CAAA;MAEN,CAAC,CAAC,KACF,kBAAC,GAAD;OACC,KAAI;OACJ,oBAAmB;OACnB,WAAU;iBAET;MACO,CAAA;MAET,CAAC,CAAC,KACF,kBAAC,GAAD;OACC,KAAI;OACJ,MAAK;OACL,YAAW;OACX,WAAU;iBAET;MACI,CAAA;KAEH;QACJ,CAAC,CAAC,KACF,kBAAC,OAAD;KAAK,WAAU;eACb;IACG,CAAA,CAEC;;GAGT,kBAAC,GAAD;IACC,WAAW,EACV,sBACA,6BACA,IAAY,SAAS,gBACrB,CACD;cAND,CAQE,CAAC,CAAC,KAAU,kBAAC,OAAD;KAAK,WAAU;eAA0B;IAAY,CAAA,GACjE,CACW;;GAEZ,CAAC,CAAC,KACF,kBAAC,GAAD;IACC,WAAW,EACV,qBACA,+CACA,CACD;cAEC;GACU,CAAA;EAEH;;AAEb;;;AC/GA,SAAgB,EAAkB,GAAwD;CACzF,OAAO,GACN,KACC,OAAO,KAAU,YACjB,CAAC,EAAe,CAAK,MACpB,UAAU,KAAS,WAAW,KAAS,iBAAiB,KAAS,UAAU;AAE/E;AAEA,SAAgB,EAAa,EAC5B,WAAQ,CAAC,GACT,eACA,qBACwB,CAAC,GAAuB;CAChD,IAAM,IAAqB,EAAsB;EAAE;EAAY;CAAc,CAAC;CAM9E,OAAO;EACN,OANoB,QACd,EAAM,QAAQ,MAAS,EAAK,YAAY,EAAK,GACnD,CAAC,CAAK,CAIC;EACP,YAAY;CACb;AACD;AAEA,SAAgB,EAAa,EAC5B,aAAU,QACV,UACA,WACA,iBAAc,CAAC,GACf,iBAAc,CAAC,GACf,mBAAgB,CAAC,GACjB,qBACA,aACA,qBAAkB,CAAC,GACnB,eACA,eACA,qBACwB,CAAC,GAAuB;CAChD,IAAM,IAAqB,EAAsB;EAAE;EAAY;CAAc,CAAC,GACxE,IAAqB,QACpB,EAAY,QAAQ,MAAS,EAAK,YAAY,EAAK,GACzD,CAAC,CAAW,CACb,GACM,IAAqB,QACpB,EAAY,QAAQ,MAAS,EAAK,YAAY,EAAK,GACzD,CAAC,CAAW,CACb,GACM,IAAuB,QACtB,EAAc,QAAQ,MAAS,EAAK,YAAY,EAAK,GAC3D,CAAC,CAAa,CACf,GACM,IAAyB,QACxB,EAAgB,QAAQ,MAAa,EAAS,YAAY,EAAK,GACrE,CAAC,CAAe,CACjB,GACM,IAAW,GAChB,MACE,EAAkB,CAAK,IACrB,EAAM,QAAQ,EAAM,SAAS,EAAM,cACnC,KAEC,IAAe,GACpB,KACC,KACA,KACA,EAAmB,SAAS,KAC5B,EAAmB,SAAS,KAC5B,EAAqB,SAAS,IAE1B,IAAgB,EAAQ;CAE9B,OAAO;EACN,SAAS,IAAgB,IAAU;EACnC;EACA;EACA;EACA,oBAAoB,EAAuB,SAAS;EACpD,YAAY;EACZ,aAAa;EACb,aAAa;EACb,eAAe;EACf,iBAAiB;CAClB;AACD;;;ACzFA,IAAa,IAA4C;CACxD,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;AACrB,GAMa,IAAwD,EACpE,OAAO,uBACR,GAMa,IAAgE,EAC5E,OAAO,yBACR,GAOa,IAA0D;CACtE,OAAO;CACP,SAAS;AACV;;;AC9BA,SAAgB,EAAgB,EAC/B,UACA,gBACA,eAAY,KACZ,eACA,kBACA,cACA,SAAS,GACT,GAAG,KACqB;CACxB,IAAM,IAAU,EAAW,GAA+B,CAAW,GAC/D,EAAE,OAAO,GAAc,YAAY,MAAuB,EAAa;EAC5E;EACA;EACA;CACD,CAAC;CAMD,OAJI,EAAa,WAAW,IACpB,OAIP,kBAAC,OAAD;EACC,cAAY,EAAM,iBAAiB,EAAQ;EAC3C,WAAW,EACV,gCACA,0EACA,CACD;EACA,GAAI;YAPL,CASE,CAAC,CAAC,KACF,kBAAC,QAAD;GAAM,WAAU;GAA2E,eAAY;aACrG;EACI,CAAA,GAEN,EAAa,KAAK,GAAM,MAAU;GAClC,IAAM,IAAW,EAAmB;IACnC,MAAM,EAAK;IACX,QAAQ,EAAK;IACb,KAAK,EAAK;IACV,UAAU,EAAK;IACf,UAAU,EAAK;IACf,SAAS,EAAK;IACd,WAAW,EACV,2BACA,iEACA,EAAK,YAAY,gCAClB;IACA,UACC,kBAAC,GAAD;KAAM,KAAI;KAAO,MAAK;KAAK,WAAU;eACnC,EAAK;IACD,CAAA;GAER,CAAC;GAED,OACC,kBAAC,GAAD,EAAA,UAAA,CACE,IAAQ,KACR,kBAAC,GAAD;IACC,KAAI;IACJ,MAAK;IACL,MAAK;IACL,eAAY;IACZ,WAAU;cAET;GACI,CAAA,GAEN,CACQ,EAAA,GAbK,EAAK,MAAM,CAahB;EAEZ,CAAC,CACG;;AAEP;;;ACtEA,IAAM,IAAwB;AAE9B,SAAS,IAAa;CACrB,OACC,kBAAC,OAAD;EACC,eAAY;EACZ,WAAU;EACV,SAAQ;EACR,OAAM;YAJP;GAMC,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAA8L,CAAA;GACrN,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAA6N,CAAA;GACpP,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAAqM,CAAA;GAC5N,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAAgM,CAAA;EACnN;;AAEP;AAEA,SAAS,IAAgB;CACxB,OACC,kBAAC,OAAD;EAAK,eAAY;EAAO,WAAU;EAAS,SAAQ;YAAnD;GACC,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAAiB,CAAA;GACxC,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAAmB,CAAA;GAC1C,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAAkB,CAAA;GACzC,kBAAC,QAAD;IAAM,MAAK;IAAU,GAAE;GAAoB,CAAA;EACvC;;AAEP;AAEA,SAAS,IAAa;CACrB,OACC,kBAAC,OAAD;EAAK,eAAY;EAAO,WAAU;EAAS,SAAQ;EAAY,MAAK;YACnE,kBAAC,QAAD,EAAM,GAAE,gmBAAimB,CAAA;CACrmB,CAAA;AAEP;AAEA,SAAS,IAAY;CACpB,OACC,kBAAC,OAAD;EAAK,eAAY;EAAO,WAAU;EAAS,SAAQ;EAAY,MAAK;YACnE,kBAAC,QAAD,EAAM,GAAE,8bAA+b,CAAA;CACnc,CAAA;AAEP;AAEA,SAAS,EAAa,EAAE,eAA8C;CACrE,IAAI,EAAS,MAAM,OAAO,kBAAA,GAAA,EAAA,UAAG,EAAS,KAAO,CAAA;CAC7C,QAAQ,EAAS,UAAjB;EACC,KAAK,UACJ,OAAO,kBAAC,GAAD,CAAa,CAAA;EACrB,KAAK,UACJ,OAAO,kBAAC,GAAD,CAAa,CAAA;EACrB,KAAK,aACJ,OAAO,kBAAC,GAAD,CAAgB,CAAA;EACxB,KAAK,SACJ,OAAO,kBAAC,GAAD,CAAY,CAAA;EACpB,SACC,OAAO,kBAAC,GAAD;GAAU,WAAU;GAAS,eAAY;EAAQ,CAAA;CAC1D;AACD;AAEA,SAAgB,EAAyB,EACxC,aACA,eACA,kBACA,gBACiC;CACjC,IAAM,IAAqB,EAAsB;EAAE;EAAY;CAAc,CAAC,GACxE,IACL,kBAAA,GAAA,EAAA,UAAA,CACC,kBAAC,GAAD,EAAwB,YAAW,CAAA,GACnC,kBAAC,GAAD;EAAM,KAAI;EAAO,WAAU;YACzB,EAAS;CACL,CAAA,CACL,EAAA,CAAA,GAEG,IAAkB,EACvB,GACA,EAAS,YAAY,kCACrB,CACD;CAeA,OAbI,EAAS,OACL,EAAmB;EACzB,MAAM,EAAS;EACf,QAAQ,EAAS;EACjB,KAAK,EAAS;EACd,UAAU,EAAS;EACnB,UAAU,EAAS;EACnB,SAAS,EAAS;EAClB,WAAW;EACX,UAAU;CACX,CAAC,IAID,kBAAC,GAAD;EACC,MAAK;EACL,SAAQ;EACR,aAAY;EACZ,WAAA;EACA,UAAU,EAAS;EACnB,WAAW,EAAG,0CAA0C,CAAS;EACjE,UAAU,MAAU,EAAS,UAAU,CAAK;YAE3C;CACM,CAAA;AAEV;AAEA,SAAgB,EAAoB,EACnC,cACA,YAAS,SACT,eACA,kBACA,cACA,SAAS,GACT,GAAG,KACyB;CAC5B,IAAM,IAAU,EAAW,GAAmC,CAAW,GACnE,IAAmB,GAAW,QAAQ,MAAa,EAAS,YAAY,EAAK,KAAK,CAAC;CAMzF,OAJI,EAAiB,WAAW,IACxB,OAIP,kBAAC,OAAD;EACC,MAAK;EACL,cAAY,EAAM,iBAAiB,EAAQ;EAC3C,eAAa;EACb,WAAW,EACV,oCACA,MAAW,SAAS,8BAA8B,cAClD,CACD;EACA,GAAI;YAEH,EAAiB,KAAK,MACtB,kBAAC,GAAD;GAEW;GACE;GACG;EACf,GAJK,EAAS,MAAM,OAAO,EAAS,KAAK,CAIzC,CACD;CACG,CAAA;AAEP;;;ACtJA,IAAM,KAA6E;CAClF,MAAM;CACN,OAAO;AACR;AAEA,SAAgB,EAAe,EAC9B,YACA,UACA,gBACA,UACA,aACA,WACA,aACA,aAAU,SACV,cACA,qBACA,GAAG,KACoB;CACvB,IAAM,IAAW,GAAQ,KAAW,KAAS,IACvC,IAAkB,GAAU,QAAQ,MAAY,EAAQ,KAAK,KAAK,CAAC;CAEzE,OACC,kBAAC,SAAD;EACC,aAAU;EACV,gBAAc;EACd,WAAW,EACV,+BACA,0EACA,GAAc,IACd,CACD;EACA,GAAI;YAEJ,kBAAC,OAAD;GACC,WAAW,EACV,6BACA,oEACA,CACD;aALD;IAOE,CAAC,CAAC,KACF,kBAAC,OAAD;KAAK,WAAU;eACb;IACG,CAAA;IAGL,CAAC,CAAC,KACF,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,CAAC,CAAC,KACF,kBAAC,GAAD;OACC,KAAI;OACJ,MAAK;OACL,MAAK;OACL,QAAO;OACP,WAAU;iBAET;MACI,CAAA;MAEN,CAAC,CAAC,KACF,kBAAC,GAAD;OACC,KAAI;OACJ,oBAAmB;OACnB,WAAU;iBAET;MACO,CAAA;MAET,CAAC,CAAC,KACF,kBAAC,GAAD;OACC,KAAI;OACJ,MAAK;OACL,YAAW;OACX,WAAU;iBAET;MACI,CAAA;KAEH;;IAGL,EAAgB,SAAS,KACzB,kBAAC,GAAD;KAAW,WAAU;eACnB,EAAgB,KAAK,GAAS,MAC9B,kBAAC,GAAD;MAEC,SAAQ;MACR,WAAU;gBAHX,CAKE,CAAC,CAAC,EAAQ,QACV,kBAAC,GAAD;OAAW,SAAQ;OAAO,WAAU;iBAClC,EAAQ;MACC,CAAA,GAEZ,kBAAC,GAAD;OAAa,WAAU;iBAAvB,CACC,kBAAC,GAAD,EAAA,UAAY,EAAQ,MAAiB,CAAA,GACpC,CAAC,CAAC,EAAQ,eACV,kBAAC,GAAD;QAAiB,OAAM;kBAAQ,EAAQ;OAA6B,CAAA,CAEzD;QACR;QAfA,EAAQ,MAAM,CAed,CACN;IACS,CAAA;IAGX;IAEA,CAAC,CAAC,KACF,kBAAC,OAAD;KAAK,WAAU;eACb;IACG,CAAA;GAEF;;CACC,CAAA;AAET;;;AC5GA,IAAM,KAAkE;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;AACL;AAEA,SAAS,EAAkB,GAAmE;CAC7F,OAAO,GAAQ,KAAS,OAAO,KAAU,YAAY,CAAC,EAAe,CAAK;AAC3E;AAEA,SAAS,EAAmB,GAAmC;CAC9D,IAAM,IAAU,GAAQ,EAAM,SAAS,EAAM;CAE7C,OACC,kBAAA,GAAA,EAAA,UAAA,CACE,CAAC,CAAC,EAAM,QACR,kBAAC,OAAD;EAAK,WAAU;YACb,EAAM;CACH,CAAA,GAEL,CAAC,CAAC,KACF,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,CAAC,CAAC,EAAM,SACR,kBAAC,GAAD;GAAM,KAAI;GAAM,QAAO;GAAW,WAAU;aAC1C,EAAM;EACF,CAAA,GAEN,CAAC,CAAC,EAAM,eACR,kBAAC,GAAD;GACC,KAAI;GACJ,MAAK;GACL,MAAK;GACL,WAAU;aAET,EAAM;EACF,CAAA,CAEH;GAEL,EAAA,CAAA;AAEJ;AAEA,SAAS,GAAY,EACpB,UACA,iBAIE;CACF,IAAI,CAAC,GAAO,OAAO;CAEnB,IAAI,CAAC,EAAkB,CAAK,GAC3B,OACC,kBAAC,OAAD;EAAK,WAAU;YACb;CACG,CAAA;CAIP,IAAM,IAAU,EAAmB,CAAK,GAClC,IAAY,EACjB,qBACA,0FACA,EAAM,QAAQ,qCACf;CAWA,OATI,EAAM,OACF,EAAW;EACjB,MAAM,EAAM;EACZ,cAAc,EAAM;EACpB;EACA,UAAU;CACX,CAAC,IAGK,kBAAC,OAAD;EAAgB;YAAY;CAAa,CAAA;AACjD;AAEA,SAAS,GAAiB,GAAqC;CAI9D,OAHK,IACD,EAAe,CAAK,IAAU,IAC9B,EAAkB,CAAK,IAAU,kBAAC,GAAD,EAAgB,GAAI,EAAQ,CAAA,IAC1D,OAHY;AAIpB;AAEA,SAAgB,EAAU,EACzB,aACA,SAAS,IAAc,QACvB,UAAO,MACP,WAAQ,UACR,UACA,YACA,UACA,gBACA,cACA,WACA,cACA,uBACA,eACA,aACA,WACA,gBACA,gBACA,kBACA,qBACA,oBACA,2BAAwB,SACxB,kBACA,eACA,eAAY,QACZ,iBAAc,UACd,eACA,kBACA,cACA,kBACA,mBACA,mBACA,yBACA,uBACA,wBACA,oBACA,SAAS,GACT,GAAG,KACe;CAClB,IAAM,IAAU,EAAW,GAAyB,CAAW,GACzD,EACL,aACA,cACA,kBACA,mBACA,wBACA,YAAY,GACZ,aAAa,GACb,aAAa,GACb,eAAe,GACf,iBAAiB,OACd,EAAa;EAChB,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,CAAC,GACK,IAAU,OAAY,WAAW,IACjC,KAAQ,GAAiB,CAAU,GACnC,IAAa,MAAc,QAC3B,KAAmB,MAAgB,WACnC,KAAY,KAAW,GAAY;EAAE;EAAO,YAAY;CAAmB,CAAC,IAAI,MAEhF,KACL,kBAAC,QAAD;EACC,WAAW,EACV,oBACA,+EACA,MAAU,WAAW,qBACrB,KAAW,gBACX,CACD;YAEA,kBAAC,OAAD;GACC,WAAW,EACV,qBACA,8BACA,GAAW,IACX,CACD;aAND;IAQE;IAED,kBAAC,GAAD;KACU;KACF;KACM;KACF;KACH;KACR,OAAO;KACP,gBAAgB;KAChB,QAAQ;KACR,WAAW;KACX,kBAAkB;eAVnB,CAYE,CAAC,CAAC,MACF,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACC,kBAAC,GAAD;OACC,WAAW;OACX,QAAQ;OACR,YAAY;OACZ,SAAS,EAAE,OAAO,EAAQ,qBAAqB;MAC/C,CAAA,GACD,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACC,kBAAC,QAAD;SAAM,WAAU;SAAgC,eAAY;QAAQ,CAAA;QACpE,kBAAC,GAAD;SAAM,KAAI;SAAO,MAAK;SAAK,MAAK;mBAC9B,KAAiB,EAAQ;QACrB,CAAA;QACN,kBAAC,QAAD;SAAM,WAAU;SAAgC,eAAY;QAAQ,CAAA;OAChE;QACD;SAEL,CACQ;;IAET,CAAC,CAAC,MACF,kBAAC,OAAD;KACC,WAAW,EACV,0BACA,gDACA,CACD;eALD;MAOE,CAAC,CAAC,KAAY,kBAAC,OAAD;OAAK,WAAU;iBAAyB;MAAc,CAAA;MACpE,CAAC,CAAC,KACF,kBAAC,OAAD;OAAK,WAAU;iBACb;MACG,CAAA;MAEL,EAAqB,SAAS,KAC9B,kBAAC,GAAD;OACC,WAAU;OACV,OAAO;OACP,aAAa,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA;OAC3C,YAAY;OACZ,SAAS,EAAE,OAAO,EAAQ,mBAAmB;MAC7C,CAAA;MAED,EAAmB,SAAS,KAC5B,kBAAC,GAAD;OACC,WAAU;OACV,OAAO;OACP,YAAY;OACZ,SAAS,EAAE,OAAO,EAAQ,iBAAiB;MAC3C,CAAA;MAED,EAAmB,SAAS,KAC5B,kBAAC,GAAD;OACC,WAAU;OACV,OAAO;OACP,YAAY;OACZ,SAAS,EAAE,OAAO,EAAQ,iBAAiB;MAC3C,CAAA;MAED,CAAC,CAAC,KAAU,kBAAC,OAAD;OAAK,WAAU;iBAAsB;MAAY,CAAA;KAC1D;;GAEF;;CACA,CAAA;CAoBP,OAjBK,IAkBJ,kBAAC,OAAD;EACC,aAAU;EACV,gBAAa;EACb,mBAAiB;EACjB,qBAAmB;EACnB,WAAW,EACV,yBACA,2CACA,CACD;EACA,GAAI;YAEJ,kBAAC,OAAD;GACC,WAAW,EACV,4CACA,IACG,qDACA,oDACH,CACD;aAPD;IASE,CAAC,CAAC,KACF,kBAAC,OAAD;KACC,WAAW,EACV,2BACA,KAAmB,UAAU,mBAC7B,CACD;eAEC;IACG,CAAA;IAEL;IACA,CAAC,KACD,kBAAC,OAAD;KACC,WAAW,EACV,2BACA,KAAmB,UAAU,mBAC7B,CACD;eAEC;IACG,CAAA;GAEF;;CACD,CAAA,IA7DJ,kBAAC,OAAD;EACC,aAAU;EACV,gBAAa;EACb,WAAW,EACV,yBACA,2CACA,CACD;EACA,GAAI;YAEH;CACG,CAAA;AAoDR;;;ACrUA,SAAS,EAAmB,GAA6B;CACxD,OAAO,EAAQ,MAAM,MAAW,CAAC,EAAO,QAAQ;AACjD;AAEA,SAAgB,EAAoB,EACnC,aAAU,CAAC,GACX,UACA,iBACA,qBAC+B,CAAC,GAA8B;CAC9D,IAAM,IAAiB,EAAM,cACtB,EAAQ,QAAQ,MAAW,EAAO,YAAY,EAAK,GACzD,CAAC,CAAO,CACT,GACM,IAAgB,KAAgB,EAAmB,CAAc,GAAG,IACpE,CAAC,GAAe,KAAoB,EAAM,SAA6B,CAAa,GACpF,IAAe,MAAU,KAAA,GACzB,IAAgB,IAAe,IAAQ,GACvC,IAAiB,EAAe,MAAM,MAAW,EAAO,OAAO,CAAa,GAE5E,IAAW,EAAM,aACrB,MAAsB;EACtB,IAAM,IAAa,EAAe,MAAM,MAAW,EAAO,OAAO,CAAS;EACtE,CAAC,KAAc,EAAW,aAEzB,KACJ,EAAiB,CAAS,GAG3B,IAAgB,GAAW,CAAU;CACtC,GACA;EAAC;EAAc;EAAe;CAAc,CAC7C;CAOA,OALA,EAAM,gBAAgB;EACjB,KAAgB,KAAkB,EAAe,WAAW,KAChE,EAAiB,EAAmB,CAAc,GAAG,EAAE;CACxD,GAAG;EAAC;EAAc;EAAgB;CAAc,CAAC,GAE1C;EACN,OAAO;EACP;EACA,SAAS;EACT;CACD;AACD;AAEA,SAAgB,EAAiB,EAChC,aAAU,CAAC,GACX,UACA,iBACA,kBACA,YAAS,SACT,YACA,cACA,SAAS,GACT,GAAG,KACsB;CACzB,IAAM,IAAU,EAAW,GAAgC,CAAW,GAChE,EAAG,cAAe,GAAW,GAAG,MAAc,GAC9C,EACL,OAAO,GACP,SAAS,GACT,gBACG,EAAoB;EACvB;EACA;EACA;EACA;CACD,CAAC;CAMD,OAJI,EAAe,WAAW,IACtB,OAIP,kBAAC,OAAD;EAAK,WAAW,EAAG,4CAA4C,CAAS;EAAG,GAAI;YAA/E,CACE,MAAY,QAAQ,MAAY,MAChC,kBAAC,OAAD;GAAK,WAAU;aAAf;IACC,kBAAC,QAAD;KAAM,WAAU;KAAgC,eAAY;IAAQ,CAAA;IACpE,kBAAC,GAAD;KAAM,KAAI;KAAO,MAAK;KAAK,MAAK;eAC9B,KAAW,EAAQ;IACf,CAAA;IACN,kBAAC,QAAD;KAAM,WAAU;KAAgC,eAAY;IAAQ,CAAA;GAChE;MAGN,kBAAC,OAAD;GACC,MAAK;GACL,cAAY,KAAa,EAAQ;GACjC,eAAa;GACb,WAAW,EACV,+BACA,MAAW,UAAU,6BACrB,MAAW,WAAW,cACtB,MAAW,eACV,uGACF;GACA,GAAI;aAEH,EAAe,KAAK,MAAW;IAC/B,IAAM,IAAW,EAAO,OAAO,GACzB,IAAY,MAAW;IAE7B,OACC,kBAAC,GAAD;KAEC,MAAK;KACL,gBAAc;KACd,UAAU,EAAO;KACjB,SAAS,IAAW,SAAS;KAC7B,aAAa,IAAW,UAAU,IAAY,UAAU;KACxD,WAAA;KACA,WAAW,EACV,8BACA,mEACA,KACC,6GACD,KAAY,qCACb;KACA,eAAe,EAAS,EAAO,EAAE;eAEjC,kBAAC,QAAD;MACC,WAAW,EACV,oEACA,KACC,0HACF;gBALD,CAOE,CAAC,CAAC,EAAO,QACT,kBAAC,QAAD;OAAM,WAAU;OAA2C,eAAY;iBACrE,EAAO;MACH,CAAA,GAEP,kBAAC,QAAD;OACC,WAAW,EACV,wDACA,KAAa,sDACd;iBAJD,CAMC,kBAAC,GAAD;QACC,KAAI;QACJ,MAAK;QACL,QAAO;QACP,WAAW,EACV,yCACA,IACG,4DACA,YACJ;kBAEC,EAAO;OACH,CAAA,GACL,CAAC,CAAC,EAAO,eACT,kBAAC,GAAD;QACC,KAAI;QACJ,MAAK;QACL,WAAW,EACV,IACG,kDACA,2BACH,IAAW,4BAA4B,uBACxC;kBAEC,EAAO;OACH,CAAA,CAEF;QACD;;IACC,GA/DF,EAAO,EA+DL;GAEV,CAAC;EACG,CAAA,CACD;;AAEP"}
1
+ {"version":3,"file":"auth-e7yab9pK.js","names":[],"sources":["../../src/components/layout/auth/auth-card.tsx","../../src/components/layout/auth/auth-hooks.tsx","../../src/components/layout/auth/auth.strings.ts","../../src/components/layout/auth/auth-footer-links.tsx","../../src/components/layout/auth/auth-social-providers.tsx","../../src/components/layout/auth/auth-split-panel.tsx","../../src/components/layout/auth/auth-shell.tsx","../../src/components/layout/auth/auth-method-switch.tsx"],"sourcesContent":["import {\n\tCardContent,\n\tCardFooter,\n\tCardShell,\n} from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { AuthCardProps } from './auth.types';\n\nexport function AuthCard({\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tmedia,\n\tfooter,\n\tchildren,\n\tclassName,\n\theaderClassName,\n\tmediaClassName,\n\tcontentClassName,\n\tfooterClassName,\n\t...props\n}: AuthCardProps) {\n\tconst hasHeader = Boolean(eyebrow || title || description || headerEnd);\n\n\treturn (\n\t\t<CardShell\n\t\t\tdata-slot=\"auth-card\"\n\t\t\tclassName={cn(\n\t\t\t\t'auth-card--component',\n\t\t\t\t'gap-0 overflow-hidden rounded-lg border border-border/70 bg-card py-0 shadow-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!media && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'auth-card--media',\n\t\t\t\t\t\t'min-h-12 border-b border-border/60 bg-muted/50',\n\t\t\t\t\t\tmediaClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{media}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!hasHeader && (\n\t\t\t\t<header\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'auth-card--header',\n\t\t\t\t\t\t'flex items-start justify-between gap-4 px-6 pt-6 md:px-8 md:pt-8',\n\t\t\t\t\t\theaderClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"min-w-0 space-y-1.5\">\n\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\tclassName=\"auth-card--eyebrow uppercase tracking-wide\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag=\"h1\"\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName=\"auth-card--title border-0 pb-0 text-lg leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\t\t\t\tclassName=\"auth-card--description max-w-prose\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!headerEnd && (\n\t\t\t\t\t\t<div className=\"auth-card--header-end shrink-0\">\n\t\t\t\t\t\t\t{headerEnd}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</header>\n\t\t\t)}\n\n\t\t\t<CardContent\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-card--content',\n\t\t\t\t\t'px-6 pb-6 md:px-8 md:pb-8',\n\t\t\t\t\thasHeader ? 'pt-5' : 'pt-6 md:pt-8',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!banner && <div className=\"auth-card--banner mb-5\">{banner}</div>}\n\t\t\t\t{children}\n\t\t\t</CardContent>\n\n\t\t\t{!!footer && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'auth-card--footer',\n\t\t\t\t\t\t'border-t border-border/60 px-6 py-4 md:px-8',\n\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{footer}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\t\t</CardShell>\n\t);\n}\n","import { isValidElement, useMemo } from 'react';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tUseAuthLinksOptions,\n\tUseAuthLinksReturn,\n\tUseAuthShellOptions,\n\tUseAuthShellReturn,\n} from './auth.types';\n\nexport function isAuthBrandConfig(brand: AuthBrand | undefined): brand is AuthBrandConfig {\n\treturn Boolean(\n\t\tbrand &&\n\t\t\ttypeof brand === 'object' &&\n\t\t\t!isValidElement(brand) &&\n\t\t\t('logo' in brand || 'label' in brand || 'description' in brand || 'href' in brand),\n\t);\n}\n\nexport function useAuthLinks({\n\tlinks = [],\n\trenderLink,\n\tLinkComponent,\n}: UseAuthLinksOptions = {}): UseAuthLinksReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst visibleLinks = useMemo(\n\t\t() => links.filter((link) => link.visible !== false),\n\t\t[links],\n\t);\n\n\treturn {\n\t\tlinks: visibleLinks,\n\t\trenderLink: resolvedRenderLink,\n\t};\n}\n\nexport function useAuthShell({\n\tvariant = 'card',\n\tbrand,\n\tfooter,\n\tfooterLinks = [],\n\tpolicyLinks = [],\n\tlanguageLinks = [],\n\tlanguageSwitcher,\n\tpostCard,\n\tsocialProviders = [],\n\tsplitPanel,\n\trenderLink,\n\tLinkComponent,\n}: UseAuthShellOptions = {}): UseAuthShellReturn {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst visibleFooterLinks = useMemo(\n\t\t() => footerLinks.filter((link) => link.visible !== false),\n\t\t[footerLinks],\n\t);\n\tconst visiblePolicyLinks = useMemo(\n\t\t() => policyLinks.filter((link) => link.visible !== false),\n\t\t[policyLinks],\n\t);\n\tconst visibleLanguageLinks = useMemo(\n\t\t() => languageLinks.filter((link) => link.visible !== false),\n\t\t[languageLinks],\n\t);\n\tconst visibleSocialProviders = useMemo(\n\t\t() => socialProviders.filter((provider) => provider.visible !== false),\n\t\t[socialProviders],\n\t);\n\tconst hasBrand = Boolean(\n\t\tbrand &&\n\t\t\t(isAuthBrandConfig(brand)\n\t\t\t\t? brand.logo || brand.label || brand.description\n\t\t\t\t: brand),\n\t);\n\tconst hasAfterCard = Boolean(\n\t\tpostCard ||\n\t\t\tfooter ||\n\t\t\tlanguageSwitcher ||\n\t\t\tvisibleFooterLinks.length > 0 ||\n\t\t\tvisiblePolicyLinks.length > 0 ||\n\t\t\tvisibleLanguageLinks.length > 0,\n\t);\n\tconst hasSplitPanel = Boolean(splitPanel);\n\n\treturn {\n\t\tvariant: hasSplitPanel ? variant : 'card',\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders: visibleSocialProviders.length > 0,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t};\n}\n","export interface AuthShellStrings {\n\tsocialDivider: string;\n\tsocialProvidersLabel: string;\n\tfooterLinksLabel: string;\n\tpolicyLinksLabel: string;\n\tlanguageLinksLabel: string;\n}\n\nexport const defaultAuthShellStrings: AuthShellStrings = {\n\tsocialDivider: 'or continue with email',\n\tsocialProvidersLabel: 'Social sign-in options',\n\tfooterLinksLabel: 'Authentication links',\n\tpolicyLinksLabel: 'Policies',\n\tlanguageLinksLabel: 'Language options',\n};\n\nexport interface AuthFooterLinksStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthFooterLinksStrings: AuthFooterLinksStrings = {\n\tlabel: 'Authentication links',\n};\n\nexport interface AuthSocialProvidersStrings {\n\tlabel: string;\n}\n\nexport const defaultAuthSocialProvidersStrings: AuthSocialProvidersStrings = {\n\tlabel: 'Social sign-in options',\n};\n\nexport interface AuthMethodSwitchStrings {\n\tlabel: string;\n\tdivider: string;\n}\n\nexport const defaultAuthMethodSwitchStrings: AuthMethodSwitchStrings = {\n\tlabel: 'Authentication method',\n\tdivider: 'or',\n};\n","import { Fragment } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useAuthLinks } from './auth-hooks';\nimport { defaultAuthFooterLinksStrings } from './auth.strings';\nimport type { AuthFooterLinksProps } from './auth.types';\n\nexport function AuthFooterLinks({\n\tlinks,\n\tleadingIcon,\n\tseparator = '·',\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthFooterLinksProps) {\n\tconst strings = useStrings(defaultAuthFooterLinksStrings, stringsProp);\n\tconst { links: visibleLinks, renderLink: resolvedRenderLink } = useAuthLinks({\n\t\tlinks,\n\t\trenderLink,\n\t\tLinkComponent,\n\t});\n\n\tif (visibleLinks.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<nav\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-footer-links--component',\n\t\t\t\t'flex flex-wrap items-center justify-center gap-x-2 gap-y-1 text-center',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{!!leadingIcon && (\n\t\t\t\t<span className=\"auth-footer-links--icon flex shrink-0 items-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t\t{leadingIcon}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t{visibleLinks.map((link, index) => {\n\t\t\t\tconst linkNode = resolvedRenderLink({\n\t\t\t\t\thref: link.href,\n\t\t\t\t\ttarget: link.target,\n\t\t\t\t\trel: link.rel,\n\t\t\t\t\texternal: link.external,\n\t\t\t\t\tdisabled: link.disabled,\n\t\t\t\t\tonClick: link.onClick,\n\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t'auth-footer-links--item',\n\t\t\t\t\t\t'text-muted-foreground transition-colors hover:text-foreground',\n\t\t\t\t\t\tlink.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t),\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" className=\"text-inherit\">\n\t\t\t\t\t\t\t{link.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t),\n\t\t\t\t});\n\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={link.id ?? index}>\n\t\t\t\t\t\t{index > 0 && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName=\"auth-footer-links--separator\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{linkNode}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</nav>\n\t);\n}\n","import { KeyRound } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../hooks';\nimport { defaultAuthSocialProvidersStrings } from './auth.strings';\nimport type {\n\tAuthSocialProvider,\n\tAuthSocialProviderButtonProps,\n\tAuthSocialProvidersProps,\n} from './auth.types';\n\nconst PROVIDER_BUTTON_CLASS = 'auth-social-provider-button--component inline-flex h-9 w-full items-center justify-center gap-2 rounded-md border border-input bg-background px-3 text-sm font-medium text-foreground shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50';\n\nfunction GoogleMark() {\n\treturn (\n\t\t<svg\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"size-4\"\n\t\t\tviewBox=\"0 0 256 262\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t>\n\t\t\t<path fill=\"#4285F4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\" />\n\t\t\t<path fill=\"#34A853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\" />\n\t\t\t<path fill=\"#FBBC05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\" />\n\t\t\t<path fill=\"#EB4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\" />\n\t\t</svg>\n\t);\n}\n\nfunction MicrosoftMark() {\n\treturn (\n\t\t<svg aria-hidden=\"true\" className=\"size-4\" viewBox=\"0 0 23 23\">\n\t\t\t<path fill=\"#f25022\" d=\"M1 1h10v10H1z\" />\n\t\t\t<path fill=\"#7fba00\" d=\"M12 1h10v10H12z\" />\n\t\t\t<path fill=\"#00a4ef\" d=\"M1 12h10v10H1z\" />\n\t\t\t<path fill=\"#ffb900\" d=\"M12 12h10v10H12z\" />\n\t\t</svg>\n\t);\n}\n\nfunction GithubMark() {\n\treturn (\n\t\t<svg aria-hidden=\"true\" className=\"size-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M12 2C6.48 2 2 6.58 2 12.24c0 4.53 2.87 8.37 6.84 9.73.5.09.68-.22.68-.49 0-.24-.01-.88-.01-1.73-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.63.07-.63 1 .07 1.53 1.06 1.53 1.06.9 1.57 2.36 1.12 2.93.86.09-.67.35-1.12.64-1.38-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.04 1.03-2.76-.1-.26-.45-1.31.1-2.72 0 0 .84-.28 2.75 1.05A9.32 9.32 0 0 1 12 6.95c.85 0 1.7.12 2.5.35 1.9-1.33 2.74-1.05 2.74-1.05.55 1.41.2 2.46.1 2.72.64.72 1.03 1.64 1.03 2.76 0 3.94-2.34 4.8-4.57 5.06.36.32.68.95.68 1.91 0 1.38-.01 2.49-.01 2.83 0 .27.18.59.69.49A10.12 10.12 0 0 0 22 12.24C22 6.58 17.52 2 12 2Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction AppleMark() {\n\treturn (\n\t\t<svg aria-hidden=\"true\" className=\"size-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n\t\t\t<path d=\"M16.37 12.05c-.02-2.26 1.85-3.35 1.94-3.4-1.06-1.55-2.69-1.76-3.26-1.78-1.37-.14-2.7.82-3.39.82-.71 0-1.78-.8-2.93-.78-1.5.02-2.9.89-3.67 2.25-1.57 2.72-.4 6.72 1.1 8.92.76 1.08 1.64 2.29 2.79 2.25 1.13-.05 1.55-.72 2.91-.72 1.35 0 1.75.72 2.93.69 1.21-.02 1.98-1.09 2.71-2.18.87-1.24 1.22-2.46 1.23-2.52-.03-.01-2.34-.9-2.36-3.55ZM14.16 5.42c.61-.76 1.03-1.8.91-2.85-.88.04-1.98.61-2.62 1.35-.57.65-1.08 1.73-.95 2.74.99.08 2.02-.5 2.66-1.24Z\" />\n\t\t</svg>\n\t);\n}\n\nfunction ProviderIcon({ provider }: { provider: AuthSocialProvider }) {\n\tif (provider.icon) return <>{provider.icon}</>;\n\tswitch (provider.provider) {\n\t\tcase 'google':\n\t\t\treturn <GoogleMark />;\n\t\tcase 'github':\n\t\t\treturn <GithubMark />;\n\t\tcase 'microsoft':\n\t\t\treturn <MicrosoftMark />;\n\t\tcase 'apple':\n\t\t\treturn <AppleMark />;\n\t\tdefault:\n\t\t\treturn <KeyRound className=\"size-4\" aria-hidden=\"true\" />;\n\t}\n}\n\nexport function AuthSocialProviderButton({\n\tprovider,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n}: AuthSocialProviderButtonProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst content = (\n\t\t<>\n\t\t\t<ProviderIcon provider={provider} />\n\t\t\t<Text tag=\"span\" className=\"text-inherit\">\n\t\t\t\t{provider.label}\n\t\t\t</Text>\n\t\t</>\n\t);\n\tconst buttonClassName = cn(\n\t\tPROVIDER_BUTTON_CLASS,\n\t\tprovider.disabled && 'pointer-events-none opacity-50',\n\t\tclassName,\n\t);\n\n\tif (provider.href) {\n\t\treturn resolvedRenderLink({\n\t\t\thref: provider.href,\n\t\t\ttarget: provider.target,\n\t\t\trel: provider.rel,\n\t\t\texternal: provider.external,\n\t\t\tdisabled: provider.disabled,\n\t\t\tonClick: provider.onClick,\n\t\t\tclassName: buttonClassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"outline\"\n\t\t\tfullWidth\n\t\t\tdisabled={provider.disabled}\n\t\t\tclassName={cn('auth-social-provider-button--component', className)}\n\t\t\tonClick={(event) => provider.onClick?.(event)}\n\t\t>\n\t\t\t{content}\n\t\t</Button>\n\t);\n}\n\nexport function AuthSocialProviders({\n\tproviders,\n\tlayout = 'stack',\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthSocialProvidersProps) {\n\tconst strings = useStrings(defaultAuthSocialProvidersStrings, stringsProp);\n\tconst visibleProviders = providers?.filter((provider) => provider.visible !== false) ?? [];\n\n\tif (visibleProviders.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\taria-label={props['aria-label'] ?? strings.label}\n\t\t\tdata-layout={layout}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-social-providers--component',\n\t\t\t\tlayout === 'grid' ? 'grid gap-2 sm:grid-cols-2' : 'grid gap-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{visibleProviders.map((provider) => (\n\t\t\t\t<AuthSocialProviderButton\n\t\t\t\t\tkey={provider.id ?? String(provider.label)}\n\t\t\t\t\tprovider={provider}\n\t\t\t\t\trenderLink={renderLink}\n\t\t\t\t\tLinkComponent={LinkComponent}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","import {\n\tItem,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { AuthSplitPanelProps } from './auth.types';\n\nconst SURFACE_CLASS: Record<NonNullable<AuthSplitPanelProps['surface']>, string> = {\n\tcard: 'border-border/70 bg-card',\n\tmuted: 'border-border/60 bg-muted/40',\n};\n\nexport function AuthSplitPanel({\n\teyebrow,\n\ttitle,\n\tdescription,\n\tmedia,\n\tfeatures,\n\tfooter,\n\tchildren,\n\tsurface = 'muted',\n\tclassName,\n\tcontentClassName,\n\t...props\n}: AuthSplitPanelProps) {\n\tconst hasIntro = Boolean(eyebrow || title || description);\n\tconst visibleFeatures = features?.filter((feature) => feature.title) ?? [];\n\n\treturn (\n\t\t<aside\n\t\t\tdata-slot=\"auth-split-panel\"\n\t\t\tdata-surface={surface}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-split-panel--component',\n\t\t\t\t'flex min-h-full w-full flex-col justify-between overflow-hidden border',\n\t\t\t\tSURFACE_CLASS[surface],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-split-panel--content',\n\t\t\t\t\t'flex min-h-full flex-col justify-center gap-8 p-6 md:p-8 lg:p-10',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!media && (\n\t\t\t\t\t<div className=\"auth-split-panel--media overflow-hidden rounded-lg border border-border/60 bg-background/70\">\n\t\t\t\t\t\t{media}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasIntro && (\n\t\t\t\t\t<div className=\"auth-split-panel--intro max-w-xl space-y-2\">\n\t\t\t\t\t\t{!!eyebrow && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--eyebrow uppercase tracking-wide\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && (\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\ttag=\"h2\"\n\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--title border-0 pb-0 text-xl leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--description max-w-prose\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{visibleFeatures.length > 0 && (\n\t\t\t\t\t<ItemGroup className=\"auth-split-panel--features grid gap-3\">\n\t\t\t\t\t\t{visibleFeatures.map((feature, index) => (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={feature.id ?? index}\n\t\t\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\t\t\tclassName=\"auth-split-panel--feature bg-background/70\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!feature.icon && (\n\t\t\t\t\t\t\t\t\t<ItemMedia variant=\"icon\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{feature.icon}\n\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t\t\t\t\t\t<ItemTitle>{feature.title}</ItemTitle>\n\t\t\t\t\t\t\t\t\t{!!feature.description && (\n\t\t\t\t\t\t\t\t\t\t<ItemDescription clamp=\"none\">{feature.description}</ItemDescription>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t)}\n\n\t\t\t\t{children}\n\n\t\t\t\t{!!footer && (\n\t\t\t\t\t<div className=\"auth-split-panel--footer\">\n\t\t\t\t\t\t{footer}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</aside>\n\t);\n}\n","import { Globe2 } from 'lucide-react';\nimport { isValidElement, type ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { AuthCard } from './auth-card';\nimport { AuthFooterLinks } from './auth-footer-links';\nimport { isAuthBrandConfig, useAuthShell } from './auth-hooks';\nimport { defaultAuthShellStrings } from './auth.strings';\nimport { AuthSocialProviders } from './auth-social-providers';\nimport { AuthSplitPanel } from './auth-split-panel';\nimport type {\n\tAuthBrand,\n\tAuthBrandConfig,\n\tAuthShellProps,\n\tAuthSplitPanelProps,\n} from './auth.types';\n\nconst SIZE_CLASS: Record<NonNullable<AuthShellProps['size']>, string> = {\n\tsm: 'max-w-sm',\n\tmd: 'max-w-md',\n\tlg: 'max-w-lg',\n};\n\nfunction isSplitPanelProps(panel: AuthShellProps['splitPanel']): panel is AuthSplitPanelProps {\n\treturn Boolean(panel && typeof panel === 'object' && !isValidElement(panel));\n}\n\nfunction renderBrandContent(brand: AuthBrandConfig): ReactNode {\n\tconst hasText = Boolean(brand.label || brand.description);\n\n\treturn (\n\t\t<>\n\t\t\t{!!brand.logo && (\n\t\t\t\t<div className=\"auth-shell--brand-logo shrink-0\">\n\t\t\t\t\t{brand.logo}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!hasText && (\n\t\t\t\t<div className=\"auth-shell--brand-text min-w-0\">\n\t\t\t\t\t{!!brand.label && (\n\t\t\t\t\t\t<Text tag=\"div\" weight=\"semibold\" className=\"auth-shell--brand-label\">\n\t\t\t\t\t\t\t{brand.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!brand.description && (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"div\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"auth-shell--brand-description\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{brand.description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nfunction renderBrand({\n\tbrand,\n\trenderLink,\n}: {\n\tbrand?: AuthBrand;\n\trenderLink: NonNullable<AuthShellProps['renderLink']>;\n}) {\n\tif (!brand) return null;\n\n\tif (!isAuthBrandConfig(brand)) {\n\t\treturn (\n\t\t\t<div className=\"auth-shell--brand flex items-center justify-center\">\n\t\t\t\t{brand}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst content = renderBrandContent(brand);\n\tconst className = cn(\n\t\t'auth-shell--brand',\n\t\t'inline-flex items-center justify-center gap-2.5 self-center rounded-md text-foreground',\n\t\tbrand.href && 'transition-opacity hover:opacity-80',\n\t);\n\n\tif (brand.href) {\n\t\treturn renderLink({\n\t\t\thref: brand.href,\n\t\t\t'aria-label': brand.ariaLabel,\n\t\t\tclassName,\n\t\t\tchildren: content,\n\t\t});\n\t}\n\n\treturn <div className={className}>{content}</div>;\n}\n\nfunction renderSplitPanel(panel: AuthShellProps['splitPanel']) {\n\tif (!panel) return null;\n\tif (isValidElement(panel)) return panel;\n\tif (isSplitPanelProps(panel)) return <AuthSplitPanel {...panel} />;\n\treturn null;\n}\n\nexport function AuthShell({\n\tchildren,\n\tvariant: variantProp = 'card',\n\tsize = 'md',\n\talign = 'center',\n\tbrand,\n\teyebrow,\n\ttitle,\n\tdescription,\n\theaderEnd,\n\tbanner,\n\tcardMedia,\n\tcardMediaClassName,\n\tcardFooter,\n\tpostCard,\n\tfooter,\n\tfooterLinks,\n\tpolicyLinks,\n\tlanguageLinks,\n\tlanguageSwitcher,\n\tsocialProviders,\n\tsocialProvidersLayout = 'stack',\n\tsocialDivider,\n\tsplitPanel,\n\tsplitSide = 'left',\n\tsplitMobile = 'hidden',\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tmainClassName,\n\tstackClassName,\n\tcardClassName,\n\tcardContentClassName,\n\tsplitGridClassName,\n\tsplitPanelClassName,\n\tfooterClassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthShellProps) {\n\tconst strings = useStrings(defaultAuthShellStrings, stringsProp);\n\tconst {\n\t\tvariant,\n\t\thasBrand,\n\t\thasAfterCard,\n\t\thasSplitPanel,\n\t\thasSocialProviders,\n\t\trenderLink: resolvedRenderLink,\n\t\tfooterLinks: visibleFooterLinks,\n\t\tpolicyLinks: visiblePolicyLinks,\n\t\tlanguageLinks: visibleLanguageLinks,\n\t\tsocialProviders: visibleSocialProviders,\n\t} = useAuthShell({\n\t\tvariant: variantProp,\n\t\tbrand,\n\t\tfooter,\n\t\tfooterLinks,\n\t\tpolicyLinks,\n\t\tlanguageLinks,\n\t\tlanguageSwitcher,\n\t\tpostCard,\n\t\tsocialProviders,\n\t\tsplitPanel,\n\t\trenderLink,\n\t\tLinkComponent,\n\t});\n\tconst isSplit = variant === 'split' && hasSplitPanel;\n\tconst panel = renderSplitPanel(splitPanel);\n\tconst panelFirst = splitSide === 'left';\n\tconst showStackedPanel = splitMobile === 'stacked';\n\tconst brandNode = hasBrand ? renderBrand({ brand, renderLink: resolvedRenderLink }) : null;\n\n\tconst main = (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--main',\n\t\t\t\t'flex min-h-svh w-full items-center justify-center px-4 py-8 sm:px-6 md:px-8',\n\t\t\t\talign === 'start' && 'items-start pt-12',\n\t\t\t\tisSplit && 'lg:min-h-svh',\n\t\t\t\tmainClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--stack',\n\t\t\t\t\t'flex w-full flex-col gap-5',\n\t\t\t\t\tSIZE_CLASS[size],\n\t\t\t\t\tstackClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{brandNode}\n\n\t\t\t\t<AuthCard\n\t\t\t\t\teyebrow={eyebrow}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\theaderEnd={headerEnd}\n\t\t\t\t\tbanner={banner}\n\t\t\t\t\tmedia={cardMedia}\n\t\t\t\t\tmediaClassName={cardMediaClassName}\n\t\t\t\t\tfooter={cardFooter}\n\t\t\t\t\tclassName={cardClassName}\n\t\t\t\t\tcontentClassName={cardContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{!!hasSocialProviders && (\n\t\t\t\t\t\t<div className=\"auth-shell--social mb-4 grid gap-4\">\n\t\t\t\t\t\t\t<AuthSocialProviders\n\t\t\t\t\t\t\t\tproviders={visibleSocialProviders}\n\t\t\t\t\t\t\t\tlayout={socialProvidersLayout}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.socialProvidersLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className=\"auth-shell--social-divider flex items-center gap-3\">\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t{socialDivider ?? strings.socialDivider}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{children}\n\t\t\t\t</AuthCard>\n\n\t\t\t\t{!!hasAfterCard && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--after-card',\n\t\t\t\t\t\t\t'flex flex-col items-center gap-3 text-center',\n\t\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!postCard && <div className=\"auth-shell--post-card\">{postCard}</div>}\n\t\t\t\t\t\t{!!languageSwitcher && (\n\t\t\t\t\t\t\t<div className=\"auth-shell--language-switcher\">\n\t\t\t\t\t\t\t\t{languageSwitcher}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleLanguageLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--language-links\"\n\t\t\t\t\t\t\t\tlinks={visibleLanguageLinks}\n\t\t\t\t\t\t\t\tleadingIcon={<Globe2 className=\"size-3.5\" />}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.languageLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visibleFooterLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--footer-links\"\n\t\t\t\t\t\t\t\tlinks={visibleFooterLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.footerLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{visiblePolicyLinks.length > 0 && (\n\t\t\t\t\t\t\t<AuthFooterLinks\n\t\t\t\t\t\t\t\tclassName=\"auth-shell--policy-links\"\n\t\t\t\t\t\t\t\tlinks={visiblePolicyLinks}\n\t\t\t\t\t\t\t\trenderLink={resolvedRenderLink}\n\t\t\t\t\t\t\t\tstrings={{ label: strings.policyLinksLabel }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!footer && <div className=\"auth-shell--footer\">{footer}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</main>\n\t);\n\n\tif (!isSplit) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-slot=\"auth-shell\"\n\t\t\t\tdata-variant=\"card\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--component',\n\t\t\t\t\t'min-h-svh bg-background text-foreground',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{main}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"auth-shell\"\n\t\t\tdata-variant=\"split\"\n\t\t\tdata-split-side={splitSide}\n\t\t\tdata-split-mobile={splitMobile}\n\t\t\tclassName={cn(\n\t\t\t\t'auth-shell--component',\n\t\t\t\t'min-h-svh bg-background text-foreground',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-shell--split-grid min-h-svh lg:grid',\n\t\t\t\t\tpanelFirst\n\t\t\t\t\t\t? 'lg:grid-cols-[minmax(0,1fr)_minmax(24rem,34rem)]'\n\t\t\t\t\t\t: 'lg:grid-cols-[minmax(24rem,34rem)_minmax(0,1fr)]',\n\t\t\t\t\tsplitGridClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden lg:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{main}\n\t\t\t\t{!panelFirst && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'auth-shell--split-panel',\n\t\t\t\t\t\t\tshowStackedPanel ? 'block' : 'hidden lg:block',\n\t\t\t\t\t\t\tsplitPanelClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{panel}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import * as React from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultAuthMethodSwitchStrings } from './auth.strings';\nimport type {\n\tAuthMethodOption,\n\tAuthMethodSwitchProps,\n\tUseAuthMethodSwitchOptions,\n\tUseAuthMethodSwitchReturn,\n} from './auth.types';\n\nfunction firstEnabledOption(options: AuthMethodOption[]) {\n\treturn options.find((option) => !option.disabled);\n}\n\nexport function useAuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n}: UseAuthMethodSwitchOptions = {}): UseAuthMethodSwitchReturn {\n\tconst visibleOptions = React.useMemo(\n\t\t() => options.filter((option) => option.visible !== false),\n\t\t[options],\n\t);\n\tconst fallbackValue = defaultValue ?? firstEnabledOption(visibleOptions)?.id;\n\tconst [internalValue, setInternalValue] = React.useState<string | undefined>(fallbackValue);\n\tconst isControlled = value !== undefined;\n\tconst selectedValue = isControlled ? value : internalValue;\n\tconst selectedOption = visibleOptions.find((option) => option.id === selectedValue);\n\n\tconst setValue = React.useCallback(\n\t\t(nextValue: string) => {\n\t\t\tconst nextOption = visibleOptions.find((option) => option.id === nextValue);\n\t\t\tif (!nextOption || nextOption.disabled) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalValue(nextValue);\n\t\t\t}\n\n\t\t\tonValueChange?.(nextValue, nextOption);\n\t\t},\n\t\t[isControlled, onValueChange, visibleOptions],\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (isControlled || selectedOption || visibleOptions.length === 0) return;\n\t\tsetInternalValue(firstEnabledOption(visibleOptions)?.id);\n\t}, [isControlled, selectedOption, visibleOptions]);\n\n\treturn {\n\t\tvalue: selectedValue,\n\t\tselectedOption,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t};\n}\n\nexport function AuthMethodSwitch({\n\toptions = [],\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tlayout = 'stack',\n\tdivider,\n\tclassName,\n\tstrings: stringsProp,\n\t...props\n}: AuthMethodSwitchProps) {\n\tconst strings = useStrings(defaultAuthMethodSwitchStrings, stringsProp);\n\tconst { ['aria-label']: ariaLabel, ...rootProps } = props;\n\tconst {\n\t\tvalue: selectedValue,\n\t\toptions: visibleOptions,\n\t\tsetValue,\n\t} = useAuthMethodSwitch({\n\t\toptions,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t});\n\n\tif (visibleOptions.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn('auth-method-switch--component grid gap-3', className)} {...rootProps}>\n\t\t\t{divider !== null && divider !== false && (\n\t\t\t\t<div className=\"auth-method-switch--divider flex items-center gap-3\">\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{divider ?? strings.divider}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<span className=\"h-px min-w-0 flex-1 bg-border\" aria-hidden=\"true\" />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ariaLabel ?? strings.label}\n\t\t\t\tdata-layout={layout}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'auth-method-switch--options',\n\t\t\t\t\tlayout === 'grid' && 'grid gap-2 sm:grid-cols-2',\n\t\t\t\t\tlayout === 'stack' && 'grid gap-2',\n\t\t\t\t\tlayout === 'segmented' &&\n\t\t\t\t\t\t'grid grid-cols-[repeat(auto-fit,minmax(0,1fr))] gap-1 rounded-lg border border-border bg-muted/40 p-1',\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{visibleOptions.map((option) => {\n\t\t\t\t\tconst selected = option.id === selectedValue;\n\t\t\t\t\tconst segmented = layout === 'segmented';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-pressed={selected}\n\t\t\t\t\t\t\tdisabled={option.disabled}\n\t\t\t\t\t\t\tvariant={selected ? 'dark' : 'secondary'}\n\t\t\t\t\t\t\tbuttonStyle={selected ? 'solid' : segmented ? 'ghost' : 'outline'}\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'auth-method-switch--option',\n\t\t\t\t\t\t\t\t'h-auto min-h-10 justify-start rounded-md px-3 py-2.5 text-start',\n\t\t\t\t\t\t\t\tsegmented &&\n\t\t\t\t\t\t\t\t\t'min-h-9 justify-center border-0 px-2 py-2 text-center shadow-none min-[480px]:px-3 min-[480px]:text-start',\n\t\t\t\t\t\t\t\tselected && 'auth-method-switch--option-selected',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tonClick={() => setValue(option.id)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'auth-method-switch--option-inner flex min-w-0 items-center gap-2',\n\t\t\t\t\t\t\t\t\tsegmented &&\n\t\t\t\t\t\t\t\t\t\t'w-full flex-col justify-center gap-1 min-[480px]:w-auto min-[480px]:flex-row min-[480px]:justify-start min-[480px]:gap-2',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!option.icon && (\n\t\t\t\t\t\t\t\t\t<span className=\"auth-method-switch--option-icon shrink-0\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t{option.icon}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'auth-method-switch--option-copy grid min-w-0 gap-0.5',\n\t\t\t\t\t\t\t\t\t\tsegmented && 'justify-items-center min-[480px]:justify-items-start',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'max-w-full text-inherit leading-tight',\n\t\t\t\t\t\t\t\t\t\t\tsegmented\n\t\t\t\t\t\t\t\t\t\t\t\t? 'text-center min-[480px]:truncate min-[480px]:text-start'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'text-start',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!option.description && (\n\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\tsegmented\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'hidden min-[480px]:block min-[480px]:truncate'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text-start leading-snug',\n\t\t\t\t\t\t\t\t\t\t\t\tselected ? 'text-inherit opacity-75' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{option.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("./chunk-CMqjfN_6.cjs"),t=require("./ui-provider-DZWtUXf2.cjs"),n=require("../lib/utils.cjs"),r=require("./button-Bd5bEIiB.cjs");let i=require("react");i=e.t(i,1);let a=require("react/jsx-runtime"),o=require("lucide-react");var s=()=>(0,a.jsxs)(`svg`,{"aria-hidden":`true`,className:`h-4 w-4`,width:`256`,height:`262`,viewBox:`0 0 256 262`,xmlns:`http://www.w3.org/2000/svg`,preserveAspectRatio:`xMidYMid`,children:[(0,a.jsx)(`path`,{d:`M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027`,fill:`#4285F4`}),(0,a.jsx)(`path`,{d:`M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1`,fill:`#34A853`}),(0,a.jsx)(`path`,{d:`M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782`,fill:`#FBBC05`}),(0,a.jsx)(`path`,{d:`M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251`,fill:`#EB4335`})]});function c({children:e,className:t,type:i=`button`,href:o,...c}){let l=(0,a.jsx)(r.i,{icon:s,iconPosition:`left`,fullWidth:!0,className:n.cn(`bg-foreground text-background ring-offset-background hover:bg-foreground/85 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,t),type:i,...c,children:e});return o?(0,a.jsx)(`a`,{href:o,className:n.cn(`google-button--component`,`inline-flex w-full`),children:l}):l}function l(e){let{resource:t,id:n,text:s,fullWidth:c,className:l,adminUrl:u}=e,d={...e};delete d.resource,delete d.id,delete d.text,delete d.fullWidth,delete d.className,delete d.adminUrl;let f=e.resource===`product_variants`?e.productId:null;return e.resource===`product_variants`&&delete d.productId,(0,a.jsx)(`a`,{href:(0,i.useMemo)(()=>{let e=(u??``).replace(/\/$/,``);return{orders:`${e}/orders/${n}`,products:`${e}/products/${n}`,product_variants:f?`${e}/products/${f}/variants/${n}`:`${e}/products/${n}`,customers:`${e}/customers/${n}`,draft_orders:`${e}/draft_orders/${n}`,collections:`${e}/collections/${n}`,discounts:`${e}/discounts/${n}`}[t]},[u,t,n,f]),target:`_blank`,rel:`noopener noreferrer`,className:`flex ${c?`w-full`:``}`,children:(0,a.jsx)(r.i,{...d,className:l,icon:o.ShoppingBag,iconPosition:`left`,children:s})})}l.displayName=`ShopifyButton`;var u={small:`small`,default:`default`},d={small:`small`,default:`default`},f={small:`text-xs h-auto px-0`,default:`text-sm h-auto px-0`},p=i.forwardRef(({className:e,type:i=`button`,size:o,disabled:s,...c},l)=>{let{defaultControlSize:p}=t.o(),m=o??d[p??`default`]??`default`;return(0,a.jsx)(r.i,{ref:l,type:i,variant:`primary`,buttonStyle:`ghost`,size:u[m],disabled:s,className:n.cn(`text-button--component`,`inline-flex items-center justify-center underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current`,`text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,`disabled:pointer-events-none disabled:opacity-50`,f[m],e),...c})});p.displayName=`TextButton`;var m={small:`small`,default:`default`},h={small:`h-control-sm px-control-sm text-xs`,default:`h-control px-control text-sm`},g=i.forwardRef(({variant:e=`secondary`,size:t,className:i,...o},s)=>{let c=e===`error`?`error`:e,l=t??`default`;return(0,a.jsx)(r.i,{ref:s,variant:c,buttonStyle:`solid`,size:m[l],className:n.cn(`page-action-button--component`,h[l],`shadow-none`,i),...o})});g.displayName=`PageActionButton`,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return g}});
2
- //# sourceMappingURL=buttons-C8jy-jMd.cjs.map
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("./ui-provider-DZWtUXf2.cjs"),n=require("../lib/utils.cjs"),r=require("./button-Bd5bEIiB.cjs");let i=require("react");i=e.t(i,1);let a=require("react/jsx-runtime"),o=require("lucide-react");var s=()=>(0,a.jsxs)(`svg`,{"aria-hidden":`true`,className:`h-4 w-4`,width:`256`,height:`262`,viewBox:`0 0 256 262`,xmlns:`http://www.w3.org/2000/svg`,preserveAspectRatio:`xMidYMid`,children:[(0,a.jsx)(`path`,{d:`M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027`,fill:`#4285F4`}),(0,a.jsx)(`path`,{d:`M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1`,fill:`#34A853`}),(0,a.jsx)(`path`,{d:`M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782`,fill:`#FBBC05`}),(0,a.jsx)(`path`,{d:`M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251`,fill:`#EB4335`})]});function c({children:e,className:t,type:i=`button`,href:o,...c}){let l=(0,a.jsx)(r.i,{icon:s,iconPosition:`left`,fullWidth:!0,className:n.cn(`bg-foreground text-background ring-offset-background hover:bg-foreground/85 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,t),type:i,...c,children:e});return o?(0,a.jsx)(`a`,{href:o,className:n.cn(`google-button--component`,`inline-flex w-full`),children:l}):l}function l(e){let{resource:t,id:n,text:s,fullWidth:c,className:l,adminUrl:u}=e,d={...e};delete d.resource,delete d.id,delete d.text,delete d.fullWidth,delete d.className,delete d.adminUrl;let f=e.resource===`product_variants`?e.productId:null;return e.resource===`product_variants`&&delete d.productId,(0,a.jsx)(`a`,{href:(0,i.useMemo)(()=>{let e=(u??``).replace(/\/$/,``);return{orders:`${e}/orders/${n}`,products:`${e}/products/${n}`,product_variants:f?`${e}/products/${f}/variants/${n}`:`${e}/products/${n}`,customers:`${e}/customers/${n}`,draft_orders:`${e}/draft_orders/${n}`,collections:`${e}/collections/${n}`,discounts:`${e}/discounts/${n}`}[t]},[u,t,n,f]),target:`_blank`,rel:`noopener noreferrer`,className:`flex ${c?`w-full`:``}`,children:(0,a.jsx)(r.i,{...d,className:l,icon:o.ShoppingBag,iconPosition:`left`,children:s})})}l.displayName=`ShopifyButton`;var u={small:`small`,default:`default`},d={small:`small`,default:`default`},f={small:`text-xs h-auto px-0`,default:`text-sm h-auto px-0`},p=i.forwardRef(({className:e,type:i=`button`,size:o,disabled:s,...c},l)=>{let{defaultControlSize:p}=t.o(),m=o??d[p??`default`]??`default`;return(0,a.jsx)(r.i,{ref:l,type:i,variant:`primary`,buttonStyle:`ghost`,size:u[m],disabled:s,className:n.cn(`text-button--component`,`inline-flex items-center justify-center underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current`,`text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,`disabled:pointer-events-none disabled:opacity-50`,f[m],e),...c})});p.displayName=`TextButton`;var m={small:`small`,default:`default`},h={small:`h-control-sm px-control-sm text-xs`,default:`h-control px-control text-sm`},g=i.forwardRef(({variant:e=`secondary`,size:t,className:i,...o},s)=>{let c=e===`error`?`error`:e,l=t??`small`;return(0,a.jsx)(r.i,{ref:s,variant:c,buttonStyle:`solid`,size:m[l],className:n.cn(`page-action-button--component`,h[l],`shadow-none`,i),...o})});g.displayName=`PageActionButton`,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return g}});
2
+ //# sourceMappingURL=buttons-Bek9F7qK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttons-C8jy-jMd.cjs","names":[],"sources":["../../src/components/base/buttons/google-button.tsx","../../src/components/base/buttons/shopify-button.tsx","../../src/components/base/buttons/text-button.tsx","../../src/components/base/buttons/page-action-button.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype GoogleButtonProps = Omit<BaseButtonProps, 'icon' | 'iconPosition' | 'fullWidth'> & {\n\thref?: string;\n};\n\n// Google brand mark — colors are dictated by Google's brand guidelines and\n// must not be themed. Do not replace with semantic tokens.\nconst GoogleIcon = () => (\n\t<svg\n\t\taria-hidden=\"true\"\n\t\tclassName=\"h-4 w-4\"\n\t\twidth=\"256\"\n\t\theight=\"262\"\n\t\tviewBox=\"0 0 256 262\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tpreserveAspectRatio=\"xMidYMid\"\n\t>\n\t\t<path\n\t\t\td=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"\n\t\t\tfill=\"#4285F4\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"\n\t\t\tfill=\"#34A853\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\"\n\t\t\tfill=\"#FBBC05\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"\n\t\t\tfill=\"#EB4335\"\n\t\t/>\n\t</svg>\n);\n\nfunction GoogleButton({ children, className, type = 'button', href, ...props }: GoogleButtonProps) {\n\tconst button = (\n\t\t<BaseButton\n\t\t\ticon={GoogleIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\tfullWidth\n\t\t\tclassName={cn(\n\t\t\t\t'bg-foreground text-background ring-offset-background hover:bg-foreground/85 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttype={type}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</BaseButton>\n\t);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a href={href} className={cn('google-button--component', 'inline-flex w-full')}>\n\t\t\t\t{button}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn button;\n}\n\nexport { GoogleButton };\n","import { useMemo } from 'react';\nimport { ShoppingBag } from 'lucide-react';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype ShopifyResource =\n\t| 'orders'\n\t| 'products'\n\t| 'product_variants'\n\t| 'customers'\n\t| 'draft_orders'\n\t| 'collections'\n\t| 'discounts';\n\ntype ShopifyButtonProps =\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: Exclude<ShopifyResource, 'product_variants'>;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t})\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: 'product_variants';\n\t\t\tproductId: string | number;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t});\n\nexport function ShopifyButton(props: ShopifyButtonProps) {\n\tconst { resource, id, text, fullWidth, className, adminUrl } = props;\n\tconst buttonProps = { ...props };\n\tdelete (buttonProps as Partial<typeof props>).resource;\n\tdelete (buttonProps as Partial<typeof props>).id;\n\tdelete (buttonProps as Partial<typeof props>).text;\n\tdelete (buttonProps as Partial<typeof props>).fullWidth;\n\tdelete (buttonProps as Partial<typeof props>).className;\n\tdelete (buttonProps as { adminUrl?: string }).adminUrl;\n\n\tconst productId = props.resource === 'product_variants' ? props.productId : null;\n\tif (props.resource === 'product_variants') {\n\t\tdelete (buttonProps as { productId?: unknown }).productId;\n\t}\n\n\tconst href = useMemo(() => {\n\t\tconst base = (adminUrl ?? '').replace(/\\/$/, '');\n\t\tconst map: Record<ShopifyResource, string> = {\n\t\t\torders: `${base}/orders/${id}`,\n\t\t\tproducts: `${base}/products/${id}`,\n\t\t\tproduct_variants: productId ? `${base}/products/${productId}/variants/${id}` : `${base}/products/${id}`,\n\t\t\tcustomers: `${base}/customers/${id}`,\n\t\t\tdraft_orders: `${base}/draft_orders/${id}`,\n\t\t\tcollections: `${base}/collections/${id}`,\n\t\t\tdiscounts: `${base}/discounts/${id}`,\n\t\t};\n\t\treturn map[resource];\n\t}, [adminUrl, resource, id, productId]);\n\n\treturn (\n\t\t<a\n\t\t\thref={href}\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclassName={`flex ${fullWidth ? 'w-full' : ''}`}\n\t\t>\n\t\t\t<BaseButton\n\t\t\t\t{...buttonProps}\n\t\t\t\tclassName={className}\n\t\t\t\ticon={ShoppingBag}\n\t\t\t\ticonPosition=\"left\"\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</BaseButton>\n\t\t</a>\n\t);\n}\n\nexport default ShopifyButton;\n\nShopifyButton.displayName = 'ShopifyButton';\n","/**\n * TextButton — link-styled button (underline, primary tint, no padding).\n *\n * Wraps `BaseButton` with `variant=\"primary\" buttonStyle=\"ghost\"`. Routine\n * usage omits `size`; `default` and `small` are the only public scale overrides.\n */\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { BaseButton } from './base-button';\n\ntype TextButtonSize = 'small' | 'default';\n\nconst baseButtonSizeMap: Record<TextButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst providerSizeMap: Record<FormControlSize, TextButtonSize> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst sizeClasses: Record<TextButtonSize, string> = {\n\tsmall: 'text-xs h-auto px-0',\n\tdefault: 'text-sm h-auto px-0',\n};\n\nexport type TextButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'size'> & {\n\tsize?: TextButtonSize;\n\tchildren: React.ReactNode;\n};\n\nexport const TextButton = React.forwardRef<HTMLButtonElement, TextButtonProps>(\n\t({ className, type = 'button', size, disabled, ...props }, ref) => {\n\t\tconst { defaultControlSize } = useFormsConfig();\n\t\tconst resolvedSize: TextButtonSize =\n\t\t\tsize ?? providerSizeMap[defaultControlSize ?? 'default'] ?? 'default';\n\t\treturn (\n\t\t\t<BaseButton\n\t\t\t\tref={ref}\n\t\t\t\ttype={type}\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={cn('text-button--component', \n\t\t\t\t\t'inline-flex items-center justify-center underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current',\n\t\t\t\t\t'text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t'disabled:pointer-events-none disabled:opacity-50',\n\t\t\t\t\tsizeClasses[resolvedSize],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nTextButton.displayName = 'TextButton';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { BaseButton, type ButtonStyle, type ButtonVariant } from './base-button';\n\nexport type PageActionButtonVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'error';\n\ntype PageActionButtonSize = 'small' | 'default';\nconst baseButtonSizeMap: Record<PageActionButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nexport type PageActionButtonProps = Omit<\n\tReact.ComponentPropsWithoutRef<typeof BaseButton>,\n\t'variant' | 'buttonStyle' | 'size'\n> & {\n\tvariant?: PageActionButtonVariant;\n\tsize?: PageActionButtonSize;\n};\n\nconst sizeClasses: Record<PageActionButtonSize, string> = {\n\tsmall: 'h-control-sm px-control-sm text-xs',\n\tdefault: 'h-control px-control text-sm',\n};\n\nexport const PageActionButton = React.forwardRef<\n\tHTMLButtonElement,\n\tPageActionButtonProps\n>(({ variant = 'secondary', size, className, ...props }, ref) => {\n\tconst resolvedVariant: ButtonVariant = variant === 'error' ? 'error' : variant;\n\tconst resolvedStyle: ButtonStyle = 'solid';\n\tconst resolvedSize: PageActionButtonSize = size ?? 'default';\n\n\treturn (\n\t\t<BaseButton\n\t\t\tref={ref}\n\t\t\tvariant={resolvedVariant}\n\t\t\tbuttonStyle={resolvedStyle}\n\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\tclassName={cn('page-action-button--component', sizeClasses[resolvedSize], 'shadow-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nPageActionButton.displayName = 'PageActionButton';\n"],"mappings":"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"}
1
+ {"version":3,"file":"buttons-Bek9F7qK.cjs","names":[],"sources":["../../src/components/base/buttons/google-button.tsx","../../src/components/base/buttons/shopify-button.tsx","../../src/components/base/buttons/text-button.tsx","../../src/components/base/buttons/page-action-button.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype GoogleButtonProps = Omit<BaseButtonProps, 'icon' | 'iconPosition' | 'fullWidth'> & {\n\thref?: string;\n};\n\n// Google brand mark — colors are dictated by Google's brand guidelines and\n// must not be themed. Do not replace with semantic tokens.\nconst GoogleIcon = () => (\n\t<svg\n\t\taria-hidden=\"true\"\n\t\tclassName=\"h-4 w-4\"\n\t\twidth=\"256\"\n\t\theight=\"262\"\n\t\tviewBox=\"0 0 256 262\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tpreserveAspectRatio=\"xMidYMid\"\n\t>\n\t\t<path\n\t\t\td=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"\n\t\t\tfill=\"#4285F4\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"\n\t\t\tfill=\"#34A853\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\"\n\t\t\tfill=\"#FBBC05\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"\n\t\t\tfill=\"#EB4335\"\n\t\t/>\n\t</svg>\n);\n\nfunction GoogleButton({ children, className, type = 'button', href, ...props }: GoogleButtonProps) {\n\tconst button = (\n\t\t<BaseButton\n\t\t\ticon={GoogleIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\tfullWidth\n\t\t\tclassName={cn(\n\t\t\t\t'bg-foreground text-background ring-offset-background hover:bg-foreground/85 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttype={type}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</BaseButton>\n\t);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a href={href} className={cn('google-button--component', 'inline-flex w-full')}>\n\t\t\t\t{button}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn button;\n}\n\nexport { GoogleButton };\n","import { useMemo } from 'react';\nimport { ShoppingBag } from 'lucide-react';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype ShopifyResource =\n\t| 'orders'\n\t| 'products'\n\t| 'product_variants'\n\t| 'customers'\n\t| 'draft_orders'\n\t| 'collections'\n\t| 'discounts';\n\ntype ShopifyButtonProps =\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: Exclude<ShopifyResource, 'product_variants'>;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t})\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: 'product_variants';\n\t\t\tproductId: string | number;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t});\n\nexport function ShopifyButton(props: ShopifyButtonProps) {\n\tconst { resource, id, text, fullWidth, className, adminUrl } = props;\n\tconst buttonProps = { ...props };\n\tdelete (buttonProps as Partial<typeof props>).resource;\n\tdelete (buttonProps as Partial<typeof props>).id;\n\tdelete (buttonProps as Partial<typeof props>).text;\n\tdelete (buttonProps as Partial<typeof props>).fullWidth;\n\tdelete (buttonProps as Partial<typeof props>).className;\n\tdelete (buttonProps as { adminUrl?: string }).adminUrl;\n\n\tconst productId = props.resource === 'product_variants' ? props.productId : null;\n\tif (props.resource === 'product_variants') {\n\t\tdelete (buttonProps as { productId?: unknown }).productId;\n\t}\n\n\tconst href = useMemo(() => {\n\t\tconst base = (adminUrl ?? '').replace(/\\/$/, '');\n\t\tconst map: Record<ShopifyResource, string> = {\n\t\t\torders: `${base}/orders/${id}`,\n\t\t\tproducts: `${base}/products/${id}`,\n\t\t\tproduct_variants: productId ? `${base}/products/${productId}/variants/${id}` : `${base}/products/${id}`,\n\t\t\tcustomers: `${base}/customers/${id}`,\n\t\t\tdraft_orders: `${base}/draft_orders/${id}`,\n\t\t\tcollections: `${base}/collections/${id}`,\n\t\t\tdiscounts: `${base}/discounts/${id}`,\n\t\t};\n\t\treturn map[resource];\n\t}, [adminUrl, resource, id, productId]);\n\n\treturn (\n\t\t<a\n\t\t\thref={href}\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclassName={`flex ${fullWidth ? 'w-full' : ''}`}\n\t\t>\n\t\t\t<BaseButton\n\t\t\t\t{...buttonProps}\n\t\t\t\tclassName={className}\n\t\t\t\ticon={ShoppingBag}\n\t\t\t\ticonPosition=\"left\"\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</BaseButton>\n\t\t</a>\n\t);\n}\n\nexport default ShopifyButton;\n\nShopifyButton.displayName = 'ShopifyButton';\n","/**\n * TextButton — link-styled button (underline, primary tint, no padding).\n *\n * Wraps `BaseButton` with `variant=\"primary\" buttonStyle=\"ghost\"`. Routine\n * usage omits `size`; `default` and `small` are the only public scale overrides.\n */\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { BaseButton } from './base-button';\n\ntype TextButtonSize = 'small' | 'default';\n\nconst baseButtonSizeMap: Record<TextButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst providerSizeMap: Record<FormControlSize, TextButtonSize> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst sizeClasses: Record<TextButtonSize, string> = {\n\tsmall: 'text-xs h-auto px-0',\n\tdefault: 'text-sm h-auto px-0',\n};\n\nexport type TextButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'size'> & {\n\tsize?: TextButtonSize;\n\tchildren: React.ReactNode;\n};\n\nexport const TextButton = React.forwardRef<HTMLButtonElement, TextButtonProps>(\n\t({ className, type = 'button', size, disabled, ...props }, ref) => {\n\t\tconst { defaultControlSize } = useFormsConfig();\n\t\tconst resolvedSize: TextButtonSize =\n\t\t\tsize ?? providerSizeMap[defaultControlSize ?? 'default'] ?? 'default';\n\t\treturn (\n\t\t\t<BaseButton\n\t\t\t\tref={ref}\n\t\t\t\ttype={type}\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={cn('text-button--component', \n\t\t\t\t\t'inline-flex items-center justify-center underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current',\n\t\t\t\t\t'text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t'disabled:pointer-events-none disabled:opacity-50',\n\t\t\t\t\tsizeClasses[resolvedSize],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nTextButton.displayName = 'TextButton';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { BaseButton, type ButtonStyle, type ButtonVariant } from './base-button';\n\nexport type PageActionButtonVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'error';\n\ntype PageActionButtonSize = 'small' | 'default';\nconst baseButtonSizeMap: Record<PageActionButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nexport type PageActionButtonProps = Omit<\n\tReact.ComponentPropsWithoutRef<typeof BaseButton>,\n\t'variant' | 'buttonStyle' | 'size'\n> & {\n\tvariant?: PageActionButtonVariant;\n\tsize?: PageActionButtonSize;\n};\n\nconst sizeClasses: Record<PageActionButtonSize, string> = {\n\tsmall: 'h-control-sm px-control-sm text-xs',\n\tdefault: 'h-control px-control text-sm',\n};\n\nexport const PageActionButton = React.forwardRef<\n\tHTMLButtonElement,\n\tPageActionButtonProps\n>(({ variant = 'secondary', size, className, ...props }, ref) => {\n\tconst resolvedVariant: ButtonVariant = variant === 'error' ? 'error' : variant;\n\tconst resolvedStyle: ButtonStyle = 'solid';\n\tconst resolvedSize: PageActionButtonSize = size ?? 'small';\n\n\treturn (\n\t\t<BaseButton\n\t\t\tref={ref}\n\t\t\tvariant={resolvedVariant}\n\t\t\tbuttonStyle={resolvedStyle}\n\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\tclassName={cn('page-action-button--component', sizeClasses[resolvedSize], 'shadow-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nPageActionButton.displayName = 'PageActionButton';\n"],"mappings":"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"}
@@ -120,7 +120,7 @@ var h = {
120
120
  small: "h-control-sm px-control-sm text-xs",
121
121
  default: "h-control px-control text-sm"
122
122
  }, _ = r.forwardRef(({ variant: e = "secondary", size: r, className: i, ...o }, s) => {
123
- let c = e === "error" ? "error" : e, l = r ?? "default";
123
+ let c = e === "error" ? "error" : e, l = r ?? "small";
124
124
  return /* @__PURE__ */ a(n, {
125
125
  ref: s,
126
126
  variant: c,
@@ -134,4 +134,4 @@ _.displayName = "PageActionButton";
134
134
  //#endregion
135
135
  export { l as i, m as n, u as r, _ as t };
136
136
 
137
- //# sourceMappingURL=buttons-MxvdokeK.js.map
137
+ //# sourceMappingURL=buttons-DcynMPnE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttons-MxvdokeK.js","names":[],"sources":["../../src/components/base/buttons/google-button.tsx","../../src/components/base/buttons/shopify-button.tsx","../../src/components/base/buttons/text-button.tsx","../../src/components/base/buttons/page-action-button.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype GoogleButtonProps = Omit<BaseButtonProps, 'icon' | 'iconPosition' | 'fullWidth'> & {\n\thref?: string;\n};\n\n// Google brand mark — colors are dictated by Google's brand guidelines and\n// must not be themed. Do not replace with semantic tokens.\nconst GoogleIcon = () => (\n\t<svg\n\t\taria-hidden=\"true\"\n\t\tclassName=\"h-4 w-4\"\n\t\twidth=\"256\"\n\t\theight=\"262\"\n\t\tviewBox=\"0 0 256 262\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tpreserveAspectRatio=\"xMidYMid\"\n\t>\n\t\t<path\n\t\t\td=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"\n\t\t\tfill=\"#4285F4\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"\n\t\t\tfill=\"#34A853\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\"\n\t\t\tfill=\"#FBBC05\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"\n\t\t\tfill=\"#EB4335\"\n\t\t/>\n\t</svg>\n);\n\nfunction GoogleButton({ children, className, type = 'button', href, ...props }: GoogleButtonProps) {\n\tconst button = (\n\t\t<BaseButton\n\t\t\ticon={GoogleIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\tfullWidth\n\t\t\tclassName={cn(\n\t\t\t\t'bg-foreground text-background ring-offset-background hover:bg-foreground/85 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttype={type}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</BaseButton>\n\t);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a href={href} className={cn('google-button--component', 'inline-flex w-full')}>\n\t\t\t\t{button}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn button;\n}\n\nexport { GoogleButton };\n","import { useMemo } from 'react';\nimport { ShoppingBag } from 'lucide-react';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype ShopifyResource =\n\t| 'orders'\n\t| 'products'\n\t| 'product_variants'\n\t| 'customers'\n\t| 'draft_orders'\n\t| 'collections'\n\t| 'discounts';\n\ntype ShopifyButtonProps =\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: Exclude<ShopifyResource, 'product_variants'>;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t})\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: 'product_variants';\n\t\t\tproductId: string | number;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t});\n\nexport function ShopifyButton(props: ShopifyButtonProps) {\n\tconst { resource, id, text, fullWidth, className, adminUrl } = props;\n\tconst buttonProps = { ...props };\n\tdelete (buttonProps as Partial<typeof props>).resource;\n\tdelete (buttonProps as Partial<typeof props>).id;\n\tdelete (buttonProps as Partial<typeof props>).text;\n\tdelete (buttonProps as Partial<typeof props>).fullWidth;\n\tdelete (buttonProps as Partial<typeof props>).className;\n\tdelete (buttonProps as { adminUrl?: string }).adminUrl;\n\n\tconst productId = props.resource === 'product_variants' ? props.productId : null;\n\tif (props.resource === 'product_variants') {\n\t\tdelete (buttonProps as { productId?: unknown }).productId;\n\t}\n\n\tconst href = useMemo(() => {\n\t\tconst base = (adminUrl ?? '').replace(/\\/$/, '');\n\t\tconst map: Record<ShopifyResource, string> = {\n\t\t\torders: `${base}/orders/${id}`,\n\t\t\tproducts: `${base}/products/${id}`,\n\t\t\tproduct_variants: productId ? `${base}/products/${productId}/variants/${id}` : `${base}/products/${id}`,\n\t\t\tcustomers: `${base}/customers/${id}`,\n\t\t\tdraft_orders: `${base}/draft_orders/${id}`,\n\t\t\tcollections: `${base}/collections/${id}`,\n\t\t\tdiscounts: `${base}/discounts/${id}`,\n\t\t};\n\t\treturn map[resource];\n\t}, [adminUrl, resource, id, productId]);\n\n\treturn (\n\t\t<a\n\t\t\thref={href}\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclassName={`flex ${fullWidth ? 'w-full' : ''}`}\n\t\t>\n\t\t\t<BaseButton\n\t\t\t\t{...buttonProps}\n\t\t\t\tclassName={className}\n\t\t\t\ticon={ShoppingBag}\n\t\t\t\ticonPosition=\"left\"\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</BaseButton>\n\t\t</a>\n\t);\n}\n\nexport default ShopifyButton;\n\nShopifyButton.displayName = 'ShopifyButton';\n","/**\n * TextButton — link-styled button (underline, primary tint, no padding).\n *\n * Wraps `BaseButton` with `variant=\"primary\" buttonStyle=\"ghost\"`. Routine\n * usage omits `size`; `default` and `small` are the only public scale overrides.\n */\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { BaseButton } from './base-button';\n\ntype TextButtonSize = 'small' | 'default';\n\nconst baseButtonSizeMap: Record<TextButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst providerSizeMap: Record<FormControlSize, TextButtonSize> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst sizeClasses: Record<TextButtonSize, string> = {\n\tsmall: 'text-xs h-auto px-0',\n\tdefault: 'text-sm h-auto px-0',\n};\n\nexport type TextButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'size'> & {\n\tsize?: TextButtonSize;\n\tchildren: React.ReactNode;\n};\n\nexport const TextButton = React.forwardRef<HTMLButtonElement, TextButtonProps>(\n\t({ className, type = 'button', size, disabled, ...props }, ref) => {\n\t\tconst { defaultControlSize } = useFormsConfig();\n\t\tconst resolvedSize: TextButtonSize =\n\t\t\tsize ?? providerSizeMap[defaultControlSize ?? 'default'] ?? 'default';\n\t\treturn (\n\t\t\t<BaseButton\n\t\t\t\tref={ref}\n\t\t\t\ttype={type}\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={cn('text-button--component', \n\t\t\t\t\t'inline-flex items-center justify-center underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current',\n\t\t\t\t\t'text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t'disabled:pointer-events-none disabled:opacity-50',\n\t\t\t\t\tsizeClasses[resolvedSize],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nTextButton.displayName = 'TextButton';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { BaseButton, type ButtonStyle, type ButtonVariant } from './base-button';\n\nexport type PageActionButtonVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'error';\n\ntype PageActionButtonSize = 'small' | 'default';\nconst baseButtonSizeMap: Record<PageActionButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nexport type PageActionButtonProps = Omit<\n\tReact.ComponentPropsWithoutRef<typeof BaseButton>,\n\t'variant' | 'buttonStyle' | 'size'\n> & {\n\tvariant?: PageActionButtonVariant;\n\tsize?: PageActionButtonSize;\n};\n\nconst sizeClasses: Record<PageActionButtonSize, string> = {\n\tsmall: 'h-control-sm px-control-sm text-xs',\n\tdefault: 'h-control px-control text-sm',\n};\n\nexport const PageActionButton = React.forwardRef<\n\tHTMLButtonElement,\n\tPageActionButtonProps\n>(({ variant = 'secondary', size, className, ...props }, ref) => {\n\tconst resolvedVariant: ButtonVariant = variant === 'error' ? 'error' : variant;\n\tconst resolvedStyle: ButtonStyle = 'solid';\n\tconst resolvedSize: PageActionButtonSize = size ?? 'default';\n\n\treturn (\n\t\t<BaseButton\n\t\t\tref={ref}\n\t\t\tvariant={resolvedVariant}\n\t\t\tbuttonStyle={resolvedStyle}\n\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\tclassName={cn('page-action-button--component', sizeClasses[resolvedSize], 'shadow-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nPageActionButton.displayName = 'PageActionButton';\n"],"mappings":"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"}
1
+ {"version":3,"file":"buttons-DcynMPnE.js","names":[],"sources":["../../src/components/base/buttons/google-button.tsx","../../src/components/base/buttons/shopify-button.tsx","../../src/components/base/buttons/text-button.tsx","../../src/components/base/buttons/page-action-button.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype GoogleButtonProps = Omit<BaseButtonProps, 'icon' | 'iconPosition' | 'fullWidth'> & {\n\thref?: string;\n};\n\n// Google brand mark — colors are dictated by Google's brand guidelines and\n// must not be themed. Do not replace with semantic tokens.\nconst GoogleIcon = () => (\n\t<svg\n\t\taria-hidden=\"true\"\n\t\tclassName=\"h-4 w-4\"\n\t\twidth=\"256\"\n\t\theight=\"262\"\n\t\tviewBox=\"0 0 256 262\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tpreserveAspectRatio=\"xMidYMid\"\n\t>\n\t\t<path\n\t\t\td=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"\n\t\t\tfill=\"#4285F4\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"\n\t\t\tfill=\"#34A853\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782\"\n\t\t\tfill=\"#FBBC05\"\n\t\t/>\n\t\t<path\n\t\t\td=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"\n\t\t\tfill=\"#EB4335\"\n\t\t/>\n\t</svg>\n);\n\nfunction GoogleButton({ children, className, type = 'button', href, ...props }: GoogleButtonProps) {\n\tconst button = (\n\t\t<BaseButton\n\t\t\ticon={GoogleIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\tfullWidth\n\t\t\tclassName={cn(\n\t\t\t\t'bg-foreground text-background ring-offset-background hover:bg-foreground/85 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\ttype={type}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</BaseButton>\n\t);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a href={href} className={cn('google-button--component', 'inline-flex w-full')}>\n\t\t\t\t{button}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn button;\n}\n\nexport { GoogleButton };\n","import { useMemo } from 'react';\nimport { ShoppingBag } from 'lucide-react';\nimport { BaseButton, type BaseButtonProps } from './base-button';\n\ntype ShopifyResource =\n\t| 'orders'\n\t| 'products'\n\t| 'product_variants'\n\t| 'customers'\n\t| 'draft_orders'\n\t| 'collections'\n\t| 'discounts';\n\ntype ShopifyButtonProps =\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: Exclude<ShopifyResource, 'product_variants'>;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t})\n\t| (Omit<BaseButtonProps, 'children'> & {\n\t\t\tresource: 'product_variants';\n\t\t\tproductId: string | number;\n\t\t\tid: string | number;\n\t\t\ttext: string;\n\t\t\tadminUrl?: string;\n\t\t});\n\nexport function ShopifyButton(props: ShopifyButtonProps) {\n\tconst { resource, id, text, fullWidth, className, adminUrl } = props;\n\tconst buttonProps = { ...props };\n\tdelete (buttonProps as Partial<typeof props>).resource;\n\tdelete (buttonProps as Partial<typeof props>).id;\n\tdelete (buttonProps as Partial<typeof props>).text;\n\tdelete (buttonProps as Partial<typeof props>).fullWidth;\n\tdelete (buttonProps as Partial<typeof props>).className;\n\tdelete (buttonProps as { adminUrl?: string }).adminUrl;\n\n\tconst productId = props.resource === 'product_variants' ? props.productId : null;\n\tif (props.resource === 'product_variants') {\n\t\tdelete (buttonProps as { productId?: unknown }).productId;\n\t}\n\n\tconst href = useMemo(() => {\n\t\tconst base = (adminUrl ?? '').replace(/\\/$/, '');\n\t\tconst map: Record<ShopifyResource, string> = {\n\t\t\torders: `${base}/orders/${id}`,\n\t\t\tproducts: `${base}/products/${id}`,\n\t\t\tproduct_variants: productId ? `${base}/products/${productId}/variants/${id}` : `${base}/products/${id}`,\n\t\t\tcustomers: `${base}/customers/${id}`,\n\t\t\tdraft_orders: `${base}/draft_orders/${id}`,\n\t\t\tcollections: `${base}/collections/${id}`,\n\t\t\tdiscounts: `${base}/discounts/${id}`,\n\t\t};\n\t\treturn map[resource];\n\t}, [adminUrl, resource, id, productId]);\n\n\treturn (\n\t\t<a\n\t\t\thref={href}\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclassName={`flex ${fullWidth ? 'w-full' : ''}`}\n\t\t>\n\t\t\t<BaseButton\n\t\t\t\t{...buttonProps}\n\t\t\t\tclassName={className}\n\t\t\t\ticon={ShoppingBag}\n\t\t\t\ticonPosition=\"left\"\n\t\t\t>\n\t\t\t\t{text}\n\t\t\t</BaseButton>\n\t\t</a>\n\t);\n}\n\nexport default ShopifyButton;\n\nShopifyButton.displayName = 'ShopifyButton';\n","/**\n * TextButton — link-styled button (underline, primary tint, no padding).\n *\n * Wraps `BaseButton` with `variant=\"primary\" buttonStyle=\"ghost\"`. Routine\n * usage omits `size`; `default` and `small` are the only public scale overrides.\n */\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { useFormsConfig, type FormControlSize } from '@/lib/ui-provider';\nimport { BaseButton } from './base-button';\n\ntype TextButtonSize = 'small' | 'default';\n\nconst baseButtonSizeMap: Record<TextButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst providerSizeMap: Record<FormControlSize, TextButtonSize> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nconst sizeClasses: Record<TextButtonSize, string> = {\n\tsmall: 'text-xs h-auto px-0',\n\tdefault: 'text-sm h-auto px-0',\n};\n\nexport type TextButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'size'> & {\n\tsize?: TextButtonSize;\n\tchildren: React.ReactNode;\n};\n\nexport const TextButton = React.forwardRef<HTMLButtonElement, TextButtonProps>(\n\t({ className, type = 'button', size, disabled, ...props }, ref) => {\n\t\tconst { defaultControlSize } = useFormsConfig();\n\t\tconst resolvedSize: TextButtonSize =\n\t\t\tsize ?? providerSizeMap[defaultControlSize ?? 'default'] ?? 'default';\n\t\treturn (\n\t\t\t<BaseButton\n\t\t\t\tref={ref}\n\t\t\t\ttype={type}\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={cn('text-button--component', \n\t\t\t\t\t'inline-flex items-center justify-center underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current',\n\t\t\t\t\t'text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n\t\t\t\t\t'disabled:pointer-events-none disabled:opacity-50',\n\t\t\t\t\tsizeClasses[resolvedSize],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nTextButton.displayName = 'TextButton';\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { BaseButton, type ButtonStyle, type ButtonVariant } from './base-button';\n\nexport type PageActionButtonVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'error';\n\ntype PageActionButtonSize = 'small' | 'default';\nconst baseButtonSizeMap: Record<PageActionButtonSize, 'small' | 'default'> = {\n\tsmall: 'small',\n\tdefault: 'default',\n};\n\nexport type PageActionButtonProps = Omit<\n\tReact.ComponentPropsWithoutRef<typeof BaseButton>,\n\t'variant' | 'buttonStyle' | 'size'\n> & {\n\tvariant?: PageActionButtonVariant;\n\tsize?: PageActionButtonSize;\n};\n\nconst sizeClasses: Record<PageActionButtonSize, string> = {\n\tsmall: 'h-control-sm px-control-sm text-xs',\n\tdefault: 'h-control px-control text-sm',\n};\n\nexport const PageActionButton = React.forwardRef<\n\tHTMLButtonElement,\n\tPageActionButtonProps\n>(({ variant = 'secondary', size, className, ...props }, ref) => {\n\tconst resolvedVariant: ButtonVariant = variant === 'error' ? 'error' : variant;\n\tconst resolvedStyle: ButtonStyle = 'solid';\n\tconst resolvedSize: PageActionButtonSize = size ?? 'small';\n\n\treturn (\n\t\t<BaseButton\n\t\t\tref={ref}\n\t\t\tvariant={resolvedVariant}\n\t\t\tbuttonStyle={resolvedStyle}\n\t\t\tsize={baseButtonSizeMap[resolvedSize]}\n\t\t\tclassName={cn('page-action-button--component', sizeClasses[resolvedSize], 'shadow-none', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nPageActionButton.displayName = 'PageActionButton';\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/strings.cjs"),n=require("./ui-provider-DZWtUXf2.cjs"),r=require("../lib/utils.cjs"),i=require("./button-Bd5bEIiB.cjs"),a=require("./tooltip-mvxZV_Lu.cjs"),o=require("./typography-CO9uwZhF.cjs"),s=require("./alert-V0V36Sny.cjs"),c=require("./dropdown-menu-CHQzQWUK.cjs");let l=require("react");l=e.t(l,1);let u=require("react/jsx-runtime"),d=require("lucide-react");function f({className:e,size:t=`default`,...n}){return(0,u.jsx)(`div`,{"data-slot":`card`,"data-size":t,className:r.cn(`ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-xl py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col`,e),...n})}function p({className:e,...t}){return(0,u.jsx)(`div`,{"data-slot":`card-header`,className:r.cn(`gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]`,e),...t})}function m({className:e,...t}){return(0,u.jsx)(`div`,{"data-slot":`card-title`,className:r.cn(`text-base leading-normal font-medium group-data-[size=sm]/card:text-sm`,e),...t})}function h({className:e,...t}){return(0,u.jsx)(`div`,{"data-slot":`card-description`,className:r.cn(`text-muted-foreground text-sm`,e),...t})}function g({className:e,...t}){return(0,u.jsx)(`div`,{"data-slot":`card-content`,className:r.cn(`px-6 group-data-[size=sm]/card:px-4`,e),...t})}function _({className:e,...t}){return(0,u.jsx)(`div`,{"data-slot":`card-footer`,className:r.cn(`rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center`,e),...t})}var v={root:`card--component`,header:`card--header`,title:`card--title`,description:`card--description`,content:`card--content`,footer:`card--footer`,alert:`card--alert`},y={small:{shell:`gap-space-lg py-surface-sm`,headerX:`px-surface-sm`,contentX:`px-surface-sm`,contentY:`py-0`,footerX:`px-surface-sm`,alertX:`px-surface-sm`,alertOffsetWithHeader:`-mt-1`,alertOffsetStandalone:`mt-0`},default:{shell:`gap-space-xl py-[calc(var(--surface-y)+var(--space-xs))]`,headerX:`px-[calc(var(--surface-x)+var(--space-xs))]`,contentX:`px-[calc(var(--surface-x)+var(--space-xs))]`,contentY:`py-0`,footerX:`px-[calc(var(--surface-x)+var(--space-xs))]`,alertX:`px-[calc(var(--surface-x)+var(--space-xs))]`,alertOffsetWithHeader:`-mt-1`,alertOffsetStandalone:`mt-0`}},b={card:`rounded-lg border border-border bg-card text-card-foreground shadow-xs`,flat:`bg-transparent text-card-foreground border-none shadow-none`,framed:r.cn(`rounded-lg border border-border bg-card text-card-foreground shadow-xs`,`ring-4 ring-border/25`)};function x(e){return e==null||typeof e==`boolean`?!1:typeof e==`string`?e.trim().length>0:typeof e==`number`||typeof e==`bigint`?!0:Array.isArray(e)?e.some(x):(0,l.isValidElement)(e)&&e.type===l.Fragment?x(e.props.children):!0}function S({className:e,...t}){return(0,u.jsx)(f,{className:r.cn(v.root,`flex w-full flex-col gap-3 py-4 ring-0`,e),...t})}function C({className:e,...t}){return(0,u.jsx)(p,{className:r.cn(v.header,`flex flex-col gap-1 px-4`,e),...t})}function w({className:e,children:t,...n}){return x(t)?typeof t==`string`||typeof t==`number`||typeof t==`bigint`?(0,u.jsx)(o.s,{"data-slot":`card-title`,tag:`div`,size:`base`,weight:`semibold`,lineHeight:`tight`,className:r.cn(v.title,`min-w-0 font-semibold`,e),...n,children:t}):(0,u.jsx)(m,{className:r.cn(v.title,`min-w-0 text-base leading-tight font-semibold`,e),...n,children:t}):null}function T({className:e,children:t,...n}){return x(t)?typeof t==`string`||typeof t==`number`||typeof t==`bigint`?(0,u.jsx)(o.s,{"data-slot":`card-description`,tag:`div`,type:`secondary`,className:r.cn(v.description,`text-muted-foreground text-sm`,e),...n,children:t}):(0,u.jsx)(h,{className:r.cn(v.description,`text-muted-foreground text-sm`,e),...n,children:t}):null}function E({className:e,...t}){return(0,u.jsx)(g,{className:r.cn(v.content,`px-4`,e),...t})}function D({className:e,...t}){return(0,u.jsx)(_,{className:r.cn(v.footer,`flex items-center px-4`,e),...t})}function O({alert:e,alertVariant:t,hasHeader:n,padding:i}){let a=y[i];return(0,u.jsx)(`div`,{className:r.cn(v.alert,a.alertX,n?a.alertOffsetWithHeader:a.alertOffsetStandalone),children:(0,u.jsx)(s.t,{variant:t,children:(0,u.jsx)(s.r,{children:e})})})}function k({actions:e,actionsLabel:t}){return(0,u.jsxs)(c.t,{children:[(0,u.jsx)(c.g,{type:`button`,"aria-label":t,className:r.cn(`inline-flex size-7 shrink-0 items-center justify-center rounded-md p-0`,`text-muted-foreground hover:bg-accent hover:text-accent-foreground`,`outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,`transition-colors`),children:(0,u.jsx)(d.MoreHorizontal,{className:`size-4`})}),(0,u.jsx)(c.r,{align:`end`,className:`min-w-36`,children:e.map((e,t)=>(0,u.jsxs)(c.a,{onClick:e.onClick,disabled:e.disabled,className:`gap-space-lg px-row-x py-row-y text-xs`,children:[!!e.icon&&(0,u.jsx)(`span`,{className:`flex shrink-0 items-center`,children:e.icon}),e.label]},e.id??`${e.label}-${t}`))})]})}function A({tooltipLabel:e}){return(0,u.jsx)(a.i,{render:t=>{let n=t;return(0,u.jsx)(i.t,{...n,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-small`,className:r.cn(`h-5 w-5 text-muted-foreground`,n.className),"aria-label":e,children:(0,u.jsx)(d.Info,{className:`size-3.5`})})}})}function j({icon:e,title:t,titleSuffix:n,description:i,tooltip:o,tooltipLabel:s,headerStart:c,headerEnd:l,headerAction:d,actions:f,actionsLabel:p,padding:m,className:h}){let g=Array.isArray(f)?f:[],_=g.length>0,v=x(e),b=x(t),S=x(n),E=x(i),D=x(o),O=x(c),j=x(l),M=x(d),N=v||b||S||D,P=j||M||_;return(0,u.jsxs)(C,{className:r.cn(`flex-row items-start justify-between gap-3 pb-0`,y[m].headerX,h),children:[(0,u.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[!!O&&c,!!N&&(0,u.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1`,children:[!!v&&(0,u.jsx)(`span`,{className:`flex shrink-0 items-center text-muted-foreground`,children:e}),(0,u.jsx)(w,{children:t}),!!S&&(0,u.jsx)(`div`,{className:`flex items-center gap-2`,children:n}),!!D&&(0,u.jsxs)(a.t,{children:[(0,u.jsx)(A,{tooltipLabel:s}),(0,u.jsx)(a.n,{children:o})]})]}),!!E&&(0,u.jsx)(T,{className:`text-left`,children:i})]}),!!P&&(0,u.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[!!j&&l,!!M&&d,!!_&&(0,u.jsx)(k,{actions:g,actionsLabel:p})]})]})}var M={expandLabel:`Expand card`,collapseLabel:`Collapse card`};function N({title:e,lines:t=2,className:n}){let i=({barClassName:e})=>(0,u.jsx)(`div`,{className:r.cn(`animate-pulse rounded bg-muted`,e)});return(0,u.jsxs)(S,{className:r.cn(b.card,`gap-4 py-6`,n),children:[(0,u.jsx)(C,{className:`flex-col gap-1.5 px-6 pb-0`,children:e?(0,u.jsx)(w,{children:e}):(0,u.jsx)(i,{barClassName:`h-4 w-32`})}),(0,u.jsx)(E,{className:`space-y-3 px-6 py-0`,children:Array.from({length:t},(e,t)=>(0,u.jsx)(i,{barClassName:r.cn(`h-4`,t===0?`w-full`:`w-3/4`)},`skel-${String(t)}`))})]})}N.displayName=`SmartCardSkeleton`;function P(e){return e===`small`||e==="default"?e:e===`sm`?`small`:`default`}var F=(0,l.forwardRef)(function({icon:e,title:a,titleSuffix:o,description:s,tooltip:c,tooltipAriaLabel:f=`Card info`,footerText:p,alert:m,alertVariant:h=`default`,surface:g,transparent:_=!1,padding:v,actions:C,actionsLabel:w=`Card actions`,headerAction:T,headerStart:k,headerEnd:A,contentTop:N,contentBottom:F,footerSlot:I,headerDivider:ee=!1,footerDivider:L=!1,expandable:R=!1,defaultExpanded:te=!1,expanded:z,onExpandedChange:B,children:ne,className:V,headerClassName:re,contentClassName:ie,footerClassName:H,strings:ae},oe){let{defaultPadding:se}=n.n(),U=P(v??se),W=y[U],G=Array.isArray(C)?C:[],K=t.useStrings(M,ae),q=R!==!1&&R!==void 0,J=typeof R==`object`&&R?.collapsedMaxHeight!==void 0?R.collapsedMaxHeight:`12rem`,ce=typeof J==`number`?`${J}px`:J,Y=z!==void 0,[le,ue]=(0,l.useState)(te),X=Y?z:le,de=(0,l.useCallback)(()=>{let e=!X;Y||ue(e),B?.(e)},[X,Y,B]),Z=x(e)||x(a)||x(s)||G.length>0||x(T)||x(k)||x(A),fe=x(m),pe=x(p),me=x(I),he=x(N),ge=x(F),_e=f.trim().length>0?f:`Card info`,Q=q?{maxHeight:X?``:ce}:void 0,$=g??(_?`flat`:`card`);return(0,u.jsxs)(S,{ref:oe,"data-surface":$,className:r.cn(b[$],W.shell,q&&`relative pb-1 !overflow-visible`,V),children:[!!Z&&(0,u.jsx)(j,{icon:e,title:a,titleSuffix:o,description:s,tooltip:c,tooltipLabel:_e,headerStart:k,headerEnd:A,headerAction:T,actions:G,actionsLabel:w,padding:U,className:r.cn(ee&&`pb-3 border-b border-border/60`,re)}),!!fe&&(0,u.jsx)(O,{alert:m,alertVariant:h,hasHeader:Z,padding:U}),(0,u.jsxs)(E,{className:r.cn(W.contentX,W.contentY,q&&`relative overflow-hidden transition-[max-height] duration-500 ease-in-out`,ie),style:Q,children:[!!he&&N,ne,!!ge&&F,!!q&&!X&&(0,u.jsx)(`div`,{"aria-hidden":`true`,className:`from-background pointer-events-none absolute inset-x-0 bottom-0 h-20 rounded-b-lg bg-linear-to-t to-transparent`})]}),!!pe&&(0,u.jsx)(D,{className:r.cn(`justify-end text-xs text-muted-foreground`,W.footerX,L&&`pt-3 border-t border-border/60`,H),children:p}),!!me&&(0,u.jsx)(D,{className:r.cn(`flex-col items-stretch`,W.footerX,L&&`pt-3 border-t border-border/60`,H),children:I}),!!q&&(0,u.jsx)(`div`,{className:`absolute -bottom-4 left-1/2 -translate-x-1/2 z-10`,children:(0,u.jsxs)(i.t,{type:`button`,variant:`secondary`,buttonStyle:`outline`,size:`icon-small`,onClick:de,"aria-expanded":X,"aria-label":X?K.collapseLabel:K.expandLabel,className:r.cn(`inline-flex size-8 items-center justify-center rounded-full`,`border border-border bg-background text-foreground shadow-sm`,`hover:bg-muted/40 transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50`),children:[(0,u.jsx)(d.ChevronDown,{"aria-hidden":`true`,className:r.cn(`size-4 transition-transform duration-300`,X&&`rotate-180`)}),(0,u.jsx)(`span`,{className:`sr-only`,children:X?K.collapseLabel:K.expandLabel})]})})]})});F.displayName=`SmartCard`,Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return F}});
2
+ //# sourceMappingURL=cards-CbbHly7W.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards-CbbHly7W.cjs","names":[],"sources":["../../src/components/ui/card.tsx","../../src/components/base/cards/smart-card.tokens.ts","../../src/components/base/cards/partials/has-renderable-content.ts","../../src/components/base/cards/partials/card-primitives.tsx","../../src/components/base/cards/partials/smart-card-alert.tsx","../../src/components/base/cards/partials/smart-card-actions-menu.tsx","../../src/components/base/cards/partials/smart-card-header-row.tsx","../../src/components/base/cards/smart-card.strings.ts","../../src/components/base/cards/partials/smart-card-skeleton.tsx","../../src/components/base/cards/smart-card.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-xl py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base leading-normal font-medium group-data-[size=sm]/card:text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import { cn } from '@/lib/utils';\n\nimport type { CardPadding, SmartCardSurface } from './smart-card.types';\n\n/**\n * BEM-style hooks applied to every SmartCard subregion. Library\n * consumers can target them in CSS / tests / analytics without\n * relying on shadcn's data-slot attributes (which are framework\n * internals). Keep these names consistent — they are part of the\n * public DOM contract.\n */\nexport const CARD_BEM = {\n\troot: 'card--component',\n\theader: 'card--header',\n\ttitle: 'card--title',\n\tdescription: 'card--description',\n\tcontent: 'card--content',\n\tfooter: 'card--footer',\n\talert: 'card--alert',\n} as const;\n\ninterface PaddingTokens {\n\tshell: string;\n\theaderX: string;\n\tcontentX: string;\n\tcontentY: string;\n\tfooterX: string;\n\talertX: string;\n\t/** Vertical offset applied when alert sits BELOW the header (pulls it up). */\n\talertOffsetWithHeader: string;\n\t/** Vertical spacing applied when alert is the first content (no header). */\n\talertOffsetStandalone: string;\n}\n\nexport const PADDING: Record<CardPadding, PaddingTokens> = {\n\tsmall: {\n\t\tshell: 'gap-space-lg py-surface-sm',\n\t\theaderX: 'px-surface-sm',\n\t\tcontentX: 'px-surface-sm',\n\t\tcontentY: 'py-0',\n\t\tfooterX: 'px-surface-sm',\n\t\talertX: 'px-surface-sm',\n\t\talertOffsetWithHeader: '-mt-1',\n\t\talertOffsetStandalone: 'mt-0',\n\t},\n\tdefault: {\n\t\tshell: 'gap-space-xl py-[calc(var(--surface-y)+var(--space-xs))]',\n\t\theaderX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\tcontentX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\tcontentY: 'py-0',\n\t\tfooterX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\talertX: 'px-[calc(var(--surface-x)+var(--space-xs))]',\n\t\talertOffsetWithHeader: '-mt-1',\n\t\talertOffsetStandalone: 'mt-0',\n\t},\n};\n\n/**\n * Surface-specific shell classes. The `framed` variant provides one clean\n * card surface with a soft tokenized ring, not nested borders that compete\n * with the example chrome.\n */\nexport const SURFACE_CLASSES: Record<SmartCardSurface, string> = {\n\tcard: 'rounded-lg border border-border bg-card text-card-foreground shadow-xs',\n\tflat: 'bg-transparent text-card-foreground border-none shadow-none',\n\tframed: cn(\n\t\t'rounded-lg border border-border bg-card text-card-foreground shadow-xs',\n\t\t'ring-4 ring-border/25',\n\t),\n};\n","import { Fragment, isValidElement, type ReactNode } from 'react';\n\n/**\n * Predicate used by SmartCard subregions to decide whether each slot\n * warrants rendering its wrapper. Numbers (incl. `0`) and JSX always\n * render; falsy / empty-string content is treated as absent. Fragments\n * recurse into their children.\n */\nexport function hasRenderableContent(content?: ReactNode): boolean {\n\tif (content === null || content === undefined) return false;\n\tif (typeof content === 'boolean') return false;\n\tif (typeof content === 'string') return content.trim().length > 0;\n\tif (typeof content === 'number' || typeof content === 'bigint') return true;\n\tif (Array.isArray(content)) return content.some(hasRenderableContent);\n\tif (isValidElement<{ children?: ReactNode }>(content)) {\n\t\tif (content.type === Fragment) return hasRenderableContent(content.props.children);\n\t\treturn true;\n\t}\n\treturn true;\n}\n","/**\n * Internal layout primitives — re-exported from `smart-card.tsx` for\n * advanced composition (deeply customised layouts that still want the\n * design-system surface tokens). Each primitive is intentionally thin:\n * a single responsibility, a single set of default classes, no business\n * logic. The BEM hooks (`card--component`, `card--header`, etc.) are\n * applied here so the public DOM contract lives in one place.\n */\nimport {\n\ttype ComponentPropsWithRef,\n\ttype ComponentPropsWithoutRef,\n} from 'react';\n\nimport {\n\tCard as CardPrimitive,\n\tCardContent as CardContentPrimitive,\n\tCardDescription as CardDescriptionPrimitive,\n\tCardFooter as CardFooterPrimitive,\n\tCardHeader as CardHeaderPrimitive,\n\tCardTitle as CardTitlePrimitive,\n} from '@/components/ui/card';\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\n\nimport { CARD_BEM } from '../smart-card.tokens';\n\nimport { hasRenderableContent } from './has-renderable-content';\n\nexport function CardShell({ className, ...props }: ComponentPropsWithRef<'div'>) {\n\treturn (\n\t\t<CardPrimitive\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.root,\n\t\t\t\t'flex w-full flex-col gap-3 py-4 ring-0',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardHeader({\n\tclassName,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\treturn (\n\t\t<CardHeaderPrimitive\n\t\t\tclassName={cn(CARD_BEM.header, 'flex flex-col gap-1 px-4', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardTitle({\n\tclassName,\n\tchildren,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\tif (!hasRenderableContent(children)) return null;\n\n\tconst isPlainText =\n\t\ttypeof children === 'string' ||\n\t\ttypeof children === 'number' ||\n\t\ttypeof children === 'bigint';\n\n\tif (!isPlainText) {\n\t\treturn (\n\t\t\t<CardTitlePrimitive\n\t\t\t\tclassName={cn(CARD_BEM.title, 'min-w-0 text-base leading-tight font-semibold', className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</CardTitlePrimitive>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tdata-slot=\"card-title\"\n\t\t\ttag=\"div\"\n\t\t\tsize=\"base\"\n\t\t\tweight=\"semibold\"\n\t\t\tlineHeight=\"tight\"\n\t\t\tclassName={cn(CARD_BEM.title, 'min-w-0 font-semibold', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nexport function CardDescription({\n\tclassName,\n\tchildren,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\tif (!hasRenderableContent(children)) return null;\n\n\tconst isPlainText =\n\t\ttypeof children === 'string' ||\n\t\ttypeof children === 'number' ||\n\t\ttypeof children === 'bigint';\n\n\tif (!isPlainText) {\n\t\treturn (\n\t\t\t<CardDescriptionPrimitive\n\t\t\t\tclassName={cn(\n\t\t\t\t\tCARD_BEM.description,\n\t\t\t\t\t'text-muted-foreground text-sm',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</CardDescriptionPrimitive>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tdata-slot=\"card-description\"\n\t\t\ttag=\"div\"\n\t\t\ttype=\"secondary\"\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.description,\n\t\t\t\t'text-muted-foreground text-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nexport function CardContent({\n\tclassName,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\treturn (\n\t\t<CardContentPrimitive\n\t\t\tclassName={cn(CARD_BEM.content, 'px-4', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardFooter({\n\tclassName,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\treturn (\n\t\t<CardFooterPrimitive\n\t\t\tclassName={cn(CARD_BEM.footer, 'flex items-center px-4', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n","/**\n * Inline alert banner rendered between the header and the card body.\n * Pulls itself up under the header (`alertOffsetWithHeader`) when one\n * exists so the visual gap between header bottom and alert top stays\n * tight; otherwise pushes itself down (`alertOffsetStandalone`) so it\n * doesn't kiss the card top edge.\n */\nimport type { ReactNode } from 'react';\n\nimport { Alert, AlertDescription } from '@/components/base/display/alert';\nimport { cn } from '@/lib/utils';\n\nimport { CARD_BEM, PADDING } from '../smart-card.tokens';\nimport type { CardAlertVariant, CardPadding } from '../smart-card.types';\n\ninterface AlertSlotProps {\n\talert: ReactNode | string;\n\talertVariant: CardAlertVariant;\n\thasHeader: boolean;\n\tpadding: CardPadding;\n}\n\nexport function SmartCardAlert({\n\talert,\n\talertVariant,\n\thasHeader,\n\tpadding,\n}: AlertSlotProps) {\n\tconst tokens = PADDING[padding];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.alert,\n\t\t\t\ttokens.alertX,\n\t\t\t\thasHeader ? tokens.alertOffsetWithHeader : tokens.alertOffsetStandalone,\n\t\t\t)}\n\t\t>\n\t\t\t<Alert variant={alertVariant}>\n\t\t\t\t<AlertDescription>{alert}</AlertDescription>\n\t\t\t</Alert>\n\t\t</div>\n\t);\n}\n","/**\n * SmartCard actions menu — `⋮` trigger + dropdown of consumer-supplied\n * `SmartCardAction` items. Always renders a 28×28 square trigger so it\n * reads cleanly as a circle (consumer overrides to `rounded-full`) or\n * a rectangle (default `rounded-md`).\n */\nimport { MoreHorizontal } from 'lucide-react';\n\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { cn } from '@/lib/utils';\n\nimport type { SmartCardAction } from '../smart-card.types';\n\ninterface ActionsMenuProps {\n\tactions: SmartCardAction[];\n\tactionsLabel: string;\n}\n\nexport function ActionsMenu({ actions, actionsLabel }: ActionsMenuProps) {\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={actionsLabel}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'inline-flex size-7 shrink-0 items-center justify-center rounded-md p-0',\n\t\t\t\t\t'text-muted-foreground hover:bg-accent hover:text-accent-foreground',\n\t\t\t\t\t'outline-none focus-visible:ring-2 focus-visible:ring-ring/50',\n\t\t\t\t\t'transition-colors',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<MoreHorizontal className=\"size-4\" />\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent align=\"end\" className=\"min-w-36\">\n\t\t\t\t{actions.map((action, index) => (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tkey={action.id ?? `${action.label}-${index}`}\n\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\tclassName=\"gap-space-lg px-row-x py-row-y text-xs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!action.icon && (\n\t\t\t\t\t\t\t<span className=\"flex shrink-0 items-center\">{action.icon}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t))}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n","/**\n * SmartCardHeaderRow — the chrome above the card body. Combines icon /\n * title / description / tooltip / suffix on the leading side with the\n * trailing `headerEnd` / `headerAction` slots and the actions menu.\n *\n * `TooltipTrigger_Info` is colocated here because it's only used by the\n * header — keeping it private avoids polluting the public partial\n * surface.\n */\nimport { Info } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipTrigger,\n} from '@/components/base/display/tooltip';\nimport { cn } from '@/lib/utils';\n\nimport { PADDING } from '../smart-card.tokens';\nimport type { CardPadding, SmartCardAction } from '../smart-card.types';\n\nimport { CardHeader, CardTitle, CardDescription } from './card-primitives';\nimport { hasRenderableContent } from './has-renderable-content';\nimport { ActionsMenu } from './smart-card-actions-menu';\n\nfunction TooltipTrigger_Info({ tooltipLabel }: { tooltipLabel: string }) {\n\treturn (\n\t\t<TooltipTrigger\n\t\t\trender={(triggerProps) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tconst passthrough = triggerProps as Record<string, any>;\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t{...passthrough}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'h-5 w-5 text-muted-foreground',\n\t\t\t\t\t\t\tpassthrough.className,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={tooltipLabel}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Info className=\"size-3.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\ninterface HeaderProps {\n\ticon?: ReactNode;\n\ttitle?: ReactNode;\n\ttitleSuffix?: ReactNode;\n\tdescription?: ReactNode;\n\ttooltip?: ReactNode;\n\ttooltipLabel: string;\n\theaderStart?: ReactNode;\n\theaderEnd?: ReactNode;\n\theaderAction?: ReactNode;\n\tactions?: SmartCardAction[];\n\tactionsLabel: string;\n\tpadding: CardPadding;\n\tclassName?: string;\n}\n\nexport function SmartCardHeaderRow({\n\ticon,\n\ttitle,\n\ttitleSuffix,\n\tdescription,\n\ttooltip,\n\ttooltipLabel,\n\theaderStart,\n\theaderEnd,\n\theaderAction,\n\tactions,\n\tactionsLabel,\n\tpadding,\n\tclassName,\n}: HeaderProps) {\n\tconst cardActions = Array.isArray(actions) ? actions : [];\n\tconst hasActions = cardActions.length > 0;\n\n\tconst hasIcon = hasRenderableContent(icon);\n\tconst hasTitle = hasRenderableContent(title);\n\tconst hasTitleSuffix = hasRenderableContent(titleSuffix);\n\tconst hasDescription = hasRenderableContent(description);\n\tconst hasTooltip = hasRenderableContent(tooltip);\n\tconst hasHeaderStart = hasRenderableContent(headerStart);\n\tconst hasHeaderEnd = hasRenderableContent(headerEnd);\n\tconst hasHeaderAction = hasRenderableContent(headerAction);\n\n\tconst showTitleRow = hasIcon || hasTitle || hasTitleSuffix || hasTooltip;\n\tconst showTrailing = hasHeaderEnd || hasHeaderAction || hasActions;\n\n\treturn (\n\t\t<CardHeader\n\t\t\tclassName={cn(\n\t\t\t\t'flex-row items-start justify-between gap-3 pb-0',\n\t\t\t\tPADDING[padding].headerX,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n\t\t\t\t{!!hasHeaderStart && headerStart}\n\n\t\t\t\t{!!showTitleRow && (\n\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1\">\n\t\t\t\t\t\t{!!hasIcon && (\n\t\t\t\t\t\t\t<span className=\"flex shrink-0 items-center text-muted-foreground\">\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<CardTitle>{title}</CardTitle>\n\t\t\t\t\t\t{!!hasTitleSuffix && (\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">{titleSuffix}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger_Info tooltipLabel={tooltipLabel} />\n\t\t\t\t\t\t\t\t<TooltipContent>{tooltip}</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasDescription && (\n\t\t\t\t\t<CardDescription className=\"text-left\">{description}</CardDescription>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!!showTrailing && (\n\t\t\t\t<div className=\"flex shrink-0 items-center gap-2\">\n\t\t\t\t\t{!!hasHeaderEnd && headerEnd}\n\t\t\t\t\t{!!hasHeaderAction && headerAction}\n\t\t\t\t\t{!!hasActions && (\n\t\t\t\t\t\t<ActionsMenu actions={cardActions} actionsLabel={actionsLabel} />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</CardHeader>\n\t);\n}\n","/**\n * SmartCard strings — i18n surface for the chrome the consumer doesn't\n * pass directly. Most copy (title, description, action labels, alert\n * body) flows in via props; the strings here cover the implicit\n * affordances (expand toggle).\n */\n\nexport interface SmartCardStrings {\n\texpandLabel: string;\n\tcollapseLabel: string;\n}\n\nexport const defaultSmartCardStrings: SmartCardStrings = {\n\texpandLabel: 'Expand card',\n\tcollapseLabel: 'Collapse card',\n};\n","/**\n * SmartCardSkeleton — placeholder shell rendered while a SmartCard's\n * data is loading. Picks up the canonical card surface so the loading\n * state visually matches the eventual `SmartCard` it'll replace.\n */\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport { SURFACE_CLASSES } from '../smart-card.tokens';\n\nimport {\n\tCardContent,\n\tCardHeader,\n\tCardShell,\n\tCardTitle,\n} from './card-primitives';\n\nexport interface SmartCardSkeletonProps {\n\ttitle?: ReactNode;\n\tlines?: number;\n\tclassName?: string;\n}\n\nexport function SmartCardSkeleton({\n\ttitle,\n\tlines = 2,\n\tclassName,\n}: SmartCardSkeletonProps) {\n\tconst SkeletonBar = ({ barClassName }: { barClassName?: string }) => (\n\t\t<div className={cn('animate-pulse rounded bg-muted', barClassName)} />\n\t);\n\n\treturn (\n\t\t<CardShell className={cn(SURFACE_CLASSES.card, 'gap-4 py-6', className)}>\n\t\t\t<CardHeader className=\"flex-col gap-1.5 px-6 pb-0\">\n\t\t\t\t{title ? <CardTitle>{title}</CardTitle> : <SkeletonBar barClassName=\"h-4 w-32\" />}\n\t\t\t</CardHeader>\n\t\t\t<CardContent className=\"space-y-3 px-6 py-0\">\n\t\t\t\t{Array.from({ length: lines }, (_, i) => (\n\t\t\t\t\t<SkeletonBar\n\t\t\t\t\t\tkey={`skel-${String(i)}`}\n\t\t\t\t\t\tbarClassName={cn('h-4', i === 0 ? 'w-full' : 'w-3/4')}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</CardContent>\n\t\t</CardShell>\n\t);\n}\n\nSmartCardSkeleton.displayName = 'SmartCardSkeleton';\n","/**\n * SmartCard — composed card with header (icon, title, suffix, description,\n * tooltip), actions menu, alert banner, header / content / footer slots,\n * surface variants (card / flat / framed), and an opt-in expandable body.\n *\n * The single card primitive everything else builds on — never reach past it\n * to shadcn `Card` directly. The CardShell / CardHeader / CardTitle /\n * CardDescription / CardContent / CardFooter primitives are re-exported\n * for advanced composition (deeply customised layouts that still want the\n * design-system surface tokens). Each subregion paints a BEM-style hook\n * (`card--component`, `card--header`, `card--title`, …) for CSS / test /\n * analytics targeting independent of shadcn's data-slot internals.\n *\n * The file is a thin orchestrator. The actual chrome lives in:\n * - `./smart-card.types.ts` — public prop / variant types\n * - `./smart-card.strings.ts` — i18n (expand toggle copy)\n * - `./smart-card.tokens.ts` — PADDING + SURFACE_CLASSES + CARD_BEM\n * - `./partials/card-primitives.tsx` — CardShell + CardHeader / Title /\n * Description / Content / Footer\n * - `./partials/smart-card-header-row.tsx` — header layout + actions menu\n * - `./partials/smart-card-alert.tsx` — inline alert banner\n * - `./partials/smart-card-actions-menu.tsx` — `⋮` dropdown\n * - `./partials/smart-card-skeleton.tsx` — loading placeholder\n * - `./partials/has-renderable-content.ts` — slot-empty predicate\n */\nimport { ChevronDown } from 'lucide-react';\nimport {\n\ttype CSSProperties,\n\tforwardRef,\n\tuseCallback,\n\tuseState,\n} from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { useStrings } from '@/lib/strings';\nimport { useCardConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tCardContent,\n\tCardFooter,\n\tCardShell,\n} from './partials/card-primitives';\nimport { hasRenderableContent } from './partials/has-renderable-content';\nimport { SmartCardAlert } from './partials/smart-card-alert';\nimport { SmartCardHeaderRow } from './partials/smart-card-header-row';\nimport {\n\tdefaultSmartCardStrings,\n} from './smart-card.strings';\nimport {\n\tPADDING,\n\tSURFACE_CLASSES,\n} from './smart-card.tokens';\nimport type {\n\tCardPadding,\n\tSmartCardProps,\n\tSmartCardSurface,\n} from './smart-card.types';\n\nfunction normalizeCardPadding(padding: CardPadding | string | undefined): CardPadding {\n\tif (padding === 'small' || padding === 'default') return padding;\n\tif (padding === 'sm') return 'small';\n\tif (padding === 'base' || padding === 'lg') return 'default';\n\treturn 'default';\n}\n\nexport const SmartCard = forwardRef<HTMLDivElement, SmartCardProps>(function SmartCard({\n\ticon,\n\ttitle,\n\ttitleSuffix,\n\tdescription,\n\ttooltip,\n\ttooltipAriaLabel = 'Card info',\n\tfooterText,\n\talert,\n\talertVariant = 'default',\n\tsurface,\n\ttransparent = false,\n\tpadding,\n\tactions,\n\tactionsLabel = 'Card actions',\n\theaderAction,\n\theaderStart,\n\theaderEnd,\n\tcontentTop,\n\tcontentBottom,\n\tfooterSlot,\n\theaderDivider = false,\n\tfooterDivider = false,\n\texpandable = false,\n\tdefaultExpanded = false,\n\texpanded: expandedProp,\n\tonExpandedChange,\n\tchildren,\n\tclassName,\n\theaderClassName,\n\tcontentClassName,\n\tfooterClassName,\n\tstrings: stringsProp,\n}, ref) {\n\tconst { defaultPadding } = useCardConfig();\n\tconst resolvedPadding = normalizeCardPadding(padding ?? defaultPadding);\n\tconst tokens = PADDING[resolvedPadding];\n\tconst cardActions = Array.isArray(actions) ? actions : [];\n\tconst strings = useStrings(defaultSmartCardStrings, stringsProp);\n\n\tconst isExpandable = expandable !== false && expandable !== undefined;\n\tconst collapsedMaxHeightRaw =\n\t\ttypeof expandable === 'object' && expandable?.collapsedMaxHeight !== undefined\n\t\t\t? expandable.collapsedMaxHeight\n\t\t\t: '12rem';\n\tconst collapsedMaxHeight =\n\t\ttypeof collapsedMaxHeightRaw === 'number'\n\t\t\t? `${collapsedMaxHeightRaw}px`\n\t\t\t: collapsedMaxHeightRaw;\n\n\tconst isExpandedControlled = expandedProp !== undefined;\n\tconst [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n\tconst expanded = isExpandedControlled ? expandedProp : internalExpanded;\n\tconst handleToggle = useCallback(() => {\n\t\tconst next = !expanded;\n\t\tif (!isExpandedControlled) setInternalExpanded(next);\n\t\tonExpandedChange?.(next);\n\t}, [expanded, isExpandedControlled, onExpandedChange]);\n\n\tconst hasHeader =\n\t\thasRenderableContent(icon) ||\n\t\thasRenderableContent(title) ||\n\t\thasRenderableContent(description) ||\n\t\tcardActions.length > 0 ||\n\t\thasRenderableContent(headerAction) ||\n\t\thasRenderableContent(headerStart) ||\n\t\thasRenderableContent(headerEnd);\n\n\tconst hasAlert = hasRenderableContent(alert);\n\tconst hasFooterText = hasRenderableContent(footerText);\n\tconst hasFooterSlot = hasRenderableContent(footerSlot);\n\tconst hasContentTop = hasRenderableContent(contentTop);\n\tconst hasContentBottom = hasRenderableContent(contentBottom);\n\n\tconst tooltipLabel =\n\t\ttooltipAriaLabel.trim().length > 0 ? tooltipAriaLabel : 'Card info';\n\n\tconst collapseStyle: CSSProperties | undefined = isExpandable\n\t\t? {\n\t\t\t\tmaxHeight: expanded ? '' : collapsedMaxHeight,\n\t\t\t}\n\t\t: undefined;\n\n\t// Resolve surface — explicit `surface` wins, else legacy `transparent`,\n\t// else the default `'card'` chrome.\n\tconst resolvedSurface: SmartCardSurface = surface ?? (transparent ? 'flat' : 'card');\n\n\treturn (\n\t\t<CardShell\n\t\t\tref={ref}\n\t\t\tdata-surface={resolvedSurface}\n\t\t\tclassName={cn(\n\t\t\t\tSURFACE_CLASSES[resolvedSurface],\n\t\t\t\ttokens.shell,\n\t\t\t\t// `isExpandable` parks the chevron at `-bottom-4` outside the\n\t\t\t\t// shell — `overflow-visible` lets it render past the card\n\t\t\t\t// edge, otherwise the shadcn primitive's `overflow-hidden`\n\t\t\t\t// clips it.\n\t\t\t\tisExpandable && 'relative pb-1 !overflow-visible',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{!!hasHeader && (\n\t\t\t\t<SmartCardHeaderRow\n\t\t\t\t\ticon={icon}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\ttitleSuffix={titleSuffix}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\ttooltip={tooltip}\n\t\t\t\t\ttooltipLabel={tooltipLabel}\n\t\t\t\t\theaderStart={headerStart}\n\t\t\t\t\theaderEnd={headerEnd}\n\t\t\t\t\theaderAction={headerAction}\n\t\t\t\t\tactions={cardActions}\n\t\t\t\t\tactionsLabel={actionsLabel}\n\t\t\t\t\tpadding={resolvedPadding}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\theaderDivider && 'pb-3 border-b border-border/60',\n\t\t\t\t\t\theaderClassName,\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{!!hasAlert && (\n\t\t\t\t<SmartCardAlert\n\t\t\t\t\talert={alert}\n\t\t\t\t\talertVariant={alertVariant}\n\t\t\t\t\thasHeader={hasHeader}\n\t\t\t\t\tpadding={resolvedPadding}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<CardContent\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttokens.contentX,\n\t\t\t\t\ttokens.contentY,\n\t\t\t\t\tisExpandable &&\n\t\t\t\t\t\t'relative overflow-hidden transition-[max-height] duration-500 ease-in-out',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t\tstyle={collapseStyle}\n\t\t\t>\n\t\t\t\t{!!hasContentTop && contentTop}\n\t\t\t\t{children}\n\t\t\t\t{!!hasContentBottom && contentBottom}\n\n\t\t\t\t{!!isExpandable && !expanded && (\n\t\t\t\t\t<div\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName=\"from-background pointer-events-none absolute inset-x-0 bottom-0 h-20 rounded-b-lg bg-linear-to-t to-transparent\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</CardContent>\n\n\t\t\t{!!hasFooterText && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'justify-end text-xs text-muted-foreground',\n\t\t\t\t\t\ttokens.footerX,\n\t\t\t\t\t\tfooterDivider && 'pt-3 border-t border-border/60',\n\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{footerText}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\n\t\t\t{!!hasFooterSlot && (\n\t\t\t\t<CardFooter\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'flex-col items-stretch',\n\t\t\t\t\t\ttokens.footerX,\n\t\t\t\t\t\tfooterDivider && 'pt-3 border-t border-border/60',\n\t\t\t\t\t\tfooterClassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{footerSlot}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\n\t\t\t{!!isExpandable && (\n\t\t\t\t<div className=\"absolute -bottom-4 left-1/2 -translate-x-1/2 z-10\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t\t\taria-expanded={expanded}\n\t\t\t\t\t\taria-label={expanded ? strings.collapseLabel : strings.expandLabel}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'inline-flex size-8 items-center justify-center rounded-full',\n\t\t\t\t\t\t\t'border border-border bg-background text-foreground shadow-sm',\n\t\t\t\t\t\t\t'hover:bg-muted/40 transition-colors',\n\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronDown\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'size-4 transition-transform duration-300',\n\t\t\t\t\t\t\t\texpanded && 'rotate-180',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span className=\"sr-only\">\n\t\t\t\t\t\t\t{expanded ? strings.collapseLabel : strings.expandLabel}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</CardShell>\n\t);\n});\n\nSmartCard.displayName = 'SmartCard';\n\n// ──────────────────────────────────────────────────────────────────────────\n// Re-exports — public surface lives here so `import { ... } from\n// '@/components/base/cards'` keeps working through the file split.\n// ──────────────────────────────────────────────────────────────────────────\n\nexport {\n\tdefaultSmartCardStrings,\n\ttype SmartCardStrings,\n} from './smart-card.strings';\nexport type {\n\tCardAlertVariant,\n\tCardPadding,\n\tSmartCardAction,\n\tSmartCardProps,\n\tSmartCardSkeletonProps,\n\tSmartCardSurface,\n} from './smart-card.types';\nexport {\n\tCardContent,\n\tCardDescription,\n\tCardFooter,\n\tCardHeader,\n\tCardShell,\n\tCardTitle,\n} from './partials/card-primitives';\nexport { SmartCardSkeleton } from './partials/smart-card-skeleton';\n"],"mappings":"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"}
@@ -75,12 +75,12 @@ var A = {
75
75
  alertOffsetStandalone: "mt-0"
76
76
  },
77
77
  default: {
78
- shell: "gap-space-xl py-surface",
79
- headerX: "px-surface",
80
- contentX: "px-surface",
78
+ shell: "gap-space-xl py-[calc(var(--surface-y)+var(--space-xs))]",
79
+ headerX: "px-[calc(var(--surface-x)+var(--space-xs))]",
80
+ contentX: "px-[calc(var(--surface-x)+var(--space-xs))]",
81
81
  contentY: "py-0",
82
- footerX: "px-surface",
83
- alertX: "px-surface",
82
+ footerX: "px-[calc(var(--surface-x)+var(--space-xs))]",
83
+ alertX: "px-[calc(var(--surface-x)+var(--space-xs))]",
84
84
  alertOffsetWithHeader: "-mt-1",
85
85
  alertOffsetStandalone: "mt-0"
86
86
  }
@@ -352,4 +352,4 @@ W.displayName = "SmartCard";
352
352
  //#endregion
353
353
  export { L as a, P as c, R as i, I as l, U as n, z as o, H as r, F as s, W as t };
354
354
 
355
- //# sourceMappingURL=cards-CtBoSZG9.js.map
355
+ //# sourceMappingURL=cards-RZxRLx3f.js.map