/* global React, ReactDOM */
// ============================================
// App root + Tweaks integration
// ============================================

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "accent": "green",
  "density": "comfortable",
  "showSeal": true
}/*EDITMODE-END*/;

function AppContent() {
  const { activeView, drawerDocId, role } = useStore();

  let view = null;
  if (activeView === 'admin_overview') view = React.createElement(AdminOverviewView);
  else if (activeView === 'admin_users') view = React.createElement(AdminUsersView);
  // "การตั้งค่า" is admin-only — non-admins fall through to their dashboard.
  else if (activeView === 'settings' && role === 'admin') view = React.createElement(SettingsView);
  else if (activeView === 'dashboard') view = React.createElement(DashboardView);
  else if (activeView === 'inbox') view = React.createElement(InboxView);
  else if (activeView === 'intake') view = React.createElement(IntakeView);
  else if (activeView === 'pending_send') view = React.createElement(PendingSendView);
  else if (activeView === 'archive') view = React.createElement(ArchiveView);
  else if (activeView === 'director_pending') view = React.createElement(DirectorPendingView);
  else if (activeView === 'director_signed') view = React.createElement(DirectorSignedView);
  else if (activeView === 'all_docs') view = React.createElement(AllDocsView);
  else if (activeView === 'teacher_tasks') view = React.createElement(TeacherTasksView);
  else if (activeView === 'telegram') view = React.createElement(TelegramView);
  else if (activeView === 'announcements') view = React.createElement(AnnouncementsView);
  else if (activeView === 'change_password') view = React.createElement(ChangePasswordView);
  else view = React.createElement(DashboardView);

  return React.createElement('div', { className: 'app' },
    React.createElement(TopBar),
    React.createElement(Sidebar),
    React.createElement('div', { className: 'main' }, view),
    React.createElement(NotifPopover),
    React.createElement(ToastHost),
    drawerDocId && React.createElement(DocDrawer),
  );
}

const ACCENT_MAP = {
  '#3a8054': 'green',
  '#3c52a8': 'indigo',
  '#3d8a93': 'teal',
  '#923546': 'burgundy',
};
const ACCENT_REVERSE = Object.fromEntries(Object.entries(ACCENT_MAP).map(([k, v]) => [v, k]));

function App() {
  const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);

  useEffect(() => {
    document.documentElement.setAttribute('data-accent', t.accent);
    document.documentElement.setAttribute('data-density', t.density);
  }, [t.accent, t.density]);

  const colorValue = ACCENT_REVERSE[t.accent] || '#3a8054';

  const tweaksNode = React.createElement(TweaksPanel, { title: 'Tweaks' },
      React.createElement(TweakSection, { label: 'สีหลัก' }),
      React.createElement(TweakColor, {
        label: 'Accent',
        value: colorValue,
        options: ['#3a8054', '#3c52a8', '#3d8a93', '#923546'],
        onChange: (v) => setTweak('accent', ACCENT_MAP[v] || 'green'),
      }),

      React.createElement(TweakSection, { label: 'การแสดงผล' }),
      React.createElement(TweakRadio, {
        label: 'ความหนาแน่น',
        value: t.density,
        options: ['comfortable', 'compact'],
        onChange: (v) => setTweak('density', v),
      }),
      React.createElement(TweakToggle, {
        label: 'แสดงตราครุฑบน PDF',
        value: t.showSeal,
        onChange: (v) => setTweak('showSeal', v),
      }),

      React.createElement(TweakSection, { label: 'มุมมอง' }),
      React.createElement('div', {
        style: { fontSize: 11, color: 'rgba(41,38,27,.6)', lineHeight: 1.5, padding: '0 2px' }
      },
        'เข้าสู่ระบบด้วยบัญชีตามบทบาท ',
        React.createElement('strong', null, 'ธุรการ / ผอ. / ครู / ผู้ดูแล'),
        ' — แต่ละบทบาทเห็นเฉพาะเมนูของตน ออกจากระบบเพื่อสลับบัญชี',
      ),
    );

  return React.createElement(StoreProvider, null,
    React.createElement(Shell, { tweaksNode }),
  );
}

function Shell({ tweaksNode }) {
  const { currentUser, booting } = useStore();
  if (booting) {
    return React.createElement('div', {
      style: { minHeight: '100vh', display: 'grid', placeItems: 'center', color: 'var(--ink-3)', fontSize: 14 }
    }, 'กำลังเชื่อมต่อระบบ…');
  }
  if (!currentUser) return React.createElement(LoginView);
  return React.createElement(React.Fragment, null,
    React.createElement(AppContent),
    tweaksNode,
  );
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(React.createElement(App));
