{"version":3,"file":"xxmachina-components-templates-flow-nodes-issue.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/templates/flow/nodes/issue/issue.node.ts","../../../../../packages/@xxmachina/components/src/lib/templates/flow/nodes/issue/issue.node.meta.ts","../../../../../packages/@xxmachina/components/src/lib/templates/flow/nodes/issue/xxmachina-components-templates-flow-nodes-issue.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type IssueStatus = 'open' | 'in_progress' | 'closed' | 'blocked';\nexport type IssuePriority = 'critical' | 'high' | 'medium' | 'low';\n\nexport interface IssueNodeData {\n  id: string;\n  title: string;\n  status: IssueStatus;\n  priority?: IssuePriority;\n  assignee?: string;\n  assigneeIcon?: string;\n  blockedBy?: string[];\n  level?: number;\n  row?: number;\n  /** Effective level calculated from current position */\n  effectiveLevel?: number;\n  /** Effective row calculated from current position */\n  effectiveRow?: number;\n}\n\n@Component({\n  selector: 'flow-issue-node',\n  standalone: true,\n  imports: [CommonModule, MatIconModule],\n  template: `\n    <div class=\"issue-node\" [class]=\"'s-' + data.status\" [class.has-deps]=\"hasDeps\">\n      <div class=\"issue-header\">\n        <span class=\"dot\"></span>\n        <span class=\"id\">#{{ data.id }}</span>\n        @if (data.priority) {\n          <span class=\"priority\" [class]=\"'p-' + data.priority\">\n            {{ data.priority[0] | uppercase }}\n          </span>\n        }\n      </div>\n      <div class=\"issue-title\">{{ data.title }}</div>\n      @if (data.assignee) {\n        <div class=\"assignee\">\n          @if (data.assigneeIcon) {\n            <img [src]=\"data.assigneeIcon\" class=\"assignee-avatar\" alt=\"\" />\n          } @else {\n            <mat-icon class=\"assignee-icon\">person</mat-icon>\n          }\n          {{ data.assignee }}\n        </div>\n      }\n      @if (hasDeps) {\n        <div class=\"deps\">blocked by: {{ data.blockedBy?.length }}</div>\n      }\n      @if (data.effectiveLevel !== undefined) {\n        <div class=\"coords\">{{ data.effectiveLevel }}, {{ data.effectiveRow }}</div>\n      }\n    </div>\n  `,\n  styles: [`\n    :host { display: block; width: 160px; height: 120px; }\n\n    .issue-node {\n      background: #1a1a1a;\n      border: 1px solid rgba(51, 51, 51, 0.8);\n      border-radius: 8px;\n      padding: 10px;\n      font-family: 'SF Mono', Monaco, monospace;\n      transition: all 0.2s ease;\n      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n      height: 100%;\n      box-sizing: border-box;\n      overflow: hidden;\n    }\n\n    .issue-node:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);\n      border-color: rgba(80, 80, 80, 0.8);\n    }\n\n    .issue-node.s-open { border-color: rgba(59, 130, 246, 0.6); }\n    .issue-node.s-in_progress { border-color: rgba(245, 158, 11, 0.6); }\n    .issue-node.s-closed { border-color: rgba(16, 185, 129, 0.6); opacity: 0.7; }\n    .issue-node.s-blocked { border-color: rgba(239, 68, 68, 0.6); }\n    .issue-node.has-deps { border-style: dashed; }\n\n    .issue-header {\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      margin-bottom: 6px;\n    }\n\n    .dot {\n      width: 8px;\n      height: 8px;\n      border-radius: 50%;\n      flex-shrink: 0;\n      box-shadow: 0 0 8px currentColor;\n    }\n\n    .s-open .dot { background: #3b82f6; color: #3b82f6; }\n    .s-in_progress .dot { background: #f59e0b; color: #f59e0b; animation: pulse 2s infinite; }\n    .s-closed .dot { background: #10b981; color: #10b981; }\n    .s-blocked .dot { background: #ef4444; color: #ef4444; }\n\n    @keyframes pulse {\n      0%, 100% { box-shadow: 0 0 4px rgba(245, 158, 11, 0.4); }\n      50% { box-shadow: 0 0 12px rgba(245, 158, 11, 0.8); }\n    }\n\n    .id {\n      font-size: 10px;\n      font-weight: 500;\n      color: #888;\n      font-family: 'SF Mono', Monaco, monospace;\n    }\n\n    .priority {\n      margin-left: auto;\n      font-size: 9px;\n      font-weight: 600;\n      padding: 2px 5px;\n      border-radius: 4px;\n      text-transform: uppercase;\n    }\n\n    .p-critical { background: rgba(239, 68, 68, 0.2); color: #ef4444; }\n    .p-high { background: rgba(245, 158, 11, 0.2); color: #f59e0b; }\n    .p-medium { background: rgba(59, 130, 246, 0.2); color: #3b82f6; }\n    .p-low { background: rgba(136, 136, 136, 0.2); color: #888; }\n\n    .issue-title {\n      font-size: 12px;\n      font-weight: 500;\n      color: #e0e0e0;\n      line-height: 1.4;\n      margin-bottom: 6px;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .assignee {\n      display: inline-flex;\n      align-items: center;\n      gap: 4px;\n      font-size: 10px;\n      color: #888;\n      font-weight: 500;\n    }\n\n    .assignee-icon {\n      font-size: 12px;\n      width: 12px;\n      height: 12px;\n      color: #666;\n    }\n\n    .assignee-avatar {\n      width: 14px;\n      height: 14px;\n      border-radius: 50%;\n      object-fit: cover;\n      border: 1px solid rgba(255, 255, 255, 0.1);\n    }\n\n    .deps {\n      margin-top: 6px;\n      padding-top: 6px;\n      border-top: 1px solid rgba(51, 51, 51, 0.5);\n      font-size: 10px;\n      color: #ff79c6;\n      font-weight: 500;\n    }\n    .coords {\n      margin-top: 4px;\n      font-size: 9px;\n      color: #666;\n      font-family: 'SF Mono', Monaco, monospace;\n    }\n  `]\n})\nexport class IssueNodeComponent {\n  @Input() data!: IssueNodeData;\n\n  get hasDeps(): boolean {\n    return !!this.data.blockedBy?.length;\n  }\n}\n","import { Type } from '@angular/core';\nimport { IssueNodeComponent, IssueNodeData } from './issue.node';\n\ninterface ComponentMeta<T = unknown> {\n  title: string;\n  group?: 'atoms' | 'molecules' | 'organisms' | 'templates' | 'presenters' | 'extras';\n  component: Type<T>;\n  inputs?: Record<string, unknown>;\n  viewport?: { width?: number; height?: number };\n  variants?: { name: string; inputs: Record<string, unknown> }[];\n}\n\nexport const issueNodeMeta: ComponentMeta = {\n  title: 'Flow Issue Node',\n  group: 'molecules',\n  component: IssueNodeComponent,\n  viewport: { width: 260, height: 180 },\n  variants: [\n    {\n      name: 'open',\n      inputs: {\n        data: {\n          id: '123',\n          title: 'Fix authentication bug',\n          status: 'open',\n          priority: 'high',\n          assignee: 'dev-001',\n        } as IssueNodeData,\n      },\n    },\n    {\n      name: 'in progress',\n      inputs: {\n        data: {\n          id: '456',\n          title: 'Implement dark mode',\n          status: 'in_progress',\n          priority: 'medium',\n          assignee: 'dev-002',\n        } as IssueNodeData,\n      },\n    },\n    {\n      name: 'closed',\n      inputs: {\n        data: {\n          id: '789',\n          title: 'Update dependencies',\n          status: 'closed',\n          priority: 'low',\n          assignee: 'dev-003',\n        } as IssueNodeData,\n      },\n    },\n    {\n      name: 'blocked',\n      inputs: {\n        data: {\n          id: '101',\n          title: 'Deploy to production',\n          status: 'blocked',\n          priority: 'critical',\n          assignee: 'ops-001',\n          blockedBy: ['456', '789'],\n        } as IssueNodeData,\n      },\n    },\n    {\n      name: 'with avatar',\n      inputs: {\n        data: {\n          id: '202',\n          title: 'Code review needed',\n          status: 'open',\n          priority: 'high',\n          assignee: 'reviewer',\n          assigneeIcon: 'https://api.dicebear.com/7.x/avataaars/svg?seed=Review',\n        } as IssueNodeData,\n      },\n    },\n  ],\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}