Social Media Campaign
Run ID: 69cc75923e7fb09ff16a20b12026-04-01Marketing
PantheraHive BOS
BOS Dashboard

Step 2 of 2: Image Generation for Social Media Campaign (sharper4k β†’ generate_image)

This deliverable outlines the detailed specifications and prompts for generating high-quality visual content using the sharper4k image generation tool. The goal is to create compelling, professional images that resonate with the target audience and effectively support a diverse social media campaign.

We recommend two distinct image concepts to provide versatility across different campaign messages and platforms. Both concepts are designed to be visually engaging, adaptable for various text overlays, and reflective of a modern, forward-thinking brand.


1. Campaign Context & Image Generation Goal

Campaign Goal: To launch a comprehensive social media campaign aimed at increasing brand awareness, driving engagement, and communicating a message of innovation, connection, and progress.

Image Generation Goal: To produce a primary set of hero images that are visually striking, professionally polished, and suitable for use across various social media platforms (e.g., Instagram, Facebook, LinkedIn, Twitter) as core visual assets. These images should evoke positive emotions and be flexible enough to support different campaign themes (e.g., collaboration, growth, future, community, technology).


2. Primary Image Concept: "Connected Futures"

This concept focuses on abstract yet sophisticated visuals that symbolize growth, innovation, and interconnectedness. It's ideal for conveying themes related to technology, solutions, progress, and modern values.

sharper4k Prompt Description:

text • 2,849 chars
Generate a high-resolution, authentic lifestyle photograph depicting a diverse group of 3-4 individuals engaged in a positive, collaborative activity within a modern, inviting environment. The scene should convey genuine connection, professionalism, and a sense of shared purpose. The image should feel natural, warm, and aspirational.

**Key Visual Elements:**
-   **Subjects:** A diverse group of 3-4 individuals (mixed genders, ethnicities, ages) smiling, interacting, and collaborating. They should be dressed in smart-casual or modern business attire.
-   **Activity:** Engaged in discussion, working together on a project (e.g., looking at a screen, brainstorming with notes, sharing ideas), or celebrating a small success. Interactions should feel natural and unposed.
-   **Environment:** A modern, well-lit, and inviting space such as a contemporary co-working office, a bright meeting room with large windows, or a stylish urban cafe with a professional ambiance.
-   **Props:** Minimal, relevant props (e.g., laptops, tablets, coffee cups, notebooks) to enhance the scene's authenticity without distracting.

**Art Style & Aesthetics:**
-   **Style:** High-quality, professional lifestyle photography, realistic, warm, authentic, natural.
-   **Detail:** Sharp focus on the individuals and their interactions, with a pleasing shallow depth of field to subtly blur the background.
-   **Composition:** Dynamic yet balanced, using the rule of thirds. Clear focal point on the interaction between individuals.

**Composition & Perspective:**
-   **Type:** Medium shot to medium-wide shot, capturing faces and upper bodies, allowing for expressions to be visible.
-   **Angle:** Eye-level or slightly elevated to create an inviting and engaging perspective.
-   **Balance:** Naturally composed, emphasizing interaction and positive energy.

**Lighting & Color Palette:**
-   **Lighting:** Bright, natural daylight (e.g., coming from large windows), soft, and flattering. Avoid harsh shadows.
-   **Primary Palette:** Warm, inviting tones (e.g., soft yellows, light browns, muted greens, warm greys).
-   **Accent Colors:** Natural colors from clothing and environment, ensuring a cohesive and pleasant overall palette.

**Mood & Emotion:**
-   Joyful, collaborative, successful, aspirational, community-focused, professional, welcoming, positive.

**Intended Use & Adaptability:**
-   **Social Media:** Ideal for posts promoting teamwork, company culture, employee spotlights, community initiatives, or professional development.
-   **Campaign Themes:** Collaboration, teamwork, diversity & inclusion, professional growth, community building, success stories, work-life balance.
-   **Text Overlay:** Background elements should be relatively uncluttered to allow for easy placement of text and logos, especially in the upper or lower thirds.
Sandboxed live preview

Social Media Campaign: Content Calendar - Step 1 of 2 Deliverable

This document outlines a comprehensive 4-week social media content calendar designed to launch and promote a new product: The EcoSphere Smart Hub – an innovative, eco-friendly smart home device that centralizes home automation while minimizing environmental impact.

This calendar is meticulously planned to build awareness, educate the audience, drive engagement, and ultimately convert interest into pre-orders or sales. All content is crafted to be professional, engaging, and ready for direct publishing across key social media platforms.


