@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.
- package/dist/components/activity-feed-shell.cjs +90 -0
- package/dist/components/activity-feed-shell.cjs.map +1 -0
- package/dist/components/activity-feed-shell.d.cts +13 -0
- package/dist/components/activity-feed-shell.d.ts +13 -0
- package/dist/components/activity-feed-shell.js +56 -0
- package/dist/components/activity-feed-shell.js.map +1 -0
- package/dist/components/activity-row.cjs +95 -0
- package/dist/components/activity-row.cjs.map +1 -0
- package/dist/components/activity-row.d.cts +20 -0
- package/dist/components/activity-row.d.ts +20 -0
- package/dist/components/activity-row.js +61 -0
- package/dist/components/activity-row.js.map +1 -0
- package/dist/components/activity-ticker.cjs +92 -0
- package/dist/components/activity-ticker.cjs.map +1 -0
- package/dist/components/activity-ticker.d.cts +12 -0
- package/dist/components/activity-ticker.d.ts +12 -0
- package/dist/components/activity-ticker.js +58 -0
- package/dist/components/activity-ticker.js.map +1 -0
- package/dist/components/cta-card-grid.cjs +67 -0
- package/dist/components/cta-card-grid.cjs.map +1 -0
- package/dist/components/cta-card-grid.d.cts +23 -0
- package/dist/components/cta-card-grid.d.ts +23 -0
- package/dist/components/cta-card-grid.js +33 -0
- package/dist/components/cta-card-grid.js.map +1 -0
- package/dist/components/hero-slider.cjs +133 -0
- package/dist/components/hero-slider.cjs.map +1 -0
- package/dist/components/hero-slider.d.cts +12 -0
- package/dist/components/hero-slider.d.ts +12 -0
- package/dist/components/hero-slider.js +98 -0
- package/dist/components/hero-slider.js.map +1 -0
- package/dist/components/launchpad-grid.cjs +77 -0
- package/dist/components/launchpad-grid.cjs.map +1 -0
- package/dist/components/launchpad-grid.d.cts +20 -0
- package/dist/components/launchpad-grid.d.ts +20 -0
- package/dist/components/launchpad-grid.js +43 -0
- package/dist/components/launchpad-grid.js.map +1 -0
- package/dist/components/listing-card.cjs +146 -0
- package/dist/components/listing-card.cjs.map +1 -0
- package/dist/components/listing-card.d.cts +16 -0
- package/dist/components/listing-card.d.ts +16 -0
- package/dist/components/listing-card.js +111 -0
- package/dist/components/listing-card.js.map +1 -0
- package/dist/data/activity.cjs +48 -0
- package/dist/data/activity.cjs.map +1 -0
- package/dist/data/activity.d.cts +16 -0
- package/dist/data/activity.d.ts +16 -0
- package/dist/data/activity.js +23 -0
- package/dist/data/activity.js.map +1 -0
- package/dist/index.cjs +35 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/medialane.css +184 -0
- package/dist/utils/time.cjs +42 -0
- package/dist/utils/time.cjs.map +1 -0
- package/dist/utils/time.d.cts +7 -0
- package/dist/utils/time.d.ts +7 -0
- package/dist/utils/time.js +18 -0
- package/dist/utils/time.js.map +1 -0
- 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
|
package/dist/index.cjs.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":";;;;;;;;;;;;;;;;;;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,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.
|
|
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": {
|