@medialane/ui 0.127.0 → 0.127.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,7 +36,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_lucide_react = require("lucide-react");
37
37
  var import_link = __toESM(require("next/link"), 1);
38
38
  var import_sdk = require("@medialane/sdk");
39
- const EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || "https://voyager.online";
39
+ const EXPLORER_URL = (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_EXPLORER_URL : void 0) || "https://voyager.online";
40
40
  function CreationRecord({ originalCreator, registeredAt }) {
41
41
  const creator = originalCreator ? (0, import_sdk.normalizeAddress)("STARKNET", originalCreator) : "";
42
42
  const date = new Date(registeredAt * 1e3);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/creation-record.tsx"],"sourcesContent":["\"use client\";\n\nimport { Award, ExternalLink } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { normalizeAddress } from \"@medialane/sdk\";\n\nconst EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || \"https://voyager.online\";\n\nexport interface CreationRecordProps {\n originalCreator: string;\n registeredAt: number;\n}\n\nexport function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps) {\n const creator = originalCreator ? normalizeAddress(\"STARKNET\", originalCreator) : \"\";\n const date = new Date(registeredAt * 1000);\n const formatted = date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"rounded-lg bg-amber-500/5 p-4\">\n <div className=\"flex items-center gap-2 mb-3\">\n <Award className=\"h-4 w-4 text-amber-500\" />\n <p className=\"text-sm font-semibold text-amber-500\">Creation Record</p>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">\n Immutable on-chain authorship record set at mint and stored permanently\n for legal evidence of creation (Berne Convention).\n </p>\n <dl className=\"space-y-2 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Original creator</dt>\n <dd className=\"tabular-nums\">\n <Link href={`/creator/${creator}`} className=\"hover:underline\">\n {creator.slice(0, 6)}…{creator.slice(-4)}\n </Link>\n </dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Registered at</dt>\n <dd>\n <a\n href={`${EXPLORER_URL}/contract/${creator}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline\"\n >\n {formatted}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n </dd>\n </div>\n </dl>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBM;AAtBN,0BAAoC;AACpC,kBAAiB;AACjB,iBAAiC;AAEjC,MAAM,eAAe,QAAQ,IAAI,4BAA4B;AAOtD,SAAS,eAAe,EAAE,iBAAiB,aAAa,GAAwB;AACrF,QAAM,UAAU,sBAAkB,6BAAiB,YAAY,eAAe,IAAI;AAClF,QAAM,OAAO,IAAI,KAAK,eAAe,GAAI;AACzC,QAAM,YAAY,KAAK,mBAAmB,QAAW;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AAED,SACE,6CAAC,SAAI,WAAU,iCACb;AAAA,iDAAC,SAAI,WAAU,gCACb;AAAA,kDAAC,6BAAM,WAAU,0BAAyB;AAAA,MAC1C,4CAAC,OAAE,WAAU,wCAAuC,6BAAe;AAAA,OACrE;AAAA,IACA,4CAAC,OAAE,WAAU,sCAAqC,wIAGlD;AAAA,IACA,6CAAC,QAAG,WAAU,qBACZ;AAAA,mDAAC,SAAI,WAAU,qCACb;AAAA,oDAAC,QAAG,WAAU,yBAAwB,8BAAgB;AAAA,QACtD,4CAAC,QAAG,WAAU,gBACZ,uDAAC,YAAAA,SAAA,EAAK,MAAM,YAAY,OAAO,IAAI,WAAU,mBAC1C;AAAA,kBAAQ,MAAM,GAAG,CAAC;AAAA,UAAE;AAAA,UAAE,QAAQ,MAAM,EAAE;AAAA,WACzC,GACF;AAAA,SACF;AAAA,MACA,6CAAC,SAAI,WAAU,qCACb;AAAA,oDAAC,QAAG,WAAU,yBAAwB,2BAAa;AAAA,QACnD,4CAAC,QACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,YAAY,aAAa,OAAO;AAAA,YACzC,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,cACD,4CAAC,oCAAa,WAAU,WAAU;AAAA;AAAA;AAAA,QACpC,GACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":["Link"]}
