@aglyn/plugins-ai 1.0.0-beta.266 → 1.0.0-beta.269
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +18 -18
- package/src/lib/components/ai-job-site.d.ts +8 -1
- package/src/lib/components/ai-job-site.js +7 -0
- package/src/lib/components/ai-job-site.js.map +1 -1
- package/src/lib/components/ai-site-build-page.component.js +37 -0
- package/src/lib/components/ai-site-build-page.component.js.map +1 -1
- package/src/lib/components/ai-site-start-card.component.js +25 -6
- package/src/lib/components/ai-site-start-card.component.js.map +1 -1
- package/src/lib/components/ai-site-start-steps.component.d.ts +8 -2
- package/src/lib/components/ai-site-start-steps.component.js +55 -26
- package/src/lib/components/ai-site-start-steps.component.js.map +1 -1
- package/src/lib/components/ai-site-start-tracking.d.ts +11 -3
- package/src/lib/components/ai-site-start-tracking.js +28 -9
- package/src/lib/components/ai-site-start-tracking.js.map +1 -1
- package/src/lib/components/assist-jobs-drawer.component.js +24 -2
- package/src/lib/components/assist-jobs-drawer.component.js.map +1 -1
- package/src/lib/jobs/ai-empty-site-sweep.d.ts +154 -0
- package/src/lib/jobs/ai-empty-site-sweep.js +346 -0
- package/src/lib/jobs/ai-empty-site-sweep.js.map +1 -0
- package/src/lib/jobs/ai-job-page-language.d.ts +7 -1
- package/src/lib/jobs/ai-job-page-language.js +16 -3
- package/src/lib/jobs/ai-job-page-language.js.map +1 -1
- package/src/lib/jobs/ai-job-site-look.d.ts +2 -1
- package/src/lib/jobs/ai-job-site-look.js +6 -2
- package/src/lib/jobs/ai-job-site-look.js.map +1 -1
- package/src/lib/jobs/ai-job-site-step.js +11 -6
- package/src/lib/jobs/ai-job-site-step.js.map +1 -1
- package/src/lib/jobs/ai-jobs-beat.d.ts +11 -3
- package/src/lib/jobs/ai-jobs-beat.js +23 -6
- package/src/lib/jobs/ai-jobs-beat.js.map +1 -1
- package/src/lib/jobs/ai-jobs.js +46 -7
- package/src/lib/jobs/ai-jobs.js.map +1 -1
- package/src/lib/jobs/ai-layout-stock-photos.d.ts +43 -0
- package/src/lib/jobs/ai-layout-stock-photos.js +735 -22
- package/src/lib/jobs/ai-layout-stock-photos.js.map +1 -1
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3923-recordings.d.ts +35 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3923-recordings.js +379 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-agl3923-recordings.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-brightvale-recordings.d.ts +35 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-brightvale-recordings.js +294 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-brightvale-recordings.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-mexicano-recordings.d.ts +31 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-mexicano-recordings.js +325 -0
- package/src/lib/jobs/fixtures/ai-stock-photo-mexicano-recordings.js.map +1 -0
- package/src/lib/layout-language/ai-layout-design.js +5 -0
- package/src/lib/layout-language/ai-layout-design.js.map +1 -1
- package/src/lib/layout-language/ai-layout-motion.d.ts +60 -7
- package/src/lib/layout-language/ai-layout-motion.js +231 -4
- package/src/lib/layout-language/ai-layout-motion.js.map +1 -1
- package/src/lib/layout-language/ai-layout-pictures.d.ts +8 -0
- package/src/lib/layout-language/ai-layout-pictures.js +68 -4
- package/src/lib/layout-language/ai-layout-pictures.js.map +1 -1
- package/src/lib/model/ai-jobs.types.d.ts +20 -0
- package/src/lib/model/ai-jobs.types.js.map +1 -1
- package/src/lib/model/ai-site-look.d.ts +10 -1
- package/src/lib/model/ai-site-look.js +14 -3
- package/src/lib/model/ai-site-look.js.map +1 -1
- package/src/lib/model/ai-site-start-handoff.d.ts +49 -0
- package/src/lib/model/ai-site-start-handoff.js +88 -0
- package/src/lib/model/ai-site-start-handoff.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../libs/plugins/ai/src/lib/jobs/fixtures/ai-stock-photo-mexicano-recordings.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { StockPhoto } from '@aglyn/aglyn/plugin-manager/stock-photo-provider'\n\n/**\n * PIXABAY'S RECORDED ANSWERS FOR THE BETA.266 MEXICANO PORTFOLIO START\n * (AGL-3923, job C75nFALn3H, host 7R9loxHdfa, 2026-10-18 16:52Z): the seven\n * searches its home page sent, every one new to the cache, written\n * 16:54:36-38Z. Read back from production's `stockPhotoSearches` by each\n * search's key (a SHA-256 of the provider and the request's canonical\n * parameters), never searched again. Ids, sizes, page slugs and tags are\n * Pixabay's own, in its order; the contributor is left out.\n */\n\nconst hit = (id: number, width: number, height: number, slug: string, tags: string): StockPhoto =>\n ({\n provider: 'pixabay',\n id: String(id),\n width,\n height,\n pageUrl: `https://pixabay.com/photos/${slug}/`,\n photographer: 'A Pixabay contributor',\n tags: tags ? tags.split(', ') : [],\n downloadUrl: `https://pixabay.com/get/g${id}_1280.jpg`,\n }) as StockPhoto\n\n/** `artist` (horizontal, min_width 1600), the home hero's search; key `e22146e5c28e81400f7b00ff0ef9ad3beb46784a1c20b4b85614f17b21e57f72`, answered 2026-10-18T16:54:36.783Z. */\nexport const ARTIST_HERO: StockPhoto[] = [\n hit(343674, 1280, 853, 'man-artist-street-painter-painting-343674', 'man, artist, street, painter, painting, art, jesus, old man, elderly man, street photography, artist, artist, painter, art, jesus, jesus, jesus, jesus, jesus, old man'),\n hit(3129361, 1280, 854, 'brushes-painter-work-shop-bowl-3129361', 'brushes, painter, work shop, bowl, lights, work, creative, creativity, painting, artist, paintbrush, studio, art, brush, drawing, artistic, hobby, color, tool, paint'),\n hit(1868562, 1280, 853, 'hands-paint-brush-painting-1868562', 'hands, paint, brush, painting, watercolor, watercolor painting, paintbrush, artist, canvas, art, paper, arts, painter, artistic, creative, creativity, painting, painting, painting, painting'),\n hit(1209519, 1280, 878, 'art-paint-water-colors-desk-artist-1209519', 'art, paint, water colors, desk, artist, equipment, painting, craft, drawing, paintbrushes, paper, creative, creativity, picture, colors, art, art, art, art, art'),\n hit(911804, 1280, 720, 'painting-pencils-paint-pens-911804', 'painting, pencils, paint, pens, watercolor, acrylic, watercolor painting, art tools, art materials, painting, painting, painting, painting, painting, paint, paint'),\n hit(3008031, 1280, 853, 'artist-pen-painting-man-elderly-3008031', 'artist, pen, painting, man, elderly, glasses, craftsman, traditional, tradition, artistic, culture, painter, drawing, asian, laos, asia, artist, artist, artist, artist'),\n hit(1478831, 1280, 855, 'art-art-supplies-artist-blue-brush-1478831', 'art, art supplies, artist, blue, brush, beautiful wallpaper, desktop backgrounds, color, creative, draw, paint, wallpaper hd, painting, wallpaper 4k, supplies, watercolor, laptop wallpaper, watercolour, background, cool backgrounds'),\n hit(7705881, 1280, 853, 'paintbrush-to-paint-multicoloured-7705881', 'paintbrush, to paint, multicoloured, creative, colour, art, fantasy, abstract, creative, art, fantasy, abstract, abstract, abstract, abstract, abstract'),\n hit(4622221, 1280, 854, 'artist-studio-art-sculpture-4622221', 'artist, studio, art, sculpture, workshop, old man, tools, sculptor, creation, exhibit, working, professional, artwork, artist, artist, artist, artist, artist, studio, sculpture'),\n hit(2676392, 1280, 853, 'makeup-beauty-muah-brushes-tassels-2676392', 'makeup, beauty, muah, brushes, tassels, cosmetics, eyeshadow, palette, makeup artist, stylist, beauty salon, brush, highlighter, powder, pomade, artist, makeup, makeup, makeup, makeup'),\n hit(4226688, 1280, 853, 'brushes-paint-color-painting-4226688', 'brushes, paint, color, painting, watercolor, artist, creative, creativity, palette, paintbrush, drawing, paint, paint, painting, painting, painting, painting, painting, watercolor, artist'),\n hit(3411110, 1280, 853, 'rose-flowers-painter-paint-3411110', 'rose, flowers, flower background, painter, paint, flower wallpaper, red rose, rose garden, nature, tabitha, romantic, love, beautiful flowers, rose flower, figure'),\n hit(756326, 1280, 850, 'guitar-guitarist-music-756326', 'guitar, guitarist, music, playing guitar, classical guitar, acoustic guitar, musician, band, sound, recording, audio, musical, musical instrument, instrument, playing, artist, performer, professional, jazz, player'),\n hit(1683134, 1280, 853, 'brushes-art-paint-tool-decor-1683134', 'brushes, art, paint, tool, decor, bristles, decoration, painting, artistic, color, painter, creative, studio, canvas, create, creativity, oil, picture, inspiration, art'),\n hit(7173006, 1280, 854, 'calligraphy-writing-woman-pen-7173006', 'calligraphy, writing, woman, pen, nature, study, water, colors, hand'),\n hit(2927793, 1280, 854, 'brushes-chalks-colorful-2927793', 'brushes, chalks, colorful, art materials, art supplies, coloring materials, paint, pens, art, artistic, creative, art supplies, art supplies, art, art, art, art, art'),\n hit(9433099, 1280, 1280, 'painting-artist-art-brash-9433099', 'painting, artist, art, brash, wood texture, calligraphy'),\n hit(9718039, 1280, 853, 'artist-bee-giant-artist-bee-lavender-9718039', 'artist bee, giant artist bee, nature, lavender, summer, garden, insects, pollinators'),\n hit(505353, 1280, 1280, 'man-artist-drawing-painting-505353', 'man, artist, drawing, painting, elderly, senior, old, aged, male, artist, artist, artist, artist, artist, drawing, drawing, drawing, painting, painting'),\n hit(7402145, 1280, 853, 'blackandwhite-happy-guitarist-7402145', 'blackandwhite, happy, guitarist, singing, africanamerican, people, portrait, instrument, forrest, woods, man, singing, singing, singing, singing, singing, people'),\n hit(1840481, 1280, 1280, 'art-brushes-colorful-paint-1840481', 'art, brushes, colorful, paint, paintbrushes, painting, artist, artistic, creative, creativity, art, art, art, art, art, paint, paint, paint, painting, painting'),\n hit(1937575, 1280, 854, 'painter-paint-artist-brush-tool-1937575', 'painter, paint, artist, brush, tool, color, design, creative, painting, drawing, creativity, art, colorful, craft, artistic, palette, acrylic, dye, draw, painter'),\n hit(9718040, 1280, 853, 'artist-bee-giant-artist-bee-lavender-9718040', 'artist bee, giant artist bee, lavender, summer, nature, garden, insects, pollinators'),\n hit(9032881, 1280, 853, 'woman-painting-brush-canvas-9032881', 'woman, painting, brush, canvas, support, fruits, still life, talent, public, street, urban, artwork, attraction, artist, art, outdoors'),\n hit(2940513, 1280, 1010, 'paint-acrylic-paint-art-supplies-2940513', 'paint, acrylic paint, art supplies, paintbrush, hobby, creative, oil painting, paint tubes, paint, paint, paint, paint, paint, acrylic paint, art supplies, art supplies, hobby, hobby, hobby, oil painting'),\n hit(3268988, 1280, 853, 'tattoo-tattoo-artist-arm-3268988', 'tattoo, tattoo artist, arm, tattoo, tattoo, tattoo, tattoo, tattoo'),\n hit(4494491, 1280, 853, 'male-black-and-white-portrait-face-4494491', 'male, black and white, portrait, face, young, model, human, think, handsome, guy, confident, man, adult, head, human, human, human, human, human, think'),\n hit(8399526, 1280, 853, 'boy-busker-playing-trumpet-8399526', 'boy, busker, playing, trumpet, wind instrument, outdoors, public place, street, building, urban, support, music, snapshot, attraction, tourism, young, street photography, coat, casual, talent'),\n hit(1869492, 1280, 960, 'chalks-colorful-multicolored-1869492', 'chalks, colorful, multicolored, drawing, artistic, arts, colors, coloring materials, art materials, creative, creativity, chalks, drawing, drawing, drawing, drawing, drawing, creative, creative, creativity'),\n hit(1850856, 1280, 853, 'paint-brushes-paint-tubes-1850856', 'paint, brushes, paint tubes, paint brushes, artistic, creative, art materials, oil paint, painting materials, arts, artist, paint, paint brushes, paint brushes, creative, art materials, artist, artist, artist, artist'),\n hit(4159435, 1280, 853, 'painting-girl-brush-art-colors-4159435', 'painting, girl, brush, art, colors, palette, creativity, painting, painting, painting, painting, painting, art, creativity, creativity, creativity'),\n hit(4155023, 1280, 853, 'workplace-macbook-computer-digital-4155023', 'workplace, macbook, computer, digital, oil painting, technology, work, creative, digital, creative, creative, creative, creative, creative'),\n hit(4030112, 1280, 845, 'man-face-painting-brushes-art-4030112', 'man, face, painting, brushes, art, artist, portrait, painting, painting, painting, painting, art, art, art, art, artist, artist, artist, artist, artist'),\n hit(2179313, 1280, 720, 'man-band-guitar-singer-guitarist-2179313', 'man, band, guitar, singer, guitarist, concert, concert hall, festival, instrument, microphone, music, musician, performance, stage, stringed instrument, monochrome, band, band, band, guitar'),\n hit(7937871, 1280, 853, 'paint-artist-supplies-art-creation-7937871', 'paint, artist supplies, art, creation, drawing, paint, paint, paint, paint, paint, drawing'),\n hit(1380108, 1280, 719, 'graffiti-artist-graffiti-art-1380108', 'graffiti, artist, graffiti art, street art, brick walls, ladder, spray paint, spray painting, graffiti artist, culture, graffiti wall, outdoors, street, urban, wall, wall art, creativity, spray, paint, male'),\n hit(5049980, 1280, 960, 'watercolor-portrait-painting-art-5049980', 'watercolor, portrait, painting, art, paper, watercolor, watercolor, painting, painting, painting, painting, painting, art, art, lednické rovne, slovakia, trenčín region'),\n hit(6392282, 1280, 783, 'painting-artist-canvas-creative-6392282', 'painting, artist, canvas, creative, artist painting, paintbrush, colorful, artistic, artwork, artist, artist, artist, artist, artist, paintbrush, paintbrush, paintbrush'),\n hit(2740463, 1280, 771, 'paint-tubes-paint-caps-art-2740463', 'paint tubes, paint, caps, art, painting, colors, artist, palette, blue art, blue painting, blue paint, blue color, art, painting, artist, artist, artist, artist, artist, blue color'),\n hit(1713769, 1280, 853, 'face-painting-child-make-up-face-1713769', 'face painting, child, make up, face, fun, pleasure, butterfly, glitter, motive, face painting, face painting, face painting, face painting, face painting, make up'),\n]\n\n/** `project` (horizontal, min_width 900), \"Project one\" and \"Project four\"; key `8a55f0313a03766e82b1ba9eb52b53443a6072cdafb95f9098abf1d8d6812ff1`, answered 2026-10-18T16:54:37.095Z. */\nexport const PROJECT_WIDE: StockPhoto[] = [\n hit(2557396, 1280, 853, 'people-girls-women-students-2557396', 'people, girls, women, students, friends, talking, meeting, study, group, activity, homework, group work, brainstorming, group study, people, people, people, students, students, students'),\n hit(5382501, 1280, 771, 'job-office-team-business-internet-5382501', 'job, office, team, business, internet, technology, design, draft, portable, meeting, job, office, office, office, office, team, team, business, business, business'),\n hit(594091, 1280, 853, 'meeting-brainstorming-business-594091', 'meeting, brainstorming, business, teamwork, team, people, office, group, corporate, conference, colleagues, company, partnership, project, table, partners, plan, sketch, notepad, coworkers'),\n hit(2284501, 1280, 800, 'meeting-business-architect-office-2284501', 'meeting, business, architect, office, team, plan, blueprints, teamwork, group, people, project, workplace, table, desk, meeting, meeting, meeting, business, business, business'),\n hit(594132, 1280, 853, 'office-startup-business-home-office-594132', 'office, startup, business, home office, businessman, notebook, laptop, computer, company, people, marketing, planning, strategy, project, creative, technology, start-up, organization, development, commerce'),\n hit(594090, 1280, 853, 'startup-meeting-brainstorming-594090', 'startup, meeting, brainstorming, business, teamwork, team, people, office, group, corporate, conference, colleagues, company, partnership, seminar, project, table, professionals, casual, partners'),\n hit(3267505, 1280, 853, 'startup-whiteboard-room-indoors-3267505', 'startup, whiteboard, room, indoors, adult, office, business, technology, male, corporate, design, designer, brainstorm, startup, office, business, business, business, business, business'),\n hit(2557399, 1280, 853, 'people-girls-women-students-2557399', 'people, girls, women, students, friends, study, school, activity, homework, colorful, pens, drawing, sketch, students, students, students, friends, study, study, school'),\n hit(1868728, 1280, 853, 'concept-man-papers-person-plan-1868728', 'concept, man, papers, person, plan, planning, research, thinking, whiteboard, blue paper, blue thinking, blue research, blue plan, blue planning, blue think, plan, plan, planning, planning, research'),\n hit(1837238, 1280, 960, 'blueprints-entrepreneur-hands-1837238', 'blueprints, entrepreneur, hands, laptop, macbook, mobile phone, notebook, schematics, working, planning, gray computer, gray laptop, gray work, gray phone, gray mobile, gray plan, gray smartphone, gray telephone, gray planning, gray entrepreneur'),\n hit(4545708, 1280, 853, 'forforest-klagenfurt-austria-mood-4545708', 'forforest, klagenfurt, austria, mood, art project, art, forest, nature, stadium, project, environment'),\n hit(3125882, 1280, 768, 'triangle-quality-time-cost-3125882', 'triangle, quality, time, cost, efficiently, business, projects, drawing, board, profit, optimization, management, budget, yield, lodestar, realize, how to calculate, draw, chalk, representation'),\n hit(4577586, 1280, 730, 'forforest-klagenfurt-austria-forest-4577586', 'forforest, klagenfurt, austria, forest, stadium, project, art project, nature, art, environment'),\n hit(2738526, 1280, 851, 'project-planning-business-management-2738526', 'project planning, business, management, professional, success, project, project planning, project planning, project planning, project planning, project planning, project, project, project, project'),\n hit(4051777, 1280, 786, 'work-work-process-to-organize-4051777', 'work, work process, to organize, business, office, team, structure, organization, workflow, development, planning, management, success, company, team, team, planning, planning, planning, management'),\n hit(2650382, 1280, 853, 'technology-pressure-lead-set-2650382', 'technology, pressure, lead set, printing house, barmbek, museum of work, hamburg, project, printing house, printing house, printing house, printing house, printing house'),\n hit(4780150, 1280, 681, 'startup-planning-team-computing-4780150', 'startup, planning, team, computing, programming, whiteboard, girl, laptop, project, strategy, work, technology, entrepreneur, whiteboard, whiteboard, whiteboard, whiteboard, whiteboard'),\n hit(849805, 1280, 853, 'startup-business-people-students-849805', 'startup, business, people, students, office, strategy, work, technology, company, corporate, communication, young, plan, marketing, computer, design, professional, planning, internet, project'),\n hit(2852375, 1280, 853, 'stickies-post-it-note-business-2852375', 'stickies, post-it, note, business, career, start-up, company, competence, concept, conceptual, employee, employment, future, goal, idea, job, opportunity, orientation, plan, professional'),\n hit(593343, 1280, 848, 'startup-start-up-people-593343', 'startup, start-up, people, silicon valley, teamwork, business, team, office, group, meeting, corporate, conference, businessman, company, men, partnership, table, technology, casual, successful'),\n hit(3683781, 1280, 853, 'business-idea-planning-board-3683781', 'business idea, planning, board, business plan, business, plan, strategy, vision, mission, work, finance, team, teamwork, success, advisor, profession, successful, expert, career, professional'),\n hit(10503583, 1280, 714, 'office-environment-discussion-10503583', 'office environment, discussion, collaboration, presentation, business, technology, ties, work environment, people, conference, colleagues, modern office, laptops, screen, caucasian, african american, asian women, office desk, modern technology, productivity'),\n hit(4702962, 1280, 853, 'mega-project-construction-4702962', 'mega project, construction, infrastructure, urban, engineering, improvement, beautification, civil engineering, city blocks, landscape, cityscape, skyscraper, waterfront, civil engineering, civil engineering, civil engineering, civil engineering, civil engineering'),\n hit(10171012, 1280, 714, 'eam-workshop-office-collaboration-10171012', 'eam, workshop, office, collaboration, sticky notes, planning, strategy, brainstorming, table, overhead, people, working, laptop, notebooks, creativity, business, meeting, together, analysis, group'),\n hit(3772738, 1280, 722, 'industrial-lisbon-fans-steel-3772738', 'industrial, lisbon, fans, steel, project, portugal'),\n hit(5972673, 1280, 720, 'hotel-sign-board-style-logo-5972673', 'hotel, sign, board, style, logo, design, modern, project, luxury, decoration, ornate, creative, event, elegant, elegance'),\n hit(4051773, 1280, 849, 'business-office-team-kanban-work-4051773', 'business, office, team, kanban, work, work process, to organize, structure, organization, workflow, development, planning, management, success, company, team, team, kanban, kanban, kanban'),\n hit(5235095, 1280, 853, 'projects-open-project-idea-5235095', 'projects, open, project, idea, strategy, creativity, creative, think, begin, management, work, inspiration, template, list, laptop, ideas, mockup, project, project, list'),\n hit(3105873, 1280, 802, 'businessman-plan-quality-strategy-3105873', 'businessman, plan, quality, strategy, team, production planning, steering, structural organization, work process, finance, business administration, work organization, flow of information, information logistics, information management, business informatics, logistics, glass, glass pane, organization'),\n hit(4854099, 1280, 1025, 'dining-tables-caf%C3%A9-a-restaurant-4854099', 'dining tables, café, a restaurant, interior design, designers, project, computer graphics, vacation, dinner, bistro, interior design, interior design, interior design, interior design, interior design, bistro, bistro, bistro, bistro, bistro'),\n hit(4927716, 1280, 854, 'engineer-noise-and-vibration-engineer-4927716', 'engineer, noise and vibration engineer, drawing, sketch, diagram, office, teamwork, design, blueprint, blueprint, blueprint, blueprint, blueprint, blueprint'),\n hit(2717427, 1280, 853, 'business-contract-b-agreement-2717427', 'business, contract, b, agreement, business deal, trade, consultation, signature, concept, team, form, file, document, documents, ballpoint pen, paper, conclusion, plan, planning, housebuilding'),\n hit(594127, 1280, 853, 'startup-business-businessman-594127', 'startup, business, businessman, notebook, laptop, computer, company, office, people, marketing, planning, strategy, project, creative, technology, start-up, organization, development, commerce, internet'),\n hit(2762319, 1280, 848, 'building-professional-employee-2762319', 'building, professional, employee, builder, worker, architect, repair, operator, security, business, build, body, man, factory, helmet, surveyor, helm, corporation, people, foreman'),\n hit(3536753, 1280, 853, 'planning-housebuilding-pre-project-3536753', 'planning, housebuilding, pre-project, to build, design, engineer, architect, single family home, architecture, building, blueprint, engineer, architect, architect, architect, architect, architect, blueprint, blueprint, blueprint'),\n hit(5090787, 1280, 851, 'crane-building-works-city-urban-5090787', 'crane, building, works, city, urban, project, to build, real estate, engineering, development'),\n hit(2468080, 1280, 659, 'construction-site-georgia-usa-2468080', 'construction site, georgia, usa, landscape, dirt, red clay dirt, construction, site, architecture, building, industry, equipment, sky, bulldozer, urban, build, property, excavation, dirt mover, engineering'),\n hit(1953367, 1280, 853, 'worker-yard-safety-child-surveyor-1953367', 'worker, yard safety, child, surveyor, worksite, safety device, project, design, architecture, child labour, surveyor, surveyor, child labour, child labour, child labour, child labour, child labour'),\n hit(4941336, 1280, 854, 'engineer-engineering-4941336', 'engineer, engineering, electrical engineer, electrical engineering, teamwork, office, meeting, whiteboard, gray office, gray meeting, gray conference, gray teamwork, engineer, engineer, meeting, whiteboard, whiteboard, whiteboard, whiteboard, whiteboard'),\n hit(10503582, 1280, 714, 'teamwork-management-office-10503582', 'teamwork, management, office, presentation, strategy, whiteboard, collaboration, innovation, discussion, people, meeting, idea, motivation, professional, cooperation, information, problem solving, profession'),\n]\n\n/** `project` (vertical, min_height 900), \"Project two\" and \"Project three\"; key `d1c1a97fb66558d3d4b2c22e0b0b6ceb426567798a7b9f235f2c4a85d4eff580`, answered 2026-10-18T16:54:37.312Z. */\nexport const PROJECT_TALL: StockPhoto[] = [\n hit(3095504, 852, 1280, 'school-board-chalk-learning-3095504', 'school, board, chalk, learning, school projects'),\n hit(5671108, 853, 1280, 'paper-brushes-pantone-pencils-5671108', 'paper, brushes, pantone, pencils, color pencils, patterns, colors, design, texture, art, project, pantone, pantone, pantone, pantone, pantone, project, project'),\n hit(4955638, 960, 1280, 'brush-paint-painting-home-project-4955638', 'brush, paint, painting, home, project, diy, remodel, house, brown home, brown painting, brown paint, diy, diy, diy, diy, remodel, remodel, remodel, remodel, remodel'),\n hit(6078679, 853, 1280, 'students-group-meeting-discussion-6078679', 'students, group, meeting, discussion, brainstorming, huddle, group meeting, study, stairs, staircase, university, haifa university, discussion, discussion, brainstorming, university, university, university, university, university'),\n hit(4349618, 853, 1280, 'desk-draw-design-pencil-table-pen-4349618', 'desk, draw, design, pencil, table, pen, creativity, art, work, office, write, project, workplace, illustrator'),\n hit(4349617, 853, 1280, 'desk-draw-design-pencil-table-pen-4349617', 'desk, draw, design, pencil, table, pen, creativity, art, work, office, write, project, workplace, illustrator, workplace, workplace, workplace, workplace, workplace'),\n hit(6227647, 853, 1280, 'bridge-suspension-bridge-6227647', 'bridge, suspension bridge, baling river bridge, off ridge, guizhou, china, construction, project, transportation'),\n hit(5180844, 851, 1280, 'screwdriver-tools-building-master-5180844', 'screwdriver, tools, building, master, builder, construction, house, frame house, finishing, project, implementation'),\n hit(4349619, 853, 1280, 'desk-draw-design-pencil-table-pen-4349619', 'desk, draw, design, pencil, table, pen, creativity, art, work, office, write, project, workplace, illustrator, desk, project, project, project, project, project'),\n hit(4941144, 854, 1280, 'engineer-engineering-teamwork-4941144', 'engineer, engineering, teamwork, civil engineer, office, planning, diagram, map, engineer, teamwork, teamwork, teamwork, civil engineer, civil engineer, civil engineer, civil engineer, civil engineer'),\n hit(3402332, 595, 1280, 'albert-einstein-physics-statue-3402332', 'albert einstein, physics, statue, project, ulm, theory of relativity, science, ulm münsterplatz, albert einstein, albert einstein, albert einstein, albert einstein, albert einstein'),\n hit(4816113, 854, 1280, 'notebook-computer-macbook-prints-4816113', 'notebook, computer, macbook, prints, project, work, keyboard, the internet, business, office, technology, web, monitor, screen, display, mac, online, pc, the documents'),\n hit(5252624, 960, 1280, 'coffee-table-desk-restaurant-5252624', 'coffee, table, desk, restaurant, chopped off, espresso, reading, cappuccino, caffeine, cup, coffee cup, project, drinks, white, drink'),\n hit(4941174, 854, 1280, 'engineer-engineering-civil-engineer-4941174', 'engineer, engineering, civil engineer, maps, diagram, plans, flood prevention, civil engineer, civil engineer, civil engineer, civil engineer, civil engineer, flood prevention'),\n hit(4940823, 854, 1280, 'engineer-engineering-civil-engineer-4940823', 'engineer, engineering, civil engineer, theme park, civil, design, computer, rollercoaster, civil engineer, civil engineer, civil engineer, civil engineer, civil engineer, rollercoaster'),\n hit(5146202, 949, 1280, 'adult-architect-caucasian-5146202', 'adult, architect, caucasian, construction, cup, design, designer, details, engineer, engineering, female, girl, hands, paper, pencil, people, person, plans, print, project'),\n hit(5146201, 937, 1280, 'adult-architect-caucasian-5146201', 'adult, architect, caucasian, construction, cup, design, designer, details, engineer, engineering, female, girl, hands, paper, pencil, people, person, plans, print, project'),\n hit(1893393, 1028, 1280, 'john-herschel-glenn-jr-july-18-1921-1893393', 'john herschel glenn jr, july 18 1921, december 8 2016, american aviator, engineer, astronaut, united states senator, ohio, february 20 - 1962, friendship 7, mercury seven, nasa, 1959, flag, globe, smiling, america\\'s first astronauts, project mercury, cambridge ohio, 30 october 1964'),\n hit(5203846, 850, 1280, 'home-office-at-home-internet-woman-5203846', 'home office, at home, internet, woman, make a phone call, mobile, communication, contact, accessible, home, web, covid-19, business, planning, company, work, technology, write, students, project'),\n hit(4527357, 853, 1280, 'site-crane-construction-build-4527357', 'site, crane, construction, build, project, architecture, work, cranes, city, technology, development, sunset, nature, machine, machinery, metal, coming soon, beams, connection, just construction'),\n hit(4545898, 853, 1280, 'crane-sky-industry-cranes-building-4545898', 'crane, sky, industry, cranes, building, logistics, port, clouds, project, transport, the water, migration, architecture, work, skull, high, shipping, build, dusk, export'),\n hit(5022019, 853, 1280, 'construction-crane-site-house-roof-5022019', 'construction, crane, site, house, roof, coming soon, building, project, structure, development, planning, blue plan, blue planning'),\n hit(5222313, 853, 1280, 'construction-building-crane-tool-5222313', 'construction, building, crane, tool, industry, project, heaven, technology, work, equipment, cement, framework, architecture, urban, modern, construction site, machine, growth, machinery'),\n hit(2670140, 853, 1280, 'architecture-house-gold-plated-2670140', 'architecture, house, gold plated, house of gold, hamburg, veddel, old building, art action, boran burchardt'),\n hit(4966508, 853, 1280, 'riga-bear-buddy-bear-art-4966508', 'riga, bear, beautiful wallpaper, buddy bear, art, art project, aid organization, downtown, historic center, baltic, latvia, city, modern, animals, historical, exhibition, art exhibition, nature, abstract, happy'),\n hit(5048476, 960, 1280, 'pencil-color-art-school-colorful-5048476', 'pencil, color, nature, art, school, colorful, painting, creativity, design, flower background, education, colors, pens, children, flower wallpaper, draw, beautiful flowers, group, flowers, college'),\n hit(1534677, 869, 1280, 'construction-site-crane-scaffolding-1534677', 'construction site, crane, scaffolding, building construction, action, free sky, noise pollution, urban planning, crane, noise pollution, noise pollution, noise pollution, noise pollution, noise pollution'),\n hit(4943995, 853, 1280, 'coronavirus-quarantine-virus-4943995', 'coronavirus, quarantine, virus, pandemic, epidemic, covid-19, disease, crown, sars-cov-2, corona-virus, products, medical, food, buckwheat, social project, moscow, russia, people, humor, product'),\n hit(4943972, 853, 1280, 'coronavirus-quarantine-virus-4943972', 'coronavirus, quarantine, virus, pandemic, epidemic, covid-19, disease, crown, sars-cov-2, corona-virus, products, medical, food, buckwheat, social project, moscow, russia, people, humor, product'),\n hit(4943997, 853, 1280, 'coronavirus-quarantine-virus-4943997', 'coronavirus, quarantine, virus, pandemic, epidemic, covid-19, disease, crown, sars-cov-2, corona-virus, products, medical, food, buckwheat, social project, moscow, russia, people, humor, product'),\n hit(4839227, 827, 1280, 'build-cement-column-construct-4839227', 'build, cement, column, construct, construction, dangerous, environment, equipment, iron, machine, machinery, piling, powerful, projects, site, steel, technology, tool, truck, work'),\n hit(4024135, 1088, 1280, 'roses-crepe-paper-crepe-flower-art-4024135', 'roses, nature, crepe paper, crepe flower, art, paper, flowers, color, colorful, floral, flower background, handmade, gift, handcraft, crafting, art flower, tissue, creative, decor, role paper'),\n hit(3346918, 854, 1280, 'wood-outdoors-architecture-wooden-3346918', 'wood, outdoors, architecture, wooden, luxury, contemporary, modern, 3d, style, design, elegant, wall, terrace, stairs, garden, room, timber, green, landscape, light'),\n hit(8509775, 853, 1280, 'woman-architect-creation-layout-8509775', 'woman, architect, creation, layout, beauty, design, building, architectural project, architecture, interior, history, handmade, prototyping, portrait'),\n hit(3220500, 853, 1280, 'the-background-wood-wooden-retro-3220500', 'the background, phone wallpaper, wood, wooden, retro, texture, boards, pattern, the structure of the, background, wallpaper, wooden texture, panel, nature, model, projects, iphone wallpaper'),\n hit(4024136, 1075, 1280, 'roses-crepe-paper-crepe-flower-art-4024136', 'roses, crepe paper, crepe flower, art, paper, flowers, color, colorful, floral, handmade, gift, handcraft, crafting, art flower, tissue, creative, decor, role paper, diy projects, brown gift'),\n]\n\n/** `project four` (horizontal, min_width 900), \"Project four\"; key `3111656cc3157b3af02dd8613260b89170c68ecd0a27b4ae77a279f940a3d81f`, answered 2026-10-18T16:54:37.546Z. */\nexport const PROJECT_FOUR: StockPhoto[] = [\n hit(6993669, 1280, 720, 'lavender-flowers-plant-6993669', 'lavender, flowers, plant, purple flowers, hd wallpaper, petals, wallpaper 4k, free wallpaper, desktop backgrounds, flowering, bloom, nature, bokeh, botany, flora, 4k wallpaper, background, flower wallpaper, full hd wallpaper, heading'),\n hit(6993670, 1280, 720, 'geranium-flowers-plant-pink-flowers-6993670', 'geranium, flowers, beautiful wallpaper, plant, 4k wallpaper, pink flowers, flowering, bloom, petals, wallpaper hd, floral background, buds, garden, nature, cool backgrounds, flower wallpaper, botany, desktop backgrounds, flora, free background'),\n hit(6517447, 1280, 853, 'sewing-machine-workshop-device-6517447', 'sewing machine, workshop, device, tailor, machine, sewing, sewing projects, sewing techniques, sewing tips, sewing essentials, sewing tutorial, sewing for beginners, sewing skills, sewing inspiration, sewing craftsmanship, sewing accessories, sewing tools, sewing stitches, sewing patterns, sewing fa'),\n hit(2557396, 1280, 853, 'people-girls-women-students-2557396', 'people, girls, women, students, friends, talking, meeting, study, group, activity, homework, group work, brainstorming, group study, people, people, people, students, students, students'),\n hit(5382501, 1280, 771, 'job-office-team-business-internet-5382501', 'job, office, team, business, internet, technology, design, draft, portable, meeting, job, office, office, office, office, team, team, business, business, business'),\n hit(594132, 1280, 853, 'office-startup-business-home-office-594132', 'office, startup, business, home office, businessman, notebook, laptop, computer, company, people, marketing, planning, strategy, project, creative, technology, start-up, organization, development, commerce'),\n hit(594091, 1280, 853, 'meeting-brainstorming-business-594091', 'meeting, brainstorming, business, teamwork, team, people, office, group, corporate, conference, colleagues, company, partnership, project, table, partners, plan, sketch, notepad, coworkers'),\n hit(2284501, 1280, 800, 'meeting-business-architect-office-2284501', 'meeting, business, architect, office, team, plan, blueprints, teamwork, group, people, project, workplace, table, desk, meeting, meeting, meeting, business, business, business'),\n hit(594090, 1280, 853, 'startup-meeting-brainstorming-594090', 'startup, meeting, brainstorming, business, teamwork, team, people, office, group, corporate, conference, colleagues, company, partnership, seminar, project, table, professionals, casual, partners'),\n hit(3267505, 1280, 853, 'startup-whiteboard-room-indoors-3267505', 'startup, whiteboard, room, indoors, adult, office, business, technology, male, corporate, design, designer, brainstorm, startup, office, business, business, business, business, business'),\n hit(1868728, 1280, 853, 'concept-man-papers-person-plan-1868728', 'concept, man, papers, person, plan, planning, research, thinking, whiteboard, blue paper, blue thinking, blue research, blue plan, blue planning, blue think, plan, plan, planning, planning, research'),\n hit(2557399, 1280, 853, 'people-girls-women-students-2557399', 'people, girls, women, students, friends, study, school, activity, homework, colorful, pens, drawing, sketch, students, students, students, friends, study, study, school'),\n hit(1837238, 1280, 960, 'blueprints-entrepreneur-hands-1837238', 'blueprints, entrepreneur, hands, laptop, macbook, mobile phone, notebook, schematics, working, planning, gray computer, gray laptop, gray work, gray phone, gray mobile, gray plan, gray smartphone, gray telephone, gray planning, gray entrepreneur'),\n hit(4545708, 1280, 853, 'forforest-klagenfurt-austria-mood-4545708', 'forforest, klagenfurt, austria, mood, art project, art, forest, nature, stadium, project, environment'),\n hit(1201014, 1280, 720, 'running-track-numbers-fog-1201014', 'running track, numbers, fog, athletic field, mist, sport, tracks, running, sprint, stadium, running track, sport, sport, sport, sport, sport, running, running, running, running'),\n hit(1883840, 1280, 804, 'advent-advent-candles-candles-1883840', 'advent, advent candles, candles, candlelights, flames, burning, burning candles, red candles, christmas candles, wax, shining, christmas, advent, advent, advent, advent, advent, advent candles, candles, christmas'),\n hit(3125882, 1280, 768, 'triangle-quality-time-cost-3125882', 'triangle, quality, time, cost, efficiently, business, projects, drawing, board, profit, optimization, management, budget, yield, lodestar, realize, how to calculate, draw, chalk, representation'),\n hit(1688111, 1280, 853, 'buttons-four-holes-costume-stud-1688111', 'buttons, four holes, costume, stud, multicoloured, close up'),\n hit(7935771, 1280, 837, 'atv-drifting-dirt-fun-recreation-7935771', 'atv, drifting, dirt, fun, recreation, outdoor, quad, four wheeler, dust, nature, sunset'),\n hit(438464, 1280, 841, 'motorbike-racing-motorcycle-race-438464', 'motorbike, racing, motorcycle, race, bike, speed, road, drive, sport, biker, curve, motorcyclist, extreme, helmet, racer, riding, motorbike, motorcycle, motorcycle, motorcycle'),\n hit(8287329, 1280, 836, 'border-collie-dog-domestic-animal-8287329', 'border collie, dog, domestic animal, animal, domestic dog, herding dog, mammal, portrait, dog breed, friend, pet, companion, tongue, snout, four-legged, wildlife, nature, saw animal, interested, attentivem'),\n hit(8061687, 1280, 1280, 'four-counts-of-libel-jeweler-insect-8061687', 'four counts of libel, jeweler, insect, slander, nature, close, four-spotted, libel, four-spotted libel, libelle'),\n hit(299772, 1280, 853, 'car-auto-4wd-drive-automobile-299772', 'car, auto, car wallpapers, 4wd, drive, automobile, vehicle, automotive, road, street, countryside, rural, road trip, hyundai terracan, terracan, hyundai, scotland, orkney islands'),\n hit(8058337, 1280, 853, 'lancaster-ww2-bomber-aviation-8058337', 'lancaster, ww2, bomber, aviation, aircraft, airplane, heritage, vintage, raf, military, nature, blue sky, clouds, display, airshow, uk, canon'),\n hit(8071993, 1280, 720, 'insect-brown-dragonfly-entomology-8071993', 'insect, desktop backgrounds, 4k wallpaper, brown dragonfly, 4k wallpaper 1920x1080, windows wallpaper, entomology, free wallpaper, cool backgrounds, beautiful wallpaper, free background, mac wallpaper, species, macro, four-spotted chaser, laptop wallpaper, hd wallpaper, full hd wallpaper, wallpaper'),\n hit(170272, 1280, 839, 'plane-aircraft-airbase-jet-170272', 'plane, aircraft, airbase, jet, jet aircraft, airport, military transport aircraft, military cargo aircraft, cargo aircraft, evening, night, mcdonnell douglas, boeing c-17 globemaster iii, air force, united states air force, usaf, plane, plane, plane, plane'),\n hit(1811835, 1280, 850, 'four-spot-dragonfly-animals-1811835', 'four-spot dragonfly, animals, dragonflies, close up, nature, insect'),\n hit(1949981, 1280, 795, 'clover-four-leaf-clover-lucky-clover-1949981', 'clover, four leaf clover, lucky clover, tic tac toe, mystery, game, three wins, four-leaf clover, lucky charm, clover, mystery, mystery, game, game, game, game, game'),\n hit(4577586, 1280, 730, 'forforest-klagenfurt-austria-forest-4577586', 'forforest, klagenfurt, austria, forest, stadium, project, art project, nature, art, environment'),\n hit(2738526, 1280, 851, 'project-planning-business-management-2738526', 'project planning, business, management, professional, success, project, project planning, project planning, project planning, project planning, project planning, project, project, project, project'),\n hit(8254778, 1280, 851, 'uaz-suv-jeep-lake-uaz-patriot-8254778', 'uaz, suv, jeep, lake, uaz patriot, car wallpapers, machine, uaz-3163, journey, nature, vehicle, four-wheel drive, on the nature, all-wheel drive, car, silver, autumn, forest, road, 4 x 4'),\n hit(4136559, 1280, 960, 'four-eyes-fish-fish-four-eye-4136559', 'four eyes fish, fish, four eye, nature, anableps, tooth carp'),\n hit(8842081, 1280, 853, 'four-spot-dragonfly-dragonfly-insect-8842081', 'four-spot dragonfly, dragonfly, insect, nature, vierfleck, wing, biotope, dragonflies'),\n hit(2015694, 1280, 854, 'range-rover-car-truck-range-rover-2015694', 'range rover, car, truck, range, rover, vehicle, land, 4x4, off-road, jeep, track, tourism, traffic, driving, sport, drive, offroad, car wallpapers, outdoor, speed'),\n hit(4051777, 1280, 786, 'work-work-process-to-organize-4051777', 'work, work process, to organize, business, office, team, structure, organization, workflow, development, planning, management, success, company, team, team, planning, planning, planning, management'),\n hit(5616878, 1280, 853, 'dragonfly-insect-nature-5616878', 'dragonfly, insect, nature, four-spotted chaser, four-spotted skimmer, libellula quadrimaculata, animal, wildlife, stem, plant, flora, fauna, closeup'),\n hit(3463101, 1280, 853, 'clover-garden-vierbl%C3%A4ttrig-nature-3463101', 'clover, garden, vierblättrig, nature, four leaf clover, green clover, lucky charm, four-leaf clover'),\n hit(2650382, 1280, 853, 'technology-pressure-lead-set-2650382', 'technology, pressure, lead set, printing house, barmbek, museum of work, hamburg, project, printing house, printing house, printing house, printing house, printing house'),\n hit(4780150, 1280, 681, 'startup-planning-team-computing-4780150', 'startup, planning, team, computing, programming, whiteboard, girl, laptop, project, strategy, work, technology, entrepreneur, whiteboard, whiteboard, whiteboard, whiteboard, whiteboard'),\n hit(7683775, 1280, 853, 'four-leaf-clover-happiness-horseshoe-7683775', 'four leaf clover, happiness, horseshoe, new year\\'s day, sylvester, ribbon, superstition, horseshoe, horseshoe, horseshoe, horseshoe, horseshoe, superstition, superstition'),\n]\n\n/** `four` (horizontal, min_width 900), \"Project four\"'s object word; key `0b62e5bb72fda86677801883056085560e2e6276e272680554aa3250c51a283d`, answered 2026-10-18T16:54:37.825Z. */\nexport const FOUR: StockPhoto[] = [\n hit(1201014, 1280, 720, 'running-track-numbers-fog-1201014', 'running track, numbers, fog, athletic field, mist, sport, tracks, running, sprint, stadium, running track, sport, sport, sport, sport, sport, running, running, running, running'),\n hit(1883840, 1280, 804, 'advent-advent-candles-candles-1883840', 'advent, advent candles, candles, candlelights, flames, burning, burning candles, red candles, christmas candles, wax, shining, christmas, advent, advent, advent, advent, advent, advent candles, candles, christmas'),\n hit(1688111, 1280, 853, 'buttons-four-holes-costume-stud-1688111', 'buttons, four holes, costume, stud, multicoloured, close up'),\n hit(438464, 1280, 841, 'motorbike-racing-motorcycle-race-438464', 'motorbike, racing, motorcycle, race, bike, speed, road, drive, sport, biker, curve, motorcyclist, extreme, helmet, racer, riding, motorbike, motorcycle, motorcycle, motorcycle'),\n hit(7935771, 1280, 837, 'atv-drifting-dirt-fun-recreation-7935771', 'atv, drifting, dirt, fun, recreation, outdoor, quad, four wheeler, dust, nature, sunset'),\n hit(8287329, 1280, 836, 'border-collie-dog-domestic-animal-8287329', 'border collie, dog, domestic animal, animal, domestic dog, herding dog, mammal, portrait, dog breed, friend, pet, companion, tongue, snout, four-legged, wildlife, nature, saw animal, interested, attentivem'),\n hit(8061687, 1280, 1280, 'four-counts-of-libel-jeweler-insect-8061687', 'four counts of libel, jeweler, insect, slander, nature, close, four-spotted, libel, four-spotted libel, libelle'),\n hit(8058337, 1280, 853, 'lancaster-ww2-bomber-aviation-8058337', 'lancaster, ww2, bomber, aviation, aircraft, airplane, heritage, vintage, raf, military, nature, blue sky, clouds, display, airshow, uk, canon'),\n hit(299772, 1280, 853, 'car-auto-4wd-drive-automobile-299772', 'car, auto, car wallpapers, 4wd, drive, automobile, vehicle, automotive, road, street, countryside, rural, road trip, hyundai terracan, terracan, hyundai, scotland, orkney islands'),\n hit(8071993, 1280, 720, 'insect-brown-dragonfly-entomology-8071993', 'insect, desktop backgrounds, 4k wallpaper, brown dragonfly, 4k wallpaper 1920x1080, windows wallpaper, entomology, free wallpaper, cool backgrounds, beautiful wallpaper, free background, mac wallpaper, species, macro, four-spotted chaser, laptop wallpaper, hd wallpaper, full hd wallpaper, wallpaper'),\n hit(170272, 1280, 839, 'plane-aircraft-airbase-jet-170272', 'plane, aircraft, airbase, jet, jet aircraft, airport, military transport aircraft, military cargo aircraft, cargo aircraft, evening, night, mcdonnell douglas, boeing c-17 globemaster iii, air force, united states air force, usaf, plane, plane, plane, plane'),\n hit(1811835, 1280, 850, 'four-spot-dragonfly-animals-1811835', 'four-spot dragonfly, animals, dragonflies, close up, nature, insect'),\n hit(1949981, 1280, 795, 'clover-four-leaf-clover-lucky-clover-1949981', 'clover, four leaf clover, lucky clover, tic tac toe, mystery, game, three wins, four-leaf clover, lucky charm, clover, mystery, mystery, game, game, game, game, game'),\n hit(8254778, 1280, 851, 'uaz-suv-jeep-lake-uaz-patriot-8254778', 'uaz, suv, jeep, lake, uaz patriot, car wallpapers, machine, uaz-3163, journey, nature, vehicle, four-wheel drive, on the nature, all-wheel drive, car, silver, autumn, forest, road, 4 x 4'),\n hit(4136559, 1280, 960, 'four-eyes-fish-fish-four-eye-4136559', 'four eyes fish, fish, four eye, nature, anableps, tooth carp'),\n hit(2015694, 1280, 854, 'range-rover-car-truck-range-rover-2015694', 'range rover, car, truck, range, rover, vehicle, land, 4x4, off-road, jeep, track, tourism, traffic, driving, sport, drive, offroad, car wallpapers, outdoor, speed'),\n hit(8842081, 1280, 853, 'four-spot-dragonfly-dragonfly-insect-8842081', 'four-spot dragonfly, dragonfly, insect, nature, vierfleck, wing, biotope, dragonflies'),\n hit(5616878, 1280, 853, 'dragonfly-insect-nature-5616878', 'dragonfly, insect, nature, four-spotted chaser, four-spotted skimmer, libellula quadrimaculata, animal, wildlife, stem, plant, flora, fauna, closeup'),\n hit(3463101, 1280, 853, 'clover-garden-vierbl%C3%A4ttrig-nature-3463101', 'clover, garden, vierblättrig, nature, four leaf clover, green clover, lucky charm, four-leaf clover'),\n hit(7683775, 1280, 853, 'four-leaf-clover-happiness-horseshoe-7683775', 'four leaf clover, happiness, horseshoe, new year\\'s day, sylvester, ribbon, superstition, horseshoe, horseshoe, horseshoe, horseshoe, horseshoe, superstition, superstition'),\n hit(6750673, 1280, 853, 'dragonfly-insect-four-spotted-chaser-6750673', 'dragonfly, insect, four-spotted chaser, four-spotted skimmer, libellula quadrimaculata, wildlife, macro, entomology'),\n hit(6750672, 1280, 845, 'dragonfly-insect-four-spotted-chaser-6750672', 'dragonfly, insect, four-spotted chaser, four-spotted skimmer, libellula quadrimaculata, wildlife, macro, entomology, dragonfly, dragonfly, dragonfly, dragonfly, dragonfly'),\n hit(3809760, 1280, 964, 'dog-domestic-animal-four-legged-3809760', 'dog, nature, domestic animal, four-legged, animal, pet, cute'),\n hit(4581745, 1280, 836, 'buttons-multicoloured-coloured-4581745', 'buttons, multicoloured, coloured, needlework, stud, close up, colorful, four holes'),\n hit(7683768, 1280, 853, 'horseshoe-four-leaf-clover-lucky-pig-7683768', 'horseshoe, four leaf clover, lucky pig, happiness, pig, sylvester, new year\\'s day, superstition'),\n hit(4430218, 1280, 848, 'tank-roman-horses-four-antique-4430218', 'tank, roman, horses, four, nature, antique, arena, horse'),\n hit(7069077, 1280, 857, 'ducks-walk-four-march-ducks-march-7069077', 'ducks, walk, four, march, ducks march, nature, birds, waddle, mallard'),\n hit(3782291, 1280, 853, 'dog-domestic-animal-four-legged-3782291', 'dog, domestic animal, four-legged, nature, pet, animal, cute'),\n hit(2893065, 1280, 452, 'four-plane-take-off-2893065', 'four, plane, take off, plane, take off, take off, take off, take off, take off'),\n hit(2561880, 1280, 853, 'dark-night-signage-neon-lights-2561880', 'dark, night, signage, neon, lights, black night, black dark, black neon, signage, signage, signage, signage, signage, neon, neon, neon'),\n hit(3741207, 1280, 864, 'dog-domestic-animal-four-legged-3741207', 'dog, nature, domestic animal, four-legged, pet, animal, cute'),\n hit(8190638, 1280, 874, 'four-spotted-chaser-dragonfly-insect-8190638', 'four-spotted chaser, dragonfly, insect, wings, environment, nature, closeup'),\n hit(3741247, 1280, 853, 'dog-domestic-animal-four-legged-3741247', 'dog, domestic animal, four-legged, portrait, view, nature, animal, pet, cute'),\n hit(3418468, 1280, 853, 'clover-four-leaf-clover-lucky-clover-3418468', 'clover, four leaf clover, lucky clover, four-leaf clover, lucky charm, symbol, happiness, symbol of good luck, plant, green clover, garden, nature'),\n hit(2738405, 1280, 853, 'industry-industry-4-web-network-2738405', 'industry, industry 4, web, network, interfaces, internet of things, project, high-tech, strategy, research, technology, production, gear, information technology, communication, networking, networked, logistics, machine, conductor tracks'),\n hit(4590090, 1280, 853, 'wooden-man-male-characters-4590090', 'wooden man, male, characters, game characters, game, lie, injured, watch, tolerate, four'),\n hit(3854104, 1280, 853, 'dog-domestic-animal-four-legged-3854104', 'dog, domestic animal, nature, four-legged, pet, portrait, view, animal, cute'),\n hit(7702033, 1280, 853, 'love-four-leaf-clover-happiness-7702033', 'love, happy mothers day, four-leaf clover, happiness, happy, four leaf clover, lucky clover, oxalis tetraphylla, superstition, faith, key, valentine\\'s day'),\n hit(3456274, 1280, 853, 'four-leaf-clover-clover-3456274', 'four leaf clover, clover, meadow clover, nature, meadow, plant'),\n hit(7867596, 1280, 850, 'wolf-animals-vertebrate-four-legged-7867596', 'wolf, animals, vertebrate, four-legged, mammal, predator, nature, wildlife, beast'),\n]\n\n/** `artist studio` (horizontal, min_width 900), the portfolio kind's broad search; key `307024eed371cb7dee1239d5dbcfe34310ea9398a7c7895efdd6c535e4a9c7db`, answered 2026-10-18T16:54:38.048Z. */\nexport const ARTIST_STUDIO_WIDE: StockPhoto[] = [\n hit(3129361, 1280, 854, 'brushes-painter-work-shop-bowl-3129361', 'brushes, painter, work shop, bowl, lights, work, creative, creativity, painting, artist, paintbrush, studio, art, brush, drawing, artistic, hobby, color, tool, paint'),\n hit(911804, 1280, 720, 'painting-pencils-paint-pens-911804', 'painting, pencils, paint, pens, watercolor, acrylic, watercolor painting, art tools, art materials, painting, painting, painting, painting, painting, paint, paint'),\n hit(1478831, 1280, 855, 'art-art-supplies-artist-blue-brush-1478831', 'art, art supplies, artist, blue, brush, beautiful wallpaper, desktop backgrounds, color, creative, draw, paint, wallpaper hd, painting, wallpaper 4k, supplies, watercolor, laptop wallpaper, watercolour, background, cool backgrounds'),\n hit(4622221, 1280, 854, 'artist-studio-art-sculpture-4622221', 'artist, studio, art, sculpture, workshop, old man, tools, sculptor, creation, exhibit, working, professional, artwork, artist, artist, artist, artist, artist, studio, sculpture'),\n hit(1868562, 1280, 853, 'hands-paint-brush-painting-1868562', 'hands, paint, brush, painting, watercolor, watercolor painting, paintbrush, artist, canvas, art, paper, arts, painter, artistic, creative, creativity, painting, painting, painting, painting'),\n hit(4226688, 1280, 853, 'brushes-paint-color-painting-4226688', 'brushes, paint, color, painting, watercolor, artist, creative, creativity, palette, paintbrush, drawing, paint, paint, painting, painting, painting, painting, painting, watercolor, artist'),\n hit(2927793, 1280, 854, 'brushes-chalks-colorful-2927793', 'brushes, chalks, colorful, art materials, art supplies, coloring materials, paint, pens, art, artistic, creative, art supplies, art supplies, art, art, art, art, art'),\n hit(1683134, 1280, 853, 'brushes-art-paint-tool-decor-1683134', 'brushes, art, paint, tool, decor, bristles, decoration, painting, artistic, color, painter, creative, studio, canvas, create, creativity, oil, picture, inspiration, art'),\n hit(756326, 1280, 850, 'guitar-guitarist-music-756326', 'guitar, guitarist, music, playing guitar, classical guitar, acoustic guitar, musician, band, sound, recording, audio, musical, musical instrument, instrument, playing, artist, performer, professional, jazz, player'),\n hit(505353, 1280, 1280, 'man-artist-drawing-painting-505353', 'man, artist, drawing, painting, elderly, senior, old, aged, male, artist, artist, artist, artist, artist, drawing, drawing, drawing, painting, painting'),\n hit(1840481, 1280, 1280, 'art-brushes-colorful-paint-1840481', 'art, brushes, colorful, paint, paintbrushes, painting, artist, artistic, creative, creativity, art, art, art, art, art, paint, paint, paint, painting, painting'),\n hit(1937575, 1280, 854, 'painter-paint-artist-brush-tool-1937575', 'painter, paint, artist, brush, tool, color, design, creative, painting, drawing, creativity, art, colorful, craft, artistic, palette, acrylic, dye, draw, painter'),\n hit(3268988, 1280, 853, 'tattoo-tattoo-artist-arm-3268988', 'tattoo, tattoo artist, arm, tattoo, tattoo, tattoo, tattoo, tattoo'),\n hit(2940513, 1280, 1010, 'paint-acrylic-paint-art-supplies-2940513', 'paint, acrylic paint, art supplies, paintbrush, hobby, creative, oil painting, paint tubes, paint, paint, paint, paint, paint, acrylic paint, art supplies, art supplies, hobby, hobby, hobby, oil painting'),\n hit(4494491, 1280, 853, 'male-black-and-white-portrait-face-4494491', 'male, black and white, portrait, face, young, model, human, think, handsome, guy, confident, man, adult, head, human, human, human, human, human, think'),\n hit(1850856, 1280, 853, 'paint-brushes-paint-tubes-1850856', 'paint, brushes, paint tubes, paint brushes, artistic, creative, art materials, oil paint, painting materials, arts, artist, paint, paint brushes, paint brushes, creative, art materials, artist, artist, artist, artist'),\n hit(4155023, 1280, 853, 'workplace-macbook-computer-digital-4155023', 'workplace, macbook, computer, digital, oil painting, technology, work, creative, digital, creative, creative, creative, creative, creative'),\n hit(7937871, 1280, 853, 'paint-artist-supplies-art-creation-7937871', 'paint, artist supplies, art, creation, drawing, paint, paint, paint, paint, paint, drawing'),\n hit(2740463, 1280, 771, 'paint-tubes-paint-caps-art-2740463', 'paint tubes, paint, caps, art, painting, colors, artist, palette, blue art, blue painting, blue paint, blue color, art, painting, artist, artist, artist, artist, artist, blue color'),\n hit(3442472, 1280, 853, 'oil-painting-artist-studio-artist-3442472', 'oil painting, artist studio, artist, oil paint, painting palette, canvas, brush, studio, painting, painter, artistic, paintbrush, paint, workshop, creative, oil, picture, education, equipment, palette'),\n hit(2696947, 1280, 1280, 'girl-face-colorful-colors-artistic-2696947', 'girl, face, colorful, colors, artistic, model, person, woman, eyes, art, paint, portrait, body paint, face paint, girl, face, person, art, art, art'),\n hit(10493144, 1280, 714, 'artist-digital-drawing-tablet-10493144', 'artist, digital drawing, tablet, monitor, sunflower, bricks, brick wall, coffee, mug, sun hat, painter, coffee cup, yellow color, decoration, work, design, rustic style, countryside, studio, technology'),\n hit(2985569, 1280, 853, 'paint-makeup-girl-cosmetics-2985569', 'paint, makeup, girl, cosmetics, face paint, colorful, artistic, portrait, face, head, profile, young woman, colors, creativity, woman, eyes, model, body paint, creative, hand'),\n hit(96240, 1280, 851, 'brush-paint-color-watercolor-art-96240', 'brush, paint, color, watercolor, art, pink, colorful, craft, arts and crafts, painting, watercolor painting, artistic, creative, creativity, paintbrush, paint, art, art, art, art'),\n hit(10096739, 1280, 853, 'brown-pelican-pelican-portrait-10096739', 'brown pelican, pelican portrait, bird portrait, coastal bird, seabird, wildlife portrait, bird close up, pelican profile, black background, bird plumage, detailed feathers, pelican beak, blue eye, animal portrait, wildlife photography, minimalist portrait, moody portrait, artistic wildlife, bird pro'),\n hit(10445933, 1280, 714, 'ceramics-pottery-wheel-clay-woman-10445933', 'ceramics, pottery wheel, clay, woman, artist, artisan, handmade, studio, creativity, focus, hands, creating, shaping, wet, workshop, concentration, messy, skill, art'),\n hit(3068340, 1280, 800, 'paint-brush-to-dye-multicoloured-3068340', 'paint brush, to dye, multicoloured, painting, red, green, orange, yellow, blue, to paint, art, isolated, painting stuff, happy, hobby, draw, bristles, creative, hair brush, paint brush'),\n hit(10232979, 1280, 717, 'woman-painting-canvas-art-artist-10232979', 'woman, painting, canvas, art, artist, studio, bright, colorful, home, creative, hobby, paint, paintbrush, artwork, easel, indoor, female, acrylic, modern, workspace'),\n hit(7620937, 1280, 853, 'to-tt-oo-7620937', 'to, tt, oo'),\n hit(1482678, 1280, 896, 'palette-paints-oil-painting-1482678', 'palette, paints, oil, painting, painter, art, brush, colors, inspiration, creator, artist, creation, colorful, canvas, to mix, palette, palette, palette, palette, palette'),\n hit(2731106, 1280, 720, 'artists-painters-model-paint-2731106', 'artists, painters, model, paint, artistic, drawing, brush, paintbrush, creative, creativity, design, equipment, canvas, work, hobby, color, palette, draw, picture, studio'),\n hit(3943201, 1280, 853, 'guitar-man-music-musician-3943201', 'guitar, man, music, musician, guitarist, performance, artist, black and white, guitar, guitar, guitar, guitar, guitar, music, music, musician, musician, musician, artist, artist'),\n hit(7820214, 1280, 853, 'artist-paintings-palette-workshop-7820214', 'artist, paintings, palette, workshop, art studio, interior, paints, brightly, creation, woman, pretty, positive, smile, canvases, artist, workshop, workshop, workshop, workshop, workshop'),\n hit(316440, 1280, 847, 'paintings-stand-artist-isolated-316440', 'paintings, stand, artist, isolated, billboard, white, sketching, tool, blank, new, easel, studio, canvas, genre, drawing, paint, shape, equipment, support, creativity'),\n hit(5821297, 1280, 853, 'to-dye-watercolor-colour-5821297', 'to dye, watercolor, colour, color palette, watercolor painting, colorful, artist, creative, art, painting, school, paint box, watercolor, watercolor, artist, artist, art, painting, painting, school'),\n hit(2578454, 1280, 720, 'artist-painter-easel-canvas-2578454', 'artist, painter, easel, canvas, painting, picture, artistic, paintbrush, brush, creative, paint, studio, white, artwork, oil, workshop, girl, profession, craft, palette'),\n hit(2557484, 1280, 720, 'people-woman-girl-painting-art-2557484', 'people, woman, girl, painting, art, board, paint, brush, material, brown art, brown painting, brown paint, brown board, people, people, painting, painting, painting, painting, painting'),\n hit(4344067, 1280, 905, 'brushes-brush-studio-workspace-4344067', 'brushes, brush, studio, workspace, paint, paintings, wall, art, artist, creativity, arts, canvases, color, canvases, canvases, canvases, canvases, canvases'),\n hit(5006722, 1280, 853, 'watercolor-paint-brush-to-paint-5006722', 'watercolor, paint brush, to paint, multicoloured, to dye, art, yellow, draw, nature, artist, doodle, acrylic, painting technique, creative, brush strokes, red, art lessons, entertainment, pastime, green'),\n hit(10204143, 1280, 698, 'senior-woman-artist-painting-10204143', 'senior, woman, artist, painting, canvas, ass, studio, creativity, art, portrait, brush, ripe, gray hair, hobby, expression, talent, concentration, elderly, lifestyle, within'),\n]\n\n/** `artist portrait` (horizontal, min_width 900, category people), the about picture; key `33160e5c0b51751614bd011baeb90a2290ed123c780e0662ddf3bf9442f444df`, answered 2026-10-18T16:54:38.307Z. */\nexport const ARTIST_PORTRAIT_PEOPLE: StockPhoto[] = [\n hit(343674, 1280, 853, 'man-artist-street-painter-painting-343674', 'man, artist, street, painter, painting, art, jesus, old man, elderly man, street photography, artist, artist, painter, art, jesus, jesus, jesus, jesus, jesus, old man'),\n hit(3008031, 1280, 853, 'artist-pen-painting-man-elderly-3008031', 'artist, pen, painting, man, elderly, glasses, craftsman, traditional, tradition, artistic, culture, painter, drawing, asian, laos, asia, artist, artist, artist, artist'),\n hit(7402145, 1280, 853, 'blackandwhite-happy-guitarist-7402145', 'blackandwhite, happy, guitarist, singing, africanamerican, people, portrait, instrument, forrest, woods, man, singing, singing, singing, singing, singing, people'),\n hit(505353, 1280, 1280, 'man-artist-drawing-painting-505353', 'man, artist, drawing, painting, elderly, senior, old, aged, male, artist, artist, artist, artist, artist, drawing, drawing, drawing, painting, painting'),\n hit(8399526, 1280, 853, 'boy-busker-playing-trumpet-8399526', 'boy, busker, playing, trumpet, wind instrument, outdoors, public place, street, building, urban, support, music, snapshot, attraction, tourism, young, street photography, coat, casual, talent'),\n hit(4494491, 1280, 853, 'male-black-and-white-portrait-face-4494491', 'male, black and white, portrait, face, young, model, human, think, handsome, guy, confident, man, adult, head, human, human, human, human, human, think'),\n hit(4030112, 1280, 845, 'man-face-painting-brushes-art-4030112', 'man, face, painting, brushes, art, artist, portrait, painting, painting, painting, painting, art, art, art, art, artist, artist, artist, artist, artist'),\n hit(1713769, 1280, 853, 'face-painting-child-make-up-face-1713769', 'face painting, child, make up, face, fun, pleasure, butterfly, glitter, motive, face painting, face painting, face painting, face painting, face painting, make up'),\n hit(7930927, 1280, 853, 'diabolo-circus-man-black-and-white-7930927', 'diabolo, circus, man, black and white, city, art, carnival, entertainment, theatre, juggle, man, man, man, man, man, city'),\n hit(7970172, 1280, 853, 'graffiti-artist-graffiti-artist-7970172', 'graffiti, artist, graffiti artist, woman, portrait, curls, coca cola, baseball cap, handmade, red, fashion, style, smile, positive'),\n hit(7990683, 1280, 853, 'woman-design-cartoon-artist-k-pop-7990683', 'woman, design, cartoon, artist, k pop, art, portrait'),\n hit(7970174, 1280, 853, 'graffiti-artist-graffiti-artist-7970174', 'graffiti, artist, graffiti artist, woman, portrait, curls, coca cola, baseball cap, handmade, red, fashion, style, smile, positive'),\n hit(3938987, 1280, 1027, 'portrait-camera-photographer-boy-3938987', 'portrait, camera, photographer, boy, camera man, artist, canon'),\n hit(5596466, 1280, 851, 'woman-artist-beautiful-girl-women-5596466', 'woman, artist, beautiful, girl, women, poses, model, costume, brush, berets, portrait, paints, white background, blots, goods for artists'),\n hit(5426238, 1280, 853, 'girl-vietnamese-artist-portrait-5426238', 'girl, vietnamese, artist, portrait, painter, painter, painter, painter, painter, painter'),\n hit(8251299, 1280, 853, 'artist-man-paint-portrait-easel-8251299', 'artist, man, paint, portrait, easel, art, painter'),\n hit(5596469, 1280, 851, 'model-female-artist-woman-lady-5596469', 'model, female, artist, woman, lady, girl, female model, female artist, paint, brush, paintbrush, creativity, beret, portrait, design, fashion, wardrobe, style, palette, model'),\n hit(3852896, 1280, 853, 'artist-portrait-person-art-man-3852896', 'artist, portrait, person, art, man, human, face, model, performance, male'),\n hit(7329257, 1280, 1280, 'saxophone-man-musician-7329257', 'saxophone, man, musician, musical artist, outdoors, portrait, saxophone, saxophone, saxophone, saxophone, saxophone, musician, musician'),\n hit(2696947, 1280, 1280, 'girl-face-colorful-colors-artistic-2696947', 'girl, face, colorful, colors, artistic, model, person, woman, eyes, art, paint, portrait, body paint, face paint, girl, face, person, art, art, art'),\n hit(4145665, 1280, 854, 'street-woman-artist-charangista-4145665', 'street, woman, artist, charangista, portrait, urban, adult, casual'),\n hit(8106539, 1280, 914, 'portrait-artwork-photography-8106539', 'portrait, artwork, photography, photoshop, ego, edit, child, artist, girl, myself, inside, people'),\n hit(3177506, 1280, 853, 'woman-people-young-woman-portrait-3177506', 'woman, people, young woman, portrait, model, make, hair, dress, curls, makeup artist, hairstyle, blonde, woman, people, people, people, hair, makeup artist, makeup artist, makeup artist'),\n hit(6893948, 1280, 853, 'painter-artist-drawing-outdoor-6893948', 'painter, artist, drawing, outdoor, portrait, man, street, people'),\n hit(2985569, 1280, 853, 'paint-makeup-girl-cosmetics-2985569', 'paint, makeup, girl, cosmetics, face paint, colorful, artistic, portrait, face, head, profile, young woman, colors, creativity, woman, eyes, model, body paint, creative, hand'),\n hit(7970165, 1280, 853, 'graffiti-artist-graffiti-artist-7970165', 'graffiti, artist, graffiti artist, woman, portrait, curls, coca cola, baseball cap, handmade, red, fashion, style, smile, positive'),\n hit(7136446, 1280, 854, 'woman-portrait-light-projector-7136446', 'woman, portrait, light, projector, smoke, shadow, woman, light, projector, projector, smoke, shadow, shadow, shadow, shadow, shadow'),\n hit(4785176, 1280, 857, 'prague-street-artist-czech-to-dye-4785176', 'prague, street artist, czech, to dye, portrait, people, fascinating'),\n hit(7787024, 1280, 853, 'eye-girl-optician-eyesight-7787024', 'eye, girl, optician, eyesight, eyebrows, face, photography, colorful, eyeshadow, makeup, cosmetics, iris, focus, vision, eyelashes, human, creativity, painting, paint, texture'),\n hit(1558900, 1280, 1069, 'charcoal-drawing-charcoal-pencil-1558900', 'charcoal drawing, charcoal pencil, portrait, profile, man, face, head, human, of the page, person, masculine, art, eve, fair, hype, charcoal draftsman, charcoal pencil drawing, charcoal pencil draftsman, drawing, illustrator'),\n hit(3331368, 1280, 853, 'people-adult-window-one-3331368', 'people, adult, window, one, the apartment, artist, portrait'),\n hit(1229314, 1280, 852, 'picture-portrait-street-artist-1229314', 'picture, portrait, street artist, painter, colors, easel, palette, girl, tourists, street artist, painter, painter, easel, easel, easel, easel, easel'),\n hit(10505431, 1280, 720, 'woman-art-tablet-drawing-10505431', 'woman, art tablet, drawing, digital drawing, illustrator, smile, asian woman, demonstration, blue shirt, office desk, talent, creative, engagement, interactive, positivity, motivation, presentation, work, joy'),\n hit(4876461, 1280, 720, 'makeup-makeup-artist-beauty-woman-4876461', 'makeup, makeup artist, beauty, woman, model, portrait, girl, creativity, creative, face, cosmetics, gold, artist, artistic, blush, make-up, orange beauty, orange model, orange portrait, orange makeup'),\n hit(4691465, 1280, 853, 'painting-easel-artist-portrait-4691465', 'painting, easel, artist, portrait, young woman, creation, hobby, canvas, brush, art, paint, image, oil, easel, easel, easel, easel, easel, hobby'),\n hit(2852231, 1280, 779, 'wall-art-spray-graffiti-woman-2852231', 'wall art, spray, graffiti, woman, colour, multicoloured, ladder, art, spray paint, painting, colorful, coloured, wall art, graffiti, graffiti, graffiti, graffiti, graffiti'),\n hit(10204143, 1280, 698, 'senior-woman-artist-painting-10204143', 'senior, woman, artist, painting, canvas, ass, studio, creativity, art, portrait, brush, ripe, gray hair, hobby, expression, talent, concentration, elderly, lifestyle, within'),\n hit(1708777, 1280, 903, 'artist-drawing-young-woman-paints-1708777', 'artist, drawing, young woman, paints, palette, autumn, joy, tassel, easel, painting, artist, artist, artist, artist, artist, drawing, easel, painting'),\n hit(3331371, 1280, 853, 'people-adult-window-one-3331371', 'people, adult, window, one, the apartment, artist, portrait'),\n hit(6217377, 1280, 853, 'woman-face-light-painting-light-6217377', 'woman, face, light painting, light, girl, beauty, wallpaper 4k, beautiful, portrait, abstract, colorful, wallpaper hd, free wallpaper, fantasy, 4k wallpaper 1920x1080, windows wallpaper, free background, beautiful wallpaper, 4k wallpaper, magical'),\n]\n"],"names":["hit","id","width","height","slug","tags","provider","String","pageUrl","photographer","split","downloadUrl","ARTIST_HERO","PROJECT_WIDE","PROJECT_TALL","PROJECT_FOUR","FOUR","ARTIST_STUDIO_WIDE","ARTIST_PORTRAIT_PEOPLE"],"mappings":"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"}
|
|
@@ -194,6 +194,7 @@ const DISHES = /\b(menu|menus|dish|dishes|breakfast|brunch|lunch|dinner|pastry|p
|
|
|
194
194
|
// A store's own products are listed by its Product grid (AGL-3676), never drawn
|
|
195
195
|
// from words: what a store shows as pictures is how its range is grouped — its
|
|
196
196
|
// collections, gift sets, occasions and scents. "Candle care and burn notes" is no band of pictures.
|
|
197
|
+
/** Words a section uses for itself when it is a showing of pictures, on any kind of site (AGL-3923). */ const GALLERY = /\b(gallery|galleries|portfolio|portfolios|lookbook|lookbooks)\b/i;
|
|
197
198
|
const CATEGORIES = /\b(collection|collections|range|ranges|categor(?:y|ies)|gift|gifts|gift sets?|sets|occasion|occasions|scent|scents|edit|edits)\b/i;
|
|
198
199
|
/**
|
|
199
200
|
* How a section's group of cards is drawn, from what the section is about:
|
|
@@ -206,6 +207,10 @@ const CATEGORIES = /\b(collection|collections|range|ranges|categor(?:y|ies)|gift
|
|
|
206
207
|
if (family === 'editorial' && WRITING.test(words)) return 'articles';
|
|
207
208
|
if (family === 'hospitality' && DISHES.test(words)) return 'menu';
|
|
208
209
|
if (family === 'retail' && CATEGORIES.test(words)) return 'pictures';
|
|
210
|
+
// A section that calls itself a gallery or a portfolio shows pictures on any
|
|
211
|
+
// kind of site (AGL-3923): the beta.265 Kasvora Marketing Solutions home drew
|
|
212
|
+
// its "Selected work gallery" as four cards of icons.
|
|
213
|
+
if (GALLERY.test(words)) return 'pictures';
|
|
209
214
|
return choices.group;
|
|
210
215
|
}
|
|
211
216
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/layout-language/ai-layout-design.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * THE DESIGNER LAYER of the layout compiler (AGL-3660): how a page the model\n * described in the layout language is ARRANGED, decided by code from the\n * site's kind and its job's seed — never asked of the model, so a recorded\n * answer compiles into the new design with no new call.\n *\n * Why. A page compiled one way for every site read like a SaaS landing page:\n * a centered text hero, three outlined cards, a numbered row, a solid form\n * band. The designer templates people compare a site to (Squarespace's Loam,\n * Clove, Auburn, Rivoli, Matsuya; Wix's portfolio and restaurant sets) are\n * built from a handful of moves instead — a full-bleed photo hero with the\n * type over it, image and text side by side, work shown as pictures in an\n * uneven grid, writing as a list under thin rules, a closing band over a\n * photo — and they pick those moves for the KIND of site.\n *\n * So a site's design is a set of VARIANTS — the hero's arrangement, how its\n * groups are drawn, whether its text sections take a picture beside them,\n * how its closing section reads — each chosen among the ones that suit the\n * kind, by the seed. The choices are the site's: every page of one site is\n * drawn with the same hero and the same group style, so the site reads as\n * one design, and two sites of one kind come out differently.\n *\n * This is NOT a template library. A variant is a way of drawing whatever the\n * model wrote; the sections, their order, their bands, their words and how\n * many items each shows are still the model's, page by page.\n *\n * Pure: no tree, no theme, no network.\n */\n\n/** What the compiler is told about the site a page belongs to. */\nexport interface AiLayoutDesign {\n /** The site's kind (`AI_SITE_KINDS`); an unknown one draws as a business site. */\n kind: string\n /** The job's design seed: the same for every page of one site. */\n seed: number\n /** Whether this page is the site's home, which opens tallest. */\n home: boolean\n}\n\n/**\n * How the first section of a page is drawn:\n * - `cover`: a full-bleed photo with the words over it on a scrim;\n * - `split`: the words beside a tall photo, inside the page's measure;\n * - `editorial`: display type across the page, the lede and the buttons in\n * a row under it, and a wide photo below.\n */\nexport type AiLayoutHeroVariant = 'cover' | 'split' | 'editorial'\n\n/**\n * How a group of cards is drawn where no component draws it:\n * - `cards`: the theme's cards (the compiler's first design);\n * - `ruled`: open columns, each under a thin rule, no card around it;\n * - `pictures`: a picture over each item's title and caption, in an uneven\n * grid (work, products);\n * - `articles`: a picture over each title and summary, in even columns (writing);\n * - `menu`: two columns of lines under rules (dishes, prices left out);\n * - `icons`: open columns, each led by an icon in a soft disc over its title\n * and words — a storefront's reasons to buy (shipping, small batch,\n * returns), never a block of text (AGL-3676).\n */\nexport type AiLayoutGroupVariant = 'cards' | 'ruled' | 'pictures' | 'articles' | 'menu' | 'icons'\n\n/** How a numbered group is drawn: a row of numbers, or a ruled list beside its heading. */\nexport type AiLayoutStepsVariant = 'numbers' | 'timeline'\n\n/** The site-level choices a page is drawn with. */\nexport interface AiLayoutDesignChoices {\n hero: AiLayoutHeroVariant\n /** The group style of a section that names no subject the kind draws its own way. */\n group: 'cards' | 'ruled' | 'icons'\n steps: AiLayoutStepsVariant\n /** Whether a section of words takes a photo beside it. */\n features: boolean\n /** Whether the photo of the first such section sits on the left. */\n featureLeft: boolean\n /** Whether a closing section of words is drawn over a photo. */\n coverClose: boolean\n /** Whether a section's heading sits beside its items rather than over them. */\n splitHeads: boolean\n /** How work is laid out where the kind shows it as pictures. */\n pictures: 'mosaic' | 'even'\n /**\n * How a blog's own posts are listed where a page shows them (AGL-3676):\n * `grid`, a cover over each post's date, title and excerpt in columns; or\n * `ruled`, a list under thin rules, the date in its own column and a small\n * cover beside each title — the two ways an editorial site lists writing.\n */\n writing: 'grid' | 'ruled'\n}\n\ntype Family = 'gallery' | 'editorial' | 'hospitality' | 'calm' | 'retail' | 'standard'\n\nconst FAMILIES: Readonly<Record<string, Family>> = {\n portfolio: 'gallery',\n photography: 'gallery',\n studio: 'gallery',\n blog: 'editorial',\n restaurant: 'hospitality',\n events: 'hospitality',\n yoga: 'calm',\n wellness: 'calm',\n beauty: 'calm',\n store: 'retail',\n}\n\n/** The heroes each kind opens with, best suited first. */\nconst HEROES: Readonly<Record<string, readonly AiLayoutHeroVariant[]>> = {\n photography: ['cover', 'editorial'],\n portfolio: ['editorial', 'split'],\n studio: ['editorial', 'cover'],\n blog: ['editorial', 'cover', 'split'],\n restaurant: ['cover', 'split'],\n events: ['cover', 'split'],\n fitness: ['cover', 'split'],\n music: ['cover', 'editorial'],\n nonprofit: ['cover', 'split'],\n realestate: ['cover', 'split'],\n trades: ['cover', 'split'],\n yoga: ['split', 'cover'],\n wellness: ['split', 'cover'],\n beauty: ['split', 'cover', 'editorial'],\n store: ['split', 'editorial'],\n}\nconst DEFAULT_HEROES: readonly AiLayoutHeroVariant[] = ['split', 'cover', 'editorial']\n\n/** A small deterministic generator over a seed (mulberry32). */\nfunction random(seed: number): () => number {\n let state = seed >>> 0\n return () => {\n state = (state + 0x6d2b79f5) >>> 0\n let t = state\n t = Math.imul(t ^ (t >>> 15), t | 1)\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61)\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296\n }\n}\n\nconst pick = <T>(next: () => number, list: readonly T[]): T => list[Math.floor(next() * list.length) % list.length] as T\n\n/** The family a kind's pages are drawn in. */\nexport function aiLayoutFamily(kind: string): Family {\n return FAMILIES[kind] ?? 'standard'\n}\n\n/**\n * A site's choices, the same for every page of it, each drawn at even odds\n * among the options that suit the kind (AGL-3899), so two sites of one kind\n * are drawn apart. Favoring each list's first option made the newest\n * production sites one design: the kind's first hero won 55% before the\n * pick, a business site opened split, groups were ruled two times in three\n * and every text section took a photo.\n */\nexport function aiLayoutDesignChoices(design: AiLayoutDesign): AiLayoutDesignChoices {\n const next = random(design.seed ^ 0x2f6b9d1)\n const family = aiLayoutFamily(design.kind)\n const heroes = HEROES[design.kind] ?? DEFAULT_HEROES\n const hero = pick(next, heroes)\n const group = pick(next, ['cards', 'ruled', 'icons'] as const)\n return {\n hero,\n // A store's reasons to buy — the making, the shipping, the care — read\n // as open columns each led by an icon, the way a storefront theme draws\n // them: never a SaaS page's feature cards, and never the plain columns\n // of a title and a sentence the beta.237 Willow Wick home showed four\n // bands of (AGL-3676).\n group: family === 'retail' ? 'icons' : group,\n steps: pick(next, ['timeline', 'numbers'] as const),\n // Whether a section of words takes a photo beside it: some sites are\n // photo-led, some let their type carry the page. A storefront never\n // shows a band of text alone (AGL-3676), so its story always takes one.\n features: next() < 0.6 || family === 'retail',\n featureLeft: next() < 0.5,\n coverClose: heroes.includes('cover') && next() < 0.7,\n splitHeads: family === 'editorial' || family === 'standard' ? next() < 0.6 : next() < 0.35,\n pictures: design.kind === 'photography' ? pick(next, ['even', 'mosaic'] as const) : pick(next, ['mosaic', 'mosaic', 'even'] as const),\n // Drawn last, so every choice above stays what it was for a seed.\n writing: pick(next, ['grid', 'ruled'] as const),\n }\n}\n\nconst WORK = /\\b(work|works|project|projects|portfolio|gallery|galleries|case|cases|studies|selected|commission|commissions|illustration|illustrations|photo|photos|series|book|books|editorial|brand|collection|collections|wedding|weddings|portrait|portraits|session|sessions|shoot|shoots)\\b/i\nconst WRITING = /\\b(article|articles|post|posts|writing|writings|latest|featured|journey|journeys|recipe|recipes|story|stories|essay|essays|guide|guides|issue|issues|episode|episodes)\\b/i\nconst DISHES = /\\b(menu|menus|dish|dishes|breakfast|brunch|lunch|dinner|pastry|pastries|coffee|drink|drinks|cocktail|cocktails|wine|wines|highlight|highlights|favorite|favorites|favourites|special|specials|plate|plates|bake|bakes|bread|cake|cakes)\\b/i\n// A store's own products are listed by its Product grid (AGL-3676), never drawn\n// from words: what a store shows as pictures is how its range is grouped — its\n// collections, gift sets, occasions and scents. \"Candle care and burn notes\" is no band of pictures.\nconst CATEGORIES = /\\b(collection|collections|range|ranges|categor(?:y|ies)|gift|gifts|gift sets?|sets|occasion|occasions|scent|scents|edit|edits)\\b/i\n\n/**\n * How a section's group of cards is drawn, from what the section is about:\n * work in a gallery kind and products in a store are pictures, writing in a\n * blog is articles, dishes in a restaurant a menu; anything else takes the\n * site's own group style.\n */\nexport function aiLayoutGroupVariant(\n design: AiLayoutDesign,\n choices: AiLayoutDesignChoices,\n words: string,\n): AiLayoutGroupVariant {\n const family = aiLayoutFamily(design.kind)\n if (family === 'gallery' && (WORK.test(words) || design.kind === 'photography')) return 'pictures'\n if (family === 'editorial' && WRITING.test(words)) return 'articles'\n if (family === 'hospitality' && DISHES.test(words)) return 'menu'\n if (family === 'retail' && CATEGORIES.test(words)) return 'pictures'\n return choices.group\n}\n"],"names":["FAMILIES","portfolio","photography","studio","blog","restaurant","events","yoga","wellness","beauty","store","HEROES","fitness","music","nonprofit","realestate","trades","DEFAULT_HEROES","random","seed","state","t","Math","imul","pick","next","list","floor","length","aiLayoutFamily","kind","aiLayoutDesignChoices","design","family","heroes","hero","group","steps","features","featureLeft","coverClose","includes","splitHeads","pictures","writing","WORK","WRITING","DISHES","CATEGORIES","aiLayoutGroupVariant","choices","words","test"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/layout-language/ai-layout-design.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * THE DESIGNER LAYER of the layout compiler (AGL-3660): how a page the model\n * described in the layout language is ARRANGED, decided by code from the\n * site's kind and its job's seed — never asked of the model, so a recorded\n * answer compiles into the new design with no new call.\n *\n * Why. A page compiled one way for every site read like a SaaS landing page:\n * a centered text hero, three outlined cards, a numbered row, a solid form\n * band. The designer templates people compare a site to (Squarespace's Loam,\n * Clove, Auburn, Rivoli, Matsuya; Wix's portfolio and restaurant sets) are\n * built from a handful of moves instead — a full-bleed photo hero with the\n * type over it, image and text side by side, work shown as pictures in an\n * uneven grid, writing as a list under thin rules, a closing band over a\n * photo — and they pick those moves for the KIND of site.\n *\n * So a site's design is a set of VARIANTS — the hero's arrangement, how its\n * groups are drawn, whether its text sections take a picture beside them,\n * how its closing section reads — each chosen among the ones that suit the\n * kind, by the seed. The choices are the site's: every page of one site is\n * drawn with the same hero and the same group style, so the site reads as\n * one design, and two sites of one kind come out differently.\n *\n * This is NOT a template library. A variant is a way of drawing whatever the\n * model wrote; the sections, their order, their bands, their words and how\n * many items each shows are still the model's, page by page.\n *\n * Pure: no tree, no theme, no network.\n */\n\n/** What the compiler is told about the site a page belongs to. */\nexport interface AiLayoutDesign {\n /** The site's kind (`AI_SITE_KINDS`); an unknown one draws as a business site. */\n kind: string\n /** The job's design seed: the same for every page of one site. */\n seed: number\n /** Whether this page is the site's home, which opens tallest. */\n home: boolean\n}\n\n/**\n * How the first section of a page is drawn:\n * - `cover`: a full-bleed photo with the words over it on a scrim;\n * - `split`: the words beside a tall photo, inside the page's measure;\n * - `editorial`: display type across the page, the lede and the buttons in\n * a row under it, and a wide photo below.\n */\nexport type AiLayoutHeroVariant = 'cover' | 'split' | 'editorial'\n\n/**\n * How a group of cards is drawn where no component draws it:\n * - `cards`: the theme's cards (the compiler's first design);\n * - `ruled`: open columns, each under a thin rule, no card around it;\n * - `pictures`: a picture over each item's title and caption, in an uneven\n * grid (work, products);\n * - `articles`: a picture over each title and summary, in even columns (writing);\n * - `menu`: two columns of lines under rules (dishes, prices left out);\n * - `icons`: open columns, each led by an icon in a soft disc over its title\n * and words — a storefront's reasons to buy (shipping, small batch,\n * returns), never a block of text (AGL-3676).\n */\nexport type AiLayoutGroupVariant = 'cards' | 'ruled' | 'pictures' | 'articles' | 'menu' | 'icons'\n\n/** How a numbered group is drawn: a row of numbers, or a ruled list beside its heading. */\nexport type AiLayoutStepsVariant = 'numbers' | 'timeline'\n\n/** The site-level choices a page is drawn with. */\nexport interface AiLayoutDesignChoices {\n hero: AiLayoutHeroVariant\n /** The group style of a section that names no subject the kind draws its own way. */\n group: 'cards' | 'ruled' | 'icons'\n steps: AiLayoutStepsVariant\n /** Whether a section of words takes a photo beside it. */\n features: boolean\n /** Whether the photo of the first such section sits on the left. */\n featureLeft: boolean\n /** Whether a closing section of words is drawn over a photo. */\n coverClose: boolean\n /** Whether a section's heading sits beside its items rather than over them. */\n splitHeads: boolean\n /** How work is laid out where the kind shows it as pictures. */\n pictures: 'mosaic' | 'even'\n /**\n * How a blog's own posts are listed where a page shows them (AGL-3676):\n * `grid`, a cover over each post's date, title and excerpt in columns; or\n * `ruled`, a list under thin rules, the date in its own column and a small\n * cover beside each title — the two ways an editorial site lists writing.\n */\n writing: 'grid' | 'ruled'\n}\n\ntype Family = 'gallery' | 'editorial' | 'hospitality' | 'calm' | 'retail' | 'standard'\n\nconst FAMILIES: Readonly<Record<string, Family>> = {\n portfolio: 'gallery',\n photography: 'gallery',\n studio: 'gallery',\n blog: 'editorial',\n restaurant: 'hospitality',\n events: 'hospitality',\n yoga: 'calm',\n wellness: 'calm',\n beauty: 'calm',\n store: 'retail',\n}\n\n/** The heroes each kind opens with, best suited first. */\nconst HEROES: Readonly<Record<string, readonly AiLayoutHeroVariant[]>> = {\n photography: ['cover', 'editorial'],\n portfolio: ['editorial', 'split'],\n studio: ['editorial', 'cover'],\n blog: ['editorial', 'cover', 'split'],\n restaurant: ['cover', 'split'],\n events: ['cover', 'split'],\n fitness: ['cover', 'split'],\n music: ['cover', 'editorial'],\n nonprofit: ['cover', 'split'],\n realestate: ['cover', 'split'],\n trades: ['cover', 'split'],\n yoga: ['split', 'cover'],\n wellness: ['split', 'cover'],\n beauty: ['split', 'cover', 'editorial'],\n store: ['split', 'editorial'],\n}\nconst DEFAULT_HEROES: readonly AiLayoutHeroVariant[] = ['split', 'cover', 'editorial']\n\n/** A small deterministic generator over a seed (mulberry32). */\nfunction random(seed: number): () => number {\n let state = seed >>> 0\n return () => {\n state = (state + 0x6d2b79f5) >>> 0\n let t = state\n t = Math.imul(t ^ (t >>> 15), t | 1)\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61)\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296\n }\n}\n\nconst pick = <T>(next: () => number, list: readonly T[]): T => list[Math.floor(next() * list.length) % list.length] as T\n\n/** The family a kind's pages are drawn in. */\nexport function aiLayoutFamily(kind: string): Family {\n return FAMILIES[kind] ?? 'standard'\n}\n\n/**\n * A site's choices, the same for every page of it, each drawn at even odds\n * among the options that suit the kind (AGL-3899), so two sites of one kind\n * are drawn apart. Favoring each list's first option made the newest\n * production sites one design: the kind's first hero won 55% before the\n * pick, a business site opened split, groups were ruled two times in three\n * and every text section took a photo.\n */\nexport function aiLayoutDesignChoices(design: AiLayoutDesign): AiLayoutDesignChoices {\n const next = random(design.seed ^ 0x2f6b9d1)\n const family = aiLayoutFamily(design.kind)\n const heroes = HEROES[design.kind] ?? DEFAULT_HEROES\n const hero = pick(next, heroes)\n const group = pick(next, ['cards', 'ruled', 'icons'] as const)\n return {\n hero,\n // A store's reasons to buy — the making, the shipping, the care — read\n // as open columns each led by an icon, the way a storefront theme draws\n // them: never a SaaS page's feature cards, and never the plain columns\n // of a title and a sentence the beta.237 Willow Wick home showed four\n // bands of (AGL-3676).\n group: family === 'retail' ? 'icons' : group,\n steps: pick(next, ['timeline', 'numbers'] as const),\n // Whether a section of words takes a photo beside it: some sites are\n // photo-led, some let their type carry the page. A storefront never\n // shows a band of text alone (AGL-3676), so its story always takes one.\n features: next() < 0.6 || family === 'retail',\n featureLeft: next() < 0.5,\n coverClose: heroes.includes('cover') && next() < 0.7,\n splitHeads: family === 'editorial' || family === 'standard' ? next() < 0.6 : next() < 0.35,\n pictures: design.kind === 'photography' ? pick(next, ['even', 'mosaic'] as const) : pick(next, ['mosaic', 'mosaic', 'even'] as const),\n // Drawn last, so every choice above stays what it was for a seed.\n writing: pick(next, ['grid', 'ruled'] as const),\n }\n}\n\nconst WORK = /\\b(work|works|project|projects|portfolio|gallery|galleries|case|cases|studies|selected|commission|commissions|illustration|illustrations|photo|photos|series|book|books|editorial|brand|collection|collections|wedding|weddings|portrait|portraits|session|sessions|shoot|shoots)\\b/i\nconst WRITING = /\\b(article|articles|post|posts|writing|writings|latest|featured|journey|journeys|recipe|recipes|story|stories|essay|essays|guide|guides|issue|issues|episode|episodes)\\b/i\nconst DISHES = /\\b(menu|menus|dish|dishes|breakfast|brunch|lunch|dinner|pastry|pastries|coffee|drink|drinks|cocktail|cocktails|wine|wines|highlight|highlights|favorite|favorites|favourites|special|specials|plate|plates|bake|bakes|bread|cake|cakes)\\b/i\n// A store's own products are listed by its Product grid (AGL-3676), never drawn\n// from words: what a store shows as pictures is how its range is grouped — its\n// collections, gift sets, occasions and scents. \"Candle care and burn notes\" is no band of pictures.\n/** Words a section uses for itself when it is a showing of pictures, on any kind of site (AGL-3923). */\nconst GALLERY = /\\b(gallery|galleries|portfolio|portfolios|lookbook|lookbooks)\\b/i\nconst CATEGORIES = /\\b(collection|collections|range|ranges|categor(?:y|ies)|gift|gifts|gift sets?|sets|occasion|occasions|scent|scents|edit|edits)\\b/i\n\n/**\n * How a section's group of cards is drawn, from what the section is about:\n * work in a gallery kind and products in a store are pictures, writing in a\n * blog is articles, dishes in a restaurant a menu; anything else takes the\n * site's own group style.\n */\nexport function aiLayoutGroupVariant(\n design: AiLayoutDesign,\n choices: AiLayoutDesignChoices,\n words: string,\n): AiLayoutGroupVariant {\n const family = aiLayoutFamily(design.kind)\n if (family === 'gallery' && (WORK.test(words) || design.kind === 'photography')) return 'pictures'\n if (family === 'editorial' && WRITING.test(words)) return 'articles'\n if (family === 'hospitality' && DISHES.test(words)) return 'menu'\n if (family === 'retail' && CATEGORIES.test(words)) return 'pictures'\n // A section that calls itself a gallery or a portfolio shows pictures on any\n // kind of site (AGL-3923): the beta.265 Kasvora Marketing Solutions home drew\n // its \"Selected work gallery\" as four cards of icons.\n if (GALLERY.test(words)) return 'pictures'\n return choices.group\n}\n"],"names":["FAMILIES","portfolio","photography","studio","blog","restaurant","events","yoga","wellness","beauty","store","HEROES","fitness","music","nonprofit","realestate","trades","DEFAULT_HEROES","random","seed","state","t","Math","imul","pick","next","list","floor","length","aiLayoutFamily","kind","aiLayoutDesignChoices","design","family","heroes","hero","group","steps","features","featureLeft","coverClose","includes","splitHeads","pictures","writing","WORK","WRITING","DISHES","GALLERY","CATEGORIES","aiLayoutGroupVariant","choices","words","test"],"mappings":"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"}
|
|
@@ -17,14 +17,24 @@
|
|
|
17
17
|
import type { AnimationEase, AnimationPreset } from '@aglyn/aglyn/app-utils/element-animation';
|
|
18
18
|
import { type ElementMotionCharacter } from '@aglyn/aglyn/app-utils/element-motion';
|
|
19
19
|
/**
|
|
20
|
-
* How an AI-built site moves (AGL-3838): a
|
|
20
|
+
* How an AI-built site moves (AGL-3838, AGL-3941): a motion CHARACTER per
|
|
21
21
|
* site, turned by the site's design seed, which the platform's entrance pass
|
|
22
22
|
* (`element-motion.ts`) writes onto every page the AI builds.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
24
|
+
* The character comes from one of two places:
|
|
25
|
+
* - the site's MOTION STYLE, when its look chose one (`siteStyle.motion`,
|
|
26
|
+
* asked with the rest of the look in `submit_site_look`): a small closed
|
|
27
|
+
* vocabulary of named characters, {@link AI_SITE_MOTION_STYLES}, each of
|
|
28
|
+
* which says how a hero, a split, a grid of cards and every other section
|
|
29
|
+
* arrive;
|
|
30
|
+
* - else the site's KIND, mapped to a mood: what every site built before
|
|
31
|
+
* the look chose motion, a replay of one, and any job without a look
|
|
32
|
+
* moves in.
|
|
33
|
+
*
|
|
34
|
+
* Either way the seed picks within the character's ranges — the first
|
|
35
|
+
* preset, the picture preset, the curve, the timing — so two sites that chose
|
|
36
|
+
* the same style still move apart, and one site moves the same way on every
|
|
37
|
+
* page. No page prompt names a preset and no page answer carries one.
|
|
28
38
|
*
|
|
29
39
|
* The moods, by the kinds `ai-site-kinds.ts` lists:
|
|
30
40
|
* - CALM — practices, health, reading: fades and rises taken in turn, on a
|
|
@@ -38,7 +48,7 @@ import { type ElementMotionCharacter } from '@aglyn/aglyn/app-utils/element-moti
|
|
|
38
48
|
* In every mood a page's later sections take the mood's presets in turn,
|
|
39
49
|
* starting where the seed says, and a column of words beside a picture comes
|
|
40
50
|
* in from its own side (Zach 2026-10-16: "some slide in ones would be cool
|
|
41
|
-
* too").
|
|
51
|
+
* too").
|
|
42
52
|
*
|
|
43
53
|
* Every number stays inside the vocabulary's caps, and inside 400–800 ms for
|
|
44
54
|
* a duration and 60–120 ms between staggered items: slower reads as a site
|
|
@@ -55,17 +65,59 @@ interface AiSiteMotionRange {
|
|
|
55
65
|
duration: readonly [number, number];
|
|
56
66
|
stagger: readonly [number, number];
|
|
57
67
|
hero: readonly [number, number];
|
|
68
|
+
/** Whether a split's picture and words come in from their own sides; absent, they do. */
|
|
69
|
+
sides?: boolean;
|
|
70
|
+
/** The first section's presets the seed picks among; absent, it opens on the first section preset. */
|
|
71
|
+
heroPresets?: readonly AnimationPreset[];
|
|
72
|
+
/** The presets a group of like items — a grid of cards, a list — the seed picks among; absent, the section's own. */
|
|
73
|
+
groupPresets?: readonly AnimationPreset[];
|
|
58
74
|
}
|
|
59
75
|
/** Each mood's range. The seed picks one character from it. */
|
|
60
76
|
export declare const AI_SITE_MOTION_MOODS: Readonly<Record<AiSiteMotionMood, AiSiteMotionRange>>;
|
|
61
77
|
/** Each site kind's mood; a kind not listed is standard. */
|
|
62
78
|
export declare const AI_SITE_MOTION_KINDS: Readonly<Record<string, AiSiteMotionMood>>;
|
|
79
|
+
/**
|
|
80
|
+
* The motion styles a site's look chooses among (AGL-3941). Persisted on the
|
|
81
|
+
* site's style; never rename one.
|
|
82
|
+
*/
|
|
83
|
+
export declare const AI_SITE_MOTION_STYLES: readonly ["sides", "rise", "scale", "cascade", "still"];
|
|
84
|
+
export type AiSiteMotionStyle = (typeof AI_SITE_MOTION_STYLES)[number];
|
|
85
|
+
/**
|
|
86
|
+
* Each motion style, by what it does to each kind of section:
|
|
87
|
+
* - SIDES — a split's picture slides in from its own side and its words
|
|
88
|
+
* from the other; the rest rises and fades in turn. Pictures never zoom,
|
|
89
|
+
* so a split's picture always takes its side.
|
|
90
|
+
* - RISE — everything fades up into place; a split's columns rise one
|
|
91
|
+
* after the other.
|
|
92
|
+
* - SCALE — pictures scale into place, from smaller or from larger; the
|
|
93
|
+
* hero's words fade, and later sections fade and rise in turn.
|
|
94
|
+
* - CASCADE — cards and lists ripple in one after another at the widest
|
|
95
|
+
* stagger, quick, often with overshoot.
|
|
96
|
+
* - STILL — near-static: a short, soft fade, and nothing slides or scales.
|
|
97
|
+
*
|
|
98
|
+
* The hero's main heading never moves under any of them (`element-motion.ts`),
|
|
99
|
+
* and every one is written as the same `aglynAnimation*` props, so a visitor
|
|
100
|
+
* who asks for reduced motion sees none of it.
|
|
101
|
+
*/
|
|
102
|
+
export declare const AI_SITE_MOTION_STYLE_RANGES: Readonly<Record<AiSiteMotionStyle, AiSiteMotionRange & {
|
|
103
|
+
words: string;
|
|
104
|
+
}>>;
|
|
105
|
+
/** The motion styles each mood suits, which the look is offered and the seed draws among. */
|
|
106
|
+
export declare const AI_SITE_MOTION_SUITS: Readonly<Record<AiSiteMotionMood, readonly AiSiteMotionStyle[]>>;
|
|
107
|
+
/** A motion style, read defensively: `null` for anything outside the vocabulary. */
|
|
108
|
+
export declare function aiSiteMotionStyle(value: unknown): AiSiteMotionStyle | null;
|
|
109
|
+
/** The motion styles that suit a kind of site. */
|
|
110
|
+
export declare function aiSiteMotionStylesFor(kind: string | null | undefined): readonly AiSiteMotionStyle[];
|
|
63
111
|
/** The mood a kind of site moves in. */
|
|
64
112
|
export declare function aiSiteMotionMood(kind: string | null | undefined): AiSiteMotionMood;
|
|
65
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* The motion character of a site: its motion style where its look chose one,
|
|
115
|
+
* else its kind's mood, turned by its seed.
|
|
116
|
+
*/
|
|
66
117
|
export declare function aiSiteMotion(input: {
|
|
67
118
|
kind?: string | null;
|
|
68
119
|
seed: number;
|
|
120
|
+
motion?: string | null;
|
|
69
121
|
}): ElementMotionCharacter;
|
|
70
122
|
/**
|
|
71
123
|
* A page the AI built, with its site's entrance motion written onto it —
|
|
@@ -74,6 +126,7 @@ export declare function aiSiteMotion(input: {
|
|
|
74
126
|
export declare function aiWithSiteMotion<T extends Record<string, any>>(nodes: T, site: {
|
|
75
127
|
kind?: string | null;
|
|
76
128
|
seed: number;
|
|
129
|
+
motion?: string | null;
|
|
77
130
|
}, page?: {
|
|
78
131
|
rootId?: string;
|
|
79
132
|
sectionIds?: readonly string[];
|