@burdenoff/microfe-vibecontrols 2026.601.23 → 2026.602.2
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/components/tunnels/TunnelCreateWizard.js +1 -1
- package/dist/components/tunnels/TunnelCreateWizard.js.map +1 -1
- package/dist/components/vibes/DeleteVibeDialog.js +130 -0
- package/dist/components/vibes/DeleteVibeDialog.js.map +1 -0
- package/dist/components/vibes/VibeCard.js +64 -56
- package/dist/components/vibes/VibeCard.js.map +1 -1
- package/dist/components/vibes/VibeList.js +132 -113
- package/dist/components/vibes/VibeList.js.map +1 -1
- package/dist/components/vibes/index.js +1 -0
- package/dist/generated/wspace-operations.js +2 -2
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +560 -523
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/VibesPage.js +311 -280
- package/dist/pages/VibesPage.js.map +1 -1
- package/dist/pages/tunnels/TunnelDetailsPage.js +192 -80
- package/dist/pages/tunnels/TunnelDetailsPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeList.js","names":[],"sources":["../../../src/components/vibes/VibeList.tsx"],"sourcesContent":["import type { Vibe } from './types';\nimport { vibeTypeIcons } from './icons';\nimport { StatusBadge } from '../shared/StatusBadge';\nimport { EmptyState } from '../shared/EmptyState';\nimport { SelectionCheckbox } from '../shared/SelectionCheckbox';\nimport {\n FolderOpen,\n Plus,\n GitBranch,\n Tag,\n MoreVertical,\n Play,\n Archive,\n Settings,\n ExternalLink,\n} from 'lucide-react';\nimport { useState } from 'react';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface VibeListProps {\n vibes: Vibe[];\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onCreateNew?: () => void;\n isLoading?: boolean;\n selectedVibeIds?: Set<string>;\n onToggleSelect?: (vibe: Vibe, checked: boolean) => void;\n onToggleAllVisible?: (checked: boolean) => void;\n allVisibleSelected?: boolean;\n partiallySelected?: boolean;\n}\n\n/**\n * Mobile card view for a single vibe\n */\nfunction VibeListCard({\n vibe,\n onOpen,\n onActivate,\n onOpenInEditor,\n onArchive,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n (() => onOpen?.(vibe))();\n }\n }}\n className=\"p-4 border border-border-default rounded-lg bg-bg-surface hover:bg-bg-sunken/50 cursor-pointer transition-colors\"\n onClick={() => onOpen?.(vibe)}\n >\n {/* Header: Icon, Name, Status */}\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 min-w-0 flex-1\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n <Icon className=\"size-5 text-action-primary-bg flex-shrink-0 mt-0.5\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate mt-0.5\">{vibe.description}</p>\n )}\n </div>\n </div>\n <StatusBadge status={vibe.status} />\n </div>\n\n {/* Meta info row */}\n <div className=\"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-text-secondary\">\n {vibe.gitBranch && (\n <span className=\"flex items-center gap-1\">\n <GitBranch className=\"size-3\" />\n {vibe.gitBranch}\n </span>\n )}\n {vibe.tags && vibe.tags.length > 0 && (\n <span className=\"flex items-center gap-1\">\n <Tag className=\"size-3\" />\n {vibe.tags.length} tag{vibe.tags.length !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n\n {/* Path (if exists) */}\n {vibe.path && (\n <div className=\"mt-2 text-xs font-mono text-text-muted truncate\">{vibe.path}</div>\n )}\n\n {/* Actions */}\n <div className=\"mt-3 flex items-center gap-2 justify-end border-t border-border-default pt-3\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Activate\"\n >\n <Play className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Open in VS Code\"\n >\n <ExternalLink className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Archive\"\n >\n <Archive className=\"size-4 text-text-secondary\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n\nfunction VibeRow({\n vibe,\n onOpen,\n onEdit,\n onArchive,\n onActivate,\n onOpenInEditor,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const [showMenu, setShowMenu] = useState(false);\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <tr\n className={`border-b border-border-default hover:bg-bg-sunken/50 cursor-pointer transition-colors ${\n selected ? 'bg-bg-sunken/40' : ''\n }`}\n onClick={() => onOpen?.(vibe)}\n >\n <td className=\"px-4 py-3\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <Icon className=\"size-4 text-action-primary-bg shrink-0\" />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate max-w-[250px]\">{vibe.description}</p>\n )}\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <StatusBadge status={vibe.status} />\n </td>\n <td className=\"px-4 py-3\">\n {vibe.path ? (\n <span className=\"text-xs font-mono text-text-muted truncate block max-w-[180px]\">\n {vibe.path}\n </span>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.gitBranch ? (\n <div className=\"flex items-center gap-1.5 text-xs text-text-secondary\">\n <GitBranch className=\"size-3\" />\n <span className=\"truncate max-w-[100px]\">{vibe.gitBranch}</span>\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.tags && vibe.tags.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {vibe.tags.slice(0, 2).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\"\n >\n <Tag className=\"size-2.5\" />\n {tag}\n </span>\n ))}\n {vibe.tags.length > 2 && (\n <span className=\"px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{vibe.tags.length - 2}\n </span>\n )}\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-1 justify-end\">\n {(onEdit || onArchive || onActivate || onOpenInEditor) && (\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n setShowMenu(!showMenu);\n }}\n className=\"p-1.5 rounded hover:bg-bg-sunken transition-colors\"\n >\n <MoreVertical className=\"size-3.5 text-text-secondary\" />\n </button>\n {showMenu && (\n <div className=\"absolute right-0 mt-1 w-36 bg-bg-surface border border-border-default rounded-lg shadow-lg z-10\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-t-lg\"\n >\n <Play className=\"size-4\" />\n Activate\n </button>\n )}\n {onEdit && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onEdit(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Settings className=\"size-4\" />\n Edit\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <ExternalLink className=\"size-4\" />\n Open in VS Code\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-b-lg\"\n >\n <Archive className=\"size-4\" />\n Archive\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n </tr>\n );\n}\n\nexport function VibeList({\n vibes,\n onOpen,\n onEdit,\n onArchive,\n onActivate,\n onOpenInEditor,\n onCreateNew,\n isLoading,\n selectedVibeIds = new Set<string>(),\n onToggleSelect,\n onToggleAllVisible,\n allVisibleSelected = false,\n partiallySelected = false,\n}: VibeListProps) {\n const tr = useTr();\n\n if (!isLoading && vibes.length === 0) {\n return (\n <EmptyState\n icon={<FolderOpen className=\"size-8 text-text-secondary\" />}\n title={tr('vibecontrols.vibes.list.emptyTitle', 'No vibes yet')}\n description={tr(\n 'vibecontrols.vibes.list.emptyDescription',\n 'Vibes are your development projects and environments. Create your first vibe to organize your work.'\n )}\n action={\n onCreateNew && (\n <button\n type=\"button\"\n onClick={onCreateNew}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors\"\n >\n <Plus className=\"size-4\" />\n {tr('vibecontrols.vibes.list.createVibe', 'Create Vibe')}\n </button>\n )\n }\n />\n );\n }\n\n return (\n <>\n {/* Mobile: Card view */}\n <div className=\"sm:hidden space-y-3\">\n {vibes.map((vibe) => (\n <VibeListCard\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n onArchive={onArchive}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined}\n />\n ))}\n </div>\n\n {/* Desktop: Table view */}\n <div className=\"hidden sm:block border border-border-default rounded-lg overflow-visible\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider w-12\">\n {onToggleAllVisible ? (\n <SelectionCheckbox\n checked={allVisibleSelected}\n indeterminate={partiallySelected}\n onChange={onToggleAllVisible}\n ariaLabel=\"Select all visible vibes\"\n />\n ) : null}\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Name\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Path\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Branch\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Tags\n </th>\n <th className=\"px-4 py-2.5 text-right text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n {vibes.map((vibe) => (\n <VibeRow\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onEdit={onEdit}\n onArchive={onArchive}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={\n onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined\n }\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;;;AAsCA,SAAS,EAAa,EACpB,SACA,WACA,eACA,mBACA,cACA,aACA,qBASC;CACD,IAAM,IAAO,EAAc,EAAK,SAAS;AAEzC,QACE,kBAAC,OAAD;EACE,MAAK;EACL,UAAU;EACV,YAAY,MAAM;AAChB,IAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,SACjC,EAAE,gBAAgB,EACX,IAAS,EAAK;;EAGzB,WAAU;EACV,eAAe,IAAS,EAAK;YAV/B;GAaE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,KACC,kBAAC,OAAD;OAAK,UAAU,MAAU,EAAM,iBAAiB;iBAC9C,kBAAC,GAAD;QACE,SAAS,CAAC,CAAC;QACX,UAAU;QACV,WAAW,eAAe,EAAK;QAC/B,CAAA;OACE,CAAA;MAER,kBAAC,GAAD,EAAM,WAAU,sDAAuD,CAAA;MACvE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAkD,EAAK;QAAS,CAAA,EAC5E,EAAK,eACJ,kBAAC,KAAD;QAAG,WAAU;kBAA2C,EAAK;QAAgB,CAAA,CAE3E;;MACF;QACN,kBAAC,GAAD,EAAa,QAAQ,EAAK,QAAU,CAAA,CAChC;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,EAAK,aACJ,kBAAC,QAAD;KAAM,WAAU;eAAhB,CACE,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA,EAC/B,EAAK,UACD;QAER,EAAK,QAAQ,EAAK,KAAK,SAAS,KAC/B,kBAAC,QAAD;KAAM,WAAU;eAAhB;MACE,kBAAC,GAAD,EAAK,WAAU,UAAW,CAAA;MACzB,EAAK,KAAK;MAAO;MAAK,EAAK,KAAK,WAAW,IAAU,KAAN;MAC3C;OAEL;;GAGL,EAAK,QACJ,kBAAC,OAAD;IAAK,WAAU;cAAmD,EAAK;IAAW,CAAA;GAIpF,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KAAc,EAAK,WAAW,YAC7B,kBAAC,UAAD;MACE,MAAK;MACL,UAAU,MAAM;AAEd,OADA,EAAE,iBAAiB,EACnB,EAAW,EAAK;;MAElB,WAAU;MACV,OAAM;gBAEN,kBAAC,GAAD,EAAM,WAAU,8BAA+B,CAAA;MACxC,CAAA;KAEV,KAAkB,EAAK,QACtB,kBAAC,UAAD;MACE,MAAK;MACL,UAAU,MAAM;AAEd,OADA,EAAE,iBAAiB,EACnB,EAAe,EAAK;;MAEtB,WAAU;MACV,OAAM;gBAEN,kBAAC,GAAD,EAAc,WAAU,8BAA+B,CAAA;MAChD,CAAA;KAEV,KAAa,EAAK,WAAW,cAC5B,kBAAC,UAAD;MACE,MAAK;MACL,UAAU,MAAM;AAEd,OADA,EAAE,iBAAiB,EACnB,EAAU,EAAK;;MAEjB,WAAU;MACV,OAAM;gBAEN,kBAAC,GAAD,EAAS,WAAU,8BAA+B,CAAA;MAC3C,CAAA;KAEP;;GACF;;;AAIV,SAAS,EAAQ,EACf,SACA,WACA,WACA,cACA,eACA,mBACA,aACA,qBAUC;CACD,IAAM,CAAC,GAAU,KAAe,EAAS,GAAM,EACzC,IAAO,EAAc,EAAK,SAAS;AAEzC,QACE,kBAAC,MAAD;EACE,WAAW,yFACT,IAAW,oBAAoB;EAEjC,eAAe,IAAS,EAAK;YAJ/B;GAME,kBAAC,MAAD;IAAI,WAAU;cACX,KACC,kBAAC,OAAD;KAAK,UAAU,MAAU,EAAM,iBAAiB;eAC9C,kBAAC,GAAD;MACE,SAAS,CAAC,CAAC;MACX,UAAU;MACV,WAAW,eAAe,EAAK;MAC/B,CAAA;KACE,CAAA;IAEL,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAM,WAAU,0CAA2C,CAAA,EAC3D,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAkD,EAAK;OAAS,CAAA,EAC5E,EAAK,eACJ,kBAAC,KAAD;OAAG,WAAU;iBAAkD,EAAK;OAAgB,CAAA,CAElF;QACF;;IACH,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,GAAD,EAAa,QAAQ,EAAK,QAAU,CAAA;IACjC,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACX,EAAK,OACJ,kBAAC,QAAD;KAAM,WAAU;eACb,EAAK;KACD,CAAA,GAEP,kBAAC,QAAD;KAAM,WAAU;eAA0B;KAAQ,CAAA;IAEjD,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACX,EAAK,YACJ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA,EAChC,kBAAC,QAAD;MAAM,WAAU;gBAA0B,EAAK;MAAiB,CAAA,CAC5D;SAEN,kBAAC,QAAD;KAAM,WAAU;eAA0B;KAAQ,CAAA;IAEjD,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACX,EAAK,QAAQ,EAAK,KAAK,SAAS,IAC/B,kBAAC,OAAD;KAAK,WAAU;eAAf,CACG,EAAK,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK,MAC1B,kBAAC,QAAD;MAEE,WAAU;gBAFZ,CAIE,kBAAC,GAAD,EAAK,WAAU,YAAa,CAAA,EAC3B,EACI;QALA,EAKA,CACP,EACD,EAAK,KAAK,SAAS,KAClB,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CAAiF,KAC7E,EAAK,KAAK,SAAS,EAChB;QAEL;SAEN,kBAAC,QAAD;KAAM,WAAU;eAA0B;KAAQ,CAAA;IAEjD,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,OAAD;KAAK,WAAU;gBACX,KAAU,KAAa,KAAc,MACrC,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,UAAD;OACE,MAAK;OACL,UAAU,MAAM;AAEd,QADA,EAAE,iBAAiB,EACnB,EAAY,CAAC,EAAS;;OAExB,WAAU;iBAEV,kBAAC,GAAD,EAAc,WAAU,gCAAiC,CAAA;OAClD,CAAA,EACR,KACC,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACG,KAAc,EAAK,WAAW,YAC7B,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAW,EAAK,EAChB,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA,EAAA,WAEpB;;QAEV,KACC,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAO,EAAK,EACZ,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAU,WAAU,UAAW,CAAA,EAAA,OAExB;;QAEV,KAAkB,EAAK,QACtB,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAe,EAAK,EACpB,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAc,WAAU,UAAW,CAAA,EAAA,kBAE5B;;QAEV,KAAa,EAAK,WAAW,cAC5B,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAU,EAAK,EACf,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAS,WAAU,UAAW,CAAA,EAAA,UAEvB;;QAEP;SAEJ;;KAEJ,CAAA;IACH,CAAA;GACF;;;AAIT,SAAgB,EAAS,EACvB,UACA,WACA,WACA,cACA,eACA,mBACA,gBACA,cACA,qCAAkB,IAAI,KAAa,EACnC,mBACA,uBACA,wBAAqB,IACrB,uBAAoB,MACJ;CAChB,IAAM,IAAK,GAAO;AA2BlB,QAzBI,CAAC,KAAa,EAAM,WAAW,IAE/B,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAY,WAAU,8BAA+B,CAAA;EAC3D,OAAO,EAAG,sCAAsC,eAAe;EAC/D,aAAa,EACX,4CACA,sGACD;EACD,QACE,KACE,kBAAC,UAAD;GACE,MAAK;GACL,SAAS;GACT,WAAU;aAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAG,sCAAsC,cAAc,CACjD;;EAGb,CAAA,GAKJ,kBAAA,GAAA,EAAA,UAAA,CAEE,kBAAC,OAAD;EAAK,WAAU;YACZ,EAAM,KAAK,MACV,kBAAC,GAAD;GAEQ;GACE;GACI;GACI;GACL;GACX,UAAU,EAAgB,IAAI,EAAK,GAAG;GACtC,gBAAgB,KAAkB,MAAY,EAAe,GAAM,EAAQ,GAAG,KAAA;GAC9E,EARK,EAAK,GAQV,CACF;EACE,CAAA,EAGN,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,SAAD;IAAO,WAAU;cAAjB,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD;KAAI,WAAU;eAAd;MACE,kBAAC,MAAD;OAAI,WAAU;iBACX,IACC,kBAAC,GAAD;QACE,SAAS;QACT,eAAe;QACf,UAAU;QACV,WAAU;QACV,CAAA,GACA;OACD,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBAAyF;OAElG,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBAAyF;OAElG,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBAAyF;OAElG,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBAAyF;OAElG,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBAAyF;OAElG,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBAA0F;OAEnG,CAAA;MACF;QACC,CAAA,EACR,kBAAC,SAAD,EAAA,UACG,EAAM,KAAK,MACV,kBAAC,GAAD;KAEQ;KACE;KACA;KACG;KACC;KACI;KAChB,UAAU,EAAgB,IAAI,EAAK,GAAG;KACtC,gBACE,KAAkB,MAAY,EAAe,GAAM,EAAQ,GAAG,KAAA;KAEhE,EAXK,EAAK,GAWV,CACF,EACI,CAAA,CACF;;GACJ,CAAA;EACF,CAAA,CACL,EAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"VibeList.js","names":[],"sources":["../../../src/components/vibes/VibeList.tsx"],"sourcesContent":["import type { Vibe } from './types';\nimport { vibeTypeIcons } from './icons';\nimport { StatusBadge } from '../shared/StatusBadge';\nimport { EmptyState } from '../shared/EmptyState';\nimport { SelectionCheckbox } from '../shared/SelectionCheckbox';\nimport {\n FolderOpen,\n Plus,\n GitBranch,\n Tag,\n MoreVertical,\n Play,\n Archive,\n Settings,\n ExternalLink,\n Trash2,\n} from 'lucide-react';\nimport { useState } from 'react';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface VibeListProps {\n vibes: Vibe[];\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onDelete?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onCreateNew?: () => void;\n isLoading?: boolean;\n selectedVibeIds?: Set<string>;\n onToggleSelect?: (vibe: Vibe, checked: boolean) => void;\n onToggleAllVisible?: (checked: boolean) => void;\n allVisibleSelected?: boolean;\n partiallySelected?: boolean;\n}\n\n/**\n * Mobile card view for a single vibe\n */\nfunction VibeListCard({\n vibe,\n onOpen,\n onActivate,\n onOpenInEditor,\n onArchive,\n onDelete,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onDelete?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n (() => onOpen?.(vibe))();\n }\n }}\n className=\"p-4 border border-border-default rounded-lg bg-bg-surface hover:bg-bg-sunken/50 cursor-pointer transition-colors\"\n onClick={() => onOpen?.(vibe)}\n >\n {/* Header: Icon, Name, Status */}\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 min-w-0 flex-1\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n <Icon className=\"size-5 text-action-primary-bg flex-shrink-0 mt-0.5\" />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate mt-0.5\">{vibe.description}</p>\n )}\n </div>\n </div>\n <StatusBadge status={vibe.status} />\n </div>\n\n {/* Meta info row */}\n <div className=\"mt-3 flex flex-wrap items-center gap-x-4 gap-y-2 text-xs text-text-secondary\">\n {vibe.gitBranch && (\n <span className=\"flex items-center gap-1\">\n <GitBranch className=\"size-3\" />\n {vibe.gitBranch}\n </span>\n )}\n {vibe.tags && vibe.tags.length > 0 && (\n <span className=\"flex items-center gap-1\">\n <Tag className=\"size-3\" />\n {vibe.tags.length} tag{vibe.tags.length !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n\n {/* Path (if exists) */}\n {vibe.path && (\n <div className=\"mt-2 text-xs font-mono text-text-muted truncate\">{vibe.path}</div>\n )}\n\n {/* Actions */}\n <div className=\"mt-3 flex items-center gap-2 justify-end border-t border-border-default pt-3\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Activate\"\n >\n <Play className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Open in VS Code\"\n >\n <ExternalLink className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Archive\"\n >\n <Archive className=\"size-4 text-text-secondary\" />\n </button>\n )}\n {onDelete && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(vibe);\n }}\n className=\"p-2 rounded hover:bg-bg-sunken transition-colors\"\n title=\"Delete\"\n >\n <Trash2 className=\"size-4 text-status-error-text\" />\n </button>\n )}\n </div>\n </div>\n );\n}\n\nfunction VibeRow({\n vibe,\n onOpen,\n onEdit,\n onArchive,\n onDelete,\n onActivate,\n onOpenInEditor,\n selected,\n onToggleSelect,\n}: {\n vibe: Vibe;\n onOpen?: (vibe: Vibe) => void;\n onEdit?: (vibe: Vibe) => void;\n onArchive?: (vibe: Vibe) => void;\n onDelete?: (vibe: Vibe) => void;\n onActivate?: (vibe: Vibe) => void;\n onOpenInEditor?: (vibe: Vibe) => void;\n selected?: boolean;\n onToggleSelect?: (checked: boolean) => void;\n}) {\n const [showMenu, setShowMenu] = useState(false);\n const Icon = vibeTypeIcons[vibe.type] || FolderOpen;\n\n return (\n <tr\n className={`border-b border-border-default hover:bg-bg-sunken/50 cursor-pointer transition-colors ${\n selected ? 'bg-bg-sunken/40' : ''\n }`}\n onClick={() => onOpen?.(vibe)}\n >\n <td className=\"px-4 py-3\">\n {onToggleSelect && (\n <div onClick={(event) => event.stopPropagation()}>\n <SelectionCheckbox\n checked={!!selected}\n onChange={onToggleSelect}\n ariaLabel={`Select vibe ${vibe.name}`}\n />\n </div>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <Icon className=\"size-4 text-action-primary-bg shrink-0\" />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{vibe.name}</p>\n {vibe.description && (\n <p className=\"text-xs text-text-muted truncate max-w-[250px]\">{vibe.description}</p>\n )}\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <StatusBadge status={vibe.status} />\n </td>\n <td className=\"px-4 py-3\">\n {vibe.path ? (\n <span className=\"text-xs font-mono text-text-muted truncate block max-w-[180px]\">\n {vibe.path}\n </span>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.gitBranch ? (\n <div className=\"flex items-center gap-1.5 text-xs text-text-secondary\">\n <GitBranch className=\"size-3\" />\n <span className=\"truncate max-w-[100px]\">{vibe.gitBranch}</span>\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n {vibe.tags && vibe.tags.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {vibe.tags.slice(0, 2).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\"\n >\n <Tag className=\"size-2.5\" />\n {tag}\n </span>\n ))}\n {vibe.tags.length > 2 && (\n <span className=\"px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{vibe.tags.length - 2}\n </span>\n )}\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-1 justify-end\">\n {(onEdit || onArchive || onDelete || onActivate || onOpenInEditor) && (\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n setShowMenu(!showMenu);\n }}\n className=\"p-1.5 rounded hover:bg-bg-sunken transition-colors\"\n >\n <MoreVertical className=\"size-3.5 text-text-secondary\" />\n </button>\n {showMenu && (\n <div className=\"absolute right-0 mt-1 w-36 bg-bg-surface border border-border-default rounded-lg shadow-lg z-10\">\n {onActivate && vibe.status !== 'ACTIVE' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActivate(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-t-lg\"\n >\n <Play className=\"size-4\" />\n Activate\n </button>\n )}\n {onEdit && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onEdit(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Settings className=\"size-4\" />\n Edit\n </button>\n )}\n {onOpenInEditor && vibe.path && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onOpenInEditor(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <ExternalLink className=\"size-4\" />\n Open in VS Code\n </button>\n )}\n {onArchive && vibe.status !== 'ARCHIVED' && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onArchive(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-b-lg\"\n >\n <Archive className=\"size-4\" />\n Archive\n </button>\n )}\n {onDelete && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(vibe);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-status-error-text hover:bg-bg-sunken rounded-b-lg\"\n >\n <Trash2 className=\"size-4\" />\n Delete\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n </tr>\n );\n}\n\nexport function VibeList({\n vibes,\n onOpen,\n onEdit,\n onArchive,\n onDelete,\n onActivate,\n onOpenInEditor,\n onCreateNew,\n isLoading,\n selectedVibeIds = new Set<string>(),\n onToggleSelect,\n onToggleAllVisible,\n allVisibleSelected = false,\n partiallySelected = false,\n}: VibeListProps) {\n const tr = useTr();\n\n if (!isLoading && vibes.length === 0) {\n return (\n <EmptyState\n icon={<FolderOpen className=\"size-8 text-text-secondary\" />}\n title={tr('vibecontrols.vibes.list.emptyTitle', 'No vibes yet')}\n description={tr(\n 'vibecontrols.vibes.list.emptyDescription',\n 'Vibes are your development projects and environments. Create your first vibe to organize your work.'\n )}\n action={\n onCreateNew && (\n <button\n type=\"button\"\n onClick={onCreateNew}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors\"\n >\n <Plus className=\"size-4\" />\n {tr('vibecontrols.vibes.list.createVibe', 'Create Vibe')}\n </button>\n )\n }\n />\n );\n }\n\n return (\n <>\n {/* Mobile: Card view */}\n <div className=\"sm:hidden space-y-3\">\n {vibes.map((vibe) => (\n <VibeListCard\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n onArchive={onArchive}\n onDelete={onDelete}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined}\n />\n ))}\n </div>\n\n {/* Desktop: Table view */}\n <div className=\"hidden sm:block border border-border-default rounded-lg overflow-visible\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider w-12\">\n {onToggleAllVisible ? (\n <SelectionCheckbox\n checked={allVisibleSelected}\n indeterminate={partiallySelected}\n onChange={onToggleAllVisible}\n ariaLabel=\"Select all visible vibes\"\n />\n ) : null}\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Name\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Path\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Branch\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Tags\n </th>\n <th className=\"px-4 py-2.5 text-right text-xs font-medium text-text-secondary uppercase tracking-wider\">\n Actions\n </th>\n </tr>\n </thead>\n <tbody>\n {vibes.map((vibe) => (\n <VibeRow\n key={vibe.id}\n vibe={vibe}\n onOpen={onOpen}\n onEdit={onEdit}\n onArchive={onArchive}\n onDelete={onDelete}\n onActivate={onActivate}\n onOpenInEditor={onOpenInEditor}\n selected={selectedVibeIds.has(vibe.id)}\n onToggleSelect={\n onToggleSelect ? (checked) => onToggleSelect(vibe, checked) : undefined\n }\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </>\n );\n}\n"],"mappings":"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"}
|
|
@@ -4053,8 +4053,8 @@ function Rs(e) {
|
|
|
4053
4053
|
return t.useMutation(Ls, r);
|
|
4054
4054
|
}
|
|
4055
4055
|
var zs = e`
|
|
4056
|
-
mutation DeleteVibe($id: ID
|
|
4057
|
-
deleteVibe(id: $id)
|
|
4056
|
+
mutation DeleteVibe($id: ID!, $deleteRelatedEntities: Boolean) {
|
|
4057
|
+
deleteVibe(id: $id, deleteRelatedEntities: $deleteRelatedEntities)
|
|
4058
4058
|
}
|
|
4059
4059
|
`;
|
|
4060
4060
|
function Bs(e) {
|