@object-ui/console 3.3.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AppManagementPage-CLr3paaF.js +1 -0
- package/dist/assets/ConsoleFloatingChatbot-C_ClJ2NU.js +1 -0
- package/dist/assets/DashboardView-CODdYLuL.js +1 -0
- package/dist/assets/MetadataDetailPage-C1sWJhl2.js +1 -0
- package/dist/assets/MetadataFormDialog-Cje6P_Wf.js +1 -0
- package/dist/assets/MetadataManagerPage-DobP393N.js +1 -0
- package/dist/assets/PageView-DZHuurne.js +2 -0
- package/dist/assets/ProfilePage-6u6k00rh.js +1 -0
- package/dist/assets/RecordDetailView-cFSCvmx3.js +1 -0
- package/dist/assets/ReportView-oYVEbfYq.js +2 -0
- package/dist/assets/SearchResultsPage-BjAVc5rm.js +1 -0
- package/dist/assets/SystemHubPage-D08IDX3M.js +1 -0
- package/dist/assets/data-adapter-CleWpyQH.js +1 -0
- package/dist/assets/framework-CoXA0nY6.js +2 -0
- package/dist/assets/getIcon-vBP44wSb.js +1 -0
- package/dist/assets/index-98Lfd5ty.js +2 -0
- package/dist/assets/index-C162ArSl.css +2 -0
- package/dist/assets/{infrastructure-94fpO8jL.js → infrastructure-Djv3I7gr.js} +2 -2
- package/dist/assets/plugin-calendar-DX_UWouT.js +1 -0
- package/dist/assets/plugin-charts-BvZ1cSiZ.js +7 -0
- package/dist/assets/plugin-chatbot-DeSEtutf.js +24 -0
- package/dist/assets/plugin-form-BhbVu8jO.js +1 -0
- package/dist/assets/plugin-gantt-BG1WaV_b.js +1 -0
- package/dist/assets/plugin-grid-DwpWK0E8.js +8 -0
- package/dist/assets/plugin-kanban-Dzjqra5U.js +1 -0
- package/dist/assets/plugin-map-B7EfyDsf.js +1 -0
- package/dist/assets/plugin-map-CsMXqW6n.css +1 -0
- package/dist/assets/plugin-markdown-CiHluuxA.js +7 -0
- package/dist/assets/plugin-timeline-D8_YFDQQ.js +1 -0
- package/dist/assets/plugin-view-CXAFUa14.js +1 -0
- package/dist/assets/plugins-views-C5gstDGy.js +63 -0
- package/dist/assets/src-iMF4J4F7.js +1 -0
- package/dist/assets/ui-components-BCmPcwhR.js +36 -0
- package/dist/assets/ui-layout-BLl7ARoe.js +1 -0
- package/dist/assets/vendor-charts-DHZsyaJw.js +36 -0
- package/dist/assets/vendor-dndkit-BGB4qgc3.js +5 -0
- package/dist/assets/vendor-i18n-D3W5EAHR.js +1 -0
- package/dist/assets/vendor-icons-core-s9WPLoP3.js +1 -0
- package/dist/assets/vendor-markdown-D-LpQJes.js +29 -0
- package/dist/assets/vendor-objectstack-CBpPY_xk.js +39 -0
- package/dist/assets/vendor-radix-Bj7uHNWN.js +56 -0
- package/dist/assets/vendor-react-B1k2FF9f.js +11 -0
- package/dist/assets/vendor-ui-utils-AywTz3cM.js +1 -0
- package/dist/index.html +7 -26
- package/package.json +33 -33
- package/dist/assets/AdapterProvider-Cd4HYb7q.js +0 -1
- package/dist/assets/AdvancedChartImpl-AY6sVw1n.js +0 -7
- package/dist/assets/AppManagementPage-6l5ZKnv5.js +0 -1
- package/dist/assets/ChartImpl-DiKY5voi.js +0 -1
- package/dist/assets/DashboardView-BnX2k5Kx.js +0 -1
- package/dist/assets/KanbanEnhanced-BKCx2XIr.js +0 -1
- package/dist/assets/KanbanImpl-e9jzV-UD.js +0 -1
- package/dist/assets/MarkdownImpl-B-r7jSIS.js +0 -1
- package/dist/assets/MetadataDetailPage--3o8VI1T.js +0 -1
- package/dist/assets/MetadataFormDialog-Cy7k0Y55.js +0 -1
- package/dist/assets/MetadataInspector-DVtCDQtx.js +0 -1
- package/dist/assets/MetadataManagerPage-CYfvXG6X.js +0 -1
- package/dist/assets/MetadataProvider-Dvc9BxbC.js +0 -1
- package/dist/assets/PageView-CUDEz8Xo.js +0 -2
- package/dist/assets/ProfilePage-B0BXoAus.js +0 -1
- package/dist/assets/RecordDetailView-CYgcTNQp.js +0 -1
- package/dist/assets/ReportView-ovWyjJsZ.js +0 -1
- package/dist/assets/SearchResultsPage-B-NchFoJ.js +0 -1
- package/dist/assets/SystemHubPage-D8S1hN1a.js +0 -1
- package/dist/assets/data-adapter-v22lWuhc.js +0 -39
- package/dist/assets/framework-BW6KsEI0.js +0 -2
- package/dist/assets/getIcon-N5xWCMJy.js +0 -1
- package/dist/assets/index-DATdOX6r.js +0 -59
- package/dist/assets/index-nwlbpqhl.css +0 -2
- package/dist/assets/plugins-core-Ccvbi6db.js +0 -105
- package/dist/assets/plugins-views-CbLIJkBs.js +0 -62
- package/dist/assets/skeletons-CIQE_YYE.js +0 -1
- package/dist/assets/src-BGoL_8qF.js +0 -1
- package/dist/assets/ui-layout-CYz0tyDf.js +0 -3
- package/dist/assets/vendor-charts-D1AP0-EV.js +0 -33
- package/dist/assets/vendor-icons-CrSf7tAH.js +0 -1
- package/dist/assets/vendor-objectstack-Dhrq31KF.js +0 -1
- package/dist/assets/vendor-react-ryfytPb-.js +0 -9
- /package/dist/assets/{maplibre-gl-BR3qC6SX.js → maplibre-gl-ChgVR8ni.js} +0 -0
- /package/dist/assets/{plugins-core-B5ROGaJH.css → ui-components-B5ROGaJH.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-S-ySWqyJ.js";import{U as n,W as r,m as i,p as a}from"./framework-BW6KsEI0.js";import{gt as o,ht as s,mt as c}from"./plugins-core-Ccvbi6db.js";import{p as l}from"./ui-layout-CYz0tyDf.js";import"./AdapterProvider-Cd4HYb7q.js";import"./MetadataProvider-Dvc9BxbC.js";import{M as u,rt as d,w as f}from"./vendor-icons-CrSf7tAH.js";import{n as p,t as m}from"./plugins-views-CbLIJkBs.js";import{r as h,t as g}from"./MetadataInspector-DVtCDQtx.js";var _=e({ReportView:()=>x}),v=t(r(),1),y=n(),b=[{value:`month`,label:`Month`,type:`text`},{value:`revenue`,label:`Revenue`,type:`number`},{value:`count`,label:`Count`,type:`number`},{value:`region`,label:`Region`,type:`text`},{value:`product`,label:`Product`,type:`text`},{value:`source`,label:`Lead Source`,type:`text`},{value:`stage`,label:`Stage`,type:`text`},{value:`amount`,label:`Amount`,type:`number`}];function x({dataSource:e}){let{reportName:t}=l(),{showDebug:n}=h(),r=a(),[_,x]=(0,v.useState)(!1),[S,C]=(0,v.useState)(0),{reports:w,objects:T,loading:E,refresh:D}=i(),O=w?.find(e=>e.name===t),[k,A]=(0,v.useState)(O),[j,M]=(0,v.useState)(null),[N,P]=(0,v.useState)([]),[F,I]=(0,v.useState)(!1),L=(0,v.useMemo)(()=>{let e=j||k,t=e?.objectName||e?.dataSource?.object||e?.dataSource?.resource;if(t&&T?.length){let e=T.find(e=>e.name===t);if(e?.fields){let t=e.fields;return Array.isArray(t)?t.map(e=>typeof e==`string`?{value:e,label:e,type:`text`}:{value:e.name,label:e.label||e.name,type:e.type||`text`}):Object.entries(t).map(([e,t])=>({value:e,label:t.label||e,type:t.type||`text`}))}}return b},[j,k,T]),R=(0,v.useCallback)(async e=>{try{r&&(await r.update(`sys_report`,t,e),D().catch(()=>{}))}catch(e){console.warn(`[ReportView] Auto-save failed:`,e)}},[r,t,D]),z=(0,v.useCallback)(()=>{M(k),x(!0),C(e=>e+1)},[k]),B=(0,v.useCallback)(()=>{x(!1)},[]),V=(0,v.useMemo)(()=>j||k,[S]),H=(0,v.useCallback)(e=>{M(e),R(e),C(e=>e+1)},[R]),U=(0,v.useCallback)((e,t)=>{M(n=>({...n,[e]:t}))},[]);(0,v.useEffect)(()=>{A(O)},[O]),(0,v.useEffect)(()=>{_||M(null)},[O]);let W=j||k,G=(0,v.useMemo)(()=>JSON.stringify(W?.filters),[W?.filters]),K=(0,v.useMemo)(()=>JSON.stringify(W?.dataSource),[W?.dataSource]),q=(0,v.useMemo)(()=>JSON.stringify(W?.data),[W?.data]);if((0,v.useEffect)(()=>{if(!W||!e){P([]);return}if(W.data&&Array.isArray(W.data)){P(W.data);return}if(W.dataSource){(async()=>{I(!0);try{let t=W.dataSource.object||W.dataSource.resource;if(!t){console.warn(`ReportView: dataSource missing object/resource property`),P([]);return}P((await e.find(t,{$filter:W.dataSource.filter,$orderby:W.dataSource.sort,$top:W.dataSource.limit})).data||[])}catch(e){console.error(`ReportView: Failed to load data from dataSource`,e),P([])}finally{I(!1)}})();return}if(W.objectName){(async()=>{I(!0);try{P((await e.find(W.objectName,{$filter:W.filters,$orderby:W.sort,$top:W.limit||100})).data||[])}catch(e){console.error(`ReportView: Failed to load data from objectName`,e),P([])}finally{I(!1)}})();return}P([])},[W?.objectName,W?.limit,G,K,q,e]),E)return(0,y.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,y.jsx)(u,{className:`h-8 w-8 animate-spin text-muted-foreground`})});if(!O||!k)return!E&&!O?(0,y.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,y.jsxs)(c,{children:[(0,y.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,y.jsx)(d,{className:`h-6 w-6 text-muted-foreground`})}),(0,y.jsx)(o,{children:`Report Not Found`}),(0,y.jsxs)(s,{children:[`The report "`,t,`" could not be found. It may have been removed or renamed.`]})]})}):(0,y.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,y.jsx)(u,{className:`h-8 w-8 animate-spin text-muted-foreground`})});let J=e=>{let t={...e};if(!t.title&&t.label&&(t.title=t.label),!t.fields&&Array.isArray(t.columns)&&(t.fields=t.columns.map(e=>({name:e.field||e.name,label:e.label,type:e.type,format:e.format,renderAs:e.renderAs,colorMap:e.colorMap,...e.aggregate?{aggregation:e.aggregate,showInSummary:!0}:{}}))),t.fields&&Array.isArray(t.fields)&&t.fields.length>0){let n=t.fields.some(e=>e.showInSummary||e.aggregation),r=t.reportType||`tabular`,i=[];if((r===`summary`||n)&&i.push({type:`summary`,title:`Key Metrics`}),i.push({type:`table`,title:`Details`,columns:t.fields.map(e=>({name:e.name,label:e.label,type:e.type,format:e.format,renderAs:e.renderAs,colorMap:e.colorMap}))}),t.chartConfig?.chartType&&i.push({type:`chart`,title:`Chart`,chart:{type:`chart`,chartType:t.chartConfig.chartType,xAxisField:t.chartConfig.xAxisField,yAxisFields:t.chartConfig.yAxisFields}}),Array.isArray(e.sections)){let n=e.sections.filter(e=>e.type===`chart`&&!t.chartConfig?.chartType);i.push(...n)}t.sections=i}else t.sections||=[];return t},Y=j||k,X={type:`report-viewer`,report:J(Y),data:N,showToolbar:!0,allowExport:!0,loading:F};return(0,y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden bg-background`,children:[(0,y.jsxs)(`div`,{className:`flex flex-col sm:flex-row justify-between sm:items-center gap-3 sm:gap-4 p-4 sm:p-6 border-b shrink-0`,children:[(0,y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,y.jsx)(`h1`,{className:`text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate`,children:Y.title||Y.label||`Report Viewer`}),Y.description&&(0,y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:Y.description})]}),(0,y.jsx)(`div`,{className:`shrink-0 flex items-center gap-1.5`,children:(0,y.jsxs)(`button`,{type:`button`,onClick:z,className:`inline-flex items-center gap-1.5 rounded-md border border-input bg-background px-2.5 py-1.5 text-xs font-medium text-muted-foreground shadow-sm hover:bg-accent hover:text-accent-foreground`,"data-testid":`report-edit-button`,children:[(0,y.jsx)(f,{className:`h-3.5 w-3.5`}),`Edit`]})})]}),(0,y.jsxs)(`div`,{className:`flex-1 overflow-hidden flex flex-col sm:flex-row relative`,children:[(0,y.jsx)(`div`,{className:`flex-1 min-w-0 overflow-auto p-4 sm:p-6 lg:p-8 bg-muted/5`,children:(0,y.jsx)(`div`,{className:`max-w-5xl mx-auto shadow-sm border rounded-lg sm:rounded-xl bg-background overflow-hidden min-h-150`,children:(0,y.jsx)(p,{schema:X})})}),(0,y.jsx)(m,{open:_,onClose:B,config:V,onSave:H,onFieldChange:U,availableFields:L}),(0,y.jsx)(g,{open:n,sections:[{title:`Report Configuration`,data:Y}]})]})]})}export{_ as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-S-ySWqyJ.js";import{U as n,W as r,m as i}from"./framework-BW6KsEI0.js";import{cr as a,ln as o,lr as s,mr as c}from"./plugins-core-Ccvbi6db.js";import{i as l,m as u,p as d}from"./ui-layout-CYz0tyDf.js";import"./MetadataProvider-Dvc9BxbC.js";import{B as f,H as p,N as m,b as h,ct as g,rt as _}from"./vendor-icons-CrSf7tAH.js";var v=e({SearchResultsPage:()=>w}),y=t(r(),1),b=n();function x(e){let t=[];for(let n of e)n.type===`group`&&n.children?t.push(...x(n.children)):t.push(n);return t}var S={object:p,dashboard:m,page:f,report:_},C={object:`bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200`,dashboard:`bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200`,page:`bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200`,report:`bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200`};function w(){let{appName:e}=d(),[t,n]=u(),[r,f]=(0,y.useState)(t.get(`q`)||``),{apps:m}=i(),_=m||[],v=_.find(t=>t.name===e)||_[0],w=`/apps/${e}`,T=(0,y.useMemo)(()=>v?x(v.navigation||[]).map(e=>{let t=`#`;return e.type===`object`?(t=`${w}/${e.objectName}`,e.viewName&&(t+=`/view/${e.viewName}`)):e.type===`dashboard`?t=`${w}/dashboard/${e.dashboardName}`:e.type===`page`?t=`${w}/page/${e.pageName}`:e.type===`report`&&(t=`${w}/report/${e.reportName}`),{id:e.id,label:e.label||e.objectName||e.dashboardName||e.pageName||e.reportName||``,href:t,type:e.type,description:e.description}}).filter(e=>e.href!==`#`):[],[v,w]),E=(0,y.useMemo)(()=>{if(!r.trim())return T;let e=r.toLowerCase();return T.filter(t=>t.label.toLowerCase().includes(e)||t.type.toLowerCase().includes(e)||t.description&&t.description.toLowerCase().includes(e))},[T,r]),D=e=>{f(e),n(e?{q:e}:{})},O=(0,y.useMemo)(()=>{let e={};for(let t of E)(e[t.type]||=[]).push(t);return e},[E]);return(0,b.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6 max-w-4xl mx-auto`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsxs)(l,{to:w,className:`flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors`,children:[(0,b.jsx)(g,{className:`h-4 w-4`}),`Back`]}),(0,b.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Search`})]}),(0,b.jsxs)(`div`,{className:`relative`,children:[(0,b.jsx)(`label`,{htmlFor:`search-results-input`,className:`sr-only`,children:`Search objects, dashboards, pages, reports`}),(0,b.jsx)(h,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,b.jsx)(o,{id:`search-results-input`,value:r,onChange:e=>D(e.target.value),placeholder:`Search objects, dashboards, pages, reports...`,className:`pl-10 h-11 text-base`,autoFocus:!0})]}),(0,b.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:r.trim()?`${E.length} result${E.length===1?``:`s`} for "${r}"`:`${T.length} items available`}),E.length===0?(0,b.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 text-center`,children:[(0,b.jsx)(h,{className:`h-12 w-12 text-muted-foreground/30 mb-4`}),(0,b.jsx)(`p`,{className:`text-lg font-medium text-muted-foreground`,children:`No results found`}),(0,b.jsx)(`p`,{className:`text-sm text-muted-foreground/80 mt-1`,children:`Try adjusting your search terms`})]}):(0,b.jsx)(`div`,{className:`space-y-6`,children:Object.entries(O).map(([e,t])=>(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`h2`,{className:`text-sm font-medium text-muted-foreground mb-2 flex items-center gap-1.5`,children:[(0,b.jsx)(S[e]||p,{className:`h-4 w-4`}),e.charAt(0).toUpperCase()+e.slice(1),`s`,(0,b.jsx)(c,{variant:`secondary`,className:`ml-1 text-xs`,children:t.length})]}),(0,b.jsx)(`div`,{className:`grid gap-2`,children:t.map(e=>{let t=S[e.type]||p;return(0,b.jsx)(l,{to:e.href,className:`rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:(0,b.jsx)(a,{className:`hover:bg-accent/50 transition-colors cursor-pointer`,children:(0,b.jsxs)(s,{className:`flex items-center gap-3 p-3`,children:[(0,b.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded ${C[e.type]||``}`,children:(0,b.jsx)(t,{className:`h-4 w-4`})}),(0,b.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,b.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.label}),e.description&&(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:e.description})]}),(0,b.jsx)(c,{variant:`outline`,className:`text-xs shrink-0`,children:e.type})]})})},e.id)})})]},e))})]})}export{v as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{U as t,W as n,m as r,p as i}from"./framework-BW6KsEI0.js";import{Hi as a,Ir as o,Lr as s,Ra as c,Zi as l,cr as u,dr as d,fr as f,ii as p,lr as m,mr as h,ui as g,ur as _}from"./plugins-core-Ccvbi6db.js";import{d as v,p as y}from"./ui-layout-CYz0tyDf.js";import"./index-DATdOX6r.js";import{r as b,t as x}from"./getIcon-N5xWCMJy.js";var S=e(n(),1),C=t();function w(){let e=v(),{appName:t}=y(),n=t?`/apps/${t}`:``,w=i(),{apps:T,objects:E,dashboards:D,reports:O,pages:k}=r(),[A,j]=(0,S.useState)({apps:null,objects:null,users:null,orgs:null,roles:null,permissions:null,auditLogs:null,dashboard:null,page:null,report:null}),[M,N]=(0,S.useState)(!0),P=(0,S.useCallback)(async()=>{if(w){N(!0);try{let[e,t,n,r,i]=await Promise.all([w.find(`sys_user`).catch(()=>({data:[]})),w.find(`sys_org`).catch(()=>({data:[]})),w.find(`sys_role`).catch(()=>({data:[]})),w.find(`sys_permission`).catch(()=>({data:[]})),w.find(`sys_audit_log`).catch(()=>({data:[]}))]);j({apps:T?.length??0,objects:E?.length??0,users:e.data?.length??0,orgs:t.data?.length??0,roles:n.data?.length??0,permissions:r.data?.length??0,auditLogs:i.data?.length??0,dashboard:D?.length??0,page:k?.length??0,report:O?.length??0})}catch{}finally{N(!1)}}},[w,T,E,D,O,k]);(0,S.useEffect)(()=>{P()},[P]);let F=b().map(e=>{let t=e.customRoute?`${n}${e.customRoute}`:`${n}/system/metadata/${e.type}`,r=x(e.icon),i=null;return i=e.type===`app`?A.apps:e.type===`object`?A.objects:A[e.type]??null,{title:e.pluralLabel,description:e.description,icon:r,href:t,countLabel:e.pluralLabel.toLowerCase(),count:i}}),I=[{title:`Users`,description:`Manage system users and accounts`,icon:o,href:`${n}/system/users`,countLabel:`users`,count:A.users},{title:`Organizations`,description:`Manage organizations and teams`,icon:c,href:`${n}/system/organizations`,countLabel:`organizations`,count:A.orgs},{title:`Roles`,description:`Configure roles and access levels`,icon:p,href:`${n}/system/roles`,countLabel:`roles`,count:A.roles},{title:`Permissions`,description:`Manage permission rules and assignments`,icon:l,href:`${n}/system/permissions`,countLabel:`permissions`,count:A.permissions},{title:`Audit Log`,description:`View system activity and changes`,icon:g,href:`${n}/system/audit-log`,countLabel:`entries`,count:A.auditLogs},{title:`Profile`,description:`View and edit your account settings`,icon:s,href:`${n}/system/profile`,countLabel:``,count:null}],L=[...F,...I];return(0,C.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:`System Settings`}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Manage applications, users, roles, permissions, and system configuration`})]}),M&&(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,role:`status`,"aria-live":`polite`,children:[(0,C.jsx)(a,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}),`Loading statistics...`]}),(0,C.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:L.map(t=>{let n=t.icon;return(0,C.jsxs)(u,{className:`cursor-pointer transition-colors hover:bg-accent/50`,onClick:()=>e(t.href),"data-testid":`hub-card-${t.title.toLowerCase().replace(/\s+/g,`-`)}`,role:`link`,tabIndex:0,"aria-label":`${t.title}: ${t.description}`,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(t.href))},children:[(0,C.jsxs)(d,{className:`flex flex-row items-center gap-3 pb-2`,children:[(0,C.jsx)(`div`,{className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,C.jsx)(n,{className:`h-5 w-5`})}),(0,C.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsx)(f,{className:`text-base`,children:t.title}),(0,C.jsx)(_,{className:`text-xs`,children:t.description})]})]}),(0,C.jsx)(m,{className:`pt-0`,children:t.count!==null&&(0,C.jsxs)(h,{variant:`secondary`,children:[t.count,` `,t.countLabel]})})]},t.title)})})]})}export{w as SystemHubPage};
|