@hanzo/ui 5.3.19 → 5.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/3d/button.js +298 -1
  2. package/dist/3d/button.mjs +273 -1
  3. package/dist/3d/card.js +234 -1
  4. package/dist/3d/card.mjs +207 -1
  5. package/dist/3d/carousel.js +371 -1
  6. package/dist/3d/carousel.mjs +344 -1
  7. package/dist/3d/grid.js +362 -1
  8. package/dist/3d/grid.mjs +337 -1
  9. package/dist/3d/index.js +1518 -1
  10. package/dist/3d/index.mjs +1472 -1
  11. package/dist/3d/marquee.js +352 -1
  12. package/dist/3d/marquee.mjs +327 -1
  13. package/dist/3d/pin.js +46 -1
  14. package/dist/3d/pin.mjs +24 -1
  15. package/dist/accordion.js +80 -1
  16. package/dist/accordion.mjs +55 -1
  17. package/dist/alert-dialog.js +220 -1
  18. package/dist/alert-dialog.mjs +187 -1
  19. package/dist/alert.js +68 -1
  20. package/dist/alert.mjs +64 -1
  21. package/dist/animation/animated-background.js +424 -1
  22. package/dist/animation/animated-background.mjs +418 -1
  23. package/dist/animation/animated-beam.js +119 -1
  24. package/dist/animation/animated-beam.mjs +97 -1
  25. package/dist/animation/animated-cursor.js +275 -1
  26. package/dist/animation/animated-cursor.mjs +270 -1
  27. package/dist/animation/animated-icon.js +357 -2
  28. package/dist/animation/animated-icon.mjs +351 -2
  29. package/dist/animation/animated-list.js +339 -1
  30. package/dist/animation/animated-list.mjs +333 -1
  31. package/dist/animation/animated-number.js +283 -1
  32. package/dist/animation/animated-number.mjs +277 -1
  33. package/dist/animation/animated-testimonials.js +97 -1
  34. package/dist/animation/animated-testimonials.mjs +75 -1
  35. package/dist/animation/animated-tooltip.js +67 -1
  36. package/dist/animation/animated-tooltip.mjs +45 -1
  37. package/dist/animation/apple-cards-carousel.js +308 -1
  38. package/dist/animation/apple-cards-carousel.mjs +285 -1
  39. package/dist/animation/apple-hello-effect.js +60 -1
  40. package/dist/animation/apple-hello-effect.mjs +38 -1
  41. package/dist/animation/index.js +1952 -2
  42. package/dist/animation/index.mjs +1921 -2
  43. package/dist/avatar.js +71 -1
  44. package/dist/avatar.mjs +47 -1
  45. package/dist/badge.js +66 -1
  46. package/dist/badge.mjs +40 -1
  47. package/dist/blocks/index.js +1665 -2
  48. package/dist/blocks/index.mjs +1626 -2
  49. package/dist/breadcrumb.js +107 -1
  50. package/dist/breadcrumb.mjs +99 -1
  51. package/dist/calendar.js +189 -1
  52. package/dist/calendar.mjs +164 -1
  53. package/dist/carousel.js +278 -1
  54. package/dist/carousel.mjs +249 -1
  55. package/dist/checkbox.js +60 -1
  56. package/dist/checkbox.mjs +35 -1
  57. package/dist/code/block.js +226 -2
  58. package/dist/code/block.mjs +203 -2
  59. package/dist/code/compare.js +445 -5
  60. package/dist/code/compare.mjs +422 -5
  61. package/dist/code/diff.js +430 -12
  62. package/dist/code/diff.mjs +406 -11
  63. package/dist/code/editor.js +243 -1
  64. package/dist/code/editor.mjs +218 -1
  65. package/dist/code/explorer.js +291 -1
  66. package/dist/code/explorer.mjs +268 -1
  67. package/dist/code/index.js +2515 -26
  68. package/dist/code/index.mjs +2472 -24
  69. package/dist/code/preview.js +364 -6
  70. package/dist/code/preview.mjs +341 -6
  71. package/dist/code/snippet.js +274 -2
  72. package/dist/code/snippet.mjs +250 -2
  73. package/dist/code/tabs.js +75 -1
  74. package/dist/code/tabs.mjs +53 -1
  75. package/dist/code/terminal.js +437 -3
  76. package/dist/code/terminal.mjs +414 -3
  77. package/dist/collapsible.js +33 -1
  78. package/dist/collapsible.mjs +9 -1
  79. package/dist/command.js +262 -1
  80. package/dist/command.mjs +232 -1
  81. package/dist/context-menu.js +207 -1
  82. package/dist/context-menu.mjs +171 -1
  83. package/dist/device/index.js +3 -1
  84. package/dist/device/index.mjs +2 -0
  85. package/dist/dialog.js +151 -1
  86. package/dist/dialog.mjs +121 -1
  87. package/dist/dock/basic.js +174 -1
  88. package/dist/dock/basic.mjs +151 -1
  89. package/dist/dock/index.js +628 -1
  90. package/dist/dock/index.mjs +601 -1
  91. package/dist/dock/limelight-nav.js +295 -1
  92. package/dist/dock/limelight-nav.mjs +274 -1
  93. package/dist/dock/macos.js +141 -1
  94. package/dist/dock/macos.mjs +118 -1
  95. package/dist/dock/menu.js +70 -1
  96. package/dist/dock/menu.mjs +48 -1
  97. package/dist/dock/message.js +144 -1
  98. package/dist/dock/message.mjs +122 -1
  99. package/dist/drawer.js +115 -1
  100. package/dist/drawer.mjs +103 -1
  101. package/dist/dropdown-menu.js +202 -1
  102. package/dist/dropdown-menu.mjs +166 -1
  103. package/dist/finance/AdvancedChart.js +48 -2
  104. package/dist/finance/AdvancedChart.mjs +46 -2
  105. package/dist/finance/CompanyProfile.js +48 -2
  106. package/dist/finance/CompanyProfile.mjs +46 -2
  107. package/dist/finance/CryptoScreener.js +45 -2
  108. package/dist/finance/CryptoScreener.mjs +43 -2
  109. package/dist/finance/Financials.js +52 -2
  110. package/dist/finance/Financials.mjs +50 -2
  111. package/dist/finance/ForexScreener.js +46 -2
  112. package/dist/finance/ForexScreener.mjs +44 -2
  113. package/dist/finance/MarketOverview.js +104 -2
  114. package/dist/finance/MarketOverview.mjs +102 -2
  115. package/dist/finance/NewsTimeline.js +44 -2
  116. package/dist/finance/NewsTimeline.mjs +42 -2
  117. package/dist/finance/OrderEntry.js +131 -1
  118. package/dist/finance/OrderEntry.mjs +129 -1
  119. package/dist/finance/OrdersHistory.js +64 -1
  120. package/dist/finance/OrdersHistory.mjs +62 -1
  121. package/dist/finance/PositionsList.js +80 -1
  122. package/dist/finance/PositionsList.mjs +78 -1
  123. package/dist/finance/StockScreener.js +46 -2
  124. package/dist/finance/StockScreener.mjs +44 -2
  125. package/dist/finance/SymbolInfo.js +46 -2
  126. package/dist/finance/SymbolInfo.mjs +44 -2
  127. package/dist/finance/TechnicalAnalysis.js +54 -2
  128. package/dist/finance/TechnicalAnalysis.mjs +52 -2
  129. package/dist/finance/TickerTape.js +56 -2
  130. package/dist/finance/TickerTape.mjs +54 -2
  131. package/dist/finance/TradingPanel.js +191 -1
  132. package/dist/finance/TradingPanel.mjs +189 -1
  133. package/dist/finance/index.js +930 -2
  134. package/dist/finance/index.mjs +914 -2
  135. package/dist/form/index.js +155 -1
  136. package/dist/form/index.mjs +125 -1
  137. package/dist/form.js +172 -1
  138. package/dist/form.mjs +142 -1
  139. package/dist/hover-card.js +58 -1
  140. package/dist/hover-card.mjs +34 -1
  141. package/dist/index.js +8467 -192
  142. package/dist/index.mjs +8087 -192
  143. package/dist/input-otp.js +79 -1
  144. package/dist/input-otp.mjs +54 -1
  145. package/dist/lib/utils.js +28 -1
  146. package/dist/lib/utils.mjs +24 -1
  147. package/dist/navigation/index.js +98 -1
  148. package/dist/navigation/index.mjs +79 -1
  149. package/dist/navigation-menu.js +149 -1
  150. package/dist/navigation-menu.mjs +116 -1
  151. package/dist/pattern/grid-pattern.js +326 -3
  152. package/dist/pattern/grid-pattern.mjs +303 -3
  153. package/dist/pattern/index.js +326 -3
  154. package/dist/pattern/index.mjs +303 -3
  155. package/dist/popover.js +63 -1
  156. package/dist/popover.mjs +37 -1
  157. package/dist/primitives/index.js +8467 -192
  158. package/dist/primitives/index.mjs +8087 -192
  159. package/dist/primitives-export.js +8467 -192
  160. package/dist/primitives-export.mjs +8087 -192
  161. package/dist/progress.js +62 -1
  162. package/dist/progress.mjs +37 -1
  163. package/dist/project/gantt.js +65 -1
  164. package/dist/project/gantt.mjs +43 -1
  165. package/dist/project/index.js +636 -1
  166. package/dist/project/index.mjs +611 -1
  167. package/dist/project/kanban.js +597 -1
  168. package/dist/project/kanban.mjs +572 -1
  169. package/dist/project/list.js +35 -1
  170. package/dist/project/list.mjs +12 -1
  171. package/dist/radio-group.js +68 -1
  172. package/dist/radio-group.mjs +45 -1
  173. package/dist/resizable.js +72 -1
  174. package/dist/resizable.mjs +48 -1
  175. package/dist/scroll-area.js +89 -1
  176. package/dist/scroll-area.mjs +66 -1
  177. package/dist/select.js +140 -1
  178. package/dist/select.mjs +111 -1
  179. package/dist/separator.js +59 -1
  180. package/dist/separator.mjs +34 -1
  181. package/dist/sheet.js +148 -1
  182. package/dist/sheet.mjs +117 -1
  183. package/dist/skeleton.js +32 -1
  184. package/dist/skeleton.mjs +27 -1
  185. package/dist/slider.js +99 -1
  186. package/dist/slider.mjs +73 -1
  187. package/dist/sonner.js +34 -1
  188. package/dist/sonner.mjs +29 -1
  189. package/dist/switch.js +62 -1
  190. package/dist/switch.mjs +37 -1
  191. package/dist/table.js +110 -1
  192. package/dist/table.mjs +101 -1
  193. package/dist/tabs.js +82 -1
  194. package/dist/tabs.mjs +57 -1
  195. package/dist/tailwind/index.js +2023 -1
  196. package/dist/tailwind/index.mjs +2011 -1
  197. package/dist/textarea.js +78 -1
  198. package/dist/textarea.mjs +56 -1
  199. package/dist/toggle-group.js +118 -1
  200. package/dist/toggle-group.mjs +93 -1
  201. package/dist/toggle.js +71 -1
  202. package/dist/toggle.mjs +48 -1
  203. package/dist/tooltip.js +67 -1
  204. package/dist/tooltip.mjs +40 -1
  205. package/dist/types/index.js +57 -1
  206. package/dist/types/index.mjs +51 -1
  207. package/dist/ui/announcement.js +129 -1
  208. package/dist/ui/announcement.mjs +107 -1
  209. package/dist/ui/avatar-group.js +88 -1
  210. package/dist/ui/avatar-group.mjs +65 -1
  211. package/dist/ui/banner.js +85 -1
  212. package/dist/ui/banner.mjs +62 -1
  213. package/dist/ui/cursor.js +78 -1
  214. package/dist/ui/cursor.mjs +56 -1
  215. package/dist/ui/index.js +475 -1
  216. package/dist/ui/index.mjs +442 -1
  217. package/dist/ui/marquee.js +74 -1
  218. package/dist/ui/marquee.mjs +52 -1
  219. package/dist/ui/pill.js +85 -1
  220. package/dist/ui/pill.mjs +62 -1
  221. package/dist/ui/spinner.js +28 -1
  222. package/dist/ui/spinner.mjs +26 -1
  223. package/dist/ui/tags.js +101 -1
  224. package/dist/ui/tags.mjs +79 -1
  225. package/dist/ui/ticker.js +73 -1
  226. package/dist/ui/ticker.mjs +51 -1
  227. package/dist/util/index.js +457 -1
  228. package/dist/util/index.mjs +399 -1
  229. package/package.json +1 -1
