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.eyebrow} +

${header.title}

+
+ ${header.badge} +
+
+

${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 @@