@bzync/rui 0.0.3

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 (263) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +115 -0
  3. package/dist/autocomplete-CaysJRpk.cjs +1 -0
  4. package/dist/autocomplete-CfbfpcO4.js +453 -0
  5. package/dist/calendar-Bnld4G59.cjs +1 -0
  6. package/dist/calendar-CdICOROs.js +573 -0
  7. package/dist/charts-CxEy2c3M.js +1248 -0
  8. package/dist/charts-UDqS1BH1.cjs +1 -0
  9. package/dist/cn-BdjraxxU.cjs +1 -0
  10. package/dist/cn-DpgY2leY.js +1736 -0
  11. package/dist/component-styles-Ce56hn9T.js +16 -0
  12. package/dist/component-styles-TkZ7v6Ef.cjs +1 -0
  13. package/dist/components/accordion.cjs +1 -0
  14. package/dist/components/accordion.d.ts +22 -0
  15. package/dist/components/accordion.js +122 -0
  16. package/dist/components/alert.cjs +1 -0
  17. package/dist/components/alert.d.ts +13 -0
  18. package/dist/components/alert.js +165 -0
  19. package/dist/components/auth-backdrop.cjs +1 -0
  20. package/dist/components/auth-backdrop.d.ts +7 -0
  21. package/dist/components/auth-backdrop.js +10 -0
  22. package/dist/components/autocomplete/dropdown.d.ts +21 -0
  23. package/dist/components/autocomplete/icons.d.ts +8 -0
  24. package/dist/components/autocomplete/multi-trigger.d.ts +25 -0
  25. package/dist/components/autocomplete/single-trigger.d.ts +21 -0
  26. package/dist/components/autocomplete/types.d.ts +34 -0
  27. package/dist/components/autocomplete.cjs +1 -0
  28. package/dist/components/autocomplete.d.ts +5 -0
  29. package/dist/components/autocomplete.js +3 -0
  30. package/dist/components/avatar.cjs +1 -0
  31. package/dist/components/avatar.d.ts +17 -0
  32. package/dist/components/avatar.js +56 -0
  33. package/dist/components/badge.cjs +1 -0
  34. package/dist/components/badge.d.ts +12 -0
  35. package/dist/components/badge.js +32 -0
  36. package/dist/components/billing-interval-toggle.cjs +1 -0
  37. package/dist/components/billing-interval-toggle.d.ts +18 -0
  38. package/dist/components/billing-interval-toggle.js +39 -0
  39. package/dist/components/breadcrumb.cjs +1 -0
  40. package/dist/components/breadcrumb.d.ts +11 -0
  41. package/dist/components/breadcrumb.js +52 -0
  42. package/dist/components/button.cjs +1 -0
  43. package/dist/components/button.d.ts +17 -0
  44. package/dist/components/button.js +90 -0
  45. package/dist/components/calendar/month-view.d.ts +17 -0
  46. package/dist/components/calendar/types.d.ts +54 -0
  47. package/dist/components/calendar/week-view.d.ts +17 -0
  48. package/dist/components/calendar.cjs +1 -0
  49. package/dist/components/calendar.d.ts +3 -0
  50. package/dist/components/calendar.js +3 -0
  51. package/dist/components/callout.cjs +1 -0
  52. package/dist/components/callout.d.ts +9 -0
  53. package/dist/components/callout.js +131 -0
  54. package/dist/components/card.cjs +1 -0
  55. package/dist/components/card.d.ts +17 -0
  56. package/dist/components/card.js +59 -0
  57. package/dist/components/charts/bar-chart.d.ts +16 -0
  58. package/dist/components/charts/donut-chart.d.ts +10 -0
  59. package/dist/components/charts/funnel-chart.d.ts +8 -0
  60. package/dist/components/charts/gantt-chart.d.ts +15 -0
  61. package/dist/components/charts/heatmap-chart.d.ts +10 -0
  62. package/dist/components/charts/index.d.ts +11 -0
  63. package/dist/components/charts/line-chart.d.ts +16 -0
  64. package/dist/components/charts/multi-line-chart.d.ts +18 -0
  65. package/dist/components/charts/radar-chart.d.ts +13 -0
  66. package/dist/components/charts/scatter-chart.d.ts +24 -0
  67. package/dist/components/charts/shared.d.ts +15 -0
  68. package/dist/components/charts/waterfall-chart.d.ts +14 -0
  69. package/dist/components/charts.cjs +1 -0
  70. package/dist/components/charts.d.ts +2 -0
  71. package/dist/components/charts.js +2 -0
  72. package/dist/components/checkbox.cjs +1 -0
  73. package/dist/components/checkbox.d.ts +9 -0
  74. package/dist/components/checkbox.js +135 -0
  75. package/dist/components/code.cjs +7 -0
  76. package/dist/components/code.d.ts +23 -0
  77. package/dist/components/code.js +276 -0
  78. package/dist/components/command.cjs +1 -0
  79. package/dist/components/command.d.ts +29 -0
  80. package/dist/components/command.js +208 -0
  81. package/dist/components/confirm-dialog.cjs +1 -0
  82. package/dist/components/confirm-dialog.d.ts +14 -0
  83. package/dist/components/confirm-dialog.js +69 -0
  84. package/dist/components/copy-button.cjs +1 -0
  85. package/dist/components/copy-button.d.ts +8 -0
  86. package/dist/components/copy-button.js +87 -0
  87. package/dist/components/datatable/pagination-footer.d.ts +10 -0
  88. package/dist/components/datatable/rows-dropdown.d.ts +5 -0
  89. package/dist/components/datatable/skeleton-row.d.ts +3 -0
  90. package/dist/components/datatable/sort-icon.d.ts +4 -0
  91. package/dist/components/datatable/types.d.ts +30 -0
  92. package/dist/components/datatable.cjs +1 -0
  93. package/dist/components/datatable.d.ts +9 -0
  94. package/dist/components/datatable.js +3 -0
  95. package/dist/components/datepicker.cjs +1 -0
  96. package/dist/components/datepicker.d.ts +14 -0
  97. package/dist/components/datepicker.js +267 -0
  98. package/dist/components/drawer.cjs +1 -0
  99. package/dist/components/drawer.d.ts +18 -0
  100. package/dist/components/drawer.js +3 -0
  101. package/dist/components/dropdown-menu.cjs +1 -0
  102. package/dist/components/dropdown-menu.d.ts +26 -0
  103. package/dist/components/dropdown-menu.js +122 -0
  104. package/dist/components/empty-state.cjs +1 -0
  105. package/dist/components/empty-state.d.ts +10 -0
  106. package/dist/components/empty-state.js +68 -0
  107. package/dist/components/error-state.cjs +1 -0
  108. package/dist/components/error-state.d.ts +10 -0
  109. package/dist/components/error-state.js +80 -0
  110. package/dist/components/file-upload.cjs +1 -0
  111. package/dist/components/file-upload.d.ts +10 -0
  112. package/dist/components/file-upload.js +173 -0
  113. package/dist/components/form-field.cjs +1 -0
  114. package/dist/components/form-field.d.ts +10 -0
  115. package/dist/components/form-field.js +36 -0
  116. package/dist/components/info-button.cjs +1 -0
  117. package/dist/components/info-button.d.ts +4 -0
  118. package/dist/components/info-button.js +32 -0
  119. package/dist/components/input.cjs +1 -0
  120. package/dist/components/input.d.ts +19 -0
  121. package/dist/components/input.js +117 -0
  122. package/dist/components/kbd.cjs +1 -0
  123. package/dist/components/kbd.d.ts +6 -0
  124. package/dist/components/kbd.js +16 -0
  125. package/dist/components/label.cjs +1 -0
  126. package/dist/components/label.d.ts +6 -0
  127. package/dist/components/label.js +31 -0
  128. package/dist/components/layout.cjs +1 -0
  129. package/dist/components/layout.d.ts +51 -0
  130. package/dist/components/layout.js +117 -0
  131. package/dist/components/link.cjs +1 -0
  132. package/dist/components/link.d.ts +9 -0
  133. package/dist/components/link.js +48 -0
  134. package/dist/components/list.cjs +1 -0
  135. package/dist/components/list.d.ts +13 -0
  136. package/dist/components/list.js +46 -0
  137. package/dist/components/modal.cjs +1 -0
  138. package/dist/components/modal.d.ts +31 -0
  139. package/dist/components/modal.js +219 -0
  140. package/dist/components/navigation.cjs +1 -0
  141. package/dist/components/navigation.d.ts +42 -0
  142. package/dist/components/navigation.js +127 -0
  143. package/dist/components/number-input.cjs +1 -0
  144. package/dist/components/number-input.d.ts +16 -0
  145. package/dist/components/number-input.js +142 -0
  146. package/dist/components/otp-input.cjs +1 -0
  147. package/dist/components/otp-input.d.ts +13 -0
  148. package/dist/components/otp-input.js +71 -0
  149. package/dist/components/pagination.cjs +1 -0
  150. package/dist/components/pagination.d.ts +8 -0
  151. package/dist/components/pagination.js +77 -0
  152. package/dist/components/popover.cjs +1 -0
  153. package/dist/components/popover.d.ts +16 -0
  154. package/dist/components/popover.js +115 -0
  155. package/dist/components/progressbar.cjs +1 -0
  156. package/dist/components/progressbar.d.ts +15 -0
  157. package/dist/components/progressbar.js +108 -0
  158. package/dist/components/radio.cjs +1 -0
  159. package/dist/components/radio.d.ts +22 -0
  160. package/dist/components/radio.js +96 -0
  161. package/dist/components/richtext.cjs +1 -0
  162. package/dist/components/richtext.d.ts +10 -0
  163. package/dist/components/richtext.js +370 -0
  164. package/dist/components/select/option-list.d.ts +16 -0
  165. package/dist/components/select/select-multi.d.ts +2 -0
  166. package/dist/components/select/select-single.d.ts +2 -0
  167. package/dist/components/select/types.d.ts +54 -0
  168. package/dist/components/select/utils.d.ts +10 -0
  169. package/dist/components/select.cjs +1 -0
  170. package/dist/components/select.d.ts +3 -0
  171. package/dist/components/select.js +2 -0
  172. package/dist/components/seo.cjs +1 -0
  173. package/dist/components/seo.d.ts +45 -0
  174. package/dist/components/seo.js +64 -0
  175. package/dist/components/separator.cjs +1 -0
  176. package/dist/components/separator.d.ts +6 -0
  177. package/dist/components/separator.js +25 -0
  178. package/dist/components/skeleton.cjs +1 -0
  179. package/dist/components/skeleton.d.ts +37 -0
  180. package/dist/components/skeleton.js +146 -0
  181. package/dist/components/slider.cjs +1 -0
  182. package/dist/components/slider.d.ts +12 -0
  183. package/dist/components/slider.js +72 -0
  184. package/dist/components/snackbar.cjs +1 -0
  185. package/dist/components/snackbar.d.ts +35 -0
  186. package/dist/components/snackbar.js +220 -0
  187. package/dist/components/spinner.cjs +1 -0
  188. package/dist/components/spinner.d.ts +7 -0
  189. package/dist/components/spinner.js +31 -0
  190. package/dist/components/stat.cjs +1 -0
  191. package/dist/components/stat.d.ts +18 -0
  192. package/dist/components/stat.js +90 -0
  193. package/dist/components/status-dot.cjs +1 -0
  194. package/dist/components/status-dot.d.ts +10 -0
  195. package/dist/components/status-dot.js +29 -0
  196. package/dist/components/stepper.cjs +1 -0
  197. package/dist/components/stepper.d.ts +11 -0
  198. package/dist/components/stepper.js +67 -0
  199. package/dist/components/switch.cjs +1 -0
  200. package/dist/components/switch.d.ts +8 -0
  201. package/dist/components/switch.js +79 -0
  202. package/dist/components/table.cjs +1 -0
  203. package/dist/components/table.d.ts +12 -0
  204. package/dist/components/table.js +54 -0
  205. package/dist/components/tabs.cjs +1 -0
  206. package/dist/components/tabs.d.ts +22 -0
  207. package/dist/components/tabs.js +120 -0
  208. package/dist/components/tag.cjs +1 -0
  209. package/dist/components/tag.d.ts +12 -0
  210. package/dist/components/tag.js +58 -0
  211. package/dist/components/terminal/fs.d.ts +10 -0
  212. package/dist/components/terminal/shell-commands-sim.d.ts +5 -0
  213. package/dist/components/terminal/shell-commands.d.ts +16 -0
  214. package/dist/components/terminal/shell-run.d.ts +11 -0
  215. package/dist/components/terminal/terminal-block.d.ts +13 -0
  216. package/dist/components/terminal/terminal-emulator.d.ts +10 -0
  217. package/dist/components/terminal/types.d.ts +35 -0
  218. package/dist/components/terminal.cjs +1 -0
  219. package/dist/components/terminal.d.ts +2 -0
  220. package/dist/components/terminal.js +2 -0
  221. package/dist/components/textarea.cjs +1 -0
  222. package/dist/components/textarea.d.ts +13 -0
  223. package/dist/components/textarea.js +54 -0
  224. package/dist/components/theme-provider.cjs +1 -0
  225. package/dist/components/theme-provider.d.ts +89 -0
  226. package/dist/components/theme-provider.js +93 -0
  227. package/dist/components/theme-toggle.cjs +1 -0
  228. package/dist/components/theme-toggle.d.ts +9 -0
  229. package/dist/components/theme-toggle.js +4 -0
  230. package/dist/components/timeline.cjs +1 -0
  231. package/dist/components/timeline.d.ts +14 -0
  232. package/dist/components/timeline.js +54 -0
  233. package/dist/components/tooltip.cjs +1 -0
  234. package/dist/components/tooltip.d.ts +11 -0
  235. package/dist/components/tooltip.js +84 -0
  236. package/dist/components/tree.cjs +1 -0
  237. package/dist/components/tree.d.ts +16 -0
  238. package/dist/components/tree.js +92 -0
  239. package/dist/createLucideIcon-DDY8HuQR.js +42 -0
  240. package/dist/createLucideIcon-b_X_3fj-.cjs +1 -0
  241. package/dist/datatable-BB3v__r5.cjs +1 -0
  242. package/dist/datatable-DlBhUhuO.js +316 -0
  243. package/dist/drawer-Cbuh6qdL.cjs +1 -0
  244. package/dist/drawer-CqkVZT9Y.js +189 -0
  245. package/dist/focus-Dk1YWVPN.js +42 -0
  246. package/dist/focus-DmG6Ge7X.cjs +1 -0
  247. package/dist/index.cjs +1 -0
  248. package/dist/index.d.ts +70 -0
  249. package/dist/index.js +215 -0
  250. package/dist/lib/cn.d.ts +2 -0
  251. package/dist/lib/component-styles.d.ts +10 -0
  252. package/dist/select-Ch5fp1GT.js +461 -0
  253. package/dist/select-q0YCMhBP.cjs +1 -0
  254. package/dist/styles.css +3 -0
  255. package/dist/terminal-BOR2cFi1.js +1060 -0
  256. package/dist/terminal-CpraMs50.cjs +77 -0
  257. package/dist/theme-toggle-CnoiorKV.js +71 -0
  258. package/dist/theme-toggle-Dp1-24zH.cjs +1 -0
  259. package/dist/use-event-callback-DGkfO_uu.js +10 -0
  260. package/dist/use-event-callback-Du9_9eAi.cjs +1 -0
  261. package/dist/utils-CQ8pvCtk.js +72 -0
  262. package/dist/utils-DOFJTw8o.cjs +1 -0
  263. package/package.json +88 -0
