@medialane/ui 0.2.0 → 0.3.0

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 (62) 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/cta-card-grid.cjs +67 -0
  20. package/dist/components/cta-card-grid.cjs.map +1 -0
  21. package/dist/components/cta-card-grid.d.cts +23 -0
  22. package/dist/components/cta-card-grid.d.ts +23 -0
  23. package/dist/components/cta-card-grid.js +33 -0
  24. package/dist/components/cta-card-grid.js.map +1 -0
  25. package/dist/components/hero-slider.cjs +133 -0
  26. package/dist/components/hero-slider.cjs.map +1 -0
  27. package/dist/components/hero-slider.d.cts +12 -0
  28. package/dist/components/hero-slider.d.ts +12 -0
  29. package/dist/components/hero-slider.js +98 -0
  30. package/dist/components/hero-slider.js.map +1 -0
  31. package/dist/components/launchpad-grid.cjs +77 -0
  32. package/dist/components/launchpad-grid.cjs.map +1 -0
  33. package/dist/components/launchpad-grid.d.cts +20 -0
  34. package/dist/components/launchpad-grid.d.ts +20 -0
  35. package/dist/components/launchpad-grid.js +43 -0
  36. package/dist/components/launchpad-grid.js.map +1 -0
  37. package/dist/components/listing-card.cjs +146 -0
  38. package/dist/components/listing-card.cjs.map +1 -0
  39. package/dist/components/listing-card.d.cts +16 -0
  40. package/dist/components/listing-card.d.ts +16 -0
  41. package/dist/components/listing-card.js +111 -0
  42. package/dist/components/listing-card.js.map +1 -0
  43. package/dist/data/activity.cjs +48 -0
  44. package/dist/data/activity.cjs.map +1 -0
  45. package/dist/data/activity.d.cts +16 -0
  46. package/dist/data/activity.d.ts +16 -0
  47. package/dist/data/activity.js +23 -0
  48. package/dist/data/activity.js.map +1 -0
  49. package/dist/index.cjs +35 -2
  50. package/dist/index.cjs.map +1 -1
  51. package/dist/index.d.cts +11 -0
  52. package/dist/index.d.ts +11 -0
  53. package/dist/index.js +22 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/medialane.css +184 -0
  56. package/dist/utils/time.cjs +42 -0
  57. package/dist/utils/time.cjs.map +1 -0
  58. package/dist/utils/time.d.cts +7 -0
  59. package/dist/utils/time.d.ts +7 -0
  60. package/dist/utils/time.js +18 -0
  61. package/dist/utils/time.js.map +1 -0
  62. package/package.json +3 -2