Campaign Overview

  • Product: EcoSphere Smart Hub (Hypothetical: An eco-friendly smart home device that integrates various smart home functionalities with a focus on energy efficiency and sustainability.)
  • Campaign Goal: Increase brand awareness, drive traffic to the product landing page, generate pre-orders/sign-ups for launch notifications, and establish EcoSphere as a leader in sustainable smart home technology.
  • Target Audience: Environmentally conscious homeowners, tech enthusiasts, early adopters of smart home technology, individuals seeking to reduce their carbon footprint and simplify home management.
  • Campaign Duration: 4 Weeks
  • Key Platforms: Instagram, Facebook, Twitter, LinkedIn

Week 1: Awareness & Introduction - "Welcome to a Smarter, Greener Home"

Theme: Introduce EcoSphere Smart Hub, highlight its core value proposition (smart, sustainable, simple), and pique curiosity.

| Date/Day | Platform | Content Type | Headline/Caption Wednesday | Instagram (Reel/Image Carousel) | Feature Spotlight | Elevate Your Home, Sustainably. Meet the EcoSphere Smart Hub!

Dive into a new era of living where your home works with you, not just for you. The EcoSphere Smart Hub isn't just smart; it's sustainably brilliant. Control your lights, thermostat, security, and more with unparalleled ease, all while reducing your environmental footprint.

Imagine a single, intuitive device that understands your needs and anticipates them, ensuring comfort, security, and energy efficiency. That's the power of EcoSphere.

✨ Key Benefits:

  • Unified control for all smart devices
  • Advanced energy consumption monitoring
  • Sleek, minimalist design
  • Seamless integration with your lifestyle

Ready to transform your home into an EcoSphere?

Learn more and sign up for early access: [Link in Bio]

#EcoSphereSmartHub #SustainableLiving #SmartHome #GreenTech #HomeAutomation #Innovation | [Link in Bio] | Visual: Dynamic video showcasing the EcoSphere Smart Hub's sleek design, UI, and different smart home devices being controlled by it. Quick cuts showing energy monitoring dashboard. |

| Friday | Facebook | Blog Post Link | Unveiling the Future: Why EcoSphere Smart Hub is More Than Just Another Gadget

We're thrilled to introduce EcoSphere Smart Hub, the revolutionary device set to redefine smart living. But what makes it truly different? It's our unwavering commitment to sustainability, seamlessly integrated with cutting-edge technology.

In our latest blog post, we dive deep into the philosophy behind EcoSphere, exploring how we're making smart homes genuinely smarter and greener. Discover the innovative features that set us apart and how you can be part of the movement towards a more sustainable future.

Read the full story here: [Link to Blog Post]

#EcoSphereLaunch #SmartHomeInnovation #SustainableFuture #TechForGood #GreenLiving #HomeTech | [Link to Blog Post] | Visual: Engaging image of the EcoSphere Smart Hub with a subtle nature-inspired background, or a snippet from the blog post graphic. |

| Sunday | Twitter | Teaser/Poll | What's your biggest smart home challenge?

A) Too many apps to manage πŸ€¦β€β™€οΈ

B) Worried about energy consumption πŸ’‘

C) Setup is too complicated 🀯

D) Not sure where to start πŸ€·β€β™‚οΈ

We're building a solution that addresses ALL of these. Stay tuned! #EcoSphereSmartHub #SmartHomeProblems #FutureIsGreen #TechSolutions #ComingSoon | N/A (Poll) | Visual: Simple graphic with the poll question and options. |


Week 2: Deep Dive & Education - "Experience Intelligent Simplicity"

Theme: Educate the audience on specific features, benefits, and how EcoSphere solves common smart home pain points.

| Date/Day | Platform | Content Type | Headline/Caption


4. Technical Specifications & Considerations

To ensure optimal performance and versatility across platforms, please consider the following for both image concepts:

  • Aspect Ratios: Generate images in multiple common aspect ratios:

* 1:1 (Square): For Instagram feeds, profile pictures, general posts.

* 4:5 (Vertical): For Instagram portraits, maximizing feed presence.

* 16:9 (Horizontal): For Facebook/LinkedIn banners, Twitter, general landscape posts.

* 9:16 (Story/Reel): For Instagram/Facebook Stories and Reels backgrounds (ensure central subject visibility).

  • Resolution: Minimum 4000px on the longest side (e.g., 4000x4000 for square, 4000x5000 for 4:5, 4000x2250 for 16:9) to allow for cropping and downscaling without loss of quality.
  • File Format: PNG (for lossless quality) and high-quality JPG (for web optimization).
  • Safety & Ethics: Ensure all generated images adhere to ethical guidelines, avoiding stereotypes, promoting diversity, and maintaining a positive and inclusive representation.
  • Iterative Refinement: Be prepared for minor adjustments based on initial outputs. This includes tweaking color balance, composition, or specific elements to perfectly align with campaign needs.

social_media_campaign.txt
Download source file
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547} "); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" β€” styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" β€” scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed β€” check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/**(.+?)**/g,"$1"); hc=hc.replace(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); }function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}