package/dist/ui/index.mjs CHANGED
@@ -1 +1,442 @@
1
- import*as c from'react';import {Loader2,X,Loader2Icon}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {Slot}from'@radix-ui/react-slot';import {cva}from'class-variance-authority';import {jsxs,jsx}from'react/jsx-runtime';import*as d from'@radix-ui/react-avatar';var ee=Object.defineProperty;var l=(r,t)=>ee(r,"name",{value:t,configurable:true});function a(...r){return twMerge(clsx(r))}l(a,"cn");var se=cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline",primary:"bg-primary text-primary-foreground shadow hover:bg-primary/90",linkFG:"text-primary underline-offset-4 hover:underline",linkMuted:"text-muted-foreground underline-offset-4 hover:underline hover:text-foreground"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),x=c.forwardRef(({className:r,variant:t,size:e,asChild:o=false,isLoading:s=false,children:n,...i},p)=>jsxs(o?Slot:"button",{className:a(se({variant:t,size:e,className:r})),ref:p,...i,children:[s?jsx(Loader2,{className:a("h-4 w-4 animate-spin",e!=="icon"&&"mr-2")}):null,s&&e==="icon"?null:n]}));x.displayName="Button";var L=c.forwardRef(({className:r,children:t,dismissible:e=true,onDismiss:o,...s},n)=>{let[i,p]=c.useState(true),m=l(()=>{p(false),o?.();},"handleDismiss");return i?jsxs("div",{ref:n,className:a("relative flex items-center gap-4 rounded-lg border bg-background px-4 py-3 text-sm",r),...s,children:[jsx("div",{className:"flex-1",children:t}),e&&jsxs(x,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:m,children:[jsx(X,{className:"h-4 w-4"}),jsx("span",{className:"sr-only",children:"Dismiss"})]})]}):null});L.displayName="Announcement";var v=l(({className:r,ref:t,...e})=>jsx(d.Root,{className:a("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",r),ref:t,...e}),"Avatar");v.displayName=d.Root.displayName;var h=l(({className:r,ref:t,...e})=>jsx(d.Image,{className:a("aspect-square h-full w-full",r),ref:t,...e}),"AvatarImage");h.displayName=d.Image.displayName;var g=l(({className:r,ref:t,...e})=>jsx(d.Fallback,{className:a("bg-muted flex h-full w-full items-center justify-center rounded-full",r),ref:t,...e}),"AvatarFallback");g.displayName=d.Fallback.displayName;var C=c.forwardRef(({className:r,items:t,max:e=5,...o},s)=>{let n=t.slice(0,e),i=t.length-e;return jsxs("div",{ref:s,className:a("flex -space-x-4",r),...o,children:[n.map((p,m)=>jsxs(v,{className:"border-2 border-background",children:[jsx(h,{src:p.src,alt:p.alt}),jsx(g,{children:p.fallback})]},m)),i>0&&jsx(v,{className:"border-2 border-background",children:jsxs(g,{children:["+",i]})})]})});C.displayName="AvatarGroup";var B=cva("relative w-full border-b px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",info:"border-blue-500/50 bg-blue-50 text-blue-900 dark:bg-blue-950 dark:text-blue-100 [&>svg]:text-blue-600 dark:[&>svg]:text-blue-400",success:"border-green-500/50 bg-green-50 text-green-900 dark:bg-green-950 dark:text-green-100 [&>svg]:text-green-600 dark:[&>svg]:text-green-400",warning:"border-yellow-500/50 bg-yellow-50 text-yellow-900 dark:bg-yellow-950 dark:text-yellow-100 [&>svg]:text-yellow-600 dark:[&>svg]:text-yellow-400",error:"border-red-500/50 bg-red-50 text-red-900 dark:bg-red-950 dark:text-red-100 [&>svg]:text-red-600 dark:[&>svg]:text-red-400"}},defaultVariants:{variant:"default"}}),I=c.forwardRef(({className:r,variant:t,onClose:e,children:o,...s},n)=>jsxs("div",{ref:n,role:"alert",className:a(B({variant:t}),r),...s,children:[o,e&&jsxs("button",{type:"button",onClick:e,className:"absolute right-4 top-3 rounded-md p-1 hover:bg-black/5 dark:hover:bg-white/5",children:[jsx(X,{className:"h-4 w-4"}),jsx("span",{className:"sr-only",children:"Close"})]})]}));I.displayName="Banner";var F=c.forwardRef(({className:r,children:t,cursorText:e,cursorSize:o=20,...s},n)=>{let[i,p]=c.useState({x:0,y:0}),[m,f]=c.useState(false),j=l(b=>{let N=b.currentTarget.getBoundingClientRect();p({x:b.clientX-N.left,y:b.clientY-N.top});},"handleMouseMove");return jsxs("div",{ref:n,className:a("relative cursor-none",r),onMouseMove:j,onMouseEnter:()=>f(true),onMouseLeave:()=>f(false),...s,children:[t,m&&jsx("div",{className:"pointer-events-none absolute z-50 flex items-center justify-center rounded-full bg-primary/20 backdrop-blur-sm transition-transform",style:{left:i.x,top:i.y,width:o,height:o,transform:"translate(-50%, -50%)"},children:e&&jsx("span",{className:"text-xs font-medium text-primary",children:e})})]})});F.displayName="Cursor";var _=c.forwardRef(({className:r,children:t,repeat:e=2,reverse:o=false,pauseOnHover:s=false,vertical:n=false,...i},p)=>jsx("div",{ref:p,className:a("group flex overflow-hidden",n?"flex-col":"flex-row",r),...i,children:Array.from({length:e}).map((m,f)=>jsx("div",{className:a("flex shrink-0",n?"animate-marquee-vertical flex-col":"animate-marquee",o&&"[animation-direction:reverse]",s&&"group-hover:[animation-play-state:paused]"),children:t},f))}));_.displayName="Marquee";var U=cva("inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-sm font-medium transition-colors",{variants:{variant:{default:"bg-primary/10 text-primary hover:bg-primary/20",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",success:"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",warning:"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400",error:"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"}},defaultVariants:{variant:"default"}}),W=c.forwardRef(({className:r,variant:t,onRemove:e,children:o,...s},n)=>jsxs("span",{ref:n,className:a(U({variant:t}),r),...s,children:[o,e&&jsxs("button",{type:"button",onClick:e,className:"ml-0.5 rounded-full p-0.5 hover:bg-black/10 dark:hover:bg-white/10",children:[jsx(X,{className:"h-3 w-3"}),jsx("span",{className:"sr-only",children:"Remove"})]})]}));W.displayName="Pill";function ge({className:r,...t}){return jsx(Loader2Icon,{role:"status","aria-label":"Loading",className:a("size-4 animate-spin",r),...t})}l(ge,"Spinner");var ye=cva("focus:ring-ring border-divider inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-offset-2 focus:outline-hidden",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80 border-transparent shadow",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent shadow",outline:"hover:bg-bg-secondary text-text-secondary hover:text-text-default border border-gray-500 bg-transparent shadow-xs",inputAdornment:"bg-gray-600 px-2 font-medium text-white",tags:"text-text-secondary border-divider bg-bg-quaternary rounded-lg px-2 py-1 font-normal capitalize"}},defaultVariants:{variant:"default"}}),w=c.forwardRef(({className:r,variant:t,...e},o)=>jsx("div",{ref:o,className:a(ye({variant:t}),r),...e}));w.displayName="Badge";var K=c.forwardRef(({className:r,tags:t,onRemove:e,variant:o="default",...s},n)=>jsx("div",{ref:n,className:a("flex flex-wrap gap-2",r),...s,children:t.map(i=>jsxs(w,{variant:o,className:a("gap-1",e&&"pr-1"),children:[i.label,e&&jsxs("button",{type:"button",onClick:()=>e(i.id),className:"ml-1 rounded-full p-0.5 hover:bg-black/10 dark:hover:bg-white/10",children:[jsx(X,{className:"h-3 w-3"}),jsxs("span",{className:"sr-only",children:["Remove ",i.label]})]})]},i.id))}));K.displayName="Tags";var Z=c.forwardRef(({className:r,children:t,speed:e=50,direction:o="left",pauseOnHover:s=true,...n},i)=>jsx("div",{ref:i,className:a("group relative overflow-hidden",r),...n,children:jsxs("div",{className:a("flex w-fit animate-scroll",s&&"group-hover:[animation-play-state:paused]"),style:{animationDuration:`${e}s`,animationDirection:o==="right"?"reverse":"normal"},children:[t,t]})}));Z.displayName="Ticker";export{L as Announcement,C as AvatarGroup,I as Banner,F as Cursor,_ as Marquee,W as Pill,ge as Spinner,K as Tags,Z as Ticker,B as bannerVariants,U as pillVariants};
1
+ "use client";
2
+ import * as React5 from 'react';
3
+ import { Loader2, X, Loader2Icon } from 'lucide-react';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { Slot } from '@radix-ui/react-slot';
7
+ import { cva } from 'class-variance-authority';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
9
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
10
+
11
+ var __defProp = Object.defineProperty;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ function cn(...inputs) {
14
+ return twMerge(clsx(inputs));
15
+ }
16
+ __name(cn, "cn");
17
+ var buttonVariants = cva(
18
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
19
+ {
20
+ variants: {
21
+ variant: {
22
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
23
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
24
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
25
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
26
+ ghost: "hover:bg-accent hover:text-accent-foreground",
27
+ link: "text-primary underline-offset-4 hover:underline",
28
+ // Keep the additional Hanzo variants for backward compatibility
29
+ primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
30
+ linkFG: "text-primary underline-offset-4 hover:underline",
31
+ linkMuted: "text-muted-foreground underline-offset-4 hover:underline hover:text-foreground"
32
+ },
33
+ size: {
34
+ default: "h-9 px-4 py-2",
35
+ sm: "h-8 rounded-md px-3 text-xs",
36
+ lg: "h-10 rounded-md px-8",
37
+ icon: "h-9 w-9"
38
+ }
39
+ },
40
+ defaultVariants: {
41
+ variant: "default",
42
+ size: "default"
43
+ }
44
+ }
45
+ );
46
+ var Button = React5.forwardRef(
47
+ ({ className, variant, size, asChild = false, isLoading = false, children, ...props }, ref) => {
48
+ const Comp = asChild ? Slot : "button";
49
+ return /* @__PURE__ */ jsxs(
50
+ Comp,
51
+ {
52
+ className: cn(buttonVariants({ variant, size, className })),
53
+ ref,
54
+ ...props,
55
+ children: [
56
+ isLoading ? /* @__PURE__ */ jsx(
57
+ Loader2,
58
+ {
59
+ className: cn("h-4 w-4 animate-spin", size !== "icon" && "mr-2")
60
+ }
61
+ ) : null,
62
+ isLoading && size === "icon" ? null : children
63
+ ]
64
+ }
65
+ );
66
+ }
67
+ );
68
+ Button.displayName = "Button";
69
+ var Announcement = React5.forwardRef(
70
+ ({ className, children, dismissible = true, onDismiss, ...props }, ref) => {
71
+ const [isVisible, setIsVisible] = React5.useState(true);
72
+ const handleDismiss = /* @__PURE__ */ __name(() => {
73
+ setIsVisible(false);
74
+ onDismiss?.();
75
+ }, "handleDismiss");
76
+ if (!isVisible) return null;
77
+ return /* @__PURE__ */ jsxs(
78
+ "div",
79
+ {
80
+ ref,
81
+ className: cn(
82
+ "relative flex items-center gap-4 rounded-lg border bg-background px-4 py-3 text-sm",
83
+ className
84
+ ),
85
+ ...props,
86
+ children: [
87
+ /* @__PURE__ */ jsx("div", { className: "flex-1", children }),
88
+ dismissible && /* @__PURE__ */ jsxs(
89
+ Button,
90
+ {
91
+ variant: "ghost",
92
+ size: "icon",
93
+ className: "h-6 w-6",
94
+ onClick: handleDismiss,
95
+ children: [
96
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
97
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Dismiss" })
98
+ ]
99
+ }
100
+ )
101
+ ]
102
+ }
103
+ );
104
+ }
105
+ );
106
+ Announcement.displayName = "Announcement";
107
+ var Avatar = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
108
+ AvatarPrimitive.Root,
109
+ {
110
+ className: cn(
111
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
112
+ className
113
+ ),
114
+ ref,
115
+ ...props
116
+ }
117
+ ), "Avatar");
118
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
119
+ var AvatarImage = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
120
+ AvatarPrimitive.Image,
121
+ {
122
+ className: cn("aspect-square h-full w-full", className),
123
+ ref,
124
+ ...props
125
+ }
126
+ ), "AvatarImage");
127
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
128
+ var AvatarFallback = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
129
+ AvatarPrimitive.Fallback,
130
+ {
131
+ className: cn(
132
+ "bg-muted flex h-full w-full items-center justify-center rounded-full",
133
+ className
134
+ ),
135
+ ref,
136
+ ...props
137
+ }
138
+ ), "AvatarFallback");
139
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
140
+ var AvatarGroup = React5.forwardRef(
141
+ ({ className, items, max = 5, ...props }, ref) => {
142
+ const displayItems = items.slice(0, max);
143
+ const remaining = items.length - max;
144
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex -space-x-4", className), ...props, children: [
145
+ displayItems.map((item, index) => /* @__PURE__ */ jsxs(Avatar, { className: "border-2 border-background", children: [
146
+ /* @__PURE__ */ jsx(AvatarImage, { src: item.src, alt: item.alt }),
147
+ /* @__PURE__ */ jsx(AvatarFallback, { children: item.fallback })
148
+ ] }, index)),
149
+ remaining > 0 && /* @__PURE__ */ jsx(Avatar, { className: "border-2 border-background", children: /* @__PURE__ */ jsxs(AvatarFallback, { children: [
150
+ "+",
151
+ remaining
152
+ ] }) })
153
+ ] });
154
+ }
155
+ );
156
+ AvatarGroup.displayName = "AvatarGroup";
157
+ var bannerVariants = cva(
158
+ "relative w-full border-b px-4 py-3 text-sm [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
159
+ {
160
+ variants: {
161
+ variant: {
162
+ default: "bg-background text-foreground",
163
+ info: "border-blue-500/50 bg-blue-50 text-blue-900 dark:bg-blue-950 dark:text-blue-100 [&>svg]:text-blue-600 dark:[&>svg]:text-blue-400",
164
+ success: "border-green-500/50 bg-green-50 text-green-900 dark:bg-green-950 dark:text-green-100 [&>svg]:text-green-600 dark:[&>svg]:text-green-400",
165
+ warning: "border-yellow-500/50 bg-yellow-50 text-yellow-900 dark:bg-yellow-950 dark:text-yellow-100 [&>svg]:text-yellow-600 dark:[&>svg]:text-yellow-400",
166
+ error: "border-red-500/50 bg-red-50 text-red-900 dark:bg-red-950 dark:text-red-100 [&>svg]:text-red-600 dark:[&>svg]:text-red-400"
167
+ }
168
+ },
169
+ defaultVariants: {
170
+ variant: "default"
171
+ }
172
+ }
173
+ );
174
+ var Banner = React5.forwardRef(
175
+ ({ className, variant, onClose, children, ...props }, ref) => {
176
+ return /* @__PURE__ */ jsxs(
177
+ "div",
178
+ {
179
+ ref,
180
+ role: "alert",
181
+ className: cn(bannerVariants({ variant }), className),
182
+ ...props,
183
+ children: [
184
+ children,
185
+ onClose && /* @__PURE__ */ jsxs(
186
+ "button",
187
+ {
188
+ type: "button",
189
+ onClick: onClose,
190
+ className: "absolute right-4 top-3 rounded-md p-1 hover:bg-black/5 dark:hover:bg-white/5",
191
+ children: [
192
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
193
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
194
+ ]
195
+ }
196
+ )
197
+ ]
198
+ }
199
+ );
200
+ }
201
+ );
202
+ Banner.displayName = "Banner";
203
+ var Cursor = React5.forwardRef(
204
+ ({ className, children, cursorText, cursorSize = 20, ...props }, ref) => {
205
+ const [position, setPosition] = React5.useState({ x: 0, y: 0 });
206
+ const [isHovered, setIsHovered] = React5.useState(false);
207
+ const handleMouseMove = /* @__PURE__ */ __name((e) => {
208
+ const rect = e.currentTarget.getBoundingClientRect();
209
+ setPosition({
210
+ x: e.clientX - rect.left,
211
+ y: e.clientY - rect.top
212
+ });
213
+ }, "handleMouseMove");
214
+ return /* @__PURE__ */ jsxs(
215
+ "div",
216
+ {
217
+ ref,
218
+ className: cn("relative cursor-none", className),
219
+ onMouseMove: handleMouseMove,
220
+ onMouseEnter: () => setIsHovered(true),
221
+ onMouseLeave: () => setIsHovered(false),
222
+ ...props,
223
+ children: [
224
+ children,
225
+ isHovered && /* @__PURE__ */ jsx(
226
+ "div",
227
+ {
228
+ className: "pointer-events-none absolute z-50 flex items-center justify-center rounded-full bg-primary/20 backdrop-blur-sm transition-transform",
229
+ style: {
230
+ left: position.x,
231
+ top: position.y,
232
+ width: cursorSize,
233
+ height: cursorSize,
234
+ transform: "translate(-50%, -50%)"
235
+ },
236
+ children: cursorText && /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-primary", children: cursorText })
237
+ }
238
+ )
239
+ ]
240
+ }
241
+ );
242
+ }
243
+ );
244
+ Cursor.displayName = "Cursor";
245
+ var Marquee = React5.forwardRef(
246
+ ({
247
+ className,
248
+ children,
249
+ repeat = 2,
250
+ reverse = false,
251
+ pauseOnHover = false,
252
+ vertical = false,
253
+ ...props
254
+ }, ref) => {
255
+ return /* @__PURE__ */ jsx(
256
+ "div",
257
+ {
258
+ ref,
259
+ className: cn(
260
+ "group flex overflow-hidden",
261
+ vertical ? "flex-col" : "flex-row",
262
+ className
263
+ ),
264
+ ...props,
265
+ children: Array.from({ length: repeat }).map((_, i) => /* @__PURE__ */ jsx(
266
+ "div",
267
+ {
268
+ className: cn(
269
+ "flex shrink-0",
270
+ vertical ? "animate-marquee-vertical flex-col" : "animate-marquee",
271
+ reverse && (vertical ? "[animation-direction:reverse]" : "[animation-direction:reverse]"),
272
+ pauseOnHover && "group-hover:[animation-play-state:paused]"
273
+ ),
274
+ children
275
+ },
276
+ i
277
+ ))
278
+ }
279
+ );
280
+ }
281
+ );
282
+ Marquee.displayName = "Marquee";
283
+ var pillVariants = cva(
284
+ "inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-sm font-medium transition-colors",
285
+ {
286
+ variants: {
287
+ variant: {
288
+ default: "bg-primary/10 text-primary hover:bg-primary/20",
289
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
290
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
291
+ success: "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",
292
+ warning: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400",
293
+ error: "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"
294
+ }
295
+ },
296
+ defaultVariants: {
297
+ variant: "default"
298
+ }
299
+ }
300
+ );
301
+ var Pill = React5.forwardRef(
302
+ ({ className, variant, onRemove, children, ...props }, ref) => {
303
+ return /* @__PURE__ */ jsxs(
304
+ "span",
305
+ {
306
+ ref,
307
+ className: cn(pillVariants({ variant }), className),
308
+ ...props,
309
+ children: [
310
+ children,
311
+ onRemove && /* @__PURE__ */ jsxs(
312
+ "button",
313
+ {
314
+ type: "button",
315
+ onClick: onRemove,
316
+ className: "ml-0.5 rounded-full p-0.5 hover:bg-black/10 dark:hover:bg-white/10",
317
+ children: [
318
+ /* @__PURE__ */ jsx(X, { className: "h-3 w-3" }),
319
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Remove" })
320
+ ]
321
+ }
322
+ )
323
+ ]
324
+ }
325
+ );
326
+ }
327
+ );
328
+ Pill.displayName = "Pill";
329
+ function Spinner({ className, ...props }) {
330
+ return /* @__PURE__ */ jsx(
331
+ Loader2Icon,
332
+ {
333
+ role: "status",
334
+ "aria-label": "Loading",
335
+ className: cn("size-4 animate-spin", className),
336
+ ...props
337
+ }
338
+ );
339
+ }
340
+ __name(Spinner, "Spinner");
341
+ var badgeVariants = cva(
342
+ "focus:ring-ring border-divider inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-offset-2 focus:outline-hidden",
343
+ {
344
+ variants: {
345
+ variant: {
346
+ default: "bg-primary text-primary-foreground hover:bg-primary/80 border-transparent shadow",
347
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent",
348
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent shadow",
349
+ outline: "hover:bg-bg-secondary text-text-secondary hover:text-text-default border border-gray-500 bg-transparent shadow-xs",
350
+ inputAdornment: "bg-gray-600 px-2 font-medium text-white",
351
+ tags: "text-text-secondary border-divider bg-bg-quaternary rounded-lg px-2 py-1 font-normal capitalize"
352
+ }
353
+ },
354
+ defaultVariants: {
355
+ variant: "default"
356
+ }
357
+ }
358
+ );
359
+ var Badge = React5.forwardRef(
360
+ ({ className, variant, ...props }, ref) => {
361
+ return /* @__PURE__ */ jsx("div", { ref, className: cn(badgeVariants({ variant }), className), ...props });
362
+ }
363
+ );
364
+ Badge.displayName = "Badge";
365
+ var Tags = React5.forwardRef(
366
+ ({ className, tags, onRemove, variant = "default", ...props }, ref) => {
367
+ return /* @__PURE__ */ jsx(
368
+ "div",
369
+ {
370
+ ref,
371
+ className: cn("flex flex-wrap gap-2", className),
372
+ ...props,
373
+ children: tags.map((tag) => /* @__PURE__ */ jsxs(
374
+ Badge,
375
+ {
376
+ variant,
377
+ className: cn("gap-1", onRemove && "pr-1"),
378
+ children: [
379
+ tag.label,
380
+ onRemove && /* @__PURE__ */ jsxs(
381
+ "button",
382
+ {
383
+ type: "button",
384
+ onClick: () => onRemove(tag.id),
385
+ className: "ml-1 rounded-full p-0.5 hover:bg-black/10 dark:hover:bg-white/10",
386
+ children: [
387
+ /* @__PURE__ */ jsx(X, { className: "h-3 w-3" }),
388
+ /* @__PURE__ */ jsxs("span", { className: "sr-only", children: [
389
+ "Remove ",
390
+ tag.label
391
+ ] })
392
+ ]
393
+ }
394
+ )
395
+ ]
396
+ },
397
+ tag.id
398
+ ))
399
+ }
400
+ );
401
+ }
402
+ );
403
+ Tags.displayName = "Tags";
404
+ var Ticker = React5.forwardRef(
405
+ ({
406
+ className,
407
+ children,
408
+ speed = 50,
409
+ direction = "left",
410
+ pauseOnHover = true,
411
+ ...props
412
+ }, ref) => {
413
+ return /* @__PURE__ */ jsx(
414
+ "div",
415
+ {
416
+ ref,
417
+ className: cn("group relative overflow-hidden", className),
418
+ ...props,
419
+ children: /* @__PURE__ */ jsxs(
420
+ "div",
421
+ {
422
+ className: cn(
423
+ "flex w-fit animate-scroll",
424
+ pauseOnHover && "group-hover:[animation-play-state:paused]"
425
+ ),
426
+ style: {
427
+ animationDuration: `${speed}s`,
428
+ animationDirection: direction === "right" ? "reverse" : "normal"
429
+ },
430
+ children: [
431
+ children,
432
+ children
433
+ ]
434
+ }
435
+ )
436
+ }
437
+ );
438
+ }
439
+ );
440
+ Ticker.displayName = "Ticker";
441
+
442
+ export { Announcement, AvatarGroup, Banner, Cursor, Marquee, Pill, Spinner, Tags, Ticker, bannerVariants, pillVariants };
@@ -1 +1,74 @@
1
- 'use strict';var i=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');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 i__namespace=/*#__PURE__*/_interopNamespace(i);var p=Object.defineProperty;var o=(e,r)=>p(e,"name",{value:r,configurable:true});function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}o(t,"cn");var x=i__namespace.forwardRef(({className:e,children:r,repeat:s=2,reverse:l=false,pauseOnHover:m=false,vertical:a=false,...u},c)=>jsxRuntime.jsx("div",{ref:c,className:t("group flex overflow-hidden",a?"flex-col":"flex-row",e),...u,children:Array.from({length:s}).map((g,f)=>jsxRuntime.jsx("div",{className:t("flex shrink-0",a?"animate-marquee-vertical flex-col":"animate-marquee",l&&"[animation-direction:reverse]",m&&"group-hover:[animation-play-state:paused]"),children:r},f))}));x.displayName="Marquee";exports.Marquee=x;
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var clsx = require('clsx');
6
+ var tailwindMerge = require('tailwind-merge');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
29
+ var __defProp = Object.defineProperty;
30
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
31
+ function cn(...inputs) {
32
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
33
+ }
34
+ __name(cn, "cn");
35
+ var Marquee = React__namespace.forwardRef(
36
+ ({
37
+ className,
38
+ children,
39
+ repeat = 2,
40
+ reverse = false,
41
+ pauseOnHover = false,
42
+ vertical = false,
43
+ ...props
44
+ }, ref) => {
45
+ return /* @__PURE__ */ jsxRuntime.jsx(
46
+ "div",
47
+ {
48
+ ref,
49
+ className: cn(
50
+ "group flex overflow-hidden",
51
+ vertical ? "flex-col" : "flex-row",
52
+ className
53
+ ),
54
+ ...props,
55
+ children: Array.from({ length: repeat }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
56
+ "div",
57
+ {
58
+ className: cn(
59
+ "flex shrink-0",
60
+ vertical ? "animate-marquee-vertical flex-col" : "animate-marquee",
61
+ reverse && (vertical ? "[animation-direction:reverse]" : "[animation-direction:reverse]"),
62
+ pauseOnHover && "group-hover:[animation-play-state:paused]"
63
+ ),
64
+ children
65
+ },
66
+ i
67
+ ))
68
+ }
69
+ );
70
+ }
71
+ );
72
+ Marquee.displayName = "Marquee";
73
+
74
+ exports.Marquee = Marquee;
@@ -1 +1,52 @@
1
- import*as i from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';var p=Object.defineProperty;var o=(e,r)=>p(e,"name",{value:r,configurable:true});function t(...e){return twMerge(clsx(e))}o(t,"cn");var x=i.forwardRef(({className:e,children:r,repeat:s=2,reverse:l=false,pauseOnHover:m=false,vertical:a=false,...u},c)=>jsx("div",{ref:c,className:t("group flex overflow-hidden",a?"flex-col":"flex-row",e),...u,children:Array.from({length:s}).map((g,f)=>jsx("div",{className:t("flex shrink-0",a?"animate-marquee-vertical flex-col":"animate-marquee",l&&"[animation-direction:reverse]",m&&"group-hover:[animation-play-state:paused]"),children:r},f))}));x.displayName="Marquee";export{x as Marquee};
1
+ "use client";
2
+ import * as React from 'react';
3
+ import { clsx } from 'clsx';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ __name(cn, "cn");
13
+ var Marquee = React.forwardRef(
14
+ ({
15
+ className,
16
+ children,
17
+ repeat = 2,
18
+ reverse = false,
19
+ pauseOnHover = false,
20
+ vertical = false,
21
+ ...props
22
+ }, ref) => {
23
+ return /* @__PURE__ */ jsx(
24
+ "div",
25
+ {
26
+ ref,
27
+ className: cn(
28
+ "group flex overflow-hidden",
29
+ vertical ? "flex-col" : "flex-row",
30
+ className
31
+ ),
32
+ ...props,
33
+ children: Array.from({ length: repeat }).map((_, i) => /* @__PURE__ */ jsx(
34
+ "div",
35
+ {
36
+ className: cn(
37
+ "flex shrink-0",
38
+ vertical ? "animate-marquee-vertical flex-col" : "animate-marquee",
39
+ reverse && (vertical ? "[animation-direction:reverse]" : "[animation-direction:reverse]"),
40
+ pauseOnHover && "group-hover:[animation-play-state:paused]"
41
+ ),
42
+ children
43
+ },
44
+ i
45
+ ))
46
+ }
47
+ );
48
+ }
49
+ );
50
+ Marquee.displayName = "Marquee";
51
+
52
+ export { Marquee };
package/dist/ui/pill.js CHANGED
@@ -1 +1,85 @@
1
- 'use strict';var s=require('react'),classVarianceAuthority=require('class-variance-authority'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');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 s__namespace=/*#__PURE__*/_interopNamespace(s);var d=Object.defineProperty;var a=(e,r)=>d(e,"name",{value:r,configurable:true});function n(...e){return tailwindMerge.twMerge(clsx.clsx(e))}a(n,"cn");var f=classVarianceAuthority.cva("inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-sm font-medium transition-colors",{variants:{variant:{default:"bg-primary/10 text-primary hover:bg-primary/20",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",success:"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",warning:"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400",error:"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"}},defaultVariants:{variant:"default"}}),y=s__namespace.forwardRef(({className:e,variant:r,onRemove:t,children:i,...p},c)=>jsxRuntime.jsxs("span",{ref:c,className:n(f({variant:r}),e),...p,children:[i,t&&jsxRuntime.jsxs("button",{type:"button",onClick:t,className:"ml-0.5 rounded-full p-0.5 hover:bg-black/10 dark:hover:bg-white/10",children:[jsxRuntime.jsx(lucideReact.X,{className:"h-3 w-3"}),jsxRuntime.jsx("span",{className:"sr-only",children:"Remove"})]})]}));y.displayName="Pill";exports.Pill=y;exports.pillVariants=f;
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var lucideReact = require('lucide-react');
7
+ var clsx = require('clsx');
8
+ var tailwindMerge = require('tailwind-merge');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
+
31
+ var __defProp = Object.defineProperty;
32
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
33
+ function cn(...inputs) {
34
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
35
+ }
36
+ __name(cn, "cn");
37
+ var pillVariants = classVarianceAuthority.cva(
38
+ "inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-sm font-medium transition-colors",
39
+ {
40
+ variants: {
41
+ variant: {
42
+ default: "bg-primary/10 text-primary hover:bg-primary/20",
43
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
44
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
45
+ success: "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",
46
+ warning: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400",
47
+ error: "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"
48
+ }
49
+ },
50
+ defaultVariants: {
51
+ variant: "default"
52
+ }
53
+ }
54
+ );
55
+ var Pill = React__namespace.forwardRef(
56
+ ({ className, variant, onRemove, children, ...props }, ref) => {
57
+ return /* @__PURE__ */ jsxRuntime.jsxs(
58
+ "span",
59
+ {
60
+ ref,
61
+ className: cn(pillVariants({ variant }), className),
62
+ ...props,
63
+ children: [
64
+ children,
65
+ onRemove && /* @__PURE__ */ jsxRuntime.jsxs(
66
+ "button",
67
+ {
68
+ type: "button",
69
+ onClick: onRemove,
70
+ className: "ml-0.5 rounded-full p-0.5 hover:bg-black/10 dark:hover:bg-white/10",
71
+ children: [
72
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-3 w-3" }),
73
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Remove" })
74
+ ]
75
+ }
76
+ )
77
+ ]
78
+ }
79
+ );
80
+ }
81
+ );
82
+ Pill.displayName = "Pill";
83
+
84
+ exports.Pill = Pill;
85
+ exports.pillVariants = pillVariants;