-
-
- {
- 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
new file mode 100644
index 0000000..d7a50c3
--- /dev/null
+++ b/src/timelines/RegularToot.css
@@ -0,0 +1,78 @@
+.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 68c0f72..fd5c80d 100644
--- a/src/timelines/RegularToot.tsx
+++ b/src/timelines/RegularToot.tsx
@@ -7,63 +7,62 @@ import {
createRenderEffect,
createSignal,
type Setter,
+ createContext,
+ useContext,
} from "solid-js";
import tootStyle from "./toot.module.css";
-import { formatRelative, parseISO } from "date-fns";
+import { formatRelative } from "date-fns";
import Img from "~material/Img.js";
import { Body2 } from "~material/typography.js";
-import { css } from "solid-styled";
-import {
- BookmarkAddOutlined,
- Repeat,
- ReplyAll,
- Star,
- StarOutline,
- Bookmark,
- Share,
- SmartToySharp,
- Lock,
-} from "@suid/icons-material";
+import { 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";
-type TootActionGroupProps