@medialane/ui 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/components/activity-feed-shell.cjs +90 -0
  2. package/dist/components/activity-feed-shell.cjs.map +1 -0
  3. package/dist/components/activity-feed-shell.d.cts +13 -0
  4. package/dist/components/activity-feed-shell.d.ts +13 -0
  5. package/dist/components/activity-feed-shell.js +56 -0
  6. package/dist/components/activity-feed-shell.js.map +1 -0
  7. package/dist/components/activity-row.cjs +95 -0
  8. package/dist/components/activity-row.cjs.map +1 -0
  9. package/dist/components/activity-row.d.cts +20 -0
  10. package/dist/components/activity-row.d.ts +20 -0
  11. package/dist/components/activity-row.js +61 -0
  12. package/dist/components/activity-row.js.map +1 -0
  13. package/dist/components/activity-ticker.cjs +92 -0
  14. package/dist/components/activity-ticker.cjs.map +1 -0
  15. package/dist/components/activity-ticker.d.cts +12 -0
  16. package/dist/components/activity-ticker.d.ts +12 -0
  17. package/dist/components/activity-ticker.js +58 -0
  18. package/dist/components/activity-ticker.js.map +1 -0
  19. package/dist/components/collection-card.cjs +2 -5
  20. package/dist/components/collection-card.cjs.map +1 -1
  21. package/dist/components/collection-card.js +3 -6
  22. package/dist/components/collection-card.js.map +1 -1
  23. package/dist/components/cta-card-grid.cjs +67 -0
  24. package/dist/components/cta-card-grid.cjs.map +1 -0
  25. package/dist/components/cta-card-grid.d.cts +23 -0
  26. package/dist/components/cta-card-grid.d.ts +23 -0
  27. package/dist/components/cta-card-grid.js +33 -0
  28. package/dist/components/cta-card-grid.js.map +1 -0
  29. package/dist/components/hero-slider.cjs +133 -0
  30. package/dist/components/hero-slider.cjs.map +1 -0
  31. package/dist/components/hero-slider.d.cts +12 -0
  32. package/dist/components/hero-slider.d.ts +12 -0
  33. package/dist/components/hero-slider.js +98 -0
  34. package/dist/components/hero-slider.js.map +1 -0
  35. package/dist/components/launchpad-grid.cjs +77 -0
  36. package/dist/components/launchpad-grid.cjs.map +1 -0
  37. package/dist/components/launchpad-grid.d.cts +20 -0
  38. package/dist/components/launchpad-grid.d.ts +20 -0
  39. package/dist/components/launchpad-grid.js +43 -0
  40. package/dist/components/launchpad-grid.js.map +1 -0
  41. package/dist/components/listing-card.cjs +146 -0
  42. package/dist/components/listing-card.cjs.map +1 -0
  43. package/dist/components/listing-card.d.cts +16 -0
  44. package/dist/components/listing-card.d.ts +16 -0
  45. package/dist/components/listing-card.js +111 -0
  46. package/dist/components/listing-card.js.map +1 -0
  47. package/dist/data/activity.cjs +48 -0
  48. package/dist/data/activity.cjs.map +1 -0
  49. package/dist/data/activity.d.cts +16 -0
  50. package/dist/data/activity.d.ts +16 -0
  51. package/dist/data/activity.js +23 -0
  52. package/dist/data/activity.js.map +1 -0
  53. package/dist/index.cjs +35 -2
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.d.cts +11 -0
  56. package/dist/index.d.ts +11 -0
  57. package/dist/index.js +22 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/medialane.css +184 -0
  60. package/dist/utils/time.cjs +42 -0
  61. package/dist/utils/time.cjs.map +1 -0
  62. package/dist/utils/time.d.cts +7 -0
  63. package/dist/utils/time.d.ts +7 -0
  64. package/dist/utils/time.js +18 -0
  65. package/dist/utils/time.js.map +1 -0
  66. package/package.json +3 -2
