@techzyapp/ui-library 1.0.44 → 1.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/dist/{AdminRoot-9KE3ll-D.js → AdminRoot-BZ1v5vN9.js} +7 -7
  2. package/dist/{AdminRoot-9KE3ll-D.js.map → AdminRoot-BZ1v5vN9.js.map} +1 -1
  3. package/dist/{AdminRoot-BMzHo0n7.cjs → AdminRoot-DJ4-UMAB.cjs} +2 -2
  4. package/dist/{AdminRoot-BMzHo0n7.cjs.map → AdminRoot-DJ4-UMAB.cjs.map} +1 -1
  5. package/dist/{Alert-BFfzpPNd.js → Alert-BU7GlQna.js} +3 -3
  6. package/dist/{Alert-BFfzpPNd.js.map → Alert-BU7GlQna.js.map} +1 -1
  7. package/dist/{Alert-DS8TzpIS.cjs → Alert-CVQOjuEq.cjs} +2 -2
  8. package/dist/{Alert-DS8TzpIS.cjs.map → Alert-CVQOjuEq.cjs.map} +1 -1
  9. package/dist/{Breadcrumbs-CloqFpp1.js → Breadcrumbs-BMz_YVPa.js} +3 -3
  10. package/dist/{Breadcrumbs-CloqFpp1.js.map → Breadcrumbs-BMz_YVPa.js.map} +1 -1
  11. package/dist/{Breadcrumbs-N2-sZWW5.cjs → Breadcrumbs-BbC0o4JE.cjs} +2 -2
  12. package/dist/{Breadcrumbs-N2-sZWW5.cjs.map → Breadcrumbs-BbC0o4JE.cjs.map} +1 -1
  13. package/dist/{Button-5LQtDA9d.js → Button-C415LPw_.js} +2 -2
  14. package/dist/{Button-5LQtDA9d.js.map → Button-C415LPw_.js.map} +1 -1
  15. package/dist/{Button-Bxztlybi.cjs → Button-mBZOvgyZ.cjs} +2 -2
  16. package/dist/{Button-Bxztlybi.cjs.map → Button-mBZOvgyZ.cjs.map} +1 -1
  17. package/dist/{Calendar-BIKo_aus.js → Calendar-B0f6h9-A.js} +3 -3
  18. package/dist/{Calendar-BIKo_aus.js.map → Calendar-B0f6h9-A.js.map} +1 -1
  19. package/dist/{Calendar-CsBgaKZ-.cjs → Calendar-hO051hfk.cjs} +2 -2
  20. package/dist/{Calendar-CsBgaKZ-.cjs.map → Calendar-hO051hfk.cjs.map} +1 -1
  21. package/dist/{Card-Csn3FaMl.cjs → Card-BdNr5row.cjs} +2 -2
  22. package/dist/{Card-Csn3FaMl.cjs.map → Card-BdNr5row.cjs.map} +1 -1
  23. package/dist/{Card-DMwQ7rMk.js → Card-ssUNaOF_.js} +3 -3
  24. package/dist/{Card-DMwQ7rMk.js.map → Card-ssUNaOF_.js.map} +1 -1
  25. package/dist/{Chip-BdCZ44I8.cjs → Chip-BpJN4rzY.cjs} +2 -2
  26. package/dist/{Chip-BdCZ44I8.cjs.map → Chip-BpJN4rzY.cjs.map} +1 -1
  27. package/dist/{Chip-C7IkFuM1.js → Chip-C0x-6g2h.js} +2 -2
  28. package/dist/{Chip-C7IkFuM1.js.map → Chip-C0x-6g2h.js.map} +1 -1
  29. package/dist/{CodeBlock-C10JN6DR.js → CodeBlock-DKnWINdV.js} +3 -3
  30. package/dist/{CodeBlock-C10JN6DR.js.map → CodeBlock-DKnWINdV.js.map} +1 -1
  31. package/dist/{CodeBlock-BnXxxqAW.cjs → CodeBlock-DTrzN95i.cjs} +2 -2
  32. package/dist/{CodeBlock-BnXxxqAW.cjs.map → CodeBlock-DTrzN95i.cjs.map} +1 -1
  33. package/dist/{ColorPicker-z8_-77LO.js → ColorPicker-Bidev2DJ.js} +3 -3
  34. package/dist/{ColorPicker-z8_-77LO.js.map → ColorPicker-Bidev2DJ.js.map} +1 -1
  35. package/dist/{ColorPicker-CVddGc-n.cjs → ColorPicker-Doaegll4.cjs} +2 -2
  36. package/dist/{ColorPicker-CVddGc-n.cjs.map → ColorPicker-Doaegll4.cjs.map} +1 -1
  37. package/dist/{ColorPickerPanel-DJY6-EqO.cjs → ColorPickerPanel-048Fj7wv.cjs} +2 -2
  38. package/dist/{ColorPickerPanel-DJY6-EqO.cjs.map → ColorPickerPanel-048Fj7wv.cjs.map} +1 -1
  39. package/dist/{ColorPickerPanel-y4A2LLLf.js → ColorPickerPanel-DThSuUoz.js} +2 -2
  40. package/dist/{ColorPickerPanel-y4A2LLLf.js.map → ColorPickerPanel-DThSuUoz.js.map} +1 -1
  41. package/dist/{ColorRamp-DvRsdOWy.cjs → ColorRamp-CGw4D9bf.cjs} +2 -2
  42. package/dist/{ColorRamp-DvRsdOWy.cjs.map → ColorRamp-CGw4D9bf.cjs.map} +1 -1
  43. package/dist/{ColorRamp-Dvit8yoP.js → ColorRamp-Reb0q69d.js} +2 -2
  44. package/dist/{ColorRamp-Dvit8yoP.js.map → ColorRamp-Reb0q69d.js.map} +1 -1
  45. package/dist/{ConfigProvider-Cf-awvZs.cjs → ConfigProvider-DBU6rOIA.cjs} +2 -2
  46. package/dist/{ConfigProvider-Cf-awvZs.cjs.map → ConfigProvider-DBU6rOIA.cjs.map} +1 -1
  47. package/dist/{ConfigProvider-CYgmMH4j.js → ConfigProvider-DVDGtCUc.js} +2 -2
  48. package/dist/{ConfigProvider-CYgmMH4j.js.map → ConfigProvider-DVDGtCUc.js.map} +1 -1
  49. package/dist/{CopyButton-BOp7waEt.cjs → CopyButton-Cnab62vt.cjs} +2 -2
  50. package/dist/{CopyButton-BOp7waEt.cjs.map → CopyButton-Cnab62vt.cjs.map} +1 -1
  51. package/dist/{CopyButton-_iMBE4q_.js → CopyButton-Dm8-V4ku.js} +3 -3
  52. package/dist/{CopyButton-_iMBE4q_.js.map → CopyButton-Dm8-V4ku.js.map} +1 -1
  53. package/dist/{DatePicker-X5hZVSW6.js → DatePicker-C4MTCmDn.js} +4 -4
  54. package/dist/{DatePicker-X5hZVSW6.js.map → DatePicker-C4MTCmDn.js.map} +1 -1
  55. package/dist/{DatePicker-UQwpH-rw.cjs → DatePicker-CaGeW_-j.cjs} +2 -2
  56. package/dist/{DatePicker-UQwpH-rw.cjs.map → DatePicker-CaGeW_-j.cjs.map} +1 -1
  57. package/dist/{DateTimePicker-Ch1kUHEb.js → DateTimePicker-B0CjHKPV.js} +7 -7
  58. package/dist/{DateTimePicker-Ch1kUHEb.js.map → DateTimePicker-B0CjHKPV.js.map} +1 -1
  59. package/dist/{DateTimePicker-ClTZGMON.cjs → DateTimePicker-DXKaAYey.cjs} +2 -2
  60. package/dist/{DateTimePicker-ClTZGMON.cjs.map → DateTimePicker-DXKaAYey.cjs.map} +1 -1
  61. package/dist/{DescriptionList-IVAvgpEL.cjs → DescriptionList-BSDwobDc.cjs} +2 -2
  62. package/dist/{DescriptionList-IVAvgpEL.cjs.map → DescriptionList-BSDwobDc.cjs.map} +1 -1
  63. package/dist/{DescriptionList-Cque-iYk.js → DescriptionList-BkUS5egS.js} +4 -4
  64. package/dist/{DescriptionList-Cque-iYk.js.map → DescriptionList-BkUS5egS.js.map} +1 -1
  65. package/dist/{EmptyState-C84B-E8a.cjs → EmptyState-CkkFHKrh.cjs} +2 -2
  66. package/dist/{EmptyState-C84B-E8a.cjs.map → EmptyState-CkkFHKrh.cjs.map} +1 -1
  67. package/dist/{EmptyState-Yts_p-jZ.js → EmptyState-DXoaPC7o.js} +2 -2
  68. package/dist/{EmptyState-Yts_p-jZ.js.map → EmptyState-DXoaPC7o.js.map} +1 -1
  69. package/dist/{ErrorBoundary-BgMOPle0.js → ErrorBoundary-CSP_Ctg6.js} +3 -3
  70. package/dist/{ErrorBoundary-BgMOPle0.js.map → ErrorBoundary-CSP_Ctg6.js.map} +1 -1
  71. package/dist/{ErrorBoundary-DtYswKp3.cjs → ErrorBoundary-tZjKtO28.cjs} +2 -2
  72. package/dist/{ErrorBoundary-DtYswKp3.cjs.map → ErrorBoundary-tZjKtO28.cjs.map} +1 -1
  73. package/dist/{ErrorState-Aa8LVjkl.cjs → ErrorState-JH4JdrTI.cjs} +2 -2
  74. package/dist/{ErrorState-Aa8LVjkl.cjs.map → ErrorState-JH4JdrTI.cjs.map} +1 -1
  75. package/dist/{ErrorState-BE9Rcmht.js → ErrorState-WYsly5-i.js} +7 -7
  76. package/dist/{ErrorState-BE9Rcmht.js.map → ErrorState-WYsly5-i.js.map} +1 -1
  77. package/dist/{FileCard-Chfx0QdF.cjs → FileCard-BIfPqeek.cjs} +2 -2
  78. package/dist/{FileCard-Chfx0QdF.cjs.map → FileCard-BIfPqeek.cjs.map} +1 -1
  79. package/dist/{FileCard-m3i_8yKR.js → FileCard-D4TB3qGG.js} +3 -3
  80. package/dist/{FileCard-m3i_8yKR.js.map → FileCard-D4TB3qGG.js.map} +1 -1
  81. package/dist/FileUploader-DPVF76Ha.js +701 -0
  82. package/dist/FileUploader-DPVF76Ha.js.map +1 -0
  83. package/dist/FileUploader-YE_DfTNC.cjs +2 -0
  84. package/dist/FileUploader-YE_DfTNC.cjs.map +1 -0
  85. package/dist/{Flag-BvZB3295.cjs → Flag-B6OhgwZr.cjs} +2 -2
  86. package/dist/{Flag-BvZB3295.cjs.map → Flag-B6OhgwZr.cjs.map} +1 -1
  87. package/dist/{Flag-C1HwnZXJ.js → Flag-Q3vI7cgt.js} +2 -2
  88. package/dist/{Flag-C1HwnZXJ.js.map → Flag-Q3vI7cgt.js.map} +1 -1
  89. package/dist/{FullscreenToggle-B4ynXdCP.js → FullscreenToggle-CxwGPLdd.js} +3 -3
  90. package/dist/{FullscreenToggle-B4ynXdCP.js.map → FullscreenToggle-CxwGPLdd.js.map} +1 -1
  91. package/dist/{FullscreenToggle-CEFZQ5OC.cjs → FullscreenToggle-ipX55Nj4.cjs} +2 -2
  92. package/dist/{FullscreenToggle-CEFZQ5OC.cjs.map → FullscreenToggle-ipX55Nj4.cjs.map} +1 -1
  93. package/dist/{IconButton-wW1o4HHw.cjs → IconButton-U_sr2Ahy.cjs} +2 -2
  94. package/dist/{IconButton-wW1o4HHw.cjs.map → IconButton-U_sr2Ahy.cjs.map} +1 -1
  95. package/dist/{IconButton-EaExCXRq.js → IconButton-re6xITGO.js} +2 -2
  96. package/dist/{IconButton-EaExCXRq.js.map → IconButton-re6xITGO.js.map} +1 -1
  97. package/dist/ImageEditor-1n50vo_v.cjs +64 -0
  98. package/dist/ImageEditor-1n50vo_v.cjs.map +1 -0
  99. package/dist/{ImageEditor-DTFQZ6ON.js → ImageEditor-BwrG1fk7.js} +968 -948
  100. package/dist/ImageEditor-BwrG1fk7.js.map +1 -0
  101. package/dist/{Loader-D_Foo6Hj.js → Loader-7v1QBvHY.js} +2 -2
  102. package/dist/{Loader-D_Foo6Hj.js.map → Loader-7v1QBvHY.js.map} +1 -1
  103. package/dist/{Loader-DNR2_YHm.cjs → Loader-BE3SQr7W.cjs} +2 -2
  104. package/dist/{Loader-DNR2_YHm.cjs.map → Loader-BE3SQr7W.cjs.map} +1 -1
  105. package/dist/{LocationPicker-DGbnbTW9.js → LocationPicker-BvKtZFq0.js} +6 -6
  106. package/dist/{LocationPicker-DGbnbTW9.js.map → LocationPicker-BvKtZFq0.js.map} +1 -1
  107. package/dist/{LocationPicker-CdO37PKg.cjs → LocationPicker-CVJ4jVn2.cjs} +2 -2
  108. package/dist/{LocationPicker-CdO37PKg.cjs.map → LocationPicker-CVJ4jVn2.cjs.map} +1 -1
  109. package/dist/{Modal-Du-uVpYw.cjs → Modal-CxODxl81.cjs} +2 -2
  110. package/dist/{Modal-Du-uVpYw.cjs.map → Modal-CxODxl81.cjs.map} +1 -1
  111. package/dist/{Modal-1rIBMvKH.js → Modal-DpoiMMM3.js} +3 -3
  112. package/dist/{Modal-1rIBMvKH.js.map → Modal-DpoiMMM3.js.map} +1 -1
  113. package/dist/{MultiSelect-lAAaD0uL.cjs → MultiSelect-2GouMRTl.cjs} +2 -2
  114. package/dist/{MultiSelect-lAAaD0uL.cjs.map → MultiSelect-2GouMRTl.cjs.map} +1 -1
  115. package/dist/{MultiSelect-BoqunsM9.js → MultiSelect-B7KwEhL5.js} +4 -4
  116. package/dist/{MultiSelect-BoqunsM9.js.map → MultiSelect-B7KwEhL5.js.map} +1 -1
  117. package/dist/{NumberField-DHFGNQjZ.js → NumberField-ThojS4K3.js} +3 -3
  118. package/dist/{NumberField-DHFGNQjZ.js.map → NumberField-ThojS4K3.js.map} +1 -1
  119. package/dist/{NumberField-CyUA6eob.cjs → NumberField-o2z2QNK1.cjs} +2 -2
  120. package/dist/{NumberField-CyUA6eob.cjs.map → NumberField-o2z2QNK1.cjs.map} +1 -1
  121. package/dist/{OtpField-CIy5OtXI.cjs → OtpField-BhZq44vV.cjs} +2 -2
  122. package/dist/{OtpField-CIy5OtXI.cjs.map → OtpField-BhZq44vV.cjs.map} +1 -1
  123. package/dist/{OtpField-pL9nj4AW.js → OtpField-C3MlMZ2F.js} +2 -2
  124. package/dist/{OtpField-pL9nj4AW.js.map → OtpField-C3MlMZ2F.js.map} +1 -1
  125. package/dist/{PageError-C5SO0mVJ.js → PageError-63Gk6fVC.js} +5 -5
  126. package/dist/{PageError-C5SO0mVJ.js.map → PageError-63Gk6fVC.js.map} +1 -1
  127. package/dist/{PageError-DbokLmOY.cjs → PageError-CCKWbrc5.cjs} +2 -2
  128. package/dist/{PageError-DbokLmOY.cjs.map → PageError-CCKWbrc5.cjs.map} +1 -1
  129. package/dist/{PageLayout-Du-D6Pd4.js → PageLayout-BekkDBtT.js} +4 -4
  130. package/dist/{PageLayout-Du-D6Pd4.js.map → PageLayout-BekkDBtT.js.map} +1 -1
  131. package/dist/{PageLayout-B7ZDiNq8.cjs → PageLayout-CDPUYu6A.cjs} +2 -2
  132. package/dist/{PageLayout-B7ZDiNq8.cjs.map → PageLayout-CDPUYu6A.cjs.map} +1 -1
  133. package/dist/{PageNotFound-DSkoMfed.js → PageNotFound-BD3zX3cd.js} +5 -5
  134. package/dist/{PageNotFound-DSkoMfed.js.map → PageNotFound-BD3zX3cd.js.map} +1 -1
  135. package/dist/{PageNotFound-DfNwdtgJ.cjs → PageNotFound-CTR6htwa.cjs} +2 -2
  136. package/dist/{PageNotFound-DfNwdtgJ.cjs.map → PageNotFound-CTR6htwa.cjs.map} +1 -1
  137. package/dist/{Pagination-DO2Os4an.cjs → Pagination-BJvLUjQ0.cjs} +2 -2
  138. package/dist/{Pagination-DO2Os4an.cjs.map → Pagination-BJvLUjQ0.cjs.map} +1 -1
  139. package/dist/{Pagination-BH8ACaAC.js → Pagination-qKjISBJ9.js} +2 -2
  140. package/dist/{Pagination-BH8ACaAC.js.map → Pagination-qKjISBJ9.js.map} +1 -1
  141. package/dist/{PaletteField-BfvcJvGM.cjs → PaletteField-CDS9CJW9.cjs} +2 -2
  142. package/dist/{PaletteField-BfvcJvGM.cjs.map → PaletteField-CDS9CJW9.cjs.map} +1 -1
  143. package/dist/{PaletteField-BFb0PQ-S.js → PaletteField-y8KpR4Ap.js} +3 -3
  144. package/dist/{PaletteField-BFb0PQ-S.js.map → PaletteField-y8KpR4Ap.js.map} +1 -1
  145. package/dist/{PhoneField-C-wOm7g5.cjs → PhoneField-Df3J6Hhg.cjs} +2 -2
  146. package/dist/{PhoneField-C-wOm7g5.cjs.map → PhoneField-Df3J6Hhg.cjs.map} +1 -1
  147. package/dist/{PhoneField-DFhGWgbK.js → PhoneField-OjsuevPx.js} +4 -4
  148. package/dist/{PhoneField-DFhGWgbK.js.map → PhoneField-OjsuevPx.js.map} +1 -1
  149. package/dist/{Popconfirm-_53vtMI0.cjs → Popconfirm-BKzJ_EZy.cjs} +2 -2
  150. package/dist/{Popconfirm-_53vtMI0.cjs.map → Popconfirm-BKzJ_EZy.cjs.map} +1 -1
  151. package/dist/{Popconfirm-o5da44ra.js → Popconfirm-aCyniPnH.js} +3 -3
  152. package/dist/{Popconfirm-o5da44ra.js.map → Popconfirm-aCyniPnH.js.map} +1 -1
  153. package/dist/{Progress-BSinoQ8t.cjs → Progress-DWOoLd8u.cjs} +2 -2
  154. package/dist/{Progress-BSinoQ8t.cjs.map → Progress-DWOoLd8u.cjs.map} +1 -1
  155. package/dist/{Progress-CHzNwegP.js → Progress-DzxbkcaD.js} +2 -2
  156. package/dist/{Progress-CHzNwegP.js.map → Progress-DzxbkcaD.js.map} +1 -1
  157. package/dist/{QrCode-tNNnsbHM.cjs → QrCode-C8uAPiHq.cjs} +2 -2
  158. package/dist/{QrCode-tNNnsbHM.cjs.map → QrCode-C8uAPiHq.cjs.map} +1 -1
  159. package/dist/{QrCode-C3hAfNP6.js → QrCode-DaJYqBc1.js} +2 -2
  160. package/dist/{QrCode-C3hAfNP6.js.map → QrCode-DaJYqBc1.js.map} +1 -1
  161. package/dist/{RemoveDialog-Hi_gV-8A.cjs → RemoveDialog-BnOtR6-q.cjs} +2 -2
  162. package/dist/{RemoveDialog-Hi_gV-8A.cjs.map → RemoveDialog-BnOtR6-q.cjs.map} +1 -1
  163. package/dist/{RemoveDialog-CXy-PY-G.js → RemoveDialog-MhEU5Zl3.js} +5 -5
  164. package/dist/{RemoveDialog-CXy-PY-G.js.map → RemoveDialog-MhEU5Zl3.js.map} +1 -1
  165. package/dist/RichTextEditor-Cnrnvv1f.cjs +2 -0
  166. package/dist/RichTextEditor-Cnrnvv1f.cjs.map +1 -0
  167. package/dist/RichTextEditor-zkoxujnO.js +1148 -0
  168. package/dist/RichTextEditor-zkoxujnO.js.map +1 -0
  169. package/dist/{RootLayout-CjT5uHlt.js → RootLayout-C4r9i5Go.js} +15 -15
  170. package/dist/{RootLayout-CjT5uHlt.js.map → RootLayout-C4r9i5Go.js.map} +1 -1
  171. package/dist/{RootLayout-iSGY4MsS.cjs → RootLayout-Z9PuRfsa.cjs} +2 -2
  172. package/dist/{RootLayout-iSGY4MsS.cjs.map → RootLayout-Z9PuRfsa.cjs.map} +1 -1
  173. package/dist/{Select-DVoL547R.cjs → Select-CylqFHce.cjs} +2 -2
  174. package/dist/{Select-DVoL547R.cjs.map → Select-CylqFHce.cjs.map} +1 -1
  175. package/dist/{Select-DuLDLnnb.js → Select-jT94L1vq.js} +3 -3
  176. package/dist/{Select-DuLDLnnb.js.map → Select-jT94L1vq.js.map} +1 -1
  177. package/dist/{Sidebar-DvQmuBNK.js → Sidebar-B1O2RsbR.js} +3 -3
  178. package/dist/{Sidebar-DvQmuBNK.js.map → Sidebar-B1O2RsbR.js.map} +1 -1
  179. package/dist/{Sidebar-DRQo4zAF.cjs → Sidebar-Bcm0fgVm.cjs} +2 -2
  180. package/dist/{Sidebar-DRQo4zAF.cjs.map → Sidebar-Bcm0fgVm.cjs.map} +1 -1
  181. package/dist/{Slider-DxnCQRSH.cjs → Slider-CV7ug0WF.cjs} +2 -2
  182. package/dist/{Slider-DxnCQRSH.cjs.map → Slider-CV7ug0WF.cjs.map} +1 -1
  183. package/dist/{Slider-D-QjclQJ.js → Slider-DC-ugZwT.js} +2 -2
  184. package/dist/{Slider-D-QjclQJ.js.map → Slider-DC-ugZwT.js.map} +1 -1
  185. package/dist/{SpeedDial-BBQ9y6lm.js → SpeedDial-C6yiMUe8.js} +2 -2
  186. package/dist/{SpeedDial-BBQ9y6lm.js.map → SpeedDial-C6yiMUe8.js.map} +1 -1
  187. package/dist/{SpeedDial-37OMwj9C.cjs → SpeedDial-DOgm2DDX.cjs} +2 -2
  188. package/dist/{SpeedDial-37OMwj9C.cjs.map → SpeedDial-DOgm2DDX.cjs.map} +1 -1
  189. package/dist/{Stepper-CU5Y0kfj.js → Stepper-BZdYGpBN.js} +2 -2
  190. package/dist/{Stepper-CU5Y0kfj.js.map → Stepper-BZdYGpBN.js.map} +1 -1
  191. package/dist/{Stepper-WqkfGPnQ.cjs → Stepper-DqM86TGV.cjs} +2 -2
  192. package/dist/{Stepper-WqkfGPnQ.cjs.map → Stepper-DqM86TGV.cjs.map} +1 -1
  193. package/dist/{Table-BnlvrRMr.cjs → Table-BgaCwRDQ.cjs} +2 -2
  194. package/dist/{Table-BnlvrRMr.cjs.map → Table-BgaCwRDQ.cjs.map} +1 -1
  195. package/dist/{Table-BECUUZtf.js → Table-FZlVWoYi.js} +16 -16
  196. package/dist/{Table-BECUUZtf.js.map → Table-FZlVWoYi.js.map} +1 -1
  197. package/dist/{Tabs-BXAHddi7.js → Tabs-BqQPkorY.js} +2 -2
  198. package/dist/{Tabs-BXAHddi7.js.map → Tabs-BqQPkorY.js.map} +1 -1
  199. package/dist/{Tabs-DiL1vNW3.cjs → Tabs-kGeyFhJ6.cjs} +2 -2
  200. package/dist/{Tabs-DiL1vNW3.cjs.map → Tabs-kGeyFhJ6.cjs.map} +1 -1
  201. package/dist/{TagsField-BsV_6dff.cjs → TagsField-B_sjp48X.cjs} +2 -2
  202. package/dist/{TagsField-BsV_6dff.cjs.map → TagsField-B_sjp48X.cjs.map} +1 -1
  203. package/dist/{TagsField-C1SgykAj.js → TagsField-ByTx9JXK.js} +4 -4
  204. package/dist/{TagsField-C1SgykAj.js.map → TagsField-ByTx9JXK.js.map} +1 -1
  205. package/dist/{TextField-DUv689u2.cjs → TextField-CBYJIfau.cjs} +2 -2
  206. package/dist/{TextField-DUv689u2.cjs.map → TextField-CBYJIfau.cjs.map} +1 -1
  207. package/dist/{TextField-oZI7thoU.js → TextField-CyKIx-d-.js} +3 -3
  208. package/dist/{TextField-oZI7thoU.js.map → TextField-CyKIx-d-.js.map} +1 -1
  209. package/dist/{ThemeToggle-xn3roH0u.cjs → ThemeToggle-D2dIqiBa.cjs} +2 -2
  210. package/dist/{ThemeToggle-xn3roH0u.cjs.map → ThemeToggle-D2dIqiBa.cjs.map} +1 -1
  211. package/dist/{ThemeToggle-5uHCUsX7.js → ThemeToggle-Dg6IishB.js} +3 -3
  212. package/dist/{ThemeToggle-5uHCUsX7.js.map → ThemeToggle-Dg6IishB.js.map} +1 -1
  213. package/dist/{TimeColumns-lO33mhX7.js → TimeColumns-Cx8J5qzW.js} +2 -2
  214. package/dist/{TimeColumns-lO33mhX7.js.map → TimeColumns-Cx8J5qzW.js.map} +1 -1
  215. package/dist/{TimeColumns-By23LHZw.cjs → TimeColumns-DVmK_T_P.cjs} +2 -2
  216. package/dist/{TimeColumns-By23LHZw.cjs.map → TimeColumns-DVmK_T_P.cjs.map} +1 -1
  217. package/dist/{TimePicker-BHFNH8LR.cjs → TimePicker-0nZOPRKp.cjs} +2 -2
  218. package/dist/{TimePicker-BHFNH8LR.cjs.map → TimePicker-0nZOPRKp.cjs.map} +1 -1
  219. package/dist/{TimePicker-Dl5p833O.js → TimePicker-sAhtvqQ4.js} +5 -5
  220. package/dist/{TimePicker-Dl5p833O.js.map → TimePicker-sAhtvqQ4.js.map} +1 -1
  221. package/dist/{Toaster-BPBFZiTr.js → Toaster-BOW9rzLq.js} +3 -3
  222. package/dist/{Toaster-BPBFZiTr.js.map → Toaster-BOW9rzLq.js.map} +1 -1
  223. package/dist/{Toaster-D4T89N1S.cjs → Toaster-DYGo92ke.cjs} +2 -2
  224. package/dist/{Toaster-D4T89N1S.cjs.map → Toaster-DYGo92ke.cjs.map} +1 -1
  225. package/dist/{TranslatedFields-LdeJeHEp.cjs → TranslatedFields-C_DuLotV.cjs} +2 -2
  226. package/dist/{TranslatedFields-LdeJeHEp.cjs.map → TranslatedFields-C_DuLotV.cjs.map} +1 -1
  227. package/dist/{TranslatedFields-Clsr84XC.js → TranslatedFields-CcE0td9p.js} +5 -5
  228. package/dist/{TranslatedFields-Clsr84XC.js.map → TranslatedFields-CcE0td9p.js.map} +1 -1
  229. package/dist/{UserCard-CQOiWppq.cjs → UserCard-DLVptkLr.cjs} +2 -2
  230. package/dist/{UserCard-CQOiWppq.cjs.map → UserCard-DLVptkLr.cjs.map} +1 -1
  231. package/dist/{UserCard-Cr75RwZb.js → UserCard-DeONbaKj.js} +3 -3
  232. package/dist/{UserCard-Cr75RwZb.js.map → UserCard-DeONbaKj.js.map} +1 -1
  233. package/dist/components/Alert/index.cjs +1 -1
  234. package/dist/components/Alert/index.js +1 -1
  235. package/dist/components/Breadcrumbs/index.cjs +1 -1
  236. package/dist/components/Breadcrumbs/index.js +1 -1
  237. package/dist/components/Button/index.cjs +1 -1
  238. package/dist/components/Button/index.js +1 -1
  239. package/dist/components/Card/index.cjs +1 -1
  240. package/dist/components/Card/index.js +1 -1
  241. package/dist/components/Chip/index.cjs +1 -1
  242. package/dist/components/Chip/index.js +1 -1
  243. package/dist/components/CodeBlock/index.cjs +1 -1
  244. package/dist/components/CodeBlock/index.js +1 -1
  245. package/dist/components/ColorPicker/index.cjs +1 -1
  246. package/dist/components/ColorPicker/index.js +1 -1
  247. package/dist/components/ColorRamp/index.cjs +1 -1
  248. package/dist/components/ColorRamp/index.js +1 -1
  249. package/dist/components/CopyButton/index.cjs +1 -1
  250. package/dist/components/CopyButton/index.js +1 -1
  251. package/dist/components/DatePicker/index.cjs +1 -1
  252. package/dist/components/DatePicker/index.js +1 -1
  253. package/dist/components/DateTimePicker/index.cjs +1 -1
  254. package/dist/components/DateTimePicker/index.js +1 -1
  255. package/dist/components/DescriptionList/index.cjs +1 -1
  256. package/dist/components/DescriptionList/index.js +1 -1
  257. package/dist/components/EmptyState/index.cjs +1 -1
  258. package/dist/components/EmptyState/index.js +1 -1
  259. package/dist/components/ErrorState/index.cjs +1 -1
  260. package/dist/components/ErrorState/index.js +2 -2
  261. package/dist/components/FileCard/index.cjs +1 -1
  262. package/dist/components/FileCard/index.js +1 -1
  263. package/dist/components/FileUploader/index.cjs +1 -1
  264. package/dist/components/FileUploader/index.js +1 -1
  265. package/dist/components/Flag/index.cjs +1 -1
  266. package/dist/components/Flag/index.js +1 -1
  267. package/dist/components/FullscreenToggle/index.cjs +1 -1
  268. package/dist/components/FullscreenToggle/index.js +1 -1
  269. package/dist/components/IconButton/index.cjs +1 -1
  270. package/dist/components/IconButton/index.js +1 -1
  271. package/dist/components/ImageEditor/index.cjs +1 -1
  272. package/dist/components/ImageEditor/index.js +1 -1
  273. package/dist/components/Loader/index.cjs +1 -1
  274. package/dist/components/Loader/index.js +1 -1
  275. package/dist/components/LocationPicker/index.cjs +1 -1
  276. package/dist/components/LocationPicker/index.js +1 -1
  277. package/dist/components/Modal/index.cjs +1 -1
  278. package/dist/components/Modal/index.js +1 -1
  279. package/dist/components/MultiSelect/index.cjs +1 -1
  280. package/dist/components/MultiSelect/index.js +1 -1
  281. package/dist/components/NumberField/index.cjs +1 -1
  282. package/dist/components/NumberField/index.js +1 -1
  283. package/dist/components/OtpField/index.cjs +1 -1
  284. package/dist/components/OtpField/index.js +1 -1
  285. package/dist/components/PageError/index.cjs +1 -1
  286. package/dist/components/PageError/index.js +1 -1
  287. package/dist/components/PageLayout/index.cjs +1 -1
  288. package/dist/components/PageLayout/index.js +1 -1
  289. package/dist/components/PageNotFound/index.cjs +1 -1
  290. package/dist/components/PageNotFound/index.js +1 -1
  291. package/dist/components/Pagination/index.cjs +1 -1
  292. package/dist/components/Pagination/index.js +1 -1
  293. package/dist/components/PaletteField/index.cjs +1 -1
  294. package/dist/components/PaletteField/index.js +1 -1
  295. package/dist/components/PhoneField/index.cjs +1 -1
  296. package/dist/components/PhoneField/index.js +1 -1
  297. package/dist/components/Popconfirm/index.cjs +1 -1
  298. package/dist/components/Popconfirm/index.js +1 -1
  299. package/dist/components/Progress/index.cjs +1 -1
  300. package/dist/components/Progress/index.js +1 -1
  301. package/dist/components/QrCode/index.cjs +1 -1
  302. package/dist/components/QrCode/index.js +1 -1
  303. package/dist/components/RemoveDialog/index.cjs +1 -1
  304. package/dist/components/RemoveDialog/index.js +1 -1
  305. package/dist/components/RichTextEditor/index.cjs +1 -1
  306. package/dist/components/RichTextEditor/index.js +1 -1
  307. package/dist/components/RichTextEditor/nodes/ImageNode.d.cts +17 -5
  308. package/dist/components/RichTextEditor/nodes/ImageNode.d.ts +17 -5
  309. package/dist/components/RootLayout/index.cjs +1 -1
  310. package/dist/components/RootLayout/index.js +1 -1
  311. package/dist/components/Select/index.cjs +1 -1
  312. package/dist/components/Select/index.js +1 -1
  313. package/dist/components/Sidebar/index.cjs +1 -1
  314. package/dist/components/Sidebar/index.js +1 -1
  315. package/dist/components/Slider/index.cjs +1 -1
  316. package/dist/components/Slider/index.js +1 -1
  317. package/dist/components/SpeedDial/index.cjs +1 -1
  318. package/dist/components/SpeedDial/index.js +1 -1
  319. package/dist/components/Stepper/index.cjs +1 -1
  320. package/dist/components/Stepper/index.js +1 -1
  321. package/dist/components/Table/index.cjs +1 -1
  322. package/dist/components/Table/index.js +1 -1
  323. package/dist/components/Tabs/index.cjs +1 -1
  324. package/dist/components/Tabs/index.js +1 -1
  325. package/dist/components/TagsField/index.cjs +1 -1
  326. package/dist/components/TagsField/index.js +1 -1
  327. package/dist/components/TextField/index.cjs +1 -1
  328. package/dist/components/TextField/index.js +1 -1
  329. package/dist/components/ThemeToggle/index.cjs +1 -1
  330. package/dist/components/ThemeToggle/index.js +1 -1
  331. package/dist/components/TimePicker/index.cjs +1 -1
  332. package/dist/components/TimePicker/index.js +1 -1
  333. package/dist/components/Toast/index.cjs +1 -1
  334. package/dist/components/Toast/index.js +1 -1
  335. package/dist/components/TranslatedFields/index.cjs +1 -1
  336. package/dist/components/TranslatedFields/index.js +1 -1
  337. package/dist/components/UserCard/index.cjs +1 -1
  338. package/dist/components/UserCard/index.js +1 -1
  339. package/dist/entries/app.cjs +1 -1
  340. package/dist/entries/app.js +1 -1
  341. package/dist/entries/components.cjs +1 -1
  342. package/dist/entries/components.js +53 -53
  343. package/dist/entries/i18n.cjs +1 -1
  344. package/dist/entries/i18n.js +2 -2
  345. package/dist/entries/theme.cjs +1 -1
  346. package/dist/entries/theme.js +1 -1
  347. package/dist/i18n/messages.d.cts +5 -0
  348. package/dist/i18n/messages.d.ts +5 -0
  349. package/dist/index.cjs +1 -1
  350. package/dist/index.css +1 -1
  351. package/dist/index.js +56 -56
  352. package/dist/{messages-BZYBZ3GR.js → messages-DeQuvGln.js} +47 -12
  353. package/dist/messages-DeQuvGln.js.map +1 -0
  354. package/dist/{messages-CTHjpVJq.cjs → messages-dL9MkVze.cjs} +9 -9
  355. package/dist/messages-dL9MkVze.cjs.map +1 -0
  356. package/dist/{useHomeTo-Biyc-Un8.js → useHomeTo-BL3e8Sc6.js} +2 -2
  357. package/dist/{useHomeTo-Biyc-Un8.js.map → useHomeTo-BL3e8Sc6.js.map} +1 -1
  358. package/dist/{useHomeTo-D7wcH6aw.cjs → useHomeTo-W1PDW5CU.cjs} +2 -2
  359. package/dist/{useHomeTo-D7wcH6aw.cjs.map → useHomeTo-W1PDW5CU.cjs.map} +1 -1
  360. package/dist/{useOptionMenu-BTt8t9SM.js → useOptionMenu-BkKiZ6Ax.js} +3 -3
  361. package/dist/{useOptionMenu-BTt8t9SM.js.map → useOptionMenu-BkKiZ6Ax.js.map} +1 -1
  362. package/dist/{useOptionMenu-B40OOVsO.cjs → useOptionMenu-CVl7VHXl.cjs} +2 -2
  363. package/dist/{useOptionMenu-B40OOVsO.cjs.map → useOptionMenu-CVl7VHXl.cjs.map} +1 -1
  364. package/package.json +1 -1
  365. package/dist/FileUploader-B27Y4rak.js +0 -706
  366. package/dist/FileUploader-B27Y4rak.js.map +0 -1
  367. package/dist/FileUploader-DkvFO0N_.cjs +0 -2
  368. package/dist/FileUploader-DkvFO0N_.cjs.map +0 -1
  369. package/dist/ImageEditor-DTFQZ6ON.js.map +0 -1
  370. package/dist/ImageEditor-D_HKfDbx.cjs +0 -60
  371. package/dist/ImageEditor-D_HKfDbx.cjs.map +0 -1
  372. package/dist/RichTextEditor-BhVE1q4U.cjs +0 -2
  373. package/dist/RichTextEditor-BhVE1q4U.cjs.map +0 -1
  374. package/dist/RichTextEditor-DQz9jGD3.js +0 -1011
  375. package/dist/RichTextEditor-DQz9jGD3.js.map +0 -1
  376. package/dist/messages-BZYBZ3GR.js.map +0 -1
  377. package/dist/messages-CTHjpVJq.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FileCard-Chfx0QdF.cjs","sources":["../src/components/FileCard/FileCard.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Avatar, type AvatarSize } from '../Avatar'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './FileCard.module.css'\n\nexport type FileCardSize = AvatarSize\n\nconst IMAGE_EXTS = new Set([\n 'png',\n 'jpg',\n 'jpeg',\n 'webp',\n 'svg',\n 'gif',\n 'avif',\n 'bmp',\n 'ico',\n 'heic',\n])\n\n// a leading icon per file family (non-image); everything else gets the generic document icon\nconst FILE_ICONS: Record<string, IconName> = {\n pdf: 'DocumentText',\n doc: 'DocumentText',\n docx: 'DocumentText',\n txt: 'DocumentText',\n rtf: 'DocumentText',\n md: 'DocumentText',\n csv: 'DocumentText',\n xls: 'DocumentText',\n xlsx: 'DocumentText',\n json: 'DocumentCode',\n xml: 'DocumentCode',\n zip: 'Folder',\n rar: 'Folder',\n '7z': 'Folder',\n mp4: 'VideoSquare',\n mov: 'VideoSquare',\n webm: 'VideoSquare',\n mp3: 'MusicSquare',\n wav: 'MusicSquare',\n}\n\n/** The lowercased extension from a file name, else the subtype from a MIME `type` (`image/png` → `png`). */\nfunction extensionOf(name: string, type?: string): string {\n const dot = name.lastIndexOf('.')\n if (dot > 0 && name.length - dot <= 7) return name.slice(dot + 1).toLowerCase()\n if (type && type.includes('/')) return type.slice(type.indexOf('/') + 1).toLowerCase()\n return ''\n}\n\n/** Split `report.pdf` into `{ base: 'report', ext: '.pdf' }` so the base can ellipsize and the type stays. */\nfunction splitName(name: string): { base: string; ext: string } {\n const dot = name.lastIndexOf('.')\n return dot > 0 && name.length - dot <= 7\n ? { base: name.slice(0, dot), ext: name.slice(dot) }\n : { base: name, ext: '' }\n}\n\n/** Human-readable byte size — `2411724` → `\"2.3 MB\"`. */\nfunction formatBytes(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) return ''\n if (bytes < 1024) return `${bytes} B`\n const units = ['KB', 'MB', 'GB', 'TB']\n let value = bytes / 1024\n let i = 0\n while (value >= 1024 && i < units.length - 1) {\n value /= 1024\n i += 1\n }\n return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[i]}`\n}\n\nexport interface FileCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** File name — shown middle-truncated (`test-file-na….pdf`) so the extension always stays visible. */\n name: string\n /** File URL — the download target and, for an image, the thumbnail `src`. */\n src?: string\n /**\n * File MIME type (`'image/png'`) — `image/*` forces image rendering; it supplies the type label only when\n * `name` has no extension (the name's extension wins). A bare extension here is ignored.\n */\n type?: string\n /** Force image vs. file rendering. Inferred from `type` / `name` when omitted. */\n image?: boolean\n /** File size — a **bytes** number (auto-formatted to `\"2.3 MB\"`) or a preformatted string. Shown after the type. */\n fileSize?: number | string\n /**\n * When no `fileSize` is given, fetch it from `src` via a `HEAD` request (reads `Content-Length`). Off\n * by default — it's a network call and needs CORS to expose the header; prefer passing `fileSize` from\n * the backend. Fails silently (no size shown) when unavailable.\n */\n fetchSize?: boolean\n /** Meta line under the name — overrides the derived `TYPE · size`. */\n meta?: ReactNode\n /** Theme token tinting the avatar / file-icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Size — scales the avatar, text and padding. Defaults to `md`. */\n size?: FileCardSize\n /** Show the download control (only when there's a `src` or `onDownload`). Defaults to `true`. */\n downloadable?: boolean\n /** Custom download handler — replaces the default (a download of `src`). */\n onDownload?: () => void\n}\n\n/**\n * A compact, read-only **file card** for displaying a file that already exists (e.g. from the backend) —\n * an image or a document (`pdf` / `docx` / `csv` / `svg` / …). Shows a leading **`Avatar`** (the image\n * thumbnail via `src`, or a type-based file icon in a tinted square), the **name** middle-truncated so\n * the extension is never lost, the **type** underneath, and a **download** control. Simple to drop in —\n * pass `name` (+ `src` for the thumbnail/download). Not to be confused with `FileUploader` (which\n * *collects* files to upload); this only *displays* one. Token-only styling.\n *\n * @example\n * <FileCard name=\"annual-report.pdf\" src=\"/files/annual-report.pdf\" />\n * <FileCard name=\"avatar.png\" src={url} meta=\"240 KB\" />\n */\nexport const FileCard = forwardRef<HTMLDivElement, FileCardProps>(function FileCard(\n {\n name,\n src,\n type,\n image,\n fileSize,\n fetchSize = false,\n meta,\n color = 'accent',\n size = 'md',\n downloadable = true,\n onDownload,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const ext = extensionOf(name, type)\n const isImage = image ?? (type?.startsWith('image/') || IMAGE_EXTS.has(ext))\n const { base, ext: nameExt } = splitName(name)\n\n // optional auto size via a HEAD request (only when opted in and no explicit fileSize)\n const [fetchedSize, setFetchedSize] = useState<number | null>(null)\n useEffect(() => {\n if (!fetchSize || fileSize != null || !src || typeof fetch === 'undefined') return\n let cancelled = false\n fetch(src, { method: 'HEAD' })\n .then((res) => {\n const len = res.headers.get('content-length')\n if (!cancelled && len) setFetchedSize(Number(len))\n })\n .catch(() => {})\n return () => {\n cancelled = true\n }\n }, [fetchSize, fileSize, src])\n\n const sizeText =\n fileSize != null\n ? typeof fileSize === 'number'\n ? formatBytes(fileSize)\n : fileSize\n : fetchedSize != null\n ? formatBytes(fetchedSize)\n : ''\n // \"TYPE · 2.3 MB\" (either part optional) — overridden wholesale by `meta`\n const derivedMeta = [ext ? ext.toUpperCase() : '', sizeText].filter(Boolean).join(' · ')\n const metaLine = meta ?? (derivedMeta || null)\n\n const handleDownload = () => {\n if (onDownload) return onDownload()\n if (!src) return\n const a = document.createElement('a')\n a.href = src\n a.download = name\n a.rel = 'noopener'\n a.click()\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.fileCard, styles[size], className)}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n {...props}\n >\n <Avatar\n className={styles.avatar}\n src={isImage ? src : undefined}\n icon={isImage ? undefined : (FILE_ICONS[ext] ?? 'Document')}\n name={name}\n shape=\"square\"\n size={size}\n color={color}\n />\n <div className={styles.body}>\n <span className={styles.name} title={name}>\n <span className={styles.nameBase}>{base}</span>\n {nameExt && <span className={styles.nameExt}>{nameExt}</span>}\n </span>\n {metaLine != null && (\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\" uppercase className={styles.type}>\n {metaLine}\n </Typography>\n )}\n </div>\n {downloadable && (src || onDownload) && (\n <IconButton\n variant=\"filled\"\n size={size === 'lg' ? 'md' : 'sm'}\n className={styles.download}\n aria-label={t('fileCard.download', { name })}\n onClick={handleDownload}\n >\n <Icon name=\"ImportArrow\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["IMAGE_EXTS","FILE_ICONS","extensionOf","name","type","dot","splitName","formatBytes","bytes","units","value","i","FileCard","forwardRef","src","image","fileSize","fetchSize","meta","color","size","downloadable","onDownload","className","style","props","ref","t","useT","ext","isImage","base","nameExt","fetchedSize","setFetchedSize","useState","useEffect","cancelled","res","len","sizeText","derivedMeta","metaLine","handleDownload","a","jsxs","clsx","styles","jsx","Avatar","Typography","IconButton","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"FileCard-BIfPqeek.cjs","sources":["../src/components/FileCard/FileCard.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Avatar, type AvatarSize } from '../Avatar'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './FileCard.module.css'\n\nexport type FileCardSize = AvatarSize\n\nconst IMAGE_EXTS = new Set([\n 'png',\n 'jpg',\n 'jpeg',\n 'webp',\n 'svg',\n 'gif',\n 'avif',\n 'bmp',\n 'ico',\n 'heic',\n])\n\n// a leading icon per file family (non-image); everything else gets the generic document icon\nconst FILE_ICONS: Record<string, IconName> = {\n pdf: 'DocumentText',\n doc: 'DocumentText',\n docx: 'DocumentText',\n txt: 'DocumentText',\n rtf: 'DocumentText',\n md: 'DocumentText',\n csv: 'DocumentText',\n xls: 'DocumentText',\n xlsx: 'DocumentText',\n json: 'DocumentCode',\n xml: 'DocumentCode',\n zip: 'Folder',\n rar: 'Folder',\n '7z': 'Folder',\n mp4: 'VideoSquare',\n mov: 'VideoSquare',\n webm: 'VideoSquare',\n mp3: 'MusicSquare',\n wav: 'MusicSquare',\n}\n\n/** The lowercased extension from a file name, else the subtype from a MIME `type` (`image/png` → `png`). */\nfunction extensionOf(name: string, type?: string): string {\n const dot = name.lastIndexOf('.')\n if (dot > 0 && name.length - dot <= 7) return name.slice(dot + 1).toLowerCase()\n if (type && type.includes('/')) return type.slice(type.indexOf('/') + 1).toLowerCase()\n return ''\n}\n\n/** Split `report.pdf` into `{ base: 'report', ext: '.pdf' }` so the base can ellipsize and the type stays. */\nfunction splitName(name: string): { base: string; ext: string } {\n const dot = name.lastIndexOf('.')\n return dot > 0 && name.length - dot <= 7\n ? { base: name.slice(0, dot), ext: name.slice(dot) }\n : { base: name, ext: '' }\n}\n\n/** Human-readable byte size — `2411724` → `\"2.3 MB\"`. */\nfunction formatBytes(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) return ''\n if (bytes < 1024) return `${bytes} B`\n const units = ['KB', 'MB', 'GB', 'TB']\n let value = bytes / 1024\n let i = 0\n while (value >= 1024 && i < units.length - 1) {\n value /= 1024\n i += 1\n }\n return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[i]}`\n}\n\nexport interface FileCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** File name — shown middle-truncated (`test-file-na….pdf`) so the extension always stays visible. */\n name: string\n /** File URL — the download target and, for an image, the thumbnail `src`. */\n src?: string\n /**\n * File MIME type (`'image/png'`) — `image/*` forces image rendering; it supplies the type label only when\n * `name` has no extension (the name's extension wins). A bare extension here is ignored.\n */\n type?: string\n /** Force image vs. file rendering. Inferred from `type` / `name` when omitted. */\n image?: boolean\n /** File size — a **bytes** number (auto-formatted to `\"2.3 MB\"`) or a preformatted string. Shown after the type. */\n fileSize?: number | string\n /**\n * When no `fileSize` is given, fetch it from `src` via a `HEAD` request (reads `Content-Length`). Off\n * by default — it's a network call and needs CORS to expose the header; prefer passing `fileSize` from\n * the backend. Fails silently (no size shown) when unavailable.\n */\n fetchSize?: boolean\n /** Meta line under the name — overrides the derived `TYPE · size`. */\n meta?: ReactNode\n /** Theme token tinting the avatar / file-icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Size — scales the avatar, text and padding. Defaults to `md`. */\n size?: FileCardSize\n /** Show the download control (only when there's a `src` or `onDownload`). Defaults to `true`. */\n downloadable?: boolean\n /** Custom download handler — replaces the default (a download of `src`). */\n onDownload?: () => void\n}\n\n/**\n * A compact, read-only **file card** for displaying a file that already exists (e.g. from the backend) —\n * an image or a document (`pdf` / `docx` / `csv` / `svg` / …). Shows a leading **`Avatar`** (the image\n * thumbnail via `src`, or a type-based file icon in a tinted square), the **name** middle-truncated so\n * the extension is never lost, the **type** underneath, and a **download** control. Simple to drop in —\n * pass `name` (+ `src` for the thumbnail/download). Not to be confused with `FileUploader` (which\n * *collects* files to upload); this only *displays* one. Token-only styling.\n *\n * @example\n * <FileCard name=\"annual-report.pdf\" src=\"/files/annual-report.pdf\" />\n * <FileCard name=\"avatar.png\" src={url} meta=\"240 KB\" />\n */\nexport const FileCard = forwardRef<HTMLDivElement, FileCardProps>(function FileCard(\n {\n name,\n src,\n type,\n image,\n fileSize,\n fetchSize = false,\n meta,\n color = 'accent',\n size = 'md',\n downloadable = true,\n onDownload,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const ext = extensionOf(name, type)\n const isImage = image ?? (type?.startsWith('image/') || IMAGE_EXTS.has(ext))\n const { base, ext: nameExt } = splitName(name)\n\n // optional auto size via a HEAD request (only when opted in and no explicit fileSize)\n const [fetchedSize, setFetchedSize] = useState<number | null>(null)\n useEffect(() => {\n if (!fetchSize || fileSize != null || !src || typeof fetch === 'undefined') return\n let cancelled = false\n fetch(src, { method: 'HEAD' })\n .then((res) => {\n const len = res.headers.get('content-length')\n if (!cancelled && len) setFetchedSize(Number(len))\n })\n .catch(() => {})\n return () => {\n cancelled = true\n }\n }, [fetchSize, fileSize, src])\n\n const sizeText =\n fileSize != null\n ? typeof fileSize === 'number'\n ? formatBytes(fileSize)\n : fileSize\n : fetchedSize != null\n ? formatBytes(fetchedSize)\n : ''\n // \"TYPE · 2.3 MB\" (either part optional) — overridden wholesale by `meta`\n const derivedMeta = [ext ? ext.toUpperCase() : '', sizeText].filter(Boolean).join(' · ')\n const metaLine = meta ?? (derivedMeta || null)\n\n const handleDownload = () => {\n if (onDownload) return onDownload()\n if (!src) return\n const a = document.createElement('a')\n a.href = src\n a.download = name\n a.rel = 'noopener'\n a.click()\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.fileCard, styles[size], className)}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n {...props}\n >\n <Avatar\n className={styles.avatar}\n src={isImage ? src : undefined}\n icon={isImage ? undefined : (FILE_ICONS[ext] ?? 'Document')}\n name={name}\n shape=\"square\"\n size={size}\n color={color}\n />\n <div className={styles.body}>\n <span className={styles.name} title={name}>\n <span className={styles.nameBase}>{base}</span>\n {nameExt && <span className={styles.nameExt}>{nameExt}</span>}\n </span>\n {metaLine != null && (\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\" uppercase className={styles.type}>\n {metaLine}\n </Typography>\n )}\n </div>\n {downloadable && (src || onDownload) && (\n <IconButton\n variant=\"filled\"\n size={size === 'lg' ? 'md' : 'sm'}\n className={styles.download}\n aria-label={t('fileCard.download', { name })}\n onClick={handleDownload}\n >\n <Icon name=\"ImportArrow\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["IMAGE_EXTS","FILE_ICONS","extensionOf","name","type","dot","splitName","formatBytes","bytes","units","value","i","FileCard","forwardRef","src","image","fileSize","fetchSize","meta","color","size","downloadable","onDownload","className","style","props","ref","t","useT","ext","isImage","base","nameExt","fetchedSize","setFetchedSize","useState","useEffect","cancelled","res","len","sizeText","derivedMeta","metaLine","handleDownload","a","jsxs","clsx","styles","jsx","Avatar","Typography","IconButton","Icon"],"mappings":"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"}
