+
+
+ {
+ appliedCustomEmoji(
+ e,
+ toot().account.displayName,
+ toot().account.emojis,
+ );
+ }}
+ >
+
+ @{toot().account.username}@{new URL(toot().account.url).hostname}
+
+
+
+ {
+ appliedCustomEmoji(e, toot().content, toot().emojis);
+ }}
+ class={[tootStyle.compactTootContent].join(" ")}
+ >
+
+
+
+
+ );
+};
+
+export default CompactToot;
diff --git a/src/timelines/RegularToot.css b/src/timelines/RegularToot.css
deleted file mode 100644
index d7a50c3..0000000
--- a/src/timelines/RegularToot.css
+++ /dev/null
@@ -1,78 +0,0 @@
-.RegularToot {
- --card-pad: 16px;
- --card-gut: 16px;
- --toot-avatar-size: 40px;
- margin-block: 0;
- position: relative;
- contain: layout style;
- cursor: pointer;
-
-
- transition:
- margin-top 60ms var(--tutu-anim-curve-sharp),
- margin-bottom 60ms var(--tutu-anim-curve-sharp),
- height 60ms var(--tutu-anim-curve-sharp),
- var(--tutu-transition-shadow);
- border-radius: 0;
-
- time {
- color: var(--tutu-color-secondary-text-on-surface);
- }
-
- >.retoot-grp {
- display: flex;
- gap: 0.25em;
- margin-bottom: 8px;
- align-items: center;
-
- > :first-child {
- margin-right: 0.25em;
- }
- }
-
- & .custom-emoji {
- height: 1em;
- object-fit: contain;
- }
-
- &.expanded {
- margin-block: 20px;
- box-shadow: var(--tutu-shadow-e9);
- }
-
- &.thread-top,
- &.thread-mid,
- &.thread-btm {
- position: relative;
-
- &::before {
- content: "";
- position: absolute;
- left: 36px;
- background-color: var(--tutu-color-secondary);
- width: 2px;
- display: block;
- }
- }
-
- &.thread-mid {
- &::before {
- top: 0;
- bottom: 0;
- }
- }
-
- &.thread-top {
- &::before {
- top: 16px;
- bottom: 0;
- }
- }
-
- &.thread-btm {
- &::before {
- top: 0;
- height: 16px;
- }
- }
-}
diff --git a/src/timelines/RegularToot.tsx b/src/timelines/RegularToot.tsx
index fd5c80d..68c0f72 100644
--- a/src/timelines/RegularToot.tsx
+++ b/src/timelines/RegularToot.tsx
@@ -7,62 +7,63 @@ import {
createRenderEffect,
createSignal,
type Setter,
- createContext,
- useContext,
} from "solid-js";
import tootStyle from "./toot.module.css";
-import { formatRelative } from "date-fns";
+import { formatRelative, parseISO } from "date-fns";
import Img from "~material/Img.js";
import { Body2 } from "~material/typography.js";
-import { SmartToySharp, Lock } from "@suid/icons-material";
+import { css } from "solid-styled";
+import {
+ BookmarkAddOutlined,
+ Repeat,
+ ReplyAll,
+ Star,
+ StarOutline,
+ Bookmark,
+ Share,
+ SmartToySharp,
+ Lock,
+} from "@suid/icons-material";
import { useTimeSource } from "~platform/timesrc.js";
import { resolveCustomEmoji } from "../masto/toot.js";
import { Divider } from "@suid/material";
import cardStyle from "~material/cards.module.css";
+import Button from "~material/Button.js";
import MediaAttachmentGrid from "./toots/MediaAttachmentGrid.jsx";
import { useDateFnLocale } from "~platform/i18n";
+import { canShare, share } from "~platform/share";
import { makeAcctText, useDefaultSession } from "../masto/clients";
import TootContent from "./toots/TootContent";
import BoostIcon from "./toots/BoostIcon";
import PreviewCard from "./toots/PreviewCard";
import TootPoll from "./toots/TootPoll";
-import TootActionGroup from "./toots/TootActionGroup.js";
-import "./RegularToot.css";
-export type TootEnv = {
- boost: (value: mastodon.v1.Status) => void;
- favourite: (value: mastodon.v1.Status) => void;
- bookmark: (value: mastodon.v1.Status) => void;
- reply?: (
- value: mastodon.v1.Status,
+type TootActionGroupProps