@@ -0,0 +1,111 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import Link from "next/link";
5
+ import Image from "next/image";
6
+ import { ShoppingCart, Check, Zap } from "lucide-react";
7
+ import { MotionCard } from "./motion-primitives.js";
8
+ import { CurrencyIcon } from "./currency-icon.js";
9
+ import { cn } from "../utils/cn.js";
10
+ import { ipfsToHttp } from "../utils/ipfs.js";
11
+ import { formatDisplayPrice } from "../utils/format.js";
12
+ import { timeAgo } from "../utils/time.js";
13
+ function ListingCard({ order, inCart = false, onBuy, onCart, overflowMenu, compact = false }) {
14
+ const [imgError, setImgError] = useState(false);
15
+ const isListing = order.offer.itemType === "ERC721" || order.offer.itemType === "ERC1155";
16
+ const name = order.token?.name ?? `Token #${order.nftTokenId}`;
17
+ const image = order.token?.image ? ipfsToHttp(order.token.image) : null;
18
+ const assetHref = `/asset/${order.nftContract}/${order.nftTokenId}`;
19
+ const showActionBar = isListing && (onBuy || onCart || overflowMenu);
20
+ if (compact) {
21
+ return /* @__PURE__ */ jsx(MotionCard, { className: "card-base", children: /* @__PURE__ */ jsxs(Link, { href: assetHref, className: "block", children: [
22
+ /* @__PURE__ */ jsx("div", { className: "relative aspect-square bg-muted overflow-hidden", children: image && !imgError ? /* @__PURE__ */ jsx(Image, { src: image, alt: name, fill: true, unoptimized: true, sizes: "(max-width: 640px) 33vw, 20vw", className: "object-cover group-hover:scale-105 transition-transform duration-500", onError: () => setImgError(true) }) : /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-gradient-to-br from-brand-purple/15 to-brand-blue/15", children: /* @__PURE__ */ jsxs("span", { className: "text-xl font-mono text-muted-foreground", children: [
23
+ "#",
24
+ order.nftTokenId
25
+ ] }) }) }),
26
+ /* @__PURE__ */ jsxs("div", { className: "p-2.5 space-y-0.5", children: [
27
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold truncate", children: name }),
28
+ order.price?.formatted && /* @__PURE__ */ jsxs("p", { className: "text-[11px] font-bold price-value", children: [
29
+ formatDisplayPrice(order.price.formatted),
30
+ " ",
31
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-normal", children: order.price.currency })
32
+ ] }),
33
+ /* @__PURE__ */ jsx("p", { className: "text-[10px] text-muted-foreground", children: timeAgo(order.createdAt) })
34
+ ] })
35
+ ] }) });
36
+ }
37
+ return /* @__PURE__ */ jsx(MotionCard, { className: "card-base", children: /* @__PURE__ */ jsxs(Link, { href: assetHref, className: "block", children: [
38
+ /* @__PURE__ */ jsx("div", { className: "relative aspect-square bg-muted overflow-hidden", children: image && !imgError ? /* @__PURE__ */ jsx(Image, { src: image, alt: name, fill: true, unoptimized: true, sizes: "(max-width: 640px) 50vw, (max-width: 1024px) 33vw, 25vw", className: "object-cover group-hover:scale-105 transition-transform duration-500", onError: () => setImgError(true) }) : /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-gradient-to-br from-brand-purple/15 to-brand-blue/15", children: /* @__PURE__ */ jsxs("span", { className: "text-2xl font-mono text-muted-foreground", children: [
39
+ "#",
40
+ order.nftTokenId
41
+ ] }) }) }),
42
+ /* @__PURE__ */ jsxs("div", { className: "p-4 space-y-3", children: [
43
+ /* @__PURE__ */ jsxs("div", { children: [
44
+ /* @__PURE__ */ jsx("p", { className: "font-semibold text-base truncate leading-snug", children: name }),
45
+ order.token?.description ? /* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground line-clamp-1 leading-snug mt-0.5", children: order.token.description }) : /* @__PURE__ */ jsxs("p", { className: "text-[11px] text-muted-foreground", children: [
46
+ "#",
47
+ order.nftTokenId
48
+ ] })
49
+ ] }),
50
+ order.price?.formatted && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
51
+ order.price.currency && /* @__PURE__ */ jsx(CurrencyIcon, { symbol: order.price.currency, size: 14 }),
52
+ /* @__PURE__ */ jsxs("p", { className: "text-lg font-bold price-value leading-none", children: [
53
+ formatDisplayPrice(order.price.formatted),
54
+ " ",
55
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-normal text-sm", children: order.price.currency })
56
+ ] })
57
+ ] }),
58
+ showActionBar && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
59
+ onBuy && /* @__PURE__ */ jsx("div", { className: "btn-border-animated p-[1.5px] rounded-[10px] flex-1 h-9", children: /* @__PURE__ */ jsxs(
60
+ "button",
61
+ {
62
+ className: "w-full h-full rounded-[9px] bg-background flex items-center justify-center gap-1.5 text-xs font-semibold text-foreground hover:bg-muted/60 transition-all active:scale-[0.98]",
63
+ onClick: (e) => {
64
+ e.preventDefault();
65
+ onBuy(order);
66
+ },
67
+ children: [
68
+ /* @__PURE__ */ jsx(Zap, { className: "h-3.5 w-3.5 shrink-0" }),
69
+ " Buy"
70
+ ]
71
+ }
72
+ ) }),
73
+ onCart && /* @__PURE__ */ jsx(
74
+ "button",
75
+ {
76
+ className: cn(
77
+ "h-9 w-9 shrink-0 rounded-[9px] border flex items-center justify-center transition-colors",
78
+ inCart ? "border-brand-orange/50 bg-brand-orange/10 text-brand-orange" : "border-border bg-background hover:bg-muted text-foreground"
79
+ ),
80
+ onClick: (e) => {
81
+ e.preventDefault();
82
+ if (!inCart) onCart(order);
83
+ },
84
+ disabled: inCart,
85
+ "aria-label": inCart ? "Added to cart" : "Add to cart",
86
+ children: inCart ? /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(ShoppingCart, { className: "h-3.5 w-3.5" })
87
+ }
88
+ ),
89
+ overflowMenu
90
+ ] })
91
+ ] })
92
+ ] }) });
93
+ }
94
+ function ListingCardSkeleton() {
95
+ return /* @__PURE__ */ jsxs("div", { className: "card-base", children: [
96
+ /* @__PURE__ */ jsx("div", { className: "aspect-square w-full bg-muted animate-pulse" }),
97
+ /* @__PURE__ */ jsxs("div", { className: "p-3 space-y-2.5", children: [
98
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
99
+ /* @__PURE__ */ jsx("div", { className: "h-4 w-3/4 bg-muted animate-pulse rounded" }),
100
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-1/2 bg-muted animate-pulse rounded" })
101
+ ] }),
102
+ /* @__PURE__ */ jsx("div", { className: "h-6 w-1/2 bg-muted animate-pulse rounded" }),
103
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-2/3 bg-muted animate-pulse rounded" })
104
+ ] })
105
+ ] });
106
+ }
107
+ export {
108
+ ListingCard,
109
+ ListingCardSkeleton
110
+ };
111
+ //# sourceMappingURL=listing-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/listing-card.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport Link from \"next/link\";\nimport Image from \"next/image\";\nimport { ShoppingCart, Check, Zap } from \"lucide-react\";\nimport { MotionCard } from \"./motion-primitives.js\";\nimport { CurrencyIcon } from \"./currency-icon.js\";\nimport { cn } from \"../utils/cn.js\";\nimport { ipfsToHttp } from \"../utils/ipfs.js\";\nimport { formatDisplayPrice } from \"../utils/format.js\";\nimport { timeAgo } from \"../utils/time.js\";\nimport type { ApiOrder } from \"@medialane/sdk\";\n\nexport interface ListingCardProps {\n order: ApiOrder;\n inCart?: boolean;\n onBuy?: (order: ApiOrder) => void;\n onCart?: (order: ApiOrder) => void;\n /** App passes a fully constructed <DropdownMenu> here */\n overflowMenu?: React.ReactNode;\n compact?: boolean;\n}\n\nexport function ListingCard({ order, inCart = false, onBuy, onCart, overflowMenu, compact = false }: ListingCardProps) {\n const [imgError, setImgError] = useState(false);\n const isListing = order.offer.itemType === \"ERC721\" || order.offer.itemType === \"ERC1155\";\n const name = order.token?.name ?? `Token #${order.nftTokenId}`;\n const image = order.token?.image ? ipfsToHttp(order.token.image) : null;\n const assetHref = `/asset/${order.nftContract}/${order.nftTokenId}`;\n\n const showActionBar = isListing && (onBuy || onCart || overflowMenu);\n\n // ─── Compact variant ──────────────────────────────────────────────────────\n if (compact) {\n return (\n <MotionCard className=\"card-base\">\n <Link href={assetHref} className=\"block\">\n <div className=\"relative aspect-square bg-muted overflow-hidden\">\n {image && !imgError ? (\n <Image src={image} alt={name} fill unoptimized sizes=\"(max-width: 640px) 33vw, 20vw\" className=\"object-cover group-hover:scale-105 transition-transform duration-500\" onError={() => setImgError(true)} />\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gradient-to-br from-brand-purple/15 to-brand-blue/15\">\n <span className=\"text-xl font-mono text-muted-foreground\">#{order.nftTokenId}</span>\n </div>\n )}\n </div>\n <div className=\"p-2.5 space-y-0.5\">\n <p className=\"text-xs font-semibold truncate\">{name}</p>\n {order.price?.formatted && (\n <p className=\"text-[11px] font-bold price-value\">\n {formatDisplayPrice(order.price.formatted)} <span className=\"text-muted-foreground font-normal\">{order.price.currency}</span>\n </p>\n )}\n <p className=\"text-[10px] text-muted-foreground\">{timeAgo(order.createdAt)}</p>\n </div>\n </Link>\n </MotionCard>\n );\n }\n\n // ─── Full variant ─────────────────────────────────────────────────────────\n return (\n <MotionCard className=\"card-base\">\n <Link href={assetHref} className=\"block\">\n <div className=\"relative aspect-square bg-muted overflow-hidden\">\n {image && !imgError ? (\n <Image src={image} alt={name} fill unoptimized sizes=\"(max-width: 640px) 50vw, (max-width: 1024px) 33vw, 25vw\" className=\"object-cover group-hover:scale-105 transition-transform duration-500\" onError={() => setImgError(true)} />\n ) : (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gradient-to-br from-brand-purple/15 to-brand-blue/15\">\n <span className=\"text-2xl font-mono text-muted-foreground\">#{order.nftTokenId}</span>\n </div>\n )}\n </div>\n\n <div className=\"p-4 space-y-3\">\n <div>\n <p className=\"font-semibold text-base truncate leading-snug\">{name}</p>\n {order.token?.description ? (\n <p className=\"text-[11px] text-muted-foreground line-clamp-1 leading-snug mt-0.5\">{order.token.description}</p>\n ) : (\n <p className=\"text-[11px] text-muted-foreground\">#{order.nftTokenId}</p>\n )}\n </div>\n\n {order.price?.formatted && (\n <div className=\"flex items-center gap-1.5\">\n {order.price.currency && <CurrencyIcon symbol={order.price.currency} size={14} />}\n <p className=\"text-lg font-bold price-value leading-none\">\n {formatDisplayPrice(order.price.formatted)} <span className=\"text-muted-foreground font-normal text-sm\">{order.price.currency}</span>\n </p>\n </div>\n )}\n\n {showActionBar && (\n <div className=\"flex items-center gap-1.5\">\n {onBuy && (\n <div className=\"btn-border-animated p-[1.5px] rounded-[10px] flex-1 h-9\">\n <button\n className=\"w-full h-full rounded-[9px] bg-background flex items-center justify-center gap-1.5 text-xs font-semibold text-foreground hover:bg-muted/60 transition-all active:scale-[0.98]\"\n onClick={(e) => { e.preventDefault(); onBuy(order); }}\n >\n <Zap className=\"h-3.5 w-3.5 shrink-0\" /> Buy\n </button>\n </div>\n )}\n {onCart && (\n <button\n className={cn(\n \"h-9 w-9 shrink-0 rounded-[9px] border flex items-center justify-center transition-colors\",\n inCart\n ? \"border-brand-orange/50 bg-brand-orange/10 text-brand-orange\"\n : \"border-border bg-background hover:bg-muted text-foreground\"\n )}\n onClick={(e) => { e.preventDefault(); if (!inCart) onCart(order); }}\n disabled={inCart}\n aria-label={inCart ? \"Added to cart\" : \"Add to cart\"}\n >\n {inCart ? <Check className=\"h-3.5 w-3.5\" /> : <ShoppingCart className=\"h-3.5 w-3.5\" />}\n </button>\n )}\n {overflowMenu}\n </div>\n )}\n </div>\n </Link>\n </MotionCard>\n );\n}\n\nexport function ListingCardSkeleton() {\n return (\n <div className=\"card-base\">\n <div className=\"aspect-square w-full bg-muted animate-pulse\" />\n <div className=\"p-3 space-y-2.5\">\n <div className=\"space-y-1\">\n <div className=\"h-4 w-3/4 bg-muted animate-pulse rounded\" />\n <div className=\"h-3 w-1/2 bg-muted animate-pulse rounded\" />\n </div>\n <div className=\"h-6 w-1/2 bg-muted animate-pulse rounded\" />\n <div className=\"h-3 w-2/3 bg-muted animate-pulse rounded\" />\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var activity_exports = {};
20
+ __export(activity_exports, {
21
+ ACTIVITY_TYPE_CONFIG: () => ACTIVITY_TYPE_CONFIG,
22
+ TYPE_FILTERS: () => TYPE_FILTERS
23
+ });
24
+ module.exports = __toCommonJS(activity_exports);
25
+ var import_lucide_react = require("lucide-react");
26
+ const ACTIVITY_TYPE_CONFIG = {
27
+ mint: { label: "Mint", variant: "default", icon: import_lucide_react.Sparkles, colorClass: "text-emerald-400", bgClass: "bg-emerald-500/10" },
28
+ transfer: { label: "Transfer", variant: "secondary", icon: import_lucide_react.ArrowRightLeft, colorClass: "text-slate-400", bgClass: "bg-slate-500/10" },
29
+ listing: { label: "Listed", variant: "default", icon: import_lucide_react.Tag, colorClass: "text-sky-400", bgClass: "bg-sky-500/10" },
30
+ sale: { label: "Sale", variant: "default", icon: import_lucide_react.ShoppingCart, colorClass: "text-violet-400", bgClass: "bg-violet-500/10" },
31
+ offer: { label: "Offer", variant: "outline", icon: import_lucide_react.HandCoins, colorClass: "text-amber-400", bgClass: "bg-amber-500/10" },
32
+ cancelled: { label: "Cancelled", variant: "outline", icon: import_lucide_react.X, colorClass: "text-rose-400", bgClass: "bg-rose-500/10" }
33
+ };
34
+ const TYPE_FILTERS = [
35
+ { label: "All", value: "" },
36
+ { label: "Mints", value: "mint" },
37
+ { label: "Sales", value: "sale" },
38
+ { label: "Listings", value: "listing" },
39
+ { label: "Offers", value: "offer" },
40
+ { label: "Transfers", value: "transfer" },
41
+ { label: "Cancelled", value: "cancelled" }
42
+ ];
43
+ // Annotate the CommonJS export names for ESM import in node:
44
+ 0 && (module.exports = {
45
+ ACTIVITY_TYPE_CONFIG,
46
+ TYPE_FILTERS
47
+ });
48
+ //# sourceMappingURL=activity.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/data/activity.ts"],"sourcesContent":["import { ArrowRightLeft, Tag, ShoppingCart, HandCoins, X, Sparkles } from \"lucide-react\";\nimport type { ElementType } from \"react\";\n\nexport interface ActivityTypeConfig {\n label: string;\n variant: \"default\" | \"secondary\" | \"outline\";\n icon: ElementType;\n colorClass: string;\n bgClass: string;\n}\n\nexport const ACTIVITY_TYPE_CONFIG: Record<string, ActivityTypeConfig> = {\n mint: { label: \"Mint\", variant: \"default\", icon: Sparkles, colorClass: \"text-emerald-400\", bgClass: \"bg-emerald-500/10\" },\n transfer: { label: \"Transfer\", variant: \"secondary\", icon: ArrowRightLeft, colorClass: \"text-slate-400\", bgClass: \"bg-slate-500/10\" },\n listing: { label: \"Listed\", variant: \"default\", icon: Tag, colorClass: \"text-sky-400\", bgClass: \"bg-sky-500/10\" },\n sale: { label: \"Sale\", variant: \"default\", icon: ShoppingCart, colorClass: \"text-violet-400\", bgClass: \"bg-violet-500/10\" },\n offer: { label: \"Offer\", variant: \"outline\", icon: HandCoins, colorClass: \"text-amber-400\", bgClass: \"bg-amber-500/10\" },\n cancelled: { label: \"Cancelled\", variant: \"outline\", icon: X, colorClass: \"text-rose-400\", bgClass: \"bg-rose-500/10\" },\n};\n\nexport const TYPE_FILTERS = [\n { label: \"All\", value: \"\" },\n { label: \"Mints\", value: \"mint\" },\n { label: \"Sales\", value: \"sale\" },\n { label: \"Listings\", value: \"listing\" },\n { label: \"Offers\", value: \"offer\" },\n { label: \"Transfers\", value: \"transfer\" },\n { label: \"Cancelled\", value: \"cancelled\" },\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAA0E;AAWnE,MAAM,uBAA2D;AAAA,EACtE,MAAW,EAAE,OAAO,QAAa,SAAS,WAAa,MAAM,8BAAgB,YAAY,oBAAoB,SAAS,oBAAoB;AAAA,EAC1I,UAAW,EAAE,OAAO,YAAa,SAAS,aAAa,MAAM,oCAAgB,YAAY,kBAAoB,SAAS,kBAAkB;AAAA,EACxI,SAAW,EAAE,OAAO,UAAa,SAAS,WAAa,MAAM,yBAAgB,YAAY,gBAAoB,SAAS,gBAAgB;AAAA,EACtI,MAAW,EAAE,OAAO,QAAa,SAAS,WAAa,MAAM,kCAAgB,YAAY,mBAAoB,SAAS,mBAAmB;AAAA,EACzI,OAAW,EAAE,OAAO,SAAa,SAAS,WAAa,MAAM,+BAAgB,YAAY,kBAAoB,SAAS,kBAAkB;AAAA,EACxI,WAAW,EAAE,OAAO,aAAa,SAAS,WAAa,MAAM,uBAAgB,YAAY,iBAAoB,SAAS,iBAAiB;AACzI;AAEO,MAAM,eAAe;AAAA,EAC1B,EAAE,OAAO,OAAa,OAAO,GAAG;AAAA,EAChC,EAAE,OAAO,SAAa,OAAO,OAAO;AAAA,EACpC,EAAE,OAAO,SAAa,OAAO,OAAO;AAAA,EACpC,EAAE,OAAO,YAAa,OAAO,UAAU;AAAA,EACvC,EAAE,OAAO,UAAa,OAAO,QAAQ;AAAA,EACrC,EAAE,OAAO,aAAa,OAAO,WAAW;AAAA,EACxC,EAAE,OAAO,aAAa,OAAO,YAAY;AAC3C;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { ElementType } from 'react';
2
+
3
+ interface ActivityTypeConfig {
4
+ label: string;
5
+ variant: "default" | "secondary" | "outline";
6
+ icon: ElementType;
7
+ colorClass: string;
8
+ bgClass: string;
9
+ }
10
+ declare const ACTIVITY_TYPE_CONFIG: Record<string, ActivityTypeConfig>;
11
+ declare const TYPE_FILTERS: {
12
+ label: string;
13
+ value: string;
14
+ }[];
15
+
16
+ export { ACTIVITY_TYPE_CONFIG, type ActivityTypeConfig, TYPE_FILTERS };
@@ -0,0 +1,16 @@
1
+ import { ElementType } from 'react';
2
+
3
+ interface ActivityTypeConfig {
4
+ label: string;
5
+ variant: "default" | "secondary" | "outline";
6
+ icon: ElementType;
7
+ colorClass: string;
8
+ bgClass: string;
9
+ }
10
+ declare const ACTIVITY_TYPE_CONFIG: Record<string, ActivityTypeConfig>;
11
+ declare const TYPE_FILTERS: {
12
+ label: string;
13
+ value: string;
14
+ }[];
15
+
16
+ export { ACTIVITY_TYPE_CONFIG, type ActivityTypeConfig, TYPE_FILTERS };
@@ -0,0 +1,23 @@
1
+ import { ArrowRightLeft, Tag, ShoppingCart, HandCoins, X, Sparkles } from "lucide-react";
2
+ const ACTIVITY_TYPE_CONFIG = {
3
+ mint: { label: "Mint", variant: "default", icon: Sparkles, colorClass: "text-emerald-400", bgClass: "bg-emerald-500/10" },
4
+ transfer: { label: "Transfer", variant: "secondary", icon: ArrowRightLeft, colorClass: "text-slate-400", bgClass: "bg-slate-500/10" },
5
+ listing: { label: "Listed", variant: "default", icon: Tag, colorClass: "text-sky-400", bgClass: "bg-sky-500/10" },
6
+ sale: { label: "Sale", variant: "default", icon: ShoppingCart, colorClass: "text-violet-400", bgClass: "bg-violet-500/10" },
7
+ offer: { label: "Offer", variant: "outline", icon: HandCoins, colorClass: "text-amber-400", bgClass: "bg-amber-500/10" },
8
+ cancelled: { label: "Cancelled", variant: "outline", icon: X, colorClass: "text-rose-400", bgClass: "bg-rose-500/10" }
9
+ };
10
+ const TYPE_FILTERS = [
11
+ { label: "All", value: "" },
12
+ { label: "Mints", value: "mint" },
13
+ { label: "Sales", value: "sale" },
14
+ { label: "Listings", value: "listing" },
15
+ { label: "Offers", value: "offer" },
16
+ { label: "Transfers", value: "transfer" },
17
+ { label: "Cancelled", value: "cancelled" }
18
+ ];
19
+ export {
20
+ ACTIVITY_TYPE_CONFIG,
21
+ TYPE_FILTERS
22
+ };
23
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/data/activity.ts"],"sourcesContent":["import { ArrowRightLeft, Tag, ShoppingCart, HandCoins, X, Sparkles } from \"lucide-react\";\nimport type { ElementType } from \"react\";\n\nexport interface ActivityTypeConfig {\n label: string;\n variant: \"default\" | \"secondary\" | \"outline\";\n icon: ElementType;\n colorClass: string;\n bgClass: string;\n}\n\nexport const ACTIVITY_TYPE_CONFIG: Record<string, ActivityTypeConfig> = {\n mint: { label: \"Mint\", variant: \"default\", icon: Sparkles, colorClass: \"text-emerald-400\", bgClass: \"bg-emerald-500/10\" },\n transfer: { label: \"Transfer\", variant: \"secondary\", icon: ArrowRightLeft, colorClass: \"text-slate-400\", bgClass: \"bg-slate-500/10\" },\n listing: { label: \"Listed\", variant: \"default\", icon: Tag, colorClass: \"text-sky-400\", bgClass: \"bg-sky-500/10\" },\n sale: { label: \"Sale\", variant: \"default\", icon: ShoppingCart, colorClass: \"text-violet-400\", bgClass: \"bg-violet-500/10\" },\n offer: { label: \"Offer\", variant: \"outline\", icon: HandCoins, colorClass: \"text-amber-400\", bgClass: \"bg-amber-500/10\" },\n cancelled: { label: \"Cancelled\", variant: \"outline\", icon: X, colorClass: \"text-rose-400\", bgClass: \"bg-rose-500/10\" },\n};\n\nexport const TYPE_FILTERS = [\n { label: \"All\", value: \"\" },\n { label: \"Mints\", value: \"mint\" },\n { label: \"Sales\", value: \"sale\" },\n { label: \"Listings\", value: \"listing\" },\n { label: \"Offers\", value: \"offer\" },\n { label: \"Transfers\", value: \"transfer\" },\n { label: \"Cancelled\", value: \"cancelled\" },\n];\n"],"mappings":"AAAA,SAAS,gBAAgB,KAAK,cAAc,WAAW,GAAG,gBAAgB;AAWnE,MAAM,uBAA2D;AAAA,EACtE,MAAW,EAAE,OAAO,QAAa,SAAS,WAAa,MAAM,UAAgB,YAAY,oBAAoB,SAAS,oBAAoB;AAAA,EAC1I,UAAW,EAAE,OAAO,YAAa,SAAS,aAAa,MAAM,gBAAgB,YAAY,kBAAoB,SAAS,kBAAkB;AAAA,EACxI,SAAW,EAAE,OAAO,UAAa,SAAS,WAAa,MAAM,KAAgB,YAAY,gBAAoB,SAAS,gBAAgB;AAAA,EACtI,MAAW,EAAE,OAAO,QAAa,SAAS,WAAa,MAAM,cAAgB,YAAY,mBAAoB,SAAS,mBAAmB;AAAA,EACzI,OAAW,EAAE,OAAO,SAAa,SAAS,WAAa,MAAM,WAAgB,YAAY,kBAAoB,SAAS,kBAAkB;AAAA,EACxI,WAAW,EAAE,OAAO,aAAa,SAAS,WAAa,MAAM,GAAgB,YAAY,iBAAoB,SAAS,iBAAiB;AACzI;AAEO,MAAM,eAAe;AAAA,EAC1B,EAAE,OAAO,OAAa,OAAO,GAAG;AAAA,EAChC,EAAE,OAAO,SAAa,OAAO,OAAO;AAAA,EACpC,EAAE,OAAO,SAAa,OAAO,OAAO;AAAA,EACpC,EAAE,OAAO,YAAa,OAAO,UAAU;AAAA,EACvC,EAAE,OAAO,UAAa,OAAO,QAAQ;AAAA,EACrC,EAAE,OAAO,aAAa,OAAO,WAAW;AAAA,EACxC,EAAE,OAAO,aAAa,OAAO,YAAY;AAC3C;","names":[]}
package/dist/index.cjs CHANGED
@@ -18,20 +18,30 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var index_exports = {};
20
20
  __export(index_exports, {
21
+ ACTIVITY_TYPE_CONFIG: () => import_activity.ACTIVITY_TYPE_CONFIG,
22
+ ActivityFeedShell: () => import_activity_feed_shell.ActivityFeedShell,
23
+ ActivityRow: () => import_activity_row.ActivityRow,
24
+ ActivityTicker: () => import_activity_ticker.ActivityTicker,
21
25
  AddressDisplay: () => import_address_display.AddressDisplay,
22
26
  BRAND: () => import_brand.BRAND,
23
27
  CollectionCard: () => import_collection_card.CollectionCard,
24
28
  CollectionCardSkeleton: () => import_collection_card.CollectionCardSkeleton,
29
+ CtaCardGrid: () => import_cta_card_grid.CtaCardGrid,
25
30
  CurrencyAmount: () => import_currency_icon.CurrencyAmount,
26
31
  CurrencyIcon: () => import_currency_icon.CurrencyIcon,
27
32
  EASE_OUT: () => import_motion_primitives.EASE_OUT,
28
33
  FadeIn: () => import_motion_primitives.FadeIn,
34
+ HeroSlider: () => import_hero_slider.HeroSlider,
35
+ HeroSliderSkeleton: () => import_hero_slider.HeroSliderSkeleton,
29
36
  IP_TYPE_CONFIG: () => import_ip_type_badge.IP_TYPE_CONFIG,
30
37
  IP_TYPE_DATA: () => import_ip_types.IP_TYPE_DATA,
31
38
  IP_TYPE_DATA_MAP: () => import_ip_types.IP_TYPE_DATA_MAP,
32
39
  IP_TYPE_MAP: () => import_ip_type_badge.IP_TYPE_MAP,
33
40
  IpTypeBadge: () => import_ip_type_badge.IpTypeBadge,
34
41
  KineticWords: () => import_motion_primitives.KineticWords,
42
+ LaunchpadGrid: () => import_launchpad_grid.LaunchpadGrid,
43
+ ListingCard: () => import_listing_card.ListingCard,
44
+ ListingCardSkeleton: () => import_listing_card.ListingCardSkeleton,
35
45
  MedialaneIcon: () => import_brand_icon.MedialaneIcon,
36
46
  MedialaneLogoFull: () => import_brand_logo.MedialaneLogoFull,
37
47
  MotionCard: () => import_motion_primitives.MotionCard,
@@ -40,12 +50,14 @@ __export(index_exports, {
40
50
  ShareButton: () => import_share_button.ShareButton,
41
51
  Stagger: () => import_motion_primitives.Stagger,
42
52
  StaggerItem: () => import_motion_primitives.StaggerItem,
53
+ TYPE_FILTERS: () => import_activity.TYPE_FILTERS,
43
54
  TokenCard: () => import_token_card.TokenCard,
44
55
  TokenCardSkeleton: () => import_token_card.TokenCardSkeleton,
45
56
  cn: () => import_cn.cn,
46
57
  formatDisplayPrice: () => import_format.formatDisplayPrice,
47
58
  ipfsToHttp: () => import_ipfs.ipfsToHttp,
48
- shortenAddress: () => import_address.shortenAddress
59
+ shortenAddress: () => import_address.shortenAddress,
60
+ timeAgo: () => import_time.timeAgo
49
61
  });
50
62
  module.exports = __toCommonJS(index_exports);
51
63
  var import_cn = require("./utils/cn.js");
@@ -64,22 +76,41 @@ var import_scroll_section = require("./components/scroll-section.js");
64
76
  var import_share_button = require("./components/share-button.js");
65
77
  var import_collection_card = require("./components/collection-card.js");
66
78
  var import_token_card = require("./components/token-card.js");
79
+ var import_time = require("./utils/time.js");
80
+ var import_activity = require("./data/activity.js");
81
+ var import_hero_slider = require("./components/hero-slider.js");
82
+ var import_activity_ticker = require("./components/activity-ticker.js");
83
+ var import_listing_card = require("./components/listing-card.js");
84
+ var import_activity_row = require("./components/activity-row.js");
85
+ var import_activity_feed_shell = require("./components/activity-feed-shell.js");
86
+ var import_launchpad_grid = require("./components/launchpad-grid.js");
87
+ var import_cta_card_grid = require("./components/cta-card-grid.js");
67
88
  // Annotate the CommonJS export names for ESM import in node:
68
89
  0 && (module.exports = {
90
+ ACTIVITY_TYPE_CONFIG,
91
+ ActivityFeedShell,
92
+ ActivityRow,
93
+ ActivityTicker,
69
94
  AddressDisplay,
70
95
  BRAND,
71
96
  CollectionCard,
72
97
  CollectionCardSkeleton,
98
+ CtaCardGrid,
73
99
  CurrencyAmount,
74
100
  CurrencyIcon,
75
101
  EASE_OUT,
76
102
  FadeIn,
103
+ HeroSlider,
104
+ HeroSliderSkeleton,
77
105
  IP_TYPE_CONFIG,
78
106
  IP_TYPE_DATA,
79
107
  IP_TYPE_DATA_MAP,
80
108
  IP_TYPE_MAP,
81
109
  IpTypeBadge,
82
110
  KineticWords,
111
+ LaunchpadGrid,
112
+ ListingCard,
113
+ ListingCardSkeleton,
83
114
  MedialaneIcon,
84
115
  MedialaneLogoFull,
85
116
  MotionCard,
@@ -88,11 +119,13 @@ var import_token_card = require("./components/token-card.js");
88
119
  ShareButton,
89
120
  Stagger,
90
121
  StaggerItem,
122
+ TYPE_FILTERS,
91
123
  TokenCard,
92
124
  TokenCardSkeleton,
93
125
  cn,
94
126
  formatDisplayPrice,
95
127
  ipfsToHttp,
96
- shortenAddress
128
+ shortenAddress,
129
+ timeAgo
97
130
  });
98
131
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAAmB;AACnB,oBAAmC;AACnC,qBAA+B;AAC/B,kBAA2B;AAG3B,sBAA+C;AAE/C,mBAAsB;AAGtB,2BAA6C;AAG7C,2BAAyD;AAGzD,6BAA+B;AAG/B,wBAA8B;AAE9B,wBAAkC;AAIlC,+BAAyF;AACzF,4BAA8B;AAE9B,0BAA4B;AAE5B,6BAAuD;AAEvD,wBAA6C;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { LaunchpadGrid } from \"./components/launchpad-grid.js\";\nexport type { LaunchpadGridProps, FeatureItem } from \"./components/launchpad-grid.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAAmB;AACnB,oBAAmC;AACnC,qBAA+B;AAC/B,kBAA2B;AAG3B,sBAA+C;AAE/C,mBAAsB;AAGtB,2BAA6C;AAG7C,2BAAyD;AAGzD,6BAA+B;AAG/B,wBAA8B;AAE9B,wBAAkC;AAIlC,+BAAyF;AACzF,4BAA8B;AAE9B,0BAA4B;AAE5B,6BAAuD;AAEvD,wBAA6C;AAI7C,kBAAwB;AACxB,sBAAmD;AAEnD,yBAA+C;AAE/C,6BAA+B;AAE/B,0BAAiD;AAEjD,0BAA4B;AAE5B,iCAAkC;AAElC,4BAA8B;AAE9B,2BAA4B;","names":[]}
package/dist/index.d.cts CHANGED
@@ -14,7 +14,18 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.c
14
14
  export { ShareButton, ShareButtonProps } from './components/share-button.cjs';
15
15
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.cjs';
16
16
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.cjs';
17
+ export { timeAgo } from './utils/time.cjs';
18
+ export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.cjs';
19
+ export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.cjs';
20
+ export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.cjs';
21
+ export { ListingCard, ListingCardProps, ListingCardSkeleton } from './components/listing-card.cjs';
22
+ export { ActivityRow, ActivityRowProps } from './components/activity-row.cjs';
23
+ export { ActivityFeedShell, ActivityFeedShellProps } from './components/activity-feed-shell.cjs';
24
+ export { FeatureItem, LaunchpadGrid, LaunchpadGridProps } from './components/launchpad-grid.cjs';
25
+ export { CtaCardGrid, CtaCardGridProps, CtaCardItem } from './components/cta-card-grid.cjs';
17
26
  import 'clsx';
18
27
  import 'react/jsx-runtime';
19
28
  import 'framer-motion';
20
29
  import '@medialane/sdk';
30
+ import 'react';
31
+ import 'lucide-react';
package/dist/index.d.ts CHANGED
@@ -14,7 +14,18 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.j
14
14
  export { ShareButton, ShareButtonProps } from './components/share-button.js';
15
15
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.js';
16
16
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.js';
17
+ export { timeAgo } from './utils/time.js';
18
+ export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.js';
19
+ export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.js';
20
+ export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.js';
21
+ export { ListingCard, ListingCardProps, ListingCardSkeleton } from './components/listing-card.js';
22
+ export { ActivityRow, ActivityRowProps } from './components/activity-row.js';
23
+ export { ActivityFeedShell, ActivityFeedShellProps } from './components/activity-feed-shell.js';
24
+ export { FeatureItem, LaunchpadGrid, LaunchpadGridProps } from './components/launchpad-grid.js';
25
+ export { CtaCardGrid, CtaCardGridProps, CtaCardItem } from './components/cta-card-grid.js';
17
26
  import 'clsx';
18
27
  import 'react/jsx-runtime';
19
28
  import 'framer-motion';
20
29
  import '@medialane/sdk';
30
+ import 'react';
31
+ import 'lucide-react';
package/dist/index.js CHANGED
@@ -14,21 +14,40 @@ import { ScrollSection } from "./components/scroll-section.js";
14
14
  import { ShareButton } from "./components/share-button.js";
15
15
  import { CollectionCard, CollectionCardSkeleton } from "./components/collection-card.js";
16
16
  import { TokenCard, TokenCardSkeleton } from "./components/token-card.js";
17
+ import { timeAgo } from "./utils/time.js";
18
+ import { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from "./data/activity.js";
19
+ import { HeroSlider, HeroSliderSkeleton } from "./components/hero-slider.js";
20
+ import { ActivityTicker } from "./components/activity-ticker.js";
21
+ import { ListingCard, ListingCardSkeleton } from "./components/listing-card.js";
22
+ import { ActivityRow } from "./components/activity-row.js";
23
+ import { ActivityFeedShell } from "./components/activity-feed-shell.js";
24
+ import { LaunchpadGrid } from "./components/launchpad-grid.js";
25
+ import { CtaCardGrid } from "./components/cta-card-grid.js";
17
26
  export {
27
+ ACTIVITY_TYPE_CONFIG,
28
+ ActivityFeedShell,
29
+ ActivityRow,
30
+ ActivityTicker,
18
31
  AddressDisplay,
19
32
  BRAND,
20
33
  CollectionCard,
21
34
  CollectionCardSkeleton,
35
+ CtaCardGrid,
22
36
  CurrencyAmount,
23
37
  CurrencyIcon,
24
38
  EASE_OUT,
25
39
  FadeIn,
40
+ HeroSlider,
41
+ HeroSliderSkeleton,
26
42
  IP_TYPE_CONFIG,
27
43
  IP_TYPE_DATA,
28
44
  IP_TYPE_DATA_MAP,
29
45
  IP_TYPE_MAP,
30
46
  IpTypeBadge,
31
47
  KineticWords,
48
+ LaunchpadGrid,
49
+ ListingCard,
50
+ ListingCardSkeleton,
32
51
  MedialaneIcon,
33
52
  MedialaneLogoFull,
34
53
  MotionCard,
@@ -37,11 +56,13 @@ export {
37
56
  ShareButton,
38
57
  Stagger,
39
58
  StaggerItem,
59
+ TYPE_FILTERS,
40
60
  TokenCard,
41
61
  TokenCardSkeleton,
42
62
  cn,
43
63
  formatDisplayPrice,
44
64
  ipfsToHttp,
45
- shortenAddress
65
+ shortenAddress,
66
+ timeAgo
46
67
  };
47
68
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n"],"mappings":"AACA,SAAS,UAAU;AACnB,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAG3B,SAAS,cAAc,wBAAwB;AAE/C,SAAS,aAAa;AAGtB,SAAS,cAAc,sBAAsB;AAG7C,SAAS,aAAa,gBAAgB,mBAAmB;AAGzD,SAAS,sBAAsB;AAG/B,SAAS,qBAAqB;AAE9B,SAAS,yBAAyB;AAIlC,SAAS,YAAY,QAAQ,SAAS,aAAa,cAAc,QAAQ,gBAAgB;AACzF,SAAS,qBAAqB;AAE9B,SAAS,mBAAmB;AAE5B,SAAS,gBAAgB,8BAA8B;AAEvD,SAAS,WAAW,yBAAyB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { LaunchpadGrid } from \"./components/launchpad-grid.js\";\nexport type { LaunchpadGridProps, FeatureItem } from \"./components/launchpad-grid.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n"],"mappings":"AACA,SAAS,UAAU;AACnB,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAG3B,SAAS,cAAc,wBAAwB;AAE/C,SAAS,aAAa;AAGtB,SAAS,cAAc,sBAAsB;AAG7C,SAAS,aAAa,gBAAgB,mBAAmB;AAGzD,SAAS,sBAAsB;AAG/B,SAAS,qBAAqB;AAE9B,SAAS,yBAAyB;AAIlC,SAAS,YAAY,QAAQ,SAAS,aAAa,cAAc,QAAQ,gBAAgB;AACzF,SAAS,qBAAqB;AAE9B,SAAS,mBAAmB;AAE5B,SAAS,gBAAgB,8BAA8B;AAEvD,SAAS,WAAW,yBAAyB;AAI7C,SAAS,eAAe;AACxB,SAAS,sBAAsB,oBAAoB;AAEnD,SAAS,YAAY,0BAA0B;AAE/C,SAAS,sBAAsB;AAE/B,SAAS,aAAa,2BAA2B;AAEjD,SAAS,mBAAmB;AAE5B,SAAS,yBAAyB;AAElC,SAAS,qBAAqB;AAE9B,SAAS,mBAAmB;","names":[]}