- Created package.json for Docus with necessary scripts and dependencies. - Implemented sync-docus-docs.mjs to automate the generation of documentation files from source markdown. - Defined mappings for generated pages and virtual routes to ensure proper linking in documentation. - Added static content files for the documentation structure, including navigation and index pages.
106 lines
45 KiB
HTML
106 lines
45 KiB
HTML
<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><style id="nuxt-ui-colors">@layer theme {
|
|
:root, :host {
|
|
--ui-color-primary-50: var(--color-emerald-50, oklch(97.9% 0.021 166.113));
|
|
--ui-color-primary-100: var(--color-emerald-100, oklch(95% 0.052 163.051));
|
|
--ui-color-primary-200: var(--color-emerald-200, oklch(90.5% 0.093 164.15));
|
|
--ui-color-primary-300: var(--color-emerald-300, oklch(84.5% 0.143 164.978));
|
|
--ui-color-primary-400: var(--color-emerald-400, oklch(76.5% 0.177 163.223));
|
|
--ui-color-primary-500: var(--color-emerald-500, oklch(69.6% 0.17 162.48));
|
|
--ui-color-primary-600: var(--color-emerald-600, oklch(59.6% 0.145 163.225));
|
|
--ui-color-primary-700: var(--color-emerald-700, oklch(50.8% 0.118 165.612));
|
|
--ui-color-primary-800: var(--color-emerald-800, oklch(43.2% 0.095 166.913));
|
|
--ui-color-primary-900: var(--color-emerald-900, oklch(37.8% 0.077 168.94));
|
|
--ui-color-primary-950: var(--color-emerald-950, oklch(26.2% 0.051 172.552));
|
|
--ui-color-secondary-50: var(--color-blue-50, oklch(97% 0.014 254.604));
|
|
--ui-color-secondary-100: var(--color-blue-100, oklch(93.2% 0.032 255.585));
|
|
--ui-color-secondary-200: var(--color-blue-200, oklch(88.2% 0.059 254.128));
|
|
--ui-color-secondary-300: var(--color-blue-300, oklch(80.9% 0.105 251.813));
|
|
--ui-color-secondary-400: var(--color-blue-400, oklch(70.7% 0.165 254.624));
|
|
--ui-color-secondary-500: var(--color-blue-500, oklch(62.3% 0.214 259.815));
|
|
--ui-color-secondary-600: var(--color-blue-600, oklch(54.6% 0.245 262.881));
|
|
--ui-color-secondary-700: var(--color-blue-700, oklch(48.8% 0.243 264.376));
|
|
--ui-color-secondary-800: var(--color-blue-800, oklch(42.4% 0.199 265.638));
|
|
--ui-color-secondary-900: var(--color-blue-900, oklch(37.9% 0.146 265.522));
|
|
--ui-color-secondary-950: var(--color-blue-950, oklch(28.2% 0.091 267.935));
|
|
--ui-color-success-50: var(--color-green-50, oklch(98.2% 0.018 155.826));
|
|
--ui-color-success-100: var(--color-green-100, oklch(96.2% 0.044 156.743));
|
|
--ui-color-success-200: var(--color-green-200, oklch(92.5% 0.084 155.995));
|
|
--ui-color-success-300: var(--color-green-300, oklch(87.1% 0.15 154.449));
|
|
--ui-color-success-400: var(--color-green-400, oklch(79.2% 0.209 151.711));
|
|
--ui-color-success-500: var(--color-green-500, oklch(72.3% 0.219 149.579));
|
|
--ui-color-success-600: var(--color-green-600, oklch(62.7% 0.194 149.214));
|
|
--ui-color-success-700: var(--color-green-700, oklch(52.7% 0.154 150.069));
|
|
--ui-color-success-800: var(--color-green-800, oklch(44.8% 0.119 151.328));
|
|
--ui-color-success-900: var(--color-green-900, oklch(39.3% 0.095 152.535));
|
|
--ui-color-success-950: var(--color-green-950, oklch(26.6% 0.065 152.934));
|
|
--ui-color-info-50: var(--color-blue-50, oklch(97% 0.014 254.604));
|
|
--ui-color-info-100: var(--color-blue-100, oklch(93.2% 0.032 255.585));
|
|
--ui-color-info-200: var(--color-blue-200, oklch(88.2% 0.059 254.128));
|
|
--ui-color-info-300: var(--color-blue-300, oklch(80.9% 0.105 251.813));
|
|
--ui-color-info-400: var(--color-blue-400, oklch(70.7% 0.165 254.624));
|
|
--ui-color-info-500: var(--color-blue-500, oklch(62.3% 0.214 259.815));
|
|
--ui-color-info-600: var(--color-blue-600, oklch(54.6% 0.245 262.881));
|
|
--ui-color-info-700: var(--color-blue-700, oklch(48.8% 0.243 264.376));
|
|
--ui-color-info-800: var(--color-blue-800, oklch(42.4% 0.199 265.638));
|
|
--ui-color-info-900: var(--color-blue-900, oklch(37.9% 0.146 265.522));
|
|
--ui-color-info-950: var(--color-blue-950, oklch(28.2% 0.091 267.935));
|
|
--ui-color-warning-50: var(--color-yellow-50, oklch(98.7% 0.026 102.212));
|
|
--ui-color-warning-100: var(--color-yellow-100, oklch(97.3% 0.071 103.193));
|
|
--ui-color-warning-200: var(--color-yellow-200, oklch(94.5% 0.129 101.54));
|
|
--ui-color-warning-300: var(--color-yellow-300, oklch(90.5% 0.182 98.111));
|
|
--ui-color-warning-400: var(--color-yellow-400, oklch(85.2% 0.199 91.936));
|
|
--ui-color-warning-500: var(--color-yellow-500, oklch(79.5% 0.184 86.047));
|
|
--ui-color-warning-600: var(--color-yellow-600, oklch(68.1% 0.162 75.834));
|
|
--ui-color-warning-700: var(--color-yellow-700, oklch(55.4% 0.135 66.442));
|
|
--ui-color-warning-800: var(--color-yellow-800, oklch(47.6% 0.114 61.907));
|
|
--ui-color-warning-900: var(--color-yellow-900, oklch(42.1% 0.095 57.708));
|
|
--ui-color-warning-950: var(--color-yellow-950, oklch(28.6% 0.066 53.813));
|
|
--ui-color-error-50: var(--color-red-50, oklch(97.1% 0.013 17.38));
|
|
--ui-color-error-100: var(--color-red-100, oklch(93.6% 0.032 17.717));
|
|
--ui-color-error-200: var(--color-red-200, oklch(88.5% 0.062 18.334));
|
|
--ui-color-error-300: var(--color-red-300, oklch(80.8% 0.114 19.571));
|
|
--ui-color-error-400: var(--color-red-400, oklch(70.4% 0.191 22.216));
|
|
--ui-color-error-500: var(--color-red-500, oklch(63.7% 0.237 25.331));
|
|
--ui-color-error-600: var(--color-red-600, oklch(57.7% 0.245 27.325));
|
|
--ui-color-error-700: var(--color-red-700, oklch(50.5% 0.213 27.518));
|
|
--ui-color-error-800: var(--color-red-800, oklch(44.4% 0.177 26.899));
|
|
--ui-color-error-900: var(--color-red-900, oklch(39.6% 0.141 25.723));
|
|
--ui-color-error-950: var(--color-red-950, oklch(25.8% 0.092 26.042));
|
|
--ui-color-neutral-50: var(--color-zinc-50, oklch(98.5% 0 0));
|
|
--ui-color-neutral-100: var(--color-zinc-100, oklch(96.7% 0.001 286.375));
|
|
--ui-color-neutral-200: var(--color-zinc-200, oklch(92% 0.004 286.32));
|
|
--ui-color-neutral-300: var(--color-zinc-300, oklch(87.1% 0.006 286.286));
|
|
--ui-color-neutral-400: var(--color-zinc-400, oklch(70.5% 0.015 286.067));
|
|
--ui-color-neutral-500: var(--color-zinc-500, oklch(55.2% 0.016 285.938));
|
|
--ui-color-neutral-600: var(--color-zinc-600, oklch(44.2% 0.017 285.786));
|
|
--ui-color-neutral-700: var(--color-zinc-700, oklch(37% 0.013 285.805));
|
|
--ui-color-neutral-800: var(--color-zinc-800, oklch(27.4% 0.006 286.033));
|
|
--ui-color-neutral-900: var(--color-zinc-900, oklch(21% 0.006 285.885));
|
|
--ui-color-neutral-950: var(--color-zinc-950, oklch(14.1% 0.005 285.823));
|
|
}
|
|
:root, :host, .light {
|
|
--ui-primary: var(--ui-color-primary-500);
|
|
--ui-secondary: var(--ui-color-secondary-500);
|
|
--ui-success: var(--ui-color-success-500);
|
|
--ui-info: var(--ui-color-info-500);
|
|
--ui-warning: var(--ui-color-warning-500);
|
|
--ui-error: var(--ui-color-error-500);
|
|
}
|
|
.dark {
|
|
--ui-primary: var(--ui-color-primary-400);
|
|
--ui-secondary: var(--ui-color-secondary-400);
|
|
--ui-success: var(--ui-color-success-400);
|
|
--ui-info: var(--ui-color-info-400);
|
|
--ui-warning: var(--ui-color-warning-400);
|
|
--ui-error: var(--ui-color-error-400);
|
|
}
|
|
}</style><title>Forge Framework Documentation - forge-docus</title><meta property="og:image" content="https://innovativedevsolutions.github.io/forge/_og/s/c_Landing,title_Forge+Framework+Documentation,description_Documentation+for+the+Forge+Arma+3+framework+covering+architecture+persistence+extension+APIs+gameplay+modules+and+client.png"><meta property="og:image:type" content="image/png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://innovativedevsolutions.github.io/forge/_og/s/c_Landing,title_Forge+Framework+Documentation,description_Documentation+for+the+Forge+Arma+3+framework+covering+architecture+persistence+extension+APIs+gameplay+modules+and+client.png"><meta name="twitter:image:src" content="https://innovativedevsolutions.github.io/forge/_og/s/c_Landing,title_Forge+Framework+Documentation,description_Documentation+for+the+Forge+Arma+3+framework+covering+architecture+persistence+extension+APIs+gameplay+modules+and+client.png"><meta property="og:image:width" content="1200"><meta name="twitter:image:width" content="1200"><meta property="og:image:height" content="600"><meta name="twitter:image:height" content="600"><style>@media(min-width:1024px){.docus-sub-header{--ui-header-height:112px}}</style><link rel="stylesheet" href="/forge/_nuxt/entry.B0IIbxeE.css" crossorigin><style>@layer base {:where(.i-lucide\:arrow-left-right){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 3L4 7l4 4M4 7h16m-4 14l4-4l-4-4m4 4H4'/%3E%3C/svg%3E")}:where(.i-lucide\:arrow-right){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7l7 7l-7 7'/%3E%3C/svg%3E")}:where(.i-lucide\:boxes){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3zM7 16.5l-4.74-2.85M7 16.5l5-3m-5 3v5.17m5-8.17V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5zm5 3l-5-3m5 3l4.74-2.85M17 16.5v5.17'/%3E%3Cpath d='M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3l5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0zM12 8L7.26 5.15M12 8l4.74-2.85M12 13.5V8'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:database-zap){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cellipse cx='12' cy='5' rx='9' ry='3'/%3E%3Cpath d='M3 5v14a9 3 0 0 0 12 2.84M21 5v3m0 4l-3 5h4l-3 5'/%3E%3Cpath d='M3 12a9 3 0 0 0 11.59 2.87'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:layers-3){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z'/%3E%3Cpath d='m6.08 9.5l-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59'/%3E%3Cpath d='m6.08 14.5l-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:monitor-smartphone){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8m-2 4v-3.96v3.15M7 19h5'/%3E%3Crect width='6' height='10' x='16' y='12' rx='2'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:moon){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401'/%3E%3C/svg%3E")}:where(.i-lucide\:rocket){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09'/%3E%3Cpath d='M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z'/%3E%3Cpath d='M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:search){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:server){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='20' height='8' x='2' y='2' rx='2' ry='2'/%3E%3Crect width='20' height='8' x='2' y='14' rx='2' ry='2'/%3E%3Cpath d='M6 6h.01M6 18h.01'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:server-cog){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m10.852 14.772l-.383.923m2.679-.923a3 3 0 1 0-2.296-5.544l-.383-.923m2.679.923l.383-.923'/%3E%3Cpath d='m13.53 15.696l-.382-.924a3 3 0 1 1-2.296-5.544m3.92 1.624l.923-.383m-.923 2.679l.923.383'/%3E%3Cpath d='M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5m-15 4H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5M6 18h.01M6 6h.01m3.218 4.852l-.923-.383m.923 2.679l-.923.383'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:sun){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-lucide\:wrench){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z'/%3E%3C/svg%3E")}:where(.i-simple-icons\:github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}}</style><link rel="preload" as="fetch" crossorigin="anonymous" href="/forge/_payload.json?cd17b1fd-ee30-4fca-a256-bc98b65244b8"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/B3fabVUf.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/BnHu5O7o.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/DXQrCARz.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/DzNJTbjO.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/n8vERajx.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/BN_7HF1G.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/C8-Mg-oX.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/DB_5vY_E.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/CamoC0EK.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/G6op-Gdf.js"><link rel="modulepreload" as="script" crossorigin href="/forge/_nuxt/BecbEIqG.js"><script type="module" src="/forge/_nuxt/B3fabVUf.js" crossorigin></script><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><link rel="icon" href="/favicon.ico"><meta name="description" content="Documentation for the Forge Arma 3 framework, covering architecture, persistence, extension APIs, gameplay modules, and client UIs."><meta property="og:site_name" content="forge-docus"><meta property="og:title" content="Forge Framework Documentation"><meta property="og:description" content="Documentation for the Forge Arma 3 framework, covering architecture, persistence, extension APIs, gameplay modules, and client UIs."><meta property="og:type" content="website"><meta property="og:url" content="https://innovativedevsolutions.github.io"><link rel="canonical" href="https://innovativedevsolutions.github.io"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"forge-docus","description":"Documentation for the Forge Arma 3 framework, covering architecture, persistence, extension APIs, gameplay modules, and client UIs.","url":"https://innovativedevsolutions.github.io"}</script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"><!--[--><!--[--><!--[--><!--[--><!--[--><div class="nuxt-loading-indicator" style="position:fixed;top:0;right:0;left:0;pointer-events:none;width:auto;height:3px;opacity:0;background:var(--ui-primary);background-size:0% auto;transform:scaleX(0%);transform-origin:left;transition:transform 0.1s, height 0.4s, opacity 0.4s;z-index:999999;"></div><div class="transition-[margin-right] duration-200 ease-linear will-change-[margin-right]" style="margin-right:0;"><!--[--><!----><!----><!----><header data-slot="root" class="bg-default/75 backdrop-blur border-b border-default h-(--ui-header-height) sticky top-0 z-50"><!--[--><!--]--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 flex items-center justify-between gap-3 h-full" data-slot="container"><!--[--><div data-slot="left" class="lg:flex-1 flex items-center gap-1.5"><!----><!--[--><a aria-current="page" href="/forge/" class="router-link-active router-link-exact-active" aria-label="forge-docus"><span class="h-6 w-auto shrink-0">forge-docus</span></a><!--]--></div><div data-slot="center" class="hidden lg:flex flex-1"><!--[--><!--[--><!----><!--[--><!--[--><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-default bg-elevated hover:bg-accented/75 active:bg-accented/75 focus:outline-none focus-visible:bg-accented/75 disabled:bg-elevated aria-disabled:bg-elevated w-full"><!--[--><!--[--><span class="iconify i-lucide:search shrink-0 size-4 mr-1" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><span data-slot="label" class="truncate">Search…</span><!--]--><!--[--><div data-slot="trailing" class="hidden lg:flex items-center gap-0.5 ms-auto"><!--[--><!--[--><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[--> <!--]--></kbd><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[-->k<!--]--></kbd><!--]--><!--]--></div><!--]--><!--]--></button><!--]--><!--]--><!--]--><!--]--></div><div data-slot="right" class="flex items-center justify-end lg:flex-1 gap-1.5"><!--[--><div></div><!----><!----><!--[--><!----><!--[--><!--[--><button type="button" aria-label="Search…" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 lg:hidden"><!--[--><!--[--><span class="iconify i-lucide:search shrink-0 size-5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><span data-slot="label" class="truncate hidden">Search…</span><!--]--><!--[--><div data-slot="trailing" class="hidden items-center gap-0.5 ms-auto lg:hidden"><!--[--><!--[--><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[--> <!--]--></kbd><kbd class="inline-flex items-center justify-center px-1 rounded-sm font-medium font-sans uppercase h-5 min-w-[20px] text-[11px] ring ring-inset ring-accented text-default bg-elevated"><!--[-->k<!--]--></kbd><!--]--><!--]--></div><!--]--><!--]--></button><!--]--><!--]--><!--]--><!--[--><div class="h-8 w-8 animate-pulse bg-neutral-200 dark:bg-neutral-800 rounded-md"></div><!--]--><!--[--><!--[--><!--[--><a href="https://github.com/InnovativeDevSolutions/forge" rel="noopener noreferrer" target="_blank" aria-label="GitHub" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-5" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!--]--><!--]--><!--]--><!--[--><!--[--><!--[--><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 -me-1.5 lg:hidden"><!--[--><!--[--><!----><!--]--><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="size-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="6" x2="20" y2="6" class="outline-none"></line><line x1="4" y1="12" x2="20" y2="12" class="outline-none"></line><line x1="4" y1="18" x2="20" y2="18" class="outline-none"></line></svg><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><!--]--></div><!--]--></div><!--[--><!--]--></header><!--[--><!----><!----><!--v-if--><!--]--><!--]--><main class="min-h-[calc(100vh-var(--ui-header-height))]"><!--[--><!--[--><div><div data-orientation="vertical" data-slot="root" class="relative isolate"><!--[--><!--]--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 flex flex-col lg:grid py-24 sm:py-32 lg:py-40 gap-16 sm:gap-y-24" data-slot="container"><!--[--><div data-slot="wrapper" class="text-center"><div data-slot="header" class=""><!--[--><!----><h1 data-slot="title" class="text-5xl sm:text-7xl text-pretty tracking-tight font-bold text-highlighted"><!--[-->Forge Framework Documentation<!--]--></h1><div data-slot="description" class="text-lg sm:text-xl/8 text-muted text-balance mt-6"><!--[--><p class="my-5 leading-7 text-pretty"><!--[-->Forge is a persistent Arma 3 framework that combines SQF addons, a Rust
|
|
<code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->arma-rs<!--]--></code> extension, SurrealDB persistence, shared domain crates, and
|
|
browser-backed player interfaces.<!--]--></p><p class="my-5 leading-7 text-pretty"><!--[-->Use these docs to understand the runtime architecture, extension API surface,
|
|
server gameplay modules, and client addon integration patterns.<!--]--></p><!--]--></div><!--]--></div><!----><div data-slot="footer" class="mt-10"><!--[--><div data-slot="links" class="flex flex-wrap gap-x-6 gap-y-3 justify-center"><!--[--><!--[--><a href="/forge/getting-started" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-3 py-2 text-base gap-2 text-inverted bg-primary hover:bg-primary/75 active:bg-primary/75 disabled:bg-primary aria-disabled:bg-primary focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary"><!--[--><!--[--><!----><!--]--><!--[-->Start here<!--]--><!--[--><span class="iconify i-lucide:arrow-right shrink-0 size-6" aria-hidden="true" style="" data-slot="trailingIcon"></span><!--]--><!--]--></a><!--]--><!--[--><!--[--><a href="https://github.com/InnovativeDevSolutions/forge" rel="noopener noreferrer" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-3 py-2 text-base gap-2 ring ring-inset ring-accented text-default bg-default hover:bg-elevated active:bg-elevated disabled:bg-default aria-disabled:bg-default focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-6" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[-->View source<!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!--]--><!--]--></div><!--]--></div></div><!----><!--]--></div><!--[--><!--]--></div><section data-orientation="vertical" data-slot="root" class="relative isolate"><!--[--><!--]--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 flex flex-col lg:grid py-16 sm:py-24 lg:py-32 gap-8 sm:gap-16" data-slot="container"><!--[--><div data-slot="wrapper" class=""><div data-slot="header" class=""><!--[--><!----><!----><h2 data-slot="title" class="text-3xl sm:text-4xl lg:text-5xl text-pretty tracking-tight font-bold text-highlighted text-center"><!--[-->What Forge Covers<!--]--></h2><!----><!--]--></div><div data-slot="body" class="mt-16"><!--[--><ul data-slot="features" class="grid sm:grid-cols-2 lg:grid-cols-3 gap-8"><!--[--><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:boxes size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><!----><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Domain <span class="text-primary">Modules</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Actor, bank, CAD, garage, locker, organization, phone, store, task, and
|
|
owned-storage workflows share a consistent service and extension model.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:server size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><!----><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Rust <span class="text-primary">Extension</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->The server extension keeps command parsing thin, routes domain requests into
|
|
services, and persists durable state through SurrealDB.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:database-zap size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><!----><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Durable <span class="text-primary">Persistence</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Repository traits stay storage-agnostic while concrete adapters in the
|
|
extension handle schema and database mapping.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:monitor-smartphone size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><!----><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Browser <span class="text-primary">UIs</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Client addons host web-based interfaces inside Arma displays and synchronize
|
|
state through namespaced browser bridge events.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:arrow-left-right size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><!----><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Transport <span class="text-primary">Layer</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Large payloads move through chunked request and response transport while
|
|
smaller commands still use direct <code class="px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline-block border border-muted text-highlighted bg-muted"><!--[-->callExtension<!--]--></code> paths.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:wrench size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><!----><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Development <span class="text-primary">Workflow</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->The docs cover module boundaries, local validation checks, and where new
|
|
domain logic belongs across Rust, SQF, and web UI layers.<!--]--></div><!--]--></div></div><!--]--></ul><!--]--></div><!----></div><!----><!--]--></div><!--[--><!--]--></section><section data-orientation="vertical" data-slot="root" class="relative isolate"><!--[--><!--]--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 flex flex-col lg:grid py-16 sm:py-24 lg:py-32 gap-8 sm:gap-16" data-slot="container"><!--[--><div data-slot="wrapper" class=""><div data-slot="header" class=""><!--[--><!----><!----><h2 data-slot="title" class="text-3xl sm:text-4xl lg:text-5xl text-pretty tracking-tight font-bold text-highlighted text-center"><!--[-->Documentation Areas<!--]--></h2><!----><!--]--></div><div data-slot="body" class="mt-16"><!--[--><ul data-slot="features" class="grid sm:grid-cols-2 lg:grid-cols-3 gap-8"><!--[--><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5 has-focus-visible:ring-2 has-focus-visible:ring-primary transition"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:rocket size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><a href="/forge/getting-started" aria-label="Getting Started" class="focus:outline-none peer"><!--[--><!--[--><span class="absolute inset-0" aria-hidden="true"></span><!--]--><!--]--></a><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[--><span class="text-primary">Getting Started</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Framework overview, architecture, module reference, and development rules.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5 has-focus-visible:ring-2 has-focus-visible:ring-primary transition"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:server-cog size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><a href="/forge/server-extension" aria-label="Server Extension" class="focus:outline-none peer"><!--[--><!--[--><span class="absolute inset-0" aria-hidden="true"></span><!--]--><!--]--></a><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Server <span class="text-primary">Extension</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Extension architecture, command surface, and SQF usage examples.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5 has-focus-visible:ring-2 has-focus-visible:ring-primary transition"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:layers-3 size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><a href="/forge/server-modules" aria-label="Server Modules" class="focus:outline-none peer"><!--[--><!--[--><span class="absolute inset-0" aria-hidden="true"></span><!--]--><!--]--></a><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Server <span class="text-primary">Modules</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Gameplay-domain usage guides for persistence, hot state, and command flows.<!--]--></div><!--]--></div></div><div data-orientation="horizontal" data-slot="root" class="relative rounded-sm flex items-start gap-2.5 has-focus-visible:ring-2 has-focus-visible:ring-primary transition"><div data-slot="leading" class="inline-flex items-center justify-center p-0.5"><!--[--><span class="iconify i-lucide:monitor-smartphone size-5 shrink-0 text-primary" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--></div><div data-slot="wrapper" class=""><a href="/forge/client-addons" aria-label="Client Addons" class="focus:outline-none peer"><!--[--><!--[--><span class="absolute inset-0" aria-hidden="true"></span><!--]--><!--]--></a><!--[--><div data-slot="title" class="text-base text-pretty font-semibold text-highlighted"><!--[-->Client <span class="text-primary">Addons</span><!--]--></div><div data-slot="description" class="text-[15px] text-pretty text-muted mt-1"><!--[-->Browser bridge, client UX entry points, and addon-specific event contracts.<!--]--></div><!--]--></div></div><!--]--></ul><!--]--></div><!----></div><!----><!--]--></div><!--[--><!--]--></section></div><!--]--><!--]--></main><footer data-slot="root"><!----><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 py-8 lg:py-4 lg:flex lg:items-center lg:justify-between lg:gap-x-3" data-slot="container"><!--[--><div data-slot="right" class="lg:flex-1 flex items-center justify-center lg:justify-end gap-x-1.5 lg:order-3"><!--[--><!--[--><!--[--><!--[--><!--[--><a href="https://github.com/InnovativeDevSolutions/forge" rel="noopener noreferrer" target="_blank" aria-label="GitHub repository" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-simple-icons:github shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></a><!--]--><!--]--><!--]--><!--[--><!--[--><button type="button" aria-label="Switch to dark mode" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5"><!--[--><!--[--><span class="iconify i-lucide:moon shrink-0 size-5 hidden dark:inline-block" aria-hidden="true" style=""></span><span class="iconify i-lucide:sun shrink-0 size-5 dark:hidden" aria-hidden="true" style=""></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--><!--]--><!--]--><!--]--></div><div data-slot="center" class="mt-3 lg:mt-0 lg:order-2 flex items-center justify-center"><!--[--><!--]--></div><div data-slot="left" class="flex items-center justify-center lg:justify-start lg:flex-1 gap-x-1.5 mt-3 lg:mt-0 lg:order-1"><!--[--><div class="text-sm text-muted"> Copyright © 2026</div><!--]--></div><!--]--></div><!----></footer></div><span></span><!--]--><!--]--><!--[--><!--]--><!--v-if--><!--]--><!--[--><!--]--><!--]--><!--]--></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{assistant:{enabled:false,apiPath:"/__docus__/assistant"},mdc:{components:{prose:true,map:{accordion:"ProseAccordion","accordion-item":"ProseAccordionItem",badge:"ProseBadge",callout:"ProseCallout",card:"ProseCard","card-group":"ProseCardGroup",caution:"ProseCaution","code-collapse":"ProseCodeCollapse","code-group":"ProseCodeGroup","code-icon":"ProseCodeIcon","code-preview":"ProseCodePreview","code-tree":"ProseCodeTree",collapsible:"ProseCollapsible",field:"ProseField","field-group":"ProseFieldGroup",icon:"ProseIcon",kbd:"ProseKbd",note:"ProseNote",steps:"ProseSteps",tabs:"ProseTabs","tabs-item":"ProseTabsItem",tip:"ProseTip",warning:"ProseWarning"},customElements:[]},headings:{anchorLinks:{h1:false,h2:true,h3:true,h4:true,h5:false,h6:false}},highlight:{noApiRoute:true,theme:{light:"material-theme-lighter",default:"material-theme",dark:"material-theme-palenight"},shikiEngine:"javascript",langs:["bash","diff","json","js","ts","html","css","vue","shell","mdc","md","yaml"],highlighter:"shiki"}},content:{wsUrl:""},"nuxt-robots":{version:"6.0.7",isNuxtContentV2:false,debug:false,credits:true,groups:[{userAgent:["*"],allow:["/"],disallow:[],contentUsage:[],contentSignal:[],_indexable:true,_rules:[{pattern:"/",allow:true}],_normalized:true}],sitemap:["/sitemap.xml"],header:true,robotsEnabledValue:"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1",robotsDisabledValue:"noindex, nofollow",cacheControl:"max-age=14400, must-revalidate",botDetection:true,pageMetaRobots:{}},"nuxt-og-image":{defaults:{emojis:"noto",extension:"png",width:1200,height:600,cacheMaxAgeSeconds:259200},hasServerRuntime:true}},app:{baseURL:"/forge/",buildId:"cd17b1fd-ee30-4fca-a256-bc98b65244b8",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__" data-src="/forge/_payload.json?cd17b1fd-ee30-4fca-a256-bc98b65244b8">[{"state":1,"once":16,"_errors":17,"serverRendered":5,"path":19,"prerenderedAt":20},["Reactive",2],{"$scolor-mode":3,"$sassistant-open":6,"$sassistant-expanded":6,"$sassistant-messages":7,"$sassistant-pending":-1,"$stoasts":8,"$ssite-config":9},{"preference":4,"value":4,"unknown":5,"forced":6},"system",true,false,[],[],{"_priority":10,"env":13,"name":14,"url":15},{"env":11,"url":12,"name":12},-15,-3,"production","forge-docus","https:\u002F\u002Finnovativedevsolutions.github.io",["Set"],["ShallowReactive",18],{"navigation_docs":-1,"search_docs":-1,"landing":-1},"\u002F",1776805514039]</script></body></html> |