@@ -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":[]}
@@ -0,0 +1,184 @@
1
+ /* Medialane Design System — shared CSS
2
+ Imported by apps via: import "@medialane/ui/styles"
3
+ Do NOT import @tailwind directives here — apps handle that.
4
+ All classes here are pure CSS, no @apply. */
5
+
6
+ /* ── Scrollbars ───────────────────────────────────────────────────────── */
7
+ ::-webkit-scrollbar { width: 4px; height: 4px; }
8
+ ::-webkit-scrollbar-track { background: transparent; }
9
+ ::-webkit-scrollbar-thumb { background: hsl(var(--border)); border-radius: 4px; }
10
+ .scrollbar-none { scrollbar-width: none; }
11
+ .scrollbar-none::-webkit-scrollbar { display: none; }
12
+ .scrollbar-hide { scrollbar-width: none; }
13
+ .scrollbar-hide::-webkit-scrollbar { display: none; }
14
+
15
+ /* ── Glass ────────────────────────────────────────────────────────────── */
16
+ .glass {
17
+ background: rgba(10, 14, 30, 0.60);
18
+ backdrop-filter: blur(16px);
19
+ -webkit-backdrop-filter: blur(16px);
20
+ border: 1px solid rgba(255, 255, 255, 0.06);
21
+ }
22
+ .glass-light {
23
+ background: rgba(255, 255, 255, 0.80);
24
+ backdrop-filter: blur(16px);
25
+ -webkit-backdrop-filter: blur(16px);
26
+ border: 1px solid rgba(255, 255, 255, 0.5);
27
+ }
28
+
29
+ /* ── Typography gradients ─────────────────────────────────────────────── */
30
+ .gradient-text {
31
+ background: linear-gradient(135deg, #a855f7 0%, #6366f1 40%, #2563eb 100%);
32
+ -webkit-background-clip: text;
33
+ -webkit-text-fill-color: transparent;
34
+ background-clip: text;
35
+ }
36
+ .gradient-text-warm {
37
+ background: linear-gradient(135deg, #f43f5e 0%, #ea580c 60%, #f59e0b 100%);
38
+ -webkit-background-clip: text;
39
+ -webkit-text-fill-color: transparent;
40
+ background-clip: text;
41
+ }
42
+ .gradient-text-gold {
43
+ background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 50%, #ea580c 100%);
44
+ -webkit-background-clip: text;
45
+ -webkit-text-fill-color: transparent;
46
+ background-clip: text;
47
+ }
48
+
49
+ /* ── Price ────────────────────────────────────────────────────────────── */
50
+ .price-value {
51
+ color: hsl(var(--price));
52
+ font-weight: 700;
53
+ font-variant-numeric: tabular-nums;
54
+ }
55
+
56
+ /* ── Section label ────────────────────────────────────────────────────── */
57
+ .section-label {
58
+ font-size: 0.625rem;
59
+ font-weight: 700;
60
+ letter-spacing: 0.14em;
61
+ text-transform: uppercase;
62
+ color: hsl(var(--muted-foreground));
63
+ }
64
+
65
+ /* ── Pill badge ───────────────────────────────────────────────────────── */
66
+ .pill-badge {
67
+ display: inline-flex;
68
+ align-items: center;
69
+ gap: 0.375rem;
70
+ border-radius: 9999px;
71
+ border: 1px solid hsl(var(--primary) / 0.25);
72
+ background: hsl(var(--primary) / 0.08);
73
+ padding: 0.25rem 0.875rem;
74
+ font-size: 0.6875rem;
75
+ font-weight: 700;
76
+ letter-spacing: 0.1em;
77
+ text-transform: uppercase;
78
+ color: hsl(var(--primary));
79
+ }
80
+
81
+ /* ── Aurora blobs ─────────────────────────────────────────────────────── */
82
+ .aurora-purple { position: absolute; border-radius: 9999px; background: #9333ea; filter: blur(100px); opacity: 0.07; }
83
+ .aurora-blue { position: absolute; border-radius: 9999px; background: #2563eb; filter: blur(120px); opacity: 0.06; }
84
+ .aurora-rose { position: absolute; border-radius: 9999px; background: #f43f5e; filter: blur(100px); opacity: 0.05; }
85
+ .aurora-orange { position: absolute; border-radius: 9999px; background: #ea580c; filter: blur(110px); opacity: 0.04; }
86
+ .dark .aurora-purple { opacity: 0.15; }
87
+ .dark .aurora-blue { opacity: 0.11; }
88
+ .dark .aurora-rose { opacity: 0.09; }
89
+ .dark .aurora-orange { opacity: 0.07; }
90
+
91
+ /* ── Card primitives ──────────────────────────────────────────────────── */
92
+ .card-base {
93
+ border-radius: calc(var(--radius) * 1.25);
94
+ border: 1px solid hsl(var(--border));
95
+ background: hsl(var(--card));
96
+ overflow: hidden;
97
+ will-change: transform;
98
+ }
99
+ .bento-cell {
100
+ border-radius: calc(var(--radius) * 1.25);
101
+ border: 1px solid hsl(var(--border));
102
+ background: hsl(var(--card));
103
+ overflow: hidden;
104
+ position: relative;
105
+ }
106
+
107
+ /* ── Background grid ──────────────────────────────────────────────────── */
108
+ .bg-grid {
109
+ background-image:
110
+ linear-gradient(hsl(var(--border) / 0.4) 1px, transparent 1px),
111
+ linear-gradient(90deg, hsl(var(--border) / 0.4) 1px, transparent 1px);
112
+ background-size: 48px 48px;
113
+ }
114
+
115
+ /* ── Snap scroll ──────────────────────────────────────────────────────── */
116
+ .snap-x-mandatory { scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; }
117
+ .snap-start { scroll-snap-align: start; }
118
+
119
+ /* ── Keyframes ────────────────────────────────────────────────────────── */
120
+ @keyframes float {
121
+ 0%, 100% { transform: translateY(0px); }
122
+ 50% { transform: translateY(-10px); }
123
+ }
124
+ @keyframes blob-pulse {
125
+ 0%, 100% { transform: scale(1) rotate(0deg); opacity: 0.07; }
126
+ 50% { transform: scale(1.15) rotate(10deg); opacity: 0.14; }
127
+ }
128
+ @keyframes blob-pulse-slow {
129
+ 0%, 100% { transform: scale(1) rotate(0deg); opacity: 0.05; }
130
+ 50% { transform: scale(1.2) rotate(-8deg); opacity: 0.11; }
131
+ }
132
+ @keyframes shimmer {
133
+ 0% { background-position: -200% 0; }
134
+ 100% { background-position: 200% 0; }
135
+ }
136
+ @keyframes pulse-glow {
137
+ 0%, 100% { opacity: 0.6; }
138
+ 50% { opacity: 1; }
139
+ }
140
+ @keyframes spin-slow { to { transform: rotate(360deg); } }
141
+ @keyframes digit-in {
142
+ from { transform: translateY(-14px); opacity: 0; }
143
+ to { transform: translateY(0); opacity: 1; }
144
+ }
145
+ @keyframes scroll-strip {
146
+ 0% { transform: translateX(0); }
147
+ 100% { transform: translateX(-50%); }
148
+ }
149
+ @keyframes kenburns {
150
+ 0% { transform: scale(1.0) translate(0%, 0%); }
151
+ 100% { transform: scale(1.08) translate(-1.5%, -1%); }
152
+ }
153
+ @keyframes border-flow {
154
+ 0%, 100% { background-position: 0% 50%; }
155
+ 50% { background-position: 100% 50%; }
156
+ }
157
+
158
+ /* ── Animation utilities ──────────────────────────────────────────────── */
159
+ .animate-float { animation: float 5s ease-in-out infinite; }
160
+ .animate-blob { animation: blob-pulse 7s ease-in-out infinite; }
161
+ .animate-blob-slow { animation: blob-pulse-slow 9s ease-in-out infinite 2s; }
162
+ .animate-pulse-glow { animation: pulse-glow 2s ease-in-out infinite; }
163
+ .animate-spin-slow { animation: spin-slow 24s linear infinite; }
164
+ .animate-sparkle { animation: pulse-glow 2.5s ease-in-out infinite; }
165
+ .animate-kenburns { animation: kenburns 8s ease-in-out infinite alternate; transform-origin: center center; }
166
+
167
+ /* ── Reduced motion ───────────────────────────────────────────────────── */
168
+ @media (prefers-reduced-motion: reduce) {
169
+ .animate-float, .animate-blob, .animate-blob-slow,
170
+ .animate-pulse-glow, .animate-spin-slow, .animate-sparkle,
171
+ .animate-kenburns { animation: none; }
172
+ }
173
+
174
+ /* ── Input spinners (price inputs use custom suffix) ──────────────────── */
175
+ input[type="number"]::-webkit-outer-spin-button,
176
+ input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
177
+ input[type="number"] { -moz-appearance: textfield; }
178
+
179
+ /* ── Animated gradient border (marketplace buy button) ────────────────── */
180
+ .btn-border-animated {
181
+ background: linear-gradient(270deg, #2563eb, #9333ea, #f43f5e, #ea580c, #2563eb);
182
+ background-size: 300% 300%;
183
+ animation: border-flow 5s ease infinite;
184
+ }
@@ -0,0 +1,42 @@
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 time_exports = {};
20
+ __export(time_exports, {
21
+ timeAgo: () => timeAgo
22
+ });
23
+ module.exports = __toCommonJS(time_exports);
24
+ function timeAgo(iso) {
25
+ const diff = Date.now() - new Date(iso).getTime();
26
+ const s = Math.floor(diff / 1e3);
27
+ if (s < 60) return "just now";
28
+ const m = Math.floor(s / 60);
29
+ if (m < 60) return `${m}m ago`;
30
+ const h = Math.floor(m / 60);
31
+ if (h < 24) return `${h}h ago`;
32
+ const d = Math.floor(h / 24);
33
+ if (d < 30) return `${d}d ago`;
34
+ const mo = Math.floor(d / 30);
35
+ if (mo < 12) return `${mo}mo ago`;
36
+ return `${Math.floor(mo / 12)}y ago`;
37
+ }
38
+ // Annotate the CommonJS export names for ESM import in node:
39
+ 0 && (module.exports = {
40
+ timeAgo
41
+ });
42
+ //# sourceMappingURL=time.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["/**\n * Returns a human-readable relative time string.\n * e.g. \"just now\", \"2m ago\", \"3h ago\", \"5d ago\"\n */\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns a human-readable relative time string.
3
+ * e.g. "just now", "2m ago", "3h ago", "5d ago"
4
+ */
5
+ declare function timeAgo(iso: string): string;
6
+
7
+ export { timeAgo };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns a human-readable relative time string.
3
+ * e.g. "just now", "2m ago", "3h ago", "5d ago"
4
+ */
5
+ declare function timeAgo(iso: string): string;
6
+
7
+ export { timeAgo };
@@ -0,0 +1,18 @@
1
+ function timeAgo(iso) {
2
+ const diff = Date.now() - new Date(iso).getTime();
3
+ const s = Math.floor(diff / 1e3);
4
+ if (s < 60) return "just now";
5
+ const m = Math.floor(s / 60);
6
+ if (m < 60) return `${m}m ago`;
7
+ const h = Math.floor(m / 60);
8
+ if (h < 24) return `${h}h ago`;
9
+ const d = Math.floor(h / 24);
10
+ if (d < 30) return `${d}d ago`;
11
+ const mo = Math.floor(d / 30);
12
+ if (mo < 12) return `${mo}mo ago`;
13
+ return `${Math.floor(mo / 12)}y ago`;
14
+ }
15
+ export {
16
+ timeAgo
17
+ };
18
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["/**\n * Returns a human-readable relative time string.\n * e.g. \"just now\", \"2m ago\", \"3h ago\", \"5d ago\"\n */\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":"AAIO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -16,7 +16,8 @@
16
16
  "types": "./dist/preset/tailwind.d.ts",
17
17
  "import": "./dist/preset/tailwind.js",
18
18
  "require": "./dist/preset/tailwind.cjs"
19
- }
19
+ },
20
+ "./styles": "./dist/medialane.css"
20
21
  },
21
22
  "license": "MIT",
22
23
  "publishConfig": {