@etus/ui 0.4.0-beta.7 → 0.4.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-2Y7PQ6ZL.js → chunk-237TQKWH.js} +4 -4
- package/dist/{chunk-2Y7PQ6ZL.js.map → chunk-237TQKWH.js.map} +1 -1
- package/dist/{chunk-KR3IVNQH.js → chunk-2FJJOHHH.js} +16 -10
- package/dist/chunk-2FJJOHHH.js.map +1 -0
- package/dist/{chunk-W4NC5CU5.js → chunk-2Q4I4VDB.js} +4 -4
- package/dist/{chunk-W4NC5CU5.js.map → chunk-2Q4I4VDB.js.map} +1 -1
- package/dist/chunk-2Z722V5K.js +231 -0
- package/dist/chunk-2Z722V5K.js.map +1 -0
- package/dist/chunk-37IIHQP4.js +233 -0
- package/dist/chunk-37IIHQP4.js.map +1 -0
- package/dist/{chunk-UFRMZ3M6.js → chunk-3JCV72FO.js} +6 -2
- package/dist/chunk-3JCV72FO.js.map +1 -0
- package/dist/{chunk-FCT6FEEZ.js → chunk-43BS3PPX.js} +5 -5
- package/dist/{chunk-FCT6FEEZ.js.map → chunk-43BS3PPX.js.map} +1 -1
- package/dist/{chunk-2UGDLAYC.js → chunk-45D4O7RK.js} +10 -3
- package/dist/chunk-45D4O7RK.js.map +1 -0
- package/dist/{chunk-OTSK2KAI.js → chunk-4EYYCHLD.js} +5 -5
- package/dist/{chunk-OTSK2KAI.js.map → chunk-4EYYCHLD.js.map} +1 -1
- package/dist/{chunk-J62TFQHR.js → chunk-5I7AXWJU.js} +13 -13
- package/dist/chunk-5I7AXWJU.js.map +1 -0
- package/dist/{chunk-65YSTUD2.js → chunk-5SUD32RK.js} +44 -14
- package/dist/chunk-5SUD32RK.js.map +1 -0
- package/dist/{chunk-23BHD62H.js → chunk-5TZDEGZN.js} +4 -4
- package/dist/chunk-5TZDEGZN.js.map +1 -0
- package/dist/{chunk-VPNFYQBL.js → chunk-6DN2UAIR.js} +3 -3
- package/dist/chunk-6DN2UAIR.js.map +1 -0
- package/dist/{chunk-EGYWK2XX.js → chunk-7CTFBOD4.js} +3 -3
- package/dist/{chunk-EGYWK2XX.js.map → chunk-7CTFBOD4.js.map} +1 -1
- package/dist/{chunk-36XTKR3B.js → chunk-BMNCNBPA.js} +3 -3
- package/dist/{chunk-36XTKR3B.js.map → chunk-BMNCNBPA.js.map} +1 -1
- package/dist/{chunk-AWYOWR5N.js → chunk-C5HSYDJC.js} +3 -3
- package/dist/{chunk-AWYOWR5N.js.map → chunk-C5HSYDJC.js.map} +1 -1
- package/dist/{chunk-VFALJSXB.js → chunk-DCUFQJYP.js} +3 -3
- package/dist/chunk-DCUFQJYP.js.map +1 -0
- package/dist/{chunk-LATTRPLQ.js → chunk-E2TI5V67.js} +3 -3
- package/dist/{chunk-LATTRPLQ.js.map → chunk-E2TI5V67.js.map} +1 -1
- package/dist/{chunk-IRKDMISK.js → chunk-G2MAGZHQ.js} +4 -3
- package/dist/chunk-G2MAGZHQ.js.map +1 -0
- package/dist/{chunk-ONQCNOLU.js → chunk-HDOR3SN3.js} +3 -3
- package/dist/{chunk-ONQCNOLU.js.map → chunk-HDOR3SN3.js.map} +1 -1
- package/dist/{chunk-PLLJNHWU.js → chunk-HI3T55XK.js} +3 -33
- package/dist/chunk-HI3T55XK.js.map +1 -0
- package/dist/chunk-HJ4E6YPW.js +236 -0
- package/dist/chunk-HJ4E6YPW.js.map +1 -0
- package/dist/{chunk-LS3WD6IZ.js → chunk-I55QJ4CU.js} +4 -4
- package/dist/{chunk-LS3WD6IZ.js.map → chunk-I55QJ4CU.js.map} +1 -1
- package/dist/{chunk-HKXQLWGR.js → chunk-IOWHM7ZY.js} +13 -11
- package/dist/chunk-IOWHM7ZY.js.map +1 -0
- package/dist/{chunk-ILAV2AZ4.js → chunk-IZC5YFGO.js} +3 -3
- package/dist/{chunk-ILAV2AZ4.js.map → chunk-IZC5YFGO.js.map} +1 -1
- package/dist/{chunk-Y7UFBSAD.js → chunk-KHOCAVQO.js} +3 -3
- package/dist/{chunk-Y7UFBSAD.js.map → chunk-KHOCAVQO.js.map} +1 -1
- package/dist/{chunk-IBVCSZCH.js → chunk-KVJOKWP4.js} +5 -4
- package/dist/chunk-KVJOKWP4.js.map +1 -0
- package/dist/{chunk-KC6CHPT3.js → chunk-KZRTQF64.js} +3 -3
- package/dist/{chunk-KC6CHPT3.js.map → chunk-KZRTQF64.js.map} +1 -1
- package/dist/{chunk-QIETN4UU.js → chunk-LEAK22ZP.js} +3 -3
- package/dist/{chunk-QIETN4UU.js.map → chunk-LEAK22ZP.js.map} +1 -1
- package/dist/{chunk-OWOVCGUZ.js → chunk-M2C7HBR5.js} +3 -3
- package/dist/{chunk-OWOVCGUZ.js.map → chunk-M2C7HBR5.js.map} +1 -1
- package/dist/{chunk-33JGPMUW.js → chunk-M7TPROVH.js} +20 -7
- package/dist/chunk-M7TPROVH.js.map +1 -0
- package/dist/{chunk-AVR3LVOQ.js → chunk-MQMRVBUL.js} +4 -4
- package/dist/{chunk-AVR3LVOQ.js.map → chunk-MQMRVBUL.js.map} +1 -1
- package/dist/{chunk-KPNNSUXM.js → chunk-O7AUE5GP.js} +5 -3
- package/dist/chunk-O7AUE5GP.js.map +1 -0
- package/dist/{chunk-6HEURMY3.js → chunk-OCXGG7UP.js} +5 -5
- package/dist/{chunk-6HEURMY3.js.map → chunk-OCXGG7UP.js.map} +1 -1
- package/dist/{chunk-V7XHE25E.js → chunk-ON7WFRYH.js} +3 -3
- package/dist/{chunk-V7XHE25E.js.map → chunk-ON7WFRYH.js.map} +1 -1
- package/dist/{chunk-FSMHI7DW.js → chunk-OXDWUKGP.js} +3 -3
- package/dist/chunk-OXDWUKGP.js.map +1 -0
- package/dist/{chunk-SJSYKUCL.js → chunk-Q335YODG.js} +3 -3
- package/dist/{chunk-SJSYKUCL.js.map → chunk-Q335YODG.js.map} +1 -1
- package/dist/{chunk-6ELVWWIA.js → chunk-QZWKXUZP.js} +3 -3
- package/dist/{chunk-6ELVWWIA.js.map → chunk-QZWKXUZP.js.map} +1 -1
- package/dist/{chunk-DDM2I5C6.js → chunk-R5OIL4I4.js} +3 -3
- package/dist/{chunk-DDM2I5C6.js.map → chunk-R5OIL4I4.js.map} +1 -1
- package/dist/{chunk-FYJHWYPM.js → chunk-S524YVMO.js} +3 -3
- package/dist/{chunk-FYJHWYPM.js.map → chunk-S524YVMO.js.map} +1 -1
- package/dist/{chunk-OWIFNJXZ.js → chunk-S7TVRVRU.js} +3 -3
- package/dist/chunk-S7TVRVRU.js.map +1 -0
- package/dist/{chunk-TNROOKX3.js → chunk-UDY3IDCY.js} +10 -2
- package/dist/chunk-UDY3IDCY.js.map +1 -0
- package/dist/{chunk-3WOGOTOV.js → chunk-UPYT2XM5.js} +7 -7
- package/dist/chunk-UPYT2XM5.js.map +1 -0
- package/dist/{chunk-YWA63YN3.js → chunk-VAVE4ZJF.js} +2 -2
- package/dist/chunk-VAVE4ZJF.js.map +1 -0
- package/dist/chunk-WKWLKGNI.js +643 -0
- package/dist/chunk-WKWLKGNI.js.map +1 -0
- package/dist/{chunk-Z3FL7LEK.js → chunk-X253YD45.js} +71 -6
- package/dist/chunk-X253YD45.js.map +1 -0
- package/dist/{chunk-6XY7QYVR.js → chunk-X3AXEE3S.js} +3 -3
- package/dist/{chunk-6XY7QYVR.js.map → chunk-X3AXEE3S.js.map} +1 -1
- package/dist/{chunk-R4UOT76L.js → chunk-XAIUZJOJ.js} +8 -8
- package/dist/chunk-XAIUZJOJ.js.map +1 -0
- package/dist/{chunk-ZO2EKJZM.js → chunk-XCZMJA2D.js} +7 -7
- package/dist/{chunk-ZO2EKJZM.js.map → chunk-XCZMJA2D.js.map} +1 -1
- package/dist/{chunk-XRMKL43Y.js → chunk-XOLV7G4S.js} +3 -3
- package/dist/{chunk-XRMKL43Y.js.map → chunk-XOLV7G4S.js.map} +1 -1
- package/dist/chunk-XYYOV5GW.js +186 -0
- package/dist/chunk-XYYOV5GW.js.map +1 -0
- package/dist/{chunk-4MQNDQ4O.js → chunk-YACIRNVP.js} +12 -4
- package/dist/chunk-YACIRNVP.js.map +1 -0
- package/dist/{chunk-JKYB5QAP.js → chunk-YDZBLZVZ.js} +3 -3
- package/dist/{chunk-JKYB5QAP.js.map → chunk-YDZBLZVZ.js.map} +1 -1
- package/dist/{chunk-5XQIH6WM.js → chunk-YM5YBDRM.js} +4 -4
- package/dist/{chunk-5XQIH6WM.js.map → chunk-YM5YBDRM.js.map} +1 -1
- package/dist/{chunk-AUCDXPWH.js → chunk-YQX7XZES.js} +4 -4
- package/dist/{chunk-AUCDXPWH.js.map → chunk-YQX7XZES.js.map} +1 -1
- package/dist/{chunk-Y3BOERVB.js → chunk-ZEFK3AXP.js} +3 -3
- package/dist/{chunk-Y3BOERVB.js.map → chunk-ZEFK3AXP.js.map} +1 -1
- package/dist/{chunk-L3Z5FAJE.js → chunk-ZEYLSDSG.js} +3 -3
- package/dist/{chunk-L3Z5FAJE.js.map → chunk-ZEYLSDSG.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +4 -4
- package/dist/components/advanced/Command/index.js +1 -1
- package/dist/components/advanced/EventCalendar/index.js +4 -4
- package/dist/components/advanced/FileDropzone/index.js +1 -1
- package/dist/components/advanced/FilterBuilder/index.js +4 -4
- package/dist/components/advanced/MarkdownEditor/index.js +2 -2
- package/dist/components/advanced/RichTextEditor/index.js +2 -2
- package/dist/components/advanced/index.js +16 -16
- package/dist/components/data-display/AreaChart/index.js +1 -1
- package/dist/components/data-display/BarChart/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +4 -4
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +4 -4
- package/dist/components/data-display/DataTable/index.js +7 -7
- package/dist/components/data-display/ImageGallery/index.js +7 -7
- package/dist/components/data-display/KPICard/index.js +4 -4
- package/dist/components/data-display/Lightbox/index.js +1 -1
- package/dist/components/data-display/LineChart/index.js +1 -1
- package/dist/components/data-display/List/index.js +2 -2
- package/dist/components/data-display/Table/index.js +1 -1
- package/dist/components/data-display/VirtualTable/index.js +2 -2
- package/dist/components/data-display/index.js +35 -35
- package/dist/components/feedback/Alert/index.js +1 -1
- package/dist/components/feedback/AlertDialog/index.js +4 -4
- package/dist/components/feedback/ConfirmModal/index.js +5 -5
- package/dist/components/feedback/Modal/index.js +1 -1
- package/dist/components/feedback/index.js +9 -9
- package/dist/components/forms/ColorPicker/index.js +1 -1
- package/dist/components/forms/DatePicker/index.js +5 -5
- package/dist/components/forms/DateRangePicker/index.js +5 -5
- package/dist/components/forms/IftaLabel/index.js +1 -1
- package/dist/components/forms/InputGroup/index.js +4 -4
- package/dist/components/forms/InputOTPField/index.js +2 -2
- package/dist/components/forms/MultiSelect/index.js +2 -1
- package/dist/components/forms/RadioButton/index.js +1 -1
- package/dist/components/forms/Rating/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/ToggleGroup/index.js +1 -1
- package/dist/components/forms/index.js +28 -28
- package/dist/components/index.js +138 -138
- package/dist/components/layout/index.js +3 -3
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/Drawer/index.js +1 -1
- package/dist/components/navigation/DropdownMenu/index.js +1 -1
- package/dist/components/navigation/Header/index.js +1 -1
- package/dist/components/navigation/MobileSidebar/index.js +4 -4
- package/dist/components/navigation/Pagination/index.js +4 -4
- package/dist/components/navigation/Sidebar/index.js +5 -5
- package/dist/components/navigation/UserProfileDropdown/index.js +1 -1
- package/dist/components/navigation/WorkspaceDropdown/index.js +1 -1
- package/dist/components/navigation/index.js +15 -15
- package/dist/components/primitives/AspectRatio/index.js +1 -1
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +3 -3
- package/dist/components/primitives/ConfirmButton/index.js +5 -5
- package/dist/components/primitives/ProgressBar/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +2 -2
- package/dist/components/primitives/StatusIndicator/index.js +1 -1
- package/dist/components/primitives/Tag/index.js +1 -1
- package/dist/components/primitives/Toggle/index.js +1 -1
- package/dist/components/primitives/index.js +18 -18
- package/dist/components/workflow/ApprovalFlow/index.js +4 -4
- package/dist/components/workflow/CommentSystem/index.js +4 -4
- package/dist/components/workflow/Dashboard/index.js +4 -4
- package/dist/components/workflow/DashboardBuilder/index.js +4 -4
- package/dist/components/workflow/KanbanBoard/index.js +4 -4
- package/dist/components/workflow/ReportGenerator/index.js +4 -4
- package/dist/components/workflow/TaskStatus/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +4 -4
- package/dist/components/workflow/index.js +15 -15
- package/dist/index.d.ts +156 -50
- package/dist/index.js +140 -140
- package/dist/styles.css +23 -0
- package/package.json +2 -2
- package/dist/chunk-23BHD62H.js.map +0 -1
- package/dist/chunk-2UGDLAYC.js.map +0 -1
- package/dist/chunk-33JGPMUW.js.map +0 -1
- package/dist/chunk-3WOGOTOV.js.map +0 -1
- package/dist/chunk-4MQNDQ4O.js.map +0 -1
- package/dist/chunk-65YSTUD2.js.map +0 -1
- package/dist/chunk-FSMHI7DW.js.map +0 -1
- package/dist/chunk-GAP3OZR7.js +0 -223
- package/dist/chunk-GAP3OZR7.js.map +0 -1
- package/dist/chunk-HKXQLWGR.js.map +0 -1
- package/dist/chunk-IBVCSZCH.js.map +0 -1
- package/dist/chunk-ICAQYWCX.js +0 -153
- package/dist/chunk-ICAQYWCX.js.map +0 -1
- package/dist/chunk-IRKDMISK.js.map +0 -1
- package/dist/chunk-J62TFQHR.js.map +0 -1
- package/dist/chunk-KPNNSUXM.js.map +0 -1
- package/dist/chunk-KR3IVNQH.js.map +0 -1
- package/dist/chunk-OWIFNJXZ.js.map +0 -1
- package/dist/chunk-PLLJNHWU.js.map +0 -1
- package/dist/chunk-R4UOT76L.js.map +0 -1
- package/dist/chunk-SHS6EGWS.js +0 -226
- package/dist/chunk-SHS6EGWS.js.map +0 -1
- package/dist/chunk-TNROOKX3.js.map +0 -1
- package/dist/chunk-UFRMZ3M6.js.map +0 -1
- package/dist/chunk-VFALJSXB.js.map +0 -1
- package/dist/chunk-VPNFYQBL.js.map +0 -1
- package/dist/chunk-XD5LE64P.js +0 -311
- package/dist/chunk-XD5LE64P.js.map +0 -1
- package/dist/chunk-XV6NXXXP.js +0 -206
- package/dist/chunk-XV6NXXXP.js.map +0 -1
- package/dist/chunk-YWA63YN3.js.map +0 -1
- package/dist/chunk-Z3FL7LEK.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/Badge/Badge.tsx"],"names":[],"mappings":"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","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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/Tag/Tag.variants.ts","../src/components/primitives/Tag/TagGroup.tsx","../src/components/primitives/Tag/Tag.tsx"],"names":["jsx","React2"],"mappings":"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","file":"chunk-VFALJSXB.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Tag style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const tagVariants = cva(\n // Base styles (always applied)\n [\n \"inline-flex items-center justify-center\",\n \"font-medium whitespace-nowrap shrink-0 gap-1.5\",\n \"rounded-[var(--tag-radius)] border bg-background text-foreground\",\n \"transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--tag-size-height-sm)] px-[var(--tag-size-padding-x-sm)] text-[length:var(--tag-size-text-sm)] [&_[data-slot='tag-checkbox']]:size-[var(--tag-size-checkbox-sm)]\",\n md: \"h-[var(--tag-size-height-md)] px-[var(--tag-size-padding-x-md)] text-[length:var(--tag-size-text-md)] [&_[data-slot='tag-checkbox']]:size-[var(--tag-size-checkbox-md)]\",\n lg: \"h-[var(--tag-size-height-lg)] px-[var(--tag-size-padding-x-lg)] text-[length:var(--tag-size-text-lg)] [&_[data-slot='tag-checkbox']]:size-[var(--tag-size-checkbox-lg)]\",\n },\n checked: {\n true: \"border-[color:var(--tag-color-border-checked)] bg-[color:var(--tag-color-bg-checked)]\",\n false: \"border-[color:var(--tag-color-border-default)] bg-[color:var(--tag-color-bg-default)]\",\n },\n disabled: {\n true: \"opacity-50 pointer-events-none\",\n false: \"\",\n },\n interactive: {\n true: \"cursor-pointer hover:bg-muted/50\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n checked: false,\n disabled: false,\n interactive: false,\n },\n }\n)\n\n/**\n * Tag count pill styles\n */\nexport const tagCountVariants = cva(\n [\n \"inline-flex items-center justify-center\",\n \"rounded-[var(--tag-count-radius)] bg-muted text-muted-foreground font-medium\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--tag-size-count-height-sm)] min-w-[var(--tag-size-count-min-width-sm)] px-1 text-[length:var(--tag-size-count-text-sm)]\",\n md: \"h-[var(--tag-size-count-height-md)] min-w-[var(--tag-size-count-min-width-md)] px-1.5 text-[length:var(--tag-size-count-text-md)]\",\n lg: \"h-[var(--tag-size-count-height-lg)] min-w-[var(--tag-size-count-min-width-lg)] px-1.5 text-[length:var(--tag-size-count-text-lg)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * Tag checkbox styles\n */\nexport const tagCheckboxVariants = cva(\n [\n \"inline-flex items-center justify-center shrink-0\",\n \"rounded border transition-colors\",\n ],\n {\n variants: {\n size: {\n sm: \"size-[var(--tag-size-checkbox-sm)]\",\n md: \"size-[var(--tag-size-checkbox-md)]\",\n lg: \"size-[var(--tag-size-checkbox-lg)]\",\n },\n checked: {\n true: \"bg-[color:var(--tag-checkbox-bg-checked)] border-[color:var(--tag-checkbox-border-checked)] text-[color:var(--tag-checkbox-text-checked)]\",\n false: \"border-[color:var(--tag-checkbox-border-default)] bg-[color:var(--tag-checkbox-bg-default)]\",\n },\n disabled: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n checked: false,\n disabled: false,\n },\n }\n)\n\nexport type TagVariantProps = VariantProps<typeof tagVariants>\n\n/**\n * TagGroup layout variants\n */\nexport const tagGroupVariants = cva(\"inline-flex\", {\n variants: {\n /**\n * Layout mode for tags\n */\n layout: {\n /** Single line with scroll */\n inline: \"flex-nowrap overflow-x-auto\",\n /** Wrap to multiple lines */\n wrap: \"flex-wrap\",\n /** Vertical stack */\n stack: \"flex-col\",\n },\n /**\n * Gap between tags\n */\n gap: {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-3\",\n },\n /**\n * Alignment of tags\n */\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n },\n },\n defaultVariants: {\n layout: \"wrap\",\n gap: \"sm\",\n align: \"center\",\n },\n})\n\nexport type TagGroupVariantProps = VariantProps<typeof tagGroupVariants>\n","\"use client\"\n\nimport type { TagGroupContextValue, TagGroupProps } from \"./Tag.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { tagGroupVariants } from \"./Tag.variants\"\n\n/**\n * Context for TagGroup to pass props to child Tags\n */\nconst TagGroupContext = React.createContext<null | TagGroupContextValue>(null)\n\n/**\n * Hook to access TagGroup context\n */\nexport function useTagGroup(): null | TagGroupContextValue {\n return React.use(TagGroupContext)\n}\n\n/**\n * TagGroup - Container for grouping multiple Tag components\n *\n * Provides layout control, gap spacing, and can pass size/disabled\n * props to all child Tags via context.\n *\n * @example\n * ```tsx\n * // Basic grouping with wrap layout\n * <TagGroup>\n * <Tag>React</Tag>\n * <Tag>TypeScript</Tag>\n * <Tag>Tailwind</Tag>\n * </TagGroup>\n *\n * // Inline scrollable\n * <TagGroup layout=\"inline\" gap=\"md\">\n * {tags.map(tag => <Tag key={tag}>{tag}</Tag>)}\n * </TagGroup>\n *\n * // With size inheritance\n * <TagGroup size=\"sm\">\n * <Tag checkbox>Option 1</Tag>\n * <Tag checkbox>Option 2</Tag>\n * </TagGroup>\n *\n * // Vertical stack\n * <TagGroup layout=\"stack\" align=\"start\">\n * <Tag>First</Tag>\n * <Tag>Second</Tag>\n * <Tag>Third</Tag>\n * </TagGroup>\n * ```\n */\nexport function TagGroup({\n children,\n className,\n layout,\n gap,\n align,\n size,\n disabled,\n ...props\n}: TagGroupProps) {\n // Memoize context value to prevent unnecessary re-renders\n const contextValue = React.useMemo<TagGroupContextValue>(\n () => ({\n size,\n disabled,\n }),\n [size, disabled]\n )\n\n return (\n <TagGroupContext value={contextValue}>\n <div\n className={cn(tagGroupVariants({ layout, gap, align }), className)}\n data-slot=\"tag-group\"\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n </TagGroupContext>\n )\n}\n\nTagGroup.displayName = \"TagGroup\"\n","\"use client\"\n\nimport type { TagAvatarProps, TagProps } from \"./Tag.types\"\n\nimport { Check, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { tagCheckboxVariants, tagCountVariants, tagVariants } from \"./Tag.variants\"\nimport { useTagGroup } from \"./TagGroup\"\n\n// Internal checkbox component\nfunction TagCheckbox({\n checked,\n disabled,\n size,\n}: {\n checked: boolean\n disabled?: boolean\n size: \"lg\" | \"md\" | \"sm\"\n}) {\n return (\n <span\n className={cn(tagCheckboxVariants({ size, checked, disabled }))}\n data-slot=\"tag-checkbox\"\n >\n {checked && <Check className=\"size-3\" strokeWidth={3} />}\n </span>\n )\n}\n\n// Internal count pill component\nfunction TagCount({ count, size }: { count: number; size: \"lg\" | \"md\" | \"sm\" }) {\n return (\n <span className={cn(tagCountVariants({ size }))} data-slot=\"tag-count\">\n {count > 999 ? \"999+\" : count}\n </span>\n )\n}\n\n// Dismiss button size mapping (Figma: sm=10px, md=12px, lg=14px icons)\nconst dismissSizeMap = {\n sm: { button: \"size-3.5\", icon: \"size-2.5\" }, // 14px button, 10px icon\n md: { button: \"size-4\", icon: \"size-3\" }, // 16px button, 12px icon\n lg: { button: \"size-4.5\", icon: \"size-3.5\" }, // 18px button, 14px icon\n}\n\n// Internal dismiss button component\nfunction TagDismiss({\n onClick,\n disabled,\n size = \"md\",\n}: {\n disabled?: boolean\n onClick: () => void\n size?: \"lg\" | \"md\" | \"sm\"\n}) {\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!disabled) {\n onClick()\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) {\n e.preventDefault()\n e.stopPropagation()\n onClick()\n }\n }\n\n const sizeClasses = dismissSizeMap[size]\n\n return (\n <button\n className={cn(\n sizeClasses.button,\n \"-mr-0.5 rounded-sm inline-flex items-center justify-center shrink-0\",\n \"text-muted-foreground hover:text-foreground hover:bg-muted\",\n \"transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n disabled && \"pointer-events-none\"\n )}\n aria-label=\"Remove tag\"\n data-slot=\"tag-dismiss\"\n disabled={disabled}\n tabIndex={-1}\n type=\"button\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <X className={sizeClasses.icon} />\n </button>\n )\n}\n\n// Internal avatar component\nfunction TagAvatar({ src, fallback, alt }: TagAvatarProps) {\n const [imageError, setImageError] = React.useState(false)\n\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-0.5 rounded-full shrink-0 inline-flex items-center justify-center overflow-hidden bg-muted text-3xs font-medium\"\n data-slot=\"tag-avatar\"\n >\n {src && !imageError ? (\n <img\n alt={alt ?? fallback}\n className=\"size-full object-cover\"\n src={src}\n onError={() => {\n setImageError(true)\n }}\n />\n ) : (\n <span aria-label={alt ?? fallback}>{initials}</span>\n )}\n </span>\n )\n}\n\n// Internal dot component\nfunction TagDot() {\n return (\n <span\n className=\"size-1.5 rounded-full shrink-0 bg-[color:var(--tag-color-dot)]\"\n data-slot=\"tag-dot\"\n />\n )\n}\n\n// Internal country flag component\nfunction TagCountry({ code }: { code: string }) {\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=\"tag-country\"\n role=\"img\"\n >\n {countryToFlag(code)}\n </span>\n )\n}\n\n/**\n * Tag - Interactive selectable/filterable component\n *\n * Used for filtering, categorization, and selection with optional\n * checkbox, count, avatar, country flag, and dismiss functionality.\n *\n * @example\n * ```tsx\n * // Basic tag\n * <Tag>Label</Tag>\n *\n * // With checkbox\n * <Tag checkbox checked={selected} onCheckedChange={setSelected}>\n * React\n * </Tag>\n *\n * // With count and dismiss\n * <Tag count={5} onDismiss={() => {}}>\n * Notifications\n * </Tag>\n * ```\n */\nexport function Tag({\n children,\n className,\n size: sizeProp,\n checkbox,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n dot,\n icon,\n avatar,\n country,\n count,\n onDismiss,\n disabled: disabledProp,\n onClick,\n onKeyDown,\n ...props\n}: TagProps) {\n // Get context from TagGroup (if present)\n const groupContext = useTagGroup()\n\n // Merge with context values\n const size = sizeProp ?? groupContext?.size ?? \"md\"\n const disabled = disabledProp ?? groupContext?.disabled\n\n // Uncontrolled state for checkbox\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n\n // Use controlled or uncontrolled checked value\n const isChecked = controlledChecked ?? internalChecked\n const isInteractive = Boolean(checkbox) || Boolean(onClick)\n\n // Handle checkbox toggle\n const handleToggle = () => {\n if (disabled) return\n\n const newChecked = !isChecked\n setInternalChecked(newChecked)\n onCheckedChange?.(newChecked)\n }\n\n // Handle click\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) return\n\n if (checkbox) {\n handleToggle()\n }\n\n onClick?.(e)\n }\n\n // Handle keyboard\n const handleKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (disabled) return\n\n // Toggle on Space/Enter for checkbox\n if (checkbox && (e.key === \" \" || e.key === \"Enter\")) {\n e.preventDefault()\n handleToggle()\n }\n\n // Dismiss on Delete/Backspace\n if (onDismiss && (e.key === \"Delete\" || e.key === \"Backspace\")) {\n e.preventDefault()\n onDismiss()\n }\n\n onKeyDown?.(e)\n }\n\n // Render leading content (checkbox, avatar, country, icon, or dot)\n const renderLeading = () => {\n if (checkbox) {\n return <TagCheckbox checked={isChecked} disabled={disabled} size={size} />\n }\n if (avatar) return <TagAvatar {...avatar} />\n if (country) return <TagCountry code={country} />\n if (icon) return <span className=\"shrink-0 [&_svg]:size-3.5\" data-slot=\"tag-icon\">{icon}</span>\n if (dot) return <TagDot />\n return null\n }\n\n // Render trailing content (count, dismiss)\n const renderTrailing = () => {\n return (\n <>\n {count !== undefined && <TagCount count={count} size={size} />}\n {onDismiss && <TagDismiss disabled={disabled} size={size} onClick={onDismiss} />}\n </>\n )\n }\n\n return (\n <span\n className={cn(\n tagVariants({\n size,\n checked: isChecked,\n disabled,\n interactive: isInteractive,\n }),\n className\n )}\n aria-checked={checkbox ? isChecked : undefined}\n aria-disabled={disabled}\n data-slot=\"tag\"\n role={checkbox ? \"checkbox\" : undefined}\n tabIndex={isInteractive && !disabled ? 0 : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {renderLeading()}\n <span data-slot=\"tag-content\">{children}</span>\n {renderTrailing()}\n </span>\n )\n}\n\nTag.displayName = \"Tag\"\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/navigation/Header/Header.variants.ts","../src/components/navigation/Header/Header.tsx"],"names":[],"mappings":"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","file":"chunk-VPNFYQBL.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Header root variant styles\n *\n * Height follows the Figma auto-layout model (DES-1271): the root has a min\n * height of `--header-height` (64px — a logo-only header) and hugs to 76px\n * when a HeaderNav/HeaderActions row is present, because that row enforces\n * `--header-content-height` (36px) and the container adds `--header-root-padding-y`\n * (20px × 2). There is no `size` prop — the Figma component has no size axis.\n */\nexport const headerVariants = cva(\n [\n // Base styles\n \"flex w-full items-center\",\n // Figma height model — min 64px (logo-only), hugs to 76px with nav/actions\n \"min-h-[var(--header-height)]\",\n // Transition\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n default:\n \"bg-[color:var(--header-root-bg)] border-b border-[color:var(--header-root-border-color)]\",\n transparent: \"bg-transparent\",\n floating:\n \"bg-[color:var(--header-root-bg)]/80 backdrop-blur-sm border-b border-[color:var(--header-root-border-color)]/50 shadow-sm\",\n },\n sticky: {\n true: \"sticky top-0 z-[var(--header-sticky-z-index)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n sticky: false,\n },\n }\n)\n\n/**\n * Header container variant styles (inner wrapper)\n */\nexport const headerContainerVariants = cva(\n [\n \"flex w-full items-center gap-4 px-[var(--header-root-padding-x)] py-[var(--header-root-padding-y)]\",\n ],\n {\n variants: {\n contained: {\n true: \"mx-auto max-w-7xl\",\n false: \"\",\n },\n layout: {\n // Brand left, Nav middle, Actions right (default)\n default: \"justify-between\",\n // Brand center; Nav and Actions on sides if provided\n \"logo-centered\":\n \"justify-center [&>[data-slot=header-brand]]:order-2 [&>[data-slot=header-nav]]:order-1 [&>[data-slot=header-actions]]:order-3 [&>[data-slot=header-nav]]:flex-1 [&>[data-slot=header-actions]]:flex-1\",\n // Nav left, Brand right (mirror of default)\n \"links-left\":\n \"justify-between [&>[data-slot=header-brand]]:order-2 [&>[data-slot=header-nav]]:order-1 [&>[data-slot=header-actions]]:order-3\",\n // Brand + Nav clustered center, Actions right\n centered:\n \"[&>[data-slot=header-brand]]:flex-none [&>[data-slot=header-nav]]:flex-1 [&>[data-slot=header-nav]]:justify-center [&>[data-slot=header-actions]]:flex-none [&>[data-slot=header-actions]]:ml-auto\",\n },\n },\n defaultVariants: {\n contained: false,\n layout: \"default\",\n },\n }\n)\n\n/**\n * HeaderBrand variant styles\n */\nexport const headerBrandVariants = cva([\n \"flex shrink-0 items-center gap-2\",\n])\n\n/**\n * HeaderNav variant styles\n *\n * Enforces the Figma nav-row height (`--header-content-height` 36px) so a\n * header with navigation hugs to 76px regardless of whether the links are\n * plain text or buttons.\n */\nexport const headerNavVariants = cva([\n \"hidden md:flex items-center gap-1 min-h-[var(--header-content-height)]\",\n])\n\n/**\n * HeaderActions variant styles\n *\n * Enforces the Figma action-row height (`--header-content-height` 36px) so a\n * header with actions (e.g. the Mobile layout: logo + icons) hugs to 76px.\n */\nexport const headerActionsVariants = cva(\n [\n \"flex items-center gap-2 min-h-[var(--header-content-height)]\",\n ],\n {\n variants: {\n align: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n },\n },\n defaultVariants: {\n align: \"end\",\n },\n }\n)\n","\"use client\"\n\nimport type {\n HeaderActionsProps,\n HeaderBrandProps,\n HeaderNavProps,\n HeaderProps,\n} from \"./Header.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n headerActionsVariants,\n headerBrandVariants,\n headerContainerVariants,\n headerNavVariants,\n headerVariants,\n} from \"./Header.variants\"\n\n/**\n * Header - A responsive header component for site navigation.\n *\n * Supports multiple visual variants, Figma layouts, and sticky positioning.\n * Height follows the Figma model: 64px for a logo-only header, 76px once a\n * HeaderNav/HeaderActions row is present (content-driven, no `size` prop).\n *\n * @example\n * <Header variant=\"default\" sticky>\n * <HeaderBrand asLink href=\"/\">Logo</HeaderBrand>\n * <HeaderNav>\n * <a href=\"/about\">About</a>\n * <a href=\"/contact\">Contact</a>\n * </HeaderNav>\n * <HeaderActions>\n * <Button>Sign In</Button>\n * </HeaderActions>\n * </Header>\n */\nfunction Header({\n className,\n variant = \"default\",\n sticky = false,\n contained = false,\n layout = \"default\",\n containerClassName,\n children,\n ...props\n}: HeaderProps) {\n return (\n <header\n className={cn(headerVariants({ variant, sticky }), className)}\n data-slot=\"header\"\n {...props}\n >\n <div\n className={cn(\n headerContainerVariants({ contained, layout }),\n containerClassName\n )}\n data-layout={layout}\n data-slot=\"header-container\"\n >\n {children}\n </div>\n </header>\n )\n}\n\n/**\n * HeaderBrand - Logo/brand area of the header.\n *\n * Can optionally render as a link when asLink is true.\n */\nfunction HeaderBrand({\n className,\n asLink = false,\n href = \"/\",\n children,\n ...props\n}: HeaderBrandProps) {\n if (asLink) {\n return (\n <a\n className={cn(headerBrandVariants(), className)}\n data-slot=\"header-brand\"\n href={href}\n {...(props as React.ComponentProps<\"a\">)}\n >\n {children}\n </a>\n )\n }\n\n return (\n <div\n className={cn(headerBrandVariants(), className)}\n data-slot=\"header-brand\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * HeaderNav - Navigation container for header links.\n */\nfunction HeaderNav({ className, children, ...props }: HeaderNavProps) {\n return (\n <nav\n className={cn(headerNavVariants(), className)}\n data-slot=\"header-nav\"\n {...props}\n >\n {children}\n </nav>\n )\n}\n\n/**\n * HeaderActions - Actions container for buttons/controls.\n */\nfunction HeaderActions({\n className,\n align = \"end\",\n children,\n ...props\n}: HeaderActionsProps) {\n return (\n <div\n className={cn(headerActionsVariants({ align }), className)}\n data-slot=\"header-actions\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { Header, HeaderActions, HeaderBrand, HeaderNav }\n"]}
|
package/dist/chunk-XD5LE64P.js
DELETED
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
import { Popover, PopoverTrigger, PopoverContent } from './chunk-AFCSDND5.js';
|
|
2
|
-
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
|
-
import { Palette } from 'lucide-react';
|
|
4
|
-
import * as React from 'react';
|
|
5
|
-
import { cva } from 'class-variance-authority';
|
|
6
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
-
|
|
8
|
-
var colorPickerTriggerVariants = cva(
|
|
9
|
-
// Base styles
|
|
10
|
-
[
|
|
11
|
-
"inline-flex w-full items-center justify-between gap-2 rounded-[var(--color-picker-trigger-radius)] border bg-transparent font-normal transition-[color,box-shadow] outline-none",
|
|
12
|
-
"text-left",
|
|
13
|
-
"placeholder:text-muted-foreground",
|
|
14
|
-
"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
15
|
-
"focus-visible:border-[color:var(--color-picker-focus-ring-primary)] focus-visible:ring-[color:var(--color-picker-focus-ring-primary)]/50 focus-visible:ring-[length:var(--color-picker-focus-ring-width)]",
|
|
16
|
-
"aria-invalid:ring-[color:var(--color-picker-focus-ring-destructive)]/20 dark:aria-invalid:ring-[color:var(--color-picker-focus-ring-destructive)]/40 aria-invalid:border-[color:var(--color-picker-focus-ring-destructive)]"
|
|
17
|
-
],
|
|
18
|
-
{
|
|
19
|
-
variants: {
|
|
20
|
-
size: {
|
|
21
|
-
sm: "h-9 px-2.5 py-1 text-sm",
|
|
22
|
-
md: "h-10 px-3 py-1 text-base md:text-sm",
|
|
23
|
-
lg: "h-11 px-3.5 py-1.5 text-base"
|
|
24
|
-
},
|
|
25
|
-
variant: {
|
|
26
|
-
default: "border-input shadow-xs dark:bg-input/30",
|
|
27
|
-
filled: "border-transparent bg-muted",
|
|
28
|
-
flushed: "rounded-none border-x-0 border-t-0 border-b-input px-0"
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
defaultVariants: {
|
|
32
|
-
size: "md",
|
|
33
|
-
variant: "default"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
);
|
|
37
|
-
var colorPickerSwatchVariants = cva(
|
|
38
|
-
// Base styles
|
|
39
|
-
[
|
|
40
|
-
"rounded-[var(--color-picker-swatch-radius)] border border-input cursor-pointer transition-all",
|
|
41
|
-
"hover:scale-110 hover:border-ring",
|
|
42
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
|
43
|
-
],
|
|
44
|
-
{
|
|
45
|
-
variants: {
|
|
46
|
-
size: {
|
|
47
|
-
sm: "size-5",
|
|
48
|
-
md: "size-6",
|
|
49
|
-
lg: "size-7"
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
defaultVariants: {
|
|
53
|
-
size: "md"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
);
|
|
57
|
-
var colorPickerPreviewVariants = cva(
|
|
58
|
-
// Base styles
|
|
59
|
-
[
|
|
60
|
-
"rounded-[var(--color-picker-swatch-radius)] border border-input shrink-0"
|
|
61
|
-
],
|
|
62
|
-
{
|
|
63
|
-
variants: {
|
|
64
|
-
size: {
|
|
65
|
-
sm: "size-4",
|
|
66
|
-
md: "size-5",
|
|
67
|
-
lg: "size-6"
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
defaultVariants: {
|
|
71
|
-
size: "md"
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
);
|
|
75
|
-
function isValid6DigitHex(color) {
|
|
76
|
-
return /^#[A-Fa-f0-9]{6}$/.test(color);
|
|
77
|
-
}
|
|
78
|
-
function isValid3DigitHex(color) {
|
|
79
|
-
return /^#[A-Fa-f0-9]{3}$/.test(color);
|
|
80
|
-
}
|
|
81
|
-
function isValidHexColor(color) {
|
|
82
|
-
return isValid6DigitHex(color) || isValid3DigitHex(color);
|
|
83
|
-
}
|
|
84
|
-
function normalizeHexColor(color) {
|
|
85
|
-
if (!color.startsWith("#")) {
|
|
86
|
-
color = `#${color}`;
|
|
87
|
-
}
|
|
88
|
-
if (color.length === 4) {
|
|
89
|
-
const r = color[1] ?? "";
|
|
90
|
-
const g = color[2] ?? "";
|
|
91
|
-
const b = color[3] ?? "";
|
|
92
|
-
return `#${r}${r}${g}${g}${b}${b}`.toLowerCase();
|
|
93
|
-
}
|
|
94
|
-
return color.toLowerCase();
|
|
95
|
-
}
|
|
96
|
-
var DEFAULT_SWATCHES = [
|
|
97
|
-
"#ef4444",
|
|
98
|
-
// red
|
|
99
|
-
"#f97316",
|
|
100
|
-
// orange
|
|
101
|
-
"#eab308",
|
|
102
|
-
// yellow
|
|
103
|
-
"#22c55e",
|
|
104
|
-
// green
|
|
105
|
-
"#14b8a6",
|
|
106
|
-
// teal
|
|
107
|
-
"#3b82f6",
|
|
108
|
-
// blue
|
|
109
|
-
"#8b5cf6",
|
|
110
|
-
// violet
|
|
111
|
-
"#ec4899",
|
|
112
|
-
// pink
|
|
113
|
-
"#000000",
|
|
114
|
-
// black
|
|
115
|
-
"#ffffff"
|
|
116
|
-
// white
|
|
117
|
-
];
|
|
118
|
-
function ColorPicker({
|
|
119
|
-
className,
|
|
120
|
-
value,
|
|
121
|
-
defaultValue,
|
|
122
|
-
placeholder = "Select color",
|
|
123
|
-
disabled = false,
|
|
124
|
-
swatches = DEFAULT_SWATCHES,
|
|
125
|
-
showInput = true,
|
|
126
|
-
showPreview = true,
|
|
127
|
-
onChange,
|
|
128
|
-
onOpenChange,
|
|
129
|
-
size = "md",
|
|
130
|
-
variant = "default",
|
|
131
|
-
required = false,
|
|
132
|
-
invalid = false,
|
|
133
|
-
id,
|
|
134
|
-
name,
|
|
135
|
-
"aria-label": ariaLabel,
|
|
136
|
-
"aria-labelledby": ariaLabelledby,
|
|
137
|
-
...props
|
|
138
|
-
}) {
|
|
139
|
-
const [open, setOpen] = React.useState(false);
|
|
140
|
-
const [internalColor, setInternalColor] = React.useState(defaultValue);
|
|
141
|
-
const [inputValue, setInputValue] = React.useState(defaultValue ?? "");
|
|
142
|
-
const colorInputRef = React.useRef(null);
|
|
143
|
-
const selectedColor = value ?? internalColor;
|
|
144
|
-
React.useEffect(() => {
|
|
145
|
-
if (!selectedColor) return;
|
|
146
|
-
setInputValue((prev) => prev === selectedColor ? prev : selectedColor);
|
|
147
|
-
}, [selectedColor]);
|
|
148
|
-
const handleColorChange = (color) => {
|
|
149
|
-
const normalizedColor = normalizeHexColor(color);
|
|
150
|
-
if (value === void 0) {
|
|
151
|
-
setInternalColor(normalizedColor);
|
|
152
|
-
}
|
|
153
|
-
onChange?.(normalizedColor);
|
|
154
|
-
};
|
|
155
|
-
const handleNativeColorChange = (e) => {
|
|
156
|
-
handleColorChange(e.target.value);
|
|
157
|
-
};
|
|
158
|
-
const handleInputChange = (e) => {
|
|
159
|
-
let inputVal = e.target.value;
|
|
160
|
-
setInputValue(inputVal);
|
|
161
|
-
if (inputVal && !inputVal.startsWith("#")) {
|
|
162
|
-
inputVal = `#${inputVal}`;
|
|
163
|
-
}
|
|
164
|
-
if (isValid6DigitHex(inputVal)) {
|
|
165
|
-
handleColorChange(inputVal);
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
const handleInputBlur = () => {
|
|
169
|
-
let inputVal = inputValue;
|
|
170
|
-
if (inputVal && !inputVal.startsWith("#")) {
|
|
171
|
-
inputVal = `#${inputVal}`;
|
|
172
|
-
}
|
|
173
|
-
if (isValid3DigitHex(inputVal)) {
|
|
174
|
-
handleColorChange(inputVal);
|
|
175
|
-
} else if (!isValidHexColor(inputVal) && selectedColor) {
|
|
176
|
-
setInputValue(selectedColor);
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
const handleSwatchClick = (color) => {
|
|
180
|
-
handleColorChange(color);
|
|
181
|
-
};
|
|
182
|
-
const handleOpenChange = (isOpen) => {
|
|
183
|
-
setOpen(isOpen);
|
|
184
|
-
onOpenChange?.(isOpen);
|
|
185
|
-
};
|
|
186
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("relative", className), "data-slot": "color-picker", ...props, children: [
|
|
187
|
-
/* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
|
|
188
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
189
|
-
"button",
|
|
190
|
-
{
|
|
191
|
-
className: cn(
|
|
192
|
-
colorPickerTriggerVariants({ size, variant }),
|
|
193
|
-
!selectedColor && "text-muted-foreground"
|
|
194
|
-
),
|
|
195
|
-
"aria-expanded": open,
|
|
196
|
-
"aria-haspopup": "dialog",
|
|
197
|
-
"aria-invalid": invalid,
|
|
198
|
-
"aria-label": ariaLabel,
|
|
199
|
-
"aria-labelledby": ariaLabelledby,
|
|
200
|
-
"aria-required": required,
|
|
201
|
-
"data-has-value": !!selectedColor,
|
|
202
|
-
"data-size": size,
|
|
203
|
-
"data-slot": "color-picker-trigger",
|
|
204
|
-
"data-state": open ? "open" : "closed",
|
|
205
|
-
"data-variant": variant,
|
|
206
|
-
disabled,
|
|
207
|
-
id,
|
|
208
|
-
role: "combobox",
|
|
209
|
-
type: "button",
|
|
210
|
-
children: [
|
|
211
|
-
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2 flex-1 truncate", children: [
|
|
212
|
-
showPreview && selectedColor && /* @__PURE__ */ jsx(
|
|
213
|
-
"span",
|
|
214
|
-
{
|
|
215
|
-
"aria-hidden": "true",
|
|
216
|
-
className: cn(colorPickerPreviewVariants({ size })),
|
|
217
|
-
"data-slot": "color-picker-preview",
|
|
218
|
-
style: { backgroundColor: selectedColor }
|
|
219
|
-
}
|
|
220
|
-
),
|
|
221
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: selectedColor ?? placeholder })
|
|
222
|
-
] }),
|
|
223
|
-
/* @__PURE__ */ jsx(Palette, { "aria-hidden": "true", className: "size-4 shrink-0 opacity-50" })
|
|
224
|
-
]
|
|
225
|
-
}
|
|
226
|
-
) }),
|
|
227
|
-
/* @__PURE__ */ jsx(
|
|
228
|
-
PopoverContent,
|
|
229
|
-
{
|
|
230
|
-
align: "start",
|
|
231
|
-
className: "w-[var(--color-picker-content-width)] p-[var(--color-picker-content-padding)]",
|
|
232
|
-
"data-slot": "color-picker-content",
|
|
233
|
-
children: /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
234
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
235
|
-
/* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
|
|
236
|
-
"input",
|
|
237
|
-
{
|
|
238
|
-
ref: colorInputRef,
|
|
239
|
-
"aria-label": "Choose color",
|
|
240
|
-
className: "size-10 cursor-pointer rounded-md border border-input p-0.5 [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:rounded-sm [&::-webkit-color-swatch]:border-none [&::-moz-color-swatch]:rounded-sm [&::-moz-color-swatch]:border-none",
|
|
241
|
-
"data-slot": "color-picker-native",
|
|
242
|
-
type: "color",
|
|
243
|
-
value: selectedColor ?? "#000000",
|
|
244
|
-
onChange: handleNativeColorChange
|
|
245
|
-
}
|
|
246
|
-
) }),
|
|
247
|
-
showInput && /* @__PURE__ */ jsx(
|
|
248
|
-
"input",
|
|
249
|
-
{
|
|
250
|
-
"aria-label": "Hex color value",
|
|
251
|
-
className: "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm font-mono shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 uppercase",
|
|
252
|
-
"data-slot": "color-picker-input",
|
|
253
|
-
maxLength: 7,
|
|
254
|
-
placeholder: "#000000",
|
|
255
|
-
type: "text",
|
|
256
|
-
value: inputValue,
|
|
257
|
-
onBlur: handleInputBlur,
|
|
258
|
-
onChange: handleInputChange
|
|
259
|
-
}
|
|
260
|
-
)
|
|
261
|
-
] }),
|
|
262
|
-
swatches.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
263
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground font-medium", children: "Preset colors" }),
|
|
264
|
-
/* @__PURE__ */ jsx(
|
|
265
|
-
"div",
|
|
266
|
-
{
|
|
267
|
-
"aria-label": "Color swatches",
|
|
268
|
-
className: "grid grid-cols-5 gap-2",
|
|
269
|
-
"data-slot": "color-picker-swatches",
|
|
270
|
-
role: "group",
|
|
271
|
-
children: swatches.map((color, index) => /* @__PURE__ */ jsx(
|
|
272
|
-
"button",
|
|
273
|
-
{
|
|
274
|
-
className: cn(
|
|
275
|
-
colorPickerSwatchVariants({ size }),
|
|
276
|
-
selectedColor === color && "ring-2 ring-ring ring-offset-2"
|
|
277
|
-
),
|
|
278
|
-
"aria-label": `Select color ${color}`,
|
|
279
|
-
"aria-pressed": selectedColor === color,
|
|
280
|
-
"data-color": color,
|
|
281
|
-
"data-selected": selectedColor === color,
|
|
282
|
-
"data-slot": "color-picker-swatch",
|
|
283
|
-
style: { backgroundColor: color },
|
|
284
|
-
type: "button",
|
|
285
|
-
onClick: () => {
|
|
286
|
-
handleSwatchClick(color);
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
`${color}-${String(index)}`
|
|
290
|
-
))
|
|
291
|
-
}
|
|
292
|
-
)
|
|
293
|
-
] }) : null
|
|
294
|
-
] })
|
|
295
|
-
}
|
|
296
|
-
)
|
|
297
|
-
] }),
|
|
298
|
-
name && /* @__PURE__ */ jsx(
|
|
299
|
-
"input",
|
|
300
|
-
{
|
|
301
|
-
name,
|
|
302
|
-
type: "hidden",
|
|
303
|
-
value: selectedColor ?? ""
|
|
304
|
-
}
|
|
305
|
-
)
|
|
306
|
-
] });
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
export { ColorPicker, colorPickerPreviewVariants, colorPickerSwatchVariants, colorPickerTriggerVariants };
|
|
310
|
-
//# sourceMappingURL=chunk-XD5LE64P.js.map
|
|
311
|
-
//# sourceMappingURL=chunk-XD5LE64P.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/ColorPicker/ColorPicker.variants.ts","../src/components/forms/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"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","file":"chunk-XD5LE64P.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ColorPicker trigger variant styles using CVA\n */\nexport const colorPickerTriggerVariants = cva(\n // Base styles\n [\n \"inline-flex w-full items-center justify-between gap-2 rounded-[var(--color-picker-trigger-radius)] border bg-transparent font-normal transition-[color,box-shadow] outline-none\",\n \"text-left\",\n \"placeholder:text-muted-foreground\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:border-[color:var(--color-picker-focus-ring-primary)] focus-visible:ring-[color:var(--color-picker-focus-ring-primary)]/50 focus-visible:ring-[length:var(--color-picker-focus-ring-width)]\",\n \"aria-invalid:ring-[color:var(--color-picker-focus-ring-destructive)]/20 dark:aria-invalid:ring-[color:var(--color-picker-focus-ring-destructive)]/40 aria-invalid:border-[color:var(--color-picker-focus-ring-destructive)]\",\n ],\n {\n variants: {\n size: {\n sm: \"h-9 px-2.5 py-1 text-sm\",\n md: \"h-10 px-3 py-1 text-base md:text-sm\",\n lg: \"h-11 px-3.5 py-1.5 text-base\",\n },\n variant: {\n default: \"border-input shadow-xs dark:bg-input/30\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * ColorPicker swatch styles using CVA\n */\nexport const colorPickerSwatchVariants = cva(\n // Base styles\n [\n \"rounded-[var(--color-picker-swatch-radius)] border border-input cursor-pointer transition-all\",\n \"hover:scale-110 hover:border-ring\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n ],\n {\n variants: {\n size: {\n sm: \"size-5\",\n md: \"size-6\",\n lg: \"size-7\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * ColorPicker preview swatch (in trigger) styles\n */\nexport const colorPickerPreviewVariants = cva(\n // Base styles\n [\n \"rounded-[var(--color-picker-swatch-radius)] border border-input shrink-0\",\n ],\n {\n variants: {\n size: {\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-6\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type ColorPickerTriggerVariantProps = VariantProps<typeof colorPickerTriggerVariants>\nexport type ColorPickerSwatchVariantProps = VariantProps<typeof colorPickerSwatchVariants>\nexport type ColorPickerPreviewVariantProps = VariantProps<typeof colorPickerPreviewVariants>\n","import type { ColorPickerProps } from \"./ColorPicker.types\"\n\nimport { Palette } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../feedback/Popover\"\nimport {\n colorPickerPreviewVariants,\n colorPickerSwatchVariants,\n colorPickerTriggerVariants,\n} from \"./ColorPicker.variants\"\n\n/**\n * Validates if a string is a valid 6-digit hex color\n */\nfunction isValid6DigitHex(color: string): boolean {\n return /^#[A-Fa-f0-9]{6}$/.test(color)\n}\n\n/**\n * Validates if a string is a valid 3-digit hex color\n */\nfunction isValid3DigitHex(color: string): boolean {\n return /^#[A-Fa-f0-9]{3}$/.test(color)\n}\n\n/**\n * Validates if a string is a valid hex color (3 or 6 digit)\n */\nfunction isValidHexColor(color: string): boolean {\n return isValid6DigitHex(color) || isValid3DigitHex(color)\n}\n\n/**\n * Normalizes a hex color to 6-digit lowercase format\n */\nfunction normalizeHexColor(color: string): string {\n if (!color.startsWith(\"#\")) {\n color = `#${color}`\n }\n // Convert 3-digit hex to 6-digit\n if (color.length === 4) {\n const r = color[1] ?? \"\"\n const g = color[2] ?? \"\"\n const b = color[3] ?? \"\"\n return `#${r}${r}${g}${g}${b}${b}`.toLowerCase()\n }\n return color.toLowerCase()\n}\n\n/**\n * Default preset swatches\n */\nconst DEFAULT_SWATCHES = [\n \"#ef4444\", // red\n \"#f97316\", // orange\n \"#eab308\", // yellow\n \"#22c55e\", // green\n \"#14b8a6\", // teal\n \"#3b82f6\", // blue\n \"#8b5cf6\", // violet\n \"#ec4899\", // pink\n \"#000000\", // black\n \"#ffffff\", // white\n]\n\nfunction ColorPicker({\n className,\n value,\n defaultValue,\n placeholder = \"Select color\",\n disabled = false,\n swatches = DEFAULT_SWATCHES,\n showInput = true,\n showPreview = true,\n onChange,\n onOpenChange,\n size = \"md\",\n variant = \"default\",\n required = false,\n invalid = false,\n id,\n name,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n}: ColorPickerProps) {\n const [open, setOpen] = React.useState(false)\n const [internalColor, setInternalColor] = React.useState<string | undefined>(defaultValue)\n const [inputValue, setInputValue] = React.useState(defaultValue ?? \"\")\n const colorInputRef = React.useRef<HTMLInputElement>(null)\n\n // Use controlled value if provided, otherwise use internal state\n const selectedColor = value ?? internalColor\n\n // Sync controlled color to input value when it changes.\n /* eslint-disable react-you-might-not-need-an-effect/no-event-handler, react-you-might-not-need-an-effect/no-pass-live-state-to-parent, react-you-might-not-need-an-effect/no-pass-data-to-parent, react-you-might-not-need-an-effect/no-derived-state, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Controlled value sync */\n React.useEffect(() => {\n if (!selectedColor) return\n setInputValue((prev) => (prev === selectedColor ? prev : selectedColor))\n }, [selectedColor])\n /* eslint-enable react-you-might-not-need-an-effect/no-event-handler, react-you-might-not-need-an-effect/no-pass-live-state-to-parent, react-you-might-not-need-an-effect/no-pass-data-to-parent, react-you-might-not-need-an-effect/no-derived-state, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n\n const handleColorChange = (color: string) => {\n const normalizedColor = normalizeHexColor(color)\n if (value === undefined) {\n setInternalColor(normalizedColor)\n }\n onChange?.(normalizedColor)\n }\n\n const handleNativeColorChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleColorChange(e.target.value)\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let inputVal = e.target.value\n setInputValue(inputVal)\n\n // Auto-add # if not present\n if (inputVal && !inputVal.startsWith(\"#\")) {\n inputVal = `#${inputVal}`\n }\n\n // Only validate 6-digit hex during typing to avoid intermediate 3-digit matches\n if (isValid6DigitHex(inputVal)) {\n handleColorChange(inputVal)\n }\n }\n\n const handleInputBlur = () => {\n let inputVal = inputValue\n\n // Auto-add # if not present\n if (inputVal && !inputVal.startsWith(\"#\")) {\n inputVal = `#${inputVal}`\n }\n\n // On blur, also accept 3-digit hex and normalize it\n if (isValid3DigitHex(inputVal)) {\n handleColorChange(inputVal)\n } else if (!isValidHexColor(inputVal) && selectedColor) {\n // Reset to current color if invalid\n setInputValue(selectedColor)\n }\n }\n\n const handleSwatchClick = (color: string) => {\n handleColorChange(color)\n }\n\n const handleOpenChange = (isOpen: boolean) => {\n setOpen(isOpen)\n onOpenChange?.(isOpen)\n }\n\n return (\n <div className={cn(\"relative\", className)} data-slot=\"color-picker\" {...props}>\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <button\n className={cn(\n colorPickerTriggerVariants({ size, variant }),\n !selectedColor && \"text-muted-foreground\"\n )}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n aria-invalid={invalid}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-required={required}\n data-has-value={!!selectedColor}\n data-size={size}\n data-slot=\"color-picker-trigger\"\n data-state={open ? \"open\" : \"closed\"}\n data-variant={variant}\n disabled={disabled}\n id={id}\n role=\"combobox\"\n type=\"button\"\n >\n <span className=\"flex items-center gap-2 flex-1 truncate\">\n {showPreview && selectedColor && (\n <span\n aria-hidden=\"true\"\n className={cn(colorPickerPreviewVariants({ size }))}\n data-slot=\"color-picker-preview\"\n style={{ backgroundColor: selectedColor }}\n />\n )}\n <span className=\"truncate\">\n {selectedColor ?? placeholder}\n </span>\n </span>\n <Palette aria-hidden=\"true\" className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className=\"w-[var(--color-picker-content-width)] p-[var(--color-picker-content-padding)]\"\n data-slot=\"color-picker-content\"\n >\n <div className=\"space-y-3\">\n {/* Native color picker */}\n <div className=\"flex items-center gap-2\">\n <div className=\"relative\">\n <input\n ref={colorInputRef}\n aria-label=\"Choose color\"\n className=\"size-10 cursor-pointer rounded-md border border-input p-0.5 [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:rounded-sm [&::-webkit-color-swatch]:border-none [&::-moz-color-swatch]:rounded-sm [&::-moz-color-swatch]:border-none\"\n data-slot=\"color-picker-native\"\n type=\"color\"\n value={selectedColor ?? \"#000000\"}\n onChange={handleNativeColorChange}\n />\n </div>\n {showInput && (\n <input\n aria-label=\"Hex color value\"\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm font-mono shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 uppercase\"\n data-slot=\"color-picker-input\"\n maxLength={7}\n placeholder=\"#000000\"\n type=\"text\"\n value={inputValue}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n />\n )}\n </div>\n\n {/* Preset swatches */}\n {swatches.length > 0 ? (\n <div className=\"space-y-1.5\">\n <span className=\"text-xs text-muted-foreground font-medium\">\n Preset colors\n </span>\n <div\n aria-label=\"Color swatches\"\n className=\"grid grid-cols-5 gap-2\"\n data-slot=\"color-picker-swatches\"\n role=\"group\"\n >\n {swatches.map((color, index) => (\n <button\n key={`${color}-${String(index)}`}\n className={cn(\n colorPickerSwatchVariants({ size }),\n selectedColor === color && \"ring-2 ring-ring ring-offset-2\"\n )}\n aria-label={`Select color ${color}`}\n aria-pressed={selectedColor === color}\n data-color={color}\n data-selected={selectedColor === color}\n data-slot=\"color-picker-swatch\"\n style={{ backgroundColor: color }}\n type=\"button\"\n onClick={() => { handleSwatchClick(color); }}\n />\n ))}\n </div>\n </div>\n ) : null}\n </div>\n </PopoverContent>\n </Popover>\n {name && (\n <input\n name={name}\n type=\"hidden\"\n value={selectedColor ?? \"\"}\n />\n )}\n </div>\n )\n}\n\nexport { ColorPicker }\n"]}
|