@medialane/ui 0.121.0 → 0.122.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.
@@ -36,11 +36,6 @@ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_link = __toESM(require("next/link"), 1);
37
37
  var import_lucide_react = require("lucide-react");
38
38
  var import_cn = require("../utils/cn.js");
39
- const SIZE_SPAN = {
40
- default: "",
41
- wide: "sm:col-span-2",
42
- large: "sm:col-span-2 sm:row-span-2"
43
- };
44
39
  function PortfolioBentoTile({
45
40
  title,
46
41
  href,
@@ -52,8 +47,9 @@ function PortfolioBentoTile({
52
47
  "section",
53
48
  {
54
49
  className: (0, import_cn.cn)(
55
- "rounded-2xl bg-foreground/[0.04] min-w-0 flex flex-col transition-colors hover:bg-foreground/[0.07]",
56
- SIZE_SPAN[size],
50
+ "rounded-2xl bg-foreground/[0.04] min-w-0 transition-colors hover:bg-foreground/[0.07]",
51
+ "mb-4 break-inside-avoid",
52
+ size === "wide" && "[column-span:all]",
57
53
  className
58
54
  ),
59
55
  children: [
@@ -71,7 +67,7 @@ function PortfolioBentoTile({
71
67
  }
72
68
  )
73
69
  ] }),
74
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "px-4 pb-4 flex-1 min-h-0", children })
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "px-4 pb-4", children })
75
71
  ]
76
72
  }
