liquidcn 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +209 -0
  3. package/dist/cjs/client/components/index.js +18 -0
  4. package/dist/cjs/client/components/index.js.map +1 -0
  5. package/dist/cjs/client/components/ui/dialog.js +48 -0
  6. package/dist/cjs/client/components/ui/dialog.js.map +1 -0
  7. package/dist/cjs/client/components/ui/index.js +24 -0
  8. package/dist/cjs/client/components/ui/index.js.map +1 -0
  9. package/dist/cjs/client/components/ui/pretty-date.js +91 -0
  10. package/dist/cjs/client/components/ui/pretty-date.js.map +1 -0
  11. package/dist/cjs/client/components/ui/resizable-navbar.js +126 -0
  12. package/dist/cjs/client/components/ui/resizable-navbar.js.map +1 -0
  13. package/dist/cjs/client/components/ui/select.js +50 -0
  14. package/dist/cjs/client/components/ui/select.js.map +1 -0
  15. package/dist/cjs/client/components/ui/sonner.js +12 -0
  16. package/dist/cjs/client/components/ui/sonner.js.map +1 -0
  17. package/dist/cjs/client/components/ui/switch.js +11 -0
  18. package/dist/cjs/client/components/ui/switch.js.map +1 -0
  19. package/dist/cjs/client/components/ui/tabs.js +53 -0
  20. package/dist/cjs/client/components/ui/tabs.js.map +1 -0
  21. package/dist/cjs/client/hooks/index.js +18 -0
  22. package/dist/cjs/client/hooks/index.js.map +1 -0
  23. package/dist/cjs/client/hooks/use-cookie-with-fallback.js +107 -0
  24. package/dist/cjs/client/hooks/use-cookie-with-fallback.js.map +1 -0
  25. package/dist/cjs/client/index.js +19 -0
  26. package/dist/cjs/client/index.js.map +1 -0
  27. package/dist/cjs/components/index.js +18 -0
  28. package/dist/cjs/components/index.js.map +1 -0
  29. package/dist/cjs/components/ui/alert.js +33 -0
  30. package/dist/cjs/components/ui/alert.js.map +1 -0
  31. package/dist/cjs/components/ui/badge.js +28 -0
  32. package/dist/cjs/components/ui/badge.js.map +1 -0
  33. package/dist/cjs/components/ui/button.js +39 -0
  34. package/dist/cjs/components/ui/button.js.map +1 -0
  35. package/dist/cjs/components/ui/card.js +48 -0
  36. package/dist/cjs/components/ui/card.js.map +1 -0
  37. package/dist/cjs/components/ui/footer.js +9 -0
  38. package/dist/cjs/components/ui/footer.js.map +1 -0
  39. package/dist/cjs/components/ui/index.js +25 -0
  40. package/dist/cjs/components/ui/index.js.map +1 -0
  41. package/dist/cjs/components/ui/input.js +12 -0
  42. package/dist/cjs/components/ui/input.js.map +1 -0
  43. package/dist/cjs/components/ui/pretty-amount.js +167 -0
  44. package/dist/cjs/components/ui/pretty-amount.js.map +1 -0
  45. package/dist/cjs/components/ui/textarea.js +12 -0
  46. package/dist/cjs/components/ui/textarea.js.map +1 -0
  47. package/dist/cjs/index.js +19 -0
  48. package/dist/cjs/index.js.map +1 -0
  49. package/dist/cjs/utils.js +9 -0
  50. package/dist/cjs/utils.js.map +1 -0
  51. package/dist/esm/client/components/index.js +2 -0
  52. package/dist/esm/client/components/index.js.map +1 -0
  53. package/dist/esm/client/components/ui/dialog.js +37 -0
  54. package/dist/esm/client/components/ui/dialog.js.map +1 -0
  55. package/dist/esm/client/components/ui/index.js +8 -0
  56. package/dist/esm/client/components/ui/index.js.map +1 -0
  57. package/dist/esm/client/components/ui/pretty-date.js +88 -0
  58. package/dist/esm/client/components/ui/pretty-date.js.map +1 -0
  59. package/dist/esm/client/components/ui/resizable-navbar.js +113 -0
  60. package/dist/esm/client/components/ui/resizable-navbar.js.map +1 -0
  61. package/dist/esm/client/components/ui/select.js +39 -0
  62. package/dist/esm/client/components/ui/select.js.map +1 -0
  63. package/dist/esm/client/components/ui/sonner.js +9 -0
  64. package/dist/esm/client/components/ui/sonner.js.map +1 -0
  65. package/dist/esm/client/components/ui/switch.js +9 -0
  66. package/dist/esm/client/components/ui/switch.js.map +1 -0
  67. package/dist/esm/client/components/ui/tabs.js +47 -0
  68. package/dist/esm/client/components/ui/tabs.js.map +1 -0
  69. package/dist/esm/client/hooks/index.js +2 -0
  70. package/dist/esm/client/hooks/index.js.map +1 -0
  71. package/dist/esm/client/hooks/use-cookie-with-fallback.js +104 -0
  72. package/dist/esm/client/hooks/use-cookie-with-fallback.js.map +1 -0
  73. package/dist/esm/client/index.js +3 -0
  74. package/dist/esm/client/index.js.map +1 -0
  75. package/dist/esm/components/index.js +2 -0
  76. package/dist/esm/components/index.js.map +1 -0
  77. package/dist/esm/components/ui/alert.js +30 -0
  78. package/dist/esm/components/ui/alert.js.map +1 -0
  79. package/dist/esm/components/ui/badge.js +25 -0
  80. package/dist/esm/components/ui/badge.js.map +1 -0
  81. package/dist/esm/components/ui/button.js +36 -0
  82. package/dist/esm/components/ui/button.js.map +1 -0
  83. package/dist/esm/components/ui/card.js +41 -0
  84. package/dist/esm/components/ui/card.js.map +1 -0
  85. package/dist/esm/components/ui/footer.js +6 -0
  86. package/dist/esm/components/ui/footer.js.map +1 -0
  87. package/dist/esm/components/ui/index.js +9 -0
  88. package/dist/esm/components/ui/index.js.map +1 -0
  89. package/dist/esm/components/ui/input.js +11 -0
  90. package/dist/esm/components/ui/input.js.map +1 -0
  91. package/dist/esm/components/ui/pretty-amount.js +164 -0
  92. package/dist/esm/components/ui/pretty-amount.js.map +1 -0
  93. package/dist/esm/components/ui/textarea.js +11 -0
  94. package/dist/esm/components/ui/textarea.js.map +1 -0
  95. package/dist/esm/index.js +3 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/esm/utils.js +6 -0
  98. package/dist/esm/utils.js.map +1 -0
  99. package/dist/styles.css +563 -0
  100. package/dist/types/client/components/index.d.ts +2 -0
  101. package/dist/types/client/components/index.d.ts.map +1 -0
  102. package/dist/types/client/components/ui/dialog.d.ts +16 -0
  103. package/dist/types/client/components/ui/dialog.d.ts.map +1 -0
  104. package/dist/types/client/components/ui/index.d.ts +8 -0
  105. package/dist/types/client/components/ui/index.d.ts.map +1 -0
  106. package/dist/types/client/components/ui/pretty-date.d.ts +30 -0
  107. package/dist/types/client/components/ui/pretty-date.d.ts.map +1 -0
  108. package/dist/types/client/components/ui/resizable-navbar.d.ts +84 -0
  109. package/dist/types/client/components/ui/resizable-navbar.d.ts.map +1 -0
  110. package/dist/types/client/components/ui/select.d.ts +16 -0
  111. package/dist/types/client/components/ui/select.d.ts.map +1 -0
  112. package/dist/types/client/components/ui/sonner.d.ts +6 -0
  113. package/dist/types/client/components/ui/sonner.d.ts.map +1 -0
  114. package/dist/types/client/components/ui/switch.d.ts +5 -0
  115. package/dist/types/client/components/ui/switch.d.ts.map +1 -0
  116. package/dist/types/client/components/ui/tabs.d.ts +11 -0
  117. package/dist/types/client/components/ui/tabs.d.ts.map +1 -0
  118. package/dist/types/client/hooks/index.d.ts +2 -0
  119. package/dist/types/client/hooks/index.d.ts.map +1 -0
  120. package/dist/types/client/hooks/use-cookie-with-fallback.d.ts +20 -0
  121. package/dist/types/client/hooks/use-cookie-with-fallback.d.ts.map +1 -0
  122. package/dist/types/client/index.d.ts +3 -0
  123. package/dist/types/client/index.d.ts.map +1 -0
  124. package/dist/types/components/index.d.ts +2 -0
  125. package/dist/types/components/index.d.ts.map +1 -0
  126. package/dist/types/components/ui/alert.d.ts +21 -0
  127. package/dist/types/components/ui/alert.d.ts.map +1 -0
  128. package/dist/types/components/ui/badge.d.ts +10 -0
  129. package/dist/types/components/ui/badge.d.ts.map +1 -0
  130. package/dist/types/components/ui/button.d.ts +16 -0
  131. package/dist/types/components/ui/button.d.ts.map +1 -0
  132. package/dist/types/components/ui/card.d.ts +26 -0
  133. package/dist/types/components/ui/card.d.ts.map +1 -0
  134. package/dist/types/components/ui/footer.d.ts +25 -0
  135. package/dist/types/components/ui/footer.d.ts.map +1 -0
  136. package/dist/types/components/ui/index.d.ts +9 -0
  137. package/dist/types/components/ui/index.d.ts.map +1 -0
  138. package/dist/types/components/ui/input.d.ts +10 -0
  139. package/dist/types/components/ui/input.d.ts.map +1 -0
  140. package/dist/types/components/ui/pretty-amount.d.ts +24 -0
  141. package/dist/types/components/ui/pretty-amount.d.ts.map +1 -0
  142. package/dist/types/components/ui/textarea.d.ts +10 -0
  143. package/dist/types/components/ui/textarea.d.ts.map +1 -0
  144. package/dist/types/index.d.ts +3 -0
  145. package/dist/types/index.d.ts.map +1 -0
  146. package/dist/types/utils.d.ts +3 -0
  147. package/dist/types/utils.d.ts.map +1 -0
  148. package/package.json +102 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../src/components/ui/button.tsx"],"names":[],"mappings":";;;AAmGS,wBAAM;;AAnGf,qDAA2C;AAC3C,uEAAiE;AAGjE,uCAAgC;AAEhC,MAAM,cAAc,GAAG,IAAA,8BAAG,EACxB,6eAA6e,EAC7e;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EACL,2GAA2G;YAC7G,WAAW,EACT,+HAA+H;YACjI,OAAO,EACL,sFAAsF;YACxF,SAAS,EACP,qHAAqH;YACvH,KAAK,EACH,wGAAwG;YAC1G,IAAI,EAAE,yIAAyI;SAChJ;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,+BAA+B;YACxC,EAAE,EAAE,+CAA+C;YACnD,EAAE,EAAE,sCAAsC;YAC1C,IAAI,EAAE,QAAQ;SACf;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAA;AAgEgB,wCAAc;AArD/B,SAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,GAAG,KAAK,EACI;IAEZ,MAAM,cAAc,GAAG,CAAC,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,MAAM,CAAA;IAI5E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,uBAAC,iBAAI,iBACO,QAAQ,EAClB,SAAS,EAAE,IAAA,UAAE,EACX,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACjC,0FAA0F,EAC1F,cAAc,IAAI,gBAAgB,EAClC,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACJ,CACR,CAAA;IACH,CAAC;IAED,OAAO,CACL,iDACY,QAAQ,EAClB,SAAS,EAAE,IAAA,UAAE,EACX,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACjC,0FAA0F,EAC1F,cAAc,IAAI,gBAAgB,EAClC,SAAS,CACV,KACG,KAAK,aAER,cAAc,IAAI,CACjB,iCACE,SAAS,EAAC,6DAA6D,iBAC3D,MAAM,GAClB,CACH,EACA,QAAQ,IACF,CACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Card = Card;
