globalThis.process ??= {}; globalThis.process.env ??= {};
import { s as ssr, e as escape, a as createComponent, b as ssrHydrationKey, d as ssrStyleProperty, S as Show, f as createSignal, g as ssrAttribute, D as Dynamic } from './_@astro-renderers_DpxbEuk7.mjs';
var _tmpl$$9 = ["
', "
"], _tmpl$2$9 = [""];
function Clock(props) {
const [time] = createSignal("");
return ssr(_tmpl$2$9, ssrHydrationKey(), ssrStyleProperty("border:", "1px solid var(--border)") + ssrStyleProperty(";padding:", "1rem") + ssrStyleProperty(";width:", "100%") + ssrStyleProperty(";height:", "100%") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";display:", "flex") + ssrStyleProperty(";flex-direction:", "column") + ssrStyleProperty(";justify-content:", "center") + ssrStyleProperty(";align-items:", "center") + ssrStyleProperty(";background:", "var(--bg, #fff)"), ssrStyleProperty("font-size:", "clamp(0.8rem, 3.5vw + 0.5vh, 2.5rem)") + ssrStyleProperty(";font-weight:", "bold") + ssrStyleProperty(";text-align:", "center") + ssrStyleProperty(";word-break:", "break-word") + ssrStyleProperty(";line-height:", "1.2"), escape(time()), escape(createComponent(Show, {
get when() {
return props.settings.showLabel;
},
get children() {
return ssr(_tmpl$$9, ssrHydrationKey(), ssrStyleProperty("margin-top:", "0.5rem") + ssrStyleProperty(";color:", "var(--gray)") + ssrStyleProperty(";font-size:", "clamp(0.6rem, 1.5vw + 0.5vh, 1rem)") + ssrStyleProperty(";text-align:", "center") + ssrStyleProperty(";line-height:", "1.4"), escape(props.settings.label) || "Current Time");
}
})));
}
const clockSchema = {
name: "Clock",
description: "Display current time and date",
settingsSchema: {
format: {
type: "select",
label: "Time Format",
default: "24h",
options: ["12h", "24h"],
required: true
},
timeFormat: {
type: "select",
label: "Display Format",
default: "HH:MM:SS",
options: ["HH:MM:SS", "HH:MM", "HH only"]
},
showDate: {
type: "boolean",
label: "Show Date",
default: true
},
showLabel: {
type: "boolean",
label: "Show Label",
default: true
},
label: {
type: "string",
label: "Custom Label",
default: "Current Time"
},
refreshRate: {
type: "number",
label: "Refresh Rate (seconds)",
default: 1
}
}
};
var _tmpl$$8 = [""], _tmpl$2$8 = ["', "
"];
const priceCache = /* @__PURE__ */ new Map();
const errorCache = /* @__PURE__ */ new Map();
function CryptoPrice(props) {
const widgetKey = `${props.settings.symbol}-${props.settings.currency}`;
const [price] = createSignal(priceCache.get(widgetKey) || "Loading...");
const [error] = createSignal(errorCache.get(widgetKey) || "");
return ssr(_tmpl$$8, ssrHydrationKey(), ssrStyleProperty("border:", "1px solid var(--border)") + ssrStyleProperty(";padding:", "1rem") + ssrStyleProperty(";width:", "100%") + ssrStyleProperty(";height:", "100%") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";display:", "flex") + ssrStyleProperty(";flex-direction:", "column") + ssrStyleProperty(";justify-content:", "center") + ssrStyleProperty(";align-items:", "center") + ssrStyleProperty(";background:", "var(--bg, #fff)"), ssrStyleProperty("margin-bottom:", "0.5rem") + ssrStyleProperty(";font-weight:", "bold") + ssrStyleProperty(";font-size:", "clamp(0.7rem, 2vw + 0.5vh, 1.5rem)") + ssrStyleProperty(";text-align:", "center") + ssrStyleProperty(";line-height:", "1.3"), escape(props.settings.symbol) || "BTC", ssrStyleProperty("font-size:", "clamp(0.8rem, 3.5vw + 0.5vh, 2.5rem)") + ssrStyleProperty(";font-weight:", "bold") + ssrStyleProperty(";text-align:", "center") + ssrStyleProperty(";word-break:", "break-word") + ssrStyleProperty(";line-height:", "1.2"), escape(error()) || escape(price()), props.settings.showLabel && ssr(_tmpl$2$8, ssrHydrationKey(), ssrStyleProperty("margin-top:", "0.5rem") + ssrStyleProperty(";color:", "var(--gray)") + ssrStyleProperty(";font-size:", "clamp(0.6rem, 1.5vw + 0.5vh, 1rem)") + ssrStyleProperty(";text-align:", "center") + ssrStyleProperty(";line-height:", "1.4"), escape(props.settings.label) || "Price"));
}
const cryptoPriceSchema = {
name: "Crypto Price",
description: "Display cryptocurrency price from CoinGecko API",
settingsSchema: {
symbol: {
type: "string",
label: "Crypto Symbol (e.g., bitcoin, ethereum)",
default: "bitcoin",
required: true
},
currency: {
type: "string",
label: "Currency (e.g., USD, EUR)",
default: "USD",
required: true
},
refreshIntervalValue: {
type: "number",
label: "Refresh Interval",
default: 1,
required: true
},
refreshIntervalUnit: {
type: "select",
label: "Unit",
options: ["seconds", "minutes", "hours", "days"],
default: "minutes",
required: true
},
showLabel: {
type: "boolean",
label: "Show Label",
default: true
},
label: {
type: "string",
label: "Custom Label",
default: "Price"
}
}
};
var _tmpl$$7 = ["', "
"], _tmpl$2$7 = ["', "°", "
"], _tmpl$3$2 = [""], _tmpl$4$1 = ["', "", "
"];
function Weather(props) {
const [weather] = createSignal(null);
const [error] = createSignal("");
return ssr(_tmpl$4$1, ssrHydrationKey(), ssrStyleProperty("border:", "1px solid var(--border)") + ssrStyleProperty(";padding:", "1rem") + ssrStyleProperty(";width:", "100%") + ssrStyleProperty(";height:", "100%") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";display:", "flex") + ssrStyleProperty(";flex-direction:", "column") + ssrStyleProperty(";justify-content:", "center") + ssrStyleProperty(";align-items:", "center") + ssrStyleProperty(";background:", "var(--bg, #fff)"), escape(createComponent(Show, {
get when() {
return error();
},
get children() {
return ssr(_tmpl$$7, ssrHydrationKey(), ssrStyleProperty("color:", "#ff4444") + ssrStyleProperty(";font-size:", "clamp(0.7rem, 2vw + 0.5vh, 1rem)") + ssrStyleProperty(";text-align:", "center"), escape(error()));
}
})), escape(createComponent(Show, {
get when() {
return !error() && weather();
},
get children() {
return [ssr(_tmpl$$7, ssrHydrationKey(), ssrStyleProperty("font-size:", "clamp(0.7rem, 2vw + 0.5vh, 1.2rem)") + ssrStyleProperty(";font-weight:", "bold") + ssrStyleProperty(";margin-bottom:", "0.5rem") + ssrStyleProperty(";text-align:", "center"), props.settings.lat && props.settings.lon ? `${escape(props.settings.lat)}, ${escape(props.settings.lon)}` : escape(props.settings.city) || "London"), ssr(_tmpl$2$7, ssrHydrationKey(), ssrStyleProperty("font-size:", "clamp(1.5rem, 5vw + 1vh, 3.5rem)") + ssrStyleProperty(";font-weight:", "bold") + ssrStyleProperty(";text-align:", "center") + ssrStyleProperty(";line-height:", "1.1"), escape(weather()?.temp), props.settings.units === "metric" ? "C" : "F"), ssr(_tmpl$$7, ssrHydrationKey(), ssrStyleProperty("font-size:", "clamp(0.7rem, 1.8vw + 0.5vh, 1.1rem)") + ssrStyleProperty(";text-align:", "center") + ssrStyleProperty(";margin-top:", "0.3rem") + ssrStyleProperty(";text-transform:", "capitalize") + ssrStyleProperty(";color:", "var(--gray)"), escape(weather()?.description)), createComponent(Show, {
get when() {
return props.settings.showDetails;
},
get children() {
return ssr(_tmpl$3$2, ssrHydrationKey(), ssrStyleProperty("display:", "flex") + ssrStyleProperty(";gap:", "1rem") + ssrStyleProperty(";margin-top:", "0.8rem") + ssrStyleProperty(";font-size:", "clamp(0.6rem, 1.5vw + 0.5vh, 0.9rem)") + ssrStyleProperty(";color:", "var(--gray)"), escape(weather()?.humidity), escape(weather()?.windSpeed));
}
})];
}
})));
}
const weatherSchema = {
name: "Weather",
description: "Display current weather from OpenWeatherMap API",
settingsSchema: {
city: {
type: "string",
label: "City Name",
default: "London",
required: false
},
lat: {
type: "string",
label: "Latitude (optional, overrides city)",
default: "",
required: false
},
lon: {
type: "string",
label: "Longitude (optional, overrides city)",
default: "",
required: false
},
apiKey: {
type: "string",
label: "OpenWeatherMap API Key",
default: "",
required: true
},
units: {
type: "select",
label: "Temperature Units",
default: "metric",
options: ["metric", "imperial"]
},
showDetails: {
type: "boolean",
label: "Show Humidity & Wind",
default: true
},
refreshIntervalValue: {
type: "number",
label: "Refresh Interval",
default: 10,
required: true
},
refreshIntervalUnit: {
type: "select",
label: "Unit",
options: ["seconds", "minutes", "hours", "days"],
default: "minutes",
required: true
}
}
};
var _tmpl$$6 = ["'], _tmpl$2$6 = ["', "
"], _tmpl$3$1 = [""', '"
'], _tmpl$4 = ["— ', "
"];
const quoteCache = /* @__PURE__ */ new Map();
function StoicQuote(props) {
const widgetKey = "stoic-quote";
const initialQuote = quoteCache.get(widgetKey) || {
text: "Loading wisdom...",
author: ""
};
const [quote] = createSignal(initialQuote);
const [error] = createSignal("");
const [renderKey] = createSignal(0);
const showAuthor = () => props.settings.showAuthor !== false;
const fontSize = () => props.settings.fontSize || "medium";
const getSizes = () => {
const fontSizeMap = {
small: {
quote: "clamp(0.7rem, 1.5vw, 1.2rem)",
author: "clamp(0.6rem, 1.2vw, 0.9rem)"
},
medium: {
quote: "clamp(0.9rem, 2vw, 1.5rem)",
author: "clamp(0.7rem, 1.5vw, 1.1rem)"
},
large: {
quote: "clamp(1.1rem, 2.5vw, 2rem)",
author: "clamp(0.8rem, 1.8vw, 1.3rem)"
}
};
return fontSizeMap[fontSize()] || fontSizeMap.medium;
};
return ssr(_tmpl$$6, ssrHydrationKey() + ssrAttribute("data-render-key", escape(renderKey(), true), false), ssrStyleProperty("border:", "1px solid var(--border)") + ssrStyleProperty(";padding:", "1rem") + ssrStyleProperty(";width:", "100%") + ssrStyleProperty(";height:", "100%") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";display:", "flex") + ssrStyleProperty(";flex-direction:", "column") + ssrStyleProperty(";justify-content:", "center") + ssrStyleProperty(";align-items:", "center") + ssrStyleProperty(";background:", "var(--bg, #fff)") + ssrStyleProperty(";position:", "relative"), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";top:", "0.5rem") + ssrStyleProperty(";left:", "0.5rem") + ssrStyleProperty(";font-size:", "1.5rem") + ssrStyleProperty(";line-height:", "1") + ssrStyleProperty(";color:", "var(--border, #ccc)") + ssrStyleProperty(";font-family:", "Georgia, serif") + ssrStyleProperty(";font-weight:", "bold") + ssrStyleProperty(";opacity:", "0.3"), ssrStyleProperty("text-align:", "center") + ssrStyleProperty(";max-width:", "95%"), error() ? ssr(_tmpl$2$6, ssrHydrationKey(), ssrStyleProperty("color:", "var(--gray, #999)"), escape(error())) : escape([ssr(_tmpl$3$1, ssrHydrationKey(), ssrStyleProperty("font-size:", escape(getSizes().quote, true)) + ssrStyleProperty(";line-height:", "1.4") + ssrStyleProperty(";font-style:", "italic"), escape(quote().text)), showAuthor() && quote().author && ssr(_tmpl$4, ssrHydrationKey(), ssrStyleProperty("margin-top:", "0.5rem") + ssrStyleProperty(";font-size:", escape(getSizes().author, true)) + ssrStyleProperty(";color:", "var(--gray, #666)") + ssrStyleProperty(";font-weight:", "500"), escape(quote().author))]), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";bottom:", "8px") + ssrStyleProperty(";left:", "8px") + ssrStyleProperty(";font-size:", "0.7rem") + ssrStyleProperty(";color:", "var(--gray, #999)") + ssrStyleProperty(";text-transform:", "uppercase") + ssrStyleProperty(";letter-spacing:", "0.05em") + ssrStyleProperty(";opacity:", "0.5"));
}
const stoicQuoteSchema = {
name: "Stoic Quote",
description: "Display stoic wisdom from Marcus Aurelius, Seneca, and Epictetus",
settingsSchema: {
fontSize: {
type: "select",
label: "Font Size",
options: ["small", "medium", "large"],
default: "medium"
},
showAuthor: {
type: "boolean",
label: "Show Author",
default: true
},
refreshIntervalValue: {
type: "number",
label: "Refresh Interval",
default: 1,
required: true
},
refreshIntervalUnit: {
type: "select",
label: "Unit",
options: ["seconds", "minutes", "hours", "days"],
default: "hours",
required: true
}
}
};
const widgetRegistry = {
"crypto-price": {
schema: cryptoPriceSchema,
Component: CryptoPrice
},
clock: {
schema: clockSchema,
Component: Clock
},
weather: {
schema: weatherSchema,
Component: Weather
},
"stoic-quote": {
schema: stoicQuoteSchema,
Component: StoicQuote
}
};
function getWidget(type) {
return widgetRegistry[type];
}
var _tmpl$$5 = [""], _tmpl$2$5 = ["× '], _tmpl$3 = ["
'];
function WidgetRenderer(props) {
const widgetDef = getWidget(props.config.type);
const [isDragging] = createSignal(false);
const [isResizing] = createSignal(false);
const size = () => props.config.size || {
width: 200,
height: 150
};
return createComponent(Show, {
when: widgetDef,
children: (widget) => ssr(_tmpl$$5, ssrHydrationKey() + ssrAttribute("data-widget-id", escape(props.config.id, true), false), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";width:", `${escape(size().width, true)}px`) + ssrStyleProperty(";height:", `${escape(size().height, true)}px`) + ssrStyleProperty(";cursor:", props.locked ? "default" : isDragging() ? "grabbing" : "grab") + ssrStyleProperty(";user-select:", "none") + ssrStyleProperty(";transition:", isDragging() || isResizing() ? "none" : "box-shadow 0.2s") + ssrStyleProperty(";box-shadow:", isDragging() || isResizing() ? "0 8px 16px rgba(0,0,0,0.2)" : "0 2px 4px rgba(0,0,0,0.1)") + ssrStyleProperty(";z-index:", isDragging() || isResizing() ? "100" : "1"), !props.locked && props.onRemove && ssr(_tmpl$2$5, ssrHydrationKey(), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";top:", "-8px") + ssrStyleProperty(";right:", "-8px") + ssrStyleProperty(";z-index:", "10") + ssrStyleProperty(";padding:", "0") + ssrStyleProperty(";font-size:", "1rem") + ssrStyleProperty(";background:", "#ff4444") + ssrStyleProperty(";color:", "white") + ssrStyleProperty(";border:", "none") + ssrStyleProperty(";border-radius:", "50%") + ssrStyleProperty(";cursor:", "pointer") + ssrStyleProperty(";width:", "24px") + ssrStyleProperty(";height:", "24px") + ssrStyleProperty(";display:", "flex") + ssrStyleProperty(";align-items:", "center") + ssrStyleProperty(";justify-content:", "center") + ssrStyleProperty(";font-weight:", "bold")), !props.locked && (!props.gridCells || props.gridCells.length === 0) && ssr(_tmpl$3, ssrHydrationKey(), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";bottom:", "0") + ssrStyleProperty(";right:", "0") + ssrStyleProperty(";width:", "20px") + ssrStyleProperty(";height:", "20px") + ssrStyleProperty(";cursor:", "nwse-resize") + ssrStyleProperty(";z-index:", "10") + ssrStyleProperty(";background:", "linear-gradient(135deg, transparent 50%, rgba(0,0,0,0.2) 50%)") + ssrStyleProperty(";border-bottom-right-radius:", "4px")), ssrStyleProperty("width:", "100%") + ssrStyleProperty(";height:", "100%") + ssrStyleProperty(";overflow:", "auto"), escape(createComponent(Dynamic, {
get component() {
return widget().Component;
},
get settings() {
return props.config.settings;
}
})))
});
}
var _tmpl$$4 = ["', "
"], _tmpl$2$4 = ["
'];
const simpleGridTemplate = {
id: "simple",
name: "Simple 2x2 Grid",
description: "Basic 2x2 grid layout",
width: 800,
height: 600,
background: "#1a1a1a",
cells: [{
id: "cell-1",
x: 10,
y: 10,
width: 385,
height: 285
}, {
id: "cell-2",
x: 405,
y: 10,
width: 385,
height: 285
}, {
id: "cell-3",
x: 10,
y: 305,
width: 385,
height: 285
}, {
id: "cell-4",
x: 405,
y: 305,
width: 385,
height: 285
}]
};
function SimpleGrid() {
return ssr(_tmpl$$4, ssrHydrationKey(), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";width:", `${escape(simpleGridTemplate.width, true)}px`) + ssrStyleProperty(";height:", `${escape(simpleGridTemplate.height, true)}px`) + ssrStyleProperty(";background:", escape(simpleGridTemplate.background, true)) + ssrStyleProperty(";pointer-events:", "none"), escape(simpleGridTemplate.cells.map((cell) => ssr(_tmpl$2$4, ssrHydrationKey() + ssrAttribute("data-grid-cell", escape(cell.id, true), false), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";left:", `${escape(cell.x, true)}px`) + ssrStyleProperty(";top:", `${escape(cell.y, true)}px`) + ssrStyleProperty(";width:", `${escape(cell.width, true)}px`) + ssrStyleProperty(";height:", `${escape(cell.height, true)}px`) + ssrStyleProperty(";border:", "2px dashed rgba(255, 255, 255, 0.2)") + ssrStyleProperty(";border-radius:", "12px") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";background:", "rgba(255, 255, 255, 0.03)")))));
}
var _tmpl$$3 = ["', "
"], _tmpl$2$3 = ["
'];
const threeColumnGridTemplate = {
id: "threeColumn",
name: "Three Column Layout",
description: "Sidebar, main content, and right panel",
width: 1200,
height: 800,
background: "#1a1a1a",
cells: [
// Left sidebar - narrow
{
id: "sidebar-left",
x: 10,
y: 10,
width: 200,
height: 780
},
// Main content area - wide
{
id: "main-top",
x: 220,
y: 10,
width: 760,
height: 380
},
{
id: "main-bottom-left",
x: 220,
y: 400,
width: 370,
height: 390
},
{
id: "main-bottom-right",
x: 600,
y: 400,
width: 380,
height: 390
},
// Right panel - medium
{
id: "panel-top",
x: 990,
y: 10,
width: 200,
height: 380
},
{
id: "panel-bottom",
x: 990,
y: 400,
width: 200,
height: 390
}
]
};
function ThreeColumnGrid() {
return ssr(_tmpl$$3, ssrHydrationKey(), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";width:", `${escape(threeColumnGridTemplate.width, true)}px`) + ssrStyleProperty(";height:", `${escape(threeColumnGridTemplate.height, true)}px`) + ssrStyleProperty(";background:", escape(threeColumnGridTemplate.background, true)) + ssrStyleProperty(";pointer-events:", "none"), escape(threeColumnGridTemplate.cells.map((cell) => ssr(_tmpl$2$3, ssrHydrationKey() + ssrAttribute("data-grid-cell", escape(cell.id, true), false), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";left:", `${escape(cell.x, true)}px`) + ssrStyleProperty(";top:", `${escape(cell.y, true)}px`) + ssrStyleProperty(";width:", `${escape(cell.width, true)}px`) + ssrStyleProperty(";height:", `${escape(cell.height, true)}px`) + ssrStyleProperty(";border:", "2px dashed rgba(255, 255, 255, 0.2)") + ssrStyleProperty(";border-radius:", "12px") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";background:", "rgba(255, 255, 255, 0.03)")))));
}
var _tmpl$$2 = ["', "
"], _tmpl$2$2 = ["
'];
const dashboardGridTemplate = {
id: "dashboard",
name: "Dashboard Layout",
description: "Professional dashboard with header and mixed sizes",
width: 1400,
height: 900,
background: "#1a1a1a",
cells: [
// Header row - full width
{
id: "header",
x: 10,
y: 10,
width: 1380,
height: 120
},
// Main metrics row
{
id: "metric-1",
x: 10,
y: 140,
width: 330,
height: 200
},
{
id: "metric-2",
x: 350,
y: 140,
width: 330,
height: 200
},
{
id: "metric-3",
x: 690,
y: 140,
width: 330,
height: 200
},
{
id: "metric-4",
x: 1030,
y: 140,
width: 360,
height: 200
},
// Middle row - large chart on left, two stacked on right
{
id: "chart-main",
x: 10,
y: 350,
width: 880,
height: 540
},
{
id: "info-top",
x: 900,
y: 350,
width: 490,
height: 260
},
{
id: "info-bottom",
x: 900,
y: 620,
width: 490,
height: 270
}
]
};
function DashboardGrid() {
return ssr(_tmpl$$2, ssrHydrationKey(), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";width:", `${escape(dashboardGridTemplate.width, true)}px`) + ssrStyleProperty(";height:", `${escape(dashboardGridTemplate.height, true)}px`) + ssrStyleProperty(";background:", escape(dashboardGridTemplate.background, true)) + ssrStyleProperty(";pointer-events:", "none"), escape(dashboardGridTemplate.cells.map((cell) => ssr(_tmpl$2$2, ssrHydrationKey() + ssrAttribute("data-grid-cell", escape(cell.id, true), false), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";left:", `${escape(cell.x, true)}px`) + ssrStyleProperty(";top:", `${escape(cell.y, true)}px`) + ssrStyleProperty(";width:", `${escape(cell.width, true)}px`) + ssrStyleProperty(";height:", `${escape(cell.height, true)}px`) + ssrStyleProperty(";border:", "2px dashed rgba(255, 255, 255, 0.2)") + ssrStyleProperty(";border-radius:", "12px") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";background:", "rgba(255, 255, 255, 0.03)")))));
}
var _tmpl$$1 = ["', "
"], _tmpl$2$1 = ["
'];
const sidebarContentGridTemplate = {
id: "sidebarContent",
name: "Sidebar Content Layout",
description: "Two long sidebars with large content in middle",
width: 1400,
height: 900,
background: "#1a1a1a",
cells: [
// Left sidebar - single long bar
{
id: "left-sidebar",
x: 10,
y: 10,
width: 280,
height: 880
},
// Main content - centered between sidebars
// Math: left ends at 290, right starts at 1110
// Available: 1110 - 290 = 820px
// Center: 290 + (820 - 800)/2 = 300
{
id: "main-content",
x: 300,
y: 10,
width: 800,
height: 880
},
// Right sidebar - single long bar
{
id: "right-sidebar",
x: 1110,
y: 10,
width: 280,
height: 880
}
]
};
function SidebarContentGrid() {
return ssr(_tmpl$$1, ssrHydrationKey(), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";width:", `${escape(sidebarContentGridTemplate.width, true)}px`) + ssrStyleProperty(";height:", `${escape(sidebarContentGridTemplate.height, true)}px`) + ssrStyleProperty(";background:", escape(sidebarContentGridTemplate.background, true)) + ssrStyleProperty(";pointer-events:", "none"), escape(sidebarContentGridTemplate.cells.map((cell) => ssr(_tmpl$2$1, ssrHydrationKey() + ssrAttribute("data-grid-cell", escape(cell.id, true), false), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";left:", `${escape(cell.x, true)}px`) + ssrStyleProperty(";top:", `${escape(cell.y, true)}px`) + ssrStyleProperty(";width:", `${escape(cell.width, true)}px`) + ssrStyleProperty(";height:", `${escape(cell.height, true)}px`) + ssrStyleProperty(";border:", "2px dashed rgba(255, 255, 255, 0.2)") + ssrStyleProperty(";border-radius:", "12px") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";background:", "rgba(255, 255, 255, 0.03)")))));
}
var _tmpl$ = ["', "
"], _tmpl$2 = ["
'];
const centeredFocusGridTemplate = {
id: "centeredFocus",
name: "Centered Focus Layout",
description: "2 center items with left sidebar boxes and tall right panel",
width: 1520,
height: 760,
background: "#1a1a1a",
cells: [
// Left sidebar - 2 stacked boxes
{
id: "left-top",
x: 10,
y: 10,
width: 390,
height: 340
},
{
id: "left-bottom",
x: 10,
y: 360,
width: 390,
height: 390
},
// Center - 2 items (short wide on top, larger below)
{
id: "center-top",
x: 410,
y: 10,
width: 760,
height: 250
},
{
id: "center-bottom",
x: 410,
y: 270,
width: 760,
height: 480
},
// Right sidebar - single tall item
{
id: "right-tall",
x: 1180,
y: 10,
width: 330,
height: 740
}
]
};
function CenteredFocusGrid() {
return ssr(_tmpl$, ssrHydrationKey(), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";width:", `${escape(centeredFocusGridTemplate.width, true)}px`) + ssrStyleProperty(";height:", `${escape(centeredFocusGridTemplate.height, true)}px`) + ssrStyleProperty(";background:", escape(centeredFocusGridTemplate.background, true)) + ssrStyleProperty(";pointer-events:", "none"), escape(centeredFocusGridTemplate.cells.map((cell) => ssr(_tmpl$2, ssrHydrationKey() + ssrAttribute("data-grid-cell", escape(cell.id, true), false), ssrStyleProperty("position:", "absolute") + ssrStyleProperty(";left:", `${escape(cell.x, true)}px`) + ssrStyleProperty(";top:", `${escape(cell.y, true)}px`) + ssrStyleProperty(";width:", `${escape(cell.width, true)}px`) + ssrStyleProperty(";height:", `${escape(cell.height, true)}px`) + ssrStyleProperty(";border:", "2px dashed rgba(255, 255, 255, 0.2)") + ssrStyleProperty(";border-radius:", "12px") + ssrStyleProperty(";box-sizing:", "border-box") + ssrStyleProperty(";background:", "rgba(255, 255, 255, 0.03)")))));
}
const gridRegistry = {
simple: {
template: simpleGridTemplate,
Component: SimpleGrid
},
threeColumn: {
template: threeColumnGridTemplate,
Component: ThreeColumnGrid
},
dashboard: {
template: dashboardGridTemplate,
Component: DashboardGrid
},
sidebarContent: {
template: sidebarContentGridTemplate,
Component: SidebarContentGrid
},
centeredFocus: {
template: centeredFocusGridTemplate,
Component: CenteredFocusGrid
}
};
function getGrid(id) {
return gridRegistry[id];
}
function getAllGrids() {
return Object.values(gridRegistry);
}
export { WidgetRenderer as W, getAllGrids as a, getGrid as g, widgetRegistry as w };