(function exposeSharedComponents(global) { "use strict"; const ui = global.XiaobaiUI; if (!ui) throw new Error("XiaobaiUI must load before shared components"); function resolveElement(target, root = document) { if (target instanceof Element) return target; if (typeof target !== "string" || !target) return null; return target.startsWith("#") ? root.querySelector(target) : root.getElementById?.(target); } function classNames(...values) { return values.flatMap((value) => String(value || "").split(/\s+/)).filter(Boolean).join(" "); } function emptyStateHtml(message, options = {}) { const classes = classNames("empty-state", options.className); const attributes = options.role ? ` role="${ui.escapeHtml(options.role)}"` : ""; return `
${ui.escapeHtml(message)}
`; } function renderEmptyState(target, message, options = {}) { const element = resolveElement(target, options.root); if (!element) return false; element.innerHTML = emptyStateHtml(message, options); return true; } function setText(target, value, options = {}) { const element = resolveElement(target, options.root); if (!element) return false; element.textContent = value == null ? "" : String(value); return true; } function renderCollection(target, items, renderItem, options = {}) { const element = resolveElement(target, options.root); if (!element) return 0; const rows = Array.isArray(items) ? items : []; element.innerHTML = rows.length ? rows.map((item, index) => renderItem(item, index)).join("") : emptyStateHtml(options.emptyMessage || "", options.emptyOptions); return rows.length; } global.XiaobaiComponents = Object.freeze({ classNames, emptyStateHtml, renderCollection, renderEmptyState, setText, }); })(window);