@etus/ui 0.4.0-beta.7 → 0.4.0-beta.8
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.
- package/dist/{chunk-2Y7PQ6ZL.js → chunk-237TQKWH.js} +4 -4
- package/dist/{chunk-2Y7PQ6ZL.js.map → chunk-237TQKWH.js.map} +1 -1
- package/dist/{chunk-KR3IVNQH.js → chunk-2FJJOHHH.js} +16 -10
- package/dist/chunk-2FJJOHHH.js.map +1 -0
- package/dist/{chunk-W4NC5CU5.js → chunk-2Q4I4VDB.js} +4 -4
- package/dist/{chunk-W4NC5CU5.js.map → chunk-2Q4I4VDB.js.map} +1 -1
- package/dist/chunk-2Z722V5K.js +231 -0
- package/dist/chunk-2Z722V5K.js.map +1 -0
- package/dist/chunk-37IIHQP4.js +233 -0
- package/dist/chunk-37IIHQP4.js.map +1 -0
- package/dist/{chunk-UFRMZ3M6.js → chunk-3JCV72FO.js} +6 -2
- package/dist/chunk-3JCV72FO.js.map +1 -0
- package/dist/{chunk-FCT6FEEZ.js → chunk-43BS3PPX.js} +5 -5
- package/dist/{chunk-FCT6FEEZ.js.map → chunk-43BS3PPX.js.map} +1 -1
- package/dist/{chunk-2UGDLAYC.js → chunk-45D4O7RK.js} +10 -3
- package/dist/chunk-45D4O7RK.js.map +1 -0
- package/dist/{chunk-OTSK2KAI.js → chunk-4EYYCHLD.js} +5 -5
- package/dist/{chunk-OTSK2KAI.js.map → chunk-4EYYCHLD.js.map} +1 -1
- package/dist/{chunk-J62TFQHR.js → chunk-5I7AXWJU.js} +13 -13
- package/dist/chunk-5I7AXWJU.js.map +1 -0
- package/dist/{chunk-65YSTUD2.js → chunk-5SUD32RK.js} +44 -14
- package/dist/chunk-5SUD32RK.js.map +1 -0
- package/dist/{chunk-23BHD62H.js → chunk-5TZDEGZN.js} +4 -4
- package/dist/chunk-5TZDEGZN.js.map +1 -0
- package/dist/{chunk-VPNFYQBL.js → chunk-6DN2UAIR.js} +3 -3
- package/dist/chunk-6DN2UAIR.js.map +1 -0
- package/dist/{chunk-EGYWK2XX.js → chunk-7CTFBOD4.js} +3 -3
- package/dist/{chunk-EGYWK2XX.js.map → chunk-7CTFBOD4.js.map} +1 -1
- package/dist/{chunk-36XTKR3B.js → chunk-BMNCNBPA.js} +3 -3
- package/dist/{chunk-36XTKR3B.js.map → chunk-BMNCNBPA.js.map} +1 -1
- package/dist/{chunk-AWYOWR5N.js → chunk-C5HSYDJC.js} +3 -3
- package/dist/{chunk-AWYOWR5N.js.map → chunk-C5HSYDJC.js.map} +1 -1
- package/dist/{chunk-VFALJSXB.js → chunk-DCUFQJYP.js} +3 -3
- package/dist/chunk-DCUFQJYP.js.map +1 -0
- package/dist/{chunk-LATTRPLQ.js → chunk-E2TI5V67.js} +3 -3
- package/dist/{chunk-LATTRPLQ.js.map → chunk-E2TI5V67.js.map} +1 -1
- package/dist/{chunk-IRKDMISK.js → chunk-G2MAGZHQ.js} +4 -3
- package/dist/chunk-G2MAGZHQ.js.map +1 -0
- package/dist/{chunk-ONQCNOLU.js → chunk-HDOR3SN3.js} +3 -3
- package/dist/{chunk-ONQCNOLU.js.map → chunk-HDOR3SN3.js.map} +1 -1
- package/dist/{chunk-PLLJNHWU.js → chunk-HI3T55XK.js} +3 -33
- package/dist/chunk-HI3T55XK.js.map +1 -0
- package/dist/chunk-HJ4E6YPW.js +236 -0
- package/dist/chunk-HJ4E6YPW.js.map +1 -0
- package/dist/{chunk-LS3WD6IZ.js → chunk-I55QJ4CU.js} +4 -4
- package/dist/{chunk-LS3WD6IZ.js.map → chunk-I55QJ4CU.js.map} +1 -1
- package/dist/{chunk-HKXQLWGR.js → chunk-IOWHM7ZY.js} +13 -11
- package/dist/chunk-IOWHM7ZY.js.map +1 -0
- package/dist/{chunk-ILAV2AZ4.js → chunk-IZC5YFGO.js} +3 -3
- package/dist/{chunk-ILAV2AZ4.js.map → chunk-IZC5YFGO.js.map} +1 -1
- package/dist/{chunk-Y7UFBSAD.js → chunk-KHOCAVQO.js} +3 -3
- package/dist/{chunk-Y7UFBSAD.js.map → chunk-KHOCAVQO.js.map} +1 -1
- package/dist/{chunk-IBVCSZCH.js → chunk-KVJOKWP4.js} +5 -4
- package/dist/chunk-KVJOKWP4.js.map +1 -0
- package/dist/{chunk-KC6CHPT3.js → chunk-KZRTQF64.js} +3 -3
- package/dist/{chunk-KC6CHPT3.js.map → chunk-KZRTQF64.js.map} +1 -1
- package/dist/{chunk-QIETN4UU.js → chunk-LEAK22ZP.js} +3 -3
- package/dist/{chunk-QIETN4UU.js.map → chunk-LEAK22ZP.js.map} +1 -1
- package/dist/{chunk-OWOVCGUZ.js → chunk-M2C7HBR5.js} +3 -3
- package/dist/{chunk-OWOVCGUZ.js.map → chunk-M2C7HBR5.js.map} +1 -1
- package/dist/{chunk-33JGPMUW.js → chunk-M7TPROVH.js} +20 -7
- package/dist/chunk-M7TPROVH.js.map +1 -0
- package/dist/{chunk-AVR3LVOQ.js → chunk-MQMRVBUL.js} +4 -4
- package/dist/{chunk-AVR3LVOQ.js.map → chunk-MQMRVBUL.js.map} +1 -1
- package/dist/{chunk-KPNNSUXM.js → chunk-O7AUE5GP.js} +5 -3
- package/dist/chunk-O7AUE5GP.js.map +1 -0
- package/dist/{chunk-6HEURMY3.js → chunk-OCXGG7UP.js} +5 -5
- package/dist/{chunk-6HEURMY3.js.map → chunk-OCXGG7UP.js.map} +1 -1
- package/dist/{chunk-V7XHE25E.js → chunk-ON7WFRYH.js} +3 -3
- package/dist/{chunk-V7XHE25E.js.map → chunk-ON7WFRYH.js.map} +1 -1
- package/dist/{chunk-FSMHI7DW.js → chunk-OXDWUKGP.js} +3 -3
- package/dist/chunk-OXDWUKGP.js.map +1 -0
- package/dist/{chunk-SJSYKUCL.js → chunk-Q335YODG.js} +3 -3
- package/dist/{chunk-SJSYKUCL.js.map → chunk-Q335YODG.js.map} +1 -1
- package/dist/{chunk-6ELVWWIA.js → chunk-QZWKXUZP.js} +3 -3
- package/dist/{chunk-6ELVWWIA.js.map → chunk-QZWKXUZP.js.map} +1 -1
- package/dist/{chunk-DDM2I5C6.js → chunk-R5OIL4I4.js} +3 -3
- package/dist/{chunk-DDM2I5C6.js.map → chunk-R5OIL4I4.js.map} +1 -1
- package/dist/{chunk-FYJHWYPM.js → chunk-S524YVMO.js} +3 -3
- package/dist/{chunk-FYJHWYPM.js.map → chunk-S524YVMO.js.map} +1 -1
- package/dist/{chunk-OWIFNJXZ.js → chunk-S7TVRVRU.js} +3 -3
- package/dist/chunk-S7TVRVRU.js.map +1 -0
- package/dist/{chunk-TNROOKX3.js → chunk-UDY3IDCY.js} +10 -2
- package/dist/chunk-UDY3IDCY.js.map +1 -0
- package/dist/{chunk-3WOGOTOV.js → chunk-UPYT2XM5.js} +7 -7
- package/dist/chunk-UPYT2XM5.js.map +1 -0
- package/dist/{chunk-YWA63YN3.js → chunk-VAVE4ZJF.js} +2 -2
- package/dist/chunk-VAVE4ZJF.js.map +1 -0
- package/dist/chunk-WKWLKGNI.js +643 -0
- package/dist/chunk-WKWLKGNI.js.map +1 -0
- package/dist/{chunk-Z3FL7LEK.js → chunk-X253YD45.js} +71 -6
- package/dist/chunk-X253YD45.js.map +1 -0
- package/dist/{chunk-6XY7QYVR.js → chunk-X3AXEE3S.js} +3 -3
- package/dist/{chunk-6XY7QYVR.js.map → chunk-X3AXEE3S.js.map} +1 -1
- package/dist/{chunk-R4UOT76L.js → chunk-XAIUZJOJ.js} +8 -8
- package/dist/chunk-XAIUZJOJ.js.map +1 -0
- package/dist/{chunk-ZO2EKJZM.js → chunk-XCZMJA2D.js} +7 -7
- package/dist/{chunk-ZO2EKJZM.js.map → chunk-XCZMJA2D.js.map} +1 -1
- package/dist/{chunk-XRMKL43Y.js → chunk-XOLV7G4S.js} +3 -3
- package/dist/{chunk-XRMKL43Y.js.map → chunk-XOLV7G4S.js.map} +1 -1
- package/dist/chunk-XYYOV5GW.js +186 -0
- package/dist/chunk-XYYOV5GW.js.map +1 -0
- package/dist/{chunk-4MQNDQ4O.js → chunk-YACIRNVP.js} +12 -4
- package/dist/chunk-YACIRNVP.js.map +1 -0
- package/dist/{chunk-JKYB5QAP.js → chunk-YDZBLZVZ.js} +3 -3
- package/dist/{chunk-JKYB5QAP.js.map → chunk-YDZBLZVZ.js.map} +1 -1
- package/dist/{chunk-5XQIH6WM.js → chunk-YM5YBDRM.js} +4 -4
- package/dist/{chunk-5XQIH6WM.js.map → chunk-YM5YBDRM.js.map} +1 -1
- package/dist/{chunk-AUCDXPWH.js → chunk-YQX7XZES.js} +4 -4
- package/dist/{chunk-AUCDXPWH.js.map → chunk-YQX7XZES.js.map} +1 -1
- package/dist/{chunk-Y3BOERVB.js → chunk-ZEFK3AXP.js} +3 -3
- package/dist/{chunk-Y3BOERVB.js.map → chunk-ZEFK3AXP.js.map} +1 -1
- package/dist/{chunk-L3Z5FAJE.js → chunk-ZEYLSDSG.js} +3 -3
- package/dist/{chunk-L3Z5FAJE.js.map → chunk-ZEYLSDSG.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +4 -4
- package/dist/components/advanced/Command/index.js +1 -1
- package/dist/components/advanced/EventCalendar/index.js +4 -4
- package/dist/components/advanced/FileDropzone/index.js +1 -1
- package/dist/components/advanced/FilterBuilder/index.js +4 -4
- package/dist/components/advanced/MarkdownEditor/index.js +2 -2
- package/dist/components/advanced/RichTextEditor/index.js +2 -2
- package/dist/components/advanced/index.js +16 -16
- package/dist/components/data-display/AreaChart/index.js +1 -1
- package/dist/components/data-display/BarChart/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +4 -4
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +4 -4
- package/dist/components/data-display/DataTable/index.js +7 -7
- package/dist/components/data-display/ImageGallery/index.js +7 -7
- package/dist/components/data-display/KPICard/index.js +4 -4
- package/dist/components/data-display/Lightbox/index.js +1 -1
- package/dist/components/data-display/LineChart/index.js +1 -1
- package/dist/components/data-display/List/index.js +2 -2
- package/dist/components/data-display/Table/index.js +1 -1
- package/dist/components/data-display/VirtualTable/index.js +2 -2
- package/dist/components/data-display/index.js +35 -35
- package/dist/components/feedback/Alert/index.js +1 -1
- package/dist/components/feedback/AlertDialog/index.js +4 -4
- package/dist/components/feedback/ConfirmModal/index.js +5 -5
- package/dist/components/feedback/Modal/index.js +1 -1
- package/dist/components/feedback/index.js +9 -9
- package/dist/components/forms/ColorPicker/index.js +1 -1
- package/dist/components/forms/DatePicker/index.js +5 -5
- package/dist/components/forms/DateRangePicker/index.js +5 -5
- package/dist/components/forms/IftaLabel/index.js +1 -1
- package/dist/components/forms/InputGroup/index.js +4 -4
- package/dist/components/forms/InputOTPField/index.js +2 -2
- package/dist/components/forms/MultiSelect/index.js +2 -1
- package/dist/components/forms/RadioButton/index.js +1 -1
- package/dist/components/forms/Rating/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/ToggleGroup/index.js +1 -1
- package/dist/components/forms/index.js +28 -28
- package/dist/components/index.js +138 -138
- package/dist/components/layout/index.js +3 -3
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/Drawer/index.js +1 -1
- package/dist/components/navigation/DropdownMenu/index.js +1 -1
- package/dist/components/navigation/Header/index.js +1 -1
- package/dist/components/navigation/MobileSidebar/index.js +4 -4
- package/dist/components/navigation/Pagination/index.js +4 -4
- package/dist/components/navigation/Sidebar/index.js +5 -5
- package/dist/components/navigation/UserProfileDropdown/index.js +1 -1
- package/dist/components/navigation/WorkspaceDropdown/index.js +1 -1
- package/dist/components/navigation/index.js +15 -15
- package/dist/components/primitives/AspectRatio/index.js +1 -1
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +3 -3
- package/dist/components/primitives/ConfirmButton/index.js +5 -5
- package/dist/components/primitives/ProgressBar/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +2 -2
- package/dist/components/primitives/StatusIndicator/index.js +1 -1
- package/dist/components/primitives/Tag/index.js +1 -1
- package/dist/components/primitives/Toggle/index.js +1 -1
- package/dist/components/primitives/index.js +18 -18
- package/dist/components/workflow/ApprovalFlow/index.js +4 -4
- package/dist/components/workflow/CommentSystem/index.js +4 -4
- package/dist/components/workflow/Dashboard/index.js +4 -4
- package/dist/components/workflow/DashboardBuilder/index.js +4 -4
- package/dist/components/workflow/KanbanBoard/index.js +4 -4
- package/dist/components/workflow/ReportGenerator/index.js +4 -4
- package/dist/components/workflow/TaskStatus/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +4 -4
- package/dist/components/workflow/index.js +15 -15
- package/dist/index.d.ts +156 -50
- package/dist/index.js +140 -140
- package/dist/styles.css +23 -0
- package/package.json +2 -2
- package/dist/chunk-23BHD62H.js.map +0 -1
- package/dist/chunk-2UGDLAYC.js.map +0 -1
- package/dist/chunk-33JGPMUW.js.map +0 -1
- package/dist/chunk-3WOGOTOV.js.map +0 -1
- package/dist/chunk-4MQNDQ4O.js.map +0 -1
- package/dist/chunk-65YSTUD2.js.map +0 -1
- package/dist/chunk-FSMHI7DW.js.map +0 -1
- package/dist/chunk-GAP3OZR7.js +0 -223
- package/dist/chunk-GAP3OZR7.js.map +0 -1
- package/dist/chunk-HKXQLWGR.js.map +0 -1
- package/dist/chunk-IBVCSZCH.js.map +0 -1
- package/dist/chunk-ICAQYWCX.js +0 -153
- package/dist/chunk-ICAQYWCX.js.map +0 -1
- package/dist/chunk-IRKDMISK.js.map +0 -1
- package/dist/chunk-J62TFQHR.js.map +0 -1
- package/dist/chunk-KPNNSUXM.js.map +0 -1
- package/dist/chunk-KR3IVNQH.js.map +0 -1
- package/dist/chunk-OWIFNJXZ.js.map +0 -1
- package/dist/chunk-PLLJNHWU.js.map +0 -1
- package/dist/chunk-R4UOT76L.js.map +0 -1
- package/dist/chunk-SHS6EGWS.js +0 -226
- package/dist/chunk-SHS6EGWS.js.map +0 -1
- package/dist/chunk-TNROOKX3.js.map +0 -1
- package/dist/chunk-UFRMZ3M6.js.map +0 -1
- package/dist/chunk-VFALJSXB.js.map +0 -1
- package/dist/chunk-VPNFYQBL.js.map +0 -1
- package/dist/chunk-XD5LE64P.js +0 -311
- package/dist/chunk-XD5LE64P.js.map +0 -1
- package/dist/chunk-XV6NXXXP.js +0 -206
- package/dist/chunk-XV6NXXXP.js.map +0 -1
- package/dist/chunk-YWA63YN3.js.map +0 -1
- package/dist/chunk-Z3FL7LEK.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/RadioButton/RadioButton.tsx","../src/components/forms/RadioButton/RadioButton.variants.ts"],"names":[],"mappings":";;;;;;AAqBA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,cAAoB,KAAA,CAAA,KAAA,EAAM;AAChC,EAAA,MAAM,UAAU,EAAA,IAAM,WAAA;AACtB,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,cAAA,IAAkB,KAAA;AAE3D,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,gCAAA;AAAA,MACV,WAAA,EAAU,sBAAA;AAAA,MACV,YAAA,EAAY,YAAY,SAAA,GAAY,WAAA;AAAA,MAEpC,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kDAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACT,iFAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,EAAA,EAAI,OAAA;AAAA,cACJ,IAAA,EAAK,OAAA;AAAA,cACJ,GAAG;AAAA;AAAA,WACN;AAAA,0BACA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,sBAAA,CAAuB,EAAE,IAAA,EAAM,CAAA;AAAA,gBAC/B,0HAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,WAAA,EAAU,qBAAA;AAAA,cAEV,QAAA,kBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,2BAAA,CAA4B,EAAE,IAAA,EAAM,CAAA;AAAA,oBACpC;AAAA,mBACF;AAAA,kBACA,WAAA,EAAU,wBAAA;AAAA,kBAEV,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gEAAA,EAAiE;AAAA;AAAA;AAClF;AAAA;AACF,SAAA,EACF,CAAA;AAAA,QACC,KAAA,oBACC,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,6DAAA;AAAA,cACA,2DAAA;AAAA,cACA,SAAS,IAAA,IAAQ,WAAA;AAAA,cACjB,SAAS,IAAA,IAAQ;AAAA,aACnB;AAAA,YACA,WAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,OAAA;AAAA,YAER,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;ACnFO,IAAM,mBAAA,GAAsB,GAAA;AAAA,EACjC;AAAA,IACE,uHAAA;AAAA,IACA,6CAAA;AAAA,IACA,+EAAA;AAAA,IACA,2CAAA;AAAA,IACA,wGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,UAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAEO,IAAM,4BAAA,GAA+B,GAAA;AAAA,EAC1C;AAAA,IACE,sFAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,UAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAEO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC,kDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,UAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAEO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC,sFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,cAAA;AAAA,QACJ,EAAA,EAAI,cAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ","file":"chunk-ICAQYWCX.js","sourcesContent":["import type { RadioButtonProps } from \"./RadioButton.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n radioGroupIndicatorVariants,\n radioGroupItemVariants,\n} from \"../RadioGroup/RadioGroup.variants\"\n\n/**\n * A standalone radio button component using native HTML input.\n * For simple use cases without RadioGroup.\n * Visuals are consistent with RadioGroup.\n *\n * @example\n * ```tsx\n * <RadioButton name=\"option\" value=\"1\" label=\"Option 1\" />\n * <RadioButton name=\"option\" value=\"2\" label=\"Option 2\" />\n * ```\n */\nfunction RadioButton({\n className,\n size = \"md\",\n label,\n id,\n ref,\n ...props\n}: RadioButtonProps) {\n const generatedId = React.useId()\n const inputId = id ?? generatedId\n const isChecked = props.checked ?? props.defaultChecked ?? false\n\n return (\n <div\n className=\"inline-flex items-center gap-2\"\n data-slot=\"radio-button-wrapper\"\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n >\n <div className=\"relative inline-flex items-center justify-center\">\n <input\n ref={ref}\n className={cn(\n \"peer absolute inset-0 z-10 cursor-pointer opacity-0 disabled:cursor-not-allowed\",\n className\n )}\n id={inputId}\n type=\"radio\"\n {...props}\n />\n <div\n className={cn(\n radioGroupItemVariants({ size }),\n \"peer-checked:border-primary peer-focus-visible:border-ring peer-focus-visible:ring-ring/50 peer-focus-visible:ring-[3px]\",\n \"peer-checked:[&_[data-slot=radio-button-indicator]]:flex\"\n )}\n data-slot=\"radio-button-visual\"\n >\n <div\n className={cn(\n radioGroupIndicatorVariants({ size }),\n \"hidden items-center justify-center bg-transparent\"\n )}\n data-slot=\"radio-button-indicator\"\n >\n <div className=\"size-full rounded-full bg-[color:var(--radio-indicator-color)]\" />\n </div>\n </div>\n </div>\n {label && (\n <label\n className={cn(\n \"text-sm font-medium leading-none cursor-pointer select-none\",\n \"peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n size === \"lg\" && \"text-base\",\n size === \"sm\" && \"text-xs\"\n )}\n data-slot=\"radio-button-label\"\n htmlFor={inputId}\n >\n {label}\n </label>\n )}\n </div>\n )\n}\n\nexport { RadioButton }\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nexport const radioButtonVariants = cva(\n [\n \"peer appearance-none shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none cursor-pointer\",\n \"border-input bg-background dark:bg-input/30\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"checked:border-primary checked:bg-primary\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n ],\n {\n variants: {\n size: {\n sm: \"size-3.5\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const radioButtonIndicatorVariants = cva(\n [\n \"pointer-events-none absolute rounded-full bg-primary-foreground transition-transform\",\n \"scale-0 peer-checked:scale-100\",\n ],\n {\n variants: {\n size: {\n sm: \"size-1.5\",\n md: \"size-2\",\n lg: \"size-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const radioButtonWrapperVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n sm: \"size-3.5\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const radioButtonLabelVariants = cva(\n \"cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"text-sm ml-2\",\n md: \"text-sm ml-2\",\n lg: \"text-base ml-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type RadioButtonVariantProps = VariantProps<typeof radioButtonVariants>\nexport type RadioButtonIndicatorVariantProps = VariantProps<typeof radioButtonIndicatorVariants>\nexport type RadioButtonWrapperVariantProps = VariantProps<typeof radioButtonWrapperVariants>\nexport type RadioButtonLabelVariantProps = VariantProps<typeof radioButtonLabelVariants>\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/feedback/Alert/Alert.variants.ts","../src/components/feedback/Alert/Alert.tsx"],"names":[],"mappings":";;;;AAKO,IAAM,aAAA,GAAgB,GAAA;AAAA,EAC3B,gWAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,4IAAA;AAAA,QACT,WAAA,EACE,iQAAA;AAAA,QACF,IAAA,EAAM,qOAAA;AAAA,QACN,OAAA,EACE,iPAAA;AAAA,QACF,OAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;ACfA,SAAS,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,GAAG,OAAM,EAAe;AAC3D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MACnD,WAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACJ,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoB;AAC5D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,6DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0B;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,mBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-IRKDMISK.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Alert variant styles using CVA\n */\nexport const alertVariants = cva(\n \"relative w-full rounded-[var(--alert-root-radius)] border px-[var(--alert-root-padding-x)] py-[var(--alert-root-padding-y)] text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-[var(--alert-root-gap)] gap-y-0.5 items-start [&>svg]:size-[var(--alert-icon-size)] [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-[color:var(--alert-variant-default-bg)] text-[color:var(--alert-variant-default-fg)] border-[color:var(--alert-variant-default-border)]\",\n destructive:\n \"bg-[color:var(--alert-variant-destructive-bg)] text-[color:var(--alert-variant-destructive-fg)] border-[color:var(--alert-variant-destructive-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-destructive-fg)]/90\",\n info: \"bg-[color:var(--alert-variant-info-bg)] text-[color:var(--alert-variant-info-fg)] border-[color:var(--alert-variant-info-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-info-fg)]/90\",\n success:\n \"bg-[color:var(--alert-variant-success-bg)] text-[color:var(--alert-variant-success-fg)] border-[color:var(--alert-variant-success-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-success-fg)]/90\",\n warning:\n \"bg-[color:var(--alert-variant-warning-bg)] text-[color:var(--alert-variant-warning-fg)] border-[color:var(--alert-variant-warning-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-warning-fg)]/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n","import type {\n AlertDescriptionProps,\n AlertProps,\n AlertTitleProps,\n} from \"./Alert.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { alertVariants } from \"./Alert.variants\"\n\nfunction Alert({ className, variant, ...props }: AlertProps) {\n return (\n <div\n className={cn(alertVariants({ variant }), className)}\n data-slot=\"alert\"\n role=\"alert\"\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return (\n <div\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n data-slot=\"alert-title\"\n {...props}\n />\n )\n}\n\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n data-slot=\"alert-description\"\n {...props}\n />\n )\n}\n\nexport { Alert, AlertDescription, AlertTitle, alertVariants }\nexport type { AlertDescriptionProps, AlertProps, AlertTitleProps }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/SplitButton/SplitButton.variants.ts","../src/components/primitives/SplitButton/SplitButton.tsx"],"names":[],"mappings":";;;;;;;AAKO,IAAM,mBAAA,GAAsB,GAAA;AAAA,EACjC,2UAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACE,mJAAA;AAAA,QACF,OAAA,EACE,uIAAA;AAAA,QACF,SAAA,EACE,8DAAA;AAAA,QACF,KAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EACE,wGAAA;AAAA,QACF,EAAA,EAAI,2FAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC,+RAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACE,mJAAA;AAAA,QACF,OAAA,EACE,uIAAA;AAAA,QACF,SAAA,EACE,8DAAA;AAAA,QACF,KAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EACE,6EAAA;AAAA,QACF,EAAA,EAAI,oCAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AC1CA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,EAAW,MAAA;AAAA,EACX,gBAAA,GAAmB,WAAA;AAAA,EACnB,WAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAG/B,EAAA,MAAM,aAAA,GAAsB,kBAAY,OAAgC;AAAA,IACtE,GAAI,MAAA,GAAS,EAAE,EAAA,EAAI,MAAA,KAAW,EAAC;AAAA,IAC/B,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,IACpB,SAAA,EAAW;AAAA,GACb,CAAA,EAAI,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAGrB,EAAA,MAAM,WAAA,GAAoB,KAAA,CAAA,WAAA;AAAA,IACxB,CAAC,KAAA,KAA+C;AAC9C,MAAA,OAAA,GAAU,KAAA,EAAO,eAAe,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,CAAC,SAAS,aAAa;AAAA,GACzB;AAGA,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,cAAA;AAAA,YACV,WAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QACC,WAAA,IAAe;AAAA,OAAA,EAClB,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,QAAA,wBACE,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAA,EAAU,aAChC,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,MAED;AAAA,KAAA,EACH,CAAA;AAAA,EAEJ,CAAA;AAGA,EAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,EAA2B,KAAA,KAAkB;AAEnE,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,QAAA,GAAW,MAAA,GAAY,IAAA,CAAK,OAAA;AAEzD,IAAA,uBACE,IAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QAEE,GAAI,eAAA,GAAkB,EAAE,OAAA,EAAS,eAAA,KAAoB,EAAC;AAAA,QACvD,QAAA,EAAU,KAAK,QAAA,IAAY,KAAA;AAAA,QAC3B,OAAA,EAAS,KAAK,OAAA,IAAW,SAAA;AAAA,QAExB,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,IAAA;AAAA,0BACN,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,UACjB,IAAA,CAAK,QAAA,oBACJ,GAAA,CAAC,oBAAA,EAAA,EAAsB,eAAK,QAAA,EAAS;AAAA;AAAA,OAAA;AAAA,MARlC;AAAA,KAUP;AAAA,EAEJ,CAAA;AAGA,EAAA,MAAM,YAAA,GACJ,OAAA,KAAY,SAAA,IAAa,OAAA,KAAY,UACjC,wBAAA,GACA,4BAAA;AAEN,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,MACtC,SAAA,EAAS,MAAA;AAAA,MACT,WAAA,EAAU,cAAA;AAAA,MACT,GAAG,KAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,mBAAA,CAAoB,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,cACrC;AAAA,aACF;AAAA,YACA,aAAW,OAAA,IAAW,MAAA;AAAA,YACtB,iBAAe,UAAA,IAAc,MAAA;AAAA,YAC7B,gBAAc,OAAA,IAAW,MAAA;AAAA,YACzB,WAAA,EAAU,sBAAA;AAAA,YACV,QAAA,EAAU,UAAA;AAAA,YACV,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,WAAA;AAAA,YAER,QAAA,EAAA,oBAAA;AAAqB;AAAA,SACxB;AAAA,wBAGA,IAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAA0B,IAAA,EAAY,YAAA,EAClD,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,SAAO,IAAA,EAC1B,QAAA,kBAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,0BAAA,CAAgB,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,gBACjC,yDAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,iBAAe,UAAA,IAAc,MAAA;AAAA,cAC7B,YAAA,EAAY,gBAAA;AAAA,cACZ,WAAA,EAAU,sBAAA;AAAA,cACV,QAAA,EAAU,UAAA;AAAA,cACV,IAAA,EAAK,QAAA;AAAA,cAEL,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,WAClC,EACF,CAAA;AAAA,8BACC,mBAAA,EAAA,EAAoB,KAAA,EAAM,OACxB,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,cAAc,CAAA,EAC/B;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ","file":"chunk-J62TFQHR.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Primary action button variants (left half of SplitButton).\n */\nexport const splitButtonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n primary: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n },\n size: {\n md:\n \"h-[var(--button-size-default-h)] px-[var(--button-size-default-px)] py-[var(--button-size-default-py)]\",\n sm: \"h-[var(--button-size-sm-h)] gap-[var(--button-size-sm-gap)] px-[var(--button-size-sm-px)]\",\n lg: \"h-[var(--button-size-lg-h)] px-[var(--button-size-lg-px)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\n/**\n * Trigger button variants (right half of SplitButton — icon-only chevron).\n */\nexport const splitButtonTriggerVariants = cva(\n \"inline-flex items-center justify-center transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n primary: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n },\n size: {\n md:\n \"h-[var(--button-size-default-h)] px-[var(--split-button-trigger-padding-x)]\",\n sm: \"h-[var(--button-size-sm-h)] px-1.5\",\n lg: \"h-[var(--button-size-lg-h)] px-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nexport type SplitButtonVariantProps = VariantProps<typeof splitButtonVariants>\nexport type SplitButtonTriggerVariantProps = VariantProps<\n typeof splitButtonTriggerVariants\n>\n","\"use client\"\n\nimport type {\n SplitButtonEventPayload,\n SplitButtonMenuItem,\n SplitButtonProps,\n} from \"./SplitButton.types\"\n\nimport { ChevronDown, LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from \"../../navigation/DropdownMenu\"\nimport {\n splitButtonVariants,\n splitButtonTriggerVariants as triggerVariants,\n} from \"./SplitButton.variants\"\n\nfunction SplitButton({\n className,\n variant,\n size,\n children,\n onClick,\n menuItems,\n loading = false,\n loadingText,\n disabled,\n leftIcon,\n \"data-id\": dataId,\n triggerAriaLabel = \"Open menu\",\n defaultOpen,\n open,\n onOpenChange,\n ...props\n}: SplitButtonProps) {\n const isDisabled = disabled ?? loading\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): SplitButtonEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isLoading: loading,\n }), [dataId, loading])\n\n // Wrapped event handler that emits SplitButtonEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event, createPayload())\n },\n [onClick, createPayload]\n )\n\n // Determine what to render as primary button content\n const renderPrimaryContent = () => {\n if (loading) {\n return (\n <>\n <LoaderCircle\n aria-hidden=\"true\"\n className=\"animate-spin\"\n data-slot=\"loading-icon\"\n />\n {loadingText ?? children}\n </>\n )\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n </>\n )\n }\n\n // Render a single menu item\n const renderMenuItem = (item: SplitButtonMenuItem, index: number) => {\n // Guard onClick - don't call if item is disabled\n const handleItemClick = item.disabled ? undefined : item.onClick\n\n return (\n <DropdownMenuItem\n key={index}\n {...(handleItemClick ? { onClick: handleItemClick } : {})}\n disabled={item.disabled ?? false}\n variant={item.variant ?? \"default\"}\n >\n {item.icon}\n <span>{item.label}</span>\n {item.shortcut && (\n <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>\n )}\n </DropdownMenuItem>\n )\n }\n\n // Divider class for visual separation between buttons\n const dividerClass =\n variant === \"outline\" || variant === \"ghost\"\n ? \"border-l border-border\"\n : \"border-l border-current/20\"\n\n return (\n <div\n className={cn(\"inline-flex\", className)}\n data-id={dataId}\n data-slot=\"split-button\"\n {...props}\n >\n {/* Primary action button */}\n <button\n className={cn(\n splitButtonVariants({ variant, size }),\n \"rounded-l-[var(--button-radius-default)] rounded-r-none\"\n )}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n data-loading={loading || undefined}\n data-slot=\"split-button-primary\"\n disabled={isDisabled}\n type=\"button\"\n onClick={handleClick}\n >\n {renderPrimaryContent()}\n </button>\n\n {/* Dropdown trigger button */}\n <DropdownMenu defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}>\n <DropdownMenuTrigger asChild>\n <button\n className={cn(\n triggerVariants({ variant, size }),\n \"rounded-r-[var(--button-radius-default)] rounded-l-none\",\n dividerClass\n )}\n aria-disabled={isDisabled || undefined}\n aria-label={triggerAriaLabel}\n data-slot=\"split-button-trigger\"\n disabled={isDisabled}\n type=\"button\"\n >\n <ChevronDown className=\"size-4\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {menuItems.map(renderMenuItem)}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )\n}\n\nexport { SplitButton, splitButtonVariants }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/navigation/Pagination/Pagination.variants.ts","../src/components/navigation/Pagination/Pagination.tsx"],"names":[],"mappings":"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","file":"chunk-KPNNSUXM.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Pagination root variant styles\n */\nexport const paginationVariants = cva([\n \"mx-auto flex w-full justify-center\",\n])\n\n/**\n * PaginationContent variant styles\n */\nexport const paginationContentVariants = cva([\n \"flex flex-row items-center gap-[var(--pagination-content-gap)]\",\n])\n\n/**\n * PaginationPrevious variant styles\n */\nexport const paginationPreviousVariants = cva([\n \"gap-[var(--pagination-button-gap)] px-[var(--pagination-button-padding-x)] sm:pl-[var(--pagination-button-padding-x)]\",\n])\n\n/**\n * PaginationNext variant styles\n */\nexport const paginationNextVariants = cva([\n \"gap-[var(--pagination-button-gap)] px-[var(--pagination-button-padding-x)] sm:pr-[var(--pagination-button-padding-x)]\",\n])\n\n/**\n * PaginationEllipsis variant styles\n */\nexport const paginationEllipsisVariants = cva([\n \"flex size-[var(--pagination-ellipsis-size)] items-center justify-center\",\n])\n","import type {\n PaginationContentProps,\n PaginationEllipsisProps,\n PaginationItemProps,\n PaginationLinkProps,\n PaginationNextProps,\n PaginationPreviousProps,\n PaginationProps,\n} from \"./Pagination.types\"\n\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { buttonVariants } from \"../../primitives/Button\"\nimport {\n paginationContentVariants,\n paginationEllipsisVariants,\n paginationNextVariants,\n paginationPreviousVariants,\n paginationVariants,\n} from \"./Pagination.variants\"\n\n/**\n * Pagination - A navigation component for paginated content.\n *\n * Provides accessible navigation with previous/next buttons and page links.\n *\n * @example\n * <Pagination>\n * <PaginationContent>\n * <PaginationItem>\n * <PaginationPrevious href=\"#\" />\n * </PaginationItem>\n * <PaginationItem>\n * <PaginationLink href=\"#\">1</PaginationLink>\n * </PaginationItem>\n * <PaginationItem>\n * <PaginationLink href=\"#\" isActive>2</PaginationLink>\n * </PaginationItem>\n * <PaginationItem>\n * <PaginationNext href=\"#\" />\n * </PaginationItem>\n * </PaginationContent>\n * </Pagination>\n */\nfunction Pagination({ className, ...props }: PaginationProps) {\n return (\n <nav\n aria-label=\"pagination\"\n className={cn(paginationVariants(), className)}\n data-slot=\"pagination\"\n role=\"navigation\"\n {...props}\n />\n )\n}\n\n/**\n * PaginationContent - Container for pagination items.\n */\nfunction PaginationContent({\n className,\n ...props\n}: PaginationContentProps) {\n return (\n <ul\n className={cn(paginationContentVariants(), className)}\n data-slot=\"pagination-content\"\n {...props}\n />\n )\n}\n\n/**\n * PaginationItem - Wrapper for individual pagination elements.\n */\nfunction PaginationItem({ ...props }: PaginationItemProps) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\n/**\n * PaginationLink - A link to a specific page.\n *\n * Use isActive to indicate the current page.\n */\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n aria-current={isActive ? \"page\" : undefined}\n data-active={isActive}\n data-slot=\"pagination-link\"\n {...props}\n />\n )\n}\n\n/**\n * PaginationPrevious - Link to the previous page.\n *\n * Includes a chevron icon and \"Previous\" text on larger screens.\n */\nfunction PaginationPrevious({\n className,\n ...props\n}: PaginationPreviousProps) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n className={cn(paginationPreviousVariants(), className)}\n size=\"default\"\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n )\n}\n\n/**\n * PaginationNext - Link to the next page.\n *\n * Includes a chevron icon and \"Next\" text on larger screens.\n */\nfunction PaginationNext({\n className,\n ...props\n}: PaginationNextProps) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n className={cn(paginationNextVariants(), className)}\n size=\"default\"\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n )\n}\n\n/**\n * PaginationEllipsis - Indicates more pages between visible page links.\n */\nfunction PaginationEllipsis({\n className,\n ...props\n}: PaginationEllipsisProps) {\n return (\n <span\n aria-hidden\n className={cn(paginationEllipsisVariants(), className)}\n data-slot=\"pagination-ellipsis\"\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Lightbox/Lightbox.tsx"],"names":[],"mappings":"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","file":"chunk-KR3IVNQH.js","sourcesContent":["\"use client\"\n\nimport type { LightboxImage, LightboxProps } from \"./Lightbox.types\"\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport {\n ChevronLeft,\n ChevronRight,\n Download,\n X,\n ZoomIn,\n ZoomOut,\n} from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\n// Shared button styles\nconst controlButtonBase = cn(\n \"flex items-center justify-center rounded-full\",\n \"bg-white/10 text-white transition-colors hover:bg-white/20\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50\"\n)\n\nconst controlButtonSmall = cn(controlButtonBase, \"size-10\")\nconst controlButtonLarge = cn(controlButtonBase, \"size-12\")\nconst controlButtonDisabled = \"disabled:cursor-not-allowed disabled:opacity-30\"\n\n/**\n * Lightbox - A full-screen media viewer with navigation, zoom, and captions\n *\n * @example\n * ```tsx\n * const [open, setOpen] = useState(false)\n * const images = [\n * { id: '1', src: '/img1.jpg', alt: 'Image 1', caption: 'First image' },\n * { id: '2', src: '/img2.jpg', alt: 'Image 2', caption: 'Second image' },\n * ]\n *\n * <Lightbox\n * images={images}\n * open={open}\n * onOpenChange={setOpen}\n * showCaption\n * enableZoom\n * />\n * ```\n */\nfunction Lightbox({\n className,\n enableDownload = false,\n enableZoom = true,\n images,\n initialIndex = 0,\n loop = true,\n onClose,\n onIndexChange,\n onOpenChange,\n open,\n showCaption = true,\n showCounter = true,\n showThumbnails = false,\n}: LightboxProps) {\n // Use a key to reset state when dialog opens at a specific index\n const [stateKey, setStateKey] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(initialIndex)\n const [zoom, setZoom] = React.useState(1)\n const [imageLoading, setImageLoading] = React.useState(true)\n const [imageError, setImageError] = React.useState(false)\n\n // Track previous open state to detect when dialog opens\n const prevOpenRef = React.useRef(open)\n\n // Reset state when dialog opens (not on every render)\n /* eslint-disable react-you-might-not-need-an-effect/no-derived-state, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Intentional state reset on open */\n React.useEffect(() => {\n if (open && !prevOpenRef.current) {\n // Dialog just opened - reset to initialIndex\n setCurrentIndex(initialIndex)\n setZoom(1)\n setImageLoading(true)\n setImageError(false)\n setStateKey((k) => k + 1)\n }\n prevOpenRef.current = open\n }, [open, initialIndex])\n /* eslint-enable react-you-might-not-need-an-effect/no-derived-state, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n\n // Reset loading state when the image changes\n /* eslint-disable react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, react-you-might-not-need-an-effect/no-chain-state-updates, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Image loading state sync */\n React.useEffect(() => {\n setImageLoading(true)\n setImageError(false)\n }, [currentIndex])\n /* eslint-enable react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, react-you-might-not-need-an-effect/no-chain-state-updates, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n\n const currentImage: LightboxImage | undefined = images[currentIndex]\n const hasMultipleImages = images.length > 1\n\n const canGoNext = loop || currentIndex < images.length - 1\n const canGoPrev = loop || currentIndex > 0\n\n const goNext = React.useCallback(() => {\n if (!canGoNext) return\n setZoom(1)\n const nextIndex =\n currentIndex < images.length - 1\n ? currentIndex + 1\n : loop\n ? 0\n : currentIndex\n setCurrentIndex(nextIndex)\n onIndexChange?.(nextIndex)\n }, [currentIndex, images.length, loop, canGoNext, onIndexChange])\n\n const goPrev = React.useCallback(() => {\n if (!canGoPrev) return\n setZoom(1)\n const prevIndex =\n currentIndex > 0\n ? currentIndex - 1\n : loop\n ? images.length - 1\n : currentIndex\n setCurrentIndex(prevIndex)\n onIndexChange?.(prevIndex)\n }, [currentIndex, images.length, loop, canGoPrev, onIndexChange])\n\n const goToIndex = React.useCallback(\n (index: number) => {\n if (index >= 0 && index < images.length) {\n setZoom(1)\n setCurrentIndex(index)\n onIndexChange?.(index)\n }\n },\n [images.length, onIndexChange]\n )\n\n const handleClose = React.useCallback(() => {\n onOpenChange?.(false)\n onClose?.()\n }, [onOpenChange, onClose])\n\n const handleZoomIn = React.useCallback(() => {\n setZoom((prev) => Math.min(3, prev + 0.25))\n }, [])\n\n const handleZoomOut = React.useCallback(() => {\n setZoom((prev) => Math.max(0.5, prev - 0.25))\n }, [])\n\n const handleDownload = React.useCallback(() => {\n if (!currentImage) return\n\n const link = document.createElement(\"a\")\n link.href = currentImage.src\n link.download = currentImage.alt || `image-${currentImage.id}`\n link.target = \"_blank\"\n link.rel = \"noopener noreferrer\"\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }, [currentImage])\n\n const handleImageLoad = React.useCallback(() => {\n setImageLoading(false)\n setImageError(false)\n }, [])\n\n const handleImageError = React.useCallback(() => {\n setImageLoading(false)\n setImageError(true)\n }, [])\n\n // Keyboard navigation\n React.useEffect(() => {\n if (!open) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case \"ArrowLeft\":\n event.preventDefault()\n goPrev()\n break\n case \"ArrowRight\":\n event.preventDefault()\n goNext()\n break\n case \"Escape\":\n event.preventDefault()\n handleClose()\n break\n case \"+\":\n case \"=\":\n if (enableZoom) {\n event.preventDefault()\n handleZoomIn()\n }\n break\n case \"-\":\n if (enableZoom) {\n event.preventDefault()\n handleZoomOut()\n }\n break\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [open, goNext, goPrev, handleClose, enableZoom, handleZoomIn, handleZoomOut])\n\n if (!currentImage) return null\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/90\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\n )}\n data-slot=\"lightbox-overlay\"\n />\n <DialogPrimitive.Content\n key={stateKey}\n className={cn(\n \"fixed inset-0 z-50 flex flex-col\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"duration-200\",\n className\n )}\n aria-describedby={currentImage.caption ? \"lightbox-caption\" : undefined}\n aria-label={`Lightbox: ${currentImage.alt}`}\n data-slot=\"lightbox\"\n >\n {/* Hide dialog title for screen readers but provide accessible label */}\n <DialogPrimitive.Title className=\"sr-only\">\n Image Viewer\n </DialogPrimitive.Title>\n <DialogPrimitive.Description className=\"sr-only\">\n {`Viewing image ${String(currentIndex + 1)} of ${String(images.length)}`}\n </DialogPrimitive.Description>\n\n {/* Top controls bar */}\n <div\n className=\"absolute top-0 left-0 right-0 z-10 flex items-center justify-between p-4\"\n data-slot=\"lightbox-header\"\n >\n {/* Counter */}\n {showCounter && hasMultipleImages ? (\n <div\n aria-live=\"polite\"\n className=\"text-sm text-white/70\"\n data-slot=\"lightbox-counter\"\n >\n {currentIndex + 1} / {images.length}\n </div>\n ) : (\n <div />\n )}\n\n {/* Action buttons */}\n <div className=\"flex items-center gap-2\">\n {enableDownload && (\n <button\n aria-label=\"Download image\"\n className={controlButtonSmall}\n data-slot=\"lightbox-download\"\n type=\"button\"\n onClick={handleDownload}\n >\n <Download className=\"size-5\" />\n </button>\n )}\n <DialogPrimitive.Close asChild>\n <button\n aria-label=\"Close lightbox\"\n className={controlButtonSmall}\n data-slot=\"lightbox-close\"\n type=\"button\"\n >\n <X className=\"size-6\" />\n </button>\n </DialogPrimitive.Close>\n </div>\n </div>\n\n {/* Navigation arrows */}\n {hasMultipleImages && (\n <>\n <button\n className={cn(\n \"absolute left-4 top-1/2 z-10 -translate-y-1/2\",\n controlButtonLarge,\n controlButtonDisabled\n )}\n aria-label=\"Previous image\"\n data-slot=\"lightbox-prev\"\n disabled={!canGoPrev}\n type=\"button\"\n onClick={goPrev}\n >\n <ChevronLeft className=\"size-8\" />\n </button>\n <button\n className={cn(\n \"absolute right-4 top-1/2 z-10 -translate-y-1/2\",\n controlButtonLarge,\n controlButtonDisabled\n )}\n aria-label=\"Next image\"\n data-slot=\"lightbox-next\"\n disabled={!canGoNext}\n type=\"button\"\n onClick={goNext}\n >\n <ChevronRight className=\"size-8\" />\n </button>\n </>\n )}\n\n {/* Main image area */}\n <div\n className={cn(\n \"flex flex-1 items-center justify-center\",\n showThumbnails ? \"pb-24\" : \"pb-20\",\n \"pt-16 px-16\"\n )}\n data-slot=\"lightbox-image-container\"\n >\n {imageLoading && (\n <div\n className=\"absolute inset-0 flex items-center justify-center\"\n data-loading=\"true\"\n >\n <div className=\"size-12 animate-spin rounded-full border-4 border-white/20 border-t-white\" />\n </div>\n )}\n {imageError ? (\n <div\n className=\"flex flex-col items-center justify-center gap-4 text-white/70\"\n data-error=\"true\"\n >\n <X className=\"size-16 text-white/40\" />\n <span>Failed to load image</span>\n </div>\n ) : (\n <img\n className={cn(\n \"max-h-full max-w-full object-contain transition-all duration-200\",\n imageLoading ? \"opacity-0\" : \"opacity-100\"\n )}\n alt={currentImage.alt}\n data-slot=\"lightbox-image\"\n src={currentImage.src}\n style={{ transform: `scale(${String(zoom)})` }}\n onError={handleImageError}\n onLoad={handleImageLoad}\n />\n )}\n </div>\n\n {/* Bottom controls bar */}\n <div\n className={cn(\n \"absolute bottom-0 left-0 right-0 z-10 flex flex-col items-center gap-3 p-4\",\n showThumbnails ? \"pb-4\" : \"pb-6\"\n )}\n data-slot=\"lightbox-footer\"\n >\n {/* Zoom controls */}\n {enableZoom && (\n <div\n className=\"flex items-center gap-2\"\n data-slot=\"lightbox-zoom-controls\"\n >\n <button\n aria-label=\"Zoom out\"\n className={cn(controlButtonSmall, controlButtonDisabled)}\n data-slot=\"lightbox-zoom-out\"\n disabled={zoom <= 0.5}\n type=\"button\"\n onClick={handleZoomOut}\n >\n <ZoomOut className=\"size-5\" />\n </button>\n <span className=\"min-w-[4ch] text-center text-sm text-white/70\">\n {Math.round(zoom * 100)}%\n </span>\n <button\n aria-label=\"Zoom in\"\n className={cn(controlButtonSmall, controlButtonDisabled)}\n data-slot=\"lightbox-zoom-in\"\n disabled={zoom >= 3}\n type=\"button\"\n onClick={handleZoomIn}\n >\n <ZoomIn className=\"size-5\" />\n </button>\n </div>\n )}\n\n {/* Caption */}\n {showCaption && currentImage.caption && (\n <p\n className=\"text-center text-sm text-white/90\"\n data-slot=\"lightbox-caption\"\n id=\"lightbox-caption\"\n >\n {currentImage.caption}\n </p>\n )}\n\n {/* Thumbnails strip */}\n {showThumbnails && hasMultipleImages && (\n <div\n aria-label=\"Image thumbnails\"\n className=\"flex max-w-full gap-2 overflow-x-auto px-4 py-2\"\n data-slot=\"lightbox-thumbnails\"\n role=\"tablist\"\n >\n {images.map((image, index) => (\n <button\n key={image.id}\n className={cn(\n \"relative size-16 shrink-0 overflow-hidden rounded-md transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50\",\n index === currentIndex\n ? \"ring-2 ring-white ring-offset-2 ring-offset-black/90\"\n : \"opacity-60 hover:opacity-100\"\n )}\n aria-label={`View ${image.alt}`}\n aria-selected={index === currentIndex}\n data-slot=\"lightbox-thumbnail\"\n role=\"tab\"\n type=\"button\"\n onClick={() => {\n goToIndex(index)\n }}\n >\n <img\n alt={image.alt}\n className=\"size-full object-cover\"\n loading=\"lazy\"\n src={image.thumbnail ?? image.src}\n />\n </button>\n ))}\n </div>\n )}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nexport { Lightbox }\nexport type { LightboxImage, LightboxProps }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/StatusIndicator/StatusIndicator.tsx"],"names":[],"mappings":"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","file":"chunk-OWIFNJXZ.js","sourcesContent":["\"use client\"\n\nimport type { StatusIndicatorProps } from \"./StatusIndicator.types\"\n\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\n\n// Extracted to satisfy sonarjs/no-duplicate-string — each appears multiple times in compoundVariants.\nconst FULL_H = \"h-full\"\nconst FULL_W = \"w-full\"\nconst SHAPE_BAR_V = \"bar-vertical\" as const\nconst SHAPE_BAR_H = \"bar-horizontal\" as const\n\nconst statusIndicatorVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n success: \"bg-[color:var(--status-indicator-dot-color-success)]\",\n warning: \"bg-[color:var(--status-indicator-dot-color-warning)]\",\n error: \"bg-[color:var(--status-indicator-dot-color-error)]\",\n destructive: \"bg-[color:var(--status-indicator-dot-color-destructive)]\",\n info: \"bg-[color:var(--status-indicator-dot-color-info)]\",\n neutral: \"bg-[color:var(--status-indicator-dot-color-neutral)]\",\n },\n shape: {\n dot: \"rounded-[var(--status-indicator-root-border-radius)]\",\n \"bar-vertical\": \"rounded-xs\",\n \"bar-horizontal\": \"rounded-xs\",\n },\n size: {\n xs: \"\",\n sm: \"\",\n default: \"\",\n lg: \"\",\n xl: \"\",\n \"2xl\": \"\",\n },\n },\n compoundVariants: [\n // Dot — uses size for both dimensions\n { shape: \"dot\", size: \"xs\", className: \"size-[var(--status-indicator-dot-size-xs)]\" },\n { shape: \"dot\", size: \"sm\", className: \"size-[var(--status-indicator-dot-size-sm)]\" },\n { shape: \"dot\", size: \"default\", className: \"size-[var(--status-indicator-dot-size-default)]\" },\n { shape: \"dot\", size: \"lg\", className: \"size-[var(--status-indicator-dot-size-lg)]\" },\n { shape: \"dot\", size: \"xl\", className: \"size-[var(--status-indicator-dot-size-xl)]\" },\n { shape: \"dot\", size: \"2xl\", className: \"size-[var(--status-indicator-dot-size-2xl)]\" },\n // Bar-vertical — width is secondary dim (size controls it); height 100% (FULL_H constant below)\n { shape: SHAPE_BAR_V, size: \"xs\", className: `${FULL_H} w-px` },\n { shape: SHAPE_BAR_V, size: \"sm\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"default\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"lg\", className: `${FULL_H} w-[3px]` },\n { shape: SHAPE_BAR_V, size: \"xl\", className: `${FULL_H} w-[4px]` },\n { shape: SHAPE_BAR_V, size: \"2xl\", className: `${FULL_H} w-[6px]` },\n // Bar-horizontal — height is secondary dim; width 100% (FULL_W constant below)\n { shape: SHAPE_BAR_H, size: \"xs\", className: `${FULL_W} h-px` },\n { shape: SHAPE_BAR_H, size: \"sm\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"default\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"lg\", className: `${FULL_W} h-[3px]` },\n { shape: SHAPE_BAR_H, size: \"xl\", className: `${FULL_W} h-[4px]` },\n { shape: SHAPE_BAR_H, size: \"2xl\", className: `${FULL_W} h-[6px]` },\n ],\n defaultVariants: {\n variant: \"neutral\",\n shape: \"dot\",\n size: \"default\",\n },\n})\n\nfunction StatusIndicator({\n className,\n variant,\n shape = \"dot\",\n size,\n pulse = false,\n label,\n labelPosition = \"right\",\n \"aria-label\": ariaLabel,\n ...props\n}: StatusIndicatorProps) {\n // Generate accessible label based on variant if not provided\n const defaultAriaLabel = `Status: ${variant ?? \"neutral\"}`\n const accessibleLabel = ariaLabel ?? (label ? undefined : defaultAriaLabel)\n\n // Bar shapes ignore `label` — they're purely visual (warning in dev when misused).\n const isBar = shape === \"bar-vertical\" || shape === \"bar-horizontal\"\n // eslint-disable-next-line @typescript-eslint/dot-notation -- tsconfig has noPropertyAccessFromIndexSignature; bracket access on process.env is required by CI tsc.\n // `typeof process` guard is required so the library runs in browser bundlers (Vite, etc.) where `process` is not defined globally — without it, the dev-only warning branch throws `ReferenceError: process is not defined`.\n const isProd =\n typeof process !== \"undefined\" && process.env[\"NODE_ENV\"] === \"production\"\n if (isBar && label && !isProd) {\n \n console.warn(\n `<StatusIndicator shape=\"${shape}\"> ignores the \\`label\\` prop. Use shape=\"dot\" to combine with label, or move the label to surrounding context.`,\n )\n }\n\n // Bar shape — render the bar alone (no label, no inline-flex wrapper).\n if (isBar) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape, size }),\n pulse && \"animate-pulse\",\n className,\n )}\n aria-label={accessibleLabel}\n data-shape={shape}\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n />\n )\n }\n\n // If no label, render just the dot\n if (!label) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className=\"sr-only\"\n data-slot=\"status-indicator-dot\"\n >\n {variant ?? \"neutral\"}\n </span>\n </span>\n )\n }\n\n // With label, render inline-flex container\n return (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-[var(--status-indicator-label-gap)]\",\n labelPosition === \"left\" && \"flex-row-reverse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\"\n )}\n aria-hidden=\"true\"\n data-slot=\"status-indicator-dot\"\n />\n <span\n className=\"text-[length:var(--status-indicator-label-font-size)] leading-normal text-[color:var(--status-indicator-label-color)]\"\n data-slot=\"status-indicator-label\"\n >\n {label}\n </span>\n </span>\n )\n}\n\nexport { StatusIndicator, statusIndicatorVariants }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/navigation/Drawer/Drawer.variants.ts","../src/components/navigation/Drawer/Drawer.tsx"],"names":["DrawerPrimitive"],"mappings":"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","file":"chunk-PLLJNHWU.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DrawerOverlay variant styles\n * Semi-transparent backdrop behind the drawer\n */\nexport const drawerOverlayVariants = cva([\n \"fixed inset-0 z-50 bg-[color:var(--drawer-overlay-bg)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n])\n\n/**\n * DrawerContent variant styles\n * Main content container with directional positioning\n */\nexport const drawerContentVariants = cva(\n [\n \"group/drawer-content bg-[color:var(--drawer-content-bg)] fixed z-50 flex h-auto flex-col\",\n ],\n {\n variants: {\n /**\n * Visual styling applied based on direction\n * Note: Direction is controlled by vaul via data-vaul-drawer-direction attribute\n */\n direction: {\n top: [\n \"inset-x-0 top-0 mb-24 max-h-[80vh] rounded-b-[var(--drawer-content-radius)] border-b border-[color:var(--drawer-content-border)]\",\n ],\n bottom: [\n \"inset-x-0 bottom-0 mt-24 max-h-[80vh] rounded-t-[var(--drawer-content-radius)] border-t border-[color:var(--drawer-content-border)]\",\n ],\n left: [\n \"inset-y-0 left-0 w-3/4 border-r border-[color:var(--drawer-content-border)] sm:max-w-sm\",\n ],\n right: [\n \"inset-y-0 right-0 w-3/4 border-l border-[color:var(--drawer-content-border)] sm:max-w-sm\",\n ],\n },\n },\n defaultVariants: {\n direction: \"bottom\",\n },\n }\n)\n\n/**\n * DrawerContent base styles (direction handled by data attributes)\n * Use this when direction is controlled by vaul\n */\nexport const drawerContentBaseVariants = cva([\n \"group/drawer-content bg-[color:var(--drawer-content-bg)] fixed z-50 flex h-auto flex-col\",\n // Top direction styles\n \"data-[vaul-drawer-direction=top]:inset-x-0\",\n \"data-[vaul-drawer-direction=top]:top-0\",\n \"data-[vaul-drawer-direction=top]:mb-24\",\n \"data-[vaul-drawer-direction=top]:max-h-[80vh]\",\n \"data-[vaul-drawer-direction=top]:rounded-b-[var(--drawer-content-radius)]\",\n \"data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-[color:var(--drawer-content-border)]\",\n // Bottom direction styles\n \"data-[vaul-drawer-direction=bottom]:inset-x-0\",\n \"data-[vaul-drawer-direction=bottom]:bottom-0\",\n \"data-[vaul-drawer-direction=bottom]:mt-24\",\n \"data-[vaul-drawer-direction=bottom]:max-h-[80vh]\",\n \"data-[vaul-drawer-direction=bottom]:rounded-t-[var(--drawer-content-radius)]\",\n \"data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-[color:var(--drawer-content-border)]\",\n // Right direction styles\n \"data-[vaul-drawer-direction=right]:inset-y-0\",\n \"data-[vaul-drawer-direction=right]:right-0\",\n \"data-[vaul-drawer-direction=right]:w-3/4\",\n \"data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-[color:var(--drawer-content-border)]\",\n \"data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n // Left direction styles\n \"data-[vaul-drawer-direction=left]:inset-y-0\",\n \"data-[vaul-drawer-direction=left]:left-0\",\n \"data-[vaul-drawer-direction=left]:w-3/4\",\n \"data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-[color:var(--drawer-content-border)]\",\n \"data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n])\n\n/**\n * Drawer handle (drag indicator) variant styles\n */\nexport const drawerHandleVariants = cva([\n \"bg-[color:var(--drawer-handle-bg)] mx-auto mt-[var(--drawer-handle-margin-top)] h-[var(--drawer-handle-height)] w-[var(--drawer-handle-width)] shrink-0 rounded-full\",\n \"hidden group-data-[vaul-drawer-direction=bottom]/drawer-content:block\",\n])\n\n/**\n * DrawerHeader variant styles\n */\nexport const drawerHeaderVariants = cva([\n \"flex flex-col gap-[var(--drawer-header-gap)] p-[var(--drawer-header-padding)]\",\n \"md:gap-1.5 md:text-left\",\n \"group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center\",\n \"group-data-[vaul-drawer-direction=top]/drawer-content:text-center\",\n])\n\n/**\n * DrawerFooter variant styles\n */\nexport const drawerFooterVariants = cva([\n \"mt-auto flex flex-col gap-[var(--drawer-footer-gap)] p-[var(--drawer-footer-padding)]\",\n])\n\n/**\n * DrawerTitle variant styles\n */\nexport const drawerTitleVariants = cva([\n \"text-foreground font-semibold\",\n])\n\n/**\n * DrawerDescription variant styles\n */\nexport const drawerDescriptionVariants = cva([\n \"text-muted-foreground text-sm\",\n])\n\nexport type DrawerContentVariantProps = VariantProps<typeof drawerContentVariants>\n","\"use client\"\n\nimport type {\n DrawerCloseProps,\n DrawerContentProps,\n DrawerDescriptionProps,\n DrawerFooterProps,\n DrawerHeaderProps,\n DrawerOverlayProps,\n DrawerPortalProps,\n DrawerProps,\n DrawerTitleProps,\n DrawerTriggerProps,\n} from \"./Drawer.types\"\n\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n drawerContentBaseVariants,\n drawerDescriptionVariants,\n drawerFooterVariants,\n drawerHandleVariants,\n drawerHeaderVariants,\n drawerOverlayVariants,\n drawerTitleVariants,\n} from \"./Drawer.variants\"\n\n/**\n * Drawer - A drawer/slide-out panel component.\n *\n * Built on top of vaul for touch-friendly drawer behavior.\n * Supports all four directions: top, bottom, left, right.\n *\n * @example\n * <Drawer>\n * <DrawerTrigger>Open Drawer</DrawerTrigger>\n * <DrawerContent>\n * <DrawerHeader>\n * <DrawerTitle>Title</DrawerTitle>\n * <DrawerDescription>Description</DrawerDescription>\n * </DrawerHeader>\n * <div className=\"p-4\">Content</div>\n * </DrawerContent>\n * </Drawer>\n */\nfunction Drawer({ ...props }: DrawerProps) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\n/**\n * DrawerTrigger - Button that opens the drawer.\n */\nfunction DrawerTrigger({ ...props }: DrawerTriggerProps) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\n/**\n * DrawerPortal - Renders drawer content in a portal.\n */\nfunction DrawerPortal({ ...props }: DrawerPortalProps) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\n/**\n * DrawerClose - Button that closes the drawer.\n */\nfunction DrawerClose({ ...props }: DrawerCloseProps) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\n/**\n * DrawerOverlay - Semi-transparent backdrop behind the drawer.\n */\nfunction DrawerOverlay({ className, ...props }: DrawerOverlayProps) {\n return (\n <DrawerPrimitive.Overlay\n className={cn(drawerOverlayVariants(), className)}\n data-slot=\"drawer-overlay\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerContent - Main content container for the drawer.\n *\n * Automatically includes overlay and handles positioning based on direction.\n * Includes a drag handle for bottom drawers.\n */\nfunction DrawerContent({\n className,\n children,\n ...props\n}: DrawerContentProps) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(drawerContentBaseVariants(), className)}\n data-slot=\"drawer-content\"\n {...props}\n >\n <div className={cn(drawerHandleVariants())} />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\n/**\n * DrawerHeader - Container for drawer title and description.\n *\n * Centered text for top/bottom drawers, left-aligned for side drawers on desktop.\n */\nfunction DrawerHeader({ className, ...props }: DrawerHeaderProps) {\n return (\n <div\n className={cn(drawerHeaderVariants(), className)}\n data-slot=\"drawer-header\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerFooter - Footer container for drawer actions.\n *\n * Positioned at the bottom with auto margin-top.\n */\nfunction DrawerFooter({ className, ...props }: DrawerFooterProps) {\n return (\n <div\n className={cn(drawerFooterVariants(), className)}\n data-slot=\"drawer-footer\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerTitle - Title text for the drawer.\n */\nfunction DrawerTitle({ className, ...props }: DrawerTitleProps) {\n return (\n <DrawerPrimitive.Title\n className={cn(drawerTitleVariants(), className)}\n data-slot=\"drawer-title\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerDescription - Description text for the drawer.\n */\nfunction DrawerDescription({ className, ...props }: DrawerDescriptionProps) {\n return (\n <DrawerPrimitive.Description\n className={cn(drawerDescriptionVariants(), className)}\n data-slot=\"drawer-description\"\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/advanced/Calendar/Calendar.tsx","../src/components/advanced/Calendar/Calendar.variants.ts"],"names":["className","props"],"mappings":"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","file":"chunk-R4UOT76L.js","sourcesContent":["import type {\n CalendarDayButtonProps,\n CalendarProps,\n} from \"./Calendar.types\"\n\nimport { isSameDay } from \"date-fns\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport * as React from \"react\"\nimport { DayPicker, getDefaultClassNames } from \"react-day-picker\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { buttonVariants } from \"../../primitives/Button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n activeDates,\n modifiers: propModifiers,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames()\n\n // Convert activeDates to a modifier function\n const isActiveDate = React.useCallback(\n (date: Date): boolean => {\n if (!activeDates) return false\n if (Array.isArray(activeDates)) {\n return activeDates.some((activeDate) => isSameDay(activeDate, date))\n }\n return activeDates(date)\n },\n [activeDates]\n )\n\n // Merge activeDates modifier with any prop modifiers\n const modifiers = React.useMemo(\n () => ({\n ...propModifiers,\n active: activeDates ? isActiveDate : undefined,\n }),\n [propModifiers, activeDates, isActiveDate]\n )\n\n return (\n <DayPicker\n className={cn(\n \"bg-background group/calendar p-[var(--calendar-container-padding)] [--cell-size:var(--calendar-cell-size)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[length:var(--calendar-weekday-font-size)] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-[var(--calendar-week-gap)]\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[length:var(--calendar-weekday-font-size)] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n ref={rootRef}\n className={cn(className)}\n data-slot=\"calendar\"\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n captionLayout={captionLayout}\n modifiers={modifiers}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n children,\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames()\n\n const buttonRef = React.useRef<HTMLButtonElement>(null)\n const isFocused = modifiers[\"focused\"]\n const isToday = modifiers[\"today\"]\n const isActive = modifiers[\"active\"]\n\n React.useEffect(() => {\n if (isFocused) buttonRef.current?.focus()\n }, [isFocused])\n\n return (\n <button\n ref={buttonRef}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[selected-single=true]:rounded-md data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col items-center justify-center gap-0.5 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n data-selected-single={\n modifiers[\"selected\"] &&\n !modifiers[\"range_start\"] &&\n !modifiers[\"range_end\"] &&\n !modifiers[\"range_middle\"]\n }\n data-active={isActive ?? undefined}\n data-day={day.date.toLocaleDateString()}\n data-range-end={modifiers[\"range_end\"]}\n data-range-middle={modifiers[\"range_middle\"]}\n data-range-start={modifiers[\"range_start\"]}\n data-today={isToday ?? undefined}\n type=\"button\"\n {...props}\n >\n {children}\n {/* Show today indicator (priority) or active indicator */}\n {isToday ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-today-indicator-size,4px)] rounded-full bg-primary [[data-selected-single=true]>&]:bg-primary-foreground [[data-range-start=true]>&]:bg-primary-foreground [[data-range-end=true]>&]:bg-primary-foreground\"\n data-slot=\"today-indicator\"\n />\n ) : isActive ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-active-indicator-size,4px)] rounded-full bg-primary/60 [[data-selected-single=true]>&]:bg-primary-foreground/60 [[data-range-start=true]>&]:bg-primary-foreground/60 [[data-range-end=true]>&]:bg-primary-foreground/60\"\n data-slot=\"active-indicator\"\n />\n ) : null}\n </button>\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","// Calendar/Calendar.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * Calendar container styles\n */\nexport const calendarContainerVariants = cva(\n [\n \"bg-background\",\n \"group/calendar\",\n \"p-[var(--calendar-container-padding)]\",\n \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n \"[[data-slot=card-content]_&]:bg-transparent\",\n \"[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n ],\n {\n variants: {\n size: {\n default: \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n sm: \"[--cell-size:var(--calendar-container-cell-size-sm)]\",\n lg: \"[--cell-size:var(--calendar-container-cell-size-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Calendar day button styles\n */\nexport const calendarDayButtonVariants = cva(\n [\n \"flex\",\n \"aspect-square\",\n \"size-[var(--calendar-day-size)]\",\n \"w-full\",\n \"min-w-(--cell-size)\",\n \"flex-col\",\n \"gap-[var(--calendar-day-gap)]\",\n \"leading-none\",\n \"font-normal\",\n \"[&>span]:text-[length:var(--calendar-day-font-size)]\",\n \"[&>span]:opacity-70\",\n ],\n {\n variants: {\n state: {\n default: \"\",\n selected:\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n rangeStart:\n \"data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md\",\n rangeMiddle:\n \"data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-middle=true]:rounded-none\",\n rangeEnd:\n \"data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md\",\n focused:\n \"group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px]\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n }\n)\n\n/**\n * Navigation button styles (uses Button variants)\n */\nexport const calendarNavButtonVariants = cva(\n [\"size-(--cell-size)\", \"aria-disabled:opacity-50\", \"p-0\", \"select-none\"],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * Calendar day cell styles\n */\nexport const calendarDayCellVariants = cva(\n [\n \"relative\",\n \"w-full\",\n \"h-full\",\n \"p-0\",\n \"text-center\",\n \"[&:last-child[data-selected=true]_button]:rounded-r-md\",\n \"aspect-square\",\n \"select-none\",\n ],\n {\n variants: {\n showWeekNumber: {\n true: \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\",\n false: \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n },\n },\n defaultVariants: {\n showWeekNumber: false,\n },\n }\n)\n\n/**\n * Today cell styles\n */\nexport const calendarTodayVariants = cva([\n \"bg-accent\",\n \"text-accent-foreground\",\n \"rounded-md\",\n \"data-[selected=true]:rounded-none\",\n])\n\n/**\n * Today indicator dot styles\n */\nexport const calendarTodayIndicatorVariants = cva([\n \"size-[var(--calendar-indicator-size)]\",\n \"rounded-full\",\n \"bg-primary\",\n \"[[data-selected-single=true]>&]:bg-primary-foreground\",\n \"[[data-range-start=true]>&]:bg-primary-foreground\",\n \"[[data-range-end=true]>&]:bg-primary-foreground\",\n])\n\n/**\n * Range styles\n */\nexport const calendarRangeStartVariants = cva([\"rounded-l-md\", \"bg-accent\"])\n\nexport const calendarRangeMiddleVariants = cva([\"rounded-none\"])\n\nexport const calendarRangeEndVariants = cva([\"rounded-r-md\", \"bg-accent\"])\n\n/**\n * Outside days styles\n */\nexport const calendarOutsideVariants = cva([\n \"text-muted-foreground\",\n \"aria-selected:text-muted-foreground\",\n])\n\n/**\n * Disabled days styles\n */\nexport const calendarDisabledVariants = cva([\n \"text-muted-foreground\",\n \"opacity-50\",\n])\n"]}
|
package/dist/chunk-SHS6EGWS.js
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { ChartTooltipContent, ChartContainer, ChartTooltip, ChartLegend, ChartLegendContent } from './chunk-7I6KK6QE.js';
|
|
2
|
-
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { AreaChart as AreaChart$1, CartesianGrid, XAxis, Label, YAxis, Area } from 'recharts';
|
|
5
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
function normalizeSeriesConfig(series) {
|
|
8
|
-
return series.map(
|
|
9
|
-
(s) => typeof s === "string" ? { dataKey: s } : s
|
|
10
|
-
);
|
|
11
|
-
}
|
|
12
|
-
function GradientDefs({
|
|
13
|
-
idPrefix,
|
|
14
|
-
series
|
|
15
|
-
}) {
|
|
16
|
-
return /* @__PURE__ */ jsx("defs", { children: series.map((s) => /* @__PURE__ */ jsxs(
|
|
17
|
-
"linearGradient",
|
|
18
|
-
{
|
|
19
|
-
id: `${idPrefix}-${s.dataKey}`,
|
|
20
|
-
x1: "0",
|
|
21
|
-
x2: "0",
|
|
22
|
-
y1: "0",
|
|
23
|
-
y2: "1",
|
|
24
|
-
children: [
|
|
25
|
-
/* @__PURE__ */ jsx(
|
|
26
|
-
"stop",
|
|
27
|
-
{
|
|
28
|
-
offset: "5%",
|
|
29
|
-
stopColor: `var(--color-${s.dataKey})`,
|
|
30
|
-
stopOpacity: 0.8
|
|
31
|
-
}
|
|
32
|
-
),
|
|
33
|
-
/* @__PURE__ */ jsx(
|
|
34
|
-
"stop",
|
|
35
|
-
{
|
|
36
|
-
offset: "95%",
|
|
37
|
-
stopColor: `var(--color-${s.dataKey})`,
|
|
38
|
-
stopOpacity: 0.1
|
|
39
|
-
}
|
|
40
|
-
)
|
|
41
|
-
]
|
|
42
|
-
},
|
|
43
|
-
s.dataKey
|
|
44
|
-
)) });
|
|
45
|
-
}
|
|
46
|
-
function AreaChart({
|
|
47
|
-
allowDecimals = true,
|
|
48
|
-
autoMinValue = false,
|
|
49
|
-
className,
|
|
50
|
-
config,
|
|
51
|
-
connectNulls = false,
|
|
52
|
-
customTooltip,
|
|
53
|
-
enableLegendSlider = false,
|
|
54
|
-
curveType = "monotone",
|
|
55
|
-
data,
|
|
56
|
-
fill = "solid",
|
|
57
|
-
fillOpacity = 0.3,
|
|
58
|
-
gradientIdPrefix = "area-gradient",
|
|
59
|
-
gridDashArray = "3 3",
|
|
60
|
-
intervalType,
|
|
61
|
-
legendPosition = "bottom",
|
|
62
|
-
maxValue,
|
|
63
|
-
minValue,
|
|
64
|
-
onValueChange,
|
|
65
|
-
series,
|
|
66
|
-
showGrid = true,
|
|
67
|
-
showLegend = false,
|
|
68
|
-
showTooltip = true,
|
|
69
|
-
showXAxis = true,
|
|
70
|
-
showYAxis = true,
|
|
71
|
-
startEndOnly = false,
|
|
72
|
-
tickGap,
|
|
73
|
-
tooltipCallback,
|
|
74
|
-
tooltipIndicator = "dot",
|
|
75
|
-
variant = "default",
|
|
76
|
-
xAxisLabel,
|
|
77
|
-
xAxisKey,
|
|
78
|
-
xAxisTickFormatter,
|
|
79
|
-
yAxisLabel,
|
|
80
|
-
yAxisTickFormatter,
|
|
81
|
-
yAxisWidth,
|
|
82
|
-
...props
|
|
83
|
-
}) {
|
|
84
|
-
const normalizedSeries = normalizeSeriesConfig(series);
|
|
85
|
-
const isStacked = variant === "stacked" || variant === "percent";
|
|
86
|
-
const isPercent = variant === "percent";
|
|
87
|
-
const isGradient = variant === "gradient" || fill === "gradient";
|
|
88
|
-
const isNoFill = fill === "none";
|
|
89
|
-
const chartId = React.useId().replaceAll(":", "");
|
|
90
|
-
const gradientPrefix = `${gradientIdPrefix}-${chartId}`;
|
|
91
|
-
const prevTooltipStateRef = React.useRef(false);
|
|
92
|
-
const handleDotClick = React.useCallback(
|
|
93
|
-
(dataKey) => (data2) => {
|
|
94
|
-
if (!onValueChange) return;
|
|
95
|
-
const payload = data2.payload;
|
|
96
|
-
const value = payload[dataKey];
|
|
97
|
-
onValueChange({
|
|
98
|
-
category: payload[xAxisKey],
|
|
99
|
-
dataKey,
|
|
100
|
-
payload,
|
|
101
|
-
value: typeof value === "number" ? value : 0
|
|
102
|
-
});
|
|
103
|
-
},
|
|
104
|
-
[onValueChange, xAxisKey]
|
|
105
|
-
);
|
|
106
|
-
const TooltipContentWithCallback = React.useCallback(
|
|
107
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
|
-
(props2) => {
|
|
109
|
-
const { active = false, label, payload } = props2;
|
|
110
|
-
if (tooltipCallback && active !== prevTooltipStateRef.current) {
|
|
111
|
-
prevTooltipStateRef.current = active;
|
|
112
|
-
tooltipCallback({
|
|
113
|
-
active,
|
|
114
|
-
label,
|
|
115
|
-
payload: payload?.map((p) => ({
|
|
116
|
-
dataKey: String(p.dataKey),
|
|
117
|
-
value: p.value,
|
|
118
|
-
payload: p.payload
|
|
119
|
-
}))
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
return /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator, ...props2 });
|
|
123
|
-
},
|
|
124
|
-
[tooltipCallback, tooltipIndicator]
|
|
125
|
-
);
|
|
126
|
-
const yDomain = React.useMemo(() => {
|
|
127
|
-
const min = minValue ?? (autoMinValue ? "auto" : 0);
|
|
128
|
-
const max = maxValue ?? "auto";
|
|
129
|
-
return [min, max];
|
|
130
|
-
}, [autoMinValue, maxValue, minValue]);
|
|
131
|
-
const xAxisTicks = React.useMemo(() => {
|
|
132
|
-
if (!startEndOnly || data.length < 2) return;
|
|
133
|
-
const first = data[0];
|
|
134
|
-
const last = data[data.length - 1];
|
|
135
|
-
if (!first || !last) return;
|
|
136
|
-
return [first[xAxisKey], last[xAxisKey]];
|
|
137
|
-
}, [data, startEndOnly, xAxisKey]);
|
|
138
|
-
return /* @__PURE__ */ jsx("div", { "data-slot": "area-chart", ...props, children: /* @__PURE__ */ jsx(
|
|
139
|
-
ChartContainer,
|
|
140
|
-
{
|
|
141
|
-
className: cn(className),
|
|
142
|
-
config,
|
|
143
|
-
children: /* @__PURE__ */ jsxs(
|
|
144
|
-
AreaChart$1,
|
|
145
|
-
{
|
|
146
|
-
accessibilityLayer: true,
|
|
147
|
-
data,
|
|
148
|
-
margin: { left: xAxisLabel ? 20 : 12, right: 12, bottom: yAxisLabel ? 20 : 0 },
|
|
149
|
-
stackOffset: isPercent ? "expand" : void 0,
|
|
150
|
-
children: [
|
|
151
|
-
isGradient && /* @__PURE__ */ jsx(GradientDefs, { idPrefix: gradientPrefix, series: normalizedSeries }),
|
|
152
|
-
showGrid && /* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: gridDashArray, vertical: false }),
|
|
153
|
-
showXAxis && /* @__PURE__ */ jsx(
|
|
154
|
-
XAxis,
|
|
155
|
-
{
|
|
156
|
-
axisLine: false,
|
|
157
|
-
dataKey: xAxisKey,
|
|
158
|
-
interval: intervalType,
|
|
159
|
-
minTickGap: tickGap,
|
|
160
|
-
tickFormatter: xAxisTickFormatter,
|
|
161
|
-
tickLine: false,
|
|
162
|
-
tickMargin: 8,
|
|
163
|
-
ticks: xAxisTicks,
|
|
164
|
-
children: xAxisLabel && /* @__PURE__ */ jsx(Label, { offset: -5, position: "insideBottom", value: xAxisLabel })
|
|
165
|
-
}
|
|
166
|
-
),
|
|
167
|
-
showYAxis && /* @__PURE__ */ jsx(
|
|
168
|
-
YAxis,
|
|
169
|
-
{
|
|
170
|
-
allowDecimals,
|
|
171
|
-
axisLine: false,
|
|
172
|
-
domain: isPercent ? [0, 1] : yDomain,
|
|
173
|
-
tickFormatter: isPercent ? (value) => `${(value * 100).toFixed(0)}%` : yAxisTickFormatter,
|
|
174
|
-
tickLine: false,
|
|
175
|
-
tickMargin: 8,
|
|
176
|
-
width: yAxisWidth,
|
|
177
|
-
children: yAxisLabel && /* @__PURE__ */ jsx(Label, { angle: -90, offset: -5, position: "insideLeft", value: yAxisLabel })
|
|
178
|
-
}
|
|
179
|
-
),
|
|
180
|
-
showTooltip && /* @__PURE__ */ jsx(
|
|
181
|
-
ChartTooltip,
|
|
182
|
-
{
|
|
183
|
-
content: customTooltip ?? (tooltipCallback ? /* @__PURE__ */ jsx(TooltipContentWithCallback, {}) : /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator })),
|
|
184
|
-
cursor: false
|
|
185
|
-
}
|
|
186
|
-
),
|
|
187
|
-
showLegend && /* @__PURE__ */ jsx(
|
|
188
|
-
ChartLegend,
|
|
189
|
-
{
|
|
190
|
-
align: legendPosition === "left" ? "left" : legendPosition === "right" ? "right" : "center",
|
|
191
|
-
content: /* @__PURE__ */ jsx(ChartLegendContent, { enableSlider: enableLegendSlider }),
|
|
192
|
-
layout: legendPosition === "left" || legendPosition === "right" ? "vertical" : "horizontal",
|
|
193
|
-
verticalAlign: legendPosition === "top" ? "top" : legendPosition === "bottom" ? "bottom" : "middle"
|
|
194
|
-
}
|
|
195
|
-
),
|
|
196
|
-
normalizedSeries.map((seriesConfig) => {
|
|
197
|
-
const { dataKey, fillOpacity: seriesFillOpacity, stackId } = seriesConfig;
|
|
198
|
-
const areaFill = isGradient ? `url(#${gradientPrefix}-${dataKey})` : `var(--color-${dataKey})`;
|
|
199
|
-
const stroke = `var(--color-${dataKey})`;
|
|
200
|
-
const computedFillOpacity = isNoFill ? 0 : seriesFillOpacity ?? fillOpacity;
|
|
201
|
-
return /* @__PURE__ */ jsx(
|
|
202
|
-
Area,
|
|
203
|
-
{
|
|
204
|
-
activeDot: onValueChange ? { onClick: handleDotClick(dataKey), r: 6, style: { cursor: "pointer" } } : { r: 6 },
|
|
205
|
-
connectNulls,
|
|
206
|
-
dataKey,
|
|
207
|
-
fill: areaFill,
|
|
208
|
-
fillOpacity: computedFillOpacity,
|
|
209
|
-
stackId: isStacked ? "area-stack" : stackId,
|
|
210
|
-
stroke,
|
|
211
|
-
type: curveType
|
|
212
|
-
},
|
|
213
|
-
dataKey
|
|
214
|
-
);
|
|
215
|
-
})
|
|
216
|
-
]
|
|
217
|
-
}
|
|
218
|
-
)
|
|
219
|
-
}
|
|
220
|
-
) });
|
|
221
|
-
}
|
|
222
|
-
AreaChart.displayName = "AreaChart";
|
|
223
|
-
|
|
224
|
-
export { AreaChart };
|
|
225
|
-
//# sourceMappingURL=chunk-SHS6EGWS.js.map
|
|
226
|
-
//# sourceMappingURL=chunk-SHS6EGWS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/AreaChart/AreaChart.tsx"],"names":["data","props","RechartsAreaChart"],"mappings":"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","file":"chunk-SHS6EGWS.js","sourcesContent":["\"use client\"\n\nimport type {\n AreaChartProps,\n AreaChartSeriesConfig,\n} from \"./AreaChart.types\"\n\nimport * as React from \"react\"\nimport {\n Area,\n CartesianGrid,\n Label,\n AreaChart as RechartsAreaChart,\n XAxis,\n YAxis,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../Chart\"\n\n/**\n * Normalize series to AreaChartSeriesConfig format\n */\nfunction normalizeSeriesConfig(\n series: (AreaChartSeriesConfig | string)[]\n): AreaChartSeriesConfig[] {\n return series.map((s) =>\n typeof s === \"string\" ? { dataKey: s } : s\n )\n}\n\n/**\n * Generate gradient defs for gradient variant\n */\nfunction GradientDefs({\n idPrefix,\n series,\n}: {\n idPrefix: string\n series: AreaChartSeriesConfig[]\n}) {\n return (\n <defs>\n {series.map((s) => (\n <linearGradient\n key={s.dataKey}\n id={`${idPrefix}-${s.dataKey}`}\n x1=\"0\"\n x2=\"0\"\n y1=\"0\"\n y2=\"1\"\n >\n <stop\n offset=\"5%\"\n stopColor={`var(--color-${s.dataKey})`}\n stopOpacity={0.8}\n />\n <stop\n offset=\"95%\"\n stopColor={`var(--color-${s.dataKey})`}\n stopOpacity={0.1}\n />\n </linearGradient>\n ))}\n </defs>\n )\n}\n\n/**\n * AreaChart - Data visualization component for cumulative data\n *\n * Displays quantitative values along a continuous axis with filled area.\n * Ideal for showing trends over time and comparing volumes between series.\n *\n * @example\n * ```tsx\n * const data = [\n * { month: \"Jan\", desktop: 186, mobile: 80 },\n * { month: \"Feb\", desktop: 305, mobile: 200 },\n * ]\n *\n * const config = {\n * desktop: { label: \"Desktop\", color: \"hsl(var(--chart-1))\" },\n * mobile: { label: \"Mobile\", color: \"hsl(var(--chart-2))\" },\n * }\n *\n * <AreaChart\n * data={data}\n * config={config}\n * xAxisKey=\"month\"\n * series={[\"desktop\", \"mobile\"]}\n * />\n * ```\n */\nexport function AreaChart({\n allowDecimals = true,\n autoMinValue = false,\n className,\n config,\n connectNulls = false,\n customTooltip,\n enableLegendSlider = false,\n curveType = \"monotone\",\n data,\n fill = \"solid\",\n fillOpacity = 0.3,\n gradientIdPrefix = \"area-gradient\",\n gridDashArray = \"3 3\",\n intervalType,\n legendPosition = \"bottom\",\n maxValue,\n minValue,\n onValueChange,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n showXAxis = true,\n showYAxis = true,\n startEndOnly = false,\n tickGap,\n tooltipCallback,\n tooltipIndicator = \"dot\",\n variant = \"default\",\n xAxisLabel,\n xAxisKey,\n xAxisTickFormatter,\n yAxisLabel,\n yAxisTickFormatter,\n yAxisWidth,\n ...props\n}: AreaChartProps) {\n const normalizedSeries = normalizeSeriesConfig(series)\n const isStacked = variant === \"stacked\" || variant === \"percent\"\n const isPercent = variant === \"percent\"\n const isGradient = variant === \"gradient\" || fill === \"gradient\"\n const isNoFill = fill === \"none\"\n const chartId = React.useId().replaceAll(\":\", \"\")\n const gradientPrefix = `${gradientIdPrefix}-${chartId}`\n const prevTooltipStateRef = React.useRef<boolean>(false)\n\n // Handle dot click for onValueChange\n const handleDotClick = React.useCallback(\n (dataKey: string) => (data: { payload: Record<string, unknown> }) => {\n if (!onValueChange) return\n const payload = data.payload\n const value = payload[dataKey]\n onValueChange({\n category: payload[xAxisKey],\n dataKey,\n payload,\n value: typeof value === \"number\" ? value : 0,\n })\n },\n [onValueChange, xAxisKey]\n )\n\n /* eslint-disable react-hooks/static-components, @eslint-react/no-nested-component-definitions, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access -- Intentional: memoized render function with Recharts any-typed props */\n // Custom tooltip content wrapper for tooltipCallback\n const TooltipContentWithCallback = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: any) => {\n const { active = false, label, payload } = props\n\n // Call tooltipCallback when state changes\n if (tooltipCallback && active !== prevTooltipStateRef.current) {\n prevTooltipStateRef.current = active\n tooltipCallback({\n active,\n label,\n payload: payload?.map((p: { dataKey: number | string; payload: Record<string, unknown>; value: number; }) => ({\n dataKey: String(p.dataKey),\n value: p.value,\n payload: p.payload,\n })),\n })\n }\n\n return <ChartTooltipContent indicator={tooltipIndicator} {...props} />\n },\n [tooltipCallback, tooltipIndicator]\n )\n\n // Calculate Y-axis domain\n const yDomain = React.useMemo(() => {\n const min = minValue ?? (autoMinValue ? \"auto\" : 0)\n const max = maxValue ?? \"auto\"\n return [min, max] as const\n }, [autoMinValue, maxValue, minValue])\n\n // Calculate X-axis ticks for startEndOnly\n const xAxisTicks = React.useMemo(() => {\n if (!startEndOnly || data.length < 2) return\n const first = data[0]\n const last = data[data.length - 1]\n if (!first || !last) return\n return [first[xAxisKey], last[xAxisKey]] as string[]\n }, [data, startEndOnly, xAxisKey])\n\n return (\n <div data-slot=\"area-chart\" {...props}>\n <ChartContainer\n className={cn(className)}\n config={config}\n >\n <RechartsAreaChart\n accessibilityLayer\n data={data}\n margin={{ left: xAxisLabel ? 20 : 12, right: 12, bottom: yAxisLabel ? 20 : 0 }}\n stackOffset={isPercent ? \"expand\" : undefined}\n >\n {isGradient && (\n <GradientDefs idPrefix={gradientPrefix} series={normalizedSeries} />\n )}\n\n {showGrid && (\n <CartesianGrid strokeDasharray={gridDashArray} vertical={false} />\n )}\n\n {showXAxis && (\n <XAxis\n axisLine={false}\n dataKey={xAxisKey}\n interval={intervalType}\n minTickGap={tickGap}\n tickFormatter={xAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n ticks={xAxisTicks}\n >\n {xAxisLabel && (\n <Label offset={-5} position=\"insideBottom\" value={xAxisLabel} />\n )}\n </XAxis>\n )}\n\n {showYAxis && (\n <YAxis\n allowDecimals={allowDecimals}\n axisLine={false}\n domain={isPercent ? [0, 1] : yDomain}\n tickFormatter={isPercent ? (value) => `${(value * 100).toFixed(0)}%` : yAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n width={yAxisWidth}\n >\n {yAxisLabel && (\n <Label angle={-90} offset={-5} position=\"insideLeft\" value={yAxisLabel} />\n )}\n </YAxis>\n )}\n\n {showTooltip && (\n <ChartTooltip\n content={\n customTooltip\n ?? (tooltipCallback\n ? <TooltipContentWithCallback />\n : <ChartTooltipContent indicator={tooltipIndicator} />)\n }\n cursor={false}\n />\n )}\n\n {showLegend && (\n <ChartLegend\n align={legendPosition === \"left\" ? \"left\" : legendPosition === \"right\" ? \"right\" : \"center\"}\n content={<ChartLegendContent enableSlider={enableLegendSlider} />}\n layout={legendPosition === \"left\" || legendPosition === \"right\" ? \"vertical\" : \"horizontal\"}\n verticalAlign={legendPosition === \"top\" ? \"top\" : legendPosition === \"bottom\" ? \"bottom\" : \"middle\"}\n />\n )}\n\n {normalizedSeries.map((seriesConfig) => {\n const { dataKey, fillOpacity: seriesFillOpacity, stackId } = seriesConfig\n\n const areaFill = isGradient\n ? `url(#${gradientPrefix}-${dataKey})`\n : `var(--color-${dataKey})`\n\n const stroke = `var(--color-${dataKey})`\n\n // Calculate fill opacity: 0 for \"none\", otherwise use series or default\n const computedFillOpacity = isNoFill ? 0 : (seriesFillOpacity ?? fillOpacity)\n\n return (\n <Area\n key={dataKey}\n activeDot={\n onValueChange\n ? { onClick: handleDotClick(dataKey), r: 6, style: { cursor: \"pointer\" } }\n : { r: 6 }\n }\n connectNulls={connectNulls}\n dataKey={dataKey}\n fill={areaFill}\n fillOpacity={computedFillOpacity}\n stackId={isStacked ? \"area-stack\" : stackId}\n stroke={stroke}\n type={curveType}\n />\n )\n })}\n </RechartsAreaChart>\n </ChartContainer>\n </div>\n )\n}\n\nAreaChart.displayName = \"AreaChart\"\n"]}
|