@medialane/ui 0.303.0 → 0.305.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 (50) hide show
  1. package/dist/components/account/input-otp.d.cts +2 -2
  2. package/dist/components/account/input-otp.d.ts +2 -2
  3. package/dist/components/account-page.cjs +151 -0
  4. package/dist/components/account-page.cjs.map +1 -0
  5. package/dist/components/account-page.d.cts +15 -0
  6. package/dist/components/account-page.d.ts +15 -0
  7. package/dist/components/account-page.js +117 -0
  8. package/dist/components/account-page.js.map +1 -0
  9. package/dist/components/button.d.cts +1 -1
  10. package/dist/components/button.d.ts +1 -1
  11. package/dist/components/collection-provenance-tab.cjs +2 -2
  12. package/dist/components/collection-provenance-tab.cjs.map +1 -1
  13. package/dist/components/collection-provenance-tab.js +2 -2
  14. package/dist/components/collection-provenance-tab.js.map +1 -1
  15. package/dist/components/creator-page.cjs +47 -68
  16. package/dist/components/creator-page.cjs.map +1 -1
  17. package/dist/components/creator-page.d.cts +2 -3
  18. package/dist/components/creator-page.d.ts +2 -3
  19. package/dist/components/creator-page.js +48 -69
  20. package/dist/components/creator-page.js.map +1 -1
  21. package/dist/components/fast-mint/fast-mint.d.cts +2 -2
  22. package/dist/components/fast-mint/fast-mint.d.ts +2 -2
  23. package/dist/components/launchpad/edition-mint-schema.d.cts +2 -2
  24. package/dist/components/launchpad/edition-mint-schema.d.ts +2 -2
  25. package/dist/components/underline-tabs.cjs +62 -0
  26. package/dist/components/underline-tabs.cjs.map +1 -0
  27. package/dist/components/underline-tabs.d.cts +20 -0
  28. package/dist/components/underline-tabs.d.ts +20 -0
  29. package/dist/components/underline-tabs.js +28 -0
  30. package/dist/components/underline-tabs.js.map +1 -0
  31. package/dist/index.cjs +8 -0
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.cts +4 -1
  34. package/dist/index.d.ts +4 -1
  35. package/dist/index.js +6 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/medialane.css +1 -1
  38. package/dist/utils/query-keys.cjs +1 -0
  39. package/dist/utils/query-keys.cjs.map +1 -1
  40. package/dist/utils/query-keys.d.cts +1 -0
  41. package/dist/utils/query-keys.d.ts +1 -0
  42. package/dist/utils/query-keys.js +1 -0
  43. package/dist/utils/query-keys.js.map +1 -1
  44. package/dist/utils/use-tokens.cjs +23 -0
  45. package/dist/utils/use-tokens.cjs.map +1 -1
  46. package/dist/utils/use-tokens.d.cts +180 -1
  47. package/dist/utils/use-tokens.d.ts +180 -1
  48. package/dist/utils/use-tokens.js +23 -1
  49. package/dist/utils/use-tokens.js.map +1 -1
  50. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/creator-page.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport useSWR from \"swr\";\nimport { Activity, Image as ImageIcon, LayoutGrid, ShoppingBag } from \"lucide-react\";\nimport type { ApiToken } from \"@medialane/sdk\";\nimport Link from \"./link.js\";\nimport { Button } from \"./button.js\";\nimport { Skeleton } from \"./skeleton.js\";\nimport { AddressDisplay } from \"./address-display.js\";\nimport { CreatorHeader } from \"./creator-header.js\";\nimport { HiddenContentBanner } from \"./hidden-content-banner.js\";\nimport { TabEmptyState } from \"./tab-empty-state.js\";\nimport { TokenCard, TokenCardSkeleton } from \"./token-card.js\";\nimport { CollectionCard, CollectionCardSkeleton } from \"./collection-card.js\";\nimport { ListingCard, ListingCardSkeleton } from \"./listing-card.js\";\nimport { ListingCardMenu } from \"./listing-card-menu.js\";\nimport { ActivityTimelineRow } from \"./activity-timeline-row.js\";\nimport { MoreMenu } from \"./more-menu.js\";\nimport { useMedialaneApp } from \"./medialane-app.js\";\nimport { ReportDialog } from \"./report-dialog.js\";\nimport type { UsePortfolioAssetActions } from \"./portfolio-assets.js\";\nimport type { CollectionMarketActions } from \"./collection-page.js\";\nimport { cn } from \"../utils/cn.js\";\nimport { EXPLORER_URL } from \"../utils/explorer-url.js\";\nimport { isSameAddress } from \"../utils/same-address.js\";\nimport { orderUsd } from \"../utils/order-usd.js\";\nimport { profileIdentity } from \"../utils/profile-identity.js\";\nimport { useImageUrl } from \"../utils/use-image-url.js\";\nimport { useMedialaneClient } from \"../utils/use-medialane-client.js\";\nimport { useUsdPrices } from \"../utils/use-usd-prices.js\";\nimport { useTokensByOwner } from \"../utils/use-tokens.js\";\nimport { useCollectionsByOwner } from \"../utils/use-collections.js\";\nimport { useUserOrders } from \"../utils/use-orders.js\";\nimport { useActivitiesByAddress } from \"../utils/use-activities.js\";\nimport { useCreatorByUsername, useCreatorProfile } from \"../utils/use-profiles.js\";\n\nconst TABS = [\n { id: \"assets\", label: \"Assets\", Icon: ImageIcon },\n { id: \"collections\", label: \"Collections\", Icon: LayoutGrid },\n { id: \"listings\", label: \"Listings\", Icon: ShoppingBag },\n { id: \"activity\", label: \"Activity\", Icon: Activity },\n] as const;\n\ntype TabId = (typeof TABS)[number][\"id\"];\n\nconst GRID = \"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-4\";\nconst isNft = (itemType: string) => itemType === \"ERC721\" || itemType === \"ERC1155\";\n\nexport interface CreatorPageProps {\n address?: string;\n username?: string;\n useAssetActions: UsePortfolioAssetActions;\n useMarketActions: () => CollectionMarketActions;\n}\n\nexport function CreatorPage({ address: addressProp, username, useAssetActions, useMarketActions }: CreatorPageProps) {\n const { walletAddress } = useMedialaneApp();\n const client = useMedialaneClient();\n const resolveImage = useImageUrl();\n const prices = useUsdPrices();\n const [activeTab, setActiveTab] = useState<TabId>(\"assets\");\n const [reportOpen, setReportOpen] = useState(false);\n const [reportToken, setReportToken] = useState<ApiToken | null>(null);\n\n const byName = useCreatorByUsername(username);\n const byAddress = useCreatorProfile(username ? undefined : addressProp);\n const creator = username ? byName.creator : byAddress.profile;\n const address = username ? creator?.walletAddress ?? null : addressProp ?? null;\n const isOwner = !!address && !!walletAddress && isSameAddress(address, walletAddress);\n\n const { tokens, meta, isLoading: tokensLoading, mutate: refreshTokens } = useTokensByOwner(address, 1, 20);\n const { collections, isLoading: collectionsLoading } = useCollectionsByOwner(address);\n const { orders, isLoading: ordersLoading } = useUserOrders(activeTab === \"listings\" ? address : null);\n const { activities, isLoading: activitiesLoading } = useActivitiesByAddress(activeTab === \"activity\" ? address : null);\n const { data: hidden } = useSWR(address ? `creator-hidden-${address}` : null, () => client.api.creators.isHidden(address!).catch(() => false));\n const actions = useAssetActions({ refresh: () => void refreshTokens() });\n const market = useMarketActions();\n\n const listings = orders.filter((o) => o.status === \"ACTIVE\" && isNft(o.offer.itemType));\n const identity = profileIdentity({ username: creator?.username, name: creator?.name, walletAddress: address });\n\n if (username && byName.isLoading) {\n return (\n <div className=\"min-h-screen pb-20\">\n <div className=\"px-6 pt-20 pb-6\"><CreatorHeader creator={null} image={null} stats={[]} loading /></div>\n <div className={cn(\"px-6\", GRID)}>{Array.from({ length: 8 }).map((_, i) => <TokenCardSkeleton key={i} />)}</div>\n </div>\n );\n }\n\n if (username && !creator) {\n return (\n <div className=\"mx-auto max-w-lg space-y-4 px-4 py-24 text-center\">\n <h1 className=\"text-2xl font-bold\">Creator not found</h1>\n <p className=\"text-muted-foreground\"><span className=\"tabular-nums\">@{username}</span> isn&apos;t a profile yet.</p>\n <Button variant=\"outline\" asChild><Link href=\"/creators\">Browse creators</Link></Button>\n </div>\n );\n }\n\n const counts: Partial<Record<TabId, number>> = {\n assets: meta?.total ?? undefined,\n collections: collectionsLoading ? undefined : collections.length,\n ...(activeTab === \"listings\" && !ordersLoading ? { listings: listings.length } : {}),\n };\n\n return (\n <div className=\"min-h-screen overflow-x-hidden pb-20\">\n {hidden === true ? <HiddenContentBanner /> : null}\n\n <div className=\"px-6 pt-20 pb-6\">\n {creator ? (\n <CreatorHeader\n creator={creator}\n image={resolveImage(creator.avatarImage || tokens[0]?.metadata?.image)}\n stats={[\n { label: \"Assets\", value: meta?.total ?? null },\n { label: \"Collections\", value: collectionsLoading ? null : collections.length },\n ]}\n />\n ) : (\n <div className=\"flex flex-wrap items-center gap-2\">\n <AddressDisplay address={address ?? \"\"} chars={10} className=\"text-base font-semibold tabular-nums\" />\n </div>\n )}\n </div>\n\n <div className=\"sticky top-0 z-20 mt-4 flex items-center gap-2 border-b border-border bg-background/95 px-6 backdrop-blur-sm\">\n <div className=\"-mb-px flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto scrollbar-none\">\n {TABS.map(({ id, label, Icon }) => {\n const count = counts[id];\n const active = activeTab === id;\n return (\n <button\n key={id}\n onClick={() => setActiveTab(id)}\n className={cn(\n \"relative flex shrink-0 items-center gap-2 whitespace-nowrap px-4 py-3 text-sm font-medium transition-colors duration-200\",\n active ? \"text-foreground\" : \"text-muted-foreground hover:text-foreground\"\n )}\n >\n <Icon className=\"h-3.5 w-3.5\" />\n {label}\n {count ? (\n <span className={cn(\"min-w-[18px] rounded-full px-1.5 py-px text-center text-2xs font-bold tabular-nums\", active ? \"bg-primary/15 text-primary\" : \"bg-muted text-muted-foreground\")}>{count}</span>\n ) : null}\n {active ? <span className=\"absolute inset-x-0 bottom-0 h-0.5 rounded-full bg-primary\" /> : null}\n </button>\n );\n })}\n </div>\n {address ? (\n <MoreMenu explorerHref={`${EXPLORER_URL}/contract/${address}`} shareTitle={identity.name ?? identity.identity} onReport={() => setReportOpen(true)} />\n ) : null}\n </div>\n\n <div className=\"mt-6 px-6\">\n {activeTab === \"assets\" && (\n tokensLoading ? (\n <div className={GRID}>{Array.from({ length: 8 }).map((_, i) => <TokenCardSkeleton key={i} />)}</div>\n ) : tokens.length === 0 ? (\n <TabEmptyState icon={ImageIcon} heading=\"No assets yet\" body=\"Works this creator makes on Medialane appear here.\" />\n ) : (\n <div className={GRID}>\n {tokens.map((t: ApiToken) => {\n const listing = t.activeOrders?.find((o) => isNft(o.offer.itemType));\n return (\n <TokenCard\n key={`${t.contractAddress}-${t.tokenId}`}\n token={t}\n isOwner={isOwner}\n usdValue={orderUsd(listing?.price, prices)}\n onList={isOwner ? actions.list : undefined}\n onTransfer={isOwner ? actions.transfer : undefined}\n onCancel={isOwner ? actions.cancel : undefined}\n onBuy={!isOwner && listing ? () => market.buy(listing) : undefined}\n onOffer={isOwner ? undefined : market.offer}\n onReport={setReportToken}\n />\n );\n })}\n </div>\n )\n )}\n\n {activeTab === \"collections\" && (\n collectionsLoading ? (\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-3\">{Array.from({ length: 6 }).map((_, i) => <CollectionCardSkeleton key={i} />)}</div>\n ) : collections.length === 0 ? (\n <TabEmptyState icon={LayoutGrid} heading=\"No collections yet\" body=\"Collections this creator makes appear here.\" />\n ) : (\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-3\">{collections.map((c) => <CollectionCard key={c.contractAddress} collection={c} />)}</div>\n )\n )}\n\n {activeTab === \"listings\" && (\n ordersLoading ? (\n <div className={GRID}>{Array.from({ length: 4 }).map((_, i) => <ListingCardSkeleton key={i} />)}</div>\n ) : listings.length === 0 ? (\n <TabEmptyState icon={ShoppingBag} heading=\"No active listings\" body=\"Works this creator lists for sale appear here.\" />\n ) : (\n <div className={GRID}>\n {listings.map((o) => <ListingCard key={o.orderHash} order={o} onBuy={isOwner ? undefined : market.buy} usdValue={orderUsd(o.price, prices)} overflowMenu={<ListingCardMenu order={o} />} />)}\n </div>\n )\n )}\n\n {activeTab === \"activity\" && (\n <div className=\"max-w-2xl\">\n {activitiesLoading ? (\n <div className=\"space-y-5\">{Array.from({ length: 6 }).map((_, i) => <Skeleton key={i} className=\"h-10 w-full rounded-xl\" />)}</div>\n ) : activities.length === 0 ? (\n <TabEmptyState icon={Activity} heading=\"No activity yet\" body=\"This creator's activity appears here as it happens.\" />\n ) : (\n <div>{activities.map((a, i) => <ActivityTimelineRow key={i} event={a} isLast={i === activities.length - 1} />)}</div>\n )}\n </div>\n )}\n </div>\n\n {actions.dialogs}\n {market.dialogs}\n {reportToken ? (\n <ReportDialog\n open={!!reportToken}\n onOpenChange={(open) => { if (!open) setReportToken(null); }}\n target={{ type: \"TOKEN\", contract: reportToken.contractAddress, tokenId: reportToken.tokenId, name: reportToken.metadata?.name ?? undefined }}\n />\n ) : null}\n {address ? (\n <ReportDialog open={reportOpen} onOpenChange={setReportOpen} target={{ type: \"CREATOR\", address, name: identity.name ?? identity.identity }} />\n ) : null}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/components/creator-page.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport useSWR from \"swr\";\nimport { Activity, Image as ImageIcon, LayoutGrid, ShoppingBag } from \"lucide-react\";\nimport type { ApiToken } from \"@medialane/sdk\";\nimport Link from \"./link.js\";\nimport { Button } from \"./button.js\";\nimport { Skeleton } from \"./skeleton.js\";\nimport { TabsContent } from \"./tabs.js\";\nimport { UnderlineTabs, type UnderlineTab } from \"./underline-tabs.js\";\nimport { CreatorHeader } from \"./creator-header.js\";\nimport { HiddenContentBanner } from \"./hidden-content-banner.js\";\nimport { TabEmptyState } from \"./tab-empty-state.js\";\nimport { TokenCard, TokenCardSkeleton } from \"./token-card.js\";\nimport { CollectionCard, CollectionCardSkeleton } from \"./collection-card.js\";\nimport { ListingCard, ListingCardSkeleton } from \"./listing-card.js\";\nimport { ListingCardMenu } from \"./listing-card-menu.js\";\nimport { ActivityTimelineRow } from \"./activity-timeline-row.js\";\nimport { MoreMenu } from \"./more-menu.js\";\nimport { useMedialaneApp } from \"./medialane-app.js\";\nimport { ReportDialog } from \"./report-dialog.js\";\nimport type { UsePortfolioAssetActions } from \"./portfolio-assets.js\";\nimport type { CollectionMarketActions } from \"./collection-page.js\";\nimport { cn } from \"../utils/cn.js\";\nimport { EXPLORER_URL } from \"../utils/explorer-url.js\";\nimport { isSameAddress } from \"../utils/same-address.js\";\nimport { orderUsd } from \"../utils/order-usd.js\";\nimport { profileIdentity } from \"../utils/profile-identity.js\";\nimport { useImageUrl } from \"../utils/use-image-url.js\";\nimport { useMedialaneClient } from \"../utils/use-medialane-client.js\";\nimport { useUsdPrices } from \"../utils/use-usd-prices.js\";\nimport { useTokensByOwner } from \"../utils/use-tokens.js\";\nimport { useCollectionsByOwner } from \"../utils/use-collections.js\";\nimport { useUserOrders } from \"../utils/use-orders.js\";\nimport { useActivitiesByAddress } from \"../utils/use-activities.js\";\nimport { useCreatorByUsername } from \"../utils/use-profiles.js\";\n\ntype TabId = \"assets\" | \"collections\" | \"listings\" | \"activity\";\n\nconst GRID = \"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-4\";\nconst isNft = (itemType: string) => itemType === \"ERC721\" || itemType === \"ERC1155\";\n\nexport interface CreatorPageProps {\n username: string;\n useAssetActions: UsePortfolioAssetActions;\n useMarketActions: () => CollectionMarketActions;\n}\n\nexport function CreatorPage({ username, useAssetActions, useMarketActions }: CreatorPageProps) {\n const { walletAddress } = useMedialaneApp();\n const client = useMedialaneClient();\n const resolveImage = useImageUrl();\n const prices = useUsdPrices();\n const [activeTab, setActiveTab] = useState<TabId>(\"assets\");\n const [reportOpen, setReportOpen] = useState(false);\n const [reportToken, setReportToken] = useState<ApiToken | null>(null);\n\n const { creator, isLoading: creatorLoading } = useCreatorByUsername(username);\n const address = creator?.walletAddress ?? null;\n const isOwner = !!address && !!walletAddress && isSameAddress(address, walletAddress);\n\n const { tokens, meta, isLoading: tokensLoading, mutate: refreshTokens } = useTokensByOwner(address, 1, 20);\n const { collections, isLoading: collectionsLoading } = useCollectionsByOwner(address);\n const { orders, isLoading: ordersLoading } = useUserOrders(activeTab === \"listings\" ? address : null);\n const { activities, isLoading: activitiesLoading } = useActivitiesByAddress(activeTab === \"activity\" ? address : null);\n const { data: hidden } = useSWR(address ? `creator-hidden-${address}` : null, () => client.api.creators.isHidden(address!).catch(() => false));\n const actions = useAssetActions({ refresh: () => void refreshTokens() });\n const market = useMarketActions();\n\n const listings = orders.filter((o) => o.status === \"ACTIVE\" && isNft(o.offer.itemType));\n const identity = profileIdentity({ username: creator?.username, name: creator?.name, walletAddress: address });\n\n if (creatorLoading) {\n return (\n <div className=\"min-h-screen pb-20\">\n <div className=\"px-6 pt-20 pb-6\"><CreatorHeader creator={null} image={null} stats={[]} loading /></div>\n <div className={cn(\"px-6\", GRID)}>{Array.from({ length: 8 }).map((_, i) => <TokenCardSkeleton key={i} />)}</div>\n </div>\n );\n }\n\n if (!creator) {\n return (\n <div className=\"mx-auto max-w-lg space-y-4 px-4 py-24 text-center\">\n <h1 className=\"text-2xl font-bold\">Creator not found</h1>\n <p className=\"text-muted-foreground\"><span className=\"tabular-nums\">@{username}</span> isn&apos;t a profile yet.</p>\n <Button variant=\"outline\" asChild><Link href=\"/creators\">Browse creators</Link></Button>\n </div>\n );\n }\n\n const tabs: UnderlineTab[] = [\n { id: \"assets\", label: \"Assets\", icon: ImageIcon, count: meta?.total ?? undefined },\n { id: \"collections\", label: \"Collections\", icon: LayoutGrid, count: collectionsLoading ? undefined : collections.length },\n { id: \"listings\", label: \"Listings\", icon: ShoppingBag, count: activeTab === \"listings\" && !ordersLoading ? listings.length : undefined },\n { id: \"activity\", label: \"Activity\", icon: Activity },\n ];\n\n return (\n <div className=\"min-h-screen overflow-x-hidden pb-20\">\n {hidden === true ? <HiddenContentBanner /> : null}\n\n <div className=\"px-6 pt-20 pb-6\">\n <CreatorHeader\n creator={creator}\n image={resolveImage(creator.avatarImage || tokens[0]?.metadata?.image)}\n stats={[\n { label: \"Assets\", value: meta?.total ?? null },\n { label: \"Collections\", value: collectionsLoading ? null : collections.length },\n ]}\n />\n </div>\n\n <UnderlineTabs\n tabs={tabs}\n value={activeTab}\n onValueChange={(id) => setActiveTab(id as TabId)}\n trailing={address ? <MoreMenu explorerHref={`${EXPLORER_URL}/contract/${address}`} shareTitle={identity.name ?? identity.identity} onReport={() => setReportOpen(true)} /> : null}\n >\n <TabsContent value=\"assets\" className=\"mt-6 px-6\">\n {tokensLoading ? (\n <div className={GRID}>{Array.from({ length: 8 }).map((_, i) => <TokenCardSkeleton key={i} />)}</div>\n ) : tokens.length === 0 ? (\n <TabEmptyState icon={ImageIcon} heading=\"No assets yet\" body=\"Works this creator makes on Medialane appear here.\" />\n ) : (\n <div className={GRID}>\n {tokens.map((t: ApiToken) => {\n const listing = t.activeOrders?.find((o) => isNft(o.offer.itemType));\n return (\n <TokenCard\n key={`${t.contractAddress}-${t.tokenId}`}\n token={t}\n isOwner={isOwner}\n usdValue={orderUsd(listing?.price, prices)}\n onList={isOwner ? actions.list : undefined}\n onTransfer={isOwner ? actions.transfer : undefined}\n onCancel={isOwner ? actions.cancel : undefined}\n onBuy={!isOwner && listing ? () => market.buy(listing) : undefined}\n onOffer={isOwner ? undefined : market.offer}\n onReport={setReportToken}\n />\n );\n })}\n </div>\n )}\n </TabsContent>\n\n <TabsContent value=\"collections\" className=\"mt-6 px-6\">\n {collectionsLoading ? (\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-3\">{Array.from({ length: 6 }).map((_, i) => <CollectionCardSkeleton key={i} />)}</div>\n ) : collections.length === 0 ? (\n <TabEmptyState icon={LayoutGrid} heading=\"No collections yet\" body=\"Collections this creator makes appear here.\" />\n ) : (\n <div className=\"grid grid-cols-2 gap-4 lg:grid-cols-3\">{collections.map((c) => <CollectionCard key={c.contractAddress} collection={c} />)}</div>\n )}\n </TabsContent>\n\n <TabsContent value=\"listings\" className=\"mt-6 px-6\">\n {ordersLoading ? (\n <div className={GRID}>{Array.from({ length: 4 }).map((_, i) => <ListingCardSkeleton key={i} />)}</div>\n ) : listings.length === 0 ? (\n <TabEmptyState icon={ShoppingBag} heading=\"No active listings\" body=\"Works this creator lists for sale appear here.\" />\n ) : (\n <div className={GRID}>\n {listings.map((o) => <ListingCard key={o.orderHash} order={o} onBuy={isOwner ? undefined : market.buy} usdValue={orderUsd(o.price, prices)} overflowMenu={<ListingCardMenu order={o} />} />)}\n </div>\n )}\n </TabsContent>\n\n <TabsContent value=\"activity\" className=\"mt-6 max-w-2xl px-6\">\n {activitiesLoading ? (\n <div className=\"space-y-5\">{Array.from({ length: 6 }).map((_, i) => <Skeleton key={i} className=\"h-10 w-full rounded-xl\" />)}</div>\n ) : activities.length === 0 ? (\n <TabEmptyState icon={Activity} heading=\"No activity yet\" body=\"This creator's activity appears here as it happens.\" />\n ) : (\n <div>{activities.map((a, i) => <ActivityTimelineRow key={i} event={a} isLast={i === activities.length - 1} />)}</div>\n )}\n </TabsContent>\n </UnderlineTabs>\n\n {actions.dialogs}\n {market.dialogs}\n {reportToken ? (\n <ReportDialog\n open={!!reportToken}\n onOpenChange={(open) => { if (!open) setReportToken(null); }}\n target={{ type: \"TOKEN\", contract: reportToken.contractAddress, tokenId: reportToken.tokenId, name: reportToken.metadata?.name ?? undefined }}\n />\n ) : null}\n {address ? (\n <ReportDialog open={reportOpen} onOpenChange={setReportOpen} target={{ type: \"CREATOR\", address, name: identity.name ?? identity.identity }} />\n ) : null}\n </div>\n );\n}\n"],"mappings":";AA2EM,SACmC,KADnC;AAzEN,SAAS,gBAAgB;AACzB,OAAO,YAAY;AACnB,SAAS,UAAU,SAAS,WAAW,YAAY,mBAAmB;AAEtE,OAAO,UAAU;AACjB,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAC5B,SAAS,qBAAwC;AACjD,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAC9B,SAAS,WAAW,yBAAyB;AAC7C,SAAS,gBAAgB,8BAA8B;AACvD,SAAS,aAAa,2BAA2B;AACjD,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAG7B,SAAS,UAAU;AACnB,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,6BAA6B;AACtC,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AACvC,SAAS,4BAA4B;AAIrC,MAAM,OAAO;AACb,MAAM,QAAQ,CAAC,aAAqB,aAAa,YAAY,aAAa;AAQnE,SAAS,YAAY,EAAE,UAAU,iBAAiB,iBAAiB,GAAqB;AAC7F,QAAM,EAAE,cAAc,IAAI,gBAAgB;AAC1C,QAAM,SAAS,mBAAmB;AAClC,QAAM,eAAe,YAAY;AACjC,QAAM,SAAS,aAAa;AAC5B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgB,QAAQ;AAC1D,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,aAAa,cAAc,IAAI,SAA0B,IAAI;AAEpE,QAAM,EAAE,SAAS,WAAW,eAAe,IAAI,qBAAqB,QAAQ;AAC5E,QAAM,UAAU,SAAS,iBAAiB;AAC1C,QAAM,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,iBAAiB,cAAc,SAAS,aAAa;AAEpF,QAAM,EAAE,QAAQ,MAAM,WAAW,eAAe,QAAQ,cAAc,IAAI,iBAAiB,SAAS,GAAG,EAAE;AACzG,QAAM,EAAE,aAAa,WAAW,mBAAmB,IAAI,sBAAsB,OAAO;AACpF,QAAM,EAAE,QAAQ,WAAW,cAAc,IAAI,cAAc,cAAc,aAAa,UAAU,IAAI;AACpG,QAAM,EAAE,YAAY,WAAW,kBAAkB,IAAI,uBAAuB,cAAc,aAAa,UAAU,IAAI;AACrH,QAAM,EAAE,MAAM,OAAO,IAAI,OAAO,UAAU,kBAAkB,OAAO,KAAK,MAAM,MAAM,OAAO,IAAI,SAAS,SAAS,OAAQ,EAAE,MAAM,MAAM,KAAK,CAAC;AAC7I,QAAM,UAAU,gBAAgB,EAAE,SAAS,MAAM,KAAK,cAAc,EAAE,CAAC;AACvE,QAAM,SAAS,iBAAiB;AAEhC,QAAM,WAAW,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,YAAY,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtF,QAAM,WAAW,gBAAgB,EAAE,UAAU,SAAS,UAAU,MAAM,SAAS,MAAM,eAAe,QAAQ,CAAC;AAE7G,MAAI,gBAAgB;AAClB,WACE,qBAAC,SAAI,WAAU,sBACb;AAAA,0BAAC,SAAI,WAAU,mBAAkB,8BAAC,iBAAc,SAAS,MAAM,OAAO,MAAM,OAAO,CAAC,GAAG,SAAO,MAAC,GAAE;AAAA,MACjG,oBAAC,SAAI,WAAW,GAAG,QAAQ,IAAI,GAAI,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,uBAAuB,CAAG,CAAE,GAAE;AAAA,OAC5G;AAAA,EAEJ;AAEA,MAAI,CAAC,SAAS;AACZ,WACE,qBAAC,SAAI,WAAU,qDACb;AAAA,0BAAC,QAAG,WAAU,sBAAqB,+BAAiB;AAAA,MACpD,qBAAC,OAAE,WAAU,yBAAwB;AAAA,6BAAC,UAAK,WAAU,gBAAe;AAAA;AAAA,UAAE;AAAA,WAAS;AAAA,QAAO;AAAA,SAA0B;AAAA,MAChH,oBAAC,UAAO,SAAQ,WAAU,SAAO,MAAC,8BAAC,QAAK,MAAK,aAAY,6BAAe,GAAO;AAAA,OACjF;AAAA,EAEJ;AAEA,QAAM,OAAuB;AAAA,IAC3B,EAAE,IAAI,UAAU,OAAO,UAAU,MAAM,WAAW,OAAO,MAAM,SAAS,OAAU;AAAA,IAClF,EAAE,IAAI,eAAe,OAAO,eAAe,MAAM,YAAY,OAAO,qBAAqB,SAAY,YAAY,OAAO;AAAA,IACxH,EAAE,IAAI,YAAY,OAAO,YAAY,MAAM,aAAa,OAAO,cAAc,cAAc,CAAC,gBAAgB,SAAS,SAAS,OAAU;AAAA,IACxI,EAAE,IAAI,YAAY,OAAO,YAAY,MAAM,SAAS;AAAA,EACtD;AAEA,SACE,qBAAC,SAAI,WAAU,wCACZ;AAAA,eAAW,OAAO,oBAAC,uBAAoB,IAAK;AAAA,IAE7C,oBAAC,SAAI,WAAU,mBACb;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,aAAa,QAAQ,eAAe,OAAO,CAAC,GAAG,UAAU,KAAK;AAAA,QACrE,OAAO;AAAA,UACL,EAAE,OAAO,UAAU,OAAO,MAAM,SAAS,KAAK;AAAA,UAC9C,EAAE,OAAO,eAAe,OAAO,qBAAqB,OAAO,YAAY,OAAO;AAAA,QAChF;AAAA;AAAA,IACF,GACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,QACP,eAAe,CAAC,OAAO,aAAa,EAAW;AAAA,QAC/C,UAAU,UAAU,oBAAC,YAAS,cAAc,GAAG,YAAY,aAAa,OAAO,IAAI,YAAY,SAAS,QAAQ,SAAS,UAAU,UAAU,MAAM,cAAc,IAAI,GAAG,IAAK;AAAA,QAE7K;AAAA,8BAAC,eAAY,OAAM,UAAS,WAAU,aACnC,0BACC,oBAAC,SAAI,WAAW,MAAO,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,uBAAuB,CAAG,CAAE,GAAE,IAC5F,OAAO,WAAW,IACpB,oBAAC,iBAAc,MAAM,WAAW,SAAQ,iBAAgB,MAAK,sDAAqD,IAElH,oBAAC,SAAI,WAAW,MACb,iBAAO,IAAI,CAAC,MAAgB;AAC3B,kBAAM,UAAU,EAAE,cAAc,KAAK,CAAC,MAAM,MAAM,EAAE,MAAM,QAAQ,CAAC;AACnE,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,OAAO;AAAA,gBACP;AAAA,gBACA,UAAU,SAAS,SAAS,OAAO,MAAM;AAAA,gBACzC,QAAQ,UAAU,QAAQ,OAAO;AAAA,gBACjC,YAAY,UAAU,QAAQ,WAAW;AAAA,gBACzC,UAAU,UAAU,QAAQ,SAAS;AAAA,gBACrC,OAAO,CAAC,WAAW,UAAU,MAAM,OAAO,IAAI,OAAO,IAAI;AAAA,gBACzD,SAAS,UAAU,SAAY,OAAO;AAAA,gBACtC,UAAU;AAAA;AAAA,cATL,GAAG,EAAE,eAAe,IAAI,EAAE,OAAO;AAAA,YAUxC;AAAA,UAEJ,CAAC,GACH,GAEJ;AAAA,UAEA,oBAAC,eAAY,OAAM,eAAc,WAAU,aACxC,+BACC,oBAAC,SAAI,WAAU,yCAAyC,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,4BAA4B,CAAG,CAAE,GAAE,IAClI,YAAY,WAAW,IACzB,oBAAC,iBAAc,MAAM,YAAY,SAAQ,sBAAqB,MAAK,+CAA8C,IAEjH,oBAAC,SAAI,WAAU,yCAAyC,sBAAY,IAAI,CAAC,MAAM,oBAAC,kBAAuC,YAAY,KAA/B,EAAE,eAAgC,CAAE,GAAE,GAE9I;AAAA,UAEA,oBAAC,eAAY,OAAM,YAAW,WAAU,aACrC,0BACC,oBAAC,SAAI,WAAW,MAAO,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,yBAAyB,CAAG,CAAE,GAAE,IAC9F,SAAS,WAAW,IACtB,oBAAC,iBAAc,MAAM,aAAa,SAAQ,sBAAqB,MAAK,kDAAiD,IAErH,oBAAC,SAAI,WAAW,MACb,mBAAS,IAAI,CAAC,MAAM,oBAAC,eAA8B,OAAO,GAAG,OAAO,UAAU,SAAY,OAAO,KAAK,UAAU,SAAS,EAAE,OAAO,MAAM,GAAG,cAAc,oBAAC,mBAAgB,OAAO,GAAG,KAA9I,EAAE,SAAgJ,CAAE,GAC7L,GAEJ;AAAA,UAEA,oBAAC,eAAY,OAAM,YAAW,WAAU,uBACrC,8BACC,oBAAC,SAAI,WAAU,aAAa,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,YAAiB,WAAU,4BAAb,CAAsC,CAAE,GAAE,IAC3H,WAAW,WAAW,IACxB,oBAAC,iBAAc,MAAM,UAAU,SAAQ,mBAAkB,MAAK,uDAAsD,IAEpH,oBAAC,SAAK,qBAAW,IAAI,CAAC,GAAG,MAAM,oBAAC,uBAA4B,OAAO,GAAG,QAAQ,MAAM,WAAW,SAAS,KAA/C,CAAkD,CAAE,GAAE,GAEnH;AAAA;AAAA;AAAA,IACF;AAAA,IAEC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,cACC;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,CAAC,CAAC;AAAA,QACR,cAAc,CAAC,SAAS;AAAE,cAAI,CAAC,KAAM,gBAAe,IAAI;AAAA,QAAG;AAAA,QAC3D,QAAQ,EAAE,MAAM,SAAS,UAAU,YAAY,iBAAiB,SAAS,YAAY,SAAS,MAAM,YAAY,UAAU,QAAQ,OAAU;AAAA;AAAA,IAC9I,IACE;AAAA,IACH,UACC,oBAAC,gBAAa,MAAM,YAAY,cAAc,eAAe,QAAQ,EAAE,MAAM,WAAW,SAAS,MAAM,SAAS,QAAQ,SAAS,SAAS,GAAG,IAC3I;AAAA,KACN;AAEJ;","names":[]}