@@ -2,10 +2,10 @@ import { jsxs as m, jsx as c } from "react/jsx-runtime";
2
2
  import { forwardRef as A, useState as O, useEffect as y } from "react";
3
3
  import { clsx as L } from "clsx";
4
4
  import { A as $ } from "./Avatar-CaYyv5wk.js";
5
- import { I as V } from "./IconButton-EaExCXRq.js";
5
+ import { I as V } from "./IconButton-re6xITGO.js";
6
6
  import { b as k } from "./Icon-B7DJn8Tw.js";
7
7
  import { T as G } from "./Typography-ChSuxgkc.js";
8
- import { a as H } from "./ConfigProvider-CYgmMH4j.js";
8
+ import { a as H } from "./ConfigProvider-DVDGtCUc.js";
9
9
  const K = "_fileCard_1s46h_3", R = "_avatar_1s46h_26", U = "_body_1s46h_31", W = "_name_1s46h_40", X = "_nameBase_1s46h_47", z = "_nameExt_1s46h_53", J = "_type_1s46h_59", P = "_download_1s46h_63", Q = "_sm_1s46h_68", Y = "_md_1s46h_79", Z = "_lg_1s46h_83", o = {
10
10
  fileCard: K,
11
11
  avatar: R,
@@ -146,4 +146,4 @@ const ue = A(function({
146
146
  export {
147
147
  ue as F
148
148
  };
149
- //# sourceMappingURL=FileCard-m3i_8yKR.js.map
149
+ //# sourceMappingURL=FileCard-D4TB3qGG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileCard-m3i_8yKR.js","sources":["../src/components/FileCard/FileCard.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Avatar, type AvatarSize } from '../Avatar'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './FileCard.module.css'\n\nexport type FileCardSize = AvatarSize\n\nconst IMAGE_EXTS = new Set([\n 'png',\n 'jpg',\n 'jpeg',\n 'webp',\n 'svg',\n 'gif',\n 'avif',\n 'bmp',\n 'ico',\n 'heic',\n])\n\n// a leading icon per file family (non-image); everything else gets the generic document icon\nconst FILE_ICONS: Record<string, IconName> = {\n pdf: 'DocumentText',\n doc: 'DocumentText',\n docx: 'DocumentText',\n txt: 'DocumentText',\n rtf: 'DocumentText',\n md: 'DocumentText',\n csv: 'DocumentText',\n xls: 'DocumentText',\n xlsx: 'DocumentText',\n json: 'DocumentCode',\n xml: 'DocumentCode',\n zip: 'Folder',\n rar: 'Folder',\n '7z': 'Folder',\n mp4: 'VideoSquare',\n mov: 'VideoSquare',\n webm: 'VideoSquare',\n mp3: 'MusicSquare',\n wav: 'MusicSquare',\n}\n\n/** The lowercased extension from a file name, else the subtype from a MIME `type` (`image/png` → `png`). */\nfunction extensionOf(name: string, type?: string): string {\n const dot = name.lastIndexOf('.')\n if (dot > 0 && name.length - dot <= 7) return name.slice(dot + 1).toLowerCase()\n if (type && type.includes('/')) return type.slice(type.indexOf('/') + 1).toLowerCase()\n return ''\n}\n\n/** Split `report.pdf` into `{ base: 'report', ext: '.pdf' }` so the base can ellipsize and the type stays. */\nfunction splitName(name: string): { base: string; ext: string } {\n const dot = name.lastIndexOf('.')\n return dot > 0 && name.length - dot <= 7\n ? { base: name.slice(0, dot), ext: name.slice(dot) }\n : { base: name, ext: '' }\n}\n\n/** Human-readable byte size — `2411724` → `\"2.3 MB\"`. */\nfunction formatBytes(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) return ''\n if (bytes < 1024) return `${bytes} B`\n const units = ['KB', 'MB', 'GB', 'TB']\n let value = bytes / 1024\n let i = 0\n while (value >= 1024 && i < units.length - 1) {\n value /= 1024\n i += 1\n }\n return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[i]}`\n}\n\nexport interface FileCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** File name — shown middle-truncated (`test-file-na….pdf`) so the extension always stays visible. */\n name: string\n /** File URL — the download target and, for an image, the thumbnail `src`. */\n src?: string\n /**\n * File MIME type (`'image/png'`) — `image/*` forces image rendering; it supplies the type label only when\n * `name` has no extension (the name's extension wins). A bare extension here is ignored.\n */\n type?: string\n /** Force image vs. file rendering. Inferred from `type` / `name` when omitted. */\n image?: boolean\n /** File size — a **bytes** number (auto-formatted to `\"2.3 MB\"`) or a preformatted string. Shown after the type. */\n fileSize?: number | string\n /**\n * When no `fileSize` is given, fetch it from `src` via a `HEAD` request (reads `Content-Length`). Off\n * by default — it's a network call and needs CORS to expose the header; prefer passing `fileSize` from\n * the backend. Fails silently (no size shown) when unavailable.\n */\n fetchSize?: boolean\n /** Meta line under the name — overrides the derived `TYPE · size`. */\n meta?: ReactNode\n /** Theme token tinting the avatar / file-icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Size — scales the avatar, text and padding. Defaults to `md`. */\n size?: FileCardSize\n /** Show the download control (only when there's a `src` or `onDownload`). Defaults to `true`. */\n downloadable?: boolean\n /** Custom download handler — replaces the default (a download of `src`). */\n onDownload?: () => void\n}\n\n/**\n * A compact, read-only **file card** for displaying a file that already exists (e.g. from the backend) —\n * an image or a document (`pdf` / `docx` / `csv` / `svg` / …). Shows a leading **`Avatar`** (the image\n * thumbnail via `src`, or a type-based file icon in a tinted square), the **name** middle-truncated so\n * the extension is never lost, the **type** underneath, and a **download** control. Simple to drop in —\n * pass `name` (+ `src` for the thumbnail/download). Not to be confused with `FileUploader` (which\n * *collects* files to upload); this only *displays* one. Token-only styling.\n *\n * @example\n * <FileCard name=\"annual-report.pdf\" src=\"/files/annual-report.pdf\" />\n * <FileCard name=\"avatar.png\" src={url} meta=\"240 KB\" />\n */\nexport const FileCard = forwardRef<HTMLDivElement, FileCardProps>(function FileCard(\n {\n name,\n src,\n type,\n image,\n fileSize,\n fetchSize = false,\n meta,\n color = 'accent',\n size = 'md',\n downloadable = true,\n onDownload,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const ext = extensionOf(name, type)\n const isImage = image ?? (type?.startsWith('image/') || IMAGE_EXTS.has(ext))\n const { base, ext: nameExt } = splitName(name)\n\n // optional auto size via a HEAD request (only when opted in and no explicit fileSize)\n const [fetchedSize, setFetchedSize] = useState<number | null>(null)\n useEffect(() => {\n if (!fetchSize || fileSize != null || !src || typeof fetch === 'undefined') return\n let cancelled = false\n fetch(src, { method: 'HEAD' })\n .then((res) => {\n const len = res.headers.get('content-length')\n if (!cancelled && len) setFetchedSize(Number(len))\n })\n .catch(() => {})\n return () => {\n cancelled = true\n }\n }, [fetchSize, fileSize, src])\n\n const sizeText =\n fileSize != null\n ? typeof fileSize === 'number'\n ? formatBytes(fileSize)\n : fileSize\n : fetchedSize != null\n ? formatBytes(fetchedSize)\n : ''\n // \"TYPE · 2.3 MB\" (either part optional) — overridden wholesale by `meta`\n const derivedMeta = [ext ? ext.toUpperCase() : '', sizeText].filter(Boolean).join(' · ')\n const metaLine = meta ?? (derivedMeta || null)\n\n const handleDownload = () => {\n if (onDownload) return onDownload()\n if (!src) return\n const a = document.createElement('a')\n a.href = src\n a.download = name\n a.rel = 'noopener'\n a.click()\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.fileCard, styles[size], className)}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n {...props}\n >\n <Avatar\n className={styles.avatar}\n src={isImage ? src : undefined}\n icon={isImage ? undefined : (FILE_ICONS[ext] ?? 'Document')}\n name={name}\n shape=\"square\"\n size={size}\n color={color}\n />\n <div className={styles.body}>\n <span className={styles.name} title={name}>\n <span className={styles.nameBase}>{base}</span>\n {nameExt && <span className={styles.nameExt}>{nameExt}</span>}\n </span>\n {metaLine != null && (\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\" uppercase className={styles.type}>\n {metaLine}\n </Typography>\n )}\n </div>\n {downloadable && (src || onDownload) && (\n <IconButton\n variant=\"filled\"\n size={size === 'lg' ? 'md' : 'sm'}\n className={styles.download}\n aria-label={t('fileCard.download', { name })}\n onClick={handleDownload}\n >\n <Icon name=\"ImportArrow\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["IMAGE_EXTS","FILE_ICONS","extensionOf","name","type","dot","splitName","formatBytes","bytes","units","value","i","FileCard","forwardRef","src","image","fileSize","fetchSize","meta","color","size","downloadable","onDownload","className","style","props","ref","t","useT","ext","isImage","base","nameExt","fetchedSize","setFetchedSize","useState","useEffect","cancelled","res","len","sizeText","derivedMeta","metaLine","handleDownload","a","jsxs","clsx","styles","jsx","Avatar","Typography","IconButton","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"FileCard-D4TB3qGG.js","sources":["../src/components/FileCard/FileCard.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Avatar, type AvatarSize } from '../Avatar'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './FileCard.module.css'\n\nexport type FileCardSize = AvatarSize\n\nconst IMAGE_EXTS = new Set([\n 'png',\n 'jpg',\n 'jpeg',\n 'webp',\n 'svg',\n 'gif',\n 'avif',\n 'bmp',\n 'ico',\n 'heic',\n])\n\n// a leading icon per file family (non-image); everything else gets the generic document icon\nconst FILE_ICONS: Record<string, IconName> = {\n pdf: 'DocumentText',\n doc: 'DocumentText',\n docx: 'DocumentText',\n txt: 'DocumentText',\n rtf: 'DocumentText',\n md: 'DocumentText',\n csv: 'DocumentText',\n xls: 'DocumentText',\n xlsx: 'DocumentText',\n json: 'DocumentCode',\n xml: 'DocumentCode',\n zip: 'Folder',\n rar: 'Folder',\n '7z': 'Folder',\n mp4: 'VideoSquare',\n mov: 'VideoSquare',\n webm: 'VideoSquare',\n mp3: 'MusicSquare',\n wav: 'MusicSquare',\n}\n\n/** The lowercased extension from a file name, else the subtype from a MIME `type` (`image/png` → `png`). */\nfunction extensionOf(name: string, type?: string): string {\n const dot = name.lastIndexOf('.')\n if (dot > 0 && name.length - dot <= 7) return name.slice(dot + 1).toLowerCase()\n if (type && type.includes('/')) return type.slice(type.indexOf('/') + 1).toLowerCase()\n return ''\n}\n\n/** Split `report.pdf` into `{ base: 'report', ext: '.pdf' }` so the base can ellipsize and the type stays. */\nfunction splitName(name: string): { base: string; ext: string } {\n const dot = name.lastIndexOf('.')\n return dot > 0 && name.length - dot <= 7\n ? { base: name.slice(0, dot), ext: name.slice(dot) }\n : { base: name, ext: '' }\n}\n\n/** Human-readable byte size — `2411724` → `\"2.3 MB\"`. */\nfunction formatBytes(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) return ''\n if (bytes < 1024) return `${bytes} B`\n const units = ['KB', 'MB', 'GB', 'TB']\n let value = bytes / 1024\n let i = 0\n while (value >= 1024 && i < units.length - 1) {\n value /= 1024\n i += 1\n }\n return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[i]}`\n}\n\nexport interface FileCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** File name — shown middle-truncated (`test-file-na….pdf`) so the extension always stays visible. */\n name: string\n /** File URL — the download target and, for an image, the thumbnail `src`. */\n src?: string\n /**\n * File MIME type (`'image/png'`) — `image/*` forces image rendering; it supplies the type label only when\n * `name` has no extension (the name's extension wins). A bare extension here is ignored.\n */\n type?: string\n /** Force image vs. file rendering. Inferred from `type` / `name` when omitted. */\n image?: boolean\n /** File size — a **bytes** number (auto-formatted to `\"2.3 MB\"`) or a preformatted string. Shown after the type. */\n fileSize?: number | string\n /**\n * When no `fileSize` is given, fetch it from `src` via a `HEAD` request (reads `Content-Length`). Off\n * by default — it's a network call and needs CORS to expose the header; prefer passing `fileSize` from\n * the backend. Fails silently (no size shown) when unavailable.\n */\n fetchSize?: boolean\n /** Meta line under the name — overrides the derived `TYPE · size`. */\n meta?: ReactNode\n /** Theme token tinting the avatar / file-icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Size — scales the avatar, text and padding. Defaults to `md`. */\n size?: FileCardSize\n /** Show the download control (only when there's a `src` or `onDownload`). Defaults to `true`. */\n downloadable?: boolean\n /** Custom download handler — replaces the default (a download of `src`). */\n onDownload?: () => void\n}\n\n/**\n * A compact, read-only **file card** for displaying a file that already exists (e.g. from the backend) —\n * an image or a document (`pdf` / `docx` / `csv` / `svg` / …). Shows a leading **`Avatar`** (the image\n * thumbnail via `src`, or a type-based file icon in a tinted square), the **name** middle-truncated so\n * the extension is never lost, the **type** underneath, and a **download** control. Simple to drop in —\n * pass `name` (+ `src` for the thumbnail/download). Not to be confused with `FileUploader` (which\n * *collects* files to upload); this only *displays* one. Token-only styling.\n *\n * @example\n * <FileCard name=\"annual-report.pdf\" src=\"/files/annual-report.pdf\" />\n * <FileCard name=\"avatar.png\" src={url} meta=\"240 KB\" />\n */\nexport const FileCard = forwardRef<HTMLDivElement, FileCardProps>(function FileCard(\n {\n name,\n src,\n type,\n image,\n fileSize,\n fetchSize = false,\n meta,\n color = 'accent',\n size = 'md',\n downloadable = true,\n onDownload,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const ext = extensionOf(name, type)\n const isImage = image ?? (type?.startsWith('image/') || IMAGE_EXTS.has(ext))\n const { base, ext: nameExt } = splitName(name)\n\n // optional auto size via a HEAD request (only when opted in and no explicit fileSize)\n const [fetchedSize, setFetchedSize] = useState<number | null>(null)\n useEffect(() => {\n if (!fetchSize || fileSize != null || !src || typeof fetch === 'undefined') return\n let cancelled = false\n fetch(src, { method: 'HEAD' })\n .then((res) => {\n const len = res.headers.get('content-length')\n if (!cancelled && len) setFetchedSize(Number(len))\n })\n .catch(() => {})\n return () => {\n cancelled = true\n }\n }, [fetchSize, fileSize, src])\n\n const sizeText =\n fileSize != null\n ? typeof fileSize === 'number'\n ? formatBytes(fileSize)\n : fileSize\n : fetchedSize != null\n ? formatBytes(fetchedSize)\n : ''\n // \"TYPE · 2.3 MB\" (either part optional) — overridden wholesale by `meta`\n const derivedMeta = [ext ? ext.toUpperCase() : '', sizeText].filter(Boolean).join(' · ')\n const metaLine = meta ?? (derivedMeta || null)\n\n const handleDownload = () => {\n if (onDownload) return onDownload()\n if (!src) return\n const a = document.createElement('a')\n a.href = src\n a.download = name\n a.rel = 'noopener'\n a.click()\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.fileCard, styles[size], className)}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n {...props}\n >\n <Avatar\n className={styles.avatar}\n src={isImage ? src : undefined}\n icon={isImage ? undefined : (FILE_ICONS[ext] ?? 'Document')}\n name={name}\n shape=\"square\"\n size={size}\n color={color}\n />\n <div className={styles.body}>\n <span className={styles.name} title={name}>\n <span className={styles.nameBase}>{base}</span>\n {nameExt && <span className={styles.nameExt}>{nameExt}</span>}\n </span>\n {metaLine != null && (\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\" uppercase className={styles.type}>\n {metaLine}\n </Typography>\n )}\n </div>\n {downloadable && (src || onDownload) && (\n <IconButton\n variant=\"filled\"\n size={size === 'lg' ? 'md' : 'sm'}\n className={styles.download}\n aria-label={t('fileCard.download', { name })}\n onClick={handleDownload}\n >\n <Icon name=\"ImportArrow\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["IMAGE_EXTS","FILE_ICONS","extensionOf","name","type","dot","splitName","formatBytes","bytes","units","value","i","FileCard","forwardRef","src","image","fileSize","fetchSize","meta","color","size","downloadable","onDownload","className","style","props","ref","t","useT","ext","isImage","base","nameExt","fetchedSize","setFetchedSize","useState","useEffect","cancelled","res","len","sizeText","derivedMeta","metaLine","handleDownload","a","jsxs","clsx","styles","jsx","Avatar","Typography","IconButton","Icon"],"mappings":"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"}