+
{friends.map((friend, idx) => (
- }
name={friend.name}
desc={friend.desc}
/>
diff --git a/src/app/components/apps.tsx b/src/app/components/apps.tsx
index 71dc8ac..1a9a726 100644
--- a/src/app/components/apps.tsx
+++ b/src/app/components/apps.tsx
@@ -256,14 +256,18 @@ function FriendsApp() {
url={friend.realUrl || friend.url}
className="friend"
icon={
-
+ friend.img ? (
+
+ ) : (
+ "🫂"
+ )
}
name={friend.name}
desc={friend.desc}
diff --git a/src/app/data.ts b/src/app/data.ts
index 242dd52..db31f33 100644
--- a/src/app/data.ts
+++ b/src/app/data.ts
@@ -23,7 +23,12 @@ export interface Friend {
url: string;
/** The live site: the window's `www` button and the status check use this. */
realUrl: string;
- img: string;
+ /**
+ * Desktop-icon avatar. Optional: the web theme's friends section is
+ * text-only (no SVG avatars), and a friend without one falls back to the
+ * generic glyph on the desktop.
+ */
+ img?: string;
desc: string;
/** Render in an iframe in a desktop window. */
iframe: boolean;
@@ -266,6 +271,14 @@ export const friends: Friend[] = [
desc: "vlcak.me",
iframe: true,
},
+ {
+ name: "Danny Koťan",
+ // No X-Frame-Options / frame-ancestors, so it frames directly.
+ url: "https://k0t4tkos-portfolio.com/",
+ realUrl: "https://k0t4tkos-portfolio.com/",
+ desc: "k0t4tkos-portfolio.com",
+ iframe: true,
+ },
];
export const WALLPAPER = "/wallpaper.jpg";
diff --git a/src/app/web.css b/src/app/web.css
index 54fdf36..466b4d3 100644
--- a/src/app/web.css
+++ b/src/app/web.css
@@ -571,10 +571,18 @@ html[data-theme="web"] body {
}
.service-button.friend .service-text {
align-items: center;
+ width: 100%;
+ /* Leave room for the corner status dot so names don't run under it. */
+ padding-inline: 10px;
+}
+/* Friend cards are text-only now, so let long names wrap instead of running
+ under the corner status dot. */
+.service-button.friend .service-name {
+ white-space: normal;
}
.service-button.friend .service-status-dot {
- top: 14px;
- right: 14px;
+ top: 12px;
+ right: 12px;
left: auto;
width: 11px;
height: 11px;
@@ -1128,6 +1136,10 @@ html[data-theme="web"][data-scheme="dark"] .heatmap-legend-cell[data-level="4"]
.services-buttons.services-main {
grid-template-columns: 1fr;
}
+ /* Friends are text-only cards now, so they read fine as a 2x2 grid. */
+ .services-buttons.friends-grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
.social-buttons {
grid-template-columns: 1fr 1fr;
}