@@ -1,10 +1,10 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import * as React from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { FastMintProps } from './types.cjs';
4
4
  import 'starknet';
5
5
  import '@medialane/sdk';
6
6
  import '@medialane/sdk/starknet';
7
7
 
8
- declare function FastMint(props: FastMintProps): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
8
+ declare function FastMint(props: FastMintProps): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
9
9
 
10
10
  export { FastMint };
@@ -1,10 +1,10 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import * as React from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { FastMintProps } from './types.js';
4
4
  import 'starknet';
5
5
  import '@medialane/sdk';
6
6
  import '@medialane/sdk/starknet';
7
7
 
8
- declare function FastMint(props: FastMintProps): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
8
+ declare function FastMint(props: FastMintProps): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
9
9
 
10
10
  export { FastMint };
@@ -15,6 +15,7 @@ declare const editionMintSchema: zod.ZodObject<{
15
15
  aiPolicy: zod.ZodEnum<["Allowed", "Not Allowed", "Training Only"]>;
16
16
  royalty: zod.ZodNumber;
17
17
  }, "strip", zod.ZodTypeAny, {
18
+ value: string;
18
19
  name: string;
19
20
  ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
20
21
  licenseType: string;
@@ -24,11 +25,11 @@ declare const editionMintSchema: zod.ZodObject<{
24
25
  geographicScope: string;
25
26
  aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
26
27
  royalty: number;
27
- value: string;
28
28
  recipient: string;
29
29
  description?: string | undefined;
30
30
  external_url?: string | undefined;
31
31
  }, {
32
+ value: string;
32
33
  name: string;
33
34
  ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
34
35
  licenseType: string;
@@ -38,7 +39,6 @@ declare const editionMintSchema: zod.ZodObject<{
38
39
  geographicScope: string;
39
40
  aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
40
41
  royalty: number;
41
- value: string;
42
42
  recipient: string;
43
43
  description?: string | undefined;
44
44
  external_url?: string | undefined;
@@ -15,6 +15,7 @@ declare const editionMintSchema: zod.ZodObject<{
15
15
  aiPolicy: zod.ZodEnum<["Allowed", "Not Allowed", "Training Only"]>;
16
16
  royalty: zod.ZodNumber;
17
17
  }, "strip", zod.ZodTypeAny, {
18
+ value: string;
18
19
  name: string;
19
20
  ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
20
21
  licenseType: string;
@@ -24,11 +25,11 @@ declare const editionMintSchema: zod.ZodObject<{
24
25
  geographicScope: string;
25
26
  aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
26
27
  royalty: number;
27
- value: string;
28
28
  recipient: string;
29
29
  description?: string | undefined;
30
30
  external_url?: string | undefined;
31
31
  }, {
32
+ value: string;
32
33
  name: string;
33
34
  ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
34
35
  licenseType: string;
@@ -38,7 +39,6 @@ declare const editionMintSchema: zod.ZodObject<{
38
39
  geographicScope: string;
39
40
  aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
40
41
  royalty: number;
41
- value: string;
42
42
  recipient: string;
43
43
  description?: string | undefined;
44
44
  external_url?: string | undefined;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var underline_tabs_exports = {};
31
+ __export(underline_tabs_exports, {
32
+ UnderlineTabs: () => UnderlineTabs
33
+ });
34
+ module.exports = __toCommonJS(underline_tabs_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
37
+ function UnderlineTabs({ tabs, value, onValueChange, trailing, children }) {
38
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TabsPrimitive.Root, { value, onValueChange, children: [
39
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "sticky top-0 z-20 mt-4 flex items-center gap-2 bg-background/95 px-6 backdrop-blur-sm", children: [
40
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TabsPrimitive.List, { className: "flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto scrollbar-none", children: tabs.map(({ id, label, icon: Icon, count }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
41
+ TabsPrimitive.Trigger,
42
+ {
43
+ value: id,
44
+ className: "group relative flex shrink-0 items-center gap-2 whitespace-nowrap rounded-lg px-4 py-3 text-sm font-medium text-muted-foreground transition-colors duration-200 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 data-[state=active]:text-foreground after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:bg-primary after:opacity-0 data-[state=active]:after:opacity-100",
45
+ children: [
46
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-3.5 w-3.5" }),
47
+ label,
48
+ count ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "min-w-[18px] rounded-full bg-muted px-1.5 py-px text-center text-2xs font-bold tabular-nums text-muted-foreground group-data-[state=active]:bg-primary/15 group-data-[state=active]:text-primary", children: count }) : null
49
+ ]
50
+ },
51
+ id
52
+ )) }),
53
+ trailing
54
+ ] }),
55
+ children
56
+ ] });
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ UnderlineTabs
61
+ });
62
+ //# sourceMappingURL=underline-tabs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/underline-tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport type { LucideIcon } from \"lucide-react\";\n\nexport interface UnderlineTab {\n id: string;\n label: string;\n icon: LucideIcon;\n count?: number;\n}\n\nexport interface UnderlineTabsProps {\n tabs: ReadonlyArray<UnderlineTab>;\n value: string;\n onValueChange: (id: string) => void;\n trailing?: ReactNode;\n children: ReactNode;\n}\n\nexport function UnderlineTabs({ tabs, value, onValueChange, trailing, children }: UnderlineTabsProps) {\n return (\n <TabsPrimitive.Root value={value} onValueChange={onValueChange}>\n <div className=\"sticky top-0 z-20 mt-4 flex items-center gap-2 bg-background/95 px-6 backdrop-blur-sm\">\n <TabsPrimitive.List className=\"flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto scrollbar-none\">\n {tabs.map(({ id, label, icon: Icon, count }) => (\n <TabsPrimitive.Trigger\n key={id}\n value={id}\n className=\"group relative flex shrink-0 items-center gap-2 whitespace-nowrap rounded-lg px-4 py-3 text-sm font-medium text-muted-foreground transition-colors duration-200 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 data-[state=active]:text-foreground after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:bg-primary after:opacity-0 data-[state=active]:after:opacity-100\"\n >\n <Icon className=\"h-3.5 w-3.5\" />\n {label}\n {count ? (\n <span className=\"min-w-[18px] rounded-full bg-muted px-1.5 py-px text-center text-2xs font-bold tabular-nums text-muted-foreground group-data-[state=active]:bg-primary/15 group-data-[state=active]:text-primary\">{count}</span>\n ) : null}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n {trailing}\n </div>\n {children}\n </TabsPrimitive.Root>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BY;AAxBZ,oBAA+B;AAkBxB,SAAS,cAAc,EAAE,MAAM,OAAO,eAAe,UAAU,SAAS,GAAuB;AACpG,SACE,6CAAC,cAAc,MAAd,EAAmB,OAAc,eAChC;AAAA,iDAAC,SAAI,WAAU,yFACb;AAAA,kDAAC,cAAc,MAAd,EAAmB,WAAU,2EAC3B,eAAK,IAAI,CAAC,EAAE,IAAI,OAAO,MAAM,MAAM,MAAM,MACxC;AAAA,QAAC,cAAc;AAAA,QAAd;AAAA,UAEC,OAAO;AAAA,UACP,WAAU;AAAA,UAEV;AAAA,wDAAC,QAAK,WAAU,eAAc;AAAA,YAC7B;AAAA,YACA,QACC,4CAAC,UAAK,WAAU,oMAAoM,iBAAM,IACxN;AAAA;AAAA;AAAA,QARC;AAAA,MASP,CACD,GACH;AAAA,MACC;AAAA,OACH;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
@@ -0,0 +1,20 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+ import { LucideIcon } from 'lucide-react';
4
+
5
+ interface UnderlineTab {
6
+ id: string;
7
+ label: string;
8
+ icon: LucideIcon;
9
+ count?: number;
10
+ }
11
+ interface UnderlineTabsProps {
12
+ tabs: ReadonlyArray<UnderlineTab>;
13
+ value: string;
14
+ onValueChange: (id: string) => void;
15
+ trailing?: ReactNode;
16
+ children: ReactNode;
17
+ }
18
+ declare function UnderlineTabs({ tabs, value, onValueChange, trailing, children }: UnderlineTabsProps): react_jsx_runtime.JSX.Element;
19
+
20
+ export { type UnderlineTab, UnderlineTabs, type UnderlineTabsProps };
@@ -0,0 +1,20 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+ import { LucideIcon } from 'lucide-react';
4
+
5
+ interface UnderlineTab {
6
+ id: string;
7
+ label: string;
8
+ icon: LucideIcon;
9
+ count?: number;
10
+ }
11
+ interface UnderlineTabsProps {
12
+ tabs: ReadonlyArray<UnderlineTab>;
13
+ value: string;
14
+ onValueChange: (id: string) => void;
15
+ trailing?: ReactNode;
16
+ children: ReactNode;
17
+ }
18
+ declare function UnderlineTabs({ tabs, value, onValueChange, trailing, children }: UnderlineTabsProps): react_jsx_runtime.JSX.Element;
19
+
20
+ export { type UnderlineTab, UnderlineTabs, type UnderlineTabsProps };
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
4
+ function UnderlineTabs({ tabs, value, onValueChange, trailing, children }) {
5
+ return /* @__PURE__ */ jsxs(TabsPrimitive.Root, { value, onValueChange, children: [
6
+ /* @__PURE__ */ jsxs("div", { className: "sticky top-0 z-20 mt-4 flex items-center gap-2 bg-background/95 px-6 backdrop-blur-sm", children: [
7
+ /* @__PURE__ */ jsx(TabsPrimitive.List, { className: "flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto scrollbar-none", children: tabs.map(({ id, label, icon: Icon, count }) => /* @__PURE__ */ jsxs(
8
+ TabsPrimitive.Trigger,
9
+ {
10
+ value: id,
11
+ className: "group relative flex shrink-0 items-center gap-2 whitespace-nowrap rounded-lg px-4 py-3 text-sm font-medium text-muted-foreground transition-colors duration-200 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 data-[state=active]:text-foreground after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:bg-primary after:opacity-0 data-[state=active]:after:opacity-100",
12
+ children: [
13
+ /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5" }),
14
+ label,
15
+ count ? /* @__PURE__ */ jsx("span", { className: "min-w-[18px] rounded-full bg-muted px-1.5 py-px text-center text-2xs font-bold tabular-nums text-muted-foreground group-data-[state=active]:bg-primary/15 group-data-[state=active]:text-primary", children: count }) : null
16
+ ]
17
+ },
18
+ id
19
+ )) }),
20
+ trailing
21
+ ] }),
22
+ children
23
+ ] });
24
+ }
25
+ export {
26
+ UnderlineTabs
27
+ };
28
+ //# sourceMappingURL=underline-tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/underline-tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport type { LucideIcon } from \"lucide-react\";\n\nexport interface UnderlineTab {\n id: string;\n label: string;\n icon: LucideIcon;\n count?: number;\n}\n\nexport interface UnderlineTabsProps {\n tabs: ReadonlyArray<UnderlineTab>;\n value: string;\n onValueChange: (id: string) => void;\n trailing?: ReactNode;\n children: ReactNode;\n}\n\nexport function UnderlineTabs({ tabs, value, onValueChange, trailing, children }: UnderlineTabsProps) {\n return (\n <TabsPrimitive.Root value={value} onValueChange={onValueChange}>\n <div className=\"sticky top-0 z-20 mt-4 flex items-center gap-2 bg-background/95 px-6 backdrop-blur-sm\">\n <TabsPrimitive.List className=\"flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto scrollbar-none\">\n {tabs.map(({ id, label, icon: Icon, count }) => (\n <TabsPrimitive.Trigger\n key={id}\n value={id}\n className=\"group relative flex shrink-0 items-center gap-2 whitespace-nowrap rounded-lg px-4 py-3 text-sm font-medium text-muted-foreground transition-colors duration-200 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 data-[state=active]:text-foreground after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:bg-primary after:opacity-0 data-[state=active]:after:opacity-100\"\n >\n <Icon className=\"h-3.5 w-3.5\" />\n {label}\n {count ? (\n <span className=\"min-w-[18px] rounded-full bg-muted px-1.5 py-px text-center text-2xs font-bold tabular-nums text-muted-foreground group-data-[state=active]:bg-primary/15 group-data-[state=active]:text-primary\">{count}</span>\n ) : null}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n {trailing}\n </div>\n {children}\n </TabsPrimitive.Root>\n );\n}\n"],"mappings":";AA2BY,SAKE,KALF;AAxBZ,YAAY,mBAAmB;AAkBxB,SAAS,cAAc,EAAE,MAAM,OAAO,eAAe,UAAU,SAAS,GAAuB;AACpG,SACE,qBAAC,cAAc,MAAd,EAAmB,OAAc,eAChC;AAAA,yBAAC,SAAI,WAAU,yFACb;AAAA,0BAAC,cAAc,MAAd,EAAmB,WAAU,2EAC3B,eAAK,IAAI,CAAC,EAAE,IAAI,OAAO,MAAM,MAAM,MAAM,MACxC;AAAA,QAAC,cAAc;AAAA,QAAd;AAAA,UAEC,OAAO;AAAA,UACP,WAAU;AAAA,UAEV;AAAA,gCAAC,QAAK,WAAU,eAAc;AAAA,YAC7B;AAAA,YACA,QACC,oBAAC,UAAK,WAAU,oMAAoM,iBAAM,IACxN;AAAA;AAAA;AAAA,QARC;AAAA,MASP,CACD,GACH;AAAA,MACC;AAAA,OACH;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
package/dist/index.cjs CHANGED
@@ -25,6 +25,7 @@ __export(index_exports, {
25
25
  AI_POLICIES: () => import_ip.AI_POLICIES,
26
26
  ASSET_ACCENTS: () => import_asset_accents.ASSET_ACCENTS,
27
27
  AccountLoading: () => import_page_skeletons.AccountLoading,
28
+ AccountPage: () => import_account_page.AccountPage,
28
29
  AccountSection: () => import_account_section.AccountSection,
29
30
  ActionButton: () => import_action_button.ActionButton,
30
31
  ActiveFilters: () => import_marketplace_filters.ActiveFilters,
@@ -415,6 +416,7 @@ __export(index_exports, {
415
416
  TransactionSuccess: () => import_transaction_success.TransactionSuccess,
416
417
  TransferCollectionOwnership: () => import_transfer_collection_ownership.TransferCollectionOwnership,
417
418
  TransferDialog: () => import_transfer_dialog.TransferDialog,
419
+ UnderlineTabs: () => import_underline_tabs.UnderlineTabs,
418
420
  UserFacingError: () => import_describe_error.UserFacingError,
419
421
  WalletRequired: () => import_wallet_required.WalletRequired,
420
422
  WrongNetworkError: () => import_wallet_error.WrongNetworkError,
@@ -570,6 +572,7 @@ __export(index_exports, {
570
572
  useOnOpen: () => import_use_on_open.useOnOpen,
571
573
  useOrder: () => import_use_orders.useOrder,
572
574
  useOrders: () => import_use_orders.useOrders,
575
+ useOwnedTokens: () => import_use_tokens.useOwnedTokens,
573
576
  usePendingProposalsForAsset: () => import_use_sponsorship.usePendingProposalsForAsset,
574
577
  usePlatformStats: () => import_use_platform_stats.usePlatformStats,
575
578
  usePopClaimStatus: () => import_use_pop.usePopClaimStatus,
@@ -764,6 +767,8 @@ var import_editions_page = require("./components/editions-page.js");
764
767
  var import_drops_page = require("./components/drops-page.js");
765
768
  var import_pop_my_events_page = require("./components/pop-my-events-page.js");
766
769
  var import_creator_page = require("./components/creator-page.js");
770
+ var import_account_page = require("./components/account-page.js");
771
+ var import_underline_tabs = require("./components/underline-tabs.js");
767
772
  var import_more_menu = require("./components/more-menu.js");
768
773
  var import_license_request_page = require("./components/license-request-page.js");
769
774
  var import_order_usd = require("./utils/order-usd.js");
@@ -917,6 +922,7 @@ var import_asset_accents = require("./utils/asset-accents.js");
917
922
  AI_POLICIES,
918
923
  ASSET_ACCENTS,
919
924
  AccountLoading,
925
+ AccountPage,
920
926
  AccountSection,
921
927
  ActionButton,
922
928
  ActiveFilters,
@@ -1307,6 +1313,7 @@ var import_asset_accents = require("./utils/asset-accents.js");
1307
1313
  TransactionSuccess,
1308
1314
  TransferCollectionOwnership,
1309
1315
  TransferDialog,
1316
+ UnderlineTabs,
1310
1317
  UserFacingError,
1311
1318
  WalletRequired,
1312
1319
  WrongNetworkError,
@@ -1462,6 +1469,7 @@ var import_asset_accents = require("./utils/asset-accents.js");
1462
1469
  useOnOpen,
1463
1470
  useOrder,
1464
1471
  useOrders,
1472
+ useOwnedTokens,
1465
1473
  usePendingProposalsForAsset,
1466
1474
  usePlatformStats,
1467
1475
  usePopClaimStatus,