1
+ {"version":3,"sources":["../../src/components/creation-record.tsx"],"sourcesContent":["\"use client\";\n\nimport { Award, ExternalLink } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { normalizeAddress } from \"@medialane/sdk\";\n\nconst EXPLORER_URL =\n (typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_EXPLORER_URL : undefined) ||\n \"https://voyager.online\";\n\nexport interface CreationRecordProps {\n originalCreator: string;\n registeredAt: number;\n}\n\nexport function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps) {\n const creator = originalCreator ? normalizeAddress(\"STARKNET\", originalCreator) : \"\";\n const date = new Date(registeredAt * 1000);\n const formatted = date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"rounded-lg bg-amber-500/5 p-4\">\n <div className=\"flex items-center gap-2 mb-3\">\n <Award className=\"h-4 w-4 text-amber-500\" />\n <p className=\"text-sm font-semibold text-amber-500\">Creation Record</p>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">\n Immutable on-chain authorship record set at mint and stored permanently\n for legal evidence of creation (Berne Convention).\n </p>\n <dl className=\"space-y-2 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Original creator</dt>\n <dd className=\"tabular-nums\">\n <Link href={`/creator/${creator}`} className=\"hover:underline\">\n {creator.slice(0, 6)}…{creator.slice(-4)}\n </Link>\n </dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Registered at</dt>\n <dd>\n <a\n href={`${EXPLORER_URL}/contract/${creator}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline\"\n >\n {formatted}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n </dd>\n </div>\n </dl>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BM;AAxBN,0BAAoC;AACpC,kBAAiB;AACjB,iBAAiC;AAEjC,MAAM,gBACH,OAAO,YAAY,cAAc,QAAQ,IAAI,2BAA2B,WACzE;AAOK,SAAS,eAAe,EAAE,iBAAiB,aAAa,GAAwB;AACrF,QAAM,UAAU,sBAAkB,6BAAiB,YAAY,eAAe,IAAI;AAClF,QAAM,OAAO,IAAI,KAAK,eAAe,GAAI;AACzC,QAAM,YAAY,KAAK,mBAAmB,QAAW;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AAED,SACE,6CAAC,SAAI,WAAU,iCACb;AAAA,iDAAC,SAAI,WAAU,gCACb;AAAA,kDAAC,6BAAM,WAAU,0BAAyB;AAAA,MAC1C,4CAAC,OAAE,WAAU,wCAAuC,6BAAe;AAAA,OACrE;AAAA,IACA,4CAAC,OAAE,WAAU,sCAAqC,wIAGlD;AAAA,IACA,6CAAC,QAAG,WAAU,qBACZ;AAAA,mDAAC,SAAI,WAAU,qCACb;AAAA,oDAAC,QAAG,WAAU,yBAAwB,8BAAgB;AAAA,QACtD,4CAAC,QAAG,WAAU,gBACZ,uDAAC,YAAAA,SAAA,EAAK,MAAM,YAAY,OAAO,IAAI,WAAU,mBAC1C;AAAA,kBAAQ,MAAM,GAAG,CAAC;AAAA,UAAE;AAAA,UAAE,QAAQ,MAAM,EAAE;AAAA,WACzC,GACF;AAAA,SACF;AAAA,MACA,6CAAC,SAAI,WAAU,qCACb;AAAA,oDAAC,QAAG,WAAU,yBAAwB,2BAAa;AAAA,QACnD,4CAAC,QACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,YAAY,aAAa,OAAO;AAAA,YACzC,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,cACD,4CAAC,oCAAa,WAAU,WAAU;AAAA;AAAA;AAAA,QACpC,GACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":["Link"]}
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Award, ExternalLink } from "lucide-react";
4
4
  import Link from "next/link";
5
5
  import { normalizeAddress } from "@medialane/sdk";