77
73
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n\n title: string;\n\n href: string;\n\n /** Cell footprint in the bento-masonry grid (see PortfolioOverview):\n * \"default\" = 1x1, \"wide\" = 2x1 (list-like content), \"large\" = 2x2 (the\n * hero tile the grid is sized so exactly one \"large\" tile per screen\n * packs edge-to-edge with the rest, no gaps). */\n size?: \"default\" | \"wide\" | \"large\";\n children: React.ReactNode;\n className?: string;\n}\n\nconst SIZE_SPAN: Record<NonNullable<PortfolioBentoTileProps[\"size\"]>, string> = {\n default: \"\",\n wide: \"sm:col-span-2\",\n large: \"sm:col-span-2 sm:row-span-2\",\n};\n\nexport function PortfolioBentoTile({\n title,\n href,\n size = \"default\",\n children,\n className,\n}: PortfolioBentoTileProps) {\n return (\n <section\n className={cn(\n \"rounded-2xl bg-foreground/[0.04] min-w-0 flex flex-col transition-colors hover:bg-foreground/[0.07]\",\n SIZE_SPAN[size],\n className,\n )}\n >\n <div className=\"flex items-center justify-between gap-3 px-4 pt-4 pb-3\">\n <h2 className=\"text-sm font-black text-foreground tracking-tight\">\n {title}\n </h2>\n <Link\n href={href}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n See all\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"px-4 pb-4 flex-1 min-h-0\">{children}</div>\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CQ;AAzCR,kBAAiB;AACjB,0BAA2B;AAC3B,gBAAmB;AAiBnB,MAAM,YAA0E;AAAA,EAC9E,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AACT;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA4B;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA,UAAU,IAAI;AAAA,QACd;AAAA,MACF;AAAA,MAEA;AAAA,qDAAC,SAAI,WAAU,0DACb;AAAA,sDAAC,QAAG,WAAU,qDACX,iBACH;AAAA,UACA;AAAA,YAAC,YAAAA;AAAA,YAAA;AAAA,cACC;AAAA,cACA,WAAU;AAAA,cACX;AAAA;AAAA,gBAEC,4CAAC,kCAAW,WAAU,WAAU;AAAA;AAAA;AAAA,UAClC;AAAA,WACF;AAAA,QACA,4CAAC,SAAI,WAAU,4BAA4B,UAAS;AAAA;AAAA;AAAA,EACtD;AAEJ;","names":["Link"]}
1
+ {"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n\n title: string;\n\n href: string;\n\n /** \"default\" flows into whichever column is currently shortest (true\n * masonry, via PortfolioOverview's CSS multi-column container) each\n * tile keeps its own natural height, nothing stretches to match a\n * sibling. \"wide\" breaks out to full width instead (list-like content\n * such as Activity, which reads better edge-to-edge than column-width). */\n size?: \"default\" | \"wide\";\n children: React.ReactNode;\n className?: string;\n}\n\nexport function PortfolioBentoTile({\n title,\n href,\n size = \"default\",\n children,\n className,\n}: PortfolioBentoTileProps) {\n return (\n <section\n className={cn(\n \"rounded-2xl bg-foreground/[0.04] min-w-0 transition-colors hover:bg-foreground/[0.07]\",\n \"mb-4 break-inside-avoid\",\n size === \"wide\" && \"[column-span:all]\",\n className,\n )}\n >\n <div className=\"flex items-center justify-between gap-3 px-4 pt-4 pb-3\">\n <h2 className=\"text-sm font-black text-foreground tracking-tight\">\n {title}\n </h2>\n <Link\n href={href}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n See all\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"px-4 pb-4\">{children}</div>\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCQ;AArCR,kBAAiB;AACjB,0BAA2B;AAC3B,gBAAmB;AAkBZ,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA4B;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAS,UAAU;AAAA,QACnB;AAAA,MACF;AAAA,MAEA;AAAA,qDAAC,SAAI,WAAU,0DACb;AAAA,sDAAC,QAAG,WAAU,qDACX,iBACH;AAAA,UACA;AAAA,YAAC,YAAAA;AAAA,YAAA;AAAA,cACC;AAAA,cACA,WAAU;AAAA,cACX;AAAA;AAAA,gBAEC,4CAAC,kCAAW,WAAU,WAAU;AAAA;AAAA;AAAA,UAClC;AAAA,WACF;AAAA,QACA,4CAAC,SAAI,WAAU,aAAa,UAAS;AAAA;AAAA;AAAA,EACvC;AAEJ;","names":["Link"]}
@@ -3,11 +3,12 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  interface PortfolioBentoTileProps {
4
4
  title: string;
5
5
  href: string;
6
- /** Cell footprint in the bento-masonry grid (see PortfolioOverview):
7
- * "default" = 1x1, "wide" = 2x1 (list-like content), "large" = 2x2 (the
8
- * hero tile the grid is sized so exactly one "large" tile per screen
9
- * packs edge-to-edge with the rest, no gaps). */
10
- size?: "default" | "wide" | "large";
6
+ /** "default" flows into whichever column is currently shortest (true
7
+ * masonry, via PortfolioOverview's CSS multi-column container) each
8
+ * tile keeps its own natural height, nothing stretches to match a
9
+ * sibling. "wide" breaks out to full width instead (list-like content
10
+ * such as Activity, which reads better edge-to-edge than column-width). */
11
+ size?: "default" | "wide";
11
12
  children: React.ReactNode;
12
13
  className?: string;
13
14
  }
@@ -3,11 +3,12 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  interface PortfolioBentoTileProps {
4
4
  title: string;
5
5
  href: string;
6
- /** Cell footprint in the bento-masonry grid (see PortfolioOverview):
7
- * "default" = 1x1, "wide" = 2x1 (list-like content), "large" = 2x2 (the
8
- * hero tile the grid is sized so exactly one "large" tile per screen
9
- * packs edge-to-edge with the rest, no gaps). */
10
- size?: "default" | "wide" | "large";
6
+ /** "default" flows into whichever column is currently shortest (true
7
+ * masonry, via PortfolioOverview's CSS multi-column container) each
8
+ * tile keeps its own natural height, nothing stretches to match a
9
+ * sibling. "wide" breaks out to full width instead (list-like content
10
+ * such as Activity, which reads better edge-to-edge than column-width). */
11
+ size?: "default" | "wide";
11
12
  children: React.ReactNode;
12
13
  className?: string;
13
14
  }
