@etus/ui 0.4.0-beta.7 → 0.4.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-KR3IVNQH.js → chunk-2FJJOHHH.js} +16 -10
- package/dist/chunk-2FJJOHHH.js.map +1 -0
- package/dist/{chunk-2YWWZEPE.js → chunk-2HM5Z2YP.js} +3 -3
- package/dist/{chunk-2YWWZEPE.js.map → chunk-2HM5Z2YP.js.map} +1 -1
- package/dist/{chunk-W4NC5CU5.js → chunk-2Q4I4VDB.js} +4 -4
- package/dist/{chunk-W4NC5CU5.js.map → chunk-2Q4I4VDB.js.map} +1 -1
- package/dist/{chunk-SCGKQ5RE.js → chunk-2ROFZG3A.js} +3 -3
- package/dist/{chunk-SCGKQ5RE.js.map → chunk-2ROFZG3A.js.map} +1 -1
- package/dist/chunk-2Z722V5K.js +231 -0
- package/dist/chunk-2Z722V5K.js.map +1 -0
- package/dist/chunk-37IIHQP4.js +233 -0
- package/dist/chunk-37IIHQP4.js.map +1 -0
- package/dist/{chunk-YP2ATSXP.js → chunk-3BBOSSDG.js} +14 -6
- package/dist/{chunk-YP2ATSXP.js.map → chunk-3BBOSSDG.js.map} +1 -1
- package/dist/{chunk-UFRMZ3M6.js → chunk-3JCV72FO.js} +6 -2
- package/dist/chunk-3JCV72FO.js.map +1 -0
- package/dist/{chunk-2UGDLAYC.js → chunk-45D4O7RK.js} +10 -3
- package/dist/chunk-45D4O7RK.js.map +1 -0
- package/dist/{chunk-OTSK2KAI.js → chunk-4EYYCHLD.js} +5 -5
- package/dist/{chunk-OTSK2KAI.js.map → chunk-4EYYCHLD.js.map} +1 -1
- package/dist/{chunk-QIETN4UU.js → chunk-55RLLBXW.js} +4 -4
- package/dist/{chunk-QIETN4UU.js.map → chunk-55RLLBXW.js.map} +1 -1
- package/dist/{chunk-FCT6FEEZ.js → chunk-5DMK7CVS.js} +5 -5
- package/dist/{chunk-FCT6FEEZ.js.map → chunk-5DMK7CVS.js.map} +1 -1
- package/dist/{chunk-J62TFQHR.js → chunk-5I7AXWJU.js} +13 -13
- package/dist/chunk-5I7AXWJU.js.map +1 -0
- package/dist/{chunk-65YSTUD2.js → chunk-5SUD32RK.js} +44 -14
- package/dist/chunk-5SUD32RK.js.map +1 -0
- package/dist/{chunk-VPNFYQBL.js → chunk-6DN2UAIR.js} +3 -3
- package/dist/chunk-6DN2UAIR.js.map +1 -0
- package/dist/{chunk-EGYWK2XX.js → chunk-7CTFBOD4.js} +3 -3
- package/dist/{chunk-EGYWK2XX.js.map → chunk-7CTFBOD4.js.map} +1 -1
- package/dist/{chunk-AWYOWR5N.js → chunk-C5HSYDJC.js} +3 -3
- package/dist/{chunk-AWYOWR5N.js.map → chunk-C5HSYDJC.js.map} +1 -1
- package/dist/{chunk-VFALJSXB.js → chunk-DCUFQJYP.js} +3 -3
- package/dist/chunk-DCUFQJYP.js.map +1 -0
- package/dist/{chunk-LATTRPLQ.js → chunk-E2TI5V67.js} +3 -3
- package/dist/{chunk-LATTRPLQ.js.map → chunk-E2TI5V67.js.map} +1 -1
- package/dist/{chunk-23BHD62H.js → chunk-EVZ2GZU4.js} +5 -5
- package/dist/chunk-EVZ2GZU4.js.map +1 -0
- package/dist/{chunk-IRKDMISK.js → chunk-G2MAGZHQ.js} +4 -3
- package/dist/chunk-G2MAGZHQ.js.map +1 -0
- package/dist/{chunk-4GQN76L7.js → chunk-G7PBPX3K.js} +3 -3
- package/dist/{chunk-4GQN76L7.js.map → chunk-G7PBPX3K.js.map} +1 -1
- package/dist/{chunk-36XTKR3B.js → chunk-GDSYLR7L.js} +4 -4
- package/dist/{chunk-36XTKR3B.js.map → chunk-GDSYLR7L.js.map} +1 -1
- package/dist/{chunk-ONQCNOLU.js → chunk-HDOR3SN3.js} +3 -3
- package/dist/{chunk-ONQCNOLU.js.map → chunk-HDOR3SN3.js.map} +1 -1
- package/dist/{chunk-PLLJNHWU.js → chunk-HI3T55XK.js} +3 -33
- package/dist/chunk-HI3T55XK.js.map +1 -0
- package/dist/chunk-HJ4E6YPW.js +236 -0
- package/dist/chunk-HJ4E6YPW.js.map +1 -0
- package/dist/{chunk-LS3WD6IZ.js → chunk-I55QJ4CU.js} +4 -4
- package/dist/{chunk-LS3WD6IZ.js.map → chunk-I55QJ4CU.js.map} +1 -1
- package/dist/{chunk-HKXQLWGR.js → chunk-IOWHM7ZY.js} +13 -11
- package/dist/chunk-IOWHM7ZY.js.map +1 -0
- package/dist/{chunk-ILAV2AZ4.js → chunk-IZC5YFGO.js} +3 -3
- package/dist/{chunk-ILAV2AZ4.js.map → chunk-IZC5YFGO.js.map} +1 -1
- package/dist/{chunk-Y7UFBSAD.js → chunk-KHOCAVQO.js} +3 -3
- package/dist/{chunk-Y7UFBSAD.js.map → chunk-KHOCAVQO.js.map} +1 -1
- package/dist/{chunk-IBVCSZCH.js → chunk-KVJOKWP4.js} +5 -4
- package/dist/chunk-KVJOKWP4.js.map +1 -0
- package/dist/{chunk-2Y7PQ6ZL.js → chunk-LNSCL76Q.js} +5 -5
- package/dist/{chunk-2Y7PQ6ZL.js.map → chunk-LNSCL76Q.js.map} +1 -1
- package/dist/{chunk-OWOVCGUZ.js → chunk-M2C7HBR5.js} +3 -3
- package/dist/{chunk-OWOVCGUZ.js.map → chunk-M2C7HBR5.js.map} +1 -1
- package/dist/{chunk-33JGPMUW.js → chunk-M7TPROVH.js} +20 -7
- package/dist/chunk-M7TPROVH.js.map +1 -0
- package/dist/{chunk-AVR3LVOQ.js → chunk-MQMRVBUL.js} +4 -4
- package/dist/{chunk-AVR3LVOQ.js.map → chunk-MQMRVBUL.js.map} +1 -1
- package/dist/{chunk-JMZ4CO6R.js → chunk-NCT5WXKG.js} +3 -3
- package/dist/{chunk-JMZ4CO6R.js.map → chunk-NCT5WXKG.js.map} +1 -1
- package/dist/{chunk-KPNNSUXM.js → chunk-O7AUE5GP.js} +5 -3
- package/dist/chunk-O7AUE5GP.js.map +1 -0
- package/dist/{chunk-6HEURMY3.js → chunk-OCXGG7UP.js} +5 -5
- package/dist/{chunk-6HEURMY3.js.map → chunk-OCXGG7UP.js.map} +1 -1
- package/dist/{chunk-FSMHI7DW.js → chunk-OXDWUKGP.js} +3 -3
- package/dist/chunk-OXDWUKGP.js.map +1 -0
- package/dist/{chunk-SJSYKUCL.js → chunk-Q335YODG.js} +3 -3
- package/dist/{chunk-SJSYKUCL.js.map → chunk-Q335YODG.js.map} +1 -1
- package/dist/{chunk-DDM2I5C6.js → chunk-R5OIL4I4.js} +3 -3
- package/dist/{chunk-DDM2I5C6.js.map → chunk-R5OIL4I4.js.map} +1 -1
- package/dist/{chunk-KC6CHPT3.js → chunk-RJ2QVURO.js} +4 -4
- package/dist/{chunk-KC6CHPT3.js.map → chunk-RJ2QVURO.js.map} +1 -1
- package/dist/{chunk-FYJHWYPM.js → chunk-S524YVMO.js} +3 -3
- package/dist/{chunk-FYJHWYPM.js.map → chunk-S524YVMO.js.map} +1 -1
- package/dist/{chunk-OWIFNJXZ.js → chunk-S7TVRVRU.js} +3 -3
- package/dist/chunk-S7TVRVRU.js.map +1 -0
- package/dist/{chunk-JKYB5QAP.js → chunk-SLRCXCHM.js} +4 -4
- package/dist/{chunk-JKYB5QAP.js.map → chunk-SLRCXCHM.js.map} +1 -1
- package/dist/{chunk-JONTKXGK.js → chunk-U2CXFKRK.js} +3 -3
- package/dist/{chunk-JONTKXGK.js.map → chunk-U2CXFKRK.js.map} +1 -1
- package/dist/{chunk-B4ETIQOO.js → chunk-U2R47SPY.js} +3 -3
- package/dist/{chunk-B4ETIQOO.js.map → chunk-U2R47SPY.js.map} +1 -1
- package/dist/{chunk-TNROOKX3.js → chunk-UDY3IDCY.js} +10 -2
- package/dist/chunk-UDY3IDCY.js.map +1 -0
- package/dist/{chunk-3WOGOTOV.js → chunk-UPYT2XM5.js} +7 -7
- package/dist/chunk-UPYT2XM5.js.map +1 -0
- package/dist/{chunk-V7XHE25E.js → chunk-UST7EAJM.js} +4 -4
- package/dist/{chunk-V7XHE25E.js.map → chunk-UST7EAJM.js.map} +1 -1
- package/dist/{chunk-YWA63YN3.js → chunk-VAVE4ZJF.js} +2 -2
- package/dist/chunk-VAVE4ZJF.js.map +1 -0
- package/dist/{chunk-6ELVWWIA.js → chunk-VBJ26PZJ.js} +3 -3
- package/dist/{chunk-6ELVWWIA.js.map → chunk-VBJ26PZJ.js.map} +1 -1
- package/dist/chunk-WKWLKGNI.js +643 -0
- package/dist/chunk-WKWLKGNI.js.map +1 -0
- package/dist/{chunk-Z3FL7LEK.js → chunk-X253YD45.js} +71 -6
- package/dist/chunk-X253YD45.js.map +1 -0
- package/dist/{chunk-6XY7QYVR.js → chunk-X3AXEE3S.js} +3 -3
- package/dist/{chunk-6XY7QYVR.js.map → chunk-X3AXEE3S.js.map} +1 -1
- package/dist/{chunk-R4UOT76L.js → chunk-XAIUZJOJ.js} +8 -8
- package/dist/chunk-XAIUZJOJ.js.map +1 -0
- package/dist/{chunk-ZO2EKJZM.js → chunk-XCZMJA2D.js} +7 -7
- package/dist/{chunk-ZO2EKJZM.js.map → chunk-XCZMJA2D.js.map} +1 -1
- package/dist/{chunk-XRMKL43Y.js → chunk-XOLV7G4S.js} +3 -3
- package/dist/{chunk-XRMKL43Y.js.map → chunk-XOLV7G4S.js.map} +1 -1
- package/dist/chunk-XYYOV5GW.js +186 -0
- package/dist/chunk-XYYOV5GW.js.map +1 -0
- package/dist/{chunk-4MQNDQ4O.js → chunk-YACIRNVP.js} +12 -4
- package/dist/chunk-YACIRNVP.js.map +1 -0
- package/dist/{chunk-5XQIH6WM.js → chunk-YM5YBDRM.js} +4 -4
- package/dist/{chunk-5XQIH6WM.js.map → chunk-YM5YBDRM.js.map} +1 -1
- package/dist/{chunk-AUCDXPWH.js → chunk-YZ25HHV2.js} +5 -5
- package/dist/{chunk-AUCDXPWH.js.map → chunk-YZ25HHV2.js.map} +1 -1
- package/dist/{chunk-Y3BOERVB.js → chunk-ZEFK3AXP.js} +3 -3
- package/dist/{chunk-Y3BOERVB.js.map → chunk-ZEFK3AXP.js.map} +1 -1
- package/dist/{chunk-L3Z5FAJE.js → chunk-ZEYLSDSG.js} +3 -3
- package/dist/{chunk-L3Z5FAJE.js.map → chunk-ZEYLSDSG.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +4 -4
- package/dist/components/advanced/Command/index.js +1 -1
- package/dist/components/advanced/EventCalendar/index.js +4 -4
- package/dist/components/advanced/FileDropzone/index.js +1 -1
- package/dist/components/advanced/FilterBuilder/index.js +4 -4
- package/dist/components/advanced/MarkdownEditor/index.js +2 -2
- package/dist/components/advanced/ReportBuilder/index.js +2 -2
- package/dist/components/advanced/RichTextEditor/index.js +2 -2
- package/dist/components/advanced/index.js +17 -17
- package/dist/components/data-display/AreaChart/index.js +1 -1
- package/dist/components/data-display/BarChart/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +4 -4
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +6 -6
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +4 -4
- package/dist/components/data-display/DataTable/index.js +7 -7
- package/dist/components/data-display/ImageGallery/index.js +7 -7
- package/dist/components/data-display/KPICard/index.js +4 -4
- package/dist/components/data-display/Lightbox/index.js +1 -1
- package/dist/components/data-display/LineChart/index.js +1 -1
- package/dist/components/data-display/List/index.js +3 -3
- package/dist/components/data-display/Table/index.js +1 -1
- package/dist/components/data-display/VirtualTable/index.js +2 -2
- package/dist/components/data-display/index.js +34 -34
- package/dist/components/feedback/Alert/index.js +1 -1
- package/dist/components/feedback/AlertDialog/index.js +4 -4
- package/dist/components/feedback/ConfirmModal/index.js +5 -5
- package/dist/components/feedback/Modal/index.js +1 -1
- package/dist/components/feedback/Notification/index.js +2 -2
- package/dist/components/feedback/index.js +10 -10
- package/dist/components/forms/ColorPicker/index.js +1 -1
- package/dist/components/forms/DatePicker/index.js +5 -5
- package/dist/components/forms/DateRangePicker/index.js +5 -5
- package/dist/components/forms/Field/index.js +2 -2
- package/dist/components/forms/Form/index.js +2 -2
- package/dist/components/forms/IftaLabel/index.js +1 -1
- package/dist/components/forms/InputGroup/index.js +4 -4
- package/dist/components/forms/InputOTPField/index.js +3 -3
- package/dist/components/forms/MultiSelect/index.js +2 -1
- package/dist/components/forms/RadioButton/index.js +1 -1
- package/dist/components/forms/Rating/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/TextareaField/index.js +3 -3
- package/dist/components/forms/ToggleGroup/index.js +1 -1
- package/dist/components/forms/index.js +31 -31
- package/dist/components/index.js +141 -141
- package/dist/components/layout/index.js +2 -2
- package/dist/components/navigation/AccountSwitch/index.js +4 -4
- package/dist/components/navigation/Drawer/index.js +1 -1
- package/dist/components/navigation/DropdownMenu/index.js +1 -1
- package/dist/components/navigation/Header/index.js +1 -1
- package/dist/components/navigation/MobileSidebar/index.js +4 -4
- package/dist/components/navigation/Pagination/index.js +4 -4
- package/dist/components/navigation/Sidebar/index.js +5 -5
- package/dist/components/navigation/UserProfileDropdown/index.js +1 -1
- package/dist/components/navigation/WorkspaceDropdown/index.js +1 -1
- package/dist/components/navigation/index.js +16 -16
- package/dist/components/primitives/AspectRatio/index.js +1 -1
- package/dist/components/primitives/Avatar/index.js +1 -1
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +3 -3
- package/dist/components/primitives/ConfirmButton/index.js +5 -5
- package/dist/components/primitives/Label/index.js +1 -1
- package/dist/components/primitives/ProgressBar/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +2 -2
- package/dist/components/primitives/StatusIndicator/index.js +1 -1
- package/dist/components/primitives/Tag/index.js +1 -1
- package/dist/components/primitives/Toggle/index.js +1 -1
- package/dist/components/primitives/index.js +21 -21
- package/dist/components/workflow/ApprovalFlow/index.js +5 -5
- package/dist/components/workflow/CommentSystem/index.js +5 -5
- package/dist/components/workflow/Dashboard/index.js +4 -4
- package/dist/components/workflow/DashboardBuilder/index.js +5 -5
- package/dist/components/workflow/KanbanBoard/index.js +5 -5
- package/dist/components/workflow/ReportGenerator/index.js +5 -5
- package/dist/components/workflow/TaskStatus/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +4 -4
- package/dist/components/workflow/index.js +16 -16
- package/dist/index.d.ts +162 -56
- package/dist/index.js +143 -143
- package/dist/styles.css +121 -25
- package/package.json +2 -2
- package/dist/chunk-23BHD62H.js.map +0 -1
- package/dist/chunk-2UGDLAYC.js.map +0 -1
- package/dist/chunk-33JGPMUW.js.map +0 -1
- package/dist/chunk-3WOGOTOV.js.map +0 -1
- package/dist/chunk-4MQNDQ4O.js.map +0 -1
- package/dist/chunk-65YSTUD2.js.map +0 -1
- package/dist/chunk-FSMHI7DW.js.map +0 -1
- package/dist/chunk-GAP3OZR7.js +0 -223
- package/dist/chunk-GAP3OZR7.js.map +0 -1
- package/dist/chunk-HKXQLWGR.js.map +0 -1
- package/dist/chunk-IBVCSZCH.js.map +0 -1
- package/dist/chunk-ICAQYWCX.js +0 -153
- package/dist/chunk-ICAQYWCX.js.map +0 -1
- package/dist/chunk-IRKDMISK.js.map +0 -1
- package/dist/chunk-J62TFQHR.js.map +0 -1
- package/dist/chunk-KPNNSUXM.js.map +0 -1
- package/dist/chunk-KR3IVNQH.js.map +0 -1
- package/dist/chunk-OWIFNJXZ.js.map +0 -1
- package/dist/chunk-PLLJNHWU.js.map +0 -1
- package/dist/chunk-R4UOT76L.js.map +0 -1
- package/dist/chunk-SHS6EGWS.js +0 -226
- package/dist/chunk-SHS6EGWS.js.map +0 -1
- package/dist/chunk-TNROOKX3.js.map +0 -1
- package/dist/chunk-UFRMZ3M6.js.map +0 -1
- package/dist/chunk-VFALJSXB.js.map +0 -1
- package/dist/chunk-VPNFYQBL.js.map +0 -1
- package/dist/chunk-XD5LE64P.js +0 -311
- package/dist/chunk-XD5LE64P.js.map +0 -1
- package/dist/chunk-XV6NXXXP.js +0 -206
- package/dist/chunk-XV6NXXXP.js.map +0 -1
- package/dist/chunk-YWA63YN3.js.map +0 -1
- package/dist/chunk-Z3FL7LEK.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Lightbox/Lightbox.tsx"],"names":[],"mappings":"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","file":"chunk-KR3IVNQH.js","sourcesContent":["\"use client\"\n\nimport type { LightboxImage, LightboxProps } from \"./Lightbox.types\"\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport {\n ChevronLeft,\n ChevronRight,\n Download,\n X,\n ZoomIn,\n ZoomOut,\n} from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\n// Shared button styles\nconst controlButtonBase = cn(\n \"flex items-center justify-center rounded-full\",\n \"bg-white/10 text-white transition-colors hover:bg-white/20\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50\"\n)\n\nconst controlButtonSmall = cn(controlButtonBase, \"size-10\")\nconst controlButtonLarge = cn(controlButtonBase, \"size-12\")\nconst controlButtonDisabled = \"disabled:cursor-not-allowed disabled:opacity-30\"\n\n/**\n * Lightbox - A full-screen media viewer with navigation, zoom, and captions\n *\n * @example\n * ```tsx\n * const [open, setOpen] = useState(false)\n * const images = [\n * { id: '1', src: '/img1.jpg', alt: 'Image 1', caption: 'First image' },\n * { id: '2', src: '/img2.jpg', alt: 'Image 2', caption: 'Second image' },\n * ]\n *\n * <Lightbox\n * images={images}\n * open={open}\n * onOpenChange={setOpen}\n * showCaption\n * enableZoom\n * />\n * ```\n */\nfunction Lightbox({\n className,\n enableDownload = false,\n enableZoom = true,\n images,\n initialIndex = 0,\n loop = true,\n onClose,\n onIndexChange,\n onOpenChange,\n open,\n showCaption = true,\n showCounter = true,\n showThumbnails = false,\n}: LightboxProps) {\n // Use a key to reset state when dialog opens at a specific index\n const [stateKey, setStateKey] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(initialIndex)\n const [zoom, setZoom] = React.useState(1)\n const [imageLoading, setImageLoading] = React.useState(true)\n const [imageError, setImageError] = React.useState(false)\n\n // Track previous open state to detect when dialog opens\n const prevOpenRef = React.useRef(open)\n\n // Reset state when dialog opens (not on every render)\n /* eslint-disable react-you-might-not-need-an-effect/no-derived-state, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Intentional state reset on open */\n React.useEffect(() => {\n if (open && !prevOpenRef.current) {\n // Dialog just opened - reset to initialIndex\n setCurrentIndex(initialIndex)\n setZoom(1)\n setImageLoading(true)\n setImageError(false)\n setStateKey((k) => k + 1)\n }\n prevOpenRef.current = open\n }, [open, initialIndex])\n /* eslint-enable react-you-might-not-need-an-effect/no-derived-state, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n\n // Reset loading state when the image changes\n /* eslint-disable react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, react-you-might-not-need-an-effect/no-chain-state-updates, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Image loading state sync */\n React.useEffect(() => {\n setImageLoading(true)\n setImageError(false)\n }, [currentIndex])\n /* eslint-enable react-you-might-not-need-an-effect/no-adjust-state-on-prop-change, react-you-might-not-need-an-effect/no-chain-state-updates, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n\n const currentImage: LightboxImage | undefined = images[currentIndex]\n const hasMultipleImages = images.length > 1\n\n const canGoNext = loop || currentIndex < images.length - 1\n const canGoPrev = loop || currentIndex > 0\n\n const goNext = React.useCallback(() => {\n if (!canGoNext) return\n setZoom(1)\n const nextIndex =\n currentIndex < images.length - 1\n ? currentIndex + 1\n : loop\n ? 0\n : currentIndex\n setCurrentIndex(nextIndex)\n onIndexChange?.(nextIndex)\n }, [currentIndex, images.length, loop, canGoNext, onIndexChange])\n\n const goPrev = React.useCallback(() => {\n if (!canGoPrev) return\n setZoom(1)\n const prevIndex =\n currentIndex > 0\n ? currentIndex - 1\n : loop\n ? images.length - 1\n : currentIndex\n setCurrentIndex(prevIndex)\n onIndexChange?.(prevIndex)\n }, [currentIndex, images.length, loop, canGoPrev, onIndexChange])\n\n const goToIndex = React.useCallback(\n (index: number) => {\n if (index >= 0 && index < images.length) {\n setZoom(1)\n setCurrentIndex(index)\n onIndexChange?.(index)\n }\n },\n [images.length, onIndexChange]\n )\n\n const handleClose = React.useCallback(() => {\n onOpenChange?.(false)\n onClose?.()\n }, [onOpenChange, onClose])\n\n const handleZoomIn = React.useCallback(() => {\n setZoom((prev) => Math.min(3, prev + 0.25))\n }, [])\n\n const handleZoomOut = React.useCallback(() => {\n setZoom((prev) => Math.max(0.5, prev - 0.25))\n }, [])\n\n const handleDownload = React.useCallback(() => {\n if (!currentImage) return\n\n const link = document.createElement(\"a\")\n link.href = currentImage.src\n link.download = currentImage.alt || `image-${currentImage.id}`\n link.target = \"_blank\"\n link.rel = \"noopener noreferrer\"\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }, [currentImage])\n\n const handleImageLoad = React.useCallback(() => {\n setImageLoading(false)\n setImageError(false)\n }, [])\n\n const handleImageError = React.useCallback(() => {\n setImageLoading(false)\n setImageError(true)\n }, [])\n\n // Keyboard navigation\n React.useEffect(() => {\n if (!open) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case \"ArrowLeft\":\n event.preventDefault()\n goPrev()\n break\n case \"ArrowRight\":\n event.preventDefault()\n goNext()\n break\n case \"Escape\":\n event.preventDefault()\n handleClose()\n break\n case \"+\":\n case \"=\":\n if (enableZoom) {\n event.preventDefault()\n handleZoomIn()\n }\n break\n case \"-\":\n if (enableZoom) {\n event.preventDefault()\n handleZoomOut()\n }\n break\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [open, goNext, goPrev, handleClose, enableZoom, handleZoomIn, handleZoomOut])\n\n if (!currentImage) return null\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/90\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\n )}\n data-slot=\"lightbox-overlay\"\n />\n <DialogPrimitive.Content\n key={stateKey}\n className={cn(\n \"fixed inset-0 z-50 flex flex-col\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"duration-200\",\n className\n )}\n aria-describedby={currentImage.caption ? \"lightbox-caption\" : undefined}\n aria-label={`Lightbox: ${currentImage.alt}`}\n data-slot=\"lightbox\"\n >\n {/* Hide dialog title for screen readers but provide accessible label */}\n <DialogPrimitive.Title className=\"sr-only\">\n Image Viewer\n </DialogPrimitive.Title>\n <DialogPrimitive.Description className=\"sr-only\">\n {`Viewing image ${String(currentIndex + 1)} of ${String(images.length)}`}\n </DialogPrimitive.Description>\n\n {/* Top controls bar */}\n <div\n className=\"absolute top-0 left-0 right-0 z-10 flex items-center justify-between p-4\"\n data-slot=\"lightbox-header\"\n >\n {/* Counter */}\n {showCounter && hasMultipleImages ? (\n <div\n aria-live=\"polite\"\n className=\"text-sm text-white/70\"\n data-slot=\"lightbox-counter\"\n >\n {currentIndex + 1} / {images.length}\n </div>\n ) : (\n <div />\n )}\n\n {/* Action buttons */}\n <div className=\"flex items-center gap-2\">\n {enableDownload && (\n <button\n aria-label=\"Download image\"\n className={controlButtonSmall}\n data-slot=\"lightbox-download\"\n type=\"button\"\n onClick={handleDownload}\n >\n <Download className=\"size-5\" />\n </button>\n )}\n <DialogPrimitive.Close asChild>\n <button\n aria-label=\"Close lightbox\"\n className={controlButtonSmall}\n data-slot=\"lightbox-close\"\n type=\"button\"\n >\n <X className=\"size-6\" />\n </button>\n </DialogPrimitive.Close>\n </div>\n </div>\n\n {/* Navigation arrows */}\n {hasMultipleImages && (\n <>\n <button\n className={cn(\n \"absolute left-4 top-1/2 z-10 -translate-y-1/2\",\n controlButtonLarge,\n controlButtonDisabled\n )}\n aria-label=\"Previous image\"\n data-slot=\"lightbox-prev\"\n disabled={!canGoPrev}\n type=\"button\"\n onClick={goPrev}\n >\n <ChevronLeft className=\"size-8\" />\n </button>\n <button\n className={cn(\n \"absolute right-4 top-1/2 z-10 -translate-y-1/2\",\n controlButtonLarge,\n controlButtonDisabled\n )}\n aria-label=\"Next image\"\n data-slot=\"lightbox-next\"\n disabled={!canGoNext}\n type=\"button\"\n onClick={goNext}\n >\n <ChevronRight className=\"size-8\" />\n </button>\n </>\n )}\n\n {/* Main image area */}\n <div\n className={cn(\n \"flex flex-1 items-center justify-center\",\n showThumbnails ? \"pb-24\" : \"pb-20\",\n \"pt-16 px-16\"\n )}\n data-slot=\"lightbox-image-container\"\n >\n {imageLoading && (\n <div\n className=\"absolute inset-0 flex items-center justify-center\"\n data-loading=\"true\"\n >\n <div className=\"size-12 animate-spin rounded-full border-4 border-white/20 border-t-white\" />\n </div>\n )}\n {imageError ? (\n <div\n className=\"flex flex-col items-center justify-center gap-4 text-white/70\"\n data-error=\"true\"\n >\n <X className=\"size-16 text-white/40\" />\n <span>Failed to load image</span>\n </div>\n ) : (\n <img\n className={cn(\n \"max-h-full max-w-full object-contain transition-all duration-200\",\n imageLoading ? \"opacity-0\" : \"opacity-100\"\n )}\n alt={currentImage.alt}\n data-slot=\"lightbox-image\"\n src={currentImage.src}\n style={{ transform: `scale(${String(zoom)})` }}\n onError={handleImageError}\n onLoad={handleImageLoad}\n />\n )}\n </div>\n\n {/* Bottom controls bar */}\n <div\n className={cn(\n \"absolute bottom-0 left-0 right-0 z-10 flex flex-col items-center gap-3 p-4\",\n showThumbnails ? \"pb-4\" : \"pb-6\"\n )}\n data-slot=\"lightbox-footer\"\n >\n {/* Zoom controls */}\n {enableZoom && (\n <div\n className=\"flex items-center gap-2\"\n data-slot=\"lightbox-zoom-controls\"\n >\n <button\n aria-label=\"Zoom out\"\n className={cn(controlButtonSmall, controlButtonDisabled)}\n data-slot=\"lightbox-zoom-out\"\n disabled={zoom <= 0.5}\n type=\"button\"\n onClick={handleZoomOut}\n >\n <ZoomOut className=\"size-5\" />\n </button>\n <span className=\"min-w-[4ch] text-center text-sm text-white/70\">\n {Math.round(zoom * 100)}%\n </span>\n <button\n aria-label=\"Zoom in\"\n className={cn(controlButtonSmall, controlButtonDisabled)}\n data-slot=\"lightbox-zoom-in\"\n disabled={zoom >= 3}\n type=\"button\"\n onClick={handleZoomIn}\n >\n <ZoomIn className=\"size-5\" />\n </button>\n </div>\n )}\n\n {/* Caption */}\n {showCaption && currentImage.caption && (\n <p\n className=\"text-center text-sm text-white/90\"\n data-slot=\"lightbox-caption\"\n id=\"lightbox-caption\"\n >\n {currentImage.caption}\n </p>\n )}\n\n {/* Thumbnails strip */}\n {showThumbnails && hasMultipleImages && (\n <div\n aria-label=\"Image thumbnails\"\n className=\"flex max-w-full gap-2 overflow-x-auto px-4 py-2\"\n data-slot=\"lightbox-thumbnails\"\n role=\"tablist\"\n >\n {images.map((image, index) => (\n <button\n key={image.id}\n className={cn(\n \"relative size-16 shrink-0 overflow-hidden rounded-md transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50\",\n index === currentIndex\n ? \"ring-2 ring-white ring-offset-2 ring-offset-black/90\"\n : \"opacity-60 hover:opacity-100\"\n )}\n aria-label={`View ${image.alt}`}\n aria-selected={index === currentIndex}\n data-slot=\"lightbox-thumbnail\"\n role=\"tab\"\n type=\"button\"\n onClick={() => {\n goToIndex(index)\n }}\n >\n <img\n alt={image.alt}\n className=\"size-full object-cover\"\n loading=\"lazy\"\n src={image.thumbnail ?? image.src}\n />\n </button>\n ))}\n </div>\n )}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nexport { Lightbox }\nexport type { LightboxImage, LightboxProps }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/StatusIndicator/StatusIndicator.tsx"],"names":[],"mappings":"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","file":"chunk-OWIFNJXZ.js","sourcesContent":["\"use client\"\n\nimport type { StatusIndicatorProps } from \"./StatusIndicator.types\"\n\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\n\n// Extracted to satisfy sonarjs/no-duplicate-string — each appears multiple times in compoundVariants.\nconst FULL_H = \"h-full\"\nconst FULL_W = \"w-full\"\nconst SHAPE_BAR_V = \"bar-vertical\" as const\nconst SHAPE_BAR_H = \"bar-horizontal\" as const\n\nconst statusIndicatorVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n success: \"bg-[color:var(--status-indicator-dot-color-success)]\",\n warning: \"bg-[color:var(--status-indicator-dot-color-warning)]\",\n error: \"bg-[color:var(--status-indicator-dot-color-error)]\",\n destructive: \"bg-[color:var(--status-indicator-dot-color-destructive)]\",\n info: \"bg-[color:var(--status-indicator-dot-color-info)]\",\n neutral: \"bg-[color:var(--status-indicator-dot-color-neutral)]\",\n },\n shape: {\n dot: \"rounded-[var(--status-indicator-root-border-radius)]\",\n \"bar-vertical\": \"rounded-xs\",\n \"bar-horizontal\": \"rounded-xs\",\n },\n size: {\n xs: \"\",\n sm: \"\",\n default: \"\",\n lg: \"\",\n xl: \"\",\n \"2xl\": \"\",\n },\n },\n compoundVariants: [\n // Dot — uses size for both dimensions\n { shape: \"dot\", size: \"xs\", className: \"size-[var(--status-indicator-dot-size-xs)]\" },\n { shape: \"dot\", size: \"sm\", className: \"size-[var(--status-indicator-dot-size-sm)]\" },\n { shape: \"dot\", size: \"default\", className: \"size-[var(--status-indicator-dot-size-default)]\" },\n { shape: \"dot\", size: \"lg\", className: \"size-[var(--status-indicator-dot-size-lg)]\" },\n { shape: \"dot\", size: \"xl\", className: \"size-[var(--status-indicator-dot-size-xl)]\" },\n { shape: \"dot\", size: \"2xl\", className: \"size-[var(--status-indicator-dot-size-2xl)]\" },\n // Bar-vertical — width is secondary dim (size controls it); height 100% (FULL_H constant below)\n { shape: SHAPE_BAR_V, size: \"xs\", className: `${FULL_H} w-px` },\n { shape: SHAPE_BAR_V, size: \"sm\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"default\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"lg\", className: `${FULL_H} w-[3px]` },\n { shape: SHAPE_BAR_V, size: \"xl\", className: `${FULL_H} w-[4px]` },\n { shape: SHAPE_BAR_V, size: \"2xl\", className: `${FULL_H} w-[6px]` },\n // Bar-horizontal — height is secondary dim; width 100% (FULL_W constant below)\n { shape: SHAPE_BAR_H, size: \"xs\", className: `${FULL_W} h-px` },\n { shape: SHAPE_BAR_H, size: \"sm\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"default\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"lg\", className: `${FULL_W} h-[3px]` },\n { shape: SHAPE_BAR_H, size: \"xl\", className: `${FULL_W} h-[4px]` },\n { shape: SHAPE_BAR_H, size: \"2xl\", className: `${FULL_W} h-[6px]` },\n ],\n defaultVariants: {\n variant: \"neutral\",\n shape: \"dot\",\n size: \"default\",\n },\n})\n\nfunction StatusIndicator({\n className,\n variant,\n shape = \"dot\",\n size,\n pulse = false,\n label,\n labelPosition = \"right\",\n \"aria-label\": ariaLabel,\n ...props\n}: StatusIndicatorProps) {\n // Generate accessible label based on variant if not provided\n const defaultAriaLabel = `Status: ${variant ?? \"neutral\"}`\n const accessibleLabel = ariaLabel ?? (label ? undefined : defaultAriaLabel)\n\n // Bar shapes ignore `label` — they're purely visual (warning in dev when misused).\n const isBar = shape === \"bar-vertical\" || shape === \"bar-horizontal\"\n // eslint-disable-next-line @typescript-eslint/dot-notation -- tsconfig has noPropertyAccessFromIndexSignature; bracket access on process.env is required by CI tsc.\n // `typeof process` guard is required so the library runs in browser bundlers (Vite, etc.) where `process` is not defined globally — without it, the dev-only warning branch throws `ReferenceError: process is not defined`.\n const isProd =\n typeof process !== \"undefined\" && process.env[\"NODE_ENV\"] === \"production\"\n if (isBar && label && !isProd) {\n \n console.warn(\n `<StatusIndicator shape=\"${shape}\"> ignores the \\`label\\` prop. Use shape=\"dot\" to combine with label, or move the label to surrounding context.`,\n )\n }\n\n // Bar shape — render the bar alone (no label, no inline-flex wrapper).\n if (isBar) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape, size }),\n pulse && \"animate-pulse\",\n className,\n )}\n aria-label={accessibleLabel}\n data-shape={shape}\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n />\n )\n }\n\n // If no label, render just the dot\n if (!label) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className=\"sr-only\"\n data-slot=\"status-indicator-dot\"\n >\n {variant ?? \"neutral\"}\n </span>\n </span>\n )\n }\n\n // With label, render inline-flex container\n return (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-[var(--status-indicator-label-gap)]\",\n labelPosition === \"left\" && \"flex-row-reverse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\"\n )}\n aria-hidden=\"true\"\n data-slot=\"status-indicator-dot\"\n />\n <span\n className=\"text-[length:var(--status-indicator-label-font-size)] leading-normal text-[color:var(--status-indicator-label-color)]\"\n data-slot=\"status-indicator-label\"\n >\n {label}\n </span>\n </span>\n )\n}\n\nexport { StatusIndicator, statusIndicatorVariants }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/navigation/Drawer/Drawer.variants.ts","../src/components/navigation/Drawer/Drawer.tsx"],"names":["DrawerPrimitive"],"mappings":"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","file":"chunk-PLLJNHWU.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DrawerOverlay variant styles\n * Semi-transparent backdrop behind the drawer\n */\nexport const drawerOverlayVariants = cva([\n \"fixed inset-0 z-50 bg-[color:var(--drawer-overlay-bg)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n])\n\n/**\n * DrawerContent variant styles\n * Main content container with directional positioning\n */\nexport const drawerContentVariants = cva(\n [\n \"group/drawer-content bg-[color:var(--drawer-content-bg)] fixed z-50 flex h-auto flex-col\",\n ],\n {\n variants: {\n /**\n * Visual styling applied based on direction\n * Note: Direction is controlled by vaul via data-vaul-drawer-direction attribute\n */\n direction: {\n top: [\n \"inset-x-0 top-0 mb-24 max-h-[80vh] rounded-b-[var(--drawer-content-radius)] border-b border-[color:var(--drawer-content-border)]\",\n ],\n bottom: [\n \"inset-x-0 bottom-0 mt-24 max-h-[80vh] rounded-t-[var(--drawer-content-radius)] border-t border-[color:var(--drawer-content-border)]\",\n ],\n left: [\n \"inset-y-0 left-0 w-3/4 border-r border-[color:var(--drawer-content-border)] sm:max-w-sm\",\n ],\n right: [\n \"inset-y-0 right-0 w-3/4 border-l border-[color:var(--drawer-content-border)] sm:max-w-sm\",\n ],\n },\n },\n defaultVariants: {\n direction: \"bottom\",\n },\n }\n)\n\n/**\n * DrawerContent base styles (direction handled by data attributes)\n * Use this when direction is controlled by vaul\n */\nexport const drawerContentBaseVariants = cva([\n \"group/drawer-content bg-[color:var(--drawer-content-bg)] fixed z-50 flex h-auto flex-col\",\n // Top direction styles\n \"data-[vaul-drawer-direction=top]:inset-x-0\",\n \"data-[vaul-drawer-direction=top]:top-0\",\n \"data-[vaul-drawer-direction=top]:mb-24\",\n \"data-[vaul-drawer-direction=top]:max-h-[80vh]\",\n \"data-[vaul-drawer-direction=top]:rounded-b-[var(--drawer-content-radius)]\",\n \"data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-[color:var(--drawer-content-border)]\",\n // Bottom direction styles\n \"data-[vaul-drawer-direction=bottom]:inset-x-0\",\n \"data-[vaul-drawer-direction=bottom]:bottom-0\",\n \"data-[vaul-drawer-direction=bottom]:mt-24\",\n \"data-[vaul-drawer-direction=bottom]:max-h-[80vh]\",\n \"data-[vaul-drawer-direction=bottom]:rounded-t-[var(--drawer-content-radius)]\",\n \"data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-[color:var(--drawer-content-border)]\",\n // Right direction styles\n \"data-[vaul-drawer-direction=right]:inset-y-0\",\n \"data-[vaul-drawer-direction=right]:right-0\",\n \"data-[vaul-drawer-direction=right]:w-3/4\",\n \"data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-[color:var(--drawer-content-border)]\",\n \"data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n // Left direction styles\n \"data-[vaul-drawer-direction=left]:inset-y-0\",\n \"data-[vaul-drawer-direction=left]:left-0\",\n \"data-[vaul-drawer-direction=left]:w-3/4\",\n \"data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-[color:var(--drawer-content-border)]\",\n \"data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n])\n\n/**\n * Drawer handle (drag indicator) variant styles\n */\nexport const drawerHandleVariants = cva([\n \"bg-[color:var(--drawer-handle-bg)] mx-auto mt-[var(--drawer-handle-margin-top)] h-[var(--drawer-handle-height)] w-[var(--drawer-handle-width)] shrink-0 rounded-full\",\n \"hidden group-data-[vaul-drawer-direction=bottom]/drawer-content:block\",\n])\n\n/**\n * DrawerHeader variant styles\n */\nexport const drawerHeaderVariants = cva([\n \"flex flex-col gap-[var(--drawer-header-gap)] p-[var(--drawer-header-padding)]\",\n \"md:gap-1.5 md:text-left\",\n \"group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center\",\n \"group-data-[vaul-drawer-direction=top]/drawer-content:text-center\",\n])\n\n/**\n * DrawerFooter variant styles\n */\nexport const drawerFooterVariants = cva([\n \"mt-auto flex flex-col gap-[var(--drawer-footer-gap)] p-[var(--drawer-footer-padding)]\",\n])\n\n/**\n * DrawerTitle variant styles\n */\nexport const drawerTitleVariants = cva([\n \"text-foreground font-semibold\",\n])\n\n/**\n * DrawerDescription variant styles\n */\nexport const drawerDescriptionVariants = cva([\n \"text-muted-foreground text-sm\",\n])\n\nexport type DrawerContentVariantProps = VariantProps<typeof drawerContentVariants>\n","\"use client\"\n\nimport type {\n DrawerCloseProps,\n DrawerContentProps,\n DrawerDescriptionProps,\n DrawerFooterProps,\n DrawerHeaderProps,\n DrawerOverlayProps,\n DrawerPortalProps,\n DrawerProps,\n DrawerTitleProps,\n DrawerTriggerProps,\n} from \"./Drawer.types\"\n\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n drawerContentBaseVariants,\n drawerDescriptionVariants,\n drawerFooterVariants,\n drawerHandleVariants,\n drawerHeaderVariants,\n drawerOverlayVariants,\n drawerTitleVariants,\n} from \"./Drawer.variants\"\n\n/**\n * Drawer - A drawer/slide-out panel component.\n *\n * Built on top of vaul for touch-friendly drawer behavior.\n * Supports all four directions: top, bottom, left, right.\n *\n * @example\n * <Drawer>\n * <DrawerTrigger>Open Drawer</DrawerTrigger>\n * <DrawerContent>\n * <DrawerHeader>\n * <DrawerTitle>Title</DrawerTitle>\n * <DrawerDescription>Description</DrawerDescription>\n * </DrawerHeader>\n * <div className=\"p-4\">Content</div>\n * </DrawerContent>\n * </Drawer>\n */\nfunction Drawer({ ...props }: DrawerProps) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\n/**\n * DrawerTrigger - Button that opens the drawer.\n */\nfunction DrawerTrigger({ ...props }: DrawerTriggerProps) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\n/**\n * DrawerPortal - Renders drawer content in a portal.\n */\nfunction DrawerPortal({ ...props }: DrawerPortalProps) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\n/**\n * DrawerClose - Button that closes the drawer.\n */\nfunction DrawerClose({ ...props }: DrawerCloseProps) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\n/**\n * DrawerOverlay - Semi-transparent backdrop behind the drawer.\n */\nfunction DrawerOverlay({ className, ...props }: DrawerOverlayProps) {\n return (\n <DrawerPrimitive.Overlay\n className={cn(drawerOverlayVariants(), className)}\n data-slot=\"drawer-overlay\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerContent - Main content container for the drawer.\n *\n * Automatically includes overlay and handles positioning based on direction.\n * Includes a drag handle for bottom drawers.\n */\nfunction DrawerContent({\n className,\n children,\n ...props\n}: DrawerContentProps) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(drawerContentBaseVariants(), className)}\n data-slot=\"drawer-content\"\n {...props}\n >\n <div className={cn(drawerHandleVariants())} />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\n/**\n * DrawerHeader - Container for drawer title and description.\n *\n * Centered text for top/bottom drawers, left-aligned for side drawers on desktop.\n */\nfunction DrawerHeader({ className, ...props }: DrawerHeaderProps) {\n return (\n <div\n className={cn(drawerHeaderVariants(), className)}\n data-slot=\"drawer-header\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerFooter - Footer container for drawer actions.\n *\n * Positioned at the bottom with auto margin-top.\n */\nfunction DrawerFooter({ className, ...props }: DrawerFooterProps) {\n return (\n <div\n className={cn(drawerFooterVariants(), className)}\n data-slot=\"drawer-footer\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerTitle - Title text for the drawer.\n */\nfunction DrawerTitle({ className, ...props }: DrawerTitleProps) {\n return (\n <DrawerPrimitive.Title\n className={cn(drawerTitleVariants(), className)}\n data-slot=\"drawer-title\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerDescription - Description text for the drawer.\n */\nfunction DrawerDescription({ className, ...props }: DrawerDescriptionProps) {\n return (\n <DrawerPrimitive.Description\n className={cn(drawerDescriptionVariants(), className)}\n data-slot=\"drawer-description\"\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/advanced/Calendar/Calendar.tsx","../src/components/advanced/Calendar/Calendar.variants.ts"],"names":["className","props"],"mappings":"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","file":"chunk-R4UOT76L.js","sourcesContent":["import type {\n CalendarDayButtonProps,\n CalendarProps,\n} from \"./Calendar.types\"\n\nimport { isSameDay } from \"date-fns\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport * as React from \"react\"\nimport { DayPicker, getDefaultClassNames } from \"react-day-picker\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { buttonVariants } from \"../../primitives/Button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n activeDates,\n modifiers: propModifiers,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames()\n\n // Convert activeDates to a modifier function\n const isActiveDate = React.useCallback(\n (date: Date): boolean => {\n if (!activeDates) return false\n if (Array.isArray(activeDates)) {\n return activeDates.some((activeDate) => isSameDay(activeDate, date))\n }\n return activeDates(date)\n },\n [activeDates]\n )\n\n // Merge activeDates modifier with any prop modifiers\n const modifiers = React.useMemo(\n () => ({\n ...propModifiers,\n active: activeDates ? isActiveDate : undefined,\n }),\n [propModifiers, activeDates, isActiveDate]\n )\n\n return (\n <DayPicker\n className={cn(\n \"bg-background group/calendar p-[var(--calendar-container-padding)] [--cell-size:var(--calendar-cell-size)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[length:var(--calendar-weekday-font-size)] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-[var(--calendar-week-gap)]\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[length:var(--calendar-weekday-font-size)] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n ref={rootRef}\n className={cn(className)}\n data-slot=\"calendar\"\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n captionLayout={captionLayout}\n modifiers={modifiers}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n children,\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames()\n\n const buttonRef = React.useRef<HTMLButtonElement>(null)\n const isFocused = modifiers[\"focused\"]\n const isToday = modifiers[\"today\"]\n const isActive = modifiers[\"active\"]\n\n React.useEffect(() => {\n if (isFocused) buttonRef.current?.focus()\n }, [isFocused])\n\n return (\n <button\n ref={buttonRef}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[selected-single=true]:rounded-md data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col items-center justify-center gap-0.5 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n data-selected-single={\n modifiers[\"selected\"] &&\n !modifiers[\"range_start\"] &&\n !modifiers[\"range_end\"] &&\n !modifiers[\"range_middle\"]\n }\n data-active={isActive ?? undefined}\n data-day={day.date.toLocaleDateString()}\n data-range-end={modifiers[\"range_end\"]}\n data-range-middle={modifiers[\"range_middle\"]}\n data-range-start={modifiers[\"range_start\"]}\n data-today={isToday ?? undefined}\n type=\"button\"\n {...props}\n >\n {children}\n {/* Show today indicator (priority) or active indicator */}\n {isToday ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-today-indicator-size,4px)] rounded-full bg-primary [[data-selected-single=true]>&]:bg-primary-foreground [[data-range-start=true]>&]:bg-primary-foreground [[data-range-end=true]>&]:bg-primary-foreground\"\n data-slot=\"today-indicator\"\n />\n ) : isActive ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-active-indicator-size,4px)] rounded-full bg-primary/60 [[data-selected-single=true]>&]:bg-primary-foreground/60 [[data-range-start=true]>&]:bg-primary-foreground/60 [[data-range-end=true]>&]:bg-primary-foreground/60\"\n data-slot=\"active-indicator\"\n />\n ) : null}\n </button>\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","// Calendar/Calendar.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * Calendar container styles\n */\nexport const calendarContainerVariants = cva(\n [\n \"bg-background\",\n \"group/calendar\",\n \"p-[var(--calendar-container-padding)]\",\n \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n \"[[data-slot=card-content]_&]:bg-transparent\",\n \"[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n ],\n {\n variants: {\n size: {\n default: \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n sm: \"[--cell-size:var(--calendar-container-cell-size-sm)]\",\n lg: \"[--cell-size:var(--calendar-container-cell-size-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Calendar day button styles\n */\nexport const calendarDayButtonVariants = cva(\n [\n \"flex\",\n \"aspect-square\",\n \"size-[var(--calendar-day-size)]\",\n \"w-full\",\n \"min-w-(--cell-size)\",\n \"flex-col\",\n \"gap-[var(--calendar-day-gap)]\",\n \"leading-none\",\n \"font-normal\",\n \"[&>span]:text-[length:var(--calendar-day-font-size)]\",\n \"[&>span]:opacity-70\",\n ],\n {\n variants: {\n state: {\n default: \"\",\n selected:\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n rangeStart:\n \"data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md\",\n rangeMiddle:\n \"data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-middle=true]:rounded-none\",\n rangeEnd:\n \"data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md\",\n focused:\n \"group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px]\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n }\n)\n\n/**\n * Navigation button styles (uses Button variants)\n */\nexport const calendarNavButtonVariants = cva(\n [\"size-(--cell-size)\", \"aria-disabled:opacity-50\", \"p-0\", \"select-none\"],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * Calendar day cell styles\n */\nexport const calendarDayCellVariants = cva(\n [\n \"relative\",\n \"w-full\",\n \"h-full\",\n \"p-0\",\n \"text-center\",\n \"[&:last-child[data-selected=true]_button]:rounded-r-md\",\n \"aspect-square\",\n \"select-none\",\n ],\n {\n variants: {\n showWeekNumber: {\n true: \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\",\n false: \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n },\n },\n defaultVariants: {\n showWeekNumber: false,\n },\n }\n)\n\n/**\n * Today cell styles\n */\nexport const calendarTodayVariants = cva([\n \"bg-accent\",\n \"text-accent-foreground\",\n \"rounded-md\",\n \"data-[selected=true]:rounded-none\",\n])\n\n/**\n * Today indicator dot styles\n */\nexport const calendarTodayIndicatorVariants = cva([\n \"size-[var(--calendar-indicator-size)]\",\n \"rounded-full\",\n \"bg-primary\",\n \"[[data-selected-single=true]>&]:bg-primary-foreground\",\n \"[[data-range-start=true]>&]:bg-primary-foreground\",\n \"[[data-range-end=true]>&]:bg-primary-foreground\",\n])\n\n/**\n * Range styles\n */\nexport const calendarRangeStartVariants = cva([\"rounded-l-md\", \"bg-accent\"])\n\nexport const calendarRangeMiddleVariants = cva([\"rounded-none\"])\n\nexport const calendarRangeEndVariants = cva([\"rounded-r-md\", \"bg-accent\"])\n\n/**\n * Outside days styles\n */\nexport const calendarOutsideVariants = cva([\n \"text-muted-foreground\",\n \"aria-selected:text-muted-foreground\",\n])\n\n/**\n * Disabled days styles\n */\nexport const calendarDisabledVariants = cva([\n \"text-muted-foreground\",\n \"opacity-50\",\n])\n"]}
|
package/dist/chunk-SHS6EGWS.js
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { ChartTooltipContent, ChartContainer, ChartTooltip, ChartLegend, ChartLegendContent } from './chunk-7I6KK6QE.js';
|
|
2
|
-
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { AreaChart as AreaChart$1, CartesianGrid, XAxis, Label, YAxis, Area } from 'recharts';
|
|
5
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
function normalizeSeriesConfig(series) {
|
|
8
|
-
return series.map(
|
|
9
|
-
(s) => typeof s === "string" ? { dataKey: s } : s
|
|
10
|
-
);
|
|
11
|
-
}
|
|
12
|
-
function GradientDefs({
|
|
13
|
-
idPrefix,
|
|
14
|
-
series
|
|
15
|
-
}) {
|
|
16
|
-
return /* @__PURE__ */ jsx("defs", { children: series.map((s) => /* @__PURE__ */ jsxs(
|
|
17
|
-
"linearGradient",
|
|
18
|
-
{
|
|
19
|
-
id: `${idPrefix}-${s.dataKey}`,
|
|
20
|
-
x1: "0",
|
|
21
|
-
x2: "0",
|
|
22
|
-
y1: "0",
|
|
23
|
-
y2: "1",
|
|
24
|
-
children: [
|
|
25
|
-
/* @__PURE__ */ jsx(
|
|
26
|
-
"stop",
|
|
27
|
-
{
|
|
28
|
-
offset: "5%",
|
|
29
|
-
stopColor: `var(--color-${s.dataKey})`,
|
|
30
|
-
stopOpacity: 0.8
|
|
31
|
-
}
|
|
32
|
-
),
|
|
33
|
-
/* @__PURE__ */ jsx(
|
|
34
|
-
"stop",
|
|
35
|
-
{
|
|
36
|
-
offset: "95%",
|
|
37
|
-
stopColor: `var(--color-${s.dataKey})`,
|
|
38
|
-
stopOpacity: 0.1
|
|
39
|
-
}
|
|
40
|
-
)
|
|
41
|
-
]
|
|
42
|
-
},
|
|
43
|
-
s.dataKey
|
|
44
|
-
)) });
|
|
45
|
-
}
|
|
46
|
-
function AreaChart({
|
|
47
|
-
allowDecimals = true,
|
|
48
|
-
autoMinValue = false,
|
|
49
|
-
className,
|
|
50
|
-
config,
|
|
51
|
-
connectNulls = false,
|
|
52
|
-
customTooltip,
|
|
53
|
-
enableLegendSlider = false,
|
|
54
|
-
curveType = "monotone",
|
|
55
|
-
data,
|
|
56
|
-
fill = "solid",
|
|
57
|
-
fillOpacity = 0.3,
|
|
58
|
-
gradientIdPrefix = "area-gradient",
|
|
59
|
-
gridDashArray = "3 3",
|
|
60
|
-
intervalType,
|
|
61
|
-
legendPosition = "bottom",
|
|
62
|
-
maxValue,
|
|
63
|
-
minValue,
|
|
64
|
-
onValueChange,
|
|
65
|
-
series,
|
|
66
|
-
showGrid = true,
|
|
67
|
-
showLegend = false,
|
|
68
|
-
showTooltip = true,
|
|
69
|
-
showXAxis = true,
|
|
70
|
-
showYAxis = true,
|
|
71
|
-
startEndOnly = false,
|
|
72
|
-
tickGap,
|
|
73
|
-
tooltipCallback,
|
|
74
|
-
tooltipIndicator = "dot",
|
|
75
|
-
variant = "default",
|
|
76
|
-
xAxisLabel,
|
|
77
|
-
xAxisKey,
|
|
78
|
-
xAxisTickFormatter,
|
|
79
|
-
yAxisLabel,
|
|
80
|
-
yAxisTickFormatter,
|
|
81
|
-
yAxisWidth,
|
|
82
|
-
...props
|
|
83
|
-
}) {
|
|
84
|
-
const normalizedSeries = normalizeSeriesConfig(series);
|
|
85
|
-
const isStacked = variant === "stacked" || variant === "percent";
|
|
86
|
-
const isPercent = variant === "percent";
|
|
87
|
-
const isGradient = variant === "gradient" || fill === "gradient";
|
|
88
|
-
const isNoFill = fill === "none";
|
|
89
|
-
const chartId = React.useId().replaceAll(":", "");
|
|
90
|
-
const gradientPrefix = `${gradientIdPrefix}-${chartId}`;
|
|
91
|
-
const prevTooltipStateRef = React.useRef(false);
|
|
92
|
-
const handleDotClick = React.useCallback(
|
|
93
|
-
(dataKey) => (data2) => {
|
|
94
|
-
if (!onValueChange) return;
|
|
95
|
-
const payload = data2.payload;
|
|
96
|
-
const value = payload[dataKey];
|
|
97
|
-
onValueChange({
|
|
98
|
-
category: payload[xAxisKey],
|
|
99
|
-
dataKey,
|
|
100
|
-
payload,
|
|
101
|
-
value: typeof value === "number" ? value : 0
|
|
102
|
-
});
|
|
103
|
-
},
|
|
104
|
-
[onValueChange, xAxisKey]
|
|
105
|
-
);
|
|
106
|
-
const TooltipContentWithCallback = React.useCallback(
|
|
107
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
|
-
(props2) => {
|
|
109
|
-
const { active = false, label, payload } = props2;
|
|
110
|
-
if (tooltipCallback && active !== prevTooltipStateRef.current) {
|
|
111
|
-
prevTooltipStateRef.current = active;
|
|
112
|
-
tooltipCallback({
|
|
113
|
-
active,
|
|
114
|
-
label,
|
|
115
|
-
payload: payload?.map((p) => ({
|
|
116
|
-
dataKey: String(p.dataKey),
|
|
117
|
-
value: p.value,
|
|
118
|
-
payload: p.payload
|
|
119
|
-
}))
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
return /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator, ...props2 });
|
|
123
|
-
},
|
|
124
|
-
[tooltipCallback, tooltipIndicator]
|
|
125
|
-
);
|
|
126
|
-
const yDomain = React.useMemo(() => {
|
|
127
|
-
const min = minValue ?? (autoMinValue ? "auto" : 0);
|
|
128
|
-
const max = maxValue ?? "auto";
|
|
129
|
-
return [min, max];
|
|
130
|
-
}, [autoMinValue, maxValue, minValue]);
|
|
131
|
-
const xAxisTicks = React.useMemo(() => {
|
|
132
|
-
if (!startEndOnly || data.length < 2) return;
|
|
133
|
-
const first = data[0];
|
|
134
|
-
const last = data[data.length - 1];
|
|
135
|
-
if (!first || !last) return;
|
|
136
|
-
return [first[xAxisKey], last[xAxisKey]];
|
|
137
|
-
}, [data, startEndOnly, xAxisKey]);
|
|
138
|
-
return /* @__PURE__ */ jsx("div", { "data-slot": "area-chart", ...props, children: /* @__PURE__ */ jsx(
|
|
139
|
-
ChartContainer,
|
|
140
|
-
{
|
|
141
|
-
className: cn(className),
|
|
142
|
-
config,
|
|
143
|
-
children: /* @__PURE__ */ jsxs(
|
|
144
|
-
AreaChart$1,
|
|
145
|
-
{
|
|
146
|
-
accessibilityLayer: true,
|
|
147
|
-
data,
|
|
148
|
-
margin: { left: xAxisLabel ? 20 : 12, right: 12, bottom: yAxisLabel ? 20 : 0 },
|
|
149
|
-
stackOffset: isPercent ? "expand" : void 0,
|
|
150
|
-
children: [
|
|
151
|
-
isGradient && /* @__PURE__ */ jsx(GradientDefs, { idPrefix: gradientPrefix, series: normalizedSeries }),
|
|
152
|
-
showGrid && /* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: gridDashArray, vertical: false }),
|
|
153
|
-
showXAxis && /* @__PURE__ */ jsx(
|
|
154
|
-
XAxis,
|
|
155
|
-
{
|
|
156
|
-
axisLine: false,
|
|
157
|
-
dataKey: xAxisKey,
|
|
158
|
-
interval: intervalType,
|
|
159
|
-
minTickGap: tickGap,
|
|
160
|
-
tickFormatter: xAxisTickFormatter,
|
|
161
|
-
tickLine: false,
|
|
162
|
-
tickMargin: 8,
|
|
163
|
-
ticks: xAxisTicks,
|
|
164
|
-
children: xAxisLabel && /* @__PURE__ */ jsx(Label, { offset: -5, position: "insideBottom", value: xAxisLabel })
|
|
165
|
-
}
|
|
166
|
-
),
|
|
167
|
-
showYAxis && /* @__PURE__ */ jsx(
|
|
168
|
-
YAxis,
|
|
169
|
-
{
|
|
170
|
-
allowDecimals,
|
|
171
|
-
axisLine: false,
|
|
172
|
-
domain: isPercent ? [0, 1] : yDomain,
|
|
173
|
-
tickFormatter: isPercent ? (value) => `${(value * 100).toFixed(0)}%` : yAxisTickFormatter,
|
|
174
|
-
tickLine: false,
|
|
175
|
-
tickMargin: 8,
|
|
176
|
-
width: yAxisWidth,
|
|
177
|
-
children: yAxisLabel && /* @__PURE__ */ jsx(Label, { angle: -90, offset: -5, position: "insideLeft", value: yAxisLabel })
|
|
178
|
-
}
|
|
179
|
-
),
|
|
180
|
-
showTooltip && /* @__PURE__ */ jsx(
|
|
181
|
-
ChartTooltip,
|
|
182
|
-
{
|
|
183
|
-
content: customTooltip ?? (tooltipCallback ? /* @__PURE__ */ jsx(TooltipContentWithCallback, {}) : /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator })),
|
|
184
|
-
cursor: false
|
|
185
|
-
}
|
|
186
|
-
),
|
|
187
|
-
showLegend && /* @__PURE__ */ jsx(
|
|
188
|
-
ChartLegend,
|
|
189
|
-
{
|
|
190
|
-
align: legendPosition === "left" ? "left" : legendPosition === "right" ? "right" : "center",
|
|
191
|
-
content: /* @__PURE__ */ jsx(ChartLegendContent, { enableSlider: enableLegendSlider }),
|
|
192
|
-
layout: legendPosition === "left" || legendPosition === "right" ? "vertical" : "horizontal",
|
|
193
|
-
verticalAlign: legendPosition === "top" ? "top" : legendPosition === "bottom" ? "bottom" : "middle"
|
|
194
|
-
}
|
|
195
|
-
),
|
|
196
|
-
normalizedSeries.map((seriesConfig) => {
|
|
197
|
-
const { dataKey, fillOpacity: seriesFillOpacity, stackId } = seriesConfig;
|
|
198
|
-
const areaFill = isGradient ? `url(#${gradientPrefix}-${dataKey})` : `var(--color-${dataKey})`;
|
|
199
|
-
const stroke = `var(--color-${dataKey})`;
|
|
200
|
-
const computedFillOpacity = isNoFill ? 0 : seriesFillOpacity ?? fillOpacity;
|
|
201
|
-
return /* @__PURE__ */ jsx(
|
|
202
|
-
Area,
|
|
203
|
-
{
|
|
204
|
-
activeDot: onValueChange ? { onClick: handleDotClick(dataKey), r: 6, style: { cursor: "pointer" } } : { r: 6 },
|
|
205
|
-
connectNulls,
|
|
206
|
-
dataKey,
|
|
207
|
-
fill: areaFill,
|
|
208
|
-
fillOpacity: computedFillOpacity,
|
|
209
|
-
stackId: isStacked ? "area-stack" : stackId,
|
|
210
|
-
stroke,
|
|
211
|
-
type: curveType
|
|
212
|
-
},
|
|
213
|
-
dataKey
|
|
214
|
-
);
|
|
215
|
-
})
|
|
216
|
-
]
|
|
217
|
-
}
|
|
218
|
-
)
|
|
219
|
-
}
|
|
220
|
-
) });
|
|
221
|
-
}
|
|
222
|
-
AreaChart.displayName = "AreaChart";
|
|
223
|
-
|
|
224
|
-
export { AreaChart };
|
|
225
|
-
//# sourceMappingURL=chunk-SHS6EGWS.js.map
|
|
226
|
-
//# sourceMappingURL=chunk-SHS6EGWS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/AreaChart/AreaChart.tsx"],"names":["data","props","RechartsAreaChart"],"mappings":"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","file":"chunk-SHS6EGWS.js","sourcesContent":["\"use client\"\n\nimport type {\n AreaChartProps,\n AreaChartSeriesConfig,\n} from \"./AreaChart.types\"\n\nimport * as React from \"react\"\nimport {\n Area,\n CartesianGrid,\n Label,\n AreaChart as RechartsAreaChart,\n XAxis,\n YAxis,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../Chart\"\n\n/**\n * Normalize series to AreaChartSeriesConfig format\n */\nfunction normalizeSeriesConfig(\n series: (AreaChartSeriesConfig | string)[]\n): AreaChartSeriesConfig[] {\n return series.map((s) =>\n typeof s === \"string\" ? { dataKey: s } : s\n )\n}\n\n/**\n * Generate gradient defs for gradient variant\n */\nfunction GradientDefs({\n idPrefix,\n series,\n}: {\n idPrefix: string\n series: AreaChartSeriesConfig[]\n}) {\n return (\n <defs>\n {series.map((s) => (\n <linearGradient\n key={s.dataKey}\n id={`${idPrefix}-${s.dataKey}`}\n x1=\"0\"\n x2=\"0\"\n y1=\"0\"\n y2=\"1\"\n >\n <stop\n offset=\"5%\"\n stopColor={`var(--color-${s.dataKey})`}\n stopOpacity={0.8}\n />\n <stop\n offset=\"95%\"\n stopColor={`var(--color-${s.dataKey})`}\n stopOpacity={0.1}\n />\n </linearGradient>\n ))}\n </defs>\n )\n}\n\n/**\n * AreaChart - Data visualization component for cumulative data\n *\n * Displays quantitative values along a continuous axis with filled area.\n * Ideal for showing trends over time and comparing volumes between series.\n *\n * @example\n * ```tsx\n * const data = [\n * { month: \"Jan\", desktop: 186, mobile: 80 },\n * { month: \"Feb\", desktop: 305, mobile: 200 },\n * ]\n *\n * const config = {\n * desktop: { label: \"Desktop\", color: \"hsl(var(--chart-1))\" },\n * mobile: { label: \"Mobile\", color: \"hsl(var(--chart-2))\" },\n * }\n *\n * <AreaChart\n * data={data}\n * config={config}\n * xAxisKey=\"month\"\n * series={[\"desktop\", \"mobile\"]}\n * />\n * ```\n */\nexport function AreaChart({\n allowDecimals = true,\n autoMinValue = false,\n className,\n config,\n connectNulls = false,\n customTooltip,\n enableLegendSlider = false,\n curveType = \"monotone\",\n data,\n fill = \"solid\",\n fillOpacity = 0.3,\n gradientIdPrefix = \"area-gradient\",\n gridDashArray = \"3 3\",\n intervalType,\n legendPosition = \"bottom\",\n maxValue,\n minValue,\n onValueChange,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n showXAxis = true,\n showYAxis = true,\n startEndOnly = false,\n tickGap,\n tooltipCallback,\n tooltipIndicator = \"dot\",\n variant = \"default\",\n xAxisLabel,\n xAxisKey,\n xAxisTickFormatter,\n yAxisLabel,\n yAxisTickFormatter,\n yAxisWidth,\n ...props\n}: AreaChartProps) {\n const normalizedSeries = normalizeSeriesConfig(series)\n const isStacked = variant === \"stacked\" || variant === \"percent\"\n const isPercent = variant === \"percent\"\n const isGradient = variant === \"gradient\" || fill === \"gradient\"\n const isNoFill = fill === \"none\"\n const chartId = React.useId().replaceAll(\":\", \"\")\n const gradientPrefix = `${gradientIdPrefix}-${chartId}`\n const prevTooltipStateRef = React.useRef<boolean>(false)\n\n // Handle dot click for onValueChange\n const handleDotClick = React.useCallback(\n (dataKey: string) => (data: { payload: Record<string, unknown> }) => {\n if (!onValueChange) return\n const payload = data.payload\n const value = payload[dataKey]\n onValueChange({\n category: payload[xAxisKey],\n dataKey,\n payload,\n value: typeof value === \"number\" ? value : 0,\n })\n },\n [onValueChange, xAxisKey]\n )\n\n /* eslint-disable react-hooks/static-components, @eslint-react/no-nested-component-definitions, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access -- Intentional: memoized render function with Recharts any-typed props */\n // Custom tooltip content wrapper for tooltipCallback\n const TooltipContentWithCallback = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: any) => {\n const { active = false, label, payload } = props\n\n // Call tooltipCallback when state changes\n if (tooltipCallback && active !== prevTooltipStateRef.current) {\n prevTooltipStateRef.current = active\n tooltipCallback({\n active,\n label,\n payload: payload?.map((p: { dataKey: number | string; payload: Record<string, unknown>; value: number; }) => ({\n dataKey: String(p.dataKey),\n value: p.value,\n payload: p.payload,\n })),\n })\n }\n\n return <ChartTooltipContent indicator={tooltipIndicator} {...props} />\n },\n [tooltipCallback, tooltipIndicator]\n )\n\n // Calculate Y-axis domain\n const yDomain = React.useMemo(() => {\n const min = minValue ?? (autoMinValue ? \"auto\" : 0)\n const max = maxValue ?? \"auto\"\n return [min, max] as const\n }, [autoMinValue, maxValue, minValue])\n\n // Calculate X-axis ticks for startEndOnly\n const xAxisTicks = React.useMemo(() => {\n if (!startEndOnly || data.length < 2) return\n const first = data[0]\n const last = data[data.length - 1]\n if (!first || !last) return\n return [first[xAxisKey], last[xAxisKey]] as string[]\n }, [data, startEndOnly, xAxisKey])\n\n return (\n <div data-slot=\"area-chart\" {...props}>\n <ChartContainer\n className={cn(className)}\n config={config}\n >\n <RechartsAreaChart\n accessibilityLayer\n data={data}\n margin={{ left: xAxisLabel ? 20 : 12, right: 12, bottom: yAxisLabel ? 20 : 0 }}\n stackOffset={isPercent ? \"expand\" : undefined}\n >\n {isGradient && (\n <GradientDefs idPrefix={gradientPrefix} series={normalizedSeries} />\n )}\n\n {showGrid && (\n <CartesianGrid strokeDasharray={gridDashArray} vertical={false} />\n )}\n\n {showXAxis && (\n <XAxis\n axisLine={false}\n dataKey={xAxisKey}\n interval={intervalType}\n minTickGap={tickGap}\n tickFormatter={xAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n ticks={xAxisTicks}\n >\n {xAxisLabel && (\n <Label offset={-5} position=\"insideBottom\" value={xAxisLabel} />\n )}\n </XAxis>\n )}\n\n {showYAxis && (\n <YAxis\n allowDecimals={allowDecimals}\n axisLine={false}\n domain={isPercent ? [0, 1] : yDomain}\n tickFormatter={isPercent ? (value) => `${(value * 100).toFixed(0)}%` : yAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n width={yAxisWidth}\n >\n {yAxisLabel && (\n <Label angle={-90} offset={-5} position=\"insideLeft\" value={yAxisLabel} />\n )}\n </YAxis>\n )}\n\n {showTooltip && (\n <ChartTooltip\n content={\n customTooltip\n ?? (tooltipCallback\n ? <TooltipContentWithCallback />\n : <ChartTooltipContent indicator={tooltipIndicator} />)\n }\n cursor={false}\n />\n )}\n\n {showLegend && (\n <ChartLegend\n align={legendPosition === \"left\" ? \"left\" : legendPosition === \"right\" ? \"right\" : \"center\"}\n content={<ChartLegendContent enableSlider={enableLegendSlider} />}\n layout={legendPosition === \"left\" || legendPosition === \"right\" ? \"vertical\" : \"horizontal\"}\n verticalAlign={legendPosition === \"top\" ? \"top\" : legendPosition === \"bottom\" ? \"bottom\" : \"middle\"}\n />\n )}\n\n {normalizedSeries.map((seriesConfig) => {\n const { dataKey, fillOpacity: seriesFillOpacity, stackId } = seriesConfig\n\n const areaFill = isGradient\n ? `url(#${gradientPrefix}-${dataKey})`\n : `var(--color-${dataKey})`\n\n const stroke = `var(--color-${dataKey})`\n\n // Calculate fill opacity: 0 for \"none\", otherwise use series or default\n const computedFillOpacity = isNoFill ? 0 : (seriesFillOpacity ?? fillOpacity)\n\n return (\n <Area\n key={dataKey}\n activeDot={\n onValueChange\n ? { onClick: handleDotClick(dataKey), r: 6, style: { cursor: \"pointer\" } }\n : { r: 6 }\n }\n connectNulls={connectNulls}\n dataKey={dataKey}\n fill={areaFill}\n fillOpacity={computedFillOpacity}\n stackId={isStacked ? \"area-stack\" : stackId}\n stroke={stroke}\n type={curveType}\n />\n )\n })}\n </RechartsAreaChart>\n </ChartContainer>\n </div>\n )\n}\n\nAreaChart.displayName = \"AreaChart\"\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/Badge/Badge.tsx"],"names":[],"mappings":";;;;;;;;AAaA,IAAM,gBAAA,GAAqE;AAAA,EACzE,OAAA,EAAS,EAAE,IAAA,EAAM,YAAA,EAAc,OAAO,SAAA,EAAU;AAAA,EAChD,SAAA,EAAW,EAAE,IAAA,EAAM,YAAA,EAAc,OAAO,OAAA,EAAQ;AAAA,EAChD,WAAA,EAAa,EAAE,IAAA,EAAM,YAAA,EAAc,OAAO,aAAA,EAAc;AAAA,EACxD,OAAA,EAAS,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAO,OAAA;AAC1C,CAAA;AAGA,IAAM,WAAA,GAAsC;AAAA,EAC1C,OAAA,EAAS,uBAAA;AAAA,EACT,WAAA,EAAa,UAAA;AAAA,EACb,OAAA,EAAS,uBAAA;AAAA,EACT,OAAA,EAAS,uBAAA;AAAA,EACT,IAAA,EAAM,UAAA;AAAA,EACN,GAAA,EAAK,UAAA;AAAA,EACL,KAAA,EAAO,qBAAA;AAAA,EACP,WAAA,EAAa,UAAA;AAAA,EACb,YAAA,EAAc,UAAA;AAAA,EACd,IAAA,EAAM,UAAA;AAAA,EACN,MAAA,EAAQ,UAAA;AAAA,EACR,MAAA,EAAQ,UAAA;AAAA,EACR,IAAA,EAAM,UAAA;AAAA,EACN,MAAA,EAAQ;AACV,CAAA;AAGA,IAAM,eAAA,GAA0C;AAAA,EAC9C,OAAA,EAAS,wDAAA;AAAA,EACT,WAAA,EAAa,8BAAA;AAAA,EACb,OAAA,EAAS,wDAAA;AAAA,EACT,OAAA,EAAS,wDAAA;AAAA,EACT,IAAA,EAAM,8BAAA;AAAA,EACN,GAAA,EAAK,8BAAA;AAAA,EACL,KAAA,EAAO,oDAAA;AAAA,EACP,WAAA,EAAa,8BAAA;AAAA,EACb,YAAA,EAAc,8BAAA;AAAA,EACd,IAAA,EAAM,8BAAA;AAAA,EACN,MAAA,EAAQ,8BAAA;AAAA,EACR,MAAA,EAAQ,8BAAA;AAAA,EACR,IAAA,EAAM,8BAAA;AAAA,EACN,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,wVAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,YAAA,EAAc,uDAAA;AAAA,QACd,cAAA,EAAgB,mDAAA;AAAA,QAChB,aAAA,EAAe,0DAAA;AAAA,QACf,eAAA,EAAiB,sDAAA;AAAA,QACjB,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,WAAA,EAAa,EAAA;AAAA,QACb,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS,EAAA;AAAA,QACT,IAAA,EAAM,EAAA;AAAA,QACN,GAAA,EAAK,EAAA;AAAA,QACL,KAAA,EAAO,EAAA;AAAA,QACP,WAAA,EAAa,EAAA;AAAA,QACb,YAAA,EAAc,EAAA;AAAA,QACd,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ,EAAA;AAAA,QACR,MAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gHAAA;AAAA,QACJ,OAAA,EAAS,kHAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA;AAAA;AAAA;AAAA,MAIhB,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MACzI,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,aAAA,EAAe,WAAW,6FAAA,EAA8F;AAAA,MACrJ,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MACzI,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MACzI,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,MAAA,EAAQ,WAAW,8BAAA,EAA+B;AAAA,MAC/E,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,KAAA,EAAO,WAAW,mBAAA,EAAoB;AAAA,MACnE,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,OAAA,EAAS,WAAW,yFAAA,EAA0F;AAAA,MAC3I,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,WAAA,EAAa,WAAW,yBAAA,EAA0B;AAAA,MAC/E,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,YAAA,EAAc,WAAW,yBAAA,EAA0B;AAAA,MAChF,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,MAAA,EAAQ,WAAW,2BAAA,EAA4B;AAAA,MAC5E,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,QAAA,EAAU,WAAW,+BAAA,EAAgC;AAAA,MAClF,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,QAAA,EAAU,WAAW,+BAAA,EAAgC;AAAA,MAClF,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,MAAA,EAAQ,WAAW,2BAAA,EAA4B;AAAA,MAC5E,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,QAAA,EAAU,WAAW,+BAAA,EAAgC;AAAA;AAAA;AAAA;AAAA,MAKlF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,aAAA,EAAe,WAAW,qCAAA,EAAsC;AAAA,MAC/F,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,uBAAA,EAAwB;AAAA,MAC1E,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,WAAW,qBAAA,EAAsB;AAAA,MACvE,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,OAAA,EAAS,WAAW,qCAAA,EAAsC;AAAA,MACzF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,WAAA,EAAa,WAAW,iCAAA,EAAkC;AAAA,MACzF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,YAAA,EAAc,WAAW,6BAAA,EAA8B;AAAA,MACtF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,+BAAA,EAAgC;AAAA,MAClF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,QAAA,EAAU,WAAW,mCAAA,EAAoC;AAAA,MACxF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,QAAA,EAAU,WAAW,mCAAA,EAAoC;AAAA,MACxF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,+BAAA,EAAgC;AAAA,MAClF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,QAAA,EAAU,WAAW,mCAAA,EAAoC;AAAA;AAAA;AAAA;AAAA,MAKxF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,WAAW,oCAAA,EAAqC;AAAA,MACzF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,aAAA,EAAe,WAAW,2BAAA,EAA4B;AAAA,MACpF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MAC1I,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MAC1I,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,MAAA,EAAQ,WAAW,8BAAA,EAA+B;AAAA,MAChF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,KAAA,EAAO,WAAW,mBAAA,EAAoB;AAAA,MACpE,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,OAAA,EAAS,WAAW,gCAAA,EAAiC;AAAA,MACnF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,WAAA,EAAa,WAAW,yBAAA,EAA0B;AAAA,MAChF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,YAAA,EAAc,WAAW,yBAAA,EAA0B;AAAA,MACjF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,MAAA,EAAQ,WAAW,2BAAA,EAA4B;AAAA,MAC7E,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,WAAW,+BAAA,EAAgC;AAAA,MACnF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,WAAW,+BAAA,EAAgC;AAAA,MACnF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,MAAA,EAAQ,WAAW,2BAAA,EAA4B;AAAA,MAC7E,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,WAAW,+BAAA,EAAgC;AAAA;AAAA;AAAA;AAAA,MAKnF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACpF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,aAAA,EAAe,WAAW,qCAAA,EAAsC;AAAA,MAChG,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACpF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACpF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,MAAA,EAAQ,WAAW,uBAAA,EAAwB;AAAA,MAC3E,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,KAAA,EAAO,WAAW,qBAAA,EAAsB;AAAA,MACxE,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,OAAA,EAAS,WAAW,qCAAA,EAAsC;AAAA,MAC1F,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,WAAA,EAAa,WAAW,iCAAA,EAAkC;AAAA,MAC1F,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,YAAA,EAAc,WAAW,6BAAA,EAA8B;AAAA,MACvF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,MAAA,EAAQ,WAAW,+BAAA,EAAgC;AAAA,MACnF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAU,WAAW,mCAAA,EAAoC;AAAA,MACzF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAU,WAAW,mCAAA,EAAoC;AAAA,MACzF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,MAAA,EAAQ,WAAW,+BAAA,EAAgC;AAAA,MACnF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAU,WAAW,mCAAA,EAAoC;AAAA;AAAA;AAAA;AAAA,MAKzF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6CAAA,EAA8C;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,aAAA,EAAe,WAAW,yDAAA,EAA0D;AAAA,MACnH,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6CAAA,EAA8C;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6CAAA,EAA8C;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,oCAAA,EAAqC;AAAA,MACvF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,WAAW,iCAAA,EAAkC;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,OAAA,EAAS,WAAW,0DAAA,EAA2D;AAAA,MAC9G,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,WAAA,EAAa,WAAW,mDAAA,EAAoD;AAAA,MAC3G,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,YAAA,EAAc,WAAW,6CAAA,EAA8C;AAAA,MACtG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,gDAAA,EAAiD;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,QAAA,EAAU,WAAW,sDAAA,EAAuD;AAAA,MAC3G,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,QAAA,EAAU,WAAW,sDAAA,EAAuD;AAAA,MAC3G,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,gDAAA,EAAiD;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,QAAA,EAAU,WAAW,sDAAA;AAAuD,KAC7G;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,YAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM;AAAA;AACR;AAEJ;AAGA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAA0B;AAClD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,gCAAA,EAAkC,WAAA,CAAY,KAAK,CAAA,IAAK,WAAA,CAAY,SAAS,CAAC,CAAA;AAAA,MAC5F,WAAA,EAAU;AAAA;AAAA,GACZ;AAEJ;AAGA,SAAS,aAAa,EAAE,OAAA,EAAS,OAAO,IAAA,EAAM,YAAA,GAAe,WAAU,EAAqF;AAC1J,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwB;AAC3C,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2B;AAChD,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,OAAA,EAAQ;AAAA,IACV;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,MAAA,GAAS,IAAA,KAAS,YAAA,IAAgB,IAAA,KAAS,cAAA;AACjD,EAAA,MAAM,UAAA,GAAa,SAAS,cAAA,GAAiB,YAAA;AAE7C,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gGAAA;AAAA,QACA,UAAA;AAAA,QACA,yEAAA;AAAA,QACA,eAAA,CAAgB,KAAK,CAAA,IAAK,eAAA,CAAgB,SAAS;AAAA,OACrD;AAAA,MACA,YAAA,EAAY,YAAA;AAAA,MACZ,WAAA,EAAU,eAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MAEX,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,GACxB;AAEJ;AAGA,SAAS,WAAA,CAAY,EAAE,GAAA,EAAK,QAAA,EAAU,KAAI,EAAqB;AAC7D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,eAAS,KAAK,CAAA;AAGxD,EAAA,MAAM,WAAW,QAAA,CACd,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,CAAC,CAAC,CAAA,CACrB,KAAK,EAAE,CAAA,CACP,aAAY,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AAEb,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,yHAAA;AAAA,MACV,WAAA,EAAU,cAAA;AAAA,MAET,QAAA,EAAA,GAAA,IAAO,CAAC,UAAA,mBACP,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAK,GAAA,IAAO,QAAA;AAAA,UACZ,SAAA,EAAU,wBAAA;AAAA,UACV,GAAA;AAAA,UACA,SAAS,MAAM;AAAE,YAAA,aAAA,CAAc,IAAI,CAAA;AAAA,UAAG;AAAA;AAAA,0BAGxC,GAAA,CAAC,MAAA,EAAA,EAAK,YAAA,EAAY,GAAA,IAAO,UAAW,QAAA,EAAA,QAAA,EAAS;AAAA;AAAA,GAEjD;AAEJ;AAGA,SAAS,YAAA,CAAa,EAAE,IAAA,EAAK,EAAqB;AAEhD,EAAA,MAAM,aAAA,GAAgB,CAAC,WAAA,KAAwB;AAE7C,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA,CAAK,WAAA,CAAY,WAAA,EAAa,CAAA,CAAE,GAAA;AAAA,MACvD,CAAC,IAAA,KAAS,MAAA,GAAS,IAAA,CAAK,WAAW,CAAC;AAAA,KACtC;AACA,IAAA,OAAO,MAAA,CAAO,aAAA,CAAc,GAAG,UAAU,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,WAAW,IAAI,CAAA,CAAA;AAAA,MAC3B,SAAA,EAAU,yCAAA;AAAA,MACV,WAAA,EAAU,eAAA;AAAA,MACV,IAAA,EAAK,KAAA;AAAA,MAEJ,wBAAc,IAAI;AAAA;AAAA,GACrB;AAEJ;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAEA,OAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AAEb,EAAA,MAAM,aAAA,GAAgB,OAAA,GAAU,gBAAA,CAAiB,OAAO,CAAA,GAAI,IAAA;AAC5D,EAAA,MAAM,YAAA,GAAgB,IAAA,IAAQ,aAAA,EAAe,IAAA,IAAQ,YAAA;AACrD,EAAA,MAAM,aAAA,GAAiB,KAAA,IAAS,aAAA,EAAe,KAAA,IAAS,SAAA;AAGxD,EAAA,MAAM,aAAA,GAAgB,WAClB,oBAAA,GACA,EAAA;AAEJ,EAAA,MAAM,cAAA,GAAiB,EAAA;AAAA,IACrB,cAAc,EAAE,IAAA,EAAM,cAAc,KAAA,EAAO,aAAA,EAAe,MAAM,CAAA;AAAA,IAChE,aAAA;AAAA,IACA,OAAA,CAAQ,WAAA,IAAe,OAAO,CAAA,IAAK,oCAAA;AAAA,IACnC;AAAA,GACF;AAGA,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,eAAA,EAAiB,WAAW,IAAA,GAAO,MAAA;AAAA,IACnC,eAAA,EAAiB,WAAW,IAAA,GAAO;AAAA,GACrC;AAIA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,cAAA,EAAgB,WAAA,EAAU,SAAS,GAAG,UAAA,EAAa,GAAG,KAAA,EACpE,QAAA,EACH,CAAA;AAAA,EAEJ;AAGA,EAAA,MAAM,sBAAsB,WAAA,IAAe,IAAA;AAG3C,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,MAAA,EAAQ,uBAAO,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,MAAA,EAAQ,CAAA;AAC5C,IAAA,IAAI,OAAA,EAAS,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAa,MAAM,OAAA,EAAS,CAAA;AACjD,IAAA,IAAI,GAAA,EAAK,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,OAAO,aAAA,EAAe,CAAA;AAChD,IAAA,IAAI,mBAAA,yBAA4B,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,UAAA,EAAW,WAAA,EAAU,sBAAsB,QAAA,EAAA,mBAAA,EAAoB,CAAA;AAC/G,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,SAAA,EAAW,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,aAAA,EAAe,YAAA,EAA4B,IAAA,EAAM,YAAA,IAAgB,YAAA,EAAc,OAAA,EAAS,SAAA,EAAW,CAAA;AAC9I,IAAA,IAAI,YAAA,yBAAqB,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,UAAA,EAAW,WAAA,EAAU,uBAAuB,QAAA,EAAA,YAAA,EAAa,CAAA;AAClG,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,eAAA,GAAkB,CAAC,OAAA,KAAgC;AACvD,IAAA,IAAI,CAAC,SAAS,OAAO,OAAA;AACrB,IAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,sBACA,GAAA,CAAC,kBACE,QAAA,EAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAGA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO,eAAA;AAAA,sBACL,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,cAAA;AAAA,UACX,WAAA,EAAU,OAAA;AAAA,UACV,OAAA;AAAA,UACC,GAAG,UAAA;AAAA,UACH,GAAG,KAAA;AAAA,UAEJ,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAW,WAAA,EAAU,mBAAmB,QAAA,EAAA,QAAA,EAAS;AAAA;AAAA;AACnE,KACF;AAAA,EACF;AAEA,EAAA,OAAO,eAAA;AAAA,oBACL,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,cAAA;AAAA,QACX,WAAA,EAAU,OAAA;AAAA,QACV,OAAA;AAAA,QACC,GAAG,UAAA;AAAA,QACH,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,aAAA,EAAc;AAAA,UACd,QAAA;AAAA,UACA,cAAA;AAAe;AAAA;AAAA;AAClB,GACF;AACF","file":"chunk-TNROOKX3.js","sourcesContent":["import type { BadgeAvatarProps, BadgeColor, BadgeProps } from \"./Badge.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\n\n/* eslint-disable sonarjs/no-duplicate-string -- Badge variants require repeated color class patterns */\n\n// Legacy variant mapping for backwards compatibility\nconst legacyVariantMap: Record<string, { color: string; type: string; }> = {\n default: { type: \"pill-color\", color: \"primary\" },\n secondary: { type: \"pill-color\", color: \"muted\" },\n destructive: { type: \"pill-color\", color: \"destructive\" },\n outline: { type: \"pill-outline\", color: \"muted\" },\n}\n\n// Dot color mapping\nconst dotColorMap: Record<string, string> = {\n primary: \"bg-primary-foreground\",\n destructive: \"bg-white\",\n warning: \"bg-warning-foreground\",\n success: \"bg-success-foreground\",\n info: \"bg-white\",\n tip: \"bg-white\",\n muted: \"bg-muted-foreground\",\n \"blue-gray\": \"bg-white\",\n \"blue-light\": \"bg-white\",\n blue: \"bg-white\",\n indigo: \"bg-white\",\n purple: \"bg-white\",\n pink: \"bg-white\",\n orange: \"bg-white\",\n}\n\n// Dismiss button color mapping\nconst dismissColorMap: Record<string, string> = {\n primary: \"text-primary-foreground hover:bg-primary-foreground/20\",\n destructive: \"text-white hover:bg-white/20\",\n warning: \"text-warning-foreground hover:bg-warning-foreground/20\",\n success: \"text-success-foreground hover:bg-success-foreground/20\",\n info: \"text-white hover:bg-white/20\",\n tip: \"text-white hover:bg-white/20\",\n muted: \"text-muted-foreground hover:bg-muted-foreground/20\",\n \"blue-gray\": \"text-white hover:bg-white/20\",\n \"blue-light\": \"text-white hover:bg-white/20\",\n blue: \"text-white hover:bg-white/20\",\n indigo: \"text-white hover:bg-white/20\",\n purple: \"text-white hover:bg-white/20\",\n pink: \"text-white hover:bg-white/20\",\n orange: \"text-white hover:bg-white/20\",\n}\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center font-medium w-fit whitespace-nowrap shrink-0 gap-1.5 transition-[color,background-color,box-shadow,filter] overflow-hidden border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[disabled=true]:opacity-50 data-[disabled=true]:pointer-events-none\",\n {\n variants: {\n type: {\n \"pill-color\": \"rounded-[var(--badge-radius-pill)] border-transparent\",\n \"pill-outline\": \"rounded-[var(--badge-radius-pill)] bg-transparent\",\n \"badge-color\": \"rounded-[var(--badge-radius-default)] border-transparent\",\n \"badge-outline\": \"rounded-[var(--badge-radius-default)] bg-transparent\",\n \"badge-modern\": \"rounded-[var(--badge-radius-default)] border-transparent border-l-[3px] pr-2.5 pl-2 shadow-xs\",\n },\n color: {\n primary: \"\",\n destructive: \"\",\n warning: \"\",\n success: \"\",\n info: \"\",\n tip: \"\",\n muted: \"\",\n \"blue-gray\": \"\",\n \"blue-light\": \"\",\n blue: \"\",\n indigo: \"\",\n purple: \"\",\n pink: \"\",\n orange: \"\",\n },\n size: {\n sm: \"h-[var(--badge-size-sm-h)] px-[var(--badge-size-sm-px)] text-[length:var(--badge-size-sm-text)] [&_svg]:size-3\",\n default: \"h-[var(--badge-size-md-h)] px-[var(--badge-size-md-px)] text-[length:var(--badge-size-md-text)] [&_svg]:size-3.5\",\n lg: \"h-[var(--badge-size-lg-h)] px-[var(--badge-size-lg-px)] text-[length:var(--badge-size-lg-text)] [&_svg]:size-4\",\n },\n },\n compoundVariants: [\n // ========================================\n // PILL-COLOR VARIANTS\n // ========================================\n { type: \"pill-color\", color: \"primary\", className: \"bg-[color:var(--badge-color-primary-bg)] text-[color:var(--badge-color-primary-fg)]\" },\n { type: \"pill-color\", color: \"destructive\", className: \"bg-[color:var(--badge-color-destructive-bg)] text-[color:var(--badge-color-destructive-fg)]\" },\n { type: \"pill-color\", color: \"warning\", className: \"bg-[color:var(--badge-color-warning-bg)] text-[color:var(--badge-color-warning-fg)]\" },\n { type: \"pill-color\", color: \"success\", className: \"bg-[color:var(--badge-color-success-bg)] text-[color:var(--badge-color-success-fg)]\" },\n { type: \"pill-color\", color: \"info\", className: \"bg-info text-info-foreground\" },\n { type: \"pill-color\", color: \"tip\", className: \"bg-tip text-white\" },\n { type: \"pill-color\", color: \"muted\", className: \"bg-[color:var(--badge-color-secondary-bg)] text-[color:var(--badge-color-secondary-fg)]\" },\n { type: \"pill-color\", color: \"blue-gray\", className: \"bg-slate-500 text-white\" },\n { type: \"pill-color\", color: \"blue-light\", className: \"bg-sky-400 text-sky-950\" },\n { type: \"pill-color\", color: \"blue\", className: \"bg-blue-400 text-blue-950\" },\n { type: \"pill-color\", color: \"indigo\", className: \"bg-indigo-400 text-indigo-950\" },\n { type: \"pill-color\", color: \"purple\", className: \"bg-violet-400 text-violet-950\" },\n { type: \"pill-color\", color: \"pink\", className: \"bg-pink-400 text-pink-950\" },\n { type: \"pill-color\", color: \"orange\", className: \"bg-orange-500 text-orange-950\" },\n\n // ========================================\n // PILL-OUTLINE VARIANTS\n // ========================================\n { type: \"pill-outline\", color: \"primary\", className: \"border-primary text-primary\" },\n { type: \"pill-outline\", color: \"destructive\", className: \"border-destructive text-destructive\" },\n { type: \"pill-outline\", color: \"warning\", className: \"border-warning text-warning\" },\n { type: \"pill-outline\", color: \"success\", className: \"border-success text-success\" },\n { type: \"pill-outline\", color: \"info\", className: \"border-info text-info\" },\n { type: \"pill-outline\", color: \"tip\", className: \"border-tip text-tip\" },\n { type: \"pill-outline\", color: \"muted\", className: \"border-border text-muted-foreground\" },\n { type: \"pill-outline\", color: \"blue-gray\", className: \"border-slate-500 text-slate-500\" },\n { type: \"pill-outline\", color: \"blue-light\", className: \"border-sky-400 text-sky-400\" },\n { type: \"pill-outline\", color: \"blue\", className: \"border-blue-400 text-blue-400\" },\n { type: \"pill-outline\", color: \"indigo\", className: \"border-indigo-400 text-indigo-400\" },\n { type: \"pill-outline\", color: \"purple\", className: \"border-violet-400 text-violet-400\" },\n { type: \"pill-outline\", color: \"pink\", className: \"border-pink-400 text-pink-400\" },\n { type: \"pill-outline\", color: \"orange\", className: \"border-orange-500 text-orange-500\" },\n\n // ========================================\n // BADGE-COLOR VARIANTS\n // ========================================\n { type: \"badge-color\", color: \"primary\", className: \"bg-primary text-primary-foreground\" },\n { type: \"badge-color\", color: \"destructive\", className: \"bg-destructive text-white\" },\n { type: \"badge-color\", color: \"warning\", className: \"bg-[color:var(--badge-color-warning-bg)] text-[color:var(--badge-color-warning-fg)]\" },\n { type: \"badge-color\", color: \"success\", className: \"bg-[color:var(--badge-color-success-bg)] text-[color:var(--badge-color-success-fg)]\" },\n { type: \"badge-color\", color: \"info\", className: \"bg-info text-info-foreground\" },\n { type: \"badge-color\", color: \"tip\", className: \"bg-tip text-white\" },\n { type: \"badge-color\", color: \"muted\", className: \"bg-muted text-muted-foreground\" },\n { type: \"badge-color\", color: \"blue-gray\", className: \"bg-slate-500 text-white\" },\n { type: \"badge-color\", color: \"blue-light\", className: \"bg-sky-400 text-sky-950\" },\n { type: \"badge-color\", color: \"blue\", className: \"bg-blue-400 text-blue-950\" },\n { type: \"badge-color\", color: \"indigo\", className: \"bg-indigo-400 text-indigo-950\" },\n { type: \"badge-color\", color: \"purple\", className: \"bg-violet-400 text-violet-950\" },\n { type: \"badge-color\", color: \"pink\", className: \"bg-pink-400 text-pink-950\" },\n { type: \"badge-color\", color: \"orange\", className: \"bg-orange-500 text-orange-950\" },\n\n // ========================================\n // BADGE-OUTLINE VARIANTS\n // ========================================\n { type: \"badge-outline\", color: \"primary\", className: \"border-primary text-primary\" },\n { type: \"badge-outline\", color: \"destructive\", className: \"border-destructive text-destructive\" },\n { type: \"badge-outline\", color: \"warning\", className: \"border-warning text-warning\" },\n { type: \"badge-outline\", color: \"success\", className: \"border-success text-success\" },\n { type: \"badge-outline\", color: \"info\", className: \"border-info text-info\" },\n { type: \"badge-outline\", color: \"tip\", className: \"border-tip text-tip\" },\n { type: \"badge-outline\", color: \"muted\", className: \"border-border text-muted-foreground\" },\n { type: \"badge-outline\", color: \"blue-gray\", className: \"border-slate-500 text-slate-500\" },\n { type: \"badge-outline\", color: \"blue-light\", className: \"border-sky-400 text-sky-400\" },\n { type: \"badge-outline\", color: \"blue\", className: \"border-blue-400 text-blue-400\" },\n { type: \"badge-outline\", color: \"indigo\", className: \"border-indigo-400 text-indigo-400\" },\n { type: \"badge-outline\", color: \"purple\", className: \"border-violet-400 text-violet-400\" },\n { type: \"badge-outline\", color: \"pink\", className: \"border-pink-400 text-pink-400\" },\n { type: \"badge-outline\", color: \"orange\", className: \"border-orange-500 text-orange-500\" },\n\n // ========================================\n // BADGE-MODERN VARIANTS (with left accent)\n // ========================================\n { type: \"badge-modern\", color: \"primary\", className: \"bg-primary/10 text-primary border-l-primary\" },\n { type: \"badge-modern\", color: \"destructive\", className: \"bg-destructive/10 text-destructive border-l-destructive\" },\n { type: \"badge-modern\", color: \"warning\", className: \"bg-warning/10 text-warning border-l-warning\" },\n { type: \"badge-modern\", color: \"success\", className: \"bg-success/10 text-success border-l-success\" },\n { type: \"badge-modern\", color: \"info\", className: \"bg-info/10 text-info border-l-info\" },\n { type: \"badge-modern\", color: \"tip\", className: \"bg-tip/10 text-tip border-l-tip\" },\n { type: \"badge-modern\", color: \"muted\", className: \"bg-muted text-muted-foreground border-l-muted-foreground\" },\n { type: \"badge-modern\", color: \"blue-gray\", className: \"bg-slate-500/10 text-slate-500 border-l-slate-500\" },\n { type: \"badge-modern\", color: \"blue-light\", className: \"bg-sky-400/10 text-sky-400 border-l-sky-400\" },\n { type: \"badge-modern\", color: \"blue\", className: \"bg-blue-400/10 text-blue-400 border-l-blue-400\" },\n { type: \"badge-modern\", color: \"indigo\", className: \"bg-indigo-400/10 text-indigo-400 border-l-indigo-400\" },\n { type: \"badge-modern\", color: \"purple\", className: \"bg-violet-400/10 text-violet-400 border-l-violet-400\" },\n { type: \"badge-modern\", color: \"pink\", className: \"bg-pink-400/10 text-pink-400 border-l-pink-400\" },\n { type: \"badge-modern\", color: \"orange\", className: \"bg-orange-500/10 text-orange-500 border-l-orange-500\" },\n ],\n defaultVariants: {\n type: \"pill-color\",\n color: \"primary\",\n size: \"default\",\n },\n }\n)\n\n// Internal dot component\nfunction BadgeDot({ color }: { color: BadgeColor }) {\n return (\n <span\n className={cn(\"size-1.5 rounded-full shrink-0\", dotColorMap[color] ?? dotColorMap[\"primary\"])}\n data-slot=\"badge-dot\"\n />\n )\n}\n\n// Internal dismiss button component\nfunction BadgeDismiss({ onClick, color, type, dismissLabel = \"Dismiss\" }: { color: BadgeColor; dismissLabel?: string; onClick: () => void; type: string; }) {\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n onClick()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.stopPropagation()\n onClick()\n }\n }\n\n // Adapt shape based on badge type: rounded for pills, square for badges\n const isPill = type === \"pill-color\" || type === \"pill-outline\"\n const shapeClass = isPill ? \"rounded-full\" : \"rounded-sm\"\n\n return (\n <button\n className={cn(\n \"size-4 -mr-1 inline-flex items-center justify-center shrink-0 transition-colors cursor-pointer\",\n shapeClass,\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n dismissColorMap[color] ?? dismissColorMap[\"primary\"]\n )}\n aria-label={dismissLabel}\n data-slot=\"badge-dismiss\"\n type=\"button\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <X className=\"size-3\" />\n </button>\n )\n}\n\n// Internal avatar component for badge\nfunction BadgeAvatar({ src, fallback, alt }: BadgeAvatarProps) {\n const [imageError, setImageError] = React.useState(false)\n\n // Get initials from fallback text\n const initials = fallback\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n\n return (\n <span\n className=\"size-4 -ml-1 rounded-full shrink-0 inline-flex items-center justify-center overflow-hidden bg-muted text-xs font-medium\"\n data-slot=\"badge-avatar\"\n >\n {src && !imageError ? (\n <img\n alt={alt ?? fallback}\n className=\"size-full object-cover\"\n src={src}\n onError={() => { setImageError(true); }}\n />\n ) : (\n <span aria-label={alt ?? fallback}>{initials}</span>\n )}\n </span>\n )\n}\n\n// Internal country flag component\nfunction BadgeCountry({ code }: { code: string }) {\n // Convert country code to flag emoji using regional indicator symbols\n const countryToFlag = (countryCode: string) => {\n // eslint-disable-next-line unicorn/prefer-spread -- Array.from handles Unicode correctly for country codes\n const codePoints = Array.from(countryCode.toUpperCase()).map(\n (char) => 127397 + char.charCodeAt(0)\n )\n return String.fromCodePoint(...codePoints)\n }\n\n return (\n <span\n aria-label={`Flag of ${code}`}\n className=\"text-base -ml-0.5 shrink-0 leading-none\"\n data-slot=\"badge-country\"\n role=\"img\"\n >\n {countryToFlag(code)}\n </span>\n )\n}\n\nfunction Badge({\n className,\n type,\n color,\n size,\n disabled,\n dot,\n icon,\n leadingIcon,\n trailingIcon,\n country,\n avatar,\n iconOnly,\n onDismiss,\n dismissLabel,\n interactive,\n tooltip,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- Intentionally supporting legacy variant for backwards compatibility\n variant,\n asChild = false,\n children,\n onClick,\n ...props\n}: BadgeProps) {\n // Resolve legacy variant to new props (new props take precedence)\n const legacyMapping = variant ? legacyVariantMap[variant] : null\n const resolvedType = (type ?? legacyMapping?.type ?? \"pill-color\") as VariantProps<typeof badgeVariants>[\"type\"]\n const resolvedColor = (color ?? legacyMapping?.color ?? \"primary\") as BadgeColor\n\n // Icon-only badges are square with no horizontal padding\n const iconOnlyClass = iconOnly\n ? \"px-0 aspect-square\"\n : \"\"\n\n const badgeClassName = cn(\n badgeVariants({ type: resolvedType, color: resolvedColor, size }),\n iconOnlyClass,\n Boolean(interactive ?? onClick) && \"cursor-pointer hover:brightness-90\",\n className\n )\n\n // Disabled is a real state (not just a Figma style): toggle data-disabled + aria-disabled\n const stateAttrs = {\n \"aria-disabled\": disabled ? true : undefined,\n \"data-disabled\": disabled ? true : undefined,\n }\n\n // When asChild is true, use Slot which requires exactly one child\n // dot and onDismiss features are not supported with asChild\n if (asChild) {\n return (\n <Slot className={badgeClassName} data-slot=\"badge\" {...stateAttrs} {...props}>\n {children}\n </Slot>\n )\n }\n\n // Resolve leading content\n const resolvedLeadingIcon = leadingIcon ?? icon\n\n // Render leading content (avatar, country, dot, or leading icon)\n const renderLeading = () => {\n if (avatar) return <BadgeAvatar {...avatar} />\n if (country) return <BadgeCountry code={country} />\n if (dot) return <BadgeDot color={resolvedColor} />\n if (resolvedLeadingIcon) return <span className=\"shrink-0\" data-slot=\"badge-leading-icon\">{resolvedLeadingIcon}</span>\n return null\n }\n\n // Render trailing content (trailing icon or dismiss)\n const renderTrailing = () => {\n if (onDismiss) return <BadgeDismiss color={resolvedColor} dismissLabel={dismissLabel} type={resolvedType ?? \"pill-color\"} onClick={onDismiss} />\n if (trailingIcon) return <span className=\"shrink-0\" data-slot=\"badge-trailing-icon\">{trailingIcon}</span>\n return null\n }\n\n // Helper to wrap element with tooltip if tooltip prop is provided\n const wrapWithTooltip = (element: React.ReactElement) => {\n if (!tooltip) return element\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {element}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n // Icon-only variant: render only the icon, no children or other elements\n if (iconOnly) {\n return wrapWithTooltip(\n <span\n className={badgeClassName}\n data-slot=\"badge\"\n onClick={onClick}\n {...stateAttrs}\n {...props}\n >\n <span className=\"shrink-0\" data-slot=\"badge-icon-only\">{iconOnly}</span>\n </span>\n )\n }\n\n return wrapWithTooltip(\n <span\n className={badgeClassName}\n data-slot=\"badge\"\n onClick={onClick}\n {...stateAttrs}\n {...props}\n >\n {renderLeading()}\n {children}\n {renderTrailing()}\n </span>\n )\n}\n\n/* eslint-enable sonarjs/no-duplicate-string */\n\nexport { Badge, badgeVariants }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/ProgressBar/ProgressBar.variants.ts","../src/components/primitives/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"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","file":"chunk-UFRMZ3M6.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * ProgressBar root (track) variants\n */\nexport const progressBarVariants = cva(\n \"relative w-full overflow-hidden rounded-[var(--progress-bar-root-border-radius)]\",\n {\n variants: {\n /**\n * Size variant for the progress bar height\n */\n size: {\n xs: \"h-[var(--progress-bar-size-xs-height)]\",\n sm: \"h-[var(--progress-bar-size-sm-height)]\",\n md: \"h-[var(--progress-bar-size-md-height)]\",\n lg: \"h-[var(--progress-bar-size-lg-height)]\",\n xl: \"h-[var(--progress-bar-size-xl-height)]\",\n },\n /**\n * Color variant for the progress bar\n * Affects both track and indicator colors\n */\n color: {\n default: \"bg-[color:var(--progress-bar-track-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-track-color-primary)]\",\n success: \"bg-[color:var(--progress-bar-track-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-track-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-track-color-error)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n },\n }\n)\n\n/**\n * ProgressBar indicator (fill) variants\n */\nexport const progressBarIndicatorVariants = cva(\n \"h-full w-full flex-1 rounded-[var(--progress-bar-indicator-border-radius)] transition-all duration-700 ease-out motion-reduce:transition-none\",\n {\n variants: {\n /**\n * Color variant for the indicator fill\n */\n color: {\n default: \"bg-[color:var(--progress-bar-fill-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-fill-color-primary)]\",\n success: \"bg-[color:var(--progress-bar-fill-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-fill-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-fill-color-error)]\",\n },\n },\n defaultVariants: {\n color: \"default\",\n },\n }\n)\n\n/**\n * Label container variants for different positions\n */\nexport const progressBarLabelVariants = cva(\n \"text-[length:var(--progress-bar-label-text-font-size)] font-[var(--progress-bar-label-text-font-weight)] [font-variant-numeric:var(--progress-bar-label-text-tabular-nums)]\",\n {\n variants: {\n /**\n * Label position relative to the progress bar\n */\n position: {\n none: \"sr-only\",\n right: \"ml-[var(--progress-bar-label-position-right-margin-left)] shrink-0 text-[color:var(--progress-bar-label-position-right-color)]\",\n bottom: \"mt-[var(--progress-bar-label-position-bottom-margin-top)] text-[color:var(--progress-bar-label-position-bottom-color)]\",\n \"top-floating\": \"absolute -top-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n \"bottom-floating\": \"absolute -bottom-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n },\n },\n defaultVariants: {\n position: \"none\",\n },\n }\n)\n\n/**\n * Floating tooltip variants (for top-floating and bottom-floating)\n */\nexport const progressBarTooltipVariants = cva(\n [\n \"absolute z-10 px-2 py-1 text-xs font-medium tabular-nums\",\n \"rounded-md border bg-background text-foreground shadow-sm\",\n \"transition-all duration-150 ease-out\",\n \"-translate-x-1/2\",\n ],\n {\n variants: {\n /**\n * Tooltip position\n */\n position: {\n top: \"-top-9\",\n bottom: \"-bottom-9\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n","\"use client\"\n\nimport type { ProgressBarLabelProps, ProgressBarProps } from \"./ProgressBar.types\"\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport {\n progressBarIndicatorVariants,\n progressBarLabelVariants,\n progressBarTooltipVariants,\n progressBarVariants,\n} from \"./ProgressBar.variants\"\n\n/**\n * Default format function for progress value\n */\nconst defaultFormatValue = (value: number): string => `${String(value)}%`\n\n/**\n * Internal component for rendering the progress label\n */\nfunction ProgressBarLabel({\n value,\n position,\n formatValue = defaultFormatValue,\n progressPercent,\n}: ProgressBarLabelProps) {\n // Don't render anything for indeterminate state or none position\n if (value === null || value === undefined) {\n return null\n }\n\n const formattedValue = formatValue(value)\n\n // Floating tooltip that follows the progress\n if (position === \"top-floating\" || position === \"bottom-floating\") {\n return (\n <span\n className={cn(\n progressBarTooltipVariants({\n position: position === \"top-floating\" ? \"top\" : \"bottom\",\n })\n )}\n data-slot=\"progress-bar-tooltip\"\n style={{ left: `${String(progressPercent)}%` }}\n >\n {formattedValue}\n </span>\n )\n }\n\n // Bottom label\n if (position === \"bottom\") {\n return (\n <span\n className={cn(progressBarLabelVariants({ position: \"bottom\" }), \"block\")}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Hidden label for screen readers\n if (position === \"none\") {\n return (\n <span\n className={progressBarLabelVariants({ position: \"none\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Right label (inline)\n return (\n <span\n className={progressBarLabelVariants({ position: \"right\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n}\n\n/**\n * ProgressBar component for displaying task completion status.\n *\n * Built on Radix UI Progress primitive with support for:\n * - Multiple color variants (default/success, primary, warning, error)\n * - Multiple size variants (xs, sm, md, lg, xl)\n * - Label positions (none, right, bottom, top-floating, bottom-floating)\n * - Floating tooltips that follow the progress indicator\n * - Custom value formatting\n * - Indeterminate state\n *\n * @example\n * ```tsx\n * // Basic usage with default green fill\n * <ProgressBar value={50} />\n *\n * // With floating tooltip\n * <ProgressBar value={75} label=\"top-floating\" />\n *\n * // With color and size variants\n * <ProgressBar value={30} color=\"error\" size=\"lg\" />\n * ```\n */\nfunction ProgressBar({\n className,\n value,\n max = 100,\n size,\n color,\n label = \"none\",\n formatValue,\n showValue,\n animate = true,\n tooltip,\n ref,\n ...props\n}: ProgressBarProps) {\n // Calculate percentage based on value and max\n const progressPercent = value !== null && value !== undefined\n ? Math.min(100, Math.max(0, (value / max) * 100))\n : 0\n // Initialize visibility based on animate prop - if not animating, show immediately\n const [isVisible, setIsVisible] = React.useState(!animate)\n const internalRef = React.useRef<HTMLDivElement>(null)\n\n // Merge internal ref with forwarded ref\n const progressRef = ref ?? internalRef\n\n // Use IntersectionObserver to trigger animation only when in viewport\n React.useEffect(() => {\n // Skip if not animating or already visible\n if (!animate || isVisible) {\n return\n }\n\n // Get the element from the ref\n const element = typeof progressRef === \"function\" ? null : progressRef.current\n if (!element) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0]\n if (entry?.isIntersecting) {\n // Small delay to ensure smooth animation start\n requestAnimationFrame(() => {\n setIsVisible(true)\n })\n // Once animated, no need to observe anymore\n observer.disconnect()\n }\n },\n { threshold: 0.1 }\n )\n\n observer.observe(element)\n\n return () => { observer.disconnect(); }\n }, [animate, isVisible, progressRef])\n\n // Determine if we should show value based on label position\n const shouldShowValue = showValue ?? label !== \"none\"\n\n // Calculate the transform value - start at 0 if not visible yet (for animation)\n const displayPercent = isVisible ? progressPercent : 0\n\n // Helper to wrap element with tooltip if tooltip prop is provided\n const wrapWithTooltip = (element: React.ReactElement) => {\n if (!tooltip) return element\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {element}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n const progressBar = (\n <ProgressPrimitive.Root\n ref={progressRef}\n className={cn(\n progressBarVariants({ size, color }),\n className\n )}\n data-slot=\"progress-bar\"\n max={max}\n value={value != null ? Math.min(Math.max(0, value), max) : null}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(progressBarIndicatorVariants({ color }))}\n data-slot=\"progress-bar-indicator\"\n style={{ transform: `translateX(-${String(100 - displayPercent)}%)` }}\n />\n {/* Floating labels are positioned inside the root for proper positioning */}\n {(label === \"top-floating\" || label === \"bottom-floating\") && shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </ProgressPrimitive.Root>\n )\n\n // Right label needs flex wrapper\n if (label === \"right\") {\n return wrapWithTooltip(\n <div className=\"flex items-center\" data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Bottom label needs column wrapper\n if (label === \"bottom\") {\n return wrapWithTooltip(\n <div data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Floating labels need relative wrapper for absolute positioning\n if (label === \"top-floating\" || label === \"bottom-floating\") {\n return wrapWithTooltip(\n <div className=\"relative\" data-slot=\"progress-bar-container\">\n {progressBar}\n </div>\n )\n }\n\n // No wrapper needed for none label\n return wrapWithTooltip(progressBar)\n}\n\nexport { ProgressBar }\n"]}
|