@samanhappy/mcphub 1.0.43 → 1.0.45

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.
Files changed (91) hide show
  1. package/dist/clients/openapi.js +20 -4
  2. package/dist/clients/openapi.js.map +1 -1
  3. package/dist/config/index.js +1 -1
  4. package/dist/config/index.js.map +1 -1
  5. package/dist/controllers/oauthCallbackController.js +1 -1
  6. package/dist/controllers/oauthCallbackController.js.map +1 -1
  7. package/dist/controllers/toolController.js +2 -1
  8. package/dist/controllers/toolController.js.map +1 -1
  9. package/dist/middlewares/auth.js +1 -1
  10. package/dist/middlewares/auth.js.map +1 -1
  11. package/dist/services/mcpOAuthProvider.js +25 -0
  12. package/dist/services/mcpOAuthProvider.js.map +1 -1
  13. package/dist/services/mcpService.js +106 -15
  14. package/dist/services/mcpService.js.map +1 -1
  15. package/dist/services/oauthClientRegistration.js +1 -1
  16. package/dist/services/oauthClientRegistration.js.map +1 -1
  17. package/dist/services/oauthSettingsStore.js +5 -0
  18. package/dist/services/oauthSettingsStore.js.map +1 -1
  19. package/dist/services/proxy.js +1 -1
  20. package/dist/services/proxy.js.map +1 -1
  21. package/dist/services/requestContextService.js.map +1 -1
  22. package/dist/services/sseService.js +14 -1
  23. package/dist/services/sseService.js.map +1 -1
  24. package/dist/services/vectorSearchService.js +3 -1
  25. package/dist/services/vectorSearchService.js.map +1 -1
  26. package/dist/utils/oauthConsentResource.js +1 -1
  27. package/dist/utils/oauthConsentResource.js.map +1 -1
  28. package/frontend/dist/assets/{ActivityPage-Y8gIRxkd.js → ActivityPage-DPlbWRuE.js} +2 -2
  29. package/frontend/dist/assets/{ActivityPage-Y8gIRxkd.js.map → ActivityPage-DPlbWRuE.js.map} +1 -1
  30. package/frontend/dist/assets/{ConfirmDialog-uWBwm8J1.js → ConfirmDialog-BYdfb115.js} +2 -2
  31. package/frontend/dist/assets/{ConfirmDialog-uWBwm8J1.js.map → ConfirmDialog-BYdfb115.js.map} +1 -1
  32. package/frontend/dist/assets/{CopyClientConfigDialog-BHijFbyw.js → CopyClientConfigDialog-BmrvVqKm.js} +2 -2
  33. package/frontend/dist/assets/{CopyClientConfigDialog-BHijFbyw.js.map → CopyClientConfigDialog-BmrvVqKm.js.map} +1 -1
  34. package/frontend/dist/assets/{CredentialsPage-1UqVqEMQ.js → CredentialsPage-DUa5COar.js} +2 -2
  35. package/frontend/dist/assets/{CredentialsPage-1UqVqEMQ.js.map → CredentialsPage-DUa5COar.js.map} +1 -1
  36. package/frontend/dist/assets/{Dashboard-CswKNreX.js → Dashboard-DaTYK_nx.js} +2 -2
  37. package/frontend/dist/assets/{Dashboard-CswKNreX.js.map → Dashboard-DaTYK_nx.js.map} +1 -1
  38. package/frontend/dist/assets/{DeleteDialog-BYhrMGZo.js → DeleteDialog-BaCsEkJA.js} +2 -2
  39. package/frontend/dist/assets/{DeleteDialog-BYhrMGZo.js.map → DeleteDialog-BaCsEkJA.js.map} +1 -1
  40. package/frontend/dist/assets/{EndpointCopy-B0yIEBjO.js → EndpointCopy-BCfqwDEK.js} +2 -2
  41. package/frontend/dist/assets/{EndpointCopy-B0yIEBjO.js.map → EndpointCopy-BCfqwDEK.js.map} +1 -1
  42. package/frontend/dist/assets/{GroupsPage-KJJsAprG.js → GroupsPage-Cuxz5FyS.js} +2 -2
  43. package/frontend/dist/assets/{GroupsPage-KJJsAprG.js.map → GroupsPage-Cuxz5FyS.js.map} +1 -1
  44. package/frontend/dist/assets/{LoginPage-B1heSsJ6.js → LoginPage-yTpHn5Tx.js} +2 -2
  45. package/frontend/dist/assets/{LoginPage-B1heSsJ6.js.map → LoginPage-yTpHn5Tx.js.map} +1 -1
  46. package/frontend/dist/assets/LogsPage-BbSlC06Q.js +2 -0
  47. package/frontend/dist/assets/LogsPage-BbSlC06Q.js.map +1 -0
  48. package/frontend/dist/assets/{MarketPage-D0RXyf6g.js → MarketPage-nAF8uFkv.js} +2 -2
  49. package/frontend/dist/assets/{MarketPage-D0RXyf6g.js.map → MarketPage-nAF8uFkv.js.map} +1 -1
  50. package/frontend/dist/assets/{OAuthConsentPage-DLveAKh7.js → OAuthConsentPage-W05BBBpL.js} +2 -2
  51. package/frontend/dist/assets/{OAuthConsentPage-DLveAKh7.js.map → OAuthConsentPage-W05BBBpL.js.map} +1 -1
  52. package/frontend/dist/assets/{Pagination-CLUvn47x.js → Pagination-BRqqU5Ct.js} +2 -2
  53. package/frontend/dist/assets/{Pagination-CLUvn47x.js.map → Pagination-BRqqU5Ct.js.map} +1 -1
  54. package/frontend/dist/assets/PromptsPage-Bq7xptCw.js +2 -0
  55. package/frontend/dist/assets/{PromptsPage-cPHf4CM9.js.map → PromptsPage-Bq7xptCw.js.map} +1 -1
  56. package/frontend/dist/assets/ResourcesPage-CsL39aff.js +2 -0
  57. package/frontend/dist/assets/{ResourcesPage-DcXEwXg9.js.map → ResourcesPage-CsL39aff.js.map} +1 -1
  58. package/frontend/dist/assets/{ServersPage-CIPZUbqT.js → ServersPage-p9LgWUzS.js} +4 -4
  59. package/frontend/dist/assets/{ServersPage-CIPZUbqT.js.map → ServersPage-p9LgWUzS.js.map} +1 -1
  60. package/frontend/dist/assets/{SettingsPage-vMxO3bOc.js → SettingsPage-DobkN2nZ.js} +2 -2
  61. package/frontend/dist/assets/{SettingsPage-vMxO3bOc.js.map → SettingsPage-DobkN2nZ.js.map} +1 -1
  62. package/frontend/dist/assets/{StatusDot-LGEKnAGN.js → StatusDot-DnCf86-T.js} +2 -2
  63. package/frontend/dist/assets/{StatusDot-LGEKnAGN.js.map → StatusDot-DnCf86-T.js.map} +1 -1
  64. package/frontend/dist/assets/{ToggleGroup-Ad_I2spO.js → ToggleGroup-DFjmIz4f.js} +2 -2
  65. package/frontend/dist/assets/{ToggleGroup-Ad_I2spO.js.map → ToggleGroup-DFjmIz4f.js.map} +1 -1
  66. package/frontend/dist/assets/{UsersPage-CbfajFCc.js → UsersPage-g_A6Nis1.js} +2 -2
  67. package/frontend/dist/assets/{UsersPage-CbfajFCc.js.map → UsersPage-g_A6Nis1.js.map} +1 -1
  68. package/frontend/dist/assets/{clipboard-CjtPOmJs.js → clipboard-C6pDz_7o.js} +2 -2
  69. package/frontend/dist/assets/{clipboard-CjtPOmJs.js.map → clipboard-C6pDz_7o.js.map} +1 -1
  70. package/frontend/dist/assets/{framework-vendor-_YL27Pfc.js → framework-vendor-CQFm9vKd.js} +12 -12
  71. package/frontend/dist/assets/{framework-vendor-_YL27Pfc.js.map → framework-vendor-CQFm9vKd.js.map} +1 -1
  72. package/frontend/dist/assets/{i18n-vendor-BMaj5qV8.js → i18n-vendor-DVmjrzgW.js} +2 -2
  73. package/frontend/dist/assets/{i18n-vendor-BMaj5qV8.js.map → i18n-vendor-DVmjrzgW.js.map} +1 -1
  74. package/frontend/dist/assets/icons-vendor-CEwDZ1lN.js +362 -0
  75. package/frontend/dist/assets/icons-vendor-CEwDZ1lN.js.map +1 -0
  76. package/frontend/dist/assets/{index-DJUr-vo3.js → index-BlEZfPQl.js} +3 -3
  77. package/frontend/dist/assets/{index-DJUr-vo3.js.map → index-BlEZfPQl.js.map} +1 -1
  78. package/frontend/dist/assets/{resourceService-D4dgqjzY.js → resourceService-CAxgCzyV.js} +2 -2
  79. package/frontend/dist/assets/{resourceService-D4dgqjzY.js.map → resourceService-CAxgCzyV.js.map} +1 -1
  80. package/frontend/dist/assets/{useCostData-CT2iwvzx.js → useCostData-wcUc6g7_.js} +2 -2
  81. package/frontend/dist/assets/{useCostData-CT2iwvzx.js.map → useCostData-wcUc6g7_.js.map} +1 -1
  82. package/frontend/dist/assets/{variableDetection-BHrhKDaj.js → variableDetection-DxVZhKpb.js} +2 -2
  83. package/frontend/dist/assets/{variableDetection-BHrhKDaj.js.map → variableDetection-DxVZhKpb.js.map} +1 -1
  84. package/frontend/dist/index.html +4 -4
  85. package/package.json +5 -5
  86. package/frontend/dist/assets/LogsPage-C4BOgOSW.js +0 -2
  87. package/frontend/dist/assets/LogsPage-C4BOgOSW.js.map +0 -1
  88. package/frontend/dist/assets/PromptsPage-cPHf4CM9.js +0 -2
  89. package/frontend/dist/assets/ResourcesPage-DcXEwXg9.js +0 -2
  90. package/frontend/dist/assets/icons-vendor-CvmEvkQ-.js +0 -337
  91. package/frontend/dist/assets/icons-vendor-CvmEvkQ-.js.map +0 -1
