stevensDemo.cursorrules2 matches
187## Val Town Platform Specifics
188- **Redirects:** Use `return new Response(null, { status: 302, headers: { Location: "/place/to/redirect" }})` instead of `Response.redirect` which is broken
189- **Images:** Avoid external images or base64 images. Use emojis, unicode symbols, or icon fonts/libraries instead
190- For AI-generated images, use: `https://maxm-imggenurl.web.val.run/the-description-of-your-image`
191- **Storage:** DO NOT use the Deno KV module for storage
192- **Browser APIs:** DO NOT use the `alert()`, `prompt()`, or `confirm()` methods
stevensDemoassets.ts6 matches
2// Background
3BACKGROUND:
4"https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/8b501664-722e-4be8-cf71-83aab7756e00/public",
56// Stevens
7STEVENS_FRONT:
8"https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/8b8432bb-add2-44ad-bb12-44b8ea215500/public",
9STEVENS_BACK:
10"https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/e28da8ab-7710-4b82-8e32-8fdf65c2ed00/public",
11STEVENS_WALKING:
12"https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/bd7b9997-09b2-4b35-6eb9-9975a85bb700/public",
1314// Mailman
15MAILMAN_STANDING:
16"https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/20a6493d-cc31-475e-aa83-ac97d317e400/public",
17MAILMAN_WALKING:
18"https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/61604576-8a83-4d85-d5e4-8e8e26641700/public",
19};
20
stevensDemoApp.tsx25 matches
82const [cookieAndTeaMode, setCookieAndTeaMode] = useState(false);
8384// Fetch images from backend instead of blob storage directly
85useEffect(() => {
86// Set default background color in case image doesn't load
87if (document.body) {
88document.body.style.backgroundColor = "#2D1700"; // Dark brown leather color
89}
9091// Fetch avatar image
92fetch("/api/images/stevens.jpg")
93.then((response) => {
94if (response.ok) return response.blob();
95throw new Error("Failed to load avatar image");
96})
97.then((imageBlob) => {
98const url = URL.createObjectURL(imageBlob);
99setAvatarUrl(url);
100})
104105// Fetch wood background
106fetch("/api/images/wood.jpg")
107.then((response) => {
108if (response.ok) return response.blob();
109throw new Error("Failed to load wood background");
110})
111.then((imageBlob) => {
112const url = URL.createObjectURL(imageBlob);
113setWoodUrl(url);
114115// Apply wood background to body
116if (document.body) {
117document.body.style.backgroundImage = `url(${url})`;
118}
119})
362return {
363position: SCENE_ELEMENTS.DESK_SITTING,
364image: ASSETS.STEVENS_FRONT,
365highlightElement: SCENE_ELEMENTS.DESK,
366animationClass: "no-animation",
372return {
373position: SCENE_ELEMENTS.DESK_SITTING,
374image: ASSETS.STEVENS_FRONT,
375highlightElement: null,
376animationClass: "no-animation",
387y: SCENE_ELEMENTS.MAILBOX.y - 20,
388},
389image: ASSETS.STEVENS_BACK,
390highlightElement: SCENE_ELEMENTS.MAILBOX,
391animationClass: "walk-to-mailbox",
398y: SCENE_ELEMENTS.CALENDAR.y + 30,
399},
400image: ASSETS.STEVENS_BACK,
401highlightElement: SCENE_ELEMENTS.CALENDAR,
402animationClass: "walk-to-calendar",
409y: SCENE_ELEMENTS.TELEGRAM.y + 10,
410},
411image: ASSETS.STEVENS_BACK,
412highlightElement: SCENE_ELEMENTS.TELEGRAM,
413animationClass: "walk-to-telegram",
417return {
418position: SCENE_ELEMENTS.OUTSIDE,
419image: ASSETS.STEVENS_FRONT,
420highlightElement: null,
421animationClass: "walk-to-outside",
425return {
426position: SCENE_ELEMENTS.DESK_SITTING,
427image: ASSETS.STEVENS_FRONT,
428highlightElement: SCENE_ELEMENTS.DESK,
429animationClass: "walk-to-desk",
623box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.4),
6240 3px 8px rgba(0, 0, 0, 0.5);
625image-rendering: pixelated;
626cursor: pointer;
627transition: transform 0.2s;
634.notebook-pages {
635background-color: #f8f1e0;
636background-image: linear-gradient(#d6c6a5 1px, transparent 1px);
637background-size: 100% 16px;
638box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.3);
639image-rendering: pixelated;
640}
641652653.pixel-character {
654image-rendering: pixelated;
655position: absolute;
656transition: left 0.7s ease-in-out, top 0.7s ease-in-out;
763className="w-[512px] h-[512px] mx-auto relative"
764style={{
765backgroundImage: `url(${ASSETS.BACKGROUND})`,
766backgroundSize: "cover",
767backgroundPosition: "center",
768imageRendering: "pixelated",
769}}
770>
799{/* Stevens character */}
800<img
801src={stevensState.image}
802alt="Stevens"
803className={`pixel-character ${
pbackindex.html3 matches
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<title>Text Studio - Professional Image Typography</title>
7<meta name="description" content="Create stunning image-textured typography with professional tools and Apple-inspired design">
8<meta name="theme-color" content="#000000">
9
13
14<!-- Favicon -->
15<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><defs><linearGradient id='g' x1='0%' y1='0%' x2='100%' y2='100%'><stop offset='0%' stop-color='%23007AFF'/><stop offset='100%' stop-color='%23AF52DE'/></linearGradient></defs><rect width='100' height='100' rx='20' fill='url(%23g)'/><text x='50' y='65' font-family='system-ui' font-size='45' font-weight='bold' text-anchor='middle' fill='white'>TS</text></svg>">
16
17<!-- Apple Web App Meta Tags -->
148/* Canvas container with transparency grid */
149.canvas-container {
150background-image:
151linear-gradient(45deg, rgba(255, 255, 255, 0.1) 25%, transparent 25%),
152linear-gradient(-45deg, rgba(255, 255, 255, 0.1) 25%, transparent 25%),
NowPlayingGrabbermain.tsx8 matches
41if (response.status > 400) {
42const shortenedName = "Error (Forbidden)";
43const image = SPOTIFY_LOGO;
44return { shortenedName, image };
45} else if (response.status === 204) {
46const shortenedName = "Currently Not Playing";
47const image = SPOTIFY_LOGO;
48return { shortenedName, image };
49}
5051const song = await response.json();
52const image = song.item.album.images[0].url;
53const artistNames = song.item.artists.map(a => a.name);
54const link = song.item.external_urls.spotify;
67formattedArtist,
68artistLink,
69image,
70};
71} catch (error) {
72const shortenedName = "Error";
73const image = SPOTIFY_LOGO;
74return { shortenedName, image };
75}
76};
photobackgroundParticleSystem.js2 matches
126tempCtx.fillText(text, tempCanvas.width / 2, tempCanvas.height / 2);
127
128const imageData = tempCtx.getImageData(0, 0, tempCanvas.width, tempCanvas.height);
129const data = imageData.data;
130
131this.textPath = [];
photobackgroundNeuralNetwork.js2 matches
237tempCtx.fillText(text, this.canvas.width / 2, this.canvas.height / 2);
238
239const imageData = tempCtx.getImageData(0, 0, tempCanvas.width, tempCanvas.height);
240const data = imageData.data;
241
242this.textPath = [];
photobackgroundREADME.md2 matches
68- **Real-time Rendering**: Optimized canvas operations and GPU acceleration
69- **Color Theory**: HSL/RGB conversion and perceptual color spaces
70- **Image Processing**: Edge detection, convolution, and filtering
7172## 🎯 Visual Psychology Integration
963. **Select Algorithm**: Choose from 8 advanced filling methods
974. **Customize Parameters**: Adjust real-time controls for each algorithm
985. **Export Results**: Save your creations as high-quality images
99100## 🔧 Technical Specifications
photobackgroundGradientFlow.js4 matches
70tempCtx.fillText(text, this.canvas.width / 2, this.canvas.height / 2);
71
72this.textMask = tempCtx.getImageData(0, 0, tempCanvas.width, tempCanvas.height);
73
74// Generate flow sources at text boundaries
325const height = this.colorField.length;
326
327const imageData = this.ctx.createImageData(this.canvas.width, this.canvas.height);
328const data = imageData.data;
329
330for (let y = 0; y < this.canvas.height; y++) {
349}
350
351this.ctx.putImageData(imageData, 0, 0);
352}
353