@@ -0,0 +1,16 @@
1
+ //#region src/lib/component-styles.ts
2
+ var e = "flex w-full flex-col gap-1.5", t = "text-sm font-medium leading-5 text-foreground", n = "text-xs leading-5 text-muted-foreground", r = "text-xs leading-5 text-destructive", i = [
3
+ "border border-border bg-surface text-foreground shadow-xs",
4
+ "transition-[border-color,box-shadow,background-color] duration-150",
5
+ "hover:border-border-strong",
6
+ "focus-within:border-accent-500 focus-within:outline-none focus-within:ring-2 focus-within:ring-focus-ring/20",
7
+ "has-[:disabled]:cursor-not-allowed has-[:disabled]:bg-surface-muted has-[:disabled]:opacity-60",
8
+ "has-[:read-only]:bg-surface-muted"
9
+ ].join(" "), a = "border-destructive/60 hover:border-destructive/70 focus-within:border-destructive focus-within:ring-destructive/20", o = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring/35 focus-visible:ring-offset-2 focus-visible:ring-offset-bg", s = [
10
+ "inline-flex size-8 shrink-0 items-center justify-center rounded-md",
11
+ "text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
12
+ "disabled:pointer-events-none disabled:opacity-40",
13
+ o
14
+ ].join(" ");
15
+ //#endregion
16
+ export { t as a, s as c, r as i, a as n, e as o, n as r, o as s, i as t };
@@ -0,0 +1 @@
1
+ var e=[`border border-border bg-surface text-foreground shadow-xs`,`transition-[border-color,box-shadow,background-color] duration-150`,`hover:border-border-strong`,`focus-within:border-accent-500 focus-within:outline-none focus-within:ring-2 focus-within:ring-focus-ring/20`,`has-[:disabled]:cursor-not-allowed has-[:disabled]:bg-surface-muted has-[:disabled]:opacity-60`,`has-[:read-only]:bg-surface-muted`].join(` `),t=`border-destructive/60 hover:border-destructive/70 focus-within:border-destructive focus-within:ring-destructive/20`,n=`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring/35 focus-visible:ring-offset-2 focus-visible:ring-offset-bg`,r=[`inline-flex size-8 shrink-0 items-center justify-center rounded-md`,`text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,`disabled:pointer-events-none disabled:opacity-40`,n].join(` `);Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return`text-sm font-medium leading-5 text-foreground`}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return`text-xs leading-5 text-destructive`}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return`flex w-full flex-col gap-1.5`}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return`text-xs leading-5 text-muted-foreground`}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return e}});
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../cn-BdjraxxU.cjs"),t=require("../component-styles-TkZ7v6Ef.cjs");let n=require("framer-motion"),r=require("react"),i=require("react/jsx-runtime");function a({items:a,multiple:o=!1,defaultOpen:s=[],className:c,...l}){let[u,d]=(0,r.useState)(new Set(s)),f=(0,r.useId)();function p(e){d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):(o||n.clear(),n.add(e)),n})}return(0,i.jsx)(`div`,{className:e.t(`flex flex-col divide-y divide-border`,c),...l,children:a.map(r=>{let a=u.has(r.id),o=encodeURIComponent(r.id),s=`${f}-trigger-${o}`,c=`${f}-panel-${o}`;return(0,i.jsxs)(`div`,{children:[(0,i.jsxs)(`button`,{type:`button`,id:s,"aria-expanded":a,"aria-controls":c,disabled:r.disabled,onClick:()=>p(r.id),className:e.t(`flex items-center justify-between w-full py-3.5 text-left gap-3 transition-colors`,`text-foreground hover:text-foreground`,t.s,r.disabled&&`opacity-40 cursor-not-allowed`),children:[(0,i.jsx)(`span`,{className:`flex-1 min-w-0`,children:r.trigger}),(0,i.jsx)(n.motion.span,{animate:{rotate:a?180:0},transition:{duration:.2},className:`shrink-0 text-slate-500`,children:(0,i.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,i.jsx)(`path`,{d:`m6 9 6 6 6-6`})})})]}),(0,i.jsx)(n.AnimatePresence,{initial:!1,children:a&&(0,i.jsx)(n.motion.div,{id:c,role:`region`,"aria-labelledby":s,initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:`easeInOut`},className:`overflow-hidden`,children:(0,i.jsx)(`div`,{className:`pb-4 text-sm leading-6 text-muted-foreground`,children:r.content})})})]},r.id)})})}function o({open:e,onOpenChange:t,defaultOpen:a=!1,trigger:o,children:s,className:c}){let[l,u]=(0,r.useState)(a),d=(0,r.useId)(),f=e??l;function p(){let n=!f;e===void 0&&u(n),t?.(n)}return(0,i.jsxs)(`div`,{className:c,children:[(0,i.jsx)(`button`,{type:`button`,onClick:p,"aria-expanded":f,"aria-controls":d,className:`block w-full cursor-pointer text-left`,children:o}),(0,i.jsx)(n.AnimatePresence,{initial:!1,children:f&&(0,i.jsx)(n.motion.div,{id:d,initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:`easeInOut`},className:`overflow-hidden`,children:s})})]})}exports.Accordion=a,exports.Collapsible=o;
@@ -0,0 +1,22 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface AccordionItem {
3
+ id: string;
4
+ trigger: ReactNode;
5
+ content: ReactNode;
6
+ disabled?: boolean;
7
+ }
8
+ export interface AccordionProps extends HTMLAttributes<HTMLDivElement> {
9
+ items: AccordionItem[];
10
+ multiple?: boolean;
11
+ defaultOpen?: string[];
12
+ }
13
+ export declare function Accordion({ items, multiple, defaultOpen, className, ...props }: AccordionProps): import("react").JSX.Element;
14
+ export interface CollapsibleProps {
15
+ open?: boolean;
16
+ onOpenChange?: (open: boolean) => void;
17
+ defaultOpen?: boolean;
18
+ trigger: ReactNode;
19
+ children: ReactNode;
20
+ className?: string;
21
+ }
22
+ export declare function Collapsible({ open: controlledOpen, onOpenChange, defaultOpen, trigger, children, className, }: CollapsibleProps): import("react").JSX.Element;
@@ -0,0 +1,122 @@
1
+ "use client";
2
+ import { t as e } from "../cn-DpgY2leY.js";
3
+ import { s as t } from "../component-styles-Ce56hn9T.js";
4
+ import { AnimatePresence as n, motion as r } from "framer-motion";
5
+ import { useId as i, useState as a } from "react";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ //#region src/components/accordion.tsx
8
+ function c({ items: c, multiple: l = !1, defaultOpen: u = [], className: d, ...f }) {
9
+ let [p, m] = a(new Set(u)), h = i();
10
+ function g(e) {
11
+ m((t) => {
12
+ let n = new Set(t);
13
+ return n.has(e) ? n.delete(e) : (l || n.clear(), n.add(e)), n;
14
+ });
15
+ }
16
+ return /* @__PURE__ */ o("div", {
17
+ className: e("flex flex-col divide-y divide-border", d),
18
+ ...f,
19
+ children: c.map((i) => {
20
+ let a = p.has(i.id), c = encodeURIComponent(i.id), l = `${h}-trigger-${c}`, u = `${h}-panel-${c}`;
21
+ return /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ s("button", {
22
+ type: "button",
23
+ id: l,
24
+ "aria-expanded": a,
25
+ "aria-controls": u,
26
+ disabled: i.disabled,
27
+ onClick: () => g(i.id),
28
+ className: e("flex items-center justify-between w-full py-3.5 text-left gap-3 transition-colors", "text-foreground hover:text-foreground", t, i.disabled && "opacity-40 cursor-not-allowed"),
29
+ children: [/* @__PURE__ */ o("span", {
30
+ className: "flex-1 min-w-0",
31
+ children: i.trigger
32
+ }), /* @__PURE__ */ o(r.span, {
33
+ animate: { rotate: a ? 180 : 0 },
34
+ transition: { duration: .2 },
35
+ className: "shrink-0 text-slate-500",
36
+ children: /* @__PURE__ */ o("svg", {
37
+ width: "14",
38
+ height: "14",
39
+ viewBox: "0 0 24 24",
40
+ fill: "none",
41
+ stroke: "currentColor",
42
+ strokeWidth: "2.5",
43
+ strokeLinecap: "round",
44
+ strokeLinejoin: "round",
45
+ children: /* @__PURE__ */ o("path", { d: "m6 9 6 6 6-6" })
46
+ })
47
+ })]
48
+ }), /* @__PURE__ */ o(n, {
49
+ initial: !1,
50
+ children: a && /* @__PURE__ */ o(r.div, {
51
+ id: u,
52
+ role: "region",
53
+ "aria-labelledby": l,
54
+ initial: {
55
+ height: 0,
56
+ opacity: 0
57
+ },
58
+ animate: {
59
+ height: "auto",
60
+ opacity: 1
61
+ },
62
+ exit: {
63
+ height: 0,
64
+ opacity: 0
65
+ },
66
+ transition: {
67
+ duration: .2,
68
+ ease: "easeInOut"
69
+ },
70
+ className: "overflow-hidden",
71
+ children: /* @__PURE__ */ o("div", {
72
+ className: "pb-4 text-sm leading-6 text-muted-foreground",
73
+ children: i.content
74
+ })
75
+ })
76
+ })] }, i.id);
77
+ })
78
+ });
79
+ }
80
+ function l({ open: e, onOpenChange: t, defaultOpen: c = !1, trigger: l, children: u, className: d }) {
81
+ let [f, p] = a(c), m = i(), h = e ?? f;
82
+ function g() {
83
+ let n = !h;
84
+ e === void 0 && p(n), t?.(n);
85
+ }
86
+ return /* @__PURE__ */ s("div", {
87
+ className: d,
88
+ children: [/* @__PURE__ */ o("button", {
89
+ type: "button",
90
+ onClick: g,
91
+ "aria-expanded": h,
92
+ "aria-controls": m,
93
+ className: "block w-full cursor-pointer text-left",
94
+ children: l
95
+ }), /* @__PURE__ */ o(n, {
96
+ initial: !1,
97
+ children: h && /* @__PURE__ */ o(r.div, {
98
+ id: m,
99
+ initial: {
100
+ height: 0,
101
+ opacity: 0
102
+ },
103
+ animate: {
104
+ height: "auto",
105
+ opacity: 1
106
+ },
107
+ exit: {
108
+ height: 0,
109
+ opacity: 0
110
+ },
111
+ transition: {
112
+ duration: .2,
113
+ ease: "easeInOut"
114
+ },
115
+ className: "overflow-hidden",
116
+ children: u
117
+ })
118
+ })]
119
+ });
120
+ }
121
+ //#endregion
122
+ export { c as Accordion, l as Collapsible };
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../cn-BdjraxxU.cjs");require("../component-styles-TkZ7v6Ef.cjs");let t=require("framer-motion"),n=require("react/jsx-runtime");var r={info:{container:`bg-sky-500/[0.07] dark:bg-sky-500/[0.09] border-sky-400/25 dark:border-sky-500/20`,accent:`bg-sky-500`,icon:`text-sky-600 dark:text-sky-400`,title:`text-sky-900 dark:text-sky-100`,body:`text-sky-800/90 dark:text-sky-200/70`},success:{container:`bg-emerald-500/[0.07] dark:bg-emerald-500/[0.09] border-emerald-400/25 dark:border-emerald-500/20`,accent:`bg-emerald-500`,icon:`text-emerald-600 dark:text-emerald-400`,title:`text-emerald-900 dark:text-emerald-100`,body:`text-emerald-800/90 dark:text-emerald-200/70`},warning:{container:`bg-amber-500/[0.07] dark:bg-amber-500/[0.09] border-amber-400/30 dark:border-amber-500/20`,accent:`bg-amber-500`,icon:`text-amber-600 dark:text-amber-400`,title:`text-amber-900 dark:text-amber-100`,body:`text-amber-800/90 dark:text-amber-200/70`},error:{container:`bg-red-500/[0.07] dark:bg-red-500/[0.09] border-red-400/25 dark:border-red-500/20`,accent:`bg-red-500`,icon:`text-red-600 dark:text-red-400`,title:`text-red-900 dark:text-red-100`,body:`text-red-800/90 dark:text-red-200/70`}},i={info:(0,n.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,n.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,n.jsx)(`path`,{d:`M12 16v-4`}),(0,n.jsx)(`path`,{d:`M12 8h.01`})]}),success:(0,n.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,n.jsx)(`path`,{d:`M22 11.08V12a10 10 0 1 1-5.93-9.14`}),(0,n.jsx)(`path`,{d:`m9 11 3 3L22 4`})]}),warning:(0,n.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,n.jsx)(`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}),(0,n.jsx)(`path`,{d:`M12 9v4`}),(0,n.jsx)(`path`,{d:`M12 17h.01`})]}),error:(0,n.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,n.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,n.jsx)(`path`,{d:`m15 9-6 6`}),(0,n.jsx)(`path`,{d:`m9 9 6 6`})]})};function a({variant:a=`info`,title:o,icon:s,className:c,children:l,dismissable:u=!1,onDismiss:d,...f}){let p=r[a],m=s??i[a],h=a===`error`||a===`warning`?`alert`:`status`;return(0,n.jsxs)(t.motion.div,{initial:{opacity:0,y:-5},animate:{opacity:1,y:0},transition:{duration:.18,ease:[.16,1,.3,1]},role:h,className:e.t(`relative flex gap-3 rounded-[var(--radius-lg)] border overflow-hidden pl-4 pr-4 py-3.5`,p.container,c),...f,children:[(0,n.jsx)(`span`,{className:e.t(`absolute left-0 inset-y-0 w-[3px]`,p.accent),"aria-hidden":`true`}),(0,n.jsx)(`span`,{className:e.t(`shrink-0 mt-0.5`,p.icon),children:m}),(0,n.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[o&&(0,n.jsx)(`p`,{className:e.t(`text-sm font-semibold leading-snug mb-0.5`,p.title),children:o}),l&&(0,n.jsx)(`div`,{className:e.t(`text-sm leading-relaxed`,p.body),children:l})]}),u&&(0,n.jsx)(`button`,{type:`button`,onClick:d,"aria-label":`Dismiss`,className:e.t(`shrink-0 mt-0.5 rounded-sm opacity-60 hover:opacity-100 transition-opacity cursor-pointer`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring/35 focus-visible:ring-offset-2 focus-visible:ring-offset-bg`,p.icon),children:(0,n.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,n.jsx)(`path`,{d:`M18 6 6 18`}),(0,n.jsx)(`path`,{d:`m6 6 12 12`})]})})]})}exports.Alert=a;
@@ -0,0 +1,13 @@
1
+ import { HTMLMotionProps } from 'framer-motion';
2
+ import { ReactNode } from 'react';
3
+ type Variant = "info" | "success" | "warning" | "error";
4
+ export interface AlertProps extends Omit<HTMLMotionProps<"div">, "title" | "children"> {
5
+ variant?: Variant;
6
+ title?: string;
7
+ icon?: ReactNode;
8
+ children?: ReactNode;
9
+ dismissable?: boolean;
10
+ onDismiss?: () => void;
11
+ }
12
+ export declare function Alert({ variant, title, icon, className, children, dismissable, onDismiss, ...props }: AlertProps): import("react").JSX.Element;
13
+ export {};
@@ -0,0 +1,165 @@
1
+ "use client";
2
+ import { t as e } from "../cn-DpgY2leY.js";
3
+ import "../component-styles-Ce56hn9T.js";
4
+ import { motion as t } from "framer-motion";
5
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
6
+ //#region src/components/alert.tsx
7
+ var i = {
8
+ info: {
9
+ container: "bg-sky-500/[0.07] dark:bg-sky-500/[0.09] border-sky-400/25 dark:border-sky-500/20",
10
+ accent: "bg-sky-500",
11
+ icon: "text-sky-600 dark:text-sky-400",
12
+ title: "text-sky-900 dark:text-sky-100",
13
+ body: "text-sky-800/90 dark:text-sky-200/70"
14
+ },
15
+ success: {
16
+ container: "bg-emerald-500/[0.07] dark:bg-emerald-500/[0.09] border-emerald-400/25 dark:border-emerald-500/20",
17
+ accent: "bg-emerald-500",
18
+ icon: "text-emerald-600 dark:text-emerald-400",
19
+ title: "text-emerald-900 dark:text-emerald-100",
20
+ body: "text-emerald-800/90 dark:text-emerald-200/70"
21
+ },
22
+ warning: {
23
+ container: "bg-amber-500/[0.07] dark:bg-amber-500/[0.09] border-amber-400/30 dark:border-amber-500/20",
24
+ accent: "bg-amber-500",
25
+ icon: "text-amber-600 dark:text-amber-400",
26
+ title: "text-amber-900 dark:text-amber-100",
27
+ body: "text-amber-800/90 dark:text-amber-200/70"
28
+ },
29
+ error: {
30
+ container: "bg-red-500/[0.07] dark:bg-red-500/[0.09] border-red-400/25 dark:border-red-500/20",
31
+ accent: "bg-red-500",
32
+ icon: "text-red-600 dark:text-red-400",
33
+ title: "text-red-900 dark:text-red-100",
34
+ body: "text-red-800/90 dark:text-red-200/70"
35
+ }
36
+ }, a = {
37
+ info: /* @__PURE__ */ r("svg", {
38
+ width: "16",
39
+ height: "16",
40
+ viewBox: "0 0 24 24",
41
+ fill: "none",
42
+ stroke: "currentColor",
43
+ strokeWidth: "2",
44
+ strokeLinecap: "round",
45
+ strokeLinejoin: "round",
46
+ children: [
47
+ /* @__PURE__ */ n("circle", {
48
+ cx: "12",
49
+ cy: "12",
50
+ r: "10"
51
+ }),
52
+ /* @__PURE__ */ n("path", { d: "M12 16v-4" }),
53
+ /* @__PURE__ */ n("path", { d: "M12 8h.01" })
54
+ ]
55
+ }),
56
+ success: /* @__PURE__ */ r("svg", {
57
+ width: "16",
58
+ height: "16",
59
+ viewBox: "0 0 24 24",
60
+ fill: "none",
61
+ stroke: "currentColor",
62
+ strokeWidth: "2",
63
+ strokeLinecap: "round",
64
+ strokeLinejoin: "round",
65
+ children: [/* @__PURE__ */ n("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }), /* @__PURE__ */ n("path", { d: "m9 11 3 3L22 4" })]
66
+ }),
67
+ warning: /* @__PURE__ */ r("svg", {
68
+ width: "16",
69
+ height: "16",
70
+ viewBox: "0 0 24 24",
71
+ fill: "none",
72
+ stroke: "currentColor",
73
+ strokeWidth: "2",
74
+ strokeLinecap: "round",
75
+ strokeLinejoin: "round",
76
+ children: [
77
+ /* @__PURE__ */ n("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
78
+ /* @__PURE__ */ n("path", { d: "M12 9v4" }),
79
+ /* @__PURE__ */ n("path", { d: "M12 17h.01" })
80
+ ]
81
+ }),
82
+ error: /* @__PURE__ */ r("svg", {
83
+ width: "16",
84
+ height: "16",
85
+ viewBox: "0 0 24 24",
86
+ fill: "none",
87
+ stroke: "currentColor",
88
+ strokeWidth: "2",
89
+ strokeLinecap: "round",
90
+ strokeLinejoin: "round",
91
+ children: [
92
+ /* @__PURE__ */ n("circle", {
93
+ cx: "12",
94
+ cy: "12",
95
+ r: "10"
96
+ }),
97
+ /* @__PURE__ */ n("path", { d: "m15 9-6 6" }),
98
+ /* @__PURE__ */ n("path", { d: "m9 9 6 6" })
99
+ ]
100
+ })
101
+ };
102
+ function o({ variant: o = "info", title: s, icon: c, className: l, children: u, dismissable: d = !1, onDismiss: f, ...p }) {
103
+ let m = i[o], h = c ?? a[o], g = o === "error" || o === "warning" ? "alert" : "status";
104
+ return /* @__PURE__ */ r(t.div, {
105
+ initial: {
106
+ opacity: 0,
107
+ y: -5
108
+ },
109
+ animate: {
110
+ opacity: 1,
111
+ y: 0
112
+ },
113
+ transition: {
114
+ duration: .18,
115
+ ease: [
116
+ .16,
117
+ 1,
118
+ .3,
119
+ 1
120
+ ]
121
+ },
122
+ role: g,
123
+ className: e("relative flex gap-3 rounded-[var(--radius-lg)] border overflow-hidden pl-4 pr-4 py-3.5", m.container, l),
124
+ ...p,
125
+ children: [
126
+ /* @__PURE__ */ n("span", {
127
+ className: e("absolute left-0 inset-y-0 w-[3px]", m.accent),
128
+ "aria-hidden": "true"
129
+ }),
130
+ /* @__PURE__ */ n("span", {
131
+ className: e("shrink-0 mt-0.5", m.icon),
132
+ children: h
133
+ }),
134
+ /* @__PURE__ */ r("div", {
135
+ className: "min-w-0 flex-1",
136
+ children: [s && /* @__PURE__ */ n("p", {
137
+ className: e("text-sm font-semibold leading-snug mb-0.5", m.title),
138
+ children: s
139
+ }), u && /* @__PURE__ */ n("div", {
140
+ className: e("text-sm leading-relaxed", m.body),
141
+ children: u
142
+ })]
143
+ }),
144
+ d && /* @__PURE__ */ n("button", {
145
+ type: "button",
146
+ onClick: f,
147
+ "aria-label": "Dismiss",
148
+ className: e("shrink-0 mt-0.5 rounded-sm opacity-60 hover:opacity-100 transition-opacity cursor-pointer", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring/35 focus-visible:ring-offset-2 focus-visible:ring-offset-bg", m.icon),
149
+ children: /* @__PURE__ */ r("svg", {
150
+ width: "14",
151
+ height: "14",
152
+ viewBox: "0 0 24 24",
153
+ fill: "none",
154
+ stroke: "currentColor",
155
+ strokeWidth: "2.5",
156
+ strokeLinecap: "round",
157
+ strokeLinejoin: "round",
158
+ children: [/* @__PURE__ */ n("path", { d: "M18 6 6 18" }), /* @__PURE__ */ n("path", { d: "m6 6 12 12" })]
159
+ })
160
+ })
161
+ ]
162
+ });
163
+ }
164
+ //#endregion
165
+ export { o as Alert };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react/jsx-runtime");function t(){return(0,e.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none fixed inset-0 -z-10 bg-accent-500/[0.03] dark:bg-blue-400/[0.04]`})}exports.AuthBackdrop=t;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Flat, restrained backdrop for auth pages (login, register, forgot/reset
3
+ * password, onboarding). Replaces the old per-page blurred-blob + dot-grid
4
+ * treatment with a single flat tint — no gradient, no blur filters, no
5
+ * mouse tracking, no glass.
6
+ */
7
+ export declare function AuthBackdrop(): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ //#region src/components/auth-backdrop.tsx
3
+ function t() {
4
+ return /* @__PURE__ */ e("div", {
5
+ "aria-hidden": "true",
6
+ className: "pointer-events-none fixed inset-0 -z-10 bg-accent-500/[0.03] dark:bg-blue-400/[0.04]"
7
+ });
8
+ }
9
+ //#endregion
10
+ export { t as AuthBackdrop };
@@ -0,0 +1,21 @@
1
+ import { RefObject } from 'react';
2
+ import { AutocompleteOption } from './types';
3
+ import { MenuPos } from '../select/types';
4
+ export declare function AutocompleteDropdown<V>({ listRef, listId, open, pos, multiple, loading, filtered, emptyMessage, activeIdx, setActiveIdx, inputText, selectedValues, singleValue, onSelectSingle, onToggleMulti, className, }: {
5
+ listRef: RefObject<HTMLUListElement | null>;
6
+ listId: string;
7
+ open: boolean;
8
+ pos: MenuPos | null;
9
+ multiple: boolean | undefined;
10
+ loading: boolean;
11
+ filtered: AutocompleteOption<V>[];
12
+ emptyMessage: string;
13
+ activeIdx: number;
14
+ setActiveIdx: (i: number) => void;
15
+ inputText: string;
16
+ selectedValues: V[];
17
+ singleValue: V | null | undefined;
18
+ onSelectSingle: (opt: AutocompleteOption<V>) => void;
19
+ onToggleMulti: (opt: AutocompleteOption<V>) => void;
20
+ className?: string;
21
+ }): import('react').ReactPortal | null;
@@ -0,0 +1,8 @@
1
+ export declare const XIcon: ({ size }: {
2
+ size?: number;
3
+ }) => import("react").JSX.Element;
4
+ export declare const SpinnerIcon: () => import("react").JSX.Element;
5
+ export declare function Highlight({ text, query }: {
6
+ text: string;
7
+ query: string;
8
+ }): import("react").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { InputHTMLAttributes, KeyboardEvent, ReactNode } from 'react';
2
+ import { AutocompleteOption } from './types';
3
+ export declare function MultiTrigger<V>({ inputRef, inputId, listId, open, activeIdx, inputText, prefix, placeholder, disabled, error, loading, showClear, selected, onContainerClick, onInputChange, onFocus, onKeyDown, onRemove, onClearAll, messageId, inputProps, }: {
4
+ inputRef: (node: HTMLInputElement | null) => void;
5
+ inputId: string;
6
+ listId: string;
7
+ open: boolean;
8
+ activeIdx: number;
9
+ inputText: string;
10
+ prefix?: ReactNode;
11
+ placeholder?: string;
12
+ disabled?: boolean;
13
+ error?: string;
14
+ loading: boolean;
15
+ showClear: boolean;
16
+ selected: AutocompleteOption<V>[];
17
+ onContainerClick: () => void;
18
+ onInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
19
+ onFocus: () => void;
20
+ onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;
21
+ onRemove: (opt: AutocompleteOption<V>) => void;
22
+ onClearAll: () => void;
23
+ messageId?: string;
24
+ inputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, "id" | "value" | "onChange" | "onFocus" | "onKeyDown" | "disabled" | "prefix">;
25
+ }): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { InputHTMLAttributes, KeyboardEvent, ReactNode } from 'react';
2
+ export declare function SingleTrigger({ inputRef, inputId, listId, open, activeIdx, inputText, prefix, placeholder, disabled, error, loading, showClear, onInputChange, onFocus, onKeyDown, onClear, messageId, inputProps, }: {
3
+ inputRef: React.Ref<HTMLInputElement>;
4
+ inputId: string;
5
+ listId: string;
6
+ open: boolean;
7
+ activeIdx: number;
8
+ inputText: string;
9
+ prefix?: ReactNode;
10
+ placeholder?: string;
11
+ disabled?: boolean;
12
+ error?: string;
13
+ loading: boolean;
14
+ showClear: boolean;
15
+ onInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
16
+ onFocus: () => void;
17
+ onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;
18
+ onClear: () => void;
19
+ messageId?: string;
20
+ inputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, "id" | "value" | "onChange" | "onFocus" | "onKeyDown" | "disabled" | "prefix">;
21
+ }): import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { InputHTMLAttributes, ReactNode } from 'react';
2
+ export interface AutocompleteOption<V = string> {
3
+ value: V;
4
+ label: string;
5
+ description?: string;
6
+ icon?: ReactNode;
7
+ disabled?: boolean;
8
+ }
9
+ export interface AutocompletePropsBase<V = string> extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "onChange" | "onSelect" | "prefix"> {
10
+ options: AutocompleteOption<V>[];
11
+ inputValue?: string;
12
+ onInputChange?: (value: string) => void;
13
+ label?: string;
14
+ hint?: string;
15
+ error?: string;
16
+ prefix?: ReactNode;
17
+ clearable?: boolean;
18
+ loading?: boolean;
19
+ emptyMessage?: string;
20
+ maxVisible?: number;
21
+ }
22
+ export interface AutocompletePropsSingle<V = string> extends AutocompletePropsBase<V> {
23
+ multiple?: false;
24
+ value?: V | null;
25
+ onSelect?: (option: AutocompleteOption<V>) => void;
26
+ onDeselect?: never;
27
+ }
28
+ export interface AutocompletePropsMulti<V = string> extends AutocompletePropsBase<V> {
29
+ multiple: true;
30
+ value?: V[];
31
+ onSelect?: (option: AutocompleteOption<V>, allSelected: AutocompleteOption<V>[]) => void;
32
+ onDeselect?: (option: AutocompleteOption<V>, allSelected: AutocompleteOption<V>[]) => void;
33
+ }
34
+ export type AutocompleteProps<V = string> = AutocompletePropsSingle<V> | AutocompletePropsMulti<V>;
@@ -0,0 +1 @@
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../autocomplete-CaysJRpk.cjs");exports.Autocomplete=e.t;
@@ -0,0 +1,5 @@
1
+ import { AutocompleteProps } from './autocomplete/types';
2
+ export type { AutocompleteOption, AutocompleteProps, AutocompletePropsSingle, AutocompletePropsMulti, } from './autocomplete/types';
3
+ export declare const Autocomplete: <V = string>(props: AutocompleteProps<V> & {
4
+ ref?: React.Ref<HTMLInputElement>;
5
+ }) => React.ReactElement;
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import { t as e } from "../autocomplete-CfbfpcO4.js";
3
+ export { e as Autocomplete };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../cn-BdjraxxU.cjs");let t=require("react/jsx-runtime");var n={xs:`w-6 h-6 text-[10px]`,sm:`w-8 h-8 text-xs`,md:`w-9 h-9 text-sm`,lg:`w-11 h-11 text-base`,xl:`w-14 h-14 text-lg`},r={xs:`w-1.5 h-1.5 border`,sm:`w-2 h-2 border`,md:`w-2.5 h-2.5 border-2`,lg:`w-3 h-3 border-2`,xl:`w-3.5 h-3.5 border-2`},i={online:`bg-emerald-400`,offline:`bg-slate-500`,away:`bg-amber-400`,busy:`bg-red-400`},a=[`bg-blue-600`,`bg-violet-600`,`bg-emerald-600`,`bg-rose-600`,`bg-amber-600`,`bg-cyan-600`,`bg-pink-600`,`bg-teal-600`];function o(e){return e.split(` `).slice(0,2).map(e=>e[0]?.toUpperCase()??``).join(``)}function s(e){return a[[...e].reduce((e,t)=>e+t.charCodeAt(0),0)%a.length]}function c({src:a,name:c,alt:l,size:u=`md`,status:d,loading:f=`lazy`,decoding:p=`async`,referrerPolicy:m=`no-referrer`,className:h,...g}){let _=c?s(c):`bg-slate-600`,v=c?o(c):`?`;return(0,t.jsxs)(`div`,{className:e.t(`relative inline-flex shrink-0 rounded-full`,h),...g,children:[(0,t.jsx)(`div`,{className:e.t(`rounded-full overflow-hidden flex items-center justify-center font-semibold text-white`,n[u],!a&&_),children:a?(0,t.jsx)(`img`,{src:a,alt:l??c??``,loading:f,decoding:p,referrerPolicy:m,className:`w-full h-full object-cover`}):(0,t.jsx)(`span`,{children:v})}),d&&(0,t.jsx)(`span`,{className:e.t(`absolute bottom-0 right-0 rounded-full border-white dark:border-navy-900`,r[u],i[d])})]})}exports.Avatar=c;
@@ -0,0 +1,17 @@
1
+ import { HTMLAttributes } from 'react';
2
+ type Size = "xs" | "sm" | "md" | "lg" | "xl";
3
+ type Status = "online" | "offline" | "away" | "busy";
4
+ export interface AvatarProps extends HTMLAttributes<HTMLDivElement> {
5
+ src?: string;
6
+ name?: string;
7
+ /** Accessible name for the image; defaults to name or empty for decorative */
8
+ alt?: string;
9
+ size?: Size;
10
+ status?: Status;
11
+ /** Defaults to lazy to avoid CLS/LCP penalties */
12
+ loading?: "eager" | "lazy";
13
+ decoding?: "async" | "auto" | "sync";
14
+ referrerPolicy?: React.ImgHTMLAttributes<HTMLImageElement>["referrerPolicy"];
15
+ }
16
+ export declare function Avatar({ src, name, alt, size, status, loading, decoding, referrerPolicy, className, ...props }: AvatarProps): import("react").JSX.Element;
17
+ export {};
@@ -0,0 +1,56 @@
1
+ import { t as e } from "../cn-DpgY2leY.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/avatar.tsx
4
+ var r = {
5
+ xs: "w-6 h-6 text-[10px]",
6
+ sm: "w-8 h-8 text-xs",
7
+ md: "w-9 h-9 text-sm",
8
+ lg: "w-11 h-11 text-base",
9
+ xl: "w-14 h-14 text-lg"
10
+ }, i = {
11
+ xs: "w-1.5 h-1.5 border",
12
+ sm: "w-2 h-2 border",
13
+ md: "w-2.5 h-2.5 border-2",
14
+ lg: "w-3 h-3 border-2",
15
+ xl: "w-3.5 h-3.5 border-2"
16
+ }, a = {
17
+ online: "bg-emerald-400",
18
+ offline: "bg-slate-500",
19
+ away: "bg-amber-400",
20
+ busy: "bg-red-400"
21
+ }, o = [
22
+ "bg-blue-600",
23
+ "bg-violet-600",
24
+ "bg-emerald-600",
25
+ "bg-rose-600",
26
+ "bg-amber-600",
27
+ "bg-cyan-600",
28
+ "bg-pink-600",
29
+ "bg-teal-600"
30
+ ];
31
+ function s(e) {
32
+ return e.split(" ").slice(0, 2).map((e) => e[0]?.toUpperCase() ?? "").join("");
33
+ }
34
+ function c(e) {
35
+ return o[[...e].reduce((e, t) => e + t.charCodeAt(0), 0) % o.length];
36
+ }
37
+ function l({ src: o, name: l, alt: u, size: d = "md", status: f, loading: p = "lazy", decoding: m = "async", referrerPolicy: h = "no-referrer", className: g, ..._ }) {
38
+ let v = l ? c(l) : "bg-slate-600", y = l ? s(l) : "?";
39
+ return /* @__PURE__ */ n("div", {
40
+ className: e("relative inline-flex shrink-0 rounded-full", g),
41
+ ..._,
42
+ children: [/* @__PURE__ */ t("div", {
43
+ className: e("rounded-full overflow-hidden flex items-center justify-center font-semibold text-white", r[d], !o && v),
44
+ children: o ? /* @__PURE__ */ t("img", {
45
+ src: o,
46
+ alt: u ?? l ?? "",
47
+ loading: p,
48
+ decoding: m,
49
+ referrerPolicy: h,
50
+ className: "w-full h-full object-cover"
51
+ }) : /* @__PURE__ */ t("span", { children: y })
52
+ }), f && /* @__PURE__ */ t("span", { className: e("absolute bottom-0 right-0 rounded-full border-white dark:border-navy-900", i[d], a[f]) })]
53
+ });
54
+ }
55
+ //#endregion
56
+ export { l as Avatar };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../cn-BdjraxxU.cjs");let t=require("react/jsx-runtime");var n={default:`bg-accent-50 dark:bg-accent-500/[0.12] text-accent-600 dark:text-accent-400 border-accent-200/80 dark:border-accent-500/20`,success:`bg-emerald-50 dark:bg-emerald-500/[0.12] text-emerald-700 dark:text-emerald-400 border-emerald-200/80 dark:border-emerald-500/20`,warning:`bg-amber-50 dark:bg-amber-500/[0.12] text-amber-700 dark:text-amber-400 border-amber-200/80 dark:border-amber-500/20`,error:`bg-red-50 dark:bg-red-500/[0.12] text-danger dark:text-red-400 border-red-200/80 dark:border-red-500/20`,info:`bg-sky-50 dark:bg-sky-500/[0.12] text-sky-700 dark:text-sky-400 border-sky-200/80 dark:border-sky-500/20`,muted:`bg-black/[0.05] dark:bg-white/[0.07] text-slate-600 dark:text-slate-400 border-black/[0.08] dark:border-white/[0.09]`},r={sm:`px-1.5 py-px text-[10.5px] gap-1 font-medium tracking-[-0.01em]`,md:`px-2 py-0.5 text-[11.5px] gap-1.5 font-medium tracking-[-0.01em]`,lg:`px-2.5 py-1 text-xs gap-1.5 font-medium tracking-[-0.01em]`},i={default:`bg-accent-400`,success:`bg-emerald-400`,warning:`bg-amber-400`,error:`bg-red-400`,info:`bg-sky-400`,muted:`bg-slate-500`};function a({variant:a=`default`,dot:o=!1,size:s=`md`,variants:c,className:l,children:u,...d}){let f=c?.[a]??n[a];return(0,t.jsxs)(`span`,{className:e.t(`inline-flex items-center rounded-full font-medium border leading-none whitespace-nowrap`,f,r[s],l),...d,children:[o&&(0,t.jsx)(`span`,{className:e.t(`w-1.5 h-1.5 rounded-full shrink-0`,i[a])}),u]})}exports.Badge=a,exports.badgeVariants=n;
@@ -0,0 +1,12 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export type BadgeVariant = "default" | "success" | "warning" | "error" | "info" | "muted";
3
+ export type BadgeSize = "sm" | "md" | "lg";
4
+ export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
5
+ variant?: BadgeVariant;
6
+ dot?: boolean;
7
+ size?: BadgeSize;
8
+ /** Override or extend variant map — enables end-to-end customization */
9
+ variants?: Partial<Record<BadgeVariant, string>>;
10
+ }
11
+ export declare const badgeVariants: Record<BadgeVariant, string>;
12
+ export declare function Badge({ variant, dot, size, variants, className, children, ...props }: BadgeProps): import("react").JSX.Element;
@@ -0,0 +1,32 @@
1
+ import { t as e } from "../cn-DpgY2leY.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/badge.tsx
4
+ var r = {
5
+ default: "bg-accent-50 dark:bg-accent-500/[0.12] text-accent-600 dark:text-accent-400 border-accent-200/80 dark:border-accent-500/20",
6
+ success: "bg-emerald-50 dark:bg-emerald-500/[0.12] text-emerald-700 dark:text-emerald-400 border-emerald-200/80 dark:border-emerald-500/20",
7
+ warning: "bg-amber-50 dark:bg-amber-500/[0.12] text-amber-700 dark:text-amber-400 border-amber-200/80 dark:border-amber-500/20",
8
+ error: "bg-red-50 dark:bg-red-500/[0.12] text-danger dark:text-red-400 border-red-200/80 dark:border-red-500/20",
9
+ info: "bg-sky-50 dark:bg-sky-500/[0.12] text-sky-700 dark:text-sky-400 border-sky-200/80 dark:border-sky-500/20",
10
+ muted: "bg-black/[0.05] dark:bg-white/[0.07] text-slate-600 dark:text-slate-400 border-black/[0.08] dark:border-white/[0.09]"
11
+ }, i = {
12
+ sm: "px-1.5 py-px text-[10.5px] gap-1 font-medium tracking-[-0.01em]",
13
+ md: "px-2 py-0.5 text-[11.5px] gap-1.5 font-medium tracking-[-0.01em]",
14
+ lg: "px-2.5 py-1 text-xs gap-1.5 font-medium tracking-[-0.01em]"
15
+ }, a = {
16
+ default: "bg-accent-400",
17
+ success: "bg-emerald-400",
18
+ warning: "bg-amber-400",
19
+ error: "bg-red-400",
20
+ info: "bg-sky-400",
21
+ muted: "bg-slate-500"
22
+ };
23
+ function o({ variant: o = "default", dot: s = !1, size: c = "md", variants: l, className: u, children: d, ...f }) {
24
+ let p = l?.[o] ?? r[o];
25
+ return /* @__PURE__ */ n("span", {
26
+ className: e("inline-flex items-center rounded-full font-medium border leading-none whitespace-nowrap", p, i[c], u),
27
+ ...f,
28
+ children: [s && /* @__PURE__ */ t("span", { className: e("w-1.5 h-1.5 rounded-full shrink-0", a[o]) }), d]
29
+ });
30
+ }
31
+ //#endregion
32
+ export { o as Badge, r as badgeVariants };