207 lines
6.7 KiB
JavaScript
207 lines
6.7 KiB
JavaScript
(function () {
|
|
const OrgPortal = (window.OrgPortal = window.OrgPortal || {});
|
|
const { h, ensureScopedStyle } = OrgPortal.runtime;
|
|
const { portalData, session } = OrgPortal.data;
|
|
const store = OrgPortal.store;
|
|
const portalViewScope = "[data-ui-portal-view]";
|
|
|
|
ensureScopedStyle(
|
|
"portal-view",
|
|
`
|
|
${portalViewScope} .org-toast-stack {
|
|
position: fixed;
|
|
top: 1.5rem;
|
|
right: 2rem;
|
|
z-index: 20;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
pointer-events: none;
|
|
}
|
|
|
|
${portalViewScope} .org-toast {
|
|
max-width: 24rem;
|
|
padding: 0.9rem 1rem;
|
|
border-radius: var(--radius);
|
|
border: 1px solid var(--border);
|
|
background: #fff;
|
|
box-shadow: 0 12px 28px rgb(15 23 42 / 0.14);
|
|
font-size: 0.92rem;
|
|
pointer-events: auto;
|
|
}
|
|
|
|
${portalViewScope} .org-toast.is-success {
|
|
background: #ecfdf5;
|
|
border-color: #bbf7d0;
|
|
color: #166534;
|
|
}
|
|
|
|
${portalViewScope} .org-toast.is-error {
|
|
background: #fef2f2;
|
|
border-color: #fecaca;
|
|
color: #991b1b;
|
|
}
|
|
|
|
${portalViewScope} .org-dashboard-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
${portalViewScope} .org-panel {
|
|
margin-bottom: 0;
|
|
text-align: left;
|
|
}
|
|
|
|
${portalViewScope} .org-scroll-panel {
|
|
display: flex;
|
|
flex-direction: column;
|
|
max-height: 31rem;
|
|
overflow: hidden;
|
|
}
|
|
|
|
${portalViewScope} .org-span-12 {
|
|
grid-column: span 12;
|
|
}
|
|
|
|
${portalViewScope} .org-span-7 {
|
|
grid-column: span 7;
|
|
}
|
|
|
|
${portalViewScope} .org-span-6 {
|
|
grid-column: span 6;
|
|
}
|
|
|
|
${portalViewScope} .org-span-5 {
|
|
grid-column: span 5;
|
|
}
|
|
|
|
@media (max-width: 960px) {
|
|
${portalViewScope} .org-toast-stack {
|
|
top: 1rem;
|
|
right: 1rem;
|
|
left: 1rem;
|
|
}
|
|
|
|
${portalViewScope} .org-toast {
|
|
max-width: none;
|
|
}
|
|
|
|
${portalViewScope} .org-span-12,
|
|
${portalViewScope} .org-span-7,
|
|
${portalViewScope} .org-span-6,
|
|
${portalViewScope} .org-span-5 {
|
|
grid-column: span 12;
|
|
}
|
|
}
|
|
`,
|
|
);
|
|
|
|
OrgPortal.components = OrgPortal.components || {};
|
|
|
|
OrgPortal.components.App = function App() {
|
|
const Hero = window.SharedUI.componentFns.Hero;
|
|
const Footer = window.SharedUI.componentFns.Footer;
|
|
const OverviewCard = OrgPortal.componentFns.OverviewCard;
|
|
const FleetCard = OrgPortal.componentFns.FleetCard;
|
|
const TreasuryCard = OrgPortal.componentFns.TreasuryCard;
|
|
const MembersCard = OrgPortal.componentFns.MembersCard;
|
|
const AssetsCard = OrgPortal.componentFns.AssetsCard;
|
|
const ActivityCard = OrgPortal.componentFns.ActivityCard;
|
|
const FutureCard = OrgPortal.componentFns.FutureCard;
|
|
const DangerCard = OrgPortal.componentFns.DangerCard;
|
|
const ModalLayer = OrgPortal.componentFns.ModalLayer;
|
|
const DisbandedView = OrgPortal.componentFns.DisbandedView;
|
|
const treasuryNotice = store.getTreasuryNotice();
|
|
const footerSections = [
|
|
{
|
|
title: "Organization Controls",
|
|
items: [
|
|
"Roster Management",
|
|
"Fleet Assignment",
|
|
"Treasury Permissions",
|
|
"Asset Registry",
|
|
],
|
|
},
|
|
{
|
|
title: "Planned Extensions",
|
|
items: [
|
|
"Contracts Board",
|
|
"Diplomacy Layer",
|
|
"Procurement Queue",
|
|
"Reputation History",
|
|
],
|
|
},
|
|
];
|
|
|
|
if (store.getOrgDisbanded()) {
|
|
return h(
|
|
"main",
|
|
{ "data-ui-portal-view": "" },
|
|
h(
|
|
"div",
|
|
{ className: "container" },
|
|
h(
|
|
"div",
|
|
{ className: "org-dashboard-grid" },
|
|
Hero({
|
|
kicker: portalData.org.tag,
|
|
title: portalData.org.name,
|
|
subtitle: "Player organization command portal",
|
|
meta: `${session.actorName} - ${session.role}`,
|
|
}),
|
|
DisbandedView(),
|
|
),
|
|
),
|
|
ModalLayer(),
|
|
Footer({ sections: footerSections }),
|
|
);
|
|
}
|
|
|
|
return h(
|
|
"main",
|
|
{ "data-ui-portal-view": "" },
|
|
treasuryNotice.text
|
|
? h(
|
|
"div",
|
|
{ className: "org-toast-stack" },
|
|
h(
|
|
"div",
|
|
{
|
|
className:
|
|
treasuryNotice.type === "error"
|
|
? "org-toast is-error"
|
|
: "org-toast is-success",
|
|
},
|
|
treasuryNotice.text,
|
|
),
|
|
)
|
|
: null,
|
|
h(
|
|
"div",
|
|
{ className: "container" },
|
|
h(
|
|
"div",
|
|
{ className: "org-dashboard-grid" },
|
|
Hero({
|
|
kicker: portalData.org.tag,
|
|
title: portalData.org.name,
|
|
subtitle: "Player organization command portal",
|
|
meta: `${session.actorName} - ${session.role}`,
|
|
}),
|
|
OverviewCard(),
|
|
FleetCard(),
|
|
TreasuryCard(),
|
|
MembersCard(),
|
|
AssetsCard(),
|
|
ActivityCard(),
|
|
FutureCard(),
|
|
DangerCard(),
|
|
),
|
|
),
|
|
ModalLayer(),
|
|
Footer({ sections: footerSections }),
|
|
);
|
|
};
|
|
})();
|