4
+ exports.CardAction = CardAction;
5
+ exports.CardContent = CardContent;
6
+ exports.CardDescription = CardDescription;
7
+ exports.CardFooter = CardFooter;
8
+ exports.CardHeader = CardHeader;
9
+ exports.CardTitle = CardTitle;
10
+ const jsx_runtime_1 = require("react/jsx-runtime");
11
+ const utils_1 = require("../../utils");
12
+ const glassSizeClasses = {
13
+ sm: 'glass-sm',
14
+ md: 'glass-md',
15
+ lg: 'glass-lg',
16
+ xl: 'glass-xl',
17
+ };
18
+ const glassTintClasses = {
19
+ none: 'glass-tint-none',
20
+ light: 'glass-tint-light',
21
+ default: 'glass-tint-default',
22
+ dark: 'glass-tint-dark',
23
+ };
24
+ function Card({ className, size = 'md', tint = 'none', isGlass = false, children, ...props }) {
25
+ if (!isGlass) {
26
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "card", className: (0, utils_1.cn)('bg-background text-card-foreground flex flex-col gap-4 rounded-xl border py-4 border-foreground/30 overflow-hidden relative max-w-full min-w-0', className), ...props, children: children }));
27
+ }
28
+ return ((0, jsx_runtime_1.jsxs)("div", { "data-slot": "card", className: (0, utils_1.cn)('glass relative text-card-foreground rounded-xl border py-4 border-foreground/30 max-w-full min-w-0', glassSizeClasses[size], className), ...props, children: [(0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('glass-layers glass-refraction glass-texture', glassTintClasses[tint]), "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)("div", { className: "relative z-10 flex flex-col gap-4", children: children })] }));
29
+ }
30
+ function CardHeader({ className, ...props }) {
31
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "card-header", className: (0, utils_1.cn)('relative z-10 @container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-4', className), ...props }));
32
+ }
33
+ function CardTitle({ className, ...props }) {
34
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "card-title", className: (0, utils_1.cn)('relative z-10 leading-none font-semibold', className), ...props }));
35
+ }
36
+ function CardDescription({ className, ...props }) {
37
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "card-description", className: (0, utils_1.cn)('break-all relative z-10 text-muted-foreground text-sm', className), ...props }));
38
+ }
39
+ function CardAction({ className, ...props }) {
40
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "card-action", className: (0, utils_1.cn)('relative z-10 col-start-2 row-span-2 row-start-1 self-start justify-self-end', className), ...props }));
41
+ }
42
+ function CardContent({ className, ...props }) {
43
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "card-content", className: (0, utils_1.cn)('relative z-10 px-4 min-w-0 overflow-hidden', className), ...props }));
44
+ }
45
+ function CardFooter({ className, ...props }) {
46
+ return ((0, jsx_runtime_1.jsx)("div", { "data-slot": "card-footer", className: (0, utils_1.cn)('relative z-10 flex items-center px-4 [.border-t]:pt-4', className), ...props }));
47
+ }
48
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/components/ui/card.tsx"],"names":[],"mappings":";;AAgJS,oBAAI;AAAE,gCAAU;AAAE,kCAAW;AAAE,0CAAe;AAAE,gCAAU;AAAE,gCAAU;AAAE,8BAAS;;AA9I1F,uCAAgC;AAKhC,MAAM,gBAAgB,GAA8B;IAClD,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,UAAU;CACf,CAAA;AAED,MAAM,gBAAgB,GAA8B;IAClD,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,iBAAiB;CACxB,CAAA;AAiBD,SAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAI,GAAG,IAAI,EACX,IAAI,GAAG,MAAM,EACb,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,GAAG,KAAK,EACE;IACV,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,6CACY,MAAM,EAChB,SAAS,EAAE,IAAA,UAAE,EACX,gJAAgJ,EAChJ,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACL,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,8CACY,MAAM,EAChB,SAAS,EAAE,IAAA,UAAE,EACX,oGAAoG,EACpG,gBAAgB,CAAC,IAAI,CAAC,EACtB,SAAS,CACV,KACG,KAAK,aAET,iCACE,SAAS,EAAE,IAAA,UAAE,EAAC,6CAA6C,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,iBACxE,MAAM,GAClB,EACF,gCAAK,SAAS,EAAC,mCAAmC,YAAE,QAAQ,GAAO,IAC/D,CACP,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,6CACY,aAAa,EACvB,SAAS,EAAE,IAAA,UAAE,EACX,0KAA0K,EAC1K,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACrE,OAAO,CACL,6CACY,YAAY,EACtB,SAAS,EAAE,IAAA,UAAE,EAAC,0CAA0C,EAAE,SAAS,CAAC,KAChE,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IAC3E,OAAO,CACL,6CACY,kBAAkB,EAC5B,SAAS,EAAE,IAAA,UAAE,EAAC,uDAAuD,EAAE,SAAS,CAAC,KAC7E,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,6CACY,aAAa,EACvB,SAAS,EAAE,IAAA,UAAE,EACX,8EAA8E,EAC9E,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,6CACY,cAAc,EACxB,SAAS,EAAE,IAAA,UAAE,EAAC,4CAA4C,EAAE,SAAS,CAAC,KAClE,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,6CACY,aAAa,EACvB,SAAS,EAAE,IAAA,UAAE,EAAC,uDAAuD,EAAE,SAAS,CAAC,KAC7E,KAAK,GACT,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Footer = Footer;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ function Footer({ links, builtByText = 'Built by', builtByBrand = 'Levr', showLogo = true, linkComponent: LinkComponent = ({ href, ...props }) => (0, jsx_runtime_1.jsx)("a", { href: href, ...props }), }) {
7
+ return ((0, jsx_runtime_1.jsxs)("footer", { className: "relative mt-auto", children: [(0, jsx_runtime_1.jsx)("div", { className: "absolute top-0 left-0 right-0 h-px liquid-glass-border" }), (0, jsx_runtime_1.jsx)("div", { className: "relative z-10 py-6 px-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4", children: [(0, jsx_runtime_1.jsx)("nav", { className: "flex items-center gap-6", "aria-label": "Footer navigation", children: links.map((link) => ((0, jsx_runtime_1.jsxs)(LinkComponent, { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "group flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors duration-200", "aria-label": link.name, children: [(0, jsx_runtime_1.jsx)(link.icon, { className: "h-5 w-5" }), link.showLabel && (0, jsx_runtime_1.jsx)("span", { className: "text-sm font-medium", children: link.name })] }, link.name))) }), showLogo && ((0, jsx_runtime_1.jsxs)("p", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [builtByText, " ", (0, jsx_runtime_1.jsx)("b", { className: "text-primary", children: builtByBrand }), " team with", ' ', (0, jsx_runtime_1.jsx)(lucide_react_1.Heart, { className: "h-4 w-4 text-red-500 fill-red-500" })] }))] }) })] }));
8
+ }
9
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../../src/components/ui/footer.tsx"],"names":[],"mappings":";;AAyBA,wBA0CC;;AAnED,+CAAoC;AAyBpC,SAAgB,MAAM,CAAC,EACrB,KAAK,EACL,WAAW,GAAG,UAAU,EACxB,YAAY,GAAG,MAAM,EACrB,QAAQ,GAAG,IAAI,EACf,aAAa,EAAE,aAAa,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,8BAAG,IAAI,EAAE,IAAI,KAAM,KAAK,GAAI,GAC5E;IACZ,OAAO,CACL,oCAAQ,SAAS,EAAC,kBAAkB,aAElC,gCAAK,SAAS,EAAC,wDAAwD,GAAG,EAE1E,gCAAK,SAAS,EAAC,yBAAyB,YACtC,iCAAK,SAAS,EAAC,8DAA8D,aAE3E,gCAAK,SAAS,EAAC,yBAAyB,gBAAY,mBAAmB,YACpE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,wBAAC,aAAa,IAEZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,0GAA0G,gBACxG,IAAI,CAAC,IAAI,aAErB,uBAAC,IAAI,CAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,EAChC,IAAI,CAAC,SAAS,IAAI,iCAAM,SAAS,EAAC,qBAAqB,YAAE,IAAI,CAAC,IAAI,GAAQ,KARtE,IAAI,CAAC,IAAI,CASA,CACjB,CAAC,GACE,EAGL,QAAQ,IAAI,CACX,+BAAG,SAAS,EAAC,yDAAyD,aACnE,WAAW,OAAE,8BAAG,SAAS,EAAC,cAAc,YAAE,YAAY,GAAK,gBAAW,GAAG,EAC1E,uBAAC,oBAAK,IAAC,SAAS,EAAC,mCAAmC,GAAG,IACrD,CACL,IACG,GACF,IACC,CACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./alert"), exports);
18
+ __exportStar(require("./badge"), exports);
19
+ __exportStar(require("./button"), exports);
20
+ __exportStar(require("./card"), exports);
21
+ __exportStar(require("./footer"), exports);
22
+ __exportStar(require("./input"), exports);
23
+ __exportStar(require("./pretty-amount"), exports);
24
+ __exportStar(require("./textarea"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,0CAAuB;AACvB,2CAAwB;AACxB,yCAAsB;AACtB,2CAAwB;AACxB,0CAAuB;AACvB,kDAA+B;AAC/B,6CAA0B"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Input = Input;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const utils_1 = require("../../utils");
6
+ function Input({ className, type, noGlass = false, ...props }) {
7
+ if (noGlass) {
8
+ return ((0, jsx_runtime_1.jsx)("input", { type: type, "data-slot": "input", className: (0, utils_1.cn)('file:text-foreground placeholder:text-white/70 selection:bg-primary selection:text-primary-foreground bg-black/20 border border-white/50 h-9 w-full min-w-0 rounded-md px-3 py-1 text-white transition-all duration-300 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', 'focus:outline-none focus:ring-2 focus:ring-white/50 focus-visible:ring-white/50 focus-visible:ring-2', 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive', className), ...props }));
9
+ }
10
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('glass glass-lg relative border border-white/50 h-9 w-full min-w-0 rounded-md text-white transition-all duration-300', 'focus-within:ring-2 focus-within:ring-white/50', className), children: [(0, jsx_runtime_1.jsx)("span", { className: "glass-layers glass-refraction glass-texture glass-tint-none", "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)("input", { type: type, "data-slot": "input", className: "file:text-foreground placeholder:text-white/70 selection:bg-primary selection:text-primary-foreground bg-transparent h-full w-full px-3 py-1 text-white outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium md:text-sm disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-destructive/20 aria-invalid:border-destructive relative z-10", ...props })] }));
11
+ }
12
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../src/components/ui/input.tsx"],"names":[],"mappings":";;AAkDS,sBAAK;;AAhDd,uCAAgC;AAShC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,KAAK,EAAc;IACvE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,kCACE,IAAI,EAAE,IAAI,eACA,OAAO,EACjB,SAAS,EAAE,IAAA,UAAE,EACX,wZAAwZ,EACxZ,sGAAsG,EACtG,kEAAkE,EAClE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;IACH,CAAC;IAED,OAAO,CACL,iCACE,SAAS,EAAE,IAAA,UAAE,EACX,qHAAqH,EACrH,gDAAgD,EAChD,SAAS,CACV,aAED,iCACE,SAAS,EAAC,6DAA6D,iBAC3D,MAAM,GAClB,EACF,kCACE,IAAI,EAAE,IAAI,eACA,OAAO,EACjB,SAAS,EAAC,uaAAua,KAC7a,KAAK,GACT,IACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrettyAmount = PrettyAmount;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const utils_1 = require("../../utils");
6
+ const sizeClasses = {
7
+ xs: {
8
+ main: 'text-xs',
9
+ symbol: 'text-[10px]',
10
+ suffix: 'text-[9px]',
11
+ subscript: 'text-[8px]',
12
+ },
13
+ sm: {
14
+ main: 'text-sm',
15
+ symbol: 'text-xs',
16
+ suffix: 'text-[10px]',
17
+ subscript: 'text-[9px]',
18
+ },
19
+ base: {
20
+ main: 'text-base',
21
+ symbol: 'text-sm',
22
+ suffix: 'text-xs',
23
+ subscript: 'text-[10px]',
24
+ },
25
+ lg: {
26
+ main: 'text-lg',
27
+ symbol: 'text-base',
28
+ suffix: 'text-sm',
29
+ subscript: 'text-xs',
30
+ },
31
+ xl: {
32
+ main: 'text-xl',
33
+ symbol: 'text-lg',
34
+ suffix: 'text-base',
35
+ subscript: 'text-sm',
36
+ },
37
+ '2xl': {
38
+ main: 'text-2xl',
39
+ symbol: 'text-xl',
40
+ suffix: 'text-lg',
41
+ subscript: 'text-base',
42
+ },
43
+ };
44
+ function toNumberSafe(amountFormatted) {
45
+ const normalized = amountFormatted.replace(/,/g, '').trim();
46
+ const num = Number(normalized);
47
+ return Number.isFinite(num) ? num : 0;
48
+ }
49
+ function abbreviateNumber(value) {
50
+ const abs = Math.abs(value);
51
+ const sign = value < 0 ? '-' : '';
52
+ const units = [
53
+ { v: 1e12, s: 'T' },
54
+ { v: 1e9, s: 'B' },
55
+ { v: 1e6, s: 'M' },
56
+ { v: 1e3, s: 'K' },
57
+ ];
58
+ for (const u of units) {
59
+ if (abs >= u.v) {
60
+ const n = abs / u.v;
61
+ const text = `${sign}${n.toLocaleString('en-US', {
62
+ minimumFractionDigits: 0,
63
+ maximumFractionDigits: 2,
64
+ useGrouping: false,
65
+ })}`;
66
+ return { text, suffix: u.s };
67
+ }
68
+ }
69
+ return { text: value.toString(), suffix: '' };
70
+ }
71
+ function getTinyParts(amountFormatted, options) {
72
+ const src = amountFormatted.replace(/,/g, '').trim();
73
+ if (!src)
74
+ return null;
75
+ const sign = src.startsWith('-') ? '-' : '';
76
+ const s = sign ? src.slice(1) : src;
77
+ if (!s.startsWith('0.'))
78
+ return null;
79
+ const after = s.slice(2);
80
+ const match = after.match(/^(0+)(\d*)/);
81
+ if (!match)
82
+ return null;
83
+ const zeros = match[1].length;
84
+ if (zeros < 3)
85
+ return null;
86
+ const restDigits = (match[2] || '').slice(0, options.digits);
87
+ return {
88
+ sign,
89
+ leading: '0.0',
90
+ zerosCount: zeros,
91
+ rest: restDigits || '0',
92
+ };
93
+ }
94
+ function PrettyAmount({ amountFormatted, symbol, className, smallDigits = 4, normalPrecision = 2, size = 'base', variant = 'number', usd, usdInline = false, }) {
95
+ const numeric = toNumberSafe(amountFormatted.toString());
96
+ const sizes = sizeClasses[size];
97
+ const isBig = Math.abs(numeric) >= 1000;
98
+ const isTinyCandidate = Math.abs(numeric) > 0 && Math.abs(numeric) < 0.001;
99
+ const formatUsd = (usdValue) => {
100
+ const usdNum = toNumberSafe(usdValue);
101
+ if (usdNum === 0 && parseFloat(usdValue) === 0)
102
+ return null;
103
+ const abs = Math.abs(usdNum);
104
+ if (abs >= 1000) {
105
+ const abbreviated = abbreviateNumber(usdNum);
106
+ return `$${abbreviated.text}${abbreviated.suffix}`;
107
+ }
108
+ if (abs > 0 && abs < 0.001) {
109
+ const tiny = getTinyParts(usdValue, { digits: 4 });
110
+ if (tiny) {
111
+ return `$${tiny.sign}${tiny.leading}${tiny.zerosCount}${tiny.rest}`;
112
+ }
113
+ }
114
+ const precision = abs === 0 ? 2 : 2;
115
+ return `$${abs.toLocaleString('en-US', {
116
+ minimumFractionDigits: precision,
117
+ maximumFractionDigits: precision,
118
+ })}`;
119
+ };
120
+ const usdFormatted = usd ? formatUsd(usd) : null;
121
+ const AmountWrapper = ({ children }) => {
122
+ if (!usdFormatted) {
123
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
124
+ }
125
+ if (usdInline) {
126
+ return ((0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex items-baseline gap-1.5', className), children: [children, (0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground text-xs'), children: usdFormatted })] }));
127
+ }
128
+ return ((0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex flex-col', className), children: [children, (0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground text-[10px] mt-0.5'), children: usdFormatted })] }));
129
+ };
130
+ if (variant === 'percentage') {
131
+ if (isBig) {
132
+ const { text, suffix } = abbreviateNumber(numeric);
133
+ return ((0, jsx_runtime_1.jsx)(AmountWrapper, { children: (0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex items-baseline gap-0.5 sm:gap-1'), children: [(0, jsx_runtime_1.jsx)("span", { className: sizes.main, children: text }), (0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground -ml-0.5 sm:-ml-1 font-bold', sizes.suffix), children: suffix }), (0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground', sizes.symbol), children: "%" })] }) }));
134
+ }
135
+ const percentText = numeric.toLocaleString('en-US', {
136
+ minimumFractionDigits: normalPrecision,
137
+ maximumFractionDigits: normalPrecision,
138
+ useGrouping: false,
139
+ });
140
+ return ((0, jsx_runtime_1.jsx)(AmountWrapper, { children: (0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex items-baseline gap-0.5 sm:gap-1'), children: [(0, jsx_runtime_1.jsx)("span", { className: sizes.main, children: percentText }), (0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground', sizes.symbol), children: "%" })] }) }));
141
+ }
142
+ if (isBig) {
143
+ const { text, suffix } = abbreviateNumber(numeric);
144
+ return ((0, jsx_runtime_1.jsx)(AmountWrapper, { children: (0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex items-baseline gap-0.5 sm:gap-1'), children: [(0, jsx_runtime_1.jsx)("span", { className: sizes.main, children: text }), (0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground -ml-0.5 sm:-ml-1 font-bold', sizes.suffix), children: suffix }), symbol ? ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground', sizes.symbol), children: symbol })) : null] }) }));
145
+ }
146
+ if (isTinyCandidate) {
147
+ const tiny = getTinyParts(amountFormatted.toString(), {
148
+ digits: smallDigits,
149
+ });
150
+ if (tiny) {
151
+ return ((0, jsx_runtime_1.jsx)(AmountWrapper, { children: (0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex items-baseline gap-0.5 sm:gap-1'), children: [tiny.sign && (0, jsx_runtime_1.jsx)("span", { className: sizes.main, children: tiny.sign }), (0, jsx_runtime_1.jsxs)("span", { className: sizes.main, children: [tiny.leading, (0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('align-sub leading-none opacity-70', sizes.subscript), children: tiny.zerosCount }), tiny.rest] }), symbol ? ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground', sizes.symbol), children: symbol })) : null] }) }));
152
+ }
153
+ }
154
+ const normalText = (() => {
155
+ const n = Math.abs(numeric);
156
+ const sign = numeric < 0 ? '-' : '';
157
+ const precision = n === 0 ? 2 : normalPrecision;
158
+ const txt = n.toLocaleString('en-US', {
159
+ minimumFractionDigits: precision,
160
+ maximumFractionDigits: precision,
161
+ useGrouping: false,
162
+ });
163
+ return `${sign}${txt}`;
164
+ })();
165
+ return ((0, jsx_runtime_1.jsx)(AmountWrapper, { children: (0, jsx_runtime_1.jsxs)("span", { className: (0, utils_1.cn)('inline-flex items-baseline gap-0.5 sm:gap-1'), children: [(0, jsx_runtime_1.jsx)("span", { className: sizes.main, children: normalText }), symbol ? ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)('text-muted-foreground', sizes.symbol), children: symbol })) : null] }) }));
166
+ }
167
+ //# sourceMappingURL=pretty-amount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pretty-amount.js","sourceRoot":"","sources":["../../../../src/components/ui/pretty-amount.tsx"],"names":[],"mappings":";;AAmIA,oCA4KC;;AA/SD,uCAAgC;AA2BhC,MAAM,WAAW,GAGb;IACF,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,YAAY;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,YAAY;KACxB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,aAAa;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,SAAS;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,SAAS;KACrB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,WAAW;KACvB;CACF,CAAA;AAED,SAAS,YAAY,CAAC,eAAuB;IAC3C,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3B,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAEjC,MAAM,KAAK,GAAoC;QAC7C,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;QAClB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;QAClB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;KACnB,CAAA;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YACnB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC/C,qBAAqB,EAAE,CAAC;gBACxB,qBAAqB,EAAE,CAAC;gBACxB,WAAW,EAAE,KAAK;aACnB,CAAC,EAAE,CAAA;YACJ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;AAC/C,CAAC;AAED,SAAS,YAAY,CACnB,eAAuB,EACvB,OAA2B;IAE3B,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACpD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IAErB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAEnC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAGpC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAEvB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC7B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE1B,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAE5D,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,UAAU,IAAI,GAAG;KACxB,CAAA;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,EAC3B,eAAe,EACf,MAAM,EACN,SAAS,EACT,WAAW,GAAG,CAAC,EACf,eAAe,GAAG,CAAC,EACnB,IAAI,GAAG,MAAM,EACb,OAAO,GAAG,QAAQ,EAClB,GAAG,EACH,SAAS,GAAG,KAAK,GACC;IAClB,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;IACvC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;IAG1E,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAG5B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAC5C,OAAO,IAAI,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,CAAA;QACpD,CAAC;QAGD,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YAClD,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YACrE,CAAC;QACH,CAAC;QAGD,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE;YACrC,qBAAqB,EAAE,SAAS;YAChC,qBAAqB,EAAE,SAAS;SACjC,CAAC,EAAE,CAAA;IACN,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAGhD,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;QACpE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,2DAAG,QAAQ,GAAI,CAAA;QACxB,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CACL,kCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,oCAAoC,EAAE,SAAS,CAAC,aACjE,QAAQ,EACT,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,+BAA+B,CAAC,YAAG,YAAY,GAAQ,IACtE,CACR,CAAA;QACH,CAAC;QAED,OAAO,CACL,kCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,sBAAsB,EAAE,SAAS,CAAC,aACnD,QAAQ,EACT,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,0CAA0C,CAAC,YAAG,YAAY,GAAQ,IACjF,CACR,CAAA;IACH,CAAC,CAAA;IAGD,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAClD,OAAO,CACL,uBAAC,aAAa,cACZ,kCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,6CAA6C,CAAC,aAChE,iCAAM,SAAS,EAAE,KAAK,CAAC,IAAI,YAAG,IAAI,GAAQ,EAC1C,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,kDAAkD,EAAE,KAAK,CAAC,MAAM,CAAC,YAClF,MAAM,GACF,EACP,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAU,IAC/D,GACO,CACjB,CAAA;QACH,CAAC;QAGD,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;YAClD,qBAAqB,EAAE,eAAe;YACtC,qBAAqB,EAAE,eAAe;YACtC,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;QAEF,OAAO,CACL,uBAAC,aAAa,cACZ,kCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,6CAA6C,CAAC,aAChE,iCAAM,SAAS,EAAE,KAAK,CAAC,IAAI,YAAG,WAAW,GAAQ,EACjD,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAU,IAC/D,GACO,CACjB,CAAA;IACH,CAAC;IAGD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAClD,OAAO,CACL,uBAAC,aAAa,cACZ,kCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,6CAA6C,CAAC,aAChE,iCAAM,SAAS,EAAE,KAAK,CAAC,IAAI,YAAG,IAAI,GAAQ,EAC1C,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,kDAAkD,EAAE,KAAK,CAAC,MAAM,CAAC,YAClF,MAAM,GACF,EACN,MAAM,CAAC,CAAC,CAAC,CACR,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,YAAG,MAAM,GAAQ,CAC5E,CAAC,CAAC,CAAC,IAAI,IACH,GACO,CACjB,CAAA;IACH,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE;YACpD,MAAM,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CACL,uBAAC,aAAa,cACZ,kCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,6CAA6C,CAAC,aAC/D,IAAI,CAAC,IAAI,IAAI,iCAAM,SAAS,EAAE,KAAK,CAAC,IAAI,YAAG,IAAI,CAAC,IAAI,GAAQ,EAC7D,kCAAM,SAAS,EAAE,KAAK,CAAC,IAAI,aACxB,IAAI,CAAC,OAAO,EACb,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,mCAAmC,EAAE,KAAK,CAAC,SAAS,CAAC,YACtE,IAAI,CAAC,UAAU,GACX,EACN,IAAI,CAAC,IAAI,IACL,EACN,MAAM,CAAC,CAAC,CAAC,CACR,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,YAAG,MAAM,GAAQ,CAC5E,CAAC,CAAC,CAAC,IAAI,IACH,GACO,CACjB,CAAA;QACH,CAAC;IACH,CAAC;IAGD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAEnC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAA;QAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;YACpC,qBAAqB,EAAE,SAAS;YAChC,qBAAqB,EAAE,SAAS;YAChC,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;QACF,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA;IACxB,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,CACL,uBAAC,aAAa,cACZ,kCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,6CAA6C,CAAC,aAChE,iCAAM,SAAS,EAAE,KAAK,CAAC,IAAI,YAAG,UAAU,GAAQ,EAC/C,MAAM,CAAC,CAAC,CAAC,CACR,iCAAM,SAAS,EAAE,IAAA,UAAE,EAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,YAAG,MAAM,GAAQ,CAC5E,CAAC,CAAC,CAAC,IAAI,IACH,GACO,CACjB,CAAA;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Textarea = Textarea;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const utils_1 = require("../../utils");
6
+ function Textarea({ className, isGlass = false, ...props }) {
7
+ if (!isGlass) {
8
+ return ((0, jsx_runtime_1.jsx)("textarea", { "data-slot": "textarea", className: (0, utils_1.cn)('placeholder:text-white/70 bg-black/20 border border-white/50 flex field-sizing-content min-h-16 w-full rounded-md px-3 py-2 text-white transition-all duration-300 outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', 'focus:outline-none focus:ring-2 focus:ring-white/50 focus-visible:ring-white/50 focus-visible:ring-2', 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive', className), ...props }));
9
+ }
10
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('glass glass-lg relative border border-white/50 min-h-16 w-full rounded-md text-white transition-all duration-300', 'focus-within:ring-2 focus-within:ring-white/50', className), children: [(0, jsx_runtime_1.jsx)("span", { className: "glass-layers glass-refraction glass-texture glass-tint-none", "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)("textarea", { "data-slot": "textarea", className: "placeholder:text-white/70 bg-transparent flex field-sizing-content min-h-16 w-full px-3 py-2 text-white outline-none md:text-sm disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-destructive/20 aria-invalid:border-destructive relative z-10", ...props })] }));
11
+ }
12
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../src/components/ui/textarea.tsx"],"names":[],"mappings":";;AAgDS,4BAAQ;;AA9CjB,uCAAgC;AAShC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,KAAK,EAAiB;IACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,kDACY,UAAU,EACpB,SAAS,EAAE,IAAA,UAAE,EACX,4OAA4O,EAC5O,sGAAsG,EACtG,kEAAkE,EAClE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;IACH,CAAC;IAED,OAAO,CACL,iCACE,SAAS,EAAE,IAAA,UAAE,EACX,kHAAkH,EAClH,gDAAgD,EAChD,SAAS,CACV,aAED,iCACE,SAAS,EAAC,6DAA6D,iBAC3D,MAAM,GAClB,EACF,kDACY,UAAU,EACpB,SAAS,EAAC,gQAAgQ,KACtQ,KAAK,GACT,IACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./components"), exports);
18
+ __exportStar(require("./utils"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,0CAAuB"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cn = cn;
4
+ const clsx_1 = require("clsx");
5
+ const tailwind_merge_1 = require("tailwind-merge");
6
+ function cn(...inputs) {
7
+ return (0, tailwind_merge_1.twMerge)((0, clsx_1.clsx)(inputs));
8
+ }
9
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAGA,gBAEC;AALD,+BAA4C;AAC5C,mDAAwC;AAExC,SAAgB,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,IAAA,wBAAO,EAAC,IAAA,WAAI,EAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./ui/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAA"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
4
+ import { XIcon } from "lucide-react";
5
+ import * as React from "react";
6
+ import { cn } from "../../../utils.js";
7
+ function Dialog({ ...props }) {
8
+ return _jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
9
+ }
10
+ function DialogTrigger({ ...props }) {
11
+ return _jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
12
+ }
13
+ function DialogPortal({ ...props }) {
14
+ return _jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
15
+ }
16
+ function DialogClose({ ...props }) {
17
+ return _jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
18
+ }
19
+ function DialogOverlay({ className, ...props }) {
20
+ return (_jsx(DialogPrimitive.Overlay, { "data-slot": "dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/60 backdrop-blur-sm", className), ...props }));
21
+ }
22
+ function DialogContent({ className, children, showCloseButton = true, ...props }) {
23
+ return (_jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn("glass glass-lg relative data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 w-full max-w-[calc(100%-2rem)] max-h-[80vh] translate-x-[-50%] translate-y-[-50%] rounded-xl border border-white/30 shadow-2xl duration-200 sm:max-w-lg", className), ...props, children: [_jsx("span", { className: "glass-layers glass-refraction glass-texture glass-tint-none", "aria-hidden": "true" }), _jsx("div", { className: "relative z-10 grid gap-4 p-6 max-h-[80vh] overflow-y-auto", children: children }), showCloseButton && (_jsxs(DialogPrimitive.Close, { "data-slot": "dialog-close", className: "absolute top-4 right-4 z-20 rounded-full p-1.5 text-white/70 transition-all hover:text-white hover:bg-white/10 focus:ring-2 focus:ring-white/50 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
24
+ }
25
+ function DialogHeader({ className, ...props }) {
26
+ return (_jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props }));
27
+ }
28
+ function DialogFooter({ className, ...props }) {
29
+ return (_jsx("div", { "data-slot": "dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props }));
30
+ }
31
+ function DialogTitle({ className, ...props }) {
32
+ return (_jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold text-white", className), ...props }));
33
+ }
34
+ function DialogDescription({ className, ...props }) {
35
+ return (_jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: cn("text-white/70 text-sm", className), ...props }));
36
+ }
37
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../../../src/client/components/ui/dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from "./dialog.js";
2
+ export * from "./pretty-date.js";
3
+ export * from "./resizable-navbar.js";
4
+ export * from "./select.js";
5
+ export * from "./sonner.js";
6
+ export * from "./switch.js";
7
+ export * from "./tabs.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/client/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,88 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { cn } from "../../../utils.js";
4
+ const sizeClasses = {
5
+ xs: "text-xs",
6
+ sm: "text-sm",
7
+ base: "text-base",
8
+ lg: "text-lg",
9
+ xl: "text-xl",
10
+ "2xl": "text-2xl",
11
+ };
12
+ function parseDate(date) {
13
+ if (date instanceof Date)
14
+ return date;
15
+ if (typeof date === "string")
16
+ return new Date(date);
17
+ if (typeof date === "number")
18
+ return new Date(date);
19
+ throw new Error("Invalid date format");
20
+ }
21
+ function formatDuration(milliseconds, showSeconds = false) {
22
+ const seconds = Math.floor(Math.abs(milliseconds) / 1000);
23
+ const minutes = Math.floor(seconds / 60);
24
+ const hours = Math.floor(minutes / 60);
25
+ const days = Math.floor(hours / 24);
26
+ const remainingHours = hours % 24;
27
+ const remainingMinutes = minutes % 60;
28
+ const remainingSeconds = seconds % 60;
29
+ const parts = [];
30
+ if (days > 0) {
31
+ parts.push(`${days}d`);
32
+ }
33
+ if (remainingHours > 0 || days > 0) {
34
+ parts.push(`${remainingHours}h`);
35
+ }
36
+ if (remainingMinutes > 0 || hours > 0 || days > 0) {
37
+ parts.push(`${remainingMinutes}m`);
38
+ }
39
+ if (showSeconds && (remainingSeconds > 0 || (days === 0 && hours === 0 && minutes === 0))) {
40
+ parts.push(`${remainingSeconds}s`);
41
+ }
42
+ return parts.length > 0 ? parts.join(" ") : "0s";
43
+ }
44
+ function getTimeUntil(targetDate, referenceDate) {
45
+ const now = referenceDate || new Date();
46
+ const diff = targetDate.getTime() - now.getTime();
47
+ return {
48
+ milliseconds: diff,
49
+ isPast: diff < 0,
50
+ };
51
+ }
52
+ export function PrettyDate({ date, format = "datetime", className, size = "base", showSeconds = false, referenceDate, labels = {}, }) {
53
+ const [, setUpdateTrigger] = useState(0);
54
+ const parsedDate = parseDate(date);
55
+ const parsedReferenceDate = referenceDate ? parseDate(referenceDate) : undefined;
56
+ const timeInfo = getTimeUntil(parsedDate, parsedReferenceDate);
57
+ useEffect(() => {
58
+ if (format === "countdown") {
59
+ const interval = setInterval(() => {
60
+ setUpdateTrigger((prev) => prev + 1);
61
+ }, 1000);
62
+ return () => clearInterval(interval);
63
+ }
64
+ return;
65
+ }, [format]);
66
+ const sizeClass = sizeClasses[size];
67
+ const { ago: agoLabel = "ago", fromNow: fromNowLabel = "from now" } = labels;
68
+ if (format === "countdown") {
69
+ const duration = formatDuration(timeInfo.milliseconds, showSeconds);
70
+ const suffix = timeInfo.isPast ? agoLabel : fromNowLabel;
71
+ const colorClass = timeInfo.isPast ? "text-red-500" : "text-green-500";
72
+ return (_jsxs("span", { className: cn("inline-flex items-baseline gap-1", className), children: [_jsx("span", { className: cn(sizeClass, colorClass), children: duration }), _jsx("span", { className: cn("text-muted-foreground", sizeClass), children: suffix })] }));
73
+ }
74
+ if (format === "relative") {
75
+ const duration = formatDuration(Math.abs(timeInfo.milliseconds), showSeconds);
76
+ const suffix = timeInfo.isPast ? agoLabel : fromNowLabel;
77
+ const colorClass = timeInfo.isPast ? "text-muted-foreground" : "text-green-500";
78
+ return (_jsxs("span", { className: cn("inline-flex items-baseline gap-1", className), children: [_jsx("span", { className: cn(sizeClass, colorClass), children: duration }), _jsx("span", { className: cn("text-muted-foreground", sizeClass), children: suffix })] }));
79
+ }
80
+ if (format === "date") {
81
+ return _jsx("span", { className: cn(sizeClass, className), children: parsedDate.toLocaleDateString() });
82
+ }
83
+ if (format === "time") {
84
+ return _jsx("span", { className: cn(sizeClass, className), children: parsedDate.toLocaleTimeString() });
85
+ }
86
+ return (_jsxs("span", { className: cn(sizeClass, className), children: [parsedDate.toLocaleDateString(), " at ", parsedDate.toLocaleTimeString()] }));
87
+ }
88
+ //# sourceMappingURL=pretty-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pretty-date.js","sourceRoot":"","sources":["../../../../../src/client/components/ui/pretty-date.tsx"],"names":[],"mappings":"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"}