@@ -6,10 +6,10 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
7
  <title>MCPHub Dashboard</title>
8
8
  <link rel="icon" type="image/x-icon" href="./assets/favicon-DJnZjsC8.ico">
9
- <script type="module" crossorigin src="./assets/index-DJUr-vo3.js"></script>
10
- <link rel="modulepreload" crossorigin href="./assets/framework-vendor-_YL27Pfc.js">
11
- <link rel="modulepreload" crossorigin href="./assets/i18n-vendor-BMaj5qV8.js">
12
- <link rel="modulepreload" crossorigin href="./assets/icons-vendor-CvmEvkQ-.js">
9
+ <script type="module" crossorigin src="./assets/index-BlEZfPQl.js"></script>
10
+ <link rel="modulepreload" crossorigin href="./assets/framework-vendor-CQFm9vKd.js">
11
+ <link rel="modulepreload" crossorigin href="./assets/i18n-vendor-DVmjrzgW.js">
12
+ <link rel="modulepreload" crossorigin href="./assets/icons-vendor-CEwDZ1lN.js">
13
13
  <link rel="stylesheet" crossorigin href="./assets/index-Cla8rRxG.css">
14
14
  </head>
15
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samanhappy/mcphub",
3
- "version": "1.0.43",
3
+ "version": "1.0.45",
4
4
  "description": "Open-source, self-hosted MCP gateway and control plane for connecting, controlling, and operating MCP servers.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -52,7 +52,7 @@
52
52
  "express-rate-limit": "^8.3.0",
53
53
  "express-validator": "^7.3.1",
54
54
  "gpt-tokenizer": "^3.4.0",
55
- "hono": "4.13.5",
55
+ "hono": "4.13.7",
56
56
  "i18next": "^25.5.0",
57
57
  "i18next-fs-backend": "^2.6.7",
58
58
  "ipaddr.js": "^2.4.0",
@@ -64,7 +64,7 @@
64
64
  "openapi-types": "^12.1.3",
65
65
  "openid-client": "^6.8.1",
66
66
  "pg": "^8.16.3",
67
- "pgvector": "^0.2.1",
67
+ "pgvector": "^0.3.0",
68
68
  "postgres": "^3.4.7",
69
69
  "redis": "^5.12.1",
70
70
  "reflect-metadata": "^0.2.2",
@@ -76,7 +76,7 @@
76
76
  },
