diff --git a/arma/client/addons/store/ui/_site/components/AppShell.js b/arma/client/addons/store/ui/_site/components/AppShell.js
new file mode 100644
index 0000000..78772b7
--- /dev/null
+++ b/arma/client/addons/store/ui/_site/components/AppShell.js
@@ -0,0 +1,140 @@
+(function () {
+ const components = (window.StoreComponents = window.StoreComponents || {});
+
+ components.renderAppShell = function renderAppShell(options) {
+ const { header, workspaceNavbar, workspaceBody, cartPanel } = options;
+
+ return `
+
+
+
+ FORGE Logistics
+ Supply Exchange
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${workspaceNavbar}
+
+
+
${header.copy}
+
${header.ribbon}
+
+ ${workspaceBody}
+
+
+ ${cartPanel}
+
+
+
+
+
+ `;
+ };
+})();
diff --git a/arma/client/addons/store/ui/_site/components/cards.js b/arma/client/addons/store/ui/_site/components/cards.js
new file mode 100644
index 0000000..b0b0252
--- /dev/null
+++ b/arma/client/addons/store/ui/_site/components/cards.js
@@ -0,0 +1,39 @@
+(function () {
+ const components = (window.StoreComponents = window.StoreComponents || {});
+
+ components.createCategoryCard = function createCategoryCard(category) {
+ return `
+
+ `;
+ };
+
+ components.createSubCategoryCard = function createSubCategoryCard(
+ category,
+ slotType,
+ ) {
+ return `
+
+ `;
+ };
+
+ components.createProductCard = function createProductCard(item) {
+ return `
+
+ Image Placeholder
+
+ ${item.code}
+ ${item.name}
+
+ ${item.description}
+
+
+ `;
+ };
+})();
diff --git a/arma/client/addons/store/ui/_site/components/cart-panel.js b/arma/client/addons/store/ui/_site/components/cart-panel.js
new file mode 100644
index 0000000..fc041c6
--- /dev/null
+++ b/arma/client/addons/store/ui/_site/components/cart-panel.js
@@ -0,0 +1,89 @@
+(function () {
+ const components = (window.StoreComponents = window.StoreComponents || {});
+
+ components.renderCartPanel = function renderCartPanel(state) {
+ return `
+
+ `;
+ };
+})();
diff --git a/arma/client/addons/store/ui/_site/components/workspace-navbar.js b/arma/client/addons/store/ui/_site/components/workspace-navbar.js
new file mode 100644
index 0000000..80c1c65
--- /dev/null
+++ b/arma/client/addons/store/ui/_site/components/workspace-navbar.js
@@ -0,0 +1,110 @@
+(function () {
+ const components = (window.StoreComponents = window.StoreComponents || {});
+
+ components.getBreadcrumbItems = function getBreadcrumbItems(
+ state,
+ formatTitle,
+ ) {
+ const items = [{ id: "categories", label: "Supply Exchange" }];
+
+ if (state.view === "weapons") {
+ items.push({ id: "weapons", label: "Weapons" });
+ return items;
+ }
+
+ if (state.view === "vehicles") {
+ items.push({ id: "vehicles", label: "Vehicles" });
+ return items;
+ }
+
+ if (state.view === "items") {
+ if (state.selectedWeaponSlot) {
+ items.push({ id: "weapons", label: "Weapons" });
+ items.push({
+ id: "weapon-slot",
+ label: formatTitle(state.selectedWeaponSlot),
+ });
+ return items;
+ }
+
+ if (state.selectedVehicleSlot) {
+ items.push({ id: "vehicles", label: "Vehicles" });
+ items.push({
+ id: "vehicle-slot",
+ label: formatTitle(state.selectedVehicleSlot),
+ });
+ return items;
+ }
+
+ if (state.selectedCategory) {
+ items.push({
+ id: "category",
+ label: formatTitle(state.selectedCategory),
+ });
+ }
+ }
+
+ return items;
+ };
+
+ components.renderWorkspaceBreadcrumbs = function renderWorkspaceBreadcrumbs(
+ state,
+ formatTitle,
+ ) {
+ const items = components.getBreadcrumbItems(state, formatTitle);
+
+ return `
+
+ ${items
+ .map((item, index) => {
+ const isCurrent = index === items.length - 1;
+
+ if (isCurrent) {
+ return `
+ ${item.label}
+ `;
+ }
+
+ return `
+
+ `;
+ })
+ .join('/')}
+
+ `;
+ };
+
+ components.renderWorkspaceCartToggle = function renderWorkspaceCartToggle(
+ state,
+ ) {
+ return `
+
+ `;
+ };
+
+ components.renderWorkspaceNavbar = function renderWorkspaceNavbar(
+ state,
+ formatTitle,
+ ) {
+ return `
+
+ `;
+ };
+})();
diff --git a/arma/client/addons/store/ui/_site/data.js b/arma/client/addons/store/ui/_site/data.js
new file mode 100644
index 0000000..b114214
--- /dev/null
+++ b/arma/client/addons/store/ui/_site/data.js
@@ -0,0 +1,374 @@
+(function () {
+ window.StoreData = {
+ categoryCards: [
+ { id: "uniforms", label: "Uniforms" },
+ { id: "headgear", label: "Headgear" },
+ { id: "facewear", label: "Facewear" },
+ { id: "vests", label: "Vests" },
+ { id: "weapons", label: "Weapons" },
+ { id: "ammo", label: "Ammo" },
+ { id: "items", label: "Items" },
+ { id: "vehicles", label: "Vehicles" },
+ ],
+ vehicleCards: [
+ { id: "cars", label: "Cars" },
+ { id: "armor", label: "Armor" },
+ { id: "helis", label: "Helicopters" },
+ { id: "planes", label: "Planes" },
+ { id: "naval", label: "Naval" },
+ { id: "other", label: "Other" },
+ ],
+ weaponCards: [
+ { id: "primary", label: "Primary" },
+ { id: "secondary", label: "Secondary" },
+ { id: "handgun", label: "Handgun" },
+ ],
+ previewItems: {
+ uniforms: [
+ {
+ code: "UNF-102",
+ name: "Field Uniform",
+ description:
+ "Standard issue apparel block reserved for mission-ready clothing sets.",
+ price: "$1,250",
+ },
+ {
+ code: "UNF-214",
+ name: "Combat Uniform",
+ description:
+ "Hardened kit placeholder for armored and specialized duty loadouts.",
+ price: "$1,980",
+ },
+ {
+ code: "UNF-330",
+ name: "Duty Uniform",
+ description:
+ "Administrative and garrison wear preview for storefront layout validation.",
+ price: "$890",
+ },
+ ],
+ headgear: [
+ {
+ code: "HDG-044",
+ name: "Patrol Helmet",
+ description:
+ "Protective headgear module with placeholder image frame and pricing slot.",
+ price: "$640",
+ },
+ {
+ code: "HDG-107",
+ name: "Operator Cap",
+ description:
+ "Soft headwear entry for non-armored and low-profile equipment sets.",
+ price: "$120",
+ },
+ {
+ code: "HDG-221",
+ name: "Boonie Hat",
+ description:
+ "Terrain-adapted headwear card for storefront presentation.",
+ price: "$95",
+ },
+ ],
+ facewear: [
+ {
+ code: "FAC-015",
+ name: "Protective Goggles",
+ description:
+ "Facewear module placeholder aligned to the shared supply exchange layout.",
+ price: "$220",
+ },
+ {
+ code: "FAC-028",
+ name: "Balaclava",
+ description:
+ "Low-profile face covering preview card for catalog expansion.",
+ price: "$74",
+ },
+ {
+ code: "FAC-091",
+ name: "Respirator Mask",
+ description:
+ "Filtered facewear placeholder for hazard and industrial kit sets.",
+ price: "$410",
+ },
+ ],
+ vests: [
+ {
+ code: "VST-311",
+ name: "Carrier Rig",
+ description:
+ "Plate carrier preview item with a reserved image zone and pricing footer.",
+ price: "$2,430",
+ },
+ {
+ code: "VST-414",
+ name: "Patrol Vest",
+ description:
+ "Mid-weight vest card intended for security and checkpoint loadouts.",
+ price: "$1,320",
+ },
+ {
+ code: "VST-558",
+ name: "Utility Harness",
+ description:
+ "Storage-focused chest rig placeholder for non-ballistic kit sets.",
+ price: "$760",
+ },
+ ],
+ ammo: [
+ {
+ code: "AMM-556",
+ name: "5.56 Cartridge Pack",
+ description:
+ "Grouped ammunition supply card with placeholder product art.",
+ price: "$180",
+ },
+ {
+ code: "AMM-762",
+ name: "7.62 Cartridge Pack",
+ description:
+ "Extended-caliber ammunition block for rifle and marksman loadouts.",
+ price: "$220",
+ },
+ {
+ code: "AMM-9MM",
+ name: "9mm Cartridge Pack",
+ description:
+ "Compact sidearm ammunition placeholder entry for layout review.",
+ price: "$70",
+ },
+ ],
+ items: [
+ {
+ code: "ITM-004",
+ name: "First Aid Kit",
+ description:
+ "Support item placeholder designed to preview general utility inventory cards.",
+ price: "$65",
+ },
+ {
+ code: "ITM-089",
+ name: "Radio Module",
+ description:
+ "Communications item block with the same product card treatment as all categories.",
+ price: "$330",
+ },
+ {
+ code: "ITM-217",
+ name: "Tool Kit",
+ description:
+ "Repair and engineering support module placeholder for store browsing.",
+ price: "$145",
+ },
+ ],
+ primary: [
+ {
+ code: "WPN-PRI-01",
+ name: "Primary Platform A",
+ description:
+ "Primary weapon slot placeholder card for mock store review.",
+ price: "$3,250",
+ },
+ {
+ code: "WPN-PRI-02",
+ name: "Primary Platform B",
+ description:
+ "Alternate long-arm placeholder with image frame and metadata treatment.",
+ price: "$3,980",
+ },
+ {
+ code: "WPN-PRI-03",
+ name: "Primary Platform C",
+ description:
+ "General-purpose primary slot preview for future catalog wiring.",
+ price: "$2,890",
+ },
+ ],
+ secondary: [
+ {
+ code: "WPN-SEC-01",
+ name: "Secondary Launcher A",
+ description:
+ "Secondary slot placeholder card for support and utility weapon systems.",
+ price: "$5,600",
+ },
+ {
+ code: "WPN-SEC-02",
+ name: "Secondary Launcher B",
+ description:
+ "Compact shoulder-fired placeholder entry in the shared product style.",
+ price: "$4,950",
+ },
+ {
+ code: "WPN-SEC-03",
+ name: "Secondary Launcher C",
+ description:
+ "Reserved card for extended secondary inventory logic tomorrow.",
+ price: "$6,120",
+ },
+ ],
+ handgun: [
+ {
+ code: "WPN-HND-01",
+ name: "Sidearm A",
+ description:
+ "Handgun slot placeholder card with shared visual language.",
+ price: "$780",
+ },
+ {
+ code: "WPN-HND-02",
+ name: "Sidearm B",
+ description:
+ "Secondary sidearm preview block for storefront evaluation.",
+ price: "$920",
+ },
+ {
+ code: "WPN-HND-03",
+ name: "Sidearm C",
+ description:
+ "Compact sidearm placeholder with the same product framing.",
+ price: "$860",
+ },
+ ],
+ cars: [
+ {
+ code: "VEH-CAR-01",
+ name: "Patrol Utility Car",
+ description:
+ "Light wheeled vehicle placeholder for quick response and urban transport.",
+ price: "$12,500",
+ },
+ {
+ code: "VEH-CAR-02",
+ name: "Transport Van",
+ description:
+ "Personnel transport preview card using the shared product layout.",
+ price: "$18,200",
+ },
+ {
+ code: "VEH-CAR-03",
+ name: "Recon SUV",
+ description:
+ "Recon-focused platform placeholder with pricing and metadata treatment.",
+ price: "$21,900",
+ },
+ ],
+ armor: [
+ {
+ code: "VEH-ARM-01",
+ name: "APC Variant A",
+ description:
+ "Armored personnel carrier placeholder reserved for heavy vehicle inventory.",
+ price: "$145,000",
+ },
+ {
+ code: "VEH-ARM-02",
+ name: "IFV Variant B",
+ description:
+ "Tracked armored platform preview aligned to category card behavior.",
+ price: "$228,000",
+ },
+ {
+ code: "VEH-ARM-03",
+ name: "Support Armor C",
+ description:
+ "Heavy support vehicle placeholder for future role-based filtering.",
+ price: "$174,500",
+ },
+ ],
+ helis: [
+ {
+ code: "VEH-HEL-01",
+ name: "Light Heli A",
+ description:
+ "Rotorcraft placeholder for scouting and rapid insertion use cases.",
+ price: "$325,000",
+ },
+ {
+ code: "VEH-HEL-02",
+ name: "Transport Heli B",
+ description:
+ "Medium-lift helicopter preview item with staged catalog metadata.",
+ price: "$482,000",
+ },
+ {
+ code: "VEH-HEL-03",
+ name: "Attack Heli C",
+ description:
+ "Combat helicopter placeholder for future weapon package wiring.",
+ price: "$690,000",
+ },
+ ],
+ planes: [
+ {
+ code: "VEH-PLN-01",
+ name: "Fixed-Wing Trainer",
+ description:
+ "Basic aircraft placeholder for pilot training and logistics transfer.",
+ price: "$760,000",
+ },
+ {
+ code: "VEH-PLN-02",
+ name: "Utility Plane",
+ description:
+ "General-purpose plane preview card in the shared storefront style.",
+ price: "$1,120,000",
+ },
+ {
+ code: "VEH-PLN-03",
+ name: "Strike Plane",
+ description:
+ "Fixed-wing strike platform placeholder for high-tier procurement.",
+ price: "$1,860,000",
+ },
+ ],
+ naval: [
+ {
+ code: "VEH-NAV-01",
+ name: "Patrol Boat",
+ description:
+ "Shallow-water patrol vessel placeholder for littoral operations.",
+ price: "$92,000",
+ },
+ {
+ code: "VEH-NAV-02",
+ name: "Assault Boat",
+ description:
+ "Assault transport craft preview entry with staged catalog attributes.",
+ price: "$128,000",
+ },
+ {
+ code: "VEH-NAV-03",
+ name: "Support Craft",
+ description:
+ "Utility naval craft placeholder for resupply and extraction workflows.",
+ price: "$104,000",
+ },
+ ],
+ other: [
+ {
+ code: "VEH-OTH-01",
+ name: "UAV Support Unit",
+ description:
+ "Unmanned vehicle placeholder grouped under miscellaneous platforms.",
+ price: "$48,000",
+ },
+ {
+ code: "VEH-OTH-02",
+ name: "Static Transport Module",
+ description:
+ "Special transport asset preview for non-standard deployment types.",
+ price: "$67,000",
+ },
+ {
+ code: "VEH-OTH-03",
+ name: "Service Platform",
+ description:
+ "General support platform placeholder for future specialty categories.",
+ price: "$58,500",
+ },
+ ],
+ },
+ };
+})();
diff --git a/arma/client/addons/store/ui/_site/index.html b/arma/client/addons/store/ui/_site/index.html
index 33ad3e4..1c58220 100644
--- a/arma/client/addons/store/ui/_site/index.html
+++ b/arma/client/addons/store/ui/_site/index.html
@@ -7,14 +7,26 @@