// Templates const { Modal, Toggle, useToast } = window.UI; function templateType(tpl) { return tpl.template_type || "proxy"; } function templateCoverage(tpl) { return tpl.coverage || (templateType(tpl) === "chijie" ? "both" : (tpl.residential ? "residential" : "normal")); } function templateClassLabel(tpl) { const coverage = templateCoverage(tpl); if (coverage === "both") return "normal + residential"; return coverage === "residential" ? "residential" : "normal"; } function PageTemplates({ state, dispatch }) { const { pools } = state; const tpls = pools.filter(p => p.source === "template"); const [addOpen, setAddOpen] = React.useState(false); const [editTpl, setEditTpl] = React.useState(null); const [test, setTest] = React.useState(null); const toast = useToast(); return (
Generate per-region accounts on demand. Templates serve any 2-letter region as fallback, with residential used only when requested or when normal coverage is unavailable.