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.
- package/LICENSE.md +201 -0
- package/README.md +209 -0
- package/dist/cjs/client/components/index.js +18 -0
- package/dist/cjs/client/components/index.js.map +1 -0
- package/dist/cjs/client/components/ui/dialog.js +48 -0
- package/dist/cjs/client/components/ui/dialog.js.map +1 -0
- package/dist/cjs/client/components/ui/index.js +24 -0
- package/dist/cjs/client/components/ui/index.js.map +1 -0
- package/dist/cjs/client/components/ui/pretty-date.js +91 -0
- package/dist/cjs/client/components/ui/pretty-date.js.map +1 -0
- package/dist/cjs/client/components/ui/resizable-navbar.js +126 -0
- package/dist/cjs/client/components/ui/resizable-navbar.js.map +1 -0
- package/dist/cjs/client/components/ui/select.js +50 -0
- package/dist/cjs/client/components/ui/select.js.map +1 -0
- package/dist/cjs/client/components/ui/sonner.js +12 -0
- package/dist/cjs/client/components/ui/sonner.js.map +1 -0
- package/dist/cjs/client/components/ui/switch.js +11 -0
- package/dist/cjs/client/components/ui/switch.js.map +1 -0
- package/dist/cjs/client/components/ui/tabs.js +53 -0
- package/dist/cjs/client/components/ui/tabs.js.map +1 -0
- package/dist/cjs/client/hooks/index.js +18 -0
- package/dist/cjs/client/hooks/index.js.map +1 -0
- package/dist/cjs/client/hooks/use-cookie-with-fallback.js +107 -0
- package/dist/cjs/client/hooks/use-cookie-with-fallback.js.map +1 -0
- package/dist/cjs/client/index.js +19 -0
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/components/index.js +18 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/components/ui/alert.js +33 -0
- package/dist/cjs/components/ui/alert.js.map +1 -0
- package/dist/cjs/components/ui/badge.js +28 -0
- package/dist/cjs/components/ui/badge.js.map +1 -0
- package/dist/cjs/components/ui/button.js +39 -0
- package/dist/cjs/components/ui/button.js.map +1 -0
- package/dist/cjs/components/ui/card.js +48 -0
- package/dist/cjs/components/ui/card.js.map +1 -0
- package/dist/cjs/components/ui/footer.js +9 -0
- package/dist/cjs/components/ui/footer.js.map +1 -0
- package/dist/cjs/components/ui/index.js +25 -0
- package/dist/cjs/components/ui/index.js.map +1 -0
- package/dist/cjs/components/ui/input.js +12 -0
- package/dist/cjs/components/ui/input.js.map +1 -0
- package/dist/cjs/components/ui/pretty-amount.js +167 -0
- package/dist/cjs/components/ui/pretty-amount.js.map +1 -0
- package/dist/cjs/components/ui/textarea.js +12 -0
- package/dist/cjs/components/ui/textarea.js.map +1 -0
- package/dist/cjs/index.js +19 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/utils.js +9 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/client/components/index.js +2 -0
- package/dist/esm/client/components/index.js.map +1 -0
- package/dist/esm/client/components/ui/dialog.js +37 -0
- package/dist/esm/client/components/ui/dialog.js.map +1 -0
- package/dist/esm/client/components/ui/index.js +8 -0
- package/dist/esm/client/components/ui/index.js.map +1 -0
- package/dist/esm/client/components/ui/pretty-date.js +88 -0
- package/dist/esm/client/components/ui/pretty-date.js.map +1 -0
- package/dist/esm/client/components/ui/resizable-navbar.js +113 -0
- package/dist/esm/client/components/ui/resizable-navbar.js.map +1 -0
- package/dist/esm/client/components/ui/select.js +39 -0
- package/dist/esm/client/components/ui/select.js.map +1 -0
- package/dist/esm/client/components/ui/sonner.js +9 -0
- package/dist/esm/client/components/ui/sonner.js.map +1 -0
- package/dist/esm/client/components/ui/switch.js +9 -0
- package/dist/esm/client/components/ui/switch.js.map +1 -0
- package/dist/esm/client/components/ui/tabs.js +47 -0
- package/dist/esm/client/components/ui/tabs.js.map +1 -0
- package/dist/esm/client/hooks/index.js +2 -0
- package/dist/esm/client/hooks/index.js.map +1 -0
- package/dist/esm/client/hooks/use-cookie-with-fallback.js +104 -0
- package/dist/esm/client/hooks/use-cookie-with-fallback.js.map +1 -0
- package/dist/esm/client/index.js +3 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/components/index.js +2 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/components/ui/alert.js +30 -0
- package/dist/esm/components/ui/alert.js.map +1 -0
- package/dist/esm/components/ui/badge.js +25 -0
- package/dist/esm/components/ui/badge.js.map +1 -0
- package/dist/esm/components/ui/button.js +36 -0
- package/dist/esm/components/ui/button.js.map +1 -0
- package/dist/esm/components/ui/card.js +41 -0
- package/dist/esm/components/ui/card.js.map +1 -0
- package/dist/esm/components/ui/footer.js +6 -0
- package/dist/esm/components/ui/footer.js.map +1 -0
- package/dist/esm/components/ui/index.js +9 -0
- package/dist/esm/components/ui/index.js.map +1 -0
- package/dist/esm/components/ui/input.js +11 -0
- package/dist/esm/components/ui/input.js.map +1 -0
- package/dist/esm/components/ui/pretty-amount.js +164 -0
- package/dist/esm/components/ui/pretty-amount.js.map +1 -0
- package/dist/esm/components/ui/textarea.js +11 -0
- package/dist/esm/components/ui/textarea.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/utils.js +6 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/styles.css +563 -0
- package/dist/types/client/components/index.d.ts +2 -0
- package/dist/types/client/components/index.d.ts.map +1 -0
- package/dist/types/client/components/ui/dialog.d.ts +16 -0
- package/dist/types/client/components/ui/dialog.d.ts.map +1 -0
- package/dist/types/client/components/ui/index.d.ts +8 -0
- package/dist/types/client/components/ui/index.d.ts.map +1 -0
- package/dist/types/client/components/ui/pretty-date.d.ts +30 -0
- package/dist/types/client/components/ui/pretty-date.d.ts.map +1 -0
- package/dist/types/client/components/ui/resizable-navbar.d.ts +84 -0
- package/dist/types/client/components/ui/resizable-navbar.d.ts.map +1 -0
- package/dist/types/client/components/ui/select.d.ts +16 -0
- package/dist/types/client/components/ui/select.d.ts.map +1 -0
- package/dist/types/client/components/ui/sonner.d.ts +6 -0
- package/dist/types/client/components/ui/sonner.d.ts.map +1 -0
- package/dist/types/client/components/ui/switch.d.ts +5 -0
- package/dist/types/client/components/ui/switch.d.ts.map +1 -0
- package/dist/types/client/components/ui/tabs.d.ts +11 -0
- package/dist/types/client/components/ui/tabs.d.ts.map +1 -0
- package/dist/types/client/hooks/index.d.ts +2 -0
- package/dist/types/client/hooks/index.d.ts.map +1 -0
- package/dist/types/client/hooks/use-cookie-with-fallback.d.ts +20 -0
- package/dist/types/client/hooks/use-cookie-with-fallback.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +3 -0
- package/dist/types/client/index.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/types/components/ui/alert.d.ts +21 -0
- package/dist/types/components/ui/alert.d.ts.map +1 -0
- package/dist/types/components/ui/badge.d.ts +10 -0
- package/dist/types/components/ui/badge.d.ts.map +1 -0
- package/dist/types/components/ui/button.d.ts +16 -0
- package/dist/types/components/ui/button.d.ts.map +1 -0
- package/dist/types/components/ui/card.d.ts +26 -0
- package/dist/types/components/ui/card.d.ts.map +1 -0
- package/dist/types/components/ui/footer.d.ts +25 -0
- package/dist/types/components/ui/footer.d.ts.map +1 -0
- package/dist/types/components/ui/index.d.ts +9 -0
- package/dist/types/components/ui/index.d.ts.map +1 -0
- package/dist/types/components/ui/input.d.ts +10 -0
- package/dist/types/components/ui/input.d.ts.map +1 -0
- package/dist/types/components/ui/pretty-amount.d.ts +24 -0
- package/dist/types/components/ui/pretty-amount.d.ts.map +1 -0
- package/dist/types/components/ui/textarea.d.ts +10 -0
- package/dist/types/components/ui/textarea.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/utils.d.ts +3 -0
- package/dist/types/utils.d.ts.map +1 -0
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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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"}
|