@smartsoft001/pro-claude-plugins 0.2.0

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 (198) hide show
  1. package/.claude-plugin/marketplace.json +26 -0
  2. package/README.md +56 -0
  3. package/package.json +14 -0
  4. package/plugins/flow/.claude-plugin/README.md +91 -0
  5. package/plugins/flow/.claude-plugin/merge-permissions.js +115 -0
  6. package/plugins/flow/.claude-plugin/plugin.json +5 -0
  7. package/plugins/flow/.claude-plugin/settings.template.json +86 -0
  8. package/plugins/flow/agents/angular-component-scaffolder.md +176 -0
  9. package/plugins/flow/agents/angular-directive-builder.md +154 -0
  10. package/plugins/flow/agents/angular-guard-builder.md +244 -0
  11. package/plugins/flow/agents/angular-jest-test-writer.md +475 -0
  12. package/plugins/flow/agents/angular-pipe-builder.md +170 -0
  13. package/plugins/flow/agents/angular-resolver-builder.md +287 -0
  14. package/plugins/flow/agents/angular-service-builder.md +162 -0
  15. package/plugins/flow/agents/angular-signal-state-builder.md +340 -0
  16. package/plugins/flow/agents/angular-test-diagnostician.md +279 -0
  17. package/plugins/flow/agents/angular-testbed-configurator.md +315 -0
  18. package/plugins/flow/agents/arch-scaffolder.md +278 -0
  19. package/plugins/flow/agents/e2e-data-testid-injector.md +195 -0
  20. package/plugins/flow/agents/e2e-project-scaffolder.md +194 -0
  21. package/plugins/flow/agents/e2e-test-writer.md +357 -0
  22. package/plugins/flow/agents/shared-agent-evolver.md +294 -0
  23. package/plugins/flow/agents/shared-build-verifier.md +160 -0
  24. package/plugins/flow/agents/shared-config-updater.md +310 -0
  25. package/plugins/flow/agents/shared-coverage-enforcer.md +184 -0
  26. package/plugins/flow/agents/shared-error-handler.md +217 -0
  27. package/plugins/flow/agents/shared-file-creator.md +344 -0
  28. package/plugins/flow/agents/shared-impl-orchestrator.md +312 -0
  29. package/plugins/flow/agents/shared-impl-reporter.md +368 -0
  30. package/plugins/flow/agents/shared-impl-teammate.md +201 -0
  31. package/plugins/flow/agents/shared-linear-subtask-iterator.md +337 -0
  32. package/plugins/flow/agents/shared-logic-implementer.md +244 -0
  33. package/plugins/flow/agents/shared-maia-api.md +26 -0
  34. package/plugins/flow/agents/shared-parallelization-analyzer.md +343 -0
  35. package/plugins/flow/agents/shared-performance-validator.md +168 -0
  36. package/plugins/flow/agents/shared-plan-perspective.md +271 -0
  37. package/plugins/flow/agents/shared-project-standardizer.md +205 -0
  38. package/plugins/flow/agents/shared-report-synthesizer.md +188 -0
  39. package/plugins/flow/agents/shared-review-teammate.md +189 -0
  40. package/plugins/flow/agents/shared-security-scanner.md +186 -0
  41. package/plugins/flow/agents/shared-style-enforcer.md +230 -0
  42. package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +189 -0
  43. package/plugins/flow/agents/shared-tdd-developer.md +350 -0
  44. package/plugins/flow/agents/shared-team-coordinator.md +192 -0
  45. package/plugins/flow/agents/shared-test-fixer.md +186 -0
  46. package/plugins/flow/agents/shared-test-runner.md +191 -0
  47. package/plugins/flow/agents/shared-ui-classifier.md +263 -0
  48. package/plugins/flow/agents/shared-verification-orchestrator.md +194 -0
  49. package/plugins/flow/agents/shared-verification-runner.md +140 -0
  50. package/plugins/flow/agents/ui-a11y-validator.md +305 -0
  51. package/plugins/flow/agents/ui-screenshot-reporter.md +329 -0
  52. package/plugins/flow/agents/ui-web-designer.md +214 -0
  53. package/plugins/flow/scripts/compute-session-tokens.sh +39 -0
  54. package/plugins/flow/skills/a11y-audit/SKILL.md +214 -0
  55. package/plugins/flow/skills/angular-patterns/SKILL.md +191 -0
  56. package/plugins/flow/skills/browser-capture/SKILL.md +238 -0
  57. package/plugins/flow/skills/commit/SKILL.md +259 -0
  58. package/plugins/flow/skills/debug-helper/SKILL.md +375 -0
  59. package/plugins/flow/skills/impl/SKILL.md +992 -0
  60. package/plugins/flow/skills/karpathy-guidelines/SKILL.md +72 -0
  61. package/plugins/flow/skills/linear-suggestion/SKILL.md +132 -0
  62. package/plugins/flow/skills/maia-files-delete/SKILL.md +59 -0
  63. package/plugins/flow/skills/maia-files-upload/SKILL.md +57 -0
  64. package/plugins/flow/skills/nx-conventions/SKILL.md +326 -0
  65. package/plugins/flow/skills/plan/SKILL.md +1033 -0
  66. package/plugins/flow/skills/push/SKILL.md +759 -0
  67. package/plugins/flow/skills/review/SKILL.md +443 -0
  68. package/plugins/flow/skills/test-e2e/SKILL.md +164 -0
  69. package/plugins/flow/skills/test-unit/SKILL.md +456 -0
  70. package/plugins/flow-external/.claude-plugin/README.md +146 -0
  71. package/plugins/flow-external/.claude-plugin/merge-permissions.js +94 -0
  72. package/plugins/flow-external/.claude-plugin/plugin.json +5 -0
  73. package/plugins/flow-external/.claude-plugin/settings.template.json +78 -0
  74. package/plugins/flow-external/agents/angular-component-scaffolder.md +271 -0
  75. package/plugins/flow-external/agents/angular-directive-builder.md +134 -0
  76. package/plugins/flow-external/agents/angular-guard-builder.md +73 -0
  77. package/plugins/flow-external/agents/angular-pipe-builder.md +90 -0
  78. package/plugins/flow-external/agents/angular-resolver-builder.md +79 -0
  79. package/plugins/flow-external/agents/angular-service-builder.md +168 -0
  80. package/plugins/flow-external/agents/angular-state-builder.md +263 -0
  81. package/plugins/flow-external/agents/shared-build-verifier.md +67 -0
  82. package/plugins/flow-external/agents/shared-impl-orchestrator.md +90 -0
  83. package/plugins/flow-external/agents/shared-impl-reporter.md +135 -0
  84. package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +70 -0
  85. package/plugins/flow-external/agents/shared-ui-classifier.md +38 -0
  86. package/plugins/flow-external/agents/ui-web-designer.md +203 -0
  87. package/plugins/flow-external/scripts/compute-session-tokens.sh +39 -0
  88. package/plugins/flow-external/skills/a11y-audit/SKILL.md +97 -0
  89. package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +268 -0
  90. package/plugins/flow-external/skills/angular-patterns/SKILL.md +182 -0
  91. package/plugins/flow-external/skills/browser-capture/SKILL.md +74 -0
  92. package/plugins/flow-external/skills/commit/SKILL.md +114 -0
  93. package/plugins/flow-external/skills/debug-helper/SKILL.md +135 -0
  94. package/plugins/flow-external/skills/impl/SKILL.md +218 -0
  95. package/plugins/flow-external/skills/karpathy-guidelines/SKILL.md +72 -0
  96. package/plugins/flow-external/skills/linear-suggestion/SKILL.md +62 -0
  97. package/plugins/flow-external/skills/maia-files-delete/SKILL.md +34 -0
  98. package/plugins/flow-external/skills/maia-files-upload/SKILL.md +41 -0
  99. package/plugins/flow-external/skills/plan/SKILL.md +334 -0
  100. package/plugins/flow-external/skills/push/SKILL.md +232 -0
  101. package/plugins/flow-legacy/.claude-plugin/README.md +143 -0
  102. package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +94 -0
  103. package/plugins/flow-legacy/.claude-plugin/plugin.json +5 -0
  104. package/plugins/flow-legacy/.claude-plugin/settings.template.json +79 -0
  105. package/plugins/flow-legacy/agents/angular-component-scaffolder.md +327 -0
  106. package/plugins/flow-legacy/agents/angular-directive-builder.md +253 -0
  107. package/plugins/flow-legacy/agents/angular-guard-builder.md +326 -0
  108. package/plugins/flow-legacy/agents/angular-pipe-builder.md +238 -0
  109. package/plugins/flow-legacy/agents/angular-resolver-builder.md +339 -0
  110. package/plugins/flow-legacy/agents/angular-service-builder.md +271 -0
  111. package/plugins/flow-legacy/agents/angular-state-builder.md +480 -0
  112. package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +174 -0
  113. package/plugins/flow-legacy/agents/shared-impl-reporter.md +232 -0
  114. package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +198 -0
  115. package/plugins/flow-legacy/agents/shared-tdd-developer.md +307 -0
  116. package/plugins/flow-legacy/agents/shared-test-runner.md +133 -0
  117. package/plugins/flow-legacy/agents/shared-ui-classifier.md +145 -0
  118. package/plugins/flow-legacy/scripts/compute-session-tokens.sh +39 -0
  119. package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +214 -0
  120. package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +346 -0
  121. package/plugins/flow-legacy/skills/browser-capture/SKILL.md +238 -0
  122. package/plugins/flow-legacy/skills/commit/SKILL.md +215 -0
  123. package/plugins/flow-legacy/skills/debug-helper/SKILL.md +395 -0
  124. package/plugins/flow-legacy/skills/impl/SKILL.md +710 -0
  125. package/plugins/flow-legacy/skills/karpathy-guidelines/SKILL.md +72 -0
  126. package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +132 -0
  127. package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +59 -0
  128. package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +57 -0
  129. package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +368 -0
  130. package/plugins/flow-legacy/skills/plan/SKILL.md +742 -0
  131. package/plugins/flow-legacy/skills/push/SKILL.md +645 -0
  132. package/plugins/flow-legacy/skills/test-unit/SKILL.md +500 -0
  133. package/plugins/smart-pro/.claude-plugin/README.md +115 -0
  134. package/plugins/smart-pro/.claude-plugin/merge-permissions.js +129 -0
  135. package/plugins/smart-pro/.claude-plugin/plugin.json +5 -0
  136. package/plugins/smart-pro/.claude-plugin/settings.template.json +94 -0
  137. package/plugins/smart-pro/agents/angular-components/AGENT.md +214 -0
  138. package/plugins/smart-pro/hooks/CONFIG.md +198 -0
  139. package/plugins/smart-pro/hooks/README.md +139 -0
  140. package/plugins/smart-pro/hooks/audit_logger.py +107 -0
  141. package/plugins/smart-pro/hooks/auto_format.sh +11 -0
  142. package/plugins/smart-pro/hooks/hooks.json +79 -0
  143. package/plugins/smart-pro/hooks/safety_validator.py +129 -0
  144. package/plugins/smart-pro/hooks/sensitive_file_blocker.py +58 -0
  145. package/plugins/smart-pro/hooks/skill_validator.py +220 -0
  146. package/plugins/smart-pro/skills/angular-components-action-panel/SKILL.md +159 -0
  147. package/plugins/smart-pro/skills/angular-components-avatar/SKILL.md +142 -0
  148. package/plugins/smart-pro/skills/angular-components-badge/SKILL.md +110 -0
  149. package/plugins/smart-pro/skills/angular-components-breadcrumbs/SKILL.md +91 -0
  150. package/plugins/smart-pro/skills/angular-components-button/SKILL.md +146 -0
  151. package/plugins/smart-pro/skills/angular-components-button-group/SKILL.md +121 -0
  152. package/plugins/smart-pro/skills/angular-components-calendar/SKILL.md +78 -0
  153. package/plugins/smart-pro/skills/angular-components-card/SKILL.md +110 -0
  154. package/plugins/smart-pro/skills/angular-components-card-heading/SKILL.md +105 -0
  155. package/plugins/smart-pro/skills/angular-components-command-palette/SKILL.md +168 -0
  156. package/plugins/smart-pro/skills/angular-components-container/SKILL.md +93 -0
  157. package/plugins/smart-pro/skills/angular-components-description-list/SKILL.md +102 -0
  158. package/plugins/smart-pro/skills/angular-components-details/SKILL.md +70 -0
  159. package/plugins/smart-pro/skills/angular-components-divider/SKILL.md +110 -0
  160. package/plugins/smart-pro/skills/angular-components-drawer/SKILL.md +136 -0
  161. package/plugins/smart-pro/skills/angular-components-dropdown/SKILL.md +131 -0
  162. package/plugins/smart-pro/skills/angular-components-empty-state/SKILL.md +103 -0
  163. package/plugins/smart-pro/skills/angular-components-feed/SKILL.md +110 -0
  164. package/plugins/smart-pro/skills/angular-components-form/SKILL.md +77 -0
  165. package/plugins/smart-pro/skills/angular-components-grid-list/SKILL.md +91 -0
  166. package/plugins/smart-pro/skills/angular-components-input/SKILL.md +118 -0
  167. package/plugins/smart-pro/skills/angular-components-list/SKILL.md +75 -0
  168. package/plugins/smart-pro/skills/angular-components-list-container/SKILL.md +106 -0
  169. package/plugins/smart-pro/skills/angular-components-media-object/SKILL.md +133 -0
  170. package/plugins/smart-pro/skills/angular-components-modal/SKILL.md +159 -0
  171. package/plugins/smart-pro/skills/angular-components-multi-column-layout/SKILL.md +84 -0
  172. package/plugins/smart-pro/skills/angular-components-navbar/SKILL.md +93 -0
  173. package/plugins/smart-pro/skills/angular-components-notification/SKILL.md +147 -0
  174. package/plugins/smart-pro/skills/angular-components-page/SKILL.md +162 -0
  175. package/plugins/smart-pro/skills/angular-components-page-heading/SKILL.md +96 -0
  176. package/plugins/smart-pro/skills/angular-components-paging/SKILL.md +86 -0
  177. package/plugins/smart-pro/skills/angular-components-progress-bars/SKILL.md +94 -0
  178. package/plugins/smart-pro/skills/angular-components-searchbar/SKILL.md +113 -0
  179. package/plugins/smart-pro/skills/angular-components-section-heading/SKILL.md +156 -0
  180. package/plugins/smart-pro/skills/angular-components-select-menu/SKILL.md +101 -0
  181. package/plugins/smart-pro/skills/angular-components-sidebar-layout/SKILL.md +121 -0
  182. package/plugins/smart-pro/skills/angular-components-sidebar-navigation/SKILL.md +80 -0
  183. package/plugins/smart-pro/skills/angular-components-sign-in-form/SKILL.md +91 -0
  184. package/plugins/smart-pro/skills/angular-components-stacked-layout/SKILL.md +114 -0
  185. package/plugins/smart-pro/skills/angular-components-stacked-list/SKILL.md +93 -0
  186. package/plugins/smart-pro/skills/angular-components-stats/SKILL.md +87 -0
  187. package/plugins/smart-pro/skills/angular-components-table/SKILL.md +98 -0
  188. package/plugins/smart-pro/skills/angular-components-tabs/SKILL.md +99 -0
  189. package/plugins/smart-pro/skills/angular-components-textarea/SKILL.md +111 -0
  190. package/plugins/smart-pro/skills/angular-components-toggle/SKILL.md +109 -0
  191. package/plugins/smart-pro/skills/angular-components-vertical-navigation/SKILL.md +139 -0
  192. package/plugins/smart-pro/skills/audit-log/SKILL.md +82 -0
  193. package/plugins/smart-pro/skills/format-code/SKILL.md +46 -0
  194. package/plugins/smart-pro/skills/project-conventions/SKILL.md +90 -0
  195. package/plugins/smart-pro/skills/safety-check/SKILL.md +0 -0
  196. package/src/index.d.ts +6 -0
  197. package/src/index.js +7 -0
  198. package/src/index.js.map +1 -0
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * LEGACY: Merge smart plugin settings into project's .claude/settings.json
4
+ *
5
+ * This script is deprecated. The new plugin architecture uses:
6
+ * - hooks/hooks.json for hook configuration
7
+ * - skills/ directory for skill definitions
8
+ * - `claude plugin update smart@smartsoft --scope project` for installation
9
+ *
10
+ * See MIGRATION.md for upgrade instructions.
11
+ *
12
+ * Usage (legacy):
13
+ * node node_modules/@smartsoft001/claude-plugins/plugins/smart/_legacy/merge-permissions.js
14
+ */
15
+
16
+ const fs = require('fs');
17
+ const path = require('path');
18
+
19
+ const SETTINGS_PATH = path.join(process.cwd(), '.claude', 'settings.json');
20
+ const TEMPLATE_PATH = path.join(__dirname, 'settings.template.json');
21
+
22
+ function loadJson(filePath) {
23
+ try {
24
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
25
+ } catch (e) {
26
+ return null;
27
+ }
28
+ }
29
+
30
+ function mergeArrays(existing, template) {
31
+ return [...new Set([...existing, ...template])];
32
+ }
33
+
34
+ function mergeHooks(existing, template) {
35
+ if (!template) return existing;
36
+ if (!existing) return template;
37
+
38
+ const merged = { ...existing };
39
+
40
+ for (const [event, hooks] of Object.entries(template)) {
41
+ if (!merged[event]) {
42
+ merged[event] = hooks;
43
+ } else {
44
+ // Merge by checking _description to avoid duplicates
45
+ const existingDescriptions = merged[event]
46
+ .map((h) => h._description)
47
+ .filter(Boolean);
48
+ for (const hook of hooks) {
49
+ if (
50
+ hook._description &&
51
+ !existingDescriptions.includes(hook._description)
52
+ ) {
53
+ merged[event].push(hook);
54
+ } else if (!hook._description) {
55
+ merged[event].push(hook);
56
+ }
57
+ }
58
+ }
59
+ }
60
+
61
+ return merged;
62
+ }
63
+
64
+ function main() {
65
+ console.log('Smart Plugin - Merge Settings (LEGACY)\n');
66
+ console.log(
67
+ 'WARNING: This script is deprecated. Use `claude plugin update smart@smartsoft --scope project` instead.\n',
68
+ );
69
+
70
+ // Load template
71
+ const template = loadJson(TEMPLATE_PATH);
72
+ if (!template) {
73
+ console.error('ERROR: Could not load template from:', TEMPLATE_PATH);
74
+ process.exit(1);
75
+ }
76
+
77
+ // Load or create settings
78
+ let settings = loadJson(SETTINGS_PATH);
79
+ if (!settings) {
80
+ console.log('Creating new .claude/settings.json...');
81
+ fs.mkdirSync(path.dirname(SETTINGS_PATH), { recursive: true });
82
+ settings = { permissions: { allow: [], deny: [], ask: [] }, hooks: {} };
83
+ }
84
+
85
+ // Ensure structures exist
86
+ settings.permissions = settings.permissions || {
87
+ allow: [],
88
+ deny: [],
89
+ ask: [],
90
+ };
91
+ settings.permissions.allow = settings.permissions.allow || [];
92
+ settings.permissions.ask = settings.permissions.ask || [];
93
+ settings.permissions.deny = settings.permissions.deny || [];
94
+ settings.hooks = settings.hooks || {};
95
+
96
+ // Count before
97
+ const beforeAllow = settings.permissions.allow.length;
98
+ const beforeHooks = Object.keys(settings.hooks).length;
99
+
100
+ // Merge permissions
101
+ settings.permissions.allow = mergeArrays(
102
+ settings.permissions.allow,
103
+ template.permissions.allow,
104
+ );
105
+
106
+ // Merge hooks
107
+ settings.hooks = mergeHooks(settings.hooks, template.hooks);
108
+
109
+ // Enable plugin
110
+ settings.enabledPlugins = settings.enabledPlugins || {};
111
+ settings.enabledPlugins['smart@smartsoft'] = true;
112
+
113
+ // Write back
114
+ fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
115
+
116
+ // Report
117
+ const addedAllow = settings.permissions.allow.length - beforeAllow;
118
+ const afterHooks = Object.keys(settings.hooks).length;
119
+
120
+ console.log('Settings merged successfully!\n');
121
+ console.log(
122
+ ` permissions.allow: ${beforeAllow} -> ${settings.permissions.allow.length} (+${addedAllow})`,
123
+ );
124
+ console.log(` hooks events: ${beforeHooks} -> ${afterHooks}`);
125
+ console.log(`\nPlugin enabled: smart@smartsoft`);
126
+ console.log(`\nFile updated: ${SETTINGS_PATH}`);
127
+ }
128
+
129
+ main();
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "smart-pro",
3
+ "description": "Smart-pro integration - safety validation, audit logging, and auto-formatting hooks",
4
+ "version": "0.0.1"
5
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/anthropics/claude-code/main/schemas/settings.schema.json",
3
+ "_description": "LEGACY: Template settings for smart-pro@smart-pro plugin. Replaced by hooks/hooks.json and skills/ directory. See MIGRATION.md for upgrade guide.",
4
+ "permissions": {
5
+ "allow": [
6
+ "Bash(source:*)",
7
+ "Bash(nvm use:*)",
8
+ "Bash(npm run format:*)",
9
+ "Bash(jq:*)"
10
+ ],
11
+ "ask": [],
12
+ "deny": []
13
+ },
14
+ "hooks": {
15
+ "PreToolUse": [
16
+ {
17
+ "_description": "Safety gate: blocks destructive bash commands",
18
+ "matcher": "Bash|Write|Edit",
19
+ "hooks": [
20
+ {
21
+ "type": "command",
22
+ "command": "node_modules/@smartsoft001/pro-claude-plugins/plugins/smart-pro/hooks/safety_validator.py"
23
+ }
24
+ ]
25
+ },
26
+ {
27
+ "_description": "Block sensitive files with detailed error message",
28
+ "matcher": "Read|Edit|Write",
29
+ "hooks": [
30
+ {
31
+ "type": "command",
32
+ "command": "FILE=$(jq -r '.tool_input.file_path // empty'); echo \"$FILE\" | grep -qE '(\\.env|secrets|credentials)' && { echo \"BLOCKED: Access denied to sensitive file: $FILE\" >&2; exit 2; } || exit 0"
33
+ }
34
+ ]
35
+ },
36
+ {
37
+ "_description": "Audit trail: logs all PreToolUse events",
38
+ "matcher": "",
39
+ "hooks": [
40
+ {
41
+ "type": "command",
42
+ "command": "node_modules/@smartsoft001/pro-claude-plugins/plugins/smart-pro/hooks/audit_logger.py"
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "_description": "Skill validator: soft enforcement warnings for skill files",
48
+ "matcher": "Write|Edit",
49
+ "hooks": [
50
+ {
51
+ "type": "command",
52
+ "command": "node_modules/@smartsoft001/pro-claude-plugins/plugins/smart-pro/hooks/skill_validator.py"
53
+ }
54
+ ]
55
+ }
56
+ ],
57
+ "PostToolUse": [
58
+ {
59
+ "_description": "Auto-format files after Write/Edit",
60
+ "matcher": "Write|Edit",
61
+ "hooks": [
62
+ {
63
+ "type": "command",
64
+ "command": "source ~/.nvm/nvm.sh && nvm use 24 && npm run format"
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ "_description": "Audit trail: logs all PostToolUse events",
70
+ "matcher": "",
71
+ "hooks": [
72
+ {
73
+ "type": "command",
74
+ "command": "node_modules/@smartsoft001/pro-claude-plugins/plugins/smart-pro/hooks/audit_logger.py"
75
+ }
76
+ ]
77
+ }
78
+ ],
79
+ "UserPromptSubmit": [
80
+ {
81
+ "_description": "Audit trail: logs all user prompt submissions",
82
+ "hooks": [
83
+ {
84
+ "type": "command",
85
+ "command": "node_modules/@smartsoft001/pro-claude-plugins/plugins/smart-pro/hooks/audit_logger.py"
86
+ }
87
+ ]
88
+ }
89
+ ]
90
+ },
91
+ "enabledPlugins": {
92
+ "smart-pro@smart-pro": true
93
+ }
94
+ }
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: angular-components
3
+ description: Build UI in end-user projects using @smartsoft001/angular components. Knows available components and delegates to per-component skills for API details.
4
+ ---
5
+
6
+ # Angular Components Agent
7
+
8
+ Agent for building UI in end-user Angular projects using components from `@smartsoft001/angular`.
9
+
10
+ ## When to Use
11
+
12
+ Use this agent when a developer needs to:
13
+
14
+ - Build a page or feature UI using `@smartsoft001/angular` components
15
+ - Choose the right component for a UI requirement
16
+ - Get correct usage, imports, and options for a component
17
+
18
+ ## Available Components
19
+
20
+ | Component | Skill | Selector | Description |
21
+ | ------------------- | ---------------------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
22
+ | Button | `angular-components-button` | `<smartpro-button>` | Button with shapes (standard/rounded/circular), optional `iconPosition` (leading/trailing) on standard, variants (primary/secondary/soft), sizes, color palette |
23
+ | Card | `angular-components-card` | `<smartpro-card>` | Card container — `variant: 'basic' \| 'well'` with optional `options.edgeToEdge` (drop mobile rounding) and `options.onGray` (well only). Header / body / footer slots driven by template refs and `hasHeader` / `hasFooter` flags. |
24
+ | Details | `angular-components-details` | `<smartpro-details>` | 6 details layouts (left-aligned, card, striped, two-column, with actions, narrow) via `DETAILS_STANDARD_COMPONENT_TOKEN` |
25
+ | Form | `angular-components-form` | `<smartpro-form>` | 2 variants: `stacked` (with `labelPosition: 'top' \| 'left'` — `'left'` replaces the legacy labels-left layout) and `two-column` (with `cardStyle?` for the legacy two-column-cards). Iterates fields from `IFormOptionsPro<T>.model` decorators. |
26
+ | List | `angular-components-list` | `<smartpro-list>` | Entity-collection list. 5 variants: `stacked`, `directory`, `grid-card`, `grid-contact`, `table`. The `table` variant accepts composable flags `density: 'condensed'`, `sortable`, `striped`, `selectable`, `avatar`. |
27
+ | Paging | `angular-components-paging` | `<smartpro-paging>` | Paging with three Tailwind UI variants injected via `PAGING_STANDARD_COMPONENT_TOKEN` |
28
+ | Page | `angular-components-page` | `<smartpro-page>` | 26 page layouts (Page Header / Stacked / Sidebar) plugged in via `PAGE_VARIANT_COMPONENTS_TOKEN` |
29
+ | Searchbar | `angular-components-searchbar` | `<smartpro-searchbar>` | Grid-based trailing-icon searchbar variant (Tailwind Plus "Input with trailing icon") injected via `SEARCHBAR_STANDARD_COMPONENT_TOKEN` |
30
+ | Toggle | `angular-components-toggle` | `<smartpro-toggle>` | Switch with two layouts (`simple`, `with-labels`, auto-detected from `options.label`). `options.size: 'standard' \| 'short'` and `options.withIcon` shape the knob; `labelPosition` places the label left/right. |
31
+ | Stacked Layout | `angular-components-stacked-layout` | `<smartpro-stacked-layout>` | 4 page-shell variants: `default` (with `headerStyle: 'overlap' \| 'bottom-border' \| 'subtle-bg'`), `lighter` (with `compact?` flag), `branded` (with `headerStyle: 'lighter' \| 'compact-lighter' \| 'overlap'`), and `two-row-navigation-with-overlap`. `IStackedLayoutOptionsPro` slots in `navTpl` / `headerTpl`. |
32
+ | Sidebar Layout | `angular-components-sidebar-layout` | `<smartpro-sidebar-layout>` | 4 layouts: `simple`, `with-header`, `constrained-content`, `off-white-background`. The `simple` and `with-header` layouts accept `options.theme: 'light' \| 'brand' \| 'dark'` for sidebar coloring. `options.sidebarTpl` / `headerTpl` slot in nav and header content. |
33
+ | Multi-Column Layout | `angular-components-multi-column-layout` | `<smartpro-multi-column-layout>` | 3 three-column variants: `constrained` (`sticky?` for sticky nav + aside), `full-width` (`secondaryRight?` flips the aside), `narrow-sidebar` (`hasHeader?` adds a sticky top header). `IMultiColumnLayoutOptionsPro` slots in `navTpl` / `secondaryTpl` / `headerTpl`. |
34
+ | Page Heading | `angular-components-page-heading` | `<smartpro-page-heading>` | 3 variants: `default` (adaptive title + actions header that detects breadcrumbs / meta / filters slots), `with-avatar` (large avatar layout; `logo: true` switches to smaller logo + meta layout; `cardStyle: true` wraps in a rounded card with optional stats footer), `with-banner-image`. |
35
+ | Card Heading | `angular-components-card-heading` | `<smartpro-card-heading>` | Card header that adapts its layout to the slots provided in `options` (title, description, avatarTpl, metaTpl, actionsTpl). Set `compact: true` for the borderless dropdown-style row. |
36
+ | Command Palette | `angular-components-command-palette` | `<smartpro-command-palette>` | Cmd+K-style overlay palette. 3 layouts auto-detected from options: `simple` (with `padding`, `appearance`, `withIcons`, `withImages`, `withFooter`), `with-preview` (`previewTpl` for the right pane), `with-groups` (`groups: ICommandPaletteGroup[]`). `[(open)]` / `[(query)]` two-way binding; `(runCommand)` emits the picked id. |
37
+ | Modal | `angular-components-modal` | `<smartpro-modal>` | Dialog overlay. 2 layouts auto-detected: `centered` (default, with `width: 'default' \| 'wide'`, `actionsAlignment`, `withDismiss`, `footerStylePro: 'default' \| 'gray'`) and `alert` (icon-led, triggered by `iconName`/`iconStyle`). `[(open)]` two-way; `(actionClick)` / `(closed)` outputs; `<ng-content>` for custom body. |
38
+ | Drawer | `angular-components-drawer` | `<smartpro-drawer>` | Slide-out panel. 2 layouts auto-detected: `empty` (bare shell — `wide`, `withOverlay`, `closePosition: 'inside' \| 'outside'`) and `with-chrome` (header + body + sticky footer template; triggered by `title`/`subtitle`/`headerStyle`/`stickyFooter`). `position: 'left' \| 'right'`, `headerStyle: 'default' \| 'branded'`. `[(open)]`, `(closed)`, `<ng-content>`. |
39
+ | Notification | `angular-components-notification` | `<smartpro-notification>` | Toast / inline alert. 2 layouts auto-detected: `simple` (default — icon/avatar + title + description + actions + close; `iconStyle`, `actionsPosition: 'inline' \| 'below' \| 'split'`, `withAvatar`) and `condensed` (single-line; triggered by `options.condensed: true`). `(dismissed)` / `(actionClick)` outputs. |
40
+ | Avatar | `angular-components-avatar` | `<smartpro-avatar>` | Avatar. 2 layouts auto-detected: `single` (image/initials/placeholder + optional notification dot top/bottom + optional withText) and `group` (overlapping stack of `IAvatarItem[]`, `stackDirection`). `shape: 'circle' \| 'rounded'`, `size: xs..xl`, `notificationColor: 'green' \| 'gray' \| 'red'`. |
41
+ | Badge | `angular-components-badge` | `<smartpro-badge>` | Tag / pill. Single `default` layout, 16+ Tailwind UI variants via composable options: `variant: 'border' \| 'flat'`, `shape: 'pill' \| 'square'`, `withDot`, `withRemove`. 8 colors × 2 sizes. `(removed)` output when × clicked. |
42
+ | Dropdown | `angular-components-dropdown` | `<smartpro-dropdown>` | Menu. 2 layouts auto-detected: `default` (trigger + `<el-dropdown>` / `<el-menu>` with items) and `with-header` (header row above items, triggered by `options.headerLabel`). Options: `withIcons`, `showDividers`, `minimal`. `[(open)]`, `(selectedItem: { itemId })`. `<ng-content>` for custom trigger. |
43
+ | Button Group | `angular-components-button-group` | `<smartpro-button-group>` | Segmented buttons. 2 layouts auto-detected: `default` and `with-stat` (auto when any `button.count != null`). Options: `iconOnly`, `withDropdown` (trailing chevron emits id `'__dropdown__'`), `selectionMode: 'single' \| 'multi'`. `[(selected)]`, `(buttonClick: { buttonId })`. |
44
+ | Container | `angular-components-container` | `<smartpro-container>` | Layout wrapper. Single `default` layout, 5 source variants via options: `mode: 'full-width' \| 'constrained' \| 'container'`, `padding: 'none' \| 'mobile' \| 'always'`, `narrow: boolean`. Pure `<ng-content>` projection. |
45
+ | List Container | `angular-components-list-container` | `<smartpro-list-container>` | List surface wrapper. Single `default` layout, 4 source variants via `options.variant: 'simple-dividers' \| 'card-dividers' \| 'separate-cards' \| 'flat-card-dividers'` + `fullWidthOnMobile` (applied to card variants). Sets `role="list"`; projects `<ng-content>`. |
46
+ | Media Object | `angular-components-media-object` | `<smartpro-media-object>` | Image + body layout. Single `default` layout, 8 source variants via options: `alignment: 'top' \| 'center' \| 'bottom' \| 'stretched'`, `position: 'left' \| 'right'`, `responsive`, `nested`, `wide`. Required `mediaUrl` / `mediaAlt`; projects body via `<ng-content>`. |
47
+ | Divider | `angular-components-divider` | `<smartpro-divider>` | Horizontal separator / section header. 2 layouts auto-detected: `simple` (hr, label, icon, or title centered/left/right on the line) and `with-toolbar` (title + action button; auto when `actionLabel` is set). Inputs: `label`, `iconName`, `title`, `actionLabel`. `options.position`. `(actionClick)`. `<ng-content>` for extra toolbar actions. |
48
+ | Section Heading | `angular-components-section-heading` | `<smartpro-section-heading>` | Section header that adapts to provided slots (description / label / actionsTpl / inputGroupTpl / badgeTpl). Setting `tabsTpl` switches to a tabs variant; `inline: true` places tabs beside the title. |
49
+ | Description List | `angular-components-description-list` | `<smartpro-description-list>` | 4 layouts: `left-aligned` (default; supports `options.striped` and `options.inlineActions` for per-item action slots), `left-aligned-card`, `two-column`, `narrow-hidden-labels`. Iterates `IDescriptionListOptions.items[]`. |
50
+ | Breadcrumbs | `angular-components-breadcrumbs` | `<smartpro-breadcrumbs>` | Breadcrumb trail with `bar` layout (full-width or `contained` card) or `simple` layout (`chevron` / `slash` / `arrow` separator). Pass `IBreadcrumbsOptionsPro` with `layout`, `contained`, `separator`, `items[]` |
51
+ | Action Panel | `angular-components-action-panel` | `<smartpro-action-panel>` | Title + description + action area. `layout: 'card'` for vertical action area (buttons / link / email-input), `layout: 'with-action'` for horizontal layout with button or toggle on the right. `style: 'well'` swaps to a muted gray surface. `titleAtTop` controls title placement. |
52
+ | Feed | `angular-components-feed` | `<smartpro-feed>` | Activity feed. `layout: 'icons'` for vertical timeline of colored icon circles (color from `event.type`); `layout: 'comments'` (default) for stacked dot+text rows with rich comment cards when `event.avatarUrl` + `event.type` undefined or `'comment'`. |
53
+ | Vertical Navigation | `angular-components-vertical-navigation` | `<smartpro-vertical-navigation>` | Sidebar nav. `layout: 'flat'` (default) iterates `options.items` with optional per-item `iconTpl` / `badge`. `layout: 'on-gray'` and `layout: 'with-secondary-navigation'` iterate `options.groups[]` for multi-section navigation with optional group titles. |
54
+ | Tabs | `angular-components-tabs` | `<smartpro-tabs>` | Horizontal tab bar with mobile select fallback and `[(selectedId)]` binding. `layout: 'underline'` (default) supports `fullWidth`, `inBar`, `bare`, plus per-item `iconTpl` / `badge`. `layout: 'pills'` chooses pill background via `background: 'transparent' \| 'gray' \| 'brand'`. |
55
+ | Stacked List | `angular-components-stacked-list` | `<smartpro-stacked-list>` | Vertical list of items. 3 variants: `simple` (`width: 'narrow' \| 'full' \| 'constrained-full'`, `stickyHeadings: true` groups by first letter), `with-links` (`width: 'full' \| 'card'`, `columns: 2` switches to grid), `complex` (title + inline badge + description + action; `inlineMeta: true` adds dot+meta). |
56
+ | Table | `angular-components-table` | `<smartpro-table>` | Tabular data driven by `columns` / `rows`. 4 variants: `default` (composable flags `inCard`, `border`, `selectable`, `sortable`, `stickyHeader`, `hideHeadings`, `withAvatars`, `width: 'constrained-full'`), `with-grouped-rows`, `with-summary-rows`, `responsive` (`mobileStrategy: 'hide' \| 'stack'`). |
57
+ | Select Menu | `angular-components-select-menu` | `<smartpro-select-menu>` | Single-select listbox with `[(value)]` binding. 2 variants: `simple-native` (HTML `<select>`) and `custom` (`<el-select>` listbox; composable flags `branded`, `avatar`, `statusIndicator`, `checkPosition: 'left'`, `secondaryText`). |
58
+ | Progress Bars | `angular-components-progress-bars` | `<smartpro-progress-bars>` | Stepped progress and numeric progress UI. 4 layouts: `bar` (numeric when `value` is set, else step-bar), `bullets` (`withText?` switches to vertical labelled list), `circles` (`withText?` switches to vertical labelled list), `panels` (`bordered?` switches to side-stripe panel layout). |
59
+ | Grid List | `angular-components-grid-list` | `<smartpro-grid-list>` | Responsive item grid. 4 variants: `cards` (`layout: 'simple' \| 'horizontal' \| 'logos'`), `contacts` (`portraitSize: 'large' \| 'small'`), `images-with-details`, `actions-with-shared-borders`. |
60
+ | Stats | `angular-components-stats` | `<smartpro-stats>` | Key-figure grid. 2 variants: `default` (composable flags `cardStyle`, `brandIcon`, `trending`) and `with-shared-borders`. Items provide `label`, `value`, optional `change` / `trend` / `iconTpl` / `actionTpl`. |
61
+ | Textarea | `angular-components-textarea` | `<smartpro-textarea>` | Comment/description field. 2 variants: `simple` (`borderStyle: 'box' \| 'underline'`, `withPreview` adds Write/Preview tabs) and `with-actions` (`actionStyle: 'avatar' \| 'pill'`). `[(value)]` binding + `(actionClick)` output for action buttons. |
62
+ | Sign-In Form | `angular-components-sign-in-form` | `<smartpro-sign-in-form>` | Email/password authentication form. 2 layouts: `simple` (with `hideLabels?` for the legacy no-labels variant and `cardStyle?` for the legacy card+social-providers variant) and `split-screen` (form next to a hero image). `mode: 'sign-in' \| 'sign-up'` toggles labels. |
63
+ | Empty State | `angular-components-empty-state` | `<smartpro-empty-state>` | Empty-state placeholder. 4 layouts: `simple` (with `dashedBorder?` for clickable dashed-border CTA), `with-recommendations` (with `gridLayout?` for 2-col pill grid), `with-templates`, `starting-points`. `(actionClick)` and `(itemClick)` outputs. |
64
+ | Navbar | `angular-components-navbar` | `<smartpro-navbar>` | Top-of-page navigation. 5 layouts: `simple` (with `menuPosition: 'right' \| 'left'`), `with-search` (with `searchAlignment: 'left' \| 'centered'`), `with-quick-action`, `with-secondary-links`, `with-column-layout`. `dark?` flag for dark surfaces; `[(mobileMenuOpen)]` two-way binding. |
65
+ | Sidebar Navigation | `angular-components-sidebar-navigation` | `<smartpro-sidebar-navigation>` | Full sidebar with logo + item groups + optional profile footer. 3 layouts: `default` (with `theme: 'light' \| 'brand' \| 'dark'`), `with-expandable-sections`, `with-secondary-navigation`. |
66
+
67
+ ## Skills to Use
68
+
69
+ When a user asks about a specific component, **always delegate to the per-component skill** for detailed API, usage examples, and options:
70
+
71
+ - **Button** → use skill `angular-components-button`
72
+ - **Card** → use skill `angular-components-card`
73
+ - **Details** → use skill `angular-components-details`
74
+ - **Form** → use skill `angular-components-form`
75
+ - **List** → use skill `angular-components-list`
76
+ - **Paging** → use skill `angular-components-paging`
77
+ - **Page** → use skill `angular-components-page`
78
+ - **Searchbar** → use skill `angular-components-searchbar`
79
+ - **Toggle** → use skill `angular-components-toggle`
80
+ - **Stacked Layout** → use skill `angular-components-stacked-layout`
81
+ - **Sidebar Layout** → use skill `angular-components-sidebar-layout`
82
+ - **Multi-Column Layout** → use skill `angular-components-multi-column-layout`
83
+ - **Page Heading** → use skill `angular-components-page-heading`
84
+ - **Card Heading** → use skill `angular-components-card-heading`
85
+ - **Command Palette** → use skill `angular-components-command-palette`
86
+ - **Modal** → use skill `angular-components-modal`
87
+ - **Drawer** → use skill `angular-components-drawer`
88
+ - **Notification** → use skill `angular-components-notification`
89
+ - **Avatar** → use skill `angular-components-avatar`
90
+ - **Badge** → use skill `angular-components-badge`
91
+ - **Dropdown** → use skill `angular-components-dropdown`
92
+ - **Button Group** → use skill `angular-components-button-group`
93
+ - **Container** → use skill `angular-components-container`
94
+ - **List Container** → use skill `angular-components-list-container`
95
+ - **Media Object** → use skill `angular-components-media-object`
96
+ - **Divider** → use skill `angular-components-divider`
97
+ - **Section Heading** → use skill `angular-components-section-heading`
98
+ - **Description List** → use skill `angular-components-description-list`
99
+ - **Breadcrumbs** → use skill `angular-components-breadcrumbs`
100
+ - **Action Panel** → use skill `angular-components-action-panel`
101
+ - **Feed** → use skill `angular-components-feed`
102
+ - **Vertical Navigation** → use skill `angular-components-vertical-navigation`
103
+ - **Tabs** → use skill `angular-components-tabs`
104
+ - **Stacked List** → use skill `angular-components-stacked-list`
105
+ - **Table** → use skill `angular-components-table`
106
+ - **Select Menu** → use skill `angular-components-select-menu`
107
+ - **Progress Bars** → use skill `angular-components-progress-bars`
108
+ - **Grid List** → use skill `angular-components-grid-list`
109
+ - **Stats** → use skill `angular-components-stats`
110
+ - **Textarea** → use skill `angular-components-textarea`
111
+ - **Sign-In Form** → use skill `angular-components-sign-in-form`
112
+ - **Empty State** → use skill `angular-components-empty-state`
113
+ - **Navbar** → use skill `angular-components-navbar`
114
+ - **Sidebar Navigation** → use skill `angular-components-sidebar-navigation`
115
+
116
+ ## Installation
117
+
118
+ ```bash
119
+ npm i @smartsoft001/angular
120
+ ```
121
+
122
+ ## Import Pattern
123
+
124
+ ```typescript
125
+ import {
126
+ ButtonComponent,
127
+ DetailsBaseComponent,
128
+ DETAILS_STANDARD_COMPONENT_TOKEN,
129
+ FormBaseComponent,
130
+ FORM_STANDARD_COMPONENT_TOKEN,
131
+ ListBaseComponent,
132
+ LIST_MODE_COMPONENTS_TOKEN,
133
+ ListMode,
134
+ IListOptions,
135
+ IListInternalOptions,
136
+ IListProvider,
137
+ PageBaseComponent,
138
+ PAGE_VARIANT_COMPONENTS_TOKEN,
139
+ SmartPageVariant,
140
+ } from '@smartsoft001/angular';
141
+ import {
142
+ DetailsLeftAlignedCardComponent,
143
+ FormStackedComponent,
144
+ FormTwoColumnComponent,
145
+ FormTwoColumnCardsComponent,
146
+ FormLabelsLeftComponent,
147
+ ListTableComponent,
148
+ ListTableStripedComponent,
149
+ ListTableCondensedComponent,
150
+ ListTableWithAvatarsComponent,
151
+ ListTableSelectableComponent,
152
+ ListTableSortableComponent,
153
+ ListStackedComponent,
154
+ ListDirectoryComponent,
155
+ ListGridContactComponent,
156
+ ListGridCardComponent,
157
+ PageWithActionsComponent,
158
+ PageSimpleSidebarComponent,
159
+ PageDarkSidebarWithHeaderComponent,
160
+ } from '@smartsoft001/pro-angular';
161
+ ```
162
+
163
+ ## Architecture
164
+
165
+ All component variants extend abstract base classes from `@smartsoft001/angular`:
166
+
167
+ - `ButtonBaseComponent` — base for button shapes (standard, rounded, circular)
168
+ - `CardBaseComponent` — base for card variants (basic, well); pro-side options accept `edgeToEdge?: boolean` and (well only) `onGray?: boolean`
169
+ - `DetailsBaseComponent<T>` — base for details variants (left-aligned, card, striped, two-column, with actions, narrow)
170
+ - `FormBaseComponent<T>` — base for form variants (stacked, two-column); pro-side options accept `labelPosition?: 'top' \| 'left'` (stacked only) and `cardStyle?` (two-column only).
171
+ - `ListBaseComponent<T>` — base for list variants (stacked, directory, grid-card, grid-contact, table); pro-side options accept `density?`, `sortable?`, `striped?`, `selectable?`, `avatar?` (table variant only).
172
+ - `PagingBaseComponent` — base for paging variants (card-footer, centered, simple)
173
+ - `PageBaseComponent` — base for page variants (Page Header / Stacked / Sidebar groups)
174
+ - `SearchbarBaseComponent` — base for searchbar variants (trailing-icon)
175
+ - `ToggleBaseComponent` — base for toggle variants (simple, with-labels); pro-side options accept `size?: 'standard' \| 'short'` and `withIcon?: boolean`
176
+ - `StackedLayoutBaseComponent` — base for stacked layout variants (default, lighter, branded, two-row-navigation-with-overlap); pro-side options accept `headerStyle?` (default + branded) and `compact?` (lighter only).
177
+ - `SidebarLayoutBaseComponent` — base for sidebar layout variants (simple, with-header, constrained-content, off-white-background); pro-side options accept `theme?: 'light' \| 'brand' \| 'dark'` (simple + with-header only).
178
+ - `MultiColumnLayoutBaseComponent` — base for multi-column layout variants (constrained, full-width, narrow-sidebar); pro-side options accept `sticky?` (constrained only), `secondaryRight?` (full-width only), `hasHeader?` (narrow-sidebar only).
179
+ - `PageHeadingBaseComponent` — base for page heading variants (default, with-avatar, with-banner-image); pro-side options accept `logo?: boolean` and `cardStyle?: boolean` (with-avatar only).
180
+ - `CardHeadingBaseComponent` — base for card heading; pro-side options accept `compact?: boolean` to switch from the bordered adaptive layout to the flat dropdown-style row.
181
+ - `SectionHeadingBaseComponent` — base for section heading variants (default, with-tabs); pro-side options accept `inline?: boolean` (with-tabs only — places tabs inline beside the title).
182
+ - `DescriptionListBaseComponent` — base for description list variants (left-aligned, left-aligned-card, two-column, narrow-hidden-labels); pro-side options accept `striped?: boolean` and `inlineActions?: boolean` (left-aligned only).
183
+ - `BreadcrumbsBaseComponent` — base for breadcrumbs variants (bar, simple); pro-side options accept `contained?: boolean` (bar) and `separator?: 'chevron' \| 'slash' \| 'arrow'` (simple)
184
+ - `ActionPanelBaseComponent` — base for action panel variants (card, with-action); pro-side options accept `contentMode?: 'buttons' \| 'link' \| 'input' \| 'toggle'`, `style?: 'plain' \| 'well'`, and `titleAtTop?: boolean`
185
+ - `FeedBaseComponent` — base for the activity feed; pro-side options accept `layout?: 'icons' \| 'comments'`. Per-event rendering keys off `event.avatarUrl`, `event.type`, and `event.iconTpl`.
186
+ - `VerticalNavigationBaseComponent` — base for vertical navigation variants (flat, on-gray, with-secondary-navigation); pro-side options accept `layout?: 'flat' \| 'on-gray' \| 'with-secondary-navigation'`. The flat layout iterates `items[]`, the others iterate `groups[]`.
187
+ - `TabsBaseComponent` — base for tabs variants (underline, pills); pro-side options accept `layout?: 'underline' \| 'pills'` plus underline-only `fullWidth?`, `inBar?`, `bare?` flags and pills-only `background?: 'transparent' \| 'gray' \| 'brand'`.
188
+ - `StackedListBaseComponent` — base for stacked-list variants (simple, with-links, complex); pro-side options accept `width?` (simple + with-links), `stickyHeadings?` (simple only), `columns?` (with-links only), and `inlineMeta?` (complex only).
189
+ - `TableBaseComponent` — base for table variants (default, with-grouped-rows, with-summary-rows, responsive); pro-side options accept `inCard?`, `border?`, `selectable?`, `sortable?`, `stickyHeader?`, `hideHeadings?`, `withAvatars?`, `width?` (default only), and `mobileStrategy?: 'hide' \| 'stack'` (responsive only).
190
+ - `SelectMenuBaseComponent` — base for select-menu variants (simple-native, custom); pro-side options accept `branded?`, `avatar?`, `statusIndicator?`, `checkPosition?: 'left' \| 'right'`, `secondaryText?` (custom variant only).
191
+ - `ProgressBarsBaseComponent` — base for progress-bars variants (bar, bullets, circles, panels); pro-side options accept `withText?` (bullets + circles only) and `bordered?` (panels only).
192
+ - `GridListBaseComponent` — base for grid-list variants (cards, contacts, images-with-details, actions-with-shared-borders); pro-side options accept `layout?: 'simple' \| 'horizontal' \| 'logos'` (cards only) and `portraitSize?: 'large' \| 'small'` (contacts only).
193
+ - `StatsBaseComponent` — base for stats variants (default, with-shared-borders); pro-side options accept `cardStyle?`, `brandIcon?`, `trending?` (default variant only).
194
+ - `TextareaBaseComponent` — base for textarea variants (simple, with-actions); pro-side options accept `borderStyle?: 'box' \| 'underline'` (simple only), `withPreview?` (simple only), `actionStyle?: 'avatar' \| 'pill'` (with-actions only).
195
+ - `SignInFormBaseComponent` — base for sign-in-form variants (simple, split-screen); pro-side options accept `hideLabels?` and `cardStyle?` (simple variant only).
196
+ - `EmptyStateBaseComponent` — base for empty-state variants (simple, with-recommendations, with-templates, starting-points); pro-side options accept `dashedBorder?` (simple only) and `gridLayout?` (with-recommendations only).
197
+ - `NavbarBaseComponent` — base for navbar variants (simple, with-search, with-quick-action, with-secondary-links, with-column-layout); pro-side options accept `menuPosition?: 'right' \| 'left'` (simple only) and `searchAlignment?: 'left' \| 'centered'` (with-search only).
198
+ - `SidebarNavigationBaseComponent` — base for sidebar-navigation variants (default, with-expandable-sections, with-secondary-navigation); pro-side options accept `theme?: 'light' \| 'brand' \| 'dark'` (default only).
199
+
200
+ Base classes provide signal-based inputs, computed Tailwind classes, and shared logic. This repo (`@smartsoft001/pro-angular`) provides the Tailwind-styled variant implementations that extend those bases. Interfaces (`IButtonOptions`, `ICardOptions`) are also re-exported from `@smartsoft001/angular`.
201
+
202
+ ## Shared Types
203
+
204
+ All components use shared types from `@smartsoft001/angular`:
205
+
206
+ - `SmartVariant` — `'primary' | 'secondary' | 'soft'`
207
+ - `SmartSize` — `'xs' | 'sm' | 'md' | 'lg' | 'xl'`
208
+ - `SmartColor` — 22 Tailwind color names (default: `'indigo'`)
209
+
210
+ ## Styling
211
+
212
+ - Tailwind CSS v4 with `smart:` prefix
213
+ - Dark mode via `smart:dark:` prefix
214
+ - External classes via `class` input