77
77
  "devDependencies": {
78
78
  "@eslint/eslintrc": "^3.3.3",
79
- "@eslint/js": "^9.39.2",
79
+ "@eslint/js": "^10.0.1",
80
80
  "@mdx-js/mdx": "^3.1.1",
81
81
  "@modelcontextprotocol/sdk-v1": "npm:@modelcontextprotocol/sdk@1.29.0",
82
82
  "@radix-ui/react-accordion": "^1.2.12",
@@ -112,7 +112,7 @@
112
112
  "jest": "^30.2.0",
113
113
  "jest-environment-node": "^30.0.5",
114
114
  "jest-mock-extended": "4.0.1",
115
- "lucide-react": "^0.552.0",
115
+ "lucide-react": "^1.48.0",
116
116
  "postcss": "^8.5.6",
117
117
  "prettier": "^3.6.2",
118
118
  "react": "19.2.7",
@@ -1,2 +0,0 @@
1
- import{r as o,j as r}from"./framework-vendor-_YL27Pfc.js";import{m as w,r as E}from"./index-DJUr-vo3.js";import{u as k}from"./i18n-vendor-BMaj5qV8.js";import"./icons-vendor-CvmEvkQ-.js";function C(s,n){if(typeof s=="function")return s(n);s!=null&&(s.current=n)}function R(...s){return n=>{let l=!1;const a=s.map(e=>{const i=C(e,n);return!l&&typeof i=="function"&&(l=!0),i});if(l)return()=>{for(let e=0;e<a.length;e++){const i=a[e];typeof i=="function"?i():C(s[e],null)}}}}function T(s){const n=V(s),l=o.forwardRef((a,e)=>{const{children:i,...c}=a,d=o.Children.toArray(i),u=d.find(I);if(u){const m=u.props.children,g=d.map(p=>p===u?o.Children.count(m)>1?o.Children.only(null):o.isValidElement(m)?m.props.children:null:p);return r.jsx(n,{...c,ref:e,children:o.isValidElement(m)?o.cloneElement(m,void 0,g):null})}return r.jsx(n,{...c,ref:e,children:i})});return l.displayName=`${s}.Slot`,l}var $=T("Slot");function V(s){const n=o.forwardRef((l,a)=>{const{children:e,...i}=l;if(o.isValidElement(e)){const c=A(e),d=P(i,e.props);return e.type!==o.Fragment&&(d.ref=a?R(a,c):c),o.cloneElement(e,d)}return o.Children.count(e)>1?o.Children.only(null):null});return n.displayName=`${s}.SlotClone`,n}var F=Symbol("radix.slottable");function I(s){return o.isValidElement(s)&&typeof s.type=="function"&&"__radixId"in s.type&&s.type.__radixId===F}function P(s,n){const l={...n};for(const a in n){const e=s[a],i=n[a];/^on[A-Z]/.test(a)?e&&i?l[a]=(...d)=>{const u=i(...d);return e(...d),u}:e&&(l[a]=e):a==="style"?l[a]={...e,...i}:a==="className"&&(l[a]=[e,i].filter(Boolean).join(" "))}return{...s,...l}}function A(s){var a,e;let n=(a=Object.getOwnPropertyDescriptor(s.props,"ref"))==null?void 0:a.get,l=n&&"isReactWarning"in n&&n.isReactWarning;return l?s.ref:(n=(e=Object.getOwnPropertyDescriptor(s,"ref"))==null?void 0:e.get,l=n&&"isReactWarning"in n&&n.isReactWarning,l?s.props.ref:s.props.ref||s.ref)}const W={default:"bg-blue-500 text-white hover:bg-blue-600 focus:ring-blue-500",outline:"border border-gray-300 dark:border-gray-700 bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-300",ghost:"bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-300",link:"bg-transparent underline-offset-4 hover:underline text-blue-500 hover:text-blue-600",destructive:"bg-red-500 text-white hover:bg-red-600 focus:ring-red-500"},B={default:"h-10 py-2 px-4",sm:"h-8 px-3 text-sm",lg:"h-12 px-6",icon:"h-10 w-10 p-0 text-center"};function H({variant:s="default",size:n="default",className:l,disabled:a,loading:e=!1,asChild:i=!1,children:c,onClick:d,...u}){const[m,g]=o.useState(!1),p=e||m,h=async v=>{if(d)try{const x=d(v);x&&typeof x.then=="function"&&(g(!0),await x)}finally{g(!1)}},y=i?$:"button";return r.jsx(y,{className:w("rounded-md inline-flex items-center justify-center font-medium transition-all duration-200 active:scale-95 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none relative",W[s],B[n],l),disabled:a||p,onClick:h,...u,children:i?c:r.jsxs(r.Fragment,{children:[r.jsx("span",{className:w("flex items-center justify-center",p&&"invisible"),children:c}),p&&r.jsx("span",{className:"absolute inset-0 flex items-center justify-center",children:r.jsxs("svg",{className:"animate-spin h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[r.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),r.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})})]})})}const O={default:"bg-blue-500 text-white hover:bg-blue-600",secondary:"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600",outline:"bg-transparent border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800",destructive:"bg-red-500 text-white hover:bg-red-600"};function j({children:s,variant:n="default",className:l,onClick:a}){return r.jsx("span",{className:w("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors",O[n],a?"cursor-pointer":"",l),onClick:a,children:s})}const _=({logs:s,isLoading:n=!1,error:l=null,onClear:a})=>{const{t:e}=k(),i=o.useRef(null),[c,d]=o.useState(!0),[u,m]=o.useState(""),[g,p]=o.useState(["info","error","warn","debug"]),[h,y]=o.useState(["main","child"]);o.useEffect(()=>{c&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[s,c]);const v=s.filter(t=>{const f=u?t.message.toLowerCase().includes(u.toLowerCase()):!0,b=g.includes(t.type),L=h.includes(t.source);return f&&b&&L}),x=t=>new Date(t).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}),N=t=>{switch(t){case"error":return"bg-red-400/80 text-white";case"warn":return"bg-yellow-400/80 text-gray-900";case"debug":return"bg-purple-400/80 text-white";case"info":return"bg-blue-400/80 text-white";default:return"bg-blue-400/80 text-white"}},S=t=>{switch(t){case"main":return"bg-green-400/80 text-white";case"child":return"bg-orange-400/80 text-white";default:return"bg-gray-400/80 text-white"}};return r.jsxs("div",{className:"flex flex-col h-full",children:[r.jsxs("div",{className:"bg-card p-3 rounded-t-md flex flex-wrap items-center justify-between gap-2",children:[r.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[r.jsxs("span",{className:"font-semibold text-sm",children:[e("logs.filters"),":"]}),r.jsx("input",{type:"text",placeholder:e("logs.search"),className:"shadow appearance-none border border-gray-200 dark:border-gray-700 rounded py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline form-input",value:u,onChange:t=>m(t.target.value)}),r.jsx("div",{className:"flex gap-1 items-center",children:["debug","info","error","warn"].map(t=>r.jsx(j,{variant:g.includes(t)?"default":"outline",className:`cursor-pointer ${g.includes(t)?N(t):""}`,onClick:()=>{g.includes(t)?p(f=>f.filter(b=>b!==t)):p(f=>[...f,t])},children:t},t))}),r.jsx("div",{className:"flex gap-1 items-center ml-2",children:["main","child"].map(t=>r.jsx(j,{variant:h.includes(t)?"default":"outline",className:`cursor-pointer ${h.includes(t)?S(t):""}`,onClick:()=>{h.includes(t)?y(f=>f.filter(b=>b!==t)):y(f=>[...f,t])},children:e(t==="main"?"logs.mainProcess":"logs.childProcess")},t))})]}),r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsxs("label",{className:"flex items-center gap-1 text-sm",children:[r.jsx("input",{type:"checkbox",checked:c,onChange:()=>d(!c),className:"form-checkbox h-4 w-4"}),e("logs.autoScroll")]}),r.jsx(H,{variant:"outline",size:"sm",onClick:a,className:"btn-secondary",disabled:n||s.length===0,children:e("logs.clearLogs")})]})]}),r.jsx("div",{ref:i,className:"flex-grow p-2 overflow-auto bg-card rounded-b-md font-mono text-sm",style:{maxHeight:"calc(100vh - 300px)"},children:n?r.jsx("div",{className:"flex justify-center items-center h-full",children:r.jsx("span",{children:e("logs.loading")})}):l?r.jsx("div",{className:"text-red-500 p-2",children:l.message}):v.length===0?r.jsx("div",{className:"text-center text-muted-foreground p-8",children:u||g.length<4||h.length<2?e("logs.noMatch"):e("logs.noLogs")}):v.map((t,f)=>r.jsxs("div",{className:`py-1 ${t.type==="error"?"text-red-500":t.type==="warn"?"text-yellow-500":""}`,children:[r.jsxs("span",{className:"text-gray-400",children:["[",x(t.timestamp),"]"]}),r.jsx(j,{className:`ml-2 mr-1 ${N(t.type)}`,children:t.type}),r.jsxs(j,{variant:"default",className:`mr-2 ${S(t.source)}`,children:[t.source==="main"?e("logs.main"):e("logs.child"),t.processId?` (${t.processId})`:""]}),r.jsx("span",{className:"whitespace-pre-wrap",children:t.message})]},`${t.timestamp}-${f}`))})]})},q=()=>{const{t:s}=k(),{logs:n,loading:l,error:a,clearLogs:e}=E();return r.jsxs("div",{children:[r.jsxs("div",{className:"mb-6",children:[r.jsx("h1",{className:"hub-h1",children:s("pages.logs.title")}),r.jsxs("p",{className:"hub-sub",children:[r.jsx("span",{className:"hub-num",children:n.length})," entries"]})]}),r.jsx("div",{className:"hub-card overflow-hidden",children:r.jsx(_,{logs:n,isLoading:l,error:a,onClear:e})})]})};export{q as default};
2
- //# sourceMappingURL=LogsPage-C4BOgOSW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogsPage-C4BOgOSW.js","sources":["../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.2.16_react@19.2.7/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.2.16_react@19.2.7/node_modules/@radix-ui/react-slot/dist/index.mjs","../../src/components/ui/Button.tsx","../../src/components/ui/Badge.tsx","../../src/components/LogViewer.tsx","../../src/pages/LogsPage.tsx"],"sourcesContent":["// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { useState } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cn } from '../../utils/cn';\n\ntype ButtonVariant = 'default' | 'outline' | 'ghost' | 'link' | 'destructive';\ntype ButtonSize = 'default' | 'sm' | 'lg' | 'icon';\n\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n asChild?: boolean;\n loading?: boolean;\n children: React.ReactNode;\n // Allow async handlers: Button detects a returned promise and shows the\n // loading state for the duration of the call.\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void | Promise<void>;\n}\n\nconst variantStyles: Record<ButtonVariant, string> = {\n default: 'bg-blue-500 text-white hover:bg-blue-600 focus:ring-blue-500',\n outline: 'border border-gray-300 dark:border-gray-700 bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-300',\n ghost: 'bg-transparent hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-300',\n link: 'bg-transparent underline-offset-4 hover:underline text-blue-500 hover:text-blue-600',\n destructive: 'bg-red-500 text-white hover:bg-red-600 focus:ring-red-500',\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n default: 'h-10 py-2 px-4',\n sm: 'h-8 px-3 text-sm',\n lg: 'h-12 px-6',\n icon: 'h-10 w-10 p-0 text-center',\n};\n\nexport function Button({\n variant = 'default',\n size = 'default',\n className,\n disabled,\n loading: externalLoading = false,\n asChild = false,\n children,\n onClick,\n ...props\n}: ButtonProps) {\n const [internalLoading, setInternalLoading] = useState(false);\n const isLoading = externalLoading || internalLoading;\n\n const handleClick = async (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!onClick) return;\n \n try {\n const result = onClick(e);\n if (result && typeof (result as any).then === 'function') {\n setInternalLoading(true);\n await result;\n }\n } finally {\n if (internalLoading) {\n // Need to check if component unmounted?\n // It's a standard pattern, state update on unmounted is no longer an error in React 18+\n }\n setInternalLoading(false);\n }\n };\n\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n className={cn(\n 'rounded-md inline-flex items-center justify-center font-medium transition-all duration-200 active:scale-95 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none relative',\n variantStyles[variant],\n sizeStyles[size],\n className\n )}\n disabled={disabled || isLoading}\n onClick={handleClick}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n <span className={cn('flex items-center justify-center', isLoading && 'invisible')}>\n {children}\n </span>\n {isLoading && (\n <span className=\"absolute inset-0 flex items-center justify-center\">\n <svg className=\"animate-spin h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </span>\n )}\n </>\n )}\n </Comp>\n );\n}","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from '../../utils/cn';\n\ntype BadgeVariant = 'default' | 'secondary' | 'outline' | 'destructive';\n\ntype BadgeProps = {\n children: React.ReactNode;\n variant?: BadgeVariant;\n className?: string;\n onClick?: () => void;\n};\n\nconst badgeVariants = {\n default: 'bg-blue-500 text-white hover:bg-blue-600',\n secondary:\n 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600',\n outline:\n 'bg-transparent border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800',\n destructive: 'bg-red-500 text-white hover:bg-red-600',\n};\n\nexport function Badge({ children, variant = 'default', className, onClick }: BadgeProps) {\n return (\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors',\n badgeVariants[variant],\n onClick ? 'cursor-pointer' : '',\n className,\n )}\n onClick={onClick}\n >\n {children}\n </span>\n );\n}\n\n// For backward compatibility with existing code\nexport const StatusBadge = ({\n status,\n onAuthClick,\n}: {\n status: 'connected' | 'disconnected' | 'connecting' | 'oauth_required';\n onAuthClick?: (e: React.MouseEvent) => void;\n}) => {\n const { t } = useTranslation();\n\n const colors = {\n connecting: 'status-badge-connecting',\n connected: 'status-badge-online',\n disconnected: 'status-badge-offline',\n oauth_required: 'status-badge-oauth-required',\n };\n\n // Map status to translation keys\n const statusTranslations = {\n connected: 'status.online',\n disconnected: 'status.offline',\n connecting: 'status.connecting',\n oauth_required: 'status.oauthRequired',\n };\n\n const isOAuthRequired = status === 'oauth_required';\n\n return (\n <span\n className={`px-2 inline-flex text-xs leading-5 font-semibold rounded-full ${colors[status]} ${isOAuthRequired && onAuthClick ? 'cursor-pointer hover:opacity-80' : ''}`}\n onClick={isOAuthRequired && onAuthClick ? (e) => onAuthClick(e) : undefined}\n title={isOAuthRequired ? t('status.clickToAuthorize') : undefined}\n >\n {isOAuthRequired && '🔐 '}\n {t(statusTranslations[status] || status)}\n </span>\n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { LogEntry } from '../services/logService';\nimport { Button } from './ui/Button';\nimport { Badge } from './ui/Badge';\nimport { useTranslation } from 'react-i18next';\n\ninterface LogViewerProps {\n logs: LogEntry[];\n isLoading?: boolean;\n error?: Error | null;\n onClear?: () => void;\n}\n\nconst LogViewer: React.FC<LogViewerProps> = ({ logs, isLoading = false, error = null, onClear }) => {\n const { t } = useTranslation();\n const logContainerRef = useRef<HTMLDivElement>(null);\n const [autoScroll, setAutoScroll] = useState(true);\n const [filter, setFilter] = useState<string>('');\n const [typeFilter, setTypeFilter] = useState<Array<'info' | 'error' | 'warn' | 'debug'>>(['info', 'error', 'warn', 'debug']);\n const [sourceFilter, setSourceFilter] = useState<Array<'main' | 'child'>>(['main', 'child']);\n\n // Auto scroll to bottom when new logs come in if autoScroll is enabled\n useEffect(() => {\n if (autoScroll && logContainerRef.current) {\n logContainerRef.current.scrollTop = logContainerRef.current.scrollHeight;\n }\n }, [logs, autoScroll]);\n\n // Filter logs based on current filter settings\n const filteredLogs = logs.filter(log => {\n const matchesText = filter ? log.message.toLowerCase().includes(filter.toLowerCase()) : true;\n const matchesType = typeFilter.includes(log.type);\n const matchesSource = sourceFilter.includes(log.source as 'main' | 'child');\n return matchesText && matchesType && matchesSource;\n });\n\n // Format timestamp to readable format\n const formatTimestamp = (timestamp: number) => {\n const date = new Date(timestamp);\n return date.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false\n });\n };\n\n // Get badge color based on log type\n const getLogTypeColor = (type: string) => {\n switch (type) {\n case 'error': return 'bg-red-400/80 text-white';\n case 'warn': return 'bg-yellow-400/80 text-gray-900';\n case 'debug': return 'bg-purple-400/80 text-white';\n case 'info': return 'bg-blue-400/80 text-white';\n default: return 'bg-blue-400/80 text-white';\n }\n };\n\n // Get badge color based on log source\n const getSourceColor = (source: string) => {\n switch (source) {\n case 'main': return 'bg-green-400/80 text-white';\n case 'child': return 'bg-orange-400/80 text-white';\n default: return 'bg-gray-400/80 text-white';\n }\n };\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"bg-card p-3 rounded-t-md flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-semibold text-sm\">{t('logs.filters')}:</span>\n\n {/* Text search filter */}\n <input\n type=\"text\"\n placeholder={t('logs.search')}\n className=\"shadow appearance-none border border-gray-200 dark:border-gray-700 rounded py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline form-input\"\n value={filter}\n onChange={(e) => setFilter(e.target.value)}\n />\n\n {/* Log type filters */}\n <div className=\"flex gap-1 items-center\">\n {(['debug', 'info', 'error', 'warn'] as const).map(type => (\n <Badge\n key={type}\n variant={typeFilter.includes(type) ? 'default' : 'outline'}\n className={`cursor-pointer ${typeFilter.includes(type) ? getLogTypeColor(type) : ''}`}\n onClick={() => {\n if (typeFilter.includes(type)) {\n setTypeFilter(prev => prev.filter(t => t !== type));\n } else {\n setTypeFilter(prev => [...prev, type]);\n }\n }}\n >\n {type}\n </Badge>\n ))}\n </div>\n\n {/* Log source filters */}\n <div className=\"flex gap-1 items-center ml-2\">\n {(['main', 'child'] as const).map(source => (\n <Badge\n key={source}\n variant={sourceFilter.includes(source) ? 'default' : 'outline'}\n className={`cursor-pointer ${sourceFilter.includes(source) ? getSourceColor(source) : ''}`}\n onClick={() => {\n if (sourceFilter.includes(source)) {\n setSourceFilter(prev => prev.filter(s => s !== source));\n } else {\n setSourceFilter(prev => [...prev, source]);\n }\n }}\n >\n {source === 'main' ? t('logs.mainProcess') : t('logs.childProcess')}\n </Badge>\n ))}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <label className=\"flex items-center gap-1 text-sm\">\n <input\n type=\"checkbox\"\n checked={autoScroll}\n onChange={() => setAutoScroll(!autoScroll)}\n className=\"form-checkbox h-4 w-4\"\n />\n {t('logs.autoScroll')}\n </label>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onClear}\n className='btn-secondary'\n disabled={isLoading || logs.length === 0}\n >\n {t('logs.clearLogs')}\n </Button>\n </div>\n </div>\n\n <div\n ref={logContainerRef}\n className=\"flex-grow p-2 overflow-auto bg-card rounded-b-md font-mono text-sm\"\n style={{ maxHeight: 'calc(100vh - 300px)' }}\n >\n {isLoading ? (\n <div className=\"flex justify-center items-center h-full\">\n <span>{t('logs.loading')}</span>\n </div>\n ) : error ? (\n <div className=\"text-red-500 p-2\">\n {error.message}\n </div>\n ) : filteredLogs.length === 0 ? (\n <div className=\"text-center text-muted-foreground p-8\">\n {filter || typeFilter.length < 4 || sourceFilter.length < 2\n ? t('logs.noMatch')\n : t('logs.noLogs')}\n </div>\n ) : (\n filteredLogs.map((log, index) => (\n <div\n key={`${log.timestamp}-${index}`}\n className={`py-1 ${log.type === 'error' ? 'text-red-500' :\n log.type === 'warn' ? 'text-yellow-500' : ''\n }`}\n >\n <span className=\"text-gray-400\">[{formatTimestamp(log.timestamp)}]</span>\n <Badge className={`ml-2 mr-1 ${getLogTypeColor(log.type)}`}>\n {log.type}\n </Badge>\n <Badge\n variant=\"default\"\n className={`mr-2 ${getSourceColor(log.source)}`}\n >\n {log.source === 'main' ? t('logs.main') : t('logs.child')}\n {log.processId ? ` (${log.processId})` : ''}\n </Badge>\n <span className=\"whitespace-pre-wrap\">{log.message}</span>\n </div>\n ))\n )}\n </div>\n </div>\n );\n};\n\nexport default LogViewer;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport LogViewer from '../components/LogViewer';\nimport { useLogs } from '../services/logService';\n\nconst LogsPage: React.FC = () => {\n const { t } = useTranslation();\n const { logs, loading, error, clearLogs } = useLogs();\n\n return (\n <div>\n <div className=\"mb-6\">\n <h1 className=\"hub-h1\">{t('pages.logs.title')}</h1>\n <p className=\"hub-sub\">\n <span className=\"hub-num\">{logs.length}</span> entries\n </p>\n </div>\n <div className=\"hub-card overflow-hidden\">\n <LogViewer logs={logs} isLoading={loading} error={error} onClear={clearLogs} />\n </div>\n </div>\n );\n};\n\nexport default LogsPage;\n"],"names":["setRef","ref","value","composeRefs","refs","node","hasCleanup","cleanups","cleanup","i","createSlot","ownerName","SlotClone","createSlotClone","Slot2","React.forwardRef","props","forwardedRef","children","slotProps","childrenArray","React.Children","slottable","isSlottable","newElement","newChildren","child","React.isValidElement","jsx","React.cloneElement","Slot","childrenRef","getElementRef","props2","mergeProps","React.Fragment","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","element","getter","_a","mayWarn","_b","variantStyles","sizeStyles","Button","variant","size","className","disabled","externalLoading","asChild","onClick","internalLoading","setInternalLoading","useState","isLoading","handleClick","e","Comp","cn","jsxs","Fragment","badgeVariants","Badge","LogViewer","logs","error","onClear","t","useTranslation","logContainerRef","useRef","autoScroll","setAutoScroll","filter","setFilter","typeFilter","setTypeFilter","sourceFilter","setSourceFilter","useEffect","filteredLogs","log","matchesText","matchesType","matchesSource","formatTimestamp","timestamp","getLogTypeColor","type","getSourceColor","source","prev","s","index","LogsPage","loading","clearLogs","useLogs"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,2 +0,0 @@
1
- import{r as o,j as e}from"./framework-vendor-_YL27Pfc.js";import{e as B,f as T,h as I,i as K,u as L}from"./index-DJUr-vo3.js";import{u as A}from"./i18n-vendor-BMaj5qV8.js";import{C as X}from"./ConfirmDialog-uWBwm8J1.js";import{a as $}from"./StatusDot-LGEKnAGN.js";import{P as R,X as D,g as G,u as H,r as M,a8 as O}from"./icons-vendor-CvmEvkQ-.js";const W=async()=>{const t=await B("/prompts");if(!t.success)throw new Error(t.message||"Failed to fetch built-in prompts");return t.data||[]},_=async t=>{const u=await K("/prompts",t);if(!u.success)throw new Error(u.message||"Failed to create built-in prompt");return u.data},J=async(t,u)=>{const b=await I(`/prompts/${t}`,u);if(!b.success)throw new Error(b.message||"Failed to update built-in prompt");return b.data},Q=async t=>{const u=await T(`/prompts/${t}`);if(!u.success)throw new Error(u.message||"Failed to delete built-in prompt")},U=()=>{const{t}=A(),[u,b]=o.useState([]),[r,f]=o.useState(!0),[p,n]=o.useState(null),[P,N]=o.useState(0),w=o.useCallback(async()=>{try{f(!0);const l=await W();b(l),n(null)}catch(l){console.error("Error fetching built-in prompts:",l),n(l instanceof Error?l.message:t("builtinPrompts.fetchError")),b([])}finally{f(!1)}},[t]),x=o.useCallback(()=>{N(l=>l+1)},[]),y=async l=>{try{const m=await _(l);return x(),{success:!0,data:m}}catch(m){const c=m instanceof Error?m.message:t("builtinPrompts.createError");return n(c),{success:!1,message:c}}},j=async(l,m)=>{try{const c=await J(l,m);return x(),{success:!0,data:c}}catch(c){const v=c instanceof Error?c.message:t("builtinPrompts.updateError");return n(v),{success:!1,message:v}}},g=async l=>{try{return await Q(l),x(),{success:!0}}catch(m){const c=m instanceof Error?m.message:t("builtinPrompts.deleteError");return n(c),{success:!1,message:c}}};return o.useEffect(()=>{w()},[w,P]),{prompts:u,loading:r,error:p,setError:n,triggerRefresh:x,addPrompt:y,editPrompt:j,removePrompt:g}},F=({prompt:t,onSave:u,onCancel:b})=>{const{t:r}=A(),[f,p]=o.useState(null),[n,P]=o.useState(!1),[N,w]=o.useState((t==null?void 0:t.name)||""),[x,y]=o.useState((t==null?void 0:t.title)||""),[j,g]=o.useState((t==null?void 0:t.description)||""),[l,m]=o.useState((t==null?void 0:t.template)||""),[c,v]=o.useState((t==null?void 0:t.enabled)!==!1),[k,C]=o.useState((t==null?void 0:t.arguments)||[]),E=()=>{C([...k,{name:"",description:"",required:!1}])},z=s=>{C(k.filter((i,d)=>d!==s))},S=(s,i,d)=>{C(k.map((h,q)=>q===s?{...h,[i]:d}:h))},a=async s=>{if(s.preventDefault(),p(null),!N.trim()){p(r("builtinPrompts.nameRequired"));return}if(!l.trim()){p(r("builtinPrompts.templateRequired"));return}P(!0);try{const i=await u({name:N.trim(),title:x.trim()||void 0,description:j.trim()||void 0,template:l,arguments:k.length>0?k.filter(d=>d.name.trim()):void 0,enabled:c});i.success||p(i.message||r("builtinPrompts.saveError"))}catch(i){p(i instanceof Error?i.message:r("builtinPrompts.saveError"))}finally{P(!1)}};return e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsx("div",{className:"bg-white dark:bg-gray-800 p-8 rounded-xl shadow-2xl max-w-3xl w-full mx-4 border border-gray-100 dark:border-gray-700 max-h-[90vh] overflow-y-auto",children:e.jsxs("form",{onSubmit:a,children:[e.jsx("h2",{className:"text-xl font-bold text-gray-900 dark:text-gray-100 mb-6",children:r(t?"builtinPrompts.edit":"builtinPrompts.addNew")}),f&&e.jsx("div",{className:"bg-red-50 border-l-4 border-red-500 text-red-700 p-4 mb-6 rounded-md",children:e.jsx("p",{className:"text-sm font-medium",children:f})}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:[r("builtinPrompts.name")," ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"text",value:N,onChange:s=>w(s.target.value),placeholder:r("builtinPrompts.namePlaceholder"),className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 transition-all duration-200",required:!0,disabled:n})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:r("builtinPrompts.title")}),e.jsx("input",{type:"text",value:x,onChange:s=>y(s.target.value),placeholder:r("builtinPrompts.titlePlaceholder"),className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 transition-all duration-200",disabled:n})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:r("builtinPrompts.description")}),e.jsx("input",{type:"text",value:j,onChange:s=>g(s.target.value),placeholder:r("builtinPrompts.descriptionPlaceholder"),className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 transition-all duration-200",disabled:n})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:[r("builtinPrompts.template")," ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("textarea",{value:l,onChange:s=>m(s.target.value),placeholder:r("builtinPrompts.templatePlaceholder"),rows:6,className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 font-mono text-sm transition-all duration-200",required:!0,disabled:n}),e.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:r("builtinPrompts.templateHint")})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:r("builtinPrompts.arguments")}),e.jsxs("button",{type:"button",onClick:E,className:"text-blue-600 hover:text-blue-800 text-sm flex items-center",disabled:n,children:[e.jsx(R,{size:14,className:"mr-1"}),r("builtinPrompts.addArgument")]})]}),k.map((s,i)=>e.jsxs("div",{className:"flex items-start gap-2 mb-2",children:[e.jsx("input",{type:"text",value:s.name,onChange:d=>S(i,"name",d.target.value),placeholder:r("builtinPrompts.argName"),className:"flex-1 px-3 py-1.5 border border-gray-300 dark:border-gray-600 rounded-lg text-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500",disabled:n}),e.jsx("input",{type:"text",value:s.description||"",onChange:d=>S(i,"description",d.target.value),placeholder:r("builtinPrompts.argDescription"),className:"flex-1 px-3 py-1.5 border border-gray-300 dark:border-gray-600 rounded-lg text-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500",disabled:n}),e.jsxs("label",{className:"flex items-center text-sm text-gray-600 dark:text-gray-400 whitespace-nowrap",children:[e.jsx("input",{type:"checkbox",checked:s.required||!1,onChange:d=>S(i,"required",d.target.checked),className:"mr-1",disabled:n}),r("builtinPrompts.argRequired")]}),e.jsx("button",{type:"button",onClick:()=>z(i),className:"text-red-500 hover:text-red-700 p-1",disabled:n,children:e.jsx(D,{size:16})})]},i))]}),e.jsxs("div",{className:"flex items-center pt-2",children:[e.jsx("input",{type:"checkbox",id:"enabled",checked:c,onChange:s=>v(s.target.checked),className:"h-4 w-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500",disabled:n}),e.jsx("label",{htmlFor:"enabled",className:"ml-2 block text-sm text-gray-700 dark:text-gray-300",children:r("builtinPrompts.enabled")})]})]}),e.jsxs("div",{className:"flex justify-end space-x-2 mt-6",children:[e.jsx("button",{type:"button",onClick:b,className:"hub-btn",disabled:n,children:r("common.cancel")}),e.jsx("button",{type:"submit",disabled:n,className:"hub-btn primary",children:r(n?"common.saving":"common.save")})]})]})})})},re=()=>{var S;const{t}=A(),{auth:u}=L(),{prompts:b,loading:r,error:f,setError:p,addPrompt:n,editPrompt:P,removePrompt:N}=U(),[w,x]=o.useState(!1),[y,j]=o.useState(null),[g,l]=o.useState(null),[m,c]=o.useState(new Set),v=(S=u.user)==null?void 0:S.isAdmin,k=a=>{c(s=>{const i=new Set(s);return i.has(a)?i.delete(a):i.add(a),i})},C=async a=>{const s=await n(a);return s.success&&x(!1),s},E=async a=>{if(!y)return{success:!1,message:"No prompt selected"};const s=await P(y.id,a);return s.success&&j(null),s},z=async()=>{g&&(await N(g.id),l(null))};return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-end justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"hub-h1",children:t("pages.prompts.title")}),e.jsxs("p",{className:"hub-sub",children:[e.jsx("span",{className:"hub-num",children:b.length})," ",t("nav.prompts").toLowerCase()]})]}),v&&e.jsxs("button",{onClick:()=>x(!0),className:"hub-btn primary",children:[e.jsx(R,{size:13})," ",t("builtinPrompts.add")]})]}),f&&e.jsxs("div",{className:"hub-card flex items-center justify-between gap-3 mb-4",style:{padding:"10px 14px",borderColor:"oklch(0.85 0.1 25)",background:"oklch(0.97 0.03 25)",color:"oklch(0.4 0.18 25)"},children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(D,{size:14,className:"flex-shrink-0"}),e.jsx("span",{className:"truncate text-[13px]",children:f})]}),e.jsx("button",{className:"hub-icon-btn sm",onClick:()=>p(null),children:e.jsx(D,{size:13})})]}),r?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:t("app.loading")}):b.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"grid place-items-center",style:{width:40,height:40,borderRadius:10,border:"1px solid var(--hub-line)",background:"var(--hub-bg-2)"},children:e.jsx(G,{size:18})}),e.jsx("div",{className:"font-medium",style:{color:"var(--hub-ink-2)",fontSize:13},children:t("builtinPrompts.noPrompts")}),v&&e.jsx("button",{onClick:()=>x(!0),className:"hub-btn ghost sm",style:{color:"var(--hub-accent)"},children:t("builtinPrompts.addFirst")})]})}):e.jsx("div",{className:"hub-card overflow-hidden",children:b.map((a,s)=>{const i=m.has(a.id),d=a.enabled!==!1;return e.jsxs("div",{style:{borderTop:s===0?0:"1px solid var(--hub-line-2)"},children:[e.jsxs("div",{className:"flex items-center justify-between cursor-pointer transition-colors hover:bg-[var(--hub-surface-hover)]",style:{padding:"12px 16px"},onClick:()=>k(a.id),children:[e.jsxs("div",{className:"flex items-center gap-2.5 flex-1 min-w-0",children:[e.jsx(H,{size:12,style:{color:"var(--hub-ink-3)",transform:i?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s",flexShrink:0}}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-medium truncate",style:{fontSize:13.5,color:d?"var(--hub-ink)":"var(--hub-ink-3)"},children:a.title||a.name}),e.jsx("span",{className:"hub-mono",style:{fontSize:11.5,color:"var(--hub-ink-3)"},children:a.name}),e.jsx($,{kind:d?"ok":"muted",label:t(d?"builtinPrompts.active":"builtinPrompts.inactive")})]}),a.description&&e.jsx("div",{className:"truncate mt-0.5",style:{fontSize:12,color:"var(--hub-ink-3)"},children:a.description})]})]}),v&&e.jsxs("div",{className:"flex items-center gap-1 ml-3",children:[e.jsx("button",{onClick:h=>{h.stopPropagation(),j(a)},className:"hub-icon-btn sm",title:t("builtinPrompts.edit"),children:e.jsx(M,{size:13})}),e.jsx("button",{onClick:h=>{h.stopPropagation(),l(a)},className:"hub-icon-btn sm",title:t("builtinPrompts.delete"),style:{color:"var(--hub-err)"},children:e.jsx(O,{size:13})})]})]}),i&&e.jsxs("div",{style:{padding:"12px 16px 14px 38px",background:"var(--hub-bg-2)",borderTop:"1px solid var(--hub-line-2)"},children:[e.jsxs("div",{children:[e.jsx("div",{className:"hub-sect",style:{marginBottom:5},children:t("builtinPrompts.template")}),e.jsx("pre",{className:"hub-mono",style:{fontSize:12,color:"var(--hub-ink-2)",background:"var(--hub-surface)",border:"1px solid var(--hub-line)",borderRadius:7,padding:10,overflowX:"auto",whiteSpace:"pre-wrap",margin:0},children:a.template})]}),a.arguments&&a.arguments.length>0&&e.jsxs("div",{className:"mt-3",children:[e.jsx("div",{className:"hub-sect",style:{marginBottom:5},children:t("builtinPrompts.arguments")}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:a.arguments.map((h,q)=>e.jsxs("div",{className:"flex items-center gap-1.5 text-[12px]",children:[e.jsx("code",{className:"hub-mono hub-tag accent",style:{fontSize:11},children:"{{"+h.name+"}}"}),h.required&&e.jsx("span",{style:{color:"var(--hub-err)",fontSize:11},children:"*"}),h.description&&e.jsxs("span",{style:{color:"var(--hub-ink-3)"},children:["— ",h.description]})]},q))})]})]})]},a.id)})}),w&&e.jsx(F,{onSave:C,onCancel:()=>x(!1)}),y&&e.jsx(F,{prompt:y,onSave:E,onCancel:()=>j(null)}),e.jsx(X,{isOpen:!!g,onClose:()=>l(null),onConfirm:z,title:t("builtinPrompts.confirmDelete"),message:t("builtinPrompts.deleteWarning",{name:(g==null?void 0:g.name)||""}),variant:"danger"})]})};export{re as default};
2
- //# sourceMappingURL=PromptsPage-cPHf4CM9.js.map
@@ -1,2 +0,0 @@
1
- import{r as n,j as e}from"./framework-vendor-_YL27Pfc.js";import{e as D,f as B,h as q,i as A,u as I}from"./index-DJUr-vo3.js";import{u as P}from"./i18n-vendor-BMaj5qV8.js";import{C as K}from"./ConfirmDialog-uWBwm8J1.js";import{a as L}from"./StatusDot-LGEKnAGN.js";import{P as X,X as F,F as $,u as G,r as H,a8 as M}from"./icons-vendor-CvmEvkQ-.js";const O=async()=>{const s=await D("/resources");if(!s.success)throw new Error(s.message||"Failed to fetch built-in resources");return s.data||[]},U=async s=>{const c=await A("/resources",s);if(!c.success)throw new Error(c.message||"Failed to create built-in resource");return c.data},W=async(s,c)=>{const m=await q(`/resources/${s}`,c);if(!m.success)throw new Error(m.message||"Failed to update built-in resource");return m.data},Y=async s=>{const c=await B(`/resources/${s}`);if(!c.success)throw new Error(c.message||"Failed to delete built-in resource")},J=()=>{const{t:s}=P(),[c,m]=n.useState([]),[t,g]=n.useState(!0),[x,i]=n.useState(null),[w,j]=n.useState(0),N=n.useCallback(async()=>{try{g(!0);const a=await O();m(a),i(null)}catch(a){console.error("Error fetching built-in resources:",a),i(a instanceof Error?a.message:s("builtinResources.fetchError")),m([])}finally{g(!1)}},[s]),b=n.useCallback(()=>{j(a=>a+1)},[]),p=async a=>{try{const u=await U(a);return b(),{success:!0,data:u}}catch(u){const l=u instanceof Error?u.message:s("builtinResources.createError");return i(l),{success:!1,message:l}}},f=async(a,u)=>{try{const l=await W(a,u);return b(),{success:!0,data:l}}catch(l){const y=l instanceof Error?l.message:s("builtinResources.updateError");return i(y),{success:!1,message:y}}},d=async a=>{try{return await Y(a),b(),{success:!0}}catch(u){const l=u instanceof Error?u.message:s("builtinResources.deleteError");return i(l),{success:!1,message:l}}};return n.useEffect(()=>{N()},[N,w]),{resources:c,loading:t,error:x,setError:i,triggerRefresh:b,addResource:p,editResource:f,removeResource:d}},T=({resource:s,onSave:c,onCancel:m})=>{const{t}=P(),[g,x]=n.useState(null),[i,w]=n.useState(!1),[j,N]=n.useState((s==null?void 0:s.uri)||""),[b,p]=n.useState((s==null?void 0:s.name)||""),[f,d]=n.useState((s==null?void 0:s.description)||""),[a,u]=n.useState((s==null?void 0:s.mimeType)||"text/plain"),[l,y]=n.useState((s==null?void 0:s.content)||""),[R,S]=n.useState((s==null?void 0:s.enabled)!==!1),E=async o=>{if(o.preventDefault(),x(null),!j.trim()){x(t("builtinResources.uriRequired"));return}if(!l.trim()){x(t("builtinResources.contentRequired"));return}w(!0);try{const v=await c({uri:j.trim(),name:b.trim()||void 0,description:f.trim()||void 0,mimeType:a.trim()||"text/plain",content:l,enabled:R});v.success||x(v.message||t("builtinResources.saveError"))}catch(v){x(v instanceof Error?v.message:t("builtinResources.saveError"))}finally{w(!1)}};return e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsx("div",{className:"bg-white dark:bg-gray-800 p-8 rounded-xl shadow-2xl max-w-3xl w-full mx-4 border border-gray-100 dark:border-gray-700 max-h-[90vh] overflow-y-auto",children:e.jsxs("form",{onSubmit:E,children:[e.jsx("h2",{className:"text-xl font-bold text-gray-900 dark:text-gray-100 mb-6",children:t(s?"builtinResources.edit":"builtinResources.addNew")}),g&&e.jsx("div",{className:"bg-red-50 border-l-4 border-red-500 text-red-700 p-4 mb-6 rounded-md",children:e.jsx("p",{className:"text-sm font-medium",children:g})}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:[t("builtinResources.uri")," ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"text",value:j,onChange:o=>N(o.target.value),placeholder:t("builtinResources.uriPlaceholder"),className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 font-mono text-sm transition-all duration-200",required:!0,disabled:i})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:t("builtinResources.name")}),e.jsx("input",{type:"text",value:b,onChange:o=>p(o.target.value),placeholder:t("builtinResources.namePlaceholder"),className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 transition-all duration-200",disabled:i})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:t("builtinResources.description")}),e.jsx("input",{type:"text",value:f,onChange:o=>d(o.target.value),placeholder:t("builtinResources.descriptionPlaceholder"),className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 transition-all duration-200",disabled:i})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:t("builtinResources.mimeType")}),e.jsx("input",{type:"text",value:a,onChange:o=>u(o.target.value),placeholder:"text/plain",className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 transition-all duration-200",disabled:i})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:[t("builtinResources.content")," ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("textarea",{value:l,onChange:o=>y(o.target.value),placeholder:t("builtinResources.contentPlaceholder"),rows:8,className:"w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 font-mono text-sm transition-all duration-200",required:!0,disabled:i})]}),e.jsxs("div",{className:"flex items-center pt-2",children:[e.jsx("input",{type:"checkbox",id:"enabled",checked:R,onChange:o=>S(o.target.checked),className:"h-4 w-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500",disabled:i}),e.jsx("label",{htmlFor:"enabled",className:"ml-2 block text-sm text-gray-700 dark:text-gray-300",children:t("builtinResources.enabled")})]})]}),e.jsxs("div",{className:"flex justify-end space-x-2 mt-6",children:[e.jsx("button",{type:"button",onClick:m,className:"hub-btn",disabled:i,children:t("common.cancel")}),e.jsx("button",{type:"submit",disabled:i,className:"hub-btn primary",children:t(i?"common.saving":"common.save")})]})]})})})},te=()=>{var v;const{t:s}=P(),{auth:c}=I(),{resources:m,loading:t,error:g,setError:x,addResource:i,editResource:w,removeResource:j}=J(),[N,b]=n.useState(!1),[p,f]=n.useState(null),[d,a]=n.useState(null),[u,l]=n.useState(new Set),y=(v=c.user)==null?void 0:v.isAdmin,R=r=>{l(h=>{const k=new Set(h);return k.has(r)?k.delete(r):k.add(r),k})},S=async r=>{const h=await i(r);return h.success&&b(!1),h},E=async r=>{if(!p)return{success:!1,message:"No resource selected"};const h=await w(p.id,r);return h.success&&f(null),h},o=async()=>{d&&(await j(d.id),a(null))};return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-end justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"hub-h1",children:s("pages.resources.title")}),e.jsxs("p",{className:"hub-sub",children:[e.jsx("span",{className:"hub-num",children:m.length})," ",s("nav.resources").toLowerCase()]})]}),y&&e.jsxs("button",{onClick:()=>b(!0),className:"hub-btn primary",children:[e.jsx(X,{size:13})," ",s("builtinResources.add")]})]}),g&&e.jsxs("div",{className:"hub-card flex items-center justify-between gap-3 mb-4",style:{padding:"10px 14px",borderColor:"oklch(0.85 0.1 25)",background:"oklch(0.97 0.03 25)",color:"oklch(0.4 0.18 25)"},children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(F,{size:14,className:"flex-shrink-0"}),e.jsx("span",{className:"truncate text-[13px]",children:g})]}),e.jsx("button",{className:"hub-icon-btn sm",onClick:()=>x(null),children:e.jsx(F,{size:13})})]}),t?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:s("app.loading")}):m.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"grid place-items-center",style:{width:40,height:40,borderRadius:10,border:"1px solid var(--hub-line)",background:"var(--hub-bg-2)"},children:e.jsx($,{size:18})}),e.jsx("div",{className:"font-medium",style:{color:"var(--hub-ink-2)",fontSize:13},children:s("builtinResources.noResources")}),y&&e.jsx("button",{onClick:()=>b(!0),className:"hub-btn ghost sm",style:{color:"var(--hub-accent)"},children:s("builtinResources.addFirst")})]})}):e.jsx("div",{className:"hub-card overflow-hidden",children:m.map((r,h)=>{const k=u.has(r.id),C=r.enabled!==!1;return e.jsxs("div",{style:{borderTop:h===0?0:"1px solid var(--hub-line-2)"},children:[e.jsxs("div",{className:"flex items-center justify-between cursor-pointer transition-colors hover:bg-[var(--hub-surface-hover)]",style:{padding:"12px 16px"},onClick:()=>R(r.id),children:[e.jsxs("div",{className:"flex items-center gap-2.5 flex-1 min-w-0",children:[e.jsx(G,{size:12,style:{color:"var(--hub-ink-3)",transform:k?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s",flexShrink:0}}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-medium truncate",style:{fontSize:13.5,color:C?"var(--hub-ink)":"var(--hub-ink-3)"},children:r.name||r.uri}),r.name&&e.jsx("span",{className:"hub-mono truncate",style:{fontSize:11.5,color:"var(--hub-ink-3)"},children:r.uri}),e.jsx(L,{kind:C?"ok":"muted",label:s(C?"builtinResources.active":"builtinResources.inactive")}),r.mimeType&&e.jsx("span",{className:"hub-tag accent",style:{fontSize:10},children:r.mimeType})]}),r.description&&e.jsx("div",{className:"truncate mt-0.5",style:{fontSize:12,color:"var(--hub-ink-3)"},children:r.description})]})]}),y&&e.jsxs("div",{className:"flex items-center gap-1 ml-3",children:[e.jsx("button",{onClick:z=>{z.stopPropagation(),f(r)},className:"hub-icon-btn sm",title:s("builtinResources.edit"),children:e.jsx(H,{size:13})}),e.jsx("button",{onClick:z=>{z.stopPropagation(),a(r)},className:"hub-icon-btn sm",title:s("builtinResources.delete"),style:{color:"var(--hub-err)"},children:e.jsx(M,{size:13})})]})]}),k&&e.jsxs("div",{style:{padding:"12px 16px 14px 38px",background:"var(--hub-bg-2)",borderTop:"1px solid var(--hub-line-2)"},children:[e.jsx("div",{className:"hub-sect",style:{marginBottom:5},children:s("builtinResources.content")}),e.jsx("pre",{className:"hub-mono",style:{fontSize:12,color:"var(--hub-ink-2)",background:"var(--hub-surface)",border:"1px solid var(--hub-line)",borderRadius:7,padding:10,overflowX:"auto",overflowY:"auto",whiteSpace:"pre-wrap",maxHeight:260,margin:0},children:r.content})]})]},r.id)})}),N&&e.jsx(T,{onSave:S,onCancel:()=>b(!1)}),p&&e.jsx(T,{resource:p,onSave:E,onCancel:()=>f(null)}),e.jsx(K,{isOpen:!!d,onClose:()=>a(null),onConfirm:o,title:s("builtinResources.confirmDelete"),message:s("builtinResources.deleteWarning",{name:(d==null?void 0:d.name)||(d==null?void 0:d.uri)||""}),variant:"danger"})]})};export{te as default};
2
- //# sourceMappingURL=ResourcesPage-DcXEwXg9.js.map
@@ -1,337 +0,0 @@
1
- import{r as n}from"./framework-vendor-_YL27Pfc.js";/**
2
- * @license lucide-react v0.552.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,o,c)=>c?c.toUpperCase():o.toLowerCase()),y=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,o,c)=>!!a&&a.trim()!==""&&c.indexOf(a)===o).join(" ").trim(),v=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};/**
7
- * @license lucide-react v0.552.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */var m={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
12
- * @license lucide-react v0.552.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const x=n.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:c,className:h="",children:s,iconNode:r,...d},i)=>n.createElement("svg",{ref:i,...m,width:a,height:a,stroke:t,strokeWidth:c?Number(o)*24/Number(a):o,className:k("lucide",h),...!s&&!v(d)&&{"aria-hidden":"true"},...d},[...r.map(([p,l])=>n.createElement(p,l)),...Array.isArray(s)?s:[s]]));/**
17
- * @license lucide-react v0.552.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const e=(t,a)=>{const o=n.forwardRef(({className:c,...h},s)=>n.createElement(x,{ref:s,iconNode:a,className:k(`lucide-${_(y(t))}`,`lucide-${t}`,c),...h}));return o.displayName=y(t),o};/**
22
- * @license lucide-react v0.552.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */const u=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],q1=e("activity",u);/**
27
- * @license lucide-react v0.552.0 - ISC
28
- *
29
- * This source code is licensed under the ISC license.
30
- * See the LICENSE file in the root directory of this source tree.
31
- */const g=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],A1=e("arrow-up-right",g);/**
32
- * @license lucide-react v0.552.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */const w=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],V1=e("book-open",w);/**
37
- * @license lucide-react v0.552.0 - ISC
38
- *
39
- * This source code is licensed under the ISC license.
40
- * See the LICENSE file in the root directory of this source tree.
41
- */const $=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],H1=e("check",$);/**
42
- * @license lucide-react v0.552.0 - ISC
43
- *
44
- * This source code is licensed under the ISC license.
45
- * See the LICENSE file in the root directory of this source tree.
46
- */const N=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],L1=e("chevron-down",N);/**
47
- * @license lucide-react v0.552.0 - ISC
48
- *
49
- * This source code is licensed under the ISC license.
50
- * See the LICENSE file in the root directory of this source tree.
51
- */const f=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],S1=e("chevron-right",f);/**
52
- * @license lucide-react v0.552.0 - ISC
53
- *
54
- * This source code is licensed under the ISC license.
55
- * See the LICENSE file in the root directory of this source tree.
56
- */const z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],P1=e("circle-alert",z);/**
57
- * @license lucide-react v0.552.0 - ISC
58
- *
59
- * This source code is licensed under the ISC license.
60
- * See the LICENSE file in the root directory of this source tree.
61
- */const j=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],R1=e("circle-check-big",j);/**
62
- * @license lucide-react v0.552.0 - ISC
63
- *
64
- * This source code is licensed under the ISC license.
65
- * See the LICENSE file in the root directory of this source tree.
66
- */const b=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],E1=e("circle-check",b);/**
67
- * @license lucide-react v0.552.0 - ISC
68
- *
69
- * This source code is licensed under the ISC license.
70
- * See the LICENSE file in the root directory of this source tree.
71
- */const C=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],U1=e("circle-x",C);/**
72
- * @license lucide-react v0.552.0 - ISC
73
- *
74
- * This source code is licensed under the ISC license.
75
- * See the LICENSE file in the root directory of this source tree.
76
- */const q=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],D1=e("clock",q);/**
77
- * @license lucide-react v0.552.0 - ISC
78
- *
79
- * This source code is licensed under the ISC license.
80
- * See the LICENSE file in the root directory of this source tree.
81
- */const A=[["path",{d:"M12 13v8l-4-4",key:"1f5nwf"}],["path",{d:"m12 21 4-4",key:"1lfcce"}],["path",{d:"M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284",key:"ui1hmy"}]],T1=e("cloud-download",A);/**
82
- * @license lucide-react v0.552.0 - ISC
83
- *
84
- * This source code is licensed under the ISC license.
85
- * See the LICENSE file in the root directory of this source tree.
86
- */const V=[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]],B1=e("cloud",V);/**
87
- * @license lucide-react v0.552.0 - ISC
88
- *
89
- * This source code is licensed under the ISC license.
90
- * See the LICENSE file in the root directory of this source tree.
91
- */const H=[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]],Z1=e("code",H);/**
92
- * @license lucide-react v0.552.0 - ISC
93
- *
94
- * This source code is licensed under the ISC license.
95
- * See the LICENSE file in the root directory of this source tree.
96
- */const L=[["line",{x1:"15",x2:"15",y1:"12",y2:"18",key:"1p7wdc"}],["line",{x1:"12",x2:"18",y1:"15",y2:"15",key:"1nscbv"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],F1=e("copy-plus",L);/**
97
- * @license lucide-react v0.552.0 - ISC
98
- *
99
- * This source code is licensed under the ISC license.
100
- * See the LICENSE file in the root directory of this source tree.
101
- */const S=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],I1=e("copy",S);/**
102
- * @license lucide-react v0.552.0 - ISC
103
- *
104
- * This source code is licensed under the ISC license.
105
- * See the LICENSE file in the root directory of this source tree.
106
- */const P=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],K1=e("database",P);/**
107
- * @license lucide-react v0.552.0 - ISC
108
- *
109
- * This source code is licensed under the ISC license.
110
- * See the LICENSE file in the root directory of this source tree.
111
- */const R=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],O1=e("download",R);/**
112
- * @license lucide-react v0.552.0 - ISC
113
- *
114
- * This source code is licensed under the ISC license.
115
- * See the LICENSE file in the root directory of this source tree.
116
- */const E=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],W1=e("ellipsis",E);/**
117
- * @license lucide-react v0.552.0 - ISC
118
- *
119
- * This source code is licensed under the ISC license.
120
- * See the LICENSE file in the root directory of this source tree.
121
- */const U=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],G1=e("external-link",U);/**
122
- * @license lucide-react v0.552.0 - ISC
123
- *
124
- * This source code is licensed under the ISC license.
125
- * See the LICENSE file in the root directory of this source tree.
126
- */const D=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]],X1=e("file-code",D);/**
127
- * @license lucide-react v0.552.0 - ISC
128
- *
129
- * This source code is licensed under the ISC license.
130
- * See the LICENSE file in the root directory of this source tree.
131
- */const T=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]],J1=e("file-down",T);/**
132
- * @license lucide-react v0.552.0 - ISC
133
- *
134
- * This source code is licensed under the ISC license.
135
- * See the LICENSE file in the root directory of this source tree.
136
- */const B=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],Q1=e("file-text",B);/**
137
- * @license lucide-react v0.552.0 - ISC
138
- *
139
- * This source code is licensed under the ISC license.
140
- * See the LICENSE file in the root directory of this source tree.
141
- */const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],Y1=e("globe",Z);/**
142
- * @license lucide-react v0.552.0 - ISC
143
- *
144
- * This source code is licensed under the ISC license.
145
- * See the LICENSE file in the root directory of this source tree.
146
- */const F=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],e0=e("info",F);/**
147
- * @license lucide-react v0.552.0 - ISC
148
- *
149
- * This source code is licensed under the ISC license.
150
- * See the LICENSE file in the root directory of this source tree.
151
- */const I=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],a0=e("key-round",I);/**
152
- * @license lucide-react v0.552.0 - ISC
153
- *
154
- * This source code is licensed under the ISC license.
155
- * See the LICENSE file in the root directory of this source tree.
156
- */const K=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],t0=e("key",K);/**
157
- * @license lucide-react v0.552.0 - ISC
158
- *
159
- * This source code is licensed under the ISC license.
160
- * See the LICENSE file in the root directory of this source tree.
161
- */const O=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],o0=e("layers",O);/**
162
- * @license lucide-react v0.552.0 - ISC
163
- *
164
- * This source code is licensed under the ISC license.
165
- * See the LICENSE file in the root directory of this source tree.
166
- */const W=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],c0=e("layout-grid",W);/**
167
- * @license lucide-react v0.552.0 - ISC
168
- *
169
- * This source code is licensed under the ISC license.
170
- * See the LICENSE file in the root directory of this source tree.
171
- */const G=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]],s0=e("link",G);/**
172
- * @license lucide-react v0.552.0 - ISC
173
- *
174
- * This source code is licensed under the ISC license.
175
- * See the LICENSE file in the root directory of this source tree.
176
- */const X=[["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m16.2 7.8 2.9-2.9",key:"r700ao"}],["path",{d:"M18 12h4",key:"wj9ykh"}],["path",{d:"m16.2 16.2 2.9 2.9",key:"1bxg5t"}],["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"m4.9 19.1 2.9-2.9",key:"bwix9q"}],["path",{d:"M2 12h4",key:"j09sii"}],["path",{d:"m4.9 4.9 2.9 2.9",key:"giyufr"}]],n0=e("loader",X);/**
177
- * @license lucide-react v0.552.0 - ISC
178
- *
179
- * This source code is licensed under the ISC license.
180
- * See the LICENSE file in the root directory of this source tree.
181
- */const J=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],h0=e("lock",J);/**
182
- * @license lucide-react v0.552.0 - ISC
183
- *
184
- * This source code is licensed under the ISC license.
185
- * See the LICENSE file in the root directory of this source tree.
186
- */const Q=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],d0=e("log-out",Q);/**
187
- * @license lucide-react v0.552.0 - ISC
188
- *
189
- * This source code is licensed under the ISC license.
190
- * See the LICENSE file in the root directory of this source tree.
191
- */const Y=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],y0=e("menu",Y);/**
192
- * @license lucide-react v0.552.0 - ISC
193
- *
194
- * This source code is licensed under the ISC license.
195
- * See the LICENSE file in the root directory of this source tree.
196
- */const e1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],k0=e("message-square",e1);/**
197
- * @license lucide-react v0.552.0 - ISC
198
- *
199
- * This source code is licensed under the ISC license.
200
- * See the LICENSE file in the root directory of this source tree.
201
- */const a1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],r0=e("moon",a1);/**
202
- * @license lucide-react v0.552.0 - ISC
203
- *
204
- * This source code is licensed under the ISC license.
205
- * See the LICENSE file in the root directory of this source tree.
206
- */const t1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],i0=e("package",t1);/**
207
- * @license lucide-react v0.552.0 - ISC
208
- *
209
- * This source code is licensed under the ISC license.
210
- * See the LICENSE file in the root directory of this source tree.
211
- */const o1=[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],p0=e("pen-line",o1);/**
212
- * @license lucide-react v0.552.0 - ISC
213
- *
214
- * This source code is licensed under the ISC license.
215
- * See the LICENSE file in the root directory of this source tree.
216
- */const c1=[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]],l0=e("pin",c1);/**
217
- * @license lucide-react v0.552.0 - ISC
218
- *
219
- * This source code is licensed under the ISC license.
220
- * See the LICENSE file in the root directory of this source tree.
221
- */const s1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],_0=e("play",s1);/**
222
- * @license lucide-react v0.552.0 - ISC
223
- *
224
- * This source code is licensed under the ISC license.
225
- * See the LICENSE file in the root directory of this source tree.
226
- */const n1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],M0=e("plus",n1);/**
227
- * @license lucide-react v0.552.0 - ISC
228
- *
229
- * This source code is licensed under the ISC license.
230
- * See the LICENSE file in the root directory of this source tree.
231
- */const h1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],v0=e("refresh-cw",h1);/**
232
- * @license lucide-react v0.552.0 - ISC
233
- *
234
- * This source code is licensed under the ISC license.
235
- * See the LICENSE file in the root directory of this source tree.
236
- */const d1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],m0=e("rotate-ccw",d1);/**
237
- * @license lucide-react v0.552.0 - ISC
238
- *
239
- * This source code is licensed under the ISC license.
240
- * See the LICENSE file in the root directory of this source tree.
241
- */const y1=[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],x0=e("route",y1);/**
242
- * @license lucide-react v0.552.0 - ISC
243
- *
244
- * This source code is licensed under the ISC license.
245
- * See the LICENSE file in the root directory of this source tree.
246
- */const k1=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],u0=e("scroll-text",k1);/**
247
- * @license lucide-react v0.552.0 - ISC
248
- *
249
- * This source code is licensed under the ISC license.
250
- * See the LICENSE file in the root directory of this source tree.
251
- */const r1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],g0=e("search",r1);/**
252
- * @license lucide-react v0.552.0 - ISC
253
- *
254
- * This source code is licensed under the ISC license.
255
- * See the LICENSE file in the root directory of this source tree.
256
- */const i1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],w0=e("server",i1);/**
257
- * @license lucide-react v0.552.0 - ISC
258
- *
259
- * This source code is licensed under the ISC license.
260
- * See the LICENSE file in the root directory of this source tree.
261
- */const p1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],$0=e("settings",p1);/**
262
- * @license lucide-react v0.552.0 - ISC
263
- *
264
- * This source code is licensed under the ISC license.
265
- * See the LICENSE file in the root directory of this source tree.
266
- */const l1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],N0=e("shield-check",l1);/**
267
- * @license lucide-react v0.552.0 - ISC
268
- *
269
- * This source code is licensed under the ISC license.
270
- * See the LICENSE file in the root directory of this source tree.
271
- */const _1=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],f0=e("sliders-horizontal",_1);/**
272
- * @license lucide-react v0.552.0 - ISC
273
- *
274
- * This source code is licensed under the ISC license.
275
- * See the LICENSE file in the root directory of this source tree.
276
- */const M1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],z0=e("sparkles",M1);/**
277
- * @license lucide-react v0.552.0 - ISC
278
- *
279
- * This source code is licensed under the ISC license.
280
- * See the LICENSE file in the root directory of this source tree.
281
- */const v1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],j0=e("square-pen",v1);/**
282
- * @license lucide-react v0.552.0 - ISC
283
- *
284
- * This source code is licensed under the ISC license.
285
- * See the LICENSE file in the root directory of this source tree.
286
- */const m1=[["path",{d:"M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5",key:"slp6dd"}],["path",{d:"M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244",key:"o0xfot"}],["path",{d:"M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05",key:"wn3emo"}]],b0=e("store",m1);/**
287
- * @license lucide-react v0.552.0 - ISC
288
- *
289
- * This source code is licensed under the ISC license.
290
- * See the LICENSE file in the root directory of this source tree.
291
- */const x1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],C0=e("sun",x1);/**
292
- * @license lucide-react v0.552.0 - ISC
293
- *
294
- * This source code is licensed under the ISC license.
295
- * See the LICENSE file in the root directory of this source tree.
296
- */const u1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],q0=e("trash-2",u1);/**
297
- * @license lucide-react v0.552.0 - ISC
298
- *
299
- * This source code is licensed under the ISC license.
300
- * See the LICENSE file in the root directory of this source tree.
301
- */const g1=[["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],A0=e("trash",g1);/**
302
- * @license lucide-react v0.552.0 - ISC
303
- *
304
- * This source code is licensed under the ISC license.
305
- * See the LICENSE file in the root directory of this source tree.
306
- */const w1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],V0=e("triangle-alert",w1);/**
307
- * @license lucide-react v0.552.0 - ISC
308
- *
309
- * This source code is licensed under the ISC license.
310
- * See the LICENSE file in the root directory of this source tree.
311
- */const $1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],H0=e("upload",$1);/**
312
- * @license lucide-react v0.552.0 - ISC
313
- *
314
- * This source code is licensed under the ISC license.
315
- * See the LICENSE file in the root directory of this source tree.
316
- */const N1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],L0=e("user",N1);/**
317
- * @license lucide-react v0.552.0 - ISC
318
- *
319
- * This source code is licensed under the ISC license.
320
- * See the LICENSE file in the root directory of this source tree.
321
- */const f1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],S0=e("users",f1);/**
322
- * @license lucide-react v0.552.0 - ISC
323
- *
324
- * This source code is licensed under the ISC license.
325
- * See the LICENSE file in the root directory of this source tree.
326
- */const z1=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],P0=e("wrench",z1);/**
327
- * @license lucide-react v0.552.0 - ISC
328
- *
329
- * This source code is licensed under the ISC license.
330
- * See the LICENSE file in the root directory of this source tree.
331
- */const j1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],R0=e("x",j1);/**
332
- * @license lucide-react v0.552.0 - ISC
333
- *
334
- * This source code is licensed under the ISC license.
335
- * See the LICENSE file in the root directory of this source tree.
336
- */const b1=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],E0=e("zap",b1);export{E0 as $,A1 as A,V1 as B,H1 as C,H0 as D,G1 as E,Q1 as F,g0 as G,l0 as H,e0 as I,s0 as J,a0 as K,d0 as L,r0 as M,O1 as N,o0 as O,M0 as P,V0 as Q,v0 as R,C0 as S,q0 as T,L0 as U,K1 as V,P0 as W,R0 as X,D1 as Y,t0 as Z,Z1 as _,y0 as a,z0 as a0,h0 as a1,B1 as a2,f0 as a3,N0 as a4,i0 as a5,J1 as a6,Y1 as a7,A0 as a8,E1 as b,$0 as c,c0 as d,w0 as e,x0 as f,k0 as g,b0 as h,S0 as i,q1 as j,u0 as k,P1 as l,S1 as m,R1 as n,U1 as o,m0 as p,I1 as q,j0 as r,n0 as s,_0 as t,L1 as u,W1 as v,p0 as w,F1 as x,T1 as y,X1 as z};
337
- //# sourceMappingURL=icons-vendor-CvmEvkQ-.js.map