diff --git a/assets/icons/community/leaflet.svg b/assets/icons/community/leaflet.svg
index e9a65c154d..ceeee657a5 100644
--- a/assets/icons/community/leaflet.svg
+++ b/assets/icons/community/leaflet.svg
@@ -1 +1 @@
-
+
diff --git a/assets/icons/community/offprint.svg b/assets/icons/community/offprint.svg
index 605988c36d..fd07e5d0e6 100644
--- a/assets/icons/community/offprint.svg
+++ b/assets/icons/community/offprint.svg
@@ -1 +1,3 @@
-
+
diff --git a/assets/icons/community/pckt.svg b/assets/icons/community/pckt.svg
index e0aa775704..a1b1764e0d 100644
--- a/assets/icons/community/pckt.svg
+++ b/assets/icons/community/pckt.svg
@@ -1 +1 @@
-
+
diff --git a/assets/icons/community/standard-site.svg b/assets/icons/community/standard-site.svg
index 64dd20c3bd..db86f6f7d7 100644
--- a/assets/icons/community/standard-site.svg
+++ b/assets/icons/community/standard-site.svg
@@ -1 +1 @@
-
+
diff --git a/src/analytics/metrics/types.ts b/src/analytics/metrics/types.ts
index 6e35ce317d..7c9f1bffb9 100644
--- a/src/analytics/metrics/types.ts
+++ b/src/analytics/metrics/types.ts
@@ -987,6 +987,17 @@ export type Events = {
'share:press:recentDm': {}
'share:press:embed': {}
+ 'embed:standardSite:view': {url: string}
+ 'embed:standardSite:article:press': {url: string}
+ 'embed:standardSite:article:longPress': {url: string}
+ 'embed:standardSite:publication:press': {url: string}
+ 'embed:standardSite:publication:longPress': {url: string}
+ 'embed:standardSite:publicationCta:press': {url: string}
+ 'embed:standardSite:publicationCta:longPress': {url: string}
+ 'embed:standardSite:subscribe:press': {url: string}
+ 'embed:standardSite:subscribe:longPress': {url: string}
+ 'embed:standardSite:authorHandle:press': {handle: string}
+
'thread:click:showOtherReplies': {}
'thread:click:hideReplyForMe': {}
'thread:click:hideReplyForEveryone': {}
diff --git a/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx b/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx
index bf5fe3d1a9..00ab602528 100644
--- a/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx
+++ b/src/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow.tsx
@@ -1,30 +1,33 @@
import {Fragment, type ReactNode} from 'react'
import {View} from 'react-native'
-import {type AppBskyEmbedExternal, AtUri} from '@atproto/api'
+import {AtUri} from '@atproto/api'
import {Trans, useLingui} from '@lingui/react/macro'
import {makeProfileLink} from '#/lib/routes/links'
import {toNiceDomain} from '#/lib/strings/url-helpers'
import {atoms as a, useTheme} from '#/alf'
-import {StandardSite} from '#/components/icons/community/StandardSite'
import {InlineLinkText} from '#/components/Link'
import {
matchStandardSitePublisher,
matchStandardSitePublisherByUri,
} from '#/components/Post/Embed/StandardSiteEmbed/publishers'
+import type * as ssTypes from '#/components/Post/Embed/StandardSiteEmbed/types'
import {
isStandardSiteDocumentUri,
isStandardSitePublicationUri,
} from '#/components/Post/Embed/StandardSiteEmbed/utils'
import {Text} from '#/components/Typography'
+import {useAnalytics} from '#/analytics'
export function StandardSiteMetaRow({
type = 'document',
+ preview,
view,
-}: {
- type?: 'document' | 'publication'
- view: AppBskyEmbedExternal.ViewExternal
-}) {
+}: ssTypes.CommonProps &
+ ssTypes.PreviewProps & {
+ type?: 'document' | 'publication'
+ }) {
+ const ax = useAnalytics()
const t = useTheme()
const {t: l} = useLingui()
const highlightedPublisher = !!matchStandardSitePublisher(view)
@@ -43,7 +46,7 @@ export function StandardSiteMetaRow({
: undefined
const articleDomain = toNiceDomain(view.uri)
const articlePublisher = matchStandardSitePublisherByUri(view.uri)
- const DomainIcon = articlePublisher?.Icon ?? StandardSite
+ const DomainIcon = articlePublisher?.Icon
const metaTextStyle = [
a.text_xs,
a.leading_snug,
@@ -57,7 +60,9 @@ export function StandardSiteMetaRow({
key: 'domain',
node: (
-
+ {DomainIcon && (
+
+ )}
{articleDomain}
@@ -76,7 +81,15 @@ export function StandardSiteMetaRow({
+ style={[
+ metaTextStyle,
+ preview ? a.pointer_events_none : a.pointer_events_auto,
+ ]}
+ onPress={() => {
+ ax.metric('embed:standardSite:authorHandle:press', {
+ handle: authorProfile.handle,
+ })
+ }}>
@{authorProfile.handle}
diff --git a/src/components/Post/Embed/StandardSiteEmbed/index.tsx b/src/components/Post/Embed/StandardSiteEmbed/index.tsx
index 5af033fe71..fddfaf0a41 100644
--- a/src/components/Post/Embed/StandardSiteEmbed/index.tsx
+++ b/src/components/Post/Embed/StandardSiteEmbed/index.tsx
@@ -1,10 +1,11 @@
import {type StyleProp, View, type ViewStyle} from 'react-native'
import {Image} from 'expo-image'
-import {type AppBskyEmbedExternal, AtUri} from '@atproto/api'
+import {AtUri} from '@atproto/api'
import {plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react/macro'
import {useHaptics} from '#/lib/haptics'
+import {useCallOnce} from '#/lib/once'
import {shareUrl} from '#/lib/sharing'
import {niceDate} from '#/lib/strings/time'
import {toNiceDomain} from '#/lib/strings/url-helpers'
@@ -13,37 +14,34 @@ import {atoms as a, useBreakpoints, useTheme, utils, web} from '#/alf'
import {ButtonIcon, ButtonText} from '#/components/Button'
import {Divider} from '#/components/Divider'
import {useInteractionState} from '#/components/hooks/useInteractionState'
+import {ArrowTopRight_Stroke2_Corner0_Rounded as ArrowTopRightIcon} from '#/components/icons/Arrow'
import {Clock_Stroke2_Corner0_Rounded as Clock} from '#/components/icons/Clock'
import {Link} from '#/components/Link'
import {MediaInsetBorder} from '#/components/MediaInsetBorder'
import {matchStandardSitePublisher} from '#/components/Post/Embed/StandardSiteEmbed/publishers'
import {StandardSiteMetaRow} from '#/components/Post/Embed/StandardSiteEmbed/StandardSiteMetaRow'
import {StandardSiteThemeProvider} from '#/components/Post/Embed/StandardSiteEmbed/StandardSiteThemeProvider'
+import type * as ssTypes from '#/components/Post/Embed/StandardSiteEmbed/types'
import {isStandardSitePublicationEmbed} from '#/components/Post/Embed/StandardSiteEmbed/utils'
import {Text} from '#/components/Typography'
+import {useAnalytics} from '#/analytics'
import {IS_NATIVE} from '#/env'
-export type ThemeColors = {
- custom: boolean
- accent: string
- accentForeground: string
-}
-
const PUBLICATION_AVATAR_STYLE = {
borderRadius: a.rounded_sm.borderRadius,
}
export const StandardSiteEmbed = ({
+ preview,
view,
- onOpen,
+ onEmbedInteractionCallback,
style,
- hideSubscribe,
-}: {
- view: AppBskyEmbedExternal.ViewExternal
- onOpen?: () => void
- style?: StyleProp
- hideSubscribe?: boolean
-}) => {
+}: ssTypes.CommonProps &
+ ssTypes.PreviewProps &
+ ssTypes.PublicApiProps & {
+ style?: StyleProp
+ }) => {
+ const ax = useAnalytics()
const {t: l, i18n} = useLingui()
const t = useTheme()
const playHaptic = useHaptics()
@@ -54,7 +52,7 @@ export const StandardSiteEmbed = ({
new AtUri(ref.uri).collection.startsWith('site.standard.'),
)
const isStandardPublication = isStandardSitePublicationEmbed(view)
- let themeColors: ThemeColors = {
+ let themeColors: ssTypes.ThemeColors = {
custom: false,
accent: t.atoms.text.color,
accentForeground: t.atoms.text_inverted.color,
@@ -77,28 +75,51 @@ export const StandardSiteEmbed = ({
onIn: onInteract,
onOut: onInteractOut,
} = useInteractionState()
-
const onPress = () => {
playHaptic('Light')
- onOpen?.()
+ onEmbedInteractionCallback?.()
+ ax.metric('embed:standardSite:article:press', {url: view.uri})
}
-
const onLongPress = () => {
if (view.uri && IS_NATIVE) {
playHaptic('Heavy')
shareUrl(view.uri)
+ ax.metric('embed:standardSite:article:longPress', {url: view.uri})
}
}
+ const onPressPublication = () => {
+ playHaptic('Light')
+ onEmbedInteractionCallback?.()
+ ax.metric('embed:standardSite:publication:press', {
+ url: view.source?.uri || '',
+ })
+ }
+ const onLongPressPublication = () => {
+ if (view.source?.uri && IS_NATIVE) {
+ playHaptic('Heavy')
+ shareUrl(view.source.uri)
+ ax.metric('embed:standardSite:publication:longPress', {
+ url: view.source.uri,
+ })
+ }
+ }
+
+ useCallOnce(() => {
+ if (!preview) {
+ ax.metric('embed:standardSite:view', {url: view.uri})
+ }
+ })()
if (isStandardPublication) {
return (
)
}
@@ -111,7 +132,9 @@ export const StandardSiteEmbed = ({
a.overflow_hidden,
a.w_full,
a.border,
+ t.atoms.bg,
interacted ? t.atoms.border_contrast_high : t.atoms.border_contrast_low,
+ preview && a.pointer_events_none,
style,
]}>
>
-
+
{imageUri ? (
-
-
-
-
-
- {view.source ? (
-
- ) : (
-
-
+ {!view.source && (
+
+
+
+
+
)}
+
+ {view.source && (
+
+
+
+
+ )}
)
}
export function PublicationCard({
+ preview,
view,
- hideSubscribe,
onPress,
onLongPress,
themeColors,
style,
-}: {
- view: AppBskyEmbedExternal.ViewExternal
- hideSubscribe?: boolean
- onPress?: () => void
- onLongPress?: () => void
- themeColors: ThemeColors
- style?: StyleProp
-}) {
+ onEmbedInteractionCallback,
+}: ssTypes.CommonProps &
+ ssTypes.PreviewProps &
+ ssTypes.PublicApiProps & {
+ onPress?: () => void
+ onLongPress?: () => void
+ themeColors: ssTypes.ThemeColors
+ style?: StyleProp
+ }) {
const t = useTheme()
const {t: l} = useLingui()
const {gtPhone} = useBreakpoints()
@@ -272,7 +307,9 @@ export function PublicationCard({
a.w_full,
a.border,
a.p_md,
- interacted ? t.atoms.border_contrast_high : t.atoms.border_contrast_low,
+ interacted
+ ? [t.atoms.bg_contrast_25, t.atoms.border_contrast_high]
+ : [t.atoms.bg, t.atoms.border_contrast_low],
style,
]}>
{view.source?.title}
-
+
- {!hideSubscribe && gtPhone && (
+ {gtPhone && (
)}
@@ -345,13 +386,13 @@ export function PublicationCard({
)}
- {!hideSubscribe && !gtPhone && (
+ {!gtPhone && (
)}
@@ -361,17 +402,19 @@ export function PublicationCard({
}
export function SubscribeButton({
+ preview,
view,
- onPress,
- onLongPress,
style,
-}: {
- view: AppBskyEmbedExternal.ViewExternal
- onPress?: () => void
- onLongPress?: () => void
- style?: StyleProp
-}) {
+ onEmbedInteractionCallback,
+}: ssTypes.CommonProps &
+ ssTypes.PreviewProps &
+ ssTypes.PublicApiProps & {
+ style?: StyleProp
+ }) {
+ const ax = useAnalytics()
const {t: l} = useLingui()
+ const playHaptic = useHaptics()
+
const highlightedPublisher = matchStandardSitePublisher(view)
const cta = highlightedPublisher
? l`Subscribe on ${highlightedPublisher.name}`
@@ -388,6 +431,36 @@ export function SubscribeButton({
? l`View ${publicationTitle}`
: l`View publication`
+ const onPress = () => {
+ playHaptic('Light')
+ onEmbedInteractionCallback?.()
+ if (highlightedPublisher) {
+ ax.metric('embed:standardSite:subscribe:press', {
+ url: view.source?.uri || '',
+ })
+ } else {
+ ax.metric('embed:standardSite:publicationCta:press', {
+ url: view.source?.uri || '',
+ })
+ }
+ }
+
+ const onLongPress = () => {
+ if (view.source?.uri && IS_NATIVE) {
+ playHaptic('Heavy')
+ shareUrl(view.source.uri)
+ if (highlightedPublisher) {
+ ax.metric('embed:standardSite:subscribe:longPress', {
+ url: view.source?.uri || '',
+ })
+ } else {
+ ax.metric('embed:standardSite:publicationCta:longPress', {
+ url: view.source?.uri || '',
+ })
+ }
+ }
+ }
+
return (
{highlightedPublisher ? (
<>
-
- {/*|*/}
+
{cta}
>
) : (
- {cta}
+ <>
+ {cta}
+
+ >
)}
@@ -419,11 +498,10 @@ function PublicationIcon({
view,
size,
themeColors,
-}: {
- view: AppBskyEmbedExternal.ViewExternal
+}: ssTypes.CommonProps & {
size: number
interacted?: boolean
- themeColors: ThemeColors
+ themeColors: ssTypes.ThemeColors
}) {
if (!view.source) return null
return view.source?.icon ? (
@@ -460,18 +538,21 @@ function PublicationIcon({
}
export function PublicationFooter({
+ preview,
view,
- hideSubscribe,
+ themeColors,
onPress,
onLongPress,
- themeColors,
-}: {
- view: AppBskyEmbedExternal.ViewExternal
- hideSubscribe?: boolean
- themeColors: ThemeColors
- onPress?: () => void
- onLongPress?: () => void
-}) {
+ interactedOuter,
+ onEmbedInteractionCallback,
+}: ssTypes.CommonProps &
+ ssTypes.PreviewProps &
+ ssTypes.PublicApiProps & {
+ themeColors: ssTypes.ThemeColors
+ onPress?: () => void
+ onLongPress?: () => void
+ interactedOuter?: boolean
+ }) {
const t = useTheme()
const {t: l} = useLingui()
const {gtPhone} = useBreakpoints()
@@ -492,8 +573,9 @@ export function PublicationFooter({
a.p_md,
a.gap_md,
gtPhone && [a.flex_row, a.gap_sm],
- ]}
- testID="publication-embed-footer">
+ interactedOuter && t.atoms.bg_contrast_25,
+ preview && a.pointer_events_none,
+ ]}>
{view.source?.title}
-
+
- {!hideSubscribe && (
-
- )}
+
)
}
diff --git a/src/components/Post/Embed/StandardSiteEmbed/types.ts b/src/components/Post/Embed/StandardSiteEmbed/types.ts
new file mode 100644
index 0000000000..208f01b7a6
--- /dev/null
+++ b/src/components/Post/Embed/StandardSiteEmbed/types.ts
@@ -0,0 +1,26 @@
+import {type AppBskyEmbedExternal} from '@atproto/api'
+
+export type CommonProps = {
+ view: AppBskyEmbedExternal.ViewExternal
+}
+
+export type PreviewProps = {
+ /**
+ * Indicates the card is showing the composer. Interactive elements should be
+ * disabled when this value is true.
+ */
+ preview?: boolean
+}
+
+export type PublicApiProps = {
+ /**
+ * Passed down from feed contexts etc, used to fire off interaction tracking
+ */
+ onEmbedInteractionCallback?: () => void
+}
+
+export type ThemeColors = {
+ custom: boolean
+ accent: string
+ accentForeground: string
+}
diff --git a/src/components/Post/Embed/index.tsx b/src/components/Post/Embed/index.tsx
index 2114904557..054558ad83 100644
--- a/src/components/Post/Embed/index.tsx
+++ b/src/components/Post/Embed/index.tsx
@@ -104,6 +104,7 @@ function MediaEmbed({
activeStyle={[a.mt_sm]}>
diff --git a/src/components/icons/community/Leaflet.tsx b/src/components/icons/community/Leaflet.tsx
index 15649f98bd..cba43f85e8 100644
--- a/src/components/icons/community/Leaflet.tsx
+++ b/src/components/icons/community/Leaflet.tsx
@@ -1,5 +1,5 @@
import {createSinglePathSVG} from '../TEMPLATE'
export const Leaflet = createSinglePathSVG({
- path: 'M16.091 3.001c.385-.01 1.07.04 1.51.646q.122.17.186.334c.317-.029.759-.066 1.17-.032.395.034 1.195.163 1.661.9.411.65.308 1.316.107 1.768a3.3 3.3 0 0 1-.416.667c.142.124.302.293.428.507.302.514.316 1.083.182 1.62-.236.944-1.025 1.356-1.504 1.54-.493.19-1.07.294-1.502.371l-.05.009-.1.017c.106.368.084.759-.039 1.13-.34 1.025-1.114 1.513-1.85 1.718-.632.176-1.337.176-1.839.175h-.18c.126.508-.018 1.009-.158 1.348-.52 1.25-1.696 1.717-2.647 1.915s-2.052.204-2.966.21h-.063c-.5.002-.945.005-1.334.027-.345.666-.63 1.407-.962 2.271v.003l-.27.701c-.37.943-1.413 1.4-2.33 1.02-.918-.378-1.364-1.45-.996-2.392.473-1.207.962-2.049 1.615-3.342.175-.348.322-.628.452-.889 0-.786.057-1.341.17-2.045.19-1.183.35-1.639.585-2.718.215-.746.532-1.747 1.03-2.299.285-.317.727-.78 1.392-.812.404-.02.656.315.869.457.618-.86 1.143-2.005 1.82-2.894.542-.713 1.125-1.336 2.067-1.188.485.077 1.176.452 1.176 1.188.18-.205.729-.995.96-1.188.44-.367 1.048-.721 1.826-.743m-.347.953c-.828.023-1.412.747-1.902 1.354-.355.44-.66.82-.975.828-.308.008-.285-.204-.256-.473.042-.383.095-.88-.78-1.02-.726-.114-1.492 1.266-2.157 2.464-.455.82-.864 1.555-1.18 1.667-.482.172-.705-.03-.896-.202-.23-.208-.413-.373-.947.22-.563.623-.947 2.328-1.319 4.186-.047.237.283.39.434.203.856-1.057 2.248-2.51 3.908-3.585 1.526-.988 2.998-1.97 4.664-2.464.245-.073.315.21.08.312-1.878.82-3.491 1.903-5.181 3.348-1.9 1.589-3.696 3.703-4.607 5.427a22 22 0 0 0-1.511 3.127.6.6 0 0 0 .32.771.573.573 0 0 0 .751-.329q.134-.345.262-.68c.39-1.02.756-1.976 1.271-2.845a.21.21 0 0 1 .154-.101c.56-.069 1.227-.073 1.917-.077 1.881-.01 3.936-.023 4.487-1.348.287-.692-.06-.792-.373-.881-.255-.074-.489-.141-.335-.52.268-.655 1.138-.655 2.061-.655 1.075 0 2.22 0 2.563-1.036.147-.443-.115-.618-.347-.772-.194-.129-.366-.244-.262-.492.167-.394.89-.525 1.658-.663.917-.165 1.895-.34 2.057-.99.154-.614-.133-.812-.429-1.017-.18-.126-.364-.255-.454-.481-.11-.279.13-.576.38-.885.296-.365.604-.746.362-1.13-.276-.435-1.096-.358-1.775-.295-.424.04-.793.073-.94-.025-.148-.1-.142-.268-.136-.436.009-.262.017-.521-.566-.505',
+ path: 'M17.058 1.001c.466-.012 1.294.05 1.828.782.099.136.172.274.224.405.385-.036.92-.08 1.416-.039.48.04 1.448.197 2.012 1.09.497.787.372 1.592.13 2.14-.14.315-.345.602-.505.807.172.15.366.354.518.613.366.622.383 1.312.22 1.962-.285 1.143-1.24 1.642-1.82 1.865-.597.23-1.296.354-1.818.448l-.06.01-.121.022c.128.445.101.918-.048 1.367-.41 1.242-1.349 1.831-2.24 2.08-.764.214-1.618.213-2.225.212h-.218c.152.615-.022 1.221-.192 1.631-.63 1.514-2.053 2.08-3.203 2.319s-2.484.247-3.591.253h-.076c-.607.004-1.145.007-1.616.034-.417.806-.763 1.702-1.163 2.75l-.002.002q-.158.414-.327.85c-.446 1.14-1.709 1.693-2.82 1.235-1.11-.459-1.65-1.755-1.204-2.897.571-1.462 1.164-2.48 1.954-4.046.212-.42.39-.76.547-1.075 0-.951.07-1.624.207-2.476.23-1.432.423-1.984.707-3.29.26-.903.644-2.115 1.247-2.783.346-.384.88-.945 1.685-.983.489-.023.794.38 1.052.553.749-1.04 1.384-2.427 2.202-3.503.657-.863 1.363-1.618 2.503-1.438.588.093 1.423.547 1.424 1.438.217-.249.883-1.204 1.162-1.438.532-.445 1.27-.874 2.21-.9m-.42 1.154c-1.003.028-1.71.904-2.303 1.64-.43.532-.8.991-1.18 1.001-.373.01-.345-.247-.31-.572.05-.464.115-1.066-.945-1.234-.879-.14-1.805 1.531-2.61 2.981-.551.993-1.046 1.883-1.428 2.019-.584.208-.854-.037-1.085-.245-.28-.252-.5-.451-1.147.265-.681.755-1.146 2.82-1.596 5.068-.057.287.342.472.525.247 1.036-1.28 2.72-3.039 4.73-4.34 1.848-1.196 3.63-2.385 5.647-2.983.297-.088.38.253.096.377-2.273.994-4.226 2.304-6.272 4.053-2.299 1.923-4.474 4.483-5.577 6.57a27 27 0 0 0-1.829 3.786.724.724 0 0 0 .388.933.693.693 0 0 0 .91-.398q.162-.418.316-.825c.473-1.234.915-2.391 1.539-3.443a.25.25 0 0 1 .187-.123c.678-.082 1.485-.087 2.32-.092 2.277-.013 4.764-.028 5.431-1.632.348-.838-.071-.959-.45-1.067-.31-.089-.593-.17-.406-.629.323-.792 1.377-.793 2.494-.793 1.301 0 2.687 0 3.103-1.254.177-.537-.14-.748-.42-.934-.235-.157-.444-.296-.317-.596.201-.477 1.078-.636 2.007-.803 1.11-.2 2.294-.412 2.49-1.198.186-.744-.16-.983-.52-1.232-.218-.151-.44-.307-.55-.582-.133-.337.158-.697.461-1.071.358-.442.731-.903.438-1.367-.334-.527-1.327-.434-2.15-.358-.512.048-.959.089-1.136-.03-.18-.12-.173-.325-.166-.528.011-.317.022-.63-.685-.611',
})
diff --git a/src/components/icons/community/Offprint.tsx b/src/components/icons/community/Offprint.tsx
index e7fd2fc777..a52f5843c7 100644
--- a/src/components/icons/community/Offprint.tsx
+++ b/src/components/icons/community/Offprint.tsx
@@ -1,5 +1,5 @@
import {createSinglePathSVG} from '../TEMPLATE'
export const Offprint = createSinglePathSVG({
- path: 'M7.638 11.873c.096.796.45 2.419 1.255 3.787.097.191.354.16.419 0l4.636-8.401a.394.394 0 0 0-.097-.51 3.73 3.73 0 0 0-2.575-.89c-3.703.095-3.735 4.71-3.638 6.014m5.086 6.237c3.606-.095 3.735-4.677 3.606-5.95-.064-.828-.418-2.483-1.255-3.915-.065-.127-.29-.127-.355 0l-4.668 8.465c-.064.191-.032.382.097.51a3.73 3.73 0 0 0 2.575.89m3.928-13.365-.193.35c-.129.223-.065.477.129.573C19.163 7.29 20 10.09 20 11.937c0 2.291-1.931 7.637-7.823 7.637-1.159 0-2.157-.159-3.058-.445a.415.415 0 0 0-.483.159l-.258.509c-.096.19-.322.255-.515.16l-.354-.192a.37.37 0 0 1-.16-.509l.224-.414c.097-.19.033-.413-.128-.509C4.869 16.678 4 13.846 4 12.064c0-2.291 1.77-7.637 7.694-7.637 1.224 0 2.254.159 3.155.445a.46.46 0 0 0 .515-.19l.29-.51a.366.366 0 0 1 .483-.127l.386.19c.161.096.226.319.129.51',
+ path: 'M6.547 11.842c.121.994.564 3.023 1.57 4.733.12.239.442.199.523 0l5.795-10.501a.49.49 0 0 0-.121-.637 4.66 4.66 0 0 0-3.22-1.114c-4.627.12-4.667 5.888-4.547 7.518m6.358 7.796c4.508-.12 4.668-5.847 4.508-7.439-.081-1.034-.524-3.102-1.57-4.892-.08-.16-.362-.16-.443 0l-5.835 10.58c-.08.24-.04.478.121.637a4.66 4.66 0 0 0 3.22 1.114m4.91-16.707-.242.438c-.16.278-.08.596.162.716C20.954 6.113 22 9.614 22 11.92c0 2.864-2.414 9.547-9.779 9.547-1.448 0-2.696-.2-3.823-.557a.52.52 0 0 0-.603.199l-.322.636c-.12.239-.403.319-.644.2l-.443-.24a.46.46 0 0 1-.2-.636l.28-.517c.122-.239.041-.517-.16-.637C3.086 17.848 2 14.308 2 12.08c0-2.864 2.213-9.547 9.618-9.547 1.529 0 2.817.2 3.943.557.242.08.524-.04.644-.238l.362-.637a.457.457 0 0 1 .604-.159l.483.239c.201.12.282.398.16.636',
})
diff --git a/src/components/icons/community/Pckt.tsx b/src/components/icons/community/Pckt.tsx
index 6a434be099..d67eea8a66 100644
--- a/src/components/icons/community/Pckt.tsx
+++ b/src/components/icons/community/Pckt.tsx
@@ -5,5 +5,5 @@ export const PcktFull = createSinglePathSVG({
})
export const Pckt = createSinglePathSVG({
- path: 'M12.781 4c1.543 0 2.853.528 3.752 1.661q.132.167.25.347.537.358.963.891C18.62 8 19 9.54 19 11.355c0 1.444-.241 2.715-.777 3.73q.081.057.156.128c.238.224.376.504.463.752l.006.014.004.015c.112.359.188.88-.106 1.362q-.091.15-.205.26.024.154.013.322c-.042.569-.407.95-.721 1.18-.234.169-.568.355-.986.355a1.3 1.3 0 0 1-.627-.157 1.3 1.3 0 0 1-.63.157c-.4 0-.744-.186-.978-.356l-.01-.008c-.258-.193-.571-.503-.68-.952a2 2 0 0 1-.523-.278l-.01-.008c-.16-.12-.34-.284-.48-.497a5 5 0 0 1-.373-.1v1.687c0 .341-.085.773-.423 1.11-.333.331-.756.412-1.089.412H7.705c-.334 0-.752-.086-1.08-.42a1.46 1.46 0 0 1-.394-.836 1.4 1.4 0 0 1-.819-.402C5.084 18.491 5 18.064 5 17.723V5.72c0-.341.084-.767.412-1.102.328-.334.746-.42 1.08-.42h3.32c.27 0 .596.053.886.245A4.85 4.85 0 0 1 12.781 4m0 .929c-.95 0-1.747.277-2.368.772 0-.376-.194-.574-.601-.574h-3.32q-.582 0-.583.594v12.002q0 .594.583.594h3.32c.407 0 .601-.198.601-.594v-3.189c.63.487 1.41.782 2.321.792.005-.147.037-.294.083-.43.068-.215.17-.425.336-.585a.91.91 0 0 1 .742-.248 1 1 0 0 1 .209-.425c.236-.277.582-.354.906-.354.32 0 .667.078.902.356q.049.059.086.122c.579-.868.879-2.089.879-3.644 0-3.406-1.437-5.19-4.096-5.19m2.229 8.819c-.532 0-.744.259-.68.784l.037.194-.175-.092a.9.9 0 0 0-.394-.111c-.266 0-.44.167-.55.526-.166.488.018.774.541.866l.192.027-.137.158c-.376.368-.348.7.083 1.023.165.12.32.183.449.184.211 0 .395-.147.542-.433l.092-.176.092.176c.146.286.32.433.532.433.146 0 .294-.064.459-.184.431-.313.449-.655.082-1.033l-.128-.148.183-.027c.533-.092.697-.378.541-.876-.119-.34-.293-.507-.54-.507a.96.96 0 0 0-.405.11l-.183.084.027-.194q.124-.786-.66-.784m-3.49-5.349c.913 0 1.213.696 1.213 1.858s-.3 1.856-1.213 1.856c-.912 0-1.212-.694-1.212-1.856s.3-1.857 1.213-1.858',
+ path: 'M13.004 1.646c1.983 0 3.668.678 4.824 2.135q.17.215.32.446.694.46 1.24 1.146C20.512 6.787 21 8.767 21 11.103c0 1.856-.31 3.49-.999 4.795q.105.073.201.163c.306.288.483.648.595.967l.007.019.006.02c.144.46.24 1.13-.137 1.75a1.8 1.8 0 0 1-.263.335q.031.196.017.413c-.054.732-.522 1.223-.926 1.516H19.5c-.3.218-.73.458-1.268.458-.311 0-.58-.078-.807-.201-.23.123-.5.201-.81.201-.515 0-.955-.24-1.256-.458l-.013-.01c-.333-.249-.735-.648-.873-1.224a2.6 2.6 0 0 1-.673-.357l-.014-.01a2.6 2.6 0 0 1-.617-.64 6 6 0 0 1-.48-.128v2.168c0 .439-.108.995-.543 1.428-.429.427-.972.53-1.4.53H6.48c-.43 0-.968-.111-1.39-.541a1.87 1.87 0 0 1-.506-1.074 1.8 1.8 0 0 1-1.053-.517c-.421-.43-.53-.978-.53-1.417V3.86c0-.44.109-.987.53-1.418s.96-.54 1.389-.54h4.267c.348 0 .767.067 1.14.315.798-.376 1.7-.57 2.678-.57m0 1.193c-1.223 0-2.246.357-3.045.993 0-.483-.25-.738-.773-.738H4.918q-.748 0-.75.763V19.29q.002.763.75.764h4.268c.523 0 .773-.255.773-.764v-4.1c.81.625 1.814 1.005 2.985 1.018.007-.19.048-.377.107-.552.086-.277.218-.548.432-.753a1.17 1.17 0 0 1 .954-.318 1.25 1.25 0 0 1 .267-.548c.304-.355.749-.455 1.165-.455.411 0 .858.1 1.16.458q.064.076.112.156c.744-1.115 1.129-2.685 1.129-4.684 0-4.38-1.847-6.672-5.266-6.672m2.865 11.34c-.684 0-.955.332-.873 1.008l.047.248-.224-.119a1.2 1.2 0 0 0-.508-.142c-.341 0-.566.214-.707.676-.213.628.024.995.696 1.114l.248.036-.177.201c-.483.474-.448.9.106 1.316.212.153.413.237.578.237.271 0 .507-.19.696-.557l.118-.225.118.225c.189.367.414.557.685.557.189 0 .377-.083.59-.237.554-.403.578-.842.106-1.328L17.203 17l.236-.036c.684-.119.896-.486.696-1.126-.154-.438-.378-.651-.697-.651-.153 0-.318.047-.518.141l-.236.107.035-.248c.106-.676-.177-1.008-.85-1.008m-4.485-6.877c1.173 0 1.56.893 1.56 2.386s-.387 2.388-1.56 2.388-1.56-.894-1.56-2.388.387-2.386 1.56-2.386',
})
diff --git a/src/components/icons/community/StandardSite.tsx b/src/components/icons/community/StandardSite.tsx
index 430b258eb5..86e5731bb7 100644
--- a/src/components/icons/community/StandardSite.tsx
+++ b/src/components/icons/community/StandardSite.tsx
@@ -1,5 +1,5 @@
import {createSinglePathSVG} from '../TEMPLATE'
export const StandardSite = createSinglePathSVG({
- path: 'M11.846 2.047a.275.275 0 0 1 .308 0c.108.073.166.791.283 2.227l.04.499h2.76a3.955 3.955 0 0 1 3.954 3.954v.682h-1.364v-.682a2.59 2.59 0 0 0-2.59-2.59H12.59c.123 1.38.245 2.183.605 2.84a4.37 4.37 0 0 0 1.688 1.708c.808.455 1.845.556 3.918.759l1.14.11c1.294.127 1.942.19 2.014.298a.27.27 0 0 1-.003.304c-.073.107-.722.16-2.018.266l-.743.06v2.79a3.954 3.954 0 0 1-3.955 3.955h-2.762l-.037.467c-.116 1.457-.174 2.185-.283 2.259a.275.275 0 0 1-.308 0c-.108-.073-.166-.802-.282-2.259l-.038-.467H8.691a3.955 3.955 0 0 1-3.955-3.954v-.682H6.1v.682a2.59 2.59 0 0 0 2.59 2.59h2.725c-.124-1.433-.247-2.26-.618-2.932a4.37 4.37 0 0 0-1.72-1.715c-.823-.452-1.878-.538-3.988-.71l-1.023-.084c-1.296-.106-1.945-.16-2.018-.266a.27.27 0 0 1-.003-.304c.072-.108.72-.171 2.015-.297l.676-.066V8.727a3.955 3.955 0 0 1 3.955-3.954h2.832l.04-.5c.117-1.435.175-2.153.283-2.226m5.981 10.55c-1.414.126-2.235.252-2.903.619a4.37 4.37 0 0 0-1.72 1.715c-.372.672-.495 1.499-.62 2.933h2.652a2.59 2.59 0 0 0 2.591-2.591zm-9.136-6.46A2.59 2.59 0 0 0 6.1 8.726v2.627c1.492-.153 2.336-.285 3.017-.669a4.37 4.37 0 0 0 1.688-1.707c.36-.658.483-1.46.605-2.842z',
+ path: 'M11.815.056a.33.33 0 0 1 .37 0c.13.088.2.95.34 2.673l.047.599h3.312a4.745 4.745 0 0 1 4.745 4.745v.818h-1.637v-.818a3.11 3.11 0 0 0-3.109-3.11h-3.175c.147 1.658.295 2.622.726 3.41a5.24 5.24 0 0 0 2.026 2.05c.969.545 2.214.667 4.702.91l1.366.133c1.553.151 2.33.227 2.417.357a.32.32 0 0 1-.003.364c-.088.128-.866.192-2.422.32l-.891.073v3.347a4.745 4.745 0 0 1-4.746 4.746h-3.315l-.044.56c-.139 1.748-.21 2.622-.34 2.711a.33.33 0 0 1-.369 0c-.13-.088-.2-.963-.339-2.711l-.045-.56H8.03a4.746 4.746 0 0 1-4.746-4.746v-.818H4.92v.818a3.11 3.11 0 0 0 3.11 3.11h3.269c-.15-1.72-.297-2.713-.743-3.52a5.24 5.24 0 0 0-2.064-2.057c-.987-.543-2.254-.646-4.786-.853l-1.227-.1c-1.555-.128-2.333-.192-2.422-.32a.325.325 0 0 1-.003-.364c.087-.13.864-.206 2.417-.357l.812-.08V8.073a4.746 4.746 0 0 1 4.746-4.745h3.399l.048-.599c.14-1.722.209-2.585.34-2.673m7.177 12.66c-1.697.152-2.682.303-3.484.744a5.24 5.24 0 0 0-2.065 2.057c-.445.807-.592 1.8-.741 3.52h3.182a3.11 3.11 0 0 0 3.108-3.11zM8.029 4.964a3.11 3.11 0 0 0-3.11 3.109v3.152c1.79-.184 2.803-.342 3.62-.803a5.24 5.24 0 0 0 2.027-2.048c.432-.79.58-1.753.727-3.41z',
})
diff --git a/src/view/com/composer/ExternalEmbed.tsx b/src/view/com/composer/ExternalEmbed.tsx
index 272d09bab6..cc7b983c31 100644
--- a/src/view/com/composer/ExternalEmbed.tsx
+++ b/src/view/com/composer/ExternalEmbed.tsx
@@ -91,7 +91,7 @@ export const ExternalEmbedLink = ({
if (data.view && isStandardSiteEmbed(data.view.external)) {
return (