@@ -3,11 +3,6 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import Link from "next/link";
4
4
  import { ArrowRight } from "lucide-react";
5
5
  import { cn } from "../utils/cn.js";
6
- const SIZE_SPAN = {
7
- default: "",
8
- wide: "sm:col-span-2",
9
- large: "sm:col-span-2 sm:row-span-2"
10
- };
11
6
  function PortfolioBentoTile({
12
7
  title,
13
8
  href,
@@ -19,8 +14,9 @@ function PortfolioBentoTile({
19
14
  "section",
20
15
  {
21
16
  className: cn(
22
- "rounded-2xl bg-foreground/[0.04] min-w-0 flex flex-col transition-colors hover:bg-foreground/[0.07]",
23
- SIZE_SPAN[size],
17
+ "rounded-2xl bg-foreground/[0.04] min-w-0 transition-colors hover:bg-foreground/[0.07]",
18
+ "mb-4 break-inside-avoid",
19
+ size === "wide" && "[column-span:all]",
24
20
  className
25
21
  ),
26
22
  children: [
@@ -38,7 +34,7 @@ function PortfolioBentoTile({
38
34
  }
39
35
  )
40
36
  ] }),
41
- /* @__PURE__ */ jsx("div", { className: "px-4 pb-4 flex-1 min-h-0", children })
37
+ /* @__PURE__ */ jsx("div", { className: "px-4 pb-4", children })
42
38
  ]
43
39
  }
44
40
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n\n title: string;\n\n href: string;\n\n /** Cell footprint in the bento-masonry grid (see PortfolioOverview):\n * \"default\" = 1x1, \"wide\" = 2x1 (list-like content), \"large\" = 2x2 (the\n * hero tile the grid is sized so exactly one \"large\" tile per screen\n * packs edge-to-edge with the rest, no gaps). */\n size?: \"default\" | \"wide\" | \"large\";\n children: React.ReactNode;\n className?: string;\n}\n\nconst SIZE_SPAN: Record<NonNullable<PortfolioBentoTileProps[\"size\"]>, string> = {\n default: \"\",\n wide: \"sm:col-span-2\",\n large: \"sm:col-span-2 sm:row-span-2\",\n};\n\nexport function PortfolioBentoTile({\n title,\n href,\n size = \"default\",\n children,\n className,\n}: PortfolioBentoTileProps) {\n return (\n <section\n className={cn(\n \"rounded-2xl bg-foreground/[0.04] min-w-0 flex flex-col transition-colors hover:bg-foreground/[0.07]\",\n SIZE_SPAN[size],\n className,\n )}\n >\n <div className=\"flex items-center justify-between gap-3 px-4 pt-4 pb-3\">\n <h2 className=\"text-sm font-black text-foreground tracking-tight\">\n {title}\n </h2>\n <Link\n href={href}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n See all\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"px-4 pb-4 flex-1 min-h-0\">{children}</div>\n </section>\n );\n}\n"],"mappings":";AA2CQ,cAGA,YAHA;AAzCR,OAAO,UAAU;AACjB,SAAS,kBAAkB;AAC3B,SAAS,UAAU;AAiBnB,MAAM,YAA0E;AAAA,EAC9E,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AACT;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA4B;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,UAAU,IAAI;AAAA,QACd;AAAA,MACF;AAAA,MAEA;AAAA,6BAAC,SAAI,WAAU,0DACb;AAAA,8BAAC,QAAG,WAAU,qDACX,iBACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,WAAU;AAAA,cACX;AAAA;AAAA,gBAEC,oBAAC,cAAW,WAAU,WAAU;AAAA;AAAA;AAAA,UAClC;AAAA,WACF;AAAA,QACA,oBAAC,SAAI,WAAU,4BAA4B,UAAS;AAAA;AAAA;AAAA,EACtD;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n\n title: string;\n\n href: string;\n\n /** \"default\" flows into whichever column is currently shortest (true\n * masonry, via PortfolioOverview's CSS multi-column container) each\n * tile keeps its own natural height, nothing stretches to match a\n * sibling. \"wide\" breaks out to full width instead (list-like content\n * such as Activity, which reads better edge-to-edge than column-width). */\n size?: \"default\" | \"wide\";\n children: React.ReactNode;\n className?: string;\n}\n\nexport function PortfolioBentoTile({\n title,\n href,\n size = \"default\",\n children,\n className,\n}: PortfolioBentoTileProps) {\n return (\n <section\n className={cn(\n \"rounded-2xl bg-foreground/[0.04] min-w-0 transition-colors hover:bg-foreground/[0.07]\",\n \"mb-4 break-inside-avoid\",\n size === \"wide\" && \"[column-span:all]\",\n className,\n )}\n >\n <div className=\"flex items-center justify-between gap-3 px-4 pt-4 pb-3\">\n <h2 className=\"text-sm font-black text-foreground tracking-tight\">\n {title}\n </h2>\n <Link\n href={href}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n See all\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"px-4 pb-4\">{children}</div>\n </section>\n );\n}\n"],"mappings":";AAuCQ,cAGA,YAHA;AArCR,OAAO,UAAU;AACjB,SAAS,kBAAkB;AAC3B,SAAS,UAAU;AAkBZ,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA4B;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAS,UAAU;AAAA,QACnB;AAAA,MACF;AAAA,MAEA;AAAA,6BAAC,SAAI,WAAU,0DACb;AAAA,8BAAC,QAAG,WAAU,qDACX,iBACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,WAAU;AAAA,cACX;AAAA;AAAA,gBAEC,oBAAC,cAAW,WAAU,WAAU;AAAA;AAAA;AAAA,UAClC;AAAA,WACF;AAAA,QACA,oBAAC,SAAI,WAAU,aAAa,UAAS;AAAA;AAAA;AAAA,EACvC;AAEJ;","names":[]}
@@ -39,12 +39,13 @@ function PortfolioOverview({
39
39
  "div",
40
40
  {
41
41
  className: (0, import_cn.cn)(
42
- // Bento-masonry: a fixed 3-column grid (not auto-fit) so each
43
- // tile's declared col/row span composes into a gapless pack via
44
- // `dense` auto-flow auto-fit's variable column count can't
45
- // support that. Row height is fixed so a "large" (2x2) tile lines
46
- // up exactly with two stacked "default" (1x1) tiles beside it.
47
- "grid gap-4 grid-flow-dense auto-rows-[minmax(220px,auto)] grid-cols-1 sm:grid-cols-3",
42
+ // True masonry: a CSS multi-column container. Each tile keeps its
43
+ // own natural height and flows into whichever column is currently
44
+ // shortestunlike a grid, nothing stretches to match a taller
45
+ // sibling in the same row, which is what real (unevenly-sized)
46
+ // portfolio content needs. "wide" tiles opt out via column-span:
47
+ // all (set on PortfolioBentoTile itself, not here).
48
+ "columns-1 sm:columns-2 lg:columns-3 gap-4",
48
49
  className
49
50
  ),
50
51
  children: populatedTiles.map((tile) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\n\nexport interface PortfolioBentoTileConfig {\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n\n isEmpty?: boolean;\n content: React.ReactNode;\n}\n\nexport interface PortfolioOverviewProps {\n tiles: PortfolioBentoTileConfig[];\n\n isEmpty?: boolean;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\nexport function PortfolioOverview({\n tiles,\n isEmpty,\n emptyState,\n className,\n}: PortfolioOverviewProps) {\n if (isEmpty) {\n return <div className={className}>{emptyState}</div>;\n }\n\n const populatedTiles = tiles.filter((t) => !t.isEmpty);\n\n return (\n <div\n className={cn(\n // Bento-masonry: a fixed 3-column grid (not auto-fit) so each\n // tile's declared col/row span composes into a gapless pack via\n // `dense` auto-flow auto-fit's variable column count can't\n // support that. Row height is fixed so a \"large\" (2x2) tile lines\n // up exactly with two stacked \"default\" (1x1) tiles beside it.\n \"grid gap-4 grid-flow-dense auto-rows-[minmax(220px,auto)] grid-cols-1 sm:grid-cols-3\",\n className,\n )}\n >\n {populatedTiles.map((tile) => (\n <PortfolioBentoTile\n key={tile.key}\n title={tile.title}\n href={tile.href}\n size={tile.size}\n >\n {tile.content}\n </PortfolioBentoTile>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BW;AA5BX,gBAAmB;AACnB,kCAAiE;AAoB1D,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,MAAI,SAAS;AACX,WAAO,4CAAC,SAAI,WAAuB,sBAAW;AAAA,EAChD;AAEA,QAAM,iBAAiB,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAErD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,yBAAe,IAAI,CAAC,SACnB;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,UAEV,eAAK;AAAA;AAAA,QALD,KAAK;AAAA,MAMZ,CACD;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\n\nexport interface PortfolioBentoTileConfig {\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n\n isEmpty?: boolean;\n content: React.ReactNode;\n}\n\nexport interface PortfolioOverviewProps {\n tiles: PortfolioBentoTileConfig[];\n\n isEmpty?: boolean;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\nexport function PortfolioOverview({\n tiles,\n isEmpty,\n emptyState,\n className,\n}: PortfolioOverviewProps) {\n if (isEmpty) {\n return <div className={className}>{emptyState}</div>;\n }\n\n const populatedTiles = tiles.filter((t) => !t.isEmpty);\n\n return (\n <div\n className={cn(\n // True masonry: a CSS multi-column container. Each tile keeps its\n // own natural height and flows into whichever column is currently\n // shortestunlike a grid, nothing stretches to match a taller\n // sibling in the same row, which is what real (unevenly-sized)\n // portfolio content needs. \"wide\" tiles opt out via column-span:\n // all (set on PortfolioBentoTile itself, not here).\n \"columns-1 sm:columns-2 lg:columns-3 gap-4\",\n className,\n )}\n >\n {populatedTiles.map((tile) => (\n <PortfolioBentoTile\n key={tile.key}\n title={tile.title}\n href={tile.href}\n size={tile.size}\n >\n {tile.content}\n </PortfolioBentoTile>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BW;AA5BX,gBAAmB;AACnB,kCAAiE;AAoB1D,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,MAAI,SAAS;AACX,WAAO,4CAAC,SAAI,WAAuB,sBAAW;AAAA,EAChD;AAEA,QAAM,iBAAiB,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAErD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,yBAAe,IAAI,CAAC,SACnB;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,UAEV,eAAK;AAAA;AAAA,QALD,KAAK;AAAA,MAMZ,CACD;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -16,12 +16,13 @@ function PortfolioOverview({
16
16
  "div",
17
17
  {
18
18
  className: cn(
19
- // Bento-masonry: a fixed 3-column grid (not auto-fit) so each
20
- // tile's declared col/row span composes into a gapless pack via
21
- // `dense` auto-flow auto-fit's variable column count can't
22
- // support that. Row height is fixed so a "large" (2x2) tile lines
23
- // up exactly with two stacked "default" (1x1) tiles beside it.
24
- "grid gap-4 grid-flow-dense auto-rows-[minmax(220px,auto)] grid-cols-1 sm:grid-cols-3",
19
+ // True masonry: a CSS multi-column container. Each tile keeps its
20
+ // own natural height and flows into whichever column is currently
21
+ // shortestunlike a grid, nothing stretches to match a taller
22
+ // sibling in the same row, which is what real (unevenly-sized)
23
+ // portfolio content needs. "wide" tiles opt out via column-span:
24
+ // all (set on PortfolioBentoTile itself, not here).
25
+ "columns-1 sm:columns-2 lg:columns-3 gap-4",
25
26
  className
26
27
  ),
27
28
  children: populatedTiles.map((tile) => /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\n\nexport interface PortfolioBentoTileConfig {\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n\n isEmpty?: boolean;\n content: React.ReactNode;\n}\n\nexport interface PortfolioOverviewProps {\n tiles: PortfolioBentoTileConfig[];\n\n isEmpty?: boolean;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\nexport function PortfolioOverview({\n tiles,\n isEmpty,\n emptyState,\n className,\n}: PortfolioOverviewProps) {\n if (isEmpty) {\n return <div className={className}>{emptyState}</div>;\n }\n\n const populatedTiles = tiles.filter((t) => !t.isEmpty);\n\n return (\n <div\n className={cn(\n // Bento-masonry: a fixed 3-column grid (not auto-fit) so each\n // tile's declared col/row span composes into a gapless pack via\n // `dense` auto-flow auto-fit's variable column count can't\n // support that. Row height is fixed so a \"large\" (2x2) tile lines\n // up exactly with two stacked \"default\" (1x1) tiles beside it.\n \"grid gap-4 grid-flow-dense auto-rows-[minmax(220px,auto)] grid-cols-1 sm:grid-cols-3\",\n className,\n )}\n >\n {populatedTiles.map((tile) => (\n <PortfolioBentoTile\n key={tile.key}\n title={tile.title}\n href={tile.href}\n size={tile.size}\n >\n {tile.content}\n </PortfolioBentoTile>\n ))}\n </div>\n );\n}\n"],"mappings":";AA8BW;AA5BX,SAAS,UAAU;AACnB,SAAS,0BAAwD;AAoB1D,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,MAAI,SAAS;AACX,WAAO,oBAAC,SAAI,WAAuB,sBAAW;AAAA,EAChD;AAEA,QAAM,iBAAiB,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAErD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,yBAAe,IAAI,CAAC,SACnB;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,UAEV,eAAK;AAAA;AAAA,QALD,KAAK;AAAA,MAMZ,CACD;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\n\nexport interface PortfolioBentoTileConfig {\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n\n isEmpty?: boolean;\n content: React.ReactNode;\n}\n\nexport interface PortfolioOverviewProps {\n tiles: PortfolioBentoTileConfig[];\n\n isEmpty?: boolean;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\nexport function PortfolioOverview({\n tiles,\n isEmpty,\n emptyState,\n className,\n}: PortfolioOverviewProps) {\n if (isEmpty) {\n return <div className={className}>{emptyState}</div>;\n }\n\n const populatedTiles = tiles.filter((t) => !t.isEmpty);\n\n return (\n <div\n className={cn(\n // True masonry: a CSS multi-column container. Each tile keeps its\n // own natural height and flows into whichever column is currently\n // shortestunlike a grid, nothing stretches to match a taller\n // sibling in the same row, which is what real (unevenly-sized)\n // portfolio content needs. \"wide\" tiles opt out via column-span:\n // all (set on PortfolioBentoTile itself, not here).\n \"columns-1 sm:columns-2 lg:columns-3 gap-4\",\n className,\n )}\n >\n {populatedTiles.map((tile) => (\n <PortfolioBentoTile\n key={tile.key}\n title={tile.title}\n href={tile.href}\n size={tile.size}\n >\n {tile.content}\n </PortfolioBentoTile>\n ))}\n </div>\n );\n}\n"],"mappings":";AA8BW;AA5BX,SAAS,UAAU;AACnB,SAAS,0BAAwD;AAoB1D,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,MAAI,SAAS;AACX,WAAO,oBAAC,SAAI,WAAuB,sBAAW;AAAA,EAChD;AAEA,QAAM,iBAAiB,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AAErD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,yBAAe,IAAI,CAAC,SACnB;AAAA,QAAC;AAAA;AAAA,UAEC,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,UAEV,eAAK;AAAA;AAAA,QALD,KAAK;AAAA,MAMZ,CACD;AAAA;AAAA,EACH;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.121.0",
3
+ "version": "0.122.0",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "sideEffects": false,