@particle-academy/react-fancy 6.7.2 → 6.9.0
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/CHANGELOG.md +44 -1
- package/dist/{Card-CuRZivBz.d.cts → Card-D0sp2T1V.d.cts} +6 -1
- package/dist/{Card-CuRZivBz.d.ts → Card-D0sp2T1V.d.ts} +6 -1
- package/dist/accordion-panel.cjs +7 -7
- package/dist/accordion-panel.js +1 -1
- package/dist/accordion.cjs +3 -3
- package/dist/accordion.js +1 -1
- package/dist/autocomplete.cjs +4 -3
- package/dist/autocomplete.js +3 -2
- package/dist/avatar.cjs +2 -2
- package/dist/avatar.js +1 -1
- package/dist/breadcrumbs.cjs +2 -2
- package/dist/breadcrumbs.js +1 -1
- package/dist/button.cjs +3 -3
- package/dist/button.d.cts +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/button.js +1 -1
- package/dist/calendar.cjs +2 -2
- package/dist/calendar.js +1 -1
- package/dist/callout.cjs +2 -2
- package/dist/callout.js +1 -1
- package/dist/card.cjs +7 -7
- package/dist/card.d.cts +2 -2
- package/dist/card.d.ts +2 -2
- package/dist/card.js +1 -1
- package/dist/carousel.cjs +7 -7
- package/dist/carousel.js +1 -1
- package/dist/chart.cjs +2 -2
- package/dist/chart.js +1 -1
- package/dist/chat-drawer.cjs +2 -2
- package/dist/chat-drawer.js +1 -1
- package/dist/chat-thread.cjs +7 -7
- package/dist/chat-thread.js +5 -5
- package/dist/checkbox-group.cjs +5 -5
- package/dist/checkbox-group.js +4 -4
- package/dist/checkbox.cjs +3 -3
- package/dist/checkbox.js +2 -2
- package/dist/{chunk-B4YV2V7G.cjs → chunk-2DX3PNXU.cjs} +3 -3
- package/dist/{chunk-B4YV2V7G.cjs.map → chunk-2DX3PNXU.cjs.map} +1 -1
- package/dist/{chunk-KPRSRWNM.js → chunk-2I7VNCBZ.js} +3 -3
- package/dist/{chunk-KPRSRWNM.js.map → chunk-2I7VNCBZ.js.map} +1 -1
- package/dist/{chunk-WMANILKC.cjs → chunk-2UYQ34RJ.cjs} +7 -7
- package/dist/chunk-2UYQ34RJ.cjs.map +1 -0
- package/dist/chunk-36IC3NDN.cjs +21 -0
- package/dist/chunk-36IC3NDN.cjs.map +1 -0
- package/dist/{chunk-LFC2DL6H.cjs → chunk-3BBEVHSP.cjs} +14 -9
- package/dist/chunk-3BBEVHSP.cjs.map +1 -0
- package/dist/{chunk-2O5UXH5R.cjs → chunk-3EZ6UPXS.cjs} +10 -10
- package/dist/chunk-3EZ6UPXS.cjs.map +1 -0
- package/dist/{chunk-XBFTO64U.cjs → chunk-3KJN3GTB.cjs} +4 -4
- package/dist/{chunk-XBFTO64U.cjs.map → chunk-3KJN3GTB.cjs.map} +1 -1
- package/dist/{chunk-37D5PYEF.js → chunk-3O3ZWWLG.js} +17 -4
- package/dist/chunk-3O3ZWWLG.js.map +1 -0
- package/dist/{chunk-5PHPJL7Z.js → chunk-4EQ336PQ.js} +4 -4
- package/dist/{chunk-5PHPJL7Z.js.map → chunk-4EQ336PQ.js.map} +1 -1
- package/dist/{chunk-EENHSMV2.js → chunk-4L3MGQAR.js} +6 -6
- package/dist/{chunk-EENHSMV2.js.map → chunk-4L3MGQAR.js.map} +1 -1
- package/dist/{chunk-QGY5FPVM.js → chunk-54NB3T3Q.js} +6 -4
- package/dist/chunk-54NB3T3Q.js.map +1 -0
- package/dist/{chunk-FRWOWDGX.js → chunk-5FA6V7JF.js} +3 -3
- package/dist/{chunk-FRWOWDGX.js.map → chunk-5FA6V7JF.js.map} +1 -1
- package/dist/{chunk-UUEAFG6V.js → chunk-5NJF7SQX.js} +6 -6
- package/dist/{chunk-UUEAFG6V.js.map → chunk-5NJF7SQX.js.map} +1 -1
- package/dist/{chunk-ZGDOWJKL.cjs → chunk-5NTFXQ4K.cjs} +6 -6
- package/dist/{chunk-ZGDOWJKL.cjs.map → chunk-5NTFXQ4K.cjs.map} +1 -1
- package/dist/{chunk-CQ7QXZLR.cjs → chunk-5SVZX6WF.cjs} +4 -4
- package/dist/chunk-5SVZX6WF.cjs.map +1 -0
- package/dist/{chunk-JY7HPFOE.cjs → chunk-6B2GMKE4.cjs} +5 -5
- package/dist/{chunk-JY7HPFOE.cjs.map → chunk-6B2GMKE4.cjs.map} +1 -1
- package/dist/{chunk-GSMD5NK5.js → chunk-6BCXGP2T.js} +7 -7
- package/dist/{chunk-GSMD5NK5.js.map → chunk-6BCXGP2T.js.map} +1 -1
- package/dist/{chunk-CVDL6C2O.cjs → chunk-6EPM5JG7.cjs} +3 -3
- package/dist/{chunk-CVDL6C2O.cjs.map → chunk-6EPM5JG7.cjs.map} +1 -1
- package/dist/{chunk-FVQO75KY.cjs → chunk-6GOPFKGC.cjs} +10 -4
- package/dist/chunk-6GOPFKGC.cjs.map +1 -0
- package/dist/{chunk-QTS4Q2NK.js → chunk-6RXEWM3V.js} +4 -3
- package/dist/chunk-6RXEWM3V.js.map +1 -0
- package/dist/{chunk-TLRFXSPA.cjs → chunk-73REG7KM.cjs} +13 -13
- package/dist/{chunk-TLRFXSPA.cjs.map → chunk-73REG7KM.cjs.map} +1 -1
- package/dist/{chunk-MI57NAKF.js → chunk-7B3Z4NVM.js} +6 -5
- package/dist/chunk-7B3Z4NVM.js.map +1 -0
- package/dist/{chunk-J2BWXCES.js → chunk-7GRIO5AZ.js} +3 -3
- package/dist/{chunk-J2BWXCES.js.map → chunk-7GRIO5AZ.js.map} +1 -1
- package/dist/{chunk-V5JTTLJP.cjs → chunk-7K2C744H.cjs} +3 -3
- package/dist/{chunk-V5JTTLJP.cjs.map → chunk-7K2C744H.cjs.map} +1 -1
- package/dist/{chunk-AJPYGRLA.cjs → chunk-7NRG77U5.cjs} +12 -4
- package/dist/chunk-7NRG77U5.cjs.map +1 -0
- package/dist/{chunk-GDF6XTHC.js → chunk-7OUBFO4D.js} +7 -5
- package/dist/chunk-7OUBFO4D.js.map +1 -0
- package/dist/{chunk-6H7ZN23X.cjs → chunk-7PK3OUKR.cjs} +6 -6
- package/dist/{chunk-6H7ZN23X.cjs.map → chunk-7PK3OUKR.cjs.map} +1 -1
- package/dist/{chunk-EUVWYDFN.js → chunk-AE6ICNJR.js} +14 -9
- package/dist/chunk-AE6ICNJR.js.map +1 -0
- package/dist/{chunk-YJXP6AOL.cjs → chunk-AF33UCTN.cjs} +4 -4
- package/dist/{chunk-YJXP6AOL.cjs.map → chunk-AF33UCTN.cjs.map} +1 -1
- package/dist/{chunk-PM5I5ZHK.cjs → chunk-AFFR7HHZ.cjs} +8 -7
- package/dist/chunk-AFFR7HHZ.cjs.map +1 -0
- package/dist/{chunk-F4OYQ2XZ.js → chunk-AR5DLM4K.js} +9 -6
- package/dist/chunk-AR5DLM4K.js.map +1 -0
- package/dist/{chunk-DJB3N4G3.cjs → chunk-AVGZ4PPC.cjs} +9 -9
- package/dist/{chunk-DJB3N4G3.cjs.map → chunk-AVGZ4PPC.cjs.map} +1 -1
- package/dist/{chunk-RANTYGKW.js → chunk-AXW55PQG.js} +3 -3
- package/dist/chunk-AXW55PQG.js.map +1 -0
- package/dist/{chunk-OASSZI6M.cjs → chunk-AZ5DWOQY.cjs} +5 -4
- package/dist/chunk-AZ5DWOQY.cjs.map +1 -0
- package/dist/{chunk-NSJBVV7R.js → chunk-BPTCMI3E.js} +21 -10
- package/dist/chunk-BPTCMI3E.js.map +1 -0
- package/dist/{chunk-PDVU2PXR.js → chunk-BQENLOEV.js} +10 -10
- package/dist/chunk-BQENLOEV.js.map +1 -0
- package/dist/{chunk-25HRO7HQ.cjs → chunk-BYMOPR7P.cjs} +7 -7
- package/dist/chunk-BYMOPR7P.cjs.map +1 -0
- package/dist/{chunk-FKZB27OM.cjs → chunk-C6EVRWXZ.cjs} +11 -8
- package/dist/chunk-C6EVRWXZ.cjs.map +1 -0
- package/dist/{chunk-GTS3QA7M.js → chunk-CO2NEUFK.js} +5 -5
- package/dist/chunk-CO2NEUFK.js.map +1 -0
- package/dist/{chunk-ESCIXKFT.js → chunk-D6NISIKV.js} +17 -7
- package/dist/chunk-D6NISIKV.js.map +1 -0
- package/dist/{chunk-MRZXTL46.cjs → chunk-DFROB5TW.cjs} +20 -20
- package/dist/{chunk-MRZXTL46.cjs.map → chunk-DFROB5TW.cjs.map} +1 -1
- package/dist/{chunk-KFA7B6WP.cjs → chunk-DPPDZOMY.cjs} +17 -7
- package/dist/chunk-DPPDZOMY.cjs.map +1 -0
- package/dist/{chunk-BXPLERIJ.js → chunk-DW2PHLOA.js} +5 -4
- package/dist/chunk-DW2PHLOA.js.map +1 -0
- package/dist/{chunk-BYO5RUDE.cjs → chunk-DXLPBLNC.cjs} +6 -5
- package/dist/chunk-DXLPBLNC.cjs.map +1 -0
- package/dist/{chunk-5WQ6FPSP.js → chunk-E2AEU5SP.js} +4 -4
- package/dist/{chunk-5WQ6FPSP.js.map → chunk-E2AEU5SP.js.map} +1 -1
- package/dist/{chunk-3QCAOD2W.cjs → chunk-EC4ZYZNK.cjs} +3 -3
- package/dist/{chunk-3QCAOD2W.cjs.map → chunk-EC4ZYZNK.cjs.map} +1 -1
- package/dist/{chunk-KXYMMNNV.js → chunk-EDIX6EXQ.js} +20 -20
- package/dist/{chunk-KXYMMNNV.js.map → chunk-EDIX6EXQ.js.map} +1 -1
- package/dist/{chunk-KOAMRCSC.cjs → chunk-ETUDUDSL.cjs} +14 -11
- package/dist/chunk-ETUDUDSL.cjs.map +1 -0
- package/dist/{chunk-LY3RQB3H.js → chunk-F3U4AVGF.js} +3 -3
- package/dist/{chunk-LY3RQB3H.js.map → chunk-F3U4AVGF.js.map} +1 -1
- package/dist/{chunk-AE53RKWR.cjs → chunk-FF5G3E76.cjs} +407 -22
- package/dist/chunk-FF5G3E76.cjs.map +1 -0
- package/dist/{chunk-WNWEC5OU.cjs → chunk-FKHYJ5IC.cjs} +3 -3
- package/dist/{chunk-WNWEC5OU.cjs.map → chunk-FKHYJ5IC.cjs.map} +1 -1
- package/dist/{chunk-QP6VNKLW.cjs → chunk-FNPII6TF.cjs} +9 -5
- package/dist/chunk-FNPII6TF.cjs.map +1 -0
- package/dist/{chunk-JY2RC6I4.js → chunk-FQCLJZZS.js} +13 -10
- package/dist/chunk-FQCLJZZS.js.map +1 -0
- package/dist/{chunk-EQ7G5F6K.js → chunk-FRUHEDZN.js} +3 -3
- package/dist/{chunk-EQ7G5F6K.js.map → chunk-FRUHEDZN.js.map} +1 -1
- package/dist/{chunk-BJL3VDRK.cjs → chunk-FY2WDVKF.cjs} +3 -3
- package/dist/{chunk-BJL3VDRK.cjs.map → chunk-FY2WDVKF.cjs.map} +1 -1
- package/dist/{chunk-SKMORSBO.cjs → chunk-FZQWFDUV.cjs} +5 -5
- package/dist/chunk-FZQWFDUV.cjs.map +1 -0
- package/dist/{chunk-HNJXBMHI.cjs → chunk-G5MDMQVQ.cjs} +40 -39
- package/dist/chunk-G5MDMQVQ.cjs.map +1 -0
- package/dist/{chunk-4DL2U23D.cjs → chunk-GE2ZGE3A.cjs} +21 -13
- package/dist/chunk-GE2ZGE3A.cjs.map +1 -0
- package/dist/{chunk-THMFLRDW.cjs → chunk-GE6TSA3M.cjs} +17 -17
- package/dist/{chunk-THMFLRDW.cjs.map → chunk-GE6TSA3M.cjs.map} +1 -1
- package/dist/{chunk-MQ6VGG62.js → chunk-GJWNZMJT.js} +14 -11
- package/dist/chunk-GJWNZMJT.js.map +1 -0
- package/dist/{chunk-5TP642UT.js → chunk-GODJVIIO.js} +12 -11
- package/dist/chunk-GODJVIIO.js.map +1 -0
- package/dist/{chunk-RLE5WYY6.js → chunk-GZSRKBYI.js} +406 -24
- package/dist/chunk-GZSRKBYI.js.map +1 -0
- package/dist/{chunk-FR4RHVPR.js → chunk-H7IQVCTX.js} +6 -4
- package/dist/chunk-H7IQVCTX.js.map +1 -0
- package/dist/{chunk-KOTUFZJ6.cjs → chunk-H7OTLGRD.cjs} +14 -11
- package/dist/chunk-H7OTLGRD.cjs.map +1 -0
- package/dist/{chunk-K5MQZTDW.cjs → chunk-HKLBCA5X.cjs} +4 -4
- package/dist/{chunk-K5MQZTDW.cjs.map → chunk-HKLBCA5X.cjs.map} +1 -1
- package/dist/{chunk-5QKQXM5V.cjs → chunk-HYU46SOE.cjs} +5 -5
- package/dist/{chunk-5QKQXM5V.cjs.map → chunk-HYU46SOE.cjs.map} +1 -1
- package/dist/{chunk-X2A3NAJW.js → chunk-I65KXHYL.js} +4 -4
- package/dist/chunk-I65KXHYL.js.map +1 -0
- package/dist/{chunk-USWQAMI3.js → chunk-IF6EITB5.js} +3 -3
- package/dist/{chunk-USWQAMI3.js.map → chunk-IF6EITB5.js.map} +1 -1
- package/dist/{chunk-DXZCKDYS.js → chunk-IG2UDCBA.js} +9 -9
- package/dist/chunk-IG2UDCBA.js.map +1 -0
- package/dist/{chunk-YQZB5Z7C.cjs → chunk-INC35VEE.cjs} +3 -2
- package/dist/chunk-INC35VEE.cjs.map +1 -0
- package/dist/{chunk-AQ4DZT4Y.cjs → chunk-ISAHWGMD.cjs} +6 -6
- package/dist/{chunk-AQ4DZT4Y.cjs.map → chunk-ISAHWGMD.cjs.map} +1 -1
- package/dist/{chunk-PJNUGSKI.js → chunk-IYG436ZY.js} +26 -25
- package/dist/chunk-IYG436ZY.js.map +1 -0
- package/dist/{chunk-Z4UXLQSK.cjs → chunk-JDFJK5GO.cjs} +16 -16
- package/dist/chunk-JDFJK5GO.cjs.map +1 -0
- package/dist/{chunk-MAZEX4EZ.cjs → chunk-JQIFCWNZ.cjs} +13 -13
- package/dist/{chunk-MAZEX4EZ.cjs.map → chunk-JQIFCWNZ.cjs.map} +1 -1
- package/dist/{chunk-MKGWHSNV.cjs → chunk-JV2HEOCB.cjs} +5 -4
- package/dist/chunk-JV2HEOCB.cjs.map +1 -0
- package/dist/{chunk-GDH43QH6.js → chunk-KAKKZDCE.js} +6 -6
- package/dist/{chunk-GDH43QH6.js.map → chunk-KAKKZDCE.js.map} +1 -1
- package/dist/{chunk-DJYG7DXS.js → chunk-KDRBUF5S.js} +4 -4
- package/dist/chunk-KDRBUF5S.js.map +1 -0
- package/dist/{chunk-ZVDW2VX5.cjs → chunk-KGSL6SVX.cjs} +3 -3
- package/dist/chunk-KGSL6SVX.cjs.map +1 -0
- package/dist/{chunk-YAPGHVBZ.js → chunk-KRECSPD3.js} +4 -4
- package/dist/{chunk-YAPGHVBZ.js.map → chunk-KRECSPD3.js.map} +1 -1
- package/dist/{chunk-NPSKZ7ZB.cjs → chunk-L5NDZEL6.cjs} +12 -12
- package/dist/{chunk-NPSKZ7ZB.cjs.map → chunk-L5NDZEL6.cjs.map} +1 -1
- package/dist/{chunk-UE3QO7R3.js → chunk-LAQT5FFV.js} +3 -3
- package/dist/{chunk-UE3QO7R3.js.map → chunk-LAQT5FFV.js.map} +1 -1
- package/dist/{chunk-YH75G6SP.cjs → chunk-LHHELLMT.cjs} +3 -3
- package/dist/{chunk-YH75G6SP.cjs.map → chunk-LHHELLMT.cjs.map} +1 -1
- package/dist/{chunk-UK6BGM74.cjs → chunk-LREJ7AV2.cjs} +17 -4
- package/dist/chunk-LREJ7AV2.cjs.map +1 -0
- package/dist/{chunk-Y3QAEF2P.cjs → chunk-LVNCNMKD.cjs} +9 -7
- package/dist/chunk-LVNCNMKD.cjs.map +1 -0
- package/dist/{chunk-UZCR7DK5.js → chunk-LXEOBSEZ.js} +3 -3
- package/dist/{chunk-UZCR7DK5.js.map → chunk-LXEOBSEZ.js.map} +1 -1
- package/dist/{chunk-HLI6RB5V.cjs → chunk-M5ER3Y5I.cjs} +32 -31
- package/dist/chunk-M5ER3Y5I.cjs.map +1 -0
- package/dist/{chunk-CEFK54WP.cjs → chunk-MDAI54AG.cjs} +7 -5
- package/dist/chunk-MDAI54AG.cjs.map +1 -0
- package/dist/{chunk-WE5WGVVX.js → chunk-MKDTXMCE.js} +3 -3
- package/dist/{chunk-WE5WGVVX.js.map → chunk-MKDTXMCE.js.map} +1 -1
- package/dist/{chunk-SXXDTW7S.js → chunk-NETUI353.js} +10 -4
- package/dist/chunk-NETUI353.js.map +1 -0
- package/dist/{chunk-XHUV3VSM.cjs → chunk-NIFHAFKK.cjs} +3 -3
- package/dist/{chunk-XHUV3VSM.cjs.map → chunk-NIFHAFKK.cjs.map} +1 -1
- package/dist/{chunk-LKN7FYW6.js → chunk-NW2LQRUP.js} +4 -4
- package/dist/chunk-NW2LQRUP.js.map +1 -0
- package/dist/{chunk-ONHT2PDW.cjs → chunk-NWP5EGSR.cjs} +3 -3
- package/dist/{chunk-ONHT2PDW.cjs.map → chunk-NWP5EGSR.cjs.map} +1 -1
- package/dist/{chunk-RSLZL6VP.js → chunk-OBA2LR4I.js} +3 -3
- package/dist/chunk-OBA2LR4I.js.map +1 -0
- package/dist/{chunk-VSTUGU7W.js → chunk-PIYQPXLT.js} +8 -8
- package/dist/{chunk-VSTUGU7W.js.map → chunk-PIYQPXLT.js.map} +1 -1
- package/dist/{chunk-WX5XYDVN.js → chunk-PZTFGPQJ.js} +3 -3
- package/dist/{chunk-WX5XYDVN.js.map → chunk-PZTFGPQJ.js.map} +1 -1
- package/dist/{chunk-4GPH7HOR.js → chunk-Q4CNEHVN.js} +3 -3
- package/dist/{chunk-4GPH7HOR.js.map → chunk-Q4CNEHVN.js.map} +1 -1
- package/dist/{chunk-I2VAGZXY.cjs → chunk-Q62RDKRA.cjs} +11 -11
- package/dist/{chunk-I2VAGZXY.cjs.map → chunk-Q62RDKRA.cjs.map} +1 -1
- package/dist/{chunk-QF7CD4JH.cjs → chunk-Q7XL37T3.cjs} +5 -5
- package/dist/{chunk-QF7CD4JH.cjs.map → chunk-Q7XL37T3.cjs.map} +1 -1
- package/dist/{chunk-XZOBGKZL.cjs → chunk-QAM6N3VG.cjs} +6 -5
- package/dist/chunk-QAM6N3VG.cjs.map +1 -0
- package/dist/{chunk-BLOX7MRO.js → chunk-QE7KXMUZ.js} +3 -3
- package/dist/{chunk-BLOX7MRO.js.map → chunk-QE7KXMUZ.js.map} +1 -1
- package/dist/{chunk-ZPBKRJMH.js → chunk-QEJBMXRQ.js} +7 -7
- package/dist/chunk-QEJBMXRQ.js.map +1 -0
- package/dist/{chunk-PCNJJVTF.cjs → chunk-QMZK7SRS.cjs} +3 -3
- package/dist/chunk-QMZK7SRS.cjs.map +1 -0
- package/dist/{chunk-TFX4LL7V.js → chunk-QSRYTWQN.js} +3 -2
- package/dist/chunk-QSRYTWQN.js.map +1 -0
- package/dist/{chunk-Z7SQMQTF.cjs → chunk-QU6HZH6V.cjs} +21 -10
- package/dist/chunk-QU6HZH6V.cjs.map +1 -0
- package/dist/{chunk-GR2WKBER.js → chunk-QUZOGRZS.js} +4 -3
- package/dist/chunk-QUZOGRZS.js.map +1 -0
- package/dist/{chunk-WGRLNXNB.js → chunk-R3PCZSBQ.js} +3 -3
- package/dist/{chunk-WGRLNXNB.js.map → chunk-R3PCZSBQ.js.map} +1 -1
- package/dist/{chunk-EZZKHMR4.js → chunk-R6O6SLXK.js} +3 -3
- package/dist/{chunk-EZZKHMR4.js.map → chunk-R6O6SLXK.js.map} +1 -1
- package/dist/{chunk-5EW47IH7.js → chunk-RCTPN5QK.js} +9 -7
- package/dist/chunk-RCTPN5QK.js.map +1 -0
- package/dist/{chunk-JSD6IEBW.js → chunk-RFTDMQ56.js} +3 -3
- package/dist/{chunk-JSD6IEBW.js.map → chunk-RFTDMQ56.js.map} +1 -1
- package/dist/{chunk-6PRXG7L6.js → chunk-RSB2P3JK.js} +4 -4
- package/dist/{chunk-6PRXG7L6.js.map → chunk-RSB2P3JK.js.map} +1 -1
- package/dist/{chunk-2G6TIX5Q.cjs → chunk-RVBA4LEB.cjs} +13 -13
- package/dist/{chunk-2G6TIX5Q.cjs.map → chunk-RVBA4LEB.cjs.map} +1 -1
- package/dist/{chunk-UVUBV4VZ.js → chunk-S2ID4NNQ.js} +6 -6
- package/dist/{chunk-UVUBV4VZ.js.map → chunk-S2ID4NNQ.js.map} +1 -1
- package/dist/{chunk-TMQF2CRN.js → chunk-S4JQPOBR.js} +7 -7
- package/dist/chunk-S4JQPOBR.js.map +1 -0
- package/dist/{chunk-ETNQ4AEQ.cjs → chunk-S6TVSQDT.cjs} +5 -5
- package/dist/{chunk-ETNQ4AEQ.cjs.map → chunk-S6TVSQDT.cjs.map} +1 -1
- package/dist/{chunk-SSCW67KA.cjs → chunk-SD6YAMDH.cjs} +4 -4
- package/dist/chunk-SD6YAMDH.cjs.map +1 -0
- package/dist/{chunk-MLZGGAXQ.js → chunk-SOIGBPK6.js} +21 -13
- package/dist/chunk-SOIGBPK6.js.map +1 -0
- package/dist/{chunk-7QENPLOP.cjs → chunk-TQDZZIOW.cjs} +5 -5
- package/dist/{chunk-7QENPLOP.cjs.map → chunk-TQDZZIOW.cjs.map} +1 -1
- package/dist/{chunk-MPCZUZ4O.cjs → chunk-U4KUW3RK.cjs} +19 -15
- package/dist/chunk-U4KUW3RK.cjs.map +1 -0
- package/dist/{chunk-AZQXPI5S.js → chunk-UBLMYH6C.js} +3 -3
- package/dist/{chunk-AZQXPI5S.js.map → chunk-UBLMYH6C.js.map} +1 -1
- package/dist/{chunk-P53432AK.cjs → chunk-UIBAIWUR.cjs} +4 -4
- package/dist/{chunk-P53432AK.cjs.map → chunk-UIBAIWUR.cjs.map} +1 -1
- package/dist/{chunk-KKYILQTG.cjs → chunk-UORN3Z7R.cjs} +7 -7
- package/dist/{chunk-KKYILQTG.cjs.map → chunk-UORN3Z7R.cjs.map} +1 -1
- package/dist/{chunk-UXYFM2XT.cjs → chunk-UQABXIQV.cjs} +6 -4
- package/dist/chunk-UQABXIQV.cjs.map +1 -0
- package/dist/chunk-US5R36TQ.js +17 -0
- package/dist/chunk-US5R36TQ.js.map +1 -0
- package/dist/{chunk-CS2ZYMYP.js → chunk-UZZJJ3HJ.js} +3 -3
- package/dist/{chunk-CS2ZYMYP.js.map → chunk-UZZJJ3HJ.js.map} +1 -1
- package/dist/{chunk-Y7RGUUTS.cjs → chunk-V3EKI3VV.cjs} +3 -3
- package/dist/{chunk-Y7RGUUTS.cjs.map → chunk-V3EKI3VV.cjs.map} +1 -1
- package/dist/{chunk-U4Y7ZXME.js → chunk-V64XIPYG.js} +6 -6
- package/dist/{chunk-U4Y7ZXME.js.map → chunk-V64XIPYG.js.map} +1 -1
- package/dist/{chunk-RWU2MFUL.js → chunk-VGUAIFGE.js} +5 -4
- package/dist/chunk-VGUAIFGE.js.map +1 -0
- package/dist/{chunk-LIVC3WUU.cjs → chunk-VH34IZ7R.cjs} +3 -3
- package/dist/{chunk-LIVC3WUU.cjs.map → chunk-VH34IZ7R.cjs.map} +1 -1
- package/dist/{chunk-WNUAGRQN.cjs → chunk-VOAC5OKY.cjs} +4 -4
- package/dist/chunk-VOAC5OKY.cjs.map +1 -0
- package/dist/{chunk-H7ELUIF6.cjs → chunk-W53SZTPX.cjs} +10 -10
- package/dist/{chunk-H7ELUIF6.cjs.map → chunk-W53SZTPX.cjs.map} +1 -1
- package/dist/{chunk-4FH2JHUY.js → chunk-WAEOIEDI.js} +5 -5
- package/dist/{chunk-4FH2JHUY.js.map → chunk-WAEOIEDI.js.map} +1 -1
- package/dist/{chunk-ICMLLZKZ.js → chunk-WJE7UX2G.js} +4 -4
- package/dist/{chunk-ICMLLZKZ.js.map → chunk-WJE7UX2G.js.map} +1 -1
- package/dist/{chunk-DTOIO42M.js → chunk-WLRKE4HC.js} +9 -5
- package/dist/chunk-WLRKE4HC.js.map +1 -0
- package/dist/{chunk-7ZCNZUZK.cjs → chunk-WOURDD4U.cjs} +4 -4
- package/dist/{chunk-7ZCNZUZK.cjs.map → chunk-WOURDD4U.cjs.map} +1 -1
- package/dist/{chunk-OTM7RL2L.js → chunk-WSU36HJM.js} +4 -4
- package/dist/{chunk-OTM7RL2L.js.map → chunk-WSU36HJM.js.map} +1 -1
- package/dist/{chunk-TAYJSIOP.js → chunk-X4NXS42J.js} +5 -5
- package/dist/{chunk-TAYJSIOP.js.map → chunk-X4NXS42J.js.map} +1 -1
- package/dist/{chunk-2UTN3EFK.js → chunk-XALAQZCD.js} +5 -5
- package/dist/{chunk-2UTN3EFK.js.map → chunk-XALAQZCD.js.map} +1 -1
- package/dist/{chunk-RZUYCZ5D.cjs → chunk-XCFBMHQD.cjs} +6 -4
- package/dist/chunk-XCFBMHQD.cjs.map +1 -0
- package/dist/{chunk-NZHVDWOM.cjs → chunk-XEI5JG7C.cjs} +3 -3
- package/dist/{chunk-NZHVDWOM.cjs.map → chunk-XEI5JG7C.cjs.map} +1 -1
- package/dist/{chunk-O3F6DYWR.cjs → chunk-XG6J5MOK.cjs} +3 -3
- package/dist/{chunk-O3F6DYWR.cjs.map → chunk-XG6J5MOK.cjs.map} +1 -1
- package/dist/{chunk-J2DI6RMR.cjs → chunk-XGGAAG74.cjs} +14 -11
- package/dist/chunk-XGGAAG74.cjs.map +1 -0
- package/dist/{chunk-GVMWJ4NI.js → chunk-XH24BGEK.js} +6 -6
- package/dist/{chunk-GVMWJ4NI.js.map → chunk-XH24BGEK.js.map} +1 -1
- package/dist/{chunk-3S5ED522.js → chunk-XO4GHRA2.js} +11 -8
- package/dist/chunk-XO4GHRA2.js.map +1 -0
- package/dist/{chunk-O5ORO2RX.cjs → chunk-XQF4HCOV.cjs} +13 -11
- package/dist/chunk-XQF4HCOV.cjs.map +1 -0
- package/dist/{chunk-VZTXUYPM.cjs → chunk-XT4WBBCD.cjs} +20 -20
- package/dist/chunk-XT4WBBCD.cjs.map +1 -0
- package/dist/{chunk-Z44A7NPD.cjs → chunk-YBBBX5H2.cjs} +40 -39
- package/dist/chunk-YBBBX5H2.cjs.map +1 -0
- package/dist/{chunk-IUCYRQ4J.js → chunk-YPYZZLZ5.js} +5 -5
- package/dist/{chunk-IUCYRQ4J.js.map → chunk-YPYZZLZ5.js.map} +1 -1
- package/dist/{chunk-NVXTHTJI.js → chunk-YTWMIVRI.js} +10 -10
- package/dist/chunk-YTWMIVRI.js.map +1 -0
- package/dist/{chunk-WZAKEJDL.js → chunk-YZW7HQXH.js} +13 -11
- package/dist/chunk-YZW7HQXH.js.map +1 -0
- package/dist/{chunk-AYBKPAI2.cjs → chunk-Z5MNYYUJ.cjs} +3 -3
- package/dist/{chunk-AYBKPAI2.cjs.map → chunk-Z5MNYYUJ.cjs.map} +1 -1
- package/dist/{chunk-GOE36IXL.js → chunk-Z6M3UELD.js} +3 -3
- package/dist/{chunk-GOE36IXL.js.map → chunk-Z6M3UELD.js.map} +1 -1
- package/dist/{chunk-PXZRYL5I.js → chunk-ZBXJDQXN.js} +12 -4
- package/dist/chunk-ZBXJDQXN.js.map +1 -0
- package/dist/{chunk-M5SEYDSS.cjs → chunk-ZDHLEHYR.cjs} +6 -6
- package/dist/{chunk-M5SEYDSS.cjs.map → chunk-ZDHLEHYR.cjs.map} +1 -1
- package/dist/{chunk-SCGTO3PX.js → chunk-ZHTK4IPQ.js} +3 -3
- package/dist/{chunk-SCGTO3PX.js.map → chunk-ZHTK4IPQ.js.map} +1 -1
- package/dist/{chunk-QF2FODTG.js → chunk-ZL5QVNKG.js} +10 -6
- package/dist/chunk-ZL5QVNKG.js.map +1 -0
- package/dist/{chunk-6GVOW3UL.js → chunk-ZUJVGHFW.js} +12 -11
- package/dist/chunk-ZUJVGHFW.js.map +1 -0
- package/dist/code-block.cjs +4 -4
- package/dist/code-block.js +3 -3
- package/dist/code-view.cjs +2 -2
- package/dist/code-view.js +1 -1
- package/dist/command.cjs +3 -3
- package/dist/command.js +1 -1
- package/dist/composer.cjs +7 -6
- package/dist/composer.js +5 -4
- package/dist/content-renderer.cjs +6 -6
- package/dist/content-renderer.js +3 -3
- package/dist/context-menu.cjs +4 -3
- package/dist/context-menu.d.cts +2 -0
- package/dist/context-menu.d.ts +2 -0
- package/dist/context-menu.js +2 -1
- package/dist/date-picker.cjs +5 -5
- package/dist/date-picker.js +4 -4
- package/dist/drawer.cjs +3 -3
- package/dist/drawer.d.cts +10 -4
- package/dist/drawer.d.ts +10 -4
- package/dist/drawer.js +1 -1
- package/dist/dropdown.cjs +5 -4
- package/dist/dropdown.js +3 -2
- package/dist/editor.cjs +9 -8
- package/dist/editor.js +7 -6
- package/dist/emoji-select.cjs +2 -2
- package/dist/emoji-select.js +1 -1
- package/dist/eyebrow.cjs +2 -2
- package/dist/eyebrow.js +1 -1
- package/dist/faux-client.cjs +2 -2
- package/dist/faux-client.js +1 -1
- package/dist/field.cjs +3 -3
- package/dist/field.js +2 -2
- package/dist/file-browser.cjs +6 -5
- package/dist/file-browser.js +2 -1
- package/dist/file-upload.cjs +3 -3
- package/dist/file-upload.js +1 -1
- package/dist/image-viewer.cjs +3 -3
- package/dist/image-viewer.js +2 -2
- package/dist/index-list.cjs +2 -2
- package/dist/index-list.js +1 -1
- package/dist/index.cjs +222 -209
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -2
- package/dist/index.d.ts +20 -2
- package/dist/index.js +78 -77
- package/dist/index.js.map +1 -1
- package/dist/input-tag.cjs +7 -6
- package/dist/input-tag.d.cts +6 -2
- package/dist/input-tag.d.ts +6 -2
- package/dist/input-tag.js +2 -1
- package/dist/input.cjs +10 -9
- package/dist/input.js +9 -8
- package/dist/inputs.cjs +32 -31
- package/dist/inputs.js +19 -18
- package/dist/json-editor.cjs +27 -26
- package/dist/json-editor.js +16 -15
- package/dist/magic-wand.cjs +8 -8
- package/dist/magic-wand.js +7 -7
- package/dist/marquee.cjs +2 -2
- package/dist/marquee.js +1 -1
- package/dist/media-viewer.cjs +5 -5
- package/dist/media-viewer.js +4 -4
- package/dist/menu.cjs +3 -3
- package/dist/menu.js +1 -1
- package/dist/mobile-menu.cjs +5 -4
- package/dist/mobile-menu.d.cts +2 -1
- package/dist/mobile-menu.d.ts +2 -1
- package/dist/mobile-menu.js +3 -2
- package/dist/mode.cjs +3 -3
- package/dist/mode.js +2 -2
- package/dist/multi-switch.cjs +6 -5
- package/dist/multi-switch.js +5 -4
- package/dist/number-field.cjs +11 -10
- package/dist/number-field.js +10 -9
- package/dist/otp-input.cjs +3 -2
- package/dist/otp-input.js +2 -1
- package/dist/pagination.cjs +2 -2
- package/dist/pagination.js +1 -1
- package/dist/paste-pills.cjs +17 -16
- package/dist/paste-pills.js +4 -3
- package/dist/pdf-viewer.cjs +3 -3
- package/dist/pdf-viewer.js +2 -2
- package/dist/popover.cjs +5 -4
- package/dist/popover.js +3 -2
- package/dist/profile.cjs +3 -3
- package/dist/profile.js +2 -2
- package/dist/progress.cjs +2 -2
- package/dist/progress.js +1 -1
- package/dist/prompt-input.cjs +10 -9
- package/dist/prompt-input.js +7 -6
- package/dist/qr-code.cjs +19 -4
- package/dist/qr-code.d.cts +221 -2
- package/dist/qr-code.d.ts +221 -2
- package/dist/qr-code.js +4 -1
- package/dist/radio-group.cjs +5 -5
- package/dist/radio-group.js +4 -4
- package/dist/reason-tag.cjs +6 -5
- package/dist/reason-tag.js +5 -4
- package/dist/reorderable-grid.cjs +4 -3
- package/dist/reorderable-grid.js +2 -1
- package/dist/resizable-panels.cjs +3 -2
- package/dist/resizable-panels.js +2 -1
- package/dist/select.cjs +8 -7
- package/dist/select.js +7 -6
- package/dist/separator.cjs +2 -2
- package/dist/separator.js +1 -1
- package/dist/sidebar.cjs +6 -5
- package/dist/sidebar.js +4 -3
- package/dist/slider.cjs +5 -5
- package/dist/slider.js +4 -4
- package/dist/stat-list.cjs +2 -2
- package/dist/stat-list.d.cts +5 -2
- package/dist/stat-list.d.ts +5 -2
- package/dist/stat-list.js +1 -1
- package/dist/stepper.cjs +3 -2
- package/dist/stepper.js +2 -1
- package/dist/styles.css +24 -0
- package/dist/styles.css.map +1 -1
- package/dist/switch.cjs +3 -3
- package/dist/switch.js +2 -2
- package/dist/table.cjs +11 -11
- package/dist/table.js +1 -1
- package/dist/tabs.cjs +4 -3
- package/dist/tabs.js +2 -1
- package/dist/textarea.cjs +6 -6
- package/dist/textarea.js +5 -5
- package/dist/time-grid.cjs +3 -2
- package/dist/time-grid.js +2 -1
- package/dist/time-picker.cjs +2 -2
- package/dist/time-picker.js +1 -1
- package/dist/timeline.cjs +4 -4
- package/dist/timeline.js +1 -1
- package/dist/toast.cjs +4 -3
- package/dist/toast.d.cts +6 -2
- package/dist/toast.d.ts +6 -2
- package/dist/toast.js +2 -1
- package/dist/tooltip.cjs +4 -3
- package/dist/tooltip.js +3 -2
- package/dist/tree-nav.cjs +3 -3
- package/dist/tree-nav.js +1 -1
- package/docs/Dropdown.md +1 -1
- package/docs/InputTag.md +1 -1
- package/docs/MobileMenu.md +2 -2
- package/docs/Popover.md +1 -1
- package/docs/QrCode.md +108 -0
- package/docs/ReorderableGrid.md +2 -0
- package/docs/ResizablePanels.md +2 -0
- package/docs/Toast.md +2 -2
- package/package.json +1 -1
- package/dist/chunk-25HRO7HQ.cjs.map +0 -1
- package/dist/chunk-2O5UXH5R.cjs.map +0 -1
- package/dist/chunk-37D5PYEF.js.map +0 -1
- package/dist/chunk-3S5ED522.js.map +0 -1
- package/dist/chunk-4DL2U23D.cjs.map +0 -1
- package/dist/chunk-5EW47IH7.js.map +0 -1
- package/dist/chunk-5TP642UT.js.map +0 -1
- package/dist/chunk-6GVOW3UL.js.map +0 -1
- package/dist/chunk-AE53RKWR.cjs.map +0 -1
- package/dist/chunk-AJPYGRLA.cjs.map +0 -1
- package/dist/chunk-BXPLERIJ.js.map +0 -1
- package/dist/chunk-BYO5RUDE.cjs.map +0 -1
- package/dist/chunk-CEFK54WP.cjs.map +0 -1
- package/dist/chunk-CQ7QXZLR.cjs.map +0 -1
- package/dist/chunk-DJYG7DXS.js.map +0 -1
- package/dist/chunk-DTOIO42M.js.map +0 -1
- package/dist/chunk-DXZCKDYS.js.map +0 -1
- package/dist/chunk-ESCIXKFT.js.map +0 -1
- package/dist/chunk-EUVWYDFN.js.map +0 -1
- package/dist/chunk-F4OYQ2XZ.js.map +0 -1
- package/dist/chunk-FKZB27OM.cjs.map +0 -1
- package/dist/chunk-FR4RHVPR.js.map +0 -1
- package/dist/chunk-FVQO75KY.cjs.map +0 -1
- package/dist/chunk-GDF6XTHC.js.map +0 -1
- package/dist/chunk-GR2WKBER.js.map +0 -1
- package/dist/chunk-GTS3QA7M.js.map +0 -1
- package/dist/chunk-HLI6RB5V.cjs.map +0 -1
- package/dist/chunk-HNJXBMHI.cjs.map +0 -1
- package/dist/chunk-J2DI6RMR.cjs.map +0 -1
- package/dist/chunk-JY2RC6I4.js.map +0 -1
- package/dist/chunk-KFA7B6WP.cjs.map +0 -1
- package/dist/chunk-KOAMRCSC.cjs.map +0 -1
- package/dist/chunk-KOTUFZJ6.cjs.map +0 -1
- package/dist/chunk-LFC2DL6H.cjs.map +0 -1
- package/dist/chunk-LKN7FYW6.js.map +0 -1
- package/dist/chunk-MI57NAKF.js.map +0 -1
- package/dist/chunk-MKGWHSNV.cjs.map +0 -1
- package/dist/chunk-MLZGGAXQ.js.map +0 -1
- package/dist/chunk-MPCZUZ4O.cjs.map +0 -1
- package/dist/chunk-MQ6VGG62.js.map +0 -1
- package/dist/chunk-NSJBVV7R.js.map +0 -1
- package/dist/chunk-NVXTHTJI.js.map +0 -1
- package/dist/chunk-O5ORO2RX.cjs.map +0 -1
- package/dist/chunk-OASSZI6M.cjs.map +0 -1
- package/dist/chunk-PCNJJVTF.cjs.map +0 -1
- package/dist/chunk-PDVU2PXR.js.map +0 -1
- package/dist/chunk-PJNUGSKI.js.map +0 -1
- package/dist/chunk-PM5I5ZHK.cjs.map +0 -1
- package/dist/chunk-PXZRYL5I.js.map +0 -1
- package/dist/chunk-QF2FODTG.js.map +0 -1
- package/dist/chunk-QGY5FPVM.js.map +0 -1
- package/dist/chunk-QP6VNKLW.cjs.map +0 -1
- package/dist/chunk-QTS4Q2NK.js.map +0 -1
- package/dist/chunk-RANTYGKW.js.map +0 -1
- package/dist/chunk-RLE5WYY6.js.map +0 -1
- package/dist/chunk-RSLZL6VP.js.map +0 -1
- package/dist/chunk-RWU2MFUL.js.map +0 -1
- package/dist/chunk-RZUYCZ5D.cjs.map +0 -1
- package/dist/chunk-SKMORSBO.cjs.map +0 -1
- package/dist/chunk-SSCW67KA.cjs.map +0 -1
- package/dist/chunk-SXXDTW7S.js.map +0 -1
- package/dist/chunk-TFX4LL7V.js.map +0 -1
- package/dist/chunk-TMQF2CRN.js.map +0 -1
- package/dist/chunk-UK6BGM74.cjs.map +0 -1
- package/dist/chunk-UXYFM2XT.cjs.map +0 -1
- package/dist/chunk-VZTXUYPM.cjs.map +0 -1
- package/dist/chunk-WMANILKC.cjs.map +0 -1
- package/dist/chunk-WNUAGRQN.cjs.map +0 -1
- package/dist/chunk-WZAKEJDL.js.map +0 -1
- package/dist/chunk-X2A3NAJW.js.map +0 -1
- package/dist/chunk-XZOBGKZL.cjs.map +0 -1
- package/dist/chunk-Y3QAEF2P.cjs.map +0 -1
- package/dist/chunk-YQZB5Z7C.cjs.map +0 -1
- package/dist/chunk-Z44A7NPD.cjs.map +0 -1
- package/dist/chunk-Z4UXLQSK.cjs.map +0 -1
- package/dist/chunk-Z7SQMQTF.cjs.map +0 -1
- package/dist/chunk-ZPBKRJMH.js.map +0 -1
- package/dist/chunk-ZVDW2VX5.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/QrCode/qr-tables.ts","../src/components/QrCode/qr-encode.ts","../src/components/QrCode/qr-path.ts","../src/components/QrCode/QrCode.tsx","../src/components/QrCode/qr-export.ts","../src/components/QrCode/QrCodePanel.tsx"],"names":["dataCodewords","forwardRef","pngScale","text","jsxs","jsx"],"mappings":"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","file":"chunk-GZSRKBYI.js","sourcesContent":["/**\n * ISO/IEC 18004 table data for the QR encoder. **Data, not logic** — kept in\n * its own module so the algorithm beside it can be read without scrolling past\n * 160 rows, and so a correction here is a diff that cannot touch behaviour.\n *\n * There is no formula for these: the block structure per version and error\n * correction level is a table in the standard. They were taken from the\n * published error-correction table at\n * <https://www.thonky.com/qr-code-tutorial/error-correction-table> rather than\n * recalled, and every row is checked by `qr-code.test.tsx` against three\n * equations that must all hold simultaneously:\n *\n * 1. `dataCodewords === g1Blocks * g1Size + g2Blocks * g2Size`\n * 2. `totalCodewords === dataCodewords + ecPerBlock * (g1Blocks + g2Blocks)`\n * 3. `totalCodewords === rawDataModules(version) / 8`, where\n * `rawDataModules` is counted from the matrix THIS code builds.\n *\n * The third is the one worth having: it ties a transcribed table to an\n * independently constructed matrix, so a mistyped row, a wrong alignment\n * pattern position and a wrong function-pattern layout cannot all agree.\n */\n\n/** Error correction level. Higher levels survive more damage and hold less. */\nexport type QrErrorCorrection = 'L' | 'M' | 'Q' | 'H';\n\nexport const EC_LEVELS: readonly QrErrorCorrection[] = ['L', 'M', 'Q', 'H'];\n\n/** The 2-bit indicator each level carries in the format information. */\nexport const EC_FORMAT_BITS: Record<QrErrorCorrection, number> = {\n L: 0b01,\n M: 0b00,\n Q: 0b11,\n H: 0b10,\n};\n\nexport interface BlockLayout {\n /** Data codewords in the whole symbol. */\n dataCodewords: number;\n /** Error correction codewords per block — the same for every block. */\n ecPerBlock: number;\n /** Blocks in group 1, and how many data codewords each holds. */\n g1Blocks: number;\n g1Size: number;\n /** Blocks in group 2 (always `g1Size + 1` each when present). */\n g2Blocks: number;\n g2Size: number;\n}\n\n/**\n * `[dataCodewords, ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size]` indexed by\n * `[version - 1]` then by EC level, in `L, M, Q, H` order.\n */\nconst BLOCK_TABLE: readonly (readonly [number, number, number, number, number, number])[][] = [\n // v1\n [[19, 7, 1, 19, 0, 0], [16, 10, 1, 16, 0, 0], [13, 13, 1, 13, 0, 0], [9, 17, 1, 9, 0, 0]],\n [[34, 10, 1, 34, 0, 0], [28, 16, 1, 28, 0, 0], [22, 22, 1, 22, 0, 0], [16, 28, 1, 16, 0, 0]],\n [[55, 15, 1, 55, 0, 0], [44, 26, 1, 44, 0, 0], [34, 18, 2, 17, 0, 0], [26, 22, 2, 13, 0, 0]],\n [[80, 20, 1, 80, 0, 0], [64, 18, 2, 32, 0, 0], [48, 26, 2, 24, 0, 0], [36, 16, 4, 9, 0, 0]],\n [[108, 26, 1, 108, 0, 0], [86, 24, 2, 43, 0, 0], [62, 18, 2, 15, 2, 16], [46, 22, 2, 11, 2, 12]],\n [[136, 18, 2, 68, 0, 0], [108, 16, 4, 27, 0, 0], [76, 24, 4, 19, 0, 0], [60, 28, 4, 15, 0, 0]],\n [[156, 20, 2, 78, 0, 0], [124, 18, 4, 31, 0, 0], [88, 18, 2, 14, 4, 15], [66, 26, 4, 13, 1, 14]],\n [[194, 24, 2, 97, 0, 0], [154, 22, 2, 38, 2, 39], [110, 22, 4, 18, 2, 19], [86, 26, 4, 14, 2, 15]],\n [[232, 30, 2, 116, 0, 0], [182, 22, 3, 36, 2, 37], [132, 20, 4, 16, 4, 17], [100, 24, 4, 12, 4, 13]],\n // v10\n [[274, 18, 2, 68, 2, 69], [216, 26, 4, 43, 1, 44], [154, 24, 6, 19, 2, 20], [122, 28, 6, 15, 2, 16]],\n [[324, 20, 4, 81, 0, 0], [254, 30, 1, 50, 4, 51], [180, 28, 4, 22, 4, 23], [140, 24, 3, 12, 8, 13]],\n [[370, 24, 2, 92, 2, 93], [290, 22, 6, 36, 2, 37], [206, 26, 4, 20, 6, 21], [158, 28, 7, 14, 4, 15]],\n [[428, 26, 4, 107, 0, 0], [334, 22, 8, 37, 1, 38], [244, 24, 8, 20, 4, 21], [180, 22, 12, 11, 4, 12]],\n [[461, 30, 3, 115, 1, 116], [365, 24, 4, 40, 5, 41], [261, 20, 11, 16, 5, 17], [197, 24, 11, 12, 5, 13]],\n [[523, 22, 5, 87, 1, 88], [415, 24, 5, 41, 5, 42], [295, 30, 5, 24, 7, 25], [223, 24, 11, 12, 7, 13]],\n [[589, 24, 5, 98, 1, 99], [453, 28, 7, 45, 3, 46], [325, 24, 15, 19, 2, 20], [253, 30, 3, 15, 13, 16]],\n [[647, 28, 1, 107, 5, 108], [507, 28, 10, 46, 1, 47], [367, 28, 1, 22, 15, 23], [283, 28, 2, 14, 17, 15]],\n [[721, 30, 5, 120, 1, 121], [563, 26, 9, 43, 4, 44], [397, 28, 17, 22, 1, 23], [313, 28, 2, 14, 19, 15]],\n [[795, 28, 3, 113, 4, 114], [627, 26, 3, 44, 11, 45], [445, 26, 17, 21, 4, 22], [341, 26, 9, 13, 16, 14]],\n // v20\n [[861, 28, 3, 107, 5, 108], [669, 26, 3, 41, 13, 42], [485, 30, 15, 24, 5, 25], [385, 28, 15, 15, 10, 16]],\n [[932, 28, 4, 116, 4, 117], [714, 26, 17, 42, 0, 0], [512, 28, 17, 22, 6, 23], [406, 30, 19, 16, 6, 17]],\n [[1006, 28, 2, 111, 7, 112], [782, 28, 17, 46, 0, 0], [568, 30, 7, 24, 16, 25], [442, 24, 34, 13, 0, 0]],\n [[1094, 30, 4, 121, 5, 122], [860, 28, 4, 47, 14, 48], [614, 30, 11, 24, 14, 25], [464, 30, 16, 15, 14, 16]],\n [[1174, 30, 6, 117, 4, 118], [914, 28, 6, 45, 14, 46], [664, 30, 11, 24, 16, 25], [514, 30, 30, 16, 2, 17]],\n [[1276, 26, 8, 106, 4, 107], [1000, 28, 8, 47, 13, 48], [718, 30, 7, 24, 22, 25], [538, 30, 22, 15, 13, 16]],\n [[1370, 28, 10, 114, 2, 115], [1062, 28, 19, 46, 4, 47], [754, 28, 28, 22, 6, 23], [596, 30, 33, 16, 4, 17]],\n [[1468, 30, 8, 122, 4, 123], [1128, 28, 22, 45, 3, 46], [808, 30, 8, 23, 26, 24], [628, 30, 12, 15, 28, 16]],\n [[1531, 30, 3, 117, 10, 118], [1193, 28, 3, 45, 23, 46], [871, 30, 4, 24, 31, 25], [661, 30, 11, 15, 31, 16]],\n [[1631, 30, 7, 116, 7, 117], [1267, 28, 21, 45, 7, 46], [911, 30, 1, 23, 37, 24], [701, 30, 19, 15, 26, 16]],\n // v30\n [[1735, 30, 5, 115, 10, 116], [1373, 28, 19, 47, 10, 48], [985, 30, 15, 24, 25, 25], [745, 30, 23, 15, 25, 16]],\n [[1843, 30, 13, 115, 3, 116], [1455, 28, 2, 46, 29, 47], [1033, 30, 42, 24, 1, 25], [793, 30, 23, 15, 28, 16]],\n [[1955, 30, 17, 115, 0, 0], [1541, 28, 10, 46, 23, 47], [1115, 30, 10, 24, 35, 25], [845, 30, 19, 15, 35, 16]],\n [[2071, 30, 17, 115, 1, 116], [1631, 28, 14, 46, 21, 47], [1171, 30, 29, 24, 19, 25], [901, 30, 11, 15, 46, 16]],\n [[2191, 30, 13, 115, 6, 116], [1725, 28, 14, 46, 23, 47], [1231, 30, 44, 24, 7, 25], [961, 30, 59, 16, 1, 17]],\n [[2306, 30, 12, 121, 7, 122], [1812, 28, 12, 47, 26, 48], [1286, 30, 39, 24, 14, 25], [986, 30, 22, 15, 41, 16]],\n [[2434, 30, 6, 121, 14, 122], [1914, 28, 6, 47, 34, 48], [1354, 30, 46, 24, 10, 25], [1054, 30, 2, 15, 64, 16]],\n [[2566, 30, 17, 122, 4, 123], [1992, 28, 29, 46, 14, 47], [1426, 30, 49, 24, 10, 25], [1096, 30, 24, 15, 46, 16]],\n [[2702, 30, 4, 122, 18, 123], [2102, 28, 13, 46, 32, 47], [1502, 30, 48, 24, 14, 25], [1142, 30, 42, 15, 32, 16]],\n [[2812, 30, 20, 117, 4, 118], [2216, 28, 40, 47, 7, 48], [1582, 30, 43, 24, 22, 25], [1222, 30, 10, 15, 67, 16]],\n // v40\n [[2956, 30, 19, 118, 6, 119], [2334, 28, 18, 47, 31, 48], [1666, 30, 34, 24, 34, 25], [1276, 30, 20, 15, 61, 16]],\n];\n\nexport const MIN_VERSION = 1;\nexport const MAX_VERSION = 40;\n\n/** Block structure for a version and error correction level. */\nexport function blockLayout(version: number, ec: QrErrorCorrection): BlockLayout {\n const row = BLOCK_TABLE[version - 1]?.[EC_LEVELS.indexOf(ec)];\n if (!row) {\n throw new RangeError(`No block layout for version ${version} level ${ec}`);\n }\n const [dataCodewords, ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size] = row;\n return { dataCodewords, ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size };\n}\n\n/**\n * The 15-bit format information for a level and mask, as published.\n *\n * These are a BCH(15,5) code XOR'd with a fixed mask, so they could be\n * computed — and the first draft did compute them. They are listed instead\n * because the computation and its verification would then share one\n * implementation: a wrong generator polynomial would produce a wrong table and\n * a test that agreed with it. A transcribed table cannot agree with a bug.\n *\n * Source: <https://www.thonky.com/qr-code-tutorial/format-version-tables>.\n * Indexed `[level][mask]`.\n */\nexport const FORMAT_BITS: Record<QrErrorCorrection, readonly number[]> = {\n L: [\n 0b111011111000100, 0b111001011110011, 0b111110110101010, 0b111100010011101,\n 0b110011000101111, 0b110001100011000, 0b110110001000001, 0b110100101110110,\n ],\n M: [\n 0b101010000010010, 0b101000100100101, 0b101111001111100, 0b101101101001011,\n 0b100010111111001, 0b100000011001110, 0b100111110010111, 0b100101010100000,\n ],\n Q: [\n 0b011010101011111, 0b011000001101000, 0b011111100110001, 0b011101000000110,\n 0b010010010110100, 0b010000110000011, 0b010111011011010, 0b010101111101101,\n ],\n H: [\n 0b001011010001001, 0b001001110111110, 0b001110011100111, 0b001100111010000,\n 0b000011101100010, 0b000001001010101, 0b000110100001100, 0b000100000111011,\n ],\n};\n\n/**\n * The 18-bit version information, present only for versions 7 and up.\n *\n * A BCH(18,6) code. Computed rather than tabled — 34 rows of 18 bits is more\n * transcription risk than the arithmetic is, and unlike the format bits there\n * are published values for versions 7, 8, 9, 10 and 40 to check it against,\n * which the test does.\n */\nexport function versionBits(version: number): number {\n let remainder = version;\n for (let i = 0; i < 12; i += 1) {\n remainder = (remainder << 1) ^ ((remainder >>> 11) * 0b1111100100101);\n }\n return ((version << 12) | remainder) >>> 0;\n}\n\n/**\n * Centre coordinates of the alignment patterns for a version.\n *\n * Derived rather than tabled, and the derivation is checked by the codeword\n * count equation in the test: a wrong position changes how many modules are\n * free for data, so the count would not match the block table.\n *\n * Version 32 is a genuine special case in the standard — its spacing does not\n * follow the rule the other versions do.\n */\nexport function alignmentPositions(version: number): number[] {\n if (version === 1) {\n return [];\n }\n const count = Math.floor(version / 7) + 2;\n const size = version * 4 + 17;\n const step = version === 32 ? 26 : Math.ceil((size - 13) / (count * 2 - 2)) * 2;\n\n const positions = [6];\n for (let pos = size - 7; positions.length < count; pos -= step) {\n positions.unshift(pos);\n }\n return positions.sort((a, b) => a - b);\n}\n","/**\n * A QR encoder, dependency-free.\n *\n * ISO/IEC 18004, versions 1–40, error correction L/M/Q/H, with numeric,\n * alphanumeric and byte modes and automatic selection between them. No\n * Kanji mode and no structured append — neither has a caller here, and an\n * untested branch in an encoder is worse than an absent one because the\n * failure is a code a phone silently refuses to read.\n *\n * Table data and its provenance live in `./qr-tables`.\n */\nimport {\n EC_FORMAT_BITS,\n FORMAT_BITS,\n MAX_VERSION,\n MIN_VERSION,\n alignmentPositions,\n blockLayout,\n versionBits,\n type QrErrorCorrection,\n} from './qr-tables';\n\nexport type { QrErrorCorrection };\n\n/** Which encoding mode a value is carried in. */\nexport type QrMode = 'numeric' | 'alphanumeric' | 'byte';\n\nconst MODE_INDICATOR: Record<QrMode, number> = { numeric: 0b0001, alphanumeric: 0b0010, byte: 0b0100 };\n\n/** The character set alphanumeric mode can carry, in its own index order. */\nconst ALPHANUMERIC = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:';\n\nexport interface QrSymbol {\n /** `size * size` modules, row-major. `true` is dark. */\n modules: boolean[][];\n /** Modules per side, `version * 4 + 17`. */\n size: number;\n version: number;\n errorCorrection: QrErrorCorrection;\n mode: QrMode;\n /** The mask pattern chosen by penalty scoring, 0–7. */\n mask: number;\n}\n\n// --- Galois field GF(256) --------------------------------------------------\n// Reed-Solomon over the field the standard specifies: primitive polynomial\n// x^8 + x^4 + x^3 + x^2 + 1 (0x11d), generator 2.\n\nconst EXP = new Uint8Array(256);\nconst LOG = new Uint8Array(256);\n{\n let x = 1;\n for (let i = 0; i < 255; i += 1) {\n EXP[i] = x;\n LOG[x] = i;\n x <<= 1;\n if (x & 0x100) {\n x ^= 0x11d;\n }\n }\n EXP[255] = EXP[0] as number;\n}\n\nfunction gfMul(a: number, b: number): number {\n if (a === 0 || b === 0) {\n return 0;\n }\n return EXP[((LOG[a] as number) + (LOG[b] as number)) % 255] as number;\n}\n\n/** The generator polynomial for `degree` error correction codewords. */\nfunction generatorPoly(degree: number): number[] {\n let poly = [1];\n for (let i = 0; i < degree; i += 1) {\n const next = new Array<number>(poly.length + 1).fill(0);\n for (let j = 0; j < poly.length; j += 1) {\n next[j] = (next[j] as number) ^ (poly[j] as number);\n next[j + 1] = (next[j + 1] as number) ^ gfMul(poly[j] as number, EXP[i] as number);\n }\n poly = next;\n }\n return poly;\n}\n\n/** Reed-Solomon remainder — the error correction codewords for one block. */\nfunction reedSolomon(data: readonly number[], degree: number): number[] {\n const generator = generatorPoly(degree);\n const remainder = new Array<number>(degree).fill(0);\n for (const byte of data) {\n const factor = byte ^ (remainder.shift() as number);\n remainder.push(0);\n for (let i = 0; i < degree; i += 1) {\n remainder[i] = (remainder[i] as number) ^ gfMul(generator[i + 1] as number, factor);\n }\n }\n return remainder;\n}\n\n// --- Mode selection and bit encoding ---------------------------------------\n\n/**\n * The narrowest mode that can carry `value`.\n *\n * Narrower is denser: numeric packs 3 digits into 10 bits where byte mode\n * would spend 24. A six-digit pairing PIN is a third of the size as numeric,\n * which is the difference between a code a phone reads across a desk and one\n * it does not.\n */\nexport function selectMode(value: string): QrMode {\n if (/^[0-9]*$/.test(value)) {\n return 'numeric';\n }\n if ([...value].every((char) => ALPHANUMERIC.includes(char))) {\n return 'alphanumeric';\n }\n return 'byte';\n}\n\n/** Bits in the character count indicator — it widens with version. */\nfunction countBits(mode: QrMode, version: number): number {\n const tier = version <= 9 ? 0 : version <= 26 ? 1 : 2;\n if (mode === 'numeric') {\n return [10, 12, 14][tier] as number;\n }\n if (mode === 'alphanumeric') {\n return [9, 11, 13][tier] as number;\n }\n return [8, 16, 16][tier] as number;\n}\n\nclass BitBuffer {\n readonly bits: number[] = [];\n\n push(value: number, length: number): void {\n for (let i = length - 1; i >= 0; i -= 1) {\n this.bits.push((value >>> i) & 1);\n }\n }\n}\n\n/** UTF-8 bytes for a string, without TextEncoder — jsdom and SSR both agree. */\nfunction utf8Bytes(value: string): number[] {\n const out: number[] = [];\n for (const char of value) {\n const code = char.codePointAt(0) as number;\n if (code < 0x80) {\n out.push(code);\n } else if (code < 0x800) {\n out.push(0xc0 | (code >> 6), 0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n out.push(0xe0 | (code >> 12), 0x80 | ((code >> 6) & 0x3f), 0x80 | (code & 0x3f));\n } else {\n out.push(\n 0xf0 | (code >> 18),\n 0x80 | ((code >> 12) & 0x3f),\n 0x80 | ((code >> 6) & 0x3f),\n 0x80 | (code & 0x3f),\n );\n }\n }\n return out;\n}\n\n/** The payload's own bits, before terminator and padding. */\nfunction encodePayload(value: string, mode: QrMode, version: number): BitBuffer {\n const buffer = new BitBuffer();\n buffer.push(MODE_INDICATOR[mode], 4);\n\n if (mode === 'numeric') {\n buffer.push(value.length, countBits(mode, version));\n for (let i = 0; i < value.length; i += 3) {\n const group = value.slice(i, i + 3);\n buffer.push(Number.parseInt(group, 10), group.length * 3 + 1);\n }\n return buffer;\n }\n\n if (mode === 'alphanumeric') {\n buffer.push(value.length, countBits(mode, version));\n for (let i = 0; i < value.length; i += 2) {\n const first = ALPHANUMERIC.indexOf(value[i] as string);\n if (i + 1 < value.length) {\n buffer.push(first * 45 + ALPHANUMERIC.indexOf(value[i + 1] as string), 11);\n } else {\n buffer.push(first, 6);\n }\n }\n return buffer;\n }\n\n const bytes = utf8Bytes(value);\n buffer.push(bytes.length, countBits(mode, version));\n for (const byte of bytes) {\n buffer.push(byte, 8);\n }\n return buffer;\n}\n\n/** How many bits the payload needs at a given version, mode included. */\nfunction payloadBits(value: string, mode: QrMode, version: number): number {\n return encodePayload(value, mode, version).bits.length;\n}\n\n/**\n * The most characters any mode can carry, at version 40 level L.\n *\n * DERIVED from the block table rather than transcribed, so it cannot disagree\n * with the capacities the encoder actually enforces. (The published figures\n * are 7089 / 4296 / 2953, and the test asserts these match them.)\n */\nexport function maxCharacters(mode: QrMode): number {\n const bits = blockLayout(MAX_VERSION, 'L').dataCodewords * 8 - 4 - countBits(mode, MAX_VERSION);\n if (mode === 'numeric') {\n return Math.floor((bits * 3) / 10);\n }\n if (mode === 'alphanumeric') {\n return Math.floor((bits * 2) / 11);\n }\n return Math.floor(bits / 8);\n}\n\n/** The largest capacity of any mode — the cheapest possible rejection. */\nconst ABSOLUTE_MAX_CHARACTERS = maxCharacters('numeric');\n\n/**\n * Reject an impossible value in O(1), before anything walks it.\n *\n * `value` is text this code did not author, and it reaches consumers two ways:\n * the package, and as VENDORED SOURCE via `fancy-cli add qr-code` — which\n * carries no manifest, so nothing watches it. So the question is what a hostile\n * caller gets out of it, and the answer used to be: a lot of work for free.\n *\n * `selectVersion` walks versions 1-40 and re-encoded the payload at each one,\n * so a value too long to fit was encoded FORTY times before being refused.\n * Measured on the built bundle: 342 ms for 100 kB, 2.0 s for 500 kB, linear —\n * so a few megabytes through `<QrCode value={userInput} />` blocks the main\n * thread for tens of seconds. The refusal was always correct; it was the COST\n * of the refusal that was the defect.\n *\n * A character count can only ever be <= the byte count, so a string longer than\n * the largest capacity cannot fit in any mode and is refused from `.length`\n * alone, touching none of it.\n */\nfunction tooLongToFit(value: string, mode: QrMode | null): boolean {\n if (value.length > ABSOLUTE_MAX_CHARACTERS) {\n return true;\n }\n return mode !== null && value.length > maxCharacters(mode);\n}\n\n/** The smallest version that fits, or `null` when nothing does. */\nfunction selectVersion(\n value: string,\n mode: QrMode,\n ec: QrErrorCorrection,\n minVersion: number,\n): number | null {\n // The payload's bit length depends on the version ONLY through the width of\n // the character-count indicator, which has three tiers. So it is computed at\n // most three times rather than once per version — which also makes the\n // legitimate path cheaper for a large value, not just the hostile one.\n const bitsForTier = new Map<number, number>();\n for (let version = Math.max(minVersion, MIN_VERSION); version <= MAX_VERSION; version += 1) {\n const width = countBits(mode, version);\n let bits = bitsForTier.get(width);\n if (bits === undefined) {\n bits = payloadBits(value, mode, version);\n bitsForTier.set(width, bits);\n }\n if (bits <= blockLayout(version, ec).dataCodewords * 8) {\n return version;\n }\n }\n return null;\n}\n\n/**\n * Data codewords: payload, terminator, pad to a byte, then alternating pad\n * bytes. Exported for the golden-vector test, which asserts these against the\n * standard's published worked example.\n */\nexport function dataCodewords(value: string, mode: QrMode, version: number, ec: QrErrorCorrection): number[] {\n const capacity = blockLayout(version, ec).dataCodewords * 8;\n const buffer = encodePayload(value, mode, version);\n\n // Terminator: up to four zero bits, truncated if capacity runs out.\n buffer.push(0, Math.min(4, capacity - buffer.bits.length));\n // Then to a byte boundary.\n buffer.push(0, (8 - (buffer.bits.length % 8)) % 8);\n\n const codewords: number[] = [];\n for (let i = 0; i < buffer.bits.length; i += 8) {\n let byte = 0;\n for (let bit = 0; bit < 8; bit += 1) {\n byte = (byte << 1) | (buffer.bits[i + bit] as number);\n }\n codewords.push(byte);\n }\n\n // Pad bytes 0b11101100 / 0b00010001, alternating, as the standard specifies.\n const target = capacity / 8;\n for (let i = 0; codewords.length < target; i += 1) {\n codewords.push(i % 2 === 0 ? 0xec : 0x11);\n }\n return codewords;\n}\n\n/**\n * Split into blocks, compute error correction, and interleave.\n *\n * Interleaving is what makes the error correction work as advertised: a blot\n * on the printed symbol damages a contiguous run of modules, and interleaving\n * spreads that run across every block so no single block exceeds its own\n * correction budget. Concatenating instead would produce a scannable code that\n * fails far sooner than its level claims — passing a round-trip test and\n * failing on paper.\n */\nexport function interleave(codewords: readonly number[], version: number, ec: QrErrorCorrection): number[] {\n const { ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size } = blockLayout(version, ec);\n\n const dataBlocks: number[][] = [];\n let offset = 0;\n for (let i = 0; i < g1Blocks; i += 1) {\n dataBlocks.push(codewords.slice(offset, offset + g1Size));\n offset += g1Size;\n }\n for (let i = 0; i < g2Blocks; i += 1) {\n dataBlocks.push(codewords.slice(offset, offset + g2Size));\n offset += g2Size;\n }\n\n const ecBlocks = dataBlocks.map((block) => reedSolomon(block, ecPerBlock));\n\n const result: number[] = [];\n const widest = Math.max(g1Size, g2Blocks > 0 ? g2Size : 0);\n for (let i = 0; i < widest; i += 1) {\n for (const block of dataBlocks) {\n if (i < block.length) {\n result.push(block[i] as number);\n }\n }\n }\n for (let i = 0; i < ecPerBlock; i += 1) {\n for (const block of ecBlocks) {\n result.push(block[i] as number);\n }\n }\n return result;\n}\n\n// --- Matrix construction ---------------------------------------------------\n\nexport type Grid = (boolean | null)[][];\n\n/**\n * A grid with every function pattern placed and data positions left `null`.\n *\n * Exported for verification. The round-trip decoder in the test needs to know\n * which modules carry data, and reconstructing that knowledge separately would\n * duplicate the layout and share its bugs. Using the same template is safe\n * here because the table-consistency check anchors it to an independent fact:\n * the number of free modules must equal the codeword count in the transcribed\n * block table, so a wrong finder, timing or alignment layout fails there.\n */\nexport function reservedModules(version: number): Grid {\n const size = version * 4 + 17;\n const grid: Grid = Array.from({ length: size }, () => new Array<boolean | null>(size).fill(null));\n\n const set = (row: number, col: number, dark: boolean): void => {\n (grid[row] as (boolean | null)[])[col] = dark;\n };\n\n // Three finder patterns with their separators.\n for (const [baseRow, baseCol] of [\n [0, 0],\n [0, size - 7],\n [size - 7, 0],\n ] as const) {\n for (let row = -1; row <= 7; row += 1) {\n for (let col = -1; col <= 7; col += 1) {\n const r = baseRow + row;\n const c = baseCol + col;\n if (r < 0 || r >= size || c < 0 || c >= size) {\n continue;\n }\n const ring = Math.max(Math.abs(row - 3), Math.abs(col - 3));\n set(r, c, ring !== 2 && ring <= 3);\n }\n }\n }\n\n // Timing patterns, row and column 6.\n for (let i = 0; i < size; i += 1) {\n if ((grid[6] as (boolean | null)[])[i] === null) {\n set(6, i, i % 2 === 0);\n }\n if ((grid[i] as (boolean | null)[])[6] === null) {\n set(i, 6, i % 2 === 0);\n }\n }\n\n // Alignment patterns, except where a finder already sits.\n const positions = alignmentPositions(version);\n for (const row of positions) {\n for (const col of positions) {\n const nearFinder =\n (row <= 8 && col <= 8) || (row <= 8 && col >= size - 9) || (row >= size - 9 && col <= 8);\n if (nearFinder) {\n continue;\n }\n for (let dr = -2; dr <= 2; dr += 1) {\n for (let dc = -2; dc <= 2; dc += 1) {\n const ring = Math.max(Math.abs(dr), Math.abs(dc));\n set(row + dr, col + dc, ring !== 1);\n }\n }\n }\n }\n\n // Format information areas, reserved now and written after masking. The\n // module at (size - 8, 8) is always dark.\n for (let i = 0; i < 9; i += 1) {\n if ((grid[8] as (boolean | null)[])[i] === null) {\n set(8, i, false);\n }\n if ((grid[i] as (boolean | null)[])[8] === null) {\n set(i, 8, false);\n }\n }\n for (let i = 0; i < 8; i += 1) {\n set(8, size - 1 - i, false);\n set(size - 1 - i, 8, false);\n }\n set(size - 8, 8, true);\n\n // Version information, versions 7 and up.\n if (version >= 7) {\n const bits = versionBits(version);\n for (let i = 0; i < 18; i += 1) {\n const bit = ((bits >>> i) & 1) === 1;\n set(Math.floor(i / 3), size - 11 + (i % 3), bit);\n set(size - 11 + (i % 3), Math.floor(i / 3), bit);\n }\n }\n\n return grid;\n}\n\n/** How many modules a version leaves free for data, counted from the grid. */\nexport function rawDataModules(version: number): number {\n const grid = reservedModules(version);\n let free = 0;\n for (const row of grid) {\n for (const cell of row) {\n if (cell === null) {\n free += 1;\n }\n }\n }\n return free;\n}\n\n/** Place the interleaved codewords in the standard's zigzag order. */\nfunction placeData(grid: Grid, codewords: readonly number[]): void {\n const size = grid.length;\n let bitIndex = 0;\n const nextBit = (): boolean => {\n const byte = codewords[bitIndex >>> 3];\n // Past the end is a remainder bit: light, per the standard.\n const bit = byte === undefined ? 0 : (byte >>> (7 - (bitIndex & 7))) & 1;\n bitIndex += 1;\n return bit === 1;\n };\n\n let upward = true;\n for (let right = size - 1; right >= 1; right -= 2) {\n // Column 6 is the vertical timing pattern; the pair of columns skips it.\n const pair = right === 6 ? [5, 4] : [right, right - 1];\n for (let step = 0; step < size; step += 1) {\n const row = upward ? size - 1 - step : step;\n for (const col of pair) {\n if ((grid[row] as (boolean | null)[])[col] === null) {\n (grid[row] as (boolean | null)[])[col] = nextBit();\n }\n }\n }\n if (right === 6) {\n right -= 1;\n }\n upward = !upward;\n }\n}\n\n/** The eight mask conditions. `true` means invert this module. */\nfunction maskCondition(mask: number, row: number, col: number): boolean {\n switch (mask) {\n case 0:\n return (row + col) % 2 === 0;\n case 1:\n return row % 2 === 0;\n case 2:\n return col % 3 === 0;\n case 3:\n return (row + col) % 3 === 0;\n case 4:\n return (Math.floor(row / 2) + Math.floor(col / 3)) % 2 === 0;\n case 5:\n return ((row * col) % 2) + ((row * col) % 3) === 0;\n case 6:\n return (((row * col) % 2) + ((row * col) % 3)) % 2 === 0;\n default:\n return (((row + col) % 2) + ((row * col) % 3)) % 2 === 0;\n }\n}\n\n/**\n * The four penalty rules, scored on a finished candidate.\n *\n * This is the step that is easy to skip and expensive to skip: the rules exist\n * because some masks leave large light or dark areas, or patterns that look\n * like a finder, and a decoder locks onto the wrong feature. A symbol with a\n * badly chosen mask still decodes in software and fails under a phone camera —\n * which is the worst possible place for it to fail, because every test here\n * would pass.\n */\nexport function penalty(modules: readonly boolean[][]): number {\n const size = modules.length;\n let score = 0;\n\n // Rule 1: runs of five or more same-coloured modules in a line.\n const scoreLine = (run: number): number => (run >= 5 ? run - 2 : 0);\n for (let i = 0; i < size; i += 1) {\n for (const horizontal of [true, false]) {\n let run = 1;\n for (let j = 1; j < size; j += 1) {\n const prev = horizontal\n ? (modules[i] as boolean[])[j - 1]\n : (modules[j - 1] as boolean[])[i];\n const cur = horizontal ? (modules[i] as boolean[])[j] : (modules[j] as boolean[])[i];\n if (cur === prev) {\n run += 1;\n } else {\n score += scoreLine(run);\n run = 1;\n }\n }\n score += scoreLine(run);\n }\n }\n\n // Rule 2: every 2x2 block of one colour.\n for (let row = 0; row < size - 1; row += 1) {\n for (let col = 0; col < size - 1; col += 1) {\n const a = (modules[row] as boolean[])[col];\n if (\n a === (modules[row] as boolean[])[col + 1] &&\n a === (modules[row + 1] as boolean[])[col] &&\n a === (modules[row + 1] as boolean[])[col + 1]\n ) {\n score += 3;\n }\n }\n }\n\n // Rule 3: the finder-like 1:1:3:1:1 pattern with four light modules either\n // side. This is the rule that protects a decoder's pattern detection.\n const finderish = [true, false, true, true, true, false, true];\n const light4 = [false, false, false, false];\n const matches = (line: readonly boolean[], at: number, pattern: readonly boolean[]): boolean =>\n pattern.every((want, i) => line[at + i] === want);\n for (let i = 0; i < size; i += 1) {\n const row = modules[i] as boolean[];\n const col = modules.map((r) => (r as boolean[])[i] as boolean);\n for (const line of [row, col]) {\n for (let j = 0; j + 7 <= size; j += 1) {\n if (!matches(line, j, finderish)) {\n continue;\n }\n // Each ELEVEN-module window counts separately, so a pattern with four\n // light modules on BOTH sides scores 80 rather than 40.\n //\n // The prose rule (\"add 40 each time the pattern appears with four\n // light modules on either side\") is ambiguous about that case, and it\n // matters: this score is what picks the mask, and the wrong mask\n // produces a symbol that decodes perfectly in software and reads badly\n // under a camera. No test here can catch that -- so the convention is\n // pinned by a test instead, and this follows the one the reference\n // implementations use rather than the reading that happened to come\n // first.\n if (j >= 4 && matches(line, j - 4, light4)) {\n score += 40;\n }\n if (j + 11 <= size && matches(line, j + 7, light4)) {\n score += 40;\n }\n }\n }\n }\n\n // Rule 4: deviation of the dark-module proportion from 50%.\n let dark = 0;\n for (const row of modules) {\n for (const cell of row) {\n if (cell) {\n dark += 1;\n }\n }\n }\n const percent = (dark * 100) / (size * size);\n score += Math.floor(Math.abs(percent - 50) / 5) * 10;\n\n return score;\n}\n\n/** Write the 15 format bits into both of their locations. */\nfunction applyFormat(modules: boolean[][], ec: QrErrorCorrection, mask: number): void {\n const size = modules.length;\n const bits = (FORMAT_BITS[ec][mask] as number) >>> 0;\n const bit = (i: number): boolean => ((bits >>> i) & 1) === 1;\n\n // Bits 0-5 up the left column, bit 6 at (8,7)... the split placement is the\n // standard's, not a simplification of it.\n for (let i = 0; i <= 5; i += 1) {\n (modules[8] as boolean[])[i] = bit(14 - i);\n }\n (modules[8] as boolean[])[7] = bit(8);\n (modules[8] as boolean[])[8] = bit(7);\n (modules[7] as boolean[])[8] = bit(6);\n for (let i = 9; i <= 14; i += 1) {\n (modules[14 - i] as boolean[])[8] = bit(14 - i);\n }\n\n // The second copy, split across the other two corners: SEVEN modules up the\n // column beside the bottom-left finder, then EIGHT along the row beside the\n // top-right one.\n //\n // The 7/8 split is not arbitrary and getting it wrong is quiet. An 8/7 split\n // puts bit 7 at (size - 8, 8) -- which is the dark module, overwritten on\n // the next line -- so the symbol still decodes from the FIRST copy and\n // carries a corrupt second one. A reader that happens to use the second copy\n // refuses the symbol, and nothing in a round-trip test notices, because a\n // decoder reading the first copy never looks.\n for (let i = 0; i <= 6; i += 1) {\n (modules[size - 1 - i] as boolean[])[8] = bit(i);\n }\n for (let i = 7; i <= 14; i += 1) {\n (modules[8] as boolean[])[size - 15 + i] = bit(i);\n }\n (modules[size - 8] as boolean[])[8] = true;\n}\n\nexport interface EncodeOptions {\n errorCorrection?: QrErrorCorrection;\n /** Force a mode instead of selecting the narrowest that fits. */\n mode?: QrMode;\n /** Force a version. Throws if the value does not fit. */\n version?: number;\n /** Force a mask instead of scoring all eight. For tests and golden vectors. */\n mask?: number;\n}\n\n/**\n * Encode a string into a QR symbol.\n *\n * @throws RangeError when the value cannot fit, or when a forced version is\n * too small for it. **Throwing is deliberate**: the alternative is returning\n * a truncated symbol, which scans cleanly and yields the wrong string — a\n * silent corruption on the one surface whose entire job is to carry a value\n * accurately.\n */\nexport function encodeQr(value: string, options: EncodeOptions = {}): QrSymbol {\n const ec = options.errorCorrection ?? 'M';\n\n // Before `selectMode`, which walks the whole string. See `tooLongToFit`:\n // this is the difference between refusing a 5 MB value instantly and\n // spending tens of seconds on the main thread to reach the same answer.\n if (tooLongToFit(value, options.mode ?? null)) {\n throw new RangeError(\n `Value is too long for a QR code (${value.length} characters; the maximum any mode can carry is ${ABSOLUTE_MAX_CHARACTERS})`,\n );\n }\n\n const mode = options.mode ?? selectMode(value);\n if (tooLongToFit(value, mode)) {\n throw new RangeError(\n `Value is too long for a QR code in ${mode} mode (${value.length} characters; the maximum is ${maxCharacters(mode)})`,\n );\n }\n\n if (mode === 'numeric' && !/^[0-9]*$/.test(value)) {\n throw new RangeError('Numeric mode accepts digits only');\n }\n if (mode === 'alphanumeric' && ![...value].every((char) => ALPHANUMERIC.includes(char))) {\n throw new RangeError('Alphanumeric mode accepts 0-9 A-Z space and $%*+-./: only');\n }\n\n let version: number;\n if (options.version !== undefined) {\n if (options.version < MIN_VERSION || options.version > MAX_VERSION) {\n throw new RangeError(`Version must be ${MIN_VERSION}-${MAX_VERSION}`);\n }\n version = options.version;\n if (payloadBits(value, mode, version) > blockLayout(version, ec).dataCodewords * 8) {\n throw new RangeError(`Value does not fit in version ${version} at level ${ec}`);\n }\n } else {\n const chosen = selectVersion(value, mode, ec, MIN_VERSION);\n if (chosen === null) {\n throw new RangeError(\n `Value is too long for a QR code at level ${ec} (${value.length} characters)`,\n );\n }\n version = chosen;\n }\n\n const codewords = interleave(dataCodewords(value, mode, version, ec), version, ec);\n const template = reservedModules(version);\n\n const candidates: { mask: number; modules: boolean[][] }[] = [];\n const masksToTry = options.mask === undefined ? [0, 1, 2, 3, 4, 5, 6, 7] : [options.mask];\n for (const mask of masksToTry) {\n const grid = template.map((row) => [...row]);\n placeData(grid, codewords);\n const modules = grid.map((row, rowIndex) =>\n row.map((cell, colIndex) => {\n const value_ = cell as boolean;\n // Only data modules are masked; function patterns never are, which is\n // why the mask is applied against the TEMPLATE's null positions rather\n // than against the finished grid.\n const isData = (template[rowIndex] as (boolean | null)[])[colIndex] === null;\n return isData && maskCondition(mask, rowIndex, colIndex) ? !value_ : value_;\n }),\n );\n applyFormat(modules, ec, mask);\n candidates.push({ mask, modules });\n }\n\n const best = candidates.reduce((a, b) => (penalty(a.modules) <= penalty(b.modules) ? a : b));\n\n return {\n modules: best.modules,\n size: version * 4 + 17,\n version,\n errorCorrection: ec,\n mode,\n mask: best.mask,\n };\n}\n","/**\n * The SVG path for a symbol's dark modules, on a module-unit grid offset by the\n * quiet zone.\n *\n * ONE function draws every copy of a code: `<QrCode>` on screen, the SVG file\n * `qrCodeSvg` writes, and the PNG `qrCodePng` rasterises (the same string,\n * handed to `Path2D`). A file that differs from the code on screen is the\n * failure this exists to rule out, and three path builders would be three\n * chances for it.\n *\n * Horizontal runs of dark modules become one rectangle each rather than one\n * per module, which roughly halves the path for a typical symbol.\n */\nexport function modulePath(modules: readonly (readonly boolean[])[], quietZone: number): string {\n const size = modules.length;\n const parts: string[] = [];\n for (let row = 0; row < size; row += 1) {\n const line = modules[row] as readonly boolean[];\n let col = 0;\n while (col < size) {\n if (!line[col]) {\n col += 1;\n continue;\n }\n let run = 1;\n while (col + run < size && line[col + run]) {\n run += 1;\n }\n parts.push(`M${col + quietZone} ${row + quietZone}h${run}v1h-${run}z`);\n col += run;\n }\n }\n return parts.join(\"\");\n}\n","import { forwardRef, useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { encodeQr } from \"./qr-encode\";\nimport { modulePath } from \"./qr-path\";\nimport type { QrCodeProps } from \"./QrCode.types\";\n\n/**\n * A QR code, as an SVG, with no dependencies.\n *\n * ## Why SVG and one path\n *\n * The symbol is drawn as a **single `<path>`** of one-unit squares on a\n * `viewBox` sized in modules, not as a grid of `<rect>` elements. A version 10\n * symbol is 57x57 — over three thousand modules — and a rect each would be\n * three thousand DOM nodes for something that never changes. One path is one\n * node, and because the viewBox is in module units the symbol is resolution\n * independent: `size` scales it with no resampling, so it stays crisp at any\n * size and prints at the printer's resolution rather than the screen's.\n *\n * This matters more than it sounds for scanning. A raster QR code scaled to a\n * non-integer multiple of its module size gets blurred module edges, and a\n * scanner reading a blurred edge guesses. Vector output cannot have that\n * problem.\n *\n * ## `value` is any string — this is not a link component\n *\n * A QR code is a byte container, and most of what belongs in one is not a web\n * address: a serial or asset number, a lot code, a ticket id, a WiFi\n * credential block, a contact card, a `tel:` or `geo:` URI, plain text. Those\n * are the cases where the format earns its place, because they need no network\n * at all — the scanner reads the value and that IS the payload.\n *\n * ## It is an image of a value, not the value\n *\n * A QR code is unreadable to anyone without a second device pointed at the\n * screen — which includes every screen-reader user and anyone whose phone is\n * the device showing it. So `label` is required, and the value should ALSO be\n * selectable text beside it. A panel that shows only a code is one some people\n * cannot use at all.\n *\n * @example\n * ```tsx\n * // Any string. A digits-only value is numeric mode and a third the size.\n * <QrCode value=\"SN-4829-13\" size={192} label=\"Asset tag for pump 14\" />\n * <QrCode value=\"482913\" size={192} label=\"Order reference\" />\n *\n * // A payload with no network in it at all.\n * <QrCode value=\"WIFI:T:WPA;S:Guest;P:hunter2;;\" label=\"Join the guest WiFi\" />\n *\n * // A link is one payload among many, not the default case.\n * <QrCode value=\"https://example.com/menu\" label=\"Today's menu\" />\n *\n * // On a dark surface, set both colours: a transparent background renders\n * // dark-on-dark and will not scan.\n * <QrCode value={serial} label=\"Asset tag\" foreground=\"#0b0b0c\" background=\"#ffffff\" />\n * ```\n */\nexport const QrCode = forwardRef<SVGSVGElement, QrCodeProps>(\n (\n {\n value,\n size = 192,\n errorCorrection = \"M\",\n label,\n quietZone = 4,\n foreground = \"currentColor\",\n background = \"transparent\",\n mode,\n version,\n className,\n ...props\n },\n ref,\n ) => {\n // Encoding a version 40 symbol is real work (Reed-Solomon over 2,956\n // codewords, then eight masks scored). Nothing about it depends on `size`\n // or the colours, so it is memoised on the inputs that actually change it\n // — otherwise a parent re-render on hover re-encodes the whole symbol.\n const symbol = useMemo(\n () => encodeQr(value, { errorCorrection, mode, version }),\n [value, errorCorrection, mode, version],\n );\n\n const extent = symbol.size + quietZone * 2;\n\n // The same builder the SVG and PNG exports use, so a downloaded file is\n // the code on screen and not a second drawing of it.\n const path = useMemo(() => modulePath(symbol.modules, quietZone), [symbol, quietZone]);\n\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox={`0 0 ${extent} ${extent}`}\n role=\"img\"\n aria-label={label}\n // Nearest-neighbour rather than smoothing, for the rasterisers that\n // apply it anyway: a blurred module edge is a module a scanner has to\n // guess at.\n shapeRendering=\"crispEdges\"\n className={cn(\"fa-qr-code\", className)}\n {...props}\n >\n {background !== \"transparent\" && (\n <rect width={extent} height={extent} fill={background} />\n )}\n <path d={path} fill={foreground} />\n </svg>\n );\n },\n);\n\nQrCode.displayName = \"QrCode\";\n","import { encodeQr, type QrErrorCorrection, type QrMode } from \"./qr-encode\";\nimport { modulePath } from \"./qr-path\";\n\n/**\n * Files of a QR code: a standalone SVG and a PNG.\n *\n * Both are drawn from {@link modulePath}, the builder `<QrCode>` uses on\n * screen, so a downloaded file carries exactly the modules the person saw.\n *\n * ## A file is always opaque\n *\n * On screen a code can inherit its colours: `currentColor` modules on a\n * `transparent` background take whatever the page puts behind them. A file has\n * no page behind it. A PNG with a transparent background opens dark-on-dark in\n * every image viewer with a dark theme, and dark-on-dark does not scan. So in\n * a file, `transparent` (or no background) becomes white and `currentColor`\n * becomes black. Explicit colours are kept as given: choosing a dark\n * background is the caller's decision, and the docs say what it costs.\n */\n\nexport interface QrCodeFileOptions {\n /**\n * What the code is FOR, e.g. \"Your sign-up link\". Written into the SVG as\n * its `<title>` and accessible name, so the file still says what it is when\n * it is opened, attached or printed somewhere else. Required, as on\n * `<QrCode>`.\n */\n label: string;\n errorCorrection?: QrErrorCorrection;\n mode?: QrMode;\n version?: number;\n /** Modules of quiet zone. Default 4, the standard's minimum. */\n quietZone?: number;\n /** Module colour. Default and `currentColor` both mean `#000000`. */\n foreground?: string;\n /** Background colour. Default and `transparent` both mean `#ffffff`. */\n background?: string;\n}\n\nexport interface QrCodeSvgOptions extends QrCodeFileOptions {\n /** Width and height in pixels. Default: ten pixels per module. */\n size?: number;\n}\n\nexport interface QrCodePngOptions extends QrCodeFileOptions {\n /**\n * Pixels per module, rounded DOWN to a whole number. Default 10.\n *\n * Whole numbers only, because a module drawn across a fraction of a pixel\n * gets a blurred edge, and a scanner reading a blurred edge guesses. Clamped\n * to at least 1, and down so the image is at most 8192 pixels a side.\n */\n scale?: number;\n /**\n * The canvas to draw on. Default: a new `<canvas>`. Pass one to draw where\n * there is no `document` (an `OffscreenCanvas` will not do: it has no\n * `toBlob`) or to inspect the drawing in a test.\n */\n canvas?: HTMLCanvasElement;\n}\n\nconst DEFAULT_PIXELS_PER_MODULE = 10;\nconst MAX_PNG_SIDE = 8192;\nconst WHITE = \"#ffffff\";\nconst BLACK = \"#000000\";\n\nfunction fileBackground(colour: string | undefined): string {\n return colour === undefined || colour === \"\" || colour === \"transparent\" || colour === \"none\" ? WHITE : colour;\n}\n\nfunction fileForeground(colour: string | undefined): string {\n return colour === undefined || colour === \"\" || colour === \"currentColor\" ? BLACK : colour;\n}\n\nconst REPLACEMENT = String.fromCharCode(0xfffd);\n\n/**\n * Text XML 1.0 can carry: C0 controls other than tab, newline and return are\n * dropped (they are invalid even as character references), and a lone\n * surrogate becomes U+FFFD. Without this, one control character in a label\n * makes the whole file unparseable. A loop over code points, not a pattern.\n */\nfunction xmlChars(text: string): string {\n let out = \"\";\n for (const char of text) {\n const code = char.charCodeAt(0);\n if (code < 0x20 && code !== 0x09 && code !== 0x0a && code !== 0x0d) {\n continue;\n }\n out += char.length === 1 && code >= 0xd800 && code <= 0xdfff ? REPLACEMENT : char;\n }\n return out;\n}\n\n/** XML text and attribute escaping. One pass over a fixed character class. */\nfunction xml(text: string): string {\n return xmlChars(text).replace(/[&<>\"']/g, (char) => {\n switch (char) {\n case \"&\":\n return \"&\";\n case \"<\":\n return \"<\";\n case \">\":\n return \">\";\n case '\"':\n return \""\";\n default:\n return \"'\";\n }\n });\n}\n\nfunction symbolFor(value: string, options: QrCodeFileOptions) {\n const symbol = encodeQr(value, {\n errorCorrection: options.errorCorrection,\n mode: options.mode,\n version: options.version,\n });\n const quietZone = Math.max(0, Math.floor(options.quietZone ?? 4));\n return { symbol, quietZone, extent: symbol.size + quietZone * 2 };\n}\n\n/**\n * A QR code as a standalone SVG document, with an XML declaration, a\n * `<title>`, an accessible name and an opaque background.\n *\n * @throws RangeError when the value cannot fit, exactly as `encodeQr` does,\n * and as cheaply: an impossible value is refused from its length alone.\n */\nexport function qrCodeSvg(value: string, options: QrCodeSvgOptions): string {\n const { symbol, quietZone, extent } = symbolFor(value, options);\n const size =\n options.size !== undefined && Number.isFinite(options.size) && options.size > 0\n ? options.size\n : extent * DEFAULT_PIXELS_PER_MODULE;\n const label = xml(options.label);\n\n return (\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 ${extent} ${extent}\" shape-rendering=\"crispEdges\" role=\"img\" aria-label=\"${label}\">` +\n `<title>${label}</title>` +\n `<rect width=\"${extent}\" height=\"${extent}\" fill=\"${xml(fileBackground(options.background))}\"/>` +\n `<path d=\"${modulePath(symbol.modules, quietZone)}\" fill=\"${xml(fileForeground(options.foreground))}\"/>` +\n \"</svg>\\n\"\n );\n}\n\n/** Whole pixels per module for a symbol `extent` modules wide. */\nexport function pngScale(scale: number | undefined, extent: number): number {\n const wanted =\n scale === undefined || Number.isNaN(scale) ? DEFAULT_PIXELS_PER_MODULE : Math.floor(scale);\n const ceiling = Math.max(1, Math.floor(MAX_PNG_SIDE / extent));\n return Math.min(Math.max(1, wanted), ceiling);\n}\n\n/**\n * A QR code as a PNG, drawn on a canvas from the same path data as the SVG.\n *\n * It does not load the SVG into an `<img>` first. That route needs a `blob:`\n * or `data:` image, which a Content Security Policy of `img-src 'self'`\n * blocks, and the download would then fail on exactly the sites careful\n * enough to set one. `Path2D` takes the SVG path string directly, so the\n * geometry is the SVG's and nothing is fetched.\n *\n * The background is painted over the whole canvas, quiet zone included, before\n * any module. Each colour is set over a known default first: a canvas ignores\n * a colour it cannot parse and keeps the previous one, so an unreadable\n * background would otherwise inherit black and produce a black square.\n */\nexport function qrCodePng(value: string, options: QrCodePngOptions): Promise<Blob> {\n const { symbol, quietZone, extent } = symbolFor(value, options);\n const scale = pngScale(options.scale, extent);\n const canvas = options.canvas ?? document.createElement(\"canvas\");\n canvas.width = extent * scale;\n canvas.height = extent * scale;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return Promise.reject(new Error(\"Canvas 2D is unavailable, so no PNG can be drawn\"));\n }\n ctx.imageSmoothingEnabled = false;\n\n ctx.fillStyle = WHITE;\n ctx.fillStyle = fileBackground(options.background);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n ctx.setTransform(scale, 0, 0, scale, 0, 0);\n ctx.fillStyle = BLACK;\n ctx.fillStyle = fileForeground(options.foreground);\n ctx.fill(new Path2D(modulePath(symbol.modules, quietZone)));\n\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error(\"The browser produced no PNG for this canvas\"));\n }\n }, \"image/png\");\n });\n}\n\n/**\n * A download file name: letters, digits, `.`, `_` and `-`, at most 100\n * characters, with any other run replaced by one `-` and no leading or\n * trailing dot or dash (so no `..`, no path, no hidden file). `fallback` when\n * nothing is left.\n *\n * The one pattern is a single negated character class with one quantifier, so\n * it is linear: there is no way to match the same character two ways.\n */\nexport function safeFileName(name: string, fallback: string): string {\n const replaced = name.slice(0, 1000).replace(/[^A-Za-z0-9._-]+/g, \"-\");\n let start = 0;\n let end = replaced.length;\n while (start < end && (replaced[start] === \".\" || replaced[start] === \"-\")) {\n start += 1;\n }\n while (end > start && (replaced[end - 1] === \".\" || replaced[end - 1] === \"-\")) {\n end -= 1;\n }\n const trimmed = replaced.slice(start, Math.min(end, start + 100));\n return trimmed === \"\" ? fallback : trimmed;\n}\n","import { forwardRef, useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button/Button\";\nimport { QrCode } from \"./QrCode\";\nimport { qrCodePng, qrCodeSvg, safeFileName, type QrCodeFileOptions } from \"./qr-export\";\nimport type {\n QrCodeAction,\n QrCodeActionEvent,\n QrCodePanelLabels,\n QrCodePanelProps,\n} from \"./QrCodePanel.types\";\n\nconst DEFAULT_ACTIONS: readonly QrCodeAction[] = [\"download-svg\", \"download-png\", \"share\", \"print\"];\n\nconst DEFAULT_LABELS: QrCodePanelLabels = {\n downloadSvg: \"Download SVG\",\n downloadPng: \"Download PNG\",\n share: \"Share\",\n copyLink: \"Copy link\",\n copy: \"Copy\",\n print: \"Print\",\n downloaded: \"Downloaded\",\n shared: \"Shared\",\n copied: \"Copied\",\n printing: \"Opened the print dialog\",\n failed: \"That did not work\",\n};\n\nconst ICONS: Record<QrCodeAction, string> = {\n \"download-svg\": \"download\",\n \"download-png\": \"download\",\n share: \"share-2\",\n print: \"printer\",\n};\n\n/** `http:` or `https:`. Parsed by the platform, not matched by a pattern. */\nfunction isWebUrl(value: string): boolean {\n try {\n const url = new URL(value);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction message(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isAbort(error: unknown): boolean {\n return typeof error === \"object\" && error !== null && (error as { name?: unknown }).name === \"AbortError\";\n}\n\n/** Hand a blob to the browser as a download. */\nfunction saveBlob(blob: Blob, fileName: string): void {\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = fileName;\n anchor.rel = \"noopener\";\n anchor.click();\n // Revoked on the next task, not synchronously: some browsers start reading\n // the URL after `click()` returns.\n setTimeout(() => URL.revokeObjectURL(url), 0);\n}\n\nconst PRINT_FRAME = \"data-react-fancy-qr-code-print\";\n\n/**\n * A QR code with what a person does with one: download it as SVG or PNG,\n * share it (the Web Share sheet, or a copy where there is none), print it, and\n * read the value as text.\n *\n * ## Why a panel, and not props on `<QrCode>`\n *\n * `<QrCode>` is an `<svg>`: it drops into a label template, a PDF, a canvas or\n * a badge and draws a code, nothing else. Buttons, a live region and a print\n * frame inside an `<svg>` would be invalid markup, and making it a `<div>`\n * would break every caller that styles or measures it as an image. So the\n * actions compose AROUND it, the way `Card` composes its sections, and the\n * file formats are separate functions (`qrCodeSvg`, `qrCodePng`) that a host\n * or an agent can call without rendering anything.\n *\n * ## The code tile is light in dark mode too\n *\n * The panel draws black modules on a white tile, quiet zone included, in both\n * colour schemes. A QR code is read by contrast between dark modules and a\n * LIGHT surround; most scanners do not read an inverted code, and the quiet\n * zone must be the light colour for the finder patterns to be found. A dark\n * page around a white tile is fine. Black on white is 21:1, past WCAG AAA.\n *\n * ## Accessibility\n *\n * - The group is named by `label`, and so is the code inside it (`role=\"img\"`).\n * - `showValue` puts the value on screen as selectable text, because a code is\n * unusable to anyone who cannot point a second device at the screen.\n * - Every action is a react-fancy `Button` with a visible text label, in the\n * tab order, operable by Enter and Space, with the kit's `focus-visible`\n * ring. Default size `lg` is 44px tall, WCAG 2.5.5's AAA target size.\n * - What each action did is announced through a polite `role=\"status\"`.\n *\n * @example\n * ```tsx\n * <QrCodePanel\n * value=\"https://example.com/r/AbC123\"\n * label=\"Your sign-up link\"\n * showValue\n * fileName=\"sign-up-link\"\n * onAction={(event) => console.log(event)}\n * />\n * ```\n */\nexport const QrCodePanel = forwardRef<HTMLDivElement, QrCodePanelProps>(\n (\n {\n value,\n label,\n size = 192,\n errorCorrection = \"M\",\n quietZone = 4,\n foreground = \"#000000\",\n background = \"#ffffff\",\n mode,\n version,\n actions = DEFAULT_ACTIONS,\n showValue = false,\n fileName = \"qr-code\",\n pngScale,\n shareTitle,\n printSizeMm = 50,\n labels: labelOverrides,\n onAction,\n buttonSize = \"lg\",\n className,\n ...props\n },\n ref,\n ) => {\n const labels = { ...DEFAULT_LABELS, ...labelOverrides };\n const [status, setStatus] = useState(\"\");\n // Decided after mount, never during render: `navigator` does not exist on\n // the server, and reading it in render would make the server's markup and\n // the client's first render disagree.\n const [via, setVia] = useState<\"share\" | \"clipboard\">(\"clipboard\");\n const frameRef = useRef<HTMLIFrameElement | null>(null);\n\n useEffect(() => {\n setVia(typeof navigator !== \"undefined\" && typeof navigator.share === \"function\" ? \"share\" : \"clipboard\");\n }, []);\n\n useEffect(\n () => () => {\n frameRef.current?.remove();\n frameRef.current = null;\n },\n [],\n );\n\n const file: QrCodeFileOptions = { label, errorCorrection, mode, version, quietZone, foreground, background };\n const base = safeFileName(fileName, \"qr-code\");\n const link = isWebUrl(value);\n\n const report = useCallback(\n (event: QrCodeActionEvent, announcement: string) => {\n setStatus(announcement);\n onAction?.(event);\n },\n [onAction],\n );\n\n const downloadSvg = () => {\n const name = `${base}.svg`;\n try {\n saveBlob(new Blob([qrCodeSvg(value, file)], { type: \"image/svg+xml\" }), name);\n report({ action: \"download-svg\", outcome: \"done\", fileName: name }, labels.downloaded);\n } catch (error) {\n report({ action: \"download-svg\", outcome: \"failed\", error: message(error) }, labels.failed);\n }\n };\n\n const downloadPng = async () => {\n const name = `${base}.png`;\n try {\n const blob = await qrCodePng(value, { ...file, scale: pngScale });\n saveBlob(blob, name);\n report({ action: \"download-png\", outcome: \"done\", fileName: name }, labels.downloaded);\n } catch (error) {\n report({ action: \"download-png\", outcome: \"failed\", error: message(error) }, labels.failed);\n }\n };\n\n const copy = async () => {\n try {\n const clipboard = typeof navigator !== \"undefined\" ? navigator.clipboard : undefined;\n if (!clipboard || typeof clipboard.writeText !== \"function\") {\n throw new Error(\"The Clipboard API is unavailable\");\n }\n await clipboard.writeText(value);\n report({ action: \"share\", outcome: \"done\", via: \"clipboard\" }, labels.copied);\n } catch (error) {\n report({ action: \"share\", outcome: \"failed\", via: \"clipboard\", error: message(error) }, labels.failed);\n }\n };\n\n const share = async () => {\n const title = shareTitle ?? label;\n const data: ShareData = link ? { title, url: value } : { title, text: value };\n const canShare =\n typeof navigator !== \"undefined\" &&\n typeof navigator.share === \"function\" &&\n (typeof navigator.canShare !== \"function\" || navigator.canShare(data));\n if (!canShare) {\n await copy();\n return;\n }\n try {\n await navigator.share(data);\n report({ action: \"share\", outcome: \"done\", via: \"share\" }, labels.shared);\n } catch (error) {\n if (isAbort(error)) {\n report({ action: \"share\", outcome: \"cancelled\", via: \"share\" }, \"\");\n return;\n }\n // Refused for another reason (no user activation, a permissions\n // policy): the person still asked to pass the value on, so copy it.\n await copy();\n }\n };\n\n const print = () => {\n frameRef.current?.remove();\n document.querySelectorAll(`iframe[${PRINT_FRAME}]`).forEach((stale) => stale.remove());\n\n const frame = document.createElement(\"iframe\");\n frame.setAttribute(PRINT_FRAME, \"\");\n frame.setAttribute(\"aria-hidden\", \"true\");\n frame.tabIndex = -1;\n // CSSOM, not a style attribute: a Content Security Policy without\n // 'unsafe-inline' blocks the attribute and allows this.\n Object.assign(frame.style, { position: \"fixed\", right: \"0\", bottom: \"0\", width: \"0\", height: \"0\", border: \"0\" });\n document.body.appendChild(frame);\n frameRef.current = frame;\n\n const doc = frame.contentDocument;\n const win = frame.contentWindow;\n if (!doc || !win) {\n report({ action: \"print\", outcome: \"failed\", error: \"The print frame has no document\" }, labels.failed);\n return;\n }\n\n // Nothing but the code, and the value when it is shown on screen. Built\n // with DOM calls rather than written as HTML, so neither the label nor\n // the value is ever parsed as markup.\n doc.title = label;\n Object.assign(doc.body.style, {\n margin: \"0\",\n padding: \"15mm 10mm\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: \"6mm\",\n color: \"#000000\",\n background: \"#ffffff\",\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace\",\n });\n const parsed = new DOMParser().parseFromString(qrCodeSvg(value, file), \"image/svg+xml\");\n const svg = doc.importNode(parsed.documentElement, true) as unknown as SVGSVGElement;\n const millimetres = Number.isFinite(printSizeMm) && printSizeMm > 0 ? printSizeMm : 50;\n svg.setAttribute(\"width\", `${millimetres}mm`);\n svg.setAttribute(\"height\", `${millimetres}mm`);\n doc.body.appendChild(svg);\n if (showValue) {\n const text = doc.createElement(\"p\");\n text.textContent = value;\n Object.assign(text.style, {\n margin: \"0\",\n maxWidth: `${Math.max(millimetres, 80)}mm`,\n fontSize: \"12pt\",\n textAlign: \"center\",\n overflowWrap: \"anywhere\",\n });\n doc.body.appendChild(text);\n }\n\n win.addEventListener(\"afterprint\", () => {\n if (frameRef.current === frame) {\n frameRef.current = null;\n }\n frame.remove();\n });\n\n // On the next task, so the frame has laid out before the dialog opens.\n setTimeout(() => {\n try {\n win.print();\n report({ action: \"print\", outcome: \"done\" }, labels.printing);\n } catch (error) {\n report({ action: \"print\", outcome: \"failed\", error: message(error) }, labels.failed);\n }\n }, 0);\n };\n\n const run: Record<QrCodeAction, () => void> = {\n \"download-svg\": downloadSvg,\n \"download-png\": () => void downloadPng(),\n share: () => void share(),\n print,\n };\n\n const text: Record<QrCodeAction, string> = {\n \"download-svg\": labels.downloadSvg,\n \"download-png\": labels.downloadPng,\n share: via === \"share\" ? labels.share : link ? labels.copyLink : labels.copy,\n print: labels.print,\n };\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n data-react-fancy-qr-code-panel=\"\"\n className={cn(\"inline-flex max-w-full flex-col items-center gap-3\", className)}\n {...props}\n >\n <div data-react-fancy-qr-code-panel-code=\"\" className=\"leading-none\">\n <QrCode\n value={value}\n label={label}\n size={size}\n errorCorrection={errorCorrection}\n quietZone={quietZone}\n foreground={foreground}\n background={background}\n mode={mode}\n version={version}\n />\n </div>\n {showValue && (\n <p\n data-react-fancy-qr-code-panel-value=\"\"\n className=\"m-0 max-w-full select-all break-all text-center font-mono text-sm text-zinc-900 dark:text-zinc-100\"\n >\n {value}\n </p>\n )}\n {actions.length > 0 && (\n <div data-react-fancy-qr-code-panel-actions=\"\" className=\"flex flex-wrap justify-center gap-2\">\n {actions.map((action) => (\n <Button\n key={action}\n size={buttonSize}\n icon={action === \"share\" && via === \"clipboard\" ? \"copy\" : ICONS[action]}\n data-react-fancy-qr-code-action={action}\n data-via={action === \"share\" ? via : undefined}\n onClick={run[action]}\n >\n {text[action]}\n </Button>\n ))}\n </div>\n )}\n <span\n role=\"status\"\n aria-live=\"polite\"\n data-react-fancy-qr-code-panel-status=\"\"\n className=\"sr-only\"\n >\n {status}\n </span>\n </div>\n );\n },\n);\n\nQrCodePanel.displayName = \"QrCodePanel\";\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { composeRefs } from './chunk-SV5BW3IA.js';
|
|
2
|
+
import { inlineStep } from './chunk-US5R36TQ.js';
|
|
2
3
|
import { useControllableState } from './chunk-EDYAXGUM.js';
|
|
3
4
|
import { cn } from './chunk-MMW2JGKZ.js';
|
|
4
5
|
import { createContext, useMemo, useContext, useState, useLayoutEffect, useRef, useCallback } from 'react';
|
|
@@ -38,12 +39,13 @@ function TabsList({ children, className }) {
|
|
|
38
39
|
if (!buttons?.length) return;
|
|
39
40
|
const items = Array.from(buttons);
|
|
40
41
|
const currentIndex = items.indexOf(document.activeElement);
|
|
41
|
-
|
|
42
|
+
const step = e.key === "ArrowDown" ? 1 : e.key === "ArrowUp" ? -1 : inlineStep(e.key, listRef.current);
|
|
43
|
+
if (step === 1) {
|
|
42
44
|
e.preventDefault();
|
|
43
45
|
const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0;
|
|
44
46
|
items[next].focus();
|
|
45
47
|
items[next].click();
|
|
46
|
-
} else if (
|
|
48
|
+
} else if (step === -1) {
|
|
47
49
|
e.preventDefault();
|
|
48
50
|
const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1;
|
|
49
51
|
items[prev].focus();
|
|
@@ -163,5 +165,5 @@ var Tabs = Object.assign(TabsRoot, {
|
|
|
163
165
|
});
|
|
164
166
|
|
|
165
167
|
export { Tabs, useTabs };
|
|
166
|
-
//# sourceMappingURL=chunk-
|
|
167
|
-
//# sourceMappingURL=chunk-
|
|
168
|
+
//# sourceMappingURL=chunk-H7IQVCTX.js.map
|
|
169
|
+
//# sourceMappingURL=chunk-H7IQVCTX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tabs/Tabs.context.ts","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsTab.tsx","../src/components/Tabs/TabsPanels.tsx","../src/components/Tabs/TabsPanel.tsx","../src/components/Tabs/Tabs.tsx"],"names":["useContext","useState","useMemo","useLayoutEffect","jsx"],"mappings":"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","file":"chunk-H7IQVCTX.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { TabsContextValue } from \"./Tabs.types\";\n\nexport const TabsContext = createContext<TabsContextValue | null>(null);\n\n/**\n * What a `Tabs.List` tells its tabs about the roving tab stop.\n *\n * `fallback` is the tab that takes `tabIndex=0` when NO tab is active (the\n * controlled value matches none), so the tablist stays reachable by keyboard.\n * `refresh` lets a tab ask the list to re-derive it when the tab changes in a\n * way the list did not render for (disabled toggled, mounted, unmounted).\n */\nexport interface TabsListContextValue {\n fallback: HTMLElement | null;\n refresh: () => void;\n}\n\nexport const TabsListContext = createContext<TabsListContextValue | null>(null);\n\nexport function useTabs(): TabsContextValue {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n throw new Error(\"Tabs compound components must be used within <Tabs>\");\n }\n return ctx;\n}\n","import { useCallback, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { inlineStep } from \"../../utils/direction\";\nimport { TabsListContext, useTabs } from \"./Tabs.context\";\nimport type { TabsListProps } from \"./Tabs.types\";\n\nexport function TabsList({ children, className }: TabsListProps) {\n const { variant, activeTab } = useTabs();\n const listRef = useRef<HTMLDivElement>(null);\n const [fallback, setFallback] = useState<HTMLElement | null>(null);\n\n // Which tab holds the stop when none is active. Read from the rendered\n // tablist, the same source the arrow keys use, so \"first\" means first in\n // the DOM whatever wraps the tabs. Tabs of a nested tablist are skipped.\n const refresh = useCallback(() => {\n const list = listRef.current;\n if (!list) return;\n const own = Array.from(list.querySelectorAll<HTMLElement>('[role=\"tab\"]')).filter(\n (el) => el.closest('[role=\"tablist\"]') === list,\n );\n const anyActive = own.some((el) => el.getAttribute(\"aria-selected\") === \"true\");\n const next = anyActive\n ? null\n : (own.find((el) => !(el as HTMLButtonElement).disabled) ?? null);\n setFallback((prev) => (prev === next ? prev : next));\n }, []);\n\n useLayoutEffect(() => {\n refresh();\n }, [refresh, activeTab, children]);\n\n const listCtx = useMemo(() => ({ fallback, refresh }), [fallback, refresh]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n const buttons = listRef.current?.querySelectorAll<HTMLButtonElement>(\n '[role=\"tab\"]:not([disabled])',\n );\n if (!buttons?.length) return;\n\n const items = Array.from(buttons);\n const currentIndex = items.indexOf(document.activeElement as HTMLButtonElement);\n\n // ArrowRight / ArrowLeft follow the VISUAL order: in RTL the next tab is\n // to the left, so ArrowLeft moves forward.\n const step = e.key === \"ArrowDown\" ? 1 : e.key === \"ArrowUp\" ? -1 : inlineStep(e.key, listRef.current);\n if (step === 1) {\n e.preventDefault();\n const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n items[next].focus();\n items[next].click();\n } else if (step === -1) {\n e.preventDefault();\n const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n items[prev].focus();\n items[prev].click();\n }\n }, []);\n\n return (\n <div\n data-react-fancy-tabs-list=\"\"\n ref={listRef}\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex\",\n variant === \"underline\" && \"gap-0 border-b border-[color:var(--fancy-border,var(--color-zinc-200))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n variant === \"pills\" && \"gap-0 rounded-lg bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] p-1 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n variant === \"boxed\" &&\n \"gap-0 rounded-lg bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] p-1 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n className,\n )}\n >\n <TabsListContext.Provider value={listCtx}>{children}</TabsListContext.Provider>\n </div>\n );\n}\n\nTabsList.displayName = \"TabsList\";\n","import { useContext, useLayoutEffect, useMemo, useState, type Ref } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { composeRefs } from \"../../utils/compose-refs\";\nimport { TabsListContext, useTabs } from \"./Tabs.context\";\nimport type { TabsTabProps } from \"./Tabs.types\";\n\nexport function TabsTab({\n children,\n value,\n disabled = false,\n className,\n onClick,\n ...rest\n}: TabsTabProps) {\n const { activeTab, setActiveTab, variant } = useTabs();\n const list = useContext(TabsListContext);\n const isActive = activeTab === value;\n\n // The node lives in state, not a ref, so comparing it to the list's\n // fallback during render is a pure read.\n const [node, setNode] = useState<HTMLButtonElement | null>(null);\n const externalRef = (rest as { ref?: Ref<HTMLButtonElement> }).ref;\n const setRef = useMemo(() => composeRefs(externalRef, setNode), [externalRef]);\n\n // Re-derive the fallback when this tab changes in a way the list may not\n // have rendered for, and when it leaves.\n const refresh = list?.refresh;\n useLayoutEffect(() => {\n refresh?.();\n return () => refresh?.();\n }, [refresh, disabled, value]);\n\n // Roving tabindex: the active tab holds the stop. When no tab is active the\n // list names the first enabled one, so the tablist is never unreachable.\n const isStop = isActive || (node !== null && list?.fallback === node);\n\n return (\n <button\n data-react-fancy-tabs-tab=\"\"\n type=\"button\"\n role=\"tab\"\n disabled={disabled}\n aria-selected={isActive}\n tabIndex={isStop ? 0 : -1}\n onClick={(e) => { if (!disabled) setActiveTab(value); onClick?.(e); }}\n {...rest}\n ref={setRef}\n className={cn(\n \"text-sm font-medium transition-colors\",\n disabled && \"cursor-not-allowed opacity-50\",\n variant === \"underline\" && [\n \"border-b-2 px-4 py-2.5\",\n isActive\n ? \"border-zinc-900 text-zinc-900 dark:border-white dark:text-white\"\n : \"border-transparent text-[color:var(--fancy-text-muted,var(--color-zinc-500))] hover:border-zinc-300 hover:text-[color:var(--fancy-text-soft,var(--color-zinc-700))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))] dark:hover:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))]\",\n ],\n variant === \"pills\" && [\n \"rounded-md px-4 py-1.5\",\n isActive\n ? \"bg-[color:var(--fancy-surface,var(--color-white))] text-zinc-900 shadow-sm dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-white\"\n : \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n ],\n variant === \"boxed\" && [\n \"flex-1 rounded-md px-4 py-1.5\",\n isActive\n ? \"bg-[color:var(--fancy-surface,var(--color-white))] text-zinc-900 shadow-sm dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-white\"\n : \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n ],\n className,\n )}\n >\n {children}\n </button>\n );\n}\n\nTabsTab.displayName = \"TabsTab\";\n","import { cn } from \"../../utils/cn\";\nimport type { TabsPanelsProps } from \"./Tabs.types\";\n\nexport function TabsPanels({ children, className }: TabsPanelsProps) {\n return <div data-react-fancy-tabs-panels=\"\" className={cn(\"mt-4\", className)}>{children}</div>;\n}\n\nTabsPanels.displayName = \"TabsPanels\";\n","import { cn } from \"../../utils/cn\";\nimport { useTabs } from \"./Tabs.context\";\nimport type { TabsPanelProps } from \"./Tabs.types\";\n\nexport function TabsPanel({ children, value, className }: TabsPanelProps) {\n const { activeTab } = useTabs();\n\n if (activeTab !== value) return null;\n\n return (\n <div data-react-fancy-tabs-panel=\"\" role=\"tabpanel\" className={cn(\"fancy-fade-in\", className)}>\n {children}\n </div>\n );\n}\n\nTabsPanel.displayName = \"TabsPanel\";\n","import { useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { TabsContext } from \"./Tabs.context\";\nimport { TabsList } from \"./TabsList\";\nimport { TabsTab } from \"./TabsTab\";\nimport { TabsPanels } from \"./TabsPanels\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport type { TabsProps } from \"./Tabs.types\";\n\nfunction TabsRoot({\n children,\n defaultTab = \"\",\n activeTab: controlledTab,\n onTabChange,\n variant = \"underline\",\n className,\n}: TabsProps) {\n const [activeTab, setActiveTab] = useControllableState(\n controlledTab,\n defaultTab,\n onTabChange,\n );\n\n const ctx = useMemo(\n () => ({ activeTab, setActiveTab, variant }),\n [activeTab, setActiveTab, variant],\n );\n\n return (\n <TabsContext.Provider value={ctx}>\n <div data-react-fancy-tabs=\"\" className={cn(className)}>{children}</div>\n </TabsContext.Provider>\n );\n}\n\nexport const Tabs = Object.assign(TabsRoot, {\n List: TabsList,\n Tab: TabsTab,\n Panels: TabsPanels,\n Panel: TabsPanel,\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkAZ5DWOQY_cjs = require('./chunk-AZ5DWOQY.cjs');
|
|
4
4
|
var chunkX6LGRB4H_cjs = require('./chunk-X6LGRB4H.cjs');
|
|
5
5
|
var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
|
|
6
6
|
var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
|
|
@@ -162,7 +162,7 @@ function SidebarItem({
|
|
|
162
162
|
{
|
|
163
163
|
"data-react-fancy-sidebar-badge": "",
|
|
164
164
|
"aria-hidden": badgeLabelEl ? "true" : void 0,
|
|
165
|
-
className: "pointer-events-none absolute -
|
|
165
|
+
className: "pointer-events-none absolute -end-3 -top-2.5 whitespace-nowrap",
|
|
166
166
|
children: badge
|
|
167
167
|
}
|
|
168
168
|
),
|
|
@@ -176,7 +176,7 @@ function SidebarItem({
|
|
|
176
176
|
className: chunkZU5Q77OT_cjs.cn(
|
|
177
177
|
DOT_BASE,
|
|
178
178
|
chunkX6LGRB4H_cjs.badgeDot[dotColor],
|
|
179
|
-
anchoredToItem ? "
|
|
179
|
+
anchoredToItem ? "end-1.5 top-1.5" : showCollapsedBadge ? "-bottom-0.5 -end-0.5" : "-end-0.5 -top-0.5"
|
|
180
180
|
)
|
|
181
181
|
}
|
|
182
182
|
)
|
|
@@ -241,7 +241,7 @@ function SidebarItem({
|
|
|
241
241
|
renderMarks(false)
|
|
242
242
|
] }),
|
|
243
243
|
!icon && renderMarks(true),
|
|
244
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-
|
|
244
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-start", children }),
|
|
245
245
|
dotLabelEl,
|
|
246
246
|
badge && (badgeLabelEl ?? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: " " })),
|
|
247
247
|
badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", "aria-hidden": badgeLabelEl ? "true" : void 0, children: badge })
|
|
@@ -251,7 +251,7 @@ function SidebarItem({
|
|
|
251
251
|
);
|
|
252
252
|
if (!showDotTooltip) return node;
|
|
253
253
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
254
|
-
|
|
254
|
+
chunkAZ5DWOQY_cjs.Tooltip,
|
|
255
255
|
{
|
|
256
256
|
placement: "right",
|
|
257
257
|
content: (
|
|
@@ -324,7 +324,7 @@ function SidebarSubmenu({
|
|
|
324
324
|
),
|
|
325
325
|
children: [
|
|
326
326
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: icon }),
|
|
327
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-
|
|
327
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-start", children: label }),
|
|
328
328
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
329
329
|
lucideReact.ChevronDown,
|
|
330
330
|
{
|
|
@@ -344,7 +344,7 @@ function SidebarSubmenu({
|
|
|
344
344
|
"grid transition-[grid-template-rows] duration-200",
|
|
345
345
|
open ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
346
346
|
),
|
|
347
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
347
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ms-4 border-s border-[color:var(--fancy-border,var(--color-zinc-200))] ps-2 pt-1 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]", children }) })
|
|
348
348
|
}
|
|
349
349
|
)
|
|
350
350
|
] });
|
|
@@ -364,7 +364,10 @@ function SidebarToggle({ className }) {
|
|
|
364
364
|
"hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:text-zinc-600 dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:text-zinc-300",
|
|
365
365
|
className
|
|
366
366
|
),
|
|
367
|
-
children: collapsed ?
|
|
367
|
+
children: collapsed ? (
|
|
368
|
+
// The glyph draws the rail on the inline-start side: mirrored in RTL.
|
|
369
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeftOpen, { className: "h-4 w-4 rtl:-scale-x-100" })
|
|
370
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeftClose, { className: "h-4 w-4 rtl:-scale-x-100" })
|
|
368
371
|
}
|
|
369
372
|
);
|
|
370
373
|
}
|
|
@@ -401,7 +404,7 @@ function SidebarRoot({
|
|
|
401
404
|
// and actively wrong inside a container that already draws its own —
|
|
402
405
|
// a 240px rail in a 300px card puts its right border 240px in, which
|
|
403
406
|
// reads as a stray line slicing the panel rather than an edge.
|
|
404
|
-
!embedded && "border-
|
|
407
|
+
!embedded && "border-e border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
|
|
405
408
|
// Collapsed is a fixed icon rail either way; only the expanded width
|
|
406
409
|
// defers to the container.
|
|
407
410
|
collapsed ? "w-16" : embedded ? "w-full" : "w-60",
|
|
@@ -436,5 +439,5 @@ var Sidebar = Object.assign(SidebarRoot, {
|
|
|
436
439
|
|
|
437
440
|
exports.Sidebar = Sidebar;
|
|
438
441
|
exports.useSidebar = useSidebar;
|
|
439
|
-
//# sourceMappingURL=chunk-
|
|
440
|
-
//# sourceMappingURL=chunk-
|
|
442
|
+
//# sourceMappingURL=chunk-H7OTLGRD.cjs.map
|
|
443
|
+
//# sourceMappingURL=chunk-H7OTLGRD.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Sidebar/Sidebar.context.ts","../src/components/Sidebar/Sidebar.keyboard.ts","../src/components/Sidebar/SidebarItem.tsx","../src/components/Sidebar/SidebarGroup.tsx","../src/components/Sidebar/SidebarSubmenu.tsx","../src/components/Sidebar/SidebarToggle.tsx","../src/components/Sidebar/Sidebar.tsx"],"names":["createContext","useContext","useEffect","useCallback","jsx","jsxs","Fragment","cn","badgeDot","Tooltip","getLetters","useState","ChevronDown","PanelLeftOpen","PanelLeftClose","useControllableState","useRef"],"mappings":"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","file":"chunk-H7OTLGRD.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { SidebarContextValue } from \"./Sidebar.types\";\n\nexport const SidebarContext = createContext<SidebarContextValue | null>(null);\n\nexport function useSidebar(): SidebarContextValue {\n const ctx = useContext(SidebarContext);\n if (!ctx) {\n throw new Error(\"useSidebar must be used within a <Sidebar> component\");\n }\n return ctx;\n}\n","import { useCallback, useEffect, type KeyboardEvent, type RefObject } from \"react\";\n\n/**\n * What arrow keys move between: every `Sidebar.Item`, plus an EXPANDED\n * `Sidebar.Submenu`'s trigger button. (A collapsed submenu renders a plain\n * `<div>`, which is not focusable, so there is nothing to move to.)\n *\n * Selected by the handles the components already render, so `keyboardNav`\n * adds no markup to a Sidebar that does not use it.\n */\nconst ITEM_SELECTOR =\n \"[data-react-fancy-sidebar-item], [data-react-fancy-sidebar-submenu] > button\";\n\nconst NAV_KEYS = new Set([\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"]);\n\n/**\n * Inside a closed submenu — the panel is collapsed to zero height but its\n * items are still mounted, so without this they would be focusable while\n * invisible. `SidebarSubmenu` sets `aria-expanded` on its trigger only when\n * `keyboardNav` is on; a submenu's OWN trigger is not inside its panel.\n */\nfunction inClosedSubmenu(el: HTMLElement, root: HTMLElement): boolean {\n let sub = el.parentElement?.closest<HTMLElement>(\"[data-react-fancy-sidebar-submenu]\");\n while (sub && root.contains(sub)) {\n const trigger = sub.querySelector<HTMLElement>(\":scope > button\");\n if (trigger && trigger !== el && trigger.getAttribute(\"aria-expanded\") === \"false\") {\n return true;\n }\n sub = sub.parentElement?.closest<HTMLElement>(\"[data-react-fancy-sidebar-submenu]\");\n }\n return false;\n}\n\nfunction isNavigable(el: HTMLElement, root: HTMLElement): boolean {\n if (el.getAttribute(\"aria-disabled\") === \"true\") return false;\n if ((el as HTMLButtonElement).disabled) return false;\n return !inClosedSubmenu(el, root);\n}\n\nfunction allItems(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(ITEM_SELECTOR));\n}\n\n/**\n * Roving tabindex + ArrowUp / ArrowDown / Home / End for `Sidebar keyboardNav`.\n *\n * The tab stop is kept on the DOM rather than in React state because items\n * can mount from anywhere below the root (a consumer's own component, a\n * submenu opening) without the root re-rendering. A MutationObserver re-applies\n * it when the set of items, or their disabled / expanded / current state,\n * changes; focus moving onto an item (by click, Tab or arrow) makes that item\n * the stop. Turning `keyboardNav` off removes every tabindex it set.\n *\n * React never renders a `tabIndex` on these items itself, so writing the\n * attribute does not fight reconciliation. (A consumer who passes `tabIndex`\n * to an item while `keyboardNav` is on is overriding the roving stop, and\n * React will reassert theirs on its next render of that item.)\n */\nexport function useSidebarKeyboardNav(\n rootRef: RefObject<HTMLElement | null>,\n enabled: boolean,\n): ((event: KeyboardEvent<HTMLElement>) => void) | undefined {\n useEffect(() => {\n const root = rootRef.current;\n if (!enabled || !root) return;\n\n const touched = new Set<HTMLElement>();\n let current: HTMLElement | null = null;\n\n const apply = () => {\n const items = allItems(root);\n const navigable = items.filter((el) => isNavigable(el, root));\n if (!current || !navigable.includes(current)) {\n current =\n navigable.find((el) => el.getAttribute(\"aria-current\") === \"page\") ??\n navigable[0] ??\n null;\n }\n for (const el of items) {\n const want = el === current ? \"0\" : \"-1\";\n if (el.getAttribute(\"tabindex\") !== want) el.setAttribute(\"tabindex\", want);\n touched.add(el);\n }\n };\n\n const onFocusIn = (event: FocusEvent) => {\n const target = event.target as HTMLElement | null;\n if (!target || !target.matches(ITEM_SELECTOR) || !root.contains(target)) return;\n if (!isNavigable(target, root)) return;\n current = target;\n apply();\n };\n\n apply();\n root.addEventListener(\"focusin\", onFocusIn);\n const observer = new MutationObserver(apply);\n observer.observe(root, {\n childList: true,\n subtree: true,\n attributes: true,\n // NOT tabindex: that is what `apply` writes.\n attributeFilter: [\"aria-disabled\", \"aria-expanded\", \"aria-current\", \"disabled\"],\n });\n\n return () => {\n observer.disconnect();\n root.removeEventListener(\"focusin\", onFocusIn);\n for (const el of touched) el.removeAttribute(\"tabindex\");\n };\n }, [rootRef, enabled]);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n const root = rootRef.current;\n if (!root || !NAV_KEYS.has(event.key)) return;\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n // Only when an ITEM has focus. An input, textarea, select or\n // contenteditable inside the sidebar (a filter box, say) keeps its keys:\n // it does not match the item selector, so it never gets here.\n const target = event.target as HTMLElement;\n if (!target.matches(ITEM_SELECTOR)) return;\n\n const items = allItems(root);\n const navigable = items.filter((el) => isNavigable(el, root));\n if (navigable.length === 0) return;\n\n let next: HTMLElement | undefined;\n if (event.key === \"Home\") next = navigable[0];\n else if (event.key === \"End\") next = navigable[navigable.length - 1];\n else {\n // Walk from the target's position among ALL items, so a focused item\n // that is itself not navigable (disabled while focused) still moves.\n const from = items.indexOf(target);\n const step = event.key === \"ArrowDown\" ? 1 : -1;\n for (let i = from + step; i >= 0 && i < items.length; i += step) {\n if (navigable.includes(items[i])) {\n next = items[i];\n break;\n }\n }\n }\n\n // Handled either way: an arrow at the end of the list must not scroll\n // the page instead. No wrap, matching a list rather than a menu.\n event.preventDefault();\n next?.focus();\n },\n [rootRef],\n );\n\n return enabled ? onKeyDown : undefined;\n}\n","import type { ElementType, ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { badgeDot } from \"../Badge/Badge.colors\";\nimport { Tooltip } from \"../Tooltip\";\nimport { useSidebar } from \"./Sidebar.context\";\nimport type { SidebarDotColor, SidebarItemProps } from \"./Sidebar.types\";\n\n/**\n * The surface-coloured ring separates the dot from whatever it sits on (an\n * icon, the active-row fill) in both modes.\n */\nconst DOT_BASE =\n \"pointer-events-none absolute h-2 w-2 rounded-full ring-2 ring-[color:var(--fancy-surface,var(--color-white))] dark:ring-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\";\n\n/** Extract first 3 characters from a ReactNode if it's a string. */\nfunction getLetters(children: React.ReactNode): string {\n if (typeof children === \"string\") return children.slice(0, 3);\n return \"...\";\n}\n\nexport function SidebarItem({\n children,\n href,\n as: As,\n icon,\n active = false,\n disabled = false,\n badge,\n badgeLabel,\n collapsedBadge = false,\n dot,\n dotLabel,\n dotTooltip = false,\n onClick,\n className,\n ...rest\n}: SidebarItemProps) {\n const { collapsed, collapseMode } = useSidebar();\n\n // Link mode engages on `href` OR `as` — a `to`-based router (TanStack Router,\n // React Router) passes no href, and would otherwise render a <button> that\n // navigates nowhere. `onClick` now rides along in link mode instead of being\n // dropped: an item that both navigates and closes a drawer is the common case.\n const isLink = Boolean(href || As);\n const Tag = isLink ? ((As ?? \"a\") as ElementType) : \"button\";\n const tagProps = isLink\n ? { ...(href ? { href } : {}), onClick }\n : { type: \"button\" as const, onClick };\n\n const showIconOnly = collapsed && collapseMode === \"icons\" && icon;\n const showLetters = collapsed && (collapseMode === \"letters\" || (collapseMode === \"icons\" && !icon));\n\n const title = typeof children === \"string\" ? children : undefined;\n\n // --- Attention marks (6.1.0). All of this is inert unless `dot` or\n // `collapsedBadge` is passed, so an item without them renders exactly the\n // markup it always did.\n const dotColor: SidebarDotColor | null = dot === true ? \"red\" : dot || null;\n const showCollapsedBadge = collapsed && collapsedBadge && Boolean(badge);\n const hasMarks = dotColor !== null || showCollapsedBadge;\n // `badgeLabel` (6.2.0) is read in place of the visible badge, so it only\n // exists while the badge is actually rendered: always expanded, and\n // collapsed only with `collapsedBadge`.\n const badgeShown = Boolean(badge) && (!collapsed || showCollapsedBadge);\n const badgeLabelEl =\n badgeShown && badgeLabel ? (\n // The comma is the separator, so whatever renders before this must not\n // end in a space (\"tynn , 2 agents\"); see the two trailing spaces below.\n <span className=\"sr-only\" data-react-fancy-sidebar-badge-label=\"\">\n {`, ${badgeLabel}`}\n </span>\n ) : null;\n const dotLabelEl =\n dotColor && dotLabel ? (\n // The spaces are load-bearing: adjacent inline elements concatenate in\n // the accessible name, so without them it reads \"Inbox3 unread\".\n <span className=\"sr-only\" data-react-fancy-sidebar-dot-label=\"\">\n {\" \"}\n {dotLabel}\n {badgeLabelEl ? null : \" \"}\n </span>\n ) : null;\n // Collapsed, the item's visible content is only an icon (or an\n // abbreviation), and its name came from `title`. But accname takes CONTENT\n // over `title`, so a dot label or a badge count would become the item's\n // whole name (\"3 unread\" instead of \"Inbox\"). A visually hidden copy of the\n // label keeps the name first.\n const needsHiddenLabel = collapsed && (dotLabelEl !== null || showCollapsedBadge);\n\n const renderMarks = (anchoredToItem: boolean): ReactNode => (\n <>\n {showCollapsedBadge && (\n <span\n data-react-fancy-sidebar-badge=\"\"\n aria-hidden={badgeLabelEl ? \"true\" : undefined}\n className=\"pointer-events-none absolute -end-3 -top-2.5 whitespace-nowrap\"\n >\n {badge}\n </span>\n )}\n {dotColor && (\n <span\n aria-hidden=\"true\"\n data-react-fancy-sidebar-dot=\"\"\n data-color={dotColor}\n // A collapsed badge takes the top corner; the dot moves to the\n // bottom one rather than hiding under it.\n data-position={showCollapsedBadge ? \"bottom\" : \"top\"}\n className={cn(\n DOT_BASE,\n badgeDot[dotColor],\n anchoredToItem\n ? \"end-1.5 top-1.5\"\n : showCollapsedBadge\n ? \"-bottom-0.5 -end-0.5\"\n : \"-end-0.5 -top-0.5\",\n )}\n />\n )}\n </>\n );\n // Marks sit at the icon's corner when there is an icon, at the letters'\n // corner on a lettered rail, and at the item's own corner otherwise.\n const iconClass = cn(\n \"flex h-5 w-5 shrink-0 items-center justify-center\",\n hasMarks && \"relative\",\n );\n\n // `dotTooltip` (6.2.0) shows the dot's words to sighted users too. It needs\n // words to show, so it is inert without both `dot` and `dotLabel`.\n const showDotTooltip = dotTooltip && dotLabelEl !== null;\n\n const node = (\n <Tag\n {...tagProps}\n {...rest}\n data-react-fancy-sidebar-item=\"\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled || undefined}\n // With a dot tooltip the native `title` would be a second bubble over\n // the first, so the tooltip takes over and carries the label itself.\n // The name does not depend on it: a collapsed item with a dot label\n // already has the visually hidden label copy.\n title={collapsed && !showDotTooltip ? title : undefined}\n className={cn(\n // `w-full` matters when the Tag is a <button>: form controls size to\n // FIT-CONTENT, not to their parent, so a long label made the item wider\n // than the sidebar and an ancestor clipped the overflow — which reads as\n // a label cut off mid-word rather than an ellipsis. Without this,\n // `min-w-0` on the label below can never engage, because the item is\n // never under width pressure in the first place.\n \"flex w-full items-center rounded-md text-sm font-medium transition-colors\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-blue-500\",\n collapsed ? \"justify-center px-2 py-2\" : \"gap-2 px-3 py-2\",\n active\n ? \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] text-[color:var(--fancy-text,var(--color-zinc-900))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\"\n : \"text-[color:var(--fancy-text-subtle,var(--color-zinc-600))] hover:bg-[color:var(--fancy-surface-hover,var(--color-zinc-50))] hover:text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-subtle-dark,var(--color-zinc-400))] dark:hover:bg-[color:var(--fancy-surface-hover-dark,color-mix(in_oklab,var(--color-zinc-800)_50%,transparent))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n disabled && \"pointer-events-none opacity-50\",\n // Containing block for the visually hidden labels, and for a dot that\n // has no icon to sit on.\n hasMarks && \"relative\",\n className,\n )}\n >\n {needsHiddenLabel && (\n <span className=\"sr-only\" data-react-fancy-sidebar-label=\"\">\n {children}\n {badgeLabelEl && !dotLabelEl ? null : \" \"}\n </span>\n )}\n {collapsed && dotLabelEl}\n {collapsed && badgeLabelEl}\n {showIconOnly && (\n <span className={iconClass}>\n {icon}\n {renderMarks(false)}\n </span>\n )}\n {showLetters && (\n <span\n className={cn(\"text-xs font-semibold uppercase\", hasMarks && \"relative\")}\n // The abbreviation would otherwise read as part of the name (\"Inb\").\n aria-hidden={needsHiddenLabel || undefined}\n >\n {getLetters(children)}\n {renderMarks(false)}\n </span>\n )}\n {!collapsed && (\n <>\n {icon && (\n <span className={iconClass}>\n {icon}\n {renderMarks(false)}\n </span>\n )}\n {!icon && renderMarks(true)}\n {/*\n `min-w-0` is load-bearing, not tidiness. A flex item defaults to\n `min-width: auto`, which resolves to its MIN-CONTENT width — so with\n `truncate` alone the span refuses to shrink below the full label,\n and the item grows wider than the sidebar instead of ellipsing.\n The overflow then gets clipped by an ancestor, which looks like a\n mid-word cut rather than a truncation.\n\n Only shows up with labels longer than the sidebar is wide, which is\n why it survived: short nav labels never trigger it.\n */}\n <span className=\"min-w-0 flex-1 truncate text-start\">{children}</span>\n {dotLabelEl}\n {/*\n Label and badge are adjacent elements, and adjacent elements\n concatenate in a layout-unaware accessible name: \"tynn2\". A visually\n hidden space separates them (6.2.0); with `badgeLabel`, the label is\n read instead and the badge itself is hidden from assistive tech.\n */}\n {badge && (badgeLabelEl ?? <span className=\"sr-only\"> </span>)}\n {badge && (\n <span className=\"shrink-0\" aria-hidden={badgeLabelEl ? \"true\" : undefined}>\n {badge}\n </span>\n )}\n </>\n )}\n </Tag>\n );\n\n if (!showDotTooltip) return node;\n\n return (\n <Tooltip\n placement=\"right\"\n content={\n // aria-hidden, and deliberately NOT linked with aria-describedby:\n // the same words are already in the item's accessible name via\n // `dotLabel`, so exposing the bubble would read them twice.\n <span aria-hidden=\"true\" data-react-fancy-sidebar-tooltip=\"\">\n {collapsed && (\n <span className=\"block font-medium\" data-react-fancy-sidebar-tooltip-label=\"\">\n {children}\n </span>\n )}\n {dotLabel}\n </span>\n }\n >\n {node}\n </Tooltip>\n );\n}\n\nSidebarItem.displayName = \"SidebarItem\";\n","import { cn } from \"../../utils/cn\";\nimport { useSidebar } from \"./Sidebar.context\";\nimport type { SidebarGroupProps } from \"./Sidebar.types\";\n\nexport function SidebarGroup({ children, label, className }: SidebarGroupProps) {\n const { collapsed } = useSidebar();\n\n return (\n <div data-react-fancy-sidebar-group=\"\" className={cn(\"py-1\", className)}>\n {label && !collapsed && (\n <p className=\"mb-1 px-3 text-xs font-semibold uppercase tracking-wider text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {label}\n </p>\n )}\n {label && collapsed && (\n <div className=\"mx-auto mb-1 h-px w-6 bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]\" />\n )}\n {children}\n </div>\n );\n}\n\nSidebarGroup.displayName = \"SidebarGroup\";\n","import { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useSidebar } from \"./Sidebar.context\";\nimport type { SidebarSubmenuProps } from \"./Sidebar.types\";\n\n/** Extract first 3 characters from a string. */\nfunction getLetters(label: string): string {\n return label.slice(0, 3);\n}\n\nexport function SidebarSubmenu({\n children,\n label,\n icon,\n defaultOpen = false,\n className,\n}: SidebarSubmenuProps) {\n const [open, setOpen] = useState(defaultOpen);\n const { collapsed, collapseMode, keyboardNav } = useSidebar();\n\n const showIconOnly = collapsed && collapseMode === \"icons\" && icon;\n const showLetters = collapsed && (collapseMode === \"letters\" || (collapseMode === \"icons\" && !icon));\n\n // When collapsed, just show the icon/letters as a simple item (no expand)\n if (collapsed) {\n return (\n <div\n data-react-fancy-sidebar-submenu=\"\"\n title={label}\n className={cn(\n \"flex items-center justify-center rounded-md px-2 py-2 text-sm font-medium transition-colors\",\n \"text-[color:var(--fancy-text-subtle,var(--color-zinc-600))] hover:bg-[color:var(--fancy-surface-hover,var(--color-zinc-50))] hover:text-[color:var(--fancy-text,var(--color-zinc-900))]\",\n \"dark:text-[color:var(--fancy-text-subtle-dark,var(--color-zinc-400))] dark:hover:bg-[color:var(--fancy-surface-hover-dark,color-mix(in_oklab,var(--color-zinc-800)_50%,transparent))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n className,\n )}\n >\n {showIconOnly && (\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>\n )}\n {showLetters && (\n <span className=\"text-xs font-semibold uppercase\">{getLetters(label)}</span>\n )}\n </div>\n );\n }\n\n return (\n <div data-react-fancy-sidebar-submenu=\"\" className={className}>\n <button\n type=\"button\"\n // Only with `keyboardNav`, which reads it to skip a closed panel's\n // still-mounted items; without it the markup is unchanged from 6.0.\n aria-expanded={keyboardNav ? open : undefined}\n onClick={() => setOpen((v) => !v)}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n \"text-[color:var(--fancy-text-subtle,var(--color-zinc-600))] hover:bg-[color:var(--fancy-surface-hover,var(--color-zinc-50))] hover:text-[color:var(--fancy-text,var(--color-zinc-900))]\",\n \"dark:text-[color:var(--fancy-text-subtle-dark,var(--color-zinc-400))] dark:hover:bg-[color:var(--fancy-surface-hover-dark,color-mix(in_oklab,var(--color-zinc-800)_50%,transparent))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span className=\"flex-1 text-start\">{label}</span>\n <ChevronDown\n className={cn(\n \"h-3.5 w-3.5 opacity-60 transition-transform duration-200\",\n open && \"rotate-180\",\n )}\n />\n </button>\n <div\n className={cn(\n \"grid transition-[grid-template-rows] duration-200\",\n open ? \"grid-rows-[1fr]\" : \"grid-rows-[0fr]\",\n )}\n >\n <div className=\"overflow-hidden\">\n <div className=\"ms-4 border-s border-[color:var(--fancy-border,var(--color-zinc-200))] ps-2 pt-1 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]\">\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nSidebarSubmenu.displayName = \"SidebarSubmenu\";\n","import { PanelLeftClose, PanelLeftOpen } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useSidebar } from \"./Sidebar.context\";\nimport type { SidebarToggleProps } from \"./Sidebar.types\";\n\nexport function SidebarToggle({ className }: SidebarToggleProps) {\n const { collapsed, setCollapsed } = useSidebar();\n\n return (\n <button\n type=\"button\"\n data-react-fancy-sidebar-toggle=\"\"\n onClick={() => setCollapsed(!collapsed)}\n title={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n className={cn(\n \"flex items-center justify-center rounded-md p-1.5 text-zinc-400 transition-colors\",\n \"hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:text-zinc-600 dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:text-zinc-300\",\n className,\n )}\n >\n {collapsed ? (\n // The glyph draws the rail on the inline-start side: mirrored in RTL.\n <PanelLeftOpen className=\"h-4 w-4 rtl:-scale-x-100\" />\n ) : (\n <PanelLeftClose className=\"h-4 w-4 rtl:-scale-x-100\" />\n )}\n </button>\n );\n}\n\nSidebarToggle.displayName = \"SidebarToggle\";\n","import { useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks\";\nimport { SidebarContext } from \"./Sidebar.context\";\nimport { useSidebarKeyboardNav } from \"./Sidebar.keyboard\";\nimport { SidebarItem } from \"./SidebarItem\";\nimport { SidebarGroup } from \"./SidebarGroup\";\nimport { SidebarSubmenu } from \"./SidebarSubmenu\";\nimport { SidebarToggle } from \"./SidebarToggle\";\nimport type { SidebarProps } from \"./Sidebar.types\";\n\nfunction SidebarRoot({\n children,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n collapseMode = \"icons\",\n embedded = false,\n navLabel,\n keyboardNav = false,\n className,\n}: SidebarProps) {\n const [collapsed, setCollapsed] = useControllableState(\n controlledCollapsed,\n defaultCollapsed,\n onCollapsedChange,\n );\n const rootRef = useRef<HTMLElement>(null);\n const onKeyDown = useSidebarKeyboardNav(rootRef, keyboardNav);\n\n return (\n <SidebarContext.Provider value={{ collapsed, collapseMode, setCollapsed, keyboardNav }}>\n <aside\n ref={rootRef}\n onKeyDown={onKeyDown}\n data-react-fancy-sidebar=\"\"\n data-collapsed={collapsed || undefined}\n data-embedded={embedded || undefined}\n className={cn(\n \"flex flex-col gap-0.5 transition-[width] duration-200\",\n // The app-shell chrome. Correct for the rail this is usually used as,\n // and actively wrong inside a container that already draws its own —\n // a 240px rail in a 300px card puts its right border 240px in, which\n // reads as a stray line slicing the panel rather than an edge.\n !embedded && \"border-e border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n // Collapsed is a fixed icon rail either way; only the expanded width\n // defers to the container.\n collapsed ? \"w-16\" : embedded ? \"w-full\" : \"w-60\",\n className,\n )}\n >\n {navLabel ? (\n // The <aside> is a complementary landmark, not a navigation one, so\n // without this a screen reader's landmark list shows no navigation.\n // Opt-in: an element between the <aside> and its children is a DOM\n // change a consumer's CSS (`aside > a`) or tests may depend on. The\n // <nav> takes over the column layout and fills the rail, so a footer\n // pushed down with `mt-auto` still reaches the bottom.\n <nav\n data-react-fancy-sidebar-nav=\"\"\n aria-label={navLabel}\n className=\"flex min-h-0 flex-1 flex-col gap-0.5\"\n >\n {children}\n </nav>\n ) : (\n children\n )}\n </aside>\n </SidebarContext.Provider>\n );\n}\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Item: SidebarItem,\n Group: SidebarGroup,\n Submenu: SidebarSubmenu,\n Toggle: SidebarToggle,\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkFY2WDVKF_cjs = require('./chunk-FY2WDVKF.cjs');
|
|
4
4
|
var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -39,7 +39,7 @@ var Profile = react.forwardRef(
|
|
|
39
39
|
className: chunkZU5Q77OT_cjs.cn("flex items-center", gapClasses[size], className),
|
|
40
40
|
children: [
|
|
41
41
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
42
|
-
|
|
42
|
+
chunkFY2WDVKF_cjs.Avatar,
|
|
43
43
|
{
|
|
44
44
|
src,
|
|
45
45
|
alt: alt || name,
|
|
@@ -78,5 +78,5 @@ var Profile = react.forwardRef(
|
|
|
78
78
|
Profile.displayName = "Profile";
|
|
79
79
|
|
|
80
80
|
exports.Profile = Profile;
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-HKLBCA5X.cjs.map
|
|
82
|
+
//# sourceMappingURL=chunk-HKLBCA5X.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Profile/Profile.tsx"],"names":["forwardRef","jsxs","cn","jsx","Avatar"],"mappings":";;;;;;;AAKA,IAAM,UAAA,GAAgE;AAAA,EACpE,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,WAAA,GAAiE;AAAA,EACrE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,eAAA,GAAqE;AAAA,EACzE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,OAAA,GAAUA,gBAAA;AAAA,EACrB,CACE;AAAA,IACE,GAAA;AAAA,IACA,GAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,MAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,0BAAA,EAAyB,EAAA;AAAA,QACzB,WAAWC,oBAAA,CAAG,mBAAA,EAAqB,UAAA,CAAW,IAAI,GAAG,SAAS,CAAA;AAAA,QAE9D,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAACC,wBAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,KAAK,GAAA,IAAO,IAAA;AAAA,cACZ,QAAA;AAAA,cACA,IAAA;AAAA,cACA;AAAA;AAAA,WACF;AAAA,0BACAH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,4BAAAE,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWD,oBAAA;AAAA,kBACT,0IAAA;AAAA,kBACA,YAAY,IAAI;AAAA,iBAClB;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,QAAA,oBACCC,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWD,oBAAA;AAAA,kBACT,0IAAA;AAAA,kBACA,gBAAgB,IAAI;AAAA,iBACtB;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EAEJ;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Profile/Profile.tsx"],"names":["forwardRef","jsxs","cn","jsx","Avatar"],"mappings":";;;;;;;AAKA,IAAM,UAAA,GAAgE;AAAA,EACpE,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,WAAA,GAAiE;AAAA,EACrE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,eAAA,GAAqE;AAAA,EACzE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,OAAA,GAAUA,gBAAA;AAAA,EACrB,CACE;AAAA,IACE,GAAA;AAAA,IACA,GAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,MAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,0BAAA,EAAyB,EAAA;AAAA,QACzB,WAAWC,oBAAA,CAAG,mBAAA,EAAqB,UAAA,CAAW,IAAI,GAAG,SAAS,CAAA;AAAA,QAE9D,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAACC,wBAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,KAAK,GAAA,IAAO,IAAA;AAAA,cACZ,QAAA;AAAA,cACA,IAAA;AAAA,cACA;AAAA;AAAA,WACF;AAAA,0BACAH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,4BAAAE,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWD,oBAAA;AAAA,kBACT,0IAAA;AAAA,kBACA,YAAY,IAAI;AAAA,iBAClB;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,QAAA,oBACCC,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWD,oBAAA;AAAA,kBACT,0IAAA;AAAA,kBACA,gBAAgB,IAAI;AAAA,iBACtB;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EAEJ;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA","file":"chunk-HKLBCA5X.cjs","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Avatar } from \"../Avatar\";\nimport type { ProfileProps } from \"./Profile.types\";\n\nconst gapClasses: Record<NonNullable<ProfileProps[\"size\"]>, string> = {\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n};\n\nconst nameClasses: Record<NonNullable<ProfileProps[\"size\"]>, string> = {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n};\n\nconst subtitleClasses: Record<NonNullable<ProfileProps[\"size\"]>, string> = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n};\n\nexport const Profile = forwardRef<HTMLDivElement, ProfileProps>(\n (\n {\n src,\n alt,\n fallback,\n name,\n subtitle,\n size = \"md\",\n status,\n className,\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n data-react-fancy-profile=\"\"\n className={cn(\"flex items-center\", gapClasses[size], className)}\n >\n <Avatar\n src={src}\n alt={alt || name}\n fallback={fallback}\n size={size}\n status={status}\n />\n <div className=\"flex min-w-0 flex-col\">\n <span\n className={cn(\n \"truncate font-medium text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n nameClasses[size],\n )}\n >\n {name}\n </span>\n {subtitle && (\n <span\n className={cn(\n \"truncate text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n subtitleClasses[size],\n )}\n >\n {subtitle}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\n\nProfile.displayName = \"Profile\";\n"]}
|