6
- const EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || "https://voyager.online";
6
+ const EXPLORER_URL = (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_EXPLORER_URL : void 0) || "https://voyager.online";
7
7
  function CreationRecord({ originalCreator, registeredAt }) {
8
8
  const creator = originalCreator ? normalizeAddress("STARKNET", originalCreator) : "";
9
9
  const date = new Date(registeredAt * 1e3);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/creation-record.tsx"],"sourcesContent":["\"use client\";\n\nimport { Award, ExternalLink } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { normalizeAddress } from \"@medialane/sdk\";\n\nconst EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || \"https://voyager.online\";\n\nexport interface CreationRecordProps {\n originalCreator: string;\n registeredAt: number;\n}\n\nexport function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps) {\n const creator = originalCreator ? normalizeAddress(\"STARKNET\", originalCreator) : \"\";\n const date = new Date(registeredAt * 1000);\n const formatted = date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"rounded-lg bg-amber-500/5 p-4\">\n <div className=\"flex items-center gap-2 mb-3\">\n <Award className=\"h-4 w-4 text-amber-500\" />\n <p className=\"text-sm font-semibold text-amber-500\">Creation Record</p>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">\n Immutable on-chain authorship record set at mint and stored permanently\n for legal evidence of creation (Berne Convention).\n </p>\n <dl className=\"space-y-2 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Original creator</dt>\n <dd className=\"tabular-nums\">\n <Link href={`/creator/${creator}`} className=\"hover:underline\">\n {creator.slice(0, 6)}…{creator.slice(-4)}\n </Link>\n </dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Registered at</dt>\n <dd>\n <a\n href={`${EXPLORER_URL}/contract/${creator}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline\"\n >\n {formatted}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n </dd>\n </div>\n </dl>\n </div>\n );\n}\n"],"mappings":";AAwBM,SACE,KADF;AAtBN,SAAS,OAAO,oBAAoB;AACpC,OAAO,UAAU;AACjB,SAAS,wBAAwB;AAEjC,MAAM,eAAe,QAAQ,IAAI,4BAA4B;AAOtD,SAAS,eAAe,EAAE,iBAAiB,aAAa,GAAwB;AACrF,QAAM,UAAU,kBAAkB,iBAAiB,YAAY,eAAe,IAAI;AAClF,QAAM,OAAO,IAAI,KAAK,eAAe,GAAI;AACzC,QAAM,YAAY,KAAK,mBAAmB,QAAW;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AAED,SACE,qBAAC,SAAI,WAAU,iCACb;AAAA,yBAAC,SAAI,WAAU,gCACb;AAAA,0BAAC,SAAM,WAAU,0BAAyB;AAAA,MAC1C,oBAAC,OAAE,WAAU,wCAAuC,6BAAe;AAAA,OACrE;AAAA,IACA,oBAAC,OAAE,WAAU,sCAAqC,wIAGlD;AAAA,IACA,qBAAC,QAAG,WAAU,qBACZ;AAAA,2BAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAG,WAAU,yBAAwB,8BAAgB;AAAA,QACtD,oBAAC,QAAG,WAAU,gBACZ,+BAAC,QAAK,MAAM,YAAY,OAAO,IAAI,WAAU,mBAC1C;AAAA,kBAAQ,MAAM,GAAG,CAAC;AAAA,UAAE;AAAA,UAAE,QAAQ,MAAM,EAAE;AAAA,WACzC,GACF;AAAA,SACF;AAAA,MACA,qBAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAG,WAAU,yBAAwB,2BAAa;AAAA,QACnD,oBAAC,QACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,YAAY,aAAa,OAAO;AAAA,YACzC,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,cACD,oBAAC,gBAAa,WAAU,WAAU;AAAA;AAAA;AAAA,QACpC,GACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/creation-record.tsx"],"sourcesContent":["\"use client\";\n\nimport { Award, ExternalLink } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { normalizeAddress } from \"@medialane/sdk\";\n\nconst EXPLORER_URL =\n (typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_EXPLORER_URL : undefined) ||\n \"https://voyager.online\";\n\nexport interface CreationRecordProps {\n originalCreator: string;\n registeredAt: number;\n}\n\nexport function CreationRecord({ originalCreator, registeredAt }: CreationRecordProps) {\n const creator = originalCreator ? normalizeAddress(\"STARKNET\", originalCreator) : \"\";\n const date = new Date(registeredAt * 1000);\n const formatted = date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n\n return (\n <div className=\"rounded-lg bg-amber-500/5 p-4\">\n <div className=\"flex items-center gap-2 mb-3\">\n <Award className=\"h-4 w-4 text-amber-500\" />\n <p className=\"text-sm font-semibold text-amber-500\">Creation Record</p>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">\n Immutable on-chain authorship record set at mint and stored permanently\n for legal evidence of creation (Berne Convention).\n </p>\n <dl className=\"space-y-2 text-sm\">\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Original creator</dt>\n <dd className=\"tabular-nums\">\n <Link href={`/creator/${creator}`} className=\"hover:underline\">\n {creator.slice(0, 6)}…{creator.slice(-4)}\n </Link>\n </dd>\n </div>\n <div className=\"flex items-center justify-between\">\n <dt className=\"text-muted-foreground\">Registered at</dt>\n <dd>\n <a\n href={`${EXPLORER_URL}/contract/${creator}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline\"\n >\n {formatted}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n </dd>\n </div>\n </dl>\n </div>\n );\n}\n"],"mappings":";AA0BM,SACE,KADF;AAxBN,SAAS,OAAO,oBAAoB;AACpC,OAAO,UAAU;AACjB,SAAS,wBAAwB;AAEjC,MAAM,gBACH,OAAO,YAAY,cAAc,QAAQ,IAAI,2BAA2B,WACzE;AAOK,SAAS,eAAe,EAAE,iBAAiB,aAAa,GAAwB;AACrF,QAAM,UAAU,kBAAkB,iBAAiB,YAAY,eAAe,IAAI;AAClF,QAAM,OAAO,IAAI,KAAK,eAAe,GAAI;AACzC,QAAM,YAAY,KAAK,mBAAmB,QAAW;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AAED,SACE,qBAAC,SAAI,WAAU,iCACb;AAAA,yBAAC,SAAI,WAAU,gCACb;AAAA,0BAAC,SAAM,WAAU,0BAAyB;AAAA,MAC1C,oBAAC,OAAE,WAAU,wCAAuC,6BAAe;AAAA,OACrE;AAAA,IACA,oBAAC,OAAE,WAAU,sCAAqC,wIAGlD;AAAA,IACA,qBAAC,QAAG,WAAU,qBACZ;AAAA,2BAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAG,WAAU,yBAAwB,8BAAgB;AAAA,QACtD,oBAAC,QAAG,WAAU,gBACZ,+BAAC,QAAK,MAAM,YAAY,OAAO,IAAI,WAAU,mBAC1C;AAAA,kBAAQ,MAAM,GAAG,CAAC;AAAA,UAAE;AAAA,UAAE,QAAQ,MAAM,EAAE;AAAA,WACzC,GACF;AAAA,SACF;AAAA,MACA,qBAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAG,WAAU,yBAAwB,2BAAa;AAAA,QACnD,oBAAC,QACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,YAAY,aAAa,OAAO;AAAA,YACzC,QAAO;AAAA,YACP,KAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,cACD,oBAAC,gBAAa,WAAU,WAAU;AAAA;AAAA;AAAA,QACpC,GACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -31,7 +31,7 @@ var import_empty_or_error = require("./empty-or-error.js");
31
31
  var import_activity = require("../data/activity.js");
32
32
  var import_activity_row = require("./activity-row.js");
33
33
  var import_cn = require("../utils/cn.js");
