File size: 1,798 Bytes
b032b2d
3c93545
b032b2d
 
 
 
 
 
 
 
 
 
 
 
 
 
3c93545
 
 
b032b2d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
export function CategorizationScreen({ summary, groups, selectedTaskIds }) {
  return `
    <section class="screen-card">
      <div class="screen-intro">
        <p class="step-label">Step 2</p>
        <h2>Review suggestions</h2>
        <p id="flowpilot-summary" class="screen-copy">${escapeHtml(summary)}</p>
      </div>
      <div class="section-topline"><span class="metric-badge">${selectedTaskIds.length} selected</span></div>
      <div id="flowpilot-categories" class="category-grid">
        ${groups.map((group) => renderGroup(group, selectedTaskIds)).join("")}
      </div>
      <div class="button-row split-actions">
        <button id="flowpilot-back-button" class="ghost-button">Back</button>
        <button id="flowpilot-continue-tasks" class="primary-button">Continue to rules</button>
      </div>
    </section>
  `;
}

function renderGroup(group, selectedTaskIds) {
  return `
    <div class="category-group">
      <div class="group-header">
        <p class="group-title">${escapeHtml(group.title)}</p>
        <span class="group-count">${group.items.length}</span>
      </div>
      <ul class="selection-list">
        ${group.items.length ? group.items.map((task) => `
          <li>
            <label class="selection-tile">
              <input type="checkbox" data-task-id="${escapeHtml(task.id)}" ${selectedTaskIds.includes(task.id) ? "checked" : ""} />
              <span>${escapeHtml(task.name)}</span>
            </label>
          </li>
        `).join("") : `<li class="empty-copy">No suggestions in this category.</li>`}
      </ul>
    </div>
  `;
}

function escapeHtml(value) {
  return String(value)
    .replaceAll("&", "&amp;")
    .replaceAll("<", "&lt;")
    .replaceAll(">", "&gt;")
    .replaceAll('"', "&quot;")
    .replaceAll("'", "&#39;");
}