@agenticmail/enterprise 0.4.2 → 0.5.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.
Files changed (173) hide show
  1. package/README.md +608 -923
  2. package/dashboards/django/app.py +12 -0
  3. package/dashboards/django/static/styles.css +449 -246
  4. package/dashboards/django/templates/activity.html +130 -0
  5. package/dashboards/django/templates/approvals.html +115 -0
  6. package/dashboards/django/templates/community-skills.html +89 -0
  7. package/dashboards/django/templates/domain-status.html +59 -0
  8. package/dashboards/django/templates/knowledge-contributions.html +58 -0
  9. package/dashboards/django/templates/knowledge.html +104 -0
  10. package/dashboards/django/templates/layout.html +161 -36
  11. package/dashboards/django/templates/skill-connections.html +73 -0
  12. package/dashboards/django/templates/workforce.html +116 -0
  13. package/dashboards/django/views/__init__.py +14 -0
  14. package/dashboards/django/views/new_pages.py +38 -0
  15. package/dashboards/dotnet/Program.cs +8 -0
  16. package/dashboards/dotnet/Routes/ActivityRoutes.cs +35 -0
  17. package/dashboards/dotnet/Routes/ApprovalRoutes.cs +36 -0
  18. package/dashboards/dotnet/Routes/CommunitySkillRoutes.cs +36 -0
  19. package/dashboards/dotnet/Routes/DomainStatusRoutes.cs +49 -0
  20. package/dashboards/dotnet/Routes/KnowledgeContributionRoutes.cs +42 -0
  21. package/dashboards/dotnet/Routes/KnowledgeRoutes.cs +40 -0
  22. package/dashboards/dotnet/Routes/SkillConnectionRoutes.cs +52 -0
  23. package/dashboards/dotnet/Routes/WorkforceRoutes.cs +55 -0
  24. package/dashboards/dotnet/Services/HtmlBuilder.cs +17 -8
  25. package/dashboards/dotnet/wwwroot/styles.css +508 -246
  26. package/dashboards/express/app.js +8 -0
  27. package/dashboards/express/public/styles.css +163 -272
  28. package/dashboards/express/routes/activity.js +101 -0
  29. package/dashboards/express/routes/approvals.js +100 -0
  30. package/dashboards/express/routes/community-skills.js +83 -0
  31. package/dashboards/express/routes/domain-status.js +78 -0
  32. package/dashboards/express/routes/knowledge-contributions.js +85 -0
  33. package/dashboards/express/routes/knowledge.js +83 -0
  34. package/dashboards/express/routes/skill-connections.js +86 -0
  35. package/dashboards/express/routes/workforce.js +126 -0
  36. package/dashboards/express/views/layout.js +54 -33
  37. package/dashboards/go/handlers/activity.go +30 -0
  38. package/dashboards/go/handlers/approvals.go +31 -0
  39. package/dashboards/go/handlers/community_skills.go +32 -0
  40. package/dashboards/go/handlers/domain_status.go +62 -0
  41. package/dashboards/go/handlers/knowledge.go +35 -0
  42. package/dashboards/go/handlers/knowledge_contributions.go +37 -0
  43. package/dashboards/go/handlers/skill_connections.go +59 -0
  44. package/dashboards/go/handlers/workforce.go +60 -0
  45. package/dashboards/go/main.go +8 -0
  46. package/dashboards/go/static/styles.css +508 -246
  47. package/dashboards/go/templates/layout.go +16 -11
  48. package/dashboards/html/index.html +136 -15
  49. package/dashboards/html/public/styles.css +531 -134
  50. package/dashboards/html/src/pages/activity.js +137 -0
  51. package/dashboards/html/src/pages/approvals.js +155 -0
  52. package/dashboards/html/src/pages/community-skills.js +236 -0
  53. package/dashboards/html/src/pages/domain-status.js +182 -0
  54. package/dashboards/html/src/pages/knowledge-contributions.js +319 -0
  55. package/dashboards/html/src/pages/knowledge.js +251 -0
  56. package/dashboards/html/src/pages/skill-connections.js +293 -0
  57. package/dashboards/html/src/pages/workforce.js +418 -0
  58. package/dashboards/html/src/router.js +51 -0
  59. package/dashboards/java/AgenticMailDashboard.java +8 -0
  60. package/dashboards/java/handlers/ActivityHandler.java +42 -0
  61. package/dashboards/java/handlers/ApprovalsHandler.java +43 -0
  62. package/dashboards/java/handlers/CommunitySkillsHandler.java +45 -0
  63. package/dashboards/java/handlers/DomainStatusHandler.java +58 -0
  64. package/dashboards/java/handlers/KnowledgeContributionsHandler.java +51 -0
  65. package/dashboards/java/handlers/KnowledgeHandler.java +49 -0
  66. package/dashboards/java/handlers/SkillConnectionsHandler.java +61 -0
  67. package/dashboards/java/handlers/WorkforceHandler.java +64 -0
  68. package/dashboards/java/static/styles.css +508 -250
  69. package/dashboards/java/templates/Layout.java +14 -6
  70. package/dashboards/laravel/controllers/ActivityController.php +18 -0
  71. package/dashboards/laravel/controllers/ApprovalsController.php +18 -0
  72. package/dashboards/laravel/controllers/CommunitySkillsController.php +18 -0
  73. package/dashboards/laravel/controllers/DomainStatusController.php +18 -0
  74. package/dashboards/laravel/controllers/KnowledgeContributionsController.php +18 -0
  75. package/dashboards/laravel/controllers/KnowledgeController.php +18 -0
  76. package/dashboards/laravel/controllers/SkillConnectionsController.php +18 -0
  77. package/dashboards/laravel/controllers/WorkforceController.php +18 -0
  78. package/dashboards/laravel/index.php +56 -0
  79. package/dashboards/laravel/public/styles.css +163 -279
  80. package/dashboards/laravel/views/activity.php +127 -0
  81. package/dashboards/laravel/views/approvals.php +152 -0
  82. package/dashboards/laravel/views/community-skills.php +131 -0
  83. package/dashboards/laravel/views/domain-status.php +167 -0
  84. package/dashboards/laravel/views/knowledge-contributions.php +185 -0
  85. package/dashboards/laravel/views/knowledge.php +167 -0
  86. package/dashboards/laravel/views/layout.php +54 -41
  87. package/dashboards/laravel/views/skill-connections.php +192 -0
  88. package/dashboards/laravel/views/workforce.php +265 -0
  89. package/dashboards/php/components/layout.php +21 -16
  90. package/dashboards/php/index.php +1 -1
  91. package/dashboards/php/pages/activity.php +35 -0
  92. package/dashboards/php/pages/approvals.php +36 -0
  93. package/dashboards/php/pages/community-skills.php +39 -0
  94. package/dashboards/php/pages/domain-status.php +87 -0
  95. package/dashboards/php/pages/knowledge-contributions.php +47 -0
  96. package/dashboards/php/pages/knowledge.php +43 -0
  97. package/dashboards/php/pages/skill-connections.php +94 -0
  98. package/dashboards/php/pages/workforce.php +89 -0
  99. package/dashboards/php/public/styles.css +168 -74
  100. package/dashboards/python/app.py +16 -0
  101. package/dashboards/python/routes/activity.py +11 -0
  102. package/dashboards/python/routes/approvals.py +11 -0
  103. package/dashboards/python/routes/community_skills.py +11 -0
  104. package/dashboards/python/routes/domain_status.py +11 -0
  105. package/dashboards/python/routes/knowledge.py +11 -0
  106. package/dashboards/python/routes/knowledge_contributions.py +11 -0
  107. package/dashboards/python/routes/skill_connections.py +11 -0
  108. package/dashboards/python/routes/workforce.py +11 -0
  109. package/dashboards/python/static/styles.css +163 -276
  110. package/dashboards/python/templates/activity.html +87 -0
  111. package/dashboards/python/templates/approvals.html +86 -0
  112. package/dashboards/python/templates/community-skills.html +69 -0
  113. package/dashboards/python/templates/domain-status.html +64 -0
  114. package/dashboards/python/templates/knowledge-contributions.html +71 -0
  115. package/dashboards/python/templates/knowledge.html +69 -0
  116. package/dashboards/python/templates/layout.html +103 -68
  117. package/dashboards/python/templates/skill-connections.html +72 -0
  118. package/dashboards/python/templates/workforce.html +112 -0
  119. package/dashboards/rails/app.rb +8 -0
  120. package/dashboards/rails/public/styles.css +506 -259
  121. package/dashboards/rails/routes/activity.rb +10 -0
  122. package/dashboards/rails/routes/approvals.rb +10 -0
  123. package/dashboards/rails/routes/community_skills.rb +11 -0
  124. package/dashboards/rails/routes/domain_status.rb +16 -0
  125. package/dashboards/rails/routes/knowledge.rb +11 -0
  126. package/dashboards/rails/routes/knowledge_contributions.rb +12 -0
  127. package/dashboards/rails/routes/skill_connections.rb +15 -0
  128. package/dashboards/rails/routes/workforce.rb +16 -0
  129. package/dashboards/rails/views/activity.erb +56 -0
  130. package/dashboards/rails/views/approvals.erb +60 -0
  131. package/dashboards/rails/views/community_skills.erb +69 -0
  132. package/dashboards/rails/views/domain_status.erb +75 -0
  133. package/dashboards/rails/views/knowledge.erb +67 -0
  134. package/dashboards/rails/views/knowledge_contributions.erb +70 -0
  135. package/dashboards/rails/views/layout.erb +23 -15
  136. package/dashboards/rails/views/skill_connections.erb +109 -0
  137. package/dashboards/rails/views/workforce.erb +124 -0
  138. package/dashboards/ruby/app.rb +8 -0
  139. package/dashboards/ruby/public/styles.css +506 -254
  140. package/dashboards/ruby/routes/activity.rb +10 -0
  141. package/dashboards/ruby/routes/approvals.rb +10 -0
  142. package/dashboards/ruby/routes/community_skills.rb +11 -0
  143. package/dashboards/ruby/routes/domain_status.rb +16 -0
  144. package/dashboards/ruby/routes/knowledge.rb +11 -0
  145. package/dashboards/ruby/routes/knowledge_contributions.rb +12 -0
  146. package/dashboards/ruby/routes/skill_connections.rb +15 -0
  147. package/dashboards/ruby/routes/workforce.rb +16 -0
  148. package/dashboards/ruby/views/activity.erb +56 -0
  149. package/dashboards/ruby/views/approvals.erb +60 -0
  150. package/dashboards/ruby/views/community_skills.erb +69 -0
  151. package/dashboards/ruby/views/domain_status.erb +75 -0
  152. package/dashboards/ruby/views/knowledge.erb +67 -0
  153. package/dashboards/ruby/views/knowledge_contributions.erb +70 -0
  154. package/dashboards/ruby/views/layout.erb +22 -13
  155. package/dashboards/ruby/views/skill_connections.erb +109 -0
  156. package/dashboards/ruby/views/workforce.erb +124 -0
  157. package/dashboards/shared/styles.css +505 -281
  158. package/dashboards/shared-styles.css +534 -45
  159. package/dist/chunk-ANW4OHXR.js +764 -0
  160. package/dist/chunk-EVQPFQ55.js +9040 -0
  161. package/dist/chunk-JMTNHH7I.js +12666 -0
  162. package/dist/chunk-TYW5XTOW.js +395 -0
  163. package/dist/chunk-V2YIXYDJ.js +1943 -0
  164. package/dist/cli.js +1 -1
  165. package/dist/index.js +5 -4
  166. package/dist/routes-ALTC4I2R.js +5674 -0
  167. package/dist/runtime-JLFTHMIT.js +47 -0
  168. package/dist/server-OGQWCOT6.js +11 -0
  169. package/dist/setup-HCMMUEW6.js +20 -0
  170. package/package.json +1 -1
  171. package/src/agent-tools/tools/memory.ts +42 -15
  172. package/src/engine/agent-memory.ts +4 -355
  173. package/src/lib/text-search.ts +358 -0
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Domain Status page - Monitor email domain health and deliverability
3
+ */
4
+ function renderDomainStatus() {
5
+ return `
6
+ <div class="page-title">Domain Status</div>
7
+
8
+ <div class="stat-grid">
9
+ <div class="stat-card">
10
+ <div class="stat-label">Domain Health</div>
11
+ <div class="stat-value" style="color: var(--success)">98%</div>
12
+ <div class="stat-change" style="color: var(--success)">Excellent</div>
13
+ </div>
14
+ <div class="stat-card">
15
+ <div class="stat-label">Deliverability Score</div>
16
+ <div class="stat-value" style="color: var(--success)">95</div>
17
+ <div class="stat-change" style="color: var(--success)">High</div>
18
+ </div>
19
+ <div class="stat-card">
20
+ <div class="stat-label">DNS Records</div>
21
+ <div class="stat-value" style="color: var(--success)">12/12</div>
22
+ <div class="stat-change" style="color: var(--success)">All valid</div>
23
+ </div>
24
+ <div class="stat-card">
25
+ <div class="stat-label">Blacklist Status</div>
26
+ <div class="stat-value" style="color: var(--success)">Clean</div>
27
+ <div class="stat-change" style="color: var(--success)">0 listings</div>
28
+ </div>
29
+ </div>
30
+
31
+ <div class="card">
32
+ <div class="card-header">
33
+ <h3>Domain Configuration</h3>
34
+ <button class="btn btn-secondary">Refresh Status</button>
35
+ </div>
36
+ <div class="card-body">
37
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 24px;">
38
+ <div>
39
+ <h4 style="font-size: 14px; font-weight: 600; margin-bottom: 12px;">Primary Domain</h4>
40
+ <div style="background: var(--bg-tertiary); padding: 16px; border-radius: var(--radius); margin-bottom: 16px;">
41
+ <div style="font-size: 16px; font-weight: 600; margin-bottom: 4px;">company.agenticmail.io</div>
42
+ <div style="font-size: 12px; color: var(--text-muted);">Configured 45 days ago</div>
43
+ </div>
44
+
45
+ <div style="margin-bottom: 16px;">
46
+ <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
47
+ <div style="width: 12px; height: 12px; border-radius: 50%; background: var(--success);"></div>
48
+ <span style="font-size: 13px; font-weight: 500;">DKIM Signing</span>
49
+ </div>
50
+ <div style="font-size: 12px; color: var(--text-muted); margin-left: 20px;">
51
+ Keys configured and valid
52
+ </div>
53
+ </div>
54
+
55
+ <div style="margin-bottom: 16px;">
56
+ <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
57
+ <div style="width: 12px; height: 12px; border-radius: 50%; background: var(--success);"></div>
58
+ <span style="font-size: 13px; font-weight: 500;">SPF Record</span>
59
+ </div>
60
+ <div style="font-size: 12px; color: var(--text-muted); margin-left: 20px;">
61
+ v=spf1 include:agenticmail.io ~all
62
+ </div>
63
+ </div>
64
+
65
+ <div>
66
+ <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
67
+ <div style="width: 12px; height: 12px; border-radius: 50%; background: var(--success);"></div>
68
+ <span style="font-size: 13px; font-weight: 500;">DMARC Policy</span>
69
+ </div>
70
+ <div style="font-size: 12px; color: var(--text-muted); margin-left: 20px;">
71
+ p=quarantine; rua=mailto:dmarc@company.com
72
+ </div>
73
+ </div>
74
+ </div>
75
+
76
+ <div>
77
+ <h4 style="font-size: 14px; font-weight: 600; margin-bottom: 12px;">Delivery Statistics</h4>
78
+ <div style="background: var(--bg-tertiary); padding: 16px; border-radius: var(--radius);">
79
+ <div style="display: flex; justify-content: space-between; margin-bottom: 12px;">
80
+ <span style="font-size: 12px; color: var(--text-muted);">Delivered</span>
81
+ <span style="font-size: 12px; font-weight: 600; color: var(--success);">98.5%</span>
82
+ </div>
83
+ <div style="display: flex; justify-content: space-between; margin-bottom: 12px;">
84
+ <span style="font-size: 12px; color: var(--text-muted);">Bounced</span>
85
+ <span style="font-size: 12px; font-weight: 600; color: var(--warning);">1.2%</span>
86
+ </div>
87
+ <div style="display: flex; justify-content: space-between; margin-bottom: 12px;">
88
+ <span style="font-size: 12px; color: var(--text-muted);">Marked as Spam</span>
89
+ <span style="font-size: 12px; font-weight: 600; color: var(--danger);">0.3%</span>
90
+ </div>
91
+ <div style="display: flex; justify-content: space-between;">
92
+ <span style="font-size: 12px; color: var(--text-muted);">Unsubscribed</span>
93
+ <span style="font-size: 12px; font-weight: 600; color: var(--text-muted);">0.1%</span>
94
+ </div>
95
+ </div>
96
+
97
+ <h4 style="font-size: 14px; font-weight: 600; margin: 20px 0 12px;">Reputation Monitoring</h4>
98
+ <div style="space-y: 8px;">
99
+ <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px;">
100
+ <span style="font-size: 12px;">Google Postmaster</span>
101
+ <span class="badge badge-success">Good</span>
102
+ </div>
103
+ <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px;">
104
+ <span style="font-size: 12px;">Microsoft SNDS</span>
105
+ <span class="badge badge-success">Green</span>
106
+ </div>
107
+ <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px;">
108
+ <span style="font-size: 12px;">Sender Score</span>
109
+ <span class="badge badge-success">95</span>
110
+ </div>
111
+ <div style="display: flex; align-items: center; justify-content: space-between;">
112
+ <span style="font-size: 12px;">Talos Intelligence</span>
113
+ <span class="badge badge-success">Good</span>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+
121
+ <div class="card" style="margin-top: 24px;">
122
+ <div class="card-header">
123
+ <h3>DNS Records</h3>
124
+ <button class="btn btn-secondary">Verify All</button>
125
+ </div>
126
+ <div class="card-body">
127
+ <div style="overflow-x: auto;">
128
+ <table>
129
+ <thead>
130
+ <tr>
131
+ <th>Type</th>
132
+ <th>Name</th>
133
+ <th>Value</th>
134
+ <th>Status</th>
135
+ <th>Last Checked</th>
136
+ </tr>
137
+ </thead>
138
+ <tbody>
139
+ <tr>
140
+ <td><span class="badge badge-info">MX</span></td>
141
+ <td>company.agenticmail.io</td>
142
+ <td>10 mail.agenticmail.io</td>
143
+ <td><span class="badge badge-success">Valid</span></td>
144
+ <td>2 mins ago</td>
145
+ </tr>
146
+ <tr>
147
+ <td><span class="badge badge-info">TXT</span></td>
148
+ <td>company.agenticmail.io</td>
149
+ <td>v=spf1 include:agenticmail.io ~all</td>
150
+ <td><span class="badge badge-success">Valid</span></td>
151
+ <td>2 mins ago</td>
152
+ </tr>
153
+ <tr>
154
+ <td><span class="badge badge-info">TXT</span></td>
155
+ <td>default._domainkey.company.agenticmail.io</td>
156
+ <td>k=rsa; p=MIGfMA0GCSqGSIb3DQEBA...</td>
157
+ <td><span class="badge badge-success">Valid</span></td>
158
+ <td>2 mins ago</td>
159
+ </tr>
160
+ <tr>
161
+ <td><span class="badge badge-info">TXT</span></td>
162
+ <td>_dmarc.company.agenticmail.io</td>
163
+ <td>v=DMARC1; p=quarantine; rua=mailto:dmarc@company.com</td>
164
+ <td><span class="badge badge-success">Valid</span></td>
165
+ <td>2 mins ago</td>
166
+ </tr>
167
+ <tr>
168
+ <td><span class="badge badge-info">CNAME</span></td>
169
+ <td>mail.company.agenticmail.io</td>
170
+ <td>mail.agenticmail.io</td>
171
+ <td><span class="badge badge-success">Valid</span></td>
172
+ <td>2 mins ago</td>
173
+ </tr>
174
+ </tbody>
175
+ </table>
176
+ </div>
177
+ </div>
178
+ </div>
179
+ `;
180
+ }
181
+
182
+ export { renderDomainStatus };
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Knowledge Contributions page - Manage community knowledge contributions
3
+ */
4
+ function renderKnowledgeContributions() {
5
+ return `
6
+ <div class="page-title">Knowledge Contributions</div>
7
+
8
+ <div class="stat-grid">
9
+ <div class="stat-card">
10
+ <div class="stat-label">Total Contributions</div>
11
+ <div class="stat-value">847</div>
12
+ <div class="stat-change" style="color: var(--success)">+12 this week</div>
13
+ </div>
14
+ <div class="stat-card">
15
+ <div class="stat-label">Published</div>
16
+ <div class="stat-value">623</div>
17
+ <div class="stat-change" style="color: var(--success)">73% approval rate</div>
18
+ </div>
19
+ <div class="stat-card">
20
+ <div class="stat-label">Pending Review</div>
21
+ <div class="stat-value">34</div>
22
+ <div class="stat-change" style="color: var(--warning)">Needs attention</div>
23
+ </div>
24
+ <div class="stat-card">
25
+ <div class="stat-label">Contributors</div>
26
+ <div class="stat-value">89</div>
27
+ <div class="stat-change" style="color: var(--success)">+5 new this week</div>
28
+ </div>
29
+ </div>
30
+
31
+ <div style="display: flex; gap: 16px; margin-bottom: 24px; align-items: center;">
32
+ <input class="input" placeholder="Search contributions..." style="flex: 1;">
33
+ <select class="input" style="width: auto;">
34
+ <option>All Status</option>
35
+ <option>Pending</option>
36
+ <option>Published</option>
37
+ <option>Rejected</option>
38
+ <option>Draft</option>
39
+ </select>
40
+ <select class="input" style="width: auto;">
41
+ <option>All Categories</option>
42
+ <option>Company Policies</option>
43
+ <option>Product Information</option>
44
+ <option>Customer Support</option>
45
+ <option>Technical Docs</option>
46
+ </select>
47
+ <button class="btn btn-primary">
48
+ <svg width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
49
+ <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>
50
+ </svg>
51
+ New Contribution
52
+ </button>
53
+ </div>
54
+
55
+ <div class="card">
56
+ <div class="card-header">
57
+ <h3>Recent Contributions</h3>
58
+ <div>
59
+ <button class="btn btn-secondary">Review Queue</button>
60
+ <button class="btn btn-secondary" style="margin-left: 8px;">Export Data</button>
61
+ </div>
62
+ </div>
63
+ <div class="card-body">
64
+ <div style="overflow-x: auto;">
65
+ <table>
66
+ <thead>
67
+ <tr>
68
+ <th>Title</th>
69
+ <th>Contributor</th>
70
+ <th>Category</th>
71
+ <th>Status</th>
72
+ <th>Submitted</th>
73
+ <th>Actions</th>
74
+ </tr>
75
+ </thead>
76
+ <tbody>
77
+ <tr>
78
+ <td>
79
+ <div>
80
+ <div style="font-weight: 600;">New Product Pricing Guide</div>
81
+ <div style="font-size: 11px; color: var(--text-muted);">Updated pricing structure for Q2 2024</div>
82
+ </div>
83
+ </td>
84
+ <td>
85
+ <div style="display: flex; align-items: center; gap: 8px;">
86
+ <div style="width: 24px; height: 24px; border-radius: 50%; background: var(--accent-soft); color: var(--accent-text); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600;">SM</div>
87
+ <div>
88
+ <div style="font-size: 13px; font-weight: 500;">Sarah Miller</div>
89
+ <div style="font-size: 11px; color: var(--text-muted);">Product Manager</div>
90
+ </div>
91
+ </div>
92
+ </td>
93
+ <td><span class="badge badge-success">Product Information</span></td>
94
+ <td><span class="badge badge-warning">Pending Review</span></td>
95
+ <td>2 hours ago</td>
96
+ <td>
97
+ <button class="btn btn-sm" style="background: var(--success); color: white; margin-right: 4px;">Approve</button>
98
+ <button class="btn btn-sm btn-danger">Reject</button>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <td>
103
+ <div>
104
+ <div style="font-weight: 600;">Customer Onboarding Checklist</div>
105
+ <div style="font-size: 11px; color: var(--text-muted);">Step-by-step guide for new customer setup</div>
106
+ </div>
107
+ </td>
108
+ <td>
109
+ <div style="display: flex; align-items: center; gap: 8px;">
110
+ <div style="width: 24px; height: 24px; border-radius: 50%; background: var(--success-soft); color: var(--success); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600;">JD</div>
111
+ <div>
112
+ <div style="font-size: 13px; font-weight: 500;">John Doe</div>
113
+ <div style="font-size: 11px; color: var(--text-muted);">Support Lead</div>
114
+ </div>
115
+ </div>
116
+ </td>
117
+ <td><span class="badge badge-warning">Customer Support</span></td>
118
+ <td><span class="badge badge-success">Published</span></td>
119
+ <td>5 hours ago</td>
120
+ <td>
121
+ <button class="btn btn-sm btn-secondary" style="margin-right: 4px;">View</button>
122
+ <button class="btn btn-sm btn-secondary">Edit</button>
123
+ </td>
124
+ </tr>
125
+ <tr>
126
+ <td>
127
+ <div>
128
+ <div style="font-weight: 600;">API Rate Limiting Documentation</div>
129
+ <div style="font-size: 11px; color: var(--text-muted);">Technical details on API usage limits</div>
130
+ </div>
131
+ </td>
132
+ <td>
133
+ <div style="display: flex; align-items: center; gap: 8px;">
134
+ <div style="width: 24px; height: 24px; border-radius: 50%; background: var(--info-soft); color: var(--info); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600;">AJ</div>
135
+ <div>
136
+ <div style="font-size: 13px; font-weight: 500;">Alex Johnson</div>
137
+ <div style="font-size: 11px; color: var(--text-muted);">Developer</div>
138
+ </div>
139
+ </div>
140
+ </td>
141
+ <td><span class="badge badge-info">Technical Docs</span></td>
142
+ <td><span class="badge badge-warning">Pending Review</span></td>
143
+ <td>1 day ago</td>
144
+ <td>
145
+ <button class="btn btn-sm" style="background: var(--success); color: white; margin-right: 4px;">Approve</button>
146
+ <button class="btn btn-sm btn-danger">Reject</button>
147
+ </td>
148
+ </tr>
149
+ <tr>
150
+ <td>
151
+ <div>
152
+ <div style="font-weight: 600;">Security Incident Response</div>
153
+ <div style="font-size: 11px; color: var(--text-muted);">Emergency procedures for security breaches</div>
154
+ </div>
155
+ </td>
156
+ <td>
157
+ <div style="display: flex; align-items: center; gap: 8px;">
158
+ <div style="width: 24px; height: 24px; border-radius: 50%; background: var(--danger-soft); color: var(--danger); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600;">LS</div>
159
+ <div>
160
+ <div style="font-size: 13px; font-weight: 500;">Lisa Smith</div>
161
+ <div style="font-size: 11px; color: var(--text-muted);">Security Officer</div>
162
+ </div>
163
+ </div>
164
+ </td>
165
+ <td><span class="badge badge-danger">Security</span></td>
166
+ <td><span class="badge badge-success">Published</span></td>
167
+ <td>2 days ago</td>
168
+ <td>
169
+ <button class="btn btn-sm btn-secondary" style="margin-right: 4px;">View</button>
170
+ <button class="btn btn-sm btn-secondary">Edit</button>
171
+ </td>
172
+ </tr>
173
+ <tr>
174
+ <td>
175
+ <div>
176
+ <div style="font-weight: 600;">Email Template Best Practices</div>
177
+ <div style="font-size: 11px; color: var(--text-muted);">Guidelines for creating effective email templates</div>
178
+ </div>
179
+ </td>
180
+ <td>
181
+ <div style="display: flex; align-items: center; gap: 8px;">
182
+ <div style="width: 24px; height: 24px; border-radius: 50%; background: var(--warning-soft); color: var(--warning); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600;">MW</div>
183
+ <div>
184
+ <div style="font-size: 13px; font-weight: 500;">Mike Wilson</div>
185
+ <div style="font-size: 11px; color: var(--text-muted);">Marketing</div>
186
+ </div>
187
+ </div>
188
+ </td>
189
+ <td><span class="badge badge-primary">Company Policies</span></td>
190
+ <td>
191
+ <span class="badge" style="background: var(--text-muted); color: white;">Draft</span>
192
+ </td>
193
+ <td>3 days ago</td>
194
+ <td>
195
+ <button class="btn btn-sm btn-secondary" style="margin-right: 4px;">Review</button>
196
+ <button class="btn btn-sm btn-secondary">Contact</button>
197
+ </td>
198
+ </tr>
199
+ </tbody>
200
+ </table>
201
+ </div>
202
+ </div>
203
+ </div>
204
+
205
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 24px;">
206
+ <div class="card">
207
+ <div class="card-header">
208
+ <h3>Top Contributors</h3>
209
+ </div>
210
+ <div class="card-body">
211
+ <div style="space-y: 12px;">
212
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
213
+ <div style="width: 32px; height: 32px; border-radius: 50%; background: var(--accent-soft); color: var(--accent-text); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600;">SM</div>
214
+ <div style="flex: 1;">
215
+ <div style="font-size: 13px; font-weight: 600;">Sarah Miller</div>
216
+ <div style="font-size: 11px; color: var(--text-muted);">Product Manager</div>
217
+ </div>
218
+ <div style="text-align: right;">
219
+ <div style="font-size: 13px; font-weight: 600;">47</div>
220
+ <div style="font-size: 11px; color: var(--text-muted);">contributions</div>
221
+ </div>
222
+ </div>
223
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
224
+ <div style="width: 32px; height: 32px; border-radius: 50%; background: var(--success-soft); color: var(--success); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600;">JD</div>
225
+ <div style="flex: 1;">
226
+ <div style="font-size: 13px; font-weight: 600;">John Doe</div>
227
+ <div style="font-size: 11px; color: var(--text-muted);">Support Lead</div>
228
+ </div>
229
+ <div style="text-align: right;">
230
+ <div style="font-size: 13px; font-weight: 600;">34</div>
231
+ <div style="font-size: 11px; color: var(--text-muted);">contributions</div>
232
+ </div>
233
+ </div>
234
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
235
+ <div style="width: 32px; height: 32px; border-radius: 50%; background: var(--info-soft); color: var(--info); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600;">AJ</div>
236
+ <div style="flex: 1;">
237
+ <div style="font-size: 13px; font-weight: 600;">Alex Johnson</div>
238
+ <div style="font-size: 11px; color: var(--text-muted);">Developer</div>
239
+ </div>
240
+ <div style="text-align: right;">
241
+ <div style="font-size: 13px; font-weight: 600;">28</div>
242
+ <div style="font-size: 11px; color: var(--text-muted);">contributions</div>
243
+ </div>
244
+ </div>
245
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
246
+ <div style="width: 32px; height: 32px; border-radius: 50%; background: var(--danger-soft); color: var(--danger); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600;">LS</div>
247
+ <div style="flex: 1;">
248
+ <div style="font-size: 13px; font-weight: 600;">Lisa Smith</div>
249
+ <div style="font-size: 11px; color: var(--text-muted);">Security Officer</div>
250
+ </div>
251
+ <div style="text-align: right;">
252
+ <div style="font-size: 13px; font-weight: 600;">23</div>
253
+ <div style="font-size: 11px; color: var(--text-muted);">contributions</div>
254
+ </div>
255
+ </div>
256
+ <div style="display: flex; align-items: center; gap: 12px;">
257
+ <div style="width: 32px; height: 32px; border-radius: 50%; background: var(--warning-soft); color: var(--warning); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600;">MW</div>
258
+ <div style="flex: 1;">
259
+ <div style="font-size: 13px; font-weight: 600;">Mike Wilson</div>
260
+ <div style="font-size: 11px; color: var(--text-muted);">Marketing</div>
261
+ </div>
262
+ <div style="text-align: right;">
263
+ <div style="font-size: 13px; font-weight: 600;">19</div>
264
+ <div style="font-size: 11px; color: var(--text-muted);">contributions</div>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ </div>
269
+ </div>
270
+
271
+ <div class="card">
272
+ <div class="card-header">
273
+ <h3>Review Activity</h3>
274
+ </div>
275
+ <div class="card-body">
276
+ <div style="space-y: 12px;">
277
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
278
+ <div style="width: 8px; height: 8px; border-radius: 50%; background: var(--success);"></div>
279
+ <div style="flex: 1;">
280
+ <div style="font-size: 13px;">Security documentation approved</div>
281
+ <div style="font-size: 11px; color: var(--text-muted);">15 minutes ago</div>
282
+ </div>
283
+ </div>
284
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
285
+ <div style="width: 8px; height: 8px; border-radius: 50%; background: var(--warning);"></div>
286
+ <div style="flex: 1;">
287
+ <div style="font-size: 13px;">Pricing guide needs revision</div>
288
+ <div style="font-size: 11px; color: var(--text-muted);">32 minutes ago</div>
289
+ </div>
290
+ </div>
291
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
292
+ <div style="width: 8px; height: 8px; border-radius: 50%; background: var(--success);"></div>
293
+ <div style="flex: 1;">
294
+ <div style="font-size: 13px;">API documentation published</div>
295
+ <div style="font-size: 11px; color: var(--text-muted);">1 hour ago</div>
296
+ </div>
297
+ </div>
298
+ <div style="display: flex; align-items: center; gap: 12px; margin-bottom: 12px;">
299
+ <div style="width: 8px; height: 8px; border-radius: 50%; background: var(--danger);"></div>
300
+ <div style="flex: 1;">
301
+ <div style="font-size: 13px;">Template guide rejected</div>
302
+ <div style="font-size: 11px; color: var(--text-muted);">2 hours ago</div>
303
+ </div>
304
+ </div>
305
+ <div style="display: flex; align-items: center; gap: 12px;">
306
+ <div style="width: 8px; height: 8px; border-radius: 50%; background: var(--accent);"></div>
307
+ <div style="flex: 1;">
308
+ <div style="font-size: 13px;">New contribution submitted</div>
309
+ <div style="font-size: 11px; color: var(--text-muted);">3 hours ago</div>
310
+ </div>
311
+ </div>
312
+ </div>
313
+ </div>
314
+ </div>
315
+ </div>
316
+ `;
317
+ }
318
+
319
+ export { renderKnowledgeContributions };