34
- const EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || "https://voyager.online";
34
+ const EXPLORER_URL = (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_EXPLORER_URL : void 0) || "https://voyager.online";
35
35
  function PortfolioActivity({ getClient, address }) {
36
36
  const { activities, isLoading, error, mutate } = (0, import_use_activities.useActivitiesByAddress)(getClient, address);
37
37
  const [typeFilter, setTypeFilter] = (0, import_react.useState)("");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/portfolio-activity.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport { Activity } from \"lucide-react\";\nimport { assetHref } from \"@medialane/sdk\";\nimport { useActivitiesByAddress } from \"../utils/use-activities.js\";\nimport { EmptyOrError } from \"./empty-or-error.js\";\nimport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"../data/activity.js\";\nimport { ActivityRow } from \"./activity-row.js\";\nimport { cn } from \"../utils/cn.js\";\n\nconst EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || \"https://voyager.online\";\n\nexport interface PortfolioActivityProps {\n getClient: () => MedialaneClient;\n address: string | null;\n}\n\nexport function PortfolioActivity({ getClient, address }: PortfolioActivityProps) {\n const { activities, isLoading, error, mutate } = useActivitiesByAddress(getClient, address);\n const [typeFilter, setTypeFilter] = useState(\"\");\n\n const displayed = typeFilter\n ? activities.filter((a) => a.type === typeFilter)\n : activities;\n\n const typeCounts = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const a of activities) {\n counts[a.type] = (counts[a.type] ?? 0) + 1;\n }\n return counts;\n }, [activities]);\n\n return (\n <div className=\"space-y-4\">\n\n <div className=\"flex flex-wrap gap-2\">\n {TYPE_FILTERS.map((f) => {\n const typeConfig = f.value ? ACTIVITY_TYPE_CONFIG[f.value] : null;\n const Icon = typeConfig?.icon;\n const count = f.value ? typeCounts[f.value] : activities.length;\n const isActive = typeFilter === f.value;\n return (\n <button\n key={f.value}\n onClick={() => setTypeFilter(f.value)}\n className={cn(\n \"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-full transition-all font-medium\",\n isActive\n ? \"bg-primary text-primary-foreground shadow-sm\"\n : \"bg-muted text-muted-foreground hover:bg-muted/70 hover:text-foreground\"\n )}\n >\n {Icon && (\n <Icon\n className={cn(\n \"h-3 w-3\",\n isActive ? \"text-primary-foreground\" : typeConfig?.colorClass\n )}\n />\n )}\n {f.label}\n {!isLoading && count != null && count > 0 && (\n <span\n className={cn(\n \"text-[10px] font-bold tabular-nums\",\n isActive\n ? \"text-primary-foreground/70\"\n : \"text-muted-foreground/60\"\n )}\n >\n {count}\n </span>\n )}\n </button>\n );\n })}\n </div>\n\n <EmptyOrError\n isLoading={isLoading}\n error={error}\n isEmpty={displayed.length === 0}\n onRetry={mutate}\n emptyTitle={typeFilter ? `No ${typeFilter} events yet` : \"No activity yet\"}\n emptyDescription=\"Start by listing or buying an asset on the marketplace.\"\n emptyCta={{ label: \"Browse marketplace\", href: \"/marketplace\" }}\n emptyIcon={<Activity className=\"h-7 w-7 text-muted-foreground\" />}\n skeletonCount={8}\n >\n <div className=\"rounded-xl border border-border overflow-hidden divide-y divide-border/50\">\n {displayed.map((activity, i) => (\n <ActivityRow\n key={`${activity.txHash}-${activity.type}-${i}`}\n activity={activity}\n showActor={false}\n showExplorer\n explorerUrl={EXPLORER_URL}\n getAssetHref={(c, t) => assetHref(\"STARKNET\", c, t)}\n />\n ))}\n </div>\n </EmptyOrError>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6CY;AA3CZ,mBAAkC;AAElC,0BAAyB;AACzB,iBAA0B;AAC1B,4BAAuC;AACvC,4BAA6B;AAC7B,sBAAmD;AACnD,0BAA4B;AAC5B,gBAAmB;AAEnB,MAAM,eAAe,QAAQ,IAAI,4BAA4B;AAOtD,SAAS,kBAAkB,EAAE,WAAW,QAAQ,GAA2B;AAChF,QAAM,EAAE,YAAY,WAAW,OAAO,OAAO,QAAI,8CAAuB,WAAW,OAAO;AAC1F,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,EAAE;AAE/C,QAAM,YAAY,aACd,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU,IAC9C;AAEJ,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,UAAM,SAAiC,CAAC;AACxC,eAAW,KAAK,YAAY;AAC1B,aAAO,EAAE,IAAI,KAAK,OAAO,EAAE,IAAI,KAAK,KAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,6CAAC,SAAI,WAAU,aAEb;AAAA,gDAAC,SAAI,WAAU,wBACZ,uCAAa,IAAI,CAAC,MAAM;AACvB,YAAM,aAAa,EAAE,QAAQ,qCAAqB,EAAE,KAAK,IAAI;AAC7D,YAAM,OAAO,YAAY;AACzB,YAAM,QAAQ,EAAE,QAAQ,WAAW,EAAE,KAAK,IAAI,WAAW;AACzD,YAAM,WAAW,eAAe,EAAE;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,cAAc,EAAE,KAAK;AAAA,UACpC,eAAW;AAAA,YACT;AAAA,YACA,WACI,iDACA;AAAA,UACN;AAAA,UAEC;AAAA,oBACC;AAAA,cAAC;AAAA;AAAA,gBACC,eAAW;AAAA,kBACT;AAAA,kBACA,WAAW,4BAA4B,YAAY;AAAA,gBACrD;AAAA;AAAA,YACF;AAAA,YAED,EAAE;AAAA,YACF,CAAC,aAAa,SAAS,QAAQ,QAAQ,KACtC;AAAA,cAAC;AAAA;AAAA,gBACC,eAAW;AAAA,kBACT;AAAA,kBACA,WACI,+BACA;AAAA,gBACN;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA;AAAA;AAAA,QA5BG,EAAE;AAAA,MA8BT;AAAA,IAEJ,CAAC,GACH;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS,UAAU,WAAW;AAAA,QAC9B,SAAS;AAAA,QACT,YAAY,aAAa,MAAM,UAAU,gBAAgB;AAAA,QACzD,kBAAiB;AAAA,QACjB,UAAU,EAAE,OAAO,sBAAsB,MAAM,eAAe;AAAA,QAC9D,WAAW,4CAAC,gCAAS,WAAU,iCAAgC;AAAA,QAC/D,eAAe;AAAA,QAEf,sDAAC,SAAI,WAAU,6EACZ,oBAAU,IAAI,CAAC,UAAU,MACxB;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA,WAAW;AAAA,YACX,cAAY;AAAA,YACZ,aAAa;AAAA,YACb,cAAc,CAAC,GAAG,UAAM,sBAAU,YAAY,GAAG,CAAC;AAAA;AAAA,UAL7C,GAAG,SAAS,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC;AAAA,QAM/C,CACD,GACH;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/portfolio-activity.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport { Activity } from \"lucide-react\";\nimport { assetHref } from \"@medialane/sdk\";\nimport { useActivitiesByAddress } from \"../utils/use-activities.js\";\nimport { EmptyOrError } from \"./empty-or-error.js\";\nimport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"../data/activity.js\";\nimport { ActivityRow } from \"./activity-row.js\";\nimport { cn } from \"../utils/cn.js\";\n\nconst EXPLORER_URL =\n (typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_EXPLORER_URL : undefined) ||\n \"https://voyager.online\";\n\nexport interface PortfolioActivityProps {\n getClient: () => MedialaneClient;\n address: string | null;\n}\n\nexport function PortfolioActivity({ getClient, address }: PortfolioActivityProps) {\n const { activities, isLoading, error, mutate } = useActivitiesByAddress(getClient, address);\n const [typeFilter, setTypeFilter] = useState(\"\");\n\n const displayed = typeFilter\n ? activities.filter((a) => a.type === typeFilter)\n : activities;\n\n const typeCounts = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const a of activities) {\n counts[a.type] = (counts[a.type] ?? 0) + 1;\n }\n return counts;\n }, [activities]);\n\n return (\n <div className=\"space-y-4\">\n\n <div className=\"flex flex-wrap gap-2\">\n {TYPE_FILTERS.map((f) => {\n const typeConfig = f.value ? ACTIVITY_TYPE_CONFIG[f.value] : null;\n const Icon = typeConfig?.icon;\n const count = f.value ? typeCounts[f.value] : activities.length;\n const isActive = typeFilter === f.value;\n return (\n <button\n key={f.value}\n onClick={() => setTypeFilter(f.value)}\n className={cn(\n \"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-full transition-all font-medium\",\n isActive\n ? \"bg-primary text-primary-foreground shadow-sm\"\n : \"bg-muted text-muted-foreground hover:bg-muted/70 hover:text-foreground\"\n )}\n >\n {Icon && (\n <Icon\n className={cn(\n \"h-3 w-3\",\n isActive ? \"text-primary-foreground\" : typeConfig?.colorClass\n )}\n />\n )}\n {f.label}\n {!isLoading && count != null && count > 0 && (\n <span\n className={cn(\n \"text-[10px] font-bold tabular-nums\",\n isActive\n ? \"text-primary-foreground/70\"\n : \"text-muted-foreground/60\"\n )}\n >\n {count}\n </span>\n )}\n </button>\n );\n })}\n </div>\n\n <EmptyOrError\n isLoading={isLoading}\n error={error}\n isEmpty={displayed.length === 0}\n onRetry={mutate}\n emptyTitle={typeFilter ? `No ${typeFilter} events yet` : \"No activity yet\"}\n emptyDescription=\"Start by listing or buying an asset on the marketplace.\"\n emptyCta={{ label: \"Browse marketplace\", href: \"/marketplace\" }}\n emptyIcon={<Activity className=\"h-7 w-7 text-muted-foreground\" />}\n skeletonCount={8}\n >\n <div className=\"rounded-xl border border-border overflow-hidden divide-y divide-border/50\">\n {displayed.map((activity, i) => (\n <ActivityRow\n key={`${activity.txHash}-${activity.type}-${i}`}\n activity={activity}\n showActor={false}\n showExplorer\n explorerUrl={EXPLORER_URL}\n getAssetHref={(c, t) => assetHref(\"STARKNET\", c, t)}\n />\n ))}\n </div>\n </EmptyOrError>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+CY;AA7CZ,mBAAkC;AAElC,0BAAyB;AACzB,iBAA0B;AAC1B,4BAAuC;AACvC,4BAA6B;AAC7B,sBAAmD;AACnD,0BAA4B;AAC5B,gBAAmB;AAEnB,MAAM,gBACH,OAAO,YAAY,cAAc,QAAQ,IAAI,2BAA2B,WACzE;AAOK,SAAS,kBAAkB,EAAE,WAAW,QAAQ,GAA2B;AAChF,QAAM,EAAE,YAAY,WAAW,OAAO,OAAO,QAAI,8CAAuB,WAAW,OAAO;AAC1F,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,EAAE;AAE/C,QAAM,YAAY,aACd,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU,IAC9C;AAEJ,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,UAAM,SAAiC,CAAC;AACxC,eAAW,KAAK,YAAY;AAC1B,aAAO,EAAE,IAAI,KAAK,OAAO,EAAE,IAAI,KAAK,KAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,6CAAC,SAAI,WAAU,aAEb;AAAA,gDAAC,SAAI,WAAU,wBACZ,uCAAa,IAAI,CAAC,MAAM;AACvB,YAAM,aAAa,EAAE,QAAQ,qCAAqB,EAAE,KAAK,IAAI;AAC7D,YAAM,OAAO,YAAY;AACzB,YAAM,QAAQ,EAAE,QAAQ,WAAW,EAAE,KAAK,IAAI,WAAW;AACzD,YAAM,WAAW,eAAe,EAAE;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,cAAc,EAAE,KAAK;AAAA,UACpC,eAAW;AAAA,YACT;AAAA,YACA,WACI,iDACA;AAAA,UACN;AAAA,UAEC;AAAA,oBACC;AAAA,cAAC;AAAA;AAAA,gBACC,eAAW;AAAA,kBACT;AAAA,kBACA,WAAW,4BAA4B,YAAY;AAAA,gBACrD;AAAA;AAAA,YACF;AAAA,YAED,EAAE;AAAA,YACF,CAAC,aAAa,SAAS,QAAQ,QAAQ,KACtC;AAAA,cAAC;AAAA;AAAA,gBACC,eAAW;AAAA,kBACT;AAAA,kBACA,WACI,+BACA;AAAA,gBACN;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA;AAAA;AAAA,QA5BG,EAAE;AAAA,MA8BT;AAAA,IAEJ,CAAC,GACH;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS,UAAU,WAAW;AAAA,QAC9B,SAAS;AAAA,QACT,YAAY,aAAa,MAAM,UAAU,gBAAgB;AAAA,QACzD,kBAAiB;AAAA,QACjB,UAAU,EAAE,OAAO,sBAAsB,MAAM,eAAe;AAAA,QAC9D,WAAW,4CAAC,gCAAS,WAAU,iCAAgC;AAAA,QAC/D,eAAe;AAAA,QAEf,sDAAC,SAAI,WAAU,6EACZ,oBAAU,IAAI,CAAC,UAAU,MACxB;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA,WAAW;AAAA,YACX,cAAY;AAAA,YACZ,aAAa;AAAA,YACb,cAAc,CAAC,GAAG,UAAM,sBAAU,YAAY,GAAG,CAAC;AAAA;AAAA,UAL7C,GAAG,SAAS,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC;AAAA,QAM/C,CACD,GACH;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
@@ -8,7 +8,7 @@ import { EmptyOrError } from "./empty-or-error.js";
8
8
  import { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from "../data/activity.js";
9
9
  import { ActivityRow } from "./activity-row.js";
10
10
  import { cn } from "../utils/cn.js";
11
- const EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || "https://voyager.online";
11
+ const EXPLORER_URL = (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_EXPLORER_URL : void 0) || "https://voyager.online";
12
12
  function PortfolioActivity({ getClient, address }) {
13
13
  const { activities, isLoading, error, mutate } = useActivitiesByAddress(getClient, address);
14
14
  const [typeFilter, setTypeFilter] = useState("");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/portfolio-activity.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport { Activity } from \"lucide-react\";\nimport { assetHref } from \"@medialane/sdk\";\nimport { useActivitiesByAddress } from \"../utils/use-activities.js\";\nimport { EmptyOrError } from \"./empty-or-error.js\";\nimport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"../data/activity.js\";\nimport { ActivityRow } from \"./activity-row.js\";\nimport { cn } from \"../utils/cn.js\";\n\nconst EXPLORER_URL = process.env.NEXT_PUBLIC_EXPLORER_URL || \"https://voyager.online\";\n\nexport interface PortfolioActivityProps {\n getClient: () => MedialaneClient;\n address: string | null;\n}\n\nexport function PortfolioActivity({ getClient, address }: PortfolioActivityProps) {\n const { activities, isLoading, error, mutate } = useActivitiesByAddress(getClient, address);\n const [typeFilter, setTypeFilter] = useState(\"\");\n\n const displayed = typeFilter\n ? activities.filter((a) => a.type === typeFilter)\n : activities;\n\n const typeCounts = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const a of activities) {\n counts[a.type] = (counts[a.type] ?? 0) + 1;\n }\n return counts;\n }, [activities]);\n\n return (\n <div className=\"space-y-4\">\n\n <div className=\"flex flex-wrap gap-2\">\n {TYPE_FILTERS.map((f) => {\n const typeConfig = f.value ? ACTIVITY_TYPE_CONFIG[f.value] : null;\n const Icon = typeConfig?.icon;\n const count = f.value ? typeCounts[f.value] : activities.length;\n const isActive = typeFilter === f.value;\n return (\n <button\n key={f.value}\n onClick={() => setTypeFilter(f.value)}\n className={cn(\n \"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-full transition-all font-medium\",\n isActive\n ? \"bg-primary text-primary-foreground shadow-sm\"\n : \"bg-muted text-muted-foreground hover:bg-muted/70 hover:text-foreground\"\n )}\n >\n {Icon && (\n <Icon\n className={cn(\n \"h-3 w-3\",\n isActive ? \"text-primary-foreground\" : typeConfig?.colorClass\n )}\n />\n )}\n {f.label}\n {!isLoading && count != null && count > 0 && (\n <span\n className={cn(\n \"text-[10px] font-bold tabular-nums\",\n isActive\n ? \"text-primary-foreground/70\"\n : \"text-muted-foreground/60\"\n )}\n >\n {count}\n </span>\n )}\n </button>\n );\n })}\n </div>\n\n <EmptyOrError\n isLoading={isLoading}\n error={error}\n isEmpty={displayed.length === 0}\n onRetry={mutate}\n emptyTitle={typeFilter ? `No ${typeFilter} events yet` : \"No activity yet\"}\n emptyDescription=\"Start by listing or buying an asset on the marketplace.\"\n emptyCta={{ label: \"Browse marketplace\", href: \"/marketplace\" }}\n emptyIcon={<Activity className=\"h-7 w-7 text-muted-foreground\" />}\n skeletonCount={8}\n >\n <div className=\"rounded-xl border border-border overflow-hidden divide-y divide-border/50\">\n {displayed.map((activity, i) => (\n <ActivityRow\n key={`${activity.txHash}-${activity.type}-${i}`}\n activity={activity}\n showActor={false}\n showExplorer\n explorerUrl={EXPLORER_URL}\n getAssetHref={(c, t) => assetHref(\"STARKNET\", c, t)}\n />\n ))}\n </div>\n </EmptyOrError>\n </div>\n );\n}\n"],"mappings":";AA6CY,SAWI,KAXJ;AA3CZ,SAAS,UAAU,eAAe;AAElC,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,8BAA8B;AACvC,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB,oBAAoB;AACnD,SAAS,mBAAmB;AAC5B,SAAS,UAAU;AAEnB,MAAM,eAAe,QAAQ,IAAI,4BAA4B;AAOtD,SAAS,kBAAkB,EAAE,WAAW,QAAQ,GAA2B;AAChF,QAAM,EAAE,YAAY,WAAW,OAAO,OAAO,IAAI,uBAAuB,WAAW,OAAO;AAC1F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,EAAE;AAE/C,QAAM,YAAY,aACd,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU,IAC9C;AAEJ,QAAM,aAAa,QAAQ,MAAM;AAC/B,UAAM,SAAiC,CAAC;AACxC,eAAW,KAAK,YAAY;AAC1B,aAAO,EAAE,IAAI,KAAK,OAAO,EAAE,IAAI,KAAK,KAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,qBAAC,SAAI,WAAU,aAEb;AAAA,wBAAC,SAAI,WAAU,wBACZ,uBAAa,IAAI,CAAC,MAAM;AACvB,YAAM,aAAa,EAAE,QAAQ,qBAAqB,EAAE,KAAK,IAAI;AAC7D,YAAM,OAAO,YAAY;AACzB,YAAM,QAAQ,EAAE,QAAQ,WAAW,EAAE,KAAK,IAAI,WAAW;AACzD,YAAM,WAAW,eAAe,EAAE;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,cAAc,EAAE,KAAK;AAAA,UACpC,WAAW;AAAA,YACT;AAAA,YACA,WACI,iDACA;AAAA,UACN;AAAA,UAEC;AAAA,oBACC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,WAAW,4BAA4B,YAAY;AAAA,gBACrD;AAAA;AAAA,YACF;AAAA,YAED,EAAE;AAAA,YACF,CAAC,aAAa,SAAS,QAAQ,QAAQ,KACtC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,WACI,+BACA;AAAA,gBACN;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA;AAAA;AAAA,QA5BG,EAAE;AAAA,MA8BT;AAAA,IAEJ,CAAC,GACH;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS,UAAU,WAAW;AAAA,QAC9B,SAAS;AAAA,QACT,YAAY,aAAa,MAAM,UAAU,gBAAgB;AAAA,QACzD,kBAAiB;AAAA,QACjB,UAAU,EAAE,OAAO,sBAAsB,MAAM,eAAe;AAAA,QAC9D,WAAW,oBAAC,YAAS,WAAU,iCAAgC;AAAA,QAC/D,eAAe;AAAA,QAEf,8BAAC,SAAI,WAAU,6EACZ,oBAAU,IAAI,CAAC,UAAU,MACxB;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA,WAAW;AAAA,YACX,cAAY;AAAA,YACZ,aAAa;AAAA,YACb,cAAc,CAAC,GAAG,MAAM,UAAU,YAAY,GAAG,CAAC;AAAA;AAAA,UAL7C,GAAG,SAAS,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC;AAAA,QAM/C,CACD,GACH;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/portfolio-activity.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport { Activity } from \"lucide-react\";\nimport { assetHref } from \"@medialane/sdk\";\nimport { useActivitiesByAddress } from \"../utils/use-activities.js\";\nimport { EmptyOrError } from \"./empty-or-error.js\";\nimport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"../data/activity.js\";\nimport { ActivityRow } from \"./activity-row.js\";\nimport { cn } from \"../utils/cn.js\";\n\nconst EXPLORER_URL =\n (typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_EXPLORER_URL : undefined) ||\n \"https://voyager.online\";\n\nexport interface PortfolioActivityProps {\n getClient: () => MedialaneClient;\n address: string | null;\n}\n\nexport function PortfolioActivity({ getClient, address }: PortfolioActivityProps) {\n const { activities, isLoading, error, mutate } = useActivitiesByAddress(getClient, address);\n const [typeFilter, setTypeFilter] = useState(\"\");\n\n const displayed = typeFilter\n ? activities.filter((a) => a.type === typeFilter)\n : activities;\n\n const typeCounts = useMemo(() => {\n const counts: Record<string, number> = {};\n for (const a of activities) {\n counts[a.type] = (counts[a.type] ?? 0) + 1;\n }\n return counts;\n }, [activities]);\n\n return (\n <div className=\"space-y-4\">\n\n <div className=\"flex flex-wrap gap-2\">\n {TYPE_FILTERS.map((f) => {\n const typeConfig = f.value ? ACTIVITY_TYPE_CONFIG[f.value] : null;\n const Icon = typeConfig?.icon;\n const count = f.value ? typeCounts[f.value] : activities.length;\n const isActive = typeFilter === f.value;\n return (\n <button\n key={f.value}\n onClick={() => setTypeFilter(f.value)}\n className={cn(\n \"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-full transition-all font-medium\",\n isActive\n ? \"bg-primary text-primary-foreground shadow-sm\"\n : \"bg-muted text-muted-foreground hover:bg-muted/70 hover:text-foreground\"\n )}\n >\n {Icon && (\n <Icon\n className={cn(\n \"h-3 w-3\",\n isActive ? \"text-primary-foreground\" : typeConfig?.colorClass\n )}\n />\n )}\n {f.label}\n {!isLoading && count != null && count > 0 && (\n <span\n className={cn(\n \"text-[10px] font-bold tabular-nums\",\n isActive\n ? \"text-primary-foreground/70\"\n : \"text-muted-foreground/60\"\n )}\n >\n {count}\n </span>\n )}\n </button>\n );\n })}\n </div>\n\n <EmptyOrError\n isLoading={isLoading}\n error={error}\n isEmpty={displayed.length === 0}\n onRetry={mutate}\n emptyTitle={typeFilter ? `No ${typeFilter} events yet` : \"No activity yet\"}\n emptyDescription=\"Start by listing or buying an asset on the marketplace.\"\n emptyCta={{ label: \"Browse marketplace\", href: \"/marketplace\" }}\n emptyIcon={<Activity className=\"h-7 w-7 text-muted-foreground\" />}\n skeletonCount={8}\n >\n <div className=\"rounded-xl border border-border overflow-hidden divide-y divide-border/50\">\n {displayed.map((activity, i) => (\n <ActivityRow\n key={`${activity.txHash}-${activity.type}-${i}`}\n activity={activity}\n showActor={false}\n showExplorer\n explorerUrl={EXPLORER_URL}\n getAssetHref={(c, t) => assetHref(\"STARKNET\", c, t)}\n />\n ))}\n </div>\n </EmptyOrError>\n </div>\n );\n}\n"],"mappings":";AA+CY,SAWI,KAXJ;AA7CZ,SAAS,UAAU,eAAe;AAElC,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,8BAA8B;AACvC,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB,oBAAoB;AACnD,SAAS,mBAAmB;AAC5B,SAAS,UAAU;AAEnB,MAAM,gBACH,OAAO,YAAY,cAAc,QAAQ,IAAI,2BAA2B,WACzE;AAOK,SAAS,kBAAkB,EAAE,WAAW,QAAQ,GAA2B;AAChF,QAAM,EAAE,YAAY,WAAW,OAAO,OAAO,IAAI,uBAAuB,WAAW,OAAO;AAC1F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,EAAE;AAE/C,QAAM,YAAY,aACd,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU,IAC9C;AAEJ,QAAM,aAAa,QAAQ,MAAM;AAC/B,UAAM,SAAiC,CAAC;AACxC,eAAW,KAAK,YAAY;AAC1B,aAAO,EAAE,IAAI,KAAK,OAAO,EAAE,IAAI,KAAK,KAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,qBAAC,SAAI,WAAU,aAEb;AAAA,wBAAC,SAAI,WAAU,wBACZ,uBAAa,IAAI,CAAC,MAAM;AACvB,YAAM,aAAa,EAAE,QAAQ,qBAAqB,EAAE,KAAK,IAAI;AAC7D,YAAM,OAAO,YAAY;AACzB,YAAM,QAAQ,EAAE,QAAQ,WAAW,EAAE,KAAK,IAAI,WAAW;AACzD,YAAM,WAAW,eAAe,EAAE;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM,cAAc,EAAE,KAAK;AAAA,UACpC,WAAW;AAAA,YACT;AAAA,YACA,WACI,iDACA;AAAA,UACN;AAAA,UAEC;AAAA,oBACC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,WAAW,4BAA4B,YAAY;AAAA,gBACrD;AAAA;AAAA,YACF;AAAA,YAED,EAAE;AAAA,YACF,CAAC,aAAa,SAAS,QAAQ,QAAQ,KACtC;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,WACI,+BACA;AAAA,gBACN;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA;AAAA;AAAA,QA5BG,EAAE;AAAA,MA8BT;AAAA,IAEJ,CAAC,GACH;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS,UAAU,WAAW;AAAA,QAC9B,SAAS;AAAA,QACT,YAAY,aAAa,MAAM,UAAU,gBAAgB;AAAA,QACzD,kBAAiB;AAAA,QACjB,UAAU,EAAE,OAAO,sBAAsB,MAAM,eAAe;AAAA,QAC9D,WAAW,oBAAC,YAAS,WAAU,iCAAgC;AAAA,QAC/D,eAAe;AAAA,QAEf,8BAAC,SAAI,WAAU,6EACZ,oBAAU,IAAI,CAAC,UAAU,MACxB;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA,WAAW;AAAA,YACX,cAAY;AAAA,YACZ,aAAa;AAAA,YACb,cAAc,CAAC,GAAG,MAAM,UAAU,YAAY,GAAG,CAAC;AAAA;AAAA,UAL7C,GAAG,SAAS,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC;AAAA,QAM/C,CACD,GACH;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.127.0",
3
+ "version": "0.127.1",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "sideEffects": false,