nextclaw 0.8.40 → 0.8.42
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/cli/index.js +1 -1
- package/package.json +4 -4
- package/templates/USAGE.md +17 -5
- package/ui-dist/assets/ChannelsList-DKiedAFa.js +1 -0
- package/ui-dist/assets/{ChatPage-CjzR-76f.js → ChatPage-BwNLpkSy.js} +16 -16
- package/ui-dist/assets/{CronConfig-DREWLzKD.js → CronConfig-DS4SLvdJ.js} +1 -1
- package/ui-dist/assets/{DocBrowser-fXdmzwRi.js → DocBrowser-GX0i3zMz.js} +1 -1
- package/ui-dist/assets/{MarketplacePage-zKC-b_O_.js → MarketplacePage-Cfary3pL.js} +1 -1
- package/ui-dist/assets/{ModelConfig-BdogzFBq.js → ModelConfig-DqA1Fpq1.js} +1 -1
- package/ui-dist/assets/ProvidersList-Bp8j2dHz.js +1 -0
- package/ui-dist/assets/{RuntimeConfig-CGsoLtsV.js → RuntimeConfig-BPFqqOmo.js} +1 -1
- package/ui-dist/assets/{SecretsConfig-B8ZDpRgB.js → SecretsConfig-817qoOc8.js} +1 -1
- package/ui-dist/assets/{SessionsConfig-CcpfGazP.js → SessionsConfig-DSz76nPB.js} +1 -1
- package/ui-dist/assets/{card-Bt8T3JA3.js → card-DsXZnE66.js} +1 -1
- package/ui-dist/assets/{dialog-BNi5ymWD.js → dialog-CM-OB-VU.js} +2 -2
- package/ui-dist/assets/index-BDnLuH5V.js +2 -0
- package/ui-dist/assets/index-yypHrk9r.css +1 -0
- package/ui-dist/assets/{label-BDCnjFl3.js → label-BryQW6Hh.js} +1 -1
- package/ui-dist/assets/logos-DpQfWN7T.js +1 -0
- package/ui-dist/assets/{page-layout-DWVnm0X8.js → page-layout-CljvdClt.js} +1 -1
- package/ui-dist/assets/{switch-CrmdAOBw.js → switch-DK9xeFoj.js} +1 -1
- package/ui-dist/assets/{tabs-custom-WJxQwDQy.js → tabs-custom-BWSgRC2i.js} +1 -1
- package/ui-dist/assets/useConfig-Cr9T194r.js +6 -0
- package/ui-dist/assets/{useConfirmDialog-C5hEiEeb.js → useConfirmDialog-CeUaLKWy.js} +1 -1
- package/ui-dist/assets/{vendor-H2M3a_4Z.js → vendor-CrNxGKd2.js} +77 -72
- package/ui-dist/index.html +3 -3
- package/ui-dist/assets/ChannelsList-DgkIu7_t.js +0 -1
- package/ui-dist/assets/ProvidersList-BLScOe9j.js +0 -1
- package/ui-dist/assets/action-link-RjYHzlQk.js +0 -1
- package/ui-dist/assets/index-B_OeEGic.css +0 -1
- package/ui-dist/assets/index-CtNWUrVR.js +0 -2
- package/ui-dist/assets/useConfig-COoN7EVf.js +0 -6
package/dist/cli/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nextclaw",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.42",
|
|
4
4
|
"description": "Lightweight personal AI assistant with CLI, multi-provider routing, and channel integrations.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"chokidar": "^3.6.0",
|
|
40
40
|
"commander": "^12.1.0",
|
|
41
|
-
"@nextclaw/core": "^0.6.
|
|
42
|
-
"@nextclaw/server": "^0.5.
|
|
43
|
-
"@nextclaw/openclaw-compat": "^0.1.
|
|
41
|
+
"@nextclaw/core": "^0.6.38",
|
|
42
|
+
"@nextclaw/server": "^0.5.21",
|
|
43
|
+
"@nextclaw/openclaw-compat": "^0.1.29"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^20.17.6",
|
package/templates/USAGE.md
CHANGED
|
@@ -37,27 +37,39 @@ When NextClaw AI needs to operate the product itself (status/doctor/channels/con
|
|
|
37
37
|
|
|
38
38
|
## Quick Start
|
|
39
39
|
|
|
40
|
-
1. Install:
|
|
40
|
+
1. Install (desktop installer beta, no Node needed):
|
|
41
|
+
|
|
42
|
+
- Download from <https://github.com/Peiiii/nextclaw/releases/latest>
|
|
43
|
+
- macOS:
|
|
44
|
+
- `NextClaw-<version>-beta-macos-arm64-installer.pkg` (Apple Silicon)
|
|
45
|
+
- `NextClaw-<version>-beta-macos-x64-installer.pkg` (Intel)
|
|
46
|
+
- Windows:
|
|
47
|
+
- `NextClaw-<version>-beta-windows-x64-installer.exe`
|
|
48
|
+
- `NextClaw-<version>-beta-windows-arm64-installer.exe`
|
|
49
|
+
- Open **Start NextClaw** from Desktop/Start Menu.
|
|
50
|
+
- Beta notice: desktop installers are still beta and may have issues.
|
|
51
|
+
|
|
52
|
+
2. Or install with npm:
|
|
41
53
|
|
|
42
54
|
```bash
|
|
43
55
|
npm i -g nextclaw
|
|
44
56
|
```
|
|
45
57
|
|
|
46
|
-
|
|
58
|
+
3. Start the service (gateway + config UI in the background):
|
|
47
59
|
|
|
48
60
|
```bash
|
|
49
61
|
nextclaw start
|
|
50
62
|
```
|
|
51
63
|
|
|
52
|
-
|
|
64
|
+
4. Open **http://127.0.0.1:18791** in your browser. Set a provider (e.g. OpenRouter) and model in the UI.
|
|
53
65
|
|
|
54
|
-
|
|
66
|
+
5. Optionally run `nextclaw init` to create a workspace with agent templates, or chat from the CLI:
|
|
55
67
|
|
|
56
68
|
```bash
|
|
57
69
|
nextclaw agent -m "Hello!"
|
|
58
70
|
```
|
|
59
71
|
|
|
60
|
-
|
|
72
|
+
6. Stop the service when done:
|
|
61
73
|
|
|
62
74
|
```bash
|
|
63
75
|
nextclaw stop
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as k,j as a,ad as ae,M as I,ae as A,af as S,K as te,a0 as ne,ab as le,ag as se,ah as oe,ai as re,n as K,aj as ce,ak as ie,al as me}from"./vendor-CrNxGKd2.js";import{u as _,a as q,h as pe,i as de,I as F,f as ue}from"./useConfig-Cr9T194r.js";import{t as e,c as j,u as G,S as be,b as xe,d as ge,e as ye,g as he}from"./index-BDnLuH5V.js";import{D as fe,a as we,b as je,c as ve,d as ke,e as Ce}from"./dialog-CM-OB-VU.js";import{B as T,P as Ne,a as Pe}from"./page-layout-CljvdClt.js";import{L as Se}from"./label-BryQW6Hh.js";import{S as Ie}from"./switch-DK9xeFoj.js";import{h as M}from"./config-hints-CApS3K_7.js";import{T as De}from"./tabs-custom-BWSgRC2i.js";import{L as Fe,a as Te,S as Me}from"./logos-DpQfWN7T.js";function Ae({value:n,onChange:l,className:r,placeholder:p=""}){const[m,g]=k.useState(""),u=b=>{b.key==="Enter"&&m.trim()?(b.preventDefault(),l([...n,m.trim()]),g("")):b.key==="Backspace"&&!m&&n.length>0&&l(n.slice(0,-1))},f=b=>{l(n.filter((i,x)=>x!==b))};return a.jsxs("div",{className:j("flex flex-wrap gap-2 p-2 border rounded-md min-h-[42px]",r),children:[n.map((b,i)=>a.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-1 bg-primary text-primary-foreground rounded text-sm",children:[b,a.jsx("button",{type:"button",onClick:()=>f(i),className:"hover:text-red-300 transition-colors",children:a.jsx(ae,{className:"h-3 w-3"})})]},i)),a.jsx("input",{type:"text",value:m,onChange:b=>g(b.target.value),onKeyDown:u,className:"flex-1 outline-none min-w-[100px] bg-transparent text-sm",placeholder:p||e("enterTag")})]})}const E=[{value:"pairing",label:"pairing"},{value:"allowlist",label:"allowlist"},{value:"open",label:"open"},{value:"disabled",label:"disabled"}],B=[{value:"open",label:"open"},{value:"allowlist",label:"allowlist"},{value:"disabled",label:"disabled"}],Le=[{value:"off",label:"off"},{value:"partial",label:"partial"},{value:"block",label:"block"},{value:"progress",label:"progress"}],Ue=n=>n.includes("token")||n.includes("secret")||n.includes("password")?a.jsx(te,{className:"h-3.5 w-3.5 text-gray-500"}):n.includes("url")||n.includes("host")?a.jsx(ne,{className:"h-3.5 w-3.5 text-gray-500"}):n.includes("email")||n.includes("mail")?a.jsx(A,{className:"h-3.5 w-3.5 text-gray-500"}):n.includes("id")||n.includes("from")?a.jsx(le,{className:"h-3.5 w-3.5 text-gray-500"}):n==="enabled"||n==="consentGranted"?a.jsx(se,{className:"h-3.5 w-3.5 text-gray-500"}):a.jsx(oe,{className:"h-3.5 w-3.5 text-gray-500"});function O(){return{telegram:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"token",type:"password",label:e("botToken")},{name:"allowFrom",type:"tags",label:e("allowFrom")},{name:"proxy",type:"text",label:e("proxy")},{name:"accountId",type:"text",label:e("accountId")},{name:"dmPolicy",type:"select",label:e("dmPolicy"),options:E},{name:"groupPolicy",type:"select",label:e("groupPolicy"),options:B},{name:"groupAllowFrom",type:"tags",label:e("groupAllowFrom")},{name:"requireMention",type:"boolean",label:e("requireMention")},{name:"mentionPatterns",type:"tags",label:e("mentionPatterns")},{name:"groups",type:"json",label:e("groupRulesJson")}],discord:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"token",type:"password",label:e("botToken")},{name:"allowBots",type:"boolean",label:e("allowBotMessages")},{name:"allowFrom",type:"tags",label:e("allowFrom")},{name:"gatewayUrl",type:"text",label:e("gatewayUrl")},{name:"intents",type:"number",label:e("intents")},{name:"proxy",type:"text",label:e("proxy")},{name:"mediaMaxMb",type:"number",label:e("attachmentMaxSizeMb")},{name:"streaming",type:"select",label:e("streamingMode"),options:Le},{name:"draftChunk",type:"json",label:e("draftChunkingJson")},{name:"textChunkLimit",type:"number",label:e("textChunkLimit")},{name:"accountId",type:"text",label:e("accountId")},{name:"dmPolicy",type:"select",label:e("dmPolicy"),options:E},{name:"groupPolicy",type:"select",label:e("groupPolicy"),options:B},{name:"groupAllowFrom",type:"tags",label:e("groupAllowFrom")},{name:"requireMention",type:"boolean",label:e("requireMention")},{name:"mentionPatterns",type:"tags",label:e("mentionPatterns")},{name:"groups",type:"json",label:e("groupRulesJson")}],whatsapp:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"bridgeUrl",type:"text",label:e("bridgeUrl")},{name:"allowFrom",type:"tags",label:e("allowFrom")}],feishu:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"appId",type:"text",label:e("appId")},{name:"appSecret",type:"password",label:e("appSecret")},{name:"encryptKey",type:"password",label:e("encryptKey")},{name:"verificationToken",type:"password",label:e("verificationToken")},{name:"allowFrom",type:"tags",label:e("allowFrom")}],dingtalk:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"clientId",type:"text",label:e("clientId")},{name:"clientSecret",type:"password",label:e("clientSecret")},{name:"allowFrom",type:"tags",label:e("allowFrom")}],wecom:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"corpId",type:"text",label:e("corpId")},{name:"agentId",type:"text",label:e("agentId")},{name:"secret",type:"password",label:e("secret")},{name:"token",type:"password",label:e("token")},{name:"callbackPort",type:"number",label:e("callbackPort")},{name:"callbackPath",type:"text",label:e("callbackPath")},{name:"allowFrom",type:"tags",label:e("allowFrom")}],slack:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"mode",type:"text",label:e("mode")},{name:"webhookPath",type:"text",label:e("webhookPath")},{name:"allowBots",type:"boolean",label:e("allowBotMessages")},{name:"botToken",type:"password",label:e("botToken")},{name:"appToken",type:"password",label:e("appToken")}],email:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"consentGranted",type:"boolean",label:e("consentGranted")},{name:"imapHost",type:"text",label:e("imapHost")},{name:"imapPort",type:"number",label:e("imapPort")},{name:"imapUsername",type:"text",label:e("imapUsername")},{name:"imapPassword",type:"password",label:e("imapPassword")},{name:"fromAddress",type:"email",label:e("fromAddress")}],mochat:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"baseUrl",type:"text",label:e("baseUrl")},{name:"clawToken",type:"password",label:e("clawToken")},{name:"agentUserId",type:"text",label:e("agentUserId")},{name:"allowFrom",type:"tags",label:e("allowFrom")}],qq:[{name:"enabled",type:"boolean",label:e("enabled")},{name:"appId",type:"text",label:e("appId")},{name:"secret",type:"password",label:e("appSecret")},{name:"markdownSupport",type:"boolean",label:e("markdownSupport")},{name:"allowFrom",type:"tags",label:e("allowFrom")}]}}const R={telegram:I,slack:I,email:A,default:I},$={telegram:"from-primary-300 to-primary-600",slack:"from-primary-200 to-primary-500",email:"from-primary-100 to-primary-400",default:"from-gray-300 to-gray-500"};function D(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function J(n,l){const r={...n};for(const[p,m]of Object.entries(l)){const g=r[p];if(D(g)&&D(m)){r[p]=J(g,m);continue}r[p]=m}return r}function Ee(n,l){const r=n.split("."),p={};let m=p;for(let g=0;g<r.length-1;g+=1){const u=r[g];m[u]={},m=m[u]}return m[r[r.length-1]]=l,p}function Be(){var L,U;const{channelModal:n,closeChannelModal:l}=G(),{data:r}=_(),{data:p}=q(),m=pe(),g=de(),[u,f]=k.useState({}),[b,i]=k.useState({}),[x,h]=k.useState(null),c=n.channel,w=c?r==null?void 0:r.channels[c]:null,C=c?O()[c]??[]:[],N=p==null?void 0:p.uiHints,P=c?`channels.${c}`:null,z=((L=p==null?void 0:p.actions)==null?void 0:L.filter(t=>t.scope===P))??[],V=c&&(((U=M(`channels.${c}`,N))==null?void 0:U.label)??c);k.useEffect(()=>{if(w){f({...w});const t={};(c?O()[c]??[]:[]).filter(o=>o.type==="json").forEach(o=>{const y=w[o.name];t[o.name]=JSON.stringify(y??{},null,2)}),i(t)}else f({}),i({})},[w,c]);const v=(t,s)=>{f(o=>({...o,[t]:s}))},Y=t=>{if(t.preventDefault(),!c)return;const s={...u};for(const o of C){if(o.type!=="password")continue;const y=s[o.name];(typeof y!="string"||y.length===0)&&delete s[o.name]}for(const o of C){if(o.type!=="json")continue;const y=b[o.name]??"";try{s[o.name]=y.trim()?JSON.parse(y):{}}catch{S.error(`${e("invalidJson")}: ${o.name}`);return}}m.mutate({channel:c,data:s},{onSuccess:()=>l()})},W=t=>{if(!t||!c)return;const s=t.channels;if(!D(s))return;const o=s[c];D(o)&&f(y=>J(y,o))},X=async t=>{if(!(!c||!P)){h(t.id);try{let s={...u};t.saveBeforeRun&&(s={...s,...t.savePatch??{}},f(s),await m.mutateAsync({channel:c,data:s}));const o=await g.mutateAsync({actionId:t.id,data:{scope:P,draftConfig:Ee(P,s)}});W(o.patch),o.ok?S.success(o.message||e("success")):S.error(o.message||e("error"))}catch(s){const o=s instanceof Error?s.message:String(s);S.error(`${e("error")}: ${o}`)}finally{h(null)}}},Q=R[c||""]||R.default,Z=$[c||""]||$.default;return a.jsx(fe,{open:n.open,onOpenChange:l,children:a.jsxs(we,{className:"sm:max-w-[550px] max-h-[85vh] overflow-hidden flex flex-col",children:[a.jsx(je,{children:a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:`h-10 w-10 rounded-xl bg-gradient-to-br ${Z} flex items-center justify-center`,children:a.jsx(Q,{className:"h-5 w-5 text-white"})}),a.jsxs("div",{children:[a.jsx(ve,{className:"capitalize",children:V}),a.jsx(ke,{children:e("configureMessageChannelParameters")})]})]})}),a.jsxs("form",{onSubmit:Y,className:"flex flex-col flex-1 overflow-hidden",children:[a.jsx("div",{className:"flex-1 overflow-y-auto custom-scrollbar py-2 pr-2 space-y-5",children:C.map(t=>{const s=c?M(`channels.${c}.${t.name}`,N):void 0,o=(s==null?void 0:s.label)??t.label,y=s==null?void 0:s.placeholder;return a.jsxs("div",{className:"space-y-2.5",children:[a.jsxs(Se,{htmlFor:t.name,className:"text-sm font-medium text-gray-900 flex items-center gap-2",children:[Ue(t.name),o]}),t.type==="boolean"&&a.jsxs("div",{className:"flex items-center justify-between p-3 rounded-xl bg-gray-50",children:[a.jsx("span",{className:"text-sm text-gray-500",children:u[t.name]?e("enabled"):e("disabled")}),a.jsx(Ie,{id:t.name,checked:u[t.name]||!1,onCheckedChange:d=>v(t.name,d),className:"data-[state=checked]:bg-emerald-500"})]}),(t.type==="text"||t.type==="email")&&a.jsx(F,{id:t.name,type:t.type,value:u[t.name]||"",onChange:d=>v(t.name,d.target.value),placeholder:y,className:"rounded-xl"}),t.type==="password"&&a.jsx(F,{id:t.name,type:"password",value:u[t.name]||"",onChange:d=>v(t.name,d.target.value),placeholder:y??e("leaveBlankToKeepUnchanged"),className:"rounded-xl"}),t.type==="number"&&a.jsx(F,{id:t.name,type:"number",value:u[t.name]||0,onChange:d=>v(t.name,parseInt(d.target.value)||0),placeholder:y,className:"rounded-xl"}),t.type==="tags"&&a.jsx(Ae,{value:u[t.name]||[],onChange:d=>v(t.name,d)}),t.type==="select"&&a.jsxs(be,{value:u[t.name]||"",onValueChange:d=>v(t.name,d),children:[a.jsx(xe,{className:"rounded-xl",children:a.jsx(ge,{})}),a.jsx(ye,{children:(t.options??[]).map(d=>a.jsx(he,{value:d.value,children:d.label},d.value))})]}),t.type==="json"&&a.jsx("textarea",{id:t.name,value:b[t.name]??"{}",onChange:d=>i(ee=>({...ee,[t.name]:d.target.value})),className:"min-h-[120px] w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-xs font-mono"})]},t.name)})}),a.jsxs(Ce,{className:"pt-4 flex-shrink-0",children:[a.jsx(T,{type:"button",variant:"outline",onClick:l,children:e("cancel")}),a.jsx(T,{type:"submit",disabled:m.isPending||!!x,children:m.isPending?e("saving"):e("save")}),z.filter(t=>t.trigger==="manual").map(t=>a.jsx(T,{type:"button",onClick:()=>X(t),disabled:m.isPending||!!x,variant:"secondary",children:x===t.id?e("connecting"):t.title},t.id))]})]})]})})}function Oe({children:n,onClick:l,className:r}){return a.jsx("div",{onClick:l,className:j("group relative flex flex-col p-6 rounded-2xl border border-gray-200/50 bg-white shadow-card","transition-all duration-base cursor-pointer","hover:shadow-card-hover hover:border-gray-200",r),children:n})}function Re({children:n,className:l}){return a.jsx("div",{className:j("flex items-start justify-between mb-4",l),children:n})}function $e({title:n,description:l,className:r}){return a.jsxs("div",{className:j("flex-1",r),children:[a.jsx("h3",{className:"text-[14px] font-bold text-gray-900 mb-0.5",children:n}),l&&a.jsx("p",{className:"text-[12px] text-gray-400 leading-relaxed line-clamp-2",children:l})]})}function He({children:n,className:l}){return a.jsx("div",{className:j("mt-4 pt-3 flex items-center justify-between",l),children:n})}function Ke({label:n,className:l,onClick:r}){return a.jsxs("span",{onClick:r,className:j("inline-flex items-center gap-1 text-[13px] font-medium text-gray-600 hover:text-primary transition-colors cursor-pointer group/action",l),children:[n,a.jsx(re,{className:"h-3 w-3 transition-transform group-hover/action:translate-x-0.5"})]})}const H={telegram:I,slack:ie,email:A,webhook:ce,default:K},_e={telegram:"channelDescTelegram",slack:"channelDescSlack",email:"channelDescEmail",webhook:"channelDescWebhook",discord:"channelDescDiscord",feishu:"channelDescFeishu"};function ea(){const{data:n}=_(),{data:l}=ue(),{data:r}=q(),{openChannelModal:p}=G(),[m,g]=k.useState("active"),u=r==null?void 0:r.uiHints;if(!n||!l)return a.jsx("div",{className:"p-8 text-gray-400",children:e("channelsLoading")});const f=[{id:"active",label:e("channelsTabEnabled"),count:l.channels.filter(i=>{var x;return(x=n.channels[i.name])==null?void 0:x.enabled}).length},{id:"all",label:e("channelsTabAll"),count:l.channels.length}],b=l.channels.filter(i=>{var h;const x=((h=n.channels[i.name])==null?void 0:h.enabled)||!1;return m==="all"||x});return a.jsxs(Ne,{children:[a.jsx(Pe,{title:e("channelsPageTitle")}),a.jsx(De,{tabs:f,activeTab:m,onChange:g}),a.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:b.map(i=>{const x=n.channels[i.name],h=(x==null?void 0:x.enabled)||!1,c=H[i.name]||H.default,w=M(`channels.${i.name}`,u),C=(w==null?void 0:w.help)||e(_e[i.name]||"channelDescriptionDefault");return a.jsxs(Oe,{onClick:()=>p(i.name),children:[a.jsxs(Re,{children:[a.jsx(Fe,{name:i.name,src:Te(i.name),className:j("h-11 w-11 rounded-xl border transition-all",h?"bg-white border-primary/30":"bg-white border-gray-200/60 group-hover:border-gray-300"),imgClassName:"h-5 w-5",fallback:a.jsx(c,{className:"h-5 w-5"})}),a.jsx(Me,{status:h?"active":"inactive",label:h?e("statusActive"):e("statusInactive")})]}),a.jsx($e,{title:i.displayName||i.name,description:C}),a.jsxs(He,{children:[a.jsx(Ke,{label:h?e("actionConfigure"):e("actionEnable")}),i.tutorialUrl&&a.jsx("a",{href:i.tutorialUrl,target:"_blank",rel:"noreferrer",onClick:N=>N.stopPropagation(),className:"flex items-center justify-center h-6 w-6 rounded-md text-gray-300 hover:text-gray-500 hover:bg-gray-100/60 transition-colors",title:e("channelsGuideTitle"),children:a.jsx(me,{className:"h-3.5 w-3.5"})})]})]},i.name)})}),b.length===0&&a.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[a.jsx("div",{className:"h-14 w-14 flex items-center justify-center rounded-xl bg-gray-100/80 mb-4",children:a.jsx(K,{className:"h-6 w-6 text-gray-300"})}),a.jsx("h3",{className:"text-[14px] font-semibold text-gray-900 mb-1.5",children:e("channelsEmptyTitle")}),a.jsx("p",{className:"text-[13px] text-gray-400 max-w-sm",children:e("channelsEmptyDescription")})]}),a.jsx(Be,{})]})}export{ea as ChannelsList};
|