@wkoutre/teamwork-os 1.0.0 → 1.0.1
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/README.md +3 -2
- package/cli.jsc +0 -0
- package/dist/assets/AnalyticsPage-BoafbdRY.js +1 -0
- package/dist/assets/BriefsPage-BsBjNIJT.js +1 -0
- package/dist/assets/BriefsPage-C2lUZ05b.css +1 -0
- package/dist/assets/Button-BOCZ-tMU.css +1 -0
- package/dist/assets/Button-xBBZQ0ie.js +1 -0
- package/dist/assets/Card-Q-x7mRn3.css +1 -0
- package/dist/assets/Card-u29day7d.js +1 -0
- package/dist/assets/ChatPanel-BUNJ-rXp.js +29 -0
- package/dist/assets/ChatPanel-CK_zI3mg.css +1 -0
- package/dist/assets/ContinuousImprovementPage-DQDtZtX3.css +1 -0
- package/dist/assets/ContinuousImprovementPage-F6fizSUr.js +1 -0
- package/dist/assets/HeartbeatPanel-D5azjMkJ.css +1 -0
- package/dist/assets/HeartbeatPanel-q7mW5VDk.js +1 -0
- package/dist/assets/IdeasContainer-Cl1WkgLe.css +1 -0
- package/dist/assets/IdeasContainer-DDhsyl1f.js +3 -0
- package/dist/assets/Input-C6Eciq4Y.css +1 -0
- package/dist/assets/Input-HhV6M0tu.js +1 -0
- package/dist/assets/KpiTile-pXTBj77S.js +1 -0
- package/dist/assets/MemoryExplore-DXgmdeOp.css +1 -0
- package/dist/assets/MemoryExplore-wFiVBkXu.js +1 -0
- package/dist/assets/MemoryHygiene-C_lFMujk.js +2 -0
- package/dist/assets/MemoryHygiene-D9-lcjQc.css +1 -0
- package/dist/assets/MemoryInjections-CG5Jnfc2.css +1 -0
- package/dist/assets/MemoryInjections-F6D1_uAX.js +1 -0
- package/dist/assets/MemoryOverview-BG2lpis1.js +1 -0
- package/dist/assets/MemoryOverview-BuFrUzre.css +1 -0
- package/dist/assets/MemoryPage-DS6LWMdS.js +2 -0
- package/dist/assets/MemoryPage-DkvxMEXj.css +1 -0
- package/dist/assets/MemoryWiki-Mh-mjN1m.css +1 -0
- package/dist/assets/MemoryWiki-cypT6R3l.js +3 -0
- package/dist/assets/OrgPage-DP2-hcbf.js +33 -0
- package/dist/assets/OrgPage-nDdhTt3V.css +1 -0
- package/dist/assets/PipelinesPage-BzYkkX-n.js +1 -0
- package/dist/assets/PipelinesPage-VXjq7839.css +1 -0
- package/dist/assets/RelativeTime-CARWwY-H.js +1 -0
- package/dist/assets/ScheduleOptimizerPage-Cmje0CoX.js +10 -0
- package/dist/assets/SessionHistory-DwX-i9Io.js +2 -0
- package/dist/assets/SettingsPage-C6Xq22uB.js +49 -0
- package/dist/assets/SettingsRow-4w9Ab9mk.js +1 -0
- package/dist/assets/SupervisorDashboardPage-BEuElLHE.css +1 -0
- package/dist/assets/SupervisorDashboardPage-CrsOGBZ8.js +1 -0
- package/dist/assets/UsagePage-Cm8NsPw7.js +4 -0
- package/dist/assets/UsagePage-DlwHL1zI.css +1 -0
- package/dist/assets/dagre-CHpVij2M.css +1 -0
- package/dist/assets/dagre.esm-DBOl5nQa.js +7 -0
- package/dist/assets/events-CCBP4a9s.js +1 -0
- package/dist/assets/generateCategoricalChart-pfORgeJG.js +60 -0
- package/dist/assets/index-C57L9wdB.css +1 -0
- package/dist/assets/index-tOLuwPW6.js +93 -0
- package/dist/assets/jsx-runtime-Bq3x7umQ.js +1 -0
- package/dist/assets/lib-osArdP58.js +16 -0
- package/dist/assets/react-dom-Cnw6SoYl.js +8 -0
- package/dist/assets/shared-CHkcO7VT.css +1 -0
- package/dist/assets/shared-wI40KN7Y.js +1 -0
- package/dist/assets/styles-Ds5gMQAQ.js +1 -0
- package/dist/assets/types-CNhs8RVF.js +1 -0
- package/dist/assets/ui-Bx41p7g8.js +1 -0
- package/dist/assets/useGet-CU5_p7vA.js +1 -0
- package/dist/assets/useWebSocket-Hg3RO6sx.js +1 -0
- package/dist/assets/value-A1VqfRmL.js +1 -0
- package/dist/index.html +45 -0
- package/gateway.jsc +0 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Jobs connect to Slack, call tools, resume previous sessions, and coordinate thro
|
|
|
13
13
|
## Prerequisites
|
|
14
14
|
|
|
15
15
|
- **macOS 14+** or Linux (x86-64 or ARM)
|
|
16
|
-
- **Node
|
|
16
|
+
- **Node 25** (required): The published binary uses bytenode bytecode, which is V8-version-locked. The artifact is built under Node 25 (the package pins `engines: node >=25.0.0 <26`), so it cannot load on any other major version. Install via [nvm](https://github.com/nvm-sh/nvm): `nvm install 25 && nvm use 25`.
|
|
17
17
|
- **Claude Code CLI**: Install from [claude.ai/download](https://claude.ai/download) and authenticate. TeamworkOS runs agents through the `claude` binary using your existing Claude Code subscription.
|
|
18
18
|
- **Xcode Command Line Tools** (macOS, optional): Only needed if `better-sqlite3` lacks a prebuilt binary for your platform. Most users can skip this. If you see a build error during install, run `xcode-select --install` and retry.
|
|
19
19
|
|
|
@@ -37,7 +37,7 @@ teamos init
|
|
|
37
37
|
5. **Starts the gateway** and optionally installs it as a launchd (macOS) or systemd (Linux) service so it restarts automatically at login.
|
|
38
38
|
6. **Prints a summary** with your dashboard URL and the most useful next commands.
|
|
39
39
|
|
|
40
|
-
After setup, the dashboard is at `http://localhost:7463`.
|
|
40
|
+
After setup, the dashboard is at `http://localhost:7463`. The full web dashboard ships inside the package and is served by the gateway itself — there is no separate frontend build or web server to run.
|
|
41
41
|
|
|
42
42
|
## Daily use
|
|
43
43
|
|
|
@@ -91,6 +91,7 @@ Common problems:
|
|
|
91
91
|
- **`claude` not on PATH:** Confirm `which claude` works in a new terminal window. If you installed Claude Code recently, restart your shell or source your profile.
|
|
92
92
|
- **EACCES on `npm install -g`:** Your global npm prefix may be system-owned. See [npm's EACCES docs](https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally). Do not use `sudo npm install -g`.
|
|
93
93
|
- **Gateway not starting:** Run `teamos doctor` for specifics. Logs are at `~/.teamwork/logs/gateway-launchd-error.log` (macOS) or via `journalctl --user -u teamwork-os` (Linux).
|
|
94
|
+
- **Switched Node versions after install:** The service runs under the Node binary you installed with (the bytecode is locked to that major). If you later install a different Node major and remove the old one, re-run `teamos install` so the service points at the current binary. The error log will warn if it had to fall back to a PATH `node`.
|
|
94
95
|
|
|
95
96
|
## Reporting issues
|
|
96
97
|
|
package/cli.jsc
CHANGED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,s as t,t as n}from"./jsx-runtime-Bq3x7umQ.js";import{n as r}from"./styles-Ds5gMQAQ.js";import{c as i,u as a}from"./index-tOLuwPW6.js";import{t as o}from"./KpiTile-pXTBj77S.js";var s=t(e(),1),c=n();function l(){let{metrics:e,loading:t}=a(),{employees:n}=i(),l=(0,s.useMemo)(()=>{let e=new Map;for(let t of n)e.set(t.name,t);return e},[n]),d=(0,s.useMemo)(()=>{let t=Object.values(e);if(t.length===0)return null;let n=t.reduce((e,t)=>e+t.totalSessions,0),r=t.reduce((e,t)=>e+t.totalCostUsd,0),i=t.reduce((e,t)=>e+t.completedSessions,0),a=t.reduce((e,t)=>e+t.errorSessions,0),o=i+a;return{totalSessions:n,totalCost:r,avgSuccessRate:o>0?i/o:null,totalCompleted:i,totalErrors:a,agentCount:t.length}},[e]),f=(0,s.useMemo)(()=>Object.entries(e).sort((e,t)=>t[1].totalSessions-e[1].totalSessions),[e]);if(t)return(0,c.jsxs)(`div`,{className:`page-content-frame`,style:{padding:`32px 48px`},children:[(0,c.jsx)(`h1`,{style:{fontSize:22,fontWeight:600,marginBottom:8},children:`Analytics`}),(0,c.jsx)(`p`,{style:{color:r.muted,fontSize:14},children:`Loading metrics...`})]});if(!d)return(0,c.jsxs)(`div`,{className:`page-content-frame`,style:{padding:`32px 48px`},children:[(0,c.jsx)(`h1`,{style:{fontSize:22,fontWeight:600,marginBottom:8},children:`Analytics`}),(0,c.jsxs)(`div`,{style:{marginTop:32,padding:40,textAlign:`center`,color:r.muted,border:`1px dashed ${r.border}`,borderRadius:12},children:[(0,c.jsx)(`div`,{style:{fontSize:48,marginBottom:16,opacity:.4},children:`📊`}),(0,c.jsx)(`p`,{style:{fontSize:13},children:`No session data yet. Run some agent sessions to see metrics here.`})]})]});let p=d.avgSuccessRate===null?null:Math.round(d.avgSuccessRate*100);return(0,c.jsxs)(`div`,{className:`page-content-frame`,style:{padding:`32px 48px`,maxWidth:1100},children:[(0,c.jsx)(`h1`,{style:{fontSize:22,fontWeight:600,marginBottom:24},children:`Analytics`}),(0,c.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`,gap:12,marginBottom:32},children:[(0,c.jsx)(o,{label:`Total Sessions`,value:String(d.totalSessions)}),(0,c.jsx)(o,{label:`Active Agents`,value:String(d.agentCount)}),(0,c.jsx)(o,{label:`Avg Success Rate`,value:p===null?`N/A`:`${p}%`,color:p===null?r.muted:p>=80?r.green:p>=50?`var(--color-warning)`:r.red}),(0,c.jsx)(o,{label:`Total Cost`,value:`$${d.totalCost.toFixed(2)}`})]}),(0,c.jsx)(`h2`,{style:{fontSize:16,fontWeight:600,marginBottom:16},children:`Per-Agent Breakdown`}),(0,c.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:f.map(([e,t])=>(0,c.jsx)(u,{name:e,metrics:t,employee:l.get(e)},e))})]})}function u({name:e,metrics:t,employee:n}){let i=t.successRate===null?null:Math.round(t.successRate*100),a=i===null?r.muted:i>=80?r.green:i>=50?`var(--color-warning)`:r.red;return(0,c.jsxs)(`div`,{style:{background:r.cardBg,border:`1px solid ${r.border}`,borderRadius:8,padding:`14px 18px`,display:`grid`,gridTemplateColumns:`200px 1fr`,gap:16,alignItems:`center`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[(0,c.jsx)(`span`,{style:{fontSize:22},children:n?.emoji||`👤`}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{style:{fontSize:14,fontWeight:600,color:`var(--color-text)`},children:n?.displayName||e}),(0,c.jsxs)(`div`,{style:{fontSize:11,color:r.muted},children:[n?.department||`unassigned`,` · `,n?.rank||`employee`]})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,gap:24,alignItems:`center`,flexWrap:`wrap`},children:[(0,c.jsx)(d,{label:`Sessions`,value:String(t.totalSessions)}),(0,c.jsx)(d,{label:`Success`,value:i===null?`N/A`:`${i}%`,color:a}),(0,c.jsx)(d,{label:`Cost`,value:`$${t.totalCostUsd.toFixed(2)}`}),(0,c.jsx)(d,{label:`Avg Duration`,value:f(t.avgDurationMs)}),(0,c.jsx)(`div`,{style:{flex:1,minWidth:100},children:(0,c.jsxs)(`div`,{style:{height:6,borderRadius:3,overflow:`hidden`,background:`${r.border}`,display:`flex`},children:[t.completedSessions>0&&(0,c.jsx)(`div`,{style:{width:`${t.completedSessions/t.totalSessions*100}%`,background:r.green}}),t.errorSessions>0&&(0,c.jsx)(`div`,{style:{width:`${t.errorSessions/t.totalSessions*100}%`,background:r.red}})]})})]})]})}function d({label:e,value:t,color:n}){return(0,c.jsxs)(`div`,{style:{textAlign:`center`,minWidth:64},children:[(0,c.jsx)(`div`,{style:{fontSize:13,fontWeight:600,color:n||`var(--color-text)`},children:t}),(0,c.jsx)(`div`,{style:{fontSize:10,color:r.muted,textTransform:`uppercase`,letterSpacing:.3},children:e})]})}function f(e){if(e===0)return`N/A`;if(e<1e3)return`${Math.round(e)}ms`;let t=e/1e3;return t<60?`${t.toFixed(1)}s`:`${Math.floor(t/60)}m ${Math.round(t%60)}s`}export{l as AnalyticsPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,s as t,t as n}from"./jsx-runtime-Bq3x7umQ.js";import{t as r}from"./react-dom-Cnw6SoYl.js";import{r as i}from"./useWebSocket-Hg3RO6sx.js";import{C as a,D as o,E as s,T as c,w as l}from"./index-tOLuwPW6.js";var u=t(e(),1),d=1e3;function f(e){let t=new URLSearchParams;return t.set(`sort`,e.sort),e.platform&&e.platform!==`all`&&t.set(`platform`,e.platform),e.q&&t.set(`q`,e.q),`/api/briefs?${t.toString()}`}function p(e){let[t,n]=(0,u.useState)([]),[r,a]=(0,u.useState)(!0),[o,s]=(0,u.useState)(null),[c,l]=(0,u.useState)(()=>new Set),[p,m]=(0,u.useState)(()=>new Map),h=(0,u.useRef)(new Map),[,g]=(0,u.useState)(()=>new Set),_=(0,u.useRef)(new Set),v=(0,u.useRef)(null),{sort:y,platform:b,q:x}=e,S=(0,u.useCallback)(()=>{v.current?.abort();let e=new AbortController;v.current=e,a(!0),s(null),fetch(f({sort:y,platform:b,q:x}),{signal:e.signal}).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{e.signal.aborted||n(t.briefs)}).catch(e=>{e instanceof Error&&e.name===`AbortError`||s(e instanceof Error?e.message:String(e))}).finally(()=>{e.signal.aborted||a(!1)})},[y,b,x]);return(0,u.useEffect)(()=>(S(),()=>v.current?.abort()),[S]),i(`brief:updated`,(0,u.useCallback)(e=>{let t=e?.brief;if(!t?.url||_.current.has(t.url)||t.hidden)return;n(e=>{let n=e.findIndex(e=>e.url===t.url);if(n>=0){let r=e.slice();return r[n]=t,r}return[t,...e]}),l(e=>{let n=new Set(e);return n.add(t.url),n}),m(e=>{let n=new Map(e);return n.set(t.url,(e.get(t.url)??0)+1),n});let r=h.current.get(t.url);r&&clearTimeout(r);let i=setTimeout(()=>{h.current.delete(t.url),l(e=>{if(!e.has(t.url))return e;let n=new Set(e);return n.delete(t.url),n})},d);h.current.set(t.url,i)},[])),(0,u.useEffect)(()=>{let e=h.current;return()=>{for(let t of e.values())clearTimeout(t);e.clear()}},[]),i(`brief:deleted`,(0,u.useCallback)(e=>{let t=e?.url;t&&n(e=>e.filter(e=>e.url!==t))},[])),i(`ws:reconnected`,(0,u.useCallback)(()=>{S()},[S])),{briefs:t,loading:r,error:o,recentlyUpdatedUrls:c,pulseTokens:p,refetch:S,patchTitle:(0,u.useCallback)(async(e,t)=>{let n=await fetch(`/api/briefs/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({user_title:t})});if(!n.ok)throw Error(`PATCH failed: ${n.status}`);S()},[S]),removeLocal:(0,u.useCallback)(e=>{n(t=>t.filter(t=>t.url!==e))},[]),removeNetwork:(0,u.useCallback)(async e=>{let t=await fetch(`/api/briefs/${encodeURIComponent(e)}`,{method:`DELETE`});if(!t.ok&&t.status!==404)throw Error(`DELETE failed: ${t.status}`)},[]),restore:(0,u.useCallback)(async e=>{let t=await fetch(`/api/briefs/${encodeURIComponent(e)}/restore`,{method:`POST`});if(!t.ok)throw Error(`restore failed: ${t.status}`);S()},[S]),suppressUrl:(0,u.useCallback)(e=>{if(_.current.has(e))return;let t=new Set(_.current);t.add(e),_.current=t,g(t)},[]),unsuppressUrl:(0,u.useCallback)(e=>{if(!_.current.has(e))return;let t=new Set(_.current);t.delete(e),_.current=t,g(t)},[])}}var m={page:`_page_mkrqf_10`,light:`_light_mkrqf_25`,header:`_header_mkrqf_42`,title:`_title_mkrqf_51`,subtitle:`_subtitle_mkrqf_58`,controls:`_controls_mkrqf_72`,sortToggle:`_sortToggle_mkrqf_81`,sortBtn:`_sortBtn_mkrqf_91`,sortBtnActive:`_sortBtnActive_mkrqf_119`,search:`_search_mkrqf_130`,searchIcon:`_searchIcon_mkrqf_151`,searchInput:`_searchInput_mkrqf_156`,chipRow:`_chipRow_mkrqf_173`,filter:`_filter_mkrqf_180`,filterActive:`_filterActive_mkrqf_209`,filterLabel:`_filterLabel_mkrqf_224`,filterCount:`_filterCount_mkrqf_228`,glyph:`_glyph_mkrqf_241`,glyphSm:`_glyphSm_mkrqf_254`,glyphMd:`_glyphMd_mkrqf_260`,list:`_list_mkrqf_268`,card:`_card_mkrqf_282`,"brief-card-in":`_brief-card-in_mkrqf_1`,cardPulse:`_cardPulse_mkrqf_312`,"brief-pulse":`_brief-pulse_mkrqf_1`,cardGlyph:`_cardGlyph_mkrqf_316`,cardBody:`_cardBody_mkrqf_320`,cardTitle:`_cardTitle_mkrqf_324`,cardTitleLink:`_cardTitleLink_mkrqf_333`,cardTitleFallback:`_cardTitleFallback_mkrqf_350`,cardMeta:`_cardMeta_mkrqf_355`,cardHost:`_cardHost_mkrqf_366`,cardWrites:`_cardWrites_mkrqf_372`,cardRefs:`_cardRefs_mkrqf_378`,cardJobLink:`_cardJobLink_mkrqf_382`,cardJobName:`_cardJobName_mkrqf_407`,cardDot:`_cardDot_mkrqf_416`,cardTime:`_cardTime_mkrqf_421`,cardOverflow:`_cardOverflow_mkrqf_434`,cardOverflowBtn:`_cardOverflowBtn_mkrqf_439`,cardTitleEditor:`_cardTitleEditor_mkrqf_481`,cardTitleInput:`_cardTitleInput_mkrqf_488`,cardResetTitle:`_cardResetTitle_mkrqf_508`,errorBanner:`_errorBanner_mkrqf_536`,errorRetry:`_errorRetry_mkrqf_550`,empty:`_empty_mkrqf_575`,emptyHeadline:`_emptyHeadline_mkrqf_583`,emptyBody:`_emptyBody_mkrqf_590`,skeletonCard:`_skeletonCard_mkrqf_600`,skeletonGlyph:`_skeletonGlyph_mkrqf_614`,"brief-shimmer":`_brief-shimmer_mkrqf_1`,skeletonBody:`_skeletonBody_mkrqf_628`,skeletonTitle:`_skeletonTitle_mkrqf_635`,skeletonMeta:`_skeletonMeta_mkrqf_649`,skeletonTime:`_skeletonTime_mkrqf_663`,srOnly:`_srOnly_mkrqf_672`},h=n(),g={notion:{letter:`N`,label:`Notion`,tintVar:`--p-notion`},linear:{letter:`L`,label:`Linear`,tintVar:`--p-linear`},"slack-canvas":{letter:`S`,label:`Slack canvas`,tintVar:`--p-slack`},"google-docs":{letter:`G`,label:`Google Docs`,tintVar:`--p-gdocs`},"github-wiki":{letter:`W`,label:`GitHub wiki`,tintVar:`--p-wiki`},other:{letter:`·`,label:`Other`,tintVar:`--p-other`}};function _({platform:e,size:t=`sm`}){let n=g[e];return(0,h.jsx)(`span`,{className:[m.glyph,t===`md`?m.glyphMd:m.glyphSm].join(` `),style:{"--glyph-tint":`var(${n.tintVar})`},"aria-label":n.label,title:n.label,children:(0,h.jsx)(`span`,{"aria-hidden":`true`,children:n.letter})})}function v({platform:e,active:t,count:n,onClick:r}){let i=e===`all`?`All`:g[e].label,a=e===`all`?`--p-all`:g[e].tintVar;return(0,h.jsxs)(`button`,{type:`button`,className:`${m.filter} ${t?m.filterActive:``}`,onClick:r,"aria-pressed":t,style:{"--filter-tint":`var(${a})`},children:[e!==`all`&&(0,h.jsx)(_,{platform:e,size:`sm`}),(0,h.jsx)(`span`,{className:m.filterLabel,children:i}),typeof n==`number`&&n>0&&(0,h.jsx)(`span`,{className:m.filterCount,children:n})]})}var y=t(r(),1),b={menu:`_menu_d9qv0_6`,item:`_item_d9qv0_18`,danger:`_danger_d9qv0_43`};function x({open:e,onEdit:t,onDelete:n,onCopy:r,onClose:i,triggerRef:d}){let{refs:f,floatingStyles:p}=s({open:e,placement:`bottom-end`,whileElementsMounted:o,middleware:[l(4),a({padding:8}),c({padding:8})]});return(0,u.useEffect)(()=>{f.setReference(d.current??null)},[f,d]),(0,u.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target;if(d.current?.contains(t))return;let n=f.floating.current;n&&!n.contains(t)&&i()},n=e=>{e.key===`Escape`&&i()};return document.addEventListener(`mousedown`,t),document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`mousedown`,t),document.removeEventListener(`keydown`,n)}},[e,i,d,f.floating]),e?(0,y.createPortal)((0,h.jsxs)(`ul`,{ref:f.setFloating,role:`menu`,className:b.menu,style:p,children:[(0,h.jsx)(`li`,{children:(0,h.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:t,className:b.item,children:`Edit title`})}),(0,h.jsx)(`li`,{children:(0,h.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:n,className:`${b.item} ${b.danger}`,children:`Delete`})}),(0,h.jsx)(`li`,{children:(0,h.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:r,className:b.item,children:`Copy link`})})]}),document.body):null}function S(e){if(!e)return`never`;let t=Date.parse(e);if(Number.isNaN(t))return`—`;let n=Date.now()-t,r=Math.round(n/6e4);if(r<1)return`just now`;if(r<60)return`${r}m`;let i=Math.round(r/60);if(i<24)return`${i}h`;let a=Math.round(i/24);if(a<7)return`${a}d`;let o=Math.round(a/7);if(o<5)return`${o}w`;let s=Math.round(a/30);return s<12?`${s}mo`:`${Math.round(s/12)}y`}function C(e){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return``}}function w(e){let t=e?.trim();return!t||/^#?\d+\s*-\s*cd\s+\//.test(t)||/^cd\s+\//.test(t)||/^\//.test(t)?null:t}var T=(0,u.memo)(function({brief:e,pulseToken:t,index:n,onEdit:r,onDelete:i}){let a=e.title.trim()||C(e.url)||e.url,o=!e.userTitle?.trim(),s=g[e.platform],[c,l]=(0,u.useState)(!1),d=(0,u.useRef)(void 0);(0,u.useEffect)(()=>{if(t===void 0||t===d.current)return;d.current=t,l(!0);let e=setTimeout(()=>l(!1),900);return()=>clearTimeout(e)},[t]);let[f,p]=(0,u.useState)(!1),[v,y]=(0,u.useState)(!1),b=(0,u.useRef)(null),T=/^https?:\/\//i.test(e.url),D=T?e.url:`#`,O=e.writeCount,k=e.referenceCount,A=O===1?`write`:`writes`,j=w(e.lastWriteJob),M=e.lastWriteAt,N=M??e.lastReferenceAt,P=N?new Date(N).toLocaleString():`No activity yet`,F=M?`Never written`:`Never referenced`;return(0,h.jsxs)(`li`,{className:[m.card,c?m.cardPulse:``].filter(Boolean).join(` `),style:{animationDelay:`${Math.min(n,12)*28}ms`,"--card-tint":`var(${s.tintVar})`},children:[(0,h.jsx)(`div`,{className:m.cardGlyph,"aria-hidden":`true`,children:(0,h.jsx)(_,{platform:e.platform,size:`md`})}),(0,h.jsxs)(`div`,{className:m.cardBody,children:[v?(0,h.jsx)(E,{brief:e,onSave:async t=>{y(!1),await r(e.url,t)},onCancel:()=>y(!1)}):(0,h.jsx)(`h2`,{className:m.cardTitle,children:(0,h.jsx)(`a`,{href:D,target:`_blank`,rel:`noopener noreferrer`,onClick:T?void 0:e=>e.preventDefault(),className:[m.cardTitleLink,o?m.cardTitleFallback:``].filter(Boolean).join(` `),children:a})}),(0,h.jsxs)(`p`,{className:m.cardMeta,children:[(0,h.jsx)(`span`,{className:m.cardHost,children:C(e.url)}),(0,h.jsx)(`span`,{className:m.cardDot,"aria-hidden":`true`,children:`·`}),(0,h.jsxs)(`span`,{className:m.cardWrites,children:[(0,h.jsx)(`strong`,{children:O}),` `,A]}),k>0&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`span`,{className:m.cardDot,"aria-hidden":`true`,children:`·`}),(0,h.jsxs)(`span`,{className:m.cardRefs,children:[k,` ref`,k===1?``:`s`]})]}),j&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`span`,{className:m.cardDot,"aria-hidden":`true`,children:`·`}),(0,h.jsx)(`span`,{className:m.cardJobName,title:j,children:j})]})]})]}),(0,h.jsxs)(`div`,{className:m.cardTime,children:[N?(0,h.jsx)(`time`,{dateTime:N,title:P,children:S(N)}):(0,h.jsx)(`span`,{title:P,"aria-label":F,children:`—`}),(0,h.jsxs)(`span`,{className:m.cardOverflow,children:[(0,h.jsx)(`button`,{ref:b,type:`button`,className:m.cardOverflowBtn,"aria-label":`Brief actions`,"aria-haspopup":`menu`,"aria-expanded":f,onClick:()=>p(e=>!e),children:`⋮`}),(0,h.jsx)(x,{open:f,triggerRef:b,onEdit:()=>{p(!1),y(!0)},onDelete:()=>{p(!1),i(e)},onCopy:()=>{if(p(!1),typeof navigator>`u`||!navigator.clipboard){console.warn(`[briefs] clipboard unavailable; user can cmd-click the link`);return}navigator.clipboard.writeText(e.url).catch(e=>{console.warn(`[briefs] clipboard write failed`,e)})},onClose:()=>p(!1)})]})]})]})});function E({brief:e,onSave:t,onCancel:n}){let[r,i]=(0,u.useState)(e.userTitle??e.autoTitle??e.title),a=(0,u.useRef)(!1);return(0,h.jsxs)(`div`,{className:m.cardTitleEditor,children:[(0,h.jsx)(`input`,{type:`text`,className:m.cardTitleInput,value:r,onChange:e=>i(e.target.value),autoFocus:!0,"aria-label":`Edit brief title`,onKeyDown:e=>{if(e.key===`Enter`){e.preventDefault();let n=r.trim();a.current=!0,t(n.length===0?null:n)}else e.key===`Escape`&&(e.preventDefault(),n())},onBlur:()=>{a.current||n()}}),e.userTitle&&(0,h.jsx)(`button`,{type:`button`,className:m.cardResetTitle,onMouseDown:e=>{e.preventDefault(),a.current=!0,t(null)},children:`Reset to auto`})]})}var D={toast:`_toast_1kfii_1`,"toast-in":`_toast-in_1kfii_1`,undo:`_undo_1kfii_30`,progress:`_progress_1kfii_54`};function O({message:e,onUndo:t,onDismiss:n,durationMs:r=5e3}){let[i,a]=(0,u.useState)(100),o=(0,u.useRef)(!1);(0,u.useEffect)(()=>{o.current=!1;let e=Date.now(),t=window.setInterval(()=>{let i=Date.now()-e,s=Math.max(0,100-i/r*100);a(s),s<=0&&(window.clearInterval(t),o.current||n())},50);return()=>{o.current=!0,window.clearInterval(t)}},[r,n]);function s(){o.current=!0,t()}return(0,h.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:D.toast,children:[(0,h.jsx)(`span`,{children:e}),(0,h.jsx)(`button`,{type:`button`,onClick:s,className:D.undo,children:`Undo`}),(0,h.jsx)(`span`,{"aria-hidden":!0,className:D.progress,style:{width:`${i}%`}})]})}var k=[`all`,`notion`,`linear`,`slack-canvas`,`google-docs`,`github-wiki`,`other`];function A(){let[e,t]=(0,u.useState)(`recency`),[n,r]=(0,u.useState)(`all`),[i,a]=(0,u.useState)(``),o=(0,u.useDeferredValue)(i),{briefs:s,loading:c,error:l,refetch:d,patchTitle:f,removeLocal:g,removeNetwork:_,restore:y,suppressUrl:b,unsuppressUrl:x,pulseTokens:S}=p({sort:e,platform:n,q:o.trim()||void 0}),[C,w]=(0,u.useState)(null),[E,D]=(0,u.useState)(null),A=(0,u.useCallback)(async(e,t)=>{try{D(null),await f(e,t)}catch(e){D(e instanceof Error?e.message:String(e))}},[f]);(0,u.useEffect)(()=>{if(!E)return;let e=setTimeout(()=>D(null),5e3);return()=>clearTimeout(e)},[E]);let N=(0,u.useCallback)(e=>{g(e.url),b(e.url),w({url:e.url,brief:e}),_(e.url).catch(t=>{console.warn(`[briefs] DELETE failed; refetching to recover state`,t),x(e.url),w(null),d()})},[g,_,d,b,x]),P=(0,u.useCallback)(async()=>{if(!C)return;let e=C.url;w(null),x(e);try{await y(e)}catch(e){console.warn(`[briefs] restore failed`,e),d()}},[C,d,y,x]),F=(0,u.useCallback)(()=>{C&&(x(C.url),w(null))},[C,x]),I=(0,u.useMemo)(()=>{let e={all:s.length,notion:0,linear:0,"slack-canvas":0,"google-docs":0,"github-wiki":0,other:0};for(let t of s)e[t.platform]+=1;return e},[s]),[L,R]=(0,u.useState)(``);return(0,u.useEffect)(()=>{let e=setTimeout(()=>{R(s.length===0?`No briefs match the current filters.`:`Reading list, ${s.length} ${s.length===1?`brief`:`briefs`} shown.`)},400);return()=>clearTimeout(e)},[e,n,o,s.length]),(0,h.jsxs)(`div`,{className:`page-content-frame ${m.page}`,children:[(0,h.jsx)(`div`,{className:m.header,children:(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`h1`,{className:m.title,children:`Briefs`}),(0,h.jsx)(`p`,{className:m.subtitle,children:`External docs your scheduled agents have written to. Notion pages, Linear issues, Slack canvases, and shared docs, in reverse chronology.`})]})}),(0,h.jsxs)(`div`,{className:m.controls,children:[(0,h.jsxs)(`div`,{className:m.sortToggle,role:`group`,"aria-label":`Sort briefs`,children:[(0,h.jsx)(`button`,{type:`button`,className:`${m.sortBtn} ${e===`recency`?m.sortBtnActive:``}`,"aria-pressed":e===`recency`,onClick:()=>t(`recency`),children:`Recent`}),(0,h.jsx)(`button`,{type:`button`,className:`${m.sortBtn} ${e===`frequency`?m.sortBtnActive:``}`,"aria-pressed":e===`frequency`,onClick:()=>t(`frequency`),children:`Frequent`}),(0,h.jsx)(`button`,{type:`button`,className:`${m.sortBtn} ${e===`mentioned`?m.sortBtnActive:``}`,"aria-pressed":e===`mentioned`,onClick:()=>t(`mentioned`),children:`Mentioned`})]}),(0,h.jsxs)(`label`,{className:m.search,children:[(0,h.jsx)(`span`,{className:m.srOnly,children:`Search briefs`}),(0,h.jsxs)(`svg`,{className:m.searchIcon,viewBox:`0 0 20 20`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,"aria-hidden":`true`,children:[(0,h.jsx)(`circle`,{cx:`9`,cy:`9`,r:`6`}),(0,h.jsx)(`path`,{d:`m17 17-3.5-3.5`,strokeLinecap:`round`})]}),(0,h.jsx)(`input`,{type:`search`,value:i,onChange:e=>a(e.target.value),placeholder:`Search title or domain`,className:m.searchInput})]})]}),(0,h.jsx)(`div`,{className:m.chipRow,role:`group`,"aria-label":`Filter by platform`,children:k.map(e=>{let t=n===e;return(0,h.jsx)(v,{platform:e,active:t,count:e===`all`||t||n===`all`?I[e]:void 0,onClick:()=>r(e)},e)})}),(0,h.jsx)(`div`,{className:m.srOnly,role:`status`,"aria-live":`polite`,children:L}),l&&!c&&(0,h.jsxs)(`div`,{role:`status`,className:m.errorBanner,children:[(0,h.jsxs)(`span`,{children:[`Couldn't load briefs: `,l]}),(0,h.jsx)(`button`,{type:`button`,onClick:d,className:m.errorRetry,children:`Retry`})]}),E&&(0,h.jsxs)(`div`,{role:`status`,className:m.errorBanner,children:[(0,h.jsx)(`span`,{children:`Couldn't save title — try again.`}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>D(null),className:m.errorRetry,children:`Dismiss`})]}),c&&s.length===0?(0,h.jsx)(M,{}):s.length===0?(0,h.jsx)(j,{query:i,platform:n}):(0,h.jsx)(`ol`,{className:m.list,"aria-label":`Briefs`,children:s.map((e,t)=>(0,h.jsx)(T,{brief:e,index:t,onEdit:A,onDelete:N,pulseToken:S.get(e.url)},e.url))}),C&&(0,h.jsx)(O,{message:`Brief hidden`,onUndo:P,onDismiss:F,durationMs:5e3},C.url)]})}function j({query:e,platform:t}){let n=e.trim().length>0||t!==`all`,r=t===`all`?null:g[t].label;return(0,h.jsxs)(`div`,{className:m.empty,children:[(0,h.jsx)(`p`,{className:m.emptyHeadline,children:n?`No briefs match.`:`Nothing on the shelf yet.`}),(0,h.jsx)(`p`,{className:m.emptyBody,children:n?`Try clearing the search${r?` or the ${r} filter`:``}.`:`Once your scheduled agents publish to Notion, Linear, Slack canvases, Docs, or wikis, those entries will collect here as a reading list.`})]})}function M(){return(0,h.jsx)(`ol`,{className:m.list,"aria-label":`Loading briefs`,children:Array.from({length:6}).map((e,t)=>(0,h.jsxs)(`li`,{className:m.skeletonCard,style:{animationDelay:`${t*60}ms`},children:[(0,h.jsx)(`span`,{className:m.skeletonGlyph}),(0,h.jsxs)(`span`,{className:m.skeletonBody,children:[(0,h.jsx)(`span`,{className:m.skeletonTitle}),(0,h.jsx)(`span`,{className:m.skeletonMeta})]}),(0,h.jsx)(`span`,{className:m.skeletonTime})]},t))})}export{A as BriefsPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._page_mkrqf_10{--p-notion:#ad9285;--p-linear:#867de8;--p-slack:#db70a6;--p-gdocs:#639be9;--p-wiki:#6aafaf;--p-other:#a99670;--p-all:var(--color-text);min-width:0;max-width:1280px;padding:24px 32px 96px}:root._light_mkrqf_25 ._page_mkrqf_10{--p-notion:#705243;--p-linear:#4033cc;--p-slack:#b23473;--p-gdocs:#2265c3;--p-wiki:#367d7d;--p-other:#857047}@media (width<=767px){._page_mkrqf_10{padding:16px 14px 96px}}._header_mkrqf_42{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px;display:flex}._title_mkrqf_51{color:var(--color-text);margin:0;font-size:22px;font-weight:600}._subtitle_mkrqf_58{color:var(--color-text-muted);margin:4px 0 0;font-size:13px}@media (width<=767px){._title_mkrqf_51{font-size:19px}}._controls_mkrqf_72{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}._sortToggle_mkrqf_81{border:1px solid var(--color-border);background:var(--color-bg-raised);border-radius:10px;flex-wrap:wrap;gap:4px;padding:4px;display:flex}._sortBtn_mkrqf_91{min-height:36px;color:var(--color-text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;align-items:center;gap:6px;padding:8px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}._sortBtn_mkrqf_91:hover{background:var(--color-bg-raised-alt,#8b949e1a);color:var(--color-text)}._sortBtn_mkrqf_91:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._sortBtnActive_mkrqf_119{color:var(--color-primary);background:#bc8cff24}._sortBtnActive_mkrqf_119:hover{color:var(--color-primary);background:#bc8cff2e}._search_mkrqf_130{background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:8px;flex:1;align-items:center;gap:6px;min-width:220px;max-width:360px;min-height:36px;padding:0 12px;transition:border-color .18s,box-shadow .18s;display:flex;position:relative}._search_mkrqf_130:focus-within{border-color:var(--color-primary-muted);box-shadow:0 0 0 3px var(--color-primary-soft)}._searchIcon_mkrqf_151{color:var(--color-text-subtle);flex-shrink:0}._searchInput_mkrqf_156{min-width:0;color:var(--color-text);background:0 0;border:none;outline:none;flex:1;padding:6px 0;font-family:inherit;font-size:13px}._searchInput_mkrqf_156::placeholder{color:var(--color-text-subtle)}._chipRow_mkrqf_173{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}._filter_mkrqf_180{cursor:pointer;min-height:32px;color:var(--color-text-muted);-webkit-tap-highlight-color:transparent;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:7px;padding:5px 12px 5px 8px;font-family:inherit;font-size:12.5px;transition:background .18s,color .18s,border-color .18s;display:inline-flex;position:relative;overflow:hidden}._filter_mkrqf_180:hover{color:var(--color-text);border-color:var(--color-border)}._filter_mkrqf_180:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._filterActive_mkrqf_209{background:hsl(var(--bg-h) var(--bg-s) calc(var(--bg-l) + 6%));border-color:var(--filter-tint,var(--color-text));color:var(--color-text)}._filterActive_mkrqf_209:before{content:"";background:var(--filter-tint,var(--color-text));opacity:.06;pointer-events:none;position:absolute;inset:0}._filterLabel_mkrqf_224{font-weight:500}._filterCount_mkrqf_228{font-family:var(--font-mono);color:var(--color-text-subtle);font-variant-numeric:tabular-nums;padding-left:4px;font-size:10.5px}._filterActive_mkrqf_209 ._filterCount_mkrqf_228{color:var(--color-text-muted)}._glyph_mkrqf_241{background:hsl(var(--bg-h) var(--bg-s) calc(var(--bg-l) + 6%));color:var(--glyph-tint,var(--color-text));border:1px solid color-mix(in srgb, var(--glyph-tint,var(--color-text)) 40%, transparent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:inherit;font-weight:600;display:inline-flex}._glyphSm_mkrqf_254{width:18px;height:18px;font-size:10.5px}._glyphMd_mkrqf_260{width:32px;height:32px;font-size:13px}._list_mkrqf_268{border:1px solid var(--color-border);background:var(--color-bg-raised);border-radius:10px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}._card_mkrqf_282{border-bottom:1px solid var(--color-border);--card-tint:var(--color-text);grid-template-columns:32px 1fr auto;align-items:center;gap:14px;padding:14px 16px;transition:background .15s;animation:.36s ease-out both _brief-card-in_mkrqf_1;display:grid;position:relative}._card_mkrqf_282:hover{background:var(--color-hover,#8b949e0f)}._card_mkrqf_282:last-child{border-bottom:none}@media (width<=480px){._card_mkrqf_282{grid-template-columns:28px 1fr auto;gap:10px;padding:12px}}._cardPulse_mkrqf_312{animation:.36s ease-out both _brief-card-in_mkrqf_1,.9s ease-out _brief-pulse_mkrqf_1}._cardGlyph_mkrqf_316{display:inline-flex}._cardBody_mkrqf_320{min-width:0}._cardTitle_mkrqf_324{color:var(--color-text);margin:0 0 2px;font-family:inherit;font-size:14px;font-weight:500;line-height:1.35}._cardTitleLink_mkrqf_333{color:var(--color-text);text-decoration:none;transition:color .18s}._cardTitleLink_mkrqf_333:hover{color:var(--color-primary)}._cardTitleLink_mkrqf_333:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}._cardTitleFallback_mkrqf_350{color:var(--color-text-muted);font-style:italic}._cardMeta_mkrqf_355{color:var(--color-text-subtle);flex-wrap:wrap;align-items:center;gap:6px;margin:0;font-size:12px;line-height:1.4;display:flex}._cardHost_mkrqf_366{font-family:var(--font-mono);color:var(--color-text-muted);font-size:11.5px}._cardWrites_mkrqf_372 strong{color:var(--color-text-muted);font-style:normal;font-weight:600}._cardRefs_mkrqf_378{font-style:normal}._cardJobLink_mkrqf_382{cursor:pointer;font:inherit;color:var(--color-text-muted);text-underline-offset:3px;background:0 0;border:none;margin:0;padding:0;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;transition:text-decoration-color .18s,color .18s}._cardJobLink_mkrqf_382:hover{color:var(--color-text);-webkit-text-decoration-color:var(--color-text-subtle);text-decoration-color:var(--color-text-subtle)}._cardJobLink_mkrqf_382:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}._cardJobName_mkrqf_407{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:32ch;overflow:hidden}._cardDot_mkrqf_416{color:var(--color-text-subtle);opacity:.5}._cardTime_mkrqf_421{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-text-subtle);white-space:nowrap;align-items:center;gap:4px;font-size:11.5px;display:flex}._cardOverflow_mkrqf_434{display:inline-flex;position:relative}._cardOverflowBtn_mkrqf_439{width:32px;height:32px;color:var(--color-text-subtle);cursor:pointer;font:inherit;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;font-size:16px;line-height:1;transition:background .18s,color .18s;display:inline-flex}._cardOverflowBtn_mkrqf_439:hover{color:var(--color-text);background:var(--color-bg-raised-alt,#8b949e1a)}._cardOverflowBtn_mkrqf_439:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;color:var(--color-text)}._cardOverflowBtn_mkrqf_439[aria-expanded=true]{color:var(--color-text);background:var(--color-bg-raised-alt,#8b949e1a)}@media (width<=480px){._cardOverflowBtn_mkrqf_439{width:44px;height:44px}}._cardTitleEditor_mkrqf_481{flex-direction:column;gap:4px;margin:0 0 2px;display:flex}._cardTitleInput_mkrqf_488{color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;outline:none;width:100%;min-height:32px;padding:6px 8px;font-family:inherit;font-size:14px;font-weight:500;line-height:1.35}._cardTitleInput_mkrqf_488:focus{border-color:var(--color-primary-muted);box-shadow:0 0 0 3px var(--color-primary-soft)}._cardResetTitle_mkrqf_508{color:var(--color-text-muted);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:4px 0;font-family:inherit;font-size:11.5px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;transition:color .18s,text-decoration-color .18s}._cardResetTitle_mkrqf_508:hover{color:var(--color-text);-webkit-text-decoration-color:var(--color-text-subtle);text-decoration-color:var(--color-text-subtle)}._cardResetTitle_mkrqf_508:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}._errorBanner_mkrqf_536{background:color-mix(in srgb, var(--color-warning) 10%, transparent);border:1px solid color-mix(in srgb, var(--color-warning) 32%, transparent);color:var(--color-text);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;font-size:13px;display:flex}._errorRetry_mkrqf_550{font:inherit;cursor:pointer;color:inherit;background:0 0;border:1px solid;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500;transition:background .18s}._errorRetry_mkrqf_550:hover,._errorRetry_mkrqf_550:focus-visible{background:color-mix(in srgb, currentColor 8%, transparent)}._errorRetry_mkrqf_550:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._empty_mkrqf_575{text-align:center;border:1px solid var(--color-border);background:var(--color-bg-raised);border-radius:10px;padding:56px 16px}._emptyHeadline_mkrqf_583{color:var(--color-text);margin:0 0 6px;font-size:16px;font-weight:600}._emptyBody_mkrqf_590{color:var(--color-text-muted);max-width:56ch;margin:0 auto;font-size:13px;line-height:1.5}._skeletonCard_mkrqf_600{border-bottom:1px solid var(--color-border);grid-template-columns:32px 1fr auto;align-items:center;gap:14px;padding:14px 16px;animation:.36s ease-out both _brief-card-in_mkrqf_1;display:grid}._skeletonCard_mkrqf_600:last-child{border-bottom:none}._skeletonGlyph_mkrqf_614{background:linear-gradient(90deg, var(--color-bg) 25%, var(--color-hover) 50%, var(--color-bg) 75%);background-size:200% 100%;border-radius:50%;width:32px;height:32px;animation:1.6s linear infinite _brief-shimmer_mkrqf_1}._skeletonBody_mkrqf_628{flex-direction:column;gap:6px;min-width:0;display:flex}._skeletonTitle_mkrqf_635{background:linear-gradient(90deg, var(--color-bg) 25%, var(--color-hover) 50%, var(--color-bg) 75%);background-size:200% 100%;border-radius:4px;width:70%;height:14px;animation:1.6s linear infinite _brief-shimmer_mkrqf_1}._skeletonMeta_mkrqf_649{background:linear-gradient(90deg, var(--color-bg) 25%, var(--color-hover) 50%, var(--color-bg) 75%);background-size:200% 100%;border-radius:3px;width:45%;height:11px;animation:1.6s linear infinite _brief-shimmer_mkrqf_1}._skeletonTime_mkrqf_663{background:var(--color-bg);border-radius:3px;width:28px;height:11px}._srOnly_mkrqf_672{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes _brief-card-in_mkrqf_1{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes _brief-pulse_mkrqf_1{0%,to{background:0 0}20%{background:color-mix(in srgb, var(--card-tint) 8%, transparent)}}@keyframes _brief-shimmer_mkrqf_1{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){._card_mkrqf_282,._skeletonCard_mkrqf_600,._cardPulse_mkrqf_312,._skeletonGlyph_mkrqf_614,._skeletonTitle_mkrqf_635,._skeletonMeta_mkrqf_649{transition:none!important;animation:none!important}}._menu_d9qv0_6{background:var(--color-surface-1,var(--color-bg-raised,#fff));border:1px solid var(--color-border,#e0d8c8);z-index:100;border-radius:8px;min-width:180px;margin:0;padding:4px;list-style:none;box-shadow:0 6px 16px #0000002e}._item_d9qv0_18{text-align:left;width:100%;font:inherit;cursor:pointer;min-height:44px;color:inherit;background:0 0;border:0;border-radius:4px;padding:10px 14px;display:block}._item_d9qv0_18:hover,._item_d9qv0_18:focus-visible{background:var(--color-surface-2,var(--color-hover,#f5efe2));outline:none}._item_d9qv0_18:focus-visible{outline:2px solid var(--color-focus-ring,#d49a3a);outline-offset:-2px}._danger_d9qv0_43{color:var(--color-negative)}._danger_d9qv0_43:hover,._danger_d9qv0_43:focus-visible{background:color-mix(in srgb, var(--color-negative) 8%, transparent)}._toast_1kfii_1{background:var(--color-surface-elev,#2b2419);color:var(--color-surface-elev-fg,#f8f3e8);z-index:100;border-radius:999px;align-items:center;gap:12px;padding:12px 16px;animation:.22s ease-out _toast-in_1kfii_1;display:flex;position:fixed;bottom:88px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 8px 24px #0000002e}@keyframes _toast-in_1kfii_1{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}._undo_1kfii_30{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;min-width:44px;min-height:44px;padding:8px 12px;font-weight:600}._undo_1kfii_30:hover,._undo_1kfii_30:focus-visible{background:#ffffff1a;outline:none}._undo_1kfii_30:focus-visible{outline-offset:2px;outline:2px solid}._progress_1kfii_54{background:var(--color-accent,#d49a3a);height:2px;transition:width 50ms linear;position:absolute;bottom:0;left:0}@media (prefers-reduced-motion:reduce){._progress_1kfii_54{transition:none}._toast_1kfii_1{animation:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._button_shnku_1{border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-hover);color:var(--color-text);cursor:pointer;align-items:center;gap:6px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;transition:border-color .15s,background .15s,color .15s,transform .1s;display:inline-flex}._button_shnku_1:hover{border-color:var(--color-border-strong)}._button_shnku_1:active{transform:scale(.97)}._button_shnku_1:disabled{opacity:.5;cursor:not-allowed;transform:none}._sizeSm_shnku_28{padding:5px 10px;font-size:12px}._sizeMd_shnku_29{padding:8px 14px;font-size:13px}._variantPrimary_shnku_31{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}._variantPrimary_shnku_31:hover{background:var(--color-primary);color:var(--color-bg)}._variantDanger_shnku_41{border-color:var(--color-negative);color:var(--color-negative)}._variantDanger_shnku_41:hover{background:var(--color-negative);color:#fff}._variantPositive_shnku_50{border-color:var(--color-positive);color:var(--color-positive)}._variantPositive_shnku_50:hover{background:var(--color-positive);color:var(--color-bg)}._variantGhost_shnku_59{background:0 0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-Bq3x7umQ.js";var t={button:`_button_shnku_1`,sizeSm:`_sizeSm_shnku_28`,sizeMd:`_sizeMd_shnku_29`,variantPrimary:`_variantPrimary_shnku_31`,variantDanger:`_variantDanger_shnku_41`,variantPositive:`_variantPositive_shnku_50`,variantGhost:`_variantGhost_shnku_59`},n=e(),r={default:``,primary:t.variantPrimary,danger:t.variantDanger,positive:t.variantPositive,ghost:t.variantGhost},i={sm:t.sizeSm,md:t.sizeMd};function a({variant:e=`default`,size:a=`md`,className:o,children:s,type:c=`button`,...l}){return(0,n.jsx)(`button`,{type:c,className:[t.button,i[a],r[e],o].filter(Boolean).join(` `),...l,children:s})}export{a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._card_1oyi9_1{background:var(--color-bg-raised);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-sizing:border-box}._paddingNone_1oyi9_8{padding:0}._paddingSm_1oyi9_9{padding:8px 12px}._paddingMd_1oyi9_10{padding:12px 16px}._paddingLg_1oyi9_11{padding:16px 20px}._variantSunken_1oyi9_13{background:var(--color-bg-sunken)}._variantFlat_1oyi9_14{background:0 0;border-color:#0000}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-Bq3x7umQ.js";var t={card:`_card_1oyi9_1`,paddingNone:`_paddingNone_1oyi9_8`,paddingSm:`_paddingSm_1oyi9_9`,paddingMd:`_paddingMd_1oyi9_10`,paddingLg:`_paddingLg_1oyi9_11`,variantSunken:`_variantSunken_1oyi9_13`,variantFlat:`_variantFlat_1oyi9_14`},n=e(),r={none:t.paddingNone,sm:t.paddingSm,md:t.paddingMd,lg:t.paddingLg},i={default:``,sunken:t.variantSunken,flat:t.variantFlat};function a({padding:e=`md`,variant:a=`default`,className:o,children:s,...c}){return(0,n.jsx)(`div`,{className:[t.card,r[e],i[a],o].filter(Boolean).join(` `),...c,children:s})}export{a as t};
|