// ========================================= // DXA Admin · shared UI atoms + icons // ========================================= const { useRef: _useRef, useState: _useState } = React; const useRef = _useRef; const useState = _useState; const cls = (...a) => a.filter(Boolean).join(' '); // Inline SVG icon set (24x24 viewBox, currentColor strokes) const sv = (d, opts={}) => ( {d} ); const I = { dashboard: sv(<>), inbox: sv(<>), hero: sv(<>), about: sv(<>), services: sv(<>), stats: sv(<>), portfolio: sv(<>), clients: sv(<>), contact: sv(<>), footer: sv(<>), settings: sv(<>), theme: sv(<>), history: sv(<>), backup: sv(<>), plus: sv(<>), edit: sv(<>), trash: sv(<>), drag: sv(<>), check: sv(), x: sv(<>), external: sv(<>), eye: sv(<>), reply: sv(<>), star: sv(), image: sv(<>), video: sv(<>), upload: sv(<>), }; // === Pill === const Pill = ({ tone='muted', children }) => ( {children} ); // === Field wrapper === const Field = ({ label, children }) => (
{children}
); // === Bilingual text field (AR + EN stacked) === const Bilingual = ({ labelAr, labelEn, valueAr, valueEn, onChangeAr, onChangeEn, multiline=false, rows=2 }) => (
{labelAr} {labelEn}
AR
{multiline ?