@jarllyng/nostromo 3.2.0 → 3.3.1
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-35I2BJC3.js +3 -0
- package/dist/chunk-35I2BJC3.js.map +1 -0
- package/dist/chunk-35RWQSO2.cjs +3 -0
- package/dist/chunk-35RWQSO2.cjs.map +1 -0
- package/dist/chunk-3QVQ2TNE.cjs +3 -0
- package/dist/chunk-3QVQ2TNE.cjs.map +1 -0
- package/dist/{chunk-ZC4HJSII.cjs → chunk-5Z3MYAVM.cjs} +2 -2
- package/dist/{chunk-ZC4HJSII.cjs.map → chunk-5Z3MYAVM.cjs.map} +1 -1
- package/dist/{chunk-ZQDFYSZB.cjs → chunk-AYEM2M4H.cjs} +2 -2
- package/dist/{chunk-ZQDFYSZB.cjs.map → chunk-AYEM2M4H.cjs.map} +1 -1
- package/dist/chunk-BL2TM4YT.js +3 -0
- package/dist/chunk-BL2TM4YT.js.map +1 -0
- package/dist/{chunk-BSUHBLZO.cjs → chunk-BZ5ZCZJX.cjs} +2 -2
- package/dist/{chunk-BSUHBLZO.cjs.map → chunk-BZ5ZCZJX.cjs.map} +1 -1
- package/dist/chunk-C7HZAQBX.cjs +3 -0
- package/dist/chunk-C7HZAQBX.cjs.map +1 -0
- package/dist/chunk-DNTPD3PJ.js +3 -0
- package/dist/chunk-DNTPD3PJ.js.map +1 -0
- package/dist/{chunk-TGPWW7FC.js → chunk-HRJXPCGF.js} +2 -2
- package/dist/{chunk-TGPWW7FC.js.map → chunk-HRJXPCGF.js.map} +1 -1
- package/dist/chunk-JCETHQ55.cjs +3 -0
- package/dist/chunk-JCETHQ55.cjs.map +1 -0
- package/dist/chunk-MY2KMTUS.js +3 -0
- package/dist/chunk-MY2KMTUS.js.map +1 -0
- package/dist/chunk-NBX6FKCA.cjs +3 -0
- package/dist/chunk-NBX6FKCA.cjs.map +1 -0
- package/dist/chunk-NC27D5Y3.cjs +3 -0
- package/dist/chunk-NC27D5Y3.cjs.map +1 -0
- package/dist/chunk-NPSIDFOF.cjs +3 -0
- package/dist/chunk-NPSIDFOF.cjs.map +1 -0
- package/dist/chunk-QKM5LPRW.js +3 -0
- package/dist/chunk-QKM5LPRW.js.map +1 -0
- package/dist/chunk-SVWQWRPZ.js +3 -0
- package/dist/chunk-SVWQWRPZ.js.map +1 -0
- package/dist/chunk-TCA5Z7FL.js +3 -0
- package/dist/chunk-TCA5Z7FL.js.map +1 -0
- package/dist/chunk-UIEGBT4T.js +3 -0
- package/dist/chunk-UIEGBT4T.js.map +1 -0
- package/dist/chunk-VNDL67OG.cjs +3 -0
- package/dist/chunk-VNDL67OG.cjs.map +1 -0
- package/dist/chunk-WK6LNC2E.cjs +3 -0
- package/dist/chunk-WK6LNC2E.cjs.map +1 -0
- package/dist/{chunk-M5IBD3KV.js → chunk-WO3KCAN6.js} +2 -2
- package/dist/{chunk-M5IBD3KV.js.map → chunk-WO3KCAN6.js.map} +1 -1
- package/dist/{chunk-7W456HZL.js → chunk-XJJJEWSU.js} +2 -2
- package/dist/{chunk-7W456HZL.js.map → chunk-XJJJEWSU.js.map} +1 -1
- package/dist/chunk-XLZJ6HBL.js +3 -0
- package/dist/chunk-XLZJ6HBL.js.map +1 -0
- package/dist/chunk-XRVHMGMD.js +3 -0
- package/dist/chunk-XRVHMGMD.js.map +1 -0
- package/dist/chunk-Z7WEJ5IQ.cjs +3 -0
- package/dist/chunk-Z7WEJ5IQ.cjs.map +1 -0
- package/dist/components/core/breadcrumb.cjs +1 -1
- package/dist/components/core/breadcrumb.d.cts +7 -1
- package/dist/components/core/breadcrumb.d.ts +7 -1
- package/dist/components/core/breadcrumb.js +1 -1
- package/dist/components/core/calendar.cjs +1 -1
- package/dist/components/core/calendar.js +1 -1
- package/dist/components/core/charts-lazy.cjs +1 -1
- package/dist/components/core/charts-lazy.js +1 -1
- package/dist/components/core/charts.cjs +1 -1
- package/dist/components/core/charts.js +1 -1
- package/dist/components/core/checkbox.cjs +1 -1
- package/dist/components/core/checkbox.js +1 -1
- package/dist/components/core/data-table.cjs +1 -1
- package/dist/components/core/data-table.js +1 -1
- package/dist/components/core/dialog.cjs +1 -1
- package/dist/components/core/dialog.d.cts +20 -2
- package/dist/components/core/dialog.d.ts +20 -2
- package/dist/components/core/dialog.js +1 -1
- package/dist/components/core/icon.cjs +1 -1
- package/dist/components/core/icon.d.cts +1 -1
- package/dist/components/core/icon.d.ts +1 -1
- package/dist/components/core/icon.js +1 -1
- package/dist/components/core/separator.cjs +1 -1
- package/dist/components/core/separator.js +1 -1
- package/dist/components/core/skeleton.cjs +1 -1
- package/dist/components/core/skeleton.js +1 -1
- package/dist/components/core/table.cjs +1 -1
- package/dist/components/core/table.d.cts +11 -1
- package/dist/components/core/table.d.ts +11 -1
- package/dist/components/core/table.js +1 -1
- package/dist/components/core/toast.cjs +1 -1
- package/dist/components/core/toast.js +1 -1
- package/dist/components/core/tooltip.cjs +1 -1
- package/dist/components/core/tooltip.d.cts +9 -1
- package/dist/components/core/tooltip.d.ts +9 -1
- package/dist/components/core/tooltip.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
- package/dist/chunk-4PN7OGLX.cjs +0 -3
- package/dist/chunk-4PN7OGLX.cjs.map +0 -1
- package/dist/chunk-4TYVEXRA.cjs +0 -3
- package/dist/chunk-4TYVEXRA.cjs.map +0 -1
- package/dist/chunk-B2BWBKZA.cjs +0 -3
- package/dist/chunk-B2BWBKZA.cjs.map +0 -1
- package/dist/chunk-CVOSWGQZ.js +0 -3
- package/dist/chunk-CVOSWGQZ.js.map +0 -1
- package/dist/chunk-EGQ2Q37R.cjs +0 -3
- package/dist/chunk-EGQ2Q37R.cjs.map +0 -1
- package/dist/chunk-EIXD3Y4R.js +0 -3
- package/dist/chunk-EIXD3Y4R.js.map +0 -1
- package/dist/chunk-G5ZSOVJY.cjs +0 -3
- package/dist/chunk-G5ZSOVJY.cjs.map +0 -1
- package/dist/chunk-G6TR5RGR.js +0 -3
- package/dist/chunk-G6TR5RGR.js.map +0 -1
- package/dist/chunk-GUJB555L.js +0 -3
- package/dist/chunk-GUJB555L.js.map +0 -1
- package/dist/chunk-JZROH43C.js +0 -3
- package/dist/chunk-JZROH43C.js.map +0 -1
- package/dist/chunk-MRZOLUSF.js +0 -3
- package/dist/chunk-MRZOLUSF.js.map +0 -1
- package/dist/chunk-OZ3RIKZO.cjs +0 -3
- package/dist/chunk-OZ3RIKZO.cjs.map +0 -1
- package/dist/chunk-PEYPRWZP.js +0 -3
- package/dist/chunk-PEYPRWZP.js.map +0 -1
- package/dist/chunk-PVHTEE5T.cjs +0 -3
- package/dist/chunk-PVHTEE5T.cjs.map +0 -1
- package/dist/chunk-QF5CRDZI.js +0 -3
- package/dist/chunk-QF5CRDZI.js.map +0 -1
- package/dist/chunk-RPRISB7O.cjs +0 -3
- package/dist/chunk-RPRISB7O.cjs.map +0 -1
- package/dist/chunk-SD4IIQ2I.cjs +0 -3
- package/dist/chunk-SD4IIQ2I.cjs.map +0 -1
- package/dist/chunk-TJFZAMBB.js +0 -3
- package/dist/chunk-TJFZAMBB.js.map +0 -1
- package/dist/chunk-VXMDVKAD.js +0 -3
- package/dist/chunk-VXMDVKAD.js.map +0 -1
- package/dist/chunk-ZYP2PDSX.cjs +0 -3
- package/dist/chunk-ZYP2PDSX.cjs.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),r=require('react'),classVarianceAuthority=require('class-variance-authority'),phosphorReact=require('phosphor-react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var i={house:phosphorReact.House,home:phosphorReact.House,user:phosphorReact.User,settings:phosphorReact.Gear,search:phosphorReact.MagnifyingGlass,menu:phosphorReact.List,x:phosphorReact.X,"chevron-left":phosphorReact.CaretLeft,"chevron-right":phosphorReact.CaretRight,"chevron-up":phosphorReact.CaretUp,"chevron-down":phosphorReact.CaretDown,"arrow-left":phosphorReact.ArrowLeft,"arrow-right":phosphorReact.ArrowRight,"arrow-up":phosphorReact.ArrowUp,"arrow-down":phosphorReact.ArrowDown,plus:phosphorReact.Plus,minus:phosphorReact.Minus,check:phosphorReact.Check,"x-icon":phosphorReact.X,trash:phosphorReact.Trash,edit:phosphorReact.PencilSimple,copy:phosphorReact.Copy,download:phosphorReact.Download,upload:phosphorReact.Upload,share:phosphorReact.Share,heart:phosphorReact.Heart,star:phosphorReact.Star,bookmark:phosphorReact.Bookmark,mail:phosphorReact.Envelope,phone:phosphorReact.Phone,"message-circle":phosphorReact.ChatCircle,bell:phosphorReact.Bell,"bell-slash":phosphorReact.BellSlash,play:phosphorReact.Play,pause:phosphorReact.Pause,stop:phosphorReact.Stop,"volume-high":phosphorReact.SpeakerHigh,"volume-low":phosphorReact.SpeakerLow,"volume-x":phosphorReact.SpeakerX,camera:phosphorReact.Camera,image:phosphorReact.Image,video:phosphorReact.VideoCamera,file:phosphorReact.File,folder:phosphorReact.Folder,"folder-open":phosphorReact.FolderOpen,"file-text":phosphorReact.FileText,"file-pdf":phosphorReact.FilePdf,"file-image":phosphorReact.FileImage,"check-circle":phosphorReact.CheckCircle,"x-circle":phosphorReact.XCircle,warning:phosphorReact.Warning,info:phosphorReact.Info,question:phosphorReact.Question,clock:phosphorReact.Clock,calendar:phosphorReact.Calendar,timer:phosphorReact.Timer,lock:phosphorReact.Lock,"lock-open":phosphorReact.LockOpen,eye:phosphorReact.Eye,"eye-slash":phosphorReact.EyeSlash,shield:phosphorReact.Shield,"shield-check":phosphorReact.ShieldCheck,wifi:phosphorReact.WifiHigh,"wifi-slash":phosphorReact.WifiX,"battery-warning":phosphorReact.BatteryWarning,cpu:phosphorReact.Cpu,"hard-drive":phosphorReact.HardDrive,sun:phosphorReact.Sun,moon:phosphorReact.Moon,cloud:phosphorReact.Cloud,"cloud-rain":phosphorReact.CloudRain,"cloud-snow":phosphorReact.CloudSnow,"cloud-lightning":phosphorReact.CloudLightning,github:phosphorReact.GithubLogo,twitter:phosphorReact.TwitterLogo,facebook:phosphorReact.FacebookLogo,instagram:phosphorReact.InstagramLogo,linkedin:phosphorReact.LinkedinLogo,youtube:phosphorReact.YoutubeLogo,"shopping-cart":phosphorReact.ShoppingCart,"shopping-bag":phosphorReact.ShoppingBag,"credit-card":phosphorReact.CreditCard,money:phosphorReact.Money,"heart-icon":phosphorReact.Heart,activity:phosphorReact.Activity,car:phosphorReact.Car,bus:phosphorReact.Bus,train:phosphorReact.Train,plane:phosphorReact.Airplane,ship:phosphorReact.Boat,bicycle:phosphorReact.Bicycle,coffee:phosphorReact.Coffee,pizza:phosphorReact.Pizza,hamburger:phosphorReact.Hamburger,basketball:phosphorReact.Basketball,football:phosphorReact.Football,soccer:phosphorReact.SoccerBall,tennis:phosphorReact.TennisBall,"music-note":phosphorReact.MusicNote,"play-circle":phosphorReact.PlayCircle,"pause-circle":phosphorReact.PauseCircle,"stop-circle":phosphorReact.StopCircle,book:phosphorReact.Book,"book-open":phosphorReact.BookOpen,"graduation-cap":phosphorReact.GraduationCap,lightbulb:phosphorReact.Lightbulb,briefcase:phosphorReact.Briefcase,building:phosphorReact.Buildings,"chart-line":phosphorReact.ChartLine,"chart-bar":phosphorReact.ChartBar,"chart-pie":phosphorReact.ChartPie,wrench:phosphorReact.Wrench,"paint-brush":phosphorReact.PaintBrush,code:phosphorReact.Code,terminal:phosphorReact.Terminal,palette:phosphorReact.Palette,accessibility:phosphorReact.Wheelchair,tree:phosphorReact.Tree,flower:phosphorReact.Flower,leaf:phosphorReact.Leaf,mountain:phosphorReact.Mountains,rocket:phosphorReact.Rocket,planet:phosphorReact.Planet,"star-icon":phosphorReact.Star,"moon-icon":phosphorReact.Moon,"game-controller":phosphorReact.GameController,puzzle:phosphorReact.PuzzlePiece,gift:phosphorReact.Gift,key:phosphorReact.Key,"map-pin":phosphorReact.MapPin,compass:phosphorReact.Compass,flag:phosphorReact.Flag,trophy:phosphorReact.Trophy,medal:phosphorReact.Medal,crown:phosphorReact.Crown,sparkle:phosphorReact.Sparkle,zap:phosphorReact.Lightning,fire:phosphorReact.Fire,snowflake:phosphorReact.Snowflake,umbrella:phosphorReact.Umbrella,anchor:phosphorReact.Anchor,bug:phosphorReact.Bug,butterfly:phosphorReact.Butterfly,cat:phosphorReact.Cat,dog:phosphorReact.Dog,fish:phosphorReact.Fish,bird:phosphorReact.Bird,"paw-print":phosphorReact.PawPrint,alien:phosphorReact.Alien,spaceship:phosphorReact.Rocket,atom:phosphorReact.Atom,flask:phosphorReact.Flask,"test-tube":phosphorReact.TestTube,syringe:phosphorReact.Syringe,pill:phosphorReact.Pill,skull:phosphorReact.Skull,ghost:phosphorReact.Ghost,scroll:phosphorReact.Scroll,"bookmark-icon":phosphorReact.Bookmark,"compass-icon":phosphorReact.Compass,"flag-icon":phosphorReact.Flag,"trophy-icon":phosphorReact.Trophy,"medal-icon":phosphorReact.Medal,"crown-icon":phosphorReact.Crown,"sparkle-icon":phosphorReact.Sparkle,"zap-icon":phosphorReact.Lightning,"fire-icon":phosphorReact.Fire,"snowflake-icon":phosphorReact.Snowflake,"umbrella-icon":phosphorReact.Umbrella,"anchor-icon":phosphorReact.Anchor,"bug-icon":phosphorReact.Bug,"butterfly-icon":phosphorReact.Butterfly,"cat-icon":phosphorReact.Cat,"dog-icon":phosphorReact.Dog,"fish-icon":phosphorReact.Fish,"bird-icon":phosphorReact.Bird,"paw-print-icon":phosphorReact.PawPrint},La=classVarianceAuthority.cva("",{variants:{size:{xs:"w-3 h-3",sm:"w-4 h-4",md:"w-5 h-5",lg:"w-6 h-6",xl:"w-8 h-8","2xl":"w-10 h-10","3xl":"w-12 h-12"},weight:{thin:"",light:"",regular:"",bold:"",fill:"",duotone:""},color:{current:"text-current",primary:"text-primary",secondary:"text-secondary-foreground",success:"text-success",warning:"text-warning",error:"text-error",muted:"text-muted-foreground"}},defaultVariants:{size:"md",weight:"regular",color:"current"}}),Fa=r__default.default.forwardRef(({name:t,size:l,weight:e,color:c,className:s,...p},h)=>{let o=i[t];return o?r__default.default.createElement(o,{ref:h,weight:e,className:chunkITRGJNWL_cjs.a(La({size:l,weight:e,color:c}),s),...p}):null});Fa.displayName="Icon";var Aa=Object.keys(i);exports.a=Fa;exports.b=Aa;//# sourceMappingURL=chunk-NC27D5Y3.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-NC27D5Y3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/icon.tsx"],"names":["iconMap","House","User","Gear","MagnifyingGlass","List","X","CaretLeft","CaretRight","CaretUp","CaretDown","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Plus","Minus","Check","XIcon","Trash","PencilSimple","Copy","Download","Upload","Share","Heart","Star","Bookmark","Envelope","Phone","ChatCircle","Bell","BellSlash","Play","Pause","Stop","SpeakerHigh","SpeakerLow","SpeakerX","Camera","Image","VideoCamera","File","Folder","FolderOpen","FileText","FilePdf","FileImage","CheckCircle","XCircle","Warning","Info","Question","Clock","Calendar","Timer","Lock","LockOpen","Eye","EyeSlash","Shield","ShieldCheck","WifiHigh","WifiX","BatteryWarning","Cpu","HardDrive","Sun","Moon","Cloud","CloudRain","CloudSnow","CloudLightning","GithubLogo","TwitterLogo","FacebookLogo","InstagramLogo","LinkedinLogo","YoutubeLogo","ShoppingCart","ShoppingBag","CreditCard","Money","HeartIcon","Activity","Car","Bus","Train","Airplane","Boat","Bicycle","Coffee","Pizza","Hamburger","Basketball","Football","SoccerBall","TennisBall","MusicNote","PlayCircle","PauseCircle","StopCircle","Book","BookOpen","GraduationCap","Lightbulb","Briefcase","Buildings","ChartLine","ChartBar","ChartPie","Wrench","PaintBrush","Code","Terminal","Palette","Wheelchair","Tree","Flower","Leaf","Mountains","Rocket","Planet","StarIcon","MoonIcon","GameController","PuzzlePiece","Gift","Key","MapPin","Compass","Flag","Trophy","Medal","Crown","Sparkle","Lightning","Fire","Snowflake","Umbrella","Anchor","Bug","Butterfly","Cat","Dog","Fish","Bird","PawPrint","Alien","Spaceship","Atom","Flask","TestTube","Syringe","Pill","Skull","Ghost","Scroll","BookmarkIcon","CompassIcon","FlagIcon","TrophyIcon","MedalIcon","CrownIcon","SparkleIcon","ZapIcon","FireIcon","SnowflakeIcon","UmbrellaIcon","AnchorIcon","BugIcon","ButterflyIcon","CatIcon","DogIcon","FishIcon","BirdIcon","PawPrintIcon","iconVariants","cva","Icon","React","name","size","weight","color","className","props","ref","IconComponent","cn","iconNames"],"mappings":"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","file":"chunk-NC27D5Y3.cjs","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n// Import commonly used Phosphor icons\nimport {\n // Navigation\n House,\n User,\n Gear,\n MagnifyingGlass,\n List,\n X,\n CaretLeft,\n CaretRight,\n CaretUp,\n CaretDown,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n ArrowDown,\n\n // Actions\n Plus,\n Minus,\n Check,\n X as XIcon,\n Trash,\n PencilSimple,\n Copy,\n Download,\n Upload,\n Share,\n Heart,\n Star,\n Bookmark,\n\n // Communication\n Envelope,\n Phone,\n ChatCircle,\n Bell,\n BellSlash,\n\n // Media\n Play,\n Pause,\n Stop,\n SpeakerHigh,\n SpeakerLow,\n SpeakerX,\n Camera,\n Image,\n VideoCamera,\n\n // Files\n File,\n Folder,\n FolderOpen,\n FileText,\n FilePdf,\n FileImage,\n\n // Status\n CheckCircle,\n XCircle,\n Warning,\n Info,\n Question,\n\n // Time\n Clock,\n Calendar,\n Timer,\n\n // Security\n Lock,\n LockOpen,\n Eye,\n EyeSlash,\n Shield,\n ShieldCheck,\n\n // Technology\n WifiHigh,\n WifiX,\n BatteryWarning,\n Cpu,\n HardDrive,\n\n // Weather\n Sun,\n Moon,\n Cloud,\n CloudRain,\n CloudSnow,\n CloudLightning,\n\n // Social\n GithubLogo,\n TwitterLogo,\n FacebookLogo,\n InstagramLogo,\n LinkedinLogo,\n YoutubeLogo,\n\n // Shopping\n ShoppingCart,\n ShoppingBag,\n CreditCard,\n Money,\n\n // Health\n Heart as HeartIcon,\n Activity,\n\n // Transportation\n Car,\n Bus,\n Train,\n Airplane,\n Boat,\n Bicycle,\n\n // Food\n Coffee,\n Pizza,\n Hamburger,\n\n // Sports\n Basketball,\n Football,\n SoccerBall,\n TennisBall,\n\n // Music\n MusicNote,\n PlayCircle,\n PauseCircle,\n StopCircle,\n\n // Education\n Book,\n BookOpen,\n GraduationCap,\n Lightbulb,\n\n // Business\n Briefcase,\n Buildings,\n ChartLine,\n ChartBar,\n ChartPie,\n\n // Tools\n Wrench,\n PaintBrush,\n Code,\n Terminal,\n Palette,\n Wheelchair,\n\n // Nature\n Tree,\n Flower,\n Leaf,\n Mountains,\n\n // Space\n Rocket,\n Planet,\n Star as StarIcon,\n Moon as MoonIcon,\n\n // Gaming\n GameController,\n PuzzlePiece,\n\n // Miscellaneous\n Gift,\n Key,\n MapPin,\n Compass,\n Flag,\n Trophy,\n Medal,\n Crown,\n Sparkle,\n Lightning,\n Fire,\n Snowflake,\n Umbrella,\n Anchor,\n Bug,\n Butterfly,\n Cat,\n Dog,\n Fish,\n Bird,\n PawPrint,\n\n // Nostromo themed\n Alien,\n Rocket as Spaceship,\n Atom,\n Flask,\n TestTube,\n Syringe,\n Pill,\n Skull,\n Ghost,\n Scroll,\n Bookmark as BookmarkIcon,\n Compass as CompassIcon,\n Flag as FlagIcon,\n Trophy as TrophyIcon,\n Medal as MedalIcon,\n Crown as CrownIcon,\n Sparkle as SparkleIcon,\n Lightning as ZapIcon,\n Fire as FireIcon,\n Snowflake as SnowflakeIcon,\n Umbrella as UmbrellaIcon,\n Anchor as AnchorIcon,\n Bug as BugIcon,\n Butterfly as ButterflyIcon,\n Cat as CatIcon,\n Dog as DogIcon,\n Fish as FishIcon,\n Bird as BirdIcon,\n PawPrint as PawPrintIcon,\n} from \"phosphor-react\";\n\n// Create a mapping of icon names to components\nconst iconMap: Record<string, React.ElementType> = {\n // Navigation\n house: House,\n // Alias: \"home\" is what people reach for first, and the Icon docs page itself\n // shipped <Icon name=\"home\" /> against a map that only had \"house\".\n home: House,\n user: User,\n settings: Gear,\n search: MagnifyingGlass,\n menu: List,\n x: X,\n \"chevron-left\": CaretLeft,\n \"chevron-right\": CaretRight,\n \"chevron-up\": CaretUp,\n \"chevron-down\": CaretDown,\n \"arrow-left\": ArrowLeft,\n \"arrow-right\": ArrowRight,\n \"arrow-up\": ArrowUp,\n \"arrow-down\": ArrowDown,\n\n // Actions\n plus: Plus,\n minus: Minus,\n check: Check,\n \"x-icon\": XIcon,\n trash: Trash,\n edit: PencilSimple,\n copy: Copy,\n download: Download,\n upload: Upload,\n share: Share,\n heart: Heart,\n star: Star,\n bookmark: Bookmark,\n\n // Communication\n mail: Envelope,\n phone: Phone,\n \"message-circle\": ChatCircle,\n bell: Bell,\n \"bell-slash\": BellSlash,\n\n // Media\n play: Play,\n pause: Pause,\n stop: Stop,\n \"volume-high\": SpeakerHigh,\n \"volume-low\": SpeakerLow,\n \"volume-x\": SpeakerX,\n camera: Camera,\n image: Image,\n video: VideoCamera,\n\n // Files\n file: File,\n folder: Folder,\n \"folder-open\": FolderOpen,\n \"file-text\": FileText,\n \"file-pdf\": FilePdf,\n \"file-image\": FileImage,\n\n // Status\n \"check-circle\": CheckCircle,\n \"x-circle\": XCircle,\n warning: Warning,\n info: Info,\n question: Question,\n\n // Time\n clock: Clock,\n calendar: Calendar,\n timer: Timer,\n\n // Security\n lock: Lock,\n \"lock-open\": LockOpen,\n eye: Eye,\n \"eye-slash\": EyeSlash,\n shield: Shield,\n \"shield-check\": ShieldCheck,\n\n // Technology\n wifi: WifiHigh,\n \"wifi-slash\": WifiX,\n \"battery-warning\": BatteryWarning,\n cpu: Cpu,\n \"hard-drive\": HardDrive,\n\n // Weather\n sun: Sun,\n moon: Moon,\n cloud: Cloud,\n \"cloud-rain\": CloudRain,\n \"cloud-snow\": CloudSnow,\n \"cloud-lightning\": CloudLightning,\n\n // Social\n github: GithubLogo,\n twitter: TwitterLogo,\n facebook: FacebookLogo,\n instagram: InstagramLogo,\n linkedin: LinkedinLogo,\n youtube: YoutubeLogo,\n\n // Shopping\n \"shopping-cart\": ShoppingCart,\n \"shopping-bag\": ShoppingBag,\n \"credit-card\": CreditCard,\n money: Money,\n\n // Health\n \"heart-icon\": HeartIcon,\n activity: Activity,\n\n // Transportation\n car: Car,\n bus: Bus,\n train: Train,\n plane: Airplane,\n ship: Boat,\n bicycle: Bicycle,\n\n // Food\n coffee: Coffee,\n pizza: Pizza,\n hamburger: Hamburger,\n\n // Sports\n basketball: Basketball,\n football: Football,\n soccer: SoccerBall,\n tennis: TennisBall,\n\n // Music\n \"music-note\": MusicNote,\n \"play-circle\": PlayCircle,\n \"pause-circle\": PauseCircle,\n \"stop-circle\": StopCircle,\n\n // Education\n book: Book,\n \"book-open\": BookOpen,\n \"graduation-cap\": GraduationCap,\n lightbulb: Lightbulb,\n\n // Business\n briefcase: Briefcase,\n building: Buildings,\n \"chart-line\": ChartLine,\n \"chart-bar\": ChartBar,\n \"chart-pie\": ChartPie,\n\n // Tools\n wrench: Wrench,\n \"paint-brush\": PaintBrush,\n\n // Developer and design vocabulary the set was missing - the Features example\n // asked for code/accessibility/palette and got nothing back.\n code: Code,\n terminal: Terminal,\n palette: Palette,\n accessibility: Wheelchair,\n\n // Nature\n tree: Tree,\n flower: Flower,\n leaf: Leaf,\n mountain: Mountains,\n\n // Space\n rocket: Rocket,\n planet: Planet,\n \"star-icon\": StarIcon,\n \"moon-icon\": MoonIcon,\n\n // Gaming\n \"game-controller\": GameController,\n puzzle: PuzzlePiece,\n\n // Miscellaneous\n gift: Gift,\n key: Key,\n \"map-pin\": MapPin,\n compass: Compass,\n flag: Flag,\n trophy: Trophy,\n medal: Medal,\n crown: Crown,\n sparkle: Sparkle,\n zap: Lightning,\n fire: Fire,\n snowflake: Snowflake,\n umbrella: Umbrella,\n anchor: Anchor,\n bug: Bug,\n butterfly: Butterfly,\n cat: Cat,\n dog: Dog,\n fish: Fish,\n bird: Bird,\n \"paw-print\": PawPrint,\n\n // Nostromo themed\n alien: Alien,\n spaceship: Spaceship,\n atom: Atom,\n flask: Flask,\n \"test-tube\": TestTube,\n syringe: Syringe,\n pill: Pill,\n skull: Skull,\n ghost: Ghost,\n scroll: Scroll,\n \"bookmark-icon\": BookmarkIcon,\n \"compass-icon\": CompassIcon,\n \"flag-icon\": FlagIcon,\n \"trophy-icon\": TrophyIcon,\n \"medal-icon\": MedalIcon,\n \"crown-icon\": CrownIcon,\n \"sparkle-icon\": SparkleIcon,\n \"zap-icon\": ZapIcon,\n \"fire-icon\": FireIcon,\n \"snowflake-icon\": SnowflakeIcon,\n \"umbrella-icon\": UmbrellaIcon,\n \"anchor-icon\": AnchorIcon,\n \"bug-icon\": BugIcon,\n \"butterfly-icon\": ButterflyIcon,\n \"cat-icon\": CatIcon,\n \"dog-icon\": DogIcon,\n \"fish-icon\": FishIcon,\n \"bird-icon\": BirdIcon,\n \"paw-print-icon\": PawPrintIcon,\n} as const;\n\nexport type IconName = keyof typeof iconMap;\n\nconst iconVariants = cva(\"\", {\n variants: {\n size: {\n xs: \"w-3 h-3\",\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n xl: \"w-8 h-8\",\n \"2xl\": \"w-10 h-10\",\n \"3xl\": \"w-12 h-12\",\n },\n weight: {\n thin: \"\",\n light: \"\",\n regular: \"\",\n bold: \"\",\n fill: \"\",\n duotone: \"\",\n },\n color: {\n current: \"text-current\",\n primary: \"text-primary\",\n secondary: \"text-secondary-foreground\",\n success: \"text-success\",\n warning: \"text-warning\",\n error: \"text-error\",\n muted: \"text-muted-foreground\",\n },\n },\n defaultVariants: {\n size: \"md\",\n weight: \"regular\",\n color: \"current\",\n },\n});\n\nexport interface IconProps\n extends\n Omit<React.HTMLAttributes<SVGSVGElement>, \"color\">,\n VariantProps<typeof iconVariants> {\n name: IconName;\n className?: string;\n}\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ name, size, weight, color, className, ...props }, ref) => {\n const IconComponent = iconMap[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found in iconMap`);\n return null;\n }\n\n return (\n <IconComponent\n ref={ref}\n weight={\n weight as \"thin\" | \"light\" | \"regular\" | \"bold\" | \"fill\" | \"duotone\"\n }\n className={cn(iconVariants({ size, weight, color }), className)}\n {...props}\n />\n );\n },\n);\n\nIcon.displayName = \"Icon\";\n\n// Export icon names for TypeScript autocomplete\nexport const iconNames = Object.keys(iconMap) as IconName[];\n\n// Note: For additional icons, import directly from 'phosphor-react' to avoid bundling unused icons\n// Example: import { CustomIcon } from 'phosphor-react'\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var e__namespace=/*#__PURE__*/_interopNamespace(e);var v=classVarianceAuthority.cva("peer h-4 w-4 shrink-0 rounded-sm border border-input bg-background shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200",{variants:{variant:{default:"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary",error:"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive",success:"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500"},size:{default:"h-4 w-4",sm:"h-3 w-3",lg:"h-5 w-5"}},defaultVariants:{variant:"default",size:"default"}}),k=e__namespace.forwardRef(({className:o,error:t,helperText:s,label:d,required:c,id:n,variant:b,size:l,...u},p)=>{let m=e__namespace.useId(),r=n||m,i=s?`${r}-helper`:void 0,f=t?`${r}-error`:void 0;return e__namespace.createElement("div",{className:"space-y-2"},e__namespace.createElement("div",{className:"flex items-center space-x-3"},e__namespace.createElement("input",{type:"checkbox",className:chunkITRGJNWL_cjs.a(v({variant:t?"error":b||"default",size:l,className:o})),ref:p,id:r,"aria-describedby":chunkITRGJNWL_cjs.a(i,f)||void 0,"aria-invalid":t,required:c,...u}),d&&e__namespace.createElement("label",{htmlFor:r,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},d,c&&e__namespace.createElement("span",{className:"text-error-500 ml-1"},"*"))),s&&e__namespace.createElement("p",{id:i,className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",t&&"text-destructive")},s))});k.displayName="Checkbox";exports.a=v;exports.b=k;//# sourceMappingURL=chunk-NPSIDFOF.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-NPSIDFOF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/checkbox.tsx"],"names":["checkboxVariants","cva","Checkbox","e","className","error","helperText","label","required","id","variant","size","props","ref","generatedId","checkboxId","helperTextId","errorId","cn"],"mappings":"ufAIA,IAAMA,CAAAA,CAAmBC,0BAAAA,CACvB,+WAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CACE,wGACF,KAAA,CACE,+HAAA,CACF,OAAA,CACE,+HACJ,EACA,IAAA,CAAM,CACJ,OAAA,CAAS,SAAA,CACT,GAAI,SAAA,CACJ,EAAA,CAAI,SACN,CACF,EACA,eAAA,CAAiB,CACf,QAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CA0BMC,CAAAA,CAAiBC,wBACrB,CACE,CACE,SAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,GAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,EACAC,CAAAA,GACG,CACH,IAAMC,CAAAA,CAAoBX,oBAAM,CAC1BY,CAAAA,CAAaN,CAAAA,EAAMK,CAAAA,CACnBE,EAAeV,CAAAA,CAAa,CAAA,EAAGS,CAAU,CAAA,OAAA,CAAA,CAAY,MAAA,CACrDE,EAAUZ,CAAAA,CAAQ,CAAA,EAAGU,CAAU,CAAA,MAAA,CAAA,CAAW,OAKhD,OACEZ,YAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aACbA,YAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BAAA,CAAA,CACbA,2BAAC,OAAA,CAAA,CACC,IAAA,CAAK,WACL,SAAA,CAAWe,mBAAAA,CACTlB,EAAiB,CAAE,OAAA,CARLK,CAAAA,CAAQ,OAAA,CAAUK,GAAW,SAAA,CAQE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAP,CAAU,CAAC,CAChE,CAAA,CACA,GAAA,CAAKS,EACL,EAAA,CAAIE,CAAAA,CACJ,mBAAkBG,mBAAAA,CAAGF,CAAAA,CAAcC,CAAO,CAAA,EAAK,MAAA,CAC/C,cAAA,CAAcZ,CAAAA,CACd,SAAUG,CAAAA,CACT,GAAGI,CAAAA,CACN,CAAA,CACCL,GACCJ,YAAA,CAAA,aAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAASY,CAAAA,CACT,UAAU,4FAAA,CAAA,CAETR,CAAAA,CACAC,GAAYL,YAAA,CAAA,aAAA,CAAC,MAAA,CAAA,CAAK,UAAU,qBAAA,CAAA,CAAsB,GAAC,CACtD,CAEJ,EACCG,CAAAA,EACCH,YAAA,CAAA,aAAA,CAAC,KACC,EAAA,CAAIa,CAAAA,CACJ,UAAWE,mBAAAA,CACT,+BAAA,CACAb,CAAAA,EAAS,kBACX,GAECC,CACH,CAEJ,CAEJ,CACF,EACAJ,EAAS,WAAA,CAAc,UAAA","file":"chunk-NPSIDFOF.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst checkboxVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-input bg-background shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200\",\n {\n variants: {\n variant: {\n default:\n \"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n error:\n \"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive\",\n success:\n \"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500\",\n },\n size: {\n default: \"h-4 w-4\",\n sm: \"h-3 w-3\",\n lg: \"h-5 w-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface CheckboxProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof checkboxVariants> {\n /**\n * Whether the checkbox is in an error state\n * @default false\n */\n error?: boolean;\n /**\n * Helper text to display below the checkbox\n */\n helperText?: string;\n /**\n * Label text for the checkbox\n */\n label?: string;\n /**\n * Whether the checkbox is required\n * @default false\n */\n required?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n error,\n helperText,\n label,\n required,\n id,\n variant,\n size,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n const helperTextId = helperText ? `${checkboxId}-helper` : undefined;\n const errorId = error ? `${checkboxId}-error` : undefined;\n\n // Determine variant based on error state\n const checkboxVariant = error ? \"error\" : variant || \"default\";\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-3\">\n <input\n type=\"checkbox\"\n className={cn(\n checkboxVariants({ variant: checkboxVariant, size, className }),\n )}\n ref={ref}\n id={checkboxId}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n required={required}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n {required && <span className=\"text-error-500 ml-1\">*</span>}\n </label>\n )}\n </div>\n {helperText && (\n <p\n id={helperTextId}\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-destructive\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import e from'react';import {cva}from'class-variance-authority';var c=cva("animate-pulse rounded-md bg-neutral-200",{variants:{variant:{default:"bg-neutral-200",light:"bg-muted/50",dark:"bg-muted",primary:"bg-primary/10",success:"bg-success-200",warning:"bg-warning-200",error:"bg-error-200"},size:{xs:"h-2",sm:"h-3",md:"h-4",lg:"h-6",xl:"h-8","2xl":"h-12","3xl":"h-16"},shape:{rectangle:"rounded-md",circle:"rounded-full",square:"rounded-lg",pill:"rounded-full"},animation:{pulse:"animate-pulse",wave:"animate-wave",none:"animate-none"}},defaultVariants:{variant:"default",size:"md",shape:"rectangle",animation:"pulse"}}),N=e.forwardRef(({className:n,children:s,width:a$1,height:r,variant:t="default",size:o="md",shape:i="rectangle",animation:d="pulse",loading:u=true,...f},h)=>{if(!u&&s)return e.createElement(e.Fragment,null,s);let p={width:a$1||void 0,height:r||void 0};return e.createElement("div",{ref:h,className:a(c({variant:t,size:o,shape:i,animation:d}),n),style:p,"aria-label":"Loading content",role:"status",...f})});N.displayName="Skeleton";var l=a$1(N),k=e.forwardRef(({className:n,lines:s=3,lastLineWidth:a$1="75%",spacing:r="md",variant:t="default",animation:o="pulse",loading:i=true,...d},u)=>i?e.createElement("div",{ref:u,className:a("space-y-2",{none:"space-y-0",sm:"space-y-1",md:"space-y-2",lg:"space-y-3"}[r],n),"aria-label":"Loading text content",role:"status",...d},Array.from({length:s},(h,p)=>e.createElement("div",{key:p,className:a(c({variant:t,animation:o}),"h-4 rounded-md",p===s-1&&"w-3/4"),style:{width:p===s-1?a$1:"100%"}}))):null);k.displayName="SkeletonText";var v=e.forwardRef(({className:n,size:s="md",variant:a$1="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={xs:"h-6 w-6",sm:"h-8 w-8",md:"h-10 w-10",lg:"h-12 w-12",xl:"h-16 w-16","2xl":"h-20 w-20"};return e.createElement("div",{ref:i,className:a(c({variant:a$1,animation:r}),"rounded-full",d[s],n),"aria-label":"Loading avatar",role:"status",...o})});v.displayName="SkeletonAvatar";var g=e.forwardRef(({className:n,size:s="md",variant:a$1="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={sm:"h-8 px-3",md:"h-10 px-4",lg:"h-12 px-6"},u={default:"bg-neutral-200",primary:"bg-primary/10",secondary:"bg-secondary",outline:"bg-muted/50 border border-border",ghost:"bg-muted/50"},f=a$1||"default";return e.createElement("div",{ref:i,className:a(c({animation:r}),"rounded-md",d[s],u[f],n),"aria-label":"Loading button",role:"status",...o})});g.displayName="SkeletonButton";var y=e.forwardRef(({className:n,showAvatar:s=true,showActions:a$1=true,variant:r="default",animation:t="pulse",loading:o=true,...i},d)=>o?e.createElement("div",{ref:d,className:a("p-6 border border-border rounded-lg bg-card",n),"aria-label":"Loading card content",role:"status",...i},e.createElement("div",{className:"space-y-4"},e.createElement("div",{className:"flex items-center space-x-3"},s&&e.createElement(v,{size:"md",variant:r,animation:t}),e.createElement("div",{className:"flex-1 space-y-2"},e.createElement(l,{className:"h-4 w-3/4",variant:r,animation:t}),e.createElement(l,{className:"h-3 w-1/2",variant:r,animation:t}))),e.createElement("div",{className:"space-y-2"},e.createElement(l,{className:"h-4 w-full",variant:r,animation:t}),e.createElement(l,{className:"h-4 w-5/6",variant:r,animation:t}),e.createElement(l,{className:"h-4 w-4/5",variant:r,animation:t})),a$1&&e.createElement("div",{className:"flex space-x-2 pt-4"},e.createElement(g,{size:"sm",animation:t}),e.createElement(g,{size:"sm",animation:t})))):null);y.displayName="SkeletonCard";var S=e.forwardRef(({className:n,variant:s="default",animation:a$1="pulse",loading:r=true,...t},o)=>r?e.createElement("div",{ref:o,className:a("space-y-3",n),"aria-label":"Loading table content",role:"status",...t},e.createElement("div",{className:"grid grid-cols-4 gap-4"},e.createElement(l,{className:"h-4",variant:s,animation:a$1}),e.createElement(l,{className:"h-4",variant:s,animation:a$1}),e.createElement(l,{className:"h-4",variant:s,animation:a$1}),e.createElement(l,{className:"h-4",variant:s,animation:a$1})),Array.from({length:5},(i,d)=>e.createElement("div",{key:d,className:"grid grid-cols-4 gap-4"},e.createElement(l,{className:"h-4",variant:s,animation:a$1}),e.createElement(l,{className:"h-4",variant:s,animation:a$1}),e.createElement(l,{className:"h-4",variant:s,animation:a$1}),e.createElement(l,{className:"h-4",variant:s,animation:a$1})))):null);S.displayName="SkeletonTable";var w=e.forwardRef(({className:n,items:s=5,variant:a$1="default",animation:r="pulse",loading:t=true,...o},i)=>t?e.createElement("div",{ref:i,className:a("space-y-3",n),"aria-label":"Loading list content",role:"status",...o},Array.from({length:s},(d,u)=>e.createElement("div",{key:u,className:"flex items-center space-x-3"},e.createElement(v,{size:"sm",variant:a$1,animation:r}),e.createElement("div",{className:"flex-1 space-y-2"},e.createElement(l,{className:"h-4 w-3/4",variant:a$1,animation:r}),e.createElement(l,{className:"h-3 w-1/2",variant:a$1,animation:r}))))):null);w.displayName="SkeletonList";export{c as a,l as b,k as c,v as d,g as e,y as f,S as g,w as h};//# sourceMappingURL=chunk-QKM5LPRW.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-QKM5LPRW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/skeleton.tsx"],"names":["skeletonVariants","cva","SkeletonComponent","React","className","children","width","height","variant","size","shape","animation","loading","props","ref","style","cn","Skeleton","memo","SkeletonText","lines","lastLineWidth","spacing","_","index","SkeletonAvatar","sizeClasses","SkeletonButton","variantClasses","finalVariant","SkeletonCard","showAvatar","showActions","SkeletonTable","SkeletonList","items"],"mappings":"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","file":"chunk-QKM5LPRW.js","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Skeleton variants\nconst skeletonVariants = cva(\"animate-pulse rounded-md bg-neutral-200\", {\n variants: {\n variant: {\n default: \"bg-neutral-200\",\n light: \"bg-muted/50\",\n dark: \"bg-muted\",\n primary: \"bg-primary/10\",\n success: \"bg-success-200\",\n warning: \"bg-warning-200\",\n error: \"bg-error-200\",\n },\n size: {\n xs: \"h-2\",\n sm: \"h-3\",\n md: \"h-4\",\n lg: \"h-6\",\n xl: \"h-8\",\n \"2xl\": \"h-12\",\n \"3xl\": \"h-16\",\n },\n shape: {\n rectangle: \"rounded-md\",\n circle: \"rounded-full\",\n square: \"rounded-lg\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"animate-wave\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n shape: \"rectangle\",\n animation: \"pulse\",\n },\n});\n\n// Types\nexport interface SkeletonProps extends VariantProps<typeof skeletonVariants> {\n className?: string;\n children?: React.ReactNode;\n width?: string | number;\n height?: string | number;\n lines?: number;\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n loading?: boolean;\n}\n\nexport interface SkeletonTextProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n lines?: number;\n lastLineWidth?: string | number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n}\n\nexport interface SkeletonButtonProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\" | \"variant\"\n> {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"primary\" | \"secondary\" | \"outline\" | \"ghost\";\n}\n\nexport interface SkeletonCardProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n showAvatar?: boolean;\n showActions?: boolean;\n}\n\n// Main Skeleton Component\nconst SkeletonComponent = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n children,\n width,\n height,\n variant = \"default\",\n size = \"md\",\n shape = \"rectangle\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n const style = {\n width: width || undefined,\n height: height || undefined,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, size, shape, animation }),\n className,\n )}\n style={style}\n aria-label=\"Loading content\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonComponent.displayName = \"Skeleton\";\n\n// Memoize Skeleton for performance optimization\nexport const Skeleton = memo(SkeletonComponent) as typeof SkeletonComponent;\n\n// Skeleton Text Component\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n className,\n lines = 3,\n lastLineWidth = \"75%\",\n spacing = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const spacingClasses = {\n none: \"space-y-0\",\n sm: \"space-y-1\",\n md: \"space-y-2\",\n lg: \"space-y-3\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-2\", spacingClasses[spacing], className)}\n aria-label=\"Loading text content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: lines }, (_, index) => (\n <div\n key={index}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"h-4 rounded-md\",\n index === lines - 1 && \"w-3/4\",\n )}\n style={{\n width: index === lines - 1 ? lastLineWidth : \"100%\",\n }}\n />\n ))}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nexport const SkeletonAvatar = React.forwardRef<\n HTMLDivElement,\n SkeletonAvatarProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"rounded-full\",\n sizeClasses[size],\n className,\n )}\n aria-label=\"Loading avatar\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nexport const SkeletonButton = React.forwardRef<\n HTMLDivElement,\n SkeletonButtonProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n sm: \"h-8 px-3\",\n md: \"h-10 px-4\",\n lg: \"h-12 px-6\",\n };\n\n const variantClasses = {\n default: \"bg-neutral-200\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary\",\n outline: \"bg-muted/50 border border-border\",\n ghost: \"bg-muted/50\",\n };\n\n const finalVariant = variant || \"default\";\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ animation }),\n \"rounded-md\",\n sizeClasses[size],\n variantClasses[finalVariant],\n className,\n )}\n aria-label=\"Loading button\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Card Component\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n className,\n showAvatar = true,\n showActions = true,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"p-6 border border-border rounded-lg bg-card\", className)}\n aria-label=\"Loading card content\"\n role=\"status\"\n {...props}\n >\n <div className=\"space-y-4\">\n {/* Header with avatar and title */}\n <div className=\"flex items-center space-x-3\">\n {showAvatar && (\n <SkeletonAvatar\n size=\"md\"\n variant={variant}\n animation={animation}\n />\n )}\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n\n {/* Content */}\n <div className=\"space-y-2\">\n <Skeleton\n className=\"h-4 w-full\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-5/6\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-4/5\"\n variant={variant}\n animation={animation}\n />\n </div>\n\n {/* Actions */}\n {showActions && (\n <div className=\"flex space-x-2 pt-4\">\n <SkeletonButton size=\"sm\" animation={animation} />\n <SkeletonButton size=\"sm\" animation={animation} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Table Component\nexport const SkeletonTable = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading table content\"\n role=\"status\"\n {...props}\n >\n {/* Header */}\n <div className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n\n {/* Rows */}\n {Array.from({ length: 5 }, (_, index) => (\n <div key={index} className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonTable.displayName = \"SkeletonTable\";\n\n// Skeleton List Component\nexport const SkeletonList = React.forwardRef<\n HTMLDivElement,\n SkeletonProps & { items?: number }\n>(\n (\n {\n className,\n items = 5,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading list content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: items }, (_, index) => (\n <div key={index} className=\"flex items-center space-x-3\">\n <SkeletonAvatar size=\"sm\" variant={variant} animation={animation} />\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonList.displayName = \"SkeletonList\";\n\n// Export variants for external use\nexport { skeletonVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';import {House,CaretRight}from'phosphor-react';var x=cva("flex items-center space-x-1 text-sm text-muted-foreground",{variants:{variant:{default:"text-muted-foreground",compact:"text-xs"},separator:{default:"",slash:"",arrow:"",dot:""}},defaultVariants:{variant:"default",separator:"default"}}),y=cva("flex items-center",{variants:{variant:{default:"",current:"text-foreground font-medium",link:"hover:text-foreground transition-colors"}},defaultVariants:{variant:"default"}}),g=cva("flex-shrink-0 text-muted-foreground",{variants:{variant:{default:"mx-1",compact:"mx-0.5"}},defaultVariants:{variant:"default"}}),E=e.forwardRef(({className:a$1,variant:r,separator:t="default",items:l,showHome:d=false,homeHref:N="/",onItemClick:f,children:L,...p},b)=>{let h=()=>{switch(t){case "slash":return "/";case "arrow":return "\u2192";case "dot":return "\u2022";default:return e.createElement(CaretRight,{className:"h-4 w-4"})}},B=(n,o)=>{f&&f(n,o);},v=(n,o,i)=>{let c=n.current||i,m=e.createElement("span",{className:a(y({variant:c?"current":n.href?"link":"default"}))},n.label);return n.href&&!c?e.createElement("a",{href:n.href,className:"hover:text-foreground transition-colors",onClick:()=>B(n,o)},m):n.href&&c?e.createElement("a",{href:n.href,"aria-current":"page","aria-disabled":"true",tabIndex:-1,className:"hover:text-foreground transition-colors pointer-events-none"},m):e.createElement("span",{"aria-current":c?"page":void 0,className:c?"text-foreground font-medium":""},m)};return l?e.createElement("nav",{ref:b,"aria-label":"Breadcrumb",className:a(x({variant:r,separator:t}),a$1),...p},e.createElement("ol",{className:"flex items-center space-x-1"},d&&e.createElement(e.Fragment,null,e.createElement("li",null,e.createElement("a",{href:N,className:"hover:text-foreground transition-colors","aria-label":"Home"},e.createElement(House,{className:"h-4 w-4"}))),e.createElement("li",null,e.createElement("span",{role:"presentation","aria-hidden":"true",className:a(g({variant:r}))},h()))),l.map((n,o)=>{let i=o===l.length-1;return e.createElement("li",{key:o,className:"flex items-center"},v(n,o,i),!i&&e.createElement("span",{role:"presentation","aria-hidden":"true",className:a(g({variant:r}))},h()))}))):e.createElement("nav",{ref:b,"aria-label":"Breadcrumb",className:a(x({variant:r,separator:t}),a$1),...p},L)});E.displayName="Breadcrumb";var M=e.forwardRef(({className:a$1,...r},t)=>e.createElement("ol",{ref:t,className:a("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",a$1),...r}));M.displayName="BreadcrumbList";var w=e.forwardRef(({className:a$1,...r},t)=>e.createElement("li",{ref:t,className:a("inline-flex items-center gap-1.5",a$1),...r}));w.displayName="BreadcrumbItem";var T=e.forwardRef(({asChild:a$1,className:r,...t},l)=>e.createElement(a$1?e.Fragment:"a",{ref:l,className:a("transition-colors hover:text-foreground",r),...t}));T.displayName="BreadcrumbLink";var k=e.forwardRef(({className:a$1,...r},t)=>e.createElement("span",{ref:t,role:"link","aria-disabled":"true","aria-current":"page",className:a("font-normal text-foreground",a$1),...r}));k.displayName="BreadcrumbPage";var C=({children:a$1,className:r,...t})=>e.createElement("li",{role:"presentation","aria-hidden":"true",className:a("[&>svg]:size-3.5",r),...t},a$1);C.displayName="BreadcrumbSeparator";var V=({className:a$1,...r})=>e.createElement("span",{role:"presentation","aria-hidden":"true",className:a("flex h-9 w-9 items-center justify-center",a$1),...r},e.createElement("span",{className:"sr-only"},"More"),e.createElement("span",null,"\u22EF"));V.displayName="BreadcrumbEllipsis";export{x as a,y as b,g as c,E as d,M as e,w as f,T as g,k as h,C as i,V as j};//# sourceMappingURL=chunk-SVWQWRPZ.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-SVWQWRPZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/breadcrumb.tsx"],"names":["breadcrumbVariants","cva","breadcrumbItemVariants","breadcrumbSeparatorVariants","Breadcrumb","className","variant","separator","items","showHome","homeHref","onItemClick","children","props","ref","getSeparator","CaretRight","handleItemClick","item","index","renderItem","isLast","isCurrent","itemContent","cn","House","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","asChild","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis"],"mappings":"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","file":"chunk-SVWQWRPZ.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { CaretRight, House } from \"phosphor-react\";\n\nconst breadcrumbVariants = cva(\n \"flex items-center space-x-1 text-sm text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n compact: \"text-xs\",\n },\n separator: {\n default: \"\",\n slash: \"\",\n arrow: \"\",\n dot: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n separator: \"default\",\n },\n },\n);\n\nconst breadcrumbItemVariants = cva(\"flex items-center\", {\n variants: {\n variant: {\n default: \"\",\n current: \"text-foreground font-medium\",\n link: \"hover:text-foreground transition-colors\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\nconst breadcrumbSeparatorVariants = cva(\"flex-shrink-0 text-muted-foreground\", {\n variants: {\n variant: {\n default: \"mx-1\",\n compact: \"mx-0.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\nexport interface BreadcrumbEntry {\n label: string;\n href?: string;\n current?: boolean;\n}\n\nexport interface BreadcrumbProps\n extends\n React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof breadcrumbVariants> {\n /**\n * Data-driven mode. Omit it to compose `BreadcrumbList` / `BreadcrumbItem` /\n * `BreadcrumbLink` as children instead - those sub-components were exported\n * from the start but `items` was required, so the composable form every\n * example used threw on `items.map`.\n */\n items?: BreadcrumbEntry[];\n separator?: \"default\" | \"slash\" | \"arrow\" | \"dot\";\n showHome?: boolean;\n homeHref?: string;\n onItemClick?: (item: BreadcrumbEntry, index: number) => void;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n (\n {\n className,\n variant,\n separator = \"default\",\n items,\n showHome = false,\n homeHref = \"/\",\n onItemClick,\n children,\n ...props\n },\n ref,\n ) => {\n const getSeparator = () => {\n switch (separator) {\n case \"slash\":\n return \"/\";\n case \"arrow\":\n return \"→\";\n case \"dot\":\n return \"•\";\n default:\n return <CaretRight className=\"h-4 w-4\" />;\n }\n };\n\n const handleItemClick = (item: BreadcrumbEntry, index: number) => {\n if (onItemClick) {\n onItemClick(item, index);\n }\n };\n\n const renderItem = (\n item: BreadcrumbEntry,\n index: number,\n isLast: boolean,\n ) => {\n const isCurrent = item.current || isLast;\n const itemContent = (\n <span\n className={cn(\n breadcrumbItemVariants({\n variant: isCurrent ? \"current\" : item.href ? \"link\" : \"default\",\n }),\n )}\n >\n {item.label}\n </span>\n );\n\n if (item.href && !isCurrent) {\n return (\n <a\n href={item.href}\n className=\"hover:text-foreground transition-colors\"\n onClick={() => handleItemClick(item, index)}\n >\n {itemContent}\n </a>\n );\n }\n\n if (item.href && isCurrent) {\n return (\n <a\n href={item.href}\n aria-current=\"page\"\n aria-disabled=\"true\"\n tabIndex={-1}\n className=\"hover:text-foreground transition-colors pointer-events-none\"\n >\n {itemContent}\n </a>\n );\n }\n\n return (\n <span\n aria-current={isCurrent ? \"page\" : undefined}\n className={isCurrent ? \"text-foreground font-medium\" : \"\"}\n >\n {itemContent}\n </span>\n );\n };\n\n // Composable mode: the caller supplies the structure, so render it as-is.\n if (!items) {\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(breadcrumbVariants({ variant, separator }), className)}\n {...props}\n >\n {children}\n </nav>\n );\n }\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(breadcrumbVariants({ variant, separator }), className)}\n {...props}\n >\n <ol className=\"flex items-center space-x-1\">\n {showHome && (\n <>\n <li>\n <a\n href={homeHref}\n className=\"hover:text-foreground transition-colors\"\n aria-label=\"Home\"\n >\n <House className=\"h-4 w-4\" />\n </a>\n </li>\n <li>\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(breadcrumbSeparatorVariants({ variant }))}\n >\n {getSeparator()}\n </span>\n </li>\n </>\n )}\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={index} className=\"flex items-center\">\n {renderItem(item, index, isLast)}\n {!isLast && (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(breadcrumbSeparatorVariants({ variant }))}\n >\n {getSeparator()}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n },\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\n// Individual components for more flexibility\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.HTMLAttributes<HTMLOListElement>\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.HTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n asChild?: boolean;\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? React.Fragment : \"a\";\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n );\n});\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <span className=\"sr-only\">More</span>\n <span>⋯</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n breadcrumbVariants,\n breadcrumbItemVariants,\n breadcrumbSeparatorVariants,\n};\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a as a$2}from'./chunk-COXN6XBA.js';import {a as a$1}from'./chunk-AC2JBXHQ.js';import a,{useState,useRef,useCallback,useEffect}from'react';import {cva}from'class-variance-authority';var Y=cva("absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200",{variants:{variant:{default:"bg-popover text-popover-foreground border border-border",light:"bg-popover text-popover-foreground border border-border",dark:"bg-popover text-popover-foreground border border-border",success:"bg-success text-success-foreground",warning:"bg-warning text-warning-foreground",error:"bg-destructive text-destructive-foreground",info:"bg-info text-info-foreground"},size:{sm:"text-xs px-2 py-1",md:"text-sm px-3 py-2",lg:"text-base px-4 py-3"},placement:{top:"bottom-full left-1/2 -translate-x-1/2 mb-2","top-start":"bottom-full left-0 mb-2","top-end":"bottom-full right-0 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2","bottom-start":"top-full left-0 mt-2","bottom-end":"top-full right-0 mt-2",left:"right-full top-1/2 -translate-y-1/2 mr-2","left-start":"right-full top-0 mr-2","left-end":"right-full bottom-0 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2","right-start":"left-full top-0 ml-2","right-end":"left-full bottom-0 ml-2"}},defaultVariants:{variant:"default",size:"md",placement:"top"}}),Z=cva("absolute w-2 h-2 rotate-45",{variants:{variant:{default:"bg-popover border border-border",light:"bg-popover border border-border",dark:"bg-popover border border-border",success:"bg-success-500",warning:"bg-warning-500",error:"bg-destructive",info:"bg-info-500"},placement:{top:"top-full left-1/2 -translate-x-1/2 -translate-y-1/2","top-start":"top-full left-4 -translate-y-1/2","top-end":"top-full right-4 -translate-y-1/2",bottom:"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2","bottom-start":"bottom-full left-4 translate-y-1/2","bottom-end":"bottom-full right-4 translate-y-1/2",left:"left-full top-1/2 -translate-x-1/2 -translate-y-1/2","left-start":"left-full top-4 -translate-x-1/2","left-end":"left-full bottom-4 -translate-x-1/2",right:"right-full top-1/2 translate-x-1/2 -translate-y-1/2","right-start":"right-full top-4 translate-x-1/2","right-end":"right-full bottom-4 translate-x-1/2"}},defaultVariants:{variant:"default",placement:"top"}}),O=a.createContext(void 0),$=()=>{let u=a.useContext(O);if(!u)throw new Error("Tooltip components must be used within a Tooltip");return u},q=a.forwardRef(({children:u,content:h,trigger:T="hover",open:i,onOpenChange:d,delayDuration:e=700,skipDelayDuration:y=300,disabled:f=false,className:E,contentClassName:s,sideOffset:C=4,alignOffset:M=0,avoidCollisions:R=true,collisionBoundary:w,collisionPadding:o=8,hideWhenDetached:x=false,sticky:D="partial",updatePositionDeps:L,closeOnBlur:H=true,...v},c)=>{let[N,t]=useState(false),r=useRef(null),g=useRef(null),l=i!==void 0,n=l?i:N,p=useCallback(_=>{f||(l||t(_),d?.(_));},[f,l,d]),m=useCallback(()=>{r.current!=null&&(clearTimeout(r.current),r.current=null),g.current!=null&&(clearTimeout(g.current),g.current=null);},[]),W=useCallback(()=>{m(),p(true);},[m,p]),B=useCallback(()=>{m(),p(false);},[m,p]),V=useCallback(()=>{m(),!f&&(e>0?r.current=window.setTimeout(()=>{p(true);},e):p(true));},[m,f,e,p]),z=useCallback(()=>{m(),y>0?g.current=window.setTimeout(()=>{p(false);},y):p(false);},[m,y,p]),G=useCallback(()=>{n?z():V();},[n,V,z]),J=useCallback(()=>{n?B():W();},[n,W,B]);useEffect(()=>()=>{m();},[m]);let Q={open:n,setOpen:p,trigger:T,delayDuration:e,skipDelayDuration:y,openNow:W,closeNow:B,openWithDelay:V,closeWithDelay:z,toggleWithDelay:G,toggleNow:J,closeOnBlur:H},U=n===true&&h!==void 0;return a.createElement(O.Provider,{value:Q},a.createElement("div",{ref:c,className:a$1("relative inline-block",E),"data-open":n,...v},u,U?a.createElement(F,{className:s||"",sideOffset:C,alignOffset:M,avoidCollisions:R,collisionBoundary:w||null,collisionPadding:o,hideWhenDetached:x,sticky:D,updatePositionDeps:L||[],variant:v.variant,size:v.size,placement:v.placement},h):null))});q.displayName="Tooltip";var A=a.forwardRef(({children:u,asChild:h=true,className:T,...i},d)=>{let{trigger:e,openNow:y,closeNow:f,openWithDelay:E,closeWithDelay:s,toggleNow:C,closeOnBlur:M}=$(),R=useRef(null),w={ref:o=>{R.current=o,typeof d=="function"?d(o):d&&(d.current=o);},className:a$1(T),"data-tooltip-trigger":true,onMouseEnter:o=>{i.onMouseEnter?.(o),e==="hover"&&E();},onMouseLeave:o=>{i.onMouseLeave?.(o),e==="hover"&&s();},onPointerEnter:o=>{i.onPointerEnter?.(o),e==="hover"&&E();},onPointerLeave:o=>{i.onPointerLeave?.(o),e==="hover"&&s();},onClick:o=>{i.onClick?.(o),e==="click"&&C();},onFocus:o=>{i.onFocus?.(o),e==="focus"&&y();},onBlur:o=>{i.onBlur?.(o),M&&f();},onKeyDown:o=>{i.onKeyDown?.(o),o.key==="Escape"&&f();}};return h&&a.isValidElement(u)?a.cloneElement(u,{...u.props||{},...w}):a.createElement("span",{...w,tabIndex:e==="focus"?0:void 0,role:e==="click"?"button":void 0},u)});A.displayName="TooltipTrigger";var F=a.forwardRef(({children:u,variant:h="default",size:T="md",placement:i="top",className:d,sideOffset:e=4,alignOffset:y=0,avoidCollisions:f=true,collisionBoundary:E,collisionPadding:s=8,hideWhenDetached:C=false,sticky:M="partial",updatePositionDeps:R,...w},o)=>{let x=a.useContext(O)?.open??true,D=useRef(null),[L,H]=useState({top:0,left:0}),v=useCallback(()=>{if(!D.current)return;let c=D.current,N=c.parentElement?.querySelector("[data-tooltip-trigger]");if(!N)return;let t=N.getBoundingClientRect(),r=c.getBoundingClientRect(),g={width:window.innerWidth,height:window.innerHeight},l=0,n=0;switch(i){case "top":l=t.top-r.height-e,n=t.left+t.width/2-r.width/2;break;case "top-start":l=t.top-r.height-e,n=t.left;break;case "top-end":l=t.top-r.height-e,n=t.right-r.width;break;case "bottom":l=t.bottom+e,n=t.left+t.width/2-r.width/2;break;case "bottom-start":l=t.bottom+e,n=t.left;break;case "bottom-end":l=t.bottom+e,n=t.right-r.width;break;case "left":l=t.top+t.height/2-r.height/2,n=t.left-r.width-e;break;case "left-start":l=t.top,n=t.left-r.width-e;break;case "left-end":l=t.bottom-r.height,n=t.left-r.width-e;break;case "right":l=t.top+t.height/2-r.height/2,n=t.right+e;break;case "right-start":l=t.top,n=t.right+e;break;case "right-end":l=t.bottom-r.height,n=t.right+e;break}f&&(n<s?n=s:n+r.width>g.width-s&&(n=g.width-r.width-s),l<s?l=s:l+r.height>g.height-s&&(l=g.height-r.height-s)),H({top:l,left:n});},[i,e,f,s]);return a.useLayoutEffect(()=>{v();let c=()=>v();return window.addEventListener("resize",c),window.addEventListener("scroll",c),()=>{window.removeEventListener("resize",c),window.removeEventListener("scroll",c);}},[v,R,x]),a.createElement("div",{ref:c=>{D.current=c,typeof o=="function"?o(c):o&&(o.current=c);},role:"tooltip","data-tooltip-instance":"nostromo","data-state":x?"open":"closed","aria-hidden":x?void 0:true,className:a$1(Y({variant:h,size:T,placement:i}),x?"opacity-100":"pointer-events-none opacity-0",d),style:{position:"fixed",top:L.top,left:L.left,zIndex:50},...w},u,a.createElement("div",{className:a$1(Z({variant:h,placement:i}))}))});F.displayName="TooltipContent";var tt=({children:u,delayDuration:h=700,skipDelayDuration:T=300,defaultOpen:i=false})=>a.createElement("div",{"data-tooltip-provider":true},u),j=a$2(q);j.Trigger=A;j.Content=F;j.Provider=tt;export{Y as a,Z as b,A as c,F as d,tt as e,j as f};//# sourceMappingURL=chunk-TCA5Z7FL.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-TCA5Z7FL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/tooltip.tsx"],"names":["tooltipVariants","cva","arrowVariants","TooltipContext","React","useTooltipContext","context","TooltipComponent","children","content","trigger","controlledOpen","onOpenChange","delayDuration","skipDelayDuration","disabled","className","contentClassName","sideOffset","alignOffset","avoidCollisions","collisionBoundary","collisionPadding","hideWhenDetached","sticky","updatePositionDeps","closeOnBlur","props","ref","internalOpen","setInternalOpen","useState","delayTimerRef","useRef","skipDelayTimerRef","isControlled","open","setOpen","useCallback","newOpen","clearTimers","openNow","closeNow","openWithDelay","closeWithDelay","toggleWithDelay","toggleNow","useEffect","contextValue","shouldRenderContent","cn","TooltipContent","TooltipTrigger","asChild","triggerRef","triggerProps","node","e","variant","size","placement","_alignOffset","_collisionBoundary","_hideWhenDetached","_sticky","contentRef","position","setPosition","updatePosition","triggerRect","contentRect","viewport","top","left","handleResize","TooltipProvider","_delayDuration","_skipDelayDuration","_defaultOpen","Tooltip","memo"],"mappings":"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","file":"chunk-TCA5Z7FL.js","sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Tooltip variants\nconst tooltipVariants = cva(\n \"absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground border border-border\",\n light: \"bg-popover text-popover-foreground border border-border\",\n dark: \"bg-popover text-popover-foreground border border-border\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n error: \"bg-destructive text-destructive-foreground\",\n info: \"bg-info text-info-foreground\",\n },\n size: {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-2\",\n lg: \"text-base px-4 py-3\",\n },\n placement: {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n \"top-start\": \"bottom-full left-0 mb-2\",\n \"top-end\": \"bottom-full right-0 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n \"bottom-start\": \"top-full left-0 mt-2\",\n \"bottom-end\": \"top-full right-0 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n \"left-start\": \"right-full top-0 mr-2\",\n \"left-end\": \"right-full bottom-0 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n \"right-start\": \"left-full top-0 ml-2\",\n \"right-end\": \"left-full bottom-0 ml-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n placement: \"top\",\n },\n },\n);\n\nconst arrowVariants = cva(\"absolute w-2 h-2 rotate-45\", {\n variants: {\n variant: {\n default: \"bg-popover border border-border\",\n light: \"bg-popover border border-border\",\n dark: \"bg-popover border border-border\",\n success: \"bg-success-500\",\n warning: \"bg-warning-500\",\n error: \"bg-destructive\",\n info: \"bg-info-500\",\n },\n placement: {\n top: \"top-full left-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"top-start\": \"top-full left-4 -translate-y-1/2\",\n \"top-end\": \"top-full right-4 -translate-y-1/2\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2\",\n \"bottom-start\": \"bottom-full left-4 translate-y-1/2\",\n \"bottom-end\": \"bottom-full right-4 translate-y-1/2\",\n left: \"left-full top-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"left-start\": \"left-full top-4 -translate-x-1/2\",\n \"left-end\": \"left-full bottom-4 -translate-x-1/2\",\n right: \"right-full top-1/2 translate-x-1/2 -translate-y-1/2\",\n \"right-start\": \"right-full top-4 translate-x-1/2\",\n \"right-end\": \"right-full bottom-4 translate-x-1/2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n placement: \"top\",\n },\n});\n\n// Types\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n children: React.ReactNode;\n /**\n * The tooltip body, for the shorthand form:\n * `<Tooltip content=\"...\"> <button /></Tooltip>`.\n *\n * Optional, because `TooltipTrigger` and `TooltipContent` are exported and\n * composing them is the other supported form - and the one the docs show. It\n * was required, which meant the composed form did not type-check at all.\n */\n content?: React.ReactNode;\n trigger?: \"hover\" | \"click\" | \"focus\" | \"manual\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n skipDelayDuration?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n closeOnBlur?: boolean;\n}\n\nexport interface TooltipContentProps extends VariantProps<\n typeof tooltipVariants\n> {\n children: React.ReactNode;\n className?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n}\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n asChild?: boolean;\n className?: string;\n}\n\n// Tooltip Context\ninterface TooltipContextType {\n open: boolean;\n setOpen: (open: boolean) => void;\n trigger: \"hover\" | \"click\" | \"focus\" | \"manual\";\n delayDuration: number;\n skipDelayDuration: number;\n openNow: () => void;\n closeNow: () => void;\n openWithDelay: () => void;\n closeWithDelay: () => void;\n toggleWithDelay: () => void;\n toggleNow: () => void;\n closeOnBlur: boolean;\n}\n\nconst TooltipContext = React.createContext<TooltipContextType | undefined>(\n undefined,\n);\n\nconst useTooltipContext = () => {\n const context = React.useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within a Tooltip\");\n }\n return context;\n};\n\n// Main Tooltip Component\nconst TooltipComponent = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n content,\n trigger = \"hover\",\n open: controlledOpen,\n onOpenChange,\n delayDuration = 700,\n skipDelayDuration = 300,\n disabled = false,\n className,\n contentClassName,\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached = false,\n sticky = \"partial\",\n updatePositionDeps,\n closeOnBlur = true,\n ...props\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const delayTimerRef = useRef<number | ReturnType<typeof setTimeout> | null>(\n null,\n );\n const skipDelayTimerRef = useRef<\n number | ReturnType<typeof setTimeout> | null\n >(null);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (disabled) return;\n\n if (isControlled) {\n onOpenChange?.(newOpen);\n } else {\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen); // notify i uncontrolled\n }\n },\n [disabled, isControlled, onOpenChange],\n );\n\n // --- Tooltip open/close/toggle helpers ---\n const clearTimers = useCallback(() => {\n if (delayTimerRef.current != null) {\n clearTimeout(delayTimerRef.current);\n delayTimerRef.current = null;\n }\n if (skipDelayTimerRef.current != null) {\n clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = null;\n }\n }, []);\n\n const openNow = useCallback(() => {\n clearTimers();\n setOpen(true);\n }, [clearTimers, setOpen]);\n\n const closeNow = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n const openWithDelay = useCallback(() => {\n clearTimers();\n if (disabled) return;\n if (delayDuration > 0) {\n delayTimerRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n } else {\n setOpen(true);\n }\n }, [clearTimers, disabled, delayDuration, setOpen]);\n\n const closeWithDelay = useCallback(() => {\n clearTimers();\n if (skipDelayDuration > 0) {\n skipDelayTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n }, skipDelayDuration);\n } else {\n setOpen(false);\n }\n }, [clearTimers, skipDelayDuration, setOpen]);\n\n const toggleWithDelay = useCallback(() => {\n if (open) {\n closeWithDelay();\n } else {\n openWithDelay();\n }\n }, [open, openWithDelay, closeWithDelay]);\n\n const toggleNow = useCallback(() => {\n if (open) closeNow();\n else openNow();\n }, [open, openNow, closeNow]);\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n clearTimers();\n };\n }, [clearTimers]);\n\n const contextValue: TooltipContextType = {\n open,\n setOpen,\n trigger,\n delayDuration,\n skipDelayDuration,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleWithDelay,\n toggleNow,\n closeOnBlur,\n };\n\n // Only render the TooltipContent when open is true (and no pending close timer),\n // to help guard against duplicate tooltips in StrictMode/rapid toggles.\n //\n // `content !== undefined` matters for the composed form. Without it, opening\n // a `<Tooltip><TooltipTrigger /><TooltipContent /></Tooltip>` rendered this\n // slot too, with `undefined` inside - a second, empty bubble next to the real\n // one. The shorthand and the composed form are now mutually exclusive, which\n // is what they always looked like from the outside.\n const shouldRenderContent = open === true && content !== undefined;\n\n return (\n <TooltipContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n data-open={open}\n {...props}\n >\n {children}\n {shouldRenderContent ? (\n <TooltipContent\n className={contentClassName || \"\"}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary || null}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n updatePositionDeps={updatePositionDeps || []}\n variant={props.variant}\n size={props.size}\n placement={props.placement}\n >\n {content}\n </TooltipContent>\n ) : null}\n </div>\n </TooltipContext.Provider>\n );\n },\n);\n\nTooltipComponent.displayName = \"Tooltip\";\n\n// Note: Tooltip memoization and subcomponent attachment happens at end of file\n\n// Tooltip Trigger Component\nexport const TooltipTrigger = React.forwardRef<\n HTMLElement,\n TooltipTriggerProps\n>(({ children, asChild = true, className, ...props }, ref) => {\n const {\n trigger,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleNow,\n closeOnBlur,\n } = useTooltipContext();\n const triggerRef = useRef<HTMLElement>(null);\n\n const triggerProps = {\n ref: (node: HTMLElement) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n },\n className: cn(className),\n \"data-tooltip-trigger\": true,\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\n // Call external handler first\n props.onMouseEnter?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") {\n openWithDelay();\n }\n },\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseLeave?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") closeWithDelay();\n },\n onPointerEnter: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerEnter?.(e);\n if (trigger === \"hover\") openWithDelay();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerLeave?.(e);\n if (trigger === \"hover\") closeWithDelay();\n },\n onClick: (e: React.MouseEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onClick?.(e);\n if (trigger === \"click\") toggleNow();\n },\n onFocus: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onFocus?.(e);\n if (trigger === \"focus\") openNow();\n },\n onBlur: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onBlur?.(e);\n if (closeOnBlur) closeNow();\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onKeyDown?.(e);\n if (e.key === \"Escape\") closeNow();\n },\n };\n\n if (asChild && React.isValidElement(children)) {\n // eslint-disable-next-line react-hooks/refs -- cloneElement merges triggerProps (incl. ref) onto the child; the ref is not read here\n return React.cloneElement(children, {\n ...(children.props || {}),\n ...triggerProps,\n });\n }\n\n return (\n <span\n {...triggerProps}\n tabIndex={trigger === \"focus\" ? 0 : undefined}\n role={trigger === \"click\" ? \"button\" : undefined}\n >\n {children}\n </span>\n );\n});\n\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\n// Tooltip Content Component\nexport const TooltipContent = React.forwardRef<\n HTMLDivElement,\n TooltipContentProps\n>(\n (\n {\n children,\n variant = \"default\",\n size = \"md\",\n placement = \"top\",\n className,\n sideOffset = 4,\n alignOffset: _alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary: _collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached: _hideWhenDetached = false,\n sticky: _sticky = \"partial\",\n updatePositionDeps,\n ...props\n },\n ref,\n ) => {\n // Read the context directly rather than through useTooltipContext: that\n // throws without a provider, and TooltipContent was usable standalone before\n // this. Absent a Tooltip parent there is nothing to open it, so treat it as\n // shown - which is also what it did previously.\n const open = React.useContext(TooltipContext)?.open ?? true;\n const contentRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const updatePosition = useCallback(() => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n const trigger = content.parentElement?.querySelector(\n \"[data-tooltip-trigger]\",\n ) as HTMLElement;\n\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n // Calculate position based on placement\n switch (placement) {\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"top-start\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.left;\n break;\n case \"top-end\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"bottom\":\n top = triggerRect.bottom + sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.left;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"left\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-start\":\n top = triggerRect.top;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"right\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-start\":\n top = triggerRect.top;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.right + sideOffset;\n break;\n }\n\n // Apply collision detection if enabled\n if (avoidCollisions) {\n // Horizontal collision detection\n if (left < collisionPadding) {\n left = collisionPadding;\n } else if (\n left + contentRect.width >\n viewport.width - collisionPadding\n ) {\n left = viewport.width - contentRect.width - collisionPadding;\n }\n\n // Vertical collision detection\n if (top < collisionPadding) {\n top = collisionPadding;\n } else if (\n top + contentRect.height >\n viewport.height - collisionPadding\n ) {\n top = viewport.height - contentRect.height - collisionPadding;\n }\n }\n\n setPosition({ top, left });\n }, [placement, sideOffset, avoidCollisions, collisionPadding]);\n\n React.useLayoutEffect(() => {\n updatePosition();\n\n const handleResize = () => updatePosition();\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleResize);\n };\n // is a dependency: the box is measured to place it, and measuring\n // it while closed gave a stale position on the first show.\n }, [updatePosition, updatePositionDeps, open]);\n\n return (\n <div\n ref={(node) => {\n (\n contentRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }}\n role=\"tooltip\"\n data-tooltip-instance=\"nostromo\"\n data-state={open ? \"open\" : \"closed\"}\n aria-hidden={open ? undefined : true}\n className={cn(\n tooltipVariants({ variant, size, placement }),\n // The content never read the open state. `data-open` was written on the\n // wrapper and nothing - no CSS, no conditional render - ever acted on\n // it, so the tooltip was permanently visible, sitting on top of its own\n // trigger. Bound to opacity rather than unmounted so the\n // `transition-opacity` the variants already declare still runs.\n open ? \"opacity-100\" : \"pointer-events-none opacity-0\",\n className,\n )}\n style={{\n position: \"fixed\",\n top: position.top,\n left: position.left,\n zIndex: 50,\n }}\n {...props}\n >\n {children}\n <div className={cn(arrowVariants({ variant, placement }))} />\n </div>\n );\n },\n);\n\nTooltipContent.displayName = \"TooltipContent\";\n\n// Tooltip Provider for global configuration\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n defaultOpen?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n children,\n delayDuration: _delayDuration = 700,\n skipDelayDuration: _skipDelayDuration = 300,\n defaultOpen: _defaultOpen = false,\n}) => {\n return <div data-tooltip-provider>{children}</div>;\n};\n\n// Memoize Tooltip for performance optimization (after all subcomponents are defined)\nconst Tooltip = memo(TooltipComponent) as typeof TooltipComponent & {\n Trigger: typeof TooltipTrigger;\n Content: typeof TooltipContent;\n Provider: typeof TooltipProvider;\n};\n\n// Attach subcomponents to Tooltip for compound component pattern\nTooltip.Trigger = TooltipTrigger;\nTooltip.Content = TooltipContent;\nTooltip.Provider = TooltipProvider;\n\n// Export variants and Tooltip for external use\nexport { Tooltip, tooltipVariants, arrowVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a}from'./chunk-AC2JBXHQ.js';import e,{useState}from'react';import {cva}from'class-variance-authority';var q=cva("w-full border-collapse transition-all duration-200",{variants:{variant:{default:"border border-border shadow-sm hover:shadow-md",striped:"border border-border shadow-sm hover:shadow-md",bordered:"border-2 border-border shadow-md hover:shadow-lg",hover:"border border-border shadow-sm hover:shadow-md",elevated:"border border-border shadow-lg hover:shadow-xl",interactive:"border border-border shadow-sm hover:shadow-md hover:border-primary"},size:{sm:"text-xs sm:text-sm",md:"text-sm sm:text-base",lg:"text-base sm:text-lg"}},defaultVariants:{variant:"default",size:"md"}}),O=cva("font-medium text-left transition-all duration-200",{variants:{variant:{default:"bg-muted text-foreground hover:bg-muted/80",striped:"bg-muted text-foreground hover:bg-muted/80",bordered:"bg-muted text-foreground hover:bg-muted/80",hover:"bg-muted text-foreground hover:bg-muted/80",elevated:"bg-muted text-foreground hover:bg-muted/80",interactive:"bg-muted text-foreground hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}}),U=cva("border-b border-border transition-colors",{variants:{variant:{default:"hover:bg-muted/50",striped:"even:bg-muted/50 hover:bg-muted/80",bordered:"hover:bg-muted/50",hover:"hover:bg-muted/50",elevated:"hover:bg-muted/80",interactive:"hover:bg-primary/10 hover:text-primary"}},defaultVariants:{variant:"default"}}),w=cva("border-border transition-all duration-200",{variants:{variant:{default:"border-b border-border hover:bg-muted/50",striped:"border-b border-border hover:bg-muted/80",bordered:"border border-border hover:bg-muted/50",hover:"border-b border-border hover:bg-muted/50",elevated:"border-b border-border hover:bg-muted/80",interactive:"border-b border-border hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}});function W({data:a$1,columns:n,loading:i=false,emptyText:p="No data",className:u,variant:l,size:b,rowKey:c="id",onRowClick:M,onSort:K,sortColumn:N,sortDirection:E,pagination:t,selection:s,caption:k,...L},B){let[I,D]=useState(null),P=N!==void 0,g=P&&N?{column:N,direction:E||"asc"}:I,j=r=>{if(!r.sortable)return;let d=g?.column===r.key&&g?.direction==="asc"?"desc":"asc";P||D({column:r.key,direction:d}),K?.(r,d);},h=(r,d)=>typeof c=="function"?c(r):r[c]||d,z=(r,d)=>{if(!s)return false;let o=h(r,d);return s.selectedRowKeys.includes(o)},A=(r,d,o)=>{if(!s)return;let v=h(r,d),y=o?[...s.selectedRowKeys,v]:s.selectedRowKeys.filter(S=>S!==v),C=a$1.filter((S,J)=>y.includes(h(S,J)));s.onChange(y,C);},G=r=>{if(!s)return;let d=a$1.map((y,C)=>h(y,C)),o=r?d:[],v=r?a$1:[];s.onChange(o,v);},$=s&&a$1.length>0&&s.selectedRowKeys.length===a$1.length,F=s&&s.selectedRowKeys.length>0&&s.selectedRowKeys.length<a$1.length;return e.createElement("div",{className:"w-full overflow-x-auto"},e.createElement("div",{className:"min-w-full"},e.createElement("table",{ref:B,className:a(q({variant:l,size:b}),u),...L},k&&e.createElement("caption",{className:"sr-only"},k),e.createElement(V,null,e.createElement(f,null,s&&e.createElement("th",{className:a(w({variant:l,size:b})),scope:"col",role:"columnheader"},e.createElement("input",{type:"checkbox",checked:$,ref:r=>{r&&(r.indeterminate=F||false);},onChange:r=>G(r.target.checked),className:"rounded border-input text-primary focus:ring-ring","aria-label":"Select all rows"})),n.map(r=>e.createElement("th",{key:r.key,className:a(w({variant:l,size:b}),r.className,r.align==="center"&&"text-center",r.align==="right"&&"text-right"),scope:"col",role:"columnheader",...r.width&&{style:{width:r.width}}},e.createElement("div",{className:"flex items-center gap-2"},e.createElement("span",null,r.title),r.sortable&&e.createElement("button",{type:"button",onClick:()=>j(r),className:"flex flex-col text-muted-foreground hover:text-foreground","aria-label":`Sort by ${r.title}`},e.createElement("svg",{className:a("w-3 h-3",g?.column===r.key&&g?.direction==="asc"?"text-primary":"text-muted-foreground"),fill:"currentColor",viewBox:"0 0 20 20"},e.createElement("path",{d:"M5 8l5-5 5 5H5z"})),e.createElement("svg",{className:a("w-3 h-3 -mt-1",g?.column===r.key&&g?.direction==="desc"?"text-primary":"text-muted-foreground"),fill:"currentColor",viewBox:"0 0 20 20"},e.createElement("path",{d:"M5 12l5 5 5-5H5z"})))))))),e.createElement(R,null,i?e.createElement(f,null,e.createElement(x,{colSpan:n.length+(s?1:0),variant:l,size:b,className:"text-center py-8"},e.createElement("div",{className:"flex items-center justify-center gap-2"},e.createElement("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-primary"}),e.createElement("span",null,"Loading...")))):a$1.length===0?e.createElement(f,null,e.createElement(x,{colSpan:n.length+(s?1:0),variant:l,size:b,className:"text-center py-8 text-muted-foreground"},p)):a$1.map((r,d)=>e.createElement(f,{key:h(r,d),variant:l,onClick:()=>M?.(r,d),selected:z(r,d)},s&&e.createElement(x,{variant:l,size:b},e.createElement("input",{type:"checkbox",checked:z(r,d),onChange:o=>A(r,d,o.target.checked),className:"rounded border-input text-primary focus:ring-ring","aria-label":`Select row ${d+1}`,...s.getCheckboxProps?.(r)})),n.map(o=>e.createElement(x,{key:o.key,variant:l,size:b,className:a(o.className,o.align==="center"&&"text-center",o.align==="right"&&"text-right")},o.render?o.render(o.dataIndex?r[o.dataIndex]:r,r,d):o.dataIndex?r[o.dataIndex]:r[o.key]))))))),t&&e.createElement("div",{className:"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0"},e.createElement("div",{className:"flex items-center gap-2"},e.createElement("span",{className:"text-sm text-muted-foreground"},"Showing ",(t.current-1)*t.pageSize+1," to"," ",Math.min(t.current*t.pageSize,t.total)," ","of ",t.total," results")),e.createElement("div",{className:"flex items-center gap-2"},t.showSizeChanger&&e.createElement("select",{value:t.pageSize,onChange:r=>t.onChange(1,Number(r.target.value)),className:"rounded border-input bg-background text-sm","aria-label":"Select page size"},e.createElement("option",{value:10},"10 / page"),e.createElement("option",{value:20},"20 / page"),e.createElement("option",{value:50},"50 / page"),e.createElement("option",{value:100},"100 / page")),e.createElement("div",{className:"flex items-center gap-1"},e.createElement("button",{type:"button",onClick:()=>t.onChange(t.current-1,t.pageSize),disabled:t.current<=1,className:"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to previous page"},"Previous"),e.createElement("span",{className:"px-3 py-1 text-sm"},"Page ",t.current," of"," ",Math.ceil(t.total/t.pageSize)),e.createElement("button",{type:"button",onClick:()=>t.onChange(t.current+1,t.pageSize),disabled:t.current>=Math.ceil(t.total/t.pageSize),className:"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to next page"},"Next")))))}var H=e.forwardRef(W);H.displayName="Table";var ee=H,V=e.forwardRef(({className:a$1,variant:n,size:i,children:p,...u},l)=>e.createElement("thead",{ref:l,className:a(O({variant:n,size:i}),a$1),...u},p));V.displayName="TableHeader";var R=e.forwardRef(({className:a$1,children:n,...i},p)=>e.createElement("tbody",{ref:p,className:a(a$1),...i},n));R.displayName="TableBody";var f=e.forwardRef(({className:a$1,children:n,onClick:i,selected:p,variant:u,...l},b)=>e.createElement("tr",{ref:b,className:a(U({variant:u}),p&&"bg-primary/10",i&&"cursor-pointer",a$1),onClick:i,...l},n));f.displayName="TableRow";var x=e.forwardRef(({className:a$1,children:n,variant:i,size:p,colSpan:u,rowSpan:l,...b},c)=>e.createElement("td",{ref:c,className:a(w({variant:i,size:p}),a$1),colSpan:u,rowSpan:l,...b},n));x.displayName="TableCell";var X=e.forwardRef(({className:a$1,children:n,variant:i,size:p,colSpan:u,rowSpan:l,...b},c)=>e.createElement("th",{ref:c,className:a(w({variant:i,size:p}),"font-medium",a$1),colSpan:u,rowSpan:l,...b},n));X.displayName="TableHead";export{q as a,O as b,w as c,ee as d,V as e,R as f,f as g,x as h,X as i};//# sourceMappingURL=chunk-UIEGBT4T.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-UIEGBT4T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/table.tsx"],"names":["tableVariants","cva","tableHeaderVariants","tableRowVariants","tableCellVariants","TableComponent","data","columns","loading","emptyText","className","variant","size","rowKey","onRowClick","onSort","controlledSortColumn","controlledSortDirection","pagination","selection","caption","props","ref","internalSortState","setInternalSortState","useState","isControlled","sortState","handleSort","column","newDirection","getRowKey","record","index","isRowSelected","key","handleRowSelection","checked","newSelectedKeys","k","newSelectedRows","_","i","handleSelectAll","allKeys","isAllSelected","isIndeterminate","React","cn","TableHeader","TableRow","input","e","TableBody","TableCell","TableForwardRef","Table","children","onClick","selected","colSpan","rowSpan","TableHead"],"mappings":"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","file":"chunk-UIEGBT4T.js","sourcesContent":["import React, { useState } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n// Table variants\nconst tableVariants = cva(\n \"w-full border-collapse transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border border-border shadow-sm hover:shadow-md\",\n striped: \"border border-border shadow-sm hover:shadow-md\",\n bordered: \"border-2 border-border shadow-md hover:shadow-lg\",\n hover: \"border border-border shadow-sm hover:shadow-md\",\n elevated: \"border border-border shadow-lg hover:shadow-xl\",\n interactive:\n \"border border-border shadow-sm hover:shadow-md hover:border-primary\",\n },\n size: {\n sm: \"text-xs sm:text-sm\",\n md: \"text-sm sm:text-base\",\n lg: \"text-base sm:text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst tableHeaderVariants = cva(\n \"font-medium text-left transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted text-foreground hover:bg-muted/80\",\n striped: \"bg-muted text-foreground hover:bg-muted/80\",\n bordered: \"bg-muted text-foreground hover:bg-muted/80\",\n hover: \"bg-muted text-foreground hover:bg-muted/80\",\n elevated: \"bg-muted text-foreground hover:bg-muted/80\",\n interactive:\n \"bg-muted text-foreground hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\n/**\n * Row-level variants.\n *\n * `striped` has to live here, not on the cell: `even:` selects the even sibling\n * among *cells within a row*, so applying it there striped columns instead of\n * rows - and TableRow ignored the variant entirely, so nothing showed at all.\n */\nconst tableRowVariants = cva(\"border-b border-border transition-colors\", {\n variants: {\n variant: {\n default: \"hover:bg-muted/50\",\n striped: \"even:bg-muted/50 hover:bg-muted/80\",\n bordered: \"hover:bg-muted/50\",\n hover: \"hover:bg-muted/50\",\n elevated: \"hover:bg-muted/80\",\n interactive: \"hover:bg-primary/10 hover:text-primary\",\n },\n },\n defaultVariants: { variant: \"default\" },\n});\n\nconst tableCellVariants = cva(\"border-border transition-all duration-200\", {\n variants: {\n variant: {\n default: \"border-b border-border hover:bg-muted/50\",\n striped: \"border-b border-border hover:bg-muted/80\",\n bordered: \"border border-border hover:bg-muted/50\",\n hover: \"border-b border-border hover:bg-muted/50\",\n elevated: \"border-b border-border hover:bg-muted/80\",\n interactive:\n \"border-b border-border hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\n// Types\nexport interface TableColumn<T = Record<string, unknown>> {\n key: string;\n title: string;\n dataIndex?: keyof T;\n render?: (value: unknown, record: T, index: number) => React.ReactNode;\n sortable?: boolean;\n width?: string | number;\n align?: \"left\" | \"center\" | \"right\";\n className?: string;\n}\n\nexport interface TableProps<T = Record<string, unknown>> extends VariantProps<\n typeof tableVariants\n> {\n data: T[];\n columns: TableColumn<T>[];\n loading?: boolean;\n emptyText?: string;\n caption?: string;\n className?: string;\n rowKey?: keyof T | ((record: T) => string | number);\n onRowClick?: (record: T, index: number) => void;\n onSort?: (column: TableColumn<T>, direction: \"asc\" | \"desc\") => void;\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n pagination?: {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n };\n selection?: {\n selectedRowKeys: (string | number)[];\n onChange: (selectedRowKeys: (string | number)[], selectedRows: T[]) => void;\n getCheckboxProps?: (record: T) => { disabled?: boolean };\n };\n}\n\nexport interface TableHeaderProps extends VariantProps<\n typeof tableHeaderVariants\n> {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableBodyProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableRowProps extends VariantProps<typeof tableRowVariants> {\n className?: string;\n children: React.ReactNode;\n onClick?: () => void;\n selected?: boolean;\n}\n\nexport interface TableCellProps extends VariantProps<typeof tableCellVariants> {\n className?: string;\n children: React.ReactNode;\n colSpan?: number;\n rowSpan?: number;\n}\n\n// Table Components\nfunction TableComponent<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n {\n data,\n columns,\n loading = false,\n emptyText = \"No data\",\n className,\n variant,\n size,\n rowKey = \"id\",\n onRowClick,\n onSort,\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n pagination,\n selection,\n caption,\n ...props\n }: TableProps<T>,\n ref: React.Ref<HTMLTableElement>,\n) {\n // Use controlled props if provided, otherwise use internal state\n const [internalSortState, setInternalSortState] = useState<{\n column: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n\n // Determine current sort state (controlled takes precedence)\n const isControlled = controlledSortColumn !== undefined;\n const sortState =\n isControlled && controlledSortColumn\n ? {\n column: controlledSortColumn,\n direction: controlledSortDirection || \"asc\",\n }\n : internalSortState;\n\n // Sync internal state with controlled props when they change\n // Sync internal state with controlled props when they change\n // Note: unneeded re-render caused by resetting state. We derive sortState above so stale internal state is ignored.\n /* \n useEffect(() => {\n if (isControlled && controlledSortColumn) {\n setInternalSortState(null);\n }\n }, [isControlled, controlledSortColumn]); \n */\n\n const handleSort = (column: TableColumn<T>) => {\n if (!column.sortable) return;\n\n const newDirection =\n sortState?.column === column.key && sortState?.direction === \"asc\"\n ? \"desc\"\n : \"asc\";\n\n // Only update internal state if not controlled\n if (!isControlled) {\n setInternalSortState({ column: column.key, direction: newDirection });\n }\n\n // Always call onSort callback for controlled usage\n onSort?.(column, newDirection);\n };\n\n const getRowKey = (record: T, index: number): string | number => {\n if (typeof rowKey === \"function\") {\n return rowKey(record);\n }\n return (record[rowKey] as string | number) || index;\n };\n\n const isRowSelected = (record: T, index: number): boolean => {\n if (!selection) return false;\n const key = getRowKey(record, index);\n return selection.selectedRowKeys.includes(key);\n };\n\n const handleRowSelection = (\n record: T,\n index: number,\n checked: boolean,\n ): void => {\n if (!selection) return;\n\n const key = getRowKey(record, index);\n const newSelectedKeys = checked\n ? [...selection.selectedRowKeys, key]\n : selection.selectedRowKeys.filter((k) => k !== key);\n\n const newSelectedRows = data.filter((_, i) =>\n newSelectedKeys.includes(getRowKey(_, i)),\n );\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const handleSelectAll = (checked: boolean) => {\n if (!selection) return;\n\n const allKeys = data.map((record, index) => getRowKey(record, index));\n const newSelectedKeys = checked ? allKeys : [];\n const newSelectedRows = checked ? data : [];\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const isAllSelected =\n selection &&\n data.length > 0 &&\n selection.selectedRowKeys.length === data.length;\n\n const isIndeterminate =\n selection &&\n selection.selectedRowKeys.length > 0 &&\n selection.selectedRowKeys.length < data.length;\n\n return (\n <div className=\"w-full overflow-x-auto\">\n <div className=\"min-w-full\">\n <table\n ref={ref}\n className={cn(tableVariants({ variant, size }), className)}\n {...props}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n <TableHeader>\n <TableRow>\n {selection && (\n <th\n className={cn(tableCellVariants({ variant, size }))}\n scope=\"col\"\n role=\"columnheader\"\n >\n <input\n type=\"checkbox\"\n checked={isAllSelected}\n ref={(input) => {\n if (input) input.indeterminate = isIndeterminate || false;\n }}\n onChange={(e) => handleSelectAll(e.target.checked)}\n className=\"rounded border-input text-primary focus:ring-ring\"\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n tableCellVariants({ variant, size }),\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n scope=\"col\"\n role=\"columnheader\"\n {...(column.width && { style: { width: column.width } })}\n >\n <div className=\"flex items-center gap-2\">\n <span>{column.title}</span>\n {column.sortable && (\n <button\n type=\"button\"\n onClick={() => handleSort(column)}\n className=\"flex flex-col text-muted-foreground hover:text-foreground\"\n aria-label={`Sort by ${column.title}`}\n >\n <svg\n className={cn(\n \"w-3 h-3\",\n sortState?.column === column.key &&\n sortState?.direction === \"asc\"\n ? \"text-primary\"\n : \"text-muted-foreground\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 8l5-5 5 5H5z\" />\n </svg>\n <svg\n className={cn(\n \"w-3 h-3 -mt-1\",\n sortState?.column === column.key &&\n sortState?.direction === \"desc\"\n ? \"text-primary\"\n : \"text-muted-foreground\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 12l5 5 5-5H5z\" />\n </svg>\n </button>\n )}\n </div>\n </th>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-primary\"></div>\n <span>Loading...</span>\n </div>\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8 text-muted-foreground\"\n >\n {emptyText}\n </TableCell>\n </TableRow>\n ) : (\n data.map((record, index) => (\n <TableRow\n key={getRowKey(record, index)}\n variant={variant}\n onClick={() => onRowClick?.(record, index)}\n selected={isRowSelected(record, index)}\n >\n {selection && (\n <TableCell variant={variant} size={size}>\n <input\n type=\"checkbox\"\n checked={isRowSelected(record, index)}\n onChange={(e) =>\n handleRowSelection(record, index, e.target.checked)\n }\n className=\"rounded border-input text-primary focus:ring-ring\"\n aria-label={`Select row ${index + 1}`}\n {...selection.getCheckboxProps?.(record)}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell\n key={column.key}\n variant={variant}\n size={size}\n className={cn(\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n >\n {column.render\n ? column.render(\n column.dataIndex\n ? record[column.dataIndex]\n : record,\n record,\n index,\n )\n : column.dataIndex\n ? (record[column.dataIndex] as React.ReactNode)\n : ((record as Record<string, unknown>)[\n column.key\n ] as React.ReactNode)}\n </TableCell>\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </table>\n </div>\n\n {pagination && (\n <div className=\"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">\n Showing {(pagination.current - 1) * pagination.pageSize + 1} to{\" \"}\n {Math.min(\n pagination.current * pagination.pageSize,\n pagination.total,\n )}{\" \"}\n of {pagination.total} results\n </span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {pagination.showSizeChanger && (\n <select\n value={pagination.pageSize}\n onChange={(e) => pagination.onChange(1, Number(e.target.value))}\n className=\"rounded border-input bg-background text-sm\"\n aria-label=\"Select page size\"\n >\n <option value={10}>10 / page</option>\n <option value={20}>20 / page</option>\n <option value={50}>50 / page</option>\n <option value={100}>100 / page</option>\n </select>\n )}\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current - 1,\n pagination.pageSize,\n )\n }\n disabled={pagination.current <= 1}\n className=\"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to previous page\"\n >\n Previous\n </button>\n\n <span className=\"px-3 py-1 text-sm\">\n Page {pagination.current} of{\" \"}\n {Math.ceil(pagination.total / pagination.pageSize)}\n </span>\n\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current + 1,\n pagination.pageSize,\n )\n }\n disabled={\n pagination.current >=\n Math.ceil(pagination.total / pagination.pageSize)\n }\n className=\"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to next page\"\n >\n Next\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nconst TableForwardRef = React.forwardRef(TableComponent) as <\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n props: TableProps<T> & { ref?: React.Ref<HTMLTableElement> },\n) => React.ReactElement;\n\n(\n TableForwardRef as React.ComponentType<TableProps<unknown>> & {\n displayName?: string;\n }\n).displayName = \"Table\";\n\nexport const Table = TableForwardRef;\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n TableHeaderProps\n>(({ className, variant, size, children, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(tableHeaderVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </thead>\n));\n\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, children, ...props }, ref) => (\n <tbody ref={ref} className={cn(className)} {...props}>\n {children}\n </tbody>\n));\n\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, children, onClick, selected, variant, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n tableRowVariants({ variant }),\n selected && \"bg-primary/10\",\n onClick && \"cursor-pointer\",\n className,\n )}\n onClick={onClick}\n {...props}\n >\n {children}\n </tr>\n ),\n);\n\nTableRow.displayName = \"TableRow\";\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(tableCellVariants({ variant, size }), className)}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </td>\n ),\n);\n\nTableCell.displayName = \"TableCell\";\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n tableCellVariants({ variant, size }),\n \"font-medium\",\n className,\n )}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </th>\n ),\n);\n\nTableHead.displayName = \"TableHead\";\n\n// Export variants for external use\nexport { tableVariants, tableHeaderVariants, tableCellVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var e__default=/*#__PURE__*/_interopDefault(e);var q=classVarianceAuthority.cva("w-full border-collapse transition-all duration-200",{variants:{variant:{default:"border border-border shadow-sm hover:shadow-md",striped:"border border-border shadow-sm hover:shadow-md",bordered:"border-2 border-border shadow-md hover:shadow-lg",hover:"border border-border shadow-sm hover:shadow-md",elevated:"border border-border shadow-lg hover:shadow-xl",interactive:"border border-border shadow-sm hover:shadow-md hover:border-primary"},size:{sm:"text-xs sm:text-sm",md:"text-sm sm:text-base",lg:"text-base sm:text-lg"}},defaultVariants:{variant:"default",size:"md"}}),O=classVarianceAuthority.cva("font-medium text-left transition-all duration-200",{variants:{variant:{default:"bg-muted text-foreground hover:bg-muted/80",striped:"bg-muted text-foreground hover:bg-muted/80",bordered:"bg-muted text-foreground hover:bg-muted/80",hover:"bg-muted text-foreground hover:bg-muted/80",elevated:"bg-muted text-foreground hover:bg-muted/80",interactive:"bg-muted text-foreground hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}}),U=classVarianceAuthority.cva("border-b border-border transition-colors",{variants:{variant:{default:"hover:bg-muted/50",striped:"even:bg-muted/50 hover:bg-muted/80",bordered:"hover:bg-muted/50",hover:"hover:bg-muted/50",elevated:"hover:bg-muted/80",interactive:"hover:bg-primary/10 hover:text-primary"}},defaultVariants:{variant:"default"}}),w=classVarianceAuthority.cva("border-border transition-all duration-200",{variants:{variant:{default:"border-b border-border hover:bg-muted/50",striped:"border-b border-border hover:bg-muted/80",bordered:"border border-border hover:bg-muted/50",hover:"border-b border-border hover:bg-muted/50",elevated:"border-b border-border hover:bg-muted/80",interactive:"border-b border-border hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}});function W({data:a,columns:n,loading:i=false,emptyText:p="No data",className:u,variant:l,size:b,rowKey:c="id",onRowClick:M,onSort:K,sortColumn:N,sortDirection:E,pagination:t,selection:s,caption:k,...L},B){let[I,D]=e.useState(null),P=N!==void 0,g=P&&N?{column:N,direction:E||"asc"}:I,j=r=>{if(!r.sortable)return;let d=g?.column===r.key&&g?.direction==="asc"?"desc":"asc";P||D({column:r.key,direction:d}),K?.(r,d);},h=(r,d)=>typeof c=="function"?c(r):r[c]||d,z=(r,d)=>{if(!s)return false;let o=h(r,d);return s.selectedRowKeys.includes(o)},A=(r,d,o)=>{if(!s)return;let v=h(r,d),y=o?[...s.selectedRowKeys,v]:s.selectedRowKeys.filter(S=>S!==v),C=a.filter((S,J)=>y.includes(h(S,J)));s.onChange(y,C);},G=r=>{if(!s)return;let d=a.map((y,C)=>h(y,C)),o=r?d:[],v=r?a:[];s.onChange(o,v);},$=s&&a.length>0&&s.selectedRowKeys.length===a.length,F=s&&s.selectedRowKeys.length>0&&s.selectedRowKeys.length<a.length;return e__default.default.createElement("div",{className:"w-full overflow-x-auto"},e__default.default.createElement("div",{className:"min-w-full"},e__default.default.createElement("table",{ref:B,className:chunkITRGJNWL_cjs.a(q({variant:l,size:b}),u),...L},k&&e__default.default.createElement("caption",{className:"sr-only"},k),e__default.default.createElement(V,null,e__default.default.createElement(f,null,s&&e__default.default.createElement("th",{className:chunkITRGJNWL_cjs.a(w({variant:l,size:b})),scope:"col",role:"columnheader"},e__default.default.createElement("input",{type:"checkbox",checked:$,ref:r=>{r&&(r.indeterminate=F||false);},onChange:r=>G(r.target.checked),className:"rounded border-input text-primary focus:ring-ring","aria-label":"Select all rows"})),n.map(r=>e__default.default.createElement("th",{key:r.key,className:chunkITRGJNWL_cjs.a(w({variant:l,size:b}),r.className,r.align==="center"&&"text-center",r.align==="right"&&"text-right"),scope:"col",role:"columnheader",...r.width&&{style:{width:r.width}}},e__default.default.createElement("div",{className:"flex items-center gap-2"},e__default.default.createElement("span",null,r.title),r.sortable&&e__default.default.createElement("button",{type:"button",onClick:()=>j(r),className:"flex flex-col text-muted-foreground hover:text-foreground","aria-label":`Sort by ${r.title}`},e__default.default.createElement("svg",{className:chunkITRGJNWL_cjs.a("w-3 h-3",g?.column===r.key&&g?.direction==="asc"?"text-primary":"text-muted-foreground"),fill:"currentColor",viewBox:"0 0 20 20"},e__default.default.createElement("path",{d:"M5 8l5-5 5 5H5z"})),e__default.default.createElement("svg",{className:chunkITRGJNWL_cjs.a("w-3 h-3 -mt-1",g?.column===r.key&&g?.direction==="desc"?"text-primary":"text-muted-foreground"),fill:"currentColor",viewBox:"0 0 20 20"},e__default.default.createElement("path",{d:"M5 12l5 5 5-5H5z"})))))))),e__default.default.createElement(R,null,i?e__default.default.createElement(f,null,e__default.default.createElement(x,{colSpan:n.length+(s?1:0),variant:l,size:b,className:"text-center py-8"},e__default.default.createElement("div",{className:"flex items-center justify-center gap-2"},e__default.default.createElement("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-primary"}),e__default.default.createElement("span",null,"Loading...")))):a.length===0?e__default.default.createElement(f,null,e__default.default.createElement(x,{colSpan:n.length+(s?1:0),variant:l,size:b,className:"text-center py-8 text-muted-foreground"},p)):a.map((r,d)=>e__default.default.createElement(f,{key:h(r,d),variant:l,onClick:()=>M?.(r,d),selected:z(r,d)},s&&e__default.default.createElement(x,{variant:l,size:b},e__default.default.createElement("input",{type:"checkbox",checked:z(r,d),onChange:o=>A(r,d,o.target.checked),className:"rounded border-input text-primary focus:ring-ring","aria-label":`Select row ${d+1}`,...s.getCheckboxProps?.(r)})),n.map(o=>e__default.default.createElement(x,{key:o.key,variant:l,size:b,className:chunkITRGJNWL_cjs.a(o.className,o.align==="center"&&"text-center",o.align==="right"&&"text-right")},o.render?o.render(o.dataIndex?r[o.dataIndex]:r,r,d):o.dataIndex?r[o.dataIndex]:r[o.key]))))))),t&&e__default.default.createElement("div",{className:"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0"},e__default.default.createElement("div",{className:"flex items-center gap-2"},e__default.default.createElement("span",{className:"text-sm text-muted-foreground"},"Showing ",(t.current-1)*t.pageSize+1," to"," ",Math.min(t.current*t.pageSize,t.total)," ","of ",t.total," results")),e__default.default.createElement("div",{className:"flex items-center gap-2"},t.showSizeChanger&&e__default.default.createElement("select",{value:t.pageSize,onChange:r=>t.onChange(1,Number(r.target.value)),className:"rounded border-input bg-background text-sm","aria-label":"Select page size"},e__default.default.createElement("option",{value:10},"10 / page"),e__default.default.createElement("option",{value:20},"20 / page"),e__default.default.createElement("option",{value:50},"50 / page"),e__default.default.createElement("option",{value:100},"100 / page")),e__default.default.createElement("div",{className:"flex items-center gap-1"},e__default.default.createElement("button",{type:"button",onClick:()=>t.onChange(t.current-1,t.pageSize),disabled:t.current<=1,className:"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to previous page"},"Previous"),e__default.default.createElement("span",{className:"px-3 py-1 text-sm"},"Page ",t.current," of"," ",Math.ceil(t.total/t.pageSize)),e__default.default.createElement("button",{type:"button",onClick:()=>t.onChange(t.current+1,t.pageSize),disabled:t.current>=Math.ceil(t.total/t.pageSize),className:"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to next page"},"Next")))))}var H=e__default.default.forwardRef(W);H.displayName="Table";var ee=H,V=e__default.default.forwardRef(({className:a,variant:n,size:i,children:p,...u},l)=>e__default.default.createElement("thead",{ref:l,className:chunkITRGJNWL_cjs.a(O({variant:n,size:i}),a),...u},p));V.displayName="TableHeader";var R=e__default.default.forwardRef(({className:a,children:n,...i},p)=>e__default.default.createElement("tbody",{ref:p,className:chunkITRGJNWL_cjs.a(a),...i},n));R.displayName="TableBody";var f=e__default.default.forwardRef(({className:a,children:n,onClick:i,selected:p,variant:u,...l},b)=>e__default.default.createElement("tr",{ref:b,className:chunkITRGJNWL_cjs.a(U({variant:u}),p&&"bg-primary/10",i&&"cursor-pointer",a),onClick:i,...l},n));f.displayName="TableRow";var x=e__default.default.forwardRef(({className:a,children:n,variant:i,size:p,colSpan:u,rowSpan:l,...b},c)=>e__default.default.createElement("td",{ref:c,className:chunkITRGJNWL_cjs.a(w({variant:i,size:p}),a),colSpan:u,rowSpan:l,...b},n));x.displayName="TableCell";var X=e__default.default.forwardRef(({className:a,children:n,variant:i,size:p,colSpan:u,rowSpan:l,...b},c)=>e__default.default.createElement("th",{ref:c,className:chunkITRGJNWL_cjs.a(w({variant:i,size:p}),"font-medium",a),colSpan:u,rowSpan:l,...b},n));X.displayName="TableHead";exports.a=q;exports.b=O;exports.c=w;exports.d=ee;exports.e=V;exports.f=R;exports.g=f;exports.h=x;exports.i=X;//# sourceMappingURL=chunk-VNDL67OG.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-VNDL67OG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/table.tsx"],"names":["tableVariants","cva","tableHeaderVariants","tableRowVariants","tableCellVariants","TableComponent","data","columns","loading","emptyText","className","variant","size","rowKey","onRowClick","onSort","controlledSortColumn","controlledSortDirection","pagination","selection","caption","props","ref","internalSortState","setInternalSortState","useState","isControlled","sortState","handleSort","column","newDirection","getRowKey","record","index","isRowSelected","key","handleRowSelection","checked","newSelectedKeys","k","newSelectedRows","_","i","handleSelectAll","allKeys","isAllSelected","isIndeterminate","React","cn","TableHeader","TableRow","input","e","TableBody","TableCell","TableForwardRef","Table","children","onClick","selected","colSpan","rowSpan","TableHead"],"mappings":"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","file":"chunk-VNDL67OG.cjs","sourcesContent":["import React, { useState } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n// Table variants\nconst tableVariants = cva(\n \"w-full border-collapse transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border border-border shadow-sm hover:shadow-md\",\n striped: \"border border-border shadow-sm hover:shadow-md\",\n bordered: \"border-2 border-border shadow-md hover:shadow-lg\",\n hover: \"border border-border shadow-sm hover:shadow-md\",\n elevated: \"border border-border shadow-lg hover:shadow-xl\",\n interactive:\n \"border border-border shadow-sm hover:shadow-md hover:border-primary\",\n },\n size: {\n sm: \"text-xs sm:text-sm\",\n md: \"text-sm sm:text-base\",\n lg: \"text-base sm:text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst tableHeaderVariants = cva(\n \"font-medium text-left transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted text-foreground hover:bg-muted/80\",\n striped: \"bg-muted text-foreground hover:bg-muted/80\",\n bordered: \"bg-muted text-foreground hover:bg-muted/80\",\n hover: \"bg-muted text-foreground hover:bg-muted/80\",\n elevated: \"bg-muted text-foreground hover:bg-muted/80\",\n interactive:\n \"bg-muted text-foreground hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\n/**\n * Row-level variants.\n *\n * `striped` has to live here, not on the cell: `even:` selects the even sibling\n * among *cells within a row*, so applying it there striped columns instead of\n * rows - and TableRow ignored the variant entirely, so nothing showed at all.\n */\nconst tableRowVariants = cva(\"border-b border-border transition-colors\", {\n variants: {\n variant: {\n default: \"hover:bg-muted/50\",\n striped: \"even:bg-muted/50 hover:bg-muted/80\",\n bordered: \"hover:bg-muted/50\",\n hover: \"hover:bg-muted/50\",\n elevated: \"hover:bg-muted/80\",\n interactive: \"hover:bg-primary/10 hover:text-primary\",\n },\n },\n defaultVariants: { variant: \"default\" },\n});\n\nconst tableCellVariants = cva(\"border-border transition-all duration-200\", {\n variants: {\n variant: {\n default: \"border-b border-border hover:bg-muted/50\",\n striped: \"border-b border-border hover:bg-muted/80\",\n bordered: \"border border-border hover:bg-muted/50\",\n hover: \"border-b border-border hover:bg-muted/50\",\n elevated: \"border-b border-border hover:bg-muted/80\",\n interactive:\n \"border-b border-border hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\n// Types\nexport interface TableColumn<T = Record<string, unknown>> {\n key: string;\n title: string;\n dataIndex?: keyof T;\n render?: (value: unknown, record: T, index: number) => React.ReactNode;\n sortable?: boolean;\n width?: string | number;\n align?: \"left\" | \"center\" | \"right\";\n className?: string;\n}\n\nexport interface TableProps<T = Record<string, unknown>> extends VariantProps<\n typeof tableVariants\n> {\n data: T[];\n columns: TableColumn<T>[];\n loading?: boolean;\n emptyText?: string;\n caption?: string;\n className?: string;\n rowKey?: keyof T | ((record: T) => string | number);\n onRowClick?: (record: T, index: number) => void;\n onSort?: (column: TableColumn<T>, direction: \"asc\" | \"desc\") => void;\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n pagination?: {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n };\n selection?: {\n selectedRowKeys: (string | number)[];\n onChange: (selectedRowKeys: (string | number)[], selectedRows: T[]) => void;\n getCheckboxProps?: (record: T) => { disabled?: boolean };\n };\n}\n\nexport interface TableHeaderProps extends VariantProps<\n typeof tableHeaderVariants\n> {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableBodyProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableRowProps extends VariantProps<typeof tableRowVariants> {\n className?: string;\n children: React.ReactNode;\n onClick?: () => void;\n selected?: boolean;\n}\n\nexport interface TableCellProps extends VariantProps<typeof tableCellVariants> {\n className?: string;\n children: React.ReactNode;\n colSpan?: number;\n rowSpan?: number;\n}\n\n// Table Components\nfunction TableComponent<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n {\n data,\n columns,\n loading = false,\n emptyText = \"No data\",\n className,\n variant,\n size,\n rowKey = \"id\",\n onRowClick,\n onSort,\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n pagination,\n selection,\n caption,\n ...props\n }: TableProps<T>,\n ref: React.Ref<HTMLTableElement>,\n) {\n // Use controlled props if provided, otherwise use internal state\n const [internalSortState, setInternalSortState] = useState<{\n column: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n\n // Determine current sort state (controlled takes precedence)\n const isControlled = controlledSortColumn !== undefined;\n const sortState =\n isControlled && controlledSortColumn\n ? {\n column: controlledSortColumn,\n direction: controlledSortDirection || \"asc\",\n }\n : internalSortState;\n\n // Sync internal state with controlled props when they change\n // Sync internal state with controlled props when they change\n // Note: unneeded re-render caused by resetting state. We derive sortState above so stale internal state is ignored.\n /* \n useEffect(() => {\n if (isControlled && controlledSortColumn) {\n setInternalSortState(null);\n }\n }, [isControlled, controlledSortColumn]); \n */\n\n const handleSort = (column: TableColumn<T>) => {\n if (!column.sortable) return;\n\n const newDirection =\n sortState?.column === column.key && sortState?.direction === \"asc\"\n ? \"desc\"\n : \"asc\";\n\n // Only update internal state if not controlled\n if (!isControlled) {\n setInternalSortState({ column: column.key, direction: newDirection });\n }\n\n // Always call onSort callback for controlled usage\n onSort?.(column, newDirection);\n };\n\n const getRowKey = (record: T, index: number): string | number => {\n if (typeof rowKey === \"function\") {\n return rowKey(record);\n }\n return (record[rowKey] as string | number) || index;\n };\n\n const isRowSelected = (record: T, index: number): boolean => {\n if (!selection) return false;\n const key = getRowKey(record, index);\n return selection.selectedRowKeys.includes(key);\n };\n\n const handleRowSelection = (\n record: T,\n index: number,\n checked: boolean,\n ): void => {\n if (!selection) return;\n\n const key = getRowKey(record, index);\n const newSelectedKeys = checked\n ? [...selection.selectedRowKeys, key]\n : selection.selectedRowKeys.filter((k) => k !== key);\n\n const newSelectedRows = data.filter((_, i) =>\n newSelectedKeys.includes(getRowKey(_, i)),\n );\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const handleSelectAll = (checked: boolean) => {\n if (!selection) return;\n\n const allKeys = data.map((record, index) => getRowKey(record, index));\n const newSelectedKeys = checked ? allKeys : [];\n const newSelectedRows = checked ? data : [];\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const isAllSelected =\n selection &&\n data.length > 0 &&\n selection.selectedRowKeys.length === data.length;\n\n const isIndeterminate =\n selection &&\n selection.selectedRowKeys.length > 0 &&\n selection.selectedRowKeys.length < data.length;\n\n return (\n <div className=\"w-full overflow-x-auto\">\n <div className=\"min-w-full\">\n <table\n ref={ref}\n className={cn(tableVariants({ variant, size }), className)}\n {...props}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n <TableHeader>\n <TableRow>\n {selection && (\n <th\n className={cn(tableCellVariants({ variant, size }))}\n scope=\"col\"\n role=\"columnheader\"\n >\n <input\n type=\"checkbox\"\n checked={isAllSelected}\n ref={(input) => {\n if (input) input.indeterminate = isIndeterminate || false;\n }}\n onChange={(e) => handleSelectAll(e.target.checked)}\n className=\"rounded border-input text-primary focus:ring-ring\"\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n tableCellVariants({ variant, size }),\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n scope=\"col\"\n role=\"columnheader\"\n {...(column.width && { style: { width: column.width } })}\n >\n <div className=\"flex items-center gap-2\">\n <span>{column.title}</span>\n {column.sortable && (\n <button\n type=\"button\"\n onClick={() => handleSort(column)}\n className=\"flex flex-col text-muted-foreground hover:text-foreground\"\n aria-label={`Sort by ${column.title}`}\n >\n <svg\n className={cn(\n \"w-3 h-3\",\n sortState?.column === column.key &&\n sortState?.direction === \"asc\"\n ? \"text-primary\"\n : \"text-muted-foreground\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 8l5-5 5 5H5z\" />\n </svg>\n <svg\n className={cn(\n \"w-3 h-3 -mt-1\",\n sortState?.column === column.key &&\n sortState?.direction === \"desc\"\n ? \"text-primary\"\n : \"text-muted-foreground\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 12l5 5 5-5H5z\" />\n </svg>\n </button>\n )}\n </div>\n </th>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-primary\"></div>\n <span>Loading...</span>\n </div>\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8 text-muted-foreground\"\n >\n {emptyText}\n </TableCell>\n </TableRow>\n ) : (\n data.map((record, index) => (\n <TableRow\n key={getRowKey(record, index)}\n variant={variant}\n onClick={() => onRowClick?.(record, index)}\n selected={isRowSelected(record, index)}\n >\n {selection && (\n <TableCell variant={variant} size={size}>\n <input\n type=\"checkbox\"\n checked={isRowSelected(record, index)}\n onChange={(e) =>\n handleRowSelection(record, index, e.target.checked)\n }\n className=\"rounded border-input text-primary focus:ring-ring\"\n aria-label={`Select row ${index + 1}`}\n {...selection.getCheckboxProps?.(record)}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell\n key={column.key}\n variant={variant}\n size={size}\n className={cn(\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n >\n {column.render\n ? column.render(\n column.dataIndex\n ? record[column.dataIndex]\n : record,\n record,\n index,\n )\n : column.dataIndex\n ? (record[column.dataIndex] as React.ReactNode)\n : ((record as Record<string, unknown>)[\n column.key\n ] as React.ReactNode)}\n </TableCell>\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </table>\n </div>\n\n {pagination && (\n <div className=\"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">\n Showing {(pagination.current - 1) * pagination.pageSize + 1} to{\" \"}\n {Math.min(\n pagination.current * pagination.pageSize,\n pagination.total,\n )}{\" \"}\n of {pagination.total} results\n </span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {pagination.showSizeChanger && (\n <select\n value={pagination.pageSize}\n onChange={(e) => pagination.onChange(1, Number(e.target.value))}\n className=\"rounded border-input bg-background text-sm\"\n aria-label=\"Select page size\"\n >\n <option value={10}>10 / page</option>\n <option value={20}>20 / page</option>\n <option value={50}>50 / page</option>\n <option value={100}>100 / page</option>\n </select>\n )}\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current - 1,\n pagination.pageSize,\n )\n }\n disabled={pagination.current <= 1}\n className=\"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to previous page\"\n >\n Previous\n </button>\n\n <span className=\"px-3 py-1 text-sm\">\n Page {pagination.current} of{\" \"}\n {Math.ceil(pagination.total / pagination.pageSize)}\n </span>\n\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current + 1,\n pagination.pageSize,\n )\n }\n disabled={\n pagination.current >=\n Math.ceil(pagination.total / pagination.pageSize)\n }\n className=\"px-3 py-1 text-sm border border-input rounded hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to next page\"\n >\n Next\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nconst TableForwardRef = React.forwardRef(TableComponent) as <\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n props: TableProps<T> & { ref?: React.Ref<HTMLTableElement> },\n) => React.ReactElement;\n\n(\n TableForwardRef as React.ComponentType<TableProps<unknown>> & {\n displayName?: string;\n }\n).displayName = \"Table\";\n\nexport const Table = TableForwardRef;\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n TableHeaderProps\n>(({ className, variant, size, children, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(tableHeaderVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </thead>\n));\n\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, children, ...props }, ref) => (\n <tbody ref={ref} className={cn(className)} {...props}>\n {children}\n </tbody>\n));\n\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, children, onClick, selected, variant, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n tableRowVariants({ variant }),\n selected && \"bg-primary/10\",\n onClick && \"cursor-pointer\",\n className,\n )}\n onClick={onClick}\n {...props}\n >\n {children}\n </tr>\n ),\n);\n\nTableRow.displayName = \"TableRow\";\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(tableCellVariants({ variant, size }), className)}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </td>\n ),\n);\n\nTableCell.displayName = \"TableCell\";\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n tableCellVariants({ variant, size }),\n \"font-medium\",\n className,\n )}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </th>\n ),\n);\n\nTableHead.displayName = \"TableHead\";\n\n// Export variants for external use\nexport { tableVariants, tableHeaderVariants, tableCellVariants };\n"]}
|