TownieChatRouteSingleColumn.tsx15 matches
9import { useUsageStats } from "../hooks/useUsageStats.ts";
10import { Messages } from "./Messages.tsx";
11import { InputBox, ImageDropContainer } from "./InputBox.tsx";
12import { PreviewFrame } from "./PreviewFrame.tsx";
13import { BranchSelect } from "./BranchSelect.tsx";
66refetch: () => void;
67}) {
68const [images, setImages] = useState<(string|null)[]>([]);
69const [selectedFiles, setSelectedFiles] = useState<string[]>([]);
70const { audio, user } = useContext(AppContext);
84branchId,
85selectedFiles,
86images,
87soundEnabled: audio,
88});
108109return (
110<ImageDropContainer
111running={running}
112images={images}
113setImages={setImages}>
114<div className="single-column-container">
115<div className="single-sticky-header">
119rel="norefferer"
120className="block-link text-link lockup">
121{project.imageUrl ? (
122<img src={project.imageUrl} className="image-thumbnail" />
123) : user?.profileImageUrl ? (
124<img
125src={user.profileImageUrl}
126className="avatar"
127alt={user.username}
130/>
131) : (
132<div className="image-placeholder" />
133)}
134<div>{project.name}</div>
153onSubmit={e => {
154handleSubmit(e);
155setImages([]);
156}}
157onCancel={handleStop}
158running={running}
159error={error}
160images={images}
161setImages={setImages}
162/>
163<Footer />
164</div>
165</div>
166</ImageDropContainer>
167);
168}
charmaineValSearchtypes.tsx8 matches
8username: z.string(),
9description: z.string().nullable(),
10image_url: z.string().nullable(),
11forked_branch_id: z.string().nullable(),
12updated_at: z.string().datetime(),
36username: string;
37project_url: string;
38image_url?: string | null;
39};
4047username: string | null;
48bio: string | null;
49profile_image_url: string | null;
50url: string;
51updated_at: string;
131username: string;
132url: string;
133profile_image_url: string | null;
134projectCount: number;
135};
139username: string;
140url: string;
141image_url: string | null;
142updated_at: string;
143};
165project_url: string;
166project_description: string | null;
167user_profile_image_url: string | null;
168update_count: number;
169featured?: boolean; // For marking vals to be featured in newsletter
176url: string;
177description: string | null;
178image_url: string | null;
179user_profile_image_url: string | null;
180edit_sessions: number; // Number of distinct edit sessions (grouped by timestamp)
181file_count: number;
charmaineValSearch.cursorrules2 matches
178179- **Redirects:** Use `return new Response(null, { status: 302, headers: { Location: "/place/to/redirect" }})` instead of `Response.redirect` which is broken
180- **Images:** Avoid external images or base64 images. Use emojis, unicode symbols, or icon fonts/libraries instead
181- **AI Image:** To inline generate an AI image use: `<img src="https://maxm-imggenurl.web.val.run/the-description-of-your-image" />`
182- **Storage:** DO NOT use the Deno KV module for storage
183- **Browser APIs:** DO NOT use the `alert()`, `prompt()`, or `confirm()` methods
FarcasterSpacesimage.tsx16 matches
8import { fetchUsersById } from './neynar.ts'
910export function handleImageEndpoints(app: Hono) {
11const headers = {
12'Content-Type': 'image/png',
13'cache-control': 'public, max-age=3600', // 86400
14}
15app.get('/image', async (c) => {
16const channel = c.req.query('channel')
17if (channel) return c.body(await spaceImage(channel), 200, headers)
18return c.body(await homeImage(), 200, headers)
19})
20app.get('/icon', async (c) => {
21const rounded = !!c.req.query('rounded')
22return c.body(await iconImage(rounded), 200, headers)
23})
24}
2526export async function homeImage() {
27return await ogImage(
28<div tw="w-full h-full flex justify-start items-end text-[100px] bg-black text-white p-[50px]">
29<div tw="flex flex-col items-start">
37}
3839export async function spaceImage(channel: string) {
40const space = await fetchSpace(channel)
41if (!space) return await homeImage()
4243const users = await fetchUsersById([space.created_by, ...space.hosts, ...space.speakers].join(','))
48const speakers = users?.filter((u) => speakerFids.includes(u.fid))
4950return await ogImage(
51<div tw="w-full h-full flex justify-start items-start text-[100px] bg-black text-white p-[50px]">
52<div tw="flex flex-col items-start ">
84}
8586export async function iconImage(rounded = false) {
87const roundedClass = rounded ? 'rounded-[96px]' : ''
88return await ogImage(
89<div tw={`w-full h-full flex justify-center items-center text-[100px] bg-[#7c65c1] text-white p-[50px] ${roundedClass}`}>
90<img tw="w-[350px] h-[350px]" src={base64Icon(Mic)} />
99//////////
100101export async function ogImage(body, options = {}) {
102const svg = await satori(body, {
103width: 945,
109if (code === 'emoji') {
110const unicode = segment.codePointAt(0).toString(16).toUpperCase()
111return `data:image/svg+xml;base64,` + btoa(await loadEmoji(unicode))
112}
113return ''
145const base64 = Buffer.from(svg).toString('base64')
146// console.log('getIconDataUrl', name, svg, base64)
147return `data:image/svg+xml;base64,${base64}`
148}
149
FarcasterSpacesfarcaster.ts4 matches
5export const name = 'Spaces'
6// export const iconUrl = "https://imgur.com/FgHOubn.png";
7// export const ogImageUrl = "https://imgur.com/oLCWKFI.png";
89export function embedMetadata(baseUrl: string, path: string = '/') {
11return {
12version: 'next',
13imageUrl: baseUrl + '/image' + (channel ? '?channel=' + channel : ''),
14button: {
15title: name,
18name: name,
19url: baseUrl + path,
20splashImageUrl: baseUrl + '/icon',
21splashBackgroundColor: '#111111',
22},
47iconUrl: baseUrl + '/icon',
48homeUrl: baseUrl,
49splashImageUrl: baseUrl + '/icon?rounded=1',
50splashBackgroundColor: '#111111',
51subtitle: 'Live audio conversations',
waho_pro_advancenewpage.tsx6 matches
7return (
8<div className="no-internet-container">
9<img src="https://i.postimg.cc/t4q16WRj/images.png" alt="No Internet" />
10<div className="no-internet-message">
11No internet connection
20}
2122function Slideshow({ images }) {
23useEffect(() => {
24let currentSlideIndex = 0;
70slides[0].style.left = "0%";
71}
72}, []); // images dependency removed to run once, assuming images don't change post-mount
7374return (
75<div className="slideshow-container">
76{images.map((src, index) => (
77<img key={index} className={`mySlides ${index === 0 ? "visible" : ""}`} src={src} alt={`Slide ${index + 1}`} />
78))}
593}
594595const slideshowImages = [
596"https://i.postimg.cc/KvSbQsgQ/download-4.png",
597"https://i.postimg.cc/NMzVyLRp/download-5.png",
662</div>
663</div>
664<Slideshow images={slideshowImages} />
665<Card {...loginCardData} />
666<Card {...scanCodeCardData} />
book-lookup-browsertypes.ts1 match
19previewLink?: string;
20infoLink?: string;
21imageLinks?: any;
22}
23
book-lookup-browserprocessor.ts2 matches
164}
165
166if (metadata.imageLinks) {
167updateMetadata.imageLinks = metadata.imageLinks;
168}
169
book-lookup-browsernotion.ts6 matches
21previewLink?: string;
22infoLink?: string;
23imageLinks?: string; // Store as JSON string
24// Status tracking
25processed?: boolean;
46previewLink?: string;
47infoLink?: string;
48imageLinks?: {
49smallThumbnail?: string;
50thumbnail?: string;
250previewLink: page.properties['Preview Link']?.url,
251infoLink: page.properties['Info Link']?.url,
252imageLinks: page.properties['Image Links']?.rich_text?.[0]?.text?.content,
253processed: page.properties.Processed?.checkbox,
254lastUpdated: page.properties['Last Updated']?.last_edited_time,
415}
416417if (metadata.imageLinks) {
418additionalProperties['Image Links'] = {
419rich_text: [
420{
421text: {
422content: JSON.stringify(metadata.imageLinks)
423}
424}
book-lookup-browserbooks.ts5 matches
132}
133134if (volumeInfo.imageLinks) {
135metadata.imageLinks = volumeInfo.imageLinks;
136}
137238canonicalVolumeLink: volumeInfo.canonicalVolumeLink,
239isbn: isbn,
240imageLinks: volumeInfo.imageLinks,
241score: (titleMatch ? 2 : 0) + (authorMatch ? 2 : 0)
242});
318}
319320if (best.imageLinks) {
321metadata.imageLinks = best